PrefFilterTree.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. require(["dojo/_base/declare", "dojo/data/ItemFileWriteStore"], function (declare) {
  2. return declare("fox.PrefFilterStore", dojo.data.ItemFileWriteStore, {
  3. _saveEverything: function (saveCompleteCallback, saveFailedCallback,
  4. newFileContentString) {
  5. dojo.xhrPost({
  6. url: "backend.php",
  7. content: {
  8. op: "pref-filters", method: "savefilterorder",
  9. payload: newFileContentString
  10. },
  11. error: saveFailedCallback,
  12. load: saveCompleteCallback
  13. });
  14. },
  15. });
  16. });
  17. require(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], function (declare, domConstruct) {
  18. return declare("fox.PrefFilterTree", lib.CheckBoxTree, {
  19. _createTreeNode: function(args) {
  20. var tnode = this.inherited(arguments);
  21. var enabled = this.model.store.getValue(args.item, 'enabled');
  22. var param = this.model.store.getValue(args.item, 'param');
  23. var rules = this.model.store.getValue(args.item, 'rules');
  24. if (param) {
  25. param = dojo.doc.createElement('span');
  26. param.className = (enabled != false) ? 'labelParam' : 'labelParam filterDisabled';
  27. param.innerHTML = args.item.param[0];
  28. domConstruct.place(param, tnode.rowNode, 'first');
  29. }
  30. if (rules) {
  31. param = dojo.doc.createElement('span');
  32. param.className = 'filterRules';
  33. param.innerHTML = rules;
  34. domConstruct.place(param, tnode.rowNode, 'next');
  35. }
  36. if (this.model.store.getValue(args.item, 'id') != 'root') {
  37. var img = dojo.doc.createElement('img');
  38. img.src ='images/filter.png';
  39. img.className = 'markedPic';
  40. tnode._filterIconNode = img;
  41. domConstruct.place(tnode._filterIconNode, tnode.labelNode, 'before');
  42. }
  43. return tnode;
  44. },
  45. getLabel: function(item) {
  46. var label = item.name;
  47. var feed = this.model.store.getValue(item, 'feed');
  48. var inverse = this.model.store.getValue(item, 'inverse');
  49. if (feed)
  50. label += " (" + __("in") + " " + feed + ")";
  51. if (inverse)
  52. label += " (" + __("Inverse") + ")";
  53. /* if (item.param)
  54. label = "<span class=\"labelFixedLength\">" + label +
  55. "</span>" + item.param[0]; */
  56. return label;
  57. },
  58. getIconClass: function (item, opened) {
  59. return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "invisible";
  60. },
  61. getLabelClass: function (item, opened) {
  62. var enabled = this.model.store.getValue(item, 'enabled');
  63. return (enabled != false) ? "dijitTreeLabel labelFixedLength" : "dijitTreeLabel labelFixedLength filterDisabled";
  64. },
  65. getRowClass: function (item, opened) {
  66. return (!item.error || item.error == '') ? "dijitTreeRow" :
  67. "dijitTreeRow Error";
  68. },
  69. checkItemAcceptance: function(target, source, position) {
  70. var item = dijit.getEnclosingWidget(target).item;
  71. // disable copying items
  72. source.copyState = function() { return false; };
  73. return position != 'over';
  74. },
  75. onDndDrop: function() {
  76. this.inherited(arguments);
  77. this.tree.model.store.save();
  78. },
  79. });
  80. });