jQWidgets Forums
Forum Replies Created
Viewing 2 posts - 1 through 2 (of 2 total)
-
Author
-
July 18, 2016 at 10:02 am in reply to: Overriding the filter's evalutate method Overriding the filter's evalutate method #85826
Christopher,
thank you, I did exactly as you said.
Here’s final code, for anyone who’s looking:
filter: function (filters, data, length) { var filtereddata = new Array(); var filterslength = filters.length; for (row = 0; row < length; row++) { var datarow = data[row]; var filterresult = undefined; // loop through the filters and evaluate the value. for (j = 0; j < filterslength; j++) { var filter = filters[j].filter; var value = datarow[filters[j].datafield]; var appliedFilterValue = filters[j].filter.getfilters()[0].value; if (appliedFilterValue[appliedFilterValue.length-1] === ",") appliedFilterValue = appliedFilterValue.slice[0,-1] var valarray = appliedFilterValue.split(','); if (valarray.length > 1){ var SplittedFilterGroup = new $.jqx.filter(); for (k = 0; k < valarray.length; k++) { var YetAnotherFilter = SplittedFilterGroup.createfilter('stringfilter', valarray[k], 'contains'); var result = YetAnotherFilter.evaluate(value); if (filterresult == undefined) filterresult = result; else { filterresult = filterresult || result; } if (filterresult == true) break; } } else { var result = filter.evaluate(value); if (filterresult == undefined) filterresult = result; else { if (filter.operator == 'or') { filterresult = filterresult || result; } else { filterresult = filterresult && result; } } } } if (filterresult) { filtereddata[filtereddata.length] = datarow; } } return filtereddata;
May 26, 2016 at 7:20 am in reply to: Export corrupted xls when using aggregates with aggregates renderer Export corrupted xls when using aggregates with aggregates renderer #84666It’s not about “.ddmmyyyyhhmm()” method. When I put
return 'just a text';
and problem remains the same.It would be hard to share all project. All I can do is post full definition of grid:
var grid = []; var source1 = { datatype: 'json', localdata: grid, datafields: [ {name: 'TASKTITLE', type: 'string', map: 'TASKTITLE'}, {name: 'DATEREADY', type: 'date', map: 'DATEREADY'}, {name: 'STATUS', type: 'string', map: 'STATUS'}, {name: 'PERIOD', type: 'string', map: 'PERIOD'}, {name: 'PERFORMER', type: 'string', map: 'PERFORMER'}, {name: 'DPNAME', type: 'string', map: 'DPNAME'}, {name: 'WORKTITLE', type: 'string', map: 'WORKTITLE'}, {name: 'ITERNUM', type: 'string', map: 'ITERNUM'}, ] }; var dataAdapter = new $.jqx.dataAdapter(source1, { loadComplete: function () { console.log("loadcomplete fired!") } } ); var cellsrenderer = function (row, columnfield, value, defaulthtml, columnproperties, rowdata) { if (value < 20) { return '<span style="margin: 4px; float: ' + columnproperties.cellsalign + '; color: #ff0000;">' + value + '</span>'; } else { return '<span style="margin: 4px; float: ' + columnproperties.cellsalign + '; color: #008000;">' + value + '</span>'; } } // initialize jqxGrid $("#jqxgrid").jqxGrid( { width: "100%", height: "100%", source: dataAdapter, scrollmode: 'logical', pageable: true, //autoheight: true, sortable: true, altrows: true, //enabletooltips: false, //editable: false, autorowheight: true, columnsresize: true, pagesize: 50, //selectionmode: 'checkbox', pagermode: 'simple', showfilterrow: true, filterable: true, showaggregates: true, showstatusbar: true, //statusbarheight: 25, renderstatusbar: function (statusbar) { // appends buttons to the status bar. var container = $("<div style='overflow: hidden; position: relative; margin: 5px;'></div>"); var exportButton = $("<button>Export</button>"); //container.append(infotext); container.append(exportButton); statusbar.append(container); exportButton.jqxButton({ width: 60, height: 20 }); // add new row. exportButton.click(function (event) { $("#jqxgrid").jqxGrid('exportdata', 'xls', 'jqxGrid', false); }); }, columns: [ { text: '№ п/п', sortable: false, filterable: false, editable: false, groupable: false, draggable: false, resizable: false, datafield: '', columntype: 'number', width: 50, width:"3%", cellsrenderer: function (row, column, value) { return "<div style='margin:4px;'>" + (value + 1) + "</div>"; } }, { text: 'Задача', datafield: 'TASKTITLE', columntype: 'string', width: "15%" }, { text: 'Дата создания', datafield: 'DATEREADY', cellsformat: 'dd.MM.yyyy HH:mm', filtertype: 'range', width: "7%" }, { text: 'Статус', columntype: 'string', datafield: 'STATUS', width: "10%" }, { text: 'Время в обработке', columntype: 'string', datafield: 'PERIOD', width: "13%" }, { text: 'Исполнитель', columntype: 'string', datafield: 'PERFORMER', width: "7%" }, { text: 'Досье', columntype: 'string', datafield: 'DPNAME', width: "20%" }, { text: 'Процесс', columntype: 'string', datafield: 'WORKTITLE', width: "15%", aggregates: [{ 'Дата формирования': function (aggregatedValue, currentValue, column, record) { var d = new Date(); return d.ddmmyyyyhhmm(); } }], aggregatesrenderer: function (aggregates) { var renderstring = ""; var d = new Date(); renderstring += '<div style="position: relative; margin: 4px; overflow: hidden;">Дата формирования<br>' + d.ddmmyyyyhhmm() + '</div>'; return renderstring; } }, { text: 'Итерация', columntype: 'string', datafield: 'ITERNUM', width: "10%", aggregates: [{ 'Всего записей': function (aggregatedValue, currentValue, column, record) { return $("#jqxgrid").jqxGrid('getRows').length } }], aggregatesrenderer: function (aggregates) { var renderstring = ""; $.each(aggregates, function (key, value) { renderstring += '<div style="position: relative; margin: 4px; overflow: hidden;">Всего записей<br>' + $("#jqxgrid").jqxGrid('getRows').length + '</div>'; }); return renderstring; } } ] });
For the record, that is ddmmyyhhmm method definition:
Date.prototype.ddmmyyyyhhmm = function() { var yyyy = this.getFullYear().toString(); var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based var dd = this.getDate().toString(); var hh = this.getHours().toString(); var min = this.getMinutes().toString(); return (dd[1]?dd:"0"+dd[0]) +"."+ (mm[1]?mm:"0"+mm[0]) +"."+ yyyy + " " + hh + ":" + min; // padding };
I hope this helps…
-
AuthorPosts
Viewing 2 posts - 1 through 2 (of 2 total)