[SDC-29] rebase continue work to align source
[sdc.git] / catalog-ui / src / app / models / properties-inputs / derived-fe-property.ts
index 1d79353..f7117e4 100644 (file)
@@ -1,15 +1,11 @@
 import { SchemaPropertyGroupModel, SchemaProperty } from '../aschema-property';
-import { PROPERTY_DATA, PROPERTY_TYPES} from 'app/utils';
-import { PropertyBEModel } from '../../models';
+import { DerivedPropertyType, PropertyBEModel } from '../../models';
+import { PROPERTY_TYPES } from 'app/utils';
+import { UUID } from "angular2-uuid";
 
-export enum DerivedPropertyType {
-    SIMPLE,
-    LIST,
-    MAP,
-    COMPLEX //other datatype, list of non-simple, or map of non-simple
-}
 
 export class DerivedFEProperty extends PropertyBEModel {
+    valueObj: any; 
     parentName: string;
     propertiesName: string; //"network_assignments#ipv4_subnet#use_ipv4 =  parentPath + name
     derivedDataType: DerivedPropertyType;
@@ -17,56 +13,39 @@ export class DerivedFEProperty extends PropertyBEModel {
     isSelected: boolean;
     isDisabled: boolean;
     isChildOfListOrMap: boolean;
+    canBeDeclared: boolean;
+    mapKey: string;
 
-    constructor(property: PropertyBEModel, parentName?: string)
-    constructor(name: string, parentName: string, type: string, value: string, isChildOfListOrMap?:boolean, schema?: SchemaPropertyGroupModel);
-    constructor(nameOrPropertyObj?: string | PropertyBEModel, parentName?: string, type?: string, value?: string, isChildOfListOrMap?: boolean, schema?: SchemaPropertyGroupModel) {
-
-        super(typeof nameOrPropertyObj === 'string' ? null : nameOrPropertyObj);
-
-        if (typeof nameOrPropertyObj !== 'string') { //constructor #1
+    constructor(property: PropertyBEModel, parentName?: string, createChildOfListOrMap?: boolean, key?:string, value?:any) {
+        if (!createChildOfListOrMap) { //creating a standard derived prop
+            super(property);
             this.parentName = parentName ? parentName : null;
-            this.propertiesName = (parentName) ? parentName + '#' + nameOrPropertyObj.name : nameOrPropertyObj.name;
-        } else { //constructor #2
-            this.name = nameOrPropertyObj;
-            this.type = type;
+            this.propertiesName = (parentName) ? parentName + '#' + property.name : property.name;
+            this.canBeDeclared = true; //defaults to true
+        } else { //creating a direct child of list or map (ie. Item that can be deleted, with UUID instead of name)
+            super(null);
+            this.isChildOfListOrMap = true;
+            this.canBeDeclared = false;
+            this.name = UUID.UUID();
             this.parentName = parentName;
-            this.propertiesName = parentName + '#' + nameOrPropertyObj;
-            this.value = value;
-            if (schema) {
-                this.schema = new SchemaPropertyGroupModel(new SchemaProperty(schema.property));
+            this.propertiesName = parentName + '#' + this.name;
+
+            
+            if (property.type == PROPERTY_TYPES.LIST) {
+                this.mapKey = property.schema.property.type.split('.').pop();
+                this.type = property.schema.property.type;
+            } else { //map
+                this.mapKey = key || "";
+                this.type = property.type;
             }
+            this.valueObj = (this.type == PROPERTY_TYPES.JSON && typeof value == 'object') ? JSON.stringify(value) : value;
+            this.schema = new SchemaPropertyGroupModel(new SchemaProperty(property.schema.property));
         }
         this.derivedDataType = this.getDerivedPropertyType();
-        this.isChildOfListOrMap = (isChildOfListOrMap) ? isChildOfListOrMap : false;
     }
-   
-    public getDerivedPropertyType = () => {
-        if (PROPERTY_DATA.SIMPLE_TYPES.indexOf(this.type) > -1) {
-            return DerivedPropertyType.SIMPLE;
-        } else if (this.type == PROPERTY_TYPES.LIST) {
-            return DerivedPropertyType.LIST;
-        } else if (this.type == PROPERTY_TYPES.MAP) {
-            return DerivedPropertyType.MAP;
-        } else {
-            return DerivedPropertyType.COMPLEX;
-        }
-   } 
     
 }
 export class DerivedFEPropertyMap {
     [parentPath: string]: Array<DerivedFEProperty>;
 }
 
-
-
-// isDataType: boolean;
-
-
-// canAdd: boolean;
-// canCollapse: boolean;
-// canBeDeclared: boolean;
-
-// derivedValue: string;
-// derivedValueType: string;
-// propertiesName: string; 
\ No newline at end of file