11import React from "react"
2- import { useEffect , useState } from "react"
32import { Link } from "react-router-dom"
43import { DarkButton } from "../buttons"
54import { DropdownTextInput , GenericTextArea , GenericTextInput , IncrementNumberInput , SliderInput , ConeCubeIncrementInput } from "../inputs"
6- import { ComponentSetup , PageSetup } from "../interface"
5+ import { ImportedComponentSetup , PageSetup } from "../interface"
76import { GenericCheckboxSelect , GenericDropdown , GenericRadioSelect , GenericToggle , ChargedUpGridSelect } from "../selects"
87import { GenericHeaderOne , GenericHeaderTwo , QRCodeModal , Timer } from "../texts"
98import { CycleCounter } from "../monitor"
10- import { RobotImage , emptyImage } from "../img/RobotImage "
9+ import { RobotImage } from "../img"
1110import ChargedUpStartingPosition from "../selects/ChargedUpStartingPosition"
1211
13- interface ImportedComponentSetup extends ComponentSetup {
14- type : string ;
15- }
16-
17- export function Page ( props : PageSetup ) {
18- const ComponentLibrary : Object = {
12+ export function Page ( { components, exports } : PageSetup ) {
13+ const ComponentLibrary : { [ key : string ] : [ React . ComponentType < any > , any ] } = {
1914 "DarkButton" : [ DarkButton , false ] ,
2015 "DropdownTextInput" : [ DropdownTextInput , [ "" , "" ] ] ,
2116 "GenericTextArea" : [ GenericTextArea , "" ] ,
@@ -33,67 +28,51 @@ export function Page(props: PageSetup) {
3328 "ChargedUpGridSelect" : [ ChargedUpGridSelect , [ ] ] ,
3429 "ChargedUpStartingPosition" : [ ChargedUpStartingPosition , "" ] ,
3530 "ConeCubeIncrementInput" : [ ConeCubeIncrementInput , [ ] ] ,
36- "RobotImage" : [ RobotImage , emptyImage ]
31+ "RobotImage" : [ RobotImage , < > </ > ]
3732 }
3833
39- let componentSetup : any = { }
40-
41- const required : String [ ] = [ ] ;
34+ const componentSetup : { [ key : string ] : any } = { }
35+ const requiredComponents : string [ ] = [ ] ;
4236
43- props ?. config ?. components ? .map ( ( component : ImportedComponentSetup ) => {
37+ components . map ( ( component : ImportedComponentSetup ) => {
4438 if ( component . type != "Spacing" ) {
4539 try {
46- componentSetup [ component . id ] = ( ComponentLibrary as any ) [ component . type ] [ 1 ]
40+ componentSetup [ component . id ] = ComponentLibrary [ component . type ] [ 1 ]
4741 if ( component . required == true ) {
48- required . push ( component . id )
42+ requiredComponents . push ( component . id )
4943 }
50- } catch { }
44+ } catch { } // Illegal component
5145 }
5246 } )
5347
5448 componentSetup [ "export" ] = {
5549 text : "" ,
56- delimiter : props ?. config ?. export . delimiter ,
50+ delimiter : exports . delimiter ,
5751 isRequiredCompleted : false
5852 }
5953
60- const setRobotImage = ( newState : any ) => {
61- useState ( newState ) ;
62- if ( newState . buttonClicked ) {
63- useState ( ( prevState : any ) => ( {
64- ...prevState ,
65- robotNumber : prevState . textInputValue ,
66- } ) ) ;
67- }
68- } ;
69-
70- const requiredComponents : String [ ] = [ ]
71-
72- const [ pageComponents , setPageComponents ] = useState ( componentSetup )
73- const propsSetPageComponent = ( state : any ) => {
74- console . log ( "test" )
75- //setPageComponents(state)
76- componentSetup = pageComponents
77- if ( pageComponents [ "result" ] ) {
78- var order = ""
79- for ( var i = 0 ; i < props ?. config ?. export . order . length ; i ++ ) {
80- order += pageComponents [ props ?. config ?. export . order [ i ] ]
81- if ( i != props ?. config ?. export . order . length - 1 ) {
82- order += props ?. config ?. export . delimiter
54+ const propsSetPageComponent = ( ) => {
55+ // if qr code has been selected to be shown
56+ if ( componentSetup [ "result" ] ) {
57+ // combine all the data with the delimiter between each data point
58+ let order = ""
59+ for ( let i = 0 ; i < exports . order . length ; i ++ ) {
60+ order += componentSetup [ exports . order [ i ] ]
61+ if ( i != exports . order . length - 1 ) {
62+ order += exports . delimiter
8363 }
8464 }
8565 componentSetup [ "export" ] . text = order
86- //setPageComponents(componentSetup)
8766 }
88- props ?. config ?. components ?. map ( ( requiredId : any ) => {
89- componentSetup [ "export" ] . isRequiredCompleted = true
90- if ( ! [ "" , [ ] ] . includes ( componentSetup [ requiredId ] ) ) {
91- console . log ( false )
67+
68+ componentSetup [ "export" ] . isRequiredCompleted = true
69+ requiredComponents ?. map ( ( requiredId : string ) => {
70+ if ( [ "" , [ ] ] . includes ( componentSetup [ requiredId ] ) ) {
9271 componentSetup [ "export" ] . isRequiredCompleted = false
9372 }
9473 } )
74+
9575 console . log ( "Required done" , componentSetup [ "export" ] . isRequiredCompleted )
96-
9776 }
9877
9978 return (
@@ -106,35 +85,31 @@ export function Page(props: PageSetup) {
10685 </ div >
10786 </ Link >
10887 {
109- props ?. config ?. components ?. map ( ( component : ImportedComponentSetup ) => {
110- if ( component . required == true ) {
111- requiredComponents . push ( component . id )
112- }
113-
88+ components . map ( ( component : ImportedComponentSetup , key : number ) => {
11489 if ( component . type == "Spacing" ) {
11590 return (
116- < div className = "h-[2px]" />
91+ < div key = { key } className = "h-[2px]" />
11792 )
11893 }
11994 else {
120- var sendprops = {
95+ const sendprops = {
12196 text : component . text ,
12297 route : component . route ,
12398 options : component . options ,
12499 placeholder : component . placeholder ,
125100 required : component . required
126101 }
127102
128- const FoundComponent = ( ComponentLibrary as any ) [ component . type ] [ 0 ] ;
103+ const FoundComponent : React . ComponentType < any > = ComponentLibrary [ component . type ] [ 0 ] ;
129104
130105 return (
131- < FoundComponent { ...sendprops } getValue = { pageComponents } setValue = { propsSetPageComponent } id = { component . id } />
106+ < FoundComponent { ...sendprops } key = { key } getValue = { componentSetup } setValue = { propsSetPageComponent } id = { component . id } />
132107 ) ;
133108
134109 }
135110 } )
136111 }
137- < QRCodeModal getValue = { pageComponents } setValue = { propsSetPageComponent } required = { requiredComponents } />
112+ < QRCodeModal getValue = { componentSetup } setValue = { propsSetPageComponent } required = { requiredComponents } />
138113 </ div >
139114 )
140115}
0 commit comments