Переглянути джерело

Add and edit buttons added

Drowsito 2 місяців тому
батько
коміт
018466af36

+ 30 - 0
src/main/java/es/uv/saic/feign/OrganClient.java

@@ -65,5 +65,35 @@ public interface OrganClient {
 
 
     @PostMapping("/organs/equivalents")
     @PostMapping("/organs/equivalents")
 	public List<Integer> getEquivalents(@RequestParam Integer lugar, @RequestParam String tlugar);
 	public List<Integer> getEquivalents(@RequestParam Integer lugar, @RequestParam String tlugar);
+
+    @PostMapping("/organs/new/centre")
+    public void createNewCentre(@RequestParam("codiCentro") Integer codigo,
+            @RequestParam("nomCasCentro") String nomCas,
+            @RequestParam("nomValCentro") String nomVal,
+            @RequestParam("ructCentro") Integer ruct);
+
+    @PostMapping("/organs/new/titulacion")
+    public void createNewTitulacion(@RequestParam("codiTit") Integer codigo,
+            @RequestParam("centre") Integer idCentro,
+            @RequestParam("nomCasTit") String nomCas,
+            @RequestParam("nomValTit") String nomVal,
+            @RequestParam("ructTit") Integer ruct,
+            @RequestParam("tambit") String ambit);
+    
+    @PostMapping("organs/update/centre")
+	public void updateCentre(@RequestParam("lugar") Integer lugar,
+			@RequestParam("tlugar") String tlugar,
+			@RequestParam("nomCasTit") String nomCas,
+			@RequestParam("nomValTit") String nomVal,
+			@RequestParam("ructTit") Integer ruct);
+
+    @PostMapping("organs/update/titulacion")
+	public void updateTitulacion(@RequestParam("lugar") Integer lugar,
+			@RequestParam("tlugar") String tlugar,
+			@RequestParam("nomCasTit") String nomCas,
+			@RequestParam("nomValTit") String nomVal,
+			@RequestParam("ructTit") Integer ruct,
+		    @RequestParam("centre") Integer idCentro,
+			@RequestParam("tambit") String ambit);  
 }
 }
 
 

+ 15 - 3
src/main/java/es/uv/saic/web/DashboardController.java

@@ -83,6 +83,20 @@ public class DashboardController {
                 }
                 }
             }
             }
 
 
+			if (response.containsKey("centers")) {
+                Object centersRaw = response.get("centers");
+                try {
+                    List<OrganDTO> centers = objectMapper.convertValue(
+                            centersRaw,
+                            objectMapper.getTypeFactory().constructCollectionType(List.class, OrganDTO.class)
+                    );
+                    response.put("centers", centers);
+                } catch (Exception ex) {
+                    System.err.println("Error reconstruyendo lista de OrganDTO: " + ex.getMessage());
+                }
+            }
+
+
             model.addAllAttributes(response);
             model.addAllAttributes(response);
 
 
 			String status = response.get("redirect").toString();
 			String status = response.get("redirect").toString();
