/* Codificación UTF-8 */ /* FUNCIONES: * getRulesFilter(idFilter, claseM, panel) * createTree(idTree, node, multiple, url, claseM, destino, actualizaA, idForm) * select2.defaults(width, allowClear, closeOnSelect, placeholder, containerCssClass, dropdownCssClass) * validateDate(id, fecha, separador, mascara) */ var gvh = gvh || {}; (function($) { /* * getRulesFilter() * FUNCIÓN: Parsea los parámetros introducidos en el filtro avanzado en formato JSON y SQL para guardarlos en datosJSON * DEFAULTS: idFilter - id del componente CWFilter * claseM - clase manejadora a la que pertenece * panel - panel en el que se encuentra el filtro */ $.fn.getRulesFilter = function(options) { var defaults = $.extend({ idFilter: '', claseM: '', panel: 'edi' }, options); filter = $('#'+defaults.idFilter); //JSON resultado = filter.queryBuilder('getRules', { get_flags: true, skip_empty: true } ); console.log(resultado); console.log(resultado['rules']); resultParseJSON = JSON.stringify(resultado, undefined, 2); console.log('parseJSON: '+resultParseJSON); // SQL parseSQL = ''; if (resultado['rules'].length > 0) { resultParseSQL = filter.queryBuilder('getSQL', false, false); parseSQL = resultParseSQL.sql + (resultParseSQL.params ? '\n\n' + JSON.stringify(resultParseSQL.params, undefined, 2) : ''); console.log('parseSQL: '+parseSQL); } panelJSON = filter.attr('data-gvhPanelJSON'); raizJSON = datosJSON[defaults.claseM][panelJSON]; if (panelJSON == 'fil') { raizJSON['data'][0]['gvhJS_fields'][defaults.idFilter]['rules'] = resultParseJSON; raizJSON['data'][0]['gvhJS_fields'][defaults.idFilter]['rulesSQL'] = parseSQL; } console.log(raizJSON); } /* * createTree() * FUNCIÓN: Crea un árbol jquery con el plugin jstree * defaults: idTree - del BOTÓN para el que se van a activar los campos * node - */ $.fn.createTree = function(options) { var defaults = $.extend({ idTree: '', node: '', multiple: 'false', url: '', claseM: '', destino: '', actualizaA: '', idForm: '' },options); if (defaults.multiple == "true") multiple = true; else multiple = false; // Comprobar si existe la variable datosJSON raizJSON = datosJSON[defaults.claseM][defaults.panel]; var data = []; if (raizJSON['gvhJSON'] == 'false') { data = JSON.stringify($("#"+defaults.idForm).serialize()); url = defaults.url; } else { data = datosJSON; url = defaults.url+"&gvhcache=true&claseManejadora="+defaults.claseM+"&gvhpanel="+defaults.panel; } console.log(data); $('#'+defaults.idTree).jstree({ "types" : { "default" : { "icon" : "glyphicon glyphicon-flash" }, "root" : { "icon" : "fa fa-chevron-down" }, "users" : { "icon" : "fa fa-users" }, "volley" : { "icon" : "fa fa-anchor" }, "ciclismo" : { "icon" : "fa fa-bicycle" }, "child" : { "icon" : "fa fa-child" } }, "core" : { "multiple": multiple, "checkbox": true, "ajax": true, "worker": true, "data": { "url": url, //"url": "phrame.php?action=TreeSelector__treeAjax", "data": function(data) { console.log('data '+data); //json = node; return data;//{ "id" : node.id, "nodo": node }; }, "success": function (node) { console.log('success '+node); }, /*'data': function(node) { console.log('getJSONData '+node); json = node; return { "id" : node.id, "nodo": node }; }*/ "search": { "case_insensitive": true, "ajax" : { "url": "phrame.php?action=TreeSelector__treeAjax&value=search", 'dataType': 'json', 'type': 'POST', "data": function (node) { console.log('search '+node.id) return { "id": node.id }; } } }, }, "themes": { 'name': 'proton', 'responsive': true }, }, /*"changed": function (e, data) { console.log("Nodo seleccionado:"); selectedNodes = data.selected; if (selectedNodes.length > 0) { $.each(selectedNodes, function( index, value ) { console.log(value.id+' '+value.text); }); } else { console.log('no hay seleccionados'); } }, "search": { "case_insensitive": true, "ajax" : { "url": "phrame.php?action=TreeSelector__treeAjax&value=search", 'dataType': 'json', 'type': 'POST', "data": function (node) { console.log('search '+node.id) return { "id": node.id }; } } },*/ "plugins" : [ "types", "wholerow", "search", "themes", "html_data", "checkbox", "sort", "ui" ] }); } /* * select2.defaults() * FUNCIӓN: Propiedades por defecto de las listas tipo select2 */ /* width: 'auto', closeOnSelect: true, placeholder: 'Selecciona una opción', allowClear: true, minimumResultsForSearch: 15, containerCssClass: 'tpx-select2-container', dropdownCssClass: 'tpx-select2-drop'*/ $.fn.select2.defaults = $.extend($.fn.select2.defaults, { width: 'auto', allowClear: true, closeOnSelect: true, // múltiple - se cierra tras la selección placeholder: 'Selecciona una opción', containerCssClass: 'tpx-select2-container', dropdownCssClass: 'tpx-select2-drop' }); /* * validateDate() * FUNCIӓN: Comprobar que la fecha sea correcta * defaults: fecha - fecha introducida * separador */ $.fn.validateDate = function(options) { var defaults = $.extend({ id: '', fecha: '', separador: '/', mascara: 'dd/mm/yyyy' },options); separador = defaults.separador; if (defaults.mascara.indexOf('/') != -1) separador = '/'; if (defaults.mascara.indexOf('-') != -1) separador = '-'; if ((defaults.mascara == 'dd/mm/yyyy') || (defaults.mascara == 'dd-mm-yyyy')) var dateDDMMYYYRegex = /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.](18|19|20)\d\d$/; if ((defaults.mascara == 'mm/dd/yyyy') || (defaults.mascara == 'mm-dd-yyyy')) var dateDDMMYYYRegex = /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](18|19|20)\d\d$/; if (defaults.fecha != '') { correcto = defaults.fecha.match(dateDDMMYYYRegex); if (correcto) { fecha = defaults.fecha.split(separador); dia = fecha[0]; mes = fecha[1]; anio = fecha[2]; var error = 0; if ((mes==4 || mes==6 || mes==9 || mes==11) && dia==31) { correcto = false; } if (mes == 2) { // bisiesto var bisiesto = (anio % 4 == 0 && (anio % 100 != 0 || anio % 400 == 0)); if (dia > 29 || (dia==29 && !bisiesto)) { correcto = false; } } } if (!correcto) { //$('#'+defaults.id).showMessage('gvhlang_msj900','error'); gvh.showMessage('gvhlang_msj900','error'); $('#'+defaults.id).val(''); } return correcto; } }; })(jQuery);