jQWidgets Forums

Forum Replies Created

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts

  • mcseemcher
    Participant

    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;

    mcseemcher
    Participant

    It’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…

Viewing 2 posts - 1 through 2 (of 2 total)