Skip to content

Commit 2fd0ab6

Browse files
fix type palette & Template save
1 parent f0f2196 commit 2fd0ab6

File tree

13 files changed

+666
-340
lines changed

13 files changed

+666
-340
lines changed

src/actions/actions.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
LOAD_TOSTORE_NEWMODEL,
1717
LOAD_TOSTORE_NEWMODELVIEW,
1818
SET_FOCUS_PHFOCUS,
19+
SET_CURRENT_METAMODEL,
1920
SET_FOCUS_USER,
2021
SET_FOCUS_TAB,
2122
SET_FOCUS_MODEL,
@@ -84,7 +85,8 @@ import {
8485
UPDATE_OBJECT_PROPERTIES,
8586
UPDATE_RELSHIP_PROPERTIES,
8687
EDIT_OBJECT_PROPERTIES,
87-
UPDATE_OBJECTVIEW_NAME
88+
UPDATE_OBJECTVIEW_NAME,
89+
UPDATE_DOMAIN_PROPERTIES,
8890
} from './types';
8991

9092
const debug = false
@@ -197,6 +199,14 @@ export const loadToStoreNewModelview = (data) => {
197199
data: JSON.parse(data.value)
198200
}
199201
}
202+
export const setCurrentMetamodel = (data) => {
203+
// if (debug) console.log('21---actions | setCurrentMetamodel ', data);
204+
return {
205+
type: SET_CURRENT_METAMODEL,
206+
data: JSON.parse(data.value)
207+
}
208+
}
209+
200210
export const setFocusUser = (data) => {
201211
// if (debug) console.log('21---actions |', data);
202212
return {
@@ -608,4 +618,12 @@ export const setVisibleContext = (data) => {
608618
type: SET_VISIBLE_CONTEXT,
609619
data: JSON.parse(data.value)
610620
}
621+
}
622+
623+
export const update_domain_properties = (data) => {
624+
if (!debug) console.log('205 actions update_domain_properties', data.payload);
625+
return {
626+
type: UPDATE_DOMAIN_PROPERTIES,
627+
data: JSON.parse(data.value)
628+
}
611629
}

src/actions/types.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const LOAD_TOSTORE_PHUSER = 'LOAD_TOSTORE_PHUSER';
1414
export const LOAD_TOSTORE_PHSOURCE = 'LOAD_TOSTORE_PHSOURCE';
1515
export const LOAD_TOSTORE_NEWMODEL = 'LOAD_TOSTORE_NEWMODEL';
1616
export const LOAD_TOSTORE_NEWMODELVIEW = 'LOAD_TOSTORE_NEWMODELVIEW';
17+
export const SET_CURRENT_METAMODEL = 'SET_CURRENT_METAMODEL';
1718
export const SET_FOCUS_PHFOCUS = 'SET_FOCUS_PHFOCUS';
1819
export const SET_FOCUS_USER = 'SET_FOCUS_USER';
1920
export const SET_FOCUS_TAB = 'SET_FOCUS_TAB';
@@ -81,4 +82,5 @@ export const UPDATE_OBJECT_PROPERTIES = 'UPDATE_OBJECT_PROPERTIES';
8182
export const UPDATE_RELSHIP_PROPERTIES = 'UPDATE_RELSHIP_PROPERTIES';
8283
export const EDIT_OBJECT_PROPERTIES = 'EDIT_OBJECT_PROPERTIES';
8384
export const UPDATE_OBJECTVIEW_NAME = 'UPDATE_OBJECTVIEW_NAME';
85+
export const UPDATE_DOMAIN_PROPERTIES = 'UPDATE_DOMAIN_PROPERTIES';
8486
export const SET_VISIBLE_CONTEXT = 'SET_VISIBLE_CONTEXT';

src/components/About.tsx

Lines changed: 136 additions & 174 deletions
Large diffs are not rendered by default.

src/components/Palette.tsx

Lines changed: 77 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,19 @@ const ctrace = console.trace.bind(console, '%c %s',
2424
const 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

Comments
 (0)