UNPKG

4.07 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var pluralize = require("pluralize");
4var utility_1 = require("./utility");
5function generateFilter(type, options, filterType, domainType) {
6 'use strict';
7 var tsDomainType = options.tsTypeMap[domainType] ? options.tsTypeMap[domainType] : domainType;
8 var tsConstructorParameters = [];
9 var filterParameters = [];
10 if (type.constructors.length === 1) {
11 for (var _i = 0, _a = type.constructors[0].parameters; _i < _a.length; _i++) {
12 var parameter = _a[_i];
13 var tsParameterType = utility_1.Utility.translateType(parameter.type.name, options);
14 if (tsParameterType) {
15 if (parameter.name === 'fieldName') {
16 tsConstructorParameters.push("private " + parameter.name + ": (i: " + domainType + ") => any");
17 filterParameters.push("getPropertyName(this." + parameter.name + ")");
18 }
19 else {
20 var shouldEncode = tsParameterType === 'string' || tsParameterType === 'any' || tsParameterType === 'Date';
21 var shouldToString = tsParameterType !== 'string';
22 var toStringMethodName = tsParameterType === 'Date' ? 'toISOString' : 'toString';
23 if (parameter.type.isCollection) {
24 tsParameterType += '[]';
25 }
26 var tsConstructorParameter = parameter.defaultValue ?
27 "private " + parameter.name + ": " + tsParameterType + " = " + parameter.defaultValue :
28 "private " + parameter.name + ": " + tsParameterType;
29 tsConstructorParameters.push(tsConstructorParameter);
30 var filterParameter = void 0;
31 if (parameter.type.isCollection) {
32 var mapVariable = 'value';
33 var mapExpression = mapVariable;
34 if (shouldToString) {
35 mapExpression = getToStringExpression(mapVariable, toStringMethodName);
36 }
37 if (shouldEncode) {
38 mapExpression = "encodeURIComponent(" + mapExpression + ")";
39 }
40 var mapCall = mapExpression !== mapVariable ? ".map(" + mapVariable + " => " + mapExpression + ")" : '';
41 filterParameter = "this." + parameter.name + mapCall + ".join(',')";
42 }
43 else {
44 filterParameter = "this." + parameter.name;
45 if (shouldToString) {
46 filterParameter = getToStringExpression(filterParameter, toStringMethodName);
47 }
48 if (shouldEncode) {
49 filterParameter = "encodeURIComponent(" + filterParameter + ")";
50 }
51 }
52 if (parameter.defaultValue === 'null') {
53 filterParameter = "this." + parameter.name + " ? " + filterParameter + " : null";
54 }
55 filterParameters.push(filterParameter);
56 }
57 }
58 }
59 }
60 return ("\nexport class " + pluralize(domainType) + type.name + filterType + " extends " + filterType + "<" + tsDomainType + "> {\n constructor(" + tsConstructorParameters.join(', ') + ") {\n super();\n }\n\n public getFilterName(): string {\n return '" + type.name + "';\n }\n\n public getParameters(): string[] {\n return [" + filterParameters.join(', ') + "];\n }\n\n protected __dummy(): " + tsDomainType + " {\n return null;\n }\n}").trim();
61}
62exports.generateFilter = generateFilter;
63function getToStringExpression(variable, toStringMethodName) {
64 return variable + " === null || " + variable + " === undefined ? " + variable + " ? " + variable + "." + toStringMethodName + "()";
65}
66//# sourceMappingURL=generate-filter.js.map
\No newline at end of file