This repository has been archived on 2020-12-10. You can view files and clone it, but cannot push or open issues or pull requests.
IRProject/ui/carrotsearch.foamtree.util.treemodel.js
Claudio Maggioni (maggicl) 3d201a52cf ui mvp done
2020-11-18 23:44:51 +01:00

49 lines
No EOL
1.5 KiB
JavaScript

/**
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* Copyright 2002-2019, Carrot Search s.c, All Rights Reserved.
*
*
* A number of utilities for working with a hierarchical model of groups.
*/
window.CarrotSearchFoamTree.TreeModel = {
eachDescendantAndSelf: function (root, callback) {
if (!root) { return false; }
return visit(root, 0, undefined, 0);
function visit(group, index, parent, level) {
if (group.groups) {
var children = group.groups;
for (var i = 0; i < children.length; i++) {
if (visit(children[i], i, group, level + 1) === false) {
return false;
}
}
}
return callback(group, index, parent, level);
}
},
findFirstByProperty: function (root, property, value) {
var result = undefined;
window.CarrotSearchFoamTree.TreeModel.eachDescendantAndSelf(root, function (group) {
if (group[property] == value) {
result = group;
return false;
}
});
return result;
}
};