@@ -24,20 +24,19 @@ const ctrace = console.trace.bind(console, '%c %s',
2424const Palette = ( props : any ) => {
2525
2626 if ( debug ) clog ( '22 Palette' , props ) ;
27-
2827 const dispatch = useDispatch ( ) ;
29-
3028 const prevDeps = useRef ( { role : null , task : null , metamodelList : null , types : null } ) ;
3129
3230 const [ visiblePalette , setVisiblePalette ] = useState ( true )
3331 const [ refreshPalette , setRefreshPalette ] = useState ( true )
3432 const [ refresh , setRefresh ] = useState ( true )
3533 const [ activeTab , setActiveTab ] = useState ( '1' ) ;
3634 const [ filteredOtNodeDataArray , setFilteredOtNodeDataArray ] = useState ( [ ] )
37- const [ IRTVOtNodeDataArray , setIRTVOtNodeDataArray ] = useState ( [ ] )
38- const [ POPSOtNodeDataArray , setPOPSOtNodeDataArray ] = useState ( [ ] )
39- const [ BPMNOtNodeDataArray , setBPMNOtNodeDataArray ] = useState ( [ ] )
40- const [ CoreOtNodeDataArray , setCoreOtNodeDataArray ] = useState ( [ ] )
35+ // const [IRTVOtNodeDataArray, setIRTVOtNodeDataArray] = useState([])
36+ // const [POPSOtNodeDataArray, setPOPSOtNodeDataArray] = useState([])
37+ // const [BPMNOtNodeDataArray, setBPMNOtNodeDataArray] = useState([])
38+ // const [CoreOtNodeDataArray, setCoreOtNodeDataArray] = useState([])
39+ const [ currentMetamodelRef , setCurrentMetamodelRef ] = useState ( '' )
4140 const [ filteredNewtypesNodeDataArray , setFilteredNewtypesNodeDataArray ] = useState ( [ ] )
4241 // const [metamodelList, setMetamodelList] = useState([])
4342 const [ role , setRole ] = useState ( '' )
@@ -74,71 +73,47 @@ const Palette = (props: any) => {
7473
7574 let focusTask = props . phFocus ?. focusTask
7675
77- function toggleRefresh ( ) { setRefresh ( ! refresh ) ; }
76+ // function toggleRefresh() { setRefresh(!refresh); }
7877 function togglePalette ( ) { setVisiblePalette ( ! visiblePalette ) ; }
79- function toggleRefreshPalette ( ) { setRefreshPalette ( ! refreshPalette ) ; }
78+ // function toggleRefreshPalette() { setRefreshPalette(!refreshPalette); }
8079
8180 // let ndarr = props.gojsMetamodel?.nodeDataArray
8281 let ndarr = uib . buildGoPalette ( props . myMetis . currentMetamodel , props . myMetis ) . nodes ;
8382
84-
85- if ( debug ) console . log ( '65 Palette' , model ?. name , mmodel ?. name , ndarr ) ;
86- let coremetamodel = props . myMetis ?. metamodels ?. find ( m => m ?. name === 'CORE_META' )
87- let irtvmetamodel = props . myMetis ?. metamodels ?. find ( m => m ?. name === 'IRTV_META' )
88- let popsmetamodel = props . myMetis ?. metamodels ?. find ( m => m ?. name === 'POPS_META' )
89- let bpmnmetamodel = props . myMetis ?. metamodels ?. find ( m => m ?. name === 'BPMN_META' )
9083 let taskNodeDataArray : any [ ] = ndarr
9184
9285 if ( debug ) console . log ( '76 Palette' , role , task , metamodelList , types , tasks ) ;
9386
9487 useEffect ( ( ) => {
95- if ( debug ) useEfflog ( '89 Palette useEffect 1 [] ' ) ;
88+ const model = props . metis ?. models ?. find ( ( m : any ) => m ?. id === focusModel ?. id ) ;
89+ // const mmodel = props.metis?.metamodels?.find((m: any) => m?.id === props.metis?.currentMetamodel);
90+ const mmodel = props . metis ?. metamodels ?. find ( ( m : any ) => m ?. id === model ?. metamodelRef ) ;
91+ if ( ! debug ) useEfflog ( '89 Palette useEffect 1 ' , model , mmodel , props . phFocus ) ;
9692 if ( props . visiblePalette ) setVisiblePalette ( visiblePalette ) ;
9793 if ( mmodel ?. name === 'OSDU_META' ) setVisiblePalette ( true ) ;
9894 const { focusRole, focusTask } = props . phFocus ;
9995 const objecttypes = mmodel ?. objecttypes ;
10096 if ( ! metamodels ) return null ;
101-
10297 if ( props . modelType === 'metamodel' ) setVisiblePalette ( false ) ;
103-
10498 setRole ( focusRole ) ;
10599 setTask ( focusTask ) ;
106100 const types = objecttypes ?. map ( ( t : any ) => t ?. name ) ;
107101 setTypes ( types ) ;
108102
109- ( types ) && setFilteredNewtypesNodeDataArray ( buildFilterOtNodeDataArray ( types , mmodel ) ) ; // build the palette for current metamodel
110-
111- if ( debug ) console . log ( '89 Palette useEffect 1' , mmodel , props ) ;
112- coremetamodel = props . myMetis ?. metamodels ?. find ( m => m ?. name === 'CORE_META' )
113- const coreTypes = coremetamodel ?. objecttypes . map ( ( t : any ) => t ?. name ) ;
114- irtvmetamodel = metamodels . find ( m => m ?. name === 'IRTV_META' )
115- const irtvTypes = irtvmetamodel ?. objecttypes . map ( ( t : any ) => t ?. name ) ;
116- popsmetamodel = metamodels . find ( m => m ?. name === 'POPS_META' )
117- const popstypes = popsmetamodel ?. objecttypes . map ( ( t : any ) => t ?. name ) ;
118- bpmnmetamodel = metamodels . find ( m => m ?. name === 'BPMN_META' )
119- const bpmnTypes = bpmnmetamodel ?. objecttypes . map ( ( t : any ) => t ?. name ) ;
120- const additionalmetamodel = ( coremetamodel ?. name === mmodel ?. name ) ? irtvmetamodel : coremetamodel
121- const seltypes = additionalmetamodel ?. objecttypes . map ( ( t : any ) => t ?. name ) ;
122- setSelMetamodelName ( additionalmetamodel ?. name )
123- if ( debug ) console . log ( '115 Palette' , additionalmetamodel ) ;
124- setAddMetamodelName ( additionalmetamodel ?. name )
125-
126- setCoreOtNodeDataArray ( buildFilterOtNodeDataArray ( coreTypes , coremetamodel ) ) ;
127- setIRTVOtNodeDataArray ( buildFilterOtNodeDataArray ( irtvTypes , irtvmetamodel ) ) ;
128- setPOPSOtNodeDataArray ( buildFilterOtNodeDataArray ( popstypes , popsmetamodel ) ) ;
129- setBPMNOtNodeDataArray ( buildFilterOtNodeDataArray ( bpmnTypes , bpmnmetamodel ) ) ;
130-
131- setFilteredOtNodeDataArray ( buildFilterOtNodeDataArray ( seltypes , additionalmetamodel ) ) ; // build the palette for additional metamodel
132- // setFilteredOtNodeDataArray(buildFilter(role, task, metamodelList, seltypes, mmodel.submetamodels[0])); // build the palette for current metamodel
133-
103+ // setFilteredNewtypesNodeDataArray(buildFilterOtNodeDataArray(types, mmodel)); // build the palette for current metamodel
104+ const newFilteredData = buildFilterOtNodeDataArray ( types , mmodel ) ;
105+ setFilteredOtNodeDataArray ( newFilteredData ) ;
106+ if ( ! debug ) console . log ( '104 Palette useEffect 2' , types , mmodel , filteredNewtypesNodeDataArray ) ;
107+
134108 const timer = setTimeout ( ( ) => {
135109 setRefreshPalette ( ! refreshPalette ) ;
136- if ( debug ) console . log ( '124 Palette useEffect ' , irtvTypes , IRTVOtNodeDataArray ) ;
110+ if ( ! debug ) console . log ( '124 Palette useEffect 3 ' , filteredNewtypesNodeDataArray ) ;
137111 } , 1000 ) ;
138112 return ( ) => clearTimeout ( timer ) ;
139- } , [ ] ) ;
113+ } , [ model ] ) ;
140114
141115 if ( ! metamodels ) return null ;
116+
142117 const buildFilterOtNodeDataArray = ( types , mmodel ) => { // build the palette for the selected metamodel
143118 if ( debug ) console . log ( '106 Palette' , mmodel , props . myMetis ) ;
144119
@@ -169,27 +144,18 @@ const Palette = (props: any) => {
169144 ? [ 'Container' , 'OSDUType' , 'Property' , 'Proxy' , 'Array' , 'Item' ]
170145 : [ 'Container' ]
171146
172-
173147 const otsArrSorted = otsArr . sort ( ( a , b ) => {
174148 const aIndex = wotArr . indexOf ( a ?. name ) ;
175149 const bIndex = wotArr . indexOf ( b ?. name ) ;
176-
177150 if ( aIndex === - 1 ) return 1 ; // a is not found in wotArr, sort a to the end
178151 if ( bIndex === - 1 ) return - 1 ; // b is not found in wotArr, sort b to the end
179-
180152 return aIndex - bIndex ; // both a and b are found in wotArr, sort them based on their indices
181153 } ) ;
182154
183155 return otsArr
184156 } else { return ndarr }
185157 } ;
186158
187- // const buildFilter = (role, task, metamodelList, types, metamodel) => {
188- // if (debug) console.log('102 Palette useEffect 1', role, task, metamodelList, types, metamodel);
189- // // setTypes(metamodel?.objecttypes.map((t: any) => t?.name));
190- // return buildFilterOtNodeDataArray(types, metamodel);
191- // };
192-
193159 if ( debug ) console . log ( '127 Palette useEffect 2' , props . phFocus . focusTask . workOnTypes ) ;
194160
195161 function getMetamodels ( selectedIndex ) {
@@ -198,13 +164,16 @@ const Palette = (props: any) => {
198164 const selmmodel = metamodelList [ selectedIndex ] ;
199165 const mmodel = metamodels . find ( m => m . id === selmmodel ?. id ) ;
200166 const types = mmodel ?. objecttypes ?. map ( ( t : any ) => t ?. name ) || [ ] ;
201- if ( debug ) console . log ( '147 Palette' , selectedIndex , metamodelList [ selectedIndex ] , selMetamodelName , selmmodel , types , mmodel ) ;
167+ setTypes ( types ) ;
168+ dispatch ( { type : 'SET_CURRENT_METAMODEL' , data : mmodel } ) ;
169+ if ( ! debug ) console . log ( '147 Palette' , selectedIndex , metamodelList [ selectedIndex ] , selMetamodelName , selmmodel , types , mmodel ) ;
202170 const filteredNodeDataArray = buildFilterOtNodeDataArray ( types , mmodel ) ;
203- if ( debug ) console . log ( '149 Palette' , filteredNodeDataArray ) ;
171+ if ( ! debug ) console . log ( '149 Palette' , filteredNodeDataArray ) ;
204172 const timer = setTimeout ( ( ) => {
205173 setFilteredOtNodeDataArray ( filteredNodeDataArray ) ;
206174 setRefreshPalette ( ! refreshPalette ) ;
207175 } , 200 ) ;
176+
208177 return ( ) => clearTimeout ( timer ) ;
209178 }
210179
@@ -219,9 +188,9 @@ const Palette = (props: any) => {
219188 onChange = { ( e ) => getMetamodels ( e . target . value ) }
220189 >
221190 < option value = "" key = "-1" >
222- Additional Metamodels
191+ Change Metamodel
223192 </ option >
224- { metamodelList ?. map ( ( t , i ) => ( t ?. name !== mmodel ?. name ) && (
193+ { metamodelList ?. map ( ( t , i ) => (
225194 < option key = { i } value = { i } >
226195 { t ?. name }
227196 </ option >
@@ -231,13 +200,14 @@ const Palette = (props: any) => {
231200 ) ;
232201
233202
234- const gojsappPaletteTopDiv = ( mmodel && filteredNewtypesNodeDataArray ) && // this is the palette with the current metamodel
203+ // const gojsappPaletteTopDiv = (mmodel && filteredNewtypesNodeDataArray) && // this is the palette with the current metamodel
204+ const gojsappPaletteTopDiv = ( mmodel && filteredOtNodeDataArray ) && // this is the palette with the current metamodel
235205 (
236206 < details open = { openDetail === 'top' } onClick = { ( ) => handleToggle ( 'top' ) } className = "metamodel-pad" >
237207 < summary className = "mmname mx-0 px-1 my-0" style = { { fontSize : "16px" , backgroundColor : "#9cd" , minWidth : "184px" , maxWidth : "212px" } } > { mmodel ?. name } </ summary >
238208 { /* Top palette with current metamodelpalette */ }
239209 < GoJSPaletteApp
240- nodeDataArray = { filteredNewtypesNodeDataArray }
210+ nodeDataArray = { filteredOtNodeDataArray }
241211 linkDataArray = { [ ] }
242212 metis = { props . metis }
243213 myMetis = { props . myMetis }
@@ -248,53 +218,53 @@ const Palette = (props: any) => {
248218 </ details >
249219 )
250220
251- let gojsappPaletteIRTVDiv = null ; // Initialize with a default value
252- if ( includeCoreAndIRTVAndPOPS ) {
253- gojsappPaletteIRTVDiv = ( mmodel && ( mmodel ?. name !== 'IRTV_META' ) && IRTVOtNodeDataArray ) && // this is the palette with the IRTV metamodel
254- < details open = { openDetail === 'irtv' } onClick = { ( ) => handleToggle ( 'irtv' ) } className = "metamodel-pad" >
255- < summary className = "mmname mx-0 px-1" style = { { fontSize : "16px" , backgroundColor : "#9cd" , minWidth : "184px" , maxWidth : "212px" } } > { irtvmetamodel ?. name } </ summary >
256- < GoJSPaletteApp
257- nodeDataArray = { IRTVOtNodeDataArray }
258- linkDataArray = { [ ] }
259- myMetis = { props . myMetis }
260- metis = { props . metis }
261- phFocus = { props . phFocus }
262- dispatch = { props . dispatch }
263- diagramStyle = { { height : "76vh" } }
264- />
265- </ details >
266- }
267- let gojsappPalettePOPSDiv = null ; // Initialize with a default value
268- if ( includeCoreAndIRTVAndPOPS ) {
269- gojsappPalettePOPSDiv = ( mmodel && ( mmodel ?. name !== 'POPS_META' ) && POPSOtNodeDataArray ) && // this is the palette with the IRTV metamodel
270- < details open = { openDetail === 'irtv' } onClick = { ( ) => handleToggle ( 'irtv' ) } className = "metamodel-pad" >
271- < summary className = "mmname mx-0 px-1" style = { { fontSize : "16px" , backgroundColor : "#9cd" , minWidth : "184px" , maxWidth : "212px" } } > { popsmetamodel ?. name } </ summary >
272- < GoJSPaletteApp
273- nodeDataArray = { POPSOtNodeDataArray }
274- linkDataArray = { [ ] }
275- myMetis = { props . myMetis }
276- metis = { props . metis }
277- phFocus = { props . phFocus }
278- dispatch = { props . dispatch }
279- diagramStyle = { { height : "76vh" } }
280- />
281- </ details >
282- }
283-
284- let gojsappPaletteMETADiv = null ; // Initialize with a default value
285- gojsappPaletteMETADiv = ( mmodel && ( mmodel ?. name !== 'CORE_META' ) && CoreOtNodeDataArray ) && // this is the palette with the coret metamodel
286- < details open = { openDetail === 'core' } onClick = { ( ) => handleToggle ( 'core' ) } className = "metamodel-pad" >
287- < summary className = "mmname mx-0 px-1 my-1" style = { { fontSize : "16px" , backgroundColor : "#9cd" , minWidth : "184px" , maxWidth : "212px" } } > { coremetamodel ?. name } </ summary >
288- < GoJSPaletteApp
289- nodeDataArray = { CoreOtNodeDataArray }
290- linkDataArray = { [ ] }
291- myMetis = { props . myMetis }
292- metis = { props . metis }
293- phFocus = { props . phFocus }
294- dispatch = { props . dispatch }
295- diagramStyle = { { height : "76vh" } }
296- />
297- </ details >
221+ // let gojsappPaletteIRTVDiv = null; // Initialize with a default value
222+ // if (includeCoreAndIRTVAndPOPS) {
223+ // gojsappPaletteIRTVDiv = (mmodel && (mmodel?.name !== 'IRTV_META') && IRTVOtNodeDataArray) && // this is the palette with the IRTV metamodel
224+ // <details open={openDetail === 'irtv'} onClick={() => handleToggle('irtv')} className="metamodel-pad">
225+ // <summary className="mmname mx-0 px-1" style={{ fontSize: "16px", backgroundColor: "#9cd", minWidth: "184px", maxWidth: "212px" }}>{irtvmetamodel?.name}</summary>
226+ // <GoJSPaletteApp
227+ // nodeDataArray={IRTVOtNodeDataArray}
228+ // linkDataArray={[]}
229+ // myMetis={props.myMetis}
230+ // metis={props.metis}
231+ // phFocus={props.phFocus}
232+ // dispatch={props.dispatch}
233+ // diagramStyle={{ height: "76vh" }}
234+ // />
235+ // </details>
236+ // }
237+ // let gojsappPalettePOPSDiv = null; // Initialize with a default value
238+ // if (includeCoreAndIRTVAndPOPS) {
239+ // gojsappPalettePOPSDiv = (mmodel && (mmodel?.name !== 'POPS_META') && POPSOtNodeDataArray) && // this is the palette with the IRTV metamodel
240+ // <details open={openDetail === 'irtv'} onClick={() => handleToggle('irtv')} className="metamodel-pad">
241+ // <summary className="mmname mx-0 px-1" style={{ fontSize: "16px", backgroundColor: "#9cd", minWidth: "184px", maxWidth: "212px" }}>{popsmetamodel?.name}</summary>
242+ // <GoJSPaletteApp
243+ // nodeDataArray={POPSOtNodeDataArray}
244+ // linkDataArray={[]}
245+ // myMetis={props.myMetis}
246+ // metis={props.metis}
247+ // phFocus={props.phFocus}
248+ // dispatch={props.dispatch}
249+ // diagramStyle={{ height: "76vh" }}
250+ // />
251+ // </details>
252+ // }
253+
254+ // let gojsappPaletteMETADiv = null; // Initialize with a default value
255+ // gojsappPaletteMETADiv = (mmodel && (mmodel?.name !== 'CORE_META') && CoreOtNodeDataArray) && // this is the palette with the coret metamodel
256+ // <details open={openDetail === 'core'} onClick={() => handleToggle('core')} className="metamodel-pad">
257+ // <summary className="mmname mx-0 px-1 my-1" style={{ fontSize: "16px", backgroundColor: "#9cd", minWidth: "184px", maxWidth: "212px" }}>{coremetamodel?.name}</summary>
258+ // <GoJSPaletteApp
259+ // nodeDataArray={CoreOtNodeDataArray}
260+ // linkDataArray={[]}
261+ // myMetis={props.myMetis}
262+ // metis={props.metis}
263+ // phFocus={props.phFocus}
264+ // dispatch={props.dispatch}
265+ // diagramStyle={{ height: "76vh" }}
266+ // />
267+ // </details>
298268
299269
300270 const metamodelTasks = < Tasks taskFocusModel = { undefined } asPage = { false } visible = { true } props = { props } />
@@ -303,10 +273,8 @@ const Palette = (props: any) => {
303273 if ( includeCoreAndIRTVAndPOPS ) {
304274 gojsappPaletteDiv =
305275 < >
276+ { otDiv }
306277 { gojsappPaletteTopDiv }
307- { ( mmodel ?. name !== 'IRTV_META' ) && gojsappPaletteIRTVDiv }
308- { ( mmodel ?. name !== 'POPS_META' ) && gojsappPalettePOPSDiv }
309- { ( mmodel ?. name !== 'CORE_META' ) && gojsappPaletteMETADiv }
310278 </ >
311279 } else {
312280 gojsappPaletteDiv =
0 commit comments