X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=js%2FPrefFilterTree.js;h=0a9a1fd1a6fa85ce1bacfd99f22837e37ed4d66c;hb=HEAD;hp=afa2f445aa06dea1e5958a6d38e3c1a634af830b;hpb=ba975b2ec7d20d1e841b1f9fdc1a571317aca3eb;p=tt-rss.git diff --git a/js/PrefFilterTree.js b/js/PrefFilterTree.js index afa2f445..0a9a1fd1 100644 --- a/js/PrefFilterTree.js +++ b/js/PrefFilterTree.js @@ -1,52 +1,82 @@ -dojo.provide("fox.PrefFilterTree"); - -dojo.require("lib.CheckBoxTree"); - -dojo.declare("fox.PrefFilterTree", lib.CheckBoxTree, { - _createTreeNode: function(args) { - var tnode = this.inherited(arguments); - - var enabled = this.model.store.getValue(args.item, 'enabled'); - var param = this.model.store.getValue(args.item, 'param'); - - if (param) { - param = dojo.doc.createElement('span'); - param.className = (enabled != false) ? 'labelParam' : 'labelParam Disabled'; - param.innerHTML = args.item.param[0]; - dojo.place(param, tnode.labelNode, 'after'); - } - - return tnode; - }, - - getLabel: function(item) { - var label = item.name; - - var feed = this.model.store.getValue(item, 'feed'); - var inverse = this.model.store.getValue(item, 'inverse'); - - if (feed) - label += " (" + __("in") + " " + feed + ")"; - - if (inverse) - label += " (" + __("Inverse") + ")"; - -/* if (item.param) - label = "" + label + - "" + item.param[0]; */ - - return label; - }, - getIconClass: function (item, opened) { - return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "invisible"; - }, - getLabelClass: function (item, opened) { - var enabled = this.model.store.getValue(item, 'enabled'); - return (enabled != false) ? "dijitTreeLabel labelFixedLength" : "dijitTreeLabel labelFixedLength Disabled"; - }, - getRowClass: function (item, opened) { - return (!item.error || item.error == '') ? "dijitTreeRow" : - "dijitTreeRow Error"; - }, +/* global dijit,lib */ +define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], function (declare, domConstruct) { + + return declare("fox.PrefFilterTree", lib.CheckBoxTree, { + _createTreeNode: function(args) { + const tnode = this.inherited(arguments); + + const enabled = this.model.store.getValue(args.item, 'enabled'); + let param = this.model.store.getValue(args.item, 'param'); + const rules = this.model.store.getValue(args.item, 'rules'); + + if (param) { + param = dojo.doc.createElement('span'); + param.className = (enabled != false) ? 'labelParam' : 'labelParam filterDisabled'; + param.innerHTML = args.item.param[0]; + domConstruct.place(param, tnode.rowNode, 'first'); + } + + if (rules) { + param = dojo.doc.createElement('span'); + param.className = 'filterRules'; + param.innerHTML = rules; + domConstruct.place(param, tnode.rowNode, 'next'); + } + + if (this.model.store.getValue(args.item, 'id') != 'root') { + const img = dojo.doc.createElement('img'); + img.src ='images/filter.png'; + img.className = 'markedPic'; + tnode._filterIconNode = img; + domConstruct.place(tnode._filterIconNode, tnode.labelNode, 'before'); + } + + return tnode; + }, + + getLabel: function(item) { + let label = item.name; + + const feed = this.model.store.getValue(item, 'feed'); + const inverse = this.model.store.getValue(item, 'inverse'); + + if (feed) + label += " (" + __("in") + " " + feed + ")"; + + if (inverse) + label += " (" + __("Inverse") + ")"; + + /* if (item.param) + label = "" + label + + "" + item.param[0]; */ + + return label; + }, + getIconClass: function (item, opened) { + return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "invisible"; + }, + getLabelClass: function (item, opened) { + const enabled = this.model.store.getValue(item, 'enabled'); + return (enabled != false) ? "dijitTreeLabel labelFixedLength" : "dijitTreeLabel labelFixedLength filterDisabled"; + }, + getRowClass: function (item, opened) { + return (!item.error || item.error == '') ? "dijitTreeRow" : + "dijitTreeRow Error"; + }, + checkItemAcceptance: function(target, source, position) { + const item = dijit.getEnclosingWidget(target).item; + + // disable copying items + source.copyState = function() { return false; }; + + return position != 'over'; + }, + onDndDrop: function() { + this.inherited(arguments); + this.tree.model.store.save(); + }, + }); + }); +