98 lines
1.2 KiB
JavaScript
98 lines
1.2 KiB
JavaScript
|
|
export default class searchable{
|
||
|
|
|
||
|
|
constructor( path ) {
|
||
|
|
|
||
|
|
this.path = path;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
path = false;
|
||
|
|
|
||
|
|
operator = false;
|
||
|
|
|
||
|
|
findPath( path, searchable = this, searchables = new Array() ) {
|
||
|
|
|
||
|
|
if( searchable.operator ) {
|
||
|
|
|
||
|
|
if(typeof searchable.a == "object") {
|
||
|
|
|
||
|
|
searchable.a.parent = searchable;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if(typeof searchable.b == "object") {
|
||
|
|
|
||
|
|
searchable.b.parent = searchable;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if( searchable.a ) {
|
||
|
|
|
||
|
|
var a = this.findPath( path, searchable.a, searchables );
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if( searchable.b ) {
|
||
|
|
|
||
|
|
var b = this.findPath( path, searchable.b, searchables );
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if( a || b ) {
|
||
|
|
|
||
|
|
return searchables;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if( searchable.path ) {
|
||
|
|
|
||
|
|
var currentPath = searchable.path;
|
||
|
|
|
||
|
|
var parts = currentPath.split("/");
|
||
|
|
|
||
|
|
var columnName = parts.pop();
|
||
|
|
|
||
|
|
var filterAddress = parts.join("/");
|
||
|
|
|
||
|
|
console.log("find path", filterAddress, path);
|
||
|
|
|
||
|
|
if( filterAddress == path ) {
|
||
|
|
|
||
|
|
searchables.push( searchable );
|
||
|
|
|
||
|
|
return searchables;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
return false;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
getColumnName() {
|
||
|
|
|
||
|
|
var currentPath = this.path;
|
||
|
|
|
||
|
|
var parts = currentPath.split("/");
|
||
|
|
|
||
|
|
return parts.pop();
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
getValue() {
|
||
|
|
|
||
|
|
return this.parent.b;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
getOperator() {
|
||
|
|
|
||
|
|
return this.parent.operator;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|