@@ -122,9 +136,7 @@ public class DashboardController {
 	@ResponseBody
 	@ResponseBody
 	public List<CategoriaDocumentDTO> loadDocuments(Model model, @PathVariable Integer idTitulacio){
 	public List<CategoriaDocumentDTO> loadDocuments(Model model, @PathVariable Integer idTitulacio){
 		List<CategoriaDocumentDTO> a = dbc.loadDocuments(idTitulacio);
 		List<CategoriaDocumentDTO> a = dbc.loadDocuments(idTitulacio);
-		for (CategoriaDocumentDTO categoriaDocumentDTO : a) {
-			System.out.println("Categoria: " + categoriaDocumentDTO);
-		}
+
 		return a;
 		return a;
 	}
 	}
 
 

+ 53 - 0
src/main/java/es/uv/saic/web/OrganController.java

@@ -11,6 +11,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
 
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 
@@ -18,6 +19,8 @@ import es.uv.saic.domain.Usuari;
 import es.uv.saic.dto.OrganDTO;
 import es.uv.saic.dto.OrganDTO;
 import es.uv.saic.feign.OrganClient;
 import es.uv.saic.feign.OrganClient;
 import jakarta.servlet.http.HttpSession;
 import jakarta.servlet.http.HttpSession;
+import org.springframework.web.bind.annotation.RequestBody;
+
 
 
 @Controller
 @Controller
 public class OrganController {
 public class OrganController {
@@ -119,4 +122,54 @@ public class OrganController {
 		model.addAllAttributes(response);
 		model.addAllAttributes(response);
 		return "components/selector_centres";
 		return "components/selector_centres";
 	}
 	}
+
+	@PostMapping("/new/centre")
+	@ResponseBody
+	public void createNewCentre(Model model, Authentication auth,
+			@RequestParam("codiCentro") Integer codigo,
+            @RequestParam("nomCasCentro") String nomCas,
+            @RequestParam("nomValCentro") String nomVal,
+            @RequestParam("ructCentro") Integer ruct) {
+		oc.createNewCentre(codigo, nomCas, nomVal, ruct);
+	}
+
+	@PostMapping("/new/titulacion")	
+	@ResponseBody
+	public void createNewTitulacion(Model model, Authentication auth,
+			@RequestParam("codiTit") Integer codigo,
+            @RequestParam("centre") Integer idCentro,
+            @RequestParam("nomCasTit") String nomCas,
+            @RequestParam("nomValTit") String nomVal,
+            @RequestParam("ructTit") Integer ruct,
+            @RequestParam("tambit") String ambit) {
+		oc.createNewTitulacion(codigo ,idCentro, nomCas, nomVal, ruct, ambit);
+	}
+
+	@PostMapping("/update/centre")
+	@ResponseBody
+	public Integer updateCentre(Model model, Authentication auth, 
+			@RequestParam("lugar") Integer lugar,
+			@RequestParam("tlugar") String tlugar,
+			@RequestParam("nomCasTit") String nomCas,
+			@RequestParam("nomValTit") String nomVal,
+			@RequestParam("ructTit") Integer ruct) {
+		oc.updateCentre(lugar, tlugar, nomCas, nomVal, ruct);
+
+		return ruct;
+	}
+	
+	@PostMapping("/update/titulacion")
+	@ResponseBody
+	public Integer updateTitulacion(Model model, Authentication auth, 
+			@RequestParam("lugar") Integer lugar,
+			@RequestParam("tlugar") String tlugar,
+			@RequestParam("nomCasTit") String nomCas,
+			@RequestParam("nomValTit") String nomVal,
+			@RequestParam("ructTit") Integer ruct,
+		    @RequestParam("centre") Integer idCentro,
+			@RequestParam("tambit") String ambit) {
+		oc.updateTitulacion(lugar, tlugar, nomCas, nomVal, ruct, idCentro, ambit);
+
+		return ruct;
+	}
 }
 }

+ 85 - 2
src/main/resources/templates/dashboardCentre.html

@@ -128,8 +128,27 @@
                             	</div>      
                             	</div>      
                             </div>
                             </div>
                             <div class="tab-pane" id="tab2">
                             <div class="tab-pane" id="tab2">
-								<span th:if="${editable}" class="btn btn-primary pointer" style="z-index:100;float:right;margin-right:25px;font-size:75%;padding: 5px 8px 3px 8px;" onclick="$('#newDocumentModal').modal('toggle');"><i class="fa fa-plus"></i></span>
-								<span th:if="${editable}" class="btn btn-warning pointer" style="z-index:100;float:right;margin-right:10px;font-size:75%;padding: 5px 8px 3px 8px;" onclick="$('#hideDocumentsModal').modal('toggle');"><i class="fas fa-eye-slash"></i></span>
+								<div th:if="${editable}" style="display: flex; justify-content: space-between; align-items: center; padding: 10px 0; width: 100%;">
+									<span class="btn btn-info pointer" 
+										style="font-size:75%; padding: 5px 8px 3px 8px; margin-left: 25px;" 
+										onclick="editOrgan(this)"
+										th:attr="data-lugar=${organ.lugar},
+												data-tlugar=${organ.tlugar},
+												data-nomcas=${organ.nomCas},
+												data-nomval=${organ.nomVal},
+												data-ruct=${organ.ruct}">
+										<i class="fas fa-edit"></i>
+									</span>
+
+									<div style="display: flex; gap: 10px; margin-right: 25px;">
+										<span class="btn btn-warning pointer" style="font-size:75%; padding: 5px 8px 3px 8px;" onclick="$('#hideDocumentsModal').modal('toggle');">
+											<i class="fas fa-eye-slash"></i>
+										</span>
+										<span class="btn btn-primary pointer" style="font-size:75%; padding: 5px 8px 3px 8px;" onclick="$('#newDocumentModal').modal('toggle');">
+											<i class="fa fa-plus"></i>
+										</span>
+									</div>
+								</div>
 								<div class="row" style="padding-left:25px;width:100%;">  	
 								<div class="row" style="padding-left:25px;width:100%;">  	
                             		<div class="col-lg-12" style="margin-left:-5px;">
                             		<div class="col-lg-12" style="margin-left:-5px;">
                            				<strong th:text="#{dashboard.acred.docs.title}">Documentación</strong>
                            				<strong th:text="#{dashboard.acred.docs.title}">Documentación</strong>
