Loading js-apps/meep-frontend/src/js/containers/cfg/cfg-page-container.js +4 −125 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import { Elevation } from '@rmwc/elevation'; import IDCVis from '../idc-vis'; import CfgNetworkElementContainer from './cfg-network-element-container'; import CfgPageScenarioButtons from './cfg-page-scenario-buttons'; import { deepCopy } from '../../util/object-util'; import { getElementFromScenario } from '../../util/scenario-utils'; import HeadlineBar from '../../components/headline-bar'; import CfgTable from './cfg-table'; Loading Loading @@ -61,9 +59,7 @@ import { CFG_STATE_NEW, CFG_STATE_IDLE, PAGE_CONFIGURE, ELEMENT_TYPE_SCENARIO, COMMON_ZONE_TYPE_STR, DEFAULT_NL_TYPE_STR ELEMENT_TYPE_SCENARIO } from '../../meep-constants'; import { Loading @@ -74,9 +70,7 @@ import { FIELD_EXT_PORT, FIELD_GPU_COUNT, FIELD_GPU_TYPE, getElemFieldVal, setElemFieldVal, createUniqueName getElemFieldVal } from '../../util/elem-utils'; import { pipe, filter } from '../../util/functional'; Loading Loading @@ -153,23 +147,6 @@ class CfgPageContainer extends Component { this.props.cfgElemClone(); } // CLONE ELEMENT, return new element name cloneElement(element, newParentName, isRoot) { let newElement = deepCopy(element); var name = getElemFieldVal(element, FIELD_NAME); if (isRoot === false) { name = createUniqueName(this.props.cfg.table.entries, name + '-copy'); setElemFieldVal(newElement, FIELD_NAME, name); } setElemFieldVal(newElement, FIELD_PARENT, newParentName); // add new element to scenario // new id and label will be created as part of the addNewElementToScenario called by newScenarioElem this.props.newScenarioElem(newElement, false); return name; } // CLONE onApplyCloneElement(element) { // Validate network element Loading @@ -177,108 +154,10 @@ class CfgPageContainer extends Component { return; } // browse to find the root of the tree to clone var inDomainCloneBranch = false, inZoneCloneBranch = false, inNlCloneBranch = false, inPlCloneBranch = false; var newZoneRootParentName = ''; var newNlRootParentName = ''; var newPlRootParentName = ''; var newProcessRootParentName = ''; var elementFromScenario; var scenario = this.props.cfg.scenario; // Domains for (var i in scenario.deployment.domains) { var domain = scenario.deployment.domains[i]; // Add domain to graph and table (ignore public domain) if (domain.id === element.id) { newZoneRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT), true); inDomainCloneBranch = true; } else { inDomainCloneBranch = false; } // Zones for (var j in domain.zones) { var zone = domain.zones[j]; if (inDomainCloneBranch) { if (zone.name.indexOf(COMMON_ZONE_TYPE_STR) !== -1) { newNlRootParentName = newZoneRootParentName + COMMON_ZONE_TYPE_STR; } else { elementFromScenario = getElementFromScenario(scenario, zone.id); newNlRootParentName = this.cloneElement(elementFromScenario, newZoneRootParentName, false); } } else { if (zone.id === element.id) { newNlRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT), true); inZoneCloneBranch = true; } else { inZoneCloneBranch = false; } } // Network Locations for (var k in zone.networkLocations) { var nl = zone.networkLocations[k]; if (inDomainCloneBranch || inZoneCloneBranch) { if (nl.name.indexOf(DEFAULT_NL_TYPE_STR) !== -1) { newPlRootParentName = newNlRootParentName; } else { elementFromScenario = getElementFromScenario(scenario, nl.id); newPlRootParentName = this.cloneElement(elementFromScenario, newNlRootParentName, false); } } else { if (nl.id === element.id) { newPlRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); inNlCloneBranch = true; } else { inNlCloneBranch = false; } } // Physical Locations for (var l in nl.physicalLocations) { var pl = nl.physicalLocations[l]; if (inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch) { elementFromScenario = getElementFromScenario(scenario, pl.id); newProcessRootParentName = this.cloneElement(elementFromScenario, newPlRootParentName, false); } else { if (pl.id === element.id) { newProcessRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); inPlCloneBranch = true; } else { inPlCloneBranch = false; } } // Processes for (var m in pl.processes) { var proc = pl.processes[m]; if (inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch || inPlCloneBranch) { elementFromScenario = getElementFromScenario(scenario, proc.id); this.cloneElement(elementFromScenario, newProcessRootParentName, false); } else { if (proc.id === element.id) { this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); } } } } } } if(inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch || inPlCloneBranch) { break; } } this.props.cloneScenarioElem(element); //force update on the visual aspect of the scenario this.props.updateScenario(); //this.props.updateScenario(); this.props.cfgElemClear(); } Loading js-apps/meep-frontend/src/js/containers/idc-vis.js +0 −9 Original line number Diff line number Diff line Loading @@ -385,16 +385,7 @@ class IDCVis extends Component { vis.network.setOptions(vis.options); } updateConfigVisibility() { var vis = this.getVis(); if (vis.options.configure) { vis.options.configure.enabled = this.props.devMode; vis.network.setOptions(vis.options); } } render() { //this.updateConfigVisibility(); return ( <> <div Loading js-apps/meep-frontend/src/js/containers/meep-container.js +156 −24 Original line number Diff line number Diff line Loading @@ -31,13 +31,27 @@ import ExecPageContainer from './exec/exec-page-container'; import SettingsPageContainer from './settings/settings-page-container'; import MonitorPageContainer from './monitor/monitor-page-container'; import { FIELD_PARENT, FIELD_NAME, getElemFieldVal, setElemFieldVal, createUniqueName } from '../util/elem-utils'; import { TYPE_CFG, TYPE_EXEC, EXEC_STATE_DEPLOYED, NO_SCENARIO_NAME, VIS_VIEW, VIEW_NAME_NONE VIEW_NAME_NONE, PAGE_CONFIGURE, PAGE_EXECUTE, PAGE_MONITOR, PAGE_SETTINGS, COMMON_ZONE_TYPE_STR, DEFAULT_NL_TYPE_STR } from '../meep-constants'; import { Loading @@ -45,7 +59,8 @@ import { createNewScenario, addElementToScenario, updateElementInScenario, removeElementFromScenario removeElementFromScenario, getElementFromScenario } from '../util/scenario-utils'; import { Loading Loading @@ -75,13 +90,6 @@ import { cfgChangeTable } from '../state/cfg'; import { PAGE_CONFIGURE, PAGE_EXECUTE, PAGE_MONITOR, PAGE_SETTINGS } from '../meep-constants'; import { idlog } from '../util/functional'; // MEEP Controller REST API JS client Loading Loading @@ -324,11 +332,11 @@ class MeepContainer extends Component { } changeScenario(pageType, scenario) { changeScenario(pageType, scenario, false); this.updateScenario(pageType, scenario, false); } // Change & process scenario changeScenario(pageType, scenario, reInitVisView) { updateScenario(pageType, scenario, reInitVisView) { // Change scenario state if (pageType === TYPE_CFG) { this.props.cfgChangeScenario(scenario); Loading Loading @@ -380,18 +388,18 @@ class MeepContainer extends Component { // Create, store & process new scenario createScenario(pageType, name) { var scenario = createNewScenario(name); this.changeScenario(pageType, scenario, true); this.updateScenario(pageType, scenario, true); } // Set & process scenario setScenario(pageType, scenario) { this.changeScenario(pageType, scenario, true); this.updateScenario(pageType, scenario, true); } // Delete & process scenario deleteScenario(pageType) { var scenario = createNewScenario(NO_SCENARIO_NAME); this.changeScenario(pageType, scenario, true); this.updateScenario(pageType, scenario, true); } // Refresh Active scenario Loading @@ -415,14 +423,14 @@ class MeepContainer extends Component { } // Update scenario updateScenario(pageType) { var scenario = pageType === TYPE_CFG ? this.props.cfg.scenario : this.props.exec.scenario; var updatedScenario = updateObject({}, scenario); this.changeScenario(pageType, updatedScenario); } //updateScenario(pageType) { // var scenario = // pageType === TYPE_CFG // ? this.props.cfg.scenario // : this.props.exec.scenario; // var updatedScenario = updateObject({}, scenario); // this.changeScenario(pageType, updatedScenario); //} // Update element in scenario updateScenarioElem(pageType, element) { Loading @@ -446,6 +454,127 @@ class MeepContainer extends Component { this.changeScenario(pageType, updatedScenario); } // Clone element in scenario cloneScenarioElem(element) { var inDomainCloneBranch = false, inZoneCloneBranch = false, inNlCloneBranch = false, inPlCloneBranch = false; var newZoneRootParentName = ''; var newNlRootParentName = ''; var newPlRootParentName = ''; var newProcessRootParentName = ''; var elementFromScenario; var scenario = this.props.cfg.scenario; // Domains for (var i in scenario.deployment.domains) { var domain = scenario.deployment.domains[i]; // Add domain to graph and table (ignore public domain) if (domain.id === element.id) { newZoneRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT), true); inDomainCloneBranch = true; } else { inDomainCloneBranch = false; } // Zones for (var j in domain.zones) { var zone = domain.zones[j]; if (inDomainCloneBranch) { if (zone.name.indexOf(COMMON_ZONE_TYPE_STR) !== -1) { newNlRootParentName = newZoneRootParentName + COMMON_ZONE_TYPE_STR; } else { elementFromScenario = getElementFromScenario(scenario, zone.id); newNlRootParentName = this.cloneElement(elementFromScenario, newZoneRootParentName, false); } } else { if (zone.id === element.id) { newNlRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT), true); inZoneCloneBranch = true; } else { inZoneCloneBranch = false; } } // Network Locations for (var k in zone.networkLocations) { var nl = zone.networkLocations[k]; if (inDomainCloneBranch || inZoneCloneBranch) { if (nl.name.indexOf(DEFAULT_NL_TYPE_STR) !== -1) { newPlRootParentName = newNlRootParentName; } else { elementFromScenario = getElementFromScenario(scenario, nl.id); newPlRootParentName = this.cloneElement(elementFromScenario, newNlRootParentName, false); } } else { if (nl.id === element.id) { newPlRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); inNlCloneBranch = true; } else { inNlCloneBranch = false; } } // Physical Locations for (var l in nl.physicalLocations) { var pl = nl.physicalLocations[l]; if (inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch) { elementFromScenario = getElementFromScenario(scenario, pl.id); newProcessRootParentName = this.cloneElement(elementFromScenario, newPlRootParentName, false); } else { if (pl.id === element.id) { newProcessRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); inPlCloneBranch = true; } else { inPlCloneBranch = false; } } // Processes for (var m in pl.processes) { var proc = pl.processes[m]; if (inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch || inPlCloneBranch) { elementFromScenario = getElementFromScenario(scenario, proc.id); this.cloneElement(elementFromScenario, newProcessRootParentName, false); } else { if (proc.id === element.id) { this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); } } } } } } if(inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch || inPlCloneBranch) { this.changeScenario(TYPE_CFG, scenario); break; } } } // CLONE ELEMENT, return new element name cloneElement(element, newParentName, isRoot) { let newElement = deepCopy(element); var name = getElemFieldVal(element, FIELD_NAME); if (isRoot === false) { name = createUniqueName(this.props.cfg.table.entries, name + '-copy'); setElemFieldVal(newElement, FIELD_NAME, name); } setElemFieldVal(newElement, FIELD_PARENT, newParentName); // add new element to scenario // new id and label will be created as part of the addNewElementToScenario called by newScenarioElem this.newScenarioElem(TYPE_CFG, newElement, false); return name; } renderPage() { switch (this.props.page) { case PAGE_CONFIGURE: Loading @@ -465,8 +594,11 @@ class MeepContainer extends Component { newScenarioElem={(elem, update) => { this.newScenarioElem(TYPE_CFG, elem, update); }} updateScenario={() => { this.updateScenario(TYPE_CFG); //updateScenario={() => { // this.updateScenario(TYPE_CFG); //}} cloneScenarioElem={elem => { this.cloneScenarioElem(elem); }} updateScenarioElem={elem => { this.updateScenarioElem(TYPE_CFG, elem); Loading Loading
js-apps/meep-frontend/src/js/containers/cfg/cfg-page-container.js +4 −125 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import { Elevation } from '@rmwc/elevation'; import IDCVis from '../idc-vis'; import CfgNetworkElementContainer from './cfg-network-element-container'; import CfgPageScenarioButtons from './cfg-page-scenario-buttons'; import { deepCopy } from '../../util/object-util'; import { getElementFromScenario } from '../../util/scenario-utils'; import HeadlineBar from '../../components/headline-bar'; import CfgTable from './cfg-table'; Loading Loading @@ -61,9 +59,7 @@ import { CFG_STATE_NEW, CFG_STATE_IDLE, PAGE_CONFIGURE, ELEMENT_TYPE_SCENARIO, COMMON_ZONE_TYPE_STR, DEFAULT_NL_TYPE_STR ELEMENT_TYPE_SCENARIO } from '../../meep-constants'; import { Loading @@ -74,9 +70,7 @@ import { FIELD_EXT_PORT, FIELD_GPU_COUNT, FIELD_GPU_TYPE, getElemFieldVal, setElemFieldVal, createUniqueName getElemFieldVal } from '../../util/elem-utils'; import { pipe, filter } from '../../util/functional'; Loading Loading @@ -153,23 +147,6 @@ class CfgPageContainer extends Component { this.props.cfgElemClone(); } // CLONE ELEMENT, return new element name cloneElement(element, newParentName, isRoot) { let newElement = deepCopy(element); var name = getElemFieldVal(element, FIELD_NAME); if (isRoot === false) { name = createUniqueName(this.props.cfg.table.entries, name + '-copy'); setElemFieldVal(newElement, FIELD_NAME, name); } setElemFieldVal(newElement, FIELD_PARENT, newParentName); // add new element to scenario // new id and label will be created as part of the addNewElementToScenario called by newScenarioElem this.props.newScenarioElem(newElement, false); return name; } // CLONE onApplyCloneElement(element) { // Validate network element Loading @@ -177,108 +154,10 @@ class CfgPageContainer extends Component { return; } // browse to find the root of the tree to clone var inDomainCloneBranch = false, inZoneCloneBranch = false, inNlCloneBranch = false, inPlCloneBranch = false; var newZoneRootParentName = ''; var newNlRootParentName = ''; var newPlRootParentName = ''; var newProcessRootParentName = ''; var elementFromScenario; var scenario = this.props.cfg.scenario; // Domains for (var i in scenario.deployment.domains) { var domain = scenario.deployment.domains[i]; // Add domain to graph and table (ignore public domain) if (domain.id === element.id) { newZoneRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT), true); inDomainCloneBranch = true; } else { inDomainCloneBranch = false; } // Zones for (var j in domain.zones) { var zone = domain.zones[j]; if (inDomainCloneBranch) { if (zone.name.indexOf(COMMON_ZONE_TYPE_STR) !== -1) { newNlRootParentName = newZoneRootParentName + COMMON_ZONE_TYPE_STR; } else { elementFromScenario = getElementFromScenario(scenario, zone.id); newNlRootParentName = this.cloneElement(elementFromScenario, newZoneRootParentName, false); } } else { if (zone.id === element.id) { newNlRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT), true); inZoneCloneBranch = true; } else { inZoneCloneBranch = false; } } // Network Locations for (var k in zone.networkLocations) { var nl = zone.networkLocations[k]; if (inDomainCloneBranch || inZoneCloneBranch) { if (nl.name.indexOf(DEFAULT_NL_TYPE_STR) !== -1) { newPlRootParentName = newNlRootParentName; } else { elementFromScenario = getElementFromScenario(scenario, nl.id); newPlRootParentName = this.cloneElement(elementFromScenario, newNlRootParentName, false); } } else { if (nl.id === element.id) { newPlRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); inNlCloneBranch = true; } else { inNlCloneBranch = false; } } // Physical Locations for (var l in nl.physicalLocations) { var pl = nl.physicalLocations[l]; if (inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch) { elementFromScenario = getElementFromScenario(scenario, pl.id); newProcessRootParentName = this.cloneElement(elementFromScenario, newPlRootParentName, false); } else { if (pl.id === element.id) { newProcessRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); inPlCloneBranch = true; } else { inPlCloneBranch = false; } } // Processes for (var m in pl.processes) { var proc = pl.processes[m]; if (inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch || inPlCloneBranch) { elementFromScenario = getElementFromScenario(scenario, proc.id); this.cloneElement(elementFromScenario, newProcessRootParentName, false); } else { if (proc.id === element.id) { this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); } } } } } } if(inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch || inPlCloneBranch) { break; } } this.props.cloneScenarioElem(element); //force update on the visual aspect of the scenario this.props.updateScenario(); //this.props.updateScenario(); this.props.cfgElemClear(); } Loading
js-apps/meep-frontend/src/js/containers/idc-vis.js +0 −9 Original line number Diff line number Diff line Loading @@ -385,16 +385,7 @@ class IDCVis extends Component { vis.network.setOptions(vis.options); } updateConfigVisibility() { var vis = this.getVis(); if (vis.options.configure) { vis.options.configure.enabled = this.props.devMode; vis.network.setOptions(vis.options); } } render() { //this.updateConfigVisibility(); return ( <> <div Loading
js-apps/meep-frontend/src/js/containers/meep-container.js +156 −24 Original line number Diff line number Diff line Loading @@ -31,13 +31,27 @@ import ExecPageContainer from './exec/exec-page-container'; import SettingsPageContainer from './settings/settings-page-container'; import MonitorPageContainer from './monitor/monitor-page-container'; import { FIELD_PARENT, FIELD_NAME, getElemFieldVal, setElemFieldVal, createUniqueName } from '../util/elem-utils'; import { TYPE_CFG, TYPE_EXEC, EXEC_STATE_DEPLOYED, NO_SCENARIO_NAME, VIS_VIEW, VIEW_NAME_NONE VIEW_NAME_NONE, PAGE_CONFIGURE, PAGE_EXECUTE, PAGE_MONITOR, PAGE_SETTINGS, COMMON_ZONE_TYPE_STR, DEFAULT_NL_TYPE_STR } from '../meep-constants'; import { Loading @@ -45,7 +59,8 @@ import { createNewScenario, addElementToScenario, updateElementInScenario, removeElementFromScenario removeElementFromScenario, getElementFromScenario } from '../util/scenario-utils'; import { Loading Loading @@ -75,13 +90,6 @@ import { cfgChangeTable } from '../state/cfg'; import { PAGE_CONFIGURE, PAGE_EXECUTE, PAGE_MONITOR, PAGE_SETTINGS } from '../meep-constants'; import { idlog } from '../util/functional'; // MEEP Controller REST API JS client Loading Loading @@ -324,11 +332,11 @@ class MeepContainer extends Component { } changeScenario(pageType, scenario) { changeScenario(pageType, scenario, false); this.updateScenario(pageType, scenario, false); } // Change & process scenario changeScenario(pageType, scenario, reInitVisView) { updateScenario(pageType, scenario, reInitVisView) { // Change scenario state if (pageType === TYPE_CFG) { this.props.cfgChangeScenario(scenario); Loading Loading @@ -380,18 +388,18 @@ class MeepContainer extends Component { // Create, store & process new scenario createScenario(pageType, name) { var scenario = createNewScenario(name); this.changeScenario(pageType, scenario, true); this.updateScenario(pageType, scenario, true); } // Set & process scenario setScenario(pageType, scenario) { this.changeScenario(pageType, scenario, true); this.updateScenario(pageType, scenario, true); } // Delete & process scenario deleteScenario(pageType) { var scenario = createNewScenario(NO_SCENARIO_NAME); this.changeScenario(pageType, scenario, true); this.updateScenario(pageType, scenario, true); } // Refresh Active scenario Loading @@ -415,14 +423,14 @@ class MeepContainer extends Component { } // Update scenario updateScenario(pageType) { var scenario = pageType === TYPE_CFG ? this.props.cfg.scenario : this.props.exec.scenario; var updatedScenario = updateObject({}, scenario); this.changeScenario(pageType, updatedScenario); } //updateScenario(pageType) { // var scenario = // pageType === TYPE_CFG // ? this.props.cfg.scenario // : this.props.exec.scenario; // var updatedScenario = updateObject({}, scenario); // this.changeScenario(pageType, updatedScenario); //} // Update element in scenario updateScenarioElem(pageType, element) { Loading @@ -446,6 +454,127 @@ class MeepContainer extends Component { this.changeScenario(pageType, updatedScenario); } // Clone element in scenario cloneScenarioElem(element) { var inDomainCloneBranch = false, inZoneCloneBranch = false, inNlCloneBranch = false, inPlCloneBranch = false; var newZoneRootParentName = ''; var newNlRootParentName = ''; var newPlRootParentName = ''; var newProcessRootParentName = ''; var elementFromScenario; var scenario = this.props.cfg.scenario; // Domains for (var i in scenario.deployment.domains) { var domain = scenario.deployment.domains[i]; // Add domain to graph and table (ignore public domain) if (domain.id === element.id) { newZoneRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT), true); inDomainCloneBranch = true; } else { inDomainCloneBranch = false; } // Zones for (var j in domain.zones) { var zone = domain.zones[j]; if (inDomainCloneBranch) { if (zone.name.indexOf(COMMON_ZONE_TYPE_STR) !== -1) { newNlRootParentName = newZoneRootParentName + COMMON_ZONE_TYPE_STR; } else { elementFromScenario = getElementFromScenario(scenario, zone.id); newNlRootParentName = this.cloneElement(elementFromScenario, newZoneRootParentName, false); } } else { if (zone.id === element.id) { newNlRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT), true); inZoneCloneBranch = true; } else { inZoneCloneBranch = false; } } // Network Locations for (var k in zone.networkLocations) { var nl = zone.networkLocations[k]; if (inDomainCloneBranch || inZoneCloneBranch) { if (nl.name.indexOf(DEFAULT_NL_TYPE_STR) !== -1) { newPlRootParentName = newNlRootParentName; } else { elementFromScenario = getElementFromScenario(scenario, nl.id); newPlRootParentName = this.cloneElement(elementFromScenario, newNlRootParentName, false); } } else { if (nl.id === element.id) { newPlRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); inNlCloneBranch = true; } else { inNlCloneBranch = false; } } // Physical Locations for (var l in nl.physicalLocations) { var pl = nl.physicalLocations[l]; if (inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch) { elementFromScenario = getElementFromScenario(scenario, pl.id); newProcessRootParentName = this.cloneElement(elementFromScenario, newPlRootParentName, false); } else { if (pl.id === element.id) { newProcessRootParentName = this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); inPlCloneBranch = true; } else { inPlCloneBranch = false; } } // Processes for (var m in pl.processes) { var proc = pl.processes[m]; if (inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch || inPlCloneBranch) { elementFromScenario = getElementFromScenario(scenario, proc.id); this.cloneElement(elementFromScenario, newProcessRootParentName, false); } else { if (proc.id === element.id) { this.cloneElement(element, getElemFieldVal(element, FIELD_PARENT, true)); } } } } } } if(inDomainCloneBranch || inZoneCloneBranch || inNlCloneBranch || inPlCloneBranch) { this.changeScenario(TYPE_CFG, scenario); break; } } } // CLONE ELEMENT, return new element name cloneElement(element, newParentName, isRoot) { let newElement = deepCopy(element); var name = getElemFieldVal(element, FIELD_NAME); if (isRoot === false) { name = createUniqueName(this.props.cfg.table.entries, name + '-copy'); setElemFieldVal(newElement, FIELD_NAME, name); } setElemFieldVal(newElement, FIELD_PARENT, newParentName); // add new element to scenario // new id and label will be created as part of the addNewElementToScenario called by newScenarioElem this.newScenarioElem(TYPE_CFG, newElement, false); return name; } renderPage() { switch (this.props.page) { case PAGE_CONFIGURE: Loading @@ -465,8 +594,11 @@ class MeepContainer extends Component { newScenarioElem={(elem, update) => { this.newScenarioElem(TYPE_CFG, elem, update); }} updateScenario={() => { this.updateScenario(TYPE_CFG); //updateScenario={() => { // this.updateScenario(TYPE_CFG); //}} cloneScenarioElem={elem => { this.cloneScenarioElem(elem); }} updateScenarioElem={elem => { this.updateScenarioElem(TYPE_CFG, elem); Loading