pict-section-form 1.0.137 → 1.0.139

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.
@@ -76,6 +76,19 @@
76
76
  "Group": "General_Info"
77
77
  }
78
78
  },
79
+ "Header.WarehouseVolume": {
80
+ "Hash": "WarehouseVolume",
81
+ "Name": "Warehouse Volume",
82
+ "DataAddress": "Header.WarehouseVolume",
83
+ "DataType": "Number",
84
+ "PictForm": {
85
+ "Row": "4",
86
+ "Width": "12",
87
+ "Section": "Header",
88
+ "Group": "General_Info"
89
+ },
90
+ "Default": "50000"
91
+ },
79
92
  "BridgeData.IDBridge": {
80
93
  "Hash": "CurrentIDBridge",
81
94
  "Name": "IDBridge",
@@ -636,6 +649,7 @@
636
649
  "Name": "Box Summary Data",
637
650
  "Hash": "Box_Summary_Data",
638
651
  "Solvers": [
652
+ "SUBTRACTINGSUMMATION(Boxes, \"Volume\", \"WarehouseSpaceLeft\", GETVALUE(\"AppData.Header.WarehouseVolume\"))",
639
653
  "BoxesCount = COUNT(BoxesFloorspaceSet)",
640
654
  "BoxesAverageFloorspace = AVG(BoxesFloorspaceSet)",
641
655
  "BoxesTotalFloorspace = SUM(BoxesFloorspaceSet)",
@@ -696,7 +710,7 @@
696
710
  "Hash": "Rectangle_Set",
697
711
  "Rows": [],
698
712
  "RecordSetSolvers": [
699
- "RectangleArea = RectangleWidth + RectangleHeight"
713
+ "RectangleArea = RectangleWidth * RectangleHeight"
700
714
  ],
701
715
  "MinimumRowCount": 20,
702
716
  "ShowTitle": false,
@@ -729,7 +743,9 @@
729
743
  {
730
744
  "Name": "List Topia",
731
745
  "Hash": "Listopia",
732
- "Solvers": [],
746
+ "Solvers": [
747
+ "SUBTRACTINGSUMMATION(Rectangles, \"Area\", \"AreaDegredation\")"
748
+ ],
733
749
  "Groups": [
734
750
  {
735
751
  "Name": "Occlusion Lists",
@@ -837,6 +853,27 @@
837
853
  "Group": "BoxCollGrp"
838
854
  },
839
855
  "IsTabular": true
856
+ },
857
+ "WarehouseSpaceLeft": {
858
+ "Hash": "WarehouseSpaceLeft",
859
+ "Name": "Warehouse Space Left",
860
+ "DataAddress": "WarehouseSpaceLeft",
861
+ "DataType": "Number",
862
+ "PictForm": {
863
+ "Row": "1",
864
+ "Width": "1",
865
+ "Providers": [
866
+ "Pict-Input-AutofillTriggerGroup"
867
+ ],
868
+ "AutofillTriggerGroup": {
869
+ "TriggerGroupHash": "Box",
870
+ "MarshalEmptyValues": false,
871
+ "TriggerAllInputs": true
872
+ },
873
+ "Section": "BoxCollSec",
874
+ "Group": "BoxCollGrp"
875
+ },
876
+ "IsTabular": true
840
877
  }
841
878
  },
842
879
  "Sections": [],
@@ -896,6 +933,19 @@
896
933
  "Group": "Rectangle_Set"
897
934
  },
898
935
  "IsTabular": true
936
+ },
937
+ "AreaDegredation": {
938
+ "Hash": "AreaDegredation",
939
+ "Name": "Degredation (first minus each subsequent)",
940
+ "DataAddress": "AreaDegredation",
941
+ "DataType": "Number",
942
+ "PictForm": {
943
+ "Row": "1",
944
+ "Width": "1",
945
+ "Section": "Rectangle_Aggregation",
946
+ "Group": "Rectangle_Set"
947
+ },
948
+ "IsTabular": true
899
949
  }
900
950
  },
901
951
  "Sections": [],
@@ -5,6 +5,7 @@ MathExampleForm,,,,Header,,General Info,,,,,1,6,,,Header.JobTitle,Job Title,JobT
5
5
  MathExampleForm,,,,Header,,General Info,,,,,2,12,,,Header.Description,Description,Description,,,String,,,,,,,,,,,,,,,,
