1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var pluralize = require("pluralize");
|
4 | var utility_1 = require("./utility");
|
5 | function 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 | }
|
62 | exports.generateFilter = generateFilter;
|
63 | function getToStringExpression(variable, toStringMethodName) {
|
64 | return variable + " === null || " + variable + " === undefined ? " + variable + " ? " + variable + "." + toStringMethodName + "()";
|
65 | }
|
66 |
|
\ | No newline at end of file |