1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | "use strict";
|
8 | var __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 | })();
|
18 | var __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 | };
|
24 | var __metadata = (this && this.__metadata) || function (k, v) {
|
25 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
26 | };
|
27 | Object.defineProperty(exports, "__esModule", { value: true });
|
28 | var utils_1 = require("../utils");
|
29 | var componentAnnotations_1 = require("../widgets/componentAnnotations");
|
30 | var baseFilter_1 = require("./baseFilter");
|
31 | var 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';
|
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));
|
230 | exports.NumberFilter = NumberFilter;
|