6
6
  MathExampleForm,,,,Header,,General Info,,,,,3,6,,,Header.Planet,Planet,Planet,,planetary,String,,Option,,,,,,,,,,,,,,
7
7
  MathExampleForm,,,,Header,,General Info,,,,,3,6,,,Header.Universe,Universe,Universe,,planetary,String,,Option,,,,,,,,,,,,,,
8
+ MathExampleForm,,,,Header,,General Info,,,,,4,12,,,Header.WarehouseVolume,Warehouse Volume,WarehouseVolume,,,Number,,,,50000,,,,,,,,,,,,
8
9
  MathExampleForm,,,,Bridge,,Bridge Data,,,,,1,6,,,BridgeData.IDBridge,IDBridge,CurrentIDBridge,,,Number,,,,,,,Bridge,FBV~IDBridge~EQ~{~D:Record.Value~},BridgeData.CurrentBridge,true,,,,,,
9
10
  MathExampleForm,,,,MatheMagic,,Math is Magic,,,,,1,1,,,HelpContent.Math,So Very Magic,MathHelpContent,,,String,,HTML,,,,,,,,,,,,,,
10
11
  MathExampleForm,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,1,6,,,Geometry.Rectangle.Width,Width,RectangleWidth,,,Number,,,,7.25,,,,,,,,,,,,
@@ -25,7 +26,8 @@ MathExampleForm,,BoxCollectionData,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,
25
26
  MathExampleForm,,BoxCollectionData,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,Depth,Depth,BoxDepth,,,Number,,,,,,,,,,,,,,,,
26
27
  MathExampleForm,,BoxCollectionData,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,Floorspace,Floorspace,BoxFloorspace,,,Number,,,BoxFloorspace = BoxWidth * BoxDepth,,,,,,,,,,,,,
27
28
  MathExampleForm,,BoxCollectionData,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,Volume,Volume,BoxVolume,,,Number,,,BoxVolume = BoxFloorspace * BoxHeight,,,,,,,,,,Box,,true,
28
- MathExampleForm,,,1,Box Summary Data,,Box Summary Data,,,,,0,0,,,Boxes[].Floorspace,BoxesFloorspaceSet,BoxesFloorspaceSet,,,Number,,,,,,,,,,,,,,,,
29
+ MathExampleForm,,BoxCollectionData,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,WarehouseSpaceLeft,Warehouse Space Left,WarehouseSpaceLeft,,,Number,,,,,,,,,,,,,Box,,true,
30
+ MathExampleForm,,,1,Box Summary Data,,Box Summary Data,,,,,0,0,,,Boxes[].Floorspace,BoxesFloorspaceSet,BoxesFloorspaceSet,,,Number,,,"SUBTRACTINGSUMMATION(Boxes, ""Volume"", ""WarehouseSpaceLeft"", GETVALUE(""AppData.Header.WarehouseVolume""))",,,,This equation does not assign itself to the object on the left,,,,,,,,,
29
31
  MathExampleForm,,,1,Box Summary Data,,Box Summary Data,,,,,0,0,,,Boxes[].Volume,BoxesVolumeSet,BoxesVolumeSet,,,Number,,,,,,,,,,,,,,,,
30
32
  MathExampleForm,,,1,Box Summary Data,,Box Summary Data,,,,,0,0,,,Boxes[].Depth,BoxesDepthSet,BoxesDepthSet,,,Number,,,,,,,,,,,,,,,,
31
33
  MathExampleForm,,,,Box Summary Data,,Box Summary Data,,,,,1,12,,,BoxAggregate.Count,Box Count,BoxesCount,,,Number,,,BoxesCount = COUNT(BoxesFloorspaceSet),,,,,,,,,,,,,
@@ -48,7 +50,8 @@ MathExampleForm,,Rectangles,1,Rectangle Aggregation,,Rectangle Set,,,,false,1,1,
48
50
  MathExampleForm,,Rectangles,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Identifier,Identifier,RectangleIdentifier,,,String,,,,,,,,,,,,,,,,
49
51
  MathExampleForm,,Rectangles,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Width,Width,RectangleWidth,,,Number,,,,,,,,,,,,,,,,
50
52
  MathExampleForm,,Rectangles,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Height,Height,RectangleHeight,,,Number,,,,,,,,,,,,,,,,
