Commit 401b4076 authored by Simon Pastor's avatar Simon Pastor
Browse files

merged with name suggestion, editable name, uuid

parent 58c2193e
Loading
Loading
Loading
Loading
+24 −51
Original line number Diff line number Diff line
@@ -978,9 +978,8 @@ const ElementCfgButtons = ({
  );
};

const getSuggestedName = ( parent, type, elements ) => {
const getSuggestedName = ( type, elements ) => {
  var suggestedPrefix = '';
  if(parent) {
  switch(type) {
  case ELEMENT_TYPE_UE_APP:
    suggestedPrefix = 'ue-app';
@@ -997,27 +996,11 @@ const getSuggestedName = ( parent, type, elements ) => {
  default:
    suggestedPrefix = type.toLowerCase();
  }
  }

  //return unique name
  var increment = 1;
  var found = true;
  var suggestedName = suggestedPrefix + String(increment);
  while(found) { 
    found = false;
    for (var i = 0; i < elements.length; i++) {
      if (getElemFieldVal(elements[i], FIELD_NAME) === suggestedName) {
        found=true;
        increment++;
        suggestedName = suggestedPrefix + String(increment);
        break;
      }
    }
  }
  return suggestedName;
  return createUniqueName(elements, suggestedPrefix);
};

const HeaderGroup = ({ element, onTypeChange, onParentChange, onUpdate, typeDisabled, parentDisabled, nameDisabled }) => {
const HeaderGroup = ({ element, onTypeChange, onUpdate, typeDisabled, parentDisabled, nameDisabled }) => {
  var type = getElemFieldVal(element, FIELD_TYPE) || '';
  var parent = getElemFieldVal(element, FIELD_PARENT) || '';
  var parentElements = element.parentElements || [parent];
@@ -1025,7 +1008,7 @@ const HeaderGroup = ({ element, onTypeChange, onParentChange, onUpdate, typeDisa
  return (
    <>
      <Grid style={{ marginTop: 10 }}>
        {type && type !== 'SCENARIO' && (
        {type !== 'SCENARIO' && (
          <IDSelect
            label="Element Type"
            span={6}
@@ -1036,12 +1019,12 @@ const HeaderGroup = ({ element, onTypeChange, onParentChange, onUpdate, typeDisa
            cydata={CFG_ELEM_TYPE}
          />
        )}
        {type && (
        {type && type !== 'SCENARIO' && (
          <IDSelect
            label="Parent Node"
            span={6}
            options={parentElements}
            onChange={elem => onParentChange(elem.target.value, type)}
            onChange={elem => onUpdate(FIELD_PARENT, elem.target.value, null)}
            value={parent}
            disabled={parentDisabled}
            cydata={CFG_ELEM_PARENT}
@@ -1111,16 +1094,9 @@ export class CfgNetworkElementContainer extends Component {

    elem.parentElements = this.elementsOfType(getParentTypes(elementType));

    this.props.cfgElemUpdate(elem);
    if (this.props.configMode !== CFG_ELEM_MODE_CLONE) { 
      setElemFieldVal(elem, FIELD_NAME, getSuggestedName(elementType, this.props.tableData));
    } 

  // Element configuration parent change handler
  onElementParentChange(elementParent, elementType) {
    var elem = updateObject({}, this.props.configuredElement);

    setElemFieldVal(elem, FIELD_PARENT, elementParent);
    setElemFieldVal(elem, FIELD_NAME, getSuggestedName(elementParent, elementType, this.props.tableData));

    this.props.cfgElemUpdate(elem);
  }

@@ -1160,9 +1136,6 @@ export class CfgNetworkElementContainer extends Component {
              onTypeChange={type => {
                this.onElementTypeChange(type);
              }}
              onParentChange={(val, type) => {
                this.onElementParentChange(val, type);
              }}
              onUpdate={(name, val, err) => {
                this.onUpdateElement(name, val, err);
              }}
+2 −2
Original line number Diff line number Diff line
@@ -269,8 +269,8 @@ class CfgPageContainer extends Component {
      }
    }

    //force update on element to update the the visual aspect of the scenario
    this.props.updateScenarioElem(element);
    //force update on the visual aspect of the scenario
    this.props.updateScenario();

    this.props.cfgElemClear();
  }
+13 −0
Original line number Diff line number Diff line
@@ -397,6 +397,16 @@ 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);
  }

  // Update element in scenario
  updateScenarioElem(pageType, element) {
    var scenario =
@@ -438,6 +448,9 @@ class MeepContainer extends Component {
          newScenarioElem={(elem, update) => {
            this.newScenarioElem(TYPE_CFG, elem, update);
          }}
          updateScenario={() => {
            this.updateScenario(TYPE_CFG);
          }}
          updateScenarioElem={elem => {
            this.updateScenarioElem(TYPE_CFG, elem);
          }}
+31 −3
Original line number Diff line number Diff line
@@ -243,7 +243,7 @@ export function addElementToScenario(scenario, element) {
  var type = getElemFieldVal(element, FIELD_TYPE);
  var name = getElemFieldVal(element, FIELD_NAME);
  var uniqueId = uuid();
  //uniqueId = name;

  var parent = getElemFieldVal(element, FIELD_PARENT);

  // Prepare network element to be added to scenario
@@ -421,6 +421,24 @@ export function updateElementInScenario(scenario, element) {
        element,
        FIELD_INT_ZONE_PKT_LOSS
      );

      //if domain name changed, other elements created based on that name must also be updated (default ones)
      for (var i2 in domain.zones) {
        var zoneCommon = domain.zones[i2];
        if (zoneCommon.id === domain.name + '-' + COMMON_ZONE_TYPE_STR) {
          for (var i3 in zoneCommon.networkLocations) {
            var nlDomainCommon = zoneCommon.networkLocations[i3];
            if (nlDomainCommon.id === zoneCommon.name + '-' + DEFAULT_NL_TYPE_STR) {
              nlDomainCommon.id = name + '-' + COMMON_ZONE_TYPE_STR + '-' + DEFAULT_NL_TYPE_STR;
              nlDomainCommon.name = name + '-' + COMMON_ZONE_TYPE_STR + '-' + DEFAULT_NL_TYPE_STR;
              break;
            }
          }
          zoneCommon.id = name + '-' + COMMON_ZONE_TYPE_STR;
          zoneCommon.name = name + '-' + COMMON_ZONE_TYPE_STR;
          break;
        }
      }
      domain.label = name;
      domain.name = name;
      return;
@@ -444,6 +462,16 @@ export function updateElementInScenario(scenario, element) {
            FIELD_INTRA_ZONE_PKT_LOSS
          );
        }

        //if zone name changed, other elements created based on that name must also be updated (default ones)
        for (var j2 in zone.networkLocations) {
          var nlZoneCommon = zone.networkLocations[j2];
          if (nlZoneCommon.id === zone.name + '-' + DEFAULT_NL_TYPE_STR) {
            nlZoneCommon.id = name + '-' + DEFAULT_NL_TYPE_STR;
            nlZoneCommon.name = name + '-' + DEFAULT_NL_TYPE_STR;
          }
        }

        zone.label = name;
        zone.name = name;
        return;
@@ -493,7 +521,7 @@ export function updateElementInScenario(scenario, element) {
            if (process.id === id) {
              pl.processes[m] = createProcess(
                process.id,
                process.name,
                name,
                process.type,
                element
              );
@@ -574,7 +602,7 @@ export function createProcess(uniqueId, name, type, element) {
  var port = getElemFieldVal(element, FIELD_PORT);
  var gpuCount = getElemFieldVal(element, FIELD_GPU_COUNT);
  var process = {
    id: name,
    id: uniqueId,
    name: name,
    type: type,
    isExternal: isExternal,