Commit f6a02b6cb0f887758c6ed38f6fc020a023c22a0e

Authored by Unknown
1 parent 85949b1a

Mise à jour front et sauvegarde d'une configuration

La page "Paramétrer une mise à jour" est quasi-fonctionnelle. Une première section permet de retrouver les anciennes configurations et de les appliquer. La seconde partie permet de déployer un fichier (sans enregistrer) ou de créer une configuration.

Il faudra ajouter la liste des fichiers uploadées (par membre ?)
PFE06/src/main/java/com/PFE/ServerManager/MainController.java
@@ -56,6 +56,7 @@ public class MainController { @@ -56,6 +56,7 @@ public class MainController {
56 Customer customer = customerRepository.findByEmail(auth.getName()); 56 Customer customer = customerRepository.findByEmail(auth.getName());
57 modelAndView.addObject("customerName", customer.getEmail().split("@")[0]); 57 modelAndView.addObject("customerName", customer.getEmail().split("@")[0]);
58 modelAndView.addObject("customerRole", customer.getRole()); 58 modelAndView.addObject("customerRole", customer.getRole());
  59 + modelAndView.addObject("customerMaj", customer.getMaj());
59 modelAndView.setViewName("session"); 60 modelAndView.setViewName("session");
60 return modelAndView; 61 return modelAndView;
61 } 62 }
@@ -192,21 +193,20 @@ public class MainController { @@ -192,21 +193,20 @@ public class MainController {
192 return "test"; 193 return "test";
193 } 194 }
194 195
195 - @PostMapping(path="/test")  
196 - public ModelAndView addNewUser(@RequestParam String maj, @RequestParam String date, @RequestParam String set1, @RequestParam String set2){  
197 - ModelAndView modelAndView = new ModelAndView();  
198 - modelAndView.setViewName("test"); 196 + @PostMapping(path="/savemaj")
  197 + public String saveMaj(@RequestParam String name, @RequestParam String date, @RequestParam String nodes){
199 Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 198 Authentication auth = SecurityContextHolder.getContext().getAuthentication();
200 Customer customer = customerRepository.findByEmail(auth.getName()); 199 Customer customer = customerRepository.findByEmail(auth.getName());
201 Maj maj_c = new Maj(); 200 Maj maj_c = new Maj();
202 - maj_c.setMaj(maj); 201 + maj_c.setMaj(name);
203 maj_c.setDate(date); 202 maj_c.setDate(date);
204 - String nodes=set1+';'+set2;  
205 maj_c.setNodes(nodes); 203 maj_c.setNodes(nodes);
206 maj_c.setMaj_id((int)(majRepository.count() + 1)); 204 maj_c.setMaj_id((int)(majRepository.count() + 1));
207 majRepository.save(maj_c); // ajouter la mise a jour dans la table 205 majRepository.save(maj_c); // ajouter la mise a jour dans la table
208 - customer.setMaj(new HashSet<Maj>(Arrays.asList(maj_c))); 206 + HashSet<Maj> majs = new HashSet<Maj>(Arrays.asList(maj_c));
  207 + majs.addAll(customer.getMaj());
  208 + customer.setMaj(majs);
209 customerRepository.save(customer); // permet de rendre effective la jointure entre customer et maj 209 customerRepository.save(customer); // permet de rendre effective la jointure entre customer et maj
210 - return modelAndView; 210 + return "redirect:/session";
211 } 211 }
212 } 212 }
213 \ No newline at end of file 213 \ No newline at end of file
PFE06/src/main/resources/static/js/session.js 0 → 100644
@@ -0,0 +1,77 @@ @@ -0,0 +1,77 @@
  1 +$(document).ready(function() {
  2 +
  3 + /********** Tableau **********/
  4 +
  5 + var tableNodes = $('#nodes-table').DataTable( {
  6 + responsive: true,
  7 + select: {
  8 + style: 'multi'
  9 + }
  10 + } );
  11 +
  12 + var nodeSet = new Set();
  13 +
  14 + tableNodes.on('select', function (e, dt, type, indexes) {
  15 + var rowData = tableNodes.rows(indexes).data().toArray()[0];
  16 + nodeSet.add(rowData[0]);
  17 + } );
  18 +
  19 + tableNodes.on('deselect', function (e, dt, type, indexes) {
  20 + var rowData = tableNodes.rows(indexes).data().toArray()[0];
  21 + nodeSet.delete(rowData[0]);
  22 + } );
  23 +
  24 + document.getElementById("save_maj").addEventListener('click', function() {
  25 +
  26 + var form = document.createElement('form');
  27 + form.setAttribute('action', 'savemaj');
  28 + form.setAttribute('method', 'post');
  29 +
  30 + var modalContent = document.getElementById("modal-content");
  31 +
  32 + var majName = document.getElementById("majName").value;
  33 + var majDate = document.getElementById("majDate").value;
  34 +
  35 + if(nodeSet.size == 0) {
  36 + $("#warningFilesNumber").modal();
  37 + }
  38 +
  39 + else if(majName == "") {
  40 + modalContent.innerHTML = "Veuillez choisir un nom pour la mise à jour";
  41 + $("#warningFilesNumber").modal();
  42 + }
  43 +
  44 + else if(majDate == "") {
  45 + modalContent.innerHTML = "Veuillez choisir une date pour la mise à jour"
  46 + $("#warningFilesNumber").modal();
  47 + }
  48 +
  49 + else {
  50 + var nodes = Array.from(nodeSet);
  51 + console.log(nodes);
  52 +
  53 + var inputvar1 = document.createElement('input');
  54 + inputvar1.setAttribute('type', 'hidden');
  55 + inputvar1.setAttribute('name', 'name');
  56 + inputvar1.setAttribute('value', majName);
  57 + form.appendChild(inputvar1);
  58 +
  59 + var inputvar2 = document.createElement('input');
  60 + inputvar2.setAttribute('type', 'hidden');
  61 + inputvar2.setAttribute('name', 'date');
  62 + inputvar2.setAttribute('value', majDate);
  63 + form.appendChild(inputvar2);
  64 +
  65 + var inputvar3 = document.createElement('input');
  66 + inputvar3.setAttribute('type', 'hidden');
  67 + inputvar3.setAttribute('name', 'nodes');
  68 + inputvar3.setAttribute('value', nodes.join(";"));
  69 + form.appendChild(inputvar3);
  70 +
  71 + document.body.appendChild(form);
  72 + form.submit();
  73 + }
  74 +
  75 + });
  76 +
  77 +} );
