/*
* Codificación UTF-8
*/
var gvh = gvh || {};
/* FUNCIONES:
* - openWS(destino, campo, formOrigen, panelActua, claseManejadora, modoPanelOrigen)
* - okWS(actionOrigen, fila, panel, fieldsSource, fieldsWS, claseMO)
* - openModal(url, paramsSource, width, height, resizable, scroll, strictJS)
* - closeModal(id)
*/
(function($)
{
/*
* openWS()
* FUNCIÓN: abrir ventana de selección
*/
$.fn.openWS = function(options)
{
var defaults = $.extend({
destino: '',
campo: '',
formOrigen: '',
iterActual: 0,
panelActua: '',
claseManejadora: '',
modoPanelOrigen: 'W',
message: msgLoad
},options);
console.log('** openWS() ');
console.log(datosJSON);
var ambito = 'gvhModal';
var panelJSON = defaults.panelActua.substring(0,3);
//var data = JSON.stringify($("#"+defaults.idFormOrigen).serialize());
var raizJSON = gvh.getRoot(defaults.claseManejadora,defaults.panelActua);
var actionOrigen = $(defaults.formOrigen).attr('action');
var targetOrigen = $(defaults.formOrigen).attr('target');
var idForm = $(defaults.formOrigen).attr('id');
var modoPanelOrigen = defaults.modoPanelOrigen;
if (defaults.campo == '')
{
console.log(' ¡¡Falta la indicación del campo destino de la ventana de selección!!');
return;
}
actionNueva = defaults.destino +
"&nomForm="+idForm+
"&nomCampo="+defaults.campo+
"&filaActual="+defaults.iterActual+
"&panelActua="+defaults.panelActua+
"&actionOrigen="+actionOrigen+
"&modoPanelOrigen="+modoPanelOrigen+
"&gvhcache=true&gvhpanel="+panelJSON;
console.log(' - Llamada a phrame: '+actionNueva);
//Mostramos el progreso
Pace.restart();
document.body.className = document.body.className; // Forzamos a actualizar la interfaz
$.ajax({
data: raizJSON['dataPerform'],
type: "POST",
datatype: "json",
cache: false,
url: actionNueva,
beforeSend: function() {
console.log(' ... Beforesend ...');
gvh.loading( 'on', defaults.message );
},
success: function(rspTpl) {
console.log(' ... Success: '+rspTpl);
rspTplJSON = $.parseJSON(rspTpl);
urlTpl = decodeURIComponent(rspTplJSON.path);
idWS = "WS_"+defaults.claseManejadora;
idWS = "WS";
if ($('#'+idWS).length > 0)
{
if (rspTplJSON.context.action == 'gvHidraCloseJDialog')
{
console.log(' ... Cerramos ventana => action: '+rspTplJSON.context.action);
// REVIEW VERO: globalWS
globalWS.dialog('destroy').remove();
if (dialogIdWM.length <= 0)
ambito = 'gvhMain';
else
ambito = 'gvhModal';
}
else {
console.log(' ... Ya existe WS, cargamos => url: '+urlTpl);
$('#'+idWS).load(urlTpl);
gvh.loading( 'off' );
}
}
else {
console.log(' ... Abrimos WS => action: '+rspTplJSON.context.action);
$('#gvhPage').append( '
' );
dialogWS = $('#'+idWS);
dialogWS.on('hidden.bs.modal', function (e) {
$('#'+idWS).remove();
if (dialogIdWM.length <= 0)
ambito = 'gvhMain';
else
ambito = 'gvhModal';
});
dialogWS.load( urlTpl , function() {
dialogWS.modal( 'show' );
});
};
},
complete:function( jqXHR, textStatus, errorThrown ) {
}
})
}
//$(':input[id*=vsCheck_]').on({
$('#gvhPage').offon( 'click', 'input[id*=vsCheck_]', function(e) {
e.stopImmediatePropagation();
panel = $(this).attr('data-gvhPanelOn');
claseM = $(this).attr('data-gvhClaseManejadora');
id = $(this).attr('id');
row = id.split('_')[2];
claseM = $(this).attr('data-gvhClaseManejadora');
$(this).checkUnique({
id: $(this).attr('id'),
fila: row,
json: true,
claseManejadora: claseM,
panel: $(this).attr('data-gvhPanelOn')
});
});
$.fn.okWS = function(options)
{
var defaults = $.extend({
actionOrigen: '',
fila: '',
panel: '',
fieldsSource: '',
fieldsWS: '',
claseMO: ''
},options);
console.log('okWS() ');
console.log(defaults);
// DATOS DE LA VENTANA SELECCIÓN
// Clase manejadora de ventana selección
var claseM_WS = $(this).attr('data-gvhClaseManejadora');
// Datos JSON de la ventana de selección
var raizJSON_WS = gvh.getRoot(claseM_WS,'lis');
// DATOS DE LA VENTANA PADRE
// Clase manejadora padre
var ClaseMPadre = defaults.claseMO;
var raizJSON = gvh.getRoot(ClaseMPadre,defaults.panel);
// Pág activa desde la que se ha invocado la ventana
var indiceJSONPadre = 0;
var regPadre = 0;
if ((defaults.panel == 'lis') || (defaults.panel == 'lisDetalle'))
{
regPadre = $('#registroOrigen').val();
var indiceJSONPadre = gvh.indexDataJSON(raizJSON,regPadre);
}
var panelJSON = defaults.panel.substring(0,3);
// Datos JSON de la ventana padre
// Estado panel padre, id campo
var prefijo = "cam___";
var estado = "modificada";
var modoPanelOn = $(this).attr('data-gvhModoPanelOn');
if ((modoPanelOn == 'I') && (defaults.panel != 'fil'))
{
var prefijo = "ins___";
var estado = "insertada";
regPadre = raizJSON['panel']['pagActive'];
};
// Var para marcar el panel como modificado
var panelModif = false;
var fieldActualiza = [];
// Bucle de los campos a actualizar con los valores de la ventana de selección
$.each(defaults.fieldsSource,function(index,value)
{
// Campo ventana padre
var fSource = defaults.fieldsSource[index];
// Campo ventana de selección
var fWS = defaults.fieldsWS[index];
// Cálculo del indiceJSON: registro seleccionado
//var raizJSONWS = gvh.getRoot(claseM_WS,'lis');
var indiceJSONWS = gvh.indexDataJSON(raizJSON_WS,defaults.fila);
//var indiceJSONWS = gvh.indexDataJSON(claseM_WS,'lis',defaults.fila);
var newVal = gvh.getValue(raizJSON_WS,fWS,indiceJSONWS);
var idSource = '';
// Actualización del objeto JSON de datos
if (gvh.getExistField(raizJSON,fSource,indiceJSONPadre))
{
gvh.setValue(raizJSON,fSource,indiceJSONPadre,newVal);
if (panelJSON == 'fil')
{
idSource = gvh.getIdField(raizJSON,fSource,indiceJSONPadre);
}
else {
idSource = prefijo+fSource+'___'+defaults.panel+'_'+regPadre;
}
$('#'+idSource+'[data-gvhClaseManejadora='+ClaseMPadre+']').val(newVal);
gvh.setStateReg(raizJSON,'updated',indiceJSONPadre,'add');
if ((panelModif == false) && (panelJSON != 'fil'))
{
idSource = gvh.getIdField(raizJSON,fSource,indiceJSONPadre);
if ($('#'+idSource).attr('readonly'))
{
panelModif = true;
}
}
var funcion = '';
if ($('button[id='+value+']').attr('id'))
{
funcion = $('button[id='+value+']').attr('data-gvhFunction'); // Botón tooltip "updateField"
}
var actualizaA = $('#'+idSource).attr('data-gvhActualizaA');
if (((actualizaA != 'undefined') && (actualizaA != undefined)) || (funcion == 'updateField'))
{
fieldActualiza.push(idSource);
}
}
else {
console.log('¡¡¡ No existe el campo '+fSource+' para la clase manejadora '+claseM_WS);
}
});
if (fieldActualiza.length > 0)
{
$.each(fieldActualiza,function(index,value)
{
gvh.updateEvent($('#'+value));
});
}
dialogWS.modal('hide');
if (dialogIdWM.length <= 0)
ambito = 'gvhMain';
else
ambito = 'gvhModal';
}
/*
* openModal()
* FUNCIÓN: abrir ventana de selección
* REVIEW : ¿¿¿¿SE USA PARA ALGO????
*/
$.fn.openModal = function(options)
{
var defaults = $.extend({
url: '',
paramsSource: '',
width: '',
height: '',
resizable: 'yes',
scroll: 'yes',
strictJS: 'true'
},options);
// cálculo de la posición de la ventana
heightPosition = screen.height*0.6;
widthPosition = screen.width*0.9;
LeftPosition = (screen.width) ? (screen.width-widthPosition)/2 : 0;
TopPosition = (screen.height) ? (screen.height-heightPosition)/2 : 0;
//Cambiamos los settings para vindow.open
settings = 'top='+TopPosition+',left='+LeftPosition+',scrollbars=yes,resizable='+defaults.resizable+',width='+defaults.width+',height='+defaults.height;
settings = settings+',menubar=no,toolbar=no,location=no';
action = defaults.paramsSource.returnPath;
console.log('openModal() - action: '+action);
//Mostramos el progreso
Pace.restart();
document.body.className = document.body.className; // Forzamos a actualizar la interfaz
$.ajax({
data: datosJSON,
type: "POST",
datatype: "json",
url: action,//+"&gvhcache=true&gvhpanel="+panelJSON,
beforeSend: function() {
console.log('beforeSend');
},
success: function(response) {
var dialogWM = $('
')
.html(response)
.dialog({
autoOpen: false,
modal: true,
minHeight: 'auto',
minWidth: 'auto',
title: "Ventana modal"
});
dialogWM.dialog('open');
},
fail: function() {
console.log('fail');
},
complete:function( jqXHR, textStatus, errorThrown ) {
console.log('complete');
}
})
};
/*
* closeModal()
* FUNCIÓN: Indicará si un objeto JSON es vacío o no
* REVIEW : ¿¿¿¿SE USA PARA ALGO????
*/
$.fn.closeModal = function(options) {
var defaults = $.extend({
id: ''
},options);
console.log('gvh_window.js - closeModal()');
if ($('#'+defaults.id).length > 0)
{
// REVIEW VERO: globalWM
if (dialogIdWM.length <= 0)
ambito = 'gvhMain';
else
ambito = 'gvhModal';
//globalWM.dialog('destroy').remove();
globalWM.remove();
}
}
/********************************** REVISAR SI SE UTILIZAN *************************************/
/*
* FUNCIÓN: Abrir una ventana flotante
*/
$.openWindow = function(options)
{
var defaults = $.extend({
windowURL: 'igep/blanco.htm',
w: '700',
h: '500',
nameWindow: 'nWindow'
},options);
console.log(' REVIEW: openWindow() - gvh_funciones.js');
LeftPosition = (screen.width) ? (screen.width-defaults.w)/2 : 0;
TopPosition = (screen.height) ? (screen.height-defaults.h)/2 : 0;
settings = 'top='+TopPosition+',left='+LeftPosition+',toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width='+defaults.w+',height='+defaults.h;
//Si firefox o Mozilla eliminamos todas las barras, la hacemos modal,dependiente y que flote sobre el resto
if (navigator.appCodeName =='Mozilla')
settings = settings+',directories=no,personalbar=no,minimizable=no,alwaysRaised=yes,modal=yes,dependent=yes';
win = window.open(defaults.windowURL,defaults.nameWindow,settings);
win.focus();
}
/*
* popupWindow()
* FUNCIÓN: Abrir una ventana emergente como respuesta a evento sobre el DOM
*/
$.fn.popupWindow = function(instanceSettings)
{
console.log(' REVIEW: popupWindow() - gvh_funciones.js');
$.fn.popupWindow.defaultSettings = {
centerBrowser:0, // center window over browser window? {1 (YES) or 0 (NO)}. overrides top and left
centerScreen:0, // center window over entire screen? {1 (YES) or 0 (NO)}. overrides top and left
height:500, // sets the height in pixels of the window.
left:0, // left position when the window appears.
location:0, // determines whether the address bar is displayed {1 (YES) or 0 (NO)}.
menubar:0, // determines whether the menu bar is displayed {1 (YES) or 0 (NO)}.
resizable:0, // whether the window can be resized {1 (YES) or 0 (NO)}. Can also be overloaded using resizable.
scrollbars:0, // determines whether scrollbars appear on the window {1 (YES) or 0 (NO)}.
status:0, // whether a status line appears at the bottom of the window {1 (YES) or 0 (NO)}.
width:500, // sets the width in pixels of the window.
windowName:null, // name of window set from the name attribute of the element that invokes the click
windowURL:null, // url used for the popup
top:0, // top position when the window appears.
toolbar:0 // determines whether a toolbar (includes the forward and back buttons) is displayed {1 (YES) or 0 (NO)}.
};
gvh.loading( 'off' );
settings = $.extend({}, $.fn.popupWindow.defaultSettings, instanceSettings || {});
var windowFeatures = 'height=' + settings.height +
',width=' + settings.width +
',toolbar=' + settings.toolbar +
',scrollbars=' + settings.scrollbars +
',status=' + settings.status +
',resizable=' + settings.resizable +
',location=' + settings.location +
',menuBar=' + settings.menubar;
//alert(settings.windowURL);
settings.windowName = this.name || settings.windowName;
settings.windowURL = this.href || settings.windowURL;
var centeredY,centeredX;
if(settings.centerBrowser)
{
if ($.browser.msie)
{//hacked together for IE browsers
centeredY = (window.screenTop - 120) + ((((document.documentElement.clientHeight + 120)/2) - (settings.height/2)));
centeredX = window.screenLeft + ((((document.body.offsetWidth + 20)/2) - (settings.width/2)));
}
else
{
centeredY = window.screenY + (((window.outerHeight/2) - (settings.height/2)));
centeredX = window.screenX + (((window.outerWidth/2) - (settings.width/2)));
}
window.open(settings.windowURL, settings.windowName, windowFeatures+',left=' + centeredX +',top=' + centeredY).focus();
}
else if(settings.centerScreen)
{
centeredY = (screen.height - settings.height)/2;
centeredX = (screen.width - settings.width)/2;
window.open(settings.windowURL, settings.windowName, windowFeatures+',left=' + centeredX +',top=' + centeredY).focus();
}
else
{
window.open(settings.windowURL, settings.windowName, windowFeatures+',left=' + settings.left +',top=' + settings.top).focus();
}
return false;
};
})(jQuery);