Сохранение настроек фильтра при нажатии на ...

This commit is contained in:
2022-01-24 15:38:12 +06:00
parent 6258a39b12
commit d9cd847bb4
6 changed files with 188 additions and 115 deletions

View File

@ -723,8 +723,8 @@ function findNodeOnNum(node,nodename,n)
}
return null;
}
//вернуть первый узел заданного типа
function findNodeOnAttribute(node, nodename,Attribute,val)
//Вернуть первый узел заданного типа
function findNodeOnAttribute(node, nodename, Attribute, val)
{
if(node==null) return null;
let n = node.firstChild;
@ -739,19 +739,19 @@ function findNodeOnAttribute(node, nodename,Attribute,val)
}
//Вернуть номер узла по атрибуту среди себеподобных (нумерация с 0)
function findNumNodeOnAttribute(node, nodename,Attribute,val)
{ if(node==null) return -1;
{
if(node==null) return -1;
let i=0;
let n = node.firstChild;
while (n != null)
{if(n.nodeName.toLowerCase()==nodename.toLowerCase())
{if(n.getAttribute(Attribute)==val) return i;
while (n != null){
if(n.nodeName.toLowerCase()==nodename.toLowerCase()){
if(n.getAttribute(Attribute)==val) return i;
i++;
}
n=n.nextSibling;
}
return -1;
}
//рекурсию не буду использовать, обойдусь массивом вложенности
function findFirstNode(node, nodename)
{
@ -830,7 +830,11 @@ function findFirstNodeOnAttribute(node, nodename,Attribute,val)
}
return null;
}
//поиск узла по пути "type/objects/list/filter/column"
/**
* Поиск узла по пути "type/objects/list/filter/column" или "Employees/Employee[@id='4']"
* @node Node Узел с которого ищется
* @path String Путь по котрому ищется
*/
function findNodeOnPath(node, path)
{
if(node==null) return null;
@ -838,10 +842,22 @@ function findNodeOnPath(node, path)
for (let i=0;i<Params.length;i++)
{
if(node==null) return null;
node=findNode(node,Params[i]);
let pos1=Params[i].indexOf('[@');
if(pos1>=0){
let pos2=Params[i].indexOf("='");
let pos3=Params[i].indexOf("']");
let name=Params[i].substring(0, pos1);
let attribute=Params[i].substring(pos1+2, pos2);
let val=Params[i].substring(pos2+2, pos3);
node = findNodeOnAttribute(node, name, attribute, val);
}else {
node = findNode(node, Params[i]);
}
}
return node;
}
//вернёт первую CDATA секцию если её нет то создаст}
function getCdata(node,n)
{