PFE06/src/main/resources/templates/all.html
@@ -14,45 +14,57 @@ @@ -14,45 +14,57 @@
14 14
15 <div id="app"> 15 <div id="app">
16 <!-- NAV BAR --> 16 <!-- NAV BAR -->
17 - <nav class="navbar navbar-expand-lg navbar-dark bg-dark">  
18 - <span class="navbar-brand"> ID : <span th:text="${customerName}" th:remove="tag">Documentations</span></span>  
19 - <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">  
20 - <span class="navbar-toggler-icon"></span>  
21 - </button>  
22 - <div class="collapse navbar-collapse" id="navbarNavAltMarkup">  
23 - <div class="navbar-nav">  
24 - <a class="nav-item nav-link" th:href="@{/home}">Gestion des noeuds</a>  
25 - <a class="nav-item nav-link" th:href="@{/logout}">Déconnexion</a>  
26 - <li class="nav-item dropdown">  
27 - <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Options</a>  
28 - <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">  
29 - <div th:switch="${customerRole}">  
30 - <div th:case="'ADMIN'">  
31 - <a class="dropdown-item" th:href="@{/registration}">Enregistrer des utilisateurs</a>  
32 - <a class="dropdown-item active" th:href="@{/all}">Listes des utilisateurs</a></div>  
33 - <div th:case="'USER'"></div> 17 + <div id="app">
  18 + <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
  19 + <span class="navbar-brand"> ID : <span th:text="${customerName}" th:remove="tag">Documentations</span></span>
  20 + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
  21 + <span class="navbar-toggler-icon"></span>
  22 + </button>
  23 + <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
  24 + <div class="navbar-nav">
  25 + <a class="nav-item nav-link active" th:href="@{/home}">Gestion des noeuds <span class="sr-only">(current)</span></a>
  26 + <a class="nav-item nav-link" th:href="@{/logout}">Déconnexion</a>
  27 + <li class="nav-item dropdown">
  28 + <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Options</a>
  29 + <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
  30 + <div th:switch="${customerRole}">
  31 + <div th:case="'ADMIN'">
  32 + <a class="dropdown-item" th:href="@{/registration}">Enregistrer des utilisateurs</a>
  33 + <a class="dropdown-item" th:href="@{/all}">Listes des utilisateurs</a>
  34 + <a class="dropdown-item" th:href="@{/session}">Paramétrer une mise à jour</a>
  35 + </div>
  36 + <div th:case="'USER'">
  37 + <a class="dropdown-item" th:href="@{/session}">Paramétrer une mise à jour</a>
  38 + </div>
  39 + </div>
  40 + <a class="dropdown-item" href="#">A ajouter...</a>