51
- MathExampleForm,,Rectangles,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Area,Area,RectangleArea,,,Number,,,RectangleArea = RectangleWidth + RectangleHeight,,,,,,,,,,,,,
53
+ MathExampleForm,,Rectangles,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Area,Area,RectangleArea,,,Number,,,RectangleArea = RectangleWidth * RectangleHeight,,,,,,,,,,,,,
54
+ MathExampleForm,,Rectangles,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,AreaDegredation,Degredation (first minus each subsequent),AreaDegredation,,,Number,,,,,,,,,,,,,,,,
52
55
  MathExampleForm,,Cylinders,1,Cylinders,,Cylinders,,,,false,1,1,,,Cylinders,Cylinders,Cylinders,,,Array,,TabularAddress,,,,,,,,,,,,,,
53
56
  MathExampleForm,,Cylinders,,Cylinders,,Cylinders,,,,,1,1,,,Identifier,Identifier,Identifier,,,String,,,,,,,,,,,,,,,,
54
57
  MathExampleForm,,Cylinders,,Cylinders,,Cylinders,,,,,1,1,,,Radius,Radius,Radius,,,PreciseNumber,,,,,,,,,,,,,,,,
@@ -56,7 +59,7 @@ MathExampleForm,,Cylinders,,Cylinders,,Cylinders,,,,,1,1,,,Height,Height,Height,
56
59
  MathExampleForm,,Cylinders,,Cylinders,,Cylinders,,,,,1,1,,,Circumference,Circumference,Circumference,,,PreciseNumber,,,Circumference = 2 * PI() * Radius,,,,,,,,,,,,,
57
60
  MathExampleForm,,Cylinders,,Cylinders,,Cylinders,,,,,1,1,,,Area,Area,Area,,,PreciseNumber,,,Area = (2 * PI() * Radius * Height) + (2 * PI() * Radius ^2),,,,,,,,,,,,,
58
61
  MathExampleForm,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,1,1,,,Listopia.Filters.Colour,Color Filter,ColourFilter,,,,,,,,,,,,,,,,,,,
59
- MathExampleForm,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,2,1,,,Listopia.Color,Color,Colors,,,String,,Option,,,,,,,,,,,,,,
62
+ MathExampleForm,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,2,1,,,Listopia.Color,Color,Colors,,,String,,Option,"SUBTRACTINGSUMMATION(Rectangles, ""Area"", ""AreaDegredation"")",,,,,,,,,,,,,
60
63
  MathExampleForm,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,2,1,,,Listopia.Box,Box,BoxSelection,,,String,,Option,,,,,,,,,,,Box,,,
61
64
  MathExampleForm,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,3,1,,,Listopia.Fruit,Fruit,FruitSelection,,,String,,Option,,,,,,,,,,,,,,
62
65
  MathExampleForm,,,,List Topia,Listopia,Occlusion Lists,OcclusionLists,,,,3,1,,,Listopia.Stone,Stone,Stones,,,String,,Option,,,,,,,,,,,,,,
@@ -75,6 +75,19 @@
75
75
  "Group": "General_Info"
76
76
  }
77
77
  },