@@ -329,6 +348,41 @@
 	  </div>
 	  </div>
 	</div>
 	</div>
 
 
+	<div th:if="${editable}" class="modal fade" id="editCentreModal" tabindex="-1" role="dialog" aria-labelledby="editCentreModal" aria-hidden="true">
+		<div class="modal-dialog modal-lg">
+			<div class="modal-content">
+				<div class="modal-header">
+					<h5 class="modal-title">Editar centro</h5>
+					<button type="button" class="close" data-dismiss="modal">&times;</button>
+				</div>
+				<div class="modal-body">
+					<div class="container-fluid">
+						<form id="editOrganForm">
+							<input type="hidden" id="editLugar" name="lugar">
+    						<input type="hidden" id="editTLugar" name="tlugar">
+							<div class="uv-table-group-procedure">
+								<label>Nombre Castellano</label>
+								<input type="text" class="form-control" id="editNomCas" name="nomCasTit">
+							</div>
+							<div class="uv-table-group-procedure">
+								<label>Nombre Valenciano</label>
+								<input type="text" class="form-control" id="editNomVal" name="nomValTit">
+							</div>
+							<div class="uv-table-group-procedure">
+								<label>RUCT</label>
+								<input type="number" class="form-control" id="editRuct" name="ructTit">
+							</div>
+						</form>
+					</div>
+				</div>
+				<div class="modal-footer">
+					<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
+					<button class="btn btn-success" type="submit" form="editOrganForm">Confirmar Edición</button>
+				</div>
+			</div>
+		</div>
+	</div>
+
 	<!-- contactModal -->
 	<!-- contactModal -->
 	<div th:replace="~{layouts/common.html :: contactModal}"></div>
 	<div th:replace="~{layouts/common.html :: contactModal}"></div>
 	
 	
@@ -422,6 +476,24 @@
 				  selectionType: 'single',
 				  selectionType: 'single',
 				  dataSource: '/dashboard/documents/'+ruct
 				  dataSource: '/dashboard/documents/'+ruct
 			});
 			});
+
+			$('#editOrganForm').on('submit', function(e) {
+				e.preventDefault();
+				const datosCargados = Object.fromEntries(new FormData(this));
+        		console.log("Enviando estos datos:", datosCargados);
+				
+				$.ajax({
+					url: '/update/centre',
+					type: 'POST',
+					data: new FormData(this),
+					processData: false,
+					contentType: false,
+					success: function() { 
+						$('#editTitulacionModal').modal('hide');
+						window.location.href = "/dashboard/" + ruct;
+					}
+				});
+			});
 			drawReports(ruct);
 			drawReports(ruct);
 			drawGantt(ruct);
 			drawGantt(ruct);
 			$.get('/dashboard/graphs/list/'+ruct, function(data){
 			$.get('/dashboard/graphs/list/'+ruct, function(data){
@@ -856,6 +928,17 @@
 			}, 100);
 			}, 100);
 		}
 		}
 
 
+		function editOrgan(button) {
+			const data = $(button).data();
+			$('#editLugar').val(data.lugar);
+			$('#editTLugar').val(data.tlugar);
+			$('#editNomCas').val(data.nomcas);
+			$('#editNomVal').val(data.nomval);
+			$('#editRuct').val(data.ruct);;
+			
+			$('#editCentreModal').modal('show');
+		}
+
 	</script>
 	</script>
 
 
 </body>
 </body>

+ 100 - 4
src/main/resources/templates/dashboardTitulacio.html

@@ -120,10 +120,26 @@
                             	</div>      
                             	</div>      
                             </div>
                             </div>
                             <div class="tab-pane" id="tab2">
                             <div class="tab-pane" id="tab2">
