define("dojox/grid/enhanced/plugins/filter/FilterStatusTip", [ "dojo/_base/declare", "dojo/_base/array", "dojo/_base/lang", "dojo/query", "dojo/cache", "dojo/string", "dojo/date/locale", "dijit/_Widget", "dijit/_TemplatedMixin", "dijit/_WidgetsInTemplateMixin", "dijit/TooltipDialog", "dijit/form/Button", "dijit/_base/popup", "dojo/i18n!../../nls/Filter" ], function(declare, array, lang, query, cache, string, dateLocale, _Widget, _TemplatedMixin, _WidgetsInTemplateMixin, TooltipDialog, Button, popup){ var gridCssCls = "", headerCssCls = "", cellCssCls = "", rowCssCls = "", oddRowCssCls = "dojoxGridFStatusTipOddRow", handleHolderCssCls = "dojoxGridFStatusTipHandle", conditionCssCls = "dojoxGridFStatusTipCondition", _removeRuleIconCls = "dojoxGridFStatusTipDelRuleBtnIcon", _statusFooter = ""; var FilterStatusPane = declare("dojox.grid.enhanced.plugins.filter.FilterStatusPane", [_Widget, _TemplatedMixin], { templateString: cache("dojox.grid", "enhanced/templates/FilterStatusPane.html") }); return declare("dojox.grid.enhanced.plugins.filter.FilterStatusTip", null, { // summary: // Create the status tip UI. constructor: function(args){ var plugin = this.plugin = args.plugin; this._statusHeader = ["" ].join(''); this._removedCriterias = []; this._rules = []; this.statusPane = new FilterStatusPane(); this._dlg = new TooltipDialog({ "class": "dijitTooltipBelow dojoxGridFStatusTipDialog", content: this.statusPane, autofocus: false }); this._dlg.connect(this._dlg.domNode, 'onmouseleave', lang.hitch(this, this.closeDialog)); this._dlg.connect(this._dlg.domNode, 'click', lang.hitch(this, this._modifyFilter)); }, destroy: function(){ this._dlg.destroyRecursive(); }, //-----------------Public Functions------------------------ showDialog: function(/* int */pos_x,/* int */pos_y, columnIdx){ this._pos = {x:pos_x,y:pos_y}; popup.close(this._dlg); this._removedCriterias = []; this._rules = []; this._updateStatus(columnIdx); popup.open({ popup: this._dlg, parent: this.plugin.filterBar, onCancel: function(){}, x:pos_x - 12, y:pos_y - 3 }); }, closeDialog: function(){ popup.close(this._dlg); if(this._removedCriterias.length){ this.plugin.filterDefDialog.removeCriteriaBoxes(this._removedCriterias); this._removedCriterias = []; this.plugin.filterDefDialog.onFilter(); } }, //-----------------Private Functions--------------------------- _updateStatus: function(columnIdx){ var res, p = this.plugin, nls = p.nls, sp = this.statusPane, fdg = p.filterDefDialog; if(fdg.getCriteria() === 0){ sp.statusTitle.innerHTML = nls["statusTipTitleNoFilter"]; sp.statusRel.innerHTML = ""; var cell = p.grid.layout.cells[columnIdx]; var colName = cell ? "'" + (cell.name || cell.field) + "'" : nls["anycolumn"]; res = string.substitute(nls["statusTipMsg"], [colName]); }else{ sp.statusTitle.innerHTML = nls["statusTipTitleHasFilter"]; sp.statusRel.innerHTML = fdg._relOpCls == "logicall" ? nls["statusTipRelAll"] : nls["statusTipRelAny"]; this._rules = []; var i = 0, c = fdg.getCriteria(i++); while(c){ c.index = i - 1; this._rules.push(c); c = fdg.getCriteria(i++); } res = this._createStatusDetail(); } sp.statusDetailNode.innerHTML = res; this._addButtonForRules(); }, _createStatusDetail: function(){ return this._statusHeader + array.map(this._rules, function(rule, i){ return this._getCriteriaStr(rule, i); }, this).join('') + _statusFooter; }, _addButtonForRules: function(){ if(this._rules.length > 1){ query("." + handleHolderCssCls, this.statusPane.statusDetailNode).forEach(lang.hitch(this, function(nd, idx){ (new Button({ label: this.plugin.nls["removeRuleButton"], showLabel: false, iconClass: _removeRuleIconCls, onClick: lang.hitch(this, function(e){ e.stopPropagation(); this._removedCriterias.push(this._rules[idx].index); this._rules.splice(idx,1); this.statusPane.statusDetailNode.innerHTML = this._createStatusDetail(); this._addButtonForRules(); }) })).placeAt(nd, "last"); })); } }, _getCriteriaStr: function(/* object */c, /* int */rowIdx){ var res = [""]; return res.join(''); }, _modifyFilter: function(){ this.closeDialog(); var p = this.plugin; p.filterDefDialog.showDialog(p.filterBar.getColumnIdx(this._pos.x)); } }); });
", plugin.nls["statusTipHeaderColumn"], "
", plugin.nls["statusTipHeaderCondition"], "
", c.colTxt, "
", c.condTxt, " ", c.formattedVal, "