@wavemaker/app-rn-runtime 11.4.0-next.24563 → 11.4.0-next.24565

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"names":["parseInt","moment","CURRENCY_INFO","DateToStringFormatter","format","input","getTime","replace","_moment","isValid","toString","PrependFormatter","prefix","undefined","AppendFormatter","suffix","NumberToStringFormatter","fractionSize","isNaN","toFixed","toLocaleLowerCase","CurrencyFormatter","data","currencySymbol","fracSize","_currencySymbol","symbol","_val","isNegativeNumber","startsWith","TimeFromNowFormatter","timestamp","fromNow","StringToNumberFormatter","Map"],"sources":["formatters.ts"],"sourcesContent":["import { parseInt } from 'lodash';\nimport moment from 'moment';\nimport { CURRENCY_INFO, Currency } from './constants/currency-constants';\n\nexport interface Formatter {\n format: (input: any, ...params: any) => any;\n}\n\nexport class DateToStringFormatter implements Formatter {\n \n public format(input: Date, format: string): string {\n if (!input) {\n return '';\n }\n if (format === 'timestamp') {\n return input.getTime() + '';\n }\n format = format.replace(/d/g, 'D');\n const _moment = moment(input, true);\n return _moment.isValid() ? _moment.format(format) : input.toString();\n }\n}\n\nexport class PrependFormatter implements Formatter {\n \n public format(input: any, prefix: string): string {\n return (prefix || '') + (input !== null || input != undefined ? input : '');\n }\n}\n\nexport class AppendFormatter implements Formatter {\n \n public format(input: any, suffix: string): string {\n return (input !== null || input != undefined ? input : '') + (suffix || '');\n }\n}\n\nexport class NumberToStringFormatter implements Formatter {\n \n public format(input: number, fractionSize: number): string {\n return isNaN(input) ? '': input.toFixed(fractionSize).toLocaleLowerCase();\n }\n}\n\nexport class CurrencyFormatter implements Formatter {\n \n public format(data: number, currencySymbol: string, fracSize: number) {\n const _currencySymbol = ((((CURRENCY_INFO as any)[currencySymbol]) || {}) as Currency).symbol || currencySymbol || '';\n let _val = new NumberToStringFormatter().format(data, fracSize);\n const isNegativeNumber = _val.startsWith('-');\n if (isNegativeNumber) {\n _val = _val.replace('-','');\n }\n return _val ? isNegativeNumber ? '-'+ _currencySymbol +_val :_currencySymbol + _val : '';\n }\n}\n\nexport class TimeFromNowFormatter implements Formatter {\n public format(timestamp: Date) {\n return timestamp ? moment(timestamp).fromNow() : undefined;\n }\n}\n\nexport class StringToNumberFormatter implements Formatter {\n public format(input: string) {\n return parseInt(input);\n }\n}\n\nexport default new Map<string, Formatter>([\n ['numberToString', new NumberToStringFormatter()],\n ['prefix', new PrependFormatter()],\n ['suffix', new AppendFormatter()],\n ['stringToNumber', new StringToNumberFormatter()],\n ['timeFromNow', new TimeFromNowFormatter()],\n ['toDate', new DateToStringFormatter()],\n ['toCurrency', new CurrencyFormatter()]\n]);"],"mappings":"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"}
1
+ {"version":3,"names":["parseInt","moment","CURRENCY_INFO","DateToStringFormatter","format","input","getTime","replace","_moment","isValid","toString","PrependFormatter","prefix","undefined","AppendFormatter","suffix","NumberToStringFormatter","fractionSize","isNaN","toFixed","toLocaleLowerCase","CurrencyFormatter","data","currencySymbol","fracSize","_currencySymbol","symbol","_val","isNegativeNumber","startsWith","TimeFromNowFormatter","timestamp","fromNow","StringToNumberFormatter","Map"],"sources":["formatters.ts"],"sourcesContent":["import { parseInt } from 'lodash';\nimport moment from 'moment';\nimport { CURRENCY_INFO, Currency } from './constants/currency-constants';\nimport { DateFormatter } from '@wavemaker/variables/src/types/date-formatter';\n\nexport interface Formatter {\n format: (input: any, ...params: any) => any;\n}\n\nexport class DateToStringFormatter implements DateFormatter {\n\n public format(input: Date, format: string): string {\n if (!input) {\n return '';\n }\n if (format === 'timestamp') {\n return input.getTime() + '';\n }\n format = format.replace(/d/g, 'D');\n const _moment = moment(input, true);\n return _moment.isValid() ? _moment.format(format) : input.toString();\n }\n}\n\nexport class PrependFormatter implements Formatter {\n\n public format(input: any, prefix: string): string {\n return (prefix || '') + (input !== null || input != undefined ? input : '');\n }\n}\n\nexport class AppendFormatter implements Formatter {\n\n public format(input: any, suffix: string): string {\n return (input !== null || input != undefined ? input : '') + (suffix || '');\n }\n}\n\nexport class NumberToStringFormatter implements Formatter {\n\n public format(input: number, fractionSize: number): string {\n return isNaN(input) ? '': input.toFixed(fractionSize).toLocaleLowerCase();\n }\n}\n\nexport class CurrencyFormatter implements Formatter {\n\n public format(data: number, currencySymbol: string, fracSize: number) {\n const _currencySymbol = ((((CURRENCY_INFO as any)[currencySymbol]) || {}) as Currency).symbol || currencySymbol || '';\n let _val = new NumberToStringFormatter().format(data, fracSize);\n const isNegativeNumber = _val.startsWith('-');\n if (isNegativeNumber) {\n _val = _val.replace('-','');\n }\n return _val ? isNegativeNumber ? '-'+ _currencySymbol +_val :_currencySymbol + _val : '';\n }\n}\n\nexport class TimeFromNowFormatter implements Formatter {\n public format(timestamp: Date) {\n return timestamp ? moment(timestamp).fromNow() : undefined;\n }\n}\n\nexport class StringToNumberFormatter implements Formatter {\n public format(input: string) {\n return parseInt(input);\n }\n}\n\nexport default new Map<string, Formatter>([\n ['numberToString', new NumberToStringFormatter()],\n ['prefix', new PrependFormatter()],\n ['suffix', new AppendFormatter()],\n ['stringToNumber', new StringToNumberFormatter()],\n ['timeFromNow', new TimeFromNowFormatter()],\n ['toDate', new DateToStringFormatter()],\n ['toCurrency', new CurrencyFormatter()]\n]);\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavemaker/app-rn-runtime",
3
- "version": "11.4.0-next.24563",
3
+ "version": "11.4.0-next.24565",
4
4
  "description": "''",
5
5
  "main": "index",
6
6
  "module": "index",
@@ -49,7 +49,7 @@
49
49
  "@react-navigation/native": "^6.0.16",
50
50
  "@react-navigation/stack": "^6.3.7",
51
51
  "@types/lodash-es": "^4.17.6",
52
- "@wavemaker/variables": "11.4.0-next.24563",
52
+ "@wavemaker/variables": "11.4.0-next.24565",
53
53
  "axios": "^1.4.0",
54
54
  "color": "4.2.3",
55
55
  "cross-env": "^5.2.0",
@@ -127,7 +127,7 @@
127
127
  "typescript": "^4.9.3",
128
128
  "victory-native": "^36.6.11",
129
129
  "yargs": "^16.2.0",
130
- "@wavemaker/variables": "11.4.0-next.24563"
130
+ "@wavemaker/variables": "11.4.0-next.24565"
131
131
  },
132
132
  "jest": {
133
133
  "preset": "react-native",
@@ -5,6 +5,8 @@ import { isEqual, isUndefined, isFunction, forEach, isEmpty } from 'lodash';
5
5
  import { LiveVariable as _LiveVariable } from '@wavemaker/variables/src/model/variable/live-variable';
6
6
  import httpService from '@wavemaker/app-rn-runtime/variables/http.service';
7
7
  import injector from '@wavemaker/app-rn-runtime/core/injector';
8
+ import { deepCopy } from '@wavemaker/app-rn-runtime/core/utils';
9
+ import Formatters from '@wavemaker/app-rn-runtime/core/formatters';
8
10
  var _LiveVariableEvents;
9
11
  (function (_LiveVariableEvents) {
10
12
  _LiveVariableEvents["BEFORE_INVOKE"] = "beforeInvoke";
@@ -42,7 +44,7 @@ export class LiveVariable extends _LiveVariable {
42
44
  return config.onCanUpdate && config.onCanUpdate(args.variable, args.data, args.options);
43
45
  },
44
46
  onBeforeUpdate: (context, args) => {
45
- return config.onBeforeUpdate && config.onBeforeUpdate(args.variable, args.data, args.options);
47
+ return config.onBeforeUpdate && config.onBeforeUpdate(args.variable, args.dataFilter || args.inputData, args.options);
46
48
  },
47
49
  onResult: (context, args) => {
48
50
  return config.onResult && config.onResult(args.variable, args.data, args.options);
@@ -56,6 +58,14 @@ export class LiveVariable extends _LiveVariable {
56
58
  _defineProperty(this, "params", {});
57
59
  _defineProperty(this, "filters", {});
58
60
  _defineProperty(this, "appConfig", injector.get('APP_CONFIG'));
61
+ this.dateFormatter = Formatters.get('toDate');
62
+ this.init();
63
+ }
64
+ setFilterExpValue(filter) {
65
+ var _this$filterExpressio;
66
+ (_this$filterExpressio = this.filterExpressions) === null || _this$filterExpressio === void 0 ? void 0 : _this$filterExpressio.rules.forEach(r => {
67
+ r.value = filter[r.target];
68
+ });
59
69
  }
60
70
  invokeOnParamChange() {
61
71
  const last = this.params;
@@ -64,10 +74,7 @@ export class LiveVariable extends _LiveVariable {
64
74
  const lastFilter = this.filters;
65
75
  const latestFilter = this.config.filterProvider && this.config.filterProvider();
66
76
  if (!isEqual(lastFilter, latestFilter)) {
67
- var _this$filterExpressio;
68
- (_this$filterExpressio = this.filterExpressions) === null || _this$filterExpressio === void 0 ? void 0 : _this$filterExpressio.rules.forEach(r => {
69
- r.value = latestFilter[r.target];
70
- });
77
+ this.setFilterExpValue(latestFilter);
71
78
  if (this.autoUpdate && !isEmpty(latestFilter) && isFunction(this.update)) {
72
79
  this.filters = latestFilter;
73
80
  this.invoke();
@@ -92,5 +99,15 @@ export class LiveVariable extends _LiveVariable {
92
99
  }
93
100
  return Promise.resolve(this);
94
101
  }
102
+ listRecords(options, onSuccess, onError) {
103
+ this.filters = this.config.filterProvider && this.config.filterProvider();
104
+ if (options) {
105
+ this.filters = deepCopy({}, this.filters, options.filterFields ? options.filterFields : options);
106
+ }
107
+ options = options || {};
108
+ options.filterFields = this.filters;
109
+ this.setFilterExpValue(this.filters);
110
+ return super.listRecords(options, onSuccess, onError);
111
+ }
95
112
  }
96
113
  //# sourceMappingURL=live-variable.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isEqual","isUndefined","isFunction","forEach","isEmpty","LiveVariable","_LiveVariable","httpService","injector","_LiveVariableEvents","constructor","config","variableConfig","name","dataSet","paramProvider","inputFields","filterExpressions","filterFields","isList","maxResults","_context","operation","type","autoUpdate","liveSource","orderBy","category","properties","propertiesMap","tableName","tableType","relatedTables","httpClientService","onSuccess","context","args","variable","data","options","onError","onCanUpdate","onBeforeUpdate","onResult","onBeforeDatasetReady","get","invokeOnParamChange","last","params","latest","lastFilter","filters","latestFilter","filterProvider","rules","r","value","target","update","invoke","val","key","Promise","resolve"],"sources":["live-variable.ts"],"sourcesContent":["import { VariableConfig, VariableEvents } from './base-variable';\nimport { isEqual, isUndefined, isFunction, forEach, isEmpty } from 'lodash';\nimport AppConfig from '@wavemaker/app-rn-runtime/core/AppConfig';\nimport { LiveVariable as _LiveVariable } from '@wavemaker/variables/src/model/variable/live-variable';\nimport httpService from '@wavemaker/app-rn-runtime/variables/http.service';\nimport injector from '@wavemaker/app-rn-runtime/core/injector';\n\nexport interface LiveVariableConfig extends VariableConfig {\n baseUrl: string;\n maxResults: number;\n _context: any;\n onCanUpdate: any;\n onBeforeUpdate: any;\n onResult: any;\n onBeforeDatasetReady: any;\n inFlightBehavior: string;\n type: string;\n autoUpdate: boolean;\n orderBy: string;\n category: string;\n liveSource: string;\n propertiesMap: any;\n properties: any;\n tableName: string;\n tableType: string;\n relatedTables: any;\n filterExpressions: any;\n filterProvider: any;\n}\n\nenum _LiveVariableEvents {\n BEFORE_INVOKE = 'beforeInvoke'\n}\nexport type LiveVariableEvents = _LiveVariableEvents | VariableEvents;\n\nexport class LiveVariable extends _LiveVariable {\n params: any = {};\n filters: any = {};\n public appConfig = injector.get<AppConfig>('APP_CONFIG');\n\n constructor(public config: LiveVariableConfig) {\n const variableConfig = {\n name: config.name,\n dataSet: config.paramProvider(),\n inputFields: config.paramProvider(),\n filterExpressions: config.filterExpressions,\n filterFields: config.paramProvider(),\n isList: config.isList,\n maxResults: config.maxResults,\n _context: config._context,\n operation: config.operation,\n type: config.type,\n autoUpdate: config.autoUpdate,\n liveSource: config.liveSource,\n orderBy: config.orderBy,\n category: config.category,\n properties: config.properties,\n propertiesMap: config.propertiesMap,\n tableName: config.tableName,\n tableType: config.tableType,\n relatedTables: config.relatedTables,\n httpClientService: httpService,\n onSuccess: (context: any, args: any) => {\n return config.onSuccess && config.onSuccess(args.variable, args.data, args.options);\n },\n onError: (context: any, args: any) => {\n return config.onError && config.onError(args.variable, args.data, args.options);\n },\n onCanUpdate: (context: any, args: any) => {\n return config.onCanUpdate && config.onCanUpdate(args.variable, args.data, args.options);\n },\n onBeforeUpdate: (context: any, args: any) => {\n return config.onBeforeUpdate && config.onBeforeUpdate(args.variable, args.data, args.options);\n },\n onResult: (context: any, args: any) => {\n return config.onResult && config.onResult(args.variable, args.data, args.options);\n },\n onBeforeDatasetReady: (context: any, args: any) => {\n return config.onBeforeDatasetReady && config.onBeforeDatasetReady(args.variable, args.data, args.options);\n }\n }\n super(variableConfig);\n }\n\n invokeOnParamChange() {\n const last = this.params;\n const latest = this.config.paramProvider();\n if (this.config.operation === 'read') {\n const lastFilter = this.filters;\n const latestFilter = this.config.filterProvider && this.config.filterProvider();\n if (!isEqual(lastFilter, latestFilter)) {\n this.filterExpressions?.rules.forEach((r: any) => {\n r.value = latestFilter[r.target];\n });\n if (this.autoUpdate && !isEmpty(latestFilter) && isFunction(this.update)) {\n this.filters = latestFilter;\n this.invoke();\n }\n }\n }\n if (!isEqual(last, latest)) {\n if (this.config.operation === 'read') {\n forEach(latest, (val: any, key: any) => {\n this.filterFields[key] = {\n 'value': val\n };\n });\n } else {\n this.inputFields = latest;\n }\n /* if auto-update set for the variable with read operation only, get its data */\n // @ts-ignore\n if (this.autoUpdate && !isUndefined(latest) && isFunction(this[this.config.operation + 'Record'])) {\n this.invoke();\n }\n }\n return Promise.resolve(this);\n }\n\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["isEqual","isUndefined","isFunction","forEach","isEmpty","LiveVariable","_LiveVariable","httpService","injector","deepCopy","Formatters","_LiveVariableEvents","constructor","config","variableConfig","name","dataSet","paramProvider","inputFields","filterExpressions","filterFields","isList","maxResults","_context","operation","type","autoUpdate","liveSource","orderBy","category","properties","propertiesMap","tableName","tableType","relatedTables","httpClientService","onSuccess","context","args","variable","data","options","onError","onCanUpdate","onBeforeUpdate","dataFilter","inputData","onResult","onBeforeDatasetReady","get","dateFormatter","init","setFilterExpValue","filter","rules","r","value","target","invokeOnParamChange","last","params","latest","lastFilter","filters","latestFilter","filterProvider","update","invoke","val","key","Promise","resolve","listRecords"],"sources":["live-variable.ts"],"sourcesContent":["import { VariableConfig, VariableEvents } from './base-variable';\nimport { isEqual, isUndefined, isFunction, forEach, isEmpty } from 'lodash';\nimport AppConfig from '@wavemaker/app-rn-runtime/core/AppConfig';\nimport { LiveVariable as _LiveVariable } from '@wavemaker/variables/src/model/variable/live-variable';\nimport httpService from '@wavemaker/app-rn-runtime/variables/http.service';\nimport injector from '@wavemaker/app-rn-runtime/core/injector';\nimport { deepCopy } from '@wavemaker/app-rn-runtime/core/utils';\nimport Formatters from '@wavemaker/app-rn-runtime/core/formatters';\n\nexport interface LiveVariableConfig extends VariableConfig {\n baseUrl: string;\n maxResults: number;\n _context: any;\n onCanUpdate: any;\n onBeforeUpdate: any;\n onResult: any;\n onBeforeDatasetReady: any;\n inFlightBehavior: string;\n type: string;\n autoUpdate: boolean;\n orderBy: string;\n category: string;\n liveSource: string;\n propertiesMap: any;\n properties: any;\n tableName: string;\n tableType: string;\n relatedTables: any;\n filterExpressions: any;\n filterProvider: any;\n}\n\nenum _LiveVariableEvents {\n BEFORE_INVOKE = 'beforeInvoke'\n}\nexport type LiveVariableEvents = _LiveVariableEvents | VariableEvents;\n\nexport class LiveVariable extends _LiveVariable {\n params: any = {};\n filters: any = {};\n public appConfig = injector.get<AppConfig>('APP_CONFIG');\n\n constructor(public config: LiveVariableConfig) {\n const variableConfig = {\n name: config.name,\n dataSet: config.paramProvider(),\n inputFields: config.paramProvider(),\n filterExpressions: config.filterExpressions,\n filterFields: config.paramProvider(),\n isList: config.isList,\n maxResults: config.maxResults,\n _context: config._context,\n operation: config.operation,\n type: config.type,\n autoUpdate: config.autoUpdate,\n liveSource: config.liveSource,\n orderBy: config.orderBy,\n category: config.category,\n properties: config.properties,\n propertiesMap: config.propertiesMap,\n tableName: config.tableName,\n tableType: config.tableType,\n relatedTables: config.relatedTables,\n httpClientService: httpService,\n onSuccess: (context: any, args: any) => {\n return config.onSuccess && config.onSuccess(args.variable, args.data, args.options);\n },\n onError: (context: any, args: any) => {\n return config.onError && config.onError(args.variable, args.data, args.options);\n },\n onCanUpdate: (context: any, args: any) => {\n return config.onCanUpdate && config.onCanUpdate(args.variable, args.data, args.options);\n },\n onBeforeUpdate: (context: any, args: any) => {\n return config.onBeforeUpdate && config.onBeforeUpdate(args.variable, args.dataFilter || args.inputData, args.options);\n },\n onResult: (context: any, args: any) => {\n return config.onResult && config.onResult(args.variable, args.data, args.options);\n },\n onBeforeDatasetReady: (context: any, args: any) => {\n return config.onBeforeDatasetReady && config.onBeforeDatasetReady(args.variable, args.data, args.options);\n }\n }\n super(variableConfig);\n this.dateFormatter = Formatters.get('toDate');\n this.init();\n }\n\n setFilterExpValue(filter: any) {\n this.filterExpressions?.rules.forEach((r: any) => {\n r.value = filter[r.target];\n });\n }\n\n invokeOnParamChange() {\n const last = this.params;\n const latest = this.config.paramProvider();\n if (this.config.operation === 'read') {\n const lastFilter = this.filters;\n const latestFilter = this.config.filterProvider && this.config.filterProvider();\n if (!isEqual(lastFilter, latestFilter)) {\n this.setFilterExpValue(latestFilter);\n if (this.autoUpdate && !isEmpty(latestFilter) && isFunction(this.update)) {\n this.filters = latestFilter;\n this.invoke();\n }\n }\n }\n if (!isEqual(last, latest)) {\n if (this.config.operation === 'read') {\n forEach(latest, (val: any, key: any) => {\n this.filterFields[key] = {\n 'value': val\n };\n });\n } else {\n this.inputFields = latest;\n }\n /* if auto-update set for the variable with read operation only, get its data */\n // @ts-ignore\n if (this.autoUpdate && !isUndefined(latest) && isFunction(this[this.config.operation + 'Record'])) {\n this.invoke();\n }\n }\n return Promise.resolve(this);\n }\n\n listRecords(options? : any, onSuccess?: Function, onError?: Function) {\n this.filters = this.config.filterProvider && this.config.filterProvider();\n if (options) {\n this.filters = deepCopy({} as any, this.filters, options.filterFields ? options.filterFields : options);\n }\n options = options || {};\n options.filterFields = this.filters;\n this.setFilterExpValue(this.filters);\n return super.listRecords(options, onSuccess, onError);\n }\n\n}\n"],"mappings":"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"}