@gisce/ooui 0.6.7 → 0.6.8

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.
package/dist/Char.d.ts CHANGED
@@ -12,9 +12,9 @@ declare class Char extends Field {
12
12
  /**
13
13
  * Field size
14
14
  */
15
- _size: number;
16
- get size(): number;
17
- set size(value: number);
15
+ _size: number | undefined;
16
+ get size(): number | undefined;
17
+ set size(value: number | undefined);
18
18
  _isPassword: boolean;
19
19
  get isPassword(): boolean;
20
20
  set isPassword(value: boolean);
package/dist/Char.js CHANGED
@@ -23,10 +23,6 @@ var Char = /** @class */ (function (_super) {
23
23
  * Field place holder
24
24
  */
25
25
  _this._placeholder = "";
26
- /**
27
- * Field size
28
- */
29
- _this._size = 150;
30
26
  _this._isPassword = false;
31
27
  _this._translatable = false;
32
28
  if (props) {
package/dist/Char.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Char.js","sourceRoot":"","sources":["../src/Char.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B;;GAEG;AACH;IAAmB,wBAAK;IAuCtB,cAAY,KAAU;QAAtB,YACE,kBAAM,KAAK,CAAC,SAgBb;QAvDD;;WAEG;QACH,kBAAY,GAAW,EAAE,CAAC;QAQ1B;;WAEG;QACH,WAAK,GAAW,GAAG,CAAC;QAQpB,iBAAW,GAAY,KAAK,CAAC;QAQ7B,mBAAa,GAAY,KAAK,CAAC;QAW7B,IAAI,KAAK,EAAE;YACT,IAAI,KAAK,CAAC,IAAI,EAAE;gBACd,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;aACzB;YAED,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClB,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;aAC5D;YAED,IAAI,KAAK,CAAC,SAAS,EAAE;gBACnB,KAAI,CAAC,YAAY;oBACf,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;aACzE;SACF;;IACH,CAAC;IAnDD,sBAAI,6BAAW;aAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;aACD,UAAgB,KAAa;YAC3B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;;;OAHA;IASD,sBAAI,sBAAI;aAAR;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;aACD,UAAS,KAAa;YACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;;;OAHA;IAMD,sBAAI,4BAAU;aAAd;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;aACD,UAAe,KAAc;YAC3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC;;;OAHA;IAMD,sBAAI,8BAAY;aAAhB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;aACD,UAAiB,KAAc;YAC7B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;;;OAHA;IAuBH,WAAC;AAAD,CAAC,AAzDD,CAAmB,KAAK,GAyDvB;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Char.js","sourceRoot":"","sources":["../src/Char.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B;;GAEG;AACH;IAAmB,wBAAK;IAuCtB,cAAY,KAAU;QAAtB,YACE,kBAAM,KAAK,CAAC,SAgBb;QAvDD;;WAEG;QACH,kBAAY,GAAW,EAAE,CAAC;QAmB1B,iBAAW,GAAY,KAAK,CAAC;QAQ7B,mBAAa,GAAY,KAAK,CAAC;QAW7B,IAAI,KAAK,EAAE;YACT,IAAI,KAAK,CAAC,IAAI,EAAE;gBACd,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;aACzB;YAED,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClB,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;aAC5D;YAED,IAAI,KAAK,CAAC,SAAS,EAAE;gBACnB,KAAI,CAAC,YAAY;oBACf,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;aACzE;SACF;;IACH,CAAC;IAnDD,sBAAI,6BAAW;aAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;aACD,UAAgB,KAAa;YAC3B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;;;OAHA;IASD,sBAAI,sBAAI;aAAR;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;aACD,UAAS,KAAyB;YAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;;;OAHA;IAMD,sBAAI,4BAAU;aAAd;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;aACD,UAAe,KAAc;YAC3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC;;;OAHA;IAMD,sBAAI,8BAAY;aAAhB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;aACD,UAAiB,KAAc;YAC7B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;;;OAHA;IAuBH,WAAC;AAAD,CAAC,AAzDD,CAAmB,KAAK,GAyDvB;AAED,eAAe,IAAI,CAAC"}
@@ -25,15 +25,21 @@ export declare const processGraphData: ({ ooui, values, fields, }: {
25
25
  [key: string]: any;
26
26
  };
27
27
  }) => {
28
- xField: string;
29
- yFields: string[];
30
- seriesFields: (string | undefined)[] | undefined;
31
- isGroup: boolean;
32
- isStack: boolean;
33
28
  data: {
34
29
  [key: string]: any;
35
30
  }[];
31
+ isGroup: boolean;
32
+ isStack: boolean;
36
33
  };
34
+ export declare function getValuesForYField({ entries, fieldName, fields, }: {
35
+ entries: {
36
+ [key: string]: any;
37
+ }[];
38
+ fieldName: string;
39
+ fields: {
40
+ [key: string]: any;
41
+ };
42
+ }): any[];
37
43
  export declare function getValueForOperator({ operator, values, }: {
38
44
  operator: Operator;
39
45
  values: any[];
@@ -48,4 +54,9 @@ export declare function getValuesGroupedByField({ fieldName, fields, values, }:
48
54
  };
49
55
  }): GroupedValues;
50
56
  export declare function getAllObjectsInGroupedValues(grouped: GroupedValues): any[];
51
- export declare function getYAxisFieldname(y: GraphYAxis): string;
57
+ export declare function getYAxisFieldname({ yAxis, fields, }: {
58
+ yAxis: GraphYAxis;
59
+ fields: {
60
+ [key: string]: any;
61
+ };
62
+ }): string;
@@ -1,14 +1,3 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
1
  var __read = (this && this.__read) || function (o, n) {
13
2
  var m = typeof Symbol === "function" && o[Symbol.iterator];
14
3
  if (!m) return o;
@@ -41,112 +30,109 @@ export var labelsForOperator = {
41
30
  };
42
31
  export var processGraphData = function (_a) {
43
32
  var ooui = _a.ooui, values = _a.values, fields = _a.fields;
33
+ // First we group all the results by the x field. This way we will have one or more items in an array for every occurrence of ooui.x.name
34
+ // Result of this will be an object which keys will be unique keys for values of ooui.x.name for each item
44
35
  var valuesGroupedByX = getValuesGroupedByField({
45
36
  fieldName: ooui.x.name,
46
37
  values: values,
47
38
  fields: fields,
48
39
  });
49
- var fieldsData = {
50
- xField: ooui.x.name,
51
- yFields: __spread(new Set(ooui.y.map(function (item) { return getYAxisFieldname(item); }))),
52
- seriesFields: ooui.y.filter(function (yField) { return yField.label; }).length !== 0
53
- ? __spread(new Set(ooui.y.map(function (item) { return item.label; }))) : undefined,
54
- isGroup: false,
55
- isStack: false,
56
- };
57
40
  var data = [];
41
+ // We iterate through the y axis items found in the ooui object
58
42
  ooui.y.forEach(function (yField) {
43
+ // We iterate now for every single key of the grouped results by x
59
44
  Object.keys(valuesGroupedByX).forEach(function (xValue) {
60
- var _a;
61
45
  var xLabel = valuesGroupedByX[xValue].label;
62
46
  var objectsForXValue = valuesGroupedByX[xValue].entries;
63
- if (yField.label) {
47
+ // If the y field hasn't got label defined
48
+ if (!yField.label) {
49
+ // We calculate the final value using the entries of this unique x key
50
+ var valuesForYField = getValuesForYField({
51
+ entries: objectsForXValue,
52
+ fields: fields,
53
+ fieldName: yField.name,
54
+ });
55
+ var finalValue = getValueForOperator({
56
+ values: valuesForYField,
57
+ operator: yField.operator,
58
+ });
59
+ data.push({
60
+ x: xLabel || false,
61
+ value: finalValue,
62
+ type: getYAxisFieldname({
63
+ yAxis: yField,
64
+ fields: fields,
65
+ }),
66
+ stacked: yField.stacked,
67
+ });
68
+ }
69
+ // The field has label
70
+ else {
71
+ // We retrieve an object with unique keys and grouped values for the label
64
72
  var valuesGroupedByYLabel_1 = getValuesGroupedByField({
65
73
  fieldName: yField.label,
66
74
  values: objectsForXValue,
67
75
  fields: fields,
68
76
  });
77
+ // For every key of the grouped results by label
69
78
  Object.keys(valuesGroupedByYLabel_1).forEach(function (yUniqueValue) {
70
- var _a;
71
79
  var entries = valuesGroupedByYLabel_1[yUniqueValue].entries;
72
80
  var label = valuesGroupedByYLabel_1[yUniqueValue].label;
73
- var valuesForYField = entries
74
- .map(function (obj) {
75
- return getValueAndLabelForField({
76
- fieldName: yField.name,
77
- values: obj,
78
- fields: fields,
79
- });
80
- })
81
- .map(function (_a) {
82
- var value = _a.value, label = _a.label;
83
- return label;
81
+ // We calculate the final value using the entries of this unique x key
82
+ var valuesForYField = getValuesForYField({
83
+ entries: entries,
84
+ fields: fields,
85
+ fieldName: yField.name,
84
86
  });
85
87
  var finalValue = getValueForOperator({
86
88
  values: valuesForYField,
87
89
  operator: yField.operator,
88
90
  });
89
- data.push((_a = {},
90
- _a[ooui.x.name] = xLabel || false,
91
- _a[yField.name + "_" + labelsForOperator[yField.operator]] = finalValue,
92
- _a[yField.label] = label,
93
- _a));
94
- });
95
- }
96
- else {
97
- var valuesForYField = objectsForXValue
98
- .map(function (obj) {
99
- return getValueAndLabelForField({
100
- fieldName: yField.name,
101
- values: obj,
102
- fields: fields,
91
+ data.push({
92
+ x: xLabel || false,
93
+ value: finalValue,
94
+ type: label,
95
+ stacked: yField.stacked,
103
96
  });
104
- })
105
- .map(function (_a) {
106
- var value = _a.value, label = _a.label;
107
- return label;
108
- });
109
- var finalValue = getValueForOperator({
110
- values: valuesForYField,
111
- operator: yField.operator,
112
97
  });
113
- data.push((_a = {},
114
- _a[ooui.x.name] = xLabel || false,
115
- _a[getYAxisFieldname(yField)] = finalValue,
116
- _a));
117
98
  }
118
99
  });
119
100
  });
120
- // If we don't have y axis fields with label specified, we need to,
121
- // merge the results with the same name key
122
- if (ooui.y.filter(function (yField) { return yField.label; }).length === 0) {
123
- var uniqueXkeys = __spread(new Set(data.map(function (item) { return item[ooui.x.name]; })));
124
- var processedData = uniqueXkeys.map(function (key) {
125
- var mergedRecord = {};
126
- var valuesForKey = data.filter(function (item) { return item[ooui.x.name] === key; });
127
- valuesForKey.forEach(function (item) {
128
- Object.assign(mergedRecord, item);
129
- });
130
- return mergedRecord;
131
- });
132
- return __assign({ data: processedData }, fieldsData);
133
- }
134
- var yFieldsWithLabel = ooui.y.filter(function (yField) { return yField.label; }).length;
135
- var yFieldsWithStacked = ooui.y.filter(function (yField) { return yField.stacked; }).length;
136
- if (yFieldsWithLabel > 0 && yFieldsWithStacked === 0) {
137
- fieldsData.isGroup = true;
138
- fieldsData.isStack = false;
139
- }
140
- else if (yFieldsWithLabel === 1 && yFieldsWithStacked === 1) {
141
- fieldsData.isGroup = false;
142
- fieldsData.isStack = true;
143
- }
144
- else if (yFieldsWithLabel > 1 && yFieldsWithStacked > 1) {
145
- fieldsData.isGroup = true;
146
- fieldsData.isStack = true;
147
- }
148
- return __assign({ data: data }, fieldsData);
101
+ // Check if we have to flag isGroup
102
+ var isGroup = ooui.y.some(function (y) { return y.label !== undefined; });
103
+ // Check if we have to flag
104
+ var isStack = data.some(function (entry) { return entry.stacked !== undefined; });
105
+ // We sort the data by x
106
+ var sortedData = data.sort(function (a, b) {
107
+ if (a["x"] < b["x"]) {
108
+ return -1;
109
+ }
110
+ if (a["x"] > b["x"]) {
111
+ return 1;
112
+ }
113
+ return 0;
114
+ });
115
+ return {
116
+ data: sortedData,
117
+ isGroup: isGroup,
118
+ isStack: isStack,
119
+ };
149
120
  };
121
+ export function getValuesForYField(_a) {
122
+ var entries = _a.entries, fieldName = _a.fieldName, fields = _a.fields;
123
+ return entries
124
+ .map(function (obj) {
125
+ return getValueAndLabelForField({
126
+ fieldName: fieldName,
127
+ values: obj,
128
+ fields: fields,
129
+ });
130
+ })
131
+ .map(function (_a) {
132
+ var value = _a.value, label = _a.label;
133
+ return label;
134
+ });
135
+ }
150
136
  export function getValueForOperator(_a) {
151
137
  var operator = _a.operator, values = _a.values;
152
138
  switch (operator) {
@@ -208,10 +194,12 @@ export function getAllObjectsInGroupedValues(grouped) {
208
194
  });
209
195
  return totalObjects;
210
196
  }
211
- export function getYAxisFieldname(y) {
212
- if (y.operator) {
213
- return y.name + "_" + labelsForOperator[y.operator];
197
+ export function getYAxisFieldname(_a) {
198
+ var yAxis = _a.yAxis, fields = _a.fields;
199
+ var fieldProps = fields[yAxis.name];
200
+ if (fieldProps && fieldProps.string) {
201
+ return fieldProps.string + " (" + labelsForOperator[yAxis.operator] + ")";
214
202
  }
215
- return y.name;
203
+ return yAxis.name + "_" + labelsForOperator[yAxis.operator];
216
204
  }
217
205
  //# sourceMappingURL=graphProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphProcessor.js","sourceRoot":"","sources":["../../../src/Graph/processor/graphProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphProcessor.js","sourceRoot":"","sources":["../../../src/Graph/processor/graphProcessor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gisce/ooui",
3
- "version": "0.6.7",
3
+ "version": "0.6.8",
4
4
  "dependencies": {},
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/Char.ts CHANGED
@@ -18,11 +18,11 @@ class Char extends Field {
18
18
  /**
19
19
  * Field size
20
20
  */
21
- _size: number = 150;
22
- get size(): number {
21
+ _size: number | undefined;
22
+ get size(): number | undefined {
23
23
  return this._size;
24
24
  }
25
- set size(value: number) {
25
+ set size(value: number | undefined) {
26
26
  this._size = value;
27
27
  }
28
28
 
@@ -24,124 +24,129 @@ export const processGraphData = ({
24
24
  values: { [key: string]: any }[];
25
25
  fields: { [key: string]: any };
26
26
  }) => {
27
+ // First we group all the results by the x field. This way we will have one or more items in an array for every occurrence of ooui.x.name
28
+ // Result of this will be an object which keys will be unique keys for values of ooui.x.name for each item
27
29
  const valuesGroupedByX = getValuesGroupedByField({
28
30
  fieldName: ooui.x.name,
29
31
  values,
30
32
  fields,
31
33
  });
32
34
 
33
- let fieldsData = {
34
- xField: ooui.x.name,
35
- yFields: [...new Set(ooui.y.map((item) => getYAxisFieldname(item)))],
36
- seriesFields:
37
- ooui.y.filter((yField) => yField.label).length !== 0
38
- ? [...new Set(ooui.y.map((item) => item.label))]
39
- : undefined,
40
- isGroup: false,
41
- isStack: false,
42
- };
43
-
44
35
  const data: { [key: string]: any }[] = [];
45
36
 
37
+ // We iterate through the y axis items found in the ooui object
46
38
  ooui.y.forEach((yField) => {
39
+ // We iterate now for every single key of the grouped results by x
47
40
  Object.keys(valuesGroupedByX).forEach((xValue) => {
48
41
  const xLabel = valuesGroupedByX[xValue].label;
49
42
  const objectsForXValue = valuesGroupedByX[xValue].entries;
50
43
 
51
- if (yField.label) {
44
+ // If the y field hasn't got label defined
45
+ if (!yField.label) {
46
+ // We calculate the final value using the entries of this unique x key
47
+ const valuesForYField = getValuesForYField({
48
+ entries: objectsForXValue,
49
+ fields,
50
+ fieldName: yField.name,
51
+ });
52
+
53
+ const finalValue = getValueForOperator({
54
+ values: valuesForYField,
55
+ operator: yField.operator,
56
+ });
57
+
58
+ data.push({
59
+ x: xLabel || false,
60
+ value: finalValue,
61
+ type: getYAxisFieldname({
62
+ yAxis: yField,
63
+ fields,
64
+ }),
65
+ stacked: yField.stacked,
66
+ });
67
+ }
68
+ // The field has label
69
+ else {
70
+ // We retrieve an object with unique keys and grouped values for the label
52
71
  const valuesGroupedByYLabel = getValuesGroupedByField({
53
72
  fieldName: yField.label,
54
73
  values: objectsForXValue,
55
74
  fields,
56
75
  });
57
76
 
77
+ // For every key of the grouped results by label
58
78
  Object.keys(valuesGroupedByYLabel).forEach((yUniqueValue) => {
59
79
  const entries = valuesGroupedByYLabel[yUniqueValue].entries;
60
80
  const label = valuesGroupedByYLabel[yUniqueValue].label;
61
- const valuesForYField = entries
62
- .map((obj) => {
63
- return getValueAndLabelForField({
64
- fieldName: yField.name,
65
- values: obj,
66
- fields: fields,
67
- });
68
- })
69
- .map(({ value, label }) => {
70
- return label;
71
- });
81
+
82
+ // We calculate the final value using the entries of this unique x key
83
+ const valuesForYField = getValuesForYField({
84
+ entries,
85
+ fields,
86
+ fieldName: yField.name,
87
+ });
88
+
72
89
  const finalValue = getValueForOperator({
73
90
  values: valuesForYField,
74
91
  operator: yField.operator,
75
92
  });
76
93
  data.push({
77
- [ooui.x.name]: xLabel || false,
78
- [`${yField.name}_${
79
- labelsForOperator[yField.operator!]
80
- }`]: finalValue,
81
- [yField.label!]: label,
94
+ x: xLabel || false,
95
+ value: finalValue,
96
+ type: label,
97
+ stacked: yField.stacked,
82
98
  });
83
99
  });
84
- } else {
85
- const valuesForYField = objectsForXValue
86
- .map((obj) => {
87
- return getValueAndLabelForField({
88
- fieldName: yField.name,
89
- values: obj,
90
- fields: fields,
91
- });
92
- })
93
- .map(({ value, label }) => {
94
- return label;
95
- });
96
-
97
- const finalValue = getValueForOperator({
98
- values: valuesForYField,
99
- operator: yField.operator,
100
- });
101
-
102
- data.push({
103
- [ooui.x.name]: xLabel || false,
104
- [getYAxisFieldname(yField)]: finalValue,
105
- });
106
100
  }
107
101
  });
108
102
  });
109
103
 
110
- // If we don't have y axis fields with label specified, we need to,
111
- // merge the results with the same name key
112
- if (ooui.y.filter((yField) => yField.label).length === 0) {
113
- const uniqueXkeys = [...new Set(data.map((item) => item[ooui.x.name]))];
114
- const processedData = uniqueXkeys.map((key) => {
115
- const mergedRecord = {};
116
- const valuesForKey = data.filter((item) => item[ooui.x.name] === key);
117
- valuesForKey.forEach((item) => {
118
- Object.assign(mergedRecord, item);
119
- });
120
- return mergedRecord as { [key: string]: any };
121
- });
122
- return { data: processedData, ...fieldsData };
123
- }
104
+ // Check if we have to flag isGroup
105
+ const isGroup = ooui.y.some((y) => y.label !== undefined);
124
106
 
125
- const yFieldsWithLabel = ooui.y.filter((yField) => yField.label).length;
126
- const yFieldsWithStacked = ooui.y.filter((yField) => yField.stacked).length;
127
-
128
- if (yFieldsWithLabel > 0 && yFieldsWithStacked === 0) {
129
- fieldsData.isGroup = true;
130
- fieldsData.isStack = false;
131
- } else if (yFieldsWithLabel === 1 && yFieldsWithStacked === 1) {
132
- fieldsData.isGroup = false;
133
- fieldsData.isStack = true;
134
- } else if (yFieldsWithLabel > 1 && yFieldsWithStacked > 1) {
135
- fieldsData.isGroup = true;
136
- fieldsData.isStack = true;
137
- }
107
+ // Check if we have to flag
108
+ const isStack = data.some((entry) => entry.stacked !== undefined);
109
+
110
+ // We sort the data by x
111
+ const sortedData = data.sort((a, b) => {
112
+ if (a["x"] < b["x"]) {
113
+ return -1;
114
+ }
115
+ if (a["x"] > b["x"]) {
116
+ return 1;
117
+ }
118
+ return 0;
119
+ });
138
120
 
139
121
  return {
140
- data,
141
- ...fieldsData,
122
+ data: sortedData,
123
+ isGroup,
124
+ isStack,
142
125
  };
143
126
  };
144
127
 
128
+ export function getValuesForYField({
129
+ entries,
130
+ fieldName,
131
+ fields,
132
+ }: {
133
+ entries: { [key: string]: any }[];
134
+ fieldName: string;
135
+ fields: { [key: string]: any };
136
+ }) {
137
+ return entries
138
+ .map((obj) => {
139
+ return getValueAndLabelForField({
140
+ fieldName: fieldName,
141
+ values: obj,
142
+ fields: fields,
143
+ });
144
+ })
145
+ .map(({ value, label }) => {
146
+ return label;
147
+ });
148
+ }
149
+
145
150
  export function getValueForOperator({
146
151
  operator,
147
152
  values,
@@ -229,9 +234,18 @@ export function getAllObjectsInGroupedValues(grouped: GroupedValues) {
229
234
  return totalObjects;
230
235
  }
231
236
 
232
- export function getYAxisFieldname(y: GraphYAxis) {
233
- if (y.operator) {
234
- return y.name + "_" + labelsForOperator[y.operator];
237
+ export function getYAxisFieldname({
238
+ yAxis,
239
+ fields,
240
+ }: {
241
+ yAxis: GraphYAxis;
242
+ fields: { [key: string]: any };
243
+ }) {
244
+ const fieldProps = fields[yAxis.name];
245
+
246
+ if (fieldProps && fieldProps.string) {
247
+ return `${fieldProps.string} (${labelsForOperator[yAxis.operator]})`;
235
248
  }
236
- return y.name!;
249
+
250
+ return yAxis.name + "_" + labelsForOperator[yAxis.operator];
237
251
  }
@@ -103,151 +103,308 @@ describe("in getValuesGroupedByField method", () => {
103
103
 
104
104
  describe("in processGraphData method", () => {
105
105
  it("should do basic test with one y axis", () => {
106
- const parsedGraph = parseGraph(`<?xml version="1.0"?>
106
+ const { data, isGroup, isStack } = getGraphData(
107
+ `<?xml version="1.0"?>
107
108
  <graph type="pie">
108
109
  <field name="llista_preu" axis="x"/>
109
110
  <field name="llista_preu" operator="count" axis="y"/>
110
111
  </graph>
111
- `) as GraphChart;
112
- const model = models.find((m) => m.key === "polissa");
113
- expect(model).toBeDefined();
114
- if (!model) {
115
- throw new Error("Model not found");
116
- }
117
- const values = model.data;
118
- const fields = model.fields;
112
+ `,
113
+ "polissa"
114
+ );
119
115
 
120
- const { data } = processGraphData({
121
- ooui: parsedGraph,
122
- values: values as any,
123
- fields: fields as any,
124
- });
116
+ expect(isGroup).toBe(false);
117
+ expect(isStack).toBe(false);
125
118
 
126
119
  expect(data.length).toBe(6);
127
120
  expect(
128
121
  data.find(
129
122
  (d) =>
130
- d.llista_preu === "TARIFAS ELECTRICIDAD (EUR)" &&
131
- d.llista_preu_count === 8
123
+ d.x === "TARIFAS ELECTRICIDAD (EUR)" &&
124
+ d.value === 8 &&
125
+ d.type === "Tarifa Comercialitzadora (count)"
132
126
  )
133
127
  ).toBeTruthy();
134
128
  expect(
135
129
  data.find(
136
- (d) => d.llista_preu === "Adeu (CHF)" && d.llista_preu_count === 4
130
+ (d) =>
131
+ d.x === "Adeu (CHF)" &&
132
+ d.value === 4 &&
133
+ d.type === "Tarifa Comercialitzadora (count)"
137
134
  )
138
135
  ).toBeTruthy();
139
136
  expect(
140
137
  data.find(
141
138
  (d) =>
142
- d.llista_preu === "Hola bipartit (EUR)" && d.llista_preu_count === 5
139
+ d.x === "Hola bipartit (EUR)" &&
140
+ d.value === 5 &&
141
+ d.type === "Tarifa Comercialitzadora (count)"
143
142
  )
144
143
  ).toBeTruthy();
145
144
  expect(
146
145
  data.find(
147
146
  (d) =>
148
- d.llista_preu === "Mucha potencia (EUR)" && d.llista_preu_count === 1
147
+ d.x === "Mucha potencia (EUR)" &&
148
+ d.value === 1 &&
149
+ d.type === "Tarifa Comercialitzadora (count)"
149
150
  )
150
151
  ).toBeTruthy();
151
152
 
152
153
  expect(
153
154
  data.find(
154
- (d) => d.llista_preu === "Hola (EUR)" && d.llista_preu_count === 13
155
+ (d) =>
156
+ d.x === "Hola (EUR)" &&
157
+ d.value === 13 &&
158
+ d.type === "Tarifa Comercialitzadora (count)"
155
159
  )
156
160
  ).toBeTruthy();
157
161
 
158
162
  expect(
159
- data.find((d) => d.llista_preu === false && d.llista_preu_count === 2)
163
+ data.find(
164
+ (d) =>
165
+ d.x === false &&
166
+ d.value === 2 &&
167
+ d.type === "Tarifa Comercialitzadora (count)"
168
+ )
160
169
  ).toBeTruthy();
161
170
 
162
171
  expect(
163
- data.find((d) => d.llista_preu === "random" && d.llista_preu_count === 15)
172
+ data.find(
173
+ (d) =>
174
+ d.x === "random" &&
175
+ d.value === 15 &&
176
+ d.type === "Tarifa Comercialitzadora (count)"
177
+ )
164
178
  ).toBeUndefined();
165
179
 
166
180
  expect(data).toBeTruthy();
167
181
  });
168
- it("should do basic test with two y axis", () => {
169
- const parsedGraph = parseGraph(`<?xml version="1.0"?>
182
+
183
+ it("should do basic test with one y axis with label", () => {
184
+ const { data, isGroup, isStack } = getGraphData(
185
+ `<?xml version="1.0"?>
170
186
  <graph type="bar">
171
187
  <field name="name" axis="x" />
172
- <field name="consum" operator="+" axis="y"/>
173
- <field name="ajust" operator="+" axis="y" />
188
+ <field name="consum" operator="+" label="periode" axis="y"/>
174
189
  </graph>
175
- `) as GraphChart;
176
-
177
- const model = models.find((m) => m.key === "lectura");
178
- expect(model).toBeDefined();
179
- if (!model) {
180
- throw new Error("Model not found");
181
- }
182
- const values = model.data;
183
- const fields = model.fields;
190
+ `,
191
+ "lectura"
192
+ );
184
193
 
185
- const { data, xField, yFields, seriesFields } = processGraphData({
186
- ooui: parsedGraph,
187
- values: values as any,
188
- fields: fields as any,
189
- });
194
+ expect(isGroup).toBe(true);
195
+ expect(isStack).toBe(false);
190
196
 
191
- expect(xField).toBe("name");
192
- expect(yFields!.length).toBe(2);
193
- expect(yFields![0]).toBe("consum_sum");
194
- expect(yFields![1]).toBe("ajust_sum");
195
- expect(seriesFields).toBeUndefined();
196
-
197
- expect(data.length).toBe(12);
198
- expect(data.find((d) => d.name === "2020-09-30")).toBeTruthy();
199
- const obj1 = data.find((d) => d.name === "2020-09-30")!;
200
- expect(obj1.consum_sum).toBe(0);
201
- expect(obj1.ajust_sum).toBe(0);
202
- expect(data.find((d) => d.name === "2020-06-30")).toBeTruthy();
203
- const obj2 = data.find((d) => d.name === "2020-06-30")!;
204
- expect(obj2.consum_sum).toBe(150);
205
- expect(obj2.ajust_sum).toBe(0);
206
- expect(data.find((d) => d.name === "2016-04-04")).toBeTruthy();
207
- const obj3 = data.find((d) => d.name === "2016-04-04")!;
208
- expect(obj3.consum_sum).toBe(15);
209
- expect(obj3.ajust_sum).toBe(15);
197
+ expect(data.length).toBe(15);
198
+ const obj1 = data.find((d) => d.x === "2020-09-30")!;
199
+ expect(obj1).toBeTruthy();
200
+ expect(obj1.value).toBe(0);
201
+ expect(obj1.type).toBe("2.0A (P1)");
202
+ const obj2 = data.filter((d) => d.x === "2020-07-31")!;
203
+ expect(obj2).toBeTruthy();
204
+ expect(obj2.length).toBe(3);
205
+ expect(obj2.map((e) => e.type).toString()).toBe(
206
+ "2.0A (P1),2.0DHA (P1),2.0DHA (P2)"
207
+ );
210
208
  });
211
- it("should do basic test with one y axis with label", () => {
212
- const parsedGraph = parseGraph(`<?xml version="1.0"?>
209
+
210
+ it("should do basic test with one y axis with label and stacked", () => {
211
+ const { data, isGroup, isStack } = getGraphData(
212
+ `<?xml version="1.0"?>
213
213
  <graph type="bar">
214
214
  <field name="name" axis="x" />
215
- <field name="consum" operator="+" label="periode" axis="y"/>
215
+ <field name="consum" operator="+" label="periode" stacked="periode" axis="y"/>
216
216
  </graph>
217
- `) as GraphChart;
217
+ `,
218
+ "lectura"
219
+ );
218
220
 
219
- const model = models.find((m) => m.key === "lectura");
220
- expect(model).toBeDefined();
221
- if (!model) {
222
- throw new Error("Model not found");
223
- }
224
- const values = model.data;
225
- const fields = model.fields;
226
-
227
- const { data, xField, yFields, seriesFields, isGroup } = processGraphData(
228
- {
229
- ooui: parsedGraph,
230
- values: values as any,
231
- fields: fields as any,
232
- }
233
- );
234
-
235
- expect(xField).toBe("name");
236
- expect(yFields!.length).toBe(1);
237
- expect(yFields![0]).toBe("consum_sum");
238
- expect(seriesFields!.length).toBe(1);
239
- expect(seriesFields![0]).toBe("periode");
240
221
  expect(isGroup).toBe(true);
222
+ expect(isStack).toBe(true);
241
223
 
242
224
  expect(data.length).toBe(15);
243
- expect(data.find((d) => d.name === "2020-09-30")).toBeTruthy();
244
- const obj1 = data.find((d) => d.name === "2020-09-30")!;
245
- expect(obj1.consum_sum).toBe(0);
246
- expect(obj1.periode).toBe("2.0A (P1)");
247
- const obj2 = data.filter((d) => d.name === "2020-07-31")!;
225
+ const obj1 = data.find((d) => d.x === "2020-09-30")!;
226
+ expect(obj1).toBeTruthy();
227
+ expect(obj1.value).toBe(0);
228
+ expect(obj1.type).toBe("2.0A (P1)");
229
+ const obj2 = data.filter((d) => d.x === "2020-07-31")!;
230
+ expect(obj2).toBeTruthy();
248
231
  expect(obj2.length).toBe(3);
249
- expect(obj2.map((e) => e.periode).toString()).toBe(
232
+ expect(obj2.map((e) => e.type).toString()).toBe(
250
233
  "2.0A (P1),2.0DHA (P1),2.0DHA (P2)"
251
234
  );
252
235
  });
236
+
237
+ it("should do basic test with two y axis", () => {
238
+ const { data, isGroup, isStack } = getGraphData(
239
+ `<?xml version="1.0"?>
240
+ <graph type="bar">
241
+ <field name="name" axis="x"/>
242
+ <field name="consum" operator="+" axis="y"/>
243
+ <field name="ajust" operator="+" axis="y"/>
244
+ </graph>
245
+ `,
246
+ "lectura"
247
+ );
248
+
249
+ expect(isGroup).toBe(false);
250
+ expect(isStack).toBe(false);
251
+
252
+ expect(data.length).toBe(24);
253
+
254
+ const obj1 = data.find(
255
+ (d) => d.x === "2015-10-31" && d.type == "Consum (sum)"
256
+ );
257
+ expect(obj1!).toBeTruthy();
258
+ expect(obj1!.value).toBe(0);
259
+
260
+ const obj2 = data.find(
261
+ (d) => d.x === "2015-10-31" && d.type == "Ajust (sum)"
262
+ );
263
+ expect(obj2!).toBeTruthy();
264
+ expect(obj2!.value).toBe(15);
265
+
266
+ const obj3 = data.find(
267
+ (d) => d.x === "2020-07-31" && d.type == "Consum (sum)"
268
+ );
269
+ expect(obj3!).toBeTruthy();
270
+ expect(obj3!.value).toBe(400);
271
+
272
+ const obj4 = data.find(
273
+ (d) => d.x === "2020-09-30" && d.type == "Consum (sum)"
274
+ );
275
+ expect(obj4!).toBeTruthy();
276
+ expect(obj4!.value).toBe(0);
277
+ });
278
+
279
+ it("should do basic test with 4 y axis, stacked but without labels", () => {
280
+ const { data, isGroup, isStack } = getGraphData(
281
+ `<?xml version="1.0"?>
282
+ <graph type="bar">
283
+ <field name="name" axis="x"/>
284
+ <field name="consum" operator="+" axis="y" stacked="entrada" />
285
+ <field name="ajust" operator="+" axis="y" stacked="entrada" />
286
+ <field name="generacio" operator="+" axis="y" stacked="sortida" />
287
+ <field name="ajust_exporta" operator="+" axis="y" stacked="sortida" />
288
+ </graph>
289
+ `,
290
+ "lectura"
291
+ );
292
+
293
+ expect(isGroup).toBe(false);
294
+ expect(isStack).toBe(true);
295
+
296
+ expect(data.length).toBe(48);
297
+
298
+ const obj1 = data.find(
299
+ (d) => d.x === "2015-10-31" && d.type == "Consum (sum)"
300
+ );
301
+ expect(obj1!).toBeTruthy();
302
+ expect(obj1!.value).toBe(0);
303
+ expect(obj1!.stacked).toBe("entrada");
304
+
305
+ const obj2 = data.find(
306
+ (d) => d.x === "2015-10-31" && d.type == "Ajust (sum)"
307
+ );
308
+ expect(obj2!).toBeTruthy();
309
+ expect(obj2!.value).toBe(15);
310
+ expect(obj2!.stacked).toBe("entrada");
311
+
312
+ const obj3 = data.find(
313
+ (d) => d.x === "2015-10-31" && d.type == "Generació (sum)"
314
+ );
315
+ expect(obj3!).toBeTruthy();
316
+ expect(obj3!.value).toBe(0);
317
+ expect(obj3!.stacked).toBe("sortida");
318
+
319
+ const obj4 = data.find(
320
+ (d) => d.x === "2015-10-31" && d.type == "Ajust Exporta (sum)"
321
+ );
322
+ expect(obj4!).toBeTruthy();
323
+ expect(obj4!.value).toBe(0);
324
+ expect(obj4!.stacked).toBe("sortida");
325
+ });
326
+
327
+ it("should do basic test with 2 y axis, stacked and label", () => {
328
+ const { data, isGroup, isStack } = getGraphData(
329
+ `<?xml version="1.0"?>
330
+ <graph type="bar">
331
+ <field name="name" axis="x"/>
332
+ <field name="consum" operator="+" label="periode" axis="y" stacked="entrada" />
333
+ <field name="generacio" operator="+" label="periode" axis="y" stacked="sortida" />
334
+ </graph>
335
+ `,
336
+ "lectura"
337
+ );
338
+
339
+ expect(isGroup).toBe(true);
340
+ expect(isStack).toBe(true);
341
+
342
+ expect(data.length).toBe(30);
343
+
344
+ const obj1 = data.find(
345
+ (d) => d.x === "2015-10-31" && d.stacked == "entrada"
346
+ );
347
+ expect(obj1!).toBeTruthy();
348
+ expect(obj1!.value).toBe(0);
349
+ expect(obj1!.type).toBe("2.0A (P1)");
350
+
351
+ const obj2 = data.find(
352
+ (d) => d.x === "2015-10-31" && d.stacked == "sortida"
353
+ );
354
+ expect(obj2!).toBeTruthy();
355
+ expect(obj2!.value).toBe(0);
356
+ expect(obj2!.type).toBe("2.0A (P1)");
357
+ });
358
+
359
+ it("should do basic test with 2 y axis, stacked, 1 label, 1 without label", () => {
360
+ const { data, isGroup, isStack } = getGraphData(
361
+ `<?xml version="1.0"?>
362
+ <graph type="bar">
363
+ <field name="name" axis="x"/>
364
+ <field name="consum" operator="+" label="periode" axis="y" stacked="entrada" />
365
+ <field name="generacio" operator="+" axis="y" stacked="sortida" />
366
+ </graph>
367
+ `,
368
+ "lectura"
369
+ );
370
+
371
+ expect(isGroup).toBe(true);
372
+ expect(isStack).toBe(true);
373
+
374
+ expect(data.length).toBe(27);
375
+
376
+ const obj1 = data.find(
377
+ (d) => d.x === "2015-10-31" && d.stacked == "entrada"
378
+ );
379
+ expect(obj1!).toBeTruthy();
380
+ expect(obj1!.value).toBe(0);
381
+ expect(obj1!.type).toBe("2.0A (P1)");
382
+
383
+ const obj2 = data.find(
384
+ (d) => d.x === "2015-10-31" && d.stacked == "sortida"
385
+ );
386
+ expect(obj2!).toBeTruthy();
387
+ expect(obj2!.value).toBe(0);
388
+ expect(obj2!.type).toBe("Generació (sum)");
389
+ });
253
390
  });
391
+
392
+ function getModelData(model: string) {
393
+ const modelObj = models.find((m) => m.key === model);
394
+ if (!modelObj) {
395
+ throw new Error("Model not found");
396
+ }
397
+ return modelObj;
398
+ }
399
+
400
+ function getGraphData(xml: string, model: string) {
401
+ const parsedGraph = parseGraph(xml) as GraphChart;
402
+
403
+ const { data: values, fields } = getModelData(model);
404
+
405
+ return processGraphData({
406
+ ooui: parsedGraph,
407
+ values: values as any,
408
+ fields: fields as any,
409
+ });
410
+ }