}
];
- var _minimal_operator_store = new dojo.data.ItemFileReadStore(
- {
- "data": {
- "identifier": "name",
- "items": _minimal_operators
- }
- }
- );
+ var _operator_store_factory = {};
- var _most_operator_store = new dojo.data.ItemFileReadStore(
- {
- "data": {
- "identifier": "name",
- "items": _minimal_operators.concat(_strict_operators)
- }
- }
- );
-
- var _all_operator_store = new dojo.data.ItemFileReadStore(
- {
- "data": {
- "identifier": "name",
- "items": _minimal_operators.
- concat(_strict_operators).
- concat(_fuzzy_operators)
- }
- }
- );
-
- var _operator_stores = {};
["bool", "link", "org_unit"].forEach(
function(type) {
- _operator_stores[type] = _minimal_operator_store;
+ _operator_store_factory[type] = function() {
+ return new dojo.data.ItemFileReadStore(
+ {
+ "data": {
+ "identifier": "name",
+ "items": _minimal_operators
+ }
+ }
+ );
+ };
}
);
["float", "id", "int", "interval", "money", "number", "timestamp"].forEach(
function(type) {
- _operator_stores[type] = _most_operator_store;
+ _operator_store_factory[type] = function() {
+ return new dojo.data.ItemFileReadStore(
+ {
+ "data": {
+ "identifier": "name",
+ "items": _minimal_operators.concat(
+ _strict_operators
+ )
+ }
+ }
+ );
+ };
}
);
- _operator_stores.text = _all_operator_store;
+ _operator_store_factory.text = function() {
+ return new dojo.data.ItemFileReadStore(
+ {
+ "data": {
+ "identifier": "name",
+ "items": _minimal_operators.concat(
+ _strict_operators
+ ).concat(
+ _fuzzy_operators
+ )
+ }
+ }
+ );
+ };
/* This is not the dijit per se. Search further in this file for
* "dojo.declare" for the beginning of the dijit. */
if (typeof(value) != "undefined" &&
typeof(field) != "undefined") {
-
if (!first_pass[field])
first_pass[field] = [];
first_pass[field].push(value);
this._remove_operator_selector = function() {
if (this.operator_selector) {
var old_value = this.operator_selector.attr("value");
+
this.operator_selector.destroy();
dojo.empty(this.operator_slot);
+
return old_value;
}
this._replace_operator_selector = function() {
var old_operator = this._remove_operator_selector();
- var _operator_store = _operator_stores[this.selected_field_type];
- var operator_selector_args = {
- "labelAttr": "label",
- "searchAttr": "label",
- "scrollOnFocus": false,
- "onChange": function(value) {
- self.update_selected_operator(value);
- },
- "store": _operator_store
- };
+ var _operator_store =
+ _operator_store_factory[this.selected_field_type]();
this.operator_selector = new dijit.form.FilteringSelect(
- operator_selector_args,
+ {
+ "labelAttr": "label",
+ "searchAttr": "label",
+ "scrollOnFocus": false,
+ "onChange": function(value) {
+ self.update_selected_operator(value);
+ },
+ "store": _operator_store
+ },
dojo.create("span", {}, this.operator_slot)
);
{
"identity": old_operator,
"onItem": function(item) {
- self.operator_selector.attr("value", old_operator);
+ if (item) { /* sic, necessary */
+ self.operator_selector.attr(
+ "value", old_operator
+ );
+ }
}
}
);
this._clear_value_slot();
- var _operator_store = _operator_stores[this.selected_field_type];
+ var _operator_store = this.operator_selector.store;
_operator_store.fetchItemByIdentity(
{
"identity": this.selected_operator,
"onItem": function(item) {
- self._rebuild_value_widgets_impl(item.param_count);
+ if (item)
+ self._rebuild_value_widgets_impl(item.param_count);
}
}
);
{
"identity": value,
"onItem": function(item) {
- self._update_selected_field_impl(value, item.type);
+ if (item)
+ self._update_selected_field_impl(value, item.type);
}
}
);
if (!values.length) {
return this._null_clause(); /* null/not null */
- } else if (values.length == 1) {
- var clause = {};
- clause[self.selected_operator] = values.pop();
- return clause;
} else {
var clause = {};
- clause[self.selected_operator] = values;
+ var op = this.selected_operator;
+ if (values.length == 1)
+ clause[op] = values.pop();
+ else
+ clause[op] = values;
return clause;
}
} else {