diff --git a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html index 139fac8accf576acd324c12ff7b4808cdfe08c1e..19fca710ffd4222b0e182db1df8224394cd6eb49 100644 --- a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html +++ b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.html @@ -48,6 +48,9 @@ <li> <a (click)="appAddJsonVersion.show()" >{{ 'APPS_MANAGEMENT.ADD_NEW_VERSION_BUTTON' | translate }} (JSON)</a> </li> + <li> + <a (click)="getApplicationInfoJSONWithBase(app?.id)"> {{'APPS_MANAGEMENT.EXPORT_JSON' | translate}}</a> + </li> <li> <a [routerLink]="['/admin/apps/edit', app?.id]">{{ 'APPS_MANAGEMENT.EDIT_BUTTON' | translate }}</a> </li> @@ -78,7 +81,7 @@ <a (click)="showModal($event, app, version)" *ngIf="getStateAsString(version?.state) !== 'DELETED'">{{ 'APPS_MANAGEMENT.CHANGE_STATE_BUTTON' | translate }}</a> </li> <li> - <a (click)="getApplicationInfoJSON(version?.appVersionId)">{{'APPS_MANAGEMENT.EXPORT_JSON' | translate}}</a> + <a (click)="getApplicationInfoJSONWithoutBase(version?.appVersionId)">{{'APPS_MANAGEMENT.EXPORT_JSON' | translate}}</a> </li> <li> <a [routerLink]="['/admin/apps/edit/version', version?.appVersionId]">{{ 'APPS_MANAGEMENT.EDIT_BUTTON' | translate }}</a> diff --git a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts index c4c0cd8291a8f445e2a9807fd55f6de363b63ee1..698eaf0d4b9d2aa52d7b790c9b8f3a9350d4c77d 100644 --- a/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts +++ b/src/app/appmarket/appmanagement/app-management-list/appmanagementlist.component.ts @@ -130,9 +130,27 @@ export class AppManagementListComponent implements OnInit { }) } - public getApplicationInfoJSON(id: number) { + public getApplicationInfoJSONWithBase(id: number) { + this.appsService.getApplicationBaseWithVersion(id).subscribe( appDTO => { + // appDTO = this.deleteIDsFields(appDTO); + let blob = new Blob([JSON.stringify(appDTO, null, 4)], {type: 'application/json'}) + this.blobUrl = window.URL.createObjectURL(blob); + let a = document.createElement('a'); + document.body.appendChild(a); + a.setAttribute('style', 'display: none'); + a.href = this.blobUrl; + a.download = `${appDTO.applicationBase.name}.json` + a.click(); + window.URL.revokeObjectURL(this.blobUrl); + a.remove(); + }) + } + + public getApplicationInfoJSONWithoutBase(id: number) { this.appsService.getApplicationDTO(id).subscribe( appDTO => { appDTO = this.deleteIDsFields(appDTO); + // delete appDTO.applicationBase; + console.log(appDTO); let blob = new Blob([JSON.stringify(appDTO, null, 4)], {type: 'application/json'}) this.blobUrl = window.URL.createObjectURL(blob); let a = document.createElement('a'); diff --git a/src/app/model/application-dto.ts b/src/app/model/application-dto.ts index 03e171da1d1a86903c54a9248fcdb7662543a7c8..9678f698bdfe8591750e26cbef6180f414ce9e3f 100644 --- a/src/app/model/application-dto.ts +++ b/src/app/model/application-dto.ts @@ -10,3 +10,14 @@ export class ApplicationDTO { this.application = new Application() } } + + +export class ApplicationVersionList { + public applicationBase: ApplicationBase = undefined; + public applications: Application[] = [] + + constructor() { + this.applicationBase = new ApplicationBase(); + this.applications = [] + } +} \ No newline at end of file diff --git a/src/app/service/apps.service.ts b/src/app/service/apps.service.ts index 944f5db9d0c54530c15f0b4d463bc481660f5b70..708b913223532689567d83cada694f0c63b9a03d 100644 --- a/src/app/service/apps.service.ts +++ b/src/app/service/apps.service.ts @@ -9,7 +9,7 @@ import {catchError, debounceTime} from 'rxjs/operators'; import {AppStateChange} from '../model/appstatechange'; import {ApplicationBase} from '../model/application-base'; import {Application} from '../model/application'; -import {ApplicationDTO} from '../model/application-dto'; +import {ApplicationDTO, ApplicationVersionList} from '../model/application-dto'; import {ApplicationVersion} from '../model/application-version'; @Injectable({ @@ -50,6 +50,11 @@ export class AppsService extends GenericDataService { public hasRunningInstances(id: number): Observable<boolean> { return this.http.get<boolean>(this.appConfig.getApiUrl() + '/apps/instances/running/app/' + id); } + // getAllVersionWithBase + public getApplicationBaseWithVersion(id: number): Observable<ApplicationVersionList> { + return this.get<ApplicationVersionList>(this.appConfig.getApiUrl() + '/apps/base/allversions/' + id); + } + // application version public getApplicationVersions(id: number): Observable<ApplicationVersion[]> { return this.get<ApplicationVersion[]>(this.appConfig.getApiUrl() + `/apps/versions/${id}`)