34 </div> 41 </div>
35 - <a class="dropdown-item" href="#">A ajouter...</a>  
36 - </div>  
37 - </li>  
38 - <a class="nav-item nav-link disabled" href="#">Documentations</a> 42 + </li>
  43 + <a class="nav-item nav-link disabled" href="#">Documentations</a>
  44 + </div>
39 </div> 45 </div>
40 - </div>  
41 - </nav> 46 + </nav>
42 47
43 <!-- TABLE PART --> 48 <!-- TABLE PART -->
44 - <table class="table">  
45 - <tr>  
46 - <th scope="col">Pseudo</th>  
47 - <th scope="col">Role</th>  
48 - <th scope="col">Id</th>  
49 - </tr>  
50 - <tr th:each="prod : ${list}">  
51 - <td th:text="${prod.getEmail()}">pseudo</td>  
52 - <td th:text="${prod.getRole()}">role</td>  
53 - <td th:text="${prod.customer_id}">id</td>  
54 - </tr>  
55 - </table> 49 +
  50 + <div class="container">
  51 +
  52 + <h1 style="margin-bottom:50px; margin-top:50px; border-bottom:1px solid #CCC; padding-bottom:20px;">Liste des utilisateurs</h1>
  53 +
  54 + <table class="table table-striped table-bordered">
  55 + <tr>
  56 + <th scope="col">Email</th>
  57 + <th scope="col">Role</th>
  58 + <th scope="col">ID</th>
  59 + </tr>
  60 + <tr th:each="prod : ${list}">
  61 + <td th:text="${prod.getEmail()}">Email</td>
  62 + <td th:text="${prod.getRole()}">Role</td>
  63 + <td th:text="${prod.customer_id}">ID</td>
  64 + </tr>
  65 + </table>
  66 + </div>
  67 +
56 </div> 68 </div>
57 69
58 <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script> 70 <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
PFE06/src/main/resources/templates/home.html
@@ -34,7 +34,6 @@ @@ -34,7 +34,6 @@
34 <a class="dropdown-item" th:href="@{/registration}">Enregistrer des utilisateurs</a> 34 <a class="dropdown-item" th:href="@{/registration}">Enregistrer des utilisateurs</a>
35 <a class="dropdown-item" th:href="@{/all}">Listes des utilisateurs</a> 35 <a class="dropdown-item" th:href="@{/all}">Listes des utilisateurs</a>
36 <a class="dropdown-item" th:href="@{/session}">Paramétrer une mise à jour</a> 36 <a class="dropdown-item" th:href="@{/session}">Paramétrer une mise à jour</a>
37 - <a class="dropdown-item" th:href="@{/test}">test maj</a>  
38 </div> 37 </div>
39 <div th:case="'USER'"> 38 <div th:case="'USER'">
40 <a class="dropdown-item" th:href="@{/session}">Paramétrer une mise à jour</a> 39 <a class="dropdown-item" th:href="@{/session}">Paramétrer une mise à jour</a>
PFE06/src/main/resources/templates/registration.html
@@ -10,6 +10,8 @@ @@ -10,6 +10,8 @@
10 </head> 10 </head>
11 <body> 11 <body>
12 12
  13 +<div id="app">
  14 +
