pict-section-form 1.0.61 → 1.0.62

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.
@@ -117,7 +117,7 @@
117
117
  "Row": "1",
118
118
  "Width": "6",
119
119
  "Section": "Basic_Geometry",
120
- "Group": "Rectangle"
120
+ "Group": "BasicGeoGrp"
121
121
  },
122
122
  "Default": "7.25"
123
123
  },
@@ -130,7 +130,7 @@
130
130
  "Row": "1",
131
131
  "Width": "6",
132
132
  "Section": "Basic_Geometry",
133
- "Group": "Rectangle"
133
+ "Group": "BasicGeoGrp"
134
134
  },
135
135
  "Default": "10.3571"
136
136
  },
@@ -143,7 +143,7 @@
143
143
  "Row": "2",
144
144
  "Width": "3",
145
145
  "Section": "Basic_Geometry",
146
- "Group": "Rectangle",
146
+ "Group": "BasicGeoGrp",
147
147
  "Units": "unrounded"
148
148
  }
149
149
  },
@@ -156,7 +156,7 @@
156
156
  "Row": "2",
157
157
  "Width": "3",
158
158
  "Section": "Basic_Geometry",
159
- "Group": "Rectangle",
159
+ "Group": "BasicGeoGrp",
160
160
  "Units": "default"
161
161
  }
162
162
  },
@@ -169,7 +169,7 @@
169
169
  "Row": "2",
170
170
  "Width": "3",
171
171
  "Section": "Basic_Geometry",
172
- "Group": "Rectangle",
172
+ "Group": "BasicGeoGrp",
173
173
  "Units": "3"
174
174
  }
175
175
  },
@@ -182,7 +182,7 @@
182
182
  "Row": "2",
183
183
  "Width": "3",
184
184
  "Section": "Basic_Geometry",
185
- "Group": "Rectangle",
185
+ "Group": "BasicGeoGrp",
186
186
  "Units": "5"
187
187
  }
188
188
  },
@@ -476,6 +476,12 @@
476
476
  "Name": "Rectangles",
477
477
  "DataAddress": "Rectangle",
478
478
  "DataType": "Array"
479
+ },
480
+ "Cylinders": {
481
+ "Hash": "Cylinders",
482
+ "Name": "Cylinders",
483
+ "DataAddress": "Cylinders",
484
+ "DataType": "Array"
479
485
  }
480
486
  },
481
487
  "Sections": [
@@ -534,7 +540,7 @@
534
540
  "Groups": [
535
541
  {
536
542
  "Name": "Rectangle",
537
- "Hash": "Rectangle",
543
+ "Hash": "BasicGeoGrp",
538
544
  "Rows": [],
539
545
  "RecordSetSolvers": []
540
546
  },
@@ -548,12 +554,12 @@
548
554
  },
549
555
  {
550
556
  "Name": "Box Collection",
551
- "Hash": "Box_Collection",
557
+ "Hash": "BoxCollSec",
552
558
  "Solvers": [],
553
559
  "Groups": [
554
560
  {
555
561
  "Name": "Boxes",
556
- "Hash": "Boxes",
562
+ "Hash": "BoxCollGrp",
557
563
  "Rows": [],
558
564
  "RecordSetSolvers": [
559
565
  "BoxFloorspace = BoxWidth * BoxDepth",
@@ -640,6 +646,26 @@
640
646
  "RecordManifest": "Rectangles"
641
647
  }
642
648
  ]
649
+ },
650
+ {
651
+ "Name": "Cylinders",
652
+ "Hash": "Cylinders",
653
+ "Solvers": [],
654
+ "Groups": [
655
+ {
656
+ "Name": "Cylinders",
657
+ "Hash": "Cylinders",
658
+ "Rows": [],
659
+ "RecordSetSolvers": [
660
+ "Circumference = 2 * PI() * Radius",
661
+ "Area = (2 * PI() * Radius * Height) + (2 * PI() * Radius ^2)"
662
+ ],
663
+ "ShowTitle": false,
664
+ "Layout": "Tabular",
665
+ "RecordSetAddress": "Cylinders",
666
+ "RecordManifest": "Cylinders"
667
+ }
668
+ ]
643
669
  }
644
670
  ],
645
671
  "ReferenceManifests": {
@@ -654,8 +680,8 @@
654
680
  "PictForm": {
655
681
  "Row": "1",
656
682
  "Width": "1",
657
- "Section": "Box_Collection",
658
- "Group": "Boxes"
683
+ "Section": "BoxCollSec",
684
+ "Group": "BoxCollGrp"
659
685
  },
660
686
  "IsTabular": true
661
687
  },
@@ -667,8 +693,8 @@
667
693
  "PictForm": {
668
694
  "Row": "1",
669
695
  "Width": "1",
670
- "Section": "Box_Collection",
671
- "Group": "Boxes"
696
+ "Section": "BoxCollSec",
697
+ "Group": "BoxCollGrp"
672
698
  },
673
699
  "IsTabular": true
674
700
  },
@@ -680,8 +706,8 @@
680
706
  "PictForm": {
681
707
  "Row": "1",
682
708
  "Width": "1",
683
- "Section": "Box_Collection",
684
- "Group": "Boxes"
709
+ "Section": "BoxCollSec",
710
+ "Group": "BoxCollGrp"
685
711
  },
686
712
  "IsTabular": true
687
713
  },
@@ -693,8 +719,8 @@
693
719
  "PictForm": {
694
720
  "Row": "1",
695
721
  "Width": "1",
696
- "Section": "Box_Collection",
697
- "Group": "Boxes"
722
+ "Section": "BoxCollSec",
723
+ "Group": "BoxCollGrp"
698
724
  },
699
725
  "IsTabular": true
700
726
  },
@@ -706,8 +732,8 @@
706
732
  "PictForm": {
707
733
  "Row": "1",
708
734
  "Width": "1",
709
- "Section": "Box_Collection",
710
- "Group": "Boxes"
735
+ "Section": "BoxCollSec",
736
+ "Group": "BoxCollGrp"
711
737
  },
712
738
  "IsTabular": true
713
739
  },
@@ -719,8 +745,8 @@
719
745
  "PictForm": {
720
746
  "Row": "1",
721
747
  "Width": "1",
722
- "Section": "Box_Collection",
723
- "Group": "Boxes"
748
+ "Section": "BoxCollSec",
749
+ "Group": "BoxCollGrp"
724
750
  },
725
751
  "IsTabular": true
726
752
  }
@@ -786,6 +812,78 @@
786
812
  },
787
813
  "Sections": [],
788
814
  "ReferenceManifests": {}
815
+ },
816
+ "Cylinders": {
817
+ "Scope": "Cylinders",
818
+ "Descriptors": {
819
+ "Identifier": {
820
+ "Hash": "Identifier",
821
+ "Name": "Identifier",
822
+ "DataAddress": "Identifier",
823
+ "DataType": "String",
824
+ "PictForm": {
825
+ "Row": "1",
826
+ "Width": "1",
827
+ "Section": "Cylinders",
828
+ "Group": "Cylinders"
829
+ },
830
+ "IsTabular": true
831
+ },
832
+ "Radius": {
833
+ "Hash": "Radius",
834
+ "Name": "Radius",
835
+ "DataAddress": "Radius",
836
+ "DataType": "PreciseNumber",
837
+ "PictForm": {
838
+ "Row": "1",
839
+ "Width": "1",
840
+ "Section": "Cylinders",
841
+ "Group": "Cylinders"
842
+ },
843
+ "IsTabular": true
844
+ },
845
+ "Height": {
846
+ "Hash": "Height",
847
+ "Name": "Height",
848
+ "DataAddress": "Height",
849
+ "DataType": "PreciseNumber",
850
+ "PictForm": {
851
+ "Row": "1",
852
+ "Width": "1",
853
+ "Section": "Cylinders",
854
+ "Group": "Cylinders"
855
+ },
856
+ "IsTabular": true
857
+ },
858
+ "Circumference": {
859
+ "Hash": "Circumference",
860
+ "Name": "Circumference",
861
+ "DataAddress": "Circumference",
862
+ "DataType": "PreciseNumber",
863
+ "PictForm": {
864
+ "Row": "1",
865
+ "Width": "1",
866
+ "Section": "Cylinders",
867
+ "Group": "Cylinders"
868
+ },
869
+ "IsTabular": true
870
+ },
871
+ "Area": {
872
+ "Hash": "Area",
873
+ "Name": "Area",
874
+ "DataAddress": "Area",
875
+ "DataType": "PreciseNumber",
876
+ "PictForm": {
877
+ "Row": "1",
878
+ "Width": "1",
879
+ "Section": "Cylinders",
880
+ "Group": "Cylinders"
881
+ },
882
+ "IsTabular": true
883
+ }
884
+ },
885
+ "Sections": [],
886
+ "ReferenceManifests": {}
789
887
  }
