diff options
7 files changed, 216 insertions, 176 deletions
diff --git a/cds-ui/designer-client/src/app/common/constants/app-constants.ts b/cds-ui/designer-client/src/app/common/constants/app-constants.ts index 51b183640..6f64ee1e8 100644 --- a/cds-ui/designer-client/src/app/common/constants/app-constants.ts +++ b/cds-ui/designer-client/src/app/common/constants/app-constants.ts @@ -25,63 +25,63 @@ export const GlobalContants = { endpoints: {}, cbawizard: { stepsRequired: + { + stepCount: 4, + steps: [{ + name: 'CBA Metadata', + componentURL: '/controllerBlueprint/selectTemplate', + label: 'CBA Metadata', + link: '/blueprint/selectTemplate', + index: 0, + component: 'SelectTemplateComponent' + }, { - stepCount: 4, - steps: [{ - name: 'CBA Metadata', - componentURL: '/controllerBlueprint/selectTemplate', - label: 'CBA Metadata', - link: '/blueprint/selectTemplate', - index: 0, - component: 'SelectTemplateComponent' - }, - { - name: 'Controller Blueprint Designer', - componentURL: '/controllerBlueprint/modifyTemplate', - label: 'Controller Blueprint Designer', - link: '/blueprint/modifyTemplate', - index: 1, - component: 'ModifyTemplateComponent' - }, - { - name: 'Test', - componentURL: '/controllerBlueprint/testTemplate', - label: 'Test', - link: '/blueprint/testTemplate', - index: 2, - component: 'TestTemplateComponent' - }, - { - name: 'Deploy', - componentURL: '/controllerBlueprint/deployTemplate', - label: 'Deploy', - link: '/blueprint/deployTemplate', - index: 3, - component: 'DeployTemplateComponent' - }] - } + name: 'Controller Blueprint Designer', + componentURL: '/controllerBlueprint/modifyTemplate', + label: 'Controller Blueprint Designer', + link: '/blueprint/modifyTemplate', + index: 1, + component: 'ModifyTemplateComponent' + }, + { + name: 'Test', + componentURL: '/controllerBlueprint/testTemplate', + label: 'Test', + link: '/blueprint/testTemplate', + index: 2, + component: 'TestTemplateComponent' + }, + { + name: 'Deploy', + componentURL: '/controllerBlueprint/deployTemplate', + label: 'Deploy', + link: '/blueprint/deployTemplate', + index: 3, + component: 'DeployTemplateComponent' + }] + } }, datadictionary: { stepsRequired: - { - stepCount: 3, - steps: [{ - name: 'Resource Creation', componentURL: '/dataDictionary/selectTemplate', - label: 'Resource Creation', - component: 'ResourceCreationComponent' + { + stepCount: 3, + steps: [{ + name: 'Resource Creation', componentURL: '/dataDictionary/selectTemplate', + label: 'Resource Creation', + component: 'ResourceCreationComponent' - }, - { - name: 'Edit/Validate', componentURL: '/dataDictionary/modifyTemplate', - label: 'Edit/Validate', - component: 'ResourceEditComponent' - }, - { - name: 'Save', componentURL: '/dataDictionary/saveTemplate', - label: 'Save Resource', - component: 'SaveResourceComponent' - }] - } + }, + { + name: 'Edit/Validate', componentURL: '/dataDictionary/modifyTemplate', + label: 'Edit/Validate', + component: 'ResourceEditComponent' + }, + { + name: 'Save', componentURL: '/dataDictionary/saveTemplate', + label: 'Save Resource', + component: 'SaveResourceComponent' + }] + } } }; @@ -105,6 +105,7 @@ export const BlueprintURLs = { export const ResourceDictionaryURLs = { saveResourceDictionary: '/resourcedictionary/save', + saveDictionary: '/resourcedictionary/definition', searchResourceDictionaryByTags: '/resourcedictionary/search', searchResourceDictionaryByName: '', searchResourceDictionaryByNames: '/resourcedictionary/search/by-names', diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.html index e619f3a88..a3e662d0f 100644 --- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.html +++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.html @@ -237,6 +237,7 @@ <div class="row"> <div class="col-6" *ngFor="let file of getKeys(templateAndMappingMap)"> <a class="template-mapping-list float" [class.active]="selectedTemplates.has(file)"> + <i *ngIf="selectedTemplates.has(file)" class="fa fa-check mx-1"></i> <p (click)="setTemplate(file)">{{file}}</p> <span *ngIf="getValue(file,templateAndMappingMap).isMapping">Mapping</span> <span *ngIf="getValue(file,templateAndMappingMap).isTemplate">Template</span> @@ -277,4 +278,4 @@ </div> </div> </div> -</div> +</div>
\ No newline at end of file diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/resource-dictionary/resource-dictionary-creation/dictionary-creation.service.ts b/cds-ui/designer-client/src/app/modules/feature-modules/resource-dictionary/resource-dictionary-creation/dictionary-creation.service.ts index 445be2015..a1d614bc5 100644 --- a/cds-ui/designer-client/src/app/modules/feature-modules/resource-dictionary/resource-dictionary-creation/dictionary-creation.service.ts +++ b/cds-ui/designer-client/src/app/modules/feature-modules/resource-dictionary/resource-dictionary-creation/dictionary-creation.service.ts @@ -35,6 +35,6 @@ export class DictionaryCreationService { } save(metadata) { - return this.api.post(ResourceDictionaryURLs.saveResourceDictionary, { ...metadata }); + return this.api.post(ResourceDictionaryURLs.saveDictionary, { ...metadata }); } } diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/resource-dictionary/resource-dictionary-creation/resource-dictionary-creation.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/resource-dictionary/resource-dictionary-creation/resource-dictionary-creation.component.ts index c40679718..fb454ed1f 100644 --- a/cds-ui/designer-client/src/app/modules/feature-modules/resource-dictionary/resource-dictionary-creation/resource-dictionary-creation.component.ts +++ b/cds-ui/designer-client/src/app/modules/feature-modules/resource-dictionary/resource-dictionary-creation/resource-dictionary-creation.component.ts @@ -25,6 +25,7 @@ import { Definition } from '../model/definition.model'; import { DictionaryMetadataComponent } from './dictionary-metadata/dictionary-metadata.component'; import { SourcesTemplateComponent } from './sources-template/sources-template.component'; import { DictionaryCreationService } from './dictionary-creation.service'; +import { ToastrService } from 'ngx-toastr'; @Component({ selector: 'app-resource-dictionary-creation', @@ -36,7 +37,8 @@ export class ResourceDictionaryCreationComponent implements OnInit { constructor( private router: Router, private dictionaryCreationStore: DictionaryCreationStore, - private dictionaryService: DictionaryCreationService + private dictionaryService: DictionaryCreationService, + private toaster: ToastrService ) { } @@ -72,17 +74,20 @@ export class ResourceDictionaryCreationComponent implements OnInit { } createDictionary() { + console.log('-----'); this.metadataTabComponent.saveMetaDataToStore(); this.dictionaryCreationStore.state$.subscribe(res => { console.log('---------------------------------------'); console.log(res); this.dictionaryService.save(res.metaData).subscribe(data => { - + this.toaster.success('Dictionary Resource created'); }, err => { + this.toaster.error('An error happened ...'); + }, () => { }); - }); + }).unsubscribe(); // this.sourcesTemplateComponent.saveSorcesDataToStore(); } diff --git a/cds-ui/server/src/controllers/data-dictionary.controller.ts b/cds-ui/server/src/controllers/data-dictionary.controller.ts index 076d714c6..8dbb7eb3c 100644 --- a/cds-ui/server/src/controllers/data-dictionary.controller.ts +++ b/cds-ui/server/src/controllers/data-dictionary.controller.ts @@ -64,13 +64,28 @@ export class DataDictionaryController { } }, }) + async saveDefinition(@requestBody({ + content: { 'application/json': { schema: { 'x-ts-type': JSON } } }, + accepts: { 'application/json': { schema: { 'x-ts-type': JSON } } } + }) resourceDictionary: JSON): Promise<any> { + return await this.rdservice.saveDefinition(resourceDictionary); + } + + @post('/resourcedictionary/definition', { + responses: { + '200': { + content: { 'application/json': {} } + } + }, + }) async save(@requestBody({ content: { 'application/json': { schema: { 'x-ts-type': JSON } } }, accepts: { 'application/json': { schema: { 'x-ts-type': JSON } } } }) resourceDictionary: JSON): Promise<any> { - return await this.rdservice.save(resourceDictionary); + return await this.rdservice.saveDefinition(resourceDictionary); } - + + @post('/resourcedictionary/search/by-names', { responses: { '200': { @@ -114,7 +129,7 @@ export class DataDictionaryController { @get('/resourcedictionary/model-type/by-definition/{type}', { responses: { '200': { - content: {'application/json': {}}, + content: { 'application/json': {} }, }, }, }) diff --git a/cds-ui/server/src/datasources/resource-dictionary.datasource-template.ts b/cds-ui/server/src/datasources/resource-dictionary.datasource-template.ts index 7373d069e..07faa9a1a 100644 --- a/cds-ui/server/src/datasources/resource-dictionary.datasource-template.ts +++ b/cds-ui/server/src/datasources/resource-dictionary.datasource-template.ts @@ -1,4 +1,4 @@ -import {processorApiConfig} from '../config/app-config'; +import { processorApiConfig } from '../config/app-config'; export default { "name": "resourceDictionary", @@ -7,134 +7,151 @@ export default { "crud": false, "debug": true, "operations": [{ - "template": { - "method": "GET", - "url": processorApiConfig.http.url + "/dictionary/{name}", - "headers": { - "accepts": "application/json", - "content-type": "application/json", - "authorization": processorApiConfig.http.authToken - }, - "responsePath": "$.*" + "template": { + "method": "GET", + "url": processorApiConfig.http.url + "/dictionary/{name}", + "headers": { + "accepts": "application/json", + "content-type": "application/json", + "authorization": processorApiConfig.http.authToken }, - "functions": { - "getByName": ["name"] - - } + "responsePath": "$.*" }, - { - "template": { - "method": "GET", - "url": processorApiConfig.http.url + "/dictionary/source-mapping", - "headers": { - "accepts": "application/json", - "content-type": "application/json", - "authorization": processorApiConfig.http.authToken - }, - "responsePath": "$.*" - }, - "functions": { - "getSourceMapping": [] + "functions": { + "getByName": ["name"] - } - }, - { - "template": { - "method": "GET", - "url": processorApiConfig.http.url + "/dictionary/search/{tags}", - "headers": { - "accepts": "application/json", - "content-type": "application/json", - "authorization": processorApiConfig.http.authToken - }, - "responsePath": "$.*" + } + }, + { + "template": { + "method": "GET", + "url": processorApiConfig.http.url + "/dictionary/source-mapping", + "headers": { + "accepts": "application/json", + "content-type": "application/json", + "authorization": processorApiConfig.http.authToken }, - "functions": { - "getByTags": ["tags"] - - } + "responsePath": "$.*" }, - { - "template": { - "method": "POST", - "url": processorApiConfig.http.url + "/dictionary", - "headers": { - "accepts": "application/json", - "content-type": "application/json", - "authorization": processorApiConfig.http.authToken - }, - "body": "{resourceDictionary}", - "responsePath": "$.*" - }, - "functions": { - "save": ["resourceDictionary"] + "functions": { + "getSourceMapping": [] - } - }, - { - "template": { - "method": "POST", - "url": processorApiConfig.http.url + "/dictionary/by-names", - "headers": { - "accepts": "application/json", - "content-type": "application/json", - "authorization": processorApiConfig.http.authToken - }, - "body": "{resourceDictionaryList}", - "responsePath": "$.*" + } + }, + { + "template": { + "method": "GET", + "url": processorApiConfig.http.url + "/dictionary/search/{tags}", + "headers": { + "accepts": "application/json", + "content-type": "application/json", + "authorization": processorApiConfig.http.authToken }, - "functions": { - "searchbyNames": ["resourceDictionaryList"] + "responsePath": "$.*" + }, + "functions": { + "getByTags": ["tags"] - } + } + }, + { + "template": { + "method": "POST", + "url": processorApiConfig.http.url + "/dictionary", + "headers": { + "accepts": "application/json", + "content-type": "application/json", + "authorization": processorApiConfig.http.authToken + }, + "body": "{resourceDictionary}", + "responsePath": "$.*" }, - { - "template": { - "method": "GET", - "url": processorApiConfig.http.url + "/model-type/{source}", - "headers": { - "accepts": "application/json", - "content-type": "application/json", - "authorization": processorApiConfig.http.authToken - }, - "responsePath": "$.*" + "functions": { + "save": ["resourceDictionary"] + + } + }, + { + "template": { + "method": "POST", + "url": processorApiConfig.http.url + "/dictionary/definition", + "headers": { + "accepts": "application/json", + "content-type": "application/json", + "authorization": processorApiConfig.http.authToken }, - "functions": { - "getModelType": ["source"] + "body": "{resourceDictionary}", + "responsePath": "$.*" + }, + "functions": { + "saveDefinition": ["resourceDictionary"] - } + } + }, + { + "template": { + "method": "POST", + "url": processorApiConfig.http.url + "/dictionary/by-names", + "headers": { + "accepts": "application/json", + "content-type": "application/json", + "authorization": processorApiConfig.http.authToken + }, + "body": "{resourceDictionaryList}", + "responsePath": "$.*" }, - { - "template": { - "method": "GET", - "url": processorApiConfig.http.url + "/model-type/by-definition/data_type", - "headers": { - "accepts": "application/json", - "content-type": "application/json", - "authorization": processorApiConfig.http.authToken - }, - "responsePath": "$.*" + "functions": { + "searchbyNames": ["resourceDictionaryList"] + + } + }, + { + "template": { + "method": "GET", + "url": processorApiConfig.http.url + "/model-type/{source}", + "headers": { + "accepts": "application/json", + "content-type": "application/json", + "authorization": processorApiConfig.http.authToken }, - "functions": { - "getDataTypes": [] + "responsePath": "$.*" + }, + "functions": { + "getModelType": ["source"] - } + } + }, + { + "template": { + "method": "GET", + "url": processorApiConfig.http.url + "/model-type/by-definition/data_type", + "headers": { + "accepts": "application/json", + "content-type": "application/json", + "authorization": processorApiConfig.http.authToken + }, + "responsePath": "$.*" }, - { - "template": { - "method": "GET", - "url": processorApiConfig.http.url + "/model-type/by-definition/{type}", - "headers": { - "accepts": "application/json", - "content-type": "application/json", - "authorization": processorApiConfig.http.authToken - }, - "responsePath": "$.*" + "functions": { + "getDataTypes": [] + + } + }, + { + "template": { + "method": "GET", + "url": processorApiConfig.http.url + "/model-type/by-definition/{type}", + "headers": { + "accepts": "application/json", + "content-type": "application/json", + "authorization": processorApiConfig.http.authToken }, - "functions": { - "getResourceDictionaryByType": ["type"] + "responsePath": "$.*" + }, + "functions": { + "getResourceDictionaryByType": ["type"] - } } + } ] }; diff --git a/cds-ui/server/src/services/resource-dictionary.service.ts b/cds-ui/server/src/services/resource-dictionary.service.ts index a36c7fe75..6bf3f06ae 100644 --- a/cds-ui/server/src/services/resource-dictionary.service.ts +++ b/cds-ui/server/src/services/resource-dictionary.service.ts @@ -1,12 +1,13 @@ -import {getService} from '@loopback/service-proxy'; -import {inject, Provider} from '@loopback/core'; -import {ResourceDictionaryDataSource} from '../datasources'; +import { getService } from '@loopback/service-proxy'; +import { inject, Provider } from '@loopback/core'; +import { ResourceDictionaryDataSource } from '../datasources'; export interface ResourceDictionaryService { getByName(name: string): Promise<JSON>; getSourceMapping(): Promise<JSON>; getByTags(tags: string): Promise<JSON>; save(resourceDictionary: JSON): Promise<JSON>; + saveDefinition(resourceDictionary: JSON): Promise<JSON>; searchbyNames(resourceDictionaryList: JSON): Promise<JSON>; getModelType(source: string): Promise<JSON>; getDataTypes(): Promise<JSON>; @@ -18,7 +19,7 @@ export class ResourceDictionaryServiceProvider implements Provider<ResourceDicti // resourceDictionary must match the name property in the datasource json file @inject('datasources.resourceDictionary') protected dataSource: ResourceDictionaryDataSource = new ResourceDictionaryDataSource(), - ) {} + ) { } value(): Promise<ResourceDictionaryService> { return getService(this.dataSource); |