13 <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> 15 <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
14 <span class="navbar-brand"> ID : <span th:text="${customerName}" th:remove="tag">Documentations</span></span> 16 <span class="navbar-brand"> ID : <span th:text="${customerName}" th:remove="tag">Documentations</span></span>
15 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation"> 17 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
@@ -17,17 +19,20 @@ @@ -17,17 +19,20 @@
17 </button> 19 </button>
18 <div class="collapse navbar-collapse" id="navbarNavAltMarkup"> 20 <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
19 <div class="navbar-nav"> 21 <div class="navbar-nav">
20 - <!--<a class="nav-item nav-link active" th:href="@{/registration}">Enregistrer des utilisateurs <span class="sr-only">(current)</span></a>-->  
21 - <a class="nav-item nav-link" th:href="@{/home}">Gestion des noeuds</a> 22 + <a class="nav-item nav-link active" th:href="@{/home}">Gestion des noeuds <span class="sr-only">(current)</span></a>
22 <a class="nav-item nav-link" th:href="@{/logout}">Déconnexion</a> 23 <a class="nav-item nav-link" th:href="@{/logout}">Déconnexion</a>
23 <li class="nav-item dropdown"> 24 <li class="nav-item dropdown">
24 <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Options</a> 25 <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Options</a>
25 <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> 26 <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
26 <div th:switch="${customerRole}"> 27 <div th:switch="${customerRole}">
27 <div th:case="'ADMIN'"> 28 <div th:case="'ADMIN'">
28 - <a class="dropdown-item active" th:href="@{/registration}">Enregistrer des utilisateurs</a>  
29 - <a class="dropdown-item" th:href="@{/all}">Listes des utilisateurs</a></div>  
30 - <div th:case="'USER'"></div> 29 + <a class="dropdown-item" th:href="@{/registration}">Enregistrer des utilisateurs</a>
  30 + <a class="dropdown-item" th:href="@{/all}">Listes des utilisateurs</a>
  31 + <a class="dropdown-item" th:href="@{/session}">Paramétrer une mise à jour</a>
  32 + </div>
  33 + <div th:case="'USER'">
  34 + <a class="dropdown-item" th:href="@{/session}">Paramétrer une mise à jour</a>
  35 + </div>
31 </div> 36 </div>
32 <a class="dropdown-item" href="#">A ajouter...</a> 37 <a class="dropdown-item" href="#">A ajouter...</a>
33 </div> 38 </div>
PFE06/src/main/resources/templates/session.html
@@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
17 17
18 <body> 18 <body>
19 <div id="app"> 19 <div id="app">
  20 +
20 <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> 21 <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
21 <span class="navbar-brand"> ID : <span th:text="${customerName}" th:remove="tag">Documentations</span></span> 22 <span class="navbar-brand"> ID : <span th:text="${customerName}" th:remove="tag">Documentations</span></span>
22 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation"> 23 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
@@ -24,7 +25,7 @@ @@ -24,7 +25,7 @@
24 </button> 25 </button>
25 <div class="collapse navbar-collapse" id="navbarNavAltMarkup"> 26 <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
26 <div class="navbar-nav"> 27 <div class="navbar-nav">
27 - <a class="nav-item nav-link active" th:href="@{/home}">Création d'une mise à jour <span class="sr-only">(current)</span></a> 28 + <a class="nav-item nav-link active" th:href="@{/home}">Gestion des noeuds <span class="sr-only">(current)</span></a>
28 <a class="nav-item nav-link" th:href="@{/logout}">Déconnexion</a> 29 <a class="nav-item nav-link" th:href="@{/logout}">Déconnexion</a>
29 <li class="nav-item dropdown"> 30 <li class="nav-item dropdown">
30 <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Options</a> 31 <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Options</a>
@@ -33,10 +34,10 @@ @@ -33,10 +34,10 @@
33 <div th:case="'ADMIN'"> 34 <div th:case="'ADMIN'">
34 <a class="dropdown-item" th:href="@{/registration}">Enregistrer des utilisateurs</a> 35 <a class="dropdown-item" th:href="@{/registration}">Enregistrer des utilisateurs</a>
35 <a class="dropdown-item" th:href="@{/all}">Listes des utilisateurs</a> 36 <a class="dropdown-item" th:href="@{/all}">Listes des utilisateurs</a>
36 - <a class="dropdown-item" th:href="@{/home}">Ajouter un novueau fichier au serveur</a> 37 + <a class="dropdown-item" th:href="@{/session}">Paramétrer une mise à jour</a>
37 </div> 38 </div>
38 <div th:case="'USER'"> 39 <div th:case="'USER'">
39 - <a class="dropdown-item" th:href="@{/home}">Ajouter un novueau fichier au serveur</a> 40 + <a class="dropdown-item" th:href="@{/session}">Paramétrer une mise à jour</a>
40 </div> 41 </div>
41 </div> 42 </div>
42 <a class="dropdown-item" href="#">A ajouter...</a> 43 <a class="dropdown-item" href="#">A ajouter...</a>
@@ -48,7 +49,20 @@ @@ -48,7 +49,20 @@
48 </nav> 49 </nav>
49 50
50 <div class="container" style="padding-bottom: 50px;"> 51 <div class="container" style="padding-bottom: 50px;">
51 - <h1 style="margin-bottom:50px; margin-top:50px; border-bottom:1px solid #CCC; padding-bottom:20px;">Choix des noeuds</h1> 52 +
  53 + <h1 style="margin-bottom:50px; margin-top:50px; border-bottom:1px solid #CCC; padding-bottom:20px;">Relancer une mise à jour</h1>
  54 +
  55 + <div class="form-group">
  56 +
  57 + <select multiple class="form-control">
  58 + <option value="">--</option>
  59 + <option th:each="maj : ${customerMaj}" th:value="${maj.getMaj_id()}" th:utext="${maj.getMaj()}"/>
  60 + </select>
  61 +
  62 + <button id="start_maj" type="submit" class="btn btn-primary" style="margin-top:20px;">Lancer la mise à jour</button>
  63 + </div>
  64 +
  65 + <h1 style="margin-bottom:50px; margin-top:50px; border-bottom:1px solid #CCC; padding-bottom:20px;">Créer une mise à jour</h1>