790
888
  }
791
889
  }
@@ -1,54 +1,60 @@
1
- Form,Form Name,SubManifest,DataOnly,Section Name,Group Name,Group CSS,Group Show Title,Row,Width,Minimum Row Count,Maximum Row Count,Input Address,Input Name,Input Hash,Input Extra,Units,DataType,InputType,Equation,Default,Description,Tooltip,Input Notes,,Entity,EntityColumnFilter,EntityDestination,SingleRecord,TriggerGroup,TriggerAddress,MarshalEmptyValues
2
- MathExampleForm,Math Example Form,,,Header,General Info,,,1,3,,,Header.FirstName,First Name,HeaderFirstName,,,String,,,,,,,,,,,,,,
3
- MathExampleForm,,,,Header,General Info,,,1,3,,,Header.LastName,Last Name,HeaderLastName,,,String,,,,,,,,,,,,,,
4
- MathExampleForm,,,,Header,General Info,,,1,6,,,Header.JobTitle,Job Title,JobTitle,,,String,,,,,,,,,,,,,,
5
- MathExampleForm,,,,Header,General Info,,,2,12,,,Header.Description,Description,Description,,,String,,,,,,,,,,,,,,
6
- MathExampleForm,,,,Header,General Info,,,3,12,,,Header.Planet,Planet,Planet,"Earth,Mars,Saturn,Jupiter",planetary,String,Option,,,,,,,,,,,,,
7
- MathExampleForm,,,,Header,General Info,,,1,3,,,Header.LastName,Last Name,HeaderLastName,,,String,,,,,,,,,,,,,,
8
- MathExampleForm,,,,Header,General Info,,,1,6,,,Header.JobTitle,Job Title,JobTitle,,,String,,,,,,,,,,,,,,
9
- MathExampleForm,,,,Header,General Info,,,2,12,,,Header.Description,Description,Description,,,String,,,,,,,,,,,,,,
10
- MathExampleForm,,,,Header,General Info,,,3,12,,,Header.Planet,Planet,Planet,"Earth,Mars,Saturn,Jupiter",planetary,String,Option,,,,,,,,,,,,,
11
- MathExampleForm,,,,Bridge,Bridge Data,,,1,6,,,BridgeData.IDBridge,IDBridge,CurrentIDBridge,,,Number,,,,,,Bridge,FBV~IDBridge~EQ~{~D:Record.Value~},BridgeData.CurrentBridge,true,,,,,
12
- MathExampleForm,,,,MatheMagic,Math is Magic,,,1,1,,,HelpContent.Math,So Very Magic,MathHelpContent,,,String,HTML,,,,,,,,,,,,,
13
- MathExampleForm,,,,Basic Geometry,Rectangle,,,1,6,,,Geometry.Rectangle.Width,Width,RectangleWidth,,,Number,,,7.25,,,,,,,,,,,
14
- MathExampleForm,,,,Basic Geometry,Rectangle,,,1,6,,,Geometry.Rectangle.Height,Height,RectangleHeight,,,Number,,,10.3571,,,,,,,,,,,
15
- MathExampleForm,,,,Basic Geometry,Rectangle,,,2,3,,,Geometry.Rectangle.Area,Area,RectangleArea,,unrounded,Number,,RectangleArea = RectangleWidth * RectangleHeight,,,,,,,,,,,,
16
- MathExampleForm,,,,Basic Geometry,Rectangle,,,2,3,,,Geometry.Rectangle.AreaRoundedDefault,Area Rounded,RectangleAreaRoundedDefault,,default,Number,,RectangleAreaRoundedDefault = ROUND(RectangleWidth * RectangleHeight),,,,,,,,,,,,
17
- MathExampleForm,,,,Basic Geometry,Rectangle,,,2,3,,,Geometry.Rectangle.AreaRoundedThree,Area Rounded 3,RectangleAreaRoundedThree,,3,Number,,"RectangleAreaRoundedThree = ROUND((RectangleWidth * RectangleHeight), 3)",,,,,,,,,,,,
18
- MathExampleForm,,,,Basic Geometry,Rectangle,,,2,3,,,Geometry.Rectangle.AreaRoundedFour,Area Rounded 5,RectangleAreaRoundedFive,,5,Number,,"RectangleAreaRoundedFive = ROUND(RectangleArea, 5)",,,,,,,,,,,,
19
- MathExampleForm,,,,Basic Geometry,Circle,,,1,12,,,Geometry.Circle.Radius,Radius,CircleRadius,,,Number,,,85.523,,,,,,,,,,,
20
- MathExampleForm,,,,Basic Geometry,Circle,,,2,3,,,Geometry.Circle.Area,Area,CircleArea,,unrounded,Number,,CircleArea = PI() * CircleRadius^2,,,,,,,,,,,,
21
- MathExampleForm,,,,Basic Geometry,Circle,,,2,3,,,Geometry.Circle.AreaRoundedDefault,Area Rounded,CircleAreaRoundedDefault,,default,Number,,CircleAreaRoundedDefault = ROUND(PI() * CircleRadius^2),,,,,,,,,,,,
22
- MathExampleForm,,,,Basic Geometry,Circle,,,2,3,,,Geometry.Circle.AreaRoundedThree,Area Rounded 4,CircleAreaRoundedFour,,4,Number,,"CircleAreaRoundedFour = ROUND(CircleArea,4)",,,,,,,,,,,,
23
- MathExampleForm,,,,Basic Geometry,Circle,,,2,3,,,Geometry.Circle.AreaRoundedFour,Area Rounded 6,CircleAreaRoundedSix,,6,Number,,"CircleAreaRoundedSix = ROUND(PI() * CircleRadius^2,6)",,,,,,,,,,,,
24
- MathExampleForm,,BoxCollectionData,1,Box Collection,Boxes,,true,1,1,3,10,Boxes,Boxes,Boxes,,,Array,TabularAddress,,,,,,,,,,,,,
25
- MathExampleForm,,BoxCollectionData,,Box Collection,Boxes,,,1,1,,,Identifier,Identifier,BoxIdentifier,,,String,,,,,,,,,,,,,,
26
- MathExampleForm,,BoxCollectionData,,Box Collection,Boxes,,,1,1,,,Width,Width,BoxWidth,,,Number,,,,,,,,,,,,,,
27
- MathExampleForm,,BoxCollectionData,,Box Collection,Boxes,,,1,1,,,Height,Height,BoxHeight,,,Number,,,,,,,,,,,,,,
28
- MathExampleForm,,BoxCollectionData,,Box Collection,Boxes,,,1,1,,,Depth,Depth,BoxDepth,,,Number,,,,,,,,,,,,,,
29
- MathExampleForm,,BoxCollectionData,,Box Collection,Boxes,,,1,1,,,Floorspace,Floorspace,BoxFloorspace,,,Number,,BoxFloorspace = BoxWidth * BoxDepth,,,,,,,,,,,,
30
- MathExampleForm,,BoxCollectionData,,Box Collection,Boxes,,,1,1,,,Volume,Volume,BoxVolume,,,Number,,BoxVolume = BoxFloorspace * BoxHeight,,,,,,,,,,,,
31
- MathExampleForm,,,1,Box Summary Data,Box Summary Data,,,0,0,,,Boxes[].Floorspace,BoxesFloorspaceSet,BoxesFloorspaceSet,,,Number,,,,,,,,,,,,,,
32
- MathExampleForm,,,1,Box Summary Data,Box Summary Data,,,0,0,,,Boxes[].Volume,BoxesVolumeSet,BoxesVolumeSet,,,Number,,,,,,,,,,,,,,
33
- MathExampleForm,,,1,Box Summary Data,Box Summary Data,,,0,0,,,Boxes[].Depth,BoxesDepthSet,BoxesDepthSet,,,Number,,,,,,,,,,,,,,
34
- MathExampleForm,,,,Box Summary Data,Box Summary Data,,,1,12,,,BoxAggregate.Count,Box Count,BoxesCount,,,Number,,BoxesCount = COUNT(BoxesFloorspaceSet),,,,,,,,,,,,
35
- MathExampleForm,,,,Box Summary Data,Box Summary Data,,,2,6,,,BoxAggregate.AverageFloorspace,Average Floorspace,BoxesAverageFloorspace,,,Number,,BoxesAverageFloorspace = AVG(BoxesFloorspaceSet),,,,,,,,,,,,
36
- MathExampleForm,,,,Box Summary Data,Box Summary Data,,,2,6,,,BoxAggregate.TotalFloorspace,Total Floorspace,BoxesTotalFloorspace,,,Number,,BoxesTotalFloorspace = SUM(BoxesFloorspaceSet),,,,,,,,,,,,
37
- MathExampleForm,,,,Box Summary Data,Box Summary Data,,,3,4,,,BoxAggregate.AverageVolume,Average Volume,BoxesAverageVolume,,,Number,,BoxesAverageVolume = AVG(BoxesVolumeSet),,,,,,,,,,,,
38
- MathExampleForm,,,,Box Summary Data,Box Summary Data,,,3,4,,,BoxAggregate.TotalVolume,Total Volume,BoxesTotalVolume,,,Number,,BoxesTotalVolume = COUNT(BoxesVolumeSet),,,,,,,,,,,,
39
- MathExampleForm,,,,Box Summary Data,Box Summary Data,,,3,4,,,BoxAggregate.TotalVolumeRounded,Total Volume Rounded,BoxesTotalVolumeRounded,,,Number,,BoxesTotalVolumeRounded = ROUND(SUM(BoxesVolumeSet)),,,,,,,,,,,,
40
- MathExampleForm,,,,Box Summary Data,Box Summary Data,,,4,3,,,BoxAggregate.MinDepth,Minimum Depth,BoxesMinDepth,,,Number,,BoxesMinDepth = MIN(BoxesDepthSet),,,,,,,,,,,,
41
- MathExampleForm,,,,Box Summary Data,Box Summary Data,,,4,3,,,BoxAggregate.MeanDepth,Mean Depth,BoxesMeanDepth,,,Number,,BoxesMeanDepth = MEAN(BoxesDepthSet),,,,,,,,,,,,
42
- MathExampleForm,,,,Box Summary Data,Box Summary Data,,,4,3,,,BoxAggregate.MedianDepth,Median Depth,BoxesMedianDepth,,,Number,,BoxesMedianDepth = MEDIAN(BoxesDepthSet),,,,,,,,,,,,
43
- MathExampleForm,,,,Box Summary Data,Box Summary Data,,,4,3,,,BoxAggregate.MaxDepth,Max Depth,BoxesMaxDepth,,,Number,,BoxesMaxDepth = MAX(BoxesDepthSet),,,,,,,,,,,,
44
- MathExampleForm,,,,Rectangular Area Help,Rectangular Area Help,,,1,1,,,HelpContent.Cuboid,How to Cuboid Math,CuboidHelpContent,,,String,Markdown,,,,,,,,,,,,,
45
- MathExampleForm,,,,Complex Equation,Complex Equation,,,1,4,,,ComplexEquation.PR,PR,CePR,,,Number,,,4.5,,,,,,,,,,,
46
- MathExampleForm,,,,Complex Equation,Complex Equation,,,1,4,,,ComplexEquation.Z,Z,CeZ,,,Number,,,1.5,,,,,,,,,,,
47
- MathExampleForm,,,,Complex Equation,Complex Equation,,,1,4,,,ComplexEquation.C,C,CeC,,,Number,,,8.75,,,,,,,,,,,
48
- 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)),,,,,,,,,,,,
49
- MathExampleForm,,,,Complex Equation,Complex Equation,,,2,6,,,ComplexEquation.ResultRounded,Rounded 3,CeResultRounded,,,Number,,"CeResultRounded = ROUND(CeResult,3)",,,,,,,,,,,,
50
- MathExampleForm,,Rectangles,1,Rectangle Aggregation,Rectangle Set,,false,1,1,20,,Rectangle,Rectangles,Rectangles,,,Array,TabularAddress,,,,,,,,,,,,,
51
- MathExampleForm,,Rectangles,,Rectangle Aggregation,Rectangle Set,,,1,1,,,Identifier,Identifier,RectangleIdentifier,,,String,,,,,,,,,,,,,,
52
- MathExampleForm,,Rectangles,,Rectangle Aggregation,Rectangle Set,,,1,1,,,Width,Width,RectangleWidth,,,Number,,,,,,,,,,,,,,
53
- MathExampleForm,,Rectangles,,Rectangle Aggregation,Rectangle Set,,,1,1,,,Height,Height,RectangleHeight,,,Number,,,,,,,,,,,,,,
54
- MathExampleForm,,Rectangles,,Rectangle Aggregation,Rectangle Set,,,1,1,,,Area,Area,RectangleArea,,,Number,,RectangleArea = RectangleWidth + RectangleHeight,,,,,,,,,,,,
1
+ Form,Form Name,SubManifest,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,Default,Description,Tooltip,Input Notes,,Entity,EntityColumnFilter,EntityDestination,SingleRecord,TriggerGroup,TriggerAddress,MarshalEmptyValues
2
+ MathExampleForm,Math Example Form,,,Header,,General Info,,,,,1,3,,,Header.FirstName,First Name,HeaderFirstName,,,String,,,,,,,,,,,,,,,
3
+ MathExampleForm,,,,Header,,General Info,,,,,1,3,,,Header.LastName,Last Name,HeaderLastName,,,String,,,,,,,,,,,,,,,
4
+ MathExampleForm,,,,Header,,General Info,,,,,1,6,,,Header.JobTitle,Job Title,JobTitle,,,String,,,,,,,,,,,,,,,
5
+ MathExampleForm,,,,Header,,General Info,,,,,2,12,,,Header.Description,Description,Description,,,String,,,,,,,,,,,,,,,
6
+ MathExampleForm,,,,Header,,General Info,,,,,3,12,,,Header.Planet,Planet,Planet,"Earth,Mars,Saturn,Jupiter",planetary,String,,Option,,,,,,,,,,,,,
7
+ MathExampleForm,,,,Header,,General Info,,,,,1,3,,,Header.LastName,Last Name,HeaderLastName,,,String,,,,,,,,,,,,,,,
8
+ MathExampleForm,,,,Header,,General Info,,,,,1,6,,,Header.JobTitle,Job Title,JobTitle,,,String,,,,,,,,,,,,,,,
9
+ MathExampleForm,,,,Header,,General Info,,,,,2,12,,,Header.Description,Description,Description,,,String,,,,,,,,,,,,,,,
10
+ MathExampleForm,,,,Header,,General Info,,,,,3,12,,,Header.Planet,Planet,Planet,"Earth,Mars,Saturn,Jupiter",planetary,String,,Option,,,,,,,,,,,,,
11
+ MathExampleForm,,,,Bridge,,Bridge Data,,,,,1,6,,,BridgeData.IDBridge,IDBridge,CurrentIDBridge,,,Number,,,,,,,Bridge,FBV~IDBridge~EQ~{~D:Record.Value~},BridgeData.CurrentBridge,true,,,,,
12
+ MathExampleForm,,,,MatheMagic,,Math is Magic,,,,,1,1,,,HelpContent.Math,So Very Magic,MathHelpContent,,,String,,HTML,,,,,,,,,,,,,
13
+ MathExampleForm,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,1,6,,,Geometry.Rectangle.Width,Width,RectangleWidth,,,Number,,,,7.25,,,,,,,,,,,
14
+ MathExampleForm,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,1,6,,,Geometry.Rectangle.Height,Height,RectangleHeight,,,Number,,,,10.3571,,,,,,,,,,,
15
+ MathExampleForm,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,2,3,,,Geometry.Rectangle.Area,Area,RectangleArea,,unrounded,Number,,,RectangleArea = RectangleWidth * RectangleHeight,,,,,,,,,,,,
16
+ MathExampleForm,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,2,3,,,Geometry.Rectangle.AreaRoundedDefault,Area Rounded,RectangleAreaRoundedDefault,,default,Number,,,RectangleAreaRoundedDefault = ROUND(RectangleWidth * RectangleHeight),,,,,,,,,,,,
17
+ MathExampleForm,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,2,3,,,Geometry.Rectangle.AreaRoundedThree,Area Rounded 3,RectangleAreaRoundedThree,,3,Number,,,"RectangleAreaRoundedThree = ROUND((RectangleWidth * RectangleHeight), 3)",,,,,,,,,,,,
18
+ MathExampleForm,,,,Basic Geometry,,Rectangle,BasicGeoGrp,,,,2,3,,,Geometry.Rectangle.AreaRoundedFour,Area Rounded 5,RectangleAreaRoundedFive,,5,Number,,,"RectangleAreaRoundedFive = ROUND(RectangleArea, 5)",,,,,,,,,,,,
19
+ MathExampleForm,,,,Basic Geometry,,Circle,,,,,1,12,,,Geometry.Circle.Radius,Radius,CircleRadius,,,Number,,,,85.523,,,,,,,,,,,
20
+ MathExampleForm,,,,Basic Geometry,,Circle,,,,,2,3,,,Geometry.Circle.Area,Area,CircleArea,,unrounded,Number,,,CircleArea = PI() * CircleRadius^2,,,,,,,,,,,,
21
+ MathExampleForm,,,,Basic Geometry,,Circle,,,,,2,3,,,Geometry.Circle.AreaRoundedDefault,Area Rounded,CircleAreaRoundedDefault,,default,Number,,,CircleAreaRoundedDefault = ROUND(PI() * CircleRadius^2),,,,,,,,,,,,
22
+ MathExampleForm,,,,Basic Geometry,,Circle,,,,,2,3,,,Geometry.Circle.AreaRoundedThree,Area Rounded 4,CircleAreaRoundedFour,,4,Number,,,"CircleAreaRoundedFour = ROUND(CircleArea,4)",,,,,,,,,,,,
23
+ MathExampleForm,,,,Basic Geometry,,Circle,,,,,2,3,,,Geometry.Circle.AreaRoundedFour,Area Rounded 6,CircleAreaRoundedSix,,6,Number,,,"CircleAreaRoundedSix = ROUND(PI() * CircleRadius^2,6)",,,,,,,,,,,,
24
+ MathExampleForm,,BoxCollectionData,1,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,true,1,1,3,10,Boxes,Boxes,Boxes,,,Array,,TabularAddress,,,,,,,,,,,,,
25
+ MathExampleForm,,BoxCollectionData,,Box Collection,BoxCollSec,Boxes,BoxCollGrp,,,,1,1,,,Identifier,Identifier,BoxIdentifier,,,String,,,,,,,,,,,,,,,
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,,,,,,,,,,,,
31
+ MathExampleForm,,,1,Box Summary Data,,Box Summary Data,,,,,0,0,,,Boxes[].Floorspace,BoxesFloorspaceSet,BoxesFloorspaceSet,,,Number,,,,,,,,,,,,,,,
32
+ MathExampleForm,,,1,Box Summary Data,,Box Summary Data,,,,,0,0,,,Boxes[].Volume,BoxesVolumeSet,BoxesVolumeSet,,,Number,,,,,,,,,,,,,,,
33
+ MathExampleForm,,,1,Box Summary Data,,Box Summary Data,,,,,0,0,,,Boxes[].Depth,BoxesDepthSet,BoxesDepthSet,,,Number,,,,,,,,,,,,,,,
34
+ MathExampleForm,,,,Box Summary Data,,Box Summary Data,,,,,1,12,,,BoxAggregate.Count,Box Count,BoxesCount,,,Number,,,BoxesCount = COUNT(BoxesFloorspaceSet),,,,,,,,,,,,
35
+ MathExampleForm,,,,Box Summary Data,,Box Summary Data,,,,,2,6,,,BoxAggregate.AverageFloorspace,Average Floorspace,BoxesAverageFloorspace,,,Number,,,BoxesAverageFloorspace = AVG(BoxesFloorspaceSet),,,,,,,,,,,,
36
+ MathExampleForm,,,,Box Summary Data,,Box Summary Data,,,,,2,6,,,BoxAggregate.TotalFloorspace,Total Floorspace,BoxesTotalFloorspace,,,Number,,,BoxesTotalFloorspace = SUM(BoxesFloorspaceSet),,,,,,,,,,,,
37
+ MathExampleForm,,,,Box Summary Data,,Box Summary Data,,,,,3,4,,,BoxAggregate.AverageVolume,Average Volume,BoxesAverageVolume,,,Number,,,BoxesAverageVolume = AVG(BoxesVolumeSet),,,,,,,,,,,,
38
+ MathExampleForm,,,,Box Summary Data,,Box Summary Data,,,,,3,4,,,BoxAggregate.TotalVolume,Total Volume,BoxesTotalVolume,,,Number,,,BoxesTotalVolume = COUNT(BoxesVolumeSet),,,,,,,,,,,,
39
+ MathExampleForm,,,,Box Summary Data,,Box Summary Data,,,,,3,4,,,BoxAggregate.TotalVolumeRounded,Total Volume Rounded,BoxesTotalVolumeRounded,,,Number,,,BoxesTotalVolumeRounded = ROUND(SUM(BoxesVolumeSet)),,,,,,,,,,,,
40
+ MathExampleForm,,,,Box Summary Data,,Box Summary Data,,,,,4,3,,,BoxAggregate.MinDepth,Minimum Depth,BoxesMinDepth,,,Number,,,BoxesMinDepth = MIN(BoxesDepthSet),,,,,,,,,,,,
41
+ MathExampleForm,,,,Box Summary Data,,Box Summary Data,,,,,4,3,,,BoxAggregate.MeanDepth,Mean Depth,BoxesMeanDepth,,,Number,,,BoxesMeanDepth = MEAN(BoxesDepthSet),,,,,,,,,,,,
42
+ MathExampleForm,,,,Box Summary Data,,Box Summary Data,,,,,4,3,,,BoxAggregate.MedianDepth,Median Depth,BoxesMedianDepth,,,Number,,,BoxesMedianDepth = MEDIAN(BoxesDepthSet),,,,,,,,,,,,
43
+ MathExampleForm,,,,Box Summary Data,,Box Summary Data,,,,,4,3,,,BoxAggregate.MaxDepth,Max Depth,BoxesMaxDepth,,,Number,,,BoxesMaxDepth = MAX(BoxesDepthSet),,,,,,,,,,,,
44
+ MathExampleForm,,,,Rectangular Area Help,,Rectangular Area Help,,,,,1,1,,,HelpContent.Cuboid,How to Cuboid Math,CuboidHelpContent,,,String,,Markdown,,,,,,,,,,,,,
45
+ MathExampleForm,,,,Complex Equation,,Complex Equation,,Vertical,,,1,4,,,ComplexEquation.PR,PR,CePR,,,Number,,,,4.5,,The PR is *very* important.,,,,,,,,,
46
+ MathExampleForm,,,,Complex Equation,,Complex Equation,,,,,1,4,,,ComplexEquation.Z,Z,CeZ,,,Number,,,,1.5,,Z _is not_ the z-index.,,,,,,,,,
47
+ MathExampleForm,,,,Complex Equation,,Complex Equation,,,,,1,4,,,ComplexEquation.C,C,CeC,,,Number,,,,8.75,,C is the universal constant.,,,,,,,,,
48
+ 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)),,,,,,,,,,,,
49
+ MathExampleForm,,,,Complex Equation,,Complex Equation,,,,,2,6,,,ComplexEquation.ResultRounded,Rounded 3,CeResultRounded,,,Number,,,"CeResultRounded = ROUND(CeResult,3)",,,,,,,,,,,,
50
+ MathExampleForm,,Rectangles,1,Rectangle Aggregation,,Rectangle Set,,,,false,1,1,20,,Rectangle,Rectangles,Rectangles,,,Array,,TabularAddress,,,,,,,,,,,,,
51
+ MathExampleForm,,Rectangles,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Identifier,Identifier,RectangleIdentifier,,,String,,,,,,,,,,,,,,,
52
+ MathExampleForm,,Rectangles,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Width,Width,RectangleWidth,,,Number,,,,,,,,,,,,,,,
53
+ MathExampleForm,,Rectangles,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Height,Height,RectangleHeight,,,Number,,,,,,,,,,,,,,,
54
+ MathExampleForm,,Rectangles,,Rectangle Aggregation,,Rectangle Set,,,,,1,1,,,Area,Area,RectangleArea,,,Number,,,RectangleArea = RectangleWidth + RectangleHeight,,,,,,,,,,,,
55
+ MathExampleForm,,Cylinders,1,Cylinders,,Cylinders,,,,false,1,1,,,Cylinders,Cylinders,Cylinders,,,Array,,TabularAddress,,,,,,,,,,,,,
56
+ MathExampleForm,,Cylinders,,Cylinders,,Cylinders,,,,,1,1,,,Identifier,Identifier,Identifier,,,String,,,,,,,,,,,,,,,
57
+ MathExampleForm,,Cylinders,,Cylinders,,Cylinders,,,,,1,1,,,Radius,Radius,Radius,,,PreciseNumber,,,,,,,,,,,,,,,
58
+ MathExampleForm,,Cylinders,,Cylinders,,Cylinders,,,,,1,1,,,Height,Height,Height,,,PreciseNumber,,,,,,,,,,,,,,,
59
+ MathExampleForm,,Cylinders,,Cylinders,,Cylinders,,,,,1,1,,,Circumference,Circumference,Circumference,,,PreciseNumber,,,Circumference = 2 * PI() * Radius,,,,,,,,,,,,
60
+ MathExampleForm,,Cylinders,,Cylinders,,Cylinders,,,,,1,1,,,Area,Area,Area,,,PreciseNumber,,,Area = (2 * PI() * Radius * Height) + (2 * PI() * Radius ^2),,,,,,,,,,,,
@@ -117,7 +117,7 @@
117
117
  "Row": "1",
