From d20383f0b00a363b0193e162ac297dd731088ca2 Mon Sep 17 00:00:00 2001 From: Ahmed Date: Thu, 27 Feb 2020 17:15:30 +0200 Subject: adding dependacies to mapping table Issue-ID: CCSDK-2065 Signed-off-by: ahmedeldeeb50 Change-Id: I4e91ceaec3327df8f3d92ac339bc96dc2ba8e63a --- .../mapping-models/mappingAdapter.model.ts | 17 +++-- .../templ-mapp-creation.component.html | 35 ++++++---- .../templ-mapp-creation.component.ts | 75 ++++++++++++++++++---- .../templ-mapp-listing.component.html | 9 ++- .../templ-mapp-listing.component.ts | 24 ++++--- 5 files changed, 113 insertions(+), 47 deletions(-) diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/mappingAdapter.model.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/mappingAdapter.model.ts index 638654a95..b4de578b9 100644 --- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/mappingAdapter.model.ts +++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/mappingAdapter.model.ts @@ -1,10 +1,13 @@ import { ResourceDictionary } from './ResourceDictionary.model'; import { JsonObject, JsonProperty, JsonConvert } from 'json2typescript'; -// Convert ResourceDictionary object to store Mapping +// Convert ResourceDictionary object to store Mapping. export class MappingAdapter { - constructor(private resourceDictionary: ResourceDictionary) { } + constructor( + private resourceDictionary: ResourceDictionary, + private dependancies: Map>, + private dependanciesSource: Map) { } ToMapping(): Mapping { const mapping = new Mapping(); @@ -12,8 +15,12 @@ export class MappingAdapter { mapping.dictionaryName = this.resourceDictionary.name; mapping.property = this.resourceDictionary.definition.property; mapping.inputParam = false; - mapping.dictionarySource = 'sdnc'; - mapping.dependencies = []; + mapping.dictionarySource = this.dependanciesSource.get(mapping.name); + if (this.dependancies.get(mapping.name)) { + mapping.dependencies = this.dependancies.get(mapping.name); + } else { + mapping.dependencies = []; + } mapping.version = 0; return mapping; } @@ -32,7 +39,7 @@ export class Mapping { @JsonProperty('dictionary-source') dictionarySource: string; @JsonProperty() - dependencies: []; + dependencies: string[]; @JsonProperty() version: number; } diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.html index d08ada98d..d211e943e 100644 --- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.html +++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.html @@ -53,9 +53,10 @@ - -
Use the editor to add parameters or you can also Import +
+
- {{ dict.definition?.property?.required }} + + + + {{ dict.name }} {{ dict.name }} - + - {{ dict.definition?.property?.default }} - {{ dict.dataType }} - {{ dict.entrySchema }} + {{ dict.definition?.property?.type }} + {{ dict.definition?.property['entry_schema'] }} @@ -182,7 +187,9 @@ Files
-
Allowed file type: json
+
Allowed file type: + {{allowedExt}} +
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.ts index 1514392ed..f4797fc9c 100644 --- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.ts +++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.ts @@ -1,13 +1,13 @@ -import {Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild} from '@angular/core'; -import {FileSystemFileEntry, NgxFileDropEntry} from 'ngx-file-drop'; -import {PackageCreationStore} from '../../package-creation.store'; -import {TemplateInfo, TemplateStore} from '../../template.store'; -import {Subject} from 'rxjs'; -import {ResourceDictionary} from '../../mapping-models/ResourceDictionary.model'; -import {DataTableDirective} from 'angular-datatables'; -import {Mapping, MappingAdapter} from '../../mapping-models/mappingAdapter.model'; -import {PackageCreationUtils} from '../../package-creation.utils'; -import {JsonConvert} from 'json2typescript'; +import { Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'; +import { FileSystemFileEntry, NgxFileDropEntry } from 'ngx-file-drop'; +import { PackageCreationStore } from '../../package-creation.store'; +import { TemplateInfo, TemplateStore } from '../../template.store'; +import { Subject } from 'rxjs'; +import { ResourceDictionary } from '../../mapping-models/ResourceDictionary.model'; +import { DataTableDirective } from 'angular-datatables'; +import { Mapping, MappingAdapter } from '../../mapping-models/mappingAdapter.model'; +import { PackageCreationUtils } from '../../package-creation.utils'; +import { JsonConvert } from 'json2typescript'; @Component({ selector: 'app-templ-mapp-creation', @@ -24,19 +24,21 @@ export class TemplMappCreationComponent implements OnInit, OnDestroy { fileName: any; templateInfo = new TemplateInfo(); private variables: string[] = []; - private mappingFileValues = []; dtOptions: DataTables.Settings = {}; // We use this trigger because fetching the list of persons can be quite long, // thus we ensure the data is fetched before rendering dtTrigger = new Subject(); resourceDictionaryRes: ResourceDictionary[] = []; allowedExt = ['.vtl']; - @ViewChild(DataTableDirective, {static: false}) + @ViewChild(DataTableDirective, { static: false }) dtElement: DataTableDirective; MappingAdapter: MappingAdapter; mapping = new Map(); templateFileContent: string; templateExt = 'Velcoity'; + dependancies = new Map>(); + dependanciesSource = new Map(); + constructor( @@ -51,6 +53,7 @@ export class TemplMappCreationComponent implements OnInit, OnDestroy { console.log(templateInfo); this.templateInfo = templateInfo; this.fileName = templateInfo.fileName.split('/')[1]; + this.templateFileContent = templateInfo.fileContent; }); this.dtOptions = { @@ -144,7 +147,7 @@ export class TemplMappCreationComponent implements OnInit, OnDestroy { private convertDictionaryToMap(resourceDictionaries: ResourceDictionary[]): Mapping[] { const mapArray: Mapping[] = []; for (const resourceDictionary of resourceDictionaries) { - this.MappingAdapter = new MappingAdapter(resourceDictionary); + this.MappingAdapter = new MappingAdapter(resourceDictionary, this.dependancies, this.dependanciesSource); mapArray.push(this.MappingAdapter.ToMapping()); } console.log(mapArray); @@ -201,7 +204,15 @@ export class TemplMappCreationComponent implements OnInit, OnDestroy { } } + initMap(key, map) { + if (!this.dependanciesSource.has(key)) { + this.dependanciesSource.set(key, map.key); + } + return map.key; + } saveToStore() { + console.log(this.dependancies); + console.log(this.dependanciesSource); if (this.fileName) { // Save Mapping to Store if (this.resourceDictionaryRes && this.resourceDictionaryRes.length > 0) { @@ -221,6 +232,32 @@ export class TemplMappCreationComponent implements OnInit, OnDestroy { } } + testOption(dict, e) { + const source = e.target.value; + let keyDepend = null; + try { + keyDepend = dict.definition.sources[source].properties['key-dependencies'] || null; + } catch (e) { } + console.log(dict); + console.log(source); + if (keyDepend) { + this.dependancies.set(dict.name, keyDepend); + this.dependanciesSource.set(dict.name, source); + } else { + // this.dependancies.delete(dict.name); + // this.dependanciesSource.delete(dict.name); + } + console.log(this.dependancies); + } + + getKeys(map: Map) { + return Array.from(map.keys()); + } + + getValue(key) { + return this.dependancies.get(key); + } + rerender(): void { if (this.dtElement.dtInstance) { console.log('rerender'); @@ -240,3 +277,15 @@ export class TemplMappCreationComponent implements OnInit, OnDestroy { this.dtTrigger.unsubscribe(); } } + +class DependancyVal { + source: string; + keyDepend: any; + constructor( + source: string, + keyDepend: any + ) { + this.source = source; + this.keyDepend = keyDepend; + } +} diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.html index 62bdb5918..129576cbe 100644 --- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.html +++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.html @@ -9,8 +9,7 @@
@@ -22,8 +21,8 @@ -
+
\ No newline at end of file diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.ts index 46e67fc07..61c376c51 100644 --- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.ts +++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.ts @@ -1,8 +1,8 @@ -import {Component, EventEmitter, OnInit, Output} from '@angular/core'; -import {PackageCreationStore} from '../../package-creation.store'; -import {Mapping, Template} from '../../mapping-models/CBAPacakge.model'; -import {TemplateInfo, TemplateStore} from '../../template.store'; -import {TemplateAndMapping} from '../TemplateAndMapping'; +import { Component, EventEmitter, OnInit, Output } from '@angular/core'; +import { PackageCreationStore } from '../../package-creation.store'; +import { Mapping, Template } from '../../mapping-models/CBAPacakge.model'; +import { TemplateInfo, TemplateStore } from '../../template.store'; +import { TemplateAndMapping } from '../TemplateAndMapping'; @Component({ selector: 'app-templ-mapp-listing', @@ -45,13 +45,14 @@ export class TemplMappListingComponent implements OnInit { private setIsMappingOrTemplate(key: string, templateAndMapping: TemplateAndMapping, isFromTemplate: boolean) { const nameOfFile = key.split('/')[1].split('.')[0].split('-')[0]; - if (this.templateAndMappingMap.has(nameOfFile)) { - const templateAndMappingExisted = this.templateAndMappingMap.get(nameOfFile); + const fullName = nameOfFile + ',' + key; + if (this.templateAndMappingMap.has(fullName)) { + const templateAndMappingExisted = this.templateAndMappingMap.get(fullName); !isFromTemplate ? templateAndMappingExisted.isMapping = true : templateAndMappingExisted.isTemplate = true; - this.templateAndMappingMap.set(nameOfFile, templateAndMappingExisted); + this.templateAndMappingMap.set(fullName, templateAndMappingExisted); } else { - this.templateAndMappingMap.set(nameOfFile, templateAndMapping); + this.templateAndMappingMap.set(fullName, templateAndMapping); } } @@ -63,7 +64,10 @@ export class TemplMappListingComponent implements OnInit { setSourceCodeEditor(key: string) { this.packageCreationStore.state$.subscribe(cba => { if (cba.templates) { - const fileContent = cba.templates.getValue(key); + console.log(cba.templates); + console.log(key); + const fileContent = cba.templates.getValue(key.trim()); + console.log(fileContent); const templateInfo = new TemplateInfo(); templateInfo.fileContent = fileContent; templateInfo.fileName = key; -- cgit 1.2.3-korg