pict-section-form 1.0.149 → 1.0.151
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/debug/PICTSection-TabularManifests.json +59 -6
- package/debug/TabularManifestCSV.csv +75 -73
- package/debug/data/DefaultFormManifest.json +59 -6
- package/debug/data/MathExampleForm-Reconstituted.csv +3 -2
- package/debug/data/MathExampleForm.json +59 -6
- package/package.json +4 -4
- package/source/providers/Pict-Provider-DynamicSolver.js +5 -0
- package/source/providers/inputs/Pict-Provider-Input-Chart.js +35 -0
- package/source/services/ManifestFactory.js +199 -60
|
@@ -76,6 +76,12 @@
|
|
|
76
76
|
"Units": "planetary",
|
|
77
77
|
"Section": "Header",
|
|
78
78
|
"Group": "General_Info"
|
|
79
|
+
},
|
|
80
|
+
"AnotherObject": {
|
|
81
|
+
"NotPictForm": {
|
|
82
|
+
"x": 15.2,
|
|
83
|
+
"y": 17
|
|
84
|
+
}
|
|
79
85
|
}
|
|
80
86
|
},
|
|
81
87
|
"Header.WarehouseVolume": {
|
|
@@ -113,6 +119,11 @@
|
|
|
113
119
|
],
|
|
114
120
|
"Section": "REST_Request",
|
|
115
121
|
"Group": "Book_Data"
|
|
122
|
+
},
|
|
123
|
+
"AnotherObject": {
|
|
124
|
+
"NotPictForm": {
|
|
125
|
+
"x": 86
|
|
126
|
+
}
|
|
116
127
|
}
|
|
117
128
|
},
|
|
118
129
|
"HelpContent.Math": {
|
|
@@ -139,7 +150,13 @@
|
|
|
139
150
|
"Section": "Basic_Geometry",
|
|
140
151
|
"Group": "BasicGeoGrp"
|
|
141
152
|
},
|
|
142
|
-
"Default": "7.25"
|
|
153
|
+
"Default": "7.25",
|
|
154
|
+
"AnotherObject": {
|
|
155
|
+
"NotPictForm": {
|
|
156
|
+
"x": 11,
|
|
157
|
+
"y": 190
|
|
158
|
+
}
|
|
159
|
+
}
|
|
143
160
|
},
|
|
144
161
|
"Geometry.Rectangle.Height": {
|
|
145
162
|
"Hash": "RectangleHeight",
|
|
@@ -152,7 +169,12 @@
|
|
|
152
169
|
"Section": "Basic_Geometry",
|
|
153
170
|
"Group": "BasicGeoGrp"
|
|
154
171
|
},
|
|
155
|
-
"Default": "10.3571"
|
|
172
|
+
"Default": "10.3571",
|
|
173
|
+
"AnotherObject": {
|
|
174
|
+
"NotPictForm": {
|
|
175
|
+
"y": 22
|
|
176
|
+
}
|
|
177
|
+
}
|
|
156
178
|
},
|
|
157
179
|
"Geometry.Rectangle.Area": {
|
|
158
180
|
"Hash": "RectangleArea",
|
|
@@ -164,7 +186,8 @@
|
|
|
164
186
|
"Width": "3",
|
|
165
187
|
"Units": "unrounded",
|
|
166
188
|
"Section": "Basic_Geometry",
|
|
167
|
-
"Group": "BasicGeoGrp"
|
|
189
|
+
"Group": "BasicGeoGrp",
|
|
190
|
+
"RandomData": "This is a test for random data injection."
|
|
168
191
|
},
|
|
169
192
|
"Description": "Area of the Rectangle."
|
|
170
193
|
},
|
|
@@ -217,7 +240,8 @@
|
|
|
217
240
|
"Width": "12",
|
|
218
241
|
"DecimalPrecision": 4,
|
|
219
242
|
"Section": "Basic_Geometry",
|
|
220
|
-
"Group": "Circle"
|
|
243
|
+
"Group": "Circle",
|
|
244
|
+
"RandomData": "Sparse..."
|
|
221
245
|
},
|
|
222
246
|
"Default": "85.523"
|
|
223
247
|
},
|
|
@@ -496,6 +520,35 @@
|
|
|
496
520
|
]
|
|
497
521
|
}
|
|
498
522
|
},
|
|
523
|
+
"BoxChart_DataAll": {
|
|
524
|
+
"Hash": "BoxChart_DataComparison",
|
|
525
|
+
"Name": "Box Data Comparison",
|
|
526
|
+
"DataAddress": "BoxChart_DataAll",
|
|
527
|
+
"DataType": "Object",
|
|
528
|
+
"PictForm": {
|
|
529
|
+
"InputType": "Chart",
|
|
530
|
+
"Row": "5",
|
|
531
|
+
"Width": "4",
|
|
532
|
+
"Section": "Box_Summary_Data",
|
|
533
|
+
"Group": "Box_Summary_Data",
|
|
534
|
+
"ChartType": "bar",
|
|
535
|
+
"ChartLabelsSolver": "objectkeystoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Volume\"))",
|
|
536
|
+
"ChartDatasetsSolvers": [
|
|
537
|
+
{
|
|
538
|
+
"DataSolver": "objectvaluestoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Width\"))",
|
|
539
|
+
"Label": "Width"
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"DataSolver": "objectvaluestoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Depth\"))",
|
|
543
|
+
"Label": "Data"
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"DataSolver": "objectvaluestoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Height\"))",
|
|
547
|
+
"Label": "Data"
|
|
548
|
+
}
|
|
549
|
+
]
|
|
550
|
+
}
|
|
551
|
+
},
|
|
499
552
|
"HelpContent.Cuboid": {
|
|
500
553
|
"Hash": "CuboidHelpContent",
|
|
501
554
|
"Name": "How to Cuboid Math",
|
|
@@ -504,7 +557,7 @@
|
|
|
504
557
|
"PictForm": {
|
|
505
558
|
"InputType": "Markdown",
|
|
506
559
|
"Row": "1",
|
|
507
|
-
"Width": "
|
|
560
|
+
"Width": "12",
|
|
508
561
|
"Section": "Rectangular_Area_Help",
|
|
509
562
|
"Group": "Rectangular_Area_Help"
|
|
510
563
|
}
|
|
@@ -516,7 +569,7 @@
|
|
|
516
569
|
"DataType": "Number",
|
|
517
570
|
"PictForm": {
|
|
518
571
|
"Row": "1",
|
|
519
|
-
"Width": "
|
|
572
|
+
"Width": "6",
|
|
520
573
|
"Tooltip": "The PR is *very* important.",
|
|
521
574
|
"Section": "Complex_Equation",
|
|
522
575
|
"Group": "Complex_Equation"
|
|
@@ -1,73 +1,75 @@
|
|
|
1
|
-
Form,Form Name,SubManifest,HideTabularEditingControls,GroupRecordSetAddress,DataOnly,Section Name,Section Hash,Group Name,Group Hash,Group Layout,Group CSS,Group Show Title,Row,Width,Minimum Row Count,Maximum Row Count,Input Address,Input Name,Input Hash,Input Extra,Units,DataType,Decimal Precision,InputType,Equation,Equation Ordinal,Default,Description,Tooltip,Input Notes,Entity,EntityColumnFilter,EntityDestination,SingleRecord,TriggerGroup,TriggerAddress,TriggerAllInputs,MarshalEmptyValues,ChartType,ChartLabelsAddress,ChartLabelsSolver,ChartDatasetsAddress,ChartDatasetsLabel,ChartDatasetsSolver
|
|
2
|
-
|
|
3
|
-
MathExampleForm
|
|
4
|
-
MathExampleForm,,,,,,Header,,General Info,,,,,1,
|
|
5
|
-
MathExampleForm,,,,,,Header,,General Info,,,,,
|
|
6
|
-
MathExampleForm,,,,,,Header,,General Info,,,,,
|
|
7
|
-
MathExampleForm,,,,,,Header,,General Info,,,,,3,6,,,Header.
|
|
8
|
-
MathExampleForm,,,,,,Header,,General Info,,,,,
|
|
9
|
-
MathExampleForm,,,,,,
|
|
10
|
-
MathExampleForm,,,,,,
|
|
11
|
-
MathExampleForm,,,,,,
|
|
12
|
-
MathExampleForm,,,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,1,6,,,Geometry.Rectangle.
|
|
13
|
-
MathExampleForm,,,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,
|
|
14
|
-
MathExampleForm,,,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,2,3,,,Geometry.Rectangle.
|
|
15
|
-
MathExampleForm,,,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,2,3,,,Geometry.Rectangle.
|
|
16
|
-
MathExampleForm,,,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,2,3,,,Geometry.Rectangle.
|
|
17
|
-
MathExampleForm,,,,,,Basic Geometry,,
|
|
18
|
-
MathExampleForm,,,,,,Basic Geometry,,Circle,,,,,
|
|
19
|
-
MathExampleForm,,,,,,Basic Geometry,,Circle,,,,,2,3,,,Geometry.Circle.
|
|
20
|
-
MathExampleForm,,,,,,Basic Geometry,,Circle,,,,,2,3,,,Geometry.Circle.
|
|
21
|
-
MathExampleForm,,,,,,Basic Geometry,,Circle,,,,,2,3,,,Geometry.Circle.
|
|
22
|
-
MathExampleForm,,
|
|
23
|
-
MathExampleForm,,BoxCollectionData
|
|
24
|
-
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,
|
|
25
|
-
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,
|
|
26
|
-
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,
|
|
27
|
-
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,
|
|
28
|
-
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,
|
|
29
|
-
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,
|
|
30
|
-
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,
|
|
31
|
-
MathExampleForm,,
|
|
32
|
-
MathExampleForm,,BoxCollectionSecondaryTable
|
|
33
|
-
MathExampleForm,,BoxCollectionSecondaryTable,,,,Box Decoration,BoxDecorations,Box Decorations,BoxDecorationGroup,,,,1,1,,,
|
|
34
|
-
MathExampleForm,,BoxCollectionSecondaryTable,,,,Box Decoration,BoxDecorations,Box Decorations,BoxDecorationGroup,,,,1,1,,,
|
|
35
|
-
MathExampleForm
|
|
36
|
-
MathExampleForm,,,,,1,Box Summary Data,,Box Summary Data,,,,,1,1,,,Boxes[].
|
|
37
|
-
MathExampleForm,,,,,1,Box Summary Data,,Box Summary Data,,,,,1,1,,,Boxes[].
|
|
38
|
-
MathExampleForm
|
|
39
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,
|
|
40
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,2,6,,,BoxAggregate.
|
|
41
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,
|
|
42
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,3,4,,,BoxAggregate.
|
|
43
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,3,4,,,BoxAggregate.
|
|
44
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,4
|
|
45
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,4,3,,,BoxAggregate.
|
|
46
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,4,3,,,BoxAggregate.
|
|
47
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,4,3,,,BoxAggregate.
|
|
48
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,
|
|
49
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,5,4,,,
|
|
50
|
-
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,5,4,,,
|
|
51
|
-
MathExampleForm,,,,,,
|
|
52
|
-
MathExampleForm,,,,,,
|
|
53
|
-
MathExampleForm,,,,,,
|
|
54
|
-
MathExampleForm,,,,,,Complex Equation,,Complex Equation
|
|
55
|
-
MathExampleForm,,,,,,Complex Equation,,Complex Equation,,,,,
|
|
56
|
-
MathExampleForm,,,,,,Complex Equation,,Complex Equation,,,,,
|
|
57
|
-
MathExampleForm,,
|
|
58
|
-
MathExampleForm
|
|
59
|
-
MathExampleForm,,Rectangles
|
|
60
|
-
MathExampleForm,,Rectangles,,,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,
|
|
61
|
-
MathExampleForm,,Rectangles,,,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,
|
|
62
|
-
MathExampleForm,,Rectangles,,,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,
|
|
63
|
-
MathExampleForm,,
|
|
64
|
-
MathExampleForm,,
|
|
65
|
-
MathExampleForm,,Cylinders
|
|
66
|
-
MathExampleForm,,Cylinders,,,,Cylinders,,Cylinders,,,,,1,1,,,
|
|
67
|
-
MathExampleForm,,Cylinders,,,,Cylinders,,Cylinders,,,,,1,1,,,
|
|
68
|
-
MathExampleForm,,Cylinders,,,,Cylinders,,Cylinders,,,,,1,1,,,
|
|
69
|
-
MathExampleForm
|
|
70
|
-
MathExampleForm
|
|
71
|
-
MathExampleForm,,,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists
|
|
72
|
-
MathExampleForm,,,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,
|
|
73
|
-
MathExampleForm,,,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,
|
|
1
|
+
Form,Form Name,SubManifest,HideTabularEditingControls,GroupRecordSetAddress,DataOnly,Section Name,Section Hash,Group Name,Group Hash,Group Layout,Group CSS,Group Show Title,Row,Width,Minimum Row Count,Maximum Row Count,Input Address,Input Name,Input Hash,Input Extra,Units,DataType,Decimal Precision,InputType,Equation,Equation Ordinal,Default,Description,Tooltip,Input Notes,Entity,EntityColumnFilter,EntityDestination,SingleRecord,TriggerGroup,TriggerAddress,TriggerAllInputs,MarshalEmptyValues,ChartType,ChartLabelsAddress,ChartLabelsSolver,ChartDatasetsAddress,ChartDatasetsLabel,ChartDatasetsSolver,ChartDatasetsSolverChartType,ChartDatasetsSolverLabel1,ChartDatasetsSolver1,ChartDataSetsSolverChartType1,ChartDatasetsSolverLabel2,ChartDatasetsSolver2,ChartDatasetsSolverChartType2,ChartDatasetsSolverLabel3,ChartDatasetsSolver3,ChartDatasetsSolverChartType3,Descriptor_Extension_PictForm.RandomData,Desciptor_Boolean_Extension_PictForm.ShowMoreMath,Descriptor_Float_Extension_AnotherObject.NotPictForm.x,Descriptor_Float_Extension_AnotherObject.NotPictForm.y
|
|
2
|
+
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
3
|
+
MathExampleForm,Math Example Form,,,,,Header,,General Info,,,,,1,3,,,Header.FirstName,First Name,HeaderFirstName,,,String,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
4
|
+
MathExampleForm,,,,,,Header,,General Info,,,,,1,3,,,Header.LastName,Last Name,HeaderLastName,,,String,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
5
|
+
MathExampleForm,,,,,,Header,,General Info,,,,,1,6,,,Header.JobTitle,Job Title,JobTitle,,,String,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
6
|
+
MathExampleForm,,,,,,Header,,General Info,,,,,2,12,,,Header.Description,Description,Description,,,String,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,T,,
|
|
7
|
+
MathExampleForm,,,,,,Header,,General Info,,,,,3,6,,,Header.Planet,Planet,Planet,,planetary,String,,Option,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
8
|
+
MathExampleForm,,,,,,Header,,General Info,,,,,3,6,,,Header.Universe,Universe,Universe,,planetary,String,,Option,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,15.2,17
|
|
9
|
+
MathExampleForm,,,,,,Header,,General Info,,,,,4,12,,,Header.WarehouseVolume,Warehouse Volume,WarehouseVolume,,,Number,,,,,50000,,,,,,,,,,,,,,,,,,,,,,,,,,,,,t,,
|
|
10
|
+
MathExampleForm,,,,,,REST Request,,Book Data,,,,,1,6,,,BookData.CurrentIDBook,IDBook,CurrentIDBook,,,Number,,,,,,,,Book from REST request,Book,IDBook,LoadedBook,,,,,,,,,,,,,,,,,,,,,,,,86,
|
|
11
|
+
MathExampleForm,,,,,,MatheMagic,,Math is Magic,,,,,1,1,,,HelpContent.Math,So Very Magic,MathHelpContent,,,String,,HTML,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
12
|
+
MathExampleForm,,,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,1,6,,,Geometry.Rectangle.Width,Width,RectangleWidth,,,Number,,,,,7.25,,,,,,,,,,,,,,,,,,,,,,,,,,,,,y,11,190
|
|
13
|
+
MathExampleForm,,,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,1,6,,,Geometry.Rectangle.Height,Height,RectangleHeight,,,Number,,,,,10.3571,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22
|
|
14
|
+
MathExampleForm,,,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,2,3,,,Geometry.Rectangle.Area,Area,RectangleArea,,unrounded,Number,,,RectangleArea = RectangleWidth * RectangleHeight,,,Area of the Rectangle.,,,,,,,,,,,,,,,,,,,,,,,,,,,This is a test for random data injection.,1,,
|
|
15
|
+
MathExampleForm,,,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,2,3,,,Geometry.Rectangle.AreaRoundedDefault,Area Rounded,RectangleAreaRoundedDefault,,default,Number,,,RectangleAreaRoundedDefault = ROUND(RectangleWidth * RectangleHeight),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,frog,
|
|
16
|
+
MathExampleForm,,,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,2,3,,,Geometry.Rectangle.AreaRoundedThree,Area Rounded 3,RectangleAreaRoundedThree,,3,Number,,,"RectangleAreaRoundedThree = ROUND((RectangleWidth * RectangleHeight), 3)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
17
|
+
MathExampleForm,,,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,2,3,,,Geometry.Rectangle.AreaRoundedFour,Area Rounded 5,RectangleAreaRoundedFive,,5,Number,,,"RectangleAreaRoundedFive = ROUND(RectangleArea, 5)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,true,,
|
|
18
|
+
MathExampleForm,,,,,,Basic Geometry,,Circle,,,,,1,12,,,Geometry.Circle.Radius,Radius,CircleRadius,,,Number,4,,,,85.523,,,,,,,,,,,,,,,,,,,,,,,,,,,,Sparse...,,,
|
|
19
|
+
MathExampleForm,,,,,,Basic Geometry,,Circle,,,,,2,3,,,Geometry.Circle.Area,Area,CircleArea,,unrounded,Number,,,CircleArea = PI() * CircleRadius^2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
20
|
+
MathExampleForm,,,,,,Basic Geometry,,Circle,,,,,2,3,,,Geometry.Circle.AreaRoundedDefault,Area Rounded,CircleAreaRoundedDefault,,default,Number,,,CircleAreaRoundedDefault = ROUND(PI() * CircleRadius^2),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
21
|
+
MathExampleForm,,,,,,Basic Geometry,,Circle,,,,,2,3,,,Geometry.Circle.AreaRoundedThree,Area Rounded 4,CircleAreaRoundedFour,,4,Number,,,"CircleAreaRoundedFour = ROUND(CircleArea,4)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
22
|
+
MathExampleForm,,,,,,Basic Geometry,,Circle,,,,,2,3,,,Geometry.Circle.AreaRoundedFour,Area Rounded 6,CircleAreaRoundedSix,,6,Number,,,"CircleAreaRoundedSix = ROUND(PI() * CircleRadius^2,6)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
23
|
+
MathExampleForm,,BoxCollectionData,,,1,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,true,1,1,3,10,Boxes,Boxes,Boxes,,,Array,,TabularAddress,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
24
|
+
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,Identifier,Identifier,BoxIdentifier,,,String,,,,,,,,,,,,,Box,,X,,,,,,,,,,,,,,,,,,,,,
|
|
25
|
+
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,BoxCategory,Category,BoxCategory,,,String,,,,,,,,,,,,,Box,,X,,,,,,,,,,,,,,,,,,,,,
|
|
26
|
+
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,Width,Width,BoxWidth,,,Number,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
27
|
+
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,Height,Height,BoxHeight,,,Number,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
28
|
+
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,Depth,Depth,BoxDepth,,,Number,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
29
|
+
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,Floorspace,Floorspace,BoxFloorspace,,,Number,,,BoxFloorspace = BoxWidth * BoxDepth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
30
|
+
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,Volume,Volume,BoxVolume,,,Number,,,BoxVolume = BoxFloorspace * BoxHeight,,,,,,,,,,Box,,true,,,,,,,,,,,,,,,,,,,,,
|
|
31
|
+
MathExampleForm,,BoxCollectionData,,,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,WarehouseSpaceLeft,Warehouse Space Left,WarehouseSpaceLeft,,,Number,,,,,,,,,,,,,Box,,true,,,,,,,,,,,,,,,,,,,,,
|
|
32
|
+
MathExampleForm,,BoxCollectionSecondaryTable,1,Boxes,1,Box Decoration,BoxDecroations,Box Decorations,BoxDecorationGroup,,,true,1,1,,,BoxDecorationSet,BoxDecorationSet,BoxDecorationSet,,,Array,,TabularAddress,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
33
|
+
MathExampleForm,,BoxCollectionSecondaryTable,,,,Box Decoration,BoxDecorations,Box Decorations,BoxDecorationGroup,,,,1,1,,,Identifier,Identifier,BoxIdentifier,,,String,,DataOnly,,,,,,,,,,,Box,,X,,,,,,,,,,,,,,,,,,,,,
|
|
34
|
+
MathExampleForm,,BoxCollectionSecondaryTable,,,,Box Decoration,BoxDecorations,Box Decorations,BoxDecorationGroup,,,,1,1,,,Volume,Volume,BoxVolume,,,PreciseNumber,,DataOnly,,,,,,,,,,,Box,,X,,,,,,,,,,,,,,,,,,,,,
|
|
35
|
+
MathExampleForm,,BoxCollectionSecondaryTable,,,,Box Decoration,BoxDecorations,Box Decorations,BoxDecorationGroup,,,,1,1,,,DecorativeText,Decorative Text,DecorativeText,,,String,,,,,,,,,,,,,Box,,X,,,,,,,,,,,,,,,,,,,,,
|
|
36
|
+
MathExampleForm,,,,,1,Box Summary Data,,Box Summary Data,,,,,1,1,,,Boxes[].Floorspace,BoxesFloorSpaceSet,BoxesFloorspaceSet,,,Object,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
37
|
+
MathExampleForm,,,,,1,Box Summary Data,,Box Summary Data,,,,,1,1,,,Boxes[].Volume,BoxesVolumeSet,BoxesVolumeSet,,,Object,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
38
|
+
MathExampleForm,,,,,1,Box Summary Data,,Box Summary Data,,,,,1,1,,,Boxes[].Depth,BoxesDepthSet,BoxesDepthSet,,,Object,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
39
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,1,12,,,BoxAggregate.Count,Box Count,BoxesCount,,,Number,,,BoxesCount = COUNT(BoxesFloorspaceSet),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
40
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,2,6,,,BoxAggregate.AverageFloorspace,Average Floorspace,BoxesAverageFloorspace,,,Number,,,BoxesAverageFloorspace = AVG(BoxesFloorspaceSet),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
41
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,2,6,,,BoxAggregate.TotalFloorspace,Total Floorspace,BoxesTotalFloorspace,,,Number,,,BoxesTotalFloorspace = SUM(BoxesFloorspaceSet),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
42
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,3,4,,,BoxAggregate.AverageVolume,Average Volume,BoxesAverageVolume,,,Number,,,BoxesAverageVolume = AVG(BoxesVolumeSet),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
43
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,3,4,,,BoxAggregate.TotalVolume,Total Volume,BoxesTotalVolume,,,Number,,,BoxesTotalVolume = COUNT(BoxesVolumeSet),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
44
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,3,4,,,BoxAggregate.TotalVolumeRounded,Total Volume Rounded,BoxesTotalVolumeRounded,,,Number,,,BoxesTotalVolumeRounded = ROUND(SUM(BoxesVolumeSet)),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
45
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,4,3,,,BoxAggregate.MinDepth,Minimum Depth,BoxesMinDepth,,,Number,,,BoxesMinDepth = MIN(BoxesDepthSet),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
46
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,4,3,,,BoxAggregate.MeanDepth,Mean Depth,BoxesMeanDepth,,,Number,,,BoxesMeanDepth = MEAN(BoxesDepthSet),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
47
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,4,3,,,BoxAggregate.MedianDepth,Median Depth,BoxesMedianDepth,,,Number,,,BoxesMedianDepth = MEDIAN(BoxesDepthSet),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
48
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,4,3,,,BoxAggregate.MaxDepth,Max Depth,BoxesMaxDepth,,,Number,,,BoxesMaxDepth = MAX(BoxesDepthSet),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
49
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,5,4,,,BoxChart_Sizes,Box Category Volume Comparison,BoxChart_Sizes,,,Object,,Chart,,,,,,,,,,,,,,,pie,,"objectkeystoarray(aggregationhistogrambyobject(Boxes, ""BoxCategory"", ""Volume""))",,Box Categories,"objectvaluestoarray(aggregationhistogrambyobject(Boxes, ""BoxCategory"", ""Volume""))",,,,,,,,,,,,,,
|
|
50
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,5,4,,,BoxChart_Size_Details,Box Size Comparison,BoxChart_Size_Details,,,Object,,Chart,,,,,,,,,,,,,,,bar,,"objectkeystoarray(aggregationhistogrambyobject(Boxes, ""Identifier"", ""Volume""))",,Box Volumes,"objectvaluestoarray(aggregationhistogrambyobject(Boxes, ""Identifier"", ""Volume""))",,,,,,,,,,,,,,
|
|
51
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,5,4,,,BoxChart_Scatter,Box Width x Height Scatter,BoxChart_Dimensions,,,Object,,Chart,,,,,,,,,,,,,,,radar,,"objectkeystoarray(aggregationhistogrambyobject(Boxes, ""Identifier"", ""Floorspace""))",,Box Floorspace Usage,"objectvaluestoarray(aggregationhistogrambyobject(Boxes, ""Identifier"", ""Floorspace""))",,,,,,,,,,,,,,
|
|
52
|
+
MathExampleForm,,,,,,Box Summary Data,,Box Summary Data,,,,,5,4,,,BoxChart_DataAll,Box Data Comparison,BoxChart_DataComparison,,,Object,,Chart,,,,,,,,,,,,,,,bar,,"objectkeystoarray(aggregationhistogrambyobject(Boxes, ""BoxCategory"", ""Volume""))",,Width,"objectvaluestoarray(aggregationhistogrambyobject(Boxes, ""BoxCategory"", ""Width""))",,Depth,"objectvaluestoarray(aggregationhistogrambyobject(Boxes, ""BoxCategory"", ""Depth""))",,Height,"objectvaluestoarray(aggregationhistogrambyobject(Boxes, ""BoxCategory"", ""Height""))",,,,,,,,
|
|
53
|
+
MathExampleForm,,,,,,Rectangular Area Help,,Rectangular Area Help,,,,,1,12,,,HelpContent.Cuboid,How to Cuboid Math,CuboidHelpContent,,,String,,Markdown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
54
|
+
MathExampleForm,,,,,,Complex Equation,,Complex Equation,,Vertical,,,1,6,,,ComplexEquation.PR,PR,CePR,,,Number,,,,,4.5,,The PR is *very* important.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
55
|
+
MathExampleForm,,,,,,Complex Equation,,Complex Equation,,,,,1,4,,,ComplexEquation.Z,Z,CeZ,,,Number,,,,,1.5,,Z _is not_ the z-index.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
56
|
+
MathExampleForm,,,,,,Complex Equation,,Complex Equation,,,,,1,4,,,ComplexEquation.C,C,CeC,,,Number,,,,,8.75,,C is the universal constant.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
57
|
+
MathExampleForm,,,,,,Complex Equation,,Complex Equation,,,,,2,6,,,ComplexEquation.Result,(160 * PR * Z) / (C / 100) * PR * Z + (160 * (1 - C / 100)),CeResult,,,Number,,,CeResult = (160 * CePR * CeZ) / (CeC / 100) * CePR * CeZ + (160 * (1 - CeC / 100)),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
58
|
+
MathExampleForm,,,,,,Complex Equation,,Complex Equation,,,,,2,6,,,ComplexEquation.ResultRounded,Rounded 3,CeResultRounded,,,Number,,,"CeResultRounded = ROUND(CeResult,3)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
59
|
+
MathExampleForm,,Rectangles,,,1,Rectangle Aggregation,,Rectangle Set,,,,false,1,1,20,,Rectangle,Rectangles,Rectangles,,,Array,,TabularAddress,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
60
|
+
MathExampleForm,,Rectangles,,,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Identifier,Identifier,RectangleIdentifier,,,String,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
61
|
+
MathExampleForm,,Rectangles,,,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Width,Width,RectangleWidth,,meters,Number,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
62
|
+
MathExampleForm,,Rectangles,,,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Height,Height,RectangleHeight,,meters,Number,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
63
|
+
MathExampleForm,,Rectangles,,,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Area,Area,RectangleArea,,,Number,,,RectangleArea = RectangleWidth * RectangleHeight,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
64
|
+
MathExampleForm,,Rectangles,,,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,AreaDegredation,Degredation (first minus each subsequent),AreaDegredation,,,Number,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
65
|
+
MathExampleForm,,Cylinders,,,1,Cylinders,,Cylinders,,,,false,1,1,,,Cylinders,Cylinders,Cylinders,,,Array,,TabularAddress,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
66
|
+
MathExampleForm,,Cylinders,,,,Cylinders,,Cylinders,,,,,1,1,,,Identifier,Identifier,Identifier,,,String,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
67
|
+
MathExampleForm,,Cylinders,,,,Cylinders,,Cylinders,,,,,1,1,,,Radius,Radius,Radius,,,PreciseNumber,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
68
|
+
MathExampleForm,,Cylinders,,,,Cylinders,,Cylinders,,,,,1,1,,,Height,Height,Height,,,PreciseNumber,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
69
|
+
MathExampleForm,,Cylinders,,,,Cylinders,,Cylinders,,,,,1,1,,,Circumference,Circumference,Circumference,,,PreciseNumber,,,Circumference = 2 * PI() * Radius,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
70
|
+
MathExampleForm,,Cylinders,,,,Cylinders,,Cylinders,,,,,1,1,,,Area,Area,Area,,,PreciseNumber,,,Area = (2 * PI() * Radius * Height) + (2 * PI() * Radius ^2),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
71
|
+
MathExampleForm,,,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,CustomCSSClass,,1,1,,,Listopia.Filters.Colour,Color Filter,ColourFilter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
72
|
+
MathExampleForm,,,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,2,1,,,Listopia.Color,Color,Colors,,,String,,Option,"SUBTRACTINGSUMMATION(Rectangles, ""Area"", ""AreaDegredation"")",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
73
|
+
MathExampleForm,,,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,2,1,,,Listopia.Box,Box,BoxSelection,,,String,,Option,,,,,,,,,,,Box,,,,,,,,,,,,,,,,,,,,,,,
|
|
74
|
+
MathExampleForm,,,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,3,1,,,Listopia.Fruit,Fruit,FruitSelection,,,String,,Option,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
75
|
+
MathExampleForm,,,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,3,1,,,Listopia.Stone,Stone,Stones,,,String,,Option,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
@@ -75,6 +75,12 @@
|
|
|
75
75
|
"Units": "planetary",
|
|
76
76
|
"Section": "Header",
|
|
77
77
|
"Group": "General_Info"
|
|
78
|
+
},
|
|
79
|
+
"AnotherObject": {
|
|
80
|
+
"NotPictForm": {
|
|
81
|
+
"x": 15.2,
|
|
82
|
+
"y": 17
|
|
83
|
+
}
|
|
78
84
|
}
|
|
79
85
|
},
|
|
80
86
|
"Header.WarehouseVolume": {
|
|
@@ -112,6 +118,11 @@
|
|
|
112
118
|
],
|
|
113
119
|
"Section": "REST_Request",
|
|
114
120
|
"Group": "Book_Data"
|
|
121
|
+
},
|
|
122
|
+
"AnotherObject": {
|
|
123
|
+
"NotPictForm": {
|
|
124
|
+
"x": 86
|
|
125
|
+
}
|
|
115
126
|
}
|
|
116
127
|
},
|
|
117
128
|
"HelpContent.Math": {
|
|
@@ -139,7 +150,13 @@
|
|
|
139
150
|
"Section": "Basic_Geometry",
|
|
140
151
|
"Group": "BasicGeoGrp"
|
|
141
152
|
},
|
|
142
|
-
"Default": "7.25"
|
|
153
|
+
"Default": "7.25",
|
|
154
|
+
"AnotherObject": {
|
|
155
|
+
"NotPictForm": {
|
|
156
|
+
"x": 11,
|
|
157
|
+
"y": 190
|
|
158
|
+
}
|
|
159
|
+
}
|
|
143
160
|
},
|
|
144
161
|
"Geometry.Rectangle.Height": {
|
|
145
162
|
"Hash": "RectangleHeight",
|
|
@@ -152,7 +169,12 @@
|
|
|
152
169
|
"Section": "Basic_Geometry",
|
|
153
170
|
"Group": "BasicGeoGrp"
|
|
154
171
|
},
|
|
155
|
-
"Default": "10.3571"
|
|
172
|
+
"Default": "10.3571",
|
|
173
|
+
"AnotherObject": {
|
|
174
|
+
"NotPictForm": {
|
|
175
|
+
"y": 22
|
|
176
|
+
}
|
|
177
|
+
}
|
|
156
178
|
},
|
|
157
179
|
"Geometry.Rectangle.Area": {
|
|
158
180
|
"Hash": "RectangleArea",
|
|
@@ -164,7 +186,8 @@
|
|
|
164
186
|
"Width": "3",
|
|
165
187
|
"Units": "unrounded",
|
|
166
188
|
"Section": "Basic_Geometry",
|
|
167
|
-
"Group": "BasicGeoGrp"
|
|
189
|
+
"Group": "BasicGeoGrp",
|
|
190
|
+
"RandomData": "This is a test for random data injection."
|
|
168
191
|
},
|
|
169
192
|
"Description": "Area of the Rectangle."
|
|
170
193
|
},
|
|
@@ -217,7 +240,8 @@
|
|
|
217
240
|
"Width": "12",
|
|
218
241
|
"DecimalPrecision": 4,
|
|
219
242
|
"Section": "Basic_Geometry",
|
|
220
|
-
"Group": "Circle"
|
|
243
|
+
"Group": "Circle",
|
|
244
|
+
"RandomData": "Sparse..."
|
|
221
245
|
},
|
|
222
246
|
"Default": "85.523"
|
|
223
247
|
},
|
|
@@ -496,6 +520,35 @@
|
|
|
496
520
|
]
|
|
497
521
|
}
|
|
498
522
|
},
|
|
523
|
+
"BoxChart_DataAll": {
|
|
524
|
+
"Hash": "BoxChart_DataComparison",
|
|
525
|
+
"Name": "Box Data Comparison",
|
|
526
|
+
"DataAddress": "BoxChart_DataAll",
|
|
527
|
+
"DataType": "Object",
|
|
528
|
+
"PictForm": {
|
|
529
|
+
"InputType": "Chart",
|
|
530
|
+
"Row": "5",
|
|
531
|
+
"Width": "4",
|
|
532
|
+
"Section": "Box_Summary_Data",
|
|
533
|
+
"Group": "Box_Summary_Data",
|
|
534
|
+
"ChartType": "bar",
|
|
535
|
+
"ChartLabelsSolver": "objectkeystoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Volume\"))",
|
|
536
|
+
"ChartDatasetsSolvers": [
|
|
537
|
+
{
|
|
538
|
+
"DataSolver": "objectvaluestoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Width\"))",
|
|
539
|
+
"Label": "Width"
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"DataSolver": "objectvaluestoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Depth\"))",
|
|
543
|
+
"Label": "Data"
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"DataSolver": "objectvaluestoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Height\"))",
|
|
547
|
+
"Label": "Data"
|
|
548
|
+
}
|
|
549
|
+
]
|
|
550
|
+
}
|
|
551
|
+
},
|
|
499
552
|
"HelpContent.Cuboid": {
|
|
500
553
|
"Hash": "CuboidHelpContent",
|
|
501
554
|
"Name": "How to Cuboid Math",
|
|
@@ -504,7 +557,7 @@
|
|
|
504
557
|
"PictForm": {
|
|
505
558
|
"InputType": "Markdown",
|
|
506
559
|
"Row": "1",
|
|
507
|
-
"Width": "
|
|
560
|
+
"Width": "12",
|
|
508
561
|
"Section": "Rectangular_Area_Help",
|
|
509
562
|
"Group": "Rectangular_Area_Help"
|
|
510
563
|
},
|
|
@@ -517,7 +570,7 @@
|
|
|
517
570
|
"DataType": "Number",
|
|
518
571
|
"PictForm": {
|
|
519
572
|
"Row": "1",
|
|
520
|
-
"Width": "
|
|
573
|
+
"Width": "6",
|
|
521
574
|
"Tooltip": "The PR is *very* important.",
|
|
522
575
|
"Section": "Complex_Equation",
|
|
523
576
|
"Group": "Complex_Equation"
|
|
@@ -48,8 +48,9 @@ MathExampleForm,,,,,,Box Summary Data,Box_Summary_Data,Box Summary Data,Box_Summ
|
|
|
48
48
|
MathExampleForm,,,,,,Box Summary Data,Box_Summary_Data,Box Summary Data,Box_Summary_Data,,,,5,4,,,BoxChart_Sizes,Box Category Volume Comparison,BoxChart_Sizes,,,Object,,Chart,,,,,,,,,,,,,,,pie,,"objectkeystoarray(aggregationhistogrambyobject(Boxes, ""BoxCategory"", ""Volume""))",,Box Categories,"objectvaluestoarray(aggregationhistogrambyobject(Boxes, ""BoxCategory"", ""Volume""))"
|
|
49
49
|
MathExampleForm,,,,,,Box Summary Data,Box_Summary_Data,Box Summary Data,Box_Summary_Data,,,,5,4,,,BoxChart_Size_Details,Box Size Comparison,BoxChart_Size_Details,,,Object,,Chart,,,,,,,,,,,,,,,bar,,"objectkeystoarray(aggregationhistogrambyobject(Boxes, ""Identifier"", ""Volume""))",,Box Volumes,"objectvaluestoarray(aggregationhistogrambyobject(Boxes, ""Identifier"", ""Volume""))"
|
|
50
50
|
MathExampleForm,,,,,,Box Summary Data,Box_Summary_Data,Box Summary Data,Box_Summary_Data,,,,5,4,,,BoxChart_Scatter,Box Width x Height Scatter,BoxChart_Dimensions,,,Object,,Chart,,,,,,,,,,,,,,,radar,,"objectkeystoarray(aggregationhistogrambyobject(Boxes, ""Identifier"", ""Floorspace""))",,Box Floorspace Usage,"objectvaluestoarray(aggregationhistogrambyobject(Boxes, ""Identifier"", ""Floorspace""))"
|
|
51
|
-
MathExampleForm,,,,,,
|
|
52
|
-
MathExampleForm,,,,,,
|
|
51
|
+
MathExampleForm,,,,,,Box Summary Data,Box_Summary_Data,Box Summary Data,Box_Summary_Data,,,,5,4,,,BoxChart_DataAll,Box Data Comparison,BoxChart_DataComparison,,,Object,,Chart,,,,,,,,,,,,,,,bar,,"objectkeystoarray(aggregationhistogrambyobject(Boxes, ""BoxCategory"", ""Volume""))",,Width,"objectvaluestoarray(aggregationhistogrambyobject(Boxes, ""BoxCategory"", ""Width""))"
|
|
52
|
+
MathExampleForm,,,,,,Rectangular Area Help,Rectangular_Area_Help,Rectangular Area Help,Rectangular_Area_Help,,,,1,12,,,HelpContent.Cuboid,How to Cuboid Math,CuboidHelpContent,,,String,,Markdown,,,,,,,,,,,,,,,,,,,,
|
|
53
|
+
MathExampleForm,,,,,,Complex Equation,Complex_Equation,Complex Equation,Complex_Equation,Vertical,,,1,6,,,ComplexEquation.PR,PR,CePR,,,Number,,,CeResult = (160 * CePR * CeZ) / (CeC / 100) * CePR * CeZ + (160 * (1 - CeC / 100)),1,4.5,,The PR is *very* important.,,,,,,,,,,,,,,,
|
|
53
54
|
MathExampleForm,,,,,,Complex Equation,Complex_Equation,Complex Equation,Complex_Equation,Vertical,,,1,4,,,ComplexEquation.Z,Z,CeZ,,,Number,,,"CeResultRounded = ROUND(CeResult,3)",1,1.5,,Z _is not_ the z-index.,,,,,,,,,,,,,,,
|
|
54
55
|
MathExampleForm,,,,,,Complex Equation,Complex_Equation,Complex Equation,Complex_Equation,Vertical,,,1,4,,,ComplexEquation.C,C,CeC,,,Number,,,,,8.75,,C is the universal constant.,,,,,,,,,,,,,,,
|
|
55
56
|
MathExampleForm,,,,,,Complex Equation,Complex_Equation,Complex Equation,Complex_Equation,Vertical,,,2,6,,,ComplexEquation.Result,(160 * PR * Z) / (C / 100) * PR * Z + (160 * (1 - C / 100)),CeResult,,,Number,,,,,,,,,,,,,,,,,,,,,,
|
|
@@ -75,6 +75,12 @@
|
|
|
75
75
|
"Units": "planetary",
|
|
76
76
|
"Section": "Header",
|
|
77
77
|
"Group": "General_Info"
|
|
78
|
+
},
|
|
79
|
+
"AnotherObject": {
|
|
80
|
+
"NotPictForm": {
|
|
81
|
+
"x": 15.2,
|
|
82
|
+
"y": 17
|
|
83
|
+
}
|
|
78
84
|
}
|
|
79
85
|
},
|
|
80
86
|
"Header.WarehouseVolume": {
|
|
@@ -112,6 +118,11 @@
|
|
|
112
118
|
],
|
|
113
119
|
"Section": "REST_Request",
|
|
114
120
|
"Group": "Book_Data"
|
|
121
|
+
},
|
|
122
|
+
"AnotherObject": {
|
|
123
|
+
"NotPictForm": {
|
|
124
|
+
"x": 86
|
|
125
|
+
}
|
|
115
126
|
}
|
|
116
127
|
},
|
|
117
128
|
"HelpContent.Math": {
|
|
@@ -139,7 +150,13 @@
|
|
|
139
150
|
"Section": "Basic_Geometry",
|
|
140
151
|
"Group": "BasicGeoGrp"
|
|
141
152
|
},
|
|
142
|
-
"Default": "7.25"
|
|
153
|
+
"Default": "7.25",
|
|
154
|
+
"AnotherObject": {
|
|
155
|
+
"NotPictForm": {
|
|
156
|
+
"x": 11,
|
|
157
|
+
"y": 190
|
|
158
|
+
}
|
|
159
|
+
}
|
|
143
160
|
},
|
|
144
161
|
"Geometry.Rectangle.Height": {
|
|
145
162
|
"Hash": "RectangleHeight",
|
|
@@ -152,7 +169,12 @@
|
|
|
152
169
|
"Section": "Basic_Geometry",
|
|
153
170
|
"Group": "BasicGeoGrp"
|
|
154
171
|
},
|
|
155
|
-
"Default": "10.3571"
|
|
172
|
+
"Default": "10.3571",
|
|
173
|
+
"AnotherObject": {
|
|
174
|
+
"NotPictForm": {
|
|
175
|
+
"y": 22
|
|
176
|
+
}
|
|
177
|
+
}
|
|
156
178
|
},
|
|
157
179
|
"Geometry.Rectangle.Area": {
|
|
158
180
|
"Hash": "RectangleArea",
|
|
@@ -164,7 +186,8 @@
|
|
|
164
186
|
"Width": "3",
|
|
165
187
|
"Units": "unrounded",
|
|
166
188
|
"Section": "Basic_Geometry",
|
|
167
|
-
"Group": "BasicGeoGrp"
|
|
189
|
+
"Group": "BasicGeoGrp",
|
|
190
|
+
"RandomData": "This is a test for random data injection."
|
|
168
191
|
},
|
|
169
192
|
"Description": "Area of the Rectangle."
|
|
170
193
|
},
|
|
@@ -217,7 +240,8 @@
|
|
|
217
240
|
"Width": "12",
|
|
218
241
|
"DecimalPrecision": 4,
|
|
219
242
|
"Section": "Basic_Geometry",
|
|
220
|
-
"Group": "Circle"
|
|
243
|
+
"Group": "Circle",
|
|
244
|
+
"RandomData": "Sparse..."
|
|
221
245
|
},
|
|
222
246
|
"Default": "85.523"
|
|
223
247
|
},
|
|
@@ -496,6 +520,35 @@
|
|
|
496
520
|
]
|
|
497
521
|
}
|
|
498
522
|
},
|
|
523
|
+
"BoxChart_DataAll": {
|
|
524
|
+
"Hash": "BoxChart_DataComparison",
|
|
525
|
+
"Name": "Box Data Comparison",
|
|
526
|
+
"DataAddress": "BoxChart_DataAll",
|
|
527
|
+
"DataType": "Object",
|
|
528
|
+
"PictForm": {
|
|
529
|
+
"InputType": "Chart",
|
|
530
|
+
"Row": "5",
|
|
531
|
+
"Width": "4",
|
|
532
|
+
"Section": "Box_Summary_Data",
|
|
533
|
+
"Group": "Box_Summary_Data",
|
|
534
|
+
"ChartType": "bar",
|
|
535
|
+
"ChartLabelsSolver": "objectkeystoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Volume\"))",
|
|
536
|
+
"ChartDatasetsSolvers": [
|
|
537
|
+
{
|
|
538
|
+
"DataSolver": "objectvaluestoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Width\"))",
|
|
539
|
+
"Label": "Width"
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"DataSolver": "objectvaluestoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Depth\"))",
|
|
543
|
+
"Label": "Data"
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"DataSolver": "objectvaluestoarray(aggregationhistogrambyobject(Boxes, \"BoxCategory\", \"Height\"))",
|
|
547
|
+
"Label": "Data"
|
|
548
|
+
}
|
|
549
|
+
]
|
|
550
|
+
}
|
|
551
|
+
},
|
|
499
552
|
"HelpContent.Cuboid": {
|
|
500
553
|
"Hash": "CuboidHelpContent",
|
|
501
554
|
"Name": "How to Cuboid Math",
|
|
@@ -504,7 +557,7 @@
|
|
|
504
557
|
"PictForm": {
|
|
505
558
|
"InputType": "Markdown",
|
|
506
559
|
"Row": "1",
|
|
507
|
-
"Width": "
|
|
560
|
+
"Width": "12",
|
|
508
561
|
"Section": "Rectangular_Area_Help",
|
|
509
562
|
"Group": "Rectangular_Area_Help"
|
|
510
563
|
},
|
|
@@ -517,7 +570,7 @@
|
|
|
517
570
|
"DataType": "Number",
|
|
518
571
|
"PictForm": {
|
|
519
572
|
"Row": "1",
|
|
520
|
-
"Width": "
|
|
573
|
+
"Width": "6",
|
|
521
574
|
"Tooltip": "The PR is *very* important.",
|
|
522
575
|
"Section": "Complex_Equation",
|
|
523
576
|
"Group": "Complex_Equation"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pict-section-form",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.151",
|
|
4
4
|
"description": "Pict dynamic form sections",
|
|
5
5
|
"main": "source/Pict-Section-Form.js",
|
|
6
6
|
"directories": {
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
"browser-env": "^3.3.0",
|
|
35
35
|
"eslint": "^9.38.0",
|
|
36
36
|
"jquery": "^3.7.1",
|
|
37
|
-
"pict": "^1.0.
|
|
37
|
+
"pict": "^1.0.323",
|
|
38
38
|
"pict-application": "^1.0.29",
|
|
39
|
-
"pict-service-commandlineutility": "^1.0.
|
|
40
|
-
"quackage": "^1.0.
|
|
39
|
+
"pict-service-commandlineutility": "^1.0.16",
|
|
40
|
+
"quackage": "^1.0.45",
|
|
41
41
|
"tui-grid": "^4.21.22",
|
|
42
42
|
"typescript": "^5.9.3"
|
|
43
43
|
},
|
|
@@ -90,6 +90,11 @@ class PictDynamicSolver extends libPictProvider
|
|
|
90
90
|
let tmpResultsObject = {};
|
|
91
91
|
let tmpSolutionValue = this.fable.ExpressionParser.solve(pSolverExpression, tmpViewMarshalDestinationObject, tmpResultsObject, this.pict.manifest);
|
|
92
92
|
|
|
93
|
+
if (tmpResultsObject.fable)
|
|
94
|
+
{
|
|
95
|
+
delete tmpResultsObject.fable;
|
|
96
|
+
}
|
|
97
|
+
|
|
93
98
|
this.pict.log.trace(`Manual solve executed for expression: ${pSolverExpression}`, tmpResultsObject);
|
|
94
99
|
|
|
95
100
|
return tmpSolutionValue;
|
|
@@ -474,6 +474,41 @@ class CustomInputHandler extends libPictSectionInputExtension
|
|
|
474
474
|
data: (Array.isArray(tmpSolvedDataSet)) ? tmpSolvedDataSet : []
|
|
475
475
|
});
|
|
476
476
|
|
|
477
|
+
if (tmpCurrentSolverExpression.ChartType)
|
|
478
|
+
{
|
|
479
|
+
tmpDataObject.type = tmpCurrentSolverExpression.ChartType;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
// Add in any custom Y axis ID
|
|
483
|
+
if (tmpCurrentSolverExpression.CustomYAxisID)
|
|
484
|
+
{
|
|
485
|
+
tmpDataObject.yAxisID = tmpCurrentSolverExpression.CustomYAxisID;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
// Add in any custom X axis ID
|
|
489
|
+
if (tmpCurrentSolverExpression.CustomXAxisID)
|
|
490
|
+
{
|
|
491
|
+
tmpDataObject.xAxisID = tmpCurrentSolverExpression.CustomXAxisID;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// Add in a custom Tension
|
|
495
|
+
if (tmpCurrentSolverExpression.Tension)
|
|
496
|
+
{
|
|
497
|
+
tmpDataObject.tension = tmpCurrentSolverExpression.Tension;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// Add in a custom pointRadius
|
|
501
|
+
if (tmpCurrentSolverExpression.PointRadius)
|
|
502
|
+
{
|
|
503
|
+
tmpDataObject.pointRadius = tmpCurrentSolverExpression.PointRadius;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
// Check if this has a stack defined (for stacked bar charts and such)
|
|
507
|
+
if (tmpCurrentSolverExpression.StackGroup)
|
|
508
|
+
{
|
|
509
|
+
tmpDataObject.stack = tmpCurrentSolverExpression.StackGroup;
|
|
510
|
+
}
|
|
511
|
+
|
|
477
512
|
if (tmpParsingConfiguration.ObjectType === 'array')
|
|
478
513
|
{
|
|
479
514
|
if (Array.isArray(tmpSolvedDataSet))
|
|
@@ -88,24 +88,24 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
88
88
|
let tmpDescriptor = pView.options.Manifests.Section.Descriptors[tmpDescriptorKeys[i]];
|
|
89
89
|
|
|
90
90
|
if (
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
91
|
+
// If there is an obect in the descriptor
|
|
92
|
+
typeof (tmpDescriptor) == 'object' &&
|
|
93
|
+
// AND it has a PictForm property
|
|
94
|
+
('PictForm' in tmpDescriptor) &&
|
|
95
|
+
// AND the PictForm property is an object
|
|
96
|
+
typeof (tmpDescriptor.PictForm) == 'object' &&
|
|
97
|
+
// AND the PictForm object has a Section property
|
|
98
|
+
('Section' in tmpDescriptor.PictForm) &&
|
|
99
|
+
// AND the Section property matches our section hash
|
|
100
|
+
tmpDescriptor.PictForm.Section == pView.sectionDefinition.Hash
|
|
101
|
+
)
|
|
102
102
|
{
|
|
103
103
|
tmpDescriptor.PictForm.InformaryDataAddress = tmpDescriptorKeys[i];
|
|
104
104
|
|
|
105
105
|
// Decorate the view hash for reverse lookup
|
|
106
106
|
tmpDescriptor.PictForm.ViewHash = pView.Hash;
|
|
107
107
|
|
|
108
|
-
let tmpGroupHash = (typeof(tmpDescriptor.PictForm.Group) == 'string') ? tmpDescriptor.PictForm.Group : 'Default';
|
|
108
|
+
let tmpGroupHash = (typeof (tmpDescriptor.PictForm.Group) == 'string') ? tmpDescriptor.PictForm.Group : 'Default';
|
|
109
109
|
|
|
110
110
|
if (!('Groups' in pView.sectionDefinition))
|
|
111
111
|
{
|
|
@@ -122,9 +122,9 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
122
122
|
tmpGroup.Rows = [];
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
let tmpRowHash = (typeof(tmpDescriptor.PictForm.Row) == 'string') ? tmpDescriptor.PictForm.Row :
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
let tmpRowHash = (typeof (tmpDescriptor.PictForm.Row) == 'string') ? tmpDescriptor.PictForm.Row :
|
|
126
|
+
(typeof (tmpDescriptor.PictForm.Row) == 'number') ? `Row_${tmpDescriptor.PictForm.Row.toString()}` :
|
|
127
|
+
'Row_Default';
|
|
128
128
|
|
|
129
129
|
tmpDescriptor.PictForm.RowHash = tmpRowHash;
|
|
130
130
|
|
|
@@ -183,7 +183,7 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
183
183
|
tmpInput.PictForm.ViewHash = pView.Hash;
|
|
184
184
|
|
|
185
185
|
tmpInput.PictForm.InformaryDataAddress = tmpSupportingManifestDescriptorKeys[k];
|
|
186
|
-
if (typeof(tmpGroup.RecordSetAddress) == 'string')
|
|
186
|
+
if (typeof (tmpGroup.RecordSetAddress) == 'string')
|
|
187
187
|
{
|
|
188
188
|
tmpInput.PictForm.InformaryContainerAddress = tmpGroup.RecordSetAddress;
|
|
189
189
|
}
|
|
@@ -206,13 +206,13 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
206
206
|
{
|
|
207
207
|
pView.log.trace(`RecordSetAddress is an Array for [${tmpGroup.Hash}]`);
|
|
208
208
|
}
|
|
209
|
-
else if (typeof(tmpRecordSetDataObject) === 'object')
|
|
209
|
+
else if (typeof (tmpRecordSetDataObject) === 'object')
|
|
210
210
|
{
|
|
211
211
|
pView.log.trace(`RecordSetAddress is an Object for [${tmpGroup.Hash}]`);
|
|
212
212
|
}
|
|
213
213
|
else
|
|
214
214
|
{
|
|
215
|
-
pView.log.error(`RecordSetAddress is not an Array or Object for [${tmpGroup.Hash}]; it is a [${typeof(tmpRecordSetDataObject)}] -- likely the data shape will cause erratic problems.`);
|
|
215
|
+
pView.log.error(`RecordSetAddress is not an Array or Object for [${tmpGroup.Hash}]; it is a [${typeof (tmpRecordSetDataObject)}] -- likely the data shape will cause erratic problems.`);
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
// Check if there are default rows to add
|
|
@@ -263,7 +263,7 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
263
263
|
}
|
|
264
264
|
}
|
|
265
265
|
// Add the section if it do no exist
|
|
266
|
-
const tmpSection = { Name:pSectionHash, Hash:pSectionHash, Solvers:[], Groups:[] };
|
|
266
|
+
const tmpSection = { Name: pSectionHash, Hash: pSectionHash, Solvers: [], Groups: [] };
|
|
267
267
|
this.manifest.Sections.push(tmpSection);
|
|
268
268
|
return tmpSection;
|
|
269
269
|
}
|
|
@@ -278,7 +278,7 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
278
278
|
*/
|
|
279
279
|
getManifestGroup(pManifestSection, pGroupHash)
|
|
280
280
|
{
|
|
281
|
-
let tmpManifestSection = (typeof(pManifestSection) === 'string') ? this.getManifestSection(pManifestSection) : pManifestSection;
|
|
281
|
+
let tmpManifestSection = (typeof (pManifestSection) === 'string') ? this.getManifestSection(pManifestSection) : pManifestSection;
|
|
282
282
|
for (const tmpGroup of tmpManifestSection.Groups)
|
|
283
283
|
{
|
|
284
284
|
if (tmpGroup.Hash === pGroupHash)
|
|
@@ -287,7 +287,7 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
289
|
// Add the group if it do no exist
|
|
290
|
-
const tmpGroup = { Name:pGroupHash, Hash:pGroupHash, Rows:[], RecordSetSolvers:[] };
|
|
290
|
+
const tmpGroup = { Name: pGroupHash, Hash: pGroupHash, Rows: [], RecordSetSolvers: [] };
|
|
291
291
|
tmpManifestSection.Groups.push(tmpGroup);
|
|
292
292
|
return tmpGroup;
|
|
293
293
|
}
|
|
@@ -312,6 +312,65 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
312
312
|
return true;
|
|
313
313
|
}
|
|
314
314
|
|
|
315
|
+
decorateChartDescriptorFromTabularRow(pRecord, pDescriptor, pPostfix)
|
|
316
|
+
{
|
|
317
|
+
let tmpRecord = pRecord;
|
|
318
|
+
let tmpDescriptor = pDescriptor;
|
|
319
|
+
let tmpPostfix = pPostfix || '';
|
|
320
|
+
|
|
321
|
+
// Log out the data coming in
|
|
322
|
+
//this.log.debug(`Decorating chart descriptor from tabular row for ${tmpDescriptor.Hash} with postfix [${tmpPostfix}]`,{ Record: tmpRecord, Descriptor: tmpDescriptor });
|
|
323
|
+
|
|
324
|
+
// Charts will pull in five extra pieces of config if they exist: ChartType, ChartLabelsAddress, ChartLabelsSolver, ChartDatasetsAddress, ChartDatasetsSolver
|
|
325
|
+
if (tmpRecord.ChartType)
|
|
326
|
+
{
|
|
327
|
+
tmpDescriptor.PictForm.ChartType = tmpRecord.ChartType;
|
|
328
|
+
}
|
|
329
|
+
if (tmpPostfix == '')
|
|
330
|
+
{
|
|
331
|
+
// Maybe later this gets more advanced.
|
|
332
|
+
if (tmpRecord.ChartLabelsAddress)
|
|
333
|
+
{
|
|
334
|
+
tmpDescriptor.PictForm.ChartLabelsAddress = tmpRecord.ChartLabelsAddress;
|
|
335
|
+
}
|
|
336
|
+
if (tmpRecord.ChartLabelsSolver)
|
|
337
|
+
{
|
|
338
|
+
tmpDescriptor.PictForm.ChartLabelsSolver = tmpRecord.ChartLabelsSolver;
|
|
339
|
+
}
|
|
340
|
+
if (tmpRecord.ChartDatasetsAddress)
|
|
341
|
+
{
|
|
342
|
+
tmpDescriptor.PictForm.ChartDatasetsAddress = tmpRecord.ChartDatasetsAddress;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
if (tmpRecord[`ChartDatasetsSolver${tmpPostfix}`])
|
|
347
|
+
{
|
|
348
|
+
let tmpSolverEntry = { DataSolver: tmpRecord[`ChartDatasetsSolver${tmpPostfix}`] };
|
|
349
|
+
//this.log.debug(`Adding chart dataset solver for descriptor ${tmpDescriptor.Hash} with postfix [${tmpPostfix}]`, tmpSolverEntry);
|
|
350
|
+
if (!tmpRecord[`ChartDatasetsLabel${tmpPostfix}`])
|
|
351
|
+
{
|
|
352
|
+
tmpSolverEntry.Label = 'Data';
|
|
353
|
+
}
|
|
354
|
+
else
|
|
355
|
+
{
|
|
356
|
+
tmpSolverEntry.Label = tmpRecord[`ChartDatasetsLabel${tmpPostfix}`];
|
|
357
|
+
}
|
|
358
|
+
if (tmpRecord[`ChartDataSetsSolverChartType${tmpPostfix}`])
|
|
359
|
+
{
|
|
360
|
+
tmpSolverEntry.ChartType = tmpRecord[`ChartDataSetsSolverChartType${tmpPostfix}`];
|
|
361
|
+
}
|
|
362
|
+
if (!tmpDescriptor.PictForm.ChartDatasetsSolvers || !Array.isArray(tmpDescriptor.PictForm.ChartDatasetsSolvers))
|
|
363
|
+
{
|
|
364
|
+
tmpDescriptor.PictForm.ChartDatasetsSolvers = [];
|
|
365
|
+
}
|
|
366
|
+
// Log and add the solver entry
|
|
367
|
+
//this.log.debug(`Adding chart dataset solver entry for ${tmpDescriptor.Hash} with postfix [${tmpPostfix}]`, tmpSolverEntry);
|
|
368
|
+
tmpDescriptor.PictForm.ChartDatasetsSolvers.push(tmpSolverEntry);
|
|
369
|
+
}
|
|
370
|
+
// Log the descripter going out
|
|
371
|
+
//this.log.debug(`Decorated chart descriptor from tabular row for ${tmpDescriptor.Hash} with postfix [${tmpPostfix}]`, tmpDescriptor);
|
|
372
|
+
}
|
|
373
|
+
|
|
315
374
|
/**
|
|
316
375
|
* Add a manifest descriptor from a tabular row.
|
|
317
376
|
*
|
|
@@ -322,7 +381,7 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
322
381
|
*/
|
|
323
382
|
tabularRowAddDescriptor(pManifestFactory, pRecord)
|
|
324
383
|
{
|
|
325
|
-
if (typeof(pRecord) !== 'object')
|
|
384
|
+
if (typeof (pRecord) !== 'object')
|
|
326
385
|
{
|
|
327
386
|
this.log.error(`Invalid record passed to addManifestDescriptor: ${pRecord}`);
|
|
328
387
|
return false;
|
|
@@ -396,11 +455,11 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
396
455
|
let tmpOptionSetValuePair = tmpOptionSetValues[i].split('^');
|
|
397
456
|
if (tmpOptionSetValuePair.length == 2)
|
|
398
457
|
{
|
|
399
|
-
tmpOptionSet.push({ id:tmpOptionSetValuePair[0].trim(), text:tmpOptionSetValuePair[1].trim() });
|
|
458
|
+
tmpOptionSet.push({ id: tmpOptionSetValuePair[0].trim(), text: tmpOptionSetValuePair[1].trim() });
|
|
400
459
|
}
|
|
401
460
|
else
|
|
402
461
|
{
|
|
403
|
-
tmpOptionSet.push({ id:tmpOptionSetValues[i].trim(), text:tmpOptionSetValues[i].trim() });
|
|
462
|
+
tmpOptionSet.push({ id: tmpOptionSetValues[i].trim(), text: tmpOptionSetValues[i].trim() });
|
|
404
463
|
}
|
|
405
464
|
}
|
|
406
465
|
}
|
|
@@ -411,7 +470,7 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
411
470
|
}
|
|
412
471
|
}
|
|
413
472
|
|
|
414
|
-
if (((tmpDescriptor.PictForm.InputType == 'TabSectionSelector') || (tmpDescriptor.PictForm.InputType == 'TabGroupSelector')) &&
|
|
473
|
+
if (((tmpDescriptor.PictForm.InputType == 'TabSectionSelector') || (tmpDescriptor.PictForm.InputType == 'TabGroupSelector')) && (tmpRecord['Input Extra']))
|
|
415
474
|
{
|
|
416
475
|
let tmpTabSet = [];
|
|
417
476
|
let tmpTabSetNames = [];
|
|
@@ -451,7 +510,7 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
451
510
|
}
|
|
452
511
|
|
|
453
512
|
// Verbose obtuse data validation.
|
|
454
|
-
if ((`TriggerGroup` in tmpRecord) && (typeof(tmpRecord.TriggerGroup) === 'string') && (tmpRecord.TriggerGroup != ''))
|
|
513
|
+
if ((`TriggerGroup` in tmpRecord) && (typeof (tmpRecord.TriggerGroup) === 'string') && (tmpRecord.TriggerGroup != ''))
|
|
455
514
|
{
|
|
456
515
|
if (!Array.isArray(tmpDescriptor.PictForm.Providers))
|
|
457
516
|
{
|
|
@@ -465,11 +524,11 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
465
524
|
MarshalEmptyValues: tmpRecord.MarshalEmptyValues ? true : false
|
|
466
525
|
});
|
|
467
526
|
|
|
468
|
-
if ((`TriggerAddress` in tmpRecord) && (typeof(tmpRecord.TriggerAddress) === 'string') && (tmpRecord.TriggerAddress != ''))
|
|
527
|
+
if ((`TriggerAddress` in tmpRecord) && (typeof (tmpRecord.TriggerAddress) === 'string') && (tmpRecord.TriggerAddress != ''))
|
|
469
528
|
{
|
|
470
529
|
tmpDescriptor.PictForm.AutofillTriggerGroup.TriggerAddress = tmpRecord.TriggerAddress;
|
|
471
530
|
}
|
|
472
|
-
if ((`TriggerAllInputs` in tmpRecord) && (typeof(tmpRecord.TriggerAllInputs) === 'string')
|
|
531
|
+
if ((`TriggerAllInputs` in tmpRecord) && (typeof (tmpRecord.TriggerAllInputs) === 'string')
|
|
473
532
|
&& ((tmpRecord.TriggerAllInputs.toLowerCase() == 'true') || (tmpRecord.TriggerAllInputs.toLowerCase() == 'x') || (tmpRecord.TriggerAllInputs.toLowerCase() == '1')))
|
|
474
533
|
{
|
|
475
534
|
tmpDescriptor.PictForm.AutofillTriggerGroup.TriggerAllInputs = true;
|
|
@@ -481,9 +540,9 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
481
540
|
}
|
|
482
541
|
}
|
|
483
542
|
|
|
484
|
-
if ((`Entity` in tmpRecord) && (typeof(tmpRecord.Entity) === 'string') && (tmpRecord.Entity != '')
|
|
485
|
-
&& (`EntityColumnFilter` in tmpRecord) && (typeof(tmpRecord.EntityColumnFilter) === 'string') && (tmpRecord.EntityColumnFilter != '')
|
|
486
|
-
&& (`EntityDestination` in tmpRecord) && (typeof(tmpRecord.EntityDestination) === 'string') && (tmpRecord.EntityDestination != ''))
|
|
543
|
+
if ((`Entity` in tmpRecord) && (typeof (tmpRecord.Entity) === 'string') && (tmpRecord.Entity != '')
|
|
544
|
+
&& (`EntityColumnFilter` in tmpRecord) && (typeof (tmpRecord.EntityColumnFilter) === 'string') && (tmpRecord.EntityColumnFilter != '')
|
|
545
|
+
&& (`EntityDestination` in tmpRecord) && (typeof (tmpRecord.EntityDestination) === 'string') && (tmpRecord.EntityDestination != ''))
|
|
487
546
|
{
|
|
488
547
|
if (!Array.isArray(tmpDescriptor.PictForm.Providers))
|
|
489
548
|
{
|
|
@@ -603,7 +662,7 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
603
662
|
}
|
|
604
663
|
if (tmpRecord['Group Show Title'] && (tmpRecord['Group Show Title'] != ''))
|
|
605
664
|
{
|
|
606
|
-
switch(tmpRecord['Group Show Title'].toLowerCase())
|
|
665
|
+
switch (tmpRecord['Group Show Title'].toLowerCase())
|
|
607
666
|
{
|
|
608
667
|
case 1:
|
|
609
668
|
case '1':
|
|
@@ -615,7 +674,7 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
615
674
|
case 'false':
|
|
616
675
|
tmpGroup.ShowTitle = false;
|
|
617
676
|
break;
|
|
618
|
-
}
|
|
677
|
+
}
|
|
619
678
|
}
|
|
620
679
|
if (tmpDescriptor.Hash in pManifestFactory.manifest.Descriptors)
|
|
621
680
|
{
|
|
@@ -637,7 +696,7 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
637
696
|
tmpGroup.Layout = 'Tabular';
|
|
638
697
|
// If the csv defines the GroupRecordSetAddress, use that explicitly
|
|
639
698
|
console.log(`Group ${tmpGroup.Hash} RSA ${tmpRecord['GroupRecordSetAddress']} -> Descriptor ${tmpDescriptor.DataAddress}`)
|
|
640
|
-
if (tmpRecord['GroupRecordSetAddress'] && (typeof(tmpRecord.GroupRecordSetAddress == 'string')) && (tmpRecord.GroupRecordSetAddress.length > 0))
|
|
699
|
+
if (tmpRecord['GroupRecordSetAddress'] && (typeof (tmpRecord.GroupRecordSetAddress == 'string')) && (tmpRecord.GroupRecordSetAddress.length > 0))
|
|
641
700
|
{
|
|
642
701
|
tmpGroup.RecordSetAddress = tmpRecord.GroupRecordSetAddress;
|
|
643
702
|
}
|
|
@@ -708,39 +767,119 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
708
767
|
|
|
709
768
|
if ((tmpRecord.InputType == 'Chart') && (tmpDescriptor.PictForm))
|
|
710
769
|
{
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
770
|
+
this.decorateChartDescriptorFromTabularRow(tmpRecord, tmpDescriptor, '');
|
|
771
|
+
this.decorateChartDescriptorFromTabularRow(tmpRecord, tmpDescriptor, '1');
|
|
772
|
+
this.decorateChartDescriptorFromTabularRow(tmpRecord, tmpDescriptor, '2');
|
|
773
|
+
this.decorateChartDescriptorFromTabularRow(tmpRecord, tmpDescriptor, '3');
|
|
774
|
+
this.decorateChartDescriptorFromTabularRow(tmpRecord, tmpDescriptor, '4');
|
|
775
|
+
this.decorateChartDescriptorFromTabularRow(tmpRecord, tmpDescriptor, '5');
|
|
776
|
+
this.decorateChartDescriptorFromTabularRow(tmpRecord, tmpDescriptor, '6');
|
|
777
|
+
this.decorateChartDescriptorFromTabularRow(tmpRecord, tmpDescriptor, '7');
|
|
778
|
+
this.decorateChartDescriptorFromTabularRow(tmpRecord, tmpDescriptor, '8');
|
|
779
|
+
this.decorateChartDescriptorFromTabularRow(tmpRecord, tmpDescriptor, '9');
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
// Finally add any `Descriptor_Extension_* properties
|
|
783
|
+
const tmpDescriptorKeys = Object.keys(tmpRecord);
|
|
784
|
+
let tmpDescriptorManifest = this.fable.newManyfest();
|
|
785
|
+
for (let i = 0; i < tmpDescriptorKeys.length; i++)
|
|
786
|
+
{
|
|
787
|
+
let tmpKey = tmpDescriptorKeys[i];
|
|
788
|
+
if (tmpKey.startsWith('Descriptor_Extension_'))
|
|
721
789
|
{
|
|
722
|
-
|
|
790
|
+
const tmpExtensionKey = tmpKey.replace('Descriptor_Extension_', '');
|
|
791
|
+
try
|
|
792
|
+
{
|
|
793
|
+
// This is just going to stuff a string in
|
|
794
|
+
let tmpAddress = tmpExtensionKey;
|
|
795
|
+
let tmpValue = tmpRecord[tmpKey];
|
|
796
|
+
|
|
797
|
+
// Use the manifest to put it on the descriptor
|
|
798
|
+
if (tmpValue && tmpValue.length > 0)
|
|
799
|
+
{
|
|
800
|
+
tmpDescriptorManifest.setValueAtAddress(tmpDescriptor, tmpAddress, tmpValue);
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
catch (pError)
|
|
804
|
+
{
|
|
805
|
+
this.log.error(`Failed to set Descriptor Extension [${tmpKey}] on descriptor [${tmpDescriptor.Hash}]: ${pError}`);
|
|
806
|
+
}
|
|
723
807
|
}
|
|
724
|
-
|
|
808
|
+
|
|
809
|
+
if (tmpKey.startsWith('Descriptor_Float_Extension_'))
|
|
725
810
|
{
|
|
726
|
-
|
|
811
|
+
const tmpExtensionKey = tmpKey.replace('Descriptor_Float_Extension_', '');
|
|
812
|
+
try
|
|
813
|
+
{
|
|
814
|
+
// This is just going to stuff a string in
|
|
815
|
+
let tmpAddress = tmpExtensionKey;
|
|
816
|
+
let tmpRawValue = tmpRecord[tmpKey];
|
|
817
|
+
let tmpValue = parseFloat(tmpRawValue);
|
|
818
|
+
|
|
819
|
+
// Use the manifest to put it on the descriptor
|
|
820
|
+
if (tmpValue && !isNaN(tmpValue))
|
|
821
|
+
{
|
|
822
|
+
tmpDescriptorManifest.setValueAtAddress(tmpDescriptor, tmpAddress, tmpValue);
|
|
823
|
+
this.log.trace(`Set Float Descriptor Extension [${tmpKey}] on descriptor [${tmpDescriptor.Hash}] to value [${tmpValue}]`);
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
catch (pError)
|
|
827
|
+
{
|
|
828
|
+
this.log.error(`Failed to set Float Descriptor Extension [${tmpKey}] on descriptor [${tmpDescriptor.Hash}]: ${pError}`);
|
|
829
|
+
}
|
|
727
830
|
}
|
|
728
|
-
|
|
831
|
+
|
|
832
|
+
if (tmpKey.startsWith('Descriptor_Integer_Extension_'))
|
|
729
833
|
{
|
|
730
|
-
|
|
731
|
-
|
|
834
|
+
const tmpExtensionKey = tmpKey.replace('Descriptor_Integer_Extension_', '');
|
|
835
|
+
try
|
|
732
836
|
{
|
|
733
|
-
|
|
837
|
+
// This is just going to stuff a string in
|
|
838
|
+
let tmpAddress = tmpExtensionKey;
|
|
839
|
+
let tmpRawValue = tmpRecord[tmpKey];
|
|
840
|
+
let tmpValue = parseInt(tmpRawValue);
|
|
841
|
+
|
|
842
|
+
// Use the manifest to put it on the descriptor
|
|
843
|
+
if (tmpValue && !isNaN(tmpValue))
|
|
844
|
+
{
|
|
845
|
+
tmpDescriptorManifest.setValueAtAddress(tmpDescriptor, tmpAddress, tmpValue);
|
|
846
|
+
}
|
|
734
847
|
}
|
|
735
|
-
|
|
848
|
+
catch (pError)
|
|
736
849
|
{
|
|
737
|
-
|
|
850
|
+
this.log.error(`Failed to set Integer Descriptor Extension [${tmpKey}] on descriptor [${tmpDescriptor.Hash}]: ${pError}`);
|
|
738
851
|
}
|
|
739
|
-
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
if (tmpKey.startsWith('Descriptor_Boolean_Extension_'))
|
|
855
|
+
{
|
|
856
|
+
const tmpExtensionKey = tmpKey.replace('Descriptor_Boolean_Extension_', '');
|
|
857
|
+
try
|
|
858
|
+
{
|
|
859
|
+
// This is just going to stuff a string in
|
|
860
|
+
let tmpAddress = tmpExtensionKey;
|
|
861
|
+
let tmpRawValue = tmpRecord[tmpKey];
|
|
862
|
+
let tmpValue;
|
|
863
|
+
|
|
864
|
+
if ((tmpRawValue.toLowerCase() == 'x') || (tmpRawValue.toLowerCase() == 'y') || (tmpRawValue.toLowerCase() == 'yes') || (tmpRawValue.toLowerCase() == 't') || (tmpRawValue.toLowerCase() == 'true') || (tmpRawValue == '1'))
|
|
865
|
+
{
|
|
866
|
+
tmpValue = true;
|
|
867
|
+
}
|
|
868
|
+
if ((tmpRawValue.toLowerCase() == 'n') || (tmpRawValue.toLowerCase() == 'no') || (tmpRawValue.toLowerCase() == 'f') || (tmpRawValue.toLowerCase() == 'false') || (tmpRawValue == '0'))
|
|
869
|
+
{
|
|
870
|
+
tmpValue = false;
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
// Use the manifest to put it on the descriptor
|
|
874
|
+
if ((tmpValue === true) || (tmpValue === false))
|
|
875
|
+
{
|
|
876
|
+
tmpDescriptorManifest.setValueAtAddress(tmpDescriptor, tmpAddress, tmpValue);
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
catch (pError)
|
|
740
880
|
{
|
|
741
|
-
|
|
881
|
+
this.log.error(`Failed to set Boolean Descriptor Extension [${tmpKey}] on descriptor [${tmpDescriptor.Hash}]: ${pError}`);
|
|
742
882
|
}
|
|
743
|
-
tmpDescriptor.PictForm.ChartDatasetsSolvers.push(tmpSolverEntry);
|
|
744
883
|
}
|
|
745
884
|
}
|
|
746
885
|
|
|
@@ -804,9 +943,9 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
804
943
|
tmpManifests[tmpRecord.Form] = this.fable.instantiateServiceProviderWithoutRegistration('ManifestFactory',
|
|
805
944
|
{
|
|
806
945
|
Manifest:
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
946
|
+
{
|
|
947
|
+
Form: tmpRecord.Form
|
|
948
|
+
}
|
|
810
949
|
}, `${this.UUID}-${tmpRecord.Form}`);
|
|
811
950
|
}
|
|
812
951
|
|
|
@@ -837,4 +976,4 @@ class ManifestFactory extends libFableServiceProviderBase
|
|
|
837
976
|
|
|
838
977
|
module.exports = ManifestFactory;
|
|
839
978
|
/** @type {Record<string, any>} */
|
|
840
|
-
ManifestFactory.default_configuration = {
|
|
979
|
+
ManifestFactory.default_configuration = {};
|