118
118
  "Width": "6",
119
119
  "Section": "Basic_Geometry",
120
- "Group": "Rectangle"
120
+ "Group": "BasicGeoGrp"
121
121
  },
122
122
  "Default": "7.25"
123
123
  },
@@ -130,7 +130,7 @@
130
130
  "Row": "1",
131
131
  "Width": "6",
132
132
  "Section": "Basic_Geometry",
133
- "Group": "Rectangle"
133
+ "Group": "BasicGeoGrp"
134
134
  },
135
135
  "Default": "10.3571"
136
136
  },
@@ -143,7 +143,7 @@
143
143
  "Row": "2",
144
144
  "Width": "3",
145
145
  "Section": "Basic_Geometry",
146
- "Group": "Rectangle",
146
+ "Group": "BasicGeoGrp",
147
147
  "Units": "unrounded"
148
148
  }
149
149
  },
@@ -156,7 +156,7 @@
156
156
  "Row": "2",
157
157
  "Width": "3",
158
158
  "Section": "Basic_Geometry",
159
- "Group": "Rectangle",
159
+ "Group": "BasicGeoGrp",
160
160
  "Units": "default"
161
161
  }
162
162
  },
@@ -169,7 +169,7 @@
169
169
  "Row": "2",
170
170
  "Width": "3",
