diff options
Diffstat (limited to 'includes/js/dijit/form/FilteringSelect.js')
-rw-r--r-- | includes/js/dijit/form/FilteringSelect.js | 241 |
1 files changed, 0 insertions, 241 deletions
diff --git a/includes/js/dijit/form/FilteringSelect.js b/includes/js/dijit/form/FilteringSelect.js deleted file mode 100644 index d1e25c0..0000000 --- a/includes/js/dijit/form/FilteringSelect.js +++ /dev/null @@ -1,241 +0,0 @@ -if(!dojo._hasResource["dijit.form.FilteringSelect"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dijit.form.FilteringSelect"] = true; -dojo.provide("dijit.form.FilteringSelect"); - -dojo.require("dijit.form.ComboBox"); - -dojo.declare( - "dijit.form.FilteringSelect", - [dijit.form.MappedTextBox, dijit.form.ComboBoxMixin], - { - // summary - // An enhanced version of the HTML SELECT tag, populated dynamically - // - // description - // An enhanced version of the HTML SELECT tag, populated dynamically. It works - // very nicely with very large data sets because it can load and page data as needed. - // It also resembles ComboBox, but does not allow values outside of the provided ones. - // - // Similar features: - // - There is a drop down list of possible values. - // - You can only enter a value from the drop down list. (You can't - // enter an arbitrary value.) - // - The value submitted with the form is the hidden value (ex: CA), - // not the displayed value a.k.a. label (ex: California) - // - // Enhancements over plain HTML version: - // - If you type in some text then it will filter down the list of - // possible values in the drop down list. - // - List can be specified either as a static list or via a javascript - // function (that can get the list from a server) - // - // searchAttr: String - // Searches pattern match against this field - // - // labelAttr: String - // Optional. The text that actually appears in the drop down. - // If not specified, the searchAttr text is used instead. - labelAttr: "", - - // labelType: String - // "html" or "text" - labelType: "text", - - _isvalid:true, - - _lastDisplayedValue: "", - - isValid:function(){ - return this._isvalid; - }, - - _callbackSetLabel: function( /*Array*/ result, - /*Object*/ dataObject, - /*Boolean?*/ priorityChange){ - // summary: - // Callback function that dynamically sets the label of the - // ComboBox - - // setValue does a synchronous lookup, - // so it calls _callbackSetLabel directly, - // and so does not pass dataObject - // dataObject==null means do not test the lastQuery, just continue - if(dataObject && dataObject.query[this.searchAttr] != this._lastQuery){ - return; - } - if(!result.length){ - //#3268: do nothing on bad input - //this._setValue("", ""); - //#3285: change CSS to indicate error - if(!this._focused){ this.valueNode.value=""; } - dijit.form.TextBox.superclass.setValue.call(this, undefined, !this._focused); - this._isvalid=false; - this.validate(this._focused); - }else{ - this._setValueFromItem(result[0], priorityChange); - } - }, - - _openResultList: function(/*Object*/ results, /*Object*/ dataObject){ - // #3285: tap into search callback to see if user's query resembles a match - if(dataObject.query[this.searchAttr] != this._lastQuery){ - return; - } - this._isvalid = results.length != 0; // FIXME: should this be greater-than? - this.validate(true); - dijit.form.ComboBoxMixin.prototype._openResultList.apply(this, arguments); - }, - - getValue:function(){ - // don't get the textbox value but rather the previously set hidden value - return this.valueNode.value; - }, - - _getValueField:function(){ - // used for option tag selects - return "value"; - }, - - _setValue:function( /*String*/ value, - /*String*/ displayedValue, - /*Boolean?*/ priorityChange){ - this.valueNode.value = value; - dijit.form.FilteringSelect.superclass.setValue.call(this, value, priorityChange, displayedValue); - this._lastDisplayedValue = displayedValue; - }, - - setValue: function(/*String*/ value, /*Boolean?*/ priorityChange){ - // summary - // Sets the value of the select. - // Also sets the label to the corresponding value by reverse lookup. - - //#3347: fetchItemByIdentity if no keyAttr specified - var self=this; - var handleFetchByIdentity = function(item, priorityChange){ - if(item){ - if(self.store.isItemLoaded(item)){ - self._callbackSetLabel([item], undefined, priorityChange); - }else{ - self.store.loadItem({ - item: item, - onItem: function(result, dataObject){ - self._callbackSetLabel(result, dataObject, priorityChange); - } - }); - } - }else{ - self._isvalid=false; - // prevent errors from Tooltip not being created yet - self.validate(false); - } - } - this.store.fetchItemByIdentity({ - identity: value, - onItem: function(item){ - handleFetchByIdentity(item, priorityChange); - } - }); - }, - - _setValueFromItem: function(/*item*/ item, /*Boolean?*/ priorityChange){ - // summary: - // Set the displayed valued in the input box, based on a - // selected item. - // description: - // Users shouldn't call this function; they should be calling - // setDisplayedValue() instead - this._isvalid=true; - this._setValue( this.store.getIdentity(item), - this.labelFunc(item, this.store), - priorityChange); - }, - - labelFunc: function(/*item*/ item, /*dojo.data.store*/ store){ - // summary: Event handler called when the label changes - // return: the label that the ComboBox should display - return store.getValue(item, this.searchAttr); - }, - - _doSelect: function(/*Event*/ tgt){ - // summary: - // ComboBox's menu callback function - // description: - // FilteringSelect overrides this to set both the visible and - // hidden value from the information stored in the menu - this.item = tgt.item; - this._setValueFromItem(tgt.item, true); - }, - - setDisplayedValue:function(/*String*/ label, /*Boolean?*/ priorityChange){ - // summary: - // Set textbox to display label. Also performs reverse lookup - // to set the hidden value. Used in InlineEditBox - - if(this.store){ - var query = dojo.clone(this.query); // #6196: populate query with user-specifics - this._lastQuery = query[this.searchAttr] = label; - // if the label is not valid, the callback will never set it, - // so the last valid value will get the warning textbox set the - // textbox value now so that the impending warning will make - // sense to the user - this.textbox.value = label; - this._lastDisplayedValue = label; - var _this = this; - this.store.fetch({ - query: query, - queryOptions: { - ignoreCase: this.ignoreCase, - deep: true - }, - onComplete: function(result, dataObject){ - dojo.hitch(_this, "_callbackSetLabel")(result, dataObject, priorityChange); - }, - onError: function(errText){ - console.error('dijit.form.FilteringSelect: ' + errText); - dojo.hitch(_this, "_setValue")(undefined, label, false); - } - }); - } - }, - - _getMenuLabelFromItem:function(/*Item*/ item){ - // internal function to help ComboBoxMenu figure out what to display - if(this.labelAttr){ - return { - html: this.labelType=="html", - label: this.store.getValue(item, this.labelAttr) - }; - }else{ - // because this function is called by ComboBoxMenu, - // this.inherited tries to find the superclass of ComboBoxMenu - return dijit.form.ComboBoxMixin.prototype._getMenuLabelFromItem.apply(this, arguments); - } - }, - - postMixInProperties: function(){ - // FIXME: shouldn't this just be a call to inherited? - dijit.form.ComboBoxMixin.prototype.postMixInProperties.apply(this, arguments); - dijit.form.MappedTextBox.prototype.postMixInProperties.apply(this, arguments); - }, - - postCreate: function(){ - dijit.form.ComboBoxMixin.prototype._postCreate.apply(this, arguments); - dijit.form.MappedTextBox.prototype.postCreate.apply(this, arguments); - }, - - setAttribute: function(/*String*/ attr, /*anything*/ value){ - dijit.form.MappedTextBox.prototype.setAttribute.apply(this, arguments); - dijit.form.ComboBoxMixin.prototype._setAttribute.apply(this, arguments); - }, - - undo: function(){ - this.setDisplayedValue(this._lastDisplayedValue); - }, - - _valueChanged: function(){ - return this.getDisplayedValue()!=this._lastDisplayedValue; - } - } -); - -} |