52 <table id="nodes-table" class="table table-striped table-bordered dt-responsive nowrap"> 66 <table id="nodes-table" class="table table-striped table-bordered dt-responsive nowrap">
53 <thead> 67 <thead>
54 <tr> 68 <tr>
@@ -59,112 +73,59 @@ @@ -59,112 +73,59 @@
59 </thead> 73 </thead>
60 <tbody> 74 <tbody>
61 <tr> 75 <tr>
62 - <td>Nixon</td>  
63 - <td>System Architect</td>  
64 - <td>Edinburgh</td>  
65 - </tr>  
66 - <tr>  
67 - <td>Winters</td>  
68 - <td>Accountant</td>  
69 - <td>Tokyo</td>  
70 - </tr>  
71 - <tr>  
72 - <td>Cox</td>  
73 - <td>Junior Technical Author</td>  
74 - <td>San Francisco</td> 76 + <td>AT-001</td>
  77 + <td>85.10.201.246</td>
  78 + <td>ARM</td>
75 </tr> 79 </tr>
76 <tr> 80 <tr>
77 - <td>Kelly</td>  
78 - <td>Senior Javascript Developer</td>  
79 - <td>Edinburgh</td> 81 + <td>AT-002</td>
  82 + <td>85.10.201.245</td>
  83 + <td>ARM</td>
80 </tr> 84 </tr>
81 <tr> 85 <tr>
82 - <td>Satou</td>  
83 - <td>Accountant</td>  
84 - <td>Tokyo</td> 86 + <td>AT-003</td>
  87 + <td>85.10.201.244</td>
  88 + <td>ARM</td>
