98 lines
2.4 KiB
JavaScript
98 lines
2.4 KiB
JavaScript
/* global lib,dijit */
|
|
define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dijit/form/DropDownButton"], function (declare, domConstruct) {
|
|
|
|
return declare("fox.PrefLabelTree", lib.CheckBoxTree, {
|
|
setNameById: function (id, name) {
|
|
const item = this.model.store._itemsByIdentity['LABEL:' + id];
|
|
|
|
if (item)
|
|
this.model.store.setValue(item, 'name', name);
|
|
|
|
},
|
|
_createTreeNode: function(args) {
|
|
const tnode = this.inherited(arguments);
|
|
|
|
const fg_color = this.model.store.getValue(args.item, 'fg_color');
|
|
const bg_color = this.model.store.getValue(args.item, 'bg_color');
|
|
const type = this.model.store.getValue(args.item, 'type');
|
|
const bare_id = this.model.store.getValue(args.item, 'bare_id');
|
|
|
|
if (type == 'label') {
|
|
const span = dojo.doc.createElement('span');
|
|
span.innerHTML = 'α';
|
|
span.className = 'labelColorIndicator';
|
|
span.id = 'LICID-' + bare_id;
|
|
|
|
span.setStyle({
|
|
color: fg_color,
|
|
backgroundColor: bg_color});
|
|
|
|
tnode._labelIconNode = span;
|
|
|
|
domConstruct.place(tnode._labelIconNode, tnode.labelNode, 'before');
|
|
}
|
|
|
|
return tnode;
|
|
},
|
|
getIconClass: function (item, opened) {
|
|
return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "invisible";
|
|
},
|
|
getSelectedLabels: function() {
|
|
const tree = dijit.byId("labelTree");
|
|
const items = tree.model.getCheckedItems();
|
|
const rv = [];
|
|
|
|
items.each(function(item) {
|
|
rv.push(tree.model.store.getValue(item, 'bare_id'));
|
|
});
|
|
|
|
return rv;
|
|
},
|
|
resetColors: function() {
|
|
const labels = this.getSelectedLabels();
|
|
|
|
if (labels.length > 0) {
|
|
if (confirm(__("Reset selected labels to default colors?"))) {
|
|
|
|
const query = {
|
|
op: "pref-labels", method: "colorreset",
|
|
ids: labels.toString()
|
|
};
|
|
|
|
xhrPost("backend.php", query, () => {
|
|
updateLabelList();
|
|
});
|
|
}
|
|
|
|
} else {
|
|
alert(__("No labels are selected."));
|
|
}
|
|
},
|
|
removeSelected: function() {
|
|
const sel_rows = this.getSelectedLabels();
|
|
|
|
if (sel_rows.length > 0) {
|
|
if (confirm(__("Remove selected labels?"))) {
|
|
notify_progress("Removing selected labels...");
|
|
|
|
const query = {
|
|
op: "pref-labels", method: "remove",
|
|
ids: sel_rows.toString()
|
|
};
|
|
|
|
xhrPost("backend.php", query, () => {
|
|
updateLabelList();
|
|
});
|
|
}
|
|
} else {
|
|
alert(__("No labels are selected."));
|
|
}
|
|
|
|
return false;
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
|