78
+ "Header.WarehouseVolume": {
79
+ "Hash": "WarehouseVolume",
80
+ "Name": "Warehouse Volume",
81
+ "DataAddress": "Header.WarehouseVolume",
82
+ "DataType": "Number",
83
+ "PictForm": {
84
+ "Row": "4",
85
+ "Width": "12",
86
+ "Section": "Header",
87
+ "Group": "General_Info"
88
+ },
89
+ "Default": "50000"
90
+ },
78
91
  "BridgeData.IDBridge": {
79
92
  "Hash": "CurrentIDBridge",
80
93
  "Name": "IDBridge",
@@ -785,6 +798,7 @@
785
798
  "Name": "Box Summary Data",
786
799
  "Hash": "Box_Summary_Data",
787
800
  "Solvers": [
801
+ "SUBTRACTINGSUMMATION(Boxes, \"Volume\", \"WarehouseSpaceLeft\", GETVALUE(\"AppData.Header.WarehouseVolume\"))",
788
802
  "BoxesCount = COUNT(BoxesFloorspaceSet)",
789
803
  "BoxesAverageFloorspace = AVG(BoxesFloorspaceSet)",
790
804
  "BoxesTotalFloorspace = SUM(BoxesFloorspaceSet)",
@@ -845,7 +859,7 @@
845
859
  "Hash": "Rectangle_Set",
846
860
  "Rows": [],
847
861
  "RecordSetSolvers": [
848
- "RectangleArea = RectangleWidth + RectangleHeight"
862
+ "RectangleArea = RectangleWidth * RectangleHeight"
849
863
  ],
850
864
  "MinimumRowCount": 20,
851
865
  "ShowTitle": false,
@@ -1069,7 +1083,9 @@
1069
1083
  {
1070
1084
  "Name": "List Topia",
1071
1085
  "Hash": "Listopia",
1072
- "Solvers": [],
1086
+ "Solvers": [
1087
+ "SUBTRACTINGSUMMATION(Rectangles, \"Area\", \"AreaDegredation\")"
1088
+ ],
1073
1089
  "Groups": [
1074
1090
  {
1075
1091
  "Name": "Occlusion Lists",
@@ -1556,6 +1572,27 @@
1556
1572
  "Group": "BoxCollGrp"
1557
1573
  },
1558
1574
  "IsTabular": true
1575
+ },
1576
+ "WarehouseSpaceLeft": {
1577
+ "Hash": "WarehouseSpaceLeft",
1578
+ "Name": "Warehouse Space Left",
1579
+ "DataAddress": "WarehouseSpaceLeft",
1580
+ "DataType": "Number",
1581
+ "PictForm": {
1582
+ "Row": "1",
1583
+ "Width": "1",
1584
+ "Providers": [
1585
+ "Pict-Input-AutofillTriggerGroup"
1586
+ ],
1587
+ "AutofillTriggerGroup": {
1588
+ "TriggerGroupHash": "Box",
1589
+ "MarshalEmptyValues": false,
1590
+ "TriggerAllInputs": true
1591
+ },
1592
+ "Section": "BoxCollSec",
1593
+ "Group": "BoxCollGrp"
1594
+ },
1595
+ "IsTabular": true
1559
1596
  }
1560
1597
  },
1561
1598
  "Sections": [],
@@ -1615,6 +1652,19 @@
1615
1652
  "Group": "Rectangle_Set"
1616
1653
  },
1617
1654
  "IsTabular": true
1655
+ },
1656
+ "AreaDegredation": {
1657
+ "Hash": "AreaDegredation",
1658
+ "Name": "Degredation (first minus each subsequent)",
1659
+ "DataAddress": "AreaDegredation",
1660
+ "DataType": "Number",
1661
+ "PictForm": {
1662
+ "Row": "1",
1663
+ "Width": "1",
1664
+ "Section": "Rectangle_Aggregation",
1665
+ "Group": "Rectangle_Set"
1666
+ },
1667
+ "IsTabular": true
1618
1668
  }
1619
1669
  },
1620
1670
  "Sections": [],
@@ -75,6 +75,19 @@
75
75
  "Group": "General_Info"
76
76
  }
77
77
  },
