dojo.require('openils.widget.AutoFieldWidget');
dojo.require('dijit.form.FilteringSelect');
dojo.require('dijit.form.Button');
+ dojo.require('dijit.form.DropDownButton');
+ dojo.require('dijit.TooltipDialog');
dojo.require('dojo.data.ItemFileReadStore');
dojo.require('openils.Util');
};
this.initialize = function(initializer) {
+ console.log("initializer is " + dojo.toJson(initializer));
this.field_selector.attr("value", initializer.field);
this.operator_selector.attr("value", initializer.operator);
{
"useDiv": null, /* should always be null for subclass dialogs */
"initializers": null,
- "compact": false,
"widgetBuilders": null,
"suppressFilterFields": null,
+ "savedFiltersInterface": null,
"constructor": function(args) {
for(var k in args)
this[k] = args[k];
this.widgetIndex = 0;
this.widgetCache = {};
+ this.compact = Boolean(this.useDiv);
/* Meaningless in a pane, but better here than in
* PCrudFilterDialog so that we don't need to load i18n
this.title = this.title || pcFilterLocaleStrings.DEFAULT_DIALOG_TITLE;
},
+ "_buildSavedFilterControlsIfPerms": function(holder) {
+ (new openils.User()).getPermOrgList(
+ "SAVED_FILTER_DIALOG_FILTERS",
+ dojo.hitch(this, function(id_list) {
+ this._buildSavedFilterControls(id_list, holder);
+ }),
+ true, true
+ );
+ },
+
+ "_buildSavedFilterControls": function(id_list, holder) {
+ if (!id_list || !id_list.length) {
+ console.info("Not showing saved filter controls; no perm");
+ return;
+ }
+
+ var fs_list = (new openils.PermaCrud()).search(
+ "cfdfs", {
+ "owning_lib": id_list,
+ "interface": this.savedFiltersInterface
+ }, {
+ "order_by": [
+ {"class": "cfdfs", "field": "owning_lib"},
+ {"class": "cfdfs", "field": "name"}
+ ],
+ "async": true,
+ "oncomplete": dojo.hitch(this, function(r) {
+ if (r = openils.Util.readResponse(r)) {
+ this._buildSavedFilterLoader(r, holder);
+ }
+ })
+ }
+ );
+
+ this._buildSavedFilterSaver(holder);
+ },
+
+ "_buildSavedFilterLoader": function(fs_list, holder) {
+ var self = this;
+ var load_content = dojo.create(
+ "div", {
+ "innerHTML": pcFilterLocaleStrings.CHOOSE_FILTER_TO_LOAD
+ }
+ );
+
+ var selector = dojo.create(
+ "select", {
+ "multiple": "multiple",
+ "size": 4,
+ "style": {
+ "verticalAlign": "middle", "margin": "0 0.75em"
+ }
+ }, load_content, "last"
+ );
+
+ dojo.forEach(
+ fs_list, function(fs) {
+ dojo.create(
+ "option", {
+ "innerHTML": fs.name(),
+ "value": dojo.toJson([fs.id(),
+ dojo.fromJson(fs.filters())])
+ }, selector
+ );
+ }
+ );
+
+ var applicator = dojo.create(
+ "a", {
+ "href": "javascript:void(0);",
+ "onclick": function() {
+ dojo.filter(
+ selector.options,
+ function(o){return o.selected;}
+ ).map(
+ function(o){return dojo.fromJson(o.value)[1];}
+ ).forEach(
+ function(o){
+ o.forEach(
+ function(p) {
+ self.filter_row_manager.add_row(p);
+ }
+ );
+ }
+ );
+ dijit.popup.close(self.filter_set_loader.dropDown);
+ },
+ "innerHTML": pcFilterLocaleStrings.APPLY
+ }, load_content, "last"
+ );
+
+ this.filter_set_loader = new dijit.form.DropDownButton({
+ "dropDown": new dijit.TooltipDialog({
+ "content": load_content
+ }),
+ "label": pcFilterLocaleStrings.LOAD_FILTERS
+ }, dojo.create("span", {}, holder));
+ },
+
+ "_buildSavedFilterSaver": function(holder) {
+
+ var save = new dijit.TooltipDialog({
+ "content": pcFilterLocaleStrings.NAME_SAVED_FILTER_SET +
+ " <span id='fd-save-hold-input'></span><span id='fd-save-hold-apply'></span>"
+ });
+ new dijit.form.DropDownButton(
+ {
+ "dropDown": save,
+ "label": pcFilterLocaleStrings.SAVE_FILTERS
+ }, dojo.create("button", {}, holder)
+ );
+
+ },
+
"_buildButtons": function() {
var self = this;
}, dojo.create("span", {}, button_holder)
);
}
+
+ if (this.savedFiltersInterface)
+ this._buildSavedFilterControlsIfPerms(button_holder);
},
"_buildFieldStore": function() {