pict-section-formeditor 1.0.0

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.
Files changed (178) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +118 -0
  3. package/docs/.nojekyll +0 -0
  4. package/docs/README.md +162 -0
  5. package/docs/_sidebar.md +23 -0
  6. package/docs/_topbar.md +5 -0
  7. package/docs/cover.md +12 -0
  8. package/docs/css/docuserve.css +73 -0
  9. package/docs/index.html +39 -0
  10. package/docs/retold-catalog.json +224 -0
  11. package/docs/retold-keyword-index.json +46846 -0
  12. package/example_applications/form_editor/.quackage.json +10 -0
  13. package/example_applications/form_editor/FormEditor-Example-Application.js +226 -0
  14. package/example_applications/form_editor/html/icon-chooser.html +375 -0
  15. package/example_applications/form_editor/html/index.html +54 -0
  16. package/example_applications/form_editor/package.json +50 -0
  17. package/package.json +55 -0
  18. package/sample_manifests/Complex-Table.json +974 -0
  19. package/sample_manifests/Distill-Example.json +200 -0
  20. package/sample_manifests/Gradebook-Assignment.json +38 -0
  21. package/sample_manifests/Gradebook-Student.json +40 -0
  22. package/sample_manifests/Manyfest-Editor.json +347 -0
  23. package/sample_manifests/Simple-Form.json +232 -0
  24. package/sample_manifests/Simple-Table.json +79 -0
  25. package/source/Pict-Section-FormEditor-DefaultConfiguration.js +3321 -0
  26. package/source/Pict-Section-FormEditor.js +35 -0
  27. package/source/providers/Pict-Provider-ChildPictManager-Application.js +40 -0
  28. package/source/providers/Pict-Provider-ChildPictManager.js +238 -0
  29. package/source/providers/Pict-Provider-FormEditorDocumentation.js +356 -0
  30. package/source/providers/Pict-Provider-FormEditorDragDrop.js +535 -0
  31. package/source/providers/Pict-Provider-FormEditorIconography.js +1002 -0
  32. package/source/providers/Pict-Provider-FormEditorManifestOps.js +1443 -0
  33. package/source/providers/Pict-Provider-FormEditorRendering.js +730 -0
  34. package/source/providers/Pict-Provider-FormEditorUtilities.js +862 -0
  35. package/source/providers/Pict-Provider-PreviewCSS.js +42 -0
  36. package/source/views/PictView-FormEditor-InlineEditing.js +309 -0
  37. package/source/views/PictView-FormEditor-InputTypePicker.js +532 -0
  38. package/source/views/PictView-FormEditor-PropertiesPanel.js +7730 -0
  39. package/source/views/PictView-FormEditor.js +681 -0
  40. package/test/Pict-Section-FormEditor_tests.js +4102 -0
  41. package/user-documentation/.pict_documentation_topics.json +695 -0
  42. package/user-documentation/Getting-Started.md +32 -0
  43. package/user-documentation/Groups.md +52 -0
  44. package/user-documentation/Inputs.md +98 -0
  45. package/user-documentation/Sections.md +36 -0
  46. package/user-documentation/Shortcuts.md +44 -0
  47. package/user-documentation/Solver-Expression-Walkthrough.md +176 -0
  48. package/user-documentation/Solver-Expressions-Advanced.md +344 -0
  49. package/user-documentation/Solver-Functions.md +213 -0
  50. package/user-documentation/Solvers.md +81 -0
  51. package/user-documentation/ToC.md +18 -0
  52. package/user-documentation/solverfunctions/abs.md +84 -0
  53. package/user-documentation/solverfunctions/aggregationhistogram.md +83 -0
  54. package/user-documentation/solverfunctions/aggregationhistogrambyobject.md +64 -0
  55. package/user-documentation/solverfunctions/arrayconcat.md +64 -0
  56. package/user-documentation/solverfunctions/avg.md +81 -0
  57. package/user-documentation/solverfunctions/bucketset.md +69 -0
  58. package/user-documentation/solverfunctions/ceil.md +70 -0
  59. package/user-documentation/solverfunctions/cleanvaluearray.md +66 -0
  60. package/user-documentation/solverfunctions/cleanvalueobject.md +68 -0
  61. package/user-documentation/solverfunctions/colorgroupbackground.md +60 -0
  62. package/user-documentation/solverfunctions/colorinputbackground.md +62 -0
  63. package/user-documentation/solverfunctions/colorinputbackgroundtabular.md +64 -0
  64. package/user-documentation/solverfunctions/colorsectionbackground.md +59 -0
  65. package/user-documentation/solverfunctions/compare.md +72 -0
  66. package/user-documentation/solverfunctions/concat.md +73 -0
  67. package/user-documentation/solverfunctions/concatraw.md +73 -0
  68. package/user-documentation/solverfunctions/cos.md +75 -0
  69. package/user-documentation/solverfunctions/count.md +73 -0
  70. package/user-documentation/solverfunctions/countset.md +65 -0
  71. package/user-documentation/solverfunctions/countsetelements.md +63 -0
  72. package/user-documentation/solverfunctions/createarrayfromabsolutevalues.md +63 -0
  73. package/user-documentation/solverfunctions/createvalueobjectbyhashes.md +69 -0
  74. package/user-documentation/solverfunctions/cumulativesummation.md +96 -0
  75. package/user-documentation/solverfunctions/dateadddays.md +79 -0
  76. package/user-documentation/solverfunctions/dateaddhours.md +74 -0
  77. package/user-documentation/solverfunctions/dateaddmilliseconds.md +65 -0
  78. package/user-documentation/solverfunctions/dateaddminutes.md +72 -0
  79. package/user-documentation/solverfunctions/dateaddmonths.md +74 -0
  80. package/user-documentation/solverfunctions/dateaddseconds.md +66 -0
  81. package/user-documentation/solverfunctions/dateaddweeks.md +73 -0
  82. package/user-documentation/solverfunctions/dateaddyears.md +74 -0
  83. package/user-documentation/solverfunctions/datedaydifference.md +84 -0
  84. package/user-documentation/solverfunctions/datefromparts.md +81 -0
  85. package/user-documentation/solverfunctions/datehourdifference.md +64 -0
  86. package/user-documentation/solverfunctions/datemathadd.md +72 -0
  87. package/user-documentation/solverfunctions/datemilliseconddifference.md +64 -0
  88. package/user-documentation/solverfunctions/dateminutedifference.md +64 -0
  89. package/user-documentation/solverfunctions/datemonthdifference.md +66 -0
  90. package/user-documentation/solverfunctions/dateseconddifference.md +64 -0
  91. package/user-documentation/solverfunctions/dateweekdifference.md +65 -0
  92. package/user-documentation/solverfunctions/dateyeardifference.md +64 -0
  93. package/user-documentation/solverfunctions/differencearrays.md +59 -0
  94. package/user-documentation/solverfunctions/disablesolverordinal.md +58 -0
  95. package/user-documentation/solverfunctions/distributionhistogram.md +96 -0
  96. package/user-documentation/solverfunctions/distributionhistogrambyobject.md +64 -0
  97. package/user-documentation/solverfunctions/enablesolverordinal.md +57 -0
  98. package/user-documentation/solverfunctions/entryinset.md +72 -0
  99. package/user-documentation/solverfunctions/euler.md +77 -0
  100. package/user-documentation/solverfunctions/exp.md +74 -0
  101. package/user-documentation/solverfunctions/findfirstvaluebyexactmatch.md +67 -0
  102. package/user-documentation/solverfunctions/findfirstvaluebystringincludes.md +67 -0
  103. package/user-documentation/solverfunctions/flatten.md +76 -0
  104. package/user-documentation/solverfunctions/floor.md +70 -0
  105. package/user-documentation/solverfunctions/gaussianelimination.md +75 -0
  106. package/user-documentation/solverfunctions/generatearrayofobjectsfromsets.md +70 -0
  107. package/user-documentation/solverfunctions/generatehtmlhexcolor.md +67 -0
  108. package/user-documentation/solverfunctions/getvalue.md +90 -0
  109. package/user-documentation/solverfunctions/getvaluearray.md +64 -0
  110. package/user-documentation/solverfunctions/getvalueobject.md +67 -0
  111. package/user-documentation/solverfunctions/hidesections.md +58 -0
  112. package/user-documentation/solverfunctions/if.md +109 -0
  113. package/user-documentation/solverfunctions/iterativeseries.md +107 -0
  114. package/user-documentation/solverfunctions/join.md +75 -0
  115. package/user-documentation/solverfunctions/joinraw.md +64 -0
  116. package/user-documentation/solverfunctions/largestinset.md +63 -0
  117. package/user-documentation/solverfunctions/leastsquares.md +66 -0
  118. package/user-documentation/solverfunctions/linest.md +58 -0
  119. package/user-documentation/solverfunctions/log.md +74 -0
  120. package/user-documentation/solverfunctions/logvalues.md +65 -0
  121. package/user-documentation/solverfunctions/match.md +71 -0
  122. package/user-documentation/solverfunctions/matrixinverse.md +67 -0
  123. package/user-documentation/solverfunctions/matrixmultiply.md +71 -0
  124. package/user-documentation/solverfunctions/matrixtranspose.md +72 -0
  125. package/user-documentation/solverfunctions/matrixvectormultiply.md +69 -0
  126. package/user-documentation/solverfunctions/max.md +73 -0
  127. package/user-documentation/solverfunctions/mean.md +63 -0
  128. package/user-documentation/solverfunctions/median.md +79 -0
  129. package/user-documentation/solverfunctions/min.md +73 -0
  130. package/user-documentation/solverfunctions/mode.md +66 -0
  131. package/user-documentation/solverfunctions/objectkeystoarray.md +66 -0
  132. package/user-documentation/solverfunctions/objectvaluessortbyexternalobjectarray.md +65 -0
  133. package/user-documentation/solverfunctions/objectvaluestoarray.md +67 -0
  134. package/user-documentation/solverfunctions/percent.md +75 -0
  135. package/user-documentation/solverfunctions/pi.md +77 -0
  136. package/user-documentation/solverfunctions/polynomialregression.md +69 -0
  137. package/user-documentation/solverfunctions/predict.md +71 -0
  138. package/user-documentation/solverfunctions/rad.md +85 -0
  139. package/user-documentation/solverfunctions/randomfloat.md +63 -0
  140. package/user-documentation/solverfunctions/randomfloatbetween.md +72 -0
  141. package/user-documentation/solverfunctions/randomfloatupto.md +65 -0
  142. package/user-documentation/solverfunctions/randominteger.md +56 -0
  143. package/user-documentation/solverfunctions/randomintegerbetween.md +72 -0
  144. package/user-documentation/solverfunctions/randomintegerupto.md +64 -0
  145. package/user-documentation/solverfunctions/refreshtabularsection.md +57 -0
  146. package/user-documentation/solverfunctions/resolvehtmlentities.md +64 -0
  147. package/user-documentation/solverfunctions/round.md +111 -0
  148. package/user-documentation/solverfunctions/runsolvers.md +49 -0
  149. package/user-documentation/solverfunctions/setconcatenate.md +64 -0
  150. package/user-documentation/solverfunctions/setgroupvisibility.md +60 -0
  151. package/user-documentation/solverfunctions/setsectionvisibility.md +59 -0
  152. package/user-documentation/solverfunctions/setsolverordinalenabled.md +59 -0
  153. package/user-documentation/solverfunctions/settabularrowlength.md +57 -0
  154. package/user-documentation/solverfunctions/setvalue.md +65 -0
  155. package/user-documentation/solverfunctions/showsections.md +58 -0
  156. package/user-documentation/solverfunctions/sin.md +83 -0
  157. package/user-documentation/solverfunctions/slice.md +80 -0
  158. package/user-documentation/solverfunctions/smallestinset.md +63 -0
  159. package/user-documentation/solverfunctions/sortarray.md +58 -0
  160. package/user-documentation/solverfunctions/sorthistogram.md +70 -0
  161. package/user-documentation/solverfunctions/sorthistogrambykeys.md +69 -0
  162. package/user-documentation/solverfunctions/sortset.md +75 -0
  163. package/user-documentation/solverfunctions/sqrt.md +85 -0
  164. package/user-documentation/solverfunctions/stdev.md +81 -0
  165. package/user-documentation/solverfunctions/stdeva.md +58 -0
  166. package/user-documentation/solverfunctions/stdevp.md +83 -0
  167. package/user-documentation/solverfunctions/stringcountsegments.md +66 -0
  168. package/user-documentation/solverfunctions/stringgetsegments.md +74 -0
  169. package/user-documentation/solverfunctions/subtractingsummation.md +66 -0
  170. package/user-documentation/solverfunctions/sum.md +78 -0
  171. package/user-documentation/solverfunctions/tan.md +78 -0
  172. package/user-documentation/solverfunctions/tofixed.md +75 -0
  173. package/user-documentation/solverfunctions/unionarrays.md +59 -0
  174. package/user-documentation/solverfunctions/uniquearray.md +58 -0
  175. package/user-documentation/solverfunctions/var.md +67 -0
  176. package/user-documentation/solverfunctions/vara.md +58 -0
  177. package/user-documentation/solverfunctions/varp.md +66 -0
  178. package/user-documentation/solverfunctions/when.md +98 -0
@@ -0,0 +1,232 @@
1
+ {
2
+ "Scope": "SuperSimpleForm",
3
+
4
+ "Sections": [
5
+ {
6
+ "Hash": "Area",
7
+
8
+ "Name": "Rectangular Area Calculator",
9
+ "Description": "Calculate the area of a Rectangle",
10
+
11
+ "CustomCSS": "h3 { color: #ff00ff; font-size: 1.5em; }",
12
+
13
+ "Solvers":
14
+ [
15
+ "Area = Height * Width",
16
+ "WidthCubeArea = Width ^ 3",
17
+ "HeightCubeArea = Height ^ 3",
18
+ "DTPN = Height * Width",
19
+ "ITPNRO = Height * Width",
20
+ "ITDRO = Height * Width",
21
+ "ITPRO = Height * Width",
22
+ "LoggedValues = logvalues(\"ITPRO\", ITPRO)",
23
+ "SetGroupVisibility(\"Area\", \"Help\", if(Height,\"GT\", 99, 0, 1))",
24
+ "SetSectionVisibility(\"Marshaling\", if(ITPRO,\"LT\", 10000, 0, 1))",
25
+ "ColorSectionBackground(\"Marshaling\",\"#FF00FF\", 1)",
26
+ "ColorGroupBackground(\"Area\", \"Help\", ContentBackgroundColor, 1)",
27
+ "SectionsAllAvailable = StringGetSegments(DisplayControlAvailableSections, \",\")",
28
+ "SectionsToHide = StringGetSegments(DisplayControlHideSections, \",\")",
29
+ "SectionsToShow = DifferenceArrays(SectionsAllAvailable,SectionsToHide)",
30
+ "ShowSections(SectionsToShow)",
31
+ "HideSections(SectionsToHide)"
32
+ ],
33
+ "MetaTemplates":
34
+ [
35
+ {
36
+ "HashPostfix": "-Template-Wrap-Prefix",
37
+ "Template": "<h1>Rectangular Area Solver Micro-app</h1><div><a href=\"#\" onclick=\"{~P~}.PictApplication.solve()\">[ solve ]</a> <a href=\"#\" onclick=\"{~P~}.views.PictFormMetacontroller.showSupportViewInlineEditor()\">[ debug ]</a></div><hr />"
38
+ }
39
+ ]
40
+ },
41
+ {
42
+ "Hash": "Marshaling",
43
+ "Name": "Example Marshaling Section - Hidden when Height * Width is less than 10,000",
44
+ "Description": "An example section to demonstrate marshaling of different data types."
45
+ },
46
+ {
47
+ "Hash": "DisplayControl",
48
+ "Name": "Controls the Display of Many Other Sections"
49
+ },
50
+ {
51
+ "Hash": "SectionA",
52
+ "Name": "This is SectionA hash"
53
+ },
54
+ {
55
+ "Hash": "SectionB",
56
+ "Name": "This is SectionB hash"
57
+ },
58
+ {
59
+ "Hash": "SectionC",
60
+ "Name": "This is SectionC hash"
61
+ },
62
+ {
63
+ "Hash": "SectionD",
64
+ "Name": "This is SectionD hash"
65
+ },
66
+ {
67
+ "Hash": "SectionE",
68
+ "Name": "This is SectionE hash"
69
+ }
70
+ ],
71
+
72
+ "Descriptors":
73
+ {
74
+ "Name":
75
+ {
76
+ "Name":"Rectangular Object's Name",
77
+ "Hash":"Name",
78
+ "DataType":"String"
79
+ ,"PictForm": { "Section":"Area", "Row":1, "Width":1 }
80
+ },
81
+ "Type":
82
+ {
83
+ "Name":"Type of Object",
84
+ "Hash":"Type",
85
+ "DataType":"String"
86
+ ,"PictForm": { "Section":"Area", "Row":1, "Width":1 }
87
+ },
88
+
89
+ "Width":
90
+ {
91
+ "Name":"Width",
92
+ "Hash":"Width",
93
+ "DataType":"Number",
94
+ "Default": 100
95
+ ,"PictForm": { "Section":"Area", "Row":2, "Width":1 }
96
+ },
97
+ "Height":
98
+ {
99
+ "Name":"Height",
100
+ "Hash":"Height",
101
+ "DataType":"Number",
102
+ "Default": 100
103
+ ,"PictForm": { "Section":"Area", "Row":2, "Width":1 }
104
+ },
105
+
106
+ "Solutions.WidthCubeArea":
107
+ {
108
+ "Name":"Area of Width Cubed",
109
+ "Hash":"WidthCubeArea",
110
+ "DataType":"String"
111
+ ,"PictForm": { "Section":"Area", "Row":3, "Width":1 }
112
+ },
113
+ "Solutions.HeightCubeArea":
114
+ {
115
+ "Name":"Area of Height Cubed",
116
+ "Hash":"HeightCubeArea",
117
+ "DataType":"String"
118
+ ,"PictForm": { "Section":"Area", "Row":3, "Width":1 }
119
+ },
120
+
121
+ "Solutions.Area":
122
+ {
123
+ "Name":"Area of Rectangle",
124
+ "Hash":"Area",
125
+ "DataType":"PreciseNumber"
126
+
127
+ ,"PictForm": {"Section":"Area", "Row":4, "Width":2 }
128
+ },
129
+
130
+ "Help.Content":
131
+ {
132
+ "Name":"Area of a Rectangle",
133
+ "Hash":"HelpContent",
134
+ "DataType":"String",
135
+ "Default": "<p>To calculate the area of a rectangle, you multiply its length by its width. The length is one side of the rectangle, and the width is the adjacent side at a right angle. Since a rectangle has opposite sides that are equal and all angles are right angles, this simple multiplication gives the total space inside the rectangle, expressed in square units.</p>"
136
+ ,"PictForm": { "InputType": "HTML", "Section":"Area", "Group":"Help" }
137
+ },
138
+ "ContentBackgroundColor":
139
+ {
140
+ "Name":"Content Background Color",
141
+ "Hash":"ContentBackgroundColor",
142
+ "DataType":"String",
143
+ "Default": "#FFFFEE"
144
+ ,"PictForm": { "InputType": "Color", "Section":"Area", "Group":"Help", "Row":2 }
145
+ },
146
+
147
+
148
+
149
+ "DTPN":
150
+ {
151
+ "Name":"DataType PreciseNumber",
152
+ "Hash":"DTPN",
153
+ "DataType":"PreciseNumber"
154
+ ,"PictForm": {"InputType": "PreciseNumberReadOnly", "Section":"Marshaling", "Row":1, "Width":3 }
155
+ },
156
+ "ITPNRO":
157
+ {
158
+ "Name":"InputType PreciseNumberReadOnly",
159
+ "Hash":"ITPNRO",
160
+ "DataType":"PreciseNumber",
161
+ "InputType": "PreciseNumberReadOnly"
162
+ ,"PictForm": {
163
+ "InputType": "PreciseNumberReadOnly",
164
+ "DecimalPrecision": 2,
165
+ "AddCommas": false,
166
+ "DigitsPrefix": "$",
167
+ "DigitsPostfix": " (estimated)",
168
+ "Section":"Marshaling", "Row":1, "Width":3 }
169
+ },
170
+
171
+
172
+
173
+ "DisplayControlAvailableSections":
174
+ {
175
+ "Name":"Comma Separated List of Section Hashes",
176
+ "Hash":"DisplayControlAvailableSections",
177
+ "DataType":"String",
178
+ "Default": "SectionA,SectionB,SectionC,SectionD,SectionE"
179
+ ,"PictForm": { "Section":"DisplayControl", "Row":1, "Width":1 }
180
+ },
181
+
182
+ "DisplayControlHideSections":
183
+ {
184
+ "Name":"Comma Separated List of Section Hashes to Hide",
185
+ "Hash":"DisplayControlHideSections",
186
+ "DataType":"String",
187
+ "Default": "SectionB,SectionD"
188
+ ,"PictForm": { "Section":"DisplayControl", "Row":2, "Width":1 }
189
+ },
190
+
191
+ "SectionA.Amount":
192
+ {
193
+ "Name":"Amount in Section A",
194
+ "Hash":"SectionAAmount",
195
+ "DataType":"Number",
196
+ "Default": 10
197
+ ,"PictForm": { "Section":"SectionA", "Row":1, "Width":1 }
198
+ },
199
+ "SectionB.Amount":
200
+ {
201
+ "Name":"Amount in Section B",
202
+ "Hash":"SectionBAmount",
203
+ "DataType":"Number",
204
+ "Default": 20
205
+ ,"PictForm": { "Section":"SectionB", "Row":1, "Width":1 }
206
+ },
207
+ "SectionC.Amount":
208
+ {
209
+ "Name":"Amount in Section C",
210
+ "Hash":"SectionCAmount",
211
+ "DataType":"Number",
212
+ "Default": 30
213
+ ,"PictForm": { "Section":"SectionC", "Row":1, "Width":1 }
214
+ },
215
+ "SectionD.Amount":
216
+ {
217
+ "Name":"Amount in Section D",
218
+ "Hash":"SectionDAmount",
219
+ "DataType":"Number",
220
+ "Default": 40
221
+ ,"PictForm": { "Section":"SectionD", "Row":1, "Width":1 }
222
+ },
223
+ "SectionE.Amount":
224
+ {
225
+ "Name":"Amount in Section E",
226
+ "Hash":"SectionEAmount",
227
+ "DataType":"Number",
228
+ "Default": 50
229
+ ,"PictForm": { "Section":"SectionE", "Row":1, "Width":1 }
230
+ }
231
+ }
232
+ }
@@ -0,0 +1,79 @@
1
+ {
2
+ "Scope": "SuperSimpleTabularForm",
3
+ "Sections": [
4
+ {
5
+ "Hash": "FruitGrid",
6
+ "Name": "Fruits of the World",
7
+ "Groups": [
8
+ {
9
+ "Hash": "FruitGrid",
10
+ "Name": "FruitGrid",
11
+ "Layout": "Tabular",
12
+ "RecordSetAddress": "FruitData.FruityVice",
13
+ "RecordManifest": "FruitEditor"
14
+ }
15
+ ]
16
+ }
17
+ ],
18
+ "Descriptors": {
19
+ "FruitData.FruityVice": {
20
+ "Name": "Fruits of the Earth",
21
+ "Hash": "FruitGrid",
22
+ "DataType": "Array",
23
+ "Default": [],
24
+ "PictForm": {
25
+ "Section": "FruitGrid",
26
+ "Group": "FruitGrid"
27
+ }
28
+ }
29
+ },
30
+ "ReferenceManifests": {
31
+ "FruitEditor": {
32
+ "Scope": "FruitEditor",
33
+ "Descriptors": {
34
+ "name": {
35
+ "Name": "Fruit Name",
36
+ "Hash": "Name",
37
+ "DataType": "String",
38
+ "Default": "(unnamed fruit)",
39
+ "PictForm": {
40
+ "Section": "FruitGrid",
41
+ "Group": "FruitGrid"
42
+ }
43
+ },
44
+ "family": {
45
+ "Name": "Family",
46
+ "Hash": "Family",
47
+ "DataType": "String",
48
+ "PictForm": {
49
+ "Section": "FruitGrid",
50
+ "Group": "FruitGrid"
51
+ }
52
+ },
53
+ "order": {
54
+ "Name": "Order",
55
+ "Hash": "Order",
56
+ "DataType": "String",
57
+ "PictForm": {
58
+ "Section": "FruitGrid",
59
+ "Group": "FruitGrid"
60
+ }
61
+ },
62
+ "genus": {
63
+ "Name": "Genus",
64
+ "Hash": "Genus",
65
+ "DataType": "String",
66
+ "PictForm": {
67
+ "Section": "FruitGrid",
68
+ "Group": "FruitGrid"
69
+ }
70
+ },
71
+ "nutritions.calories": {
72
+ "Name": "Calories",
73
+ "Hash": "Calories",
74
+ "DataType": "Number"
75
+ }
76
+ }
77
+ }
78
+ }
79
+ }