78
+ "Header.WarehouseVolume": {
79
+ "Hash": "WarehouseVolume",
80
+ "Name": "Warehouse Volume",
81
+ "DataAddress": "Header.WarehouseVolume",
82
+ "DataType": "Number",
83
+ "PictForm": {
84
+ "Row": "4",
85
+ "Width": "12",
86
+ "Section": "Header",
87
+ "Group": "General_Info"
88
+ },
89
+ "Default": "50000"
90
+ },
78
91
  "BridgeData.IDBridge": {
79
92
  "Hash": "CurrentIDBridge",
80
93
  "Name": "IDBridge",
@@ -785,6 +798,7 @@
785
798
  "Name": "Box Summary Data",
786
799
  "Hash": "Box_Summary_Data",
787
800
  "Solvers": [
801
+ "SUBTRACTINGSUMMATION(Boxes, \"Volume\", \"WarehouseSpaceLeft\", GETVALUE(\"AppData.Header.WarehouseVolume\"))",
788
802
  "BoxesCount = COUNT(BoxesFloorspaceSet)",
789
803
  "BoxesAverageFloorspace = AVG(BoxesFloorspaceSet)",
790
804
  "BoxesTotalFloorspace = SUM(BoxesFloorspaceSet)",
@@ -845,7 +859,7 @@
845
859
  "Hash": "Rectangle_Set",
846
860
  "Rows": [],
847
861
  "RecordSetSolvers": [
848
- "RectangleArea = RectangleWidth + RectangleHeight"
862
+ "RectangleArea = RectangleWidth * RectangleHeight"
849
863
  ],
850
864
  "MinimumRowCount": 20,
851
865
  "ShowTitle": false,
@@ -1069,7 +1083,9 @@
1069
1083
  {
1070
1084
  "Name": "List Topia",
1071
1085
  "Hash": "Listopia",
1072
- "Solvers": [],
1086
+ "Solvers": [
1087
+ "SUBTRACTINGSUMMATION(Rectangles, \"Area\", \"AreaDegredation\")"
1088
+ ],
1073
1089
  "Groups": [
1074
1090
  {
1075
1091
  "Name": "Occlusion Lists",
@@ -1556,6 +1572,27 @@
1556
1572
  "Group": "BoxCollGrp"
1557
1573
  },
1558
1574
  "IsTabular": true
1575
+ },
1576
+ "WarehouseSpaceLeft": {
1577
+ "Hash": "WarehouseSpaceLeft",
1578
+ "Name": "Warehouse Space Left",
1579
+ "DataAddress": "WarehouseSpaceLeft",
1580
+ "DataType": "Number",
1581
+ "PictForm": {
1582
+ "Row": "1",
1583
+ "Width": "1",
1584
+ "Providers": [
1585
+ "Pict-Input-AutofillTriggerGroup"
1586
+ ],
1587
+ "AutofillTriggerGroup": {
1588
+ "TriggerGroupHash": "Box",
1589
+ "MarshalEmptyValues": false,
1590
+ "TriggerAllInputs": true
1591
+ },
1592
+ "Section": "BoxCollSec",
1593
+ "Group": "BoxCollGrp"
1594
+ },
1595
+ "IsTabular": true
1559
1596
  }
1560
1597
  },
1561
1598
  "Sections": [],
@@ -1615,6 +1652,19 @@
1615
1652
  "Group": "Rectangle_Set"
1616
1653
  },
1617
1654
  "IsTabular": true
1655
+ },
1656
+ "AreaDegredation": {
1657
+ "Hash": "AreaDegredation",
1658
+ "Name": "Degredation (first minus each subsequent)",
1659
+ "DataAddress": "AreaDegredation",
1660
+ "DataType": "Number",
1661
+ "PictForm": {
1662
+ "Row": "1",
1663
+ "Width": "1",
1664
+ "Section": "Rectangle_Aggregation",
1665
+ "Group": "Rectangle_Set"
1666
+ },
1667
+ "IsTabular": true
1618
1668
  }
1619
1669
  },
1620
1670
  "Sections": [],
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <title>Debug.</title>
5
5
  <style id="PICT-CSS"></style>
6
- <script src="./pict.min.js" type="text/javascript"></script>
6
+ <script src="./pict.js" type="text/javascript"></script>
7
7
  <script type="text/javascript">Pict.safeOnDocumentReady(() => { Pict.safeLoadPictApplication(DebugApplication, 1)});</script>
8
8
  </head>
9
9
  <body style="margin: 2rem; padding: 2rem; font-family: Arial, sans-serif; background-color: darkseagreen;">