-                            		<span th:if="${editable}" class="btn btn-primary pointer" style="z-index:100;float:right;margin-right:25px;font-size:75%;padding: 5px 8px 3px 8px;" onclick="$('#newDocumentModal').modal('toggle');"><i class="fa fa-plus"></i></span>
-									<span th:if="${editable}" class="btn btn-warning pointer" style="z-index:100;float:right;margin-right:10px;font-size:75%;padding: 5px 8px 3px 8px;" onclick="$('#hideDocumentsModal').modal('toggle');"><i class="fas fa-eye-slash"></i></span>
-                               		<span th:if="${editable}" class="btn btn-secondary pointer" style="z-index:100;float:right;margin-right:10px;font-size:75%;padding: 5px 8px 3px 8px;" onclick="$('#updateAcreditaModal').modal('toggle');"><i class="fas fa-calendar-alt"></i></span>
-                               		
+								<div th:if="${editable}" style="display: flex; justify-content: space-between; align-items: center; padding: 10px 0; width: 100%;">
+									<span class="btn btn-info pointer" 
+										style="font-size:75%; padding: 5px 8px 3px 8px; margin-left: 25px;" 
+										onclick="editOrgan(this)"
+										th:attr="data-lugar=${organ.lugar},
+												data-tlugar=${organ.tlugar},
+												data-nomcas=${organ.nomCas},
+												data-nomval=${organ.nomVal},
+												data-ruct=${organ.ruct},
+												data-tambit=${organ.tambit},
+												data-idcentre=${organ.lugar2}">
+										<i class="fas fa-edit"></i>
+									</span>
+
+									<div style="display: flex; gap: 10px; margin-right: 25px;">
+										<span class="btn btn-secondary pointer" style="font-size:75%; padding: 5px 8px 3px 8px;" onclick="$('#updateAcreditaModal').modal('toggle');"><i class="fas fa-calendar-alt"></i></span>
+										<span class="btn btn-warning pointer" style="font-size:75%; padding: 5px 8px 3px 8px;" onclick="$('#hideDocumentsModal').modal('toggle');"><i class="fas fa-eye-slash"></i></span>
+										<span class="btn btn-primary pointer" style="font-size:75%; padding: 5px 8px 3px 8px;" onclick="$('#newDocumentModal').modal('toggle');"><i class="fa fa-plus"></i></span>
+									</div>
+								</div>
                                	<div class="row" style="padding-left:25px;width:100%;">
                                	<div class="row" style="padding-left:25px;width:100%;">
                                		<div class="col-lg-12" th:if="${organ.acreditacio != null}" style="margin-left:-5px;">
                                		<div class="col-lg-12" th:if="${organ.acreditacio != null}" style="margin-left:-5px;">
                           				<div class="input-group date-group-lg">
                           				<div class="input-group date-group-lg">
@@ -494,6 +510,55 @@
 		</div>
 		</div>
 	  </div>
 	  </div>
 
 
+	<div th:if="${editable}" class="modal fade" id="editTitulacionModal" tabindex="-1" role="dialog" aria-labelledby="editTitulationModal" aria-hidden="true">
+		<div class="modal-dialog modal-lg">
+			<div class="modal-content">
+				<div class="modal-header">
+					<h5 class="modal-title">Editar titulación</h5>
+					<button type="button" class="close" data-dismiss="modal">&times;</button>
+				</div>
+				<div class="modal-body">
+					<div class="container-fluid">
+						<form id="editOrganForm">
+							<input type="hidden" id="editLugar" name="lugar">
+							<input type="hidden" id="editTLugar" name="tlugar">
+							<div class="uv-table-group-procedure">
+								<label>Centro perteneciente</label>
+								<select class="selectpicker" id="editCentre" name="centre" data-width="100%" data-live-search="true">
+									<option th:each="item : ${centers}" th:text="${#locale.language == 'es' ? item.nomCas : item.nomVal}" th:value="${item.lugar}"></option>
+								</select>
+							</div>
+							<div class="uv-table-group-procedure">
+								<label>Nombre Castellano</label>
+								<input type="text" class="form-control" id="editNomCas" name="nomCasTit">
+							</div>
+							<div class="uv-table-group-procedure">
+								<label>Nombre Valenciano</label>
+								<input type="text" class="form-control" id="editNomVal" name="nomValTit">
+							</div>
+							<div class="uv-table-group-procedure">
+								<label>RUCT</label>
+								<input type="number" class="form-control" id="editRuct" name="ructTit">
+							</div>
+							<div class="uv-table-group-procedure">
+								<label>Ámbito</label>
+								<select class="form-control selectpicker" id="editAmbit" name="tambit" data-width="100%">
+									<option value="G">Grado</option>
+									<option value="M">Máster</option>
+									<option value="D">Doctorado</option>
+								</select>
+							</div>
+						</form>
+					</div>
+				</div>
+				<div class="modal-footer">
+					<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
+					<button class="btn btn-success" type="submit" form="editOrganForm">Confirmar Edición</button>
+				</div>
+			</div>
+		</div>
+	</div>
+
 	<!-- contactModal -->
 	<!-- contactModal -->
 	<div th:replace="~{layouts/common.html :: contactModal}"></div>
 	<div th:replace="~{layouts/common.html :: contactModal}"></div>
 	
 	
