// global variables var dhxContextMenu; var dhxGrid; var dhxToolbar; var dhxWins; var action = 'read'; var cid = 0; var email = ''; // grid elements var groups = ['1000']; var filterIndexes; var filterValues; var filters = ''; var gridHeaderH = 53; var gridRowH = 26; var gridRows = 0; var lastPage = false; var maxPages = 0; var pagingbarH = 34; var toolbarH = 34; // 0 1 2 3 4 5 6 7 8 9 0 1 2 var setInitWidthsP = '1,4,30,8,12,7,7,7,7,4,4,4,5'; var mainColumn = 2; var catChanged = 0; var currentState = 0; var editing = false; var filtering = false; var reload = 0; var sort = ''; var sortA = []; var filterA = ''; var sorting = false; var sortingOrder = ''; // session variables var bl = '17a8ec91f2fddf397a82372b478453e4'; var buffer = 0; var cat = 1; var contacts = null; var categories = null; var contact_fields = null; var eid = 0; var end_date = '01-01-1970'; var firstDay = '01-01-1970'; var filter = ''; var gotoRow = 0; var group = ''; var groupsMinId = ; var kid = ''; var kname = ''; var ksends = null; var lastDay = '01-01-1970'; var posStart = 0; var qryString = 'q=contacts-list.html'; var serial = 'I'; var serials = null; var start_date = '01-01-1970'; var uid = ; var username = ''; var year = ; var years = [ ]; var addUrl = ''; var setHeader = ''; switch (cat) { // teachers case 103: addUrl = 'add-teacher.html'; // 0 1 2 3 4 5 6 7 8 9 10 11 12 setColumnsVisibility = 'false,false,false,false,false,false,false,false,true,true,false,false,false'; // 0 1 2 3 4 5 6 7 8 9 10 11 12 setHeader = ' ,ID,Nombre,Aula,IBAN,DNI,Email,Móvil,Teléfono,Ciudad,Nómina,Fact. Auto,Estado'; setColTypes = 'sub_row_grid,ro,ro,co,ed,ed,ed,edn,edn,ed,edn,co,co'; setFilters = ',#connector_text_filter,#connector_text_filter,#connector_select_filter,#connector_text_filter,#connector_text_filter,#connector_text_filter,#connector_text_filter,#connector_text_filter,#connector_select_filter,#connector_text_filter,#connector_select_filter,#connector_select_filter' setInitWidthsP = '1,4,22,8,12,7,15,7,7,4,4,4,5'; break; // tutors case 101: addUrl = 'add-tutor.html'; // 0 1 2 3 4 5 6 7 8 9 10 11 12 setColumnsVisibility = 'false,false,false,true,true,false,false,false,true,true,true,true,false'; // 0 1 2 3 4 5 6 7 8 9 10 11 12 setHeader = ' ,ID,Nombre, , ,DNI,Email,Móvil,Teléfono,Ciudad,País,Idioma,Estado'; setColTypes = 'sub_row_grid,ro,ro,co,co,ed,ed,edn,edn,ed,co,co,co'; setFilters = ',#connector_text_filter,#connector_text_filter,#connector_select_filter,#connector_select_filter,#connector_text_filter,#connector_select_filter,#connector_text_filter,#connector_text_filter,#connector_select_filter,#connector_select_filter,#connector_select_filter,#connector_select_filter' break; // students case 100: addUrl = 'add-student.html'; // 0 1 2 3 4 5 6 7 8 9 10 11 12 setColumnsVisibility = 'false,false,false,false,false,false,false,true,true,true,true,true,false'; // 0 1 2 3 4 5 6 7 8 9 10 11 12 setHeader = ' ,ID,Alumno,Aula,Profesor,Incorporación,Curso,Móvil,Teléfono,Ciudad,País,Idioma,Estado'; setColTypes = 'sub_row_grid,ro,ro,co,co,ed,co,edn,edn,ed,co,co,co'; setFilters = ',#connector_text_filter,#connector_text_filter,#connector_select_filter,#connector_select_filter,#connector_text_filter,#connector_select_filter,#connector_text_filter,#connector_text_filter,#connector_select_filter,#connector_select_filter,#connector_select_filter,#connector_select_filter' break; } // toolbar elements var filter = ''; var tbLeft = 88+85+87+99; var tbSearch = 97+40; var tbCenter = 0; var tbExport = 0+101; var tbRight = 0; var tbSeparators = 2; // popup & context window elements var popupContact; var popupFilters; // body elements var minBodyW = 765; // resize var resizeTimer; if( parent.dhxLayout ) { dhxLayout = parent.dhxLayout; } else { dhxLayout = parent.parent.dhxLayout; } $(window).resize(function() { dhxLayout.progressOn(); clearTimeout( resizeTimer ); resizeTimer = setTimeout(setPageWidth, 250); }); function fixGridCols() { extraWidth = 0; extraWidthP = 0; totalWidth = 0; // get grid width width = ( $('body').width() - 2 ); cols = dhxGrid.getColumnsNum(); colsHidden = 0; colW = []; colWidths = setInitWidthsP.split( ',' ); //lockedColumn for(i = 0; i < cols; i++){ colWidth = dhxGrid.getColWidth( i ); colP = colWidths[i]; colW[i] = parseInt( ( colWidths[i] / 100 ) * width ); if ( dhxGrid.isColumnHidden( i ) ) { extraWidthP += parseInt( colP ); colsHidden++; } } extraWidth = parseInt( extraWidthP / ( cols - colsHidden ) ); //console.log(colWidths); //console.log(extraWidth); for(i = 0; i < cols; i++){ if ( dhxGrid.isColumnHidden( i ) ) { colWidths[i] = 0; } else { newWidth = parseInt( colWidths[i] ) + parseInt( extraWidth ); dhxGrid.setColWidth( i, newWidth.toString() ); //console.log( 'column: ' + i + ' width: ' + newWidth.toString() ); colWidths[i] = newWidth; totalWidth+= parseInt( newWidth ); } } // fix main column if ( totalWidth != 100 ) { newWidth = parseInt( colWidths[mainColumn] ) + parseInt( 100 - totalWidth ); dhxGrid.setColWidth( mainColumn, newWidth.toString() ); colWidths[mainColumn] = newWidth; } } function setAction(aid,bl,kid,sid,cid,email,username){ if ( aid == 'mail' ) { title = 'Mensaje enviado'; url = 'bitlabs/scheduler.php?mode=mail&group='+group+'&kid='+kid+'&sid='+sid+'&ids='+cid; } else { title = 'Listado actualizado'; url = 'action.html?aid='+aid+'&bl='+bl+'&kid='+kid+'&cid='+cid+'&email='+email+'&username='+username; console.log( url ); } window.dhx4.ajax.get(url,function(r){ response = r.xmlDoc; answer = window.dhx4.s2j( response.responseText ); console.log(answer); if ( response != null ) { type = (answer.status == 'OK') ? 'alert' : 'alert-error'; dhtmlx.alert( { title:title, text: 'Contacto: '+answer.msg } ); dhxLayout.progressOff(); } else { dhtmlx.alert( { title:'ERROR', type:'alert-error', text:'Ha ocurrido un error' } ); dhxLayout.progressOff(); } }); } function setContextMenu(){ dhxContextMenu = new dhtmlXMenuObject(); dhxContextMenu.setIconsPath('bitlabs/vendor/dhtmlx/imgs/'); dhxContextMenu.renderAsContextMenu(); menuItems = [ { id:'email', text:' Envío de Emails', items: [ {id: kid, text: 'Campaña '+kid+': '+kname.substr(0,30)+'' } ]}, { id:'event', text:' Control de Asistencia', items: [ {id: 'confirm', text: 'Confirmar Asistencia' }, {id: 'confirm-mail', text: 'Confirmar Asistencia y enviar email' }, {id: 'excuse', text: 'Excusar Asistencia' }, {id: 'excuse-mail', text: 'Excusar Asistencia y enviar email' } ]}, { id:'password', text:' Generar contraseña', items: [ {id: 'newpassword', text: 'Mostrar nueva contraseña en pantalla' }, {id: 'newpassword-mail', text: 'Enviar nueva contraseña por email' } ]} ]; dhxContextMenu.loadStruct(menuItems); // insert campaign and sends sends = ''; pos = 10; for (var key in ksends) { dhxContextMenu.addNewChild( 'email', pos, key, 'Envío '+key+': '+ksends[key].substr(0,25)+''); dhxContextMenu.setTooltip( key, 'Enviar email del envío '+key+': '+ksends[key].substr(0,25) ); pos += 10; console.log(pos); } // tooltips dhxContextMenu.setTooltip( kid, 'Enviar email de la campaña '+kid+': '+kname.substr(0,25) ); dhxContextMenu.setTooltip( 'confirm', 'Confirmar asistencia en la campaña actual' ); dhxContextMenu.setTooltip( 'confirm-mail', 'Confirmar asistencia en la campaña actual y enviar email de confirmación' ); dhxContextMenu.setTooltip( 'excuse', 'Excusar asistencia de la campaña actual' ); dhxContextMenu.setTooltip( 'excuse-mail', 'Excusar asistencia de la campaña actual y enviar email de excusa' ); dhxContextMenu.setTooltip( 'newpassword', 'Generar una nueva contraseña y mostrar en pantalla' ); dhxContextMenu.setTooltip( 'newpassword-mail', 'Generar una nueva contraseña y enviar por email' ); // show/hidde items if(!isMaster && !isAdmin) { dhxContextMenu.hideItem( 'email' ); } //dhxContextMenu.hideItem( 'email' ); //dhxContextMenu.hideItem( kid ); dhxContextMenu.hideItem( 'event' ); dhxContextMenu.hideItem( 'password' ); // setToolbarWidth(); dhxGrid.enableContextMenu(dhxContextMenu); dhxContextMenu.attachEvent( 'onClick', function( id ){ // detect action ID switch ( id ) { case 'confirm' : case 'confirm-mail' : aid = ( id == 'confirm' ) ? 'mok' : 'mokm'; sid = 0; break; case 'excuse' : case 'excuse-mail' : aid = ( id == 'excuse' ) ? 'mko' : 'mkom'; sid = 0; break; // send mail default : aid = 'mail'; sid = ( id == kid ) ? 0 : id; if( id == 'newpassword-mail') sid = 1002; break; } // detect id or multiple ids ids = dhxGrid.getSelectedRowId(); idList = ''; if( ids == null ) { dhtmlx.alert( { title:'ERROR', type:'alert-error', text:'Debe seleccionar un contacto' } ); return; } else { if ( ids.indexOf( ',' ) != -1 ) { ids = ids.split( ',' ); for ( var i=0; i < ids.length; i++) { console.log('multiple contacts'); cid = dhxGrid.cells( ids[i], 1 ).getValue(); email = dhxGrid.cellById( ids[i], 6).getValue(); contactStatus = parseInt( dhxGrid.cellById( ids[i], 12).getValue() ); if( contactStatus == 1 ) { dhxLayout.progressOn(); setAction(aid,bl,kid,sid,cid,email,username); } else { dhtmlx.alert( { title:'ERROR', type:'alert-error', text:'El contacto '+cid+' con email '+email+', no está activo' } ); dhxLayout.progressOff(); } } } else { console.log('single contact'); cid = dhxGrid.cells( ids, 1 ).getValue(); email = dhxGrid.cellById( ids, 6).getValue(); contactStatus = parseInt( dhxGrid.cellById( ids, 12).getValue() ); console.log(contactStatus); if( contactStatus == 1 ) { dhxLayout.progressOn(); setAction(aid,bl,kid,sid,cid,email,username); } else { dhtmlx.alert( { title:'ERROR', type:'alert-error', text:'El contacto '+cid+' con email '+email+', no está activo' } ); dhxLayout.progressOff(); } } } }); } function setFilterWindow(mode) { dhxWins= new dhtmlXWindows({ image_path: 'bitlabs/vendor/dhtmlx/imgs/', skin: 'dhx_terrace' }); if ( mode == 'filters' ) { txt = 'Añadir filtros'; } else if ( mode == 'import' ) { txt = 'Importar ' + contacts[cat]; } popupFilters = dhxWins.createWindow({ id: 'puFilters', caption: txt, left: 20, top: 20, width: 650, height: 650, center: true, modal: true }); popupFilters.button( 'minmax' ).hide(); popupFilters.button( 'park' ).hide(); popupFilters.maximize(); popupFilters.attachEvent( 'onClose', function(win){ //console.log('mode: '+mode); if ( mode == 'import' ) { url = 'grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid; dhxGrid.clearAndLoad( url ); } return true; }); popupFilters.attachEvent( 'onHide', function( win ){ popupFilters.close(); //console.log('mode: '+mode); if ( mode == 'filters' ) { url = 'grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid+'&filter='+filter+filters+sort+filterA+'&posStart='+posStart+'&count='+buffer; } else if ( mode == 'import' ) { url = 'grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid+'&filter='+filter+filters+sort+filterA+'&posStart='+posStart+'&count='+buffer; } dhxGrid.clearAndLoad( url ); return true; }); } function setGrid( gridDiv ) { dhxGrid = new dhtmlXGridObject( gridDiv ); dhxGrid.setImagePath( 'bitlabs/vendor/dhtmlx/imgs/' ); dhxGrid.setHeader( setHeader, null, ["text-align:center;","text-align:center;","text-align:center;","text-align:center;", "text-align:center;","text-align:center;","text-align:center;","text-align:center;","text-align:center;","text-align:center;","text-align:center;","text-align:center;","text-align:center;"] ); dhxGrid.attachHeader( setFilters ); dhxGrid.setInitWidthsP( setInitWidthsP ); dhxGrid.setColAlign( 'left,left,left,center,center,center,center,center,center,center,center,center,center' ); dhxGrid.setColTypes( setColTypes ); dhxGrid.setColSorting( 'connector,connector,connector,connector,connector,connector,connector,connector,connector,connector,connector,connector,connector' ); dhxGrid.setDateFormat( '%d-%m-%Y', '%Y-%m-%d' ); if(cat==103) dhxGrid.setNumberFormat( '0,000.00 €',10,',','.'); // flag to control first time sorting on select filter var flag = true; dhxGrid.attachEvent( 'onCollectValues', function( index ) { if (flag){ flag = false; var data = this.collectValues( index ); flag = true; data.sort(); return data; } return true; }); dhxGrid.attachEvent( 'onColumnHidden', function( index, state ) { // avoids main column hiding if ( index == mainColumn && state ) dhxGrid.setColumnHidden( mainColumn, false ); fixGridCols(); }) dhxGrid.attachEvent( 'onFilterStart', function(indexes,values){ //console.log( 'onFilterStart' ); filterIndexes = indexes; filterValues = values; filterA = ''; for (var i = 0; i < filterIndexes.length; i++) { filterA += '&dhx_filter['+filterIndexes[i]+']='+filterValues[i]; } //console.log( 'onFilterStart - filter: '+filterA ); }); dhxGrid.attachEvent( 'onHeaderClick', function(index,obj){ //console.log( 'onHeaderClick' ); sorting = true; state = dhxGrid.getStateOfView(); // get sort states sortingOrder = sortA[ index ]; if ( typeof sortingOrder === 'undefined' || sortingOrder == '' ) sortingOrder = 'asc'; else if (sortingOrder == 'asc' ) sortingOrder = 'desc'; else sortingOrder = ''; sortA[ index ] = sortingOrder; sort = ''; for (var key in sortA) { if( sortA[key] ) sort += '&dhx_sort['+key+']='+sortA[key]; dhxGrid.setColumnLabel(key, dhxGrid.getColumnLabel(key) + ' ') } url = 'grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid+'&filter='+filter+filters+sort+filterA+'&posStart='+posStart+'&count='+buffer; dhxGrid.clearAndLoad( url ); }); dhxGrid.attachEvent( 'onPaging', function( count ) { // remove elements from pagination toolbar $('#paging .dhx_toolbar_sep').css({'width': '75px'}); // refresh totals on pagination toolbar paginationTB = dhxGrid.aToolBar; paginationTB.removeItem('listTitle'); listTitleTxt = 'Listado de ' + contacts[cat]; paginationTB.addText('listTitle', 10, '
'+listTitleTxt+'
'); }); dhxGrid.attachEvent( 'onPageChanged', function( index, fIndex, lIndex ){ dhxGrid.selectRow( fIndex, true ); }); dhxGrid.attachEvent( 'onRowDblClicked', function( rIndex, cIndex ){ //console.log( 'columnd: ' + cIndex ); if ( cIndex >= 10 ) return true; // saves current state currentState = dhxGrid.getStateOfView(); // creates window and attach form setWindow( 'Editar '+contacts[cat]+' #'+cid ); url = addUrl+'?cid='+cid+'&cat='+cat+'&pid=0&kid='+kid+'&action='+action+'&year='+year; popupContact.attachURL( url, 'cid='+cid+'&action='+action+'&year='+year ); }); dhxGrid.attachEvent( 'onRowSelect', function( rIndex, cIndex ){ cid = rIndex; email = dhxGrid.cellById( rIndex, 6).getValue(); //console.log( cid ); //console.log( email ); // detect id or multiple ids ids = dhxGrid.getSelectedRowId(); if ( ids.indexOf( ',' ) != -1 ) { // multiple selection //console.log('multi'); dhxToolbar.disableItem( 'duplicate-contact' ); dhxToolbar.disableItem( 'edit-contact' ); } else { // single selection //console.log('single'); dhxToolbar.enableItem( 'duplicate-contact' ); dhxToolbar.enableItem( 'edit-contact' ); } }); dhxGrid.attachEvent( 'onXLE', function( grid, count ) { //console.log( 'onXLE - rows: ' + grid.getRowsNum() ); if ( dhxGrid.getRowId(0) == -1 ) { parent.location.replace('https://www.gestoracademias.com/login.html'); } cid = dhxGrid.getSelectedRowId(); if ( !cid ) { dhxGrid.selectRow( 0, true ); } if ( currentState[0] ) { // change page //console.log( 'change page to ' + currentState[0] ); dhxGrid.changePage( currentState[0] ); currentState = 0; } setToolbar( 'toolbar' ); dhxLayout.progressOff(); return true; }); dhxGrid.attachEvent( 'onXLS', function( grid ) { dhxLayout.progressOn(); }); setPaging(); // create context menu for parents and teachers - NOT to students if(cat!=100) setContextMenu(); dhxGrid.init(); dhxGrid.enableHeaderMenu(); dhxGrid.enableMultiselect(true); dhxGrid.setColumnsVisibility( setColumnsVisibility ); dhxGrid.sortRows(3,'str','asc'); dhxGrid.load('grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid ); dhxGrid.enableUndoRedo(); dp = new dataProcessor( 'grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid ); dp.init( dhxGrid ); dp.attachEvent( 'onAfterUpdate', function( id, action, tid, response ){ switch ( action ) { case 'updated' : dhxGrid.updateFromXML( 'grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid+'&filter='+filter+filters+sort+filterA+'&posStart='+posStart+'&count='+buffer+'&cid='+id ); break; } }) } function setPageWidth() { bodyH = $('body').height(); console.log ( 'bodyH '+bodyH ); height = ( bodyH - 2 - pagingbarH - toolbarH ) + 'px'; width = ( $('body').width() - 2 ) + 'px'; console.log ( height ); // change content height and width $('#content').css({'height': height, 'width': width}); // grid if ( dhxGrid ) { setPaging(); fixGridCols(); dhxGrid.clearAndLoad( 'grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid+'&filter='+filter+filters+sort+filterA+'&posStart='+posStart+'&count='+buffer); } if ( dhxToolbar ) { setToolbarWidth(); } dhxLayout.progressOff(); } function setPaging() { gridArea = $('body').height(); gridRows = parseInt( ( gridArea - gridHeaderH - pagingbarH - toolbarH ) / gridRowH ); dhxGrid.i18n.paging = { results: 'Resultados', records: 'De ', to: ' a ', page: 'Página ', perpage: 'filas por página', first: 'Ir al inicio', previous: 'Anterior', found: 'Encontrados', next: 'Siguiente', last: 'Ir al final', of: ' de ', notfound: '
No hay resultados
' } dhxGrid.enablePaging(true,gridRows,1,'paging',true,'info'); dhxGrid.setPagingSkin('toolbar','dhx_terrace'); } function setToolbar( tbDiv ){ dhxToolbar = new dhtmlXToolbarObject({ parent: tbDiv, items:[ {id: 'add-contact', type: 'button', text: 'Añadir'}, {id: 'edit-contact', type: 'button', text: 'Editar'}, {id: 'delete-contact', type: 'button', text: 'Borrar'}, {id: 'duplicate-contact', type: 'button', text: 'Duplicar'}, {id: 'sep01', type: 'separator' }, {id: 'filter', type: 'buttonInput', text: 'Buscar...'}, {id: 'search', type: 'button', text: ''}, {id: 'sep02', type: 'separator' }, {id: 'import-csv', type: 'button', text: 'Importar'}, {id: 'export-csv', type: 'button', text: 'Exportar'} ] }); dhxToolbar.setIconsPath('bitlabs/vendor/dhtmlx/imgs/'); dhxToolbar.setItemToolTip( 'add-contact', 'Añade '+contacts[cat]+' a la base de datos' ); dhxToolbar.setItemToolTip( 'edit-contact', 'Edita/modifica los datos del contacto seleccionado' ); dhxToolbar.setItemToolTip( 'delete-contact', 'Borra el contacto seleccionado y todo su historial' ); dhxToolbar.setItemToolTip( 'duplicate-contact', 'Duplica el contacto seleccionado y todos sus datos' ); dhxToolbar.setItemToolTip( 'filter', 'Filtro para búsquedas' ); dhxToolbar.setItemToolTip( 'export-csv', 'Exportar listado de contactos a Excel' ); dhxToolbar.hideItem( 'import-csv' ); if ( isUser ) { dhxToolbar.disableItem( 'delete-contact' ); dhxToolbar.disableItem( 'export-csv' ); } if ( isGuest ) { dhxToolbar.disableItem( 'delete-contact' ); dhxToolbar.disableItem( 'export-csv' ); } if ( cat == 101 || cat == 102 ) { dhxToolbar.disableItem( 'add-contact' ); } setToolbarWidth(); input_filter = dhxToolbar.getInput( 'filter' ); input_filter.onclick = function(){ if ( this.value == 'Buscar...' ) this.value = ''; } dhxToolbar.attachEvent( 'onClick', function( id ){ dhxLayout.progressOn(); switch ( id ) { case 'add-contact' : // saves current state currentState = dhxGrid.getStateOfView(); editing = cid; // creates window and attach form setWindow(); url = addUrl+'?cid=0&cat='+cat+'&pid=0&kid='+kid+'&action=add&cat='+cat; popupContact.attachURL( url, 'cid='+cid+'&action=add&cat='+cat ); break; case 'delete-contact' : if( dhxGrid.getSelectedRowId() ) { dhtmlx.confirm({ title: 'Atención...', type: 'confirm-error', ok: 'Sí', cancel: 'No', text: '¿Está seguro de borrar al contacto y todo su historial??', callback:function(ans){ if (ans) { dhxLayout.progressOn(); dhxGrid.deleteSelectedRows(); dhxLayout.progressOff(); } } }); } else { dhtmlx.alert({ text: 'Debe seleccionar el contacto que desea borrar' }); } dhxLayout.progressOff(); break; case 'duplicate-contact' : if( dhxGrid.getSelectedRowId() ) { ok = confirm( 'Está seguro de duplicar el contacto seleccionado?' ); if (ok) { action = 'duplicate'; // saves current state currentState = dhxGrid.getStateOfView(); url = 'form-data.html?mode=form&table=contacts&action=duplicate&id='+cid+'&kid='+kid; window.dhx4.ajax.get(url,function(r){ response = r.xmlDoc; if ( response != null && response.statusText == 'OK' ) { cid = response.response; // saves current state editing = cid; // creates window and attach form reload = 1; setWindow( 'Editar '+contacts[cat]+' (Duplicado) #'+cid ); url = addUrl+'?cid='+cid+'&action=edit&cat='+cat; popupContact.attachURL( url, 'cid='+cid+'&action=add&cat='+cat ); parent.dhxLayout.progressOff(); } }); } } else { dhtmlx.alert({ text: 'Debe seleccionar el contacto que desea duplicar' }); } break; case 'edit-contact' : // saves current state currentState = dhxGrid.getStateOfView(); // creates window and attach form setWindow( 'Editar '+contacts[cat]+' #'+cid ); url = addUrl+'?cid='+cid+'&cat='+cat+'&pid=0&action='+action+'&year='+year; popupContact.attachURL( url, 'cid='+cid+'&action='+action+'&year='+year ); break; case 'export-csv' : title = contacts[cat]+'%20' + contacts[cat]; filename = contacts[cat]; url = 'export-data.html?mode=grid&table=contacts&print=all&cat='+cat+'&kid='+kid+'&filter='+filter+filters+sort+filterA+'&title='+title+'&filename='+filename; document.open( url, 'Exportar', '' ); dhxLayout.progressOff(); break; case 'import-csv' : // saves current state currentState = dhxGrid.getStateOfView(); editing = cid; // creates window and attach form setFilterWindow('import'); url = 'import-contacts.html?cat='+cat; popupFilters.attachURL( url, 'cid='+cid ); parent.dhxLayout.progressOff(); break; case 'search' : filter = dhxToolbar.getValue('filter'); if( filter == 'Buscar...' ) filter = ''; dhxGrid.clearAndLoad( 'grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid+'&filter='+filter+filters+sort+filterA ); break; case 'undo' : dhxGrid.doUndo(); dhxLayout.progressOff(); break; } }); dhxToolbar.attachEvent( 'onEnter', function( id, value ){ dhxLayout.progressOn(); filter = value; dhxGrid.clearAndLoad( 'grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid+'&filter='+filter+filters+sort+filterA ); }); } function setToolbarWidth() { bodyW = ( $('body').width() >= minBodyW ) ? $('body').width() : minBodyW; tbWidth = tbLeft + tbSearch + tbCenter + tbExport + tbRight; tbSepWidth = ( ( bodyW - tbWidth ) / tbSeparators ) + 'px'; $('#paging .dhx_toolbar_sep').css({'width': '100px'}); $('#toolbar .dhx_toolbar_sep').css({'width': tbSepWidth}); } function setWindow( title = 'Alta - '+contacts[cat] ) { dhxLayout.progressOn(); dhxWins= new dhtmlXWindows({ image_path: 'bitlabs/vendor/dhtmlx/imgs/', skin: 'dhx_terrace' }); popupContact = dhxWins.createWindow({ id: 'puContacts', caption: title, left: 20, top: 20, width: 650, height: 650, center: true, modal: true }); popupContact.button( 'minmax' ).hide(); popupContact.button( 'park' ).hide(); popupContact.maximize(); popupContact.attachEvent( 'onClose', function( win ){ console.log('onClose - reload'+reload); console.log( 'catChanged: ' + catChanged ); parent.setTitle( 'Listado ' + contacts[cat] ); if ( catChanged || reload ) { dhxGrid.clearAndLoad( 'grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid+'&filter='+filter+filters+sort+filterA+'&posStart='+posStart+'&count='+buffer ); } else { // update selected row with windows form changes dhxGrid.updateFromXML( 'grid-data.html?mode=grid&table=contacts&cat='+cat+'&kid='+kid+'&filter='+filter+filters+sort+filterA+'&cid='+cid ); if (dhxGrid.getRowsNum()) { if( dhxGrid.cells(cid,0).getSubGrid() ) dhxGrid.cells(cid,0).getSubGrid().updateFromXML( 'grid-data.html?mode=subgrid&table=tutor&cat=100&pid='+cid+'&kid='+kid ); } } catChanged = 0; reload = 0; return true; }); } function onLoad() { parent.setTitle( 'Listado de ' + contacts[cat] ); setGrid( 'content' ); }