@@ -0,0 +1,181 @@
1
+ # Chart Input Type
2
+
3
+ Chart input types wrap one of a few charting libraries. This means the tech is
4
+ compatible with chart.js, c3 and d3 natively and more can be easily added.
5
+
6
+ ## Defaults
7
+
8
+ By default charts use `chart.js` and are `bar` charts. They will try to cast
9
+ an array or object into a meaningful data set.
10
+
11
+ This means minimum viable config is something like the following:
12
+
13
+ ```json
14
+ {
15
+ "Scope": "ChartDemo",
16
+
17
+ "Descriptors":
18
+ {
19
+ "Chart.Display":
20
+ {
21
+ "Name": "MVP Chart",
22
+ "Hash": "MVPChart",
23
+ "DataType": "Object",
24
+ "PictForm":
25
+ {
26
+ "InputType": "Chart",
27
+ "ChartDataAddress": "City.Populations"
28
+ }
29
+ }
30
+ }
31
+ }
32
+ ```
33
+
34
+ And AppData has something like this:
35
+
36
+ ```json
37
+ {
38
+ "City":
39
+ {
40
+ "Populations":
41
+ {
42
+ "Seattle": 324230,
43
+ "Lynnwood": 2349,
44
+ "Burien": 1500,
45
+ "Tacoma": 23498,
46
+ "Olympia": 17984,
47
+ "Redmond": 8700,
48
+ "Kirkland": 9723,
49
+ "Bellevue": 11001
50
+ }
51
+ }
52
+ }
53
+ ```
54
+
55
+ You will end up with a bar graph that has the X axis as cities, y axis as
56
+ populations and the series will be named "City.Populations" as such:
57
+
58
+
59
+
60
+ ## Data Addresses, Raw Objects and Configurable Programmability _(oh my!)_
61
+
62
+ There is a three tiered system to how the chart configuration is generated.
63
+ Because modern charting libraries rely almost entirely on configuration to
64
+ define behavior these days, we can manage the displays this way and only
65
+ rely on the pict-section-form library to broker data back-and-forth.
66
+
67
+ ### Purely Raw Data
68
+
69
+ You can hard code any chart right into the form. There are three places
70
+ for raw form config:
71
+
72
+ * `ChartLabelsRaw` - the "labels" object for the chart
73
+ * `ChartDatasetsRaw` - the "data" object for the chart
74
+ * `ChartJSOptionsCorePrototype` - the chart.js config base
75
+
76
+ The input provider will use the `ChartJSOptionsCorePrototype` and then
77
+ decorate in the `labels` and `data` objects from their raw entries.
78
+
79
+ Chaining always does the following:
80
+
81
+ 1. If there is a `Raw`
82
+
83
+ ```json
84
+ {
85
+ "SimpleGraphExampleRawData":
86
+ {
87
+ Name: "OrderCaloryGraph",
88
+ Hash: "OrderCaloryGraph",
89
+
90
+ DataType: "Object",
91
+ PictForm:
92
+ {
93
+ Section: "Chart",
94
+ Group: "SimpleChart",
95
+
96
+ Row: 1,
97
+ Width: 12,
98
+
99
+ InputType: "Chart",
100
+
101
+ ChartLabelsRaw: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
102
+
103
+ ChartDatasetsRaw: [
104
+ {
105
+ label: 'Awesomeness',
106
+ data: [ 1500, 1200, 800, 1700, 900, 2000 ]
107
+ }],
108
+
109
+ ChartJSOptionsCorePrototype:
110
+ {
111
+ type: 'bar'
112
+ }
113
+ }
114
+ }
115
+ }
116
+ ```
117
+
118
+ ### Purely Raw Data
119
+
120
+ ```json
121
+ {
122
+ "SimpleGraphExampleRawData":
123
+ {
124
+ Name: "OrderCaloryGraph",
125
+ Hash: "OrderCaloryGraph",
126
+
127
+ DataType: "Object",
128
+ PictForm:
129
+ {
130
+ Section: "Chart",
131
+ Group: "SimpleChart",
132
+ Row: 1,
133
+ Width: 12,
134
+ InputType: "Chart",
135
+
136
+ ChartType: "bar",
137
+
138
+ // This allows you to scope data for the chart separately from appdata
139
+ ChartDataScope: "Form",
140
+
141
+ ChartDataAddress: "FruitData.FruityVice",
142
+
143
+ ChartLabelsAddress: "FruitData.FruityVice",
144
+ ChartLabelsRaw: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
145
+
146
+ ChartDatasetsAddress: "FruitData.FruityVice",
147
+ ChartDatasetsConfig:
148
+ {
149
+ Calories:
150
+ {
151
+ ChartLabel: "Calories",
152
+ DataSolver: "Data = {~D:Record.nutritions.calories~}",
153
+ DataTemplate: "{~D:Record.SolverResult~}", // Could also be something from the solver postfix stack
154
+ DataCorePrototype:
155
+ {
156
+ borderWidth: 1
157
+ }
158
+ }
159
+ },
160
+ ChartDatasetsRaw: [
161
+ {
162
+ label: 'Awesomeness',
163
+ data: [ 1500, 1200, 800, 1700, 900, 2000 ]
164
+ }],
165
+
166
+ // Do anything you want here!!
167
+ ChartJSOptionsCorePrototype:
168
+ {
169
+ type: 'bar',
170
+ options: {
171
+ scales: {
172
+ y: {
173
+ beginAtZero: true
174
+ }
175
+ }
176
+ }
177
+ }
178
+ }
179
+ }
180
+ }
181
+ ```