@@ -905,6 +970,23 @@
 				  selectionType: 'single',
 				  selectionType: 'single',
 				  dataSource: '/dashboard/documents/'+ruct
 				  dataSource: '/dashboard/documents/'+ruct
 			});
 			});
+
+			$('#editOrganForm').on('submit', function(e) {
+				e.preventDefault();
+				const datosCargados = Object.fromEntries(new FormData(this));
+
+				$.ajax({
+					url: '/update/titulacion',
+					type: 'POST',
+					data: new FormData(this),
+					processData: false,
+					contentType: false,
+					success: function(ruct) { 
+						$('#editTitulacionModal').modal('hide');
+						window.location.href = "/dashboard/" + ruct;
+					}
+				});
+			});
 		
 		
 			$.get('/dashboard/gantt/'+ruct, function(data){
 			$.get('/dashboard/gantt/'+ruct, function(data){
 				data.forEach(function(d){d.id = 'Task '+d.id;});
 				data.forEach(function(d){d.id = 'Task '+d.id;});
@@ -1171,6 +1253,20 @@
 			event.preventDefault();
 			event.preventDefault();
 		}
 		}
 
 
+		function editOrgan(button) {
+			const data = $(button).data();
+			$('#editLugar').val(data.lugar);
+			$('#editTLugar').val(data.tlugar);
+			$('#editNomCas').val(data.nomcas);
+			$('#editNomVal').val(data.nomval);
+			$('#editRuct').val(data.ruct);
+			
+			$('#editCentre').val(data.idcentre).selectpicker('refresh');
+			$('#editAmbit').val(data.tambit).selectpicker('refresh');
+			
+			$('#editTitulacionModal').modal('show');
+		}
+
 	</script>
 	</script>
 
 
 </body>
 </body>

+ 130 - 0
src/main/resources/templates/dashboardUniversitat.html

@@ -282,6 +282,90 @@
 	  </div>
 	  </div>
 	</div>
 	</div>
 
 
+	<div th:if="${editable}" class="modal fade" id="newOrganModal" tabindex="-1" role="dialog" aria-labelledby="newOrganModal" aria-hidden="true">
+	  <div class="modal-dialog modal-lg">
+	    <div class="modal-content">
+		    <div class="modal-header">
+		        <h5 class="modal-title">Añadir organo</h5>
+		        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+		        	<span aria-hidden="true">&times;</span>
+		        </button>
+	        </div>
+	        <div class="modal-body">
+	        	<div class="container-fluid">
+			    	<form id="newOrganForm">
+						<div class="uv-table-group-procedure mb-4">
+							<label>Organo a añadir</label>
+							<select class="form-control selectpicker" id="typeSelector" onchange="toggleFormFields(this.value)">
+								<option value="centro">Centro</option>
+                                <option value="titulacion">Titulación</option>
+							</select>
+						</div>
+
+						<hr>
+
+						<div id="sectionCentro">
+							<div class="uv-table-group-procedure">
+								<label>Codigo centro</label>
+                                <input type="number" class="form-control" name="codiCentro">
+							</div>
+							<div class="uv-table-group-procedure">
+								<label>Nombre Castellano</label>
+                                <input type="text" class="form-control" name="nomCasCentro">
+							</div>
+							<div class="uv-table-group-procedure">
+								<label>Nombre Valenciano</label>
+                                <input type="text" class="form-control" name="nomValCentro">
+							</div>
+							<div class="uv-table-group-procedure">
+                                <label>RUCT</label>
+                                <input type="number" class="form-control" name="ructCentro">
+                            </div>
+						</div>
+
+						<div id="sectionTitulacion" style="display:none;">
+							<div class="uv-table-group-procedure">
+								<label>Codigo titulación</label>
+                                <input type="number" class="form-control" name="codiTit">
+							</div>
+                            <div class="uv-table-group-procedure">
+                                <label>Centro perteneciente</label>
+								<select class="selectpicker" id="roleCentersSelector" name="centre" data-live-search="true" data-width="100%" data-actions-box="true" required>
+									<option th:each="item : ${centers}" th:text="${#locale.language} == 'es' ? ${item.nomCas}:${item.nomVal}" th:attr="value=${item.lugar}"></option>
+								</select>
+                            </div>
+                            <div class="uv-table-group-procedure">
+                                <label>Nombre Castellano</label>
+                                <input type="text" class="form-control" name="nomCasTit">
+                            </div>
+                            <div class="uv-table-group-procedure">
+                                <label>Nombre Valenciano</label>
+                                <input type="text" class="form-control" name="nomValTit">
+                            </div>
+                            <div class="uv-table-group-procedure">
+                                <label>RUCT</label>
+                                <input type="number" class="form-control" name="ructTit">
+                            </div>
+                            <div class="uv-table-group-procedure">
+                                <label>Ámbito</label>
+                                <select class="form-control selectpicker" name="tambit" data-width="100%">
+                                    <option value="G">Grado</option>
+                                    <option value="M">Máster</option>
+                                    <option value="D">Doctorado</option>
+                                </select>
+                            </div>
+                        </div>
+					</form>
+				</div>
+			</div>
+			<div class="modal-footer">
+		        <button type="button" class="btn btn-secondary" data-dismiss="modal" th:text="#{global.cancel}">Cancelar</button>
+		        <button class="btn btn-success" type="submit" form="newOrganForm" th:text="#{global.confirm}">Confirmar</button>
+	        </div>
+	    </div>
+	  </div>
+	</div>
+
 	<!-- contactModal -->
 	<!-- contactModal -->
 	<div th:replace="~{layouts/common.html :: contactModal}"></div>
 	<div th:replace="~{layouts/common.html :: contactModal}"></div>
 	
 	
@@ -376,6 +460,27 @@
 				  selectionType: 'single',
 				  selectionType: 'single',
 				  dataSource: '/dashboard/documents/'+ruct
 				  dataSource: '/dashboard/documents/'+ruct
 			});
 			});
+
+			$('#newOrganForm').on('submit', function(e) {
+				e.preventDefault();
+
+				var type = $('#typeSelector').val();
+        		var endpoint = (type === 'centro') ? '/new/centre' : '/new/titulacion';
+
+				var formData = new FormData(this);
+
+				$.ajax({
+					url: endpoint,
+					type: 'POST',
+					data: formData,
+					processData: false,
+  			        contentType: false,
+					success: function(data) {
+						$('#newOrganModal').modal('hide');
+						location.reload();
+					}
+				})
+			})
 			drawReports(ruct);
 			drawReports(ruct);
 			drawGantt(ruct);
 			drawGantt(ruct);
 			editableSettings();
 			editableSettings();
@@ -429,6 +534,13 @@
 						text: '<span><i class="fas fa-eye"></i></span>',
 						text: '<span><i class="fas fa-eye"></i></span>',
 						className: 'dropdown-colvis',
 						className: 'dropdown-colvis',
 						titleAttr: 'Mostrar/Ocultar columnas'
 						titleAttr: 'Mostrar/Ocultar columnas'
+					},
+					{
+						text: '<i class="fas fa-plus"></i>',
+						titleAttr: 'Añadir nueva',
+						action: function ( ) {
+							$('#newOrganModal').modal('toggle');
+						}
 					}
 					}
 				],
 				],
 				layout: {
 				layout: {
@@ -772,6 +884,24 @@
 			});
 			});
 		}
 		}
 
 
+		function toggleFormFields(value) {
+			if (value === 'centro') {
+				$('#sectionCentro').show();
+				$('#sectionTitulacion').hide();
+				
+				$('#sectionTitulacion').find("input, select").prop("disabled", true);
+				$('#sectionCentro').find("input, select").prop("disabled", false);
+			} else {
+				$('#sectionCentro').hide();
+				$('#sectionTitulacion').show();
+				
+				$('#sectionCentro').find("input, select").prop("disabled", true);
+				$('#sectionTitulacion').find("input, select").prop("disabled", false);
+			}
+
+			$('.selectpicker').selectpicker('refresh');
+		}
+
 	</script>
 	</script>
 
 
 </body>
 </body>