UNPKG

11.7 kBJavaScriptView Raw
1/**
2 * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components
3 * @version v18.1.2
4 * @link http://www.ag-grid.com/
5 * @license MIT
6 */
7"use strict";
8var __extends = (this && this.__extends) || (function () {
9 var extendStatics = Object.setPrototypeOf ||
10 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
11 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
12 return function (d, b) {
13 extendStatics(d, b);
14 function __() { this.constructor = d; }
15 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16 };
17})();
18var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22 return c > 3 && r && Object.defineProperty(target, key, r), r;
23};
24var __metadata = (this && this.__metadata) || function (k, v) {
25 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
26};
27Object.defineProperty(exports, "__esModule", { value: true });
28var utils_1 = require("../utils");
29var componentAnnotations_1 = require("../widgets/componentAnnotations");
30var baseFilter_1 = require("./baseFilter");
31var NumberFilter = (function (_super) {
32 __extends(NumberFilter, _super);
33 function NumberFilter() {
34 return _super !== null && _super.apply(this, arguments) || this;
35 }
36 NumberFilter.prototype.modelFromFloatingFilter = function (from) {
37 return {
38 type: this.filter,
39 filter: Number(from),
40 filterTo: this.filterNumberTo,
41 filterType: 'number'
42 };
43 };
44 NumberFilter.prototype.getApplicableFilterTypes = function () {
45 return [baseFilter_1.BaseFilter.EQUALS, baseFilter_1.BaseFilter.NOT_EQUAL, baseFilter_1.BaseFilter.LESS_THAN, baseFilter_1.BaseFilter.LESS_THAN_OR_EQUAL,
46 baseFilter_1.BaseFilter.GREATER_THAN, baseFilter_1.BaseFilter.GREATER_THAN_OR_EQUAL, baseFilter_1.BaseFilter.IN_RANGE];
47 };
48 NumberFilter.prototype.bodyTemplate = function (type) {
49 var translate = this.translate.bind(this);
50 var fieldId = type == baseFilter_1.FilterConditionType.MAIN ? "filterText" : "filterConditionText";
51 var filterNumberToPanelId = type == baseFilter_1.FilterConditionType.MAIN ? "filterNumberToPanel" : "filterNumberToPanelCondition";
52 var fieldToId = type == baseFilter_1.FilterConditionType.MAIN ? "filterToText" : "filterToConditionText";
53 return "<div class=\"ag-filter-body\">\n <div>\n <input class=\"ag-filter-filter\" id=\"" + fieldId + "\" type=\"text\" placeholder=\"" + translate('filterOoo') + "\"/>\n </div>\n <div class=\"ag-filter-number-to\" id=\"" + filterNumberToPanelId + "\">\n <input class=\"ag-filter-filter\" id=\"" + fieldToId + "\" type=\"text\" placeholder=\"" + translate('filterOoo') + "\"/>\n </div>\n </div>";
54 };
55 NumberFilter.prototype.initialiseFilterBodyUi = function (type) {
56 _super.prototype.initialiseFilterBodyUi.call(this, type);
57 if (type === baseFilter_1.FilterConditionType.MAIN) {
58 this.eFilterTextField = this.queryForHtmlInputElement("#filterText");
59 this.addFilterChangedEventListeners(type, this.eFilterTextField, this.eFilterToTextField);
60 }
61 else {
62 this.eFilterTextConditionField = this.queryForHtmlInputElement("#filterConditionText");
63 this.addFilterChangedEventListeners(type, this.eFilterTextConditionField, this.eFilterToConditionText);
64 this.setFilter(this.filterNumberCondition, baseFilter_1.FilterConditionType.CONDITION);
65 this.setFilterTo(this.filterNumberConditionTo, baseFilter_1.FilterConditionType.CONDITION);
66 this.setFilterType(this.filterCondition, baseFilter_1.FilterConditionType.CONDITION);
67 }
68 };
69 NumberFilter.prototype.addFilterChangedEventListeners = function (type, filterElement, filterToElement) {
70 var _this = this;
71 var debounceMs = this.getDebounceMs(this.filterParams);
72 var toDebounce = utils_1.Utils.debounce(function () { return _this.onTextFieldsChanged(type, filterElement, filterToElement); }, debounceMs);
73 this.addDestroyableEventListener(filterElement, "input", toDebounce);
74 this.addDestroyableEventListener(filterToElement, "input", toDebounce);
75 };
76 NumberFilter.prototype.afterGuiAttached = function () {
77 this.eFilterTextField.focus();
78 };
79 NumberFilter.prototype.comparator = function () {
80 return function (left, right) {
81 if (left === right) {
82 return 0;
83 }
84 if (left < right) {
85 return 1;
86 }
87 if (left > right) {
88 return -1;
89 }
90 };
91 };
92 NumberFilter.prototype.onTextFieldsChanged = function (type, filterElement, filterToElement) {
93 var newFilter = this.stringToFloat(filterElement.value);
94 var newFilterTo = this.stringToFloat(filterToElement.value);
95 if (type === baseFilter_1.FilterConditionType.MAIN) {
96 if (this.filterNumber !== newFilter || this.filterNumberTo !== newFilterTo) {
97 this.filterNumber = newFilter;
98 this.filterNumberTo = newFilterTo;
99 this.onFilterChanged();
100 }
101 }
102 else {
103 if (this.filterNumberCondition !== newFilter || this.filterNumberConditionTo !== newFilterTo) {
104 this.filterNumberCondition = newFilter;
105 this.filterNumberConditionTo = newFilterTo;
106 this.onFilterChanged();
107 }
108 }
109 };
110 NumberFilter.prototype.filterValues = function (type) {
111 if (type === baseFilter_1.FilterConditionType.MAIN) {
112 return this.filter !== baseFilter_1.BaseFilter.IN_RANGE ?
113 this.asNumber(this.filterNumber) :
114 [this.asNumber(this.filterNumber), this.asNumber(this.filterNumberTo)];
115 }
116 return this.filterCondition !== baseFilter_1.BaseFilter.IN_RANGE ?
117 this.asNumber(this.filterNumberCondition) :
118 [this.asNumber(this.filterNumberCondition), this.asNumber(this.filterNumberConditionTo)];
119 };
120 NumberFilter.prototype.asNumber = function (value) {
121 return utils_1.Utils.isNumeric(value) ? value : null;
122 };
123 NumberFilter.prototype.stringToFloat = function (value) {
124 var filterText = utils_1.Utils.makeNull(value);
125 if (filterText && filterText.trim() === '') {
126 filterText = null;
127 }
128 var newFilter;
129 if (filterText !== null && filterText !== undefined) {
130 newFilter = parseFloat(filterText);
131 }
132 else {
133 newFilter = null;
134 }
135 return newFilter;
136 };
137 NumberFilter.prototype.setFilter = function (filter, type) {
138 filter = utils_1.Utils.makeNull(filter);
139 if (filter !== null && !(typeof filter === 'number')) {
140 filter = parseFloat(filter);
141 }
142 if (type === baseFilter_1.FilterConditionType.MAIN) {
143 this.filterNumber = filter;
144 if (!this.eFilterTextField)
145 return;
146 this.eFilterTextField.value = filter;
147 }
148 else {
149 this.filterNumberCondition = filter;
150 if (!this.eFilterTextConditionField)
151 return;
152 this.eFilterTextConditionField.value = filter;
153 }
154 };
155 NumberFilter.prototype.setFilterTo = function (filter, type) {
156 filter = utils_1.Utils.makeNull(filter);
157 if (filter !== null && !(typeof filter === 'number')) {
158 filter = parseFloat(filter);
159 }
160 if (type === baseFilter_1.FilterConditionType.MAIN) {
161 this.filterNumberTo = filter;
162 if (!this.eFilterToTextField)
163 return;
164 this.eFilterToTextField.value = filter;
165 }
166 else {
167 this.filterNumberConditionTo = filter;
168 if (!this.eFilterToConditionText)
169 return;
170 this.eFilterToConditionText.value = filter;
171 }
172 };
173 NumberFilter.prototype.getFilter = function (type) {
174 return type === baseFilter_1.FilterConditionType.MAIN ? this.filterNumber : this.filterNumberCondition;
175 };
176 NumberFilter.prototype.serialize = function (type) {
177 var filter = type === baseFilter_1.FilterConditionType.MAIN ? this.filter : this.filterCondition;
178 var filterNumber = type === baseFilter_1.FilterConditionType.MAIN ? this.filterNumber : this.filterNumberCondition;
179 var filterNumberTo = type === baseFilter_1.FilterConditionType.MAIN ? this.filterNumberTo : this.filterNumberConditionTo;
180 return {
181 type: filter ? filter : this.defaultFilter,
182 filter: filterNumber,
183 filterTo: filterNumberTo,
184 filterType: 'number'
185 };
186 };
187 NumberFilter.prototype.parse = function (model, type) {
188 this.setFilterType(model.type, type);
189 this.setFilter(model.filter, type);
190 this.setFilterTo(model.filterTo, type);
191 };
192 NumberFilter.prototype.refreshFilterBodyUi = function (type) {
193 var filterType = type === baseFilter_1.FilterConditionType.MAIN ? this.filter : this.filterCondition;
194 var panel = type === baseFilter_1.FilterConditionType.MAIN ? this.eNumberToPanel : this.eNumberToConditionPanel;
195 if (!panel)
196 return;
197 var visible = filterType === NumberFilter.IN_RANGE;
198 utils_1.Utils.setVisible(panel, visible);
199 };
200 NumberFilter.prototype.resetState = function () {
201 this.setFilterType(this.defaultFilter, baseFilter_1.FilterConditionType.MAIN);
202 this.setFilter(null, baseFilter_1.FilterConditionType.MAIN);
203 this.setFilterTo(null, baseFilter_1.FilterConditionType.MAIN);
204 this.setFilterType(this.defaultFilter, baseFilter_1.FilterConditionType.CONDITION);
205 this.setFilter(null, baseFilter_1.FilterConditionType.CONDITION);
206 this.setFilterTo(null, baseFilter_1.FilterConditionType.CONDITION);
207 };
208 NumberFilter.prototype.setType = function (filterType, type) {
209 this.setFilterType(filterType, type);
210 };
211 NumberFilter.LESS_THAN = 'lessThan'; //3;
212 __decorate([
213 componentAnnotations_1.QuerySelector('#filterNumberToPanel'),
214 __metadata("design:type", HTMLElement)
215 ], NumberFilter.prototype, "eNumberToPanel", void 0);
216 __decorate([
217 componentAnnotations_1.QuerySelector('#filterNumberToPanelCondition'),
218 __metadata("design:type", HTMLElement)
219 ], NumberFilter.prototype, "eNumberToConditionPanel", void 0);
220 __decorate([
221 componentAnnotations_1.QuerySelector('#filterToText'),
222 __metadata("design:type", HTMLInputElement)
223 ], NumberFilter.prototype, "eFilterToTextField", void 0);
224 __decorate([
225 componentAnnotations_1.QuerySelector('#filterToConditionText'),
226 __metadata("design:type", HTMLInputElement)
227 ], NumberFilter.prototype, "eFilterToConditionText", void 0);
228 return NumberFilter;
229}(baseFilter_1.ScalarBaseFilter));
230exports.NumberFilter = NumberFilter;