@iiif/iiif-tree-component
Advanced tools
Comparing version
@@ -29,3 +29,3 @@ /// <reference types="@iiif/manifold" /> | ||
private _nodeIsMultiSelectable; | ||
private _getAllNodes; | ||
getAllNodes(): Manifold.ITreeNode[]; | ||
getMultiSelectedNodes(): Manifold.ITreeNode[]; | ||
@@ -40,2 +40,3 @@ getNodeById(id: string): Manifold.ITreeNode; | ||
selectNode(node: Manifold.ITreeNode): void; | ||
expandNode(node: Manifold.ITreeNode, expanded: boolean): void; | ||
getNodeByPath(parentNode: Manifold.ITreeNode, path: string[]): Manifold.ITreeNode; | ||
@@ -42,0 +43,0 @@ show(): void; |
@@ -142,17 +142,3 @@ var __extends = (this && this.__extends) || (function () { | ||
} | ||
var allNodes = this._getAllNodes(); | ||
// select current collection/manifest | ||
if (this._data.helper) { | ||
var collectionIndex_1 = this._data.helper.collectionIndex; | ||
var manifestIndex_1 = this._data.helper.manifestIndex; | ||
allNodes.map(function (node) { | ||
if (node.isCollection() && node.data.index === collectionIndex_1) { | ||
_this.selectNode(node); | ||
_this._setNodeExpanded(node, true); | ||
} | ||
if (node.isManifest() && node.data.index === manifestIndex_1) { | ||
_this.selectNode(node); | ||
} | ||
}); | ||
} | ||
var allNodes = this.getAllNodes(); | ||
if (this._data.autoExpand) { | ||
@@ -193,3 +179,3 @@ allNodes.forEach(function (node, index) { | ||
} | ||
return this._multiSelectableNodes = this._getAllNodes().en().where(function (n) { return _this._nodeIsMultiSelectable(n); }).toArray(); | ||
return this._multiSelectableNodes = this.getAllNodes().en().where(function (n) { return _this._nodeIsMultiSelectable(n); }).toArray(); | ||
}; | ||
@@ -199,3 +185,3 @@ TreeComponent.prototype._nodeIsMultiSelectable = function (node) { | ||
}; | ||
TreeComponent.prototype._getAllNodes = function () { | ||
TreeComponent.prototype.getAllNodes = function () { | ||
// if cached | ||
@@ -209,6 +195,6 @@ if (this._allNodes) { | ||
var _this = this; | ||
return this._getAllNodes().en().where(function (n) { return _this._nodeIsMultiSelectable(n) && n.multiSelected; }).toArray(); | ||
return this.getAllNodes().en().where(function (n) { return _this._nodeIsMultiSelectable(n) && n.multiSelected; }).toArray(); | ||
}; | ||
TreeComponent.prototype.getNodeById = function (id) { | ||
return this._getAllNodes().en().where(function (n) { return n.id === id; }).first(); | ||
return this.getAllNodes().en().where(function (n) { return n.id === id; }).first(); | ||
}; | ||
@@ -294,2 +280,7 @@ // private _multiSelectTreeNode(node: Manifold.ITreeNode, isSelected: boolean): void { | ||
}; | ||
TreeComponent.prototype.expandNode = function (node, expanded) { | ||
if (!this._rootNode) | ||
return; | ||
this._setNodeExpanded(node, expanded); | ||
}; | ||
// walks down the tree using the specified path e.g. [2,2,0] | ||
@@ -296,0 +287,0 @@ TreeComponent.prototype.getNodeByPath = function (parentNode, path) { |
@@ -1,1 +0,1 @@ | ||
var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();var IIIFComponents;(function(IIIFComponents){var TreeComponent=function(_super){__extends(TreeComponent,_super);function TreeComponent(options){var _this=_super.call(this,options)||this;_this._data=_this.data();_this._data=_this.options.data;_this._init();_this._resize();return _this}TreeComponent.prototype._init=function(){var success=_super.prototype._init.call(this);if(!success){console.error("TreeComponent failed to initialise")}var that=this;this._$tree=$('<ul class="tree"></ul>');this._$element.append(this._$tree);$.templates({pageTemplate:"{^{for nodes}} {^{tree/}} {{/for}}",treeTemplate:'<li> {^{if nodes && nodes.length}} <div class="toggle" data-link="class{merge:expanded toggle=\'expanded\'}"></div> {{else}} <div class="spacer"></div> {{/if}} {^{if multiSelectEnabled}} <input id="tree-checkbox-{{>id}}" type="checkbox" data-link="checked{:multiSelected ? \'checked\' : \'\'}" class="multiSelect" /> {{/if}} {^{if selected}} <a id="tree-link-{{>id}}" href="#" title="{{>label}}" class="selected">{{>label}}</a> {{else}} <a id="tree-link-{{>id}}" href="#" title="{{>label}}">{{>label}}</a> {{/if}} </li> {^{if expanded}} <li> <ul> {^{for nodes}} {^{tree/}} {{/for}} </ul> </li> {{/if}}'});$.views.tags({tree:{toggleExpanded:function(){var node=this.data;that._setNodeExpanded(node,!node.expanded)},toggleMultiSelect:function(){var node=this.data;that._setNodeMultiSelected(node,!!!node.multiSelected);if(node.isRange()){var multiSelectState=that._getMultiSelectState();if(multiSelectState){multiSelectState.selectRange(node.data,node.multiSelected)}}that.fire(TreeComponent.Events.TREE_NODE_MULTISELECTED,node)},init:function(tagCtx,linkCtx,ctx){this.data=tagCtx.view.data},onAfterLink:function(){var self=this;self.contents("li").first().on("click",".toggle",function(){self.toggleExpanded()}).on("click","a",function(e){e.preventDefault();var node=self.data;if(node.nodes.length&&that._data.branchNodesExpandOnClick){self.toggleExpanded()}if(node.multiSelectEnabled){self.toggleMultiSelect()}else{if(!node.nodes.length){that.fire(TreeComponent.Events.TREE_NODE_SELECTED,node);that.selectNode(node)}else if(that._data.branchNodesSelectable){that.fire(TreeComponent.Events.TREE_NODE_SELECTED,node);that.selectNode(node)}}}).on("click","input.multiSelect",function(e){self.toggleMultiSelect()})},template:$.templates.treeTemplate}});return success};TreeComponent.prototype.set=function(data){var _this=this;this._data=Object.assign(this._data,data);if(!this._data.helper){return}this._rootNode=this._data.helper.getTree(this._data.topRangeIndex,this._data.treeSortType);this._allNodes=null;this._multiSelectableNodes=null;this._$tree.link($.templates.pageTemplate,this._rootNode);var multiSelectState=this._getMultiSelectState();if(multiSelectState){var _loop_1=function(i){var range=multiSelectState.ranges[i];var node=this_1._getMultiSelectableNodes().en().where(function(n){return n.data.id===range.id}).first();if(node){this_1._setNodeMultiSelectEnabled(node,range.multiSelectEnabled);this_1._setNodeMultiSelected(node,range.multiSelected)}};var this_1=this;for(var i=0;i<multiSelectState.ranges.length;i++){_loop_1(i)}}var allNodes=this._getAllNodes();if(this._data.helper){var collectionIndex_1=this._data.helper.collectionIndex;var manifestIndex_1=this._data.helper.manifestIndex;allNodes.map(function(node){if(node.isCollection()&&node.data.index===collectionIndex_1){_this.selectNode(node);_this._setNodeExpanded(node,true)}if(node.isManifest()&&node.data.index===manifestIndex_1){_this.selectNode(node)}})}if(this._data.autoExpand){allNodes.forEach(function(node,index){if(node.nodes.length){_this._setNodeExpanded(node,true)}})}};TreeComponent.prototype._getMultiSelectState=function(){if(this._data.helper){return this._data.helper.getMultiSelectState()}return null};TreeComponent.prototype.data=function(){return{autoExpand:false,branchNodesExpandOnClick:true,branchNodesSelectable:true,helper:null,topRangeIndex:0,treeSortType:Manifold.TreeSortType.NONE}};TreeComponent.prototype.allNodesSelected=function(){var applicableNodes=this._getMultiSelectableNodes();var multiSelectedNodes=this.getMultiSelectedNodes();return applicableNodes.length===multiSelectedNodes.length};TreeComponent.prototype._getMultiSelectableNodes=function(){var _this=this;if(this._multiSelectableNodes){return this._multiSelectableNodes}return this._multiSelectableNodes=this._getAllNodes().en().where(function(n){return _this._nodeIsMultiSelectable(n)}).toArray()};TreeComponent.prototype._nodeIsMultiSelectable=function(node){return node.isManifest()&&node.nodes.length>0||node.isRange()};TreeComponent.prototype._getAllNodes=function(){if(this._allNodes){return this._allNodes}return this._allNodes=this._rootNode.nodes.en().traverseUnique(function(node){return node.nodes}).toArray()};TreeComponent.prototype.getMultiSelectedNodes=function(){var _this=this;return this._getAllNodes().en().where(function(n){return _this._nodeIsMultiSelectable(n)&&n.multiSelected}).toArray()};TreeComponent.prototype.getNodeById=function(id){return this._getAllNodes().en().where(function(n){return n.id===id}).first()};TreeComponent.prototype._setNodeSelected=function(node,selected){$.observable(node).setProperty("selected",selected)};TreeComponent.prototype._setNodeExpanded=function(node,expanded){$.observable(node).setProperty("expanded",expanded)};TreeComponent.prototype._setNodeMultiSelected=function(node,selected){$.observable(node).setProperty("multiSelected",selected)};TreeComponent.prototype._setNodeMultiSelectEnabled=function(node,enabled){$.observable(node).setProperty("multiSelectEnabled",enabled)};TreeComponent.prototype.selectPath=function(path){if(!this._rootNode)return;var pathArr=path.split("/");if(pathArr.length>=1)pathArr.shift();var node=this.getNodeByPath(this._rootNode,pathArr);this.selectNode(node)};TreeComponent.prototype.deselectCurrentNode=function(){if(this._selectedNode)this._setNodeSelected(this._selectedNode,false)};TreeComponent.prototype.selectNode=function(node){if(!this._rootNode)return;this.deselectCurrentNode();this._selectedNode=node;this._setNodeSelected(this._selectedNode,true)};TreeComponent.prototype.getNodeByPath=function(parentNode,path){if(path.length===0)return parentNode;var index=Number(path.shift());var node=parentNode.nodes[index];return this.getNodeByPath(node,path)};TreeComponent.prototype.show=function(){this._$element.show()};TreeComponent.prototype.hide=function(){this._$element.hide()};TreeComponent.prototype._resize=function(){};return TreeComponent}(_Components.BaseComponent);IIIFComponents.TreeComponent=TreeComponent})(IIIFComponents||(IIIFComponents={}));(function(IIIFComponents){var TreeComponent;(function(TreeComponent){var Events=function(){function Events(){}Events.TREE_NODE_MULTISELECTED="treeNodeMultiSelected";Events.TREE_NODE_SELECTED="treeNodeSelected";return Events}();TreeComponent.Events=Events})(TreeComponent=IIIFComponents.TreeComponent||(IIIFComponents.TreeComponent={}))})(IIIFComponents||(IIIFComponents={}));(function(g){if(!g.IIIFComponents){g.IIIFComponents=IIIFComponents}else{g.IIIFComponents.TreeComponent=IIIFComponents.TreeComponent}})(window); | ||
var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();var IIIFComponents;(function(IIIFComponents){var TreeComponent=function(_super){__extends(TreeComponent,_super);function TreeComponent(options){var _this=_super.call(this,options)||this;_this._data=_this.data();_this._data=_this.options.data;_this._init();_this._resize();return _this}TreeComponent.prototype._init=function(){var success=_super.prototype._init.call(this);if(!success){console.error("TreeComponent failed to initialise")}var that=this;this._$tree=$('<ul class="tree"></ul>');this._$element.append(this._$tree);$.templates({pageTemplate:"{^{for nodes}} {^{tree/}} {{/for}}",treeTemplate:'<li> {^{if nodes && nodes.length}} <div class="toggle" data-link="class{merge:expanded toggle=\'expanded\'}"></div> {{else}} <div class="spacer"></div> {{/if}} {^{if multiSelectEnabled}} <input id="tree-checkbox-{{>id}}" type="checkbox" data-link="checked{:multiSelected ? \'checked\' : \'\'}" class="multiSelect" /> {{/if}} {^{if selected}} <a id="tree-link-{{>id}}" href="#" title="{{>label}}" class="selected">{{>label}}</a> {{else}} <a id="tree-link-{{>id}}" href="#" title="{{>label}}">{{>label}}</a> {{/if}} </li> {^{if expanded}} <li> <ul> {^{for nodes}} {^{tree/}} {{/for}} </ul> </li> {{/if}}'});$.views.tags({tree:{toggleExpanded:function(){var node=this.data;that._setNodeExpanded(node,!node.expanded)},toggleMultiSelect:function(){var node=this.data;that._setNodeMultiSelected(node,!!!node.multiSelected);if(node.isRange()){var multiSelectState=that._getMultiSelectState();if(multiSelectState){multiSelectState.selectRange(node.data,node.multiSelected)}}that.fire(TreeComponent.Events.TREE_NODE_MULTISELECTED,node)},init:function(tagCtx,linkCtx,ctx){this.data=tagCtx.view.data},onAfterLink:function(){var self=this;self.contents("li").first().on("click",".toggle",function(){self.toggleExpanded()}).on("click","a",function(e){e.preventDefault();var node=self.data;if(node.nodes.length&&that._data.branchNodesExpandOnClick){self.toggleExpanded()}if(node.multiSelectEnabled){self.toggleMultiSelect()}else{if(!node.nodes.length){that.fire(TreeComponent.Events.TREE_NODE_SELECTED,node);that.selectNode(node)}else if(that._data.branchNodesSelectable){that.fire(TreeComponent.Events.TREE_NODE_SELECTED,node);that.selectNode(node)}}}).on("click","input.multiSelect",function(e){self.toggleMultiSelect()})},template:$.templates.treeTemplate}});return success};TreeComponent.prototype.set=function(data){var _this=this;this._data=Object.assign(this._data,data);if(!this._data.helper){return}this._rootNode=this._data.helper.getTree(this._data.topRangeIndex,this._data.treeSortType);this._allNodes=null;this._multiSelectableNodes=null;this._$tree.link($.templates.pageTemplate,this._rootNode);var multiSelectState=this._getMultiSelectState();if(multiSelectState){var _loop_1=function(i){var range=multiSelectState.ranges[i];var node=this_1._getMultiSelectableNodes().en().where(function(n){return n.data.id===range.id}).first();if(node){this_1._setNodeMultiSelectEnabled(node,range.multiSelectEnabled);this_1._setNodeMultiSelected(node,range.multiSelected)}};var this_1=this;for(var i=0;i<multiSelectState.ranges.length;i++){_loop_1(i)}}var allNodes=this.getAllNodes();if(this._data.autoExpand){allNodes.forEach(function(node,index){if(node.nodes.length){_this._setNodeExpanded(node,true)}})}};TreeComponent.prototype._getMultiSelectState=function(){if(this._data.helper){return this._data.helper.getMultiSelectState()}return null};TreeComponent.prototype.data=function(){return{autoExpand:false,branchNodesExpandOnClick:true,branchNodesSelectable:true,helper:null,topRangeIndex:0,treeSortType:Manifold.TreeSortType.NONE}};TreeComponent.prototype.allNodesSelected=function(){var applicableNodes=this._getMultiSelectableNodes();var multiSelectedNodes=this.getMultiSelectedNodes();return applicableNodes.length===multiSelectedNodes.length};TreeComponent.prototype._getMultiSelectableNodes=function(){var _this=this;if(this._multiSelectableNodes){return this._multiSelectableNodes}return this._multiSelectableNodes=this.getAllNodes().en().where(function(n){return _this._nodeIsMultiSelectable(n)}).toArray()};TreeComponent.prototype._nodeIsMultiSelectable=function(node){return node.isManifest()&&node.nodes.length>0||node.isRange()};TreeComponent.prototype.getAllNodes=function(){if(this._allNodes){return this._allNodes}return this._allNodes=this._rootNode.nodes.en().traverseUnique(function(node){return node.nodes}).toArray()};TreeComponent.prototype.getMultiSelectedNodes=function(){var _this=this;return this.getAllNodes().en().where(function(n){return _this._nodeIsMultiSelectable(n)&&n.multiSelected}).toArray()};TreeComponent.prototype.getNodeById=function(id){return this.getAllNodes().en().where(function(n){return n.id===id}).first()};TreeComponent.prototype._setNodeSelected=function(node,selected){$.observable(node).setProperty("selected",selected)};TreeComponent.prototype._setNodeExpanded=function(node,expanded){$.observable(node).setProperty("expanded",expanded)};TreeComponent.prototype._setNodeMultiSelected=function(node,selected){$.observable(node).setProperty("multiSelected",selected)};TreeComponent.prototype._setNodeMultiSelectEnabled=function(node,enabled){$.observable(node).setProperty("multiSelectEnabled",enabled)};TreeComponent.prototype.selectPath=function(path){if(!this._rootNode)return;var pathArr=path.split("/");if(pathArr.length>=1)pathArr.shift();var node=this.getNodeByPath(this._rootNode,pathArr);this.selectNode(node)};TreeComponent.prototype.deselectCurrentNode=function(){if(this._selectedNode)this._setNodeSelected(this._selectedNode,false)};TreeComponent.prototype.selectNode=function(node){if(!this._rootNode)return;this.deselectCurrentNode();this._selectedNode=node;this._setNodeSelected(this._selectedNode,true)};TreeComponent.prototype.expandNode=function(node,expanded){if(!this._rootNode)return;this._setNodeExpanded(node,expanded)};TreeComponent.prototype.getNodeByPath=function(parentNode,path){if(path.length===0)return parentNode;var index=Number(path.shift());var node=parentNode.nodes[index];return this.getNodeByPath(node,path)};TreeComponent.prototype.show=function(){this._$element.show()};TreeComponent.prototype.hide=function(){this._$element.hide()};TreeComponent.prototype._resize=function(){};return TreeComponent}(_Components.BaseComponent);IIIFComponents.TreeComponent=TreeComponent})(IIIFComponents||(IIIFComponents={}));(function(IIIFComponents){var TreeComponent;(function(TreeComponent){var Events=function(){function Events(){}Events.TREE_NODE_MULTISELECTED="treeNodeMultiSelected";Events.TREE_NODE_SELECTED="treeNodeSelected";return Events}();TreeComponent.Events=Events})(TreeComponent=IIIFComponents.TreeComponent||(IIIFComponents.TreeComponent={}))})(IIIFComponents||(IIIFComponents={}));(function(g){if(!g.IIIFComponents){g.IIIFComponents=IIIFComponents}else{g.IIIFComponents.TreeComponent=IIIFComponents.TreeComponent}})(window); |
{ | ||
"name": "@iiif/iiif-tree-component", | ||
"version": "1.1.13", | ||
"version": "1.1.14", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "./dist/TreeComponent.js", |
30512
-2.12%498
-1.78%