85 </tr> 89 </tr>
86 <tr> 90 <tr>
87 - <td>Williamson</td>  
88 - <td>Integration Specialist</td>  
89 - <td>New York</td>  
90 - </tr>  
91 - <tr>  
92 - <td>Chandler</td>  
93 - <td>Sales Assistant</td>  
94 - <td>San Francisco</td>  
95 - </tr>  
96 - <tr>  
97 - <td>Davidson</td>  
98 - <td>Integration Specialist</td>  
99 - <td>Tokyo</td>  
100 - </tr>  
101 - <tr>  
102 - <td>Hurst</td>  
103 - <td>Javascript Developer</td>  
104 - <td>San Francisco</td>  
105 - </tr>  
106 - <tr>  
107 - <td>Frost</td>  
108 - <td>Software Engineer</td>  
109 - <td>Edinburgh</td>  
110 - </tr>  
111 - <tr>  
112 - <td>Gaines</td>  
113 - <td>Office Manager</td>  
114 - <td>London</td>  
115 - </tr>  
116 - <tr>  
117 - <td>Flynn</td>  
118 - <td>Support Lead</td>  
119 - <td>Edinburgh</td>  
120 - </tr>  
121 - <tr>  
122 - <td>Marshall</td>  
123 - <td>Regional Director</td>  
124 - <td>San Francisco</td>  
125 - </tr>  
126 - <tr>  
127 - <td>Kennedy</td>  
128 - <td>Senior Marketing Designer</td>  
129 - <td>London</td>  
130 - </tr>  
131 - <tr>  
132 - <td>Fitzpatrick</td>  
133 - <td>Regional Director</td>  
134 - <td>London</td>  
135 - </tr>  
136 - <tr>  
137 - <td>Silva</td>  
138 - <td>Marketing Designer</td>  
139 - <td>London</td>  
140 - </tr>  
141 - <tr>  
142 - <td>Byrd</td>  
143 - <td>Chief Financial Officer (CFO)</td>  
144 - <td>New York</td>  
145 - </tr>  
146 - <tr>  
147 - <td>Little</td>  
148 - <td>Systems Administrator</td>  
149 - <td>New York</td>  
150 - </tr>  
151 - <tr>  
152 - <td>Greer</td>  
153 - <td>Software Engineer</td>  
154 - <td>London</td> 91 + <td>ST-002</td>
  92 + <td>85.10.201.243</td>
  93 + <td>ARM</td>
155 </tr> 94 </tr>
156 </tbody> 95 </tbody>
157 </table> 96 </table>
158 <div class="form-group"> 97 <div class="form-group">
159 - <input type="email" class="form-control" id="maj" placeholder="Nom de la maj" name="maj"> 98 + <input type="text" class="form-control" id="majName" placeholder="Nom de la maj" name="maj">
160 </div> 99 </div>
161 <div class="form-group"> 100 <div class="form-group">
162 - <input type="password" class="form-control" id="date" placeholder="date de la mise à jour" name="date"> 101 + <input type="date" class="form-control" id="majDate" placeholder="Date de la mise à jour" name="date">
163 </div> 102 </div>
164 <!-- Ajouter une liste qui montre les differents fichiers disponibles --> 103 <!-- Ajouter une liste qui montre les differents fichiers disponibles -->
165 - <button id="save_maj" type="submit" class="btn btn-primary">sauvegarder la mise à jour</button>  
166 - <button id="run_maj" type="submit" class="btn btn-primary">lancer la mise à jour</button> 104 + <button id="save_maj" type="submit" class="btn btn-primary">Sauvegarder la mise à jour</button>
  105 + <button id="run_maj" type="submit" class="btn btn-primary">Lancer la mise à jour</button>
  106 +
167 </div> 107 </div>
  108 +
  109 + <div class="modal fade" id="warningFilesNumber" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
  110 + <div class="modal-dialog modal-dialog-centered" role="document">
  111 + <div class="modal-content">
  112 + <div class="modal-header">
  113 + <h5 class="modal-title" id="modal-title">Attention</h5>
  114 + <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  115 + <span aria-hidden="true">&times;</span>
  116 + </button>
  117 + </div>
  118 + <div id="modal-content" class="modal-body">
  119 + Veuillez choisir un ou plusieurs noeuds dans le tableau
  120 + </div>
  121 + <div class="modal-footer">
  122 + <button id="modal-button" type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
  123 + </div>
  124 + </div>
  125 + </div>
  126 + </div>
  127 +
  128 +
168 </div> 129 </div>
169 130
170 </div> 131 </div>
@@ -175,6 +136,6 @@ @@ -175,6 +136,6 @@
175 <script src="https://cdn.datatables.net/select/1.2.7/js/dataTables.select.min.js" charset="utf-8"></script> 136 <script src="https://cdn.datatables.net/select/1.2.7/js/dataTables.select.min.js" charset="utf-8"></script>
176 <script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js" charset="utf-8"></script> 137 <script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js" charset="utf-8"></script>
177 <script src="https://cdn.datatables.net/responsive/2.2.3/js/dataTables.responsive.min.js" charset="utf-8"></script> 138 <script src="https://cdn.datatables.net/responsive/2.2.3/js/dataTables.responsive.min.js" charset="utf-8"></script>
178 -<script th:src="@{/js/home.js}"></script> 139 +<script th:src="@{/js/session.js}"></script>
179 </body> 140 </body>
180 </html> 141 </html>