@yuuvis/app-templates 1.1.3 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/fesm2022/yuuvis-app-templates-extensions.mjs +1 -1
- package/fesm2022/yuuvis-app-templates-extensions.mjs.map +1 -1
- package/fesm2022/yuuvis-app-templates.mjs +2 -2
- package/fesm2022/yuuvis-app-templates.mjs.map +1 -1
- package/lib/assets/i18n/de.json +1 -1
- package/lib/assets/i18n/en.json +5 -5
- package/package.json +1 -1
- package/yuv-manifest.json +1 -1
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@ In your `app.routes.ts` add a new lazy loaded route for the `@yuuvis/app-templat
|
|
|
34
34
|
export const app: App[] = [
|
|
35
35
|
{
|
|
36
36
|
id: 'io.yuuvis.app.templates',
|
|
37
|
-
title: "yuuvis
|
|
37
|
+
title: "yuuvis® templates",
|
|
38
38
|
path: 'templates',
|
|
39
39
|
iconName: 'library_books',
|
|
40
40
|
loadChildren: () => import('@yuuvis/app-templates').then((m) => m.YuvTemplateManagerRoutes)
|
|
@@ -93,7 +93,7 @@ class ApplyTemplateComponent {
|
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
95
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ApplyTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ApplyTemplateComponent, isStandalone: true, selector: "ymtmpl-apply", inputs: { dmsObject: { classPropertyName: "dmsObject", publicName: "dmsObject", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<yuv-dialog [headertitel]=\"'yuv.app.templates.action.apply.headline' | translate\">\n <main [yuvBusyOverlay]=\"busy()\">\n @let templates = supportedTemplates(); @if (templates.length) {\n <p>{{ \"yuv.app.templates.action.apply.text\" | translate }}</p>\n <yuv-list selectOnEnter=\"true\" (itemSelect)=\"onItemSelect($event)\">\n @for (t of templates; track $index) {\n <div yuvListItem>\n <mat-icon class=\"icon\">{{ icons.actionApplyTemplate }}</mat-icon>\n <div class=\"name\">{{ t.name }}</div>\n <div class=\"description\">{{ t.description }}</div>\n </div>\n }\n </yuv-list>\n } @else if (!busy()) { @if (!error()) {\n <div class=\"hint empty\">\n <p>{{ \"yuv.app.templates.action.apply.list.empty\" | translate }}</p>\n </div>\n } @else {\n <div class=\"hint error\">\n <p>{{ \"yuv.app.templates.action.apply.error\" | translate }}</p>\n </div>\n } }\n </main>\n <footer>\n <button [disabled]=\"busy()\" type=\"button\" ymtButton=\"secondary\" (click)=\"cancel()\">{{ \"yuv.app.templates.action.apply.button.cancel\" | translate }}</button>\n <button [disabled]=\"busy() || error() || !selectedTemplate()\" ymtButton=\"primary\" (click)=\"apply()\">{{ \"yuv.app.templates.action.apply.button.ok\" | translate }}</button>\n </footer>\n</yuv-dialog>\n", styles: [":host{--container-width: 300px;display:flex;flex-flow:column;min-width:var(--container-width);max-width:90vw;height:100%}:host main{flex:1;overflow-y:auto;min-height:200px}:host main p{padding:var(--ymt-spacing-m);margin:0}:host main yuv-list{flex:1}:host main yuv-list [yuvListItem]{--icon-size: 24px;--list-item-hover-background: var(--ymt-focus-background);display:grid;padding:var(--ymt-spacing-s) var(--ymt-spacing-m);grid-template-columns:var(--icon-size) auto;grid-template-rows:auto auto;grid-template-areas:\"icon name\" \"icon description\";align-items:center;line-height:1em;column-gap:var(--ymt-spacing-m);row-gap:var(--ymt-spacing-xs);cursor:pointer}:host main yuv-list [yuvListItem] .icon{grid-area:icon}:host main yuv-list [yuvListItem] .name{grid-area:name}:host main yuv-list [yuvListItem] .description{grid-area:description;color:var(--ymt-text-color-subtle)}:host main yuv-list [yuvListItem]:not(:last-child){border-block-end:1px solid var(--ymt-outline-variant)}:host main yuv-pagination{flex:0 0 auto;border-block-start:1px solid var(--ymt-outline-variant)}:host main .hint{height:100%;padding:0;margin:0;display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "directive", type: BusyOverlayDirective, selector: "[yuvBusyOverlay]", inputs: ["yuvBusyOverlay", "yuvBusyOverlayConfig"] }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["multiselect", "selfHandleSelection", "autoSelect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitel"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }] }); }
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ApplyTemplateComponent, isStandalone: true, selector: "ymtmpl-apply", inputs: { dmsObject: { classPropertyName: "dmsObject", publicName: "dmsObject", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<yuv-dialog [headertitel]=\"'yuv.app.templates.action.apply.headline' | translate\">\n <main [yuvBusyOverlay]=\"busy()\">\n @let templates = supportedTemplates(); @if (templates.length) {\n <p>{{ \"yuv.app.templates.action.apply.text\" | translate }}</p>\n <yuv-list selectOnEnter=\"true\" (itemSelect)=\"onItemSelect($event)\">\n @for (t of templates; track $index) {\n <div yuvListItem>\n <mat-icon class=\"icon\">{{ icons.actionApplyTemplate }}</mat-icon>\n <div class=\"name\">{{ t.name }}</div>\n <div class=\"description\">{{ t.description }}</div>\n </div>\n }\n </yuv-list>\n } @else if (!busy()) { @if (!error()) {\n <div class=\"hint empty\">\n <p>{{ \"yuv.app.templates.action.apply.list.empty\" | translate }}</p>\n </div>\n } @else {\n <div class=\"hint error\">\n <p>{{ \"yuv.app.templates.action.apply.error\" | translate }}</p>\n </div>\n } }\n </main>\n <footer>\n <button [disabled]=\"busy()\" type=\"button\" ymtButton=\"secondary\" (click)=\"cancel()\">{{ \"yuv.app.templates.action.apply.button.cancel\" | translate }}</button>\n <button [disabled]=\"busy() || error() || !selectedTemplate()\" ymtButton=\"primary\" (click)=\"apply()\">{{ \"yuv.app.templates.action.apply.button.ok\" | translate }}</button>\n </footer>\n</yuv-dialog>\n", styles: [":host{--container-width: 300px;display:flex;flex-flow:column;min-width:var(--container-width);max-width:90vw;height:100%}:host main{flex:1;overflow-y:auto;min-height:200px}:host main p{padding:var(--ymt-spacing-m);margin:0}:host main yuv-list{flex:1}:host main yuv-list [yuvListItem]{--icon-size: 24px;--list-item-hover-background: var(--ymt-focus-background);display:grid;padding:var(--ymt-spacing-s) var(--ymt-spacing-m);grid-template-columns:var(--icon-size) auto;grid-template-rows:auto auto;grid-template-areas:\"icon name\" \"icon description\";align-items:center;line-height:1em;column-gap:var(--ymt-spacing-m);row-gap:var(--ymt-spacing-xs);cursor:pointer}:host main yuv-list [yuvListItem] .icon{grid-area:icon}:host main yuv-list [yuvListItem] .name{grid-area:name}:host main yuv-list [yuvListItem] .description{grid-area:description;color:var(--ymt-text-color-subtle)}:host main yuv-list [yuvListItem]:not(:last-child){border-block-end:1px solid var(--ymt-outline-variant)}:host main yuv-pagination{flex:0 0 auto;border-block-start:1px solid var(--ymt-outline-variant)}:host main .hint{height:100%;padding:0;margin:0;display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "directive", type: BusyOverlayDirective, selector: "[yuvBusyOverlay]", inputs: ["yuvBusyOverlay", "yuvBusyOverlayConfig"] }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["preventChangeUntil", "multiselect", "selfHandleSelection", "autoSelect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitel"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }] }); }
|
|
97
97
|
}
|
|
98
98
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ApplyTemplateComponent, decorators: [{
|
|
99
99
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-app-templates-extensions.mjs","sources":["../../../../projects/yuuvis/app-templates/extensions/src/lib/actions/apply.component.ts","../../../../projects/yuuvis/app-templates/extensions/src/lib/actions/apply.component.html","../../../../projects/yuuvis/app-templates/extensions/src/lib/actions/apply.action.ts","../../../../projects/yuuvis/app-templates/extensions/src/lib/extensions.service.ts","../../../../projects/yuuvis/app-templates/extensions/src/yuuvis-app-templates-extensions.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, input, signal, untracked } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DmsObject, NotificationService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { BusyOverlayDirective, DialogComponent } from '@yuuvis/client-framework/common';\nimport { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';\nimport { finalize } from 'rxjs';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { APP_ICONS, TemplateObject, TemplateSearchResponse } from '@yuuvis/app-templates/shared';\nimport { YuvTemplatesExtension } from './../extensions.service';\n\nconst components = [\n BusyOverlayDirective,\n ListComponent,\n ListItemDirective,\n DialogComponent,\n YmtButtonDirective\n];\n\nconst modules = [\n CommonModule,\n TranslateModule,\n MatIconModule,\n MatProgressBarModule,\n];\n\n@Component({\n selector: 'ymtmpl-apply',\n templateUrl: './apply.component.html',\n styleUrls: ['./apply.component.scss'],\n standalone: true,\n imports: [...modules, ...components]\n})\nexport class ApplyTemplateComponent {\n\n readonly #extension = inject(YuvTemplatesExtension);\n readonly #notificationService = inject(NotificationService);\n readonly #translateService = inject(TranslateService);\n\n #dialogData = inject<DmsObject>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<ApplyTemplateComponent>);\n\n dmsObject = input<DmsObject>(this.#dialogData);\n\n #dmsObjectEffect = effect(() => {\n if (this.dmsObject())\n untracked(() => {\n this.#init()\n });\n });\n\n supportedTemplates = signal<TemplateObject[]>([]);\n\n selectedTemplate = signal<TemplateObject | undefined>(undefined);\n\n busy = signal<boolean>(false);\n\n error = signal<boolean>(false);\n\n icons = {\n ...APP_ICONS\n };\n\n #init() {\n this.busy.set(true)\n this.#extension.getTemplatesForObject(this.dmsObject())\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (res: TemplateSearchResponse) => {\n this.error.set(false);\n this.supportedTemplates.set(res.items);\n },\n error: () => {\n this.error.set(true);\n }\n });\n }\n\n onItemSelect(idx: number[]) {\n this.selectedTemplate.set(this.supportedTemplates()[idx[0]]);\n }\n\n cancel() {\n this.#dialogRef.close();\n }\n \n apply() {\n this.busy.set(true)\n this.#extension.applyTemplateOnObject(`obj:${this.selectedTemplate()?.id}`, this.dmsObject()).subscribe({\n next: () => {\n this.#notificationService.success(this.#translateService.instant('yuv.app.templates.action.apply.success'));\n },\n error: (err: any) => {\n this.#notificationService.error(err);\n this.busy.set(false);\n },\n complete: () => {\n this.#dialogRef.close();\n }\n });\n }\n} \n","<yuv-dialog [headertitel]=\"'yuv.app.templates.action.apply.headline' | translate\">\n <main [yuvBusyOverlay]=\"busy()\">\n @let templates = supportedTemplates(); @if (templates.length) {\n <p>{{ \"yuv.app.templates.action.apply.text\" | translate }}</p>\n <yuv-list selectOnEnter=\"true\" (itemSelect)=\"onItemSelect($event)\">\n @for (t of templates; track $index) {\n <div yuvListItem>\n <mat-icon class=\"icon\">{{ icons.actionApplyTemplate }}</mat-icon>\n <div class=\"name\">{{ t.name }}</div>\n <div class=\"description\">{{ t.description }}</div>\n </div>\n }\n </yuv-list>\n } @else if (!busy()) { @if (!error()) {\n <div class=\"hint empty\">\n <p>{{ \"yuv.app.templates.action.apply.list.empty\" | translate }}</p>\n </div>\n } @else {\n <div class=\"hint error\">\n <p>{{ \"yuv.app.templates.action.apply.error\" | translate }}</p>\n </div>\n } }\n </main>\n <footer>\n <button [disabled]=\"busy()\" type=\"button\" ymtButton=\"secondary\" (click)=\"cancel()\">{{ \"yuv.app.templates.action.apply.button.cancel\" | translate }}</button>\n <button [disabled]=\"busy() || error() || !selectedTemplate()\" ymtButton=\"primary\" (click)=\"apply()\">{{ \"yuv.app.templates.action.apply.button.ok\" | translate }}</button>\n </footer>\n</yuv-dialog>\n","import { inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DmsObject, RetentionService, SystemType } from '@yuuvis/client-core';\nimport {\n AbstractContextAction,\n Action,\n ActionSupport,\n SelectionRange,\n} from '@yuuvis/client-framework/actions';\nimport { Observable, of } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { APP_ACTIONS, APP_ICONS } from '@yuuvis/app-templates/shared';\nimport { ApplyTemplateComponent } from './apply.component';\n\nexport class ApplyTemplateAction\n extends AbstractContextAction\n implements Action\n{\n readonly #translateService = inject(TranslateService);\n readonly #retentionService = inject(RetentionService);\n #dialog = inject(MatDialog);\n\n id = APP_ACTIONS.apply;\n label = this.#translateService.instant(\n 'yuv.app.templates.action.apply.label'\n );\n description = this.#translateService.instant(\n 'yuv.app.templates.action.apply.description'\n );\n icon = APP_ICONS.actionApplyTemplate;\n group = 'common';\n priority = 0;\n range = SelectionRange.SINGLE_SELECT;\n supports: ActionSupport = {\n types: [SystemType.DOCUMENT],\n };\n\n isExecutable(selection: DmsObject[]) {\n const i = selection[0];\n return of(i && selection.length === 1 && !!i?.permissions?.writeContent && !i.isFolder && !this.#retentionService.getRetentionState(i).underRetention);\n }\n\n run(selection: DmsObject[]): Observable<boolean> {\n this.#dialog.open(ApplyTemplateComponent, {\n width: '400px',\n maxWidth: '90vw',\n data: selection[0],\n });\n return of(true);\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { ApiBase, BackendService, CoreApiObject, CoreApiResponse, DmsObject, DmsService, EventService, SearchResponse, YuvEventType } from '@yuuvis/client-core';\nimport { ActionsService } from '@yuuvis/client-framework/actions';\nimport { ClientShellExtension } from '@yuuvis/client-shell-core';\nimport { map, Observable, of, switchMap, tap } from 'rxjs';\nimport { APP_ACTIONS, TemplateObject, TemplateSearchResponse } from '@yuuvis/app-templates/shared';\nimport { ApplyTemplateAction } from './actions/apply.action';\n\n@Injectable()\nexport class YuvTemplatesExtension implements ClientShellExtension {\n static MAX_TEMPLATES = 20;\n\n readonly #actions = [\n { id: APP_ACTIONS.apply, action: ApplyTemplateAction }\n ];\n\n readonly #actionsService = inject(ActionsService);\n readonly #backendService = inject(BackendService);\n readonly #dmsService = inject(DmsService);\n readonly #eventService = inject(EventService);\n \n init(): Promise<any> {\n this.#actionsService.registerActions(this.#actions);\n return Promise.resolve();\n }\n\n getTemplatesForObject(object: DmsObject, pageNumber = 0): Observable<TemplateSearchResponse> {\n let searchParams = new HttpParams()\n .set('page', 0)\n .set('size', YuvTemplatesExtension.MAX_TEMPLATES)\n .set('sort', 'name%2Casc')\n .set('published', true)\n .set('type', object.objectTypeId);\n\n object.sots.forEach((sot) => { \n searchParams = searchParams.append('type', sot)\n });\n\n return this.#backendService.get(`/template-service/api/objects/?${searchParams}`, ApiBase.none).pipe(\n map((res: SearchResponse) => ({\n pageNumber: pageNumber,\n pageSize: YuvTemplatesExtension.MAX_TEMPLATES,\n totalNumItems: res.totalNumItems,\n items: res.objects.map((obj: CoreApiObject) => new TemplateObject(obj))\n }))\n );\n }\n\n applyTemplateOnObject(templateRef: String, object: DmsObject, silent = false): Observable<DmsObject> {\n return this.#backendService.post(`/template-service/api/:createAndSaveDocument?templateRef=${templateRef}&targetObjectId=${object.id}`, { objectData: object.id }, ApiBase.none).pipe(\n map((res: CoreApiResponse) => {\n return this.#dmsService.coreApiResponseToDmsObject(res)\n })\n ).pipe(\n switchMap((res) => (!object.id ? of(res) : this.#dmsService.getDmsObject(object.id))),\n tap((res: any) => !silent && this.#eventService.trigger(YuvEventType.DMS_OBJECT_UPDATED, res))\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TranslateService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-app-templates-extensions.mjs","sources":["../../../../projects/yuuvis/app-templates/extensions/src/lib/actions/apply.component.ts","../../../../projects/yuuvis/app-templates/extensions/src/lib/actions/apply.component.html","../../../../projects/yuuvis/app-templates/extensions/src/lib/actions/apply.action.ts","../../../../projects/yuuvis/app-templates/extensions/src/lib/extensions.service.ts","../../../../projects/yuuvis/app-templates/extensions/src/yuuvis-app-templates-extensions.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, input, signal, untracked } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DmsObject, NotificationService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { BusyOverlayDirective, DialogComponent } from '@yuuvis/client-framework/common';\nimport { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';\nimport { finalize } from 'rxjs';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { APP_ICONS, TemplateObject, TemplateSearchResponse } from '@yuuvis/app-templates/shared';\nimport { YuvTemplatesExtension } from './../extensions.service';\n\nconst components = [\n BusyOverlayDirective,\n ListComponent,\n ListItemDirective,\n DialogComponent,\n YmtButtonDirective\n];\n\nconst modules = [\n CommonModule,\n TranslateModule,\n MatIconModule,\n MatProgressBarModule,\n];\n\n@Component({\n selector: 'ymtmpl-apply',\n templateUrl: './apply.component.html',\n styleUrls: ['./apply.component.scss'],\n standalone: true,\n imports: [...modules, ...components]\n})\nexport class ApplyTemplateComponent {\n\n readonly #extension = inject(YuvTemplatesExtension);\n readonly #notificationService = inject(NotificationService);\n readonly #translateService = inject(TranslateService);\n\n #dialogData = inject<DmsObject>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<ApplyTemplateComponent>);\n\n dmsObject = input<DmsObject>(this.#dialogData);\n\n #dmsObjectEffect = effect(() => {\n if (this.dmsObject())\n untracked(() => {\n this.#init()\n });\n });\n\n supportedTemplates = signal<TemplateObject[]>([]);\n\n selectedTemplate = signal<TemplateObject | undefined>(undefined);\n\n busy = signal<boolean>(false);\n\n error = signal<boolean>(false);\n\n icons = {\n ...APP_ICONS\n };\n\n #init() {\n this.busy.set(true)\n this.#extension.getTemplatesForObject(this.dmsObject())\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (res: TemplateSearchResponse) => {\n this.error.set(false);\n this.supportedTemplates.set(res.items);\n },\n error: () => {\n this.error.set(true);\n }\n });\n }\n\n onItemSelect(idx: number[]) {\n this.selectedTemplate.set(this.supportedTemplates()[idx[0]]);\n }\n\n cancel() {\n this.#dialogRef.close();\n }\n \n apply() {\n this.busy.set(true)\n this.#extension.applyTemplateOnObject(`obj:${this.selectedTemplate()?.id}`, this.dmsObject()).subscribe({\n next: () => {\n this.#notificationService.success(this.#translateService.instant('yuv.app.templates.action.apply.success'));\n },\n error: (err: any) => {\n this.#notificationService.error(err);\n this.busy.set(false);\n },\n complete: () => {\n this.#dialogRef.close();\n }\n });\n }\n} \n","<yuv-dialog [headertitel]=\"'yuv.app.templates.action.apply.headline' | translate\">\n <main [yuvBusyOverlay]=\"busy()\">\n @let templates = supportedTemplates(); @if (templates.length) {\n <p>{{ \"yuv.app.templates.action.apply.text\" | translate }}</p>\n <yuv-list selectOnEnter=\"true\" (itemSelect)=\"onItemSelect($event)\">\n @for (t of templates; track $index) {\n <div yuvListItem>\n <mat-icon class=\"icon\">{{ icons.actionApplyTemplate }}</mat-icon>\n <div class=\"name\">{{ t.name }}</div>\n <div class=\"description\">{{ t.description }}</div>\n </div>\n }\n </yuv-list>\n } @else if (!busy()) { @if (!error()) {\n <div class=\"hint empty\">\n <p>{{ \"yuv.app.templates.action.apply.list.empty\" | translate }}</p>\n </div>\n } @else {\n <div class=\"hint error\">\n <p>{{ \"yuv.app.templates.action.apply.error\" | translate }}</p>\n </div>\n } }\n </main>\n <footer>\n <button [disabled]=\"busy()\" type=\"button\" ymtButton=\"secondary\" (click)=\"cancel()\">{{ \"yuv.app.templates.action.apply.button.cancel\" | translate }}</button>\n <button [disabled]=\"busy() || error() || !selectedTemplate()\" ymtButton=\"primary\" (click)=\"apply()\">{{ \"yuv.app.templates.action.apply.button.ok\" | translate }}</button>\n </footer>\n</yuv-dialog>\n","import { inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DmsObject, RetentionService, SystemType } from '@yuuvis/client-core';\nimport {\n AbstractContextAction,\n Action,\n ActionSupport,\n SelectionRange,\n} from '@yuuvis/client-framework/actions';\nimport { Observable, of } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { APP_ACTIONS, APP_ICONS } from '@yuuvis/app-templates/shared';\nimport { ApplyTemplateComponent } from './apply.component';\n\nexport class ApplyTemplateAction\n extends AbstractContextAction\n implements Action\n{\n readonly #translateService = inject(TranslateService);\n readonly #retentionService = inject(RetentionService);\n #dialog = inject(MatDialog);\n\n id = APP_ACTIONS.apply;\n label = this.#translateService.instant(\n 'yuv.app.templates.action.apply.label'\n );\n description = this.#translateService.instant(\n 'yuv.app.templates.action.apply.description'\n );\n icon = APP_ICONS.actionApplyTemplate;\n group = 'common';\n priority = 0;\n range = SelectionRange.SINGLE_SELECT;\n supports: ActionSupport = {\n types: [SystemType.DOCUMENT],\n };\n\n isExecutable(selection: DmsObject[]) {\n const i = selection[0];\n return of(i && selection.length === 1 && !!i?.permissions?.writeContent && !i.isFolder && !this.#retentionService.getRetentionState(i).underRetention);\n }\n\n run(selection: DmsObject[]): Observable<boolean> {\n this.#dialog.open(ApplyTemplateComponent, {\n width: '400px',\n maxWidth: '90vw',\n data: selection[0],\n });\n return of(true);\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { ApiBase, BackendService, CoreApiObject, CoreApiResponse, DmsObject, DmsService, EventService, SearchResponse, YuvEventType } from '@yuuvis/client-core';\nimport { ActionsService } from '@yuuvis/client-framework/actions';\nimport { ClientShellExtension } from '@yuuvis/client-shell-core';\nimport { map, Observable, of, switchMap, tap } from 'rxjs';\nimport { APP_ACTIONS, TemplateObject, TemplateSearchResponse } from '@yuuvis/app-templates/shared';\nimport { ApplyTemplateAction } from './actions/apply.action';\n\n@Injectable()\nexport class YuvTemplatesExtension implements ClientShellExtension {\n static MAX_TEMPLATES = 20;\n\n readonly #actions = [\n { id: APP_ACTIONS.apply, action: ApplyTemplateAction }\n ];\n\n readonly #actionsService = inject(ActionsService);\n readonly #backendService = inject(BackendService);\n readonly #dmsService = inject(DmsService);\n readonly #eventService = inject(EventService);\n \n init(): Promise<any> {\n this.#actionsService.registerActions(this.#actions);\n return Promise.resolve();\n }\n\n getTemplatesForObject(object: DmsObject, pageNumber = 0): Observable<TemplateSearchResponse> {\n let searchParams = new HttpParams()\n .set('page', 0)\n .set('size', YuvTemplatesExtension.MAX_TEMPLATES)\n .set('sort', 'name%2Casc')\n .set('published', true)\n .set('type', object.objectTypeId);\n\n object.sots.forEach((sot) => { \n searchParams = searchParams.append('type', sot)\n });\n\n return this.#backendService.get(`/template-service/api/objects/?${searchParams}`, ApiBase.none).pipe(\n map((res: SearchResponse) => ({\n pageNumber: pageNumber,\n pageSize: YuvTemplatesExtension.MAX_TEMPLATES,\n totalNumItems: res.totalNumItems,\n items: res.objects.map((obj: CoreApiObject) => new TemplateObject(obj))\n }))\n );\n }\n\n applyTemplateOnObject(templateRef: String, object: DmsObject, silent = false): Observable<DmsObject> {\n return this.#backendService.post(`/template-service/api/:createAndSaveDocument?templateRef=${templateRef}&targetObjectId=${object.id}`, { objectData: object.id }, ApiBase.none).pipe(\n map((res: CoreApiResponse) => {\n return this.#dmsService.coreApiResponseToDmsObject(res)\n })\n ).pipe(\n switchMap((res) => (!object.id ? of(res) : this.#dmsService.getDmsObject(object.id))),\n tap((res: any) => !silent && this.#eventService.trigger(YuvEventType.DMS_OBJECT_UPDATED, res))\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TranslateService"],"mappings":"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"}
|
|
@@ -614,13 +614,13 @@ class TemplateManagementComponent {
|
|
|
614
614
|
this.#templateService.refreshTemplates();
|
|
615
615
|
}
|
|
616
616
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TemplateManagementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
617
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TemplateManagementComponent, isStandalone: true, selector: "ymtmpl-templates-management", host: { attributes: { "class.smallScreen": "smallScreenLayout()" }, properties: { "class.pagination": "this.pagination" } }, ngImport: i0, template: "<header>\n <nav [attr.aria-label]=\"'yuv.app.templates.naviagtion.aria.label' | translate\">\n <div class=\"primary-actions\">\n <button mat-mini-fab (click)=\"createNewTemplate()\" [matTooltip]=\"'yuv.app.templates.action.create.label' | translate\">\n <mat-icon>{{icons.actionCreateNewTemplate}}</mat-icon> \n </button>\n </div>\n <div class=\"template-actions\">\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n </div>\n <div class=\"secondary-actions\">\n @if (!smallScreenLayout()) {\n <button mat-icon-button (click)=\"enableDetails.set(!enableDetails())\" [matTooltip]=\"'yuv.app.templates.toggledetails.tooltip' | translate\" [ngClass]=\"{ enabled: enableDetails() }\">\n <mat-icon>{{icons.toggleRight}}</mat-icon>\n </button>\n }\n </div>\n </nav>\n</header>\n\n<main>\n <yuv-master-details\n [gutterSize]=\"1\"\n [detailsActive]=\"!smallScreenLayout() && enableDetails()\"\n [layoutOptions]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\"\n [mode]=\"smallScreenLayout() ? 'ontop' : 'aside'\">\n \n <ng-template #yuvMasterPane>\n <div class=\"masterPaneContainer\">\n @let templateObjects = (templates$ | async)?.items;\n @if (templateObjects?.length) {\n <yuv-list (itemSelect)=\"onItemSelect($event)\">\n @for (t of templateObjects; track t.id) {\n <div class=\"item\" [ngClass]=\"[t.published ? 'public' : '']\" yuvListItem [style.--i]=\"$index\">\n <mat-icon class=\"icon\">{{t.published ? 'export_notes' : 'article'}}</mat-icon>\n <div class=\"name\">{{ t.name }}</div>\n <div class=\"description\">{{ t.description }}</div>\n <div class=\"id\">{{ t.id.toUpperCase( ) }}</div>\n <div class=\"dataObjectType\">{{ t.dataObjectType }}</div> \n </div>\n }\n </yuv-list>\n @if (pagination) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pagination.total\"\n [pageSize]=\"getPageSize()\"\n aria-label=\"Select page\"\n (page)=\"changePage($event)\"\n hidePageSize>\n </mat-paginator>\n }\n } @else {\n <div class=\"empty\">\n <p>{{ 'yuv.app.templates.list.empty' | translate }}</p>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #yuvDetailsPane>\n <div class=\"detailsPaneContainer\">\n @let dmsObject = selectedDmsObject();\n @if (dmsObject) {\n @if (smallScreenLayout()) {\n <div class=\"toolbar\">\n <button (click)=\"selectedTemplate.set(undefined)\"> \n <mat-icon>{{icons.close}}</mat-icon> \n </button>\n </div>\n }\n <ymtmpl-template-details [dmsObject]=\"dmsObject\"></ymtmpl-template-details>\n } @else {\n <div class=\"nothing-selected\">\n <h2>{{ 'yuv.app.templates.list.selection.empty' | translate }}</h2>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17.35 10L15.25 19H13.85L12.05 12.21L10.25 19H8.85L6.65 10H8.15L9.55 16.81L11.35 10H12.65L14.45 16.81L15.85 10H17.35Z\" /></svg>\n </div>\n }\n </div>\n </ng-template>\n\n </yuv-master-details>\n</main>\n\n<router-outlet name=\"modal\"></router-outlet>", styles: [":host{--split-gutter-background-color: var(--ymt-outline-variant);display:flex;overflow:hidden;flex-flow:column;box-sizing:border-box;height:100%}:host header>nav{flex:0 0 auto;display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:\"primary actions sort secondary\";align-items:center;gap:var(--ymt-spacing-s);border-block-end:1px solid var(--ymt-outline-variant);position:relative;padding:var(--ymt-spacing-xs) var(--ymt-spacing-s)}:host header>nav .primary-actions{grid-area:primary;overflow-x:auto}:host header>nav .secondary-actions{grid-area:secondary;overflow-x:auto}:host header>nav .template-actions{grid-area:actions;align-self:stretch;overflow-x:auto;border-color:var(--ymt-outline-variant);border-width:0 1px 0 1px;border-style:solid;display:grid;grid-template-rows:1fr;grid-template-columns:1fr;align-items:center}:host main{overflow:hidden;background-color:var(--ymt-surface);height:100%}:host yuv-master-details{height:100%}:host yuv-master-details .masterPaneContainer{display:flex;flex-direction:column;height:100%;overflow:hidden}:host yuv-master-details .masterPaneContainer yuv-list{height:100%}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem]{--icon-size: 32px;--list-item-hover-background: var(--ymt-focus-background);display:grid;padding:var(--ymt-spacing-s) var(--ymt-spacing-s);border-block-end:1px solid var(--ymt-outline-variant);align-items:center;grid-template-columns:var(--icon-size) 1fr auto;grid-template-rows:repeat(2,auto);grid-template-areas:\"icon name name\" \"icon description description\" \"icon id dataObjectType\";column-gap:var(--ymt-spacing-s);row-gap:var(--ymt-spacing-s);cursor:pointer}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .icon{grid-area:icon;color:var(--ymt-text-color-subtle)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .id{grid-area:id;color:var(--ymt-text-color-subtle);font:var(--ymt-font-body-subtle)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .name{grid-area:name;color:var(--ymt-text-color-body);font:var(--ymt-font-body)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .description{grid-area:description;color:var(--ymt-text-color-subtle);font:var(--ymt-font-body)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .dataObjectType{grid-area:dataObjectType;color:var(--ymt-text-color-subtle);font:var(--ymt-font-body-subtle)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem]:not(:last-child){border-block-end:1px solid var(--ymt-outline-variant)}:host yuv-master-details .masterPaneContainer .paginator{font:inherit;border-block-start:1px solid var(--ymt-outline-variant);background-color:var(--ymt-surface-panel)}:host yuv-master-details .detailsPaneContainer{display:flex;flex-direction:column;height:100%;overflow:hidden}:host yuv-master-details .detailsPaneContainer ymtmpl-template-details{height:100%}:host yuv-master-details .detailsPaneContainer .toolbar{flex:0 0 auto}:host yuv-master-details .detailsPaneContainer .nothing-selected{display:flex;flex-flow:column;justify-content:center;align-items:center;height:100%}:host yuv-master-details .detailsPaneContainer .nothing-selected svg{width:150px;height:150px;opacity:.5;fill:var(--ymt-text-color-subtle)}:host.smallScreen{--border-radius: 0}:host.smallScreen yuv-master-details{padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: YuvOverflowMenuModule }, { kind: "component", type: i4$1.OverflowMenuComponent, selector: "yuv-overflow-menu", inputs: ["overflowIcon", "groupLabels", "menuItems", "vertical"] }, { kind: "ngmodule", type: YuvMasterDetailsModule }, { kind: "component", type: i5.YuvMasterDetailsComponent, selector: "yuv-master-details", inputs: ["detailsActive", "layoutSettingsID", "layoutOptions", "undockableDetails", "panelStyle", "gutterSize", "mode"], outputs: ["detailsActiveChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["multiselect", "selfHandleSelection", "autoSelect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "component", type: TemplateDetailsComponent, selector: "ymtmpl-template-details", inputs: ["dmsObject"] }] }); }
|
|
617
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TemplateManagementComponent, isStandalone: true, selector: "ymtmpl-templates-management", host: { attributes: { "class.smallScreen": "smallScreenLayout()" }, properties: { "class.pagination": "this.pagination" } }, ngImport: i0, template: "<header>\n <nav [attr.aria-label]=\"'yuv.app.templates.naviagtion.aria.label' | translate\">\n <div class=\"primary-actions\">\n <button mat-mini-fab (click)=\"createNewTemplate()\" [matTooltip]=\"'yuv.app.templates.action.create.label' | translate\">\n <mat-icon>{{icons.actionCreateNewTemplate}}</mat-icon> \n </button>\n </div>\n <div class=\"template-actions\">\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n </div>\n <div class=\"secondary-actions\">\n @if (!smallScreenLayout()) {\n <button mat-icon-button (click)=\"enableDetails.set(!enableDetails())\" [matTooltip]=\"'yuv.app.templates.toggledetails.tooltip' | translate\" [ngClass]=\"{ enabled: enableDetails() }\">\n <mat-icon>{{icons.toggleRight}}</mat-icon>\n </button>\n }\n </div>\n </nav>\n</header>\n\n<main>\n <yuv-master-details\n [gutterSize]=\"1\"\n [detailsActive]=\"!smallScreenLayout() && enableDetails()\"\n [layoutOptions]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n \n <ng-template #yuvMasterPane>\n <div class=\"masterPaneContainer\">\n @let templateObjects = (templates$ | async)?.items;\n @if (templateObjects?.length) {\n <yuv-list (itemSelect)=\"onItemSelect($event)\">\n @for (t of templateObjects; track t.id) {\n <div class=\"item\" [ngClass]=\"[t.published ? 'public' : '']\" yuvListItem [style.--i]=\"$index\">\n <mat-icon class=\"icon\">{{t.published ? 'export_notes' : 'article'}}</mat-icon>\n <div class=\"name\">{{ t.name }}</div>\n <div class=\"description\">{{ t.description }}</div>\n <div class=\"id\">{{ t.id.toUpperCase( ) }}</div>\n <div class=\"dataObjectType\">{{ t.dataObjectType }}</div> \n </div>\n }\n </yuv-list>\n @if (pagination) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pagination.total\"\n [pageSize]=\"getPageSize()\"\n aria-label=\"Select page\"\n (page)=\"changePage($event)\"\n hidePageSize>\n </mat-paginator>\n }\n } @else {\n <div class=\"empty\">\n <p>{{ 'yuv.app.templates.list.empty' | translate }}</p>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #yuvDetailsPane>\n <div class=\"detailsPaneContainer\">\n @let dmsObject = selectedDmsObject();\n @if (dmsObject) {\n @if (smallScreenLayout()) {\n <div class=\"toolbar\">\n <button (click)=\"selectedTemplate.set(undefined)\"> \n <mat-icon>{{icons.close}}</mat-icon> \n </button>\n </div>\n }\n <ymtmpl-template-details [dmsObject]=\"dmsObject\"></ymtmpl-template-details>\n } @else {\n <div class=\"nothing-selected\">\n <h2>{{ 'yuv.app.templates.list.selection.empty' | translate }}</h2>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17.35 10L15.25 19H13.85L12.05 12.21L10.25 19H8.85L6.65 10H8.15L9.55 16.81L11.35 10H12.65L14.45 16.81L15.85 10H17.35Z\" /></svg>\n </div>\n }\n </div>\n </ng-template>\n\n </yuv-master-details>\n</main>\n\n<router-outlet name=\"modal\"></router-outlet>", styles: [":host{--split-gutter-background-color: var(--ymt-outline-variant);display:flex;overflow:hidden;flex-flow:column;box-sizing:border-box;height:100%}:host header>nav{flex:0 0 auto;display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:\"primary actions sort secondary\";align-items:center;gap:var(--ymt-spacing-s);border-block-end:1px solid var(--ymt-outline-variant);position:relative;padding:var(--ymt-spacing-xs) var(--ymt-spacing-s)}:host header>nav .primary-actions{grid-area:primary;overflow-x:auto}:host header>nav .secondary-actions{grid-area:secondary;overflow-x:auto}:host header>nav .template-actions{grid-area:actions;align-self:stretch;overflow-x:auto;border-color:var(--ymt-outline-variant);border-width:0 1px 0 1px;border-style:solid;display:grid;grid-template-rows:1fr;grid-template-columns:1fr;align-items:center}:host main{overflow:hidden;background-color:var(--ymt-surface);height:100%}:host yuv-master-details{height:100%}:host yuv-master-details .masterPaneContainer{display:flex;flex-direction:column;height:100%;overflow:hidden}:host yuv-master-details .masterPaneContainer yuv-list{height:100%}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem]{--icon-size: 32px;--list-item-hover-background: var(--ymt-focus-background);display:grid;padding:var(--ymt-spacing-s) var(--ymt-spacing-s);border-block-end:1px solid var(--ymt-outline-variant);align-items:center;grid-template-columns:var(--icon-size) 1fr auto;grid-template-rows:repeat(2,auto);grid-template-areas:\"icon name name\" \"icon description description\" \"icon id dataObjectType\";column-gap:var(--ymt-spacing-s);row-gap:var(--ymt-spacing-s);cursor:pointer}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .icon{grid-area:icon;color:var(--ymt-text-color-subtle)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .id{grid-area:id;color:var(--ymt-text-color-subtle);font:var(--ymt-font-body-subtle)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .name{grid-area:name;color:var(--ymt-text-color-body);font:var(--ymt-font-body)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .description{grid-area:description;color:var(--ymt-text-color-subtle);font:var(--ymt-font-body)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .dataObjectType{grid-area:dataObjectType;color:var(--ymt-text-color-subtle);font:var(--ymt-font-body-subtle)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem]:not(:last-child){border-block-end:1px solid var(--ymt-outline-variant)}:host yuv-master-details .masterPaneContainer .paginator{font:inherit;border-block-start:1px solid var(--ymt-outline-variant);background-color:var(--ymt-surface-panel)}:host yuv-master-details .detailsPaneContainer{display:flex;flex-direction:column;height:100%;overflow:hidden}:host yuv-master-details .detailsPaneContainer ymtmpl-template-details{height:100%}:host yuv-master-details .detailsPaneContainer .toolbar{flex:0 0 auto}:host yuv-master-details .detailsPaneContainer .nothing-selected{display:flex;flex-flow:column;justify-content:center;align-items:center;height:100%}:host yuv-master-details .detailsPaneContainer .nothing-selected svg{width:150px;height:150px;opacity:.5;fill:var(--ymt-text-color-subtle)}:host.smallScreen{--border-radius: 0}:host.smallScreen yuv-master-details{padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: YuvOverflowMenuModule }, { kind: "component", type: i4$1.OverflowMenuComponent, selector: "yuv-overflow-menu", inputs: ["overflowIcon", "groupLabels", "menuItems", "vertical"] }, { kind: "ngmodule", type: YuvMasterDetailsModule }, { kind: "component", type: i5.YuvMasterDetailsComponent, selector: "yuv-master-details", inputs: ["detailsActive", "layoutSettingsID", "layoutOptions", "undockableDetails", "panelStyle", "gutterSize"], outputs: ["detailsActiveChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["preventChangeUntil", "multiselect", "selfHandleSelection", "autoSelect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "component", type: TemplateDetailsComponent, selector: "ymtmpl-template-details", inputs: ["dmsObject"] }] }); }
|
|
618
618
|
}
|
|
619
619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TemplateManagementComponent, decorators: [{
|
|
620
620
|
type: Component,
|
|
621
621
|
args: [{ selector: 'ymtmpl-templates-management', standalone: true, imports: [...modules, ...components], host: {
|
|
622
622
|
'class.smallScreen': 'smallScreenLayout()',
|
|
623
|
-
}, template: "<header>\n <nav [attr.aria-label]=\"'yuv.app.templates.naviagtion.aria.label' | translate\">\n <div class=\"primary-actions\">\n <button mat-mini-fab (click)=\"createNewTemplate()\" [matTooltip]=\"'yuv.app.templates.action.create.label' | translate\">\n <mat-icon>{{icons.actionCreateNewTemplate}}</mat-icon> \n </button>\n </div>\n <div class=\"template-actions\">\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n </div>\n <div class=\"secondary-actions\">\n @if (!smallScreenLayout()) {\n <button mat-icon-button (click)=\"enableDetails.set(!enableDetails())\" [matTooltip]=\"'yuv.app.templates.toggledetails.tooltip' | translate\" [ngClass]=\"{ enabled: enableDetails() }\">\n <mat-icon>{{icons.toggleRight}}</mat-icon>\n </button>\n }\n </div>\n </nav>\n</header>\n\n<main>\n <yuv-master-details\n [gutterSize]=\"1\"\n [detailsActive]=\"!smallScreenLayout() && enableDetails()\"\n [layoutOptions]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\"
|
|
623
|
+
}, template: "<header>\n <nav [attr.aria-label]=\"'yuv.app.templates.naviagtion.aria.label' | translate\">\n <div class=\"primary-actions\">\n <button mat-mini-fab (click)=\"createNewTemplate()\" [matTooltip]=\"'yuv.app.templates.action.create.label' | translate\">\n <mat-icon>{{icons.actionCreateNewTemplate}}</mat-icon> \n </button>\n </div>\n <div class=\"template-actions\">\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n </div>\n <div class=\"secondary-actions\">\n @if (!smallScreenLayout()) {\n <button mat-icon-button (click)=\"enableDetails.set(!enableDetails())\" [matTooltip]=\"'yuv.app.templates.toggledetails.tooltip' | translate\" [ngClass]=\"{ enabled: enableDetails() }\">\n <mat-icon>{{icons.toggleRight}}</mat-icon>\n </button>\n }\n </div>\n </nav>\n</header>\n\n<main>\n <yuv-master-details\n [gutterSize]=\"1\"\n [detailsActive]=\"!smallScreenLayout() && enableDetails()\"\n [layoutOptions]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n \n <ng-template #yuvMasterPane>\n <div class=\"masterPaneContainer\">\n @let templateObjects = (templates$ | async)?.items;\n @if (templateObjects?.length) {\n <yuv-list (itemSelect)=\"onItemSelect($event)\">\n @for (t of templateObjects; track t.id) {\n <div class=\"item\" [ngClass]=\"[t.published ? 'public' : '']\" yuvListItem [style.--i]=\"$index\">\n <mat-icon class=\"icon\">{{t.published ? 'export_notes' : 'article'}}</mat-icon>\n <div class=\"name\">{{ t.name }}</div>\n <div class=\"description\">{{ t.description }}</div>\n <div class=\"id\">{{ t.id.toUpperCase( ) }}</div>\n <div class=\"dataObjectType\">{{ t.dataObjectType }}</div> \n </div>\n }\n </yuv-list>\n @if (pagination) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pagination.total\"\n [pageSize]=\"getPageSize()\"\n aria-label=\"Select page\"\n (page)=\"changePage($event)\"\n hidePageSize>\n </mat-paginator>\n }\n } @else {\n <div class=\"empty\">\n <p>{{ 'yuv.app.templates.list.empty' | translate }}</p>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #yuvDetailsPane>\n <div class=\"detailsPaneContainer\">\n @let dmsObject = selectedDmsObject();\n @if (dmsObject) {\n @if (smallScreenLayout()) {\n <div class=\"toolbar\">\n <button (click)=\"selectedTemplate.set(undefined)\"> \n <mat-icon>{{icons.close}}</mat-icon> \n </button>\n </div>\n }\n <ymtmpl-template-details [dmsObject]=\"dmsObject\"></ymtmpl-template-details>\n } @else {\n <div class=\"nothing-selected\">\n <h2>{{ 'yuv.app.templates.list.selection.empty' | translate }}</h2>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17.35 10L15.25 19H13.85L12.05 12.21L10.25 19H8.85L6.65 10H8.15L9.55 16.81L11.35 10H12.65L14.45 16.81L15.85 10H17.35Z\" /></svg>\n </div>\n }\n </div>\n </ng-template>\n\n </yuv-master-details>\n</main>\n\n<router-outlet name=\"modal\"></router-outlet>", styles: [":host{--split-gutter-background-color: var(--ymt-outline-variant);display:flex;overflow:hidden;flex-flow:column;box-sizing:border-box;height:100%}:host header>nav{flex:0 0 auto;display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:\"primary actions sort secondary\";align-items:center;gap:var(--ymt-spacing-s);border-block-end:1px solid var(--ymt-outline-variant);position:relative;padding:var(--ymt-spacing-xs) var(--ymt-spacing-s)}:host header>nav .primary-actions{grid-area:primary;overflow-x:auto}:host header>nav .secondary-actions{grid-area:secondary;overflow-x:auto}:host header>nav .template-actions{grid-area:actions;align-self:stretch;overflow-x:auto;border-color:var(--ymt-outline-variant);border-width:0 1px 0 1px;border-style:solid;display:grid;grid-template-rows:1fr;grid-template-columns:1fr;align-items:center}:host main{overflow:hidden;background-color:var(--ymt-surface);height:100%}:host yuv-master-details{height:100%}:host yuv-master-details .masterPaneContainer{display:flex;flex-direction:column;height:100%;overflow:hidden}:host yuv-master-details .masterPaneContainer yuv-list{height:100%}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem]{--icon-size: 32px;--list-item-hover-background: var(--ymt-focus-background);display:grid;padding:var(--ymt-spacing-s) var(--ymt-spacing-s);border-block-end:1px solid var(--ymt-outline-variant);align-items:center;grid-template-columns:var(--icon-size) 1fr auto;grid-template-rows:repeat(2,auto);grid-template-areas:\"icon name name\" \"icon description description\" \"icon id dataObjectType\";column-gap:var(--ymt-spacing-s);row-gap:var(--ymt-spacing-s);cursor:pointer}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .icon{grid-area:icon;color:var(--ymt-text-color-subtle)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .id{grid-area:id;color:var(--ymt-text-color-subtle);font:var(--ymt-font-body-subtle)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .name{grid-area:name;color:var(--ymt-text-color-body);font:var(--ymt-font-body)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .description{grid-area:description;color:var(--ymt-text-color-subtle);font:var(--ymt-font-body)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem] .dataObjectType{grid-area:dataObjectType;color:var(--ymt-text-color-subtle);font:var(--ymt-font-body-subtle)}:host yuv-master-details .masterPaneContainer yuv-list [yuvListItem]:not(:last-child){border-block-end:1px solid var(--ymt-outline-variant)}:host yuv-master-details .masterPaneContainer .paginator{font:inherit;border-block-start:1px solid var(--ymt-outline-variant);background-color:var(--ymt-surface-panel)}:host yuv-master-details .detailsPaneContainer{display:flex;flex-direction:column;height:100%;overflow:hidden}:host yuv-master-details .detailsPaneContainer ymtmpl-template-details{height:100%}:host yuv-master-details .detailsPaneContainer .toolbar{flex:0 0 auto}:host yuv-master-details .detailsPaneContainer .nothing-selected{display:flex;flex-flow:column;justify-content:center;align-items:center;height:100%}:host yuv-master-details .detailsPaneContainer .nothing-selected svg{width:150px;height:150px;opacity:.5;fill:var(--ymt-text-color-subtle)}:host.smallScreen{--border-radius: 0}:host.smallScreen yuv-master-details{padding:0}\n"] }]
|
|
624
624
|
}], ctorParameters: () => [], propDecorators: { pagination: [{
|
|
625
625
|
type: HostBinding,
|
|
626
626
|
args: ['class.pagination']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-app-templates.mjs","sources":["../../../../projects/yuuvis/app-templates/src/lib/app-templates.service.ts","../../../../projects/yuuvis/app-templates/src/lib/app-templates.component.ts","../../../../projects/yuuvis/app-templates/src/lib/components/template-details/template-details.component.ts","../../../../projects/yuuvis/app-templates/src/lib/components/template-details/template-details.component.html","../../../../projects/yuuvis/app-templates/src/lib/overlays/create-template/create-template.component.ts","../../../../projects/yuuvis/app-templates/src/lib/overlays/create-template/create-template.component.html","../../../../projects/yuuvis/app-templates/src/lib/overlays/edit-template/edit-template.component.ts","../../../../projects/yuuvis/app-templates/src/lib/overlays/edit-template/edit-template.component.html","../../../../projects/yuuvis/app-templates/src/lib/pages/management/template-management.component.ts","../../../../projects/yuuvis/app-templates/src/lib/pages/management/template-management.component.html","../../../../projects/yuuvis/app-templates/src/lib/lib.routes.ts","../../../../projects/yuuvis/app-templates/src/yuuvis-app-templates.ts"],"sourcesContent":["import { HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { inject, Injectable, signal } from '@angular/core';\nimport {\n ApiBase,\n BackendService,\n ContentStreamAllowed,\n CoreApiObject,\n DmsService,\n GenericObjectType,\n Logger,\n SearchResponse,\n SystemService,\n TranslateService,\n} from '@yuuvis/client-core';\nimport {\n catchError,\n map,\n Observable,\n of,\n ReplaySubject,\n switchMap,\n tap,\n throwError,\n} from 'rxjs';\nimport {\n TEMPLATE_FILE_MIME_TYPE,\n TemplateObject,\n TemplateSearchResponse,\n} from '@yuuvis/app-templates/shared';\n\nimport { ConfirmService } from '@yuuvis/client-framework/common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TemplateService {\n static PAGE_SIZE = 20;\n\n readonly #logger = inject(Logger);\n\n readonly #backendService = inject(BackendService);\n readonly #dmsService = inject(DmsService);\n readonly #confirmService = inject(ConfirmService);\n readonly #translateService = inject(TranslateService);\n readonly #systemService = inject(SystemService)\n\n private templates?: TemplateSearchResponse;\n\n private templatesDataSource = new ReplaySubject<TemplateSearchResponse>(1);\n public templates$: Observable<TemplateSearchResponse> =\n this.templatesDataSource.asObservable();\n\n private busyDataSource = signal<boolean>(false);\n public busy$ = this.busyDataSource.asReadonly();\n\n constructor() {}\n\n getAvailableDataObjectTypes(): GenericObjectType[] {\n return this.#systemService.getObjectTypes().filter((ot) => !ot.isFolder && ot.contentStreamAllowed !== ContentStreamAllowed.NOT_ALLOWED);\n }\n\n getPage(page?: number) {\n this.busyDataSource.set(true);\n\n this.#fetchTemplates(page)\n .subscribe({\n next: (res: TemplateSearchResponse) => {\n this.templates = res;\n this.templatesDataSource.next(this.templates);\n },\n error: (e: any) => {\n this.#logger.error('Failed to fetch templates', e);\n },\n })\n .add(() => this.busyDataSource.set(false));\n }\n\n createTemplate(\n name: string,\n description: string,\n dataObjectType: string\n ): Observable<TemplateObject> {\n let requestParams = {\n name: name,\n description: description,\n dataObjects: { objectData: dataObjectType }\n };\n\n return this.#backendService\n .post(`/template-service/api/objects/`, requestParams, ApiBase.none)\n .pipe(\n catchError((e: HttpErrorResponse) => {\n this.#logger.error('Failed to create template', e);\n return throwError(() => new Error(e.message));\n }),\n map((res: CoreApiObject) => new TemplateObject(res)\n )\n );\n }\n\n downloadTemplateContent(template: TemplateObject): void {\n return this.#backendService.download(\n this.#dmsService.getContentPath(template.id, undefined)\n );\n }\n\n replaceTemplateContent(\n template: TemplateObject,\n file: File\n ): Observable<any> {\n if (file.type != TEMPLATE_FILE_MIME_TYPE) {\n return throwError(\n () =>\n new Error(\n this.#translateService.instant(\n 'yuv.app.templates.action.replaceContent.error.unsupportedFileType'\n )\n )\n );\n }\n return this.#dmsService\n .uploadContent(template.id, file)\n .pipe(\n catchError((e: HttpErrorResponse) => {\n this.#logger.error('Failed to create template', e);\n return throwError(() => new Error(e.message));\n }),\n \n );\n }\n\n toggleTemplateState(template: TemplateObject): Observable<boolean> {\n let requestParams = {\n published: !template.published,\n };\n\n return this.#confirmService\n .confirm(\n template.published\n ? {\n title: this.#translateService.instant(\n 'yuv.app.templates.action.unpublish.label'\n ),\n message: this.#translateService.instant(\n 'yuv.app.templates.action.unpublish.confirm.message',\n { template: template.name }\n ),\n }\n : {\n title: this.#translateService.instant(\n 'yuv.app.templates.action.publish.label'\n ),\n message: this.#translateService.instant(\n 'yuv.app.templates.action.publish.confirm.message',\n { template: template.name }\n ),\n }\n )\n .pipe(\n switchMap((confirmed: boolean) => {\n if (confirmed) {\n return this.#backendService\n .patch(\n `/template-service/api/objects/${template.id}`,\n requestParams,\n ApiBase.none\n )\n .pipe(\n map(() => true),\n tap(() => this.refreshTemplates())\n );\n } else return of(false);\n })\n );\n }\n\n updateTemplateData(id: string, requestParams: any): Observable<boolean> {\n \n return this.#backendService\n .patch(\n `/template-service/api/objects/${id}`,\n requestParams,\n ApiBase.none\n )\n .pipe(\n map(() => true),\n tap(() => this.refreshTemplates())\n );\n }\n\n deleteTemplate(template: TemplateObject): Observable<boolean> {\n return this.#confirmService\n .confirm({\n title: this.#translateService.instant(\n 'yuv.app.templates.action.delete.label'\n ),\n message: template.published\n ? this.#translateService.instant(\n 'yuv.app.templates.action.delete.public.confirm.message',\n { template: template.name }\n )\n : this.#translateService.instant(\n 'yuv.app.templates.action.delete.confirm.message',\n { template: template.name }\n ),\n })\n .pipe(\n switchMap((confirmed: boolean) => {\n if (confirmed) {\n return this.#backendService\n .delete(`/dms/objects/${template.id}`, ApiBase.core)\n .pipe(\n map(() => true),\n tap(() => this.refreshTemplates())\n );\n } else return of(false);\n })\n );\n }\n\n refreshTemplates() {\n this.getPage(this.templates?.pageNumber);\n }\n\n #fetchTemplates(pageNumber = 0): Observable<TemplateSearchResponse> {\n let filterParams = new HttpParams()\n .set('page', pageNumber)\n .set('size', TemplateService.PAGE_SIZE)\n .set('sort', 'name%2Casc');\n\n return this.#backendService\n .get(`/template-service/api/objects/?${filterParams}`, ApiBase.none)\n .pipe(\n map((res: SearchResponse) => ({\n pageNumber: pageNumber,\n pageSize: TemplateService.PAGE_SIZE,\n totalNumItems: res.totalNumItems,\n items: res.objects.map(\n (obj: CoreApiObject) => new TemplateObject(obj)\n ),\n }))\n );\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@yuuvis/client-core';\nimport { ShellService } from '@yuuvis/client-shell-core';\n\nimport { APP_ID } from '@yuuvis/app-templates/shared';\n\n@Component({\n selector: 'ymtmpl-app-templates',\n standalone: true,\n imports: [CommonModule, TranslateModule, RouterModule],\n template: `<router-outlet></router-outlet>`,\n styleUrl: './app-templates.component.scss',\n})\nexport class YuvTemplatesComponent {\n #shell = inject(ShellService);\n \n #app = this.#shell.getApp(APP_ID);\n appName = this.#app?.title as string;\n appIcon = this.#app?.iconName;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { DmsObject} from '@yuuvis/client-core';\nconst components = [\n ObjectPreviewComponent\n];\n\nconst modules = [\n CommonModule\n];\n\n@Component({\n selector: 'ymtmpl-template-details',\n templateUrl: './template-details.component.html',\n styleUrls: ['./template-details.component.scss'],\n standalone: true,\n imports: [...modules, ...components]\n})\nexport class TemplateDetailsComponent {\n @Input() dmsObject!: DmsObject;\n}","<yuv-object-preview [dmsObject]=\"dmsObject\"></yuv-object-preview>","import { CommonModule } from '@angular/common';\nimport { Component, inject, linkedSignal, signal } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { GenericObjectType, TranslateModule } from '@yuuvis/client-core';\nimport { StringComponent } from '@yuuvis/client-framework/forms';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { TemplateService } from './../../app-templates.service';\nimport { BusyOverlayDirective, DialogComponent } from '@yuuvis/client-framework/common';\nimport { TemplateObject } from '@yuuvis/app-templates/shared';\n\nconst components = [BusyOverlayDirective, StringComponent, YmtButtonDirective, DialogComponent];\n\nconst modules = [\n CommonModule,\n ReactiveFormsModule,\n TranslateModule,\n MatFormFieldModule,\n MatSelectModule\n];\n\n@Component({\n selector: 'ymtmpl-create-template',\n templateUrl: './create-template.component.html',\n styleUrl: './create-template.component.scss',\n standalone: true,\n imports: [...modules, ...components],\n host: {\n '[class.busy]': '!busy()',\n },\n})\nexport class CreateTemplateComponent {\n readonly #fb = inject(FormBuilder);\n readonly #templateService = inject(TemplateService);\n readonly #dialogRef = inject(MatDialogRef<CreateTemplateComponent, TemplateObject>);\n\n busy = signal<boolean>(false);\n\n error = signal<string | undefined>(undefined);\n\n form: FormGroup = this.#fb.group({\n name: ['New template', Validators.required],\n description: [''],\n dataObjectType: ['system:document', Validators.required]\n });\n\n dataObjectTypes = signal<GenericObjectType[]>([]);\n\n changedInput = signal<any | undefined>(undefined);\n \n disabledSubmit = linkedSignal({\n source: this.changedInput,\n computation: () => {\n return this.busy() || this.form.invalid || !this.form.value.name;\n }\n });\n\n constructor() {\n this.#loadDataObjectTypes();\n }\n\n #loadDataObjectTypes() {\n this.dataObjectTypes.set(this.#templateService.getAvailableDataObjectTypes().sort((ot1, ot2) => ot1.id > ot2.id ? 1 : -1))\n }\n\n createTemplate() {\n let createdTemplate : TemplateObject;\n let createParams = this.form.value;\n\n this.busy.set(true);\n this.error.set(undefined);\n\n this.#templateService\n .createTemplate(\n createParams.name,\n createParams.description,\n createParams.dataObjectType\n )\n .subscribe({\n error: (e: any) => {\n this.error.set(e);\n this.busy.set(false);\n },\n next: (obj : TemplateObject) => {\n createdTemplate = obj;\n },\n complete: () => {\n this.#dialogRef.close(createdTemplate);\n },\n });\n }\n\n close() {\n this.#dialogRef.close();\n }\n\n ngAfterViewInit() {\n this.form.valueChanges.subscribe((value) => {\n this.changedInput.set(value);\n });\n }\n}\n","<yuv-dialog [yuvBusyOverlay]=\"busy()\" [headertitel]=\"'yuv.app.templates.action.create.headline' | translate\">\n <main class=\"yuv-dialog-content\">\n <form [formGroup]=\"form\">\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.name\" | translate }}</mat-label>\n <yuv-string [required]=\"true\" formControlName=\"name\"></yuv-string>\n </mat-form-field>\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.description\" | translate}}</mat-label>\n <yuv-string formControlName=\"description\"></yuv-string>\n </mat-form-field>\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.dataObjectType\" | translate}}</mat-label>\n <mat-select formControlName=\"dataObjectType\">\n @for (dataObjectType of dataObjectTypes(); track dataObjectType) {\n <mat-option [value]=\"dataObjectType.id\">{{ dataObjectType.id }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n @if (error()) {\n <p class=\"error\">{{ error() }}</p>\n }\n </form>\n </main>\n <footer>\n <button ymtButton=\"secondary\" [disabled]=\"busy()\" (click)=\"close()\">\n {{ \"yuv.app.templates.action.button.cancel\" | translate }}\n </button>\n <button ymtButton=\"primary\" [disabled]=\"disabledSubmit()\" (click)=\"createTemplate()\">\n {{ 'yuv.app.templates.action.button.create' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, linkedSignal, signal } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@yuuvis/client-core';\nimport { StringComponent } from '@yuuvis/client-framework/forms';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { TemplateService } from '../../app-templates.service';\nimport { BusyOverlayDirective, DialogComponent } from '@yuuvis/client-framework/common';\nimport { TemplateObject } from '@yuuvis/app-templates/shared';\n\nconst components = [BusyOverlayDirective, StringComponent, YmtButtonDirective, DialogComponent];\n\nconst modules = [\n CommonModule,\n ReactiveFormsModule,\n TranslateModule,\n MatFormFieldModule,\n MatSelectModule\n];\n\n@Component({\n selector: 'ymtmpl-edit-template',\n templateUrl: './edit-template.component.html',\n styleUrl: './edit-template.component.scss',\n standalone: true,\n imports: [...modules, ...components],\n host: {\n '[class.busy]': '!busy()',\n },\n})\nexport class EditTemplateComponent {\n readonly #fb = inject(FormBuilder);\n readonly #templateService = inject(TemplateService);\n readonly #dialogRef = inject(\n MatDialogRef<EditTemplateComponent, TemplateObject>\n );\n\n busy = signal<boolean>(false);\n\n error = signal<string | undefined>(undefined);\n\n data = inject<any>(MAT_DIALOG_DATA);\n\n changedInput = signal<any | undefined>(undefined);\n\n disabledSubmit = linkedSignal({\n source: this.changedInput,\n computation: () => {\n return this.busy() || this.form.invalid || !this.form.value.name;\n }\n });\n\n form: FormGroup;\n\n ngOnInit() {\n this.form = this.#fb.group({\n name: [this.data.template?.name || '', Validators.required],\n description: [this.data.template?.description || ''],\n dataObjectType: [this.data.template?.dataObjectType || ''],\n });\n }\n\n constructor() {}\n\n updateTemplate() {\n if(!this.form.dirty) {\n this.#dialogRef.close();\n return;\n }\n\n this.busy.set(true);\n this.error.set(undefined);\n\n this.#templateService\n .updateTemplateData(this.data.template.id, \n { name: this.form.value.name, description: this.form.value.description }\n )\n .subscribe({\n error: (e: any) => {\n this.error.set(e);\n this.busy.set(false);\n },\n next: () => {\n },\n complete: () => {\n this.#dialogRef.close();\n },\n });\n }\n\n close() {\n this.#dialogRef.close();\n }\n ngAfterViewInit() {\n this.form.valueChanges.subscribe((value) => {\n this.changedInput.set(value);\n });\n }\n}\n","<yuv-dialog [yuvBusyOverlay]=\"busy()\" [headertitel]=\"'yuv.app.templates.action.edit.label' | translate\">\n <main class=\"yuv-dialog-content\">\n <form [formGroup]=\"form\">\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.name\" | translate }}</mat-label>\n <yuv-string [required]=\"true\" formControlName=\"name\"></yuv-string>\n </mat-form-field>\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.description\" | translate}}</mat-label>\n <yuv-string formControlName=\"description\"></yuv-string>\n </mat-form-field>\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.dataObjectType\" | translate}}</mat-label>\n <yuv-string formControlName=\"dataObjectType\" [readonly]=\"true\"></yuv-string>\n </mat-form-field>\n @if (error()) {\n <p class=\"error\">{{ error() }}</p>\n }\n </form>\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\">\n {{ \"yuv.app.templates.action.button.cancel\" | translate }}\n </button>\n <button ymtButton=\"primary\" [disabled]=\"disabledSubmit()\" (click)=\"updateTemplate()\">\n {{ \"yuv.app.templates.action.button.apply\" | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n Component,\n HostBinding,\n inject,\n OnInit,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RouterModule } from '@angular/router';\nimport {\n DeviceScreen,\n DeviceService,\n DmsObject,\n DmsService,\n EventService,\n Logger,\n NotificationService,\n TranslateModule,\n TranslateService,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport {\n ListComponent,\n ListItemDirective,\n} from '@yuuvis/client-framework/list';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-framework/master-details';\nimport {\n OverflowMenuItem,\n YuvOverflowMenuModule,\n} from '@yuuvis/client-framework/overflow-menu';\nimport {\n Pagination\n} from '@yuuvis/client-framework/pagination';\nimport { tap } from 'rxjs';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n APP_ICONS,\n TEMPLATE_FILE_MIME_TYPE,\n TemplateObject,\n TemplateSearchResponse,\n} from '@yuuvis/app-templates/shared';\nimport { TemplateDetailsComponent } from '../../components/template-details/template-details.component';\nimport { CreateTemplateComponent } from '../../overlays/create-template/create-template.component';\nimport { TemplateService } from '../../app-templates.service';\nimport { EditTemplateComponent } from '../../overlays/edit-template/edit-template.component';\n\nconst components = [\n ListComponent,\n ListItemDirective,\n TemplateDetailsComponent\n];\n\nconst modules = [\n CommonModule,\n TranslateModule,\n RouterModule,\n YuvOverflowMenuModule,\n YuvMasterDetailsModule,\n MatIconModule,\n MatButtonModule,\n MatPaginatorModule,\n MatTooltipModule\n];\n\n@Component({\n selector: 'ymtmpl-templates-management',\n templateUrl: './template-management.component.html',\n styleUrl: './template-management.component.scss',\n standalone: true,\n imports: [...modules, ...components],\n host: {\n 'class.smallScreen': 'smallScreenLayout()',\n },\n})\nexport class TemplateManagementComponent implements OnInit {\n readonly layoutSettingsID = 'template-management.layout.settings';\n\n readonly #logger = inject(Logger);\n\n readonly #document = inject(DOCUMENT);\n readonly #deviceService = inject(DeviceService);\n readonly #notificationService = inject(NotificationService);\n readonly #dialog = inject(MatDialog);\n\n readonly #templateService = inject(TemplateService);\n readonly #dmsService = inject(DmsService);\n readonly #translateService = inject(TranslateService);\n readonly #eventService = inject(EventService);\n \n @HostBinding('class.pagination') pagination?: Pagination;\n\n busy = this.#templateService.busy$;\n\n icons = {\n ...APP_ICONS,\n };\n\n selectedTemplate = signal<TemplateObject | undefined>(undefined);\n selectedDmsObject = signal<DmsObject | undefined>(undefined);\n\n smallScreenLayout = signal(false);\n\n layoutOptions = signal<{ masterSize: number; detailsSize: number }>({\n masterSize: 40,\n detailsSize: 60,\n });\n\n actions: OverflowMenuItem[] = [];\n\n #templates: TemplateObject[] = [];\n\n templates$ = this.#templateService.templates$.pipe(\n tap((response: TemplateSearchResponse) => {\n this.#templates = response.items;\n const selectedTemplate = this.selectedTemplate();\n if (selectedTemplate) {\n // check if the selected template is still in the list\n const found = this.#templates.find((t) => t.id === selectedTemplate.id);\n if (found) {\n // update the selected template instance and the actions\n this.selectedTemplate.set(found);\n this.#updateActions(this.selectedTemplate());\n } \n // if not, set selected template to undefined\n else this.selectedTemplate.set(undefined);\n }\n this.pagination =\n response && response.totalNumItems > response.pageSize\n ? {\n total: response.totalNumItems,\n pages: Math.ceil(response.totalNumItems / response.pageSize),\n page: response.pageNumber + 1\n }\n : undefined;\n })\n );\n\n enableDetails = signal<boolean>(true);\n\n constructor() {\n this.#eventService.on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const id = e.data.id as string;\n let sel = this.selectedTemplate();\n if(sel && id === sel.id){\n this.#dmsService.getDmsObject(id).subscribe({\n next: (obj) => {\n this.selectedDmsObject.set(obj);\n }\n });\n }\n });\n \n this.#deviceService.screenChange$\n .pipe(takeUntilDestroyed())\n .subscribe((s: DeviceScreen) => {\n this.smallScreenLayout.set(\n s.size === 's' && s.orientation === 'portrait'\n );\n });\n }\n\n #updateActions(obj: TemplateObject | undefined) {\n this.actions = obj\n ? [ \n {\n id: 'yuv.app.templates.action.edit',\n icon: APP_ICONS.actionEditTemplate,\n label: this.#translateService.instant(\n 'yuv.app.templates.action.edit.label'\n ),\n callback: () => this.editTemplate(),\n },\n {\n id: 'yuv.app.templates.action.replaceContent',\n icon: APP_ICONS.actionReplaceTemplateContent,\n label: this.#translateService.instant(\n 'yuv.app.templates.action.replaceContent.label'\n ),\n callback: () => this.replaceCurrentContent(),\n },\n {\n id: 'yuv.app.templates.action.downloadContent',\n icon: APP_ICONS.actionDownloadTemplateContent,\n label: this.#translateService.instant(\n 'yuv.app.templates.action.downloadContent.label'\n ),\n callback: () => this.downloadCurrentContent(),\n },\n {\n id: 'yuv.app.templates.action.delete',\n icon: APP_ICONS.actionDeleteTemplate,\n label: this.#translateService.instant(\n 'yuv.app.templates.action.delete.label'\n ),\n callback: () => this.deleteCurrent(),\n },\n {\n id: 'yuv.app.templates.action.toggleState',\n icon: this.selectedTemplate()?.published\n ? APP_ICONS.actionToggleStateToUnpublished\n : APP_ICONS.actionToggleStateToPublished,\n label: this.#translateService.instant(\n this.selectedTemplate()?.published\n ? 'yuv.app.templates.action.unpublish.label'\n : 'yuv.app.templates.action.publish.label'\n ),\n callback: () => this.toggleCurrentState(),\n },\n ]\n : [];\n }\n\n createNewTemplate() {\n this.#logger.debug('Create new template ...');\n\n this.#dialog.open(CreateTemplateComponent, {\n width: '400px',\n maxWidth: '90vw',\n }).afterClosed().subscribe((createdTemplate: TemplateObject | undefined)=>{\n if (createdTemplate){\n this.#templates.push(createdTemplate);\n this.#logger.debug(\"New template created and added to list\");\n }\n });\n }\n\n editTemplate() {\n const template = this.selectedTemplate();\n if (template) {\n this.#logger.debug('Edit template ' + template.id + ' ...');\n // Open the TemplateDetailsComponent in edit mode or handle editing logic here\n // You may want to open a dialog similar to createNewTemplate, e.g.:\n this.#dialog.open(EditTemplateComponent, {\n data: { template },\n width: '400px',\n maxWidth: '90vw',\n }).afterClosed().subscribe(() => {\n // if (updatedTemplate) {\n // // Update the template in the list if needed\n // const idx = this.#templates.findIndex(t => t.id === updatedTemplate.id);\n // if (idx > -1) {\n // this.#templates[idx] = updatedTemplate;\n // this.selectedTemplate.set(updatedTemplate);\n // this.#logger.debug('Template updated');\n // }\n // }\n });\n }\n }\n\n downloadCurrentContent() {\n const template = this.selectedTemplate();\n if (template) {\n this.#templateService.downloadTemplateContent(template);\n }\n }\n\n replaceCurrentContent() {\n const template = this.selectedTemplate();\n if (template) {\n this.#logger.debug('Replace content of template ' + template.id + ' ...');\n\n const fileInput = this.#document.createElement('input');\n\n fileInput.type = 'file';\n fileInput.multiple = false;\n fileInput.accept = TEMPLATE_FILE_MIME_TYPE;\n\n fileInput.onchange = (e) => {\n const file = (e.target as HTMLInputElement).files?.[0];\n if (file) {\n this.#templateService\n .replaceTemplateContent(template, file)\n .subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant(\n 'yuv.app.templates.action.replaceContent.success'\n )\n );\n },\n error: (err: any) => {\n this.#notificationService.error(err);\n },\n complete: () => {\n this.#logger.debug('Template content replaced');\n },\n });\n }\n };\n\n fileInput.click();\n fileInput.remove();\n }\n }\n\n toggleCurrentState() {\n const template = this.selectedTemplate();\n if (template) {\n this.#templateService\n .toggleTemplateState(template)\n .subscribe((res: boolean) => {\n if (res) {\n this.#updateActions(template);\n this.#logger.info('Template published state chenged');\n }\n });\n }\n }\n\n deleteCurrent() {\n const template = this.selectedTemplate();\n if (template) {\n const index: number = this.#templates.indexOf(template);\n this.#logger.debug('Delete template ' + template.id + ' ...');\n this.#templateService.deleteTemplate(template)\n .subscribe((res: boolean) => {\n if (res) {\n this.#templates.splice(index, 1);\n this.#logger.debug('Template deleted and removed from list');\n }\n });\n }\n }\n\n changePage($event: PageEvent) {\n const { pageIndex } = $event;\n this.goToPage(pageIndex + 1);\n }\n\n goToPage(pageNumber: number) {\n this.#templateService.getPage(pageNumber - 1);\n }\n\n getPageSize(): number {\n return TemplateService.PAGE_SIZE;\n }\n\n onItemSelect(idx: number[]) {\n const item = this.#templates[idx[0]];\n if (item.id === this.selectedTemplate()?.id) return;\n\n this.selectedTemplate.set(item);\n this.#dmsService.getDmsObject(item.id).subscribe({\n next: (obj) => this.selectedDmsObject.set(obj)\n })\n this.#updateActions(this.selectedTemplate());\n }\n\n ngOnInit() {\n this.#templateService.refreshTemplates();\n }\n}\n","<header>\n <nav [attr.aria-label]=\"'yuv.app.templates.naviagtion.aria.label' | translate\">\n <div class=\"primary-actions\">\n <button mat-mini-fab (click)=\"createNewTemplate()\" [matTooltip]=\"'yuv.app.templates.action.create.label' | translate\">\n <mat-icon>{{icons.actionCreateNewTemplate}}</mat-icon> \n </button>\n </div>\n <div class=\"template-actions\">\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n </div>\n <div class=\"secondary-actions\">\n @if (!smallScreenLayout()) {\n <button mat-icon-button (click)=\"enableDetails.set(!enableDetails())\" [matTooltip]=\"'yuv.app.templates.toggledetails.tooltip' | translate\" [ngClass]=\"{ enabled: enableDetails() }\">\n <mat-icon>{{icons.toggleRight}}</mat-icon>\n </button>\n }\n </div>\n </nav>\n</header>\n\n<main>\n <yuv-master-details\n [gutterSize]=\"1\"\n [detailsActive]=\"!smallScreenLayout() && enableDetails()\"\n [layoutOptions]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\"\n [mode]=\"smallScreenLayout() ? 'ontop' : 'aside'\">\n \n <ng-template #yuvMasterPane>\n <div class=\"masterPaneContainer\">\n @let templateObjects = (templates$ | async)?.items;\n @if (templateObjects?.length) {\n <yuv-list (itemSelect)=\"onItemSelect($event)\">\n @for (t of templateObjects; track t.id) {\n <div class=\"item\" [ngClass]=\"[t.published ? 'public' : '']\" yuvListItem [style.--i]=\"$index\">\n <mat-icon class=\"icon\">{{t.published ? 'export_notes' : 'article'}}</mat-icon>\n <div class=\"name\">{{ t.name }}</div>\n <div class=\"description\">{{ t.description }}</div>\n <div class=\"id\">{{ t.id.toUpperCase( ) }}</div>\n <div class=\"dataObjectType\">{{ t.dataObjectType }}</div> \n </div>\n }\n </yuv-list>\n @if (pagination) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pagination.total\"\n [pageSize]=\"getPageSize()\"\n aria-label=\"Select page\"\n (page)=\"changePage($event)\"\n hidePageSize>\n </mat-paginator>\n }\n } @else {\n <div class=\"empty\">\n <p>{{ 'yuv.app.templates.list.empty' | translate }}</p>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #yuvDetailsPane>\n <div class=\"detailsPaneContainer\">\n @let dmsObject = selectedDmsObject();\n @if (dmsObject) {\n @if (smallScreenLayout()) {\n <div class=\"toolbar\">\n <button (click)=\"selectedTemplate.set(undefined)\"> \n <mat-icon>{{icons.close}}</mat-icon> \n </button>\n </div>\n }\n <ymtmpl-template-details [dmsObject]=\"dmsObject\"></ymtmpl-template-details>\n } @else {\n <div class=\"nothing-selected\">\n <h2>{{ 'yuv.app.templates.list.selection.empty' | translate }}</h2>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17.35 10L15.25 19H13.85L12.05 12.21L10.25 19H8.85L6.65 10H8.15L9.55 16.81L11.35 10H12.65L14.45 16.81L15.85 10H17.35Z\" /></svg>\n </div>\n }\n </div>\n </ng-template>\n\n </yuv-master-details>\n</main>\n\n<router-outlet name=\"modal\"></router-outlet>","import { Route } from '@angular/router';\nimport { YuvTemplatesComponent } from './app-templates.component';\nimport { TemplateManagementComponent } from './pages/management/template-management.component';\n\nexport const YuvTemplateManagerRoutes: Route[] = [\n {\n path: '',\n component: YuvTemplatesComponent,\n children: [\n { path: 'management', component: TemplateManagementComponent }, \n { path: '', redirectTo: 'management', pathMatch: 'full' },\n ]\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["components","modules","i1","i3","i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-app-templates.mjs","sources":["../../../../projects/yuuvis/app-templates/src/lib/app-templates.service.ts","../../../../projects/yuuvis/app-templates/src/lib/app-templates.component.ts","../../../../projects/yuuvis/app-templates/src/lib/components/template-details/template-details.component.ts","../../../../projects/yuuvis/app-templates/src/lib/components/template-details/template-details.component.html","../../../../projects/yuuvis/app-templates/src/lib/overlays/create-template/create-template.component.ts","../../../../projects/yuuvis/app-templates/src/lib/overlays/create-template/create-template.component.html","../../../../projects/yuuvis/app-templates/src/lib/overlays/edit-template/edit-template.component.ts","../../../../projects/yuuvis/app-templates/src/lib/overlays/edit-template/edit-template.component.html","../../../../projects/yuuvis/app-templates/src/lib/pages/management/template-management.component.ts","../../../../projects/yuuvis/app-templates/src/lib/pages/management/template-management.component.html","../../../../projects/yuuvis/app-templates/src/lib/lib.routes.ts","../../../../projects/yuuvis/app-templates/src/yuuvis-app-templates.ts"],"sourcesContent":["import { HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { inject, Injectable, signal } from '@angular/core';\nimport {\n ApiBase,\n BackendService,\n ContentStreamAllowed,\n CoreApiObject,\n DmsService,\n GenericObjectType,\n Logger,\n SearchResponse,\n SystemService,\n TranslateService,\n} from '@yuuvis/client-core';\nimport {\n catchError,\n map,\n Observable,\n of,\n ReplaySubject,\n switchMap,\n tap,\n throwError,\n} from 'rxjs';\nimport {\n TEMPLATE_FILE_MIME_TYPE,\n TemplateObject,\n TemplateSearchResponse,\n} from '@yuuvis/app-templates/shared';\n\nimport { ConfirmService } from '@yuuvis/client-framework/common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TemplateService {\n static PAGE_SIZE = 20;\n\n readonly #logger = inject(Logger);\n\n readonly #backendService = inject(BackendService);\n readonly #dmsService = inject(DmsService);\n readonly #confirmService = inject(ConfirmService);\n readonly #translateService = inject(TranslateService);\n readonly #systemService = inject(SystemService)\n\n private templates?: TemplateSearchResponse;\n\n private templatesDataSource = new ReplaySubject<TemplateSearchResponse>(1);\n public templates$: Observable<TemplateSearchResponse> =\n this.templatesDataSource.asObservable();\n\n private busyDataSource = signal<boolean>(false);\n public busy$ = this.busyDataSource.asReadonly();\n\n constructor() {}\n\n getAvailableDataObjectTypes(): GenericObjectType[] {\n return this.#systemService.getObjectTypes().filter((ot) => !ot.isFolder && ot.contentStreamAllowed !== ContentStreamAllowed.NOT_ALLOWED);\n }\n\n getPage(page?: number) {\n this.busyDataSource.set(true);\n\n this.#fetchTemplates(page)\n .subscribe({\n next: (res: TemplateSearchResponse) => {\n this.templates = res;\n this.templatesDataSource.next(this.templates);\n },\n error: (e: any) => {\n this.#logger.error('Failed to fetch templates', e);\n },\n })\n .add(() => this.busyDataSource.set(false));\n }\n\n createTemplate(\n name: string,\n description: string,\n dataObjectType: string\n ): Observable<TemplateObject> {\n let requestParams = {\n name: name,\n description: description,\n dataObjects: { objectData: dataObjectType }\n };\n\n return this.#backendService\n .post(`/template-service/api/objects/`, requestParams, ApiBase.none)\n .pipe(\n catchError((e: HttpErrorResponse) => {\n this.#logger.error('Failed to create template', e);\n return throwError(() => new Error(e.message));\n }),\n map((res: CoreApiObject) => new TemplateObject(res)\n )\n );\n }\n\n downloadTemplateContent(template: TemplateObject): void {\n return this.#backendService.download(\n this.#dmsService.getContentPath(template.id, undefined)\n );\n }\n\n replaceTemplateContent(\n template: TemplateObject,\n file: File\n ): Observable<any> {\n if (file.type != TEMPLATE_FILE_MIME_TYPE) {\n return throwError(\n () =>\n new Error(\n this.#translateService.instant(\n 'yuv.app.templates.action.replaceContent.error.unsupportedFileType'\n )\n )\n );\n }\n return this.#dmsService\n .uploadContent(template.id, file)\n .pipe(\n catchError((e: HttpErrorResponse) => {\n this.#logger.error('Failed to create template', e);\n return throwError(() => new Error(e.message));\n }),\n \n );\n }\n\n toggleTemplateState(template: TemplateObject): Observable<boolean> {\n let requestParams = {\n published: !template.published,\n };\n\n return this.#confirmService\n .confirm(\n template.published\n ? {\n title: this.#translateService.instant(\n 'yuv.app.templates.action.unpublish.label'\n ),\n message: this.#translateService.instant(\n 'yuv.app.templates.action.unpublish.confirm.message',\n { template: template.name }\n ),\n }\n : {\n title: this.#translateService.instant(\n 'yuv.app.templates.action.publish.label'\n ),\n message: this.#translateService.instant(\n 'yuv.app.templates.action.publish.confirm.message',\n { template: template.name }\n ),\n }\n )\n .pipe(\n switchMap((confirmed: boolean) => {\n if (confirmed) {\n return this.#backendService\n .patch(\n `/template-service/api/objects/${template.id}`,\n requestParams,\n ApiBase.none\n )\n .pipe(\n map(() => true),\n tap(() => this.refreshTemplates())\n );\n } else return of(false);\n })\n );\n }\n\n updateTemplateData(id: string, requestParams: any): Observable<boolean> {\n \n return this.#backendService\n .patch(\n `/template-service/api/objects/${id}`,\n requestParams,\n ApiBase.none\n )\n .pipe(\n map(() => true),\n tap(() => this.refreshTemplates())\n );\n }\n\n deleteTemplate(template: TemplateObject): Observable<boolean> {\n return this.#confirmService\n .confirm({\n title: this.#translateService.instant(\n 'yuv.app.templates.action.delete.label'\n ),\n message: template.published\n ? this.#translateService.instant(\n 'yuv.app.templates.action.delete.public.confirm.message',\n { template: template.name }\n )\n : this.#translateService.instant(\n 'yuv.app.templates.action.delete.confirm.message',\n { template: template.name }\n ),\n })\n .pipe(\n switchMap((confirmed: boolean) => {\n if (confirmed) {\n return this.#backendService\n .delete(`/dms/objects/${template.id}`, ApiBase.core)\n .pipe(\n map(() => true),\n tap(() => this.refreshTemplates())\n );\n } else return of(false);\n })\n );\n }\n\n refreshTemplates() {\n this.getPage(this.templates?.pageNumber);\n }\n\n #fetchTemplates(pageNumber = 0): Observable<TemplateSearchResponse> {\n let filterParams = new HttpParams()\n .set('page', pageNumber)\n .set('size', TemplateService.PAGE_SIZE)\n .set('sort', 'name%2Casc');\n\n return this.#backendService\n .get(`/template-service/api/objects/?${filterParams}`, ApiBase.none)\n .pipe(\n map((res: SearchResponse) => ({\n pageNumber: pageNumber,\n pageSize: TemplateService.PAGE_SIZE,\n totalNumItems: res.totalNumItems,\n items: res.objects.map(\n (obj: CoreApiObject) => new TemplateObject(obj)\n ),\n }))\n );\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@yuuvis/client-core';\nimport { ShellService } from '@yuuvis/client-shell-core';\n\nimport { APP_ID } from '@yuuvis/app-templates/shared';\n\n@Component({\n selector: 'ymtmpl-app-templates',\n standalone: true,\n imports: [CommonModule, TranslateModule, RouterModule],\n template: `<router-outlet></router-outlet>`,\n styleUrl: './app-templates.component.scss',\n})\nexport class YuvTemplatesComponent {\n #shell = inject(ShellService);\n \n #app = this.#shell.getApp(APP_ID);\n appName = this.#app?.title as string;\n appIcon = this.#app?.iconName;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { DmsObject} from '@yuuvis/client-core';\nconst components = [\n ObjectPreviewComponent\n];\n\nconst modules = [\n CommonModule\n];\n\n@Component({\n selector: 'ymtmpl-template-details',\n templateUrl: './template-details.component.html',\n styleUrls: ['./template-details.component.scss'],\n standalone: true,\n imports: [...modules, ...components]\n})\nexport class TemplateDetailsComponent {\n @Input() dmsObject!: DmsObject;\n}","<yuv-object-preview [dmsObject]=\"dmsObject\"></yuv-object-preview>","import { CommonModule } from '@angular/common';\nimport { Component, inject, linkedSignal, signal } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { GenericObjectType, TranslateModule } from '@yuuvis/client-core';\nimport { StringComponent } from '@yuuvis/client-framework/forms';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { TemplateService } from './../../app-templates.service';\nimport { BusyOverlayDirective, DialogComponent } from '@yuuvis/client-framework/common';\nimport { TemplateObject } from '@yuuvis/app-templates/shared';\n\nconst components = [BusyOverlayDirective, StringComponent, YmtButtonDirective, DialogComponent];\n\nconst modules = [\n CommonModule,\n ReactiveFormsModule,\n TranslateModule,\n MatFormFieldModule,\n MatSelectModule\n];\n\n@Component({\n selector: 'ymtmpl-create-template',\n templateUrl: './create-template.component.html',\n styleUrl: './create-template.component.scss',\n standalone: true,\n imports: [...modules, ...components],\n host: {\n '[class.busy]': '!busy()',\n },\n})\nexport class CreateTemplateComponent {\n readonly #fb = inject(FormBuilder);\n readonly #templateService = inject(TemplateService);\n readonly #dialogRef = inject(MatDialogRef<CreateTemplateComponent, TemplateObject>);\n\n busy = signal<boolean>(false);\n\n error = signal<string | undefined>(undefined);\n\n form: FormGroup = this.#fb.group({\n name: ['New template', Validators.required],\n description: [''],\n dataObjectType: ['system:document', Validators.required]\n });\n\n dataObjectTypes = signal<GenericObjectType[]>([]);\n\n changedInput = signal<any | undefined>(undefined);\n \n disabledSubmit = linkedSignal({\n source: this.changedInput,\n computation: () => {\n return this.busy() || this.form.invalid || !this.form.value.name;\n }\n });\n\n constructor() {\n this.#loadDataObjectTypes();\n }\n\n #loadDataObjectTypes() {\n this.dataObjectTypes.set(this.#templateService.getAvailableDataObjectTypes().sort((ot1, ot2) => ot1.id > ot2.id ? 1 : -1))\n }\n\n createTemplate() {\n let createdTemplate : TemplateObject;\n let createParams = this.form.value;\n\n this.busy.set(true);\n this.error.set(undefined);\n\n this.#templateService\n .createTemplate(\n createParams.name,\n createParams.description,\n createParams.dataObjectType\n )\n .subscribe({\n error: (e: any) => {\n this.error.set(e);\n this.busy.set(false);\n },\n next: (obj : TemplateObject) => {\n createdTemplate = obj;\n },\n complete: () => {\n this.#dialogRef.close(createdTemplate);\n },\n });\n }\n\n close() {\n this.#dialogRef.close();\n }\n\n ngAfterViewInit() {\n this.form.valueChanges.subscribe((value) => {\n this.changedInput.set(value);\n });\n }\n}\n","<yuv-dialog [yuvBusyOverlay]=\"busy()\" [headertitel]=\"'yuv.app.templates.action.create.headline' | translate\">\n <main class=\"yuv-dialog-content\">\n <form [formGroup]=\"form\">\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.name\" | translate }}</mat-label>\n <yuv-string [required]=\"true\" formControlName=\"name\"></yuv-string>\n </mat-form-field>\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.description\" | translate}}</mat-label>\n <yuv-string formControlName=\"description\"></yuv-string>\n </mat-form-field>\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.dataObjectType\" | translate}}</mat-label>\n <mat-select formControlName=\"dataObjectType\">\n @for (dataObjectType of dataObjectTypes(); track dataObjectType) {\n <mat-option [value]=\"dataObjectType.id\">{{ dataObjectType.id }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n @if (error()) {\n <p class=\"error\">{{ error() }}</p>\n }\n </form>\n </main>\n <footer>\n <button ymtButton=\"secondary\" [disabled]=\"busy()\" (click)=\"close()\">\n {{ \"yuv.app.templates.action.button.cancel\" | translate }}\n </button>\n <button ymtButton=\"primary\" [disabled]=\"disabledSubmit()\" (click)=\"createTemplate()\">\n {{ 'yuv.app.templates.action.button.create' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, linkedSignal, signal } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@yuuvis/client-core';\nimport { StringComponent } from '@yuuvis/client-framework/forms';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { TemplateService } from '../../app-templates.service';\nimport { BusyOverlayDirective, DialogComponent } from '@yuuvis/client-framework/common';\nimport { TemplateObject } from '@yuuvis/app-templates/shared';\n\nconst components = [BusyOverlayDirective, StringComponent, YmtButtonDirective, DialogComponent];\n\nconst modules = [\n CommonModule,\n ReactiveFormsModule,\n TranslateModule,\n MatFormFieldModule,\n MatSelectModule\n];\n\n@Component({\n selector: 'ymtmpl-edit-template',\n templateUrl: './edit-template.component.html',\n styleUrl: './edit-template.component.scss',\n standalone: true,\n imports: [...modules, ...components],\n host: {\n '[class.busy]': '!busy()',\n },\n})\nexport class EditTemplateComponent {\n readonly #fb = inject(FormBuilder);\n readonly #templateService = inject(TemplateService);\n readonly #dialogRef = inject(\n MatDialogRef<EditTemplateComponent, TemplateObject>\n );\n\n busy = signal<boolean>(false);\n\n error = signal<string | undefined>(undefined);\n\n data = inject<any>(MAT_DIALOG_DATA);\n\n changedInput = signal<any | undefined>(undefined);\n\n disabledSubmit = linkedSignal({\n source: this.changedInput,\n computation: () => {\n return this.busy() || this.form.invalid || !this.form.value.name;\n }\n });\n\n form: FormGroup;\n\n ngOnInit() {\n this.form = this.#fb.group({\n name: [this.data.template?.name || '', Validators.required],\n description: [this.data.template?.description || ''],\n dataObjectType: [this.data.template?.dataObjectType || ''],\n });\n }\n\n constructor() {}\n\n updateTemplate() {\n if(!this.form.dirty) {\n this.#dialogRef.close();\n return;\n }\n\n this.busy.set(true);\n this.error.set(undefined);\n\n this.#templateService\n .updateTemplateData(this.data.template.id, \n { name: this.form.value.name, description: this.form.value.description }\n )\n .subscribe({\n error: (e: any) => {\n this.error.set(e);\n this.busy.set(false);\n },\n next: () => {\n },\n complete: () => {\n this.#dialogRef.close();\n },\n });\n }\n\n close() {\n this.#dialogRef.close();\n }\n ngAfterViewInit() {\n this.form.valueChanges.subscribe((value) => {\n this.changedInput.set(value);\n });\n }\n}\n","<yuv-dialog [yuvBusyOverlay]=\"busy()\" [headertitel]=\"'yuv.app.templates.action.edit.label' | translate\">\n <main class=\"yuv-dialog-content\">\n <form [formGroup]=\"form\">\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.name\" | translate }}</mat-label>\n <yuv-string [required]=\"true\" formControlName=\"name\"></yuv-string>\n </mat-form-field>\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.description\" | translate}}</mat-label>\n <yuv-string formControlName=\"description\"></yuv-string>\n </mat-form-field>\n <mat-form-field class=\"yuv-form-field\">\n <mat-label>{{\"yuv.app.templates.object.property.dataObjectType\" | translate}}</mat-label>\n <yuv-string formControlName=\"dataObjectType\" [readonly]=\"true\"></yuv-string>\n </mat-form-field>\n @if (error()) {\n <p class=\"error\">{{ error() }}</p>\n }\n </form>\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"close()\">\n {{ \"yuv.app.templates.action.button.cancel\" | translate }}\n </button>\n <button ymtButton=\"primary\" [disabled]=\"disabledSubmit()\" (click)=\"updateTemplate()\">\n {{ \"yuv.app.templates.action.button.apply\" | translate }}\n </button>\n </footer>\n</yuv-dialog>\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n Component,\n HostBinding,\n inject,\n OnInit,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RouterModule } from '@angular/router';\nimport {\n DeviceScreen,\n DeviceService,\n DmsObject,\n DmsService,\n EventService,\n Logger,\n NotificationService,\n TranslateModule,\n TranslateService,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport {\n ListComponent,\n ListItemDirective,\n} from '@yuuvis/client-framework/list';\nimport { YuvMasterDetailsModule } from '@yuuvis/client-framework/master-details';\nimport {\n OverflowMenuItem,\n YuvOverflowMenuModule,\n} from '@yuuvis/client-framework/overflow-menu';\nimport {\n Pagination\n} from '@yuuvis/client-framework/pagination';\nimport { tap } from 'rxjs';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n APP_ICONS,\n TEMPLATE_FILE_MIME_TYPE,\n TemplateObject,\n TemplateSearchResponse,\n} from '@yuuvis/app-templates/shared';\nimport { TemplateDetailsComponent } from '../../components/template-details/template-details.component';\nimport { CreateTemplateComponent } from '../../overlays/create-template/create-template.component';\nimport { TemplateService } from '../../app-templates.service';\nimport { EditTemplateComponent } from '../../overlays/edit-template/edit-template.component';\n\nconst components = [\n ListComponent,\n ListItemDirective,\n TemplateDetailsComponent\n];\n\nconst modules = [\n CommonModule,\n TranslateModule,\n RouterModule,\n YuvOverflowMenuModule,\n YuvMasterDetailsModule,\n MatIconModule,\n MatButtonModule,\n MatPaginatorModule,\n MatTooltipModule\n];\n\n@Component({\n selector: 'ymtmpl-templates-management',\n templateUrl: './template-management.component.html',\n styleUrl: './template-management.component.scss',\n standalone: true,\n imports: [...modules, ...components],\n host: {\n 'class.smallScreen': 'smallScreenLayout()',\n },\n})\nexport class TemplateManagementComponent implements OnInit {\n readonly layoutSettingsID = 'template-management.layout.settings';\n\n readonly #logger = inject(Logger);\n\n readonly #document = inject(DOCUMENT);\n readonly #deviceService = inject(DeviceService);\n readonly #notificationService = inject(NotificationService);\n readonly #dialog = inject(MatDialog);\n\n readonly #templateService = inject(TemplateService);\n readonly #dmsService = inject(DmsService);\n readonly #translateService = inject(TranslateService);\n readonly #eventService = inject(EventService);\n \n @HostBinding('class.pagination') pagination?: Pagination;\n\n busy = this.#templateService.busy$;\n\n icons = {\n ...APP_ICONS,\n };\n\n selectedTemplate = signal<TemplateObject | undefined>(undefined);\n selectedDmsObject = signal<DmsObject | undefined>(undefined);\n\n smallScreenLayout = signal(false);\n\n layoutOptions = signal<{ masterSize: number; detailsSize: number }>({\n masterSize: 40,\n detailsSize: 60,\n });\n\n actions: OverflowMenuItem[] = [];\n\n #templates: TemplateObject[] = [];\n\n templates$ = this.#templateService.templates$.pipe(\n tap((response: TemplateSearchResponse) => {\n this.#templates = response.items;\n const selectedTemplate = this.selectedTemplate();\n if (selectedTemplate) {\n // check if the selected template is still in the list\n const found = this.#templates.find((t) => t.id === selectedTemplate.id);\n if (found) {\n // update the selected template instance and the actions\n this.selectedTemplate.set(found);\n this.#updateActions(this.selectedTemplate());\n } \n // if not, set selected template to undefined\n else this.selectedTemplate.set(undefined);\n }\n this.pagination =\n response && response.totalNumItems > response.pageSize\n ? {\n total: response.totalNumItems,\n pages: Math.ceil(response.totalNumItems / response.pageSize),\n page: response.pageNumber + 1\n }\n : undefined;\n })\n );\n\n enableDetails = signal<boolean>(true);\n\n constructor() {\n this.#eventService.on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const id = e.data.id as string;\n let sel = this.selectedTemplate();\n if(sel && id === sel.id){\n this.#dmsService.getDmsObject(id).subscribe({\n next: (obj) => {\n this.selectedDmsObject.set(obj);\n }\n });\n }\n });\n \n this.#deviceService.screenChange$\n .pipe(takeUntilDestroyed())\n .subscribe((s: DeviceScreen) => {\n this.smallScreenLayout.set(\n s.size === 's' && s.orientation === 'portrait'\n );\n });\n }\n\n #updateActions(obj: TemplateObject | undefined) {\n this.actions = obj\n ? [ \n {\n id: 'yuv.app.templates.action.edit',\n icon: APP_ICONS.actionEditTemplate,\n label: this.#translateService.instant(\n 'yuv.app.templates.action.edit.label'\n ),\n callback: () => this.editTemplate(),\n },\n {\n id: 'yuv.app.templates.action.replaceContent',\n icon: APP_ICONS.actionReplaceTemplateContent,\n label: this.#translateService.instant(\n 'yuv.app.templates.action.replaceContent.label'\n ),\n callback: () => this.replaceCurrentContent(),\n },\n {\n id: 'yuv.app.templates.action.downloadContent',\n icon: APP_ICONS.actionDownloadTemplateContent,\n label: this.#translateService.instant(\n 'yuv.app.templates.action.downloadContent.label'\n ),\n callback: () => this.downloadCurrentContent(),\n },\n {\n id: 'yuv.app.templates.action.delete',\n icon: APP_ICONS.actionDeleteTemplate,\n label: this.#translateService.instant(\n 'yuv.app.templates.action.delete.label'\n ),\n callback: () => this.deleteCurrent(),\n },\n {\n id: 'yuv.app.templates.action.toggleState',\n icon: this.selectedTemplate()?.published\n ? APP_ICONS.actionToggleStateToUnpublished\n : APP_ICONS.actionToggleStateToPublished,\n label: this.#translateService.instant(\n this.selectedTemplate()?.published\n ? 'yuv.app.templates.action.unpublish.label'\n : 'yuv.app.templates.action.publish.label'\n ),\n callback: () => this.toggleCurrentState(),\n },\n ]\n : [];\n }\n\n createNewTemplate() {\n this.#logger.debug('Create new template ...');\n\n this.#dialog.open(CreateTemplateComponent, {\n width: '400px',\n maxWidth: '90vw',\n }).afterClosed().subscribe((createdTemplate: TemplateObject | undefined)=>{\n if (createdTemplate){\n this.#templates.push(createdTemplate);\n this.#logger.debug(\"New template created and added to list\");\n }\n });\n }\n\n editTemplate() {\n const template = this.selectedTemplate();\n if (template) {\n this.#logger.debug('Edit template ' + template.id + ' ...');\n // Open the TemplateDetailsComponent in edit mode or handle editing logic here\n // You may want to open a dialog similar to createNewTemplate, e.g.:\n this.#dialog.open(EditTemplateComponent, {\n data: { template },\n width: '400px',\n maxWidth: '90vw',\n }).afterClosed().subscribe(() => {\n // if (updatedTemplate) {\n // // Update the template in the list if needed\n // const idx = this.#templates.findIndex(t => t.id === updatedTemplate.id);\n // if (idx > -1) {\n // this.#templates[idx] = updatedTemplate;\n // this.selectedTemplate.set(updatedTemplate);\n // this.#logger.debug('Template updated');\n // }\n // }\n });\n }\n }\n\n downloadCurrentContent() {\n const template = this.selectedTemplate();\n if (template) {\n this.#templateService.downloadTemplateContent(template);\n }\n }\n\n replaceCurrentContent() {\n const template = this.selectedTemplate();\n if (template) {\n this.#logger.debug('Replace content of template ' + template.id + ' ...');\n\n const fileInput = this.#document.createElement('input');\n\n fileInput.type = 'file';\n fileInput.multiple = false;\n fileInput.accept = TEMPLATE_FILE_MIME_TYPE;\n\n fileInput.onchange = (e) => {\n const file = (e.target as HTMLInputElement).files?.[0];\n if (file) {\n this.#templateService\n .replaceTemplateContent(template, file)\n .subscribe({\n next: () => {\n this.#notificationService.success(\n this.#translateService.instant(\n 'yuv.app.templates.action.replaceContent.success'\n )\n );\n },\n error: (err: any) => {\n this.#notificationService.error(err);\n },\n complete: () => {\n this.#logger.debug('Template content replaced');\n },\n });\n }\n };\n\n fileInput.click();\n fileInput.remove();\n }\n }\n\n toggleCurrentState() {\n const template = this.selectedTemplate();\n if (template) {\n this.#templateService\n .toggleTemplateState(template)\n .subscribe((res: boolean) => {\n if (res) {\n this.#updateActions(template);\n this.#logger.info('Template published state chenged');\n }\n });\n }\n }\n\n deleteCurrent() {\n const template = this.selectedTemplate();\n if (template) {\n const index: number = this.#templates.indexOf(template);\n this.#logger.debug('Delete template ' + template.id + ' ...');\n this.#templateService.deleteTemplate(template)\n .subscribe((res: boolean) => {\n if (res) {\n this.#templates.splice(index, 1);\n this.#logger.debug('Template deleted and removed from list');\n }\n });\n }\n }\n\n changePage($event: PageEvent) {\n const { pageIndex } = $event;\n this.goToPage(pageIndex + 1);\n }\n\n goToPage(pageNumber: number) {\n this.#templateService.getPage(pageNumber - 1);\n }\n\n getPageSize(): number {\n return TemplateService.PAGE_SIZE;\n }\n\n onItemSelect(idx: number[]) {\n const item = this.#templates[idx[0]];\n if (item.id === this.selectedTemplate()?.id) return;\n\n this.selectedTemplate.set(item);\n this.#dmsService.getDmsObject(item.id).subscribe({\n next: (obj) => this.selectedDmsObject.set(obj)\n })\n this.#updateActions(this.selectedTemplate());\n }\n\n ngOnInit() {\n this.#templateService.refreshTemplates();\n }\n}\n","<header>\n <nav [attr.aria-label]=\"'yuv.app.templates.naviagtion.aria.label' | translate\">\n <div class=\"primary-actions\">\n <button mat-mini-fab (click)=\"createNewTemplate()\" [matTooltip]=\"'yuv.app.templates.action.create.label' | translate\">\n <mat-icon>{{icons.actionCreateNewTemplate}}</mat-icon> \n </button>\n </div>\n <div class=\"template-actions\">\n <yuv-overflow-menu [menuItems]=\"actions\"></yuv-overflow-menu>\n </div>\n <div class=\"secondary-actions\">\n @if (!smallScreenLayout()) {\n <button mat-icon-button (click)=\"enableDetails.set(!enableDetails())\" [matTooltip]=\"'yuv.app.templates.toggledetails.tooltip' | translate\" [ngClass]=\"{ enabled: enableDetails() }\">\n <mat-icon>{{icons.toggleRight}}</mat-icon>\n </button>\n }\n </div>\n </nav>\n</header>\n\n<main>\n <yuv-master-details\n [gutterSize]=\"1\"\n [detailsActive]=\"!smallScreenLayout() && enableDetails()\"\n [layoutOptions]=\"layoutOptions()\"\n [layoutSettingsID]=\"layoutSettingsID\">\n \n <ng-template #yuvMasterPane>\n <div class=\"masterPaneContainer\">\n @let templateObjects = (templates$ | async)?.items;\n @if (templateObjects?.length) {\n <yuv-list (itemSelect)=\"onItemSelect($event)\">\n @for (t of templateObjects; track t.id) {\n <div class=\"item\" [ngClass]=\"[t.published ? 'public' : '']\" yuvListItem [style.--i]=\"$index\">\n <mat-icon class=\"icon\">{{t.published ? 'export_notes' : 'article'}}</mat-icon>\n <div class=\"name\">{{ t.name }}</div>\n <div class=\"description\">{{ t.description }}</div>\n <div class=\"id\">{{ t.id.toUpperCase( ) }}</div>\n <div class=\"dataObjectType\">{{ t.dataObjectType }}</div> \n </div>\n }\n </yuv-list>\n @if (pagination) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pagination.total\"\n [pageSize]=\"getPageSize()\"\n aria-label=\"Select page\"\n (page)=\"changePage($event)\"\n hidePageSize>\n </mat-paginator>\n }\n } @else {\n <div class=\"empty\">\n <p>{{ 'yuv.app.templates.list.empty' | translate }}</p>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #yuvDetailsPane>\n <div class=\"detailsPaneContainer\">\n @let dmsObject = selectedDmsObject();\n @if (dmsObject) {\n @if (smallScreenLayout()) {\n <div class=\"toolbar\">\n <button (click)=\"selectedTemplate.set(undefined)\"> \n <mat-icon>{{icons.close}}</mat-icon> \n </button>\n </div>\n }\n <ymtmpl-template-details [dmsObject]=\"dmsObject\"></ymtmpl-template-details>\n } @else {\n <div class=\"nothing-selected\">\n <h2>{{ 'yuv.app.templates.list.selection.empty' | translate }}</h2>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M17.35 10L15.25 19H13.85L12.05 12.21L10.25 19H8.85L6.65 10H8.15L9.55 16.81L11.35 10H12.65L14.45 16.81L15.85 10H17.35Z\" /></svg>\n </div>\n }\n </div>\n </ng-template>\n\n </yuv-master-details>\n</main>\n\n<router-outlet name=\"modal\"></router-outlet>","import { Route } from '@angular/router';\nimport { YuvTemplatesComponent } from './app-templates.component';\nimport { TemplateManagementComponent } from './pages/management/template-management.component';\n\nexport const YuvTemplateManagerRoutes: Route[] = [\n {\n path: '',\n component: YuvTemplatesComponent,\n children: [\n { path: 'management', component: TemplateManagementComponent }, \n { path: '', redirectTo: 'management', pathMatch: 'full' },\n ]\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["components","modules","i1","i3","i4"],"mappings":"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"}
|
package/lib/assets/i18n/de.json
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"yuv.app.templates.action.replaceContent.error.unsupportedFileType": "Der MIME-Typ der ausgewählten Vorlagendatei wird nicht unterstützt.",
|
|
15
15
|
"yuv.app.templates.action.replaceContent.label": "Vorlagendatei ersetzen",
|
|
16
16
|
"yuv.app.templates.action.replaceContent.success": "Vorlagendatei erfolgreich ersetzt",
|
|
17
|
-
"yuv.app.templates.action.unpublish.confirm.message": "Möchten Sie die Veröffentlichung
|
|
17
|
+
"yuv.app.templates.action.unpublish.confirm.message": "Möchten Sie die Veröffentlichung der Vorlage '{{template}}' wirklich aufheben?\nEs wird nicht mehr möglich sein, Dokumente auf Grundlage dieser Vorlage zu erstellen.",
|
|
18
18
|
"yuv.app.templates.action.unpublish.label": "Veröffentlichung der Vorlage aufheben",
|
|
19
19
|
"yuv.app.templates.list.empty": "Keine Vorlagen vorhanden",
|
|
20
20
|
"yuv.app.templates.list.selection.empty": "Keine Vorlage ausgewählt",
|
package/lib/assets/i18n/en.json
CHANGED
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
"yuv.app.templates.action.create.label": "New template",
|
|
7
7
|
"yuv.app.templates.action.delete.confirm.message": "Do you really want to delete the template '{{template}}'?",
|
|
8
8
|
"yuv.app.templates.action.delete.label": "Delete template",
|
|
9
|
-
"yuv.app.templates.action.delete.public.confirm.message": "Do you really want to delete
|
|
9
|
+
"yuv.app.templates.action.delete.public.confirm.message": "Do you really want to delete template '{{template}}' that was already published?",
|
|
10
10
|
"yuv.app.templates.action.downloadContent.label": "Download template file",
|
|
11
|
-
"yuv.app.templates.action.edit.label": "
|
|
12
|
-
"yuv.app.templates.action.publish.confirm.message": "Do you want to publish
|
|
11
|
+
"yuv.app.templates.action.edit.label": "Edit template description",
|
|
12
|
+
"yuv.app.templates.action.publish.confirm.message": "Do you want to publish template '{{template}}'?",
|
|
13
13
|
"yuv.app.templates.action.publish.label": "Publish template",
|
|
14
|
-
|
|
14
|
+
"yuv.app.templates.action.replaceContent.error.unsupportedFileType": "The MIME type of the template file you selected is not supported.",
|
|
15
15
|
"yuv.app.templates.action.replaceContent.label": "Replace template file",
|
|
16
16
|
"yuv.app.templates.action.replaceContent.success": "Template file replaced successfully",
|
|
17
|
-
|
|
17
|
+
"yuv.app.templates.action.unpublish.confirm.message": "Do you really want to unpublish template '{{template}}'?\nIt will then no longer be possible to create documents based on this template.",
|
|
18
18
|
"yuv.app.templates.action.unpublish.label": "Unpublish template",
|
|
19
19
|
"yuv.app.templates.list.empty": "No templates available",
|
|
20
20
|
"yuv.app.templates.list.selection.empty": "No template selected",
|
package/package.json
CHANGED