Javascript Webix:自定义页脚数据过滤器
我正在使用树表,并实现了一个自定义数据过滤器。我只想在数据层次结构的第一层进行一些操作。你知道我怎么做吗 我会告诉你一些背景。在下面的gif中,当我单击打开内部数据级别时,总和(或平均值)会发生变化。有一次高层计算了这个信息是错误的 我只需要提出一个条件,这是第一级的 这是我目前的代码Javascript Webix:自定义页脚数据过滤器,javascript,webix,Javascript,Webix,我正在使用树表,并实现了一个自定义数据过滤器。我只想在数据层次结构的第一层进行一些操作。你知道我怎么做吗 我会告诉你一些背景。在下面的gif中,当我单击打开内部数据级别时,总和(或平均值)会发生变化。有一次高层计算了这个信息是错误的 我只需要提出一个条件,这是第一级的 这是我目前的代码 <script> webix.ui.datafilter.reports = { refresh: function(master, node, column){ trackCel
<script>
webix.ui.datafilter.reports = {
refresh: function(master, node, column){
trackCells:false,
refresh: function(master, node, column){
var result = 0;
var tipoDeDados = null;
master.mapCells(null, column.columnId, null, 1, function(value){
if (tipoDeDados === null) {
tipoDeDados = defineTipoDeDados(value);
}
valorLimpo = removeCaracteresInvalidos(value);
result += valorLimpo; // here I think that I need the condition
return value;
});
if (tipoDeDados === "porcentagem") {
node.firstChild.innerHTML = (result/master.count()).toFixed(2).replace('.', ',') + '%';
} else if (tipoDeDados === "moeda") {
node.firstChild.innerHTML = 'R$ ' + (result).toFixed(2).replace('.', ',');
} else if (tipoDeDados === "numerico") {
node.firstChild.innerHTML = result;
} else {
node.firstChild.innerHTML = "";
}
},
render: function(a, b){}
};
</script>
webix.ui.datafilter.reports={
刷新:功能(主节点、节点、列){
trackCells:false,
刷新:功能(主节点、节点、列){
var结果=0;
var tipoDeDados=null;
master.mapcell(null,column.columnId,null,1,函数(值){
if(tipoDeDados==null){
tipoDeDados=定义PODEDADOS(值);
}
ValorLinpo=删除字符的有效性(值);
result+=valorlinpo;//这里我想我需要这个条件
返回值;
});
如果(tipoDeDados==“瓷器”){
node.firstChild.innerHTML=(result/master.count()).toFixed(2).replace(“.”、“)+“%”;
}否则如果(tipoDeDados==“moeda”){
node.firstChild.innerHTML='R$'+(结果).toFixed(2).replace('.',',');
}否则如果(tipoDeDados==“numerico”){
node.firstChild.innerHTML=结果;
}否则{
node.firstChild.innerHTML=“”;
}
},
呈现:函数(a,b){}
};
Webix Docs说,我只需要将trackCells设置为false,以避免重新加载数据过滤器,但当我通过ajax加载获得新数据时,它不起作用。通过下面的代码,我得到了我想要的结果
webix.ui.datafilter.reports = {
trackCells:false,
refresh: function(master, node, value){
var result = 0;
var numberCellsAtFirstLevel = 0;
var tipoDeDados = null;
master.data.each(function(obj) {
currentValue = obj[value.columnId];
if (tipoDeDados === null) {
tipoDeDados = defineTipoDeDados(currentValue);
}
valorLimpo = removeCaracteresInvalidos(currentValue);
if (obj.$level == 1) {
result += valorLimpo;
numberCellsAtFirstLevel += 1
}
return currentValue;
});
if (tipoDeDados === "porcentagem") {
node.firstChild.innerHTML = (result/numberCellsAtFirstLevel).toFixed(2).replace('.', ',') + '%';
} else if (tipoDeDados === "moeda") {
node.firstChild.innerHTML = 'R$ ' + (result).toFixed(2).replace('.', ',');
} else if (tipoDeDados === "numerico") {
node.firstChild.innerHTML = result;
} else {
node.firstChild.innerHTML = "";
}
},
render: function(a, b){}
};
通过下面的代码,我得到了我想要的结果
webix.ui.datafilter.reports = {
trackCells:false,
refresh: function(master, node, value){
var result = 0;
var numberCellsAtFirstLevel = 0;
var tipoDeDados = null;
master.data.each(function(obj) {
currentValue = obj[value.columnId];
if (tipoDeDados === null) {
tipoDeDados = defineTipoDeDados(currentValue);
}
valorLimpo = removeCaracteresInvalidos(currentValue);
if (obj.$level == 1) {
result += valorLimpo;
numberCellsAtFirstLevel += 1
}
return currentValue;
});
if (tipoDeDados === "porcentagem") {
node.firstChild.innerHTML = (result/numberCellsAtFirstLevel).toFixed(2).replace('.', ',') + '%';
} else if (tipoDeDados === "moeda") {
node.firstChild.innerHTML = 'R$ ' + (result).toFixed(2).replace('.', ',');
} else if (tipoDeDados === "numerico") {
node.firstChild.innerHTML = result;
} else {
node.firstChild.innerHTML = "";
}
},
render: function(a, b){}
};