171
171
  "Section": "Basic_Geometry",
172
- "Group": "Rectangle",
172
+ "Group": "BasicGeoGrp",
173
173
  "Units": "3"
174
174
  }
175
175
  },
@@ -182,7 +182,7 @@
182
182
  "Row": "2",
183
183
  "Width": "3",
184
184
  "Section": "Basic_Geometry",
185
- "Group": "Rectangle",
185
+ "Group": "BasicGeoGrp",
186
186
  "Units": "5"
187
187
  }
188
188
  },
@@ -477,6 +477,12 @@
477
477
  "Name": "Rectangles",
478
478
  "DataAddress": "Rectangle",
479
479
  "DataType": "Array"
480
+ },
481
+ "Cylinders": {
482
+ "Hash": "Cylinders",
483
+ "Name": "Cylinders",
484
+ "DataAddress": "Cylinders",
485
+ "DataType": "Array"
480
486
  }
481
487
  },
482
488
  "Sections": [
@@ -535,7 +541,7 @@
535
541
  "Groups": [
536
542
  {
537
543
  "Name": "Rectangle",
538
- "Hash": "Rectangle",
544
+ "Hash": "BasicGeoGrp",
539
545
  "Rows": [],
540
546
  "RecordSetSolvers": []
541
547
  },
@@ -549,12 +555,12 @@
549
555
  },
550
556
  {
551
557
  "Name": "Box Collection",
552
- "Hash": "Box_Collection",
558
+ "Hash": "BoxCollSec",
553
559
  "Solvers": [],
554
560
  "Groups": [
555
561
  {
556
562
  "Name": "Boxes",
557
- "Hash": "Boxes",
563
+ "Hash": "BoxCollGrp",
558
564
  "Rows": [],
559
565
  "RecordSetSolvers": [
560
566
  "BoxFloorspace = BoxWidth * BoxDepth",
@@ -832,6 +838,26 @@
832
838
  ]
833
839
  }
834
840
  ]
841
+ },
842
+ {
843
+ "Name": "Cylinders",
844
+ "Hash": "Cylinders",
845
+ "Solvers": [],
846
+ "Groups": [
847
+ {
848
+ "Name": "Cylinders",
849
+ "Hash": "Cylinders",
850
+ "Rows": [],
851
+ "RecordSetSolvers": [
852
+ "Circumference = 2 * PI() * Radius",
853
+ "Area = (2 * PI() * Radius * Height) + (2 * PI() * Radius ^2)"
854
+ ],
855
+ "ShowTitle": false,
856
+ "Layout": "Tabular",
857
+ "RecordSetAddress": "Cylinders",
858
+ "RecordManifest": "Cylinders"
859
+ }
860
+ ]
835
861
  }
836
862
  ],
837
863
  "ReferenceManifests": {
@@ -846,8 +872,8 @@
846
872
  "PictForm": {
847
873
  "Row": "1",
848
874
  "Width": "1",
849
- "Section": "Box_Collection",
850
- "Group": "Boxes"
875
+ "Section": "BoxCollSec",
876
+ "Group": "BoxCollGrp"
851
877
  },
852
878
  "IsTabular": true
853
879
  },
@@ -859,8 +885,8 @@
859
885
  "PictForm": {
860
886
  "Row": "1",
861
887
  "Width": "1",
862
- "Section": "Box_Collection",
863
- "Group": "Boxes"
888
+ "Section": "BoxCollSec",
889
+ "Group": "BoxCollGrp"
864
890
  },
865
891
  "IsTabular": true
866
892
  },
@@ -872,8 +898,8 @@
872
898
  "PictForm": {
873
899
  "Row": "1",
874
900
  "Width": "1",
875
- "Section": "Box_Collection",
876
- "Group": "Boxes"
901
+ "Section": "BoxCollSec",
902
+ "Group": "BoxCollGrp"
877
903
  },
878
904
  "IsTabular": true
879
905
  },
@@ -885,8 +911,8 @@
885
911
  "PictForm": {
886
912
  "Row": "1",
887
913
  "Width": "1",
888
- "Section": "Box_Collection",
889
- "Group": "Boxes"
914
+ "Section": "BoxCollSec",
915
+ "Group": "BoxCollGrp"
890
916
  },
891
917
  "IsTabular": true
892
918
  },
@@ -898,8 +924,8 @@
898
924
  "PictForm": {
899
925
  "Row": "1",
900
926
  "Width": "1",
901
- "Section": "Box_Collection",
902
- "Group": "Boxes"
927
+ "Section": "BoxCollSec",
928
+ "Group": "BoxCollGrp"
903
929
  },
904
930
  "IsTabular": true
905
931
  },
@@ -911,8 +937,8 @@
911
937
  "PictForm": {
912
938
  "Row": "1",
913
939
  "Width": "1",
914
- "Section": "Box_Collection",
915
- "Group": "Boxes"
940
+ "Section": "BoxCollSec",
941
+ "Group": "BoxCollGrp"
916
942
  },
917
943
  "IsTabular": true
918
944
  }
@@ -978,6 +1004,78 @@
978
1004
  },
979
1005
  "Sections": [],
980
1006
  "ReferenceManifests": {}
1007
+ },
1008
+ "Cylinders": {
1009
+ "Scope": "Cylinders",
1010
+ "Descriptors": {
1011
+ "Identifier": {
1012
+ "Hash": "Identifier",
1013
+ "Name": "Identifier",
1014
+ "DataAddress": "Identifier",
1015
+ "DataType": "String",
1016
+ "PictForm": {
1017
+ "Row": "1",
1018
+ "Width": "1",
1019
+ "Section": "Cylinders",
1020
+ "Group": "Cylinders"
1021
+ },
1022
+ "IsTabular": true
1023
+ },
1024
+ "Radius": {
1025
+ "Hash": "Radius",
1026
+ "Name": "Radius",
1027
+ "DataAddress": "Radius",
1028
+ "DataType": "PreciseNumber",
1029
+ "PictForm": {
1030
+ "Row": "1",
1031
+ "Width": "1",
1032
+ "Section": "Cylinders",
1033
+ "Group": "Cylinders"
1034
+ },
1035
+ "IsTabular": true
1036
+ },
1037
+ "Height": {
1038
+ "Hash": "Height",
1039
+ "Name": "Height",
1040
+ "DataAddress": "Height",
1041
+ "DataType": "PreciseNumber",
1042
+ "PictForm": {
1043
+ "Row": "1",
1044
+ "Width": "1",
1045
+ "Section": "Cylinders",
1046
+ "Group": "Cylinders"
1047
+ },
1048
+ "IsTabular": true
1049
+ },
1050
+ "Circumference": {
1051
+ "Hash": "Circumference",
1052
+ "Name": "Circumference",
1053
+ "DataAddress": "Circumference",
1054
+ "DataType": "PreciseNumber",
1055
+ "PictForm": {
1056
+ "Row": "1",
1057
+ "Width": "1",
1058
+ "Section": "Cylinders",
1059
+ "Group": "Cylinders"
1060
+ },
1061
+ "IsTabular": true
1062
+ },
1063
+ "Area": {
1064
+ "Hash": "Area",
1065
+ "Name": "Area",
1066
+ "DataAddress": "Area",
1067
+ "DataType": "PreciseNumber",
1068
+ "PictForm": {
1069
+ "Row": "1",
1070
+ "Width": "1",
1071
+ "Section": "Cylinders",
1072
+ "Group": "Cylinders"
1073
+ },
1074
+ "IsTabular": true
1075
+ }
1076
+ },
1077
+ "Sections": [],
1078
+ "ReferenceManifests": {}
981
1079
  }
982
1080
  }
983
1081
  }
@@ -117,7 +117,7 @@
117
117
  "Row": "1",
118
118
  "Width": "6",
119
119
  "Section": "Basic_Geometry",
120
- "Group": "Rectangle"
120
+ "Group": "BasicGeoGrp"
121
121
  },
122
122
  "Default": "7.25"
123
123
  },
@@ -130,7 +130,7 @@
130
130
  "Row": "1",
131
131
  "Width": "6",
132
132
  "Section": "Basic_Geometry",
133
- "Group": "Rectangle"
133
+ "Group": "BasicGeoGrp"
134
134
  },
135
135
  "Default": "10.3571"
136
136
  },
@@ -143,7 +143,7 @@
143
143
  "Row": "2",
144
144
  "Width": "3",
145
145
  "Section": "Basic_Geometry",
146
- "Group": "Rectangle",
146
+ "Group": "BasicGeoGrp",
147
147
  "Units": "unrounded"
148
148
  }
149
149
  },
@@ -156,7 +156,7 @@
156
156
  "Row": "2",
157
157
  "Width": "3",
158
158
  "Section": "Basic_Geometry",
159
- "Group": "Rectangle",
159
+ "Group": "BasicGeoGrp",
160
160
  "Units": "default"
161
161
  }
162
162
  },
@@ -169,7 +169,7 @@
169
169
  "Row": "2",
170
170
  "Width": "3",
171
171
  "Section": "Basic_Geometry",
172
- "Group": "Rectangle",
172
+ "Group": "BasicGeoGrp",
173
173
  "Units": "3"
174
174
  }
175
175
  },
@@ -182,7 +182,7 @@
182
182
  "Row": "2",
183
183
  "Width": "3",
184
184
  "Section": "Basic_Geometry",
185
- "Group": "Rectangle",
185
+ "Group": "BasicGeoGrp",
186
186
  "Units": "5"
187
187
  }
188
188
  },
@@ -477,6 +477,12 @@
477
477
  "Name": "Rectangles",
478
478
  "DataAddress": "Rectangle",
479
479
  "DataType": "Array"
480
+ },
481
+ "Cylinders": {
482
+ "Hash": "Cylinders",
483
+ "Name": "Cylinders",
484
+ "DataAddress": "Cylinders",
485
+ "DataType": "Array"
480
486
  }
481
487
  },
482
488
  "Sections": [
@@ -535,7 +541,7 @@
535
541
  "Groups": [
536
542
  {
537
543
  "Name": "Rectangle",
538
- "Hash": "Rectangle",
544
+ "Hash": "BasicGeoGrp",
539
545
  "Rows": [],
540
546
  "RecordSetSolvers": []
541
547
  },
@@ -549,12 +555,12 @@
549
555
  },
550
556
  {
551
557
  "Name": "Box Collection",
552
- "Hash": "Box_Collection",
558
+ "Hash": "BoxCollSec",
553
559
  "Solvers": [],
554
560
  "Groups": [
555
561
  {
556
562
  "Name": "Boxes",
557
- "Hash": "Boxes",
563
+ "Hash": "BoxCollGrp",
558
564
  "Rows": [],
559
565
  "RecordSetSolvers": [
560
566
  "BoxFloorspace = BoxWidth * BoxDepth",
@@ -832,6 +838,26 @@
832
838
  ]
833
839
  }
834
840
  ]
841
+ },
842
+ {
843
+ "Name": "Cylinders",
844
+ "Hash": "Cylinders",
845
+ "Solvers": [],
846
+ "Groups": [
847
+ {
848
+ "Name": "Cylinders",
849
+ "Hash": "Cylinders",
850
+ "Rows": [],
851
+ "RecordSetSolvers": [
852
+ "Circumference = 2 * PI() * Radius",
853
+ "Area = (2 * PI() * Radius * Height) + (2 * PI() * Radius ^2)"
854
+ ],
855
+ "ShowTitle": false,
856
+ "Layout": "Tabular",
857
+ "RecordSetAddress": "Cylinders",
858
+ "RecordManifest": "Cylinders"
859
+ }
860
+ ]
835
861
  }
836
862
  ],
837
863
  "ReferenceManifests": {
@@ -846,8 +872,8 @@
846
872
  "PictForm": {
847
873
  "Row": "1",
848
874
  "Width": "1",
849
- "Section": "Box_Collection",
850
- "Group": "Boxes"
875
+ "Section": "BoxCollSec",
876
+ "Group": "BoxCollGrp"
851
877
  },
852
878
  "IsTabular": true
853
879
  },
@@ -859,8 +885,8 @@
859
885
  "PictForm": {
860
886
  "Row": "1",
861
887
  "Width": "1",
862
- "Section": "Box_Collection",
863
- "Group": "Boxes"
888
+ "Section": "BoxCollSec",
889
+ "Group": "BoxCollGrp"
864
890
  },
865
891
  "IsTabular": true
866
892
  },
@@ -872,8 +898,8 @@
872
898
  "PictForm": {
873
899
  "Row": "1",
874
900
  "Width": "1",
875
- "Section": "Box_Collection",
876
- "Group": "Boxes"
901
+ "Section": "BoxCollSec",
902
+ "Group": "BoxCollGrp"
877
903
  },
878
904
  "IsTabular": true
879
905
  },
@@ -885,8 +911,8 @@
885
911
  "PictForm": {
886
912
  "Row": "1",
887
913
  "Width": "1",
888
- "Section": "Box_Collection",
889
- "Group": "Boxes"
914
+ "Section": "BoxCollSec",
915
+ "Group": "BoxCollGrp"
890
916
  },
891
917
  "IsTabular": true
892
918
  },
@@ -898,8 +924,8 @@
898
924
  "PictForm": {
899
925
  "Row": "1",
900
926
  "Width": "1",
901
- "Section": "Box_Collection",
902
- "Group": "Boxes"
927
+ "Section": "BoxCollSec",
928
+ "Group": "BoxCollGrp"
903
929
  },
904
930
  "IsTabular": true
905
931
  },
@@ -911,8 +937,8 @@
911
937
  "PictForm": {
912
938
  "Row": "1",
913
939
  "Width": "1",
914
- "Section": "Box_Collection",
915
- "Group": "Boxes"
940
+ "Section": "BoxCollSec",
941
+ "Group": "BoxCollGrp"
916
942
  },
917
943
  "IsTabular": true
918
944
  }
@@ -978,6 +1004,78 @@
978
1004
  },
979
1005
  "Sections": [],
980
1006
  "ReferenceManifests": {}
1007
+ },
1008
+ "Cylinders": {
1009
+ "Scope": "Cylinders",
1010
+ "Descriptors": {
1011
+ "Identifier": {
1012
+ "Hash": "Identifier",
1013
+ "Name": "Identifier",
1014
+ "DataAddress": "Identifier",
1015
+ "DataType": "String",
1016
+ "PictForm": {
1017
+ "Row": "1",
1018
+ "Width": "1",
1019
+ "Section": "Cylinders",
1020
+ "Group": "Cylinders"
1021
+ },
1022
+ "IsTabular": true
1023
+ },
1024
+ "Radius": {
1025
+ "Hash": "Radius",
1026
+ "Name": "Radius",
1027
+ "DataAddress": "Radius",
1028
+ "DataType": "PreciseNumber",
1029
+ "PictForm": {
1030
+ "Row": "1",
1031
+ "Width": "1",
1032
+ "Section": "Cylinders",
1033
+ "Group": "Cylinders"
1034
+ },
1035
+ "IsTabular": true
1036
+ },
1037
+ "Height": {
1038
+ "Hash": "Height",
1039
+ "Name": "Height",
1040
+ "DataAddress": "Height",
1041
+ "DataType": "PreciseNumber",
1042
+ "PictForm": {
1043
+ "Row": "1",
1044
+ "Width": "1",
1045
+ "Section": "Cylinders",
1046
+ "Group": "Cylinders"
1047
+ },
1048
+ "IsTabular": true
1049
+ },
1050
+ "Circumference": {
1051
+ "Hash": "Circumference",
1052
+ "Name": "Circumference",
1053
+ "DataAddress": "Circumference",
1054
+ "DataType": "PreciseNumber",
1055
+ "PictForm": {
1056
+ "Row": "1",
1057
+ "Width": "1",
1058
+ "Section": "Cylinders",
1059
+ "Group": "Cylinders"
1060
+ },
1061
+ "IsTabular": true
1062
+ },
1063
+ "Area": {
1064
+ "Hash": "Area",
1065
+ "Name": "Area",
1066
+ "DataAddress": "Area",
1067
+ "DataType": "PreciseNumber",
1068
+ "PictForm": {
1069
+ "Row": "1",
1070
+ "Width": "1",
1071
+ "Section": "Cylinders",
1072
+ "Group": "Cylinders"
1073
+ },
1074
+ "IsTabular": true
1075
+ }
1076
+ },
1077
+ "Sections": [],
1078
+ "ReferenceManifests": {}
981
1079
  }
982
1080
  }
983
1081
  }
@@ -341,7 +341,12 @@ module.exports.default_configuration.pict_configuration = {
341
341
  Hash: "RecipeCalories",
342
342
  DataType: "PreciseNumber",
343
343
  Default: "1",
344
- PictForm: { Section: "Recipe", Group: "Statistics", Row: 1, Width: 1 },
344
+ PictForm: {
345
+ Section: "Recipe",
346
+ Group: "Statistics",
347
+ Row: 1,
348
+ Width: 1
349
+ },
345
350
  },
346
351
 
347
352
  "Recipe.CounterWidth": {
@@ -390,6 +395,8 @@ module.exports.default_configuration.pict_configuration = {
390
395
  Hash: "TotalFruitCalories",
391
396
  DataType: "PreciseNumber",
392
397
  PictForm: {
398
+ DecimalPrecision: 3,
399
+ RoundingMethod: 0,
393
400
  Section: "Recipe",
394
401
  Group: "FruitStatistics",
395
402
  Row: 1,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pict-section-form",
3
- "version": "1.0.61",
3
+ "version": "1.0.62",
4
4
  "description": "Pict dynamic form sections",
5
5
  "main": "source/Pict-Section-Form.js",
6
6
  "directories": {
@@ -10,6 +10,7 @@ const libInputEntityBundleRequest = require('./inputs/Pict-Provider-Input-Entity
10
10
  const libInputAutofillTriggerGroup = require('./inputs/Pict-Provider-Input-AutofillTriggerGroup.js');
11
11
  const libInputMarkdown = require('./inputs/Pict-Provider-Input-Markdown.js');
12
12
  const libInputHTML = require('./inputs/Pict-Provider-Input-HTML.js');
13
+ const libInputPreciseNumber = require('./inputs/Pict-Provider-Input-PreciseNumber.js');
13
14
 
14
15
  const _DefaultProviderConfiguration = (
15
16
  {
@@ -88,6 +89,10 @@ class PictDynamicSolver extends libPictProvider
88
89
  {
89
90
  this.pict.addProvider('Pict-Input-HTML', libInputHTML.default_configuration, libInputHTML);
90
91
  }
92
+ if (!this.pict.providers['Pict-Input-PreciseNumber'])
93
+ {
94
+ this.pict.addProvider('Pict-Input-PreciseNumber', libInputPreciseNumber.default_configuration, libInputPreciseNumber);
95
+ }
91
96
  }
92
97
 
93
98
  /**
@@ -30,6 +30,30 @@ class PictInputExtensionProvider extends libPictProvider
30
30
  super(pFable, tmpOptions, pServiceHash);
31
31
  }
32
32
 
33
+
34
+ /**
35
+ * Generates the HTML ID for a custom input element based on the given input HTML ID.
36
+ *
37
+ * @param {string} pInputHTMLID - The input HTML ID.
38
+ * @returns {string} The generated input HTML ID.
39
+ */
40
+ getInputHTMLID(pInputHTMLID)
41
+ {
42
+ return `#INPUT-FOR-${pInputHTMLID}`;
43
+ }
44
+
45
+ /**
46
+ * Generates the HTML ID for a hidden input element in a tabular data provider.
47
+ *
48
+ * @param {string} pInputHTMLID - The HTML ID of the input element.
49
+ * @param {number} pRowIndex - The index of the row in the tabular data.
50
+ * @returns {string} - The generated HTML ID for the hidden input element.
51
+ */
52
+ getTabularHiddenInputHTMLID(pInputHTMLID, pRowIndex)
53
+ {
54
+ return `#TABULAR-DATA-${pInputHTMLID}-${pRowIndex}`;
55
+ }
56
+
33
57
  /**
34
58
  * An input has been initialized (rendered into the DOM)
35
59
  *
@@ -171,9 +171,13 @@ Glug glug glug Oo... -->
171
171
  },
172
172
  {
173
173
  "HashPostfix": "-Template-Input-DataType-PreciseNumber",
174
+ "DefaultInputExtensions": ["Pict-Input-PreciseNumber"],
174
175
  "Template": /*HTML*/`
175
176
  <!-- DataType PreciseNumber {~D:Record.Hash~} {~D:Record.DataType~} -->
176
- <span>{~D:Record.Name~}:</span> <input type="Number" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">
177
+ <span>{~D:Record.Name~}:</span>
178
+ <input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">
179
+ <input type="Number" id="INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" {~D:Record.Macro.InputChangeHandler~} value="">
180
+
177
181
  `
178
182
  },
179
183
  {
@@ -276,12 +280,14 @@ Glug glug glug Oo... -->
276
280
  },
277
281
  {
278
282
  "HashPostfix": "-VerticalTemplate-Input-DataType-PreciseNumber",
283
+ "DefaultInputExtensions": ["Pict-Input-PreciseNumber"],
279
284
  "Template": /*HTML*/`
280
285
  <!-- DataType PreciseNumber {~D:Record.Hash~} {~D:Record.DataType~} -->
281
286
  <div class="pict-form-vertical-input">
287
+ <input type="hidden" {~D:Record.Macro.InputFullProperties~} value="">
282
288
  <span>{~D:Record.Name~}:</span>
283
289
  <span>{~D:Record.PictForm.ExtraDescription~}</span>
284
- <input type="Number" {~D:Record.Macro.InputFullProperties~} {~D:Record.Macro.InputChangeHandler~} value="">
290
+ <input type="Number" id="INPUT-FOR-{~D:Record.Macro.RawHTMLID~}" {~D:Record.Macro.InputChangeHandler~} value="">
285
291
  </div>
286
292
  `
287
293
  },
@@ -653,6 +659,22 @@ Glug glug glug Oo... -->
653
659
  "Template": /*HTML*/` value="">
654
660
  `
655
661
  },
662
+
663
+ {
664
+ "HashPostfix": "-TabularTemplate-Begin-Input-DataType-PreciseNumber",
665
+ "DefaultInputExtensions": ["Pict-Input-PreciseNumber"],
666
+ "Template": /*HTML*/`
667
+ <!-- DataType PreciseNumber {~D:Record.Hash~} {~D:Record.DataType~} -->
668
+ <input type="hidden" id="TABULAR-DATA-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~} value="">
669
+ <input type="Number" id="INPUT-FOR-{~D:Record.Macro.RawHTMLID~}-{~D:Context[2].Key~}" {~D:Record.Macro.HTMLName~} {~D:Record.Macro.InformaryTabular~}
670
+ `
671
+ },
672
+ {
673
+ "HashPostfix": "-TabularTemplate-End-Input-DataType-PreciseNumber",
674
+ "Template": /*HTML*/` value="">
675
+ `
676
+ },
677
+
656
678
  {
657
679
  "HashPostfix": "-TabularTemplate-Begin-Input-InputType-TextArea",
658
680
  "Template": /*HTML*/`
@@ -0,0 +1,83 @@
1
+ const libPictSectionInputExtension = require('../Pict-Provider-InputExtension.js');
2
+
3
+ /**
4
+ * CustomInputHandler class.
5
+ *
6
+ * @class
7
+ * @extends libPictSectionInputExtension
8
+ * @memberof providers.inputs
9
+ */
10
+ class CustomInputHandler extends libPictSectionInputExtension
11
+ {
12
+ constructor(pFable, pOptions, pServiceHash)
13
+ {
14
+ super(pFable, pOptions, pServiceHash);
15
+
16
+ /** @type {import('pict')} */
17
+ this.pict;
18
+ /** @type {import('pict')} */
19
+ this.fable;
20
+ /** @type {any} */
21
+ this.log;
22
+ }
23
+
24
+ roundValue(pInput, pValue)
25
+ {
26
+ let tmpValue = pValue;
27
+
28
+ if ('DecimalPrecision' in pInput.PictForm)
29
+ {
30
+ let tmpRoundingMethod = this.fable.Math.roundHalfUp;
31
+ if ('RoundingMethod' in pInput.PictForm)
32
+ {
33
+ try
34
+ {
35
+ tmpRoundingMethod = parseInt(pInput.PictForm.RoundingMethod);
36
+ }
37
+ catch(pError)
38
+ {
39
+ this.log.error(`Error parsing rounding method onDataMarshalToForm for input ${pInput.Hash}`, pError);
40
+ }
41
+ }
42
+ tmpValue = this.fable.Math.roundPrecise(tmpValue, pInput.PictForm.DecimalPrecision, tmpRoundingMethod);
43
+ }
44
+
45
+ return tmpValue;
46
+ }
47
+
48
+ /**
49
+ * Marshals data to the form for the given input.
50
+ *
51
+ * @param {Object} pView - The view object.
52
+ * @param {Object} pGroup - The group object.
53
+ * @param {Object} pRow - The row object.
54
+ * @param {Object} pInput - The input object.
55
+ * @param {any} pValue - The value to be marshaled.
56
+ * @param {string} pHTMLSelector - The HTML selector.
57
+ * @returns {boolean} - Returns true if the value is successfully marshaled to the form, otherwise false.
58
+ */
59
+ onDataMarshalToForm(pView, pGroup, pRow, pInput, pValue, pHTMLSelector)
60
+ {
61
+ this.pict.ContentAssignment.assignContent(this.getInputHTMLID(pInput.Macro.RawHTMLID), this.roundValue(pInput, pValue));
62
+ return super.onDataMarshalToForm(pView, pGroup, pRow, pInput, pValue, pHTMLSelector);
63
+ }
64
+
65
+ /**
66
+ * Marshals data to a form in tabular format.
67
+ *
68
+ * @param {Object} pView - The view object.
69
+ * @param {Object} pGroup - The group object.
70
+ * @param {Object} pInput - The input object.
71
+ * @param {any} pValue - The value parameter.
72
+ * @param {string} pHTMLSelector - The HTML selector parameter.
73
+ * @param {number} pRowIndex - The row index parameter.
74
+ * @returns {any} - The result of the data marshaling.
75
+ */
76
+ onDataMarshalToFormTabular(pView, pGroup, pInput, pValue, pHTMLSelector, pRowIndex)
77
+ {
78
+ this.pict.ContentAssignment.assignContent(this.getTabularInputHTMLID(pInput.Macro.RawHTMLID, pRowIndex), this.roundValue(pInput, pValue));
79
+ return super.onDataMarshalToFormTabular(pView, pGroup, pInput, pValue, pHTMLSelector, pRowIndex);
80
+ }
81
+ }
82
+
83
+ module.exports = CustomInputHandler;
@@ -36,6 +36,9 @@ class ManifestFactory extends libFableServiceProviderBase
36
36
  }
37
37
  this.referenceManifestFactories = {};
38
38
 
39
+ this.sectionHashLookup = {};
40
+ this.groupHashLookup = {};
41
+
39
42
  let tmpReferenceManifestKeys = Object.keys(this.manifest.ReferenceManifests);
40
43
  for (let i = 0; i < tmpReferenceManifestKeys.length; i++)
41
44
  {
@@ -47,7 +50,7 @@ class ManifestFactory extends libFableServiceProviderBase
47
50
 
48
51
  this._SanitizeObjectKeyRegex = /[^a-zA-Z0-9_]/gi;
49
52
  this._SanitizeObjectKeyReplacement = '_';
50
- this._SanitizeObjectKeyInvalid = 'INVALID';
53
+ this._SanitizeObjectKeyInvalid = 'INVALID';487
51
54
  }
52
55
 
53
56
  /**
@@ -482,9 +485,32 @@ class ManifestFactory extends libFableServiceProviderBase
482
485
  pManifestFactory = pManifestFactory.referenceManifestFactories[tmpRecord.SubManifest];
483
486
  }
484
487
 
488
+ if ('Decimal Precision' in tmpRecord)
489
+ {
490
+ // See if the Decimal Precision is set
491
+ if (tmpRecord['Decimal Precision'] && (tmpRecord['Decimal Precision'] != ''))
492
+ {
493
+ try
494
+ {
495
+ tmpDescriptor.PictForm.DecimalPrecision = parseInt(tmpRecord['Decimal Precision']);
496
+ }
497
+ catch (pError)
498
+ {
499
+ this.log.error(`Failed to parse Decimal Precision for ${tmpRecord['Input Hash']}: ${pError}`);
500
+ }
501
+ }
502
+ }
503
+
485
504
  // Setup the Section and the Group
486
505
  const tmpSectionName = tmpRecord['Section Name']?.trim?.();
487
- const tmpSectionHash = this.sanitizeObjectKey(tmpSectionName || 'Default_Section');
506
+
507
+ let tmpSectionHash = this.sanitizeObjectKey(tmpSectionName || 'Default_Section');
508
+ // Note: The section name part is laissez-faire about whether it needs to be there or not. The Hash is required on each column if we want to customize.
509
+ if (tmpRecord['Section Hash'] && tmpRecord['Section Hash'] != '')
510
+ {
511
+ tmpSectionHash = this.sanitizeObjectKey(tmpRecord['Section Hash']);
512
+ }
513
+
488
514
  tmpDescriptor.PictForm.Section = tmpSectionHash;
489
515
  const tmpSection = tmpCoreManifestFactory.getManifestSection(tmpSectionHash);
490
516
  if (tmpSectionName)
@@ -493,7 +519,13 @@ class ManifestFactory extends libFableServiceProviderBase
493
519
  }
494
520
 
495
521
  const tmpGroupName = tmpRecord['Group Name']?.trim?.();
496
- const tmpGroupHash = this.sanitizeObjectKey(tmpGroupName || 'Default_Group');
522
+ let tmpGroupHash = this.sanitizeObjectKey(tmpGroupName || 'Default_Group');
523
+ // Note: The group name part is laissez-faire about whether it needs to be there or not. The Hash is required on each column if we want to customize.
524
+ if (tmpRecord['Group Hash'] && tmpRecord['Group Hash'] != '')
525
+ {
526
+ tmpGroupHash = this.sanitizeObjectKey(tmpRecord['Group Hash']);
527
+ }
528
+
497
529
  tmpDescriptor.PictForm.Group = tmpGroupHash;
498
530
  const tmpGroup = tmpCoreManifestFactory.getManifestGroup(tmpSection, tmpGroupHash);
499
531
  if (tmpGroupName)