pict-section-form 1.0.139 → 1.0.141
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/docs/input_providers/009-chart.md +117 -89
- package/example_applications/complex_table/Complex-Tabular-Application.js +4 -26
- package/package.json +2 -2
- package/source/providers/inputs/Pict-Provider-Input-Chart.js +517 -55
- package/types/source/providers/Pict-Provider-DynamicSolver.d.ts +1 -0
- package/types/source/providers/Pict-Provider-DynamicSolver.d.ts.map +1 -1
- package/types/source/providers/inputs/Pict-Provider-Input-Chart.d.ts +115 -0
- package/types/source/providers/inputs/Pict-Provider-Input-Chart.d.ts.map +1 -0
- package/types/source/providers/layouts/Pict-Layout-Record.d.ts.map +1 -1
- package/types/source/views/support/Pict-View-PSF-SupportBase.d.ts.map +1 -1
|
@@ -64,6 +64,24 @@ Because modern charting libraries rely almost entirely on configuration to
|
|
|
64
64
|
define behavior these days, we can manage the displays this way and only
|
|
65
65
|
rely on the pict-section-form library to broker data back-and-forth.
|
|
66
66
|
|
|
67
|
+
Chaining by default does the following:
|
|
68
|
+
|
|
69
|
+
1. If there is a `Raw` use that as the base
|
|
70
|
+
2. If there as an `Address` use that instead of `Raw` as the base (this lets you override config if you want)
|
|
71
|
+
3. If there is a configuration, merge that with the base
|
|
72
|
+
|
|
73
|
+
So if there is a `ChartLabelsRaw` you can have a set of hard-coded values, and
|
|
74
|
+
then if there is a `ChartLabelsAddress` the input provider will look at that
|
|
75
|
+
address and see if there is an object at that address; if there is it will be
|
|
76
|
+
used instead (as opposed to merging).
|
|
77
|
+
|
|
78
|
+
Lastly, if there is a configuration, it will merge the configuration into
|
|
79
|
+
whatever came from these.
|
|
80
|
+
|
|
81
|
+
You can control this though! It's controlled by configuration.
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
67
85
|
### Purely Raw Data
|
|
68
86
|
|
|
69
87
|
You can hard code any chart right into the form. There are three places
|
|
@@ -76,106 +94,116 @@ for raw form config:
|
|
|
76
94
|
The input provider will use the `ChartJSOptionsCorePrototype` and then
|
|
77
95
|
decorate in the `labels` and `data` objects from their raw entries.
|
|
78
96
|
|
|
79
|
-
Chaining always does the following:
|
|
80
97
|
|
|
81
|
-
|
|
98
|
+
### Purely Raw, Hard-coded Data and Labels
|
|
99
|
+
|
|
100
|
+
This is hard-coded config. It takes whatever is in the "Raw" configuration and
|
|
101
|
+
puts it into the chart config.
|
|
82
102
|
|
|
83
103
|
```json
|
|
84
104
|
{
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
105
|
+
"SimpleGraphExampleRawDataOne":
|
|
106
|
+
{
|
|
107
|
+
Name: "SimpleGraphExampleOne",
|
|
108
|
+
Hash: "SimpleGraphExampleOne",
|
|
109
|
+
|
|
110
|
+
DataType: "Object",
|
|
111
|
+
PictForm:
|
|
112
|
+
{
|
|
113
|
+
Section: "Chart",
|
|
114
|
+
Group: "SimpleChart",
|
|
115
|
+
|
|
116
|
+
Row: 1,
|
|
117
|
+
Width: 3,
|
|
118
|
+
|
|
119
|
+
InputType: "Chart",
|
|
120
|
+
|
|
121
|
+
ChartLabelsRaw: ['Red', 'Green', 'Yellow', 'Grey', 'Blue'],
|
|
122
|
+
|
|
123
|
+
ChartDatasetsRaw: [{
|
|
124
|
+
label: 'My First Dataset',
|
|
125
|
+
data: [11, 16, 7, 3, 14],
|
|
126
|
+
backgroundColor:
|
|
127
|
+
[
|
|
128
|
+
'rgb(255, 99, 132)',
|
|
129
|
+
'rgb(75, 192, 192)',
|
|
130
|
+
'rgb(255, 205, 86)',
|
|
131
|
+
'rgb(201, 203, 207)',
|
|
132
|
+
'rgb(54, 162, 235)'
|
|
133
|
+
]
|
|
134
|
+
}],
|
|
135
|
+
|
|
136
|
+
ChartJSOptionsCorePrototype:
|
|
137
|
+
{
|
|
138
|
+
type: 'polarArea'
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
115
142
|
}
|
|
116
143
|
```
|
|
117
144
|
|
|
118
|
-
###
|
|
145
|
+
### Configurability via Solvers
|
|
146
|
+
|
|
147
|
+
This is configuration based on solvers.
|
|
119
148
|
|
|
120
149
|
```json
|
|
121
150
|
{
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
151
|
+
"SimpleGraphExampleRawDataTwo":
|
|
152
|
+
{
|
|
153
|
+
Name: "SimpleGraphExampleTwo",
|
|
154
|
+
Hash: "SimpleGraphExampleTwo",
|
|
155
|
+
|
|
156
|
+
DataType: "Object",
|
|
157
|
+
PictForm:
|
|
158
|
+
{
|
|
159
|
+
Section: "Chart",
|
|
160
|
+
Group: "SimpleChart",
|
|
161
|
+
|
|
162
|
+
Row: 2,
|
|
163
|
+
Width: 6,
|
|
164
|
+
|
|
165
|
+
InputType: "Chart",
|
|
166
|
+
|
|
167
|
+
ChartType: "bar",
|
|
168
|
+
ChartLabelsSolver: `objectkeystoarray(aggregationhistogrambyobject(FruitGrid, "name", "nutritions.calories"))`,
|
|
169
|
+
ChartDatasetsSolvers:
|
|
170
|
+
[
|
|
171
|
+
{
|
|
172
|
+
Label: 'Calories',
|
|
173
|
+
DataSolver: `objectvaluestoarray(aggregationhistogrambyobject(FruitGrid, "name", "nutritions.calories"))`
|
|
174
|
+
}
|
|
175
|
+
]
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
140
180
|
|
|
141
|
-
|
|
181
|
+
### Configurability via Address
|
|
142
182
|
|
|
143
|
-
|
|
144
|
-
ChartLabelsRaw: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
|
|
183
|
+
This is configuration based on solvers.
|
|
145
184
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
type: 'bar',
|
|
170
|
-
options: {
|
|
171
|
-
scales: {
|
|
172
|
-
y: {
|
|
173
|
-
beginAtZero: true
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"SimpleGraphExampleRawDataTwo":
|
|
188
|
+
{
|
|
189
|
+
Name: "SimpleGraphExampleTwo",
|
|
190
|
+
Hash: "SimpleGraphExampleTwo",
|
|
191
|
+
|
|
192
|
+
DataType: "Object",
|
|
193
|
+
PictForm:
|
|
194
|
+
{
|
|
195
|
+
Section: "Chart",
|
|
196
|
+
Group: "SimpleChart",
|
|
197
|
+
|
|
198
|
+
Row: 2,
|
|
199
|
+
Width: 6,
|
|
200
|
+
|
|
201
|
+
InputType: "Chart",
|
|
202
|
+
|
|
203
|
+
ChartType: "bar",
|
|
204
|
+
ChartLabelsAddress: `AppData.Chart.LabelsArray`,
|
|
205
|
+
ChartDatasetsAddress: `AppData.Chart.Datasets`
|
|
206
|
+
}
|
|
207
|
+
}
|
|
180
208
|
}
|
|
181
|
-
```
|
|
209
|
+
```
|
|
@@ -354,7 +354,7 @@ module.exports.default_configuration.pict_configuration = {
|
|
|
354
354
|
]
|
|
355
355
|
}],
|
|
356
356
|
|
|
357
|
-
|
|
357
|
+
ChartConfigCorePrototypeRaw:
|
|
358
358
|
{
|
|
359
359
|
type: 'polarArea'
|
|
360
360
|
}
|
|
@@ -379,7 +379,7 @@ module.exports.default_configuration.pict_configuration = {
|
|
|
379
379
|
|
|
380
380
|
ChartType: "bar",
|
|
381
381
|
ChartLabelsSolver: `objectkeystoarray(aggregationhistogrambyobject(FruitGrid, "name", "nutritions.calories"))`,
|
|
382
|
-
|
|
382
|
+
ChartDatasetsSolvers:
|
|
383
383
|
[
|
|
384
384
|
{
|
|
385
385
|
Label: 'Calories',
|
|
@@ -407,7 +407,7 @@ module.exports.default_configuration.pict_configuration = {
|
|
|
407
407
|
|
|
408
408
|
ChartType: "bar",
|
|
409
409
|
ChartLabelsSolver: `objectkeystoarray(aggregationhistogrambyobject(FruitGrid, "name", "nutritions.fat"))`,
|
|
410
|
-
|
|
410
|
+
ChartDatasetsSolvers:
|
|
411
411
|
[
|
|
412
412
|
{
|
|
413
413
|
Label: 'Fat',
|
|
@@ -441,30 +441,8 @@ module.exports.default_configuration.pict_configuration = {
|
|
|
441
441
|
Width: 12,
|
|
442
442
|
InputType: "Chart",
|
|
443
443
|
|
|
444
|
-
//ChartType: "Bar",
|
|
445
|
-
|
|
446
|
-
// This allows you to scope data for the chart separately from appdata
|
|
447
|
-
ChartDataScope: "Form",
|
|
448
|
-
|
|
449
|
-
ChartDataAddress: "FruitData.FruityVice",
|
|
450
|
-
|
|
451
|
-
ChartLabelsAddress: "FruitData.FruityVice",
|
|
452
444
|
ChartLabelsRaw: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
|
|
453
445
|
|
|
454
|
-
ChartDatasetsAddress: "FruitData.FruityVice",
|
|
455
|
-
ChartDatasetsConfig:
|
|
456
|
-
{
|
|
457
|
-
Calories:
|
|
458
|
-
{
|
|
459
|
-
ChartLabel: "Calories",
|
|
460
|
-
DataSolver: "Data = {~D:Record.nutritions.calories~}",
|
|
461
|
-
DataTemplate: "{~D:Record.SolverResult~}", // Could also be something from the solver postfix stack
|
|
462
|
-
DataCorePrototype:
|
|
463
|
-
{
|
|
464
|
-
borderWidth: 1
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
},
|
|
468
446
|
ChartDatasetsRaw: [
|
|
469
447
|
{
|
|
470
448
|
label: 'Awesomeness',
|
|
@@ -472,7 +450,7 @@ module.exports.default_configuration.pict_configuration = {
|
|
|
472
450
|
}],
|
|
473
451
|
|
|
474
452
|
// Do anything you want here!!
|
|
475
|
-
|
|
453
|
+
ChartConfigCorePrototypeRaw:
|
|
476
454
|
{
|
|
477
455
|
type: 'bar',
|
|
478
456
|
options: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pict-section-form",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.141",
|
|
4
4
|
"description": "Pict dynamic form sections",
|
|
5
5
|
"main": "source/Pict-Section-Form.js",
|
|
6
6
|
"directories": {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"fable-serviceproviderbase": "^3.0.15",
|
|
43
|
-
"marked": "^
|
|
43
|
+
"marked": "^15.0.12",
|
|
44
44
|
"pict-provider": "^1.0.6",
|
|
45
45
|
"pict-section-tuigrid": "^1.0.27",
|
|
46
46
|
"pict-template": "^1.0.13",
|
|
@@ -20,86 +20,548 @@ class CustomInputHandler extends libPictSectionInputExtension
|
|
|
20
20
|
/** @type {any} */
|
|
21
21
|
this.log;
|
|
22
22
|
|
|
23
|
+
// Manage the the configuration parsing configurations -- these can be overridden in the object or even per-input
|
|
24
|
+
if (!this.options.DefaultCoreParsingConfiguration || !Array.isArray(this.options.DefaultCoreParsingConfiguration))
|
|
25
|
+
{
|
|
26
|
+
this.options.DefaultCoreParsingConfiguration = (
|
|
27
|
+
{
|
|
28
|
+
AddressInObject: '',
|
|
29
|
+
ObjectType: 'object',
|
|
30
|
+
MergeMethod: 'Object',
|
|
31
|
+
Steps: [
|
|
32
|
+
{
|
|
33
|
+
InputProperty: false,
|
|
34
|
+
Method: `Initialize`,
|
|
35
|
+
Merge: false
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
InputProperty: 'PictForm.ChartConfigCorePrototypeRaw',
|
|
39
|
+
Method: `Raw`,
|
|
40
|
+
Merge: true
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
InputProperty: 'PictForm.ChartConfigCorePrototypeAddress',
|
|
44
|
+
Method: `Address`,
|
|
45
|
+
Merge: true
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
InputProperty: `PictForm.ChartConfigCorePrototype`,
|
|
49
|
+
Method: 'SingleSolver',
|
|
50
|
+
Merge: true
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
this.defaultCoreParsingConfiguration = JSON.parse(JSON.stringify(this.options.DefaultCoreParsingConfiguration));
|
|
56
|
+
|
|
57
|
+
if (typeof (this.options.DefaultLabelParsingConfiguration) !== 'object' || !Array.isArray(this.options.DefaultLabelParsingConfiguration.Steps))
|
|
58
|
+
{
|
|
59
|
+
this.options.DefaultLabelParsingConfiguration = (
|
|
60
|
+
{
|
|
61
|
+
AddressInObject: 'data.labels',
|
|
62
|
+
ObjectType: 'array',
|
|
63
|
+
MergeMethod: 'Array',
|
|
64
|
+
Steps: [
|
|
65
|
+
{
|
|
66
|
+
InputProperty: false,
|
|
67
|
+
Method: `Initialize`,
|
|
68
|
+
Merge: false
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
InputProperty: 'PictForm.ChartLabelsRaw',
|
|
72
|
+
Method: `Raw`,
|
|
73
|
+
Merge: false
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
InputProperty: 'PictForm.ChartLabelsAddress',
|
|
77
|
+
Method: `Address`,
|
|
78
|
+
Merge: false
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
InputProperty: `PictForm.ChartLabelsSolver`,
|
|
82
|
+
Method: 'SingleSolver',
|
|
83
|
+
Merge: false
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
this.defaultLabelParsingConfiguration = JSON.parse(JSON.stringify(this.options.DefaultLabelParsingConfiguration));
|
|
89
|
+
|
|
90
|
+
if (typeof (this.options.DefaultDataParsingConfiguration) !== 'object' || !Array.isArray(this.options.DefaultDataParsingConfiguration.Steps))
|
|
91
|
+
{
|
|
92
|
+
this.options.DefaultDataParsingConfiguration = (
|
|
93
|
+
{
|
|
94
|
+
AddressInObject: 'data.datasets',
|
|
95
|
+
ObjectType: 'array',
|
|
96
|
+
MergeMethod: 'Array',
|
|
97
|
+
Steps: [
|
|
98
|
+
{
|
|
99
|
+
InputProperty: false,
|
|
100
|
+
Method: `Initialize`,
|
|
101
|
+
Merge: false
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
InputProperty: 'PictForm.ChartDatasetsRaw',
|
|
105
|
+
Method: `Raw`,
|
|
106
|
+
Merge: false
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
InputProperty: 'PictForm.ChartDatasetsAddress',
|
|
110
|
+
Method: `Address`,
|
|
111
|
+
Merge: false
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
InputProperty: 'PictForm.ChartDatasetsSolvers',
|
|
115
|
+
Method: `ArrayOfSolvers`,
|
|
116
|
+
Merge: true
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
this.defaultDataParsingConfiguration = JSON.parse(JSON.stringify(this.options.DefaultDataParsingConfiguration));
|
|
122
|
+
|
|
23
123
|
this.currentChartObjects = {};
|
|
24
124
|
}
|
|
25
125
|
|
|
26
|
-
|
|
126
|
+
/**
|
|
127
|
+
*
|
|
128
|
+
* @param {Object} pInput - The PictForm input object
|
|
129
|
+
* @param {*} pChartConfiguration - The current configuration object for the form
|
|
130
|
+
* @param {*} pParsingConfiguration - The parsing configuration to apply
|
|
131
|
+
* @param {*} pInputParsingConfigurationScope - The input-specific parsing configuration string address for additional configuration
|
|
132
|
+
* @returns
|
|
133
|
+
*/
|
|
134
|
+
applyInputParsingConfiguration(pInput, pChartConfiguration, pParsingConfiguration, pInputParsingConfigurationScope)
|
|
27
135
|
{
|
|
28
|
-
|
|
136
|
+
// TODO: There is a ton of DRY to be had in this function when we break it out to the base class
|
|
29
137
|
let tmpInput = pInput;
|
|
30
|
-
let
|
|
138
|
+
let tmpInputParsingConfigurationScope = pInputParsingConfigurationScope;
|
|
31
139
|
|
|
32
|
-
|
|
140
|
+
let tmpChartConfiguration = pChartConfiguration;
|
|
141
|
+
let tmpParsingConfiguration = pParsingConfiguration;
|
|
142
|
+
|
|
143
|
+
if (typeof (pInput) !== 'object')
|
|
144
|
+
{
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
if (typeof (pInputParsingConfigurationScope) !== 'string' || (pInputParsingConfigurationScope.length < 1))
|
|
148
|
+
{
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
if (typeof (tmpParsingConfiguration) !== 'object')
|
|
33
152
|
{
|
|
34
153
|
return false;
|
|
35
154
|
}
|
|
36
155
|
|
|
37
|
-
|
|
156
|
+
if (typeof (tmpChartConfiguration) !== 'object')
|
|
157
|
+
{
|
|
158
|
+
tmpChartConfiguration = {};
|
|
159
|
+
}
|
|
38
160
|
|
|
39
|
-
|
|
161
|
+
// 1. Check if there is any custom configurtion for how to parse the config for this input (dynamic dynamic)
|
|
162
|
+
let tmpInputCustomConfiguration = this.pict.manifest.getValueByHash(tmpInput, tmpInputParsingConfigurationScope);
|
|
163
|
+
if (typeof (tmpInputCustomConfiguration) === 'object')
|
|
164
|
+
{
|
|
165
|
+
// Merge the custom configuration into the base configuration
|
|
166
|
+
tmpParsingConfiguration = Object.assign(tmpParsingConfiguration, tmpInputCustomConfiguration);
|
|
167
|
+
}
|
|
40
168
|
|
|
41
|
-
//
|
|
42
|
-
|
|
169
|
+
// Get existing data
|
|
170
|
+
let tmpExistingData;
|
|
171
|
+
if (!tmpParsingConfiguration.AddressInObject || (tmpParsingConfiguration.AddressInObject == ''))
|
|
43
172
|
{
|
|
44
|
-
|
|
173
|
+
tmpExistingData = tmpChartConfiguration;
|
|
45
174
|
}
|
|
46
|
-
|
|
175
|
+
else
|
|
47
176
|
{
|
|
48
|
-
|
|
177
|
+
tmpExistingData = this.pict.manifest.getValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject);
|
|
49
178
|
}
|
|
50
179
|
|
|
51
|
-
//
|
|
52
|
-
|
|
53
|
-
// Start with Raw / defaults for labels and data
|
|
54
|
-
if (!('labels' in tmpChartConfiguration))
|
|
180
|
+
// 2. Enumerate through each step and apply them consistently
|
|
181
|
+
for (let i = 0; i < tmpParsingConfiguration.Steps.length; i++)
|
|
55
182
|
{
|
|
56
|
-
|
|
183
|
+
let tmpCurrentStep = tmpParsingConfiguration.Steps[i];
|
|
57
184
|
|
|
58
|
-
|
|
185
|
+
switch (tmpCurrentStep.Method)
|
|
59
186
|
{
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
187
|
+
case 'Initialize':
|
|
188
|
+
// Do nothing, already initialized
|
|
189
|
+
if (tmpParsingConfiguration.AddressInObject && (typeof (tmpParsingConfiguration.AddressInObject) === 'string') && (tmpParsingConfiguration.AddressInObject.length > 0))
|
|
190
|
+
{
|
|
191
|
+
let tmpCurrentStepData = this.pict.manifest.getValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject);
|
|
192
|
+
// see if the address exists and if it's the type we expect
|
|
193
|
+
if (tmpParsingConfiguration.ObjectType === 'array')
|
|
194
|
+
{
|
|
195
|
+
if (!tmpCurrentStepData || !Array.isArray(tmpCurrentStepData))
|
|
196
|
+
{
|
|
197
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, []);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else if (tmpParsingConfiguration.ObjectType === 'object')
|
|
201
|
+
{
|
|
202
|
+
if (!tmpCurrentStepData || (typeof (tmpCurrentStepData) !== 'object'))
|
|
203
|
+
{
|
|
204
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, {});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else
|
|
208
|
+
{
|
|
209
|
+
this.pict.log.warn(`Unsupported ObjectType ${tmpParsingConfiguration.ObjectType} parsing chart Initialize configuration for input ${tmpInput.Macro.RawHTMLID}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
break;
|
|
213
|
+
case 'Raw':
|
|
214
|
+
// Check if the Raw is in there
|
|
215
|
+
let tmpRawDataExists = this.pict.manifest.checkAddressExists(tmpInput, tmpCurrentStep.InputProperty);
|
|
216
|
+
if (!tmpRawDataExists)
|
|
217
|
+
{
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
63
220
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (Array.isArray(tmpSolvedLabels))
|
|
68
|
-
{
|
|
69
|
-
// TODO: This may need to get complex for multiple sets of labels?
|
|
70
|
-
tmpChartConfiguration.data.labels = tmpSolvedLabels;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
if (!('datasets' in tmpChartConfiguration))
|
|
75
|
-
{
|
|
76
|
-
tmpChartConfiguration.data.datasets = [];
|
|
77
|
-
|
|
78
|
-
if (Array.isArray(tmpPictform.ChartDatasetsRaw))
|
|
79
|
-
{
|
|
80
|
-
tmpChartConfiguration.data.datasets = tmpChartConfiguration.data.datasets.concat(tmpPictform.ChartDatasetsRaw);
|
|
81
|
-
}
|
|
221
|
+
// Get the raw data from the input
|
|
222
|
+
let tmpRawData = this.pict.manifest.getValueByHash(tmpInput, tmpCurrentStep.InputProperty);
|
|
223
|
+
let tmpRawDataType = typeof(tmpRawData);
|
|
82
224
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
let tmpDataSetSolved = this.pict.providers.DynamicSolver.runSolver(tmpDatasetSolverConfig.DataSolver);
|
|
91
|
-
if (!'Label' in tmpDatasetSolverConfig)
|
|
225
|
+
// We only support objects as configuration
|
|
226
|
+
if (tmpRawDataType !== 'object')
|
|
227
|
+
{
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
if (tmpParsingConfiguration.ObjectType === 'array')
|
|
92
232
|
{
|
|
93
|
-
|
|
233
|
+
if (Array.isArray(tmpRawData))
|
|
234
|
+
{
|
|
235
|
+
if (tmpCurrentStep.Merge)
|
|
236
|
+
{
|
|
237
|
+
// Get existing data
|
|
238
|
+
if (!Array.isArray(tmpExistingData))
|
|
239
|
+
{
|
|
240
|
+
tmpExistingData = [];
|
|
241
|
+
}
|
|
242
|
+
// Merge in the arrays
|
|
243
|
+
let tmpMergedData = tmpExistingData.concat(tmpRawData);
|
|
244
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
|
|
245
|
+
}
|
|
246
|
+
else
|
|
247
|
+
{
|
|
248
|
+
// Just set the value
|
|
249
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
94
252
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
253
|
+
else if (tmpParsingConfiguration.ObjectType === 'object')
|
|
254
|
+
{
|
|
255
|
+
if (tmpCurrentStep.Merge)
|
|
256
|
+
{
|
|
257
|
+
if (!tmpParsingConfiguration.AddressInObject || (tmpParsingConfiguration.AddressInObject == ''))
|
|
258
|
+
{
|
|
259
|
+
// This is the "root" object, so we need to merge or set directly
|
|
260
|
+
if (tmpCurrentStep.Merge)
|
|
261
|
+
{
|
|
262
|
+
tmpChartConfiguration = Object.assign(tmpChartConfiguration, tmpRawData);
|
|
263
|
+
}
|
|
264
|
+
else
|
|
265
|
+
{
|
|
266
|
+
tmpChartConfiguration = tmpRawData;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else
|
|
270
|
+
{
|
|
271
|
+
if ((typeof(tmpExistingData) != 'object') || (tmpExistingData == null))
|
|
272
|
+
{
|
|
273
|
+
tmpExistingData = {};
|
|
274
|
+
}
|
|
275
|
+
if (tmpCurrentStep.Merge)
|
|
276
|
+
{
|
|
277
|
+
// Merge the objects
|
|
278
|
+
let tmpMergedData = Object.assign(tmpExistingData, tmpRawData);
|
|
279
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
|
|
280
|
+
}
|
|
281
|
+
else
|
|
282
|
+
{
|
|
283
|
+
// Just set the value
|
|
284
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
else
|
|
289
|
+
{
|
|
290
|
+
// Just set the value?
|
|
291
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
break;
|
|
295
|
+
case 'Address':
|
|
296
|
+
let tmpAddress = this.pict.manifest.getValueByHash(tmpInput, tmpCurrentStep.InputProperty);
|
|
297
|
+
// Input is the Record in the resolution chain
|
|
298
|
+
if (!tmpAddress)
|
|
299
|
+
{
|
|
300
|
+
break;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
let tmpPotentialConfigurationObject = this.pict.resolveStateFromAddress(tmpAddress, pInput);
|
|
304
|
+
|
|
305
|
+
if (typeof (tmpPotentialConfigurationObject) !== 'object')
|
|
306
|
+
{
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
if (tmpParsingConfiguration.ObjectType === 'array')
|
|
311
|
+
{
|
|
312
|
+
if (Array.isArray(tmpRawData))
|
|
313
|
+
{
|
|
314
|
+
if (tmpCurrentStep.Merge)
|
|
315
|
+
{
|
|
316
|
+
// Get existing data
|
|
317
|
+
if (!Array.isArray(tmpExistingData))
|
|
318
|
+
{
|
|
319
|
+
tmpExistingData = [];
|
|
320
|
+
}
|
|
321
|
+
// Merge in the arrays
|
|
322
|
+
let tmpMergedData = tmpExistingData.concat(tmpRawData);
|
|
323
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
|
|
324
|
+
}
|
|
325
|
+
else
|
|
326
|
+
{
|
|
327
|
+
// Just set the value
|
|
328
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
else if (tmpParsingConfiguration.ObjectType === 'object')
|
|
333
|
+
{
|
|
334
|
+
if (tmpCurrentStep.Merge)
|
|
335
|
+
{
|
|
336
|
+
if (!tmpParsingConfiguration.AddressInObject || (tmpParsingConfiguration.AddressInObject == ''))
|
|
337
|
+
{
|
|
338
|
+
// This is the "root" object, so we need to merge or set directly
|
|
339
|
+
if (tmpCurrentStep.Merge)
|
|
340
|
+
{
|
|
341
|
+
tmpChartConfiguration = Object.assign(tmpChartConfiguration, tmpRawData);
|
|
342
|
+
}
|
|
343
|
+
else
|
|
344
|
+
{
|
|
345
|
+
tmpChartConfiguration = tmpRawData;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
else
|
|
349
|
+
{
|
|
350
|
+
if ((typeof(tmpExistingData) != 'object') || (tmpExistingData == null))
|
|
351
|
+
{
|
|
352
|
+
tmpExistingData = {};
|
|
353
|
+
}
|
|
354
|
+
if (tmpCurrentStep.Merge)
|
|
355
|
+
{
|
|
356
|
+
// Merge the objects
|
|
357
|
+
let tmpMergedData = Object.assign(tmpExistingData, tmpRawData);
|
|
358
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
|
|
359
|
+
}
|
|
360
|
+
else
|
|
361
|
+
{
|
|
362
|
+
// Just set the value
|
|
363
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
else
|
|
368
|
+
{
|
|
369
|
+
// Just set the value?
|
|
370
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
break;
|
|
374
|
+
case 'SingleSolver':
|
|
375
|
+
let tmpSolverExpression = this.pict.manifest.getValueByHash(tmpInput, tmpCurrentStep.InputProperty);
|
|
376
|
+
// Check that the expression is a string
|
|
377
|
+
if (typeof (tmpSolverExpression) !== 'string')
|
|
378
|
+
{
|
|
379
|
+
break;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
let tmpSolvedConfiguration = this.pict.providers.DynamicSolver.runSolver(tmpSolverExpression);
|
|
383
|
+
|
|
384
|
+
if (tmpParsingConfiguration.ObjectType === 'array')
|
|
385
|
+
{
|
|
386
|
+
if (Array.isArray(tmpSolvedConfiguration))
|
|
387
|
+
{
|
|
388
|
+
if (tmpCurrentStep.Merge)
|
|
389
|
+
{
|
|
390
|
+
// Get existing data
|
|
391
|
+
if (!Array.isArray(tmpExistingData))
|
|
392
|
+
{
|
|
393
|
+
tmpExistingData = [];
|
|
394
|
+
}
|
|
395
|
+
// Merge in the arrays
|
|
396
|
+
let tmpMergedData = tmpExistingData.concat(tmpSolvedConfiguration);
|
|
397
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
|
|
398
|
+
}
|
|
399
|
+
else
|
|
400
|
+
{
|
|
401
|
+
// Just set the value
|
|
402
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpSolvedConfiguration);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
else if (tmpParsingConfiguration.ObjectType === 'object')
|
|
407
|
+
{
|
|
408
|
+
if (tmpCurrentStep.Merge)
|
|
409
|
+
{
|
|
410
|
+
if (!tmpParsingConfiguration.AddressInObject || (tmpParsingConfiguration.AddressInObject == ''))
|
|
411
|
+
{
|
|
412
|
+
// This is the "root" object, so we need to merge or set directly
|
|
413
|
+
if (tmpCurrentStep.Merge)
|
|
414
|
+
{
|
|
415
|
+
tmpChartConfiguration = Object.assign(tmpChartConfiguration, tmpSolvedConfiguration);
|
|
416
|
+
}
|
|
417
|
+
else
|
|
418
|
+
{
|
|
419
|
+
tmpChartConfiguration = tmpSolvedConfiguration;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
else
|
|
423
|
+
{
|
|
424
|
+
if ((typeof(tmpExistingData) != 'object') || (tmpExistingData == null))
|
|
425
|
+
{
|
|
426
|
+
tmpExistingData = {};
|
|
427
|
+
}
|
|
428
|
+
if (tmpCurrentStep.Merge)
|
|
429
|
+
{
|
|
430
|
+
// Merge the objects
|
|
431
|
+
let tmpMergedData = Object.assign(tmpExistingData, tmpSolvedConfiguration);
|
|
432
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
|
|
433
|
+
}
|
|
434
|
+
else
|
|
435
|
+
{
|
|
436
|
+
// Just set the value
|
|
437
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
else
|
|
442
|
+
{
|
|
443
|
+
// Just set the value?
|
|
444
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
break;
|
|
448
|
+
|
|
449
|
+
case 'ArrayOfSolvers':
|
|
450
|
+
let tmpSolverExpressionList = this.pict.manifest.getValueByHash(tmpInput, tmpCurrentStep.InputProperty);
|
|
451
|
+
|
|
452
|
+
// Check that the expression is a string
|
|
453
|
+
if (!Array.isArray(tmpSolverExpressionList))
|
|
454
|
+
{
|
|
455
|
+
break;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
for (let i = 0; i < tmpSolverExpressionList.length; i++)
|
|
459
|
+
{
|
|
460
|
+
let tmpCurrentSolverExpression = tmpSolverExpressionList[i];
|
|
461
|
+
if (typeof(tmpCurrentSolverExpression) !== 'object')
|
|
462
|
+
{
|
|
463
|
+
continue;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
let tmpSolverLabel = tmpCurrentSolverExpression.Label;
|
|
467
|
+
let tmpSolverExpression = tmpCurrentSolverExpression.DataSolver;
|
|
468
|
+
let tmpSolvedDataSet = this.pict.providers.DynamicSolver.runSolver(tmpSolverExpression);
|
|
469
|
+
|
|
470
|
+
let tmpDataObject = (
|
|
471
|
+
{
|
|
472
|
+
label: tmpSolverLabel,
|
|
473
|
+
data: (Array.isArray(tmpSolvedDataSet)) ? tmpSolvedDataSet : []
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
if (tmpParsingConfiguration.ObjectType === 'array')
|
|
477
|
+
{
|
|
478
|
+
if (Array.isArray(tmpSolvedDataSet))
|
|
479
|
+
{
|
|
480
|
+
if (tmpCurrentStep.Merge)
|
|
481
|
+
{
|
|
482
|
+
// Get existing data
|
|
483
|
+
if (!Array.isArray(tmpExistingData))
|
|
484
|
+
{
|
|
485
|
+
tmpExistingData = [];
|
|
486
|
+
}
|
|
487
|
+
tmpExistingData.push(tmpDataObject);
|
|
488
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpExistingData);
|
|
489
|
+
}
|
|
490
|
+
else
|
|
491
|
+
{
|
|
492
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, [tmpDataObject]);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
else if (tmpParsingConfiguration.ObjectType === 'object')
|
|
497
|
+
{
|
|
498
|
+
if (tmpCurrentStep.Merge)
|
|
499
|
+
{
|
|
500
|
+
if (!tmpParsingConfiguration.AddressInObject || (tmpParsingConfiguration.AddressInObject == ''))
|
|
501
|
+
{
|
|
502
|
+
// This is the "root" object, so we need to merge or set directly
|
|
503
|
+
if (tmpCurrentStep.Merge)
|
|
504
|
+
{
|
|
505
|
+
tmpChartConfiguration = Object.assign(tmpChartConfiguration, tmpSolvedDataSet);
|
|
506
|
+
}
|
|
507
|
+
else
|
|
508
|
+
{
|
|
509
|
+
tmpChartConfiguration = tmpSolvedDataSet;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
else
|
|
513
|
+
{
|
|
514
|
+
if ((typeof(tmpExistingData) != 'object') || (tmpExistingData == null))
|
|
515
|
+
{
|
|
516
|
+
tmpExistingData = {};
|
|
517
|
+
}
|
|
518
|
+
if (tmpCurrentStep.Merge)
|
|
519
|
+
{
|
|
520
|
+
// Merge the objects
|
|
521
|
+
let tmpMergedData = Object.assign(tmpExistingData, tmpSolvedDataSet);
|
|
522
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpMergedData);
|
|
523
|
+
}
|
|
524
|
+
else
|
|
525
|
+
{
|
|
526
|
+
// Just set the value
|
|
527
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
else
|
|
532
|
+
{
|
|
533
|
+
// Just set the value?
|
|
534
|
+
this.pict.manifest.setValueByHash(tmpChartConfiguration, tmpParsingConfiguration.AddressInObject, tmpRawData);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
break;
|
|
101
539
|
}
|
|
102
540
|
}
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
getInputChartConfiguration(pView, pInput, pValue)
|
|
544
|
+
{
|
|
545
|
+
let tmpView = pView;
|
|
546
|
+
let tmpInput = pInput;
|
|
547
|
+
let tmpValue = pValue;
|
|
548
|
+
|
|
549
|
+
if (!('PictForm' in tmpInput))
|
|
550
|
+
{
|
|
551
|
+
return false;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
let tmpPictform = pInput.PictForm;
|
|
555
|
+
|
|
556
|
+
let tmpChartConfiguration = (typeof (tmpPictform.ChartJSOptionsCorePrototype) === 'object') ? tmpPictform.ChartJSOptionsCorePrototype : {};
|
|
557
|
+
|
|
558
|
+
this.applyInputParsingConfiguration(pInput, tmpChartConfiguration, this.defaultCoreParsingConfiguration, 'PictForm.ChartConfigCoreParsingConfigurationOverride');
|
|
559
|
+
if (!('type' in tmpChartConfiguration))
|
|
560
|
+
{
|
|
561
|
+
tmpChartConfiguration.type = (typeof (tmpPictform.ChartType) === 'string') ? tmpPictform.ChartType : 'bar';
|
|
562
|
+
}
|
|
563
|
+
this.applyInputParsingConfiguration(pInput, tmpChartConfiguration, this.defaultLabelParsingConfiguration, 'PictForm.ChartLabelsParsingConfigurationOverride');
|
|
564
|
+
this.applyInputParsingConfiguration(pInput, tmpChartConfiguration, this.defaultDataParsingConfiguration, 'PictForm.ChartDataParsingConfigurationOverride');
|
|
103
565
|
|
|
104
566
|
return tmpChartConfiguration;
|
|
105
567
|
}
|
|
@@ -121,7 +583,7 @@ class CustomInputHandler extends libPictSectionInputExtension
|
|
|
121
583
|
tmpChartCanvasElement = tmpChartCanvasElement[0]
|
|
122
584
|
|
|
123
585
|
// Check if there is a window.Chart which is the Chart.js library
|
|
124
|
-
if (typeof(window.Chart) !== 'function')
|
|
586
|
+
if (typeof (window.Chart) !== 'function')
|
|
125
587
|
{
|
|
126
588
|
this.log.warn(`Chart.js library not loaded for input ${tmpChartCanvasElementSelector}`);
|
|
127
589
|
}
|
|
@@ -18,6 +18,7 @@ declare class PictDynamicSolver extends libPictProvider {
|
|
|
18
18
|
instantiateServiceProviderIfNotExists: (hash: string) => any;
|
|
19
19
|
ExpressionParser: any;
|
|
20
20
|
};
|
|
21
|
+
runSolver(pSolverExpression: any): any;
|
|
21
22
|
/**
|
|
22
23
|
* Checks the solver and returns the solver object if it passes the checks.
|
|
23
24
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pict-Provider-DynamicSolver.d.ts","sourceRoot":"","sources":["../../../source/providers/Pict-Provider-DynamicSolver.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Pict-Provider-DynamicSolver.d.ts","sourceRoot":"","sources":["../../../source/providers/Pict-Provider-DynamicSolver.js"],"names":[],"mappings":";AA+BA;;GAEG;AACH;IAEC;;;;;;OAMG;IACH,oBAJW,MAAM,YACN,MAAM,gBACN,MAAM,EAqChB;IA9BA,6BAA6B;IAC7B,MADW,OAAO,MAAM,CAAC,CAChB;IACT,uHAAuH;IACvH,OADW,OAAO,MAAM,CAAC,GAAG;QAAE,qCAAqC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC;QAAC,gBAAgB,EAAE,GAAG,CAAA;KAAE,CACzG;IA6BX,uCAaC;IAED;;;;;;;;;OASG;IACH,qBALW,MAAM,GAAC,MAAM,cACb,OAAO,aACP,MAAM,GACJ,MAAM,GAAC,SAAS,CA8B5B;IAED;;;;;;;OAOG;IACH,wDAFW,MAAM,QAyDhB;IAED;;;;;OAKG;IACH,gEAFW,MAAM,QA+BhB;IAED;;;;;OAKG;IACH,sDAFW,MAAM,QAwBhB;IAED;;;;;;;;OAQG;IACH,gCAJW,MAAM,yBAWhB;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,yBAFW,QAAM,MAAM,EAAE,QAiFxB;IADA;;;;;MAAuC;CAExC;;;;;AA/WD,kCAAkC;AAClC,6CADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAS3B"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
export = CustomInputHandler;
|
|
2
|
+
/**
|
|
3
|
+
* CustomInputHandler class.
|
|
4
|
+
*
|
|
5
|
+
* @class
|
|
6
|
+
* @extends libPictSectionInputExtension
|
|
7
|
+
* @memberof providers.inputs
|
|
8
|
+
*/
|
|
9
|
+
declare class CustomInputHandler extends libPictSectionInputExtension {
|
|
10
|
+
constructor(pFable: any, pOptions: any, pServiceHash: any);
|
|
11
|
+
/** @type {import('pict')} */
|
|
12
|
+
pict: import("pict");
|
|
13
|
+
/** @type {import('pict')} */
|
|
14
|
+
fable: import("pict");
|
|
15
|
+
defaultCoreParsingConfiguration: any;
|
|
16
|
+
defaultLabelParsingConfiguration: any;
|
|
17
|
+
defaultDataParsingConfiguration: any;
|
|
18
|
+
currentChartObjects: {};
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param {Object} pInput - The PictForm input object
|
|
22
|
+
* @param {*} pChartConfiguration - The current configuration object for the form
|
|
23
|
+
* @param {*} pParsingConfiguration - The parsing configuration to apply
|
|
24
|
+
* @param {*} pInputParsingConfigurationScope - The input-specific parsing configuration string address for additional configuration
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
applyInputParsingConfiguration(pInput: any, pChartConfiguration: any, pParsingConfiguration: any, pInputParsingConfigurationScope: any): boolean;
|
|
28
|
+
getInputChartConfiguration(pView: any, pInput: any, pValue: any): any;
|
|
29
|
+
initializeChartVisualization(pView: any, pGroup: any, pRow: any, pInput: any, pValue: any, pHTMLSelector: any): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Initializes a tabular input element.
|
|
32
|
+
*
|
|
33
|
+
* @param {Object} pView - The view object.
|
|
34
|
+
* @param {Object} pGroup - The group object.
|
|
35
|
+
* @param {Object} pInput - The input object.
|
|
36
|
+
* @param {any} pValue - The input value.
|
|
37
|
+
* @param {string} pHTMLSelector - The HTML selector.
|
|
38
|
+
* @param {number} pRowIndex - The index of the row.
|
|
39
|
+
* @param {string} pTransactionGUID - The transaction GUID for the event dispatch.
|
|
40
|
+
* @returns {any} - The result of the initialization.
|
|
41
|
+
*/
|
|
42
|
+
onInputInitializeTabular(pView: any, pGroup: any, pInput: any, pValue: any, pHTMLSelector: string, pRowIndex: number, pTransactionGUID: string): any;
|
|
43
|
+
/**
|
|
44
|
+
* Handles the change event for the data in the select input.
|
|
45
|
+
*
|
|
46
|
+
* @param {Object} pView - The view object.
|
|
47
|
+
* @param {Object} pInput - The input object.
|
|
48
|
+
* @param {any} pValue - The new value of the input.
|
|
49
|
+
* @param {string} pHTMLSelector - The HTML selector of the input.
|
|
50
|
+
* @param {string} pTransactionGUID - The transaction GUID for the event dispatch.
|
|
51
|
+
* @returns {any} - The result of the super.onDataChange method.
|
|
52
|
+
*/
|
|
53
|
+
onDataChange(pView: any, pInput: any, pValue: any, pHTMLSelector: string, pTransactionGUID: string): any;
|
|
54
|
+
/**
|
|
55
|
+
* Handles the change event for tabular data.
|
|
56
|
+
*
|
|
57
|
+
* @param {Object} pView - The view object.
|
|
58
|
+
* @param {Object} pInput - The input object.
|
|
59
|
+
* @param {any} pValue - The new value.
|
|
60
|
+
* @param {string} pHTMLSelector - The HTML selector.
|
|
61
|
+
* @param {number} pRowIndex - The index of the row.
|
|
62
|
+
* @param {string} pTransactionGUID - The transaction GUID for the event dispatch.
|
|
63
|
+
* @returns {any} - The result of the super method.
|
|
64
|
+
*/
|
|
65
|
+
onDataChangeTabular(pView: any, pInput: any, pValue: any, pHTMLSelector: string, pRowIndex: number, pTransactionGUID: string): any;
|
|
66
|
+
/**
|
|
67
|
+
* Marshals data to the form for the given input.
|
|
68
|
+
*
|
|
69
|
+
* @param {Object} pView - The view object.
|
|
70
|
+
* @param {Object} pGroup - The group object.
|
|
71
|
+
* @param {Object} pRow - The row object.
|
|
72
|
+
* @param {Object} pInput - The input object.
|
|
73
|
+
* @param {any} pValue - The value to be marshaled.
|
|
74
|
+
* @param {string} pHTMLSelector - The HTML selector.
|
|
75
|
+
* @param {string} pTransactionGUID - The transaction GUID for the event dispatch.
|
|
76
|
+
* @returns {boolean} - Returns true if the value is successfully marshaled to the form, otherwise false.
|
|
77
|
+
*/
|
|
78
|
+
onDataMarshalToForm(pView: any, pGroup: any, pRow: any, pInput: any, pValue: any, pHTMLSelector: string, pTransactionGUID: string): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Marshals data to a form in tabular format.
|
|
81
|
+
*
|
|
82
|
+
* @param {Object} pView - The view object.
|
|
83
|
+
* @param {Object} pGroup - The group object.
|
|
84
|
+
* @param {Object} pInput - The input object.
|
|
85
|
+
* @param {any} pValue - The value parameter.
|
|
86
|
+
* @param {string} pHTMLSelector - The HTML selector parameter.
|
|
87
|
+
* @param {number} pRowIndex - The row index parameter.
|
|
88
|
+
* @param {string} pTransactionGUID - The transaction GUID for the event dispatch.
|
|
89
|
+
* @returns {any} - The result of the data marshaling.
|
|
90
|
+
*/
|
|
91
|
+
onDataMarshalToFormTabular(pView: any, pGroup: any, pInput: any, pValue: any, pHTMLSelector: string, pRowIndex: number, pTransactionGUID: string): any;
|
|
92
|
+
/**
|
|
93
|
+
* Handles the data request event for a select input in the PictProviderInputSelect class.
|
|
94
|
+
*
|
|
95
|
+
* @param {Object} pView - The view object.
|
|
96
|
+
* @param {Object} pInput - The input object.
|
|
97
|
+
* @param {any} pValue - The value object.
|
|
98
|
+
* @param {string} pHTMLSelector - The HTML selector object.
|
|
99
|
+
* @returns {any} - The result of the onDataRequest method.
|
|
100
|
+
*/
|
|
101
|
+
onDataRequest(pView: any, pInput: any, pValue: any, pHTMLSelector: string): any;
|
|
102
|
+
/**
|
|
103
|
+
* Handles the data request event for a tabular input.
|
|
104
|
+
*
|
|
105
|
+
* @param {Object} pView - The view object.
|
|
106
|
+
* @param {Object} pInput - The input object.
|
|
107
|
+
* @param {any} pValue - The value object.
|
|
108
|
+
* @param {string} pHTMLSelector - The HTML selector.
|
|
109
|
+
* @param {number} pRowIndex - The row index.
|
|
110
|
+
* @returns {any} - The result of the data request.
|
|
111
|
+
*/
|
|
112
|
+
onDataRequestTabular(pView: any, pInput: any, pValue: any, pHTMLSelector: string, pRowIndex: number): any;
|
|
113
|
+
}
|
|
114
|
+
import libPictSectionInputExtension = require("../Pict-Provider-InputExtension.js");
|
|
115
|
+
//# sourceMappingURL=Pict-Provider-Input-Chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pict-Provider-Input-Chart.d.ts","sourceRoot":"","sources":["../../../../source/providers/inputs/Pict-Provider-Input-Chart.js"],"names":[],"mappings":";AAEA;;;;;;GAMG;AACH;IAEC,2DAgHC;IA5GA,6BAA6B;IAC7B,MADW,OAAO,MAAM,CAAC,CAChB;IACT,6BAA6B;IAC7B,OADW,OAAO,MAAM,CAAC,CACf;IAoCV,qCAA+G;IAiC/G,sCAAiH;IAiCjH,qCAA+G;IAE/G,wBAA6B;IAG9B;;;;;;;OAOG;IACH,iEALW,GAAC,yBACD,GAAC,mCACD,GAAC,WA0ZX;IAED,sEAwBC;IAED,wHAyBC;IAoBD;;;;;;;;;;;OAWG;IACH,uEANW,GAAG,iBACH,MAAM,aACN,MAAM,oBACN,MAAM,GACJ,GAAG,CAKf;IAED;;;;;;;;;OASG;IACH,8CALW,GAAG,iBACH,MAAM,oBACN,MAAM,GACJ,GAAG,CAKf;IAED;;;;;;;;;;OAUG;IACH,qDANW,GAAG,iBACH,MAAM,aACN,MAAM,oBACN,MAAM,GACJ,GAAG,CAKf;IAED;;;;;;;;;;;OAWG;IACH,6EALW,GAAG,iBACH,MAAM,oBACN,MAAM,GACJ,OAAO,CAKnB;IAED;;;;;;;;;;;OAWG;IACH,yEANW,GAAG,iBACH,MAAM,aACN,MAAM,oBACN,MAAM,GACJ,GAAG,CAKf;IAED;;;;;;;;OAQG;IACH,+CAJW,GAAG,iBACH,MAAM,GACJ,GAAG,CAKf;IAED;;;;;;;;;OASG;IACH,sDALW,GAAG,iBACH,MAAM,aACN,MAAM,GACJ,GAAG,CAKf;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pict-Layout-Record.d.ts","sourceRoot":"","sources":["../../../../source/providers/layouts/Pict-Layout-Record.js"],"names":[],"mappings":";AAEA;IAEC,2DAUC;IANA,6BAA6B;IAC7B,MADW,OAAO,MAAM,CAAC,CAChB;IACT,6BAA6B;IAC7B,OADW,OAAO,MAAM,CAAC,CACf;
|
|
1
|
+
{"version":3,"file":"Pict-Layout-Record.d.ts","sourceRoot":"","sources":["../../../../source/providers/layouts/Pict-Layout-Record.js"],"names":[],"mappings":";AAEA;IAEC,2DAUC;IANA,6BAA6B;IAC7B,MADW,OAAO,MAAM,CAAC,CAChB;IACT,6BAA6B;IAC7B,OADW,OAAO,MAAM,CAAC,CACf;CAiGX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pict-View-PSF-SupportBase.d.ts","sourceRoot":"","sources":["../../../../source/views/support/Pict-View-PSF-SupportBase.js"],"names":[],"mappings":";AAqBA;IAEC,2DAYC;IALA,yBAA2B;IAC3B,wBAAkC;IAMnC;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Pict-View-PSF-SupportBase.d.ts","sourceRoot":"","sources":["../../../../source/views/support/Pict-View-PSF-SupportBase.js"],"names":[],"mappings":";AAqBA;IAEC,2DAYC;IALA,yBAA2B;IAC3B,wBAAkC;IAMnC;;;;;;;;;;;;;;MAsMC;IAED,8CAKC;IAGD,8CA6BC;IAED,uMA8GC;IAED,8BAiIC;CACD"}
|