
jQuery(function($) {
	
	initRupI18nPromise.then(function () {
		initFilter();
		initTable();
		
		$("#pisostutelados_filter_cleanButton").click( initFilter);
	});
	
	const initFilter = () => {
		$("#idProvincia06_pisostutelados_filter_table").rup_combo({	
			source: $.rup.CTX_PATH + 'nora/provincias',
			sourceParam: {label: "descProvincia", value:"codProvincia"},
			loadFromSelect:false,
			width: 'auto',
	        ordered: true,
			blank: '',
			customClasses: ['select-material'],
			rowStriping: true
		});
		
		$("#idMunicipio06_pisostutelados_filter_table").rup_combo({
			parent: ["idProvincia06_pisostutelados_filter_table"],			
			source: $.rup.CTX_PATH + 'nora/municipioEnlazado',
			sourceParam: {label: "descripcion", value:"codMunicipio"},
			rowStriping: true,
			width: 'auto',
			ordered: true,
			blank: '',
			customClasses: ['select-material']
		});
		
		$("#idAyuntamiento31_pisostutelados_filter_table").rup_combo({
			parent: ["idProvincia06_pisostutelados_filter_table"],
			source: $.rup.CTX_PATH + 'combo/ayuntamientos',
			sourceParam: {label: "desc", value:"idAyuntamiento31"},
			loadFromSelect:false,
			width: 'auto',
			ordered: true,
			blank: '',
			customClasses: ['select-material'],
			rowStriping: true
		});
		
		$("#idProvincia06_pisostutelados_detail_table").rup_combo({	
			source: $.rup.CTX_PATH + 'nora/provincias',
			sourceParam: {label: "descProvincia", value:"codProvincia"},
			loadFromSelect:false,
			width: 'auto',
	        ordered: true,
			blank: '',
			customClasses: ['select-material'],
			rowStriping: true
		});
		
		$("#idMunicipio06_pisostutelados_detail_table").rup_combo({
			parent: ["idProvincia06_pisostutelados_detail_table"],			
			source: $.rup.CTX_PATH + 'nora/municipioEnlazado?cp06='+$("#cp06_pisostutelados_detail_table").val(),
			sourceParam: {label: "descripcion", value:"codMunicipio"},
			rowStriping: true,
			width: 'auto',
			ordered: true,
			blank: '',
			customClasses: ['select-material']
		});
		
		$("#idLocalidad06_pisostutelados_detail_table").rup_combo({
			parent: ["idProvincia06_pisostutelados_detail_table", "idMunicipio06_pisostutelados_detail_table"],			
			source: $.rup.CTX_PATH + 'nora/localidadEnlazado?cp06='+$("#cp06_pisostutelados_detail_table").val(),
			sourceParam: {label: "descripcion", value:"codLocalidad"},
			rowStriping: true,
			width: 'auto',
			blank: '',
			onLoadSuccess: function(){
				let valorCargado = $("#idLocalidad06_pisostutelados_detail_table").attr("valorCargado");
				if(valorCargado == undefined || typeof valorCargado == 'undefined'){
					valorCargado="";
				}
				$("#idLocalidad06_pisostutelados_detail_table").rup_combo("setRupValue",valorCargado);
				$("#idLocalidad06_pisostutelados_detail_table").rup_combo("refresh");
			},
			customClasses: ['select-material']
		});
		
		$("#idCalle06_pisostutelados_detail_table").rup_combo({
			parent: ["idLocalidad06_pisostutelados_detail_table"],
			source:  $.rup.CTX_PATH + 'nora/calleEnlazado?cp06='+$("#cp06_pisostutelados_detail_table").val(),
			sourceParam: {label: "descripcion", value:"idCalle"},
			rowStriping: true,
			width: 'auto',
			blank: '',
			onLoadSuccess: function(){
				let valorCargado = $("#idCalle06_pisostutelados_detail_table").attr("valorCargado");
				if(valorCargado == undefined || typeof valorCargado == 'undefined'){
					valorCargado="";
				}
				$("#idCalle06_pisostutelados_detail_table").rup_combo("setRupValue",valorCargado);
				$("#idCalle06_pisostutelados_detail_table").rup_combo("refresh");
			},
			customClasses: ['select-material']
		});
		
		$("#idPortal06_pisostutelados_detail_table").rup_combo({
			parent: ["idLocalidad06_pisostutelados_detail_table", "idCalle06_pisostutelados_detail_table"],
			source:  $.rup.CTX_PATH + 'nora/portalEnlazado',
			sourceParam: {label: (($.rup_utils.capitalizedLang() == ("Es")) ? "portalCompletoEs" : "portalCompletoEu" ), value:"codPortal"},
			rowStriping: true,
			width: 'auto',
			blank: '',
			onLoadSuccess: function(){
				let valorCargado = $("#idPortal06_pisostutelados_detail_table").attr("valorCargado");
				if(valorCargado == undefined || typeof valorCargado == 'undefined'){
					valorCargado="";
				}
				$("#idPortal06_pisostutelados_detail_table").rup_combo("setRupValue",valorCargado);
				$("#idPortal06_pisostutelados_detail_table").rup_combo("refresh");
			},
			customClasses: ['select-material']
		});
			
		$("#idAyuntamiento31_pisostutelados_detail_table").rup_combo({
			parent: ["idProvincia06_pisostutelados_detail_table"],			
			source: $.rup.CTX_PATH + 'combo/ayuntamientos',
			sourceParam: {label: "desc", value:"idAyuntamiento31"},
			rowStriping: true,
			loadFromSelect:false,
			width: 'auto',
			ordered: true,
			blank: '',
			customClasses: ['select-material'],
			onLoadSuccess: function(){
				if ($("#idProvincia06_pisostutelados_detail_table").rup_combo("getRupValue") != null 
						&& $("#idProvincia06_pisostutelados_detail_table").rup_combo("getRupValue") != ''){
					$("#idAyuntamiento31_pisostutelados_detail_table").rup_combo("enable");
				}
				let valorCargado = $("#idPortal06_pisostutelados_detail_table").attr("valorCargado");
				if(valorCargado == undefined || typeof valorCargado == 'undefined'){
					valorCargado="";
				}
				$("#idPortal06_pisostutelados_detail_table").rup_combo("setRupValue",valorCargado);
				$("#idPortal06_pisostutelados_detail_table").rup_combo("refresh");
			}
		});
			
		var propertiesPisosTutelados={
			feedback:$("#pisostutelados_detail_feedback"),
			liveCheckingErrors: false,
			showFieldErrorAsDefault: true,
			showErrorsInFeedback: true,
			showFieldErrorsInFeedback: true,
			rules:{
			      "denominacion32":{required:true},
			      "direcciones.idProvincia06":{required:true},
			      "direcciones.idMunicipio06":{required:true},
			      "direcciones.idLocalidad06":{required:true},
			      "direcciones.idCalle06":{required:true},
			      "direcciones.idPortal06":{required:true},
			      "direcciones.cp06":{required:true},
			      "ayuntamientos.idAyuntamiento31":{required:true}
			      
			}
		};
		$("#pisostutelados_detail_form").rup_validate(propertiesPisosTutelados);
	
		let pisoTutelado_dialog = $("#pisostutelados_detail_div");
		let pisoTutelado_dialog_feedback = $("#pisostutelados_detail_feedback");
	
		try {
			pisoTutelado_dialog.rup_dialog("destroy");
		} catch (error) {}
	
		pisoTutelado_dialog = $("#pisostutelados_detail_div");
		pisoTutelado_dialog_feedback = $("#pisostutelados_detail_feedback");
	
		pisoTutelado_dialog_feedback.rup_feedback (
			{
			  type: "ok",
			  block: false,
			}
		);	
	
		pisoTutelado_dialog.rup_dialog( {
			type: $.rup.dialog.DIV,
			autoOpen: false,
			modal: true,
			closeOnEscape: true,
			resizable: true,
			//width:600,
			height:600,
			dialogClass: 'custom_full_dialog',
			title: $.rup.i18n.app.botonera.add,
			buttons : [ 
	            {
	                text:$.rup.i18n.app.botonera.aceptar,
	                id:"pisoTutelado_aceptar_btn",
	                class: 'btn-material btn-material-primary-high-emphasis',
	                click:  () => {
	                	if ($("#pisostutelados_detail_form").valid()){
		                	const pisoTutelado = $("#pisostutelados").rup_table("getSelectedRows");
		                	let data =  $('#pisostutelados_detail_form').rup_form("formToJson");
		                	delete data["_baja"];
		
		            		let url = $('#pisostutelados_detail_form').attr("action") + "/";
		            		url += data["idPiso32"] != null && data["idPiso32"] != "" ? "edit" : "add";
		            		let type = data["idPiso32"] != null && data["idPiso32"] != "" ? "PUT" : "POST";
		            		
		                	$.rup_ajax({
					            url: url,
		                	    type: type,
					            contentType: "application/json",
					            data: JSON.stringify(data),             	
					            success: function (data){    			            	
					            	$("#pisostutelados").rup_table("reload");
					            	pisoTutelado_dialog.rup_dialog("close");
					            	Ad74aUtils.desBloquearInterfaz();
					            	$("#rup_feedback_pisostutelados").rup_feedback('set', $.rup.i18n.app.feedback.operacionOK, "ok"); 
					            },
					            beforeSend: function(){
					            	Ad74aUtils.cerrarFeedbacks();
					            	Ad74aUtils.bloquearInterfaz();
								},
					            error:function(data){
					            	Ad74aUtils.desBloquearInterfaz();
					            	pisoTutelado_dialog_feedback.rup_feedback('set', data.responseText, "error");
					            }
					        });
						}
	                }
	             },
				{
					text : $.rup.i18n.app.botonera.cancelar,
					click : () => {
						pisoTutelado_dialog.rup_dialog("close");
					},
					btnType : $.rup.dialog.LINK
				}
			],
			open: function(){
				const pisoTutelado = $("#pisostutelados").rup_table("getSelectedRows");  
			},
			close: function(){
				$("#pisostutelados_detail_form").rup_form("clearForm");
				$("#pisostutelados_detail_form").rup_validate("resetElements");
				$("#idLocalidad06_pisostutelados_detail_table").removeAttr("valorCargado");
				$("#idCalle06_pisostutelados_detail_table").removeAttr("valorCargado");
				$("#idPortal06_pisostutelados_detail_table").removeAttr("valorCargado");
				$("#idAyuntamiento31_pisostutelados_detail_table").removeAttr("valorCargado");
				pisoTutelado_dialog_feedback.rup_feedback("close");
			}		    
		});
	}
	
	const initTable = () => {
		let pisoTutelado_dialog = $("#pisostutelados_detail_div");
		let pisoTutelado_dialog_feedback = $("#pisostutelados_detail_feedback");
		
		const getColumnsModelPisosTutelados = function(){
			const getColumnModelPisosTutelados = function (name, index, editable, hidden, orderable) {
				return {
					name: name,
					index: index,
					editable: editable,
					hidden: hidden,
					orderable: orderable
				}
			};
			let columnsModelPisosTutelados = [];
			columnsModelPisosTutelados.push(getColumnModelPisosTutelados("idPiso32", "idPiso32", false, true, false));
			columnsModelPisosTutelados.push(getColumnModelPisosTutelados("denominacion32", "denominacion32", true, false));
			columnsModelPisosTutelados.push(getColumnModelPisosTutelados("direcciones.idProvincia06", "direcciones.idProvincia06", true, false));
			columnsModelPisosTutelados.push(getColumnModelPisosTutelados("direcciones.idMunicipio06", "direcciones.idMunicipio06", true, false));
			columnsModelPisosTutelados.push(getColumnModelPisosTutelados("ayuntamientos.idAyuntamiento31", "ayuntamientos.idAyuntamiento31", true, false));
			columnsModelPisosTutelados.push(getColumnModelPisosTutelados("direcciones.direccionCompleta", "direcciones.direccionCompleta", true, false));
			columnsModelPisosTutelados.push(getColumnModelPisosTutelados("usuAlta32", "usuAlta32", false, true));
			columnsModelPisosTutelados.push(getColumnModelPisosTutelados("usuModif32", "usuModif32", false, true));
			columnsModelPisosTutelados.push(getColumnModelPisosTutelados("fAlta32", "fAlta32", false, true));
			columnsModelPisosTutelados.push(getColumnModelPisosTutelados("fModif32", "fModif32", false, true));
			columnsModelPisosTutelados.push(getColumnModelPisosTutelados("fBaja32", "fBaja32", true, false));
			return columnsModelPisosTutelados;
		};

		const getColumnsDefsPisosTutelados = function () {
			return [ 
				{
					"targets": 2,
					"render": function ( data, type, row, meta ) {
						if(row.direcciones != undefined && row.direcciones.idProvincia06 != null && row.direcciones.provinciaNORA.descProvincia != null){
							return row.direcciones.provinciaNORA.descProvincia;
						}
						return '';
					}
				},
				{
					"targets": 3,
					"render": function ( data, type, row, meta ) {
						if(row.direcciones != undefined && row.direcciones.idMunicipio06 != null && row.direcciones.municipioNORA.descripcion != null){
							return row.direcciones.municipioNORA.descripcion;
						}
						return '';
						
					}
				},
				{
					"targets": 4,
					"render": function ( data, type, row, meta ) {
						if(row.ayuntamientos != undefined && row.ayuntamientos.idAyuntamiento31 != null){
							return row.ayuntamientos.desc;
						}
						return '';
						
					}
				},
//				{
//					"targets": 5,
//					"render": function ( data, type, row, meta ) {
//						if(row.direcciones != undefined && row.direcciones.idDireccion06 != null){
//							let direccion = '';
//							if (row.direcciones.cp06 != null) direccion += ' ' + row.direcciones.cp06;
//							if (row.direcciones.desclocalidad != null) direccion += ' ' + row.direcciones.desclocalidad;
//							if (row.direcciones.desccalle != null) direccion += ' ' + row.direcciones.desccalle;
//							if (row.direcciones.descportal != null) direccion += ' ' + row.direcciones.descportal;
//							if (row.direcciones.piso06 != null) direccion += ' ' + row.direcciones.piso06;
//							if (row.direcciones.letra06 != null) direccion += ' ' + row.direcciones.letra06;
//							return direccion;
//						}
//						return '';
//						
//					}
//				}
			];
		};
	
		const getCustomButtonsPisosTutelados = function () {
			let customButonsPisosTutelados = [];	
			
			const FN_editarPisoTutelado = {};
			FN_editarPisoTutelado.test  = function(){
				const selectedRows  = $("#pisostutelados").rup_table("getSelectedRows");	
				// 1 seleccionado
				if ( selectedRows.length == undefined) {
					return true;
				}
				return false;
			};
			const FN_darBajaPisoTutelado = {};
			FN_darBajaPisoTutelado.test  = function(){
				const selectedRows  = $("#pisostutelados").rup_table("getSelectedRows");	
				// 1 seleccionado
				if ( selectedRows.length == undefined && selectedRows.fBaja32 == null) {
					return true;
				}
				return false;
			};
			const anadirButton = {
					text: function () {
						return $.rup.i18n.app.botonera.add;
					},
					id: 'anadirPisoTutelado', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi-plus",
					displayRegex: /^\d+$/,					
					insideContextMenu: true, 
					//type: 'view',
					action: function (e, dt) {
						pisoTutelado_dialog.rup_dialog("open");
						const divTitleDialog = $("div[aria-describedby='pisostutelados_detail_div'] .ui-dialog-title");
						divTitleDialog.html('<i>'+$.rup.i18n.base.rup_table.toolbar.add+'</i>');
						$("#idPiso32_pisostutelados_detail_table").val("");
						pisoTutelado_dialog_feedback.rup_feedback("close");
					}				
			};	
			customButonsPisosTutelados.push(anadirButton);
			
			const editButton = {
					text: function () {
						return $.rup.i18n.app.botonera.edit;
					},
					id: 'editarPisoTutelado', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi-playlist-edit",
					displayRegex: FN_editarPisoTutelado,			
					insideContextMenu: true, 
					//type: 'view',
					action: function (e, dt) {
						$.rup_ajax({
				              url: $.rup.CTX_PATH +"pisostutelados/"+ $('#pisostutelados').rup_table('getSelectedRows')['idPiso32'],
				              type: "GET",            
				              dataType: 'json',
				              contentType: 'application/json',
				              beforeSend: function() {
				            	  Ad74aUtils.bloquearInterfaz();
				              },
				              complete: function() {
				            	  Ad74aUtils.desBloquearInterfaz();
				              },
				              success: function (data){
				              	 pisoTutelado_dialog.rup_dialog("open");
				              	 const divTitleDialog = $("div[aria-describedby='pisostutelados_detail_div'] .ui-dialog-title");
								 divTitleDialog.html('<i>'+$.rup.i18n.base.rup_table.toolbar.edit+'</i>');
								 if(data.direcciones!=null){
				              		  $('#idLocalidad06_pisostutelados_detail_table').attr("valorCargado",data.direcciones.idLocalidad06);
				              		  $('#idCalle06_pisostutelados_detail_table').attr("valorCargado",data.direcciones.idCalle06);
				              		  $('#idPortal06_pisostutelados_detail_table').attr("valorCargado",data.direcciones.idPortal06);
				              		  $('#idAyuntamiento31_pisostutelados_detail_table').attr("valorCargado",data.ayuntamientos.idAyuntamiento31);
				              		   $('#piso06_pisostutelados_detail_table').val(data.direcciones.piso06);
				              		   $('#letra06_pisostutelados_detail_table').val(data.direcciones.letra06);
				              		   $('#cp06_pisostutelados_detail_table').val(data.direcciones.cp06);
				              	  }
				              	 $.rup_utils.populateForm($.rup_utils.jsontoarray(data), "#pisostutelados_detail_form");
				              	 
				              	  if (data.fBaja32 != null){
				              		 $("#baja32_pisostutelados_detail_table").prop("checked", true);
				              	 }
				              	  
				              	  
				              },
				              error: function(error){ 
				                  alert("error")
				              }
				        });
					}		
			};
			customButonsPisosTutelados.push(editButton);
			
			const darBajaButton = {
					text: function () {
						return $.rup.i18n.app.botonera.darBaja;
					},
					id: 'darBajaPisoTutelado', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi-delete",
					displayRegex: FN_darBajaPisoTutelado,
					insideContextMenu: true, 
					//type: 'view',
					action: function (e, dt) {
						Ad74aUtils.openConfirmDialog(
								'dialogConfirm', 
								$.rup.i18n.app.dialog.title.darBajaPisoTutelado, 
								$.rup.i18n.app.dialog.label.darBajaPisoTutelado,  
								[
						        	{
						                text: $.rup.i18n.app.botonera.cancelar,
						                click: function () { 
						                    $('#dialogConfirm').rup_dialog('close'); 
						                },
						                btnType: $.rup.dialog.LINK
						            },
							        {
							            text: $.rup.i18n.app.botonera.aceptar,
							            id: "btnEliminarPisoTutelado",
							            class: 'btn-material btn-material-primary-high-emphasis',
							            click: function () { 
							            	$.rup_ajax({
									              url: $.rup.CTX_PATH +"pisostutelados/baja/"+ $('#pisostutelados').rup_table('getSelectedRows')['idPiso32'],
									              type: "PUT",            
									              dataType: 'json',
									              contentType: 'application/json',
									              beforeSend: function() {
									            	  Ad74aUtils.bloquearInterfaz();
									              },
									              complete: function() {
									            	  Ad74aUtils.desBloquearInterfaz();
									            	  $('#dialogConfirm').rup_dialog('close');
									              },
									              success: function (data){
									              	  $('#rup_feedback_pisostutelados').rup_feedback("option", "delay", null);
									              	  $('#rup_feedback_pisostutelados').rup_feedback("set", $.rup.i18n.app.feedback.darBajaOk, "ok");
									              	  $('#pisostutelados').rup_table("reload");
									              },
									              error: function(error){ 
									                  alert("error")
									              }
									        });
							            }
							        }
						        ]
							);
					}		
			};
			customButonsPisosTutelados.push(darBajaButton);
			
			return customButonsPisosTutelados;
		};
	
		$("#pisostutelados").rup_table({
			colReorder: {
				fixedColumnsLeft: 1
			},
			colModel: getColumnsModelPisosTutelados(),
			columnDefs: getColumnsDefsPisosTutelados(),
			primaryKey: "idPiso32",
	     	filter:{
	  	  		id:"pisostutelados_filter_form",
	  	  		filterToolbar:"pisostutelados_filter_toolbar",
	  	  		collapsableLayerId:"pisostutelados_filter_fieldset",
	  	  		showHidden: true
	     	},
	     	createTooltipBody: false,// No muestra el tooltip automático de las columnas de la tabla
	   		select: {
	       		activate: true,
	       		deleteDoubleClick:true
	   		},
			buttons: {
				activate: true,
				blackListButtons: ['addButton', 'editButton', 'cloneButton', 'deleteButton', 'copyButton', 'pdfButton', 'odsButton', 'csvButton'],
				myButtons: getCustomButtonsPisosTutelados()
			},
			columnOrderArrows: {
			    showOnlyActive: false,
			    display: 'inline'
			},
			order: [[1, "asc"]]
		});
	}
	
});
