@wertzui/ngx-restworld-client 7.2.0 → 8.0.0
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/esm2020/lib/components/restworld-file/restworld-file.component.mjs +57 -0
- package/esm2020/lib/components/restworld-form/restworld-form.component.mjs +188 -0
- package/esm2020/lib/components/restworld-id-navigation/restworld-id-navigation.component.mjs +65 -0
- package/esm2020/lib/components/restworld-image/restworld-image.component.mjs +164 -0
- package/esm2020/lib/components/restworld-inputs/restworld-inputs.mjs +306 -0
- package/esm2020/lib/components/restworld-label/restworld-label.component.mjs +24 -0
- package/esm2020/lib/components/restworld-menu-button/restworld-menu-button.component.mjs +40 -0
- package/esm2020/lib/components/restworld-table/restworld-table.component.mjs +157 -0
- package/esm2020/lib/components/restworld-validation-errors/restworld-validation-errors.component.mjs +21 -0
- package/esm2020/lib/models/o-data.mjs +2 -0
- package/esm2020/lib/models/restworld-image.mjs +2 -0
- package/esm2020/lib/models/restworld-options.mjs +2 -2
- package/esm2020/lib/models/special-properties.mjs +6 -0
- package/esm2020/lib/models/templating.mjs +2 -0
- package/esm2020/lib/restworld-client.module.mjs +83 -25
- package/esm2020/lib/services/o-data.service.mjs +6 -3
- package/esm2020/lib/services/restworld-client-collection.mjs +7 -7
- package/esm2020/lib/services/restworld-client.mjs +40 -29
- package/esm2020/lib/services/settings.service.mjs +5 -5
- package/esm2020/lib/views/restworld-edit-view/restworld-edit-view.component.mjs +24 -255
- package/esm2020/lib/views/restworld-list-view/restworld-list-view.component.mjs +49 -101
- package/esm2020/public-api.mjs +17 -6
- package/fesm2015/wertzui-ngx-restworld-client.mjs +1373 -1017
- package/fesm2015/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/fesm2020/wertzui-ngx-restworld-client.mjs +1322 -978
- package/fesm2020/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/components/restworld-avatar/restworld-avatar.component.d.ts +1 -0
- package/lib/components/restworld-avatar/restworld-avatar.component.d.ts.map +1 -0
- package/lib/{views/restworld-file-view/restworld-file-view.component.d.ts → components/restworld-file/restworld-file.component.d.ts} +4 -3
- package/lib/components/restworld-file/restworld-file.component.d.ts.map +1 -0
- package/lib/components/restworld-form/restworld-form.component.d.ts +53 -0
- package/lib/components/restworld-form/restworld-form.component.d.ts.map +1 -0
- package/lib/components/restworld-id-navigation/restworld-id-navigation.component.d.ts +27 -0
- package/lib/components/restworld-id-navigation/restworld-id-navigation.component.d.ts.map +1 -0
- package/lib/components/restworld-image/restworld-image.component.d.ts +62 -0
- package/lib/components/restworld-image/restworld-image.component.d.ts.map +1 -0
- package/lib/components/restworld-inputs/restworld-inputs.d.ts +146 -0
- package/lib/components/restworld-inputs/restworld-inputs.d.ts.map +1 -0
- package/lib/components/restworld-label/restworld-label.component.d.ts +14 -0
- package/lib/components/restworld-label/restworld-label.component.d.ts.map +1 -0
- package/lib/components/restworld-menu-button/restworld-menu-button.component.d.ts +12 -0
- package/lib/components/restworld-menu-button/restworld-menu-button.component.d.ts.map +1 -0
- package/lib/components/restworld-table/restworld-table.component.d.ts +54 -0
- package/lib/components/restworld-table/restworld-table.component.d.ts.map +1 -0
- package/lib/components/restworld-validation-errors/restworld-validation-errors.component.d.ts +15 -0
- package/lib/components/restworld-validation-errors/restworld-validation-errors.component.d.ts.map +1 -0
- package/lib/constants/link-names.d.ts +1 -0
- package/lib/constants/link-names.d.ts.map +1 -0
- package/lib/models/api-url.d.ts +1 -0
- package/lib/models/api-url.d.ts.map +1 -0
- package/lib/models/client-settings.d.ts +1 -0
- package/lib/models/client-settings.d.ts.map +1 -0
- package/lib/models/o-data.d.ts +7 -0
- package/lib/models/o-data.d.ts.map +1 -0
- package/lib/models/problem-details.d.ts +1 -0
- package/lib/models/problem-details.d.ts.map +1 -0
- package/lib/models/restworld-image.d.ts +28 -0
- package/lib/models/restworld-image.d.ts.map +1 -0
- package/lib/models/restworld-options.d.ts +2 -1
- package/lib/models/restworld-options.d.ts.map +1 -0
- package/lib/models/special-properties.d.ts +9 -0
- package/lib/models/special-properties.d.ts.map +1 -0
- package/lib/models/templating.d.ts +8 -0
- package/lib/models/templating.d.ts.map +1 -0
- package/lib/pipes/as.pipe.d.ts +1 -0
- package/lib/pipes/as.pipe.d.ts.map +1 -0
- package/lib/pipes/safe-url.pipe.d.ts +1 -0
- package/lib/pipes/safe-url.pipe.d.ts.map +1 -0
- package/lib/restworld-client.module.d.ts +45 -37
- package/lib/restworld-client.module.d.ts.map +1 -0
- package/lib/services/avatar-generator.d.ts +1 -0
- package/lib/services/avatar-generator.d.ts.map +1 -0
- package/lib/services/form.service.d.ts +1 -0
- package/lib/services/form.service.d.ts.map +1 -0
- package/lib/services/o-data.service.d.ts +1 -0
- package/lib/services/o-data.service.d.ts.map +1 -0
- package/lib/services/restworld-client-collection.d.ts +9 -8
- package/lib/services/restworld-client-collection.d.ts.map +1 -0
- package/lib/services/restworld-client.d.ts +12 -4
- package/lib/services/restworld-client.d.ts.map +1 -0
- package/lib/services/settings.service.d.ts +3 -2
- package/lib/services/settings.service.d.ts.map +1 -0
- package/lib/views/restworld-edit-view/restworld-edit-view.component.d.ts +16 -68
- package/lib/views/restworld-edit-view/restworld-edit-view.component.d.ts.map +1 -0
- package/lib/views/restworld-list-view/restworld-list-view.component.d.ts +25 -41
- package/lib/views/restworld-list-view/restworld-list-view.component.d.ts.map +1 -0
- package/package.json +6 -6
- package/public-api.d.ts +17 -5
- package/public-api.d.ts.map +1 -0
- package/wertzui-ngx-restworld-client.d.ts.map +1 -0
- package/esm2020/lib/views/restworld-edit-form/restworld-edit-form.component.mjs +0 -233
- package/esm2020/lib/views/restworld-file-view/restworld-file-view.component.mjs +0 -57
- package/esm2020/lib/views/restworld-image-view/restworld-image-view.component.mjs +0 -139
- package/lib/views/restworld-edit-form/restworld-edit-form.component.d.ts +0 -74
- package/lib/views/restworld-image-view/restworld-image-view.component.d.ts +0 -57
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wertzui-ngx-restworld-client.mjs","sources":["../../../projects/ngx-restworld-client/src/lib/constants/link-names.ts","../../../projects/ngx-restworld-client/src/lib/services/avatar-generator.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-avatar/restworld-avatar.component.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-avatar/restworld-avatar.component.html","../../../projects/ngx-restworld-client/src/lib/models/problem-details.ts","../../../projects/ngx-restworld-client/src/lib/models/restworld-options.ts","../../../projects/ngx-restworld-client/src/lib/pipes/safe-url.pipe.ts","../../../projects/ngx-restworld-client/src/lib/pipes/as.pipe.ts","../../../projects/ngx-restworld-client/src/lib/services/form.service.ts","../../../projects/ngx-restworld-client/src/lib/services/o-data.service.ts","../../../projects/ngx-restworld-client/src/lib/services/restworld-client.ts","../../../projects/ngx-restworld-client/src/lib/services/restworld-client-collection.ts","../../../projects/ngx-restworld-client/src/lib/services/settings.service.ts","../../../projects/ngx-restworld-client/src/lib/views/restworld-image-view/restworld-image-view.component.ts","../../../projects/ngx-restworld-client/src/lib/views/restworld-image-view/restworld-image-view.component.html","../../../projects/ngx-restworld-client/src/lib/views/restworld-file-view/restworld-file-view.component.ts","../../../projects/ngx-restworld-client/src/lib/views/restworld-file-view/restworld-file-view.component.html","../../../projects/ngx-restworld-client/src/lib/views/restworld-edit-form/restworld-edit-form.component.ts","../../../projects/ngx-restworld-client/src/lib/views/restworld-edit-form/restworld-edit-form.component.html","../../../projects/ngx-restworld-client/src/lib/views/restworld-edit-view/restworld-edit-view.component.ts","../../../projects/ngx-restworld-client/src/lib/views/restworld-edit-view/restworld-edit-view.component.html","../../../projects/ngx-restworld-client/src/lib/views/restworld-list-view/restworld-list-view.component.ts","../../../projects/ngx-restworld-client/src/lib/views/restworld-list-view/restworld-list-view.component.html","../../../projects/ngx-restworld-client/src/lib/restworld-client.module.ts","../../../projects/ngx-restworld-client/src/public-api.ts","../../../projects/ngx-restworld-client/src/wertzui-ngx-restworld-client.ts"],"sourcesContent":["export enum LinkNames {\r\n get = \"Get\",\r\n getList = \"GetList\",\r\n post = \"Post\",\r\n put = \"Put\",\r\n delete = \"Delete\",\r\n new = \"New\"\r\n}","import { Injectable, Input } from '@angular/core';\r\nimport { SafeUrl } from '@angular/platform-browser';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AvatarGenerator {\r\n private static _nonWordRegex = new RegExp('\\\\W');\r\n private static _imageCache: Map<string, SafeUrl> = new Map<string, SafeUrl>();\r\n\r\n public getImageAsyncOverride: (nameOrEmail: string) => Promise<SafeUrl> = () => Promise.resolve('');\r\n\r\n public async getImageAsync(nameOrEmail: string): Promise<SafeUrl> {\r\n let promise = AvatarGenerator._imageCache.get(nameOrEmail);\r\n\r\n if (promise === undefined) {\r\n promise = this.getImageAsyncOverride(nameOrEmail);\r\n AvatarGenerator._imageCache.set(nameOrEmail, promise);\r\n }\r\n\r\n return promise;\r\n }\r\n\r\n public async getLabelAsync(nameOrEmail: string): Promise<string> {\r\n if (!nameOrEmail)\r\n return '';\r\n\r\n if (await this.getImageAsync(nameOrEmail))\r\n return '';\r\n\r\n const name = AvatarGenerator.getLocalPartOfEmailAddress(nameOrEmail);\r\n const initials = AvatarGenerator.getTwoUppercaseLettersFromName(name);\r\n\r\n return initials;\r\n }\r\n\r\n public async getStyleAsync(nameOrEmail: string,): Promise<'' | { 'background-color': string; color: string }> {\r\n if (await this.getImageAsync(nameOrEmail))\r\n return '';\r\n\r\n const foregroundColor = '#ffffff';\r\n const backgroundColor = AvatarGenerator.getBackgroundColor(nameOrEmail);\r\n\r\n const style = {\r\n 'background-color': backgroundColor,\r\n color: foregroundColor,\r\n };\r\n\r\n return style;\r\n }\r\n\r\n private static getLocalPartOfEmailAddress(email: string): string {\r\n const indexOfAt = email.indexOf('@');\r\n if (indexOfAt < 2) {\r\n if (indexOfAt >= 0) {\r\n if (indexOfAt === email.length - 1)\r\n return email.substring(0, indexOfAt);\r\n return email.substring(indexOfAt + 1);\r\n }\r\n } else {\r\n return email.substring(0, indexOfAt);\r\n }\r\n\r\n return email;\r\n }\r\n\r\n private static getTwoUppercaseLettersFromName(name: string): string {\r\n // Too short to do anything besides just returning the name\r\n if (name.length <= 2) {\r\n return name.toUpperCase();\r\n }\r\n\r\n // Try to split by non word characters\r\n const splittedByNonWord = name.split(AvatarGenerator._nonWordRegex);\r\n if (splittedByNonWord.length > 1) {\r\n return (splittedByNonWord[0][0] + splittedByNonWord[1][0]).toUpperCase();\r\n }\r\n\r\n // Try to split by upper case letters\r\n const upperCaseLetters = [...name]\r\n .filter((c) => c.toUpperCase() === c && !AvatarGenerator._nonWordRegex.test(c))\r\n .join();\r\n if (upperCaseLetters.length > 1) {\r\n return upperCaseLetters.substring(0, 2);\r\n }\r\n\r\n // Just return the first 2 letters\r\n return name.substring(0, 2).toUpperCase();\r\n }\r\n\r\n // from https://stackoverflow.com/a/66494926/1378307\r\n private static getBackgroundColor(\r\n text: string,\r\n minLightness = 40,\r\n maxLightness = 80,\r\n minSaturation = 30,\r\n maxSaturation = 100,\r\n ): string {\r\n if (!text) return '#aaa';\r\n\r\n const hash = [...text].reduce((acc, char) => {\r\n return char.charCodeAt(0) + ((acc << 5) - acc);\r\n }, 0);\r\n\r\n return (\r\n 'hsl(' +\r\n (hash % 360) +\r\n ', ' +\r\n ((hash % (maxSaturation - minSaturation)) + minSaturation) +\r\n '%, ' +\r\n ((hash % (maxLightness - minLightness)) + minLightness) +\r\n '%)'\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\nimport { SafeUrl } from '@angular/platform-browser';\nimport { AvatarGenerator } from '../../services/avatar-generator';\n\n@Component({\n selector: 'rw-avatar',\n templateUrl: './restworld-avatar.component.html',\n styleUrls: ['./restworld-avatar.component.css']\n})\nexport class RestWorldAvatarComponent implements OnInit{\n @Input()\n user?: string;\n\n private _image: SafeUrl = '';\n public get image(): string { return this._image as string; }\n private _label: string = '';\n public get label(): string { return this._label; }\n private _style: '' | { 'background-color': string; color: string } = '';\n public get style(): '' | { 'background-color': string; color: string; } { return this._style; }\n public get tooltip(): string { return this.user ?? ''; }\n\n constructor(\n private readonly _generator: AvatarGenerator\n ) {\n\n }\n\n async ngOnInit(): Promise<void> {\n if(this.user === undefined || this.user === null)\n return;\n\n this._image = await this._generator.getImageAsync(this.user);\n this._label = await this._generator.getLabelAsync(this.user);\n this._style = await this._generator.getStyleAsync(this.user);\n }\n}\n","<p-avatar [pTooltip]=\"tooltip\" tooltipPosition=\"top\" [image]=\"image\" [label]=\"label\" [style]=\"style\" shape=\"circle\"></p-avatar>\n","import * as _ from \"lodash\";\r\nimport { Resource, ResourceOfDto } from \"@wertzui/ngx-hal-client\"\r\n/*\r\n * ProblemDetails is what an ASP.net Core backend returns in case of an error.\r\n * */\r\nexport interface ProblemDetailsDto {\r\n type?: string;\r\n title?: string;\r\n status?: number;\r\n detail?: string;\r\n instance?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport class ProblemDetails extends Resource implements ResourceOfDto<ProblemDetailsDto> {\r\n public type?: string;\r\n public title?: string;\r\n public status?: number;\r\n public detail?: string;\r\n public instance?: string;\r\n [key: string]: unknown;\r\n\r\n public static isProblemDetails(resource: unknown): resource is ProblemDetails {\r\n return resource instanceof ProblemDetails;\r\n }\r\n\r\n public static containsProblemDetailsInformation(resource: unknown) {\r\n return resource && (resource instanceof ProblemDetails || (resource instanceof Resource && 'status' in resource && _.isNumber(resource['status']) && resource['status'] >= 100 && resource['status'] < 600));\r\n }\r\n\r\n public static fromResource(resource: Resource | null | undefined): ProblemDetails {\r\n if (!ProblemDetails.containsProblemDetailsInformation(resource))\r\n throw new Error(`The resource ${resource} does not have problem details.`);\r\n\r\n return Object.assign(new ProblemDetails(), resource);\r\n }\r\n}\r\n","export class RESTworldOptions {\r\n constructor(public readonly BaseUrl: string, public readonly Version?: number) {\r\n if (!BaseUrl.endsWith('/'))\r\n throw new Error(`The provided BaseUrl '${BaseUrl}' does not end with a slash '/'.`);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport * as _ from 'lodash';\r\n\r\n@Pipe({\r\n name: 'safeUrl'\r\n})\r\nexport class SafeUrlPipe implements PipeTransform {\r\n\r\n constructor(private _domSanitizer: DomSanitizer) {\r\n }\r\n\r\n transform(url: unknown) {\r\n if (!_.isString(url))\r\n throw new Error(`The given url '${url}' is not a string.`)\r\n\r\n return this._domSanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * Cast super type into type using generics\r\n * Return Type obtained by optional @param type OR assignment type.\r\n */\r\n\r\n@Pipe({ name: 'as' })\r\nexport class AsPipe implements PipeTransform {\r\n /**\r\n * Cast (S: SuperType) into (T: Type) using @Generics.\r\n * @param value (S: SuperType) obtained from input type.\r\n * @optional @param type (T CastingType)\r\n * type?: { new (): T }\r\n * type?: new () => T\r\n */\r\n transform<S, T extends S>(value: S, type: new (...args: any[]) => T): T {\r\n return value as T;\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { Property, PropertyType, Template, Templates } from '@wertzui/ngx-hal-client';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormService {\r\n\r\n public createFormGroupsFromTemplates(templates: Templates): { [key: string]: UntypedFormGroup } {\r\n const tabs = Object.fromEntries(Object.entries(templates).map(([name, template]) => [\r\n name,\r\n this.createFormGroupFromTemplate(template)\r\n ]));\r\n\r\n return tabs;\r\n }\r\n\r\n private createFormGroupFromTemplates(templates: Templates, ignoredProperties: string[]): UntypedFormGroup {\r\n const controls = Object.fromEntries(\r\n Object.entries(templates)\r\n .filter(([key, ]) => !ignoredProperties.some(p => key === p))\r\n .map(([name, template]) => [\r\n name,\r\n this.createFormGroupFromTemplate(template)\r\n ]));\r\n const formGroup = new UntypedFormGroup(controls);\r\n return formGroup;\r\n }\r\n\r\n public createFormArrayFromTemplates(templates: Templates, ignoredProperties: string[]): UntypedFormArray {\r\n const controls =\r\n Object.entries(templates)\r\n .filter(([key, ]) => !ignoredProperties.some(p => key === p))\r\n .map(([, template]) =>\r\n this.createFormGroupFromTemplate(template));\r\n const formArray = new UntypedFormArray(controls);\r\n return formArray;\r\n }\r\n\r\n public createFormGroupFromTemplate(template: Template): UntypedFormGroup {\r\n const controls = Object.fromEntries(template.properties.map(p => [\r\n p.name,\r\n this.createFormControl(p)\r\n ]));\r\n const formGroup = new UntypedFormGroup(controls);\r\n return formGroup;\r\n }\r\n\r\n public createFormControl(property: Property): UntypedFormControl | UntypedFormGroup | UntypedFormArray {\r\n if (property.type === PropertyType.Object)\r\n return this.createFormGroupFromTemplate(property._templates['default']);\r\n if (property.type === PropertyType.Collection)\r\n return this.createFormArrayFromTemplates(property._templates, ['default']);\r\n\r\n const control = new UntypedFormControl(property.value);\r\n if (property.max)\r\n control.addValidators(Validators.max(property.max));\r\n if (property.maxLength)\r\n control.addValidators(Validators.maxLength(property.maxLength));\r\n if (property.min)\r\n control.addValidators(Validators.min(property.min));\r\n if (property.minLength)\r\n control.addValidators(Validators.minLength(property.minLength));\r\n if (property.regex)\r\n control.addValidators(Validators.pattern(property.regex));\r\n if (property.required)\r\n control.addValidators(Validators.required);\r\n if (property.type === PropertyType.Email)\r\n control.addValidators(Validators.email);\r\n\r\n return control;\r\n }\r\n}\r\n","import { FilterMatchMode, FilterMetadata, LazyLoadEvent } from 'primeng/api';\r\nimport { Property, PropertyType, Template } from '@wertzui/ngx-hal-client';\r\n\r\nexport class ODataService {\r\n public static createFilterForProperty(property: Property, filter: FilterMetadata): string | undefined {\r\n if (!filter.value)\r\n return undefined;\r\n\r\n const oDataOperator = ODataService.createODataOperator(\r\n filter.matchMode,\r\n );\r\n const comparisonValue = ODataService.createComparisonValue(property, filter.value);\r\n\r\n switch (oDataOperator) {\r\n case 'contains':\r\n case 'not contains':\r\n case 'startswith':\r\n case 'endswith':\r\n return `${oDataOperator}(${property}, ${comparisonValue})`;\r\n default:\r\n return `${property} ${oDataOperator} ${comparisonValue}`;\r\n }\r\n }\r\n\r\n public static createFilterForPropertyArray(property: Property, filters: FilterMetadata[]): string | undefined {\r\n const filter = filters\r\n .map(f => ODataService.createFilterForProperty(property, f))\r\n .filter(f => !!f)\r\n .join(` ${filters[0].operator} `);\r\n\r\n if (filter === '')\r\n return undefined;\r\n\r\n return `(${filter})`;\r\n }\r\n\r\n public static createFilterFromTableLoadEvent(event: LazyLoadEvent, properties?: Property[]): string | undefined {\r\n if (!event.filters || properties === undefined)\r\n return undefined;\r\n\r\n const filter = Object.entries(event.filters)\r\n // The type definition is wrong, event.filters has values of type FilterMetadata[] and not FilterMetadata.\r\n .map(([propertyName, filter]) => ({ property: ODataService.findPropertyByName(properties, propertyName), filters: filter as FilterMetadata[] }))\r\n .map(f => ODataService.createFilterForPropertyArray(f.property, f.filters))\r\n .filter(f => !!f)\r\n .join(' and ');\r\n\r\n if (filter === '')\r\n return undefined;\r\n\r\n return `(${filter})`;\r\n }\r\n\r\n public static createOrderByFromTableLoadEvent(event: LazyLoadEvent): string | undefined {\r\n if (event.sortField) {\r\n const order = !event.sortOrder || event.sortOrder > 0 ? 'asc' : 'desc';\r\n return `${event.sortField} ${order}`;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public static createParametersFromTableLoadEvent(event: LazyLoadEvent, template?: Template) {\r\n const oDataParameters = {\r\n $filter: ODataService.createFilterFromTableLoadEvent(event, template?.properties),\r\n $orderby: ODataService.createOrderByFromTableLoadEvent(event),\r\n $top: ODataService.createTopFromTableLoadEvent(event),\r\n $skip: ODataService.createSkipFromTableLoadEvent(event)\r\n };\r\n\r\n return oDataParameters;\r\n }\r\n\r\n public static createSkipFromTableLoadEvent(event: LazyLoadEvent): number | undefined {\r\n return event.first;\r\n }\r\n\r\n public static createTopFromTableLoadEvent(event: LazyLoadEvent): number | undefined {\r\n return event.rows;\r\n }\r\n\r\n private static createComparisonValue(property: Property, value: unknown): string {\r\n if (value === null || value === undefined)\r\n return 'null';\r\n\r\n const type = property.type;\r\n\r\n switch (type) {\r\n case PropertyType.Date:\r\n return `cast(${(value as Date).toISOString()}, Edm.DateOnly)`;\r\n case PropertyType.DatetimeLocal:\r\n return `cast(${(value as Date).toISOString()}, Edm.DateTime)`;\r\n case PropertyType.DatetimeOffset:\r\n return `cast(${(value as Date).toISOString()}, Edm.DateTimeOffset)`;\r\n case PropertyType.Time:\r\n return `cast(${(value as Date).toISOString()}, Edm.TimeOnly)`;\r\n case PropertyType.Duration:\r\n return `cast(${(value as Date).toISOString()}, Edm.TimeSpan)`;\r\n default:\r\n return `'${value}'`;\r\n }\r\n }\r\n\r\n private static createODataOperator(matchMode?: string): string {\r\n switch (matchMode) {\r\n case FilterMatchMode.STARTS_WITH:\r\n return 'startswith';\r\n case FilterMatchMode.CONTAINS:\r\n return 'contains';\r\n case FilterMatchMode.NOT_CONTAINS:\r\n return 'not contains';\r\n case FilterMatchMode.ENDS_WITH:\r\n return 'endswith';\r\n case FilterMatchMode.EQUALS:\r\n return 'eq';\r\n case FilterMatchMode.NOT_EQUALS:\r\n return 'ne';\r\n case FilterMatchMode.IN:\r\n return 'in';\r\n case FilterMatchMode.LESS_THAN:\r\n return 'lt';\r\n case FilterMatchMode.LESS_THAN_OR_EQUAL_TO:\r\n return 'le';\r\n case FilterMatchMode.GREATER_THAN:\r\n return 'gt';\r\n case FilterMatchMode.GREATER_THAN_OR_EQUAL_TO:\r\n return 'ge';\r\n case FilterMatchMode.IS:\r\n return 'eq';\r\n case FilterMatchMode.IS_NOT:\r\n return 'ne';\r\n case FilterMatchMode.BEFORE:\r\n return 'lt';\r\n case FilterMatchMode.AFTER:\r\n return 'gt';\r\n case FilterMatchMode.DATE_AFTER:\r\n return 'ge';\r\n case FilterMatchMode.DATE_BEFORE:\r\n return 'lt';\r\n case FilterMatchMode.DATE_IS:\r\n return 'eq';\r\n case FilterMatchMode.DATE_IS_NOT:\r\n return 'ne';\r\n default:\r\n throw Error(`Unknown matchMode ${matchMode}`);\r\n }\r\n }\r\n\r\n private static findPropertyByName(properties: Property[], propertyName: string): Property {\r\n const property = properties.find(p => p.name === propertyName);\r\n if (property === undefined)\r\n throw new Error(`Cannot find a property with the name ${propertyName} in the properties of the search form template.`);\r\n\r\n return property;\r\n }\r\n}\r\n","import { HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport * as _ from \"lodash\";\r\nimport { FormsResource, HalClient, Link, PagedListResource, Property, Resource, ResourceDto, Template, Templates } from \"@wertzui/ngx-hal-client\";\r\nimport { LinkNames } from \"../constants/link-names\";\r\nimport { ProblemDetails } from \"../models/problem-details\";\r\nimport { RESTworldOptions } from \"../models/restworld-options\";\r\nimport { lastValueFrom } from 'rxjs';\r\n\r\nexport class RESTworldClient {\r\n private _defaultCurie?: string;\r\n private _homeResource?: Resource;\r\n\r\n constructor(\r\n private _halClient: HalClient,\r\n private _options: RESTworldOptions\r\n ) { }\r\n\r\n public get halClient() {\r\n return this._halClient;\r\n }\r\n\r\n private static combineHeaders(originalHeaders: HttpHeaders | undefined, headersToAdd: HttpHeaders | undefined, overwriteExisting: boolean) {\r\n if (!headersToAdd)\r\n return originalHeaders;\r\n if (!originalHeaders)\r\n return headersToAdd;\r\n\r\n let combinedHeaders = originalHeaders;\r\n\r\n for (const key in headersToAdd.keys) {\r\n if (!combinedHeaders.has(key) || overwriteExisting) {\r\n const headerValuesToAdd = headersToAdd.getAll(key);\r\n if (headerValuesToAdd)\r\n combinedHeaders = combinedHeaders.set(key, headerValuesToAdd);\r\n }\r\n }\r\n\r\n return combinedHeaders;\r\n }\r\n\r\n private static createHeaders(mediaType?: 'application/hal+json' | 'application/prs.hal-forms+json' | 'text/csv', version?: number): HttpHeaders {\r\n if (version)\r\n return new HttpHeaders({\r\n 'Accept': `${mediaType || 'application/hal+json'}; v=${version}`,\r\n 'Content-Type': `${mediaType || 'application/hal+json'}; v=${version}`\r\n });\r\n return new HttpHeaders();\r\n }\r\n\r\n public async delete(resource: Resource): Promise<HttpResponse<void | ProblemDetails>> {\r\n const deleteLink = resource.findLink('delete');\r\n if (!deleteLink)\r\n throw new Error(`The resource ${resource} does not have a delete link.`);\r\n const uri = deleteLink.href;\r\n const header = RESTworldClient.createHeaders('application/hal+json', this._options.Version);\r\n\r\n const response = await this.halClient.delete(uri, ProblemDetails, header);\r\n\r\n return response;\r\n }\r\n\r\n public async ensureHomeResourceIsSet(): Promise<void> {\r\n if (!this._homeResource) {\r\n const response = await this.getHomeForced();\r\n if (ProblemDetails.isProblemDetails(response.body)) {\r\n throw new Error(`Cannot get the home resource from ${this._options.BaseUrl} with Version ${this._options.Version}. Response was: ${response}`);\r\n }\r\n if (!response.body)\r\n throw new Error(`Cannot get the home resource from ${this._options.BaseUrl} with Version ${this._options.Version}. Response was empty.`);\r\n this._homeResource = response.body;\r\n this.setDefaultCurie();\r\n }\r\n }\r\n\r\n public async getAllForms(resource: Resource): Promise<HttpResponse<FormsResource | ProblemDetails>[]> {\r\n const urls = resource.getFormLinkHrefs();\r\n const header = RESTworldClient.createHeaders('application/prs.hal-forms+json', this._options.Version);\r\n const formsPromises = urls.map(url => this._halClient.get(url, FormsResource, ProblemDetails, header));\r\n const formsAndProblems = await Promise.all(formsPromises);\r\n return formsAndProblems;\r\n }\r\n\r\n public getAllLinksFromHome(): { [rel: string]: Link[] | undefined; } {\r\n if (!this._homeResource)\r\n throw new Error('Home resource is not set. Call ensureHomeResourceIsSet() first.');\r\n\r\n return this._homeResource._links;\r\n }\r\n\r\n public async getAllPagesFromList<TListDto extends ResourceDto>(rel: string, parameters: {}, headers?: HttpHeaders, curie?: string): Promise<HttpResponse<PagedListResource<TListDto> | ProblemDetails>> {\r\n const link = this.getLinkFromHome(rel, LinkNames.getList, curie);\r\n const uri = link.href;\r\n\r\n const response = await this.getAllPagesFromListByUri<TListDto>(uri, parameters, headers);\r\n\r\n return response;\r\n }\r\n\r\n public async getAllPagesFromListByUri<TListDto extends ResourceDto>(uri: string, parameters: {}, headers?: HttpHeaders): Promise<HttpResponse<PagedListResource<TListDto> | ProblemDetails>> {\r\n const response = await this.getListByUri<TListDto>(uri, parameters, headers);\r\n\r\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body?._embedded?.items)\r\n return response;\r\n\r\n const items = response.body._embedded.items;\r\n let lastResponse = response;\r\n\r\n while ((lastResponse?.body?._links?.next?.length ?? 0) > 0) {\r\n // Get the next response\r\n const nextLinks = lastResponse.body?._links.next;\r\n const nextLink = nextLinks ? nextLinks[0]: undefined;\r\n const nextHref = nextLink?.href;\r\n if (nextHref) {\r\n lastResponse = await this.getListByUri<TListDto>(nextHref, parameters, headers);\r\n\r\n if (!lastResponse.ok || ProblemDetails.isProblemDetails(lastResponse.body) || !lastResponse.body)\r\n return lastResponse;\r\n\r\n // Combine the embedded items\r\n lastResponse.body?._embedded?.items?.forEach(r => items.push(r));\r\n }\r\n }\r\n\r\n // We combined everything, so there is just one big page\r\n response.body.totalPages = 1;\r\n response.body._links.next = undefined;\r\n\r\n return response;\r\n }\r\n\r\n public async getAllTemplates(resource: Resource): Promise<Templates> {\r\n const formResponses = await this.getAllForms(resource);\r\n\r\n const failedResponses = formResponses.filter(response => !response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body);\r\n if (failedResponses.length !== 0) {\r\n for (const response of failedResponses) {\r\n throw new Error(`Error while loading the response from ${response.url}, Status ${response.status} - ${response.statusText}, Content: ${response.body}`);\r\n }\r\n return Promise.resolve({});\r\n }\r\n\r\n const formTemplates = Object.assign({}, ...formResponses.map(response => (response.body as FormsResource)._templates)) as Templates;\r\n\r\n await this.setInitialSelectedOptionsElementsForTemplates(formTemplates, false);\r\n\r\n return formTemplates;\r\n }\r\n\r\n public getLinkFromHome(rel: string, name?: string, curie?: string): Link {\r\n const links = this.getLinksFromHome(rel, curie);\r\n\r\n const link = name ? links.find(l => l.name === name) : links[0];\r\n\r\n if (!link)\r\n throw new Error(`The home resource does not have a link with the rel '${this.getFullRel(rel, curie)}' and the name '${name}'.`);\r\n\r\n return link;\r\n }\r\n\r\n public getLinksFromHome(rel: string, curie?: string): Link[] {\r\n if (!this._homeResource)\r\n throw new Error('Home resource is not set. Call ensureHomeResourceIsSet() first.');\r\n\r\n const fullRel = this.getFullRel(rel, curie);\r\n const links = this._homeResource._links[fullRel];\r\n if (!links || links.length === 0)\r\n throw Error(`The home resource does not have a link with the rel '${fullRel}'.`);\r\n\r\n return links;\r\n }\r\n\r\n public async getList<TListDto extends ResourceDto>(rel: string, parameters: {}, headers?: HttpHeaders, curie?: string): Promise<HttpResponse<PagedListResource<TListDto> | ProblemDetails>> {\r\n const link = this.getLinkFromHome(rel, LinkNames.getList, curie);\r\n const uri = link.href\r\n\r\n const response = await this.getListByUri<TListDto>(uri, parameters, headers);\r\n\r\n return response;\r\n }\r\n\r\n public async getListAsCsv(rel: string, parameters: {}, headers?: HttpHeaders, curie?: string): Promise<HttpResponse<Blob> | undefined> {\r\n const link = this.getLinkFromHome(rel, LinkNames.getList, curie);\r\n const uri = link.href;\r\n\r\n const response = await this.getListByUriAsCsv(uri, parameters, headers);\r\n\r\n return response;\r\n }\r\n\r\n public async getListByUri<TListDto extends ResourceDto>(uri: string, parameters: {}, headers?: HttpHeaders): Promise<HttpResponse<PagedListResource<TListDto> | ProblemDetails>> {\r\n const link = new Link();\r\n link.href = uri;\r\n const filledUri = link.fillTemplate(parameters);\r\n const defaultHeaders = RESTworldClient.createHeaders('application/hal+json', this._options.Version);\r\n const combinedHeaders = RESTworldClient.combineHeaders(headers, defaultHeaders, false);\r\n\r\n const response = await this.halClient.get<PagedListResource<TListDto>, ProblemDetails>(filledUri, PagedListResource, ProblemDetails, combinedHeaders);\r\n\r\n return response;\r\n }\r\n\r\n public async getListByUriAsCsv(uri: string, parameters: {}, headers?: HttpHeaders): Promise<HttpResponse<Blob> | undefined> {\r\n const link = new Link();\r\n link.href = uri;\r\n const filledUri = link.fillTemplate(parameters);\r\n const defaultHeaders = RESTworldClient.createHeaders('text/csv', this._options.Version);\r\n const combinedHeaders = RESTworldClient.combineHeaders(headers, defaultHeaders, false);\r\n\r\n const response = await lastValueFrom(this.halClient.httpClient.get(filledUri, { headers: combinedHeaders, responseType: 'blob', observe: 'response' }));\r\n\r\n return response;\r\n }\r\n\r\n public async getSingle(relOrUri: string, id?: number, headers?: HttpHeaders, curie?: string): Promise<HttpResponse<Resource | ProblemDetails>> {\r\n let uri;\r\n if (relOrUri.startsWith('http')) {\r\n if (id !== undefined)\r\n throw new Error('When supplying a URI, an ID cannot be supplied too.');\r\n if (curie)\r\n throw new Error('When supplying a URI, a curie cannot be supplied too.');\r\n\r\n uri = relOrUri;\r\n }\r\n else {\r\n if (!_.isNumber(id))\r\n throw new Error('When supplying a rel, an ID must be supplied too.');\r\n\r\n const link = this.getLinkFromHome(relOrUri, LinkNames.get, curie);\r\n uri = link.fillTemplate({ id: id.toString() });\r\n }\r\n\r\n const defaultHeaders = RESTworldClient.createHeaders('application/hal+json', this._options.Version);\r\n const combinedHeaders = RESTworldClient.combineHeaders(headers, defaultHeaders, false);\r\n const response = await this.halClient.get(uri, Resource, ProblemDetails, combinedHeaders);\r\n\r\n return response;\r\n }\r\n\r\n public async save(resource: Resource): Promise<HttpResponse<Resource | ProblemDetails>> {\r\n const saveLink = resource.findLink('save');\r\n if (!saveLink)\r\n throw new Error(`The resource ${resource} does not have a save link.`);\r\n if (!saveLink.name)\r\n throw new Error(`The save link ${saveLink} does not have a save name.`);\r\n\r\n const uri = saveLink.href;\r\n const method = saveLink.name.toLowerCase();\r\n const header = RESTworldClient.createHeaders('application/hal+json', this._options.Version);\r\n\r\n let response;\r\n switch (method) {\r\n case 'put':\r\n response = await this.halClient.put(uri, resource, Resource, ProblemDetails, header);\r\n break;\r\n case 'post':\r\n response = await this.halClient.post(uri, resource, Resource, ProblemDetails, header);\r\n break;\r\n default:\r\n throw new Error(`'${method}' is not allowed as link name for the save link. Only 'POST' and 'PUT' are allowed.`);\r\n }\r\n\r\n return response;\r\n }\r\n\r\n public async submit(template: Template, formValues: {}): Promise<HttpResponse<FormsResource | ProblemDetails>> {\r\n const uri = template.target || '';\r\n const method = template.method?.toLowerCase();\r\n const header = RESTworldClient.createHeaders('application/prs.hal-forms+json', this._options.Version);\r\n\r\n let response;\r\n switch (method) {\r\n case 'put':\r\n response = await this.halClient.put(uri, formValues, FormsResource, ProblemDetails, header);\r\n break;\r\n case 'post':\r\n response = await this.halClient.post(uri, formValues, FormsResource, ProblemDetails, header);\r\n break;\r\n default:\r\n response = await this.halClient.get(uri, FormsResource, ProblemDetails, header);\r\n }\r\n\r\n return response;\r\n }\r\n\r\n private getFullRel(rel: string, curie?: string): string {\r\n // rel already includes a curie => just return it\r\n if (rel.includes(':'))\r\n return rel;\r\n\r\n // No curie given => use default curie.\r\n if (!curie)\r\n curie = this._defaultCurie;\r\n\r\n // Combine curie and rel\r\n const fullRel = `${curie}:${rel}`;\r\n\r\n return fullRel;\r\n }\r\n\r\n private async getHomeForced(): Promise<HttpResponse<Resource | ProblemDetails>> {\r\n const header = RESTworldClient.createHeaders('application/hal+json', this._options.Version);\r\n const response = await this.halClient.get(this._options.BaseUrl, Resource, ProblemDetails, header);\r\n return response;\r\n }\r\n\r\n private setDefaultCurie(): void {\r\n const curies = this._homeResource?._links?.curies;\r\n if (!curies || curies.length === 0 || !curies[0])\r\n this._defaultCurie = undefined;\r\n else\r\n this._defaultCurie = curies[0].name;\r\n }\r\n\r\n private async setInitialSelectedOptionsElementForProperty(property: Property): Promise<void> {\r\n const options = property?.options;\r\n\r\n if (!options?.link?.href)\r\n return;\r\n\r\n const templatedUri = options.link.href;\r\n const filter = `${options.valueField} eq ${property.value}`;\r\n const response = await this.getListByUri(templatedUri, { $filter: filter, $top: 10 });\r\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body) {\r\n throw new Error(`An error occurred while getting the filtered items from ${response.url}, Status ${response.status} - ${response.statusText}, Content: ${response.body}`);\r\n }\r\n\r\n const items = response.body._embedded.items;\r\n options.inline = items;\r\n }\r\n\r\n private async setInitialSelectedOptionsElementsForTemplate(template: Template): Promise<void> {\r\n const propertyPromises = template.properties\r\n .filter(property => property?.options?.link?.href)\r\n .map(property => this.setInitialSelectedOptionsElementForProperty(property));\r\n const nestedTemplatePromised = template.properties\r\n .filter(property => property?._templates)\r\n .map(property => this.setInitialSelectedOptionsElementsForTemplates(property._templates, true));\r\n const allPromises = propertyPromises.concat(nestedTemplatePromised);\r\n\r\n await Promise.all(allPromises);\r\n }\r\n\r\n private async setInitialSelectedOptionsElementsForTemplates(templates: Templates, skipDefaultTemplate: boolean): Promise<void> {\r\n await Promise.all(Object.entries(templates)\r\n .filter(([name,]) => !skipDefaultTemplate || name !== 'default')\r\n .map(([, template]) => this.setInitialSelectedOptionsElementsForTemplate(template)));\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HalClient } from \"@wertzui/ngx-hal-client\";\r\nimport { RESTworldOptions } from \"../models/restworld-options\";\r\nimport { RESTworldClient } from \"./restworld-client\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RESTworldClientCollection {\r\n private readonly _clients: {\r\n [name: string]: RESTworldClient;\r\n };\r\n constructor(private _halClient: HalClient) {\r\n this._clients = {};\r\n }\r\n\r\n public containsClient(name: string): boolean {\r\n return Object.keys(this._clients).includes(name);\r\n }\r\n\r\n public async addOrGetExistingClient(name: string, options: RESTworldOptions): Promise<RESTworldClient> {\r\n if (Object.keys(this._clients).includes(name))\r\n return this.getClient(name);\r\n\r\n const client = new RESTworldClient(this._halClient, options);\r\n await client.ensureHomeResourceIsSet();\r\n this._clients[name] = client;\r\n return client;\r\n }\r\n\r\n public getClient(name: string): RESTworldClient {\r\n const client = this._clients[name];\r\n if (!client)\r\n throw new Error(`No client with the name '${name}' exists.`);\r\n\r\n return client;\r\n }\r\n\r\n public get all(): { [name: string]: RESTworldClient } {\r\n return this._clients;\r\n }\r\n}","import { HttpBackend, HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ClientSettings } from \"../models/client-settings\";\r\nimport { RESTworldOptions } from \"../models/restworld-options\";\r\nimport { RESTworldClientCollection } from \"./restworld-client-collection\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SettingsService {\r\n private static _settings: ClientSettings | undefined;\r\n public get settings(): ClientSettings | undefined {\r\n return SettingsService._settings;\r\n }\r\n\r\n private initializing = false;\r\n private initialized = false;\r\n\r\n constructor(\r\n private _clients: RESTworldClientCollection) {\r\n }\r\n\r\n public async ensureInitialized(): Promise<void> {\r\n if (this.initializing || this.initialized)\r\n return;\r\n\r\n this.initializing = true;\r\n\r\n await SettingsService.ensureSettingsAreLoaded();\r\n await this.populateRESTworldClientCollectionFromSettings();\r\n\r\n this.initialized = true;\r\n this.initializing = false;\r\n\r\n }\r\n\r\n /**\r\n * Call this method in your main.ts before calling bootstrapModule(...)\r\n * \r\n * Example:\r\n * async function main() {\r\n * try {\r\n * await SettingsService.ensureSettingsAreLoaded();\r\n * \r\n * const providers : StaticProvider[] = [\r\n * { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }\r\n * ];\r\n * \r\n * await platformBrowserDynamic(providers).bootstrapModule(AppModule);\r\n * }\r\n * catch (e) {\r\n * console.error(e);\r\n * }\r\n * }\r\n * \r\n * main();\r\n * */\r\n public static async ensureSettingsAreLoaded(): Promise<void> {\r\n if (SettingsService._settings === undefined) {\r\n const response = await fetch('/settings');\r\n const settings: ClientSettings = await response.json();\r\n SettingsService._settings = settings;\r\n }\r\n }\r\n\r\n private async populateRESTworldClientCollectionFromSettings(): Promise<void> {\r\n if (!this.settings?.apiUrls)\r\n return;\r\n\r\n await Promise.all(this.settings.apiUrls\r\n .map(api => this._clients.addOrGetExistingClient(api.name, new RESTworldOptions(api.url, api.version))));\r\n }\r\n\r\n}\r\n","import { AfterViewInit, Component, forwardRef, Input, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CropperPosition, ImageCroppedEvent, ImageCropperComponent, OutputFormat } from 'ngx-image-cropper';\r\nimport { FileUpload } from 'primeng/fileupload';\r\nimport { Dialog } from 'primeng/dialog'\r\nimport { async, firstValueFrom, Subscription } from 'rxjs';\r\n\n@Component({\n selector: 'rw-image',\n templateUrl: './restworld-image-view.component.html',\n styleUrls: ['./restworld-image-view.component.css'],\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RESTWorldImageViewComponent),\r\n multi: true\r\n }]\n})\nexport class RESTWorldImageViewComponent implements ControlValueAccessor, OnInit, OnDestroy, AfterViewInit {\n\r\n private onChange?: Function;\n private _subscriptions?: Subscription[];\n\n @Input()\n public alt?: string;\n @Input()\n public accept?: string;\n @Input()\n public fileName?: string;\n @Input()\r\n public alignImage?: 'center' | 'left';\r\n @Input()\r\n public aspectRatio?: number;\r\n @Input()\r\n public backgroundColor?: string;\r\n @Input()\r\n public canvasRotation?: number;\r\n @Input()\r\n public containWithinAspectRatio?: boolean;\r\n @Input()\r\n public cropper?: CropperPosition;\r\n @Input()\r\n public cropperMaxHeight?: number;\r\n @Input()\r\n public cropperMaxWidth?: number;\r\n @Input()\r\n public cropperMinHeight?: number;\r\n @Input()\r\n public cropperMinWidth?: number;\r\n @Input()\r\n public cropperStaticHeight?: number;\r\n @Input()\r\n public cropperStaticWidth?: number;\r\n @Input()\r\n public format?: OutputFormat;\r\n @Input()\r\n public imageQuality?: number;\r\n @Input()\r\n public initialStepSize?: number;\r\n @Input()\r\n public maintainAspectRatio?: boolean;\r\n @Input()\r\n public onlyScaleDown?: boolean;\r\n @Input()\r\n public resizeToWidth?: number;\r\n @Input()\r\n public resizeToHeight?: number;\r\n @Input()\r\n public roundCropper?: boolean;\r\n\n\n\r\n @ViewChildren(FileUpload)\r\n fileUploads?: QueryList<FileUpload>;\n\n\r\n @ViewChildren(ImageCropperComponent)\n imageCroppers?: QueryList<ImageCropperComponent>;\n\n @ViewChildren(Dialog)\n dialogs?: QueryList<Dialog>;\n\n public disabled = false;\n public uri?: string | null;\r\n public tempImageFile?: File;\r\n public displayCropDialog = false;\n public tempCroppedUri?: string | null;\n\n writeValue(obj?: string | null): void {\r\n this.uri = obj;\r\n }\r\n registerOnChange(fn?: Function): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(): void {\r\n // not needed for this component, but needed to implement the interface\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnInit(): void {\r\n // If no background color is set, we set it to white.\r\n // Otherwise the color picker would show red, the input would be empty and the image cropper would show transparent.\r\n if (!this.backgroundColor)\r\n this.backgroundColor = '#ffffff';\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscriptions?.forEach(s => s.unsubscribe());\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // We need to trigger imageLoadedInView each time, after the opening animation of the dialog has been completed.\r\n // Otherwise the image cropper initially (and after every window resize) thinks that the image size is 0x0,\r\n // because the opening animation hast just begun when the image cropper is first shown.\r\n this.dialogs?.map(d => d.onShow.subscribe(() =>\r\n this.imageCroppers?.forEach(i => { i.imageLoadedInView(); })\r\n ));\r\n }\r\n\r\n public showCropDialog(): void {\r\n this.displayCropDialog = true;\r\n }\r\n\n public imageChanged(event: { files: File[] }): void {\r\n this.tempImageFile = event.files[0];\r\n this.showCropDialog();\r\n }\n\n public croppedImageChanged(event: ImageCroppedEvent): void {\r\n this.tempCroppedUri = event.base64;\r\n }\n\r\n public acceptCroppedImage(): void {\r\n this.uri = this.tempCroppedUri;\r\n this.onChange?.(this.uri);\r\n this.closeCropDialog();\r\n }\r\n\r\n public closeCropDialog(): void {\r\n this.fileUploads?.forEach(f => f.clear());\r\n this.displayCropDialog = false;\r\n }\n}\n","<div class=\"flex align-items-center\">\r\n <p-button *ngIf=\"!uri\" [disabled]=\"true\" icon=\"pi pi-download\" class=\"mr-1\" pTooltip=\"No image present\"></p-button>\r\n <a *ngIf=\"uri\" [href]=\"uri | safeUrl\" [download]=\"fileName || 'download'\" class=\"mr-1\" pButton pTooltip=\"Download image\" icon=\"pi pi-download\"></a>\r\n <p-fileUpload class=\"mr-1\" chooseIcon=\"pi-upload fas fa-upload\" mode=\"basic\" [auto]=\"true\" [accept]=\"accept || 'image/*'\" [customUpload]=\"true\" (uploadHandler)=\"imageChanged($event)\" pTooltip=\"Upload new image\"></p-fileUpload>\r\n <img *ngIf=\"uri\" class=\"thumbnail\" [src]=\"uri | safeUrl\" [alt]=\"alt\" (click)=\"showCropDialog()\" pTooltip=\"Zoom and crop\" />\r\n</div>\r\n\r\n<p-dialog [header]=\"alt ?? ''\" [(visible)]=\"displayCropDialog\">\r\n <image-cropper\r\n [autoCrop]=\"true\"\r\n (imageCropped)=\"croppedImageChanged($event)\"\r\n [alignImage]=\"alignImage ?? 'center'\"\r\n [aspectRatio]=\"aspectRatio ?? 1\"\r\n [backgroundColor]=\"backgroundColor ?? null\"\r\n [canvasRotation]=\"canvasRotation ?? 0\"\r\n [containWithinAspectRatio]=\"containWithinAspectRatio ?? false\"\r\n [cropper]=\"cropper ?? { x1: -100, y1: -100, x2: 10000, y2: 10000 }\"\r\n [cropperMaxHeight]=\"cropperMaxHeight ?? 0\"\r\n [cropperMaxWidth]=\"cropperMaxWidth ?? 0\"\r\n [cropperMinHeight]=\"cropperMinHeight ?? 0\"\r\n [cropperMinWidth]=\"cropperMinWidth ?? 0\"\r\n [cropperStaticHeight]=\"cropperStaticHeight ?? 0\"\r\n [cropperStaticWidth]=\"cropperStaticWidth ?? 0\"\r\n [format]=\"format ?? 'png'\"\r\n [imageQuality]=\"imageQuality ?? 92\"\r\n [initialStepSize]=\"initialStepSize ?? 3\"\r\n [maintainAspectRatio]=\"maintainAspectRatio ?? true\"\r\n [onlyScaleDown]=\"onlyScaleDown ?? false\"\r\n [resizeToWidth]=\"resizeToWidth ?? 0\"\r\n [resizeToHeight]=\"resizeToHeight ?? 0\"\r\n [roundCropper]=\"roundCropper ?? false\"\r\n [imageFile]=\"tempImageFile!\"\r\n [imageURL]=\"uri!\"\r\n ></image-cropper>\r\n <div class=\"flex justify-content-end\">\r\n <div class=\"flex-auto align-items-center\">\r\n <span>Background color: </span>\r\n <p-colorPicker [(ngModel)]=\"backgroundColor\" appendTo=\"body\" class=\"ml-1 mr-1\"></p-colorPicker>\r\n <input pInputText [(ngModel)]=\"backgroundColor\" />\r\n </div>\r\n <button type=\"button\" pButton pRipple (click)=\"acceptCroppedImage()\" class=\"mr-2\">Ok</button>\r\n <button type=\"button\" pButton pRipple (click)=\"closeCropDialog()\">Cancel</button>\r\n </div>\r\n</p-dialog>\r\n","import { Component, forwardRef, Input, QueryList, ViewChildren } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FileUpload } from 'primeng/fileupload';\r\n\n@Component({\n selector: 'rw-file',\n templateUrl: './restworld-file-view.component.html',\n styleUrls: ['./restworld-file-view.component.css'],\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RESTWorldFileViewComponent),\r\n multi: true\r\n }]\n})\nexport class RESTWorldFileViewComponent implements ControlValueAccessor {\n private onChange?: Function;\n @Input()\n public accept?: string;\n\n @Input()\n public fileName?: string;\n\r\n @ViewChildren(FileUpload)\r\n fileUploads?: QueryList<FileUpload>;\n\n public disabled = false;\n public uri?: string;\r\n\n writeValue(obj?: string): void {\r\n this.uri = obj;\r\n }\r\n registerOnChange(fn?: Function): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(): void {\r\n // not needed for this component, but needed to implement the interface\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\n\n public fileChanged(event: { files: File[] }): void {\r\n const file = event.files[0];\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n this.uri = reader.result as string;\r\n this.onChange?.(this.uri);\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n }\n}\n","<div class=\"flex align-items-center\">\r\n <p-button *ngIf=\"!uri\" [disabled]=\"true\" icon=\"pi pi-download\" class=\"mr-1\" pTooltip=\"No file present\"></p-button>\r\n <a *ngIf=\"uri\" [href]=\"uri | safeUrl\" [download]=\"fileName || 'download'\" class=\"mr-1\" pButton pTooltip=\"Download file\" icon=\"pi pi-download\"></a>\r\n <p-fileUpload chooseIcon=\"pi-upload fas fa-upload\" pTooltip=\"Upload new file\" mode=\"basic\" [auto]=\"true\" [accept]=\"accept || ''\" [customUpload]=\"true\" (uploadHandler)=\"fileChanged($event)\"></p-fileUpload>\r\n</div>\r\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { OnInit } from '@angular/core';\nimport { ChangeDetectorRef } from '@angular/core';\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { Property, PropertyPromptDisplayType, PropertyType, Resource, Template, TemplateDto } from '@wertzui/ngx-hal-client';\nimport { MessageService } from 'primeng/api';\nimport { ProblemDetails } from '../../models/problem-details';\nimport { FormService } from '../../services/form.service';\nimport { RESTworldClient } from '../../services/restworld-client';\nimport { RESTworldClientCollection } from '../../services/restworld-client-collection';\n\n@Component({\n selector: 'rw-form',\n templateUrl: './restworld-edit-form.component.html',\n styleUrls: ['./restworld-edit-form.component.css']\n})\nexport class RestworldEditFormComponent implements OnInit {\n @Input()\n formGroup!: FormGroup<any>;\n\n @Input()\n template!: Template;\n\n @Input()\n apiName?: string;\n\n @ContentChild('inputOptionsSingle', { static: false })\n inputOptionsSingleRef?: TemplateRef<unknown>;\n\n @ContentChild('inputOptionsMultiple', { static: false })\n inputOptionsMultipleRef?: TemplateRef<unknown>;\n\n @ContentChild('inputOptions', { static: false })\n inputOptionsRef?: TemplateRef<unknown>;\n\n @ContentChild('inputHidden', { static: false })\n inputHiddenRef?: TemplateRef<unknown>;\n\n @ContentChild('inputText', { static: false })\n inputTextRef?: TemplateRef<unknown>;\n\n @ContentChild('inputTextarea', { static: false })\n inputTextareaRef?: TemplateRef<unknown>;\n\n @ContentChild('inputSearch', { static: false })\n inputSearchRef?: TemplateRef<unknown>;\n\n @ContentChild('inputTel', { static: false })\n inputTelRef?: TemplateRef<unknown>;\n\n @ContentChild('inputUrl', { static: false })\n inputUrlRef?: TemplateRef<unknown>;\n\n @ContentChild('inputEmail', { static: false })\n inputEmailRef?: TemplateRef<unknown>;\n\n @ContentChild('inputPassword', { static: false })\n inputPasswordRef?: TemplateRef<unknown>;\n\n @ContentChild('inputDate', { static: false })\n inputDateRef?: TemplateRef<unknown>;\n\n @ContentChild('inputMonth', { static: false })\n inputMonthRef?: TemplateRef<unknown>;\n\n @ContentChild('inputWeek', { static: false })\n inputWeekRef?: TemplateRef<unknown>;\n\n @ContentChild('inputTime', { static: false })\n inputTimeRef?: TemplateRef<unknown>;\n\n @ContentChild('inputDatetimeLocal', { static: false })\n inputDatetimeLocalRef?: TemplateRef<unknown>;\n\n @ContentChild('inputNumber', { static: false })\n inputNumberRef?: TemplateRef<unknown>;\n\n @ContentChild('inputRange', { static: false })\n inputRangeRef?: TemplateRef<unknown>;\n\n @ContentChild('inputColor', { static: false })\n inputColorRef?: TemplateRef<unknown>;\n\n @ContentChild('inputBool', { static: false })\n inputBoolRef?: TemplateRef<unknown>;\n\n @ContentChild('inputDatetimeOffset', { static: false })\n inputDatetimeOffsetRef?: TemplateRef<unknown>;\n\n @ContentChild('inputDuration', { static: false })\n inputDurationRef?: TemplateRef<unknown>;\n\n @ContentChild('inputImage', { static: false })\n inputImageRef?: TemplateRef<unknown>;\n\n @ContentChild('inputFile', { static: false })\n inputFileRef?: TemplateRef<unknown>;\n\n @ContentChild('inputObject', { static: false })\n inputObjectRef?: TemplateRef<unknown>;\n\n @ContentChild('inputCollection', { static: false })\n inputCollectionRef?: TemplateRef<unknown>;\n\n @ContentChild('inputDefault', { static: false })\n inputDefaultRef?: TemplateRef<unknown>;\n\n public get PropertyType() {\n return PropertyType;\n }\n\n public get PropertyPromptDisplayType() {\n return PropertyPromptDisplayType;\n }\n\n public get dateFormat(): string {\n return new Date(3333, 11, 22)\n .toLocaleDateString()\n .replace(\"22\", \"dd\")\n .replace(\"11\", \"mm\")\n .replace(\"3333\", \"yy\")\n .replace(\"33\", \"y\");\n }\n\n public UntypedFormGroup = FormGroup<any>;\n public UntypedFormArray = FormArray<any>;\n public Number = Number;\n\n constructor(\n private _formService: FormService,\n private _changeDetectorRef: ChangeDetectorRef,\n private _messageService: MessageService,\n private _clients: RESTworldClientCollection\n ) { }\n\n ngOnInit(): void {\n if (!this.formGroup)\n throw new Error(\"[formGroup] is required on <rw-form>\");\n if (!this.template)\n throw new Error(\"[template] is required on <rw-form>\");\n if (!this.apiName)\n throw new Error(\"[apiName] is required on <rw-form>\");\n }\n\n public getTooltip(resource: Resource, keysToExclude?: string[]): string {\n const tooltip = Object.entries(resource)\n .filter(([key]) => !(key.startsWith('_') || ['createdAt', 'createdBy', 'lastChangedAt', 'lastChangedBy', 'timestamp'].includes(key) || keysToExclude?.includes(key)))\n .reduce((prev, [key, value], index) => `${prev}${index === 0 ? '' : '\\n'}${key}: ${RestworldEditFormComponent.jsonStringifyWithElipsis(value)}`, '');\n\n return tooltip;\n }\n\n private static jsonStringifyWithElipsis(value: unknown) {\n const maxLength = 200;\n const end = 10;\n const start = maxLength - end - 2;\n const json = JSON.stringify(value);\n const shortened = json.length > maxLength ? json.substring(0, start) + '…' + json.substring(json.length - end) : json;\n\n return shortened;\n }\n\n public getCollectionEntryTemplates(property?: Property): Template[] {\n if (!property)\n return [];\n\n return Object.entries(property._templates)\n .filter(([key,]) => Number.isInteger(Number.parseInt(key)))\n .map(([, value]) => value);\n }\n\n public addNewItemToCollection(property: Property, formArray: FormArray<any> | AbstractControl): void {\n if (!(formArray instanceof FormArray<any>))\n throw new Error('formArray is not an instance of FormArray.');\n\n const maxIndex = Math.max(...Object.keys(property._templates)\n .map(key => Number.parseInt(key))\n .filter(key => Number.isSafeInteger(key)));\n const nextIndex = maxIndex < 0 ? 0 : maxIndex + 1;\n\n const defaultTemplate = property._templates['default'];\n const copiedTemplateDto = JSON.parse(JSON.stringify(defaultTemplate)) as TemplateDto;\n const copiedTemplate = new Template(copiedTemplateDto);\n copiedTemplate.title = nextIndex.toString();\n\n property._templates[copiedTemplate.title] = copiedTemplate;\n formArray.push(this._formService.createFormGroupFromTemplate(defaultTemplate));\n }\n\n public deleteItemFromCollection(property: Property, formArray: FormArray<any> | AbstractControl, template: Template): void {\n if (!template.title)\n throw new Error(`Cannot delete the item, because the template '${template}' does not have a title.`);\n\n if (!(formArray instanceof FormArray<any>))\n throw new Error('formArray is not an instance of FormArray.');\n\n const templates = property._templates;\n delete templates[template.title];\n\n formArray.removeAt(Number.parseInt(template.title));\n }\n\n public collectionItemDropped($event: CdkDragDrop<{ property: Property; formArray: FormArray<any> }>) {\n const formArray = $event.container.data.formArray;\n const previousIndex = $event.previousIndex;\n const currentIndex = $event.currentIndex;\n const movementDirection = currentIndex > previousIndex ? 1 : -1;\n\n // Move in FormArray\n // We do not need to move the item in the _templates object\n const movedControl = formArray.at(previousIndex);\n for (let i = previousIndex; i * movementDirection < currentIndex * movementDirection; i = i + movementDirection) {\n formArray.setControl(i, formArray.at(i + movementDirection));\n }\n formArray.setControl(currentIndex, movedControl);\n\n this._changeDetectorRef.markForCheck();\n\n console.log($event);\n }\n\n\n public async onOptionsFiltered(property: Property, event: { originalEvent: unknown; filter: string | null }) {\n const options = property?.options;\n\n if (!options?.link?.href || !event.filter || event.filter === '')\n return;\n\n\n const templatedUri = options.link.href;\n let filter = `contains(${options.promptField}, '${event.filter}')`;\n if (options.valueField?.toLowerCase() === 'id' && !Number.isNaN(Number.parseInt(event.filter)))\n filter = `(${options.valueField} eq ${event.filter}) or (${filter})`;\n\n const response = await this.getClient().getListByUri(templatedUri, { $filter: filter, $top: 10 });\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body) {\n const message = `An error occurred while getting the filtered items.`;\n this._messageService.add({ severity: 'error', summary: 'Error', detail: message, data: response });\n return;\n }\n\n const items = response.body._embedded.items;\n options.inline = items;\n }\n\n private getClient(): RESTworldClient {\n if (!this.apiName)\n throw new Error('Cannot get a client, because the apiName is not set.');\n\n return this._clients.getClient(this.apiName);\n }\n}\n","\r\n<div class=\"grid field\">\r\n <div class=\"col-12 md:col-10 md:col-offset-2\">\r\n <val-errors [control]=\"formGroup\">\r\n <ng-template valError=\"remote\" let-error=\"error\">{{ error }}</ng-template>\r\n </val-errors>\r\n </div>\r\n</div>\r\n<div *ngFor=\"let property of template.properties\" class=\"grid field\" [formGroup]=\"formGroup\">\r\n <label *ngIf=\"property.type !== PropertyType.Hidden\" [attr.for]=\"property.name\" class=\"col-12 mb-2 md:col-2 md:mb-0\" [class.p-disabled]=\"property.readOnly\" [class.hasChildren]=\"property._templates\" [class.label-hidden]=\"property.promptDisplay === PropertyPromptDisplayType.Hidden\" [class.label-collapsed]=\"property.promptDisplay === PropertyPromptDisplayType.Collapsed\">{{property.prompt || property.name}}</label>\r\n <div class=\"col-12 md:col-10\">\r\n\r\n <ng-template #defaultInputOptions let-property=\"property\" let-template=\"template\">\r\n\r\n <ng-template #defaultInputOptionsSingle let-property=\"property\" let-template=\"template\">\r\n <p-dropdown [formControlName]=\"property.name\" [id]=\"property.name\" [options]=\"property.options.inline\" [filterBy]=\"(property.options.promptField || 'prompt') + ',' + (property.options.valueField || 'value')\" [optionValue]=\"property.options.valueField || 'value'\" [readonly]=\"property.readOnly\" [required]=\"property.required || property.options.minItems > 0\" [filter]=\"true\" [autoDisplayFirst]=\"false\" [showClear]=\"!property.required || property.options.minItems <= 0\" (onFilter)=\"onOptionsFiltered(property, $event)\" styleClass=\"w-full\" [filterPlaceholder]=\"property?.options?.link?.href ? 'search for more results' : ''\">\r\n <ng-template let-item pTemplate=\"selectedItem\">\r\n <span [pTooltip]=\"getTooltip(item, [property.options.promptField || 'prompt', property.options.valueField || 'value'])\">{{item[property.options.promptField || 'prompt']}} ({{item[property.options.valueField || 'value']}})</span>\r\n </ng-template>\r\n <ng-template let-item pTemplate=\"item\">\r\n <span [pTooltip]=\"getTooltip(item, [property.options.promptField || 'prompt', property.options.valueField || 'value'])\">{{item[property.options.promptField || 'prompt']}} ({{item[property.options.valueField || 'value']}})</span>\r\n </ng-template>\r\n </p-dropdown>\r\n </ng-template>\r\n <ng-container *ngIf=\"!property.options.maxItems || property.options.maxItems == 1\">\r\n <ng-container *ngTemplateOutlet=\"inputOptionsSingleRef || defaultInputOptionsSingle; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #defaultInputOptionsMultiple let-property=\"property\" let-template=\"template\">\r\n <p-multiSelect [formControlName]=\"property.name\" [id]=\"property.name\" [options]=\"property.options.inline\" [optionLabel]=\"property.options.promptField || 'prompt'\" [optionValue]=\"property.options.valueField || 'value'\" [readonly]=\"property.readOnly\" [selectionLimit]=\"property.options.maxItems\" [required]=\"property.required || property.options.minItems > 0\"></p-multiSelect>\r\n </ng-template>\r\n <ng-container *ngIf=\"property.options.maxItems > 1\">\r\n <ng-container *ngTemplateOutlet=\"inputOptionsMultipleRef || defaultInputOptionsMultiple; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n </ng-template>\r\n <ng-container *ngIf=\"property.options\">\r\n <ng-container *ngTemplateOutlet=\"inputOptionsRef || defaultInputOptions; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n <div *ngIf=\"!property.options\">\r\n <div [ngSwitch]=\"property.type\">\r\n\r\n <ng-template #defaultInputHidden let-property=\"property\" let-template=\"template\">\r\n <input [formControlName]=\"property.name\" [id]=\"property.name\" type=\"hidden\" [value]=\"property.value\" />\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Hidden\">\r\n <ng-container *ngTemplateOutlet=\"inputHiddenRef || defaultInputHidden; context:{ property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #defaultInputText let-property=\"property\" let-template=\"template\">\r\n <input [formControlName]=\"property.name\" [id]=\"property.name\" type=\"text\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Text\">\r\n <ng-container *ngTemplateOutlet=\"inputTextRef || defaultInputText; context:{ property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputTextarea let-property=\"property\" let-template=\"template\">\r\n <textarea [formControlName]=\"property.name\" [id]=\"property.name\" pInputTextarea class=\"w-full p-inputtextarea p-inputtext p-component p-element\" [class.p-disabled]=\"property.readOnly\" [cols]=\"property.cols\" [rows]=\"property.rows\"></textarea>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Textarea\">\r\n <ng-container *ngTemplateOutlet=\"inputTextareaRef || defaultInputTextarea; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputSearch let-property=\"property\" let-template=\"template\">\r\n <input [formControlName]=\"property.name\" [id]=\"property.name\" type=\"search\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Search\">\r\n <ng-container *ngTemplateOutlet=\"inputSearchRef || defaultInputSearch; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputTel let-property=\"property\" let-template=\"template\">\r\n <input [formControlName]=\"property.name\" [id]=\"property.name\" type=\"tel\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Tel\">\r\n <ng-container *ngTemplateOutlet=\"inputTelRef || defaultInputTel; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputUrl let-property=\"property\" let-template=\"template\">\r\n <input [formControlName]=\"property.name\" [id]=\"property.name\" type=\"url\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Url\">\r\n <ng-container *ngTemplateOutlet=\"inputUrlRef || defaultInputUrl; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputEmail let-property=\"property\" let-template=\"template\">\r\n <input [formControlName]=\"property.name\" [id]=\"property.name\" type=\"email\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Email\">\r\n <ng-container *ngTemplateOutlet=\"inputEmailRef || defaultInputEmail; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputPassword let-property=\"property\" let-template=\"template\">\r\n <input [formControlName]=\"property.name\" [id]=\"property.name\" type=\"password\" pPassword class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Password\">\r\n <ng-container *ngTemplateOutlet=\"inputPasswordRef || defaultInputPassword; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputDate let-property=\"property\" let-template=\"template\">\r\n <p-calendar [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showWeek]=\"true\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Date\">\r\n <ng-container *ngTemplateOutlet=\"inputDateRef || defaultInputDate; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputMonth let-property=\"property\" let-template=\"template\">\r\n <p-calendar [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showWeek]=\"false\" view=\"month\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Month\">\r\n <ng-container *ngTemplateOutlet=\"inputMonthRef || defaultInputMonth; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputWeek let-property=\"property\" let-template=\"template\">\r\n <input [formControlName]=\"property.name\" [id]=\"property.name\" type=\"week\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Week\">\r\n <ng-container *ngTemplateOutlet=\"inputWeekRef || defaultInputWeek; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputTime let-property=\"property\" let-template=\"template\">\r\n <p-calendar [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [timeOnly]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Time\">\r\n <ng-container *ngTemplateOutlet=\"inputTimeRef || defaultInputTime; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputDatetimeLocal let-property=\"property\" let-template=\"template\">\r\n <p-calendar [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.DatetimeLocal\">\r\n <ng-container *ngTemplateOutlet=\"inputDatetimeLocalRef || defaultInputDatetimeLocal; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputNumber let-property=\"property\" let-template=\"template\">\r\n <p-inputNumber [formControlName]=\"property.name\" [id]=\"property.name\" mode=\"decimal\" [showButtons]=\"!property.readOnly\" class=\"w-full\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-inputNumber>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Number\">\r\n <ng-container *ngTemplateOutlet=\"inputNumberRef || defaultInputNumber; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputRange let-property=\"property\" let-template=\"template\">\r\n <input [formControlName]=\"property.name\" [id]=\"property.name\" type=\"range\" [min]=\"property.min\" [max]=\"property.max\" [step]=\"property.step\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Range\">\r\n <ng-container *ngTemplateOutlet=\"inputRangeRef || defaultInputRange; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputColor let-property=\"property\" let-template=\"template\">\r\n <input [formControlName]=\"property.name\" [id]=\"property.name\" type=\"color\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Color\">\r\n <ng-container *ngTemplateOutlet=\"inputColorRef || defaultInputColor; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputBool let-property=\"property\" let-template=\"template\" let-formGroup=\"formGroup\">\r\n <p-checkbox *ngIf=\"property.required\" [binary]=\"true\" [formControl]=\"formGroup.controls[property.name]\" [id]=\"property.name\" [readonly]=\"property.readOnly\"></p-checkbox>\r\n <p-triStateCheckbox *ngIf=\"!property.required\" [formControl]=\"formGroup.controls[property.name]\" [id]=\"property.name\" [readonly]=\"property.readOnly\"></p-triStateCheckbox>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Bool\">\r\n <ng-container *ngTemplateOutlet=\"inputBoolRef || defaultInputBool; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputDatetimeOffset let-property=\"property\" let-template=\"template\">\r\n <p-calendar [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.DatetimeOffset\">\r\n <ng-container *ngTemplateOutlet=\"inputDatetimeOffsetRef || defaultInputDatetimeOffset; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputDuration let-property=\"property\" let-template=\"template\">\r\n <p-calendar *ngSwitchCase=\"PropertyType.Duration\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [timeOnly]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Duration\">\r\n <ng-container *ngTemplateOutlet=\"inputDurationRef || defaultInputDuration; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputImage let-property=\"property\" let-template=\"template\">\r\n <rw-image [formControlName]=\"property.name\"\r\n [accept]=\"property.restWorldImage?.accept ?? property.placeholder ?? 'image/*'\"\r\n [alignImage]=\"property.restWorldImage?.alignImage\"\r\n [alt]=\"property.prompt ?? property.name\"\r\n [aspectRatio]=\"property.restWorldImage?.aspectRatio\"\r\n [backgroundColor]=\"property.restWorldImage?.backgroundColor\"\r\n [canvasRotation]=\"property.restWorldImage?.canvasRotation\"\r\n [containWithinAspectRatio]=\"property.restWorldImage?.containWithinAspectRatio\"\r\n [cropper]=\"property.restWorldImage?.cropper\"\r\n [cropperMaxHeight]=\"property.restWorldImage?.cropperMaxHeight\"\r\n [cropperMaxWidth]=\"property.restWorldImage?.cropperMaxWidth\"\r\n [cropperMinHeight]=\"property.restWorldImage?.cropperMinHeight\"\r\n [cropperMinWidth]=\"property.restWorldImage?.cropperMinWidth\"\r\n [cropperStaticHeight]=\"property.restWorldImage?.cropperStaticHeight\"\r\n [cropperStaticWidth]=\"property.restWorldImage?.cropperStaticWidth\"\r\n [fileName]=\"property.name + '.' + (property.restWorldImage?.format ?? 'png')\"\r\n [format]=\"property.restWorldImage?.format\"\r\n [imageQuality]=\"property.restWorldImage?.imageQuality\"\r\n [initialStepSize]=\"property.restWorldImage?.initialStepSize\"\r\n [maintainAspectRatio]=\"property.restWorldImage?.maintainAspectRatio\"\r\n [onlyScaleDown]=\"property.restWorldImage?.onlyScaleDown\"\r\n [resizeToWidth]=\"property.restWorldImage?.resizeToWidth\"\r\n [resizeToHeight]=\"property.restWorldImage?.resizeToHeight\"\r\n [roundCropper]=\"property.restWorldImage?.roundCropper\"></rw-image>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Image\">\r\n <ng-container *ngTemplateOutlet=\"inputImageRef || defaultInputImage; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputFile let-property=\"property\" let-template=\"template\">\r\n <rw-file [formControlName]=\"property.name\" [fileName]=\"property.name\" [accept]=\"property.placeholder\"></rw-file>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.File\">\r\n <ng-container *ngTemplateOutlet=\"inputFileRef || defaultInputFile; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputObject let-property=\"property\" let-template=\"template\">\r\n <div class=\"flex align-items-center\">\r\n <div class=\"brace\">\r\n </div>\r\n <div class=\"w-full\">\r\n <rw-form [formGroup]=\"(formGroup.controls[property.name] | as : UntypedFormGroup)\" [template]=\"property._templates.default\" [apiName]=\"apiName\"></rw-form>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Object\">\r\n <ng-container *ngTemplateOutlet=\"inputObjectRef || defaultInputObject; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputCollection let-property=\"property\" let-template=\"template\">\r\n <div class=\"flex align-items-center\">\r\n <div class=\"brace\">\r\n </div>\r\n <div class=\"w-full\" cdkDropList [cdkDropListData]=\"{ property: property, formArray: (formGroup.controls[property.name] | as : UntypedFormArray)}\" (cdkDropListDropped)=\"collectionItemDropped($event)\">\r\n <div *ngFor=\"let template of getCollectionEntryTemplates(property)\" class=\"flex align-items-center\" cdkDrag>\r\n <i class=\"fas fa-grip-lines\" cdkDragHandle></i>\r\n <div class=\"brace\">\r\n </div>\r\n <div class=\"w-full flex justify-content-end\">\r\n <rw-form [formGroup]=\"((formGroup.controls[property.name] | as : UntypedFormArray).controls[Number.parseInt(template.title!)] | as : UntypedFormGroup)\" [template]=\"template\" [apiName]=\"apiName\" class=\"w-full\"></rw-form>\r\n <button pButton pRipple type=\"button\" icon=\"fas fa-trash\" class=\"p-button-outlined p-button-danger ml-2 mb-3\" (click)=\"deleteItemFromCollection(property, formGroup.controls[property.name], template)\"></button>\r\n </div>\r\n </div>\r\n <div class=\"flex justify-content-end w-full\">\r\n <button pButton pRipple type=\"button\" icon=\"fas fa-plus\" class=\"p-button-outlined p-button-info\" (click)=\"addNewItemToCollection(property, formGroup.controls[property.name])\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"PropertyType.Collection\">\r\n <ng-container *ngTemplateOutlet=\"inputCollectionRef || defaultInputCollection; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultInputDefault let-property=\"property\" let-template=\"template\">\r\n <input [formControlName]=\"property.name\" [id]=\"property.name\" type=\"text\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\r\n </ng-template>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngTemplateOutlet=\"inputDefaultRef || defaultInputDefault; context: { property: property, template: template, formGroup: formGroup, apiName: apiName }\"></ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n <val-errors [controlName]=\"property.name || null\">\r\n <ng-template valError=\"required\">The field '{{property.prompt || property.name}}' is required.</ng-template>\r\n <ng-template valError=\"email\">The email must be a valid email address.</ng-template>\r\n <ng-template valError=\"min\" let-error=\"error\">'{{property.prompt || property.name}}' must be equal or greater than or equal to {{ error.min }}.</ng-template>\r\n <ng-template valError=\"max\" let-error=\"error\">'{{property.prompt || property.name}}' must be smaller than or equal to {{ error.max }}.</ng-template>\r\n <ng-template valError=\"minlength\" let-error=\"error\">The length of '{{property.prompt || property.name}}' must be equal or greater than or equal to {{ error.requiredLength }}.</ng-template>\r\n <ng-template valError=\"maxlength\" let-error=\"error\">The length of '{{property.prompt || property.name}}' must be shorter than or equal to {{ error.requiredLength }}.</ng-template>\r\n <ng-template valError=\"pattern\" let-error=\"error\">The value for '{{property.prompt || property.name}}' does not match the pattern {{ error }}.</ng-template>\r\n <ng-template valError=\"remote\" let-error=\"error\">{{ error }}</ng-template>\r\n </val-errors>\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { PropertyType, Resource, Template, Templates, FormsResource, Property, ListResource } from '@wertzui/ngx-hal-client';\r\nimport { RESTworldClient } from '../../services/restworld-client';\r\nimport { RESTworldClientCollection } from '../../services/restworld-client-collection';\r\nimport { AbstractControl, FormControl, FormGroup, UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { Location } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { ProblemDetails } from '../../models/problem-details';\r\nimport { ContentChild } from '@angular/core';\r\nimport { TemplateRef } from '@angular/core';\r\nimport { ValdemortConfig } from 'ngx-valdemort';\r\nimport { FormService } from '../../services/form.service';\r\n\r\n@Component({\r\n selector: 'rw-edit',\r\n templateUrl: './restworld-edit-view.component.html',\r\n styleUrls: ['./restworld-edit-view.component.css']\r\n})\r\nexport class RESTworldEditViewComponent {\r\n @ContentChild('buttons', { static: false })\r\n buttonsRef?: TemplateRef<unknown>;\r\n @ContentChild('extraTabs', { static: false })\r\n extraTabsRef?: TemplateRef<unknown>;\r\n public idNavigationForm = new FormGroup < {\r\n id: FormControl<number | null>\r\n }>({\r\n id: new FormControl(null, Validators.compose([Validators.min(1), Validators.max(Number.MAX_SAFE_INTEGER)]))\r\n });\r\n @ContentChild('inputBool', { static: false })\r\n inputBoolRef?: TemplateRef<unknown>;\r\n @ContentChild('inputColor', { static: false })\r\n inputColorRef?: TemplateRef<unknown>;\r\n @ContentChild('inputDate', { static: false })\r\n inputDateRef?: TemplateRef<unknown>;\r\n @ContentChild('inputDatetimeLocal', { static: false })\r\n inputDatetimeLocalRef?: TemplateRef<unknown>;\r\n @ContentChild('inputDatetimeOffset', { static: false })\r\n inputDatetimeOffsetRef?: TemplateRef<unknown>;\r\n @ContentChild('inputDefault', { static: false })\r\n inputDefaultRef?: TemplateRef<unknown>;\r\n @ContentChild('inputDuration', { static: false })\r\n inputDurationRef?: TemplateRef<unknown>;\r\n @ContentChild('inputEmail', { static: false })\r\n inputEmailRef?: TemplateRef<unknown>;\r\n @ContentChild('inputFile', { static: false })\r\n inputFileRef?: TemplateRef<unknown>;\r\n @ContentChild('inputHidden', { static: false })\r\n inputHiddenRef?: TemplateRef<unknown>;\r\n @ContentChild('inputImage', { static: false })\r\n inputImageRef?: TemplateRef<unknown>;\r\n @ContentChild('inputMonth', { static: false })\r\n inputMonthRef?: TemplateRef<unknown>;\r\n @ContentChild('inputNumber', { static: false })\r\n inputNumberRef?: TemplateRef<unknown>;\r\n @ContentChild('inputOptionsMultiple', { static: false })\r\n inputOptionsMultipleRef?: TemplateRef<unknown>;\r\n @ContentChild('inputOptions', { static: false })\r\n inputOptionsRef?: TemplateRef<unknown>;\r\n @ContentChild('inputOptionsSingle', { static: false })\r\n inputOptionsSingleRef?: TemplateRef<unknown>;\r\n @ContentChild('inputPassword', { static: false })\r\n inputPasswordRef?: TemplateRef<unknown>;\r\n @ContentChild('inputRange', { static: false })\r\n inputRangeRef?: TemplateRef<unknown>;\r\n @ContentChild('inputSearch', { static: false })\r\n inputSearchRef?: TemplateRef<unknown>;\r\n @ContentChild('inputTel', { static: false })\r\n inputTelRef?: TemplateRef<unknown>;\r\n @ContentChild('inputText', { static: false })\r\n inputTextRef?: TemplateRef<unknown>;\r\n @ContentChild('inputTextarea', { static: false })\r\n inputTextareaRef?: TemplateRef<unknown>;\r\n @ContentChild('inputTime', { static: false })\r\n inputTimeRef?: TemplateRef<unknown>;\r\n @ContentChild('inputUrl', { static: false })\r\n inputUrlRef?: TemplateRef<unknown>;\r\n @ContentChild('inputWeek', { static: false })\r\n inputWeekRef?: TemplateRef<unknown>;\r\n public isLoading = false;\r\n\r\n private _apiName?: string;\r\n private _formTabs: { [name: string]: UntypedFormGroup } = {};\r\n private _rel?: string;\r\n private _resource?: Resource;\r\n private _templates: Templates = {};\r\n private _uri?: string;\r\n\r\n constructor(\r\n private _clients: RESTworldClientCollection,\r\n private _confirmationService: ConfirmationService,\r\n private _messageService: MessageService,\r\n private _location: Location,\r\n private _router: Router,\r\n private _formService: FormService,\r\n valdemortConfig: ValdemortConfig) {\r\n valdemortConfig.errorClasses = 'p-error text-sm';\r\n }\r\n\r\n public get PropertyType() {\r\n return PropertyType;\r\n }\r\n\r\n public get apiName(): string | undefined {\r\n return this._apiName;\r\n }\r\n\r\n @Input()\r\n public set apiName(value: string | undefined) {\r\n this._apiName = value;\r\n this.load();\r\n }\r\n\r\n public get canDelete() {\r\n const length = this.resource?._links[\"delete\"]?.length;\r\n return length !== undefined && length > 0;\r\n }\r\n\r\n public get canSave() {\r\n const length = this.resource?._links[\"save\"]?.length;\r\n return length !== undefined && length > 0;\r\n }\r\n\r\n public get formTabs() {\r\n return this._formTabs;\r\n }\r\n\r\n public get isLoadingForTheFirstTime() {\r\n return Object.keys(this.templates).length === 0 && this.isLoading;\r\n }\r\n\r\n public get rel(): string | undefined {\r\n return this._rel;\r\n }\r\n\r\n @Input()\r\n public set rel(value: string | undefined) {\r\n this._rel = value;\r\n }\r\n\r\n public get resource() {\r\n return this._resource;\r\n }\r\n\r\n public get templates() {\r\n return this._templates;\r\n }\r\n\r\n public get uri(): string | undefined {\r\n return this._uri;\r\n }\r\n\r\n @Input()\r\n public set uri(value: string | undefined) {\r\n this._uri = value;\r\n this.load();\r\n }\r\n\r\n private static getSubControl(control: AbstractControl, pathElement: string): AbstractControl {\r\n if (pathElement === \"\")\r\n return control;\r\n\r\n if (control instanceof UntypedFormGroup)\r\n return control.controls[pathElement];\r\n\r\n if (control instanceof UntypedFormArray) {\r\n const index = Number.parseInt(pathElement);\r\n if (Number.isInteger(index))\r\n return control.controls[index];\r\n }\r\n\r\n return control;\r\n }\r\n\r\n private static jsonStringifyWithElipsis(value: unknown) {\r\n const maxLength = 200;\r\n const end = 10;\r\n const start = maxLength - end - 2;\r\n const json = JSON.stringify(value);\r\n const shortened = json.length > maxLength ? json.substring(0, start) + '…' + json.substring(json.length - end) : json;\r\n\r\n return shortened;\r\n }\r\n\r\n public canSubmit(templateName: string) {\r\n const form = this.formTabs[templateName];\r\n return form && form.valid;\r\n }\r\n\r\n public async delete(): Promise<void> {\r\n if (!this.apiName || !this.uri || !this.resource)\r\n return;\r\n\r\n Object.assign(this.resource, this.formTabs.value);\r\n\r\n await this.getClient().delete(this.resource);\r\n setTimeout(() =>\r\n this._messageService.add({ severity: 'success', summary: 'Deleted', detail: 'The resource has been deleted.' }),\r\n 100);\r\n\r\n this._location.back();\r\n }\r\n\r\n public getTooltip(resource: Resource, keysToExclude?: string[]): string {\r\n const tooltip = Object.entries(resource)\r\n .filter(([key]) => !(key.startsWith('_') || ['createdAt', 'createdBy', 'lastChangedAt', 'lastChangedBy', 'timestamp'].includes(key) || keysToExclude?.includes(key)))\r\n .reduce((prev, [key, value], index) => `${prev}${index === 0 ? '' : '\\n'}${key}: ${RESTworldEditViewComponent.jsonStringifyWithElipsis(value)}`, '');\r\n\r\n return tooltip;\r\n }\r\n\r\n public imageChanged(formControl: UntypedFormControl, event: { files: File[] }): void {\r\n const file = event.files[0];\r\n console.log(file);\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const uri = reader.result;\r\n console.log(uri);\r\n formControl.setValue(uri);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n public async load(): Promise<void> {\r\n if (!this.apiName || !this.uri)\r\n return;\r\n\r\n this.isLoading = true;\r\n\r\n const response = await this.getClient().getSingle(this.uri);\r\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body) {\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'Error while loading the resource from the API.', data: response });\r\n }\r\n else {\r\n this._resource = response.body;\r\n this._templates = await this.getAllTemplates(this._resource);\r\n this._formTabs = this._formService.createFormGroupsFromTemplates(this._templates);\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n\r\n public async navigateById(): Promise<void> {\r\n if (!this.rel)\r\n throw new Error('The \"rel\" must be set through the uri of this page for the ID navigation to work.');\r\n\r\n if (!this.idNavigationForm.valid) {\r\n this._messageService.add({ detail: 'You must enter a valid ID to naviage to.', severity: 'error' });\r\n return;\r\n }\r\n var idToNavigateTo = this.idNavigationForm.controls.id.value;\r\n\r\n var client = this.getClient();\r\n\r\n var response = await client.getList<Resource>(this.rel, { $filter: `id eq ${idToNavigateTo}` });\r\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body) {\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'Error while loading the resources from the API.', data: response });\r\n return;\r\n }\r\n\r\n var resource = response.body?._embedded?.items?.[0];\r\n if (!resource) {\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'No resource found with the specified ID.' });\r\n return;\r\n }\r\n\r\n await this._router.navigate(['/edit', this.apiName, this.rel, resource._links.self[0].href]);\r\n\r\n this.idNavigationForm.reset();\r\n }\r\n\r\n public showDeleteConfirmatioModal() {\r\n this._confirmationService.confirm({\r\n message: 'Do you really want to delete this resource?',\r\n header: 'Confirm delete',\r\n icon: 'far fa-trash-alt',\r\n accept: () => this.delete()\r\n });\r\n }\r\n\r\n public async submit(templateName: string, template: Template, formValue: {}) {\r\n this.isLoading = true;\r\n\r\n try {\r\n const targetBeforeSave = template.target;\r\n const response = await this.getClient().submit(template, formValue);\r\n\r\n if (!response.ok) {\r\n let summary = 'Error';\r\n let detail = 'Error while saving the resource.';\r\n if (ProblemDetails.isProblemDetails(response.body)) {\r\n const problemDetails = response.body as ProblemDetails;\r\n summary = problemDetails.title || summary;\r\n detail = problemDetails.detail || detail;\r\n // display validation errors\r\n if (problemDetails['errors'] as {}) {\r\n const form = this.formTabs[templateName];\r\n for (const [key, errorsForKey] of Object.entries(problemDetails['errors'] as {})) {\r\n const path = key.split(/\\.|\\[/).map(e => e.replace(\"]\", \"\"));\r\n // The path might start with a $, indicating the root.\r\n if (path.length > 0 && path[0] === '$')\r\n path.shift();\r\n const formControl = path.reduce<AbstractControl>(RESTworldEditViewComponent.getSubControl, form);\r\n formControl.setErrors({ ...formControl.errors, ...{ remote: errorsForKey } });\r\n formControl.markAsTouched();\r\n }\r\n }\r\n }\r\n\r\n this._messageService.add({ severity: 'error', summary: summary, detail: detail, data: response, life: 10000 });\r\n }\r\n else {\r\n const responseResource = (response.body as FormsResource);\r\n const targetAfterSave = responseResource._templates[templateName].target;\r\n\r\n setTimeout(() =>\r\n this._messageService.add({ severity: 'success', summary: 'Saved', detail: 'The resource has been saved.' }),\r\n 100);\r\n\r\n if (targetBeforeSave !== targetAfterSave) {\r\n this._router.navigate(['/edit', this.apiName, responseResource._links.self[0].href]);\r\n }\r\n }\r\n }\r\n catch (e: unknown) {\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: `An unknown error occurred. ${JSON.stringify(e)}`, life: 10000 });\r\n console.log(e);\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n\r\n private async getAllTemplates(resource: Resource): Promise<Templates> {\r\n try {\r\n return this.getClient().getAllTemplates(resource);\r\n }\r\n catch (e: unknown) {\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'Error while loading the templates from the API. ' + e, data: e });\r\n return {};\r\n }\r\n }\r\n\r\n private getClient(): RESTworldClient {\r\n if (!this.apiName)\r\n throw new Error('Cannot get a client, because the apiName is not set.');\r\n\r\n return this._clients.getClient(this.apiName);\r\n }\r\n}\r\n","<div class=\"grid\">\r\n <div class=\"col-12 md:col-10\">\r\n <h1>Edit resource</h1>\r\n </div>\r\n <div class=\"col-12 md:col-2 align-items-center justify-content-end flex\">\r\n <form [formGroup]=\"idNavigationForm\" (ngSubmit)=\"navigateById()\" class=\"mr-3\">\r\n <div class=\"p-inputgroup\">\r\n <p-inputNumber formControlName=\"id\" placeholder=\"Navigate by ID\"></p-inputNumber>\r\n <button type=\"submit\" pButton pRipple icon=\"fa-solid fa-arrow-right\"></button>\r\n </div>\r\n </form>\r\n </div>\r\n</div>\r\n\r\n<p-tabView>\r\n\r\n <p-tabPanel *ngIf=\"isLoadingForTheFirstTime\" header=\"Loading\">\r\n <div *ngFor=\"let i of [1, 2, 3, 4, 5]\" class=\"grid field\">\r\n <p-skeleton class=\"col-12 mb-2 md:col-2 md:mb-0\" height=\"39px\"></p-skeleton>\r\n <div class=\"col-12 md:col-10\">\r\n <p-skeleton class=\"w-full\" height=\"39px\"></p-skeleton>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col\">\r\n <div class=\"flex justify-content-end w-full\">\r\n <p-skeleton width=\"120px\" height=\"39px\" class=\"mx-2\"></p-skeleton>\r\n <p-skeleton width=\"120px\" height=\"39px\" class=\"mx-2\"></p-skeleton>\r\n <p-skeleton width=\"120px\" height=\"39px\" class=\"mx-2\"></p-skeleton>\r\n </div>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel *ngFor=\"let item of templates | keyvalue\" [header]=\"item.value.title || item.key\" [disabled]=\"isLoading\">\r\n <form [formGroup]=\"formTabs[item.key]\" (ngSubmit)=\"submit(item.key, item.value, formTabs[item.key].value)\">\r\n <div class=\"blockable-container\">\r\n <div class=\"blockable-element\">\r\n <rw-form [formGroup]=\"formTabs[item.key]\" [template]=\"item.value\" [apiName]=\"apiName\"></rw-form>\r\n </div>\r\n <div class=\"blockable-overlay\" *ngIf=\"isLoading\">\r\n <p-progressSpinner></p-progressSpinner>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col\">\r\n <div class=\"flex justify-content-end w-full\">\r\n <ng-template #defaultButtons>\r\n <button pButton pRipple type=\"submit\" label=\"Save\" icon=\"far fa-save\" class=\"mx-2 p-button-success\" [disabled]=\"isLoading || !canSubmit(item.key)\"></button>\r\n <button pButton pRipple type=\"button\" label=\"Reload\" icon=\"fas fa-redo\" class=\"mx-2 p-button-info\" (click)=\"load()\" [disabled]=\"isLoading\"></button>\r\n <button pButton pRipple type=\"button\" label=\"Delete\" icon=\"far fa-trash-alt\" class=\"ml-2 p-button-danger\" (click)=\"showDeleteConfirmatioModal()\" [disabled]=\"!resource || isLoading || !canDelete\"></button>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"buttonsRef || defaultButtons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </p-tabPanel>\r\n\r\n <ng-template #defaultExtraTabs>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"extraTabsRef || defaultExtraTabs\"></ng-container>\r\n\r\n</p-tabView>\r\n\r\n<p-toast></p-toast>\r\n<p-confirmDialog></p-confirmDialog>\r\n","import { Component, Input } from '@angular/core';\r\nimport { PagedListResource, Property, PropertyType, Resource, ResourceDto, Template } from '@wertzui/ngx-hal-client';\r\nimport * as _ from 'lodash';\r\nimport { ConfirmationService, FilterMatchMode, FilterMetadata, LazyLoadEvent, MenuItem, MessageService } from 'primeng/api';\r\nimport { RESTworldClient } from '../../services/restworld-client';\r\nimport { RESTworldClientCollection } from '../../services/restworld-client-collection';\r\nimport { ProblemDetails } from '../../models/problem-details';\r\nimport { AvatarGenerator } from '../../services/avatar-generator';\r\nimport { Router } from '@angular/router';\r\nimport { ODataService } from '../../services/o-data.service'\r\n\r\nexport enum ColumnFilterType {\r\n text = 'text',\r\n numeric = 'numeric',\r\n boolean = 'boolean',\r\n date = 'date'\r\n}\r\n\r\n@Component({\r\n selector: 'rw-list',\r\n templateUrl: './restworld-list-view.component.html',\r\n styleUrls: ['./restworld-list-view.component.css']\r\n})\r\nexport class RESTworldListViewComponent<TListDto extends ResourceDto> {\r\n private static _dateFormat = new Date(3333, 10, 22)\r\n .toLocaleDateString()\r\n .replace(\"22\", \"dd\")\r\n .replace(\"11\", \"MM\")\r\n .replace(\"3333\", \"y\")\r\n .replace(\"33\", \"yy\");\r\n\r\n @Input()\r\n public createButtonMenu?: MenuItem[];\r\n public isLoading = false;\r\n public load = _.debounce(this.load2, 100);\r\n public resource?: PagedListResource<TListDto>;\r\n @Input()\r\n public rowsPerPage: number[];\r\n\r\n private _apiName?: string;\r\n private _editLink = '/edit';\r\n private _lastEvent: LazyLoadEvent;\r\n private _rel?: string;\r\n private _sortField = '';\r\n private _sortOrder = 1;\r\n private _template?: Template;\r\n private _totalRecords = 0;\r\n\r\n constructor(\r\n private _clients: RESTworldClientCollection,\r\n private _confirmationService: ConfirmationService,\r\n private _messageService: MessageService,\r\n public avatarGenerator: AvatarGenerator,\r\n private readonly _router: Router) {\r\n this.rowsPerPage = [10, 25, 50];\r\n\r\n this._lastEvent = {\r\n rows: this.rowsPerPage[0]\r\n };\r\n }\r\n\r\n public get PropertyType(): typeof PropertyType {\r\n return PropertyType;\r\n }\r\n\r\n public get apiName(): string | undefined {\r\n return this._apiName;\r\n }\r\n\r\n @Input()\r\n public set apiName(value: string | undefined) {\r\n this._apiName = value;\r\n this.load(this._lastEvent);\r\n }\r\n\r\n public get columns(): Property[] {\r\n return this.template?.properties.filter(p => p.type !== PropertyType.Hidden) ?? [];\r\n }\r\n\r\n public get dateFormat(): string {\r\n return RESTworldListViewComponent._dateFormat;\r\n }\r\n\r\n public get editLink() {\r\n return this._editLink;\r\n }\r\n\r\n @Input()\r\n public set editLink(value: string) {\r\n if (value)\r\n this._editLink = value;\r\n }\r\n\r\n public get newHref(): string | undefined {\r\n return this.resource?.findLink('new')?.href;\r\n }\r\n\r\n public get rel(): string | undefined {\r\n return this._rel;\r\n }\r\n\r\n @Input()\r\n public set rel(value: string | undefined) {\r\n this._rel = value;\r\n this.load(this._lastEvent);\r\n }\r\n\r\n public get rows(): number {\r\n return this._lastEvent?.rows || 0;\r\n }\r\n\r\n public get sortField(): string {\r\n return this._sortField;\r\n }\r\n\r\n @Input()\r\n public set sortField(value: string | undefined) {\r\n this._sortField = value ?? '';\r\n this._lastEvent.sortField = value;\r\n this.load(this._lastEvent);\r\n }\r\n\r\n public get sortOrder(): number {\r\n return this._sortOrder;\r\n }\r\n\r\n @Input()\r\n public set sortOrder(value: number | undefined) {\r\n this._sortOrder = value ?? 1;\r\n this._lastEvent.sortOrder = value;\r\n this.load(this._lastEvent);\r\n }\r\n\r\n public get template(): Template | undefined {\r\n return this._template;\r\n }\r\n\r\n public get totalRecords(): number {\r\n return this._totalRecords;\r\n }\r\n\r\n public get value(): Resource[] {\r\n return this.resource?._embedded?.items || [];\r\n }\r\n\r\n private set totalRecords(value: number | undefined) {\r\n this._totalRecords = value || 0;\r\n }\r\n\r\n public createNew(): Promise<boolean> {\r\n return this._router.navigate([this.editLink, this.apiName, this.rel, this.newHref]);\r\n }\r\n\r\n public async delete(resource: Resource): Promise<void> {\r\n if (!this.apiName || !this.rel)\r\n return;\r\n\r\n await this.getClient().delete(resource);\r\n\r\n this._messageService.add({ severity: 'success', summary: 'Deleted', detail: 'The resource has been deleted.' });\r\n\r\n this.load(this._lastEvent);\r\n }\r\n\r\n public async load2(event: LazyLoadEvent): Promise<void> {\r\n if (!this.apiName || !this.rel)\r\n return;\r\n\r\n this.isLoading = true;\r\n this._lastEvent = event;\r\n\r\n const parameters = ODataService.createParametersFromTableLoadEvent(event, this.template);\r\n const response = await this.getClient().getList<TListDto>(this.rel, parameters);\r\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body) {\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'Error while loading the resources from the API.', data: response });\r\n }\r\n else if (response.body) {\r\n try {\r\n const templates = await this.getClient().getAllTemplates(response.body);\r\n this._template = templates[\"Search\"];\r\n if (this._template === undefined)\r\n throw new Error(\"No search template found in the API response.\");\r\n }\r\n catch (e: unknown) {\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'Error while loading the resources from the API. ' + e, data: e });\r\n }\r\n\r\n this.resource = response.body;\r\n this.totalRecords = this.resource.totalPages && parameters.$top ? this.resource.totalPages * parameters.$top : undefined;\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n\r\n public showDeleteConfirmatioModal(resource: Resource) {\r\n this._confirmationService.confirm({\r\n message: 'Do you really want to delete this resource?',\r\n header: 'Confirm delete',\r\n icon: 'far fa-trash-alt',\r\n accept: () => this.delete(resource)\r\n });\r\n }\r\n\r\n public toColumnFilterType(propertyType: PropertyType) : ColumnFilterType{\r\n switch(propertyType) {\r\n case PropertyType.Number:\r\n return ColumnFilterType.numeric;\r\n case PropertyType.Bool:\r\n return ColumnFilterType.boolean;\r\n case PropertyType.Date:\r\n case PropertyType.DatetimeLocal:\r\n case PropertyType.DatetimeOffset:\r\n return ColumnFilterType.date;\r\n default:\r\n return ColumnFilterType.text;\r\n }\r\n }\r\n\r\n private getClient(): RESTworldClient {\r\n if (!this.apiName)\r\n throw new Error('Cannot get a client, because the apiName is not set.');\r\n\r\n return this._clients.getClient(this.apiName);\r\n }\r\n}\r\n","<p-table [value]=\"value\"\r\n [lazy]=\"true\"\r\n [lazyLoadOnInit]=\"false\"\r\n (onLazyLoad)=\"load($event)\"\r\n responsiveLayout=\"scroll\"\r\n [paginator]=\"true\"\r\n [rows]=\"rows\"\r\n [rowsPerPageOptions]=\"rowsPerPage\"\r\n [totalRecords]=\"totalRecords\"\r\n [loading]=\"isLoading\"\r\n [showInitialSortBadge]=\"true\"\r\n [columns]=\"columns\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\">\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns\" [pSortableColumn]=\"col.name\">\r\n <div class=\"p-d-flex p-jc-between p-ai-center\">\r\n {{col.prompt}}\r\n <p-sortIcon [field]=\"col.name\"></p-sortIcon>\r\n <p-columnFilter [type]=\"toColumnFilterType(col.type)\" [field]=\"col.name\" display=\"menu\"></p-columnFilter>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"flex justify-content-end\">\r\n <div class=\"mx-2\">\r\n <a *ngIf=\"!createButtonMenu\" class=\"p-button-success\" icon=\"fas fa-plus\" pButton [routerLink]=\"[editLink, apiName, rel, newHref]\" pTooltip=\"Create new\" tooltipPosition=\"left\"></a>\r\n <p-splitButton *ngIf=\"createButtonMenu\" styleClass=\"p-button-success\" icon=\"fas fa-plus\" pTooltip=\"Create new\" tooltipPosition=\"left\" (onClick)=\"createNew()\" [model]=\"createButtonMenu\" appendTo=\"body\"></p-splitButton>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-entity let-columns=\"columns\">\r\n <tr>\r\n <td [ngSwitch]=\"col.type\" *ngFor=\"let col of columns\">\r\n <ng-container *ngSwitchCase=\"PropertyType.Text\">\r\n <rw-avatar *ngIf=\"col.name === 'createdBy' || col.name === 'lastChangedBy'\" [user]=\"entity[col.name]\"></rw-avatar>\r\n <span *ngIf=\"col.name !== 'createdBy' && col.name !== 'lastChangedBy'\">{{entity[col.name]}}</span>\r\n </ng-container>\r\n <span *ngSwitchCase=\"PropertyType.Number\" class=\"flex justify-content-end\">{{entity[col.name]}}</span>\r\n <span *ngSwitchCase=\"PropertyType.Bool\" class=\"flex justify-content-center\"><p-triStateCheckbox [(ngModel)]=\"entity[col.name]\" [readonly]=\"true\"></p-triStateCheckbox></span>\r\n <span *ngSwitchCase=\"PropertyType.Date\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\r\n <span *ngSwitchCase=\"PropertyType.DatetimeLocal\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\r\n <span *ngSwitchCase=\"PropertyType.DatetimeOffset\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\r\n <span *ngSwitchCase=\"PropertyType.Collection\" class=\"flex justify-content-end\"><p *ngFor=\"let arrayElement of entity[col.name]\">{{arrayElement | json}}</p></span>\r\n <span *ngSwitchCase=\"PropertyType.Object\" class=\"flex justify-content-end\">{{entity[col.name] | json}}</span>\r\n </td>\r\n <td>\r\n <div class=\"flex justify-content-end\">\r\n <a pButton pTooltip=\"View/Edit\" tooltipPosition=\"left\" [routerLink]=\"[editLink, apiName, rel, entity._links?.self[0].href]\" icon=\"fas fa-edit\"></a>\r\n <button pTooltip=\"Delete\" tooltipPosition=\"left\" pButton *ngIf=\"entity._links.delete\" (click)=\"showDeleteConfirmatioModal(entity)\" icon=\"fas fa-trash-alt\" type=\"button\" class=\"mx-2 p-button-danger\"></button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td colspan=\"8\">No entries found.</td>\r\n </tr>\r\n </ng-template>\r\n\r\n</p-table>\r\n\r\n<p-toast></p-toast>\r\n<p-confirmDialog></p-confirmDialog>\r\n","import { APP_INITIALIZER, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { TableModule } from 'primeng/table';\r\nimport { TooltipModule } from 'primeng/tooltip'\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { ValdemortModule } from 'ngx-valdemort';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\n\r\nimport { RESTworldListViewComponent } from './views/restworld-list-view/restworld-list-view.component';\r\nimport { RESTworldEditViewComponent } from './views/restworld-edit-view/restworld-edit-view.component';\r\nimport { RESTworldClientCollection } from './services/restworld-client-collection';\r\nimport { AvatarGenerator } from './services/avatar-generator';\r\nimport { SettingsService } from './services/settings.service';\r\nimport { RESTWorldImageViewComponent } from './views/restworld-image-view/restworld-image-view.component';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { RESTWorldFileViewComponent } from './views/restworld-file-view/restworld-file-view.component';\r\nimport { SafeUrlPipe } from './pipes/safe-url.pipe';\r\nimport { RestworldEditFormComponent } from './views/restworld-edit-form/restworld-edit-form.component'\r\nimport { FormService } from './services/form.service';\r\nimport { AsPipe } from './pipes/as.pipe';\r\nimport { SplitButtonModule } from 'primeng/splitbutton';\r\nimport { RestWorldAvatarComponent } from './components/restworld-avatar/restworld-avatar.component';\r\n\r\nexport function initializeSettings(settingsService: SettingsService): () => Promise<void> {\r\n return async () => await settingsService.ensureInitialized();\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n RESTworldListViewComponent,\r\n RESTworldEditViewComponent,\r\n RESTWorldImageViewComponent,\r\n RESTWorldFileViewComponent,\r\n RestworldEditFormComponent,\r\n RestWorldAvatarComponent,\r\n SafeUrlPipe,\r\n AsPipe,\r\n RestWorldAvatarComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TableModule,\r\n TooltipModule,\r\n ScrollingModule,\r\n InputTextModule,\r\n InputNumberModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n ConfirmDialogModule,\r\n ToastModule,\r\n MessagesModule,\r\n PanelModule,\r\n TabViewModule,\r\n SkeletonModule,\r\n ProgressSpinnerModule,\r\n RippleModule,\r\n TriStateCheckboxModule,\r\n AvatarModule,\r\n DropdownModule,\r\n MultiSelectModule,\r\n FileUploadModule,\r\n ValdemortModule,\r\n ImageCropperModule,\r\n DialogModule,\r\n ButtonModule,\r\n ColorPickerModule,\r\n DragDropModule,\r\n SplitButtonModule,\r\n AvatarModule\r\n ],\r\n exports: [\r\n RESTworldListViewComponent,\r\n RESTworldEditViewComponent,\r\n RESTWorldImageViewComponent,\r\n RESTWorldFileViewComponent,\r\n RestworldEditFormComponent,\r\n RestWorldAvatarComponent,\r\n SafeUrlPipe,\r\n AsPipe\r\n ],\r\n providers: [\r\n RESTworldClientCollection,\r\n AvatarGenerator,\r\n ConfirmationService,\r\n FormService,\r\n MessageService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initializeSettings,\r\n deps: [SettingsService],\r\n multi: true,\r\n }\r\n ]\r\n})\r\nexport class RestworldClientModule { }\r\n","/*\n * Public API Surface of ngx-restworld-client\n */\r\n\nexport * from './lib/constants/link-names';\n\nexport * from './lib/components/restworld-avatar/restworld-avatar.component'\n\nexport * from './lib/models/api-url';\nexport * from './lib/models/client-settings';\nexport * from './lib/models/problem-details';\nexport * from './lib/models/restworld-options';\n\nexport * from './lib/pipes/safe-url.pipe'\nexport * from './lib/pipes/as.pipe'\n\nexport * from './lib/services/avatar-generator';\nexport * from './lib/services/form.service';\nexport * from './lib/services/o-data.service';\nexport * from './lib/services/restworld-client';\nexport * from './lib/services/restworld-client-collection';\nexport * from './lib/services/settings.service';\n\nexport * from './lib/views/restworld-edit-form/restworld-edit-form.component';\nexport * from './lib/views/restworld-edit-view/restworld-edit-view.component';\nexport * from './lib/views/restworld-file-view/restworld-file-view.component'\nexport * from './lib/views/restworld-image-view/restworld-image-view.component'\nexport * from './lib/views/restworld-list-view/restworld-list-view.component'\n\nexport * from './lib/restworld-client.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AvatarGenerator","i1","i1.RESTworldClientCollection","i2","i3","i4","i5","i11.SafeUrlPipe","i5.SafeUrlPipe","i1.FormService","i3.RESTworldClientCollection","i6","i7","i8","i9","i10","i12","i18.RESTWorldImageViewComponent","i19.RESTWorldFileViewComponent","i20.AsPipe","i5.FormService","i11","i13","i14","i15","i16.RestworldEditFormComponent","i3.AvatarGenerator","i14.RestWorldAvatarComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wertzui-ngx-restworld-client.mjs","sources":["../../../projects/ngx-restworld-client/src/lib/constants/link-names.ts","../../../projects/ngx-restworld-client/src/lib/services/avatar-generator.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-avatar/restworld-avatar.component.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-avatar/restworld-avatar.component.html","../../../projects/ngx-restworld-client/src/lib/pipes/safe-url.pipe.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-file/restworld-file.component.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-file/restworld-file.component.html","../../../projects/ngx-restworld-client/src/lib/models/problem-details.ts","../../../projects/ngx-restworld-client/src/lib/services/restworld-client.ts","../../../projects/ngx-restworld-client/src/lib/services/restworld-client-collection.ts","../../../projects/ngx-restworld-client/src/lib/services/form.service.ts","../../../projects/ngx-restworld-client/src/lib/models/special-properties.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-label/restworld-label.component.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-label/restworld-label.component.html","../../../projects/ngx-restworld-client/src/lib/components/restworld-validation-errors/restworld-validation-errors.component.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-validation-errors/restworld-validation-errors.component.html","../../../projects/ngx-restworld-client/src/lib/pipes/as.pipe.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-image/restworld-image.component.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-image/restworld-image.component.html","../../../projects/ngx-restworld-client/src/lib/components/restworld-inputs/restworld-inputs.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-inputs/restworld-form-element/restworld-form-element.component.html","../../../projects/ngx-restworld-client/src/lib/components/restworld-inputs/restworld-input/restworld-input.component.html","../../../projects/ngx-restworld-client/src/lib/components/restworld-inputs/restworld-input-collection/restworld-input-collection.component.html","../../../projects/ngx-restworld-client/src/lib/components/restworld-inputs/restworld-input-dropdown/restworld-input-dropdown.component.html","../../../projects/ngx-restworld-client/src/lib/components/restworld-inputs/restworld-input-object/restworld-input-object.component.html","../../../projects/ngx-restworld-client/src/lib/components/restworld-inputs/restworld-input-simple/restworld-input-simple.component.html","../../../projects/ngx-restworld-client/src/lib/components/restworld-inputs/restworld-input-template/restworld-input-template.component.html","../../../projects/ngx-restworld-client/src/lib/components/restworld-form/restworld-form.component.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-form/restworld-form.component.html","../../../projects/ngx-restworld-client/src/lib/components/restworld-id-navigation/restworld-id-navigation.component.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-id-navigation/restworld-id-navigation.component.html","../../../projects/ngx-restworld-client/src/lib/components/restworld-menu-button/restworld-menu-button.component.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-menu-button/restworld-menu-button.component.html","../../../projects/ngx-restworld-client/src/lib/services/o-data.service.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-table/restworld-table.component.ts","../../../projects/ngx-restworld-client/src/lib/components/restworld-table/restworld-table.component.html","../../../projects/ngx-restworld-client/src/lib/models/restworld-options.ts","../../../projects/ngx-restworld-client/src/lib/services/settings.service.ts","../../../projects/ngx-restworld-client/src/lib/views/restworld-edit-view/restworld-edit-view.component.ts","../../../projects/ngx-restworld-client/src/lib/views/restworld-edit-view/restworld-edit-view.component.html","../../../projects/ngx-restworld-client/src/lib/views/restworld-list-view/restworld-list-view.component.ts","../../../projects/ngx-restworld-client/src/lib/views/restworld-list-view/restworld-list-view.component.html","../../../projects/ngx-restworld-client/src/lib/restworld-client.module.ts","../../../projects/ngx-restworld-client/src/public-api.ts","../../../projects/ngx-restworld-client/src/wertzui-ngx-restworld-client.ts"],"sourcesContent":["export enum LinkNames {\r\n get = \"Get\",\r\n getList = \"GetList\",\r\n post = \"Post\",\r\n put = \"Put\",\r\n delete = \"Delete\",\r\n new = \"New\"\r\n}","import { Injectable, Input } from '@angular/core';\r\nimport { SafeUrl } from '@angular/platform-browser';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AvatarGenerator {\r\n private static _nonWordRegex = new RegExp('\\\\W');\r\n private static _imageCache: Map<string, SafeUrl> = new Map<string, SafeUrl>();\r\n\r\n public getImageAsyncOverride: (nameOrEmail: string) => Promise<SafeUrl> = () => Promise.resolve('');\r\n\r\n public async getImageAsync(nameOrEmail: string): Promise<SafeUrl> {\r\n let promise = AvatarGenerator._imageCache.get(nameOrEmail);\r\n\r\n if (promise === undefined) {\r\n promise = this.getImageAsyncOverride(nameOrEmail);\r\n AvatarGenerator._imageCache.set(nameOrEmail, promise);\r\n }\r\n\r\n return promise;\r\n }\r\n\r\n public async getLabelAsync(nameOrEmail: string): Promise<string> {\r\n if (!nameOrEmail)\r\n return '';\r\n\r\n if (await this.getImageAsync(nameOrEmail))\r\n return '';\r\n\r\n const name = AvatarGenerator.getLocalPartOfEmailAddress(nameOrEmail);\r\n const initials = AvatarGenerator.getTwoUppercaseLettersFromName(name);\r\n\r\n return initials;\r\n }\r\n\r\n public async getStyleAsync(nameOrEmail: string,): Promise<'' | { 'background-color': string; color: string }> {\r\n if (await this.getImageAsync(nameOrEmail))\r\n return '';\r\n\r\n const foregroundColor = '#ffffff';\r\n const backgroundColor = AvatarGenerator.getBackgroundColor(nameOrEmail);\r\n\r\n const style = {\r\n 'background-color': backgroundColor,\r\n color: foregroundColor,\r\n };\r\n\r\n return style;\r\n }\r\n\r\n private static getLocalPartOfEmailAddress(email: string): string {\r\n const indexOfAt = email.indexOf('@');\r\n if (indexOfAt < 2) {\r\n if (indexOfAt >= 0) {\r\n if (indexOfAt === email.length - 1)\r\n return email.substring(0, indexOfAt);\r\n return email.substring(indexOfAt + 1);\r\n }\r\n } else {\r\n return email.substring(0, indexOfAt);\r\n }\r\n\r\n return email;\r\n }\r\n\r\n private static getTwoUppercaseLettersFromName(name: string): string {\r\n // Too short to do anything besides just returning the name\r\n if (name.length <= 2) {\r\n return name.toUpperCase();\r\n }\r\n\r\n // Try to split by non word characters\r\n const splittedByNonWord = name.split(AvatarGenerator._nonWordRegex);\r\n if (splittedByNonWord.length > 1) {\r\n return (splittedByNonWord[0][0] + splittedByNonWord[1][0]).toUpperCase();\r\n }\r\n\r\n // Try to split by upper case letters\r\n const upperCaseLetters = [...name]\r\n .filter((c) => c.toUpperCase() === c && !AvatarGenerator._nonWordRegex.test(c))\r\n .join();\r\n if (upperCaseLetters.length > 1) {\r\n return upperCaseLetters.substring(0, 2);\r\n }\r\n\r\n // Just return the first 2 letters\r\n return name.substring(0, 2).toUpperCase();\r\n }\r\n\r\n // from https://stackoverflow.com/a/66494926/1378307\r\n private static getBackgroundColor(\r\n text: string,\r\n minLightness = 40,\r\n maxLightness = 80,\r\n minSaturation = 30,\r\n maxSaturation = 100,\r\n ): string {\r\n if (!text) return '#aaa';\r\n\r\n const hash = [...text].reduce((acc, char) => {\r\n return char.charCodeAt(0) + ((acc << 5) - acc);\r\n }, 0);\r\n\r\n return (\r\n 'hsl(' +\r\n (hash % 360) +\r\n ', ' +\r\n ((hash % (maxSaturation - minSaturation)) + minSaturation) +\r\n '%, ' +\r\n ((hash % (maxLightness - minLightness)) + minLightness) +\r\n '%)'\r\n );\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\nimport { SafeUrl } from '@angular/platform-browser';\nimport { AvatarGenerator } from '../../services/avatar-generator';\n\n@Component({\n selector: 'rw-avatar',\n templateUrl: './restworld-avatar.component.html',\n styleUrls: ['./restworld-avatar.component.css']\n})\nexport class RestWorldAvatarComponent implements OnInit{\n @Input()\n user?: string;\n\n private _image: SafeUrl = '';\n public get image(): string { return this._image as string; }\n private _label: string = '';\n public get label(): string { return this._label; }\n private _style: '' | { 'background-color': string; color: string } = '';\n public get style(): '' | { 'background-color': string; color: string; } { return this._style; }\n public get tooltip(): string { return this.user ?? ''; }\n\n constructor(\n private readonly _generator: AvatarGenerator\n ) {\n\n }\n\n async ngOnInit(): Promise<void> {\n if(this.user === undefined || this.user === null)\n return;\n\n this._image = await this._generator.getImageAsync(this.user);\n this._label = await this._generator.getLabelAsync(this.user);\n this._style = await this._generator.getStyleAsync(this.user);\n }\n}\n","<p-avatar [pTooltip]=\"tooltip\" tooltipPosition=\"top\" [image]=\"image\" [label]=\"label\" [style]=\"style\" shape=\"circle\"></p-avatar>\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport * as _ from 'lodash';\r\n\r\n@Pipe({\r\n name: 'safeUrl'\r\n})\r\nexport class SafeUrlPipe implements PipeTransform {\r\n\r\n constructor(private _domSanitizer: DomSanitizer) {\r\n }\r\n\r\n transform(url: unknown) {\r\n if (!_.isString(url))\r\n throw new Error(`The given url '${url}' is not a string.`)\r\n\r\n return this._domSanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}\r\n","import { Component, forwardRef, Input, QueryList, ViewChildren } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FileUpload } from 'primeng/fileupload';\r\n\r\n@Component({\r\n selector: 'rw-file',\r\n templateUrl: './restworld-file.component.html',\r\n styleUrls: ['./restworld-file.component.css'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RestWorldFileComponent),\r\n multi: true\r\n }]\r\n})\r\nexport class RestWorldFileComponent implements ControlValueAccessor {\r\n private onChange?: Function;\r\n @Input()\r\n public accept?: string;\r\n\r\n @Input()\r\n public fileName?: string;\r\n\r\n @ViewChildren(FileUpload)\r\n fileUploads?: QueryList<FileUpload>;\r\n\r\n public disabled = false;\r\n public uri?: string;\r\n\r\n writeValue(obj?: string): void {\r\n this.uri = obj;\r\n }\r\n registerOnChange(fn?: Function): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(): void {\r\n // not needed for this component, but needed to implement the interface\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n public fileChanged(event: { files: File[] }): void {\r\n const file = event.files[0];\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n this.uri = reader.result as string;\r\n this.onChange?.(this.uri);\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n }\r\n}\r\n","<div class=\"flex align-items-center\">\r\n <p-button *ngIf=\"!uri\" [disabled]=\"true\" icon=\"pi pi-download\" class=\"mr-1\" pTooltip=\"No file present\"></p-button>\r\n <a *ngIf=\"uri\" [href]=\"uri | safeUrl\" [download]=\"fileName || 'download'\" class=\"mr-1\" pButton pTooltip=\"Download file\" icon=\"pi pi-download\"></a>\r\n <p-fileUpload chooseIcon=\"pi-upload fas fa-upload\" pTooltip=\"Upload new file\" mode=\"basic\" [auto]=\"true\" [accept]=\"accept || ''\" [customUpload]=\"true\" (uploadHandler)=\"fileChanged($event)\"></p-fileUpload>\r\n</div>\r\n","import * as _ from \"lodash\";\r\nimport { Resource, ResourceOfDto } from \"@wertzui/ngx-hal-client\"\r\n/*\r\n * ProblemDetails is what an ASP.net Core backend returns in case of an error.\r\n * */\r\nexport interface ProblemDetailsDto {\r\n type?: string;\r\n title?: string;\r\n status?: number;\r\n detail?: string;\r\n instance?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport class ProblemDetails extends Resource implements ResourceOfDto<ProblemDetailsDto> {\r\n public type?: string;\r\n public title?: string;\r\n public status?: number;\r\n public detail?: string;\r\n public instance?: string;\r\n [key: string]: unknown;\r\n\r\n public static isProblemDetails(resource: unknown): resource is ProblemDetails {\r\n return resource instanceof ProblemDetails;\r\n }\r\n\r\n public static containsProblemDetailsInformation(resource: unknown) {\r\n return resource && (resource instanceof ProblemDetails || (resource instanceof Resource && 'status' in resource && _.isNumber(resource['status']) && resource['status'] >= 100 && resource['status'] < 600));\r\n }\r\n\r\n public static fromResource(resource: Resource | null | undefined): ProblemDetails {\r\n if (!ProblemDetails.containsProblemDetailsInformation(resource))\r\n throw new Error(`The resource ${resource} does not have problem details.`);\r\n\r\n return Object.assign(new ProblemDetails(), resource);\r\n }\r\n}\r\n","import { HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport * as _ from \"lodash\";\r\nimport { FormsResource, HalClient, Link, PagedListResource, Property, Resource, ResourceDto, Template, Templates } from \"@wertzui/ngx-hal-client\";\r\nimport { LinkNames } from \"../constants/link-names\";\r\nimport { ProblemDetails } from \"../models/problem-details\";\r\nimport { RestWorldOptions } from \"../models/restworld-options\";\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\n\r\nexport class RestWorldClient {\r\n private _defaultCurie?: string;\r\n private _homeResource?: Resource;\r\n\r\n constructor(\r\n private _halClient: HalClient,\r\n private _options: RestWorldOptions\r\n ) { }\r\n\r\n public get halClient() {\r\n return this._halClient;\r\n }\r\n\r\n private static combineHeaders(originalHeaders: HttpHeaders | undefined, headersToAdd: HttpHeaders | undefined, overwriteExisting: boolean) {\r\n if (!headersToAdd)\r\n return originalHeaders;\r\n if (!originalHeaders)\r\n return headersToAdd;\r\n\r\n let combinedHeaders = originalHeaders;\r\n\r\n for (const key in headersToAdd.keys) {\r\n if (!combinedHeaders.has(key) || overwriteExisting) {\r\n const headerValuesToAdd = headersToAdd.getAll(key);\r\n if (headerValuesToAdd)\r\n combinedHeaders = combinedHeaders.set(key, headerValuesToAdd);\r\n }\r\n }\r\n\r\n return combinedHeaders;\r\n }\r\n\r\n private static createHeaders(mediaType?: 'application/hal+json' | 'application/prs.hal-forms+json' | 'text/csv', version?: number): HttpHeaders {\r\n if (version)\r\n return new HttpHeaders({\r\n 'Accept': `${mediaType || 'application/hal+json'}; v=${version}`,\r\n 'Content-Type': `${mediaType || 'application/hal+json'}; v=${version}`\r\n });\r\n return new HttpHeaders();\r\n }\r\n\r\n public async delete(resource: Resource): Promise<HttpResponse<void | ProblemDetails>> {\r\n const deleteLink = resource.findLink('delete');\r\n if (!deleteLink)\r\n throw new Error(`The resource ${resource} does not have a delete link.`);\r\n const uri = deleteLink.href;\r\n const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);\r\n\r\n const response = await this.halClient.delete(uri, ProblemDetails, header);\r\n\r\n return response;\r\n }\r\n\r\n public async ensureHomeResourceIsSet(): Promise<void> {\r\n if (!this._homeResource) {\r\n const response = await this.getHomeForced();\r\n if (ProblemDetails.isProblemDetails(response.body)) {\r\n throw new Error(`Cannot get the home resource from ${this._options.BaseUrl} with Version ${this._options.Version}. Response was: ${response}`);\r\n }\r\n if (!response.body)\r\n throw new Error(`Cannot get the home resource from ${this._options.BaseUrl} with Version ${this._options.Version}. Response was empty.`);\r\n this._homeResource = response.body;\r\n this.setDefaultCurie();\r\n }\r\n }\r\n\r\n public async getAllForms(resource: Resource): Promise<HttpResponse<FormsResource | ProblemDetails>[]> {\r\n const urls = resource.getFormLinkHrefs();\r\n const formsPromises = urls.map(url => this.getForm(url));\r\n const formsAndProblems = await Promise.all(formsPromises);\r\n return formsAndProblems;\r\n }\r\n\r\n public async getForm(url: string): Promise<HttpResponse<FormsResource | ProblemDetails>> {\r\n const header = RestWorldClient.createHeaders('application/prs.hal-forms+json', this._options.Version);\r\n return this._halClient.get(url, FormsResource, ProblemDetails, header);\r\n }\r\n\r\n public getAllLinksFromHome(): { [rel: string]: Link[] | undefined; } {\r\n if (!this._homeResource)\r\n throw new Error('Home resource is not set. Call ensureHomeResourceIsSet() first.');\r\n\r\n return this._homeResource._links;\r\n }\r\n\r\n public async getAllPagesFromList<TListDto extends ResourceDto>(rel: string, parameters: {}, headers?: HttpHeaders, curie?: string): Promise<HttpResponse<PagedListResource<TListDto> | ProblemDetails>> {\r\n const link = this.getLinkFromHome(rel, LinkNames.getList, curie);\r\n const uri = link.href;\r\n\r\n const response = await this.getAllPagesFromListByUri<TListDto>(uri, parameters, headers);\r\n\r\n return response;\r\n }\r\n\r\n public async getAllPagesFromListByUri<TListDto extends ResourceDto>(uri: string, parameters: {}, headers?: HttpHeaders): Promise<HttpResponse<PagedListResource<TListDto> | ProblemDetails>> {\r\n const response = await this.getListByUri<TListDto>(uri, parameters, headers);\r\n\r\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body?._embedded?.items)\r\n return response;\r\n\r\n const items = response.body._embedded.items;\r\n let lastResponse = response;\r\n\r\n while ((lastResponse?.body?._links?.next?.length ?? 0) > 0) {\r\n // Get the next response\r\n const nextLinks = lastResponse.body?._links.next;\r\n const nextLink = nextLinks ? nextLinks[0]: undefined;\r\n const nextHref = nextLink?.href;\r\n if (nextHref) {\r\n lastResponse = await this.getListByUri<TListDto>(nextHref, parameters, headers);\r\n\r\n if (!lastResponse.ok || ProblemDetails.isProblemDetails(lastResponse.body) || !lastResponse.body)\r\n return lastResponse;\r\n\r\n // Combine the embedded items\r\n lastResponse.body?._embedded?.items?.forEach(r => items.push(r));\r\n }\r\n }\r\n\r\n // We combined everything, so there is just one big page\r\n response.body.totalPages = 1;\r\n response.body._links.next = undefined;\r\n\r\n return response;\r\n }\r\n\r\n public async getAllTemplates(resource: Resource): Promise<Templates> {\r\n const formResponses = await this.getAllForms(resource);\r\n\r\n const failedResponses = formResponses.filter(response => !response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body);\r\n if (failedResponses.length !== 0) {\r\n for (const response of failedResponses) {\r\n throw new Error(`Error while loading the response from ${response.url}, Status ${response.status} - ${response.statusText}, Content: ${response.body}`);\r\n }\r\n return Promise.resolve({});\r\n }\r\n\r\n const formTemplates = Object.assign({}, ...formResponses.map(response => (response.body as FormsResource)._templates)) as Templates;\r\n\r\n await this.setInitialSelectedOptionsElementsForTemplates(formTemplates, false);\r\n\r\n return formTemplates;\r\n }\r\n\r\n public getLinkFromHome(rel: string, name?: string, curie?: string): Link {\r\n const links = this.getLinksFromHome(rel, curie);\r\n\r\n const link = name ? links.find(l => l.name === name) : links[0];\r\n\r\n if (!link)\r\n throw new Error(`The home resource does not have a link with the rel '${this.getFullRel(rel, curie)}' and the name '${name}'.`);\r\n\r\n return link;\r\n }\r\n\r\n public getLinksFromHome(rel: string, curie?: string): Link[] {\r\n if (!this._homeResource)\r\n throw new Error('Home resource is not set. Call ensureHomeResourceIsSet() first.');\r\n\r\n const fullRel = this.getFullRel(rel, curie);\r\n const links = this._homeResource._links[fullRel];\r\n if (!links || links.length === 0)\r\n throw Error(`The home resource does not have a link with the rel '${fullRel}'.`);\r\n\r\n return links;\r\n }\r\n\r\n public async getList<TListDto extends ResourceDto>(rel: string, parameters: {}, headers?: HttpHeaders, curie?: string): Promise<HttpResponse<PagedListResource<TListDto> | ProblemDetails>> {\r\n const link = this.getLinkFromHome(rel, LinkNames.getList, curie);\r\n const uri = link.href\r\n\r\n const response = await this.getListByUri<TListDto>(uri, parameters, headers);\r\n\r\n return response;\r\n }\r\n\r\n public async getListAsCsv(rel: string, parameters: {}, headers?: HttpHeaders, curie?: string): Promise<HttpResponse<Blob> | undefined> {\r\n const link = this.getLinkFromHome(rel, LinkNames.getList, curie);\r\n const uri = link.href;\r\n\r\n const response = await this.getListByUriAsCsv(uri, parameters, headers);\r\n\r\n return response;\r\n }\r\n\r\n public async getListByUri<TListDto extends ResourceDto>(uri: string, parameters: {}, headers?: HttpHeaders): Promise<HttpResponse<PagedListResource<TListDto> | ProblemDetails>> {\r\n const link = new Link();\r\n link.href = uri;\r\n const filledUri = link.fillTemplate(parameters);\r\n const defaultHeaders = RestWorldClient.createHeaders('application/hal+json', this._options.Version);\r\n const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);\r\n\r\n const response = await this.halClient.get<PagedListResource<TListDto>, ProblemDetails>(filledUri, PagedListResource, ProblemDetails, combinedHeaders);\r\n\r\n return response;\r\n }\r\n\r\n public async getListByUriAsCsv(uri: string, parameters: {}, headers?: HttpHeaders): Promise<HttpResponse<Blob> | undefined> {\r\n const link = new Link();\r\n link.href = uri;\r\n const filledUri = link.fillTemplate(parameters);\r\n const defaultHeaders = RestWorldClient.createHeaders('text/csv', this._options.Version);\r\n const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);\r\n\r\n const response = await lastValueFrom(this.halClient.httpClient.get(filledUri, { headers: combinedHeaders, responseType: 'blob', observe: 'response' }));\r\n\r\n return response;\r\n }\r\n\r\n public async getSingle(rel: string, id: number, headers?: HttpHeaders, curie?: string): Promise<HttpResponse<Resource | ProblemDetails>> {\r\n if (!_.isNumber(id))\r\n throw new Error('When supplying a rel, an ID must be supplied too.');\r\n\r\n const link = this.getLinkFromHome(rel, LinkNames.get, curie);\r\n const uri = link.fillTemplate({ id: id.toString() });\r\n\r\n const response = this.getSingleByUri(uri, headers);\r\n\r\n return response;\r\n }\r\n\r\n public async getSingleByUri(uri: string, headers?: HttpHeaders): Promise<HttpResponse<Resource | ProblemDetails>> {\r\n const defaultHeaders = RestWorldClient.createHeaders('application/hal+json', this._options.Version);\r\n const combinedHeaders = RestWorldClient.combineHeaders(headers, defaultHeaders, false);\r\n const response = await this.halClient.get(uri, Resource, ProblemDetails, combinedHeaders);\r\n\r\n return response;\r\n }\r\n\r\n public async save(resource: Resource): Promise<HttpResponse<Resource | ProblemDetails>> {\r\n const saveLink = resource.findLink('save');\r\n if (!saveLink)\r\n throw new Error(`The resource ${resource} does not have a save link.`);\r\n if (!saveLink.name)\r\n throw new Error(`The save link ${saveLink} does not have a save name.`);\r\n\r\n const uri = saveLink.href;\r\n const method = saveLink.name.toLowerCase();\r\n const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);\r\n\r\n let response;\r\n switch (method) {\r\n case 'put':\r\n response = await this.halClient.put(uri, resource, Resource, ProblemDetails, header);\r\n break;\r\n case 'post':\r\n response = await this.halClient.post(uri, resource, Resource, ProblemDetails, header);\r\n break;\r\n default:\r\n throw new Error(`'${method}' is not allowed as link name for the save link. Only 'POST' and 'PUT' are allowed.`);\r\n }\r\n\r\n return response;\r\n }\r\n\r\n public async submit(template: Template, formValues: {}): Promise<HttpResponse<FormsResource | ProblemDetails>> {\r\n const uri = template.target || '';\r\n const method = template.method?.toLowerCase();\r\n const header = RestWorldClient.createHeaders('application/prs.hal-forms+json', this._options.Version);\r\n\r\n let response;\r\n switch (method) {\r\n case 'put':\r\n response = await this.halClient.put(uri, formValues, FormsResource, ProblemDetails, header);\r\n break;\r\n case 'post':\r\n response = await this.halClient.post(uri, formValues, FormsResource, ProblemDetails, header);\r\n break;\r\n default:\r\n response = await this.halClient.get(uri, FormsResource, ProblemDetails, header);\r\n }\r\n\r\n return response;\r\n }\r\n\r\n private getFullRel(rel: string, curie?: string): string {\r\n // rel already includes a curie => just return it\r\n if (rel.includes(':'))\r\n return rel;\r\n\r\n // No curie given => use default curie.\r\n if (!curie)\r\n curie = this._defaultCurie;\r\n\r\n // Combine curie and rel\r\n const fullRel = `${curie}:${rel}`;\r\n\r\n return fullRel;\r\n }\r\n\r\n private async getHomeForced(): Promise<HttpResponse<Resource | ProblemDetails>> {\r\n const header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);\r\n const response = await this.halClient.get(this._options.BaseUrl, Resource, ProblemDetails, header);\r\n return response;\r\n }\r\n\r\n private setDefaultCurie(): void {\r\n const curies = this._homeResource?._links?.curies;\r\n if (!curies || curies.length === 0 || !curies[0])\r\n this._defaultCurie = undefined;\r\n else\r\n this._defaultCurie = curies[0].name;\r\n }\r\n\r\n private async setInitialSelectedOptionsElementForProperty(property: Property): Promise<void> {\r\n const options = property?.options;\r\n\r\n if (!options?.link?.href)\r\n return;\r\n\r\n const templatedUri = options.link.href;\r\n const filter = `${options.valueField} eq ${property.value}`;\r\n const response = await this.getListByUri(templatedUri, { $filter: filter, $top: 10 });\r\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body) {\r\n throw new Error(`An error occurred while getting the filtered items from ${response.url}, Status ${response.status} - ${response.statusText}, Content: ${response.body}`);\r\n }\r\n\r\n const items = response.body._embedded.items;\r\n options.inline = items;\r\n }\r\n\r\n private async setInitialSelectedOptionsElementsForTemplate(template: Template): Promise<void> {\r\n const propertyPromises = template.properties\r\n .filter(property => property?.options?.link?.href)\r\n .map(property => this.setInitialSelectedOptionsElementForProperty(property));\r\n const nestedTemplatePromised = template.properties\r\n .filter(property => property?._templates)\r\n .map(property => this.setInitialSelectedOptionsElementsForTemplates(property._templates, true));\r\n const allPromises = propertyPromises.concat(nestedTemplatePromised);\r\n\r\n await Promise.all(allPromises);\r\n }\r\n\r\n private async setInitialSelectedOptionsElementsForTemplates(templates: Templates, skipDefaultTemplate: boolean): Promise<void> {\r\n await Promise.all(Object.entries(templates)\r\n .filter(([name,]) => !skipDefaultTemplate || name !== 'default')\r\n .map(([, template]) => this.setInitialSelectedOptionsElementsForTemplate(template)));\r\n }\r\n\r\n\r\n public async deleteByTemplateAndForm(template: Template, formGroup: FormGroup<{timestamp: AbstractControl<string>}>): Promise<HttpResponse<void | ProblemDetails>> {\r\n const url = template.target;\r\n if(url === undefined)\r\n throw new Error(\"The target of the given template cannot be undefined.\");\r\n\r\n const timestamp = formGroup.value.timestamp\r\n\r\n return this.deleteByUrl(url, timestamp);\r\n }\r\n\r\n public async deleteByUrl(url: string, timestamp?: string): Promise<HttpResponse<void | ProblemDetails>> {\r\n let header = RestWorldClient.createHeaders('application/hal+json', this._options.Version);\r\n\r\n if (timestamp !== undefined)\r\n header = header.append(\"ETag\", timestamp);\r\n\r\n const response = await this.halClient.delete(url, ProblemDetails, header);\r\n\r\n return response;\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HalClient } from \"@wertzui/ngx-hal-client\";\r\nimport { RestWorldOptions } from \"../models/restworld-options\";\r\nimport { RestWorldClient } from \"./restworld-client\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RestWorldClientCollection {\r\n private readonly _clients: {\r\n [name: string]: RestWorldClient;\r\n };\r\n constructor(private _halClient: HalClient) {\r\n this._clients = {};\r\n }\r\n\r\n public containsClient(name: string): boolean {\r\n return Object.keys(this._clients).includes(name);\r\n }\r\n\r\n public async addOrGetExistingClient(name: string, options: RestWorldOptions): Promise<RestWorldClient> {\r\n if (Object.keys(this._clients).includes(name))\r\n return this.getClient(name);\r\n\r\n const client = new RestWorldClient(this._halClient, options);\r\n await client.ensureHomeResourceIsSet();\r\n this._clients[name] = client;\r\n return client;\r\n }\r\n\r\n public getClient(name: string): RestWorldClient {\r\n const client = this._clients[name];\r\n if (!client)\r\n throw new Error(`No client with the name '${name}' exists.`);\r\n\r\n return client;\r\n }\r\n\r\n public get all(): { [name: string]: RestWorldClient } {\r\n return this._clients;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { Property, PropertyType, Template, Templates } from '@wertzui/ngx-hal-client';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormService {\r\n\r\n public createFormGroupsFromTemplates(templates: Templates): { [key: string]: UntypedFormGroup } {\r\n const tabs = Object.fromEntries(Object.entries(templates).map(([name, template]) => [\r\n name,\r\n this.createFormGroupFromTemplate(template)\r\n ]));\r\n\r\n return tabs;\r\n }\r\n\r\n private createFormGroupFromTemplates(templates: Templates, ignoredProperties: string[]): UntypedFormGroup {\r\n const controls = Object.fromEntries(\r\n Object.entries(templates)\r\n .filter(([key, ]) => !ignoredProperties.some(p => key === p))\r\n .map(([name, template]) => [\r\n name,\r\n this.createFormGroupFromTemplate(template)\r\n ]));\r\n const formGroup = new UntypedFormGroup(controls);\r\n return formGroup;\r\n }\r\n\r\n public createFormArrayFromTemplates(templates: Templates, ignoredProperties: string[]): UntypedFormArray {\r\n const controls =\r\n Object.entries(templates)\r\n .filter(([key, ]) => !ignoredProperties.some(p => key === p))\r\n .map(([, template]) =>\r\n this.createFormGroupFromTemplate(template));\r\n const formArray = new UntypedFormArray(controls);\r\n return formArray;\r\n }\r\n\r\n public createFormGroupFromTemplate(template: Template): UntypedFormGroup {\r\n const controls = Object.fromEntries(template.properties.map(p => [\r\n p.name,\r\n this.createFormControl(p)\r\n ]));\r\n const formGroup = new UntypedFormGroup(controls);\r\n return formGroup;\r\n }\r\n\r\n public createFormControl(property: Property): UntypedFormControl | UntypedFormGroup | UntypedFormArray {\r\n if (property.type === PropertyType.Object)\r\n return this.createFormGroupFromTemplate(property._templates['default']);\r\n if (property.type === PropertyType.Collection)\r\n return this.createFormArrayFromTemplates(property._templates, ['default']);\r\n\r\n const control = new UntypedFormControl(property.value);\r\n if (property.max)\r\n control.addValidators(Validators.max(property.max));\r\n if (property.maxLength)\r\n control.addValidators(Validators.maxLength(property.maxLength));\r\n if (property.min)\r\n control.addValidators(Validators.min(property.min));\r\n if (property.minLength)\r\n control.addValidators(Validators.minLength(property.minLength));\r\n if (property.regex)\r\n control.addValidators(Validators.pattern(property.regex));\r\n if (property.required)\r\n control.addValidators(Validators.required);\r\n if (property.type === PropertyType.Email)\r\n control.addValidators(Validators.email);\r\n\r\n return control;\r\n }\r\n}\r\n","import { Property, Options } from '@wertzui/ngx-hal-client'\r\nimport { RestWorldImage } from './restworld-image';\r\n\r\nexport class PropertyWithImage extends Property {\r\n restWorldImage!: RestWorldImage;\r\n}\r\n\r\nexport class PropertyWithOptions extends Property {\r\n options!: Options;\r\n}\r\n","import { Component, Input } from '@angular/core';\nimport { ControlContainer, FormGroupDirective } from '@angular/forms';\nimport { Property, PropertyType } from '@wertzui/ngx-hal-client';\n\n/**\n * A label that is generated from the given property.\n * If you also want an input element, you can either use RestWorldFormElement <rw-form-element> to have a label and an input rendered,\n * or use RestWorldInput <rw-input> which will just render the input element, so you can freely place this label.\n */\n@Component({\n selector: 'rw-label',\n templateUrl: './restworld-label.component.html',\n styleUrls: ['./restworld-label.component.css'],\n viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]\n})\nexport class RestWorldLabelComponent {\n @Input()\n property!: Property;\n\n public get PropertyType() {\n return PropertyType;\n }\n}\n","<label \r\n *ngIf=\"property.type !== PropertyType.Hidden\" \r\n [attr.for]=\"property.name\"\r\n [class.p-disabled]=\"property.readOnly\">\r\n {{property.prompt ?? property.name}}\r\n</label>","import { Component, Input } from '@angular/core';\nimport { AbstractControl, ControlContainer, FormGroup, FormGroupDirective } from '@angular/forms';\nimport { Property } from '@wertzui/ngx-hal-client';\n\n/**\n * Displays validation errors either for one property or for a whole form.\n */\n@Component({\n selector: 'rw-validation-errors',\n templateUrl: './restworld-validation-errors.component.html',\n styleUrls: ['./restworld-validation-errors.component.css'],\n viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]\n})\nexport class RestWorldValidationErrorsComponent<T extends { [K in keyof T]: AbstractControl<any, any>; }> {\n @Input()\n property?: Property;\n\n @Input()\n form?: FormGroup<T>\n}\n","<val-errors *ngIf=\"property\" [controlName]=\"property.name ?? null\">\n <ng-template valError=\"required\">The field '{{property.prompt ?? property.name}}' is required.</ng-template>\n <ng-template valError=\"email\">The email must be a valid email address.</ng-template>\n <ng-template valError=\"min\" let-error=\"error\">'{{property.prompt ?? property.name}}' must be equal or greater than or equal to {{ error.min }}.</ng-template>\n <ng-template valError=\"max\" let-error=\"error\">'{{property.prompt ?? property.name}}' must be smaller than or equal to {{ error.max }}.</ng-template>\n <ng-template valError=\"minlength\" let-error=\"error\">The length of '{{property.prompt ?? property.name}}' must be equal or greater than or equal to {{ error.requiredLength }}.</ng-template>\n <ng-template valError=\"maxlength\" let-error=\"error\">The length of '{{property.prompt ?? property.name}}' must be shorter than or equal to {{ error.requiredLength }}.</ng-template>\n <ng-template valError=\"pattern\" let-error=\"error\">The value for '{{property.prompt ?? property.name}}' does not match the pattern {{ error }}.</ng-template>\n <ng-template valError=\"remote\" let-error=\"error\">{{ error }}</ng-template>\n</val-errors>\n\n<val-errors *ngIf=\"form\" [control]=\"form\">\n <ng-template valError=\"remote\" let-error=\"error\">{{ error }}</ng-template>\n</val-errors>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * Cast super type into type using generics\r\n * Return Type obtained by optional @param type OR assignment type.\r\n */\r\n\r\n@Pipe({ name: 'as' })\r\nexport class AsPipe implements PipeTransform {\r\n /**\r\n * Cast (S: SuperType) into (T: Type) using @Generics.\r\n * @param value (S: SuperType) obtained from input type.\r\n * @optional @param type (T CastingType)\r\n * type?: { new (): T }\r\n * type?: new () => T\r\n */\r\n transform<S, T extends S>(value: S, type: new (...args: any[]) => T): T {\r\n return value as T;\r\n }\r\n}","import { AfterViewInit, Component, forwardRef, Input, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CropperPosition, ImageCroppedEvent, ImageCropperComponent, OutputFormat } from 'ngx-image-cropper';\r\nimport { FileUpload } from 'primeng/fileupload';\r\nimport { Dialog } from 'primeng/dialog'\r\nimport { Subscription } from 'rxjs';\r\nimport { Property } from '@wertzui/ngx-hal-client';\r\nimport { RestWorldImage } from '../../models/restworld-image'\r\n\r\n@Component({\r\n selector: 'rw-image',\r\n templateUrl: './restworld-image.component.html',\r\n styleUrls: ['./restworld-image.component.css'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RestWorldImageComponent),\r\n multi: true\r\n }]\r\n})\r\nexport class RestWorldImageComponent implements ControlValueAccessor, OnInit, AfterViewInit {\r\n\r\n private onChange?: Function;\r\n\r\n @Input()\r\n public property!: Property & { restWorldImage: RestWorldImage}\r\n\r\n public get alt() {\r\n return this.property.prompt ?? this.property.name;\r\n }\r\n\r\n public get accept() {\r\n return this.property.restWorldImage.accept ?? this.property.placeholder ?? \"image/*\";\r\n }\r\n\r\n public get fileName() {\r\n return this.property.name + \".\" + (this.property.restWorldImage.format ?? \".png\");\r\n }\r\n\r\n public get alignImage() {\r\n return this.property.restWorldImage.alignImage;\r\n }\r\n\r\n public get aspectRatio() {\r\n return this.property.restWorldImage.aspectRatio;\r\n }\r\n\r\n public get backgroundColor() {\r\n return this.property.restWorldImage.backgroundColor;\r\n }\r\n public set backgroundColor(value: string | undefined) {\r\n this.property.restWorldImage.backgroundColor = value;\r\n }\r\n\r\n public get canvasRotation() {\r\n return this.property.restWorldImage.canvasRotation;\r\n }\r\n\r\n public get containWithinAspectRatio() {\r\n return this.property.restWorldImage.containWithinAspectRatio;\r\n }\r\n\r\n public get cropper() {\r\n return this.property.restWorldImage.cropper;\r\n }\r\n\r\n public get cropperMaxHeight() {\r\n return this.property.restWorldImage.cropperMaxHeight;\r\n }\r\n\r\n public get cropperMaxWidth() {\r\n return this.property.restWorldImage.cropperMaxWidth;\r\n }\r\n\r\n public get cropperMinHeight() {\r\n return this.property.restWorldImage.cropperMinHeight;\r\n }\r\n\r\n public get cropperMinWidth() {\r\n return this.property.restWorldImage.cropperMinWidth;\r\n }\r\n\r\n public get cropperStaticHeight() {\r\n return this.property.restWorldImage.cropperStaticHeight;\r\n }\r\n\r\n public get cropperStaticWidth() {\r\n return this.property.restWorldImage.cropperStaticWidth;\r\n }\r\n\r\n public get format() {\r\n return this.property.restWorldImage.format;\r\n }\r\n\r\n public get imageQuality() {\r\n return this.property.restWorldImage.imageQuality;\r\n }\r\n\r\n public get initialStepSize() {\r\n return this.property.restWorldImage.initialStepSize;\r\n }\r\n\r\n public get maintainAspectRatio() {\r\n return this.property.restWorldImage.maintainAspectRatio;\r\n }\r\n\r\n public get onlyScaleDown() {\r\n return this.property.restWorldImage.onlyScaleDown;\r\n }\r\n\r\n public get resizeToWidth() {\r\n return this.property.restWorldImage.resizeToWidth;\r\n }\r\n\r\n public get resizeToHeight() {\r\n return this.property.restWorldImage.resizeToHeight;\r\n }\r\n\r\n public get roundCropper() {\r\n return this.property.restWorldImage.roundCropper;\r\n }\r\n\r\n @ViewChildren(FileUpload)\r\n fileUploads?: QueryList<FileUpload>;\r\n\r\n\r\n @ViewChildren(ImageCropperComponent)\r\n imageCroppers?: QueryList<ImageCropperComponent>;\r\n\r\n @ViewChildren(Dialog)\r\n dialogs?: QueryList<Dialog>;\r\n\r\n public disabled = false;\r\n public uri?: string | null;\r\n public tempImageFile?: File;\r\n public displayCropDialog = false;\r\n public tempCroppedUri?: string | null;\r\n\r\n writeValue(obj?: string | null): void {\r\n this.uri = obj;\r\n }\r\n registerOnChange(fn?: Function): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(): void {\r\n // not needed for this component, but needed to implement the interface\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnInit(): void {\r\n // If no background color is set, we set it to white.\r\n // Otherwise the color picker would show red, the input would be empty and the image cropper would show transparent.\r\n if (!this.backgroundColor)\r\n this.backgroundColor = '#ffffff';\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // We need to trigger imageLoadedInView each time, after the opening animation of the dialog has been completed.\r\n // Otherwise the image cropper initially (and after every window resize) thinks that the image size is 0x0,\r\n // because the opening animation hast just begun when the image cropper is first shown.\r\n this.dialogs?.map(d => d.onShow.subscribe(() =>\r\n this.imageCroppers?.forEach(i => { i.imageLoadedInView(); })\r\n ));\r\n }\r\n\r\n public showCropDialog(): void {\r\n this.displayCropDialog = true;\r\n }\r\n\r\n public imageChanged(event: { files: File[] }): void {\r\n this.tempImageFile = event.files[0];\r\n this.showCropDialog();\r\n }\r\n\r\n public croppedImageChanged(event: ImageCroppedEvent): void {\r\n this.tempCroppedUri = event.base64;\r\n }\r\n\r\n public acceptCroppedImage(): void {\r\n this.uri = this.tempCroppedUri;\r\n this.onChange?.(this.uri);\r\n this.closeCropDialog();\r\n }\r\n\r\n public closeCropDialog(): void {\r\n this.fileUploads?.forEach(f => f.clear());\r\n this.displayCropDialog = false;\r\n }\r\n}\r\n","<div class=\"flex align-items-center\">\r\n <p-button *ngIf=\"!uri\" [disabled]=\"true\" icon=\"pi pi-download\" class=\"mr-1\" pTooltip=\"No image present\"></p-button>\r\n <a *ngIf=\"uri\" [href]=\"uri | safeUrl\" [download]=\"fileName || 'download'\" class=\"mr-1\" pButton pTooltip=\"Download image\" icon=\"pi pi-download\"></a>\r\n <p-fileUpload class=\"mr-1\" chooseIcon=\"pi-upload fas fa-upload\" mode=\"basic\" [auto]=\"true\" [accept]=\"accept || 'image/*'\" [customUpload]=\"true\" (uploadHandler)=\"imageChanged($event)\" pTooltip=\"Upload new image\"></p-fileUpload>\r\n <img *ngIf=\"uri\" class=\"thumbnail\" [src]=\"uri | safeUrl\" [alt]=\"alt\" (click)=\"showCropDialog()\" pTooltip=\"Zoom and crop\" />\r\n</div>\r\n\r\n<p-dialog [header]=\"alt ?? ''\" [(visible)]=\"displayCropDialog\">\r\n <image-cropper\r\n [autoCrop]=\"true\"\r\n (imageCropped)=\"croppedImageChanged($event)\"\r\n [alignImage]=\"alignImage ?? 'center'\"\r\n [aspectRatio]=\"aspectRatio ?? 1\"\r\n [backgroundColor]=\"backgroundColor ?? null\"\r\n [canvasRotation]=\"canvasRotation ?? 0\"\r\n [containWithinAspectRatio]=\"containWithinAspectRatio ?? false\"\r\n [cropper]=\"cropper ?? { x1: -100, y1: -100, x2: 10000, y2: 10000 }\"\r\n [cropperMaxHeight]=\"cropperMaxHeight ?? 0\"\r\n [cropperMaxWidth]=\"cropperMaxWidth ?? 0\"\r\n [cropperMinHeight]=\"cropperMinHeight ?? 0\"\r\n [cropperMinWidth]=\"cropperMinWidth ?? 0\"\r\n [cropperStaticHeight]=\"cropperStaticHeight ?? 0\"\r\n [cropperStaticWidth]=\"cropperStaticWidth ?? 0\"\r\n [format]=\"format ?? 'png'\"\r\n [imageQuality]=\"imageQuality ?? 92\"\r\n [initialStepSize]=\"initialStepSize ?? 3\"\r\n [maintainAspectRatio]=\"maintainAspectRatio ?? true\"\r\n [onlyScaleDown]=\"onlyScaleDown ?? false\"\r\n [resizeToWidth]=\"resizeToWidth ?? 0\"\r\n [resizeToHeight]=\"resizeToHeight ?? 0\"\r\n [roundCropper]=\"roundCropper ?? false\"\r\n [imageFile]=\"tempImageFile!\"\r\n [imageURL]=\"uri!\"\r\n ></image-cropper>\r\n <div class=\"flex justify-content-end\">\r\n <div class=\"flex-auto align-items-center\">\r\n <span>Background color: </span>\r\n <p-colorPicker [(ngModel)]=\"backgroundColor\" appendTo=\"body\" class=\"ml-1 mr-1\"></p-colorPicker>\r\n <input pInputText [(ngModel)]=\"backgroundColor\" />\r\n </div>\r\n <button type=\"button\" pButton pRipple (click)=\"acceptCroppedImage()\" class=\"mr-2\">Ok</button>\r\n <button type=\"button\" pButton pRipple (click)=\"closeCropDialog()\">Cancel</button>\r\n </div>\r\n</p-dialog>\r\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { ChangeDetectorRef, Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\nimport { AbstractControl, ControlContainer, FormArray, FormControl, FormGroup, FormGroupDirective } from '@angular/forms';\r\nimport { NumberTemplate, Options, Property, PropertyType, Resource, Template, TemplateDto } from '@wertzui/ngx-hal-client';\r\nimport { FormService } from '../../services/form.service';\r\nimport { MessageService } from 'primeng/api';\r\nimport { ProblemDetails } from '../../models/problem-details';\r\nimport { PropertyTemplateContext } from '../../models/templating';\r\nimport { RestWorldClient } from '../../services/restworld-client';\r\nimport { RestWorldClientCollection } from '../../services/restworld-client-collection';\r\nimport { PropertyWithOptions, PropertyWithImage } from '../../models/special-properties'\r\n\r\n/**\r\n * A form element with a label that is automatically created from a property in a form template.\r\n * This may also be a complex object or a collection in which case multiple and nested input elements may be rendered.\r\n * If you want a form element without a label, use RestWorldFormInput <rw-form-input>.\r\n */\r\n@Component({\r\n selector: 'rw-form-element',\r\n templateUrl: './restworld-form-element/restworld-form-element.component.html',\r\n styleUrls: ['./restworld-form-element/restworld-form-element.component.css'],\r\n viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]\r\n})\r\nexport class RestWorldFormElementComponent<T extends { [K in keyof T]: AbstractControl<any, any>; }> {\r\n @Input()\r\n property!: Property;\r\n\r\n @Input()\r\n apiName!: string;\r\n}\r\n\r\n/**\r\n * A form input element that is automatically created from a property in a form template.\r\n * This may also be a complex object or a collection in which case multiple and nested input elements may be rendered.\r\n * If you also want a label, use RestWorldFormElement <rw-form-element>.\r\n * You can also use one of the different RestWorldInput... <rw-input-...> elements to render a specific input,\r\n * but it is advised to control the rendered input through the passed in property.\r\n */\r\n@Component({\r\n selector: 'rw-input',\r\n templateUrl: './restworld-input/restworld-input.component.html',\r\n styleUrls: ['./restworld-input/restworld-input.component.css'],\r\n viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]\r\n})\r\nexport class RestWorldInputComponent {\r\n\r\n @Input()\r\n property!: Property;\r\n\r\n @Input()\r\n apiName!: string;\r\n\r\n public get PropertyType() {\r\n return PropertyType;\r\n }\r\n\r\n public get PropertyWithOptions() {\r\n return PropertyWithOptions;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * A collection that is automatically created from the given property.\r\n * The collection supports drag & drop to re order the elements and can also be nested.\r\n * It is advised to use RestWorldInputComponent <rw-input> and control the rendered inputs with the passed in property\r\n * instead of using this component directly.\r\n */\r\n@Component({\r\n selector: 'rw-input-collection',\r\n templateUrl: './restworld-input-collection/restworld-input-collection.component.html',\r\n styleUrls: ['./restworld-input-collection/restworld-input-collection.component.css'],\r\n viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]\r\n})\r\nexport class RestWorldInputCollectionComponent<T extends { [K in keyof T]: AbstractControl<any, any>; }> implements OnInit{\r\n\r\n @Input()\r\n property!: Property;\r\n\r\n @Input()\r\n apiName!: string;\r\n\r\n @ContentChild('inputCollection', { static: false })\r\n inputCollectionRef?: TemplateRef<unknown>;\r\n\r\n\r\n private _templates: NumberTemplate[] = [];\r\n public get templates(): NumberTemplate[] {\r\n return this._templates;\r\n }\r\n\r\n private _defaultTemplate?: Template;\r\n public get defaultTemplate(): Template {\r\n if(this._defaultTemplate === undefined)\r\n throw new Error(\"No default template found.\");\r\n\r\n return this._defaultTemplate;\r\n }\r\n\r\n private _innerFormArray?: FormArray<FormGroup<T>>;\r\n public get innerFormArray() {\r\n if (this._innerFormArray === undefined)\r\n throw new Error(\"formGroup is not set.\");\r\n\r\n return this._innerFormArray;\r\n }\r\n\r\n constructor (\r\n private readonly _controlContainer: ControlContainer,\r\n private readonly _formService: FormService,\r\n private readonly _changeDetectorRef: ChangeDetectorRef,\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n const formGroup = this._controlContainer.control as FormGroup<any>;\r\n this._innerFormArray = formGroup.controls[this.property.name] as FormArray<FormGroup<T>>;\r\n this._templates = RestWorldInputCollectionComponent.getCollectionEntryTemplates(this.property);\r\n this._defaultTemplate = this.property._templates.default;\r\n }\r\n\r\n private static getCollectionEntryTemplates(property?: Property): NumberTemplate[] {\r\n if (!property)\r\n return [];\r\n\r\n return Object.entries(property._templates)\r\n .filter(([key, value]) => Number.isInteger(Number.parseInt(key)) && Number.isInteger(Number.parseInt(value.title ?? \"\")))\r\n .map(([, value]) => new NumberTemplate(value));\r\n }\r\n\r\n public addNewItemToCollection(): void {\r\n const maxIndex = Math.max(...Object.keys(this.templates)\r\n .map(key => Number.parseInt(key))\r\n .filter(key => Number.isSafeInteger(key)));\r\n const nextIndex = maxIndex < 0 ? 0 : maxIndex + 1;\r\n\r\n const copiedTemplateDto = JSON.parse(JSON.stringify(this.defaultTemplate)) as TemplateDto;\r\n const copiedTemplate = new NumberTemplate(copiedTemplateDto);\r\n copiedTemplate.title = nextIndex;\r\n\r\n this.templates[copiedTemplate.title] = copiedTemplate;\r\n this.innerFormArray.push(this._formService.createFormGroupFromTemplate(this.defaultTemplate));\r\n }\r\n\r\n public deleteItemFromCollection(template: NumberTemplate): void {\r\n delete this.templates[template.title];\r\n this.innerFormArray.removeAt(template.title);\r\n }\r\n\r\n public collectionItemDropped($event: CdkDragDrop<{ }>) {\r\n const previousIndex = $event.previousIndex;\r\n const currentIndex = $event.currentIndex;\r\n const movementDirection = currentIndex > previousIndex ? 1 : -1;\r\n\r\n // Move in FormArray\r\n // We do not need to move the item in the _templates object\r\n const movedControl = this.innerFormArray.at(previousIndex);\r\n for (let i = previousIndex; i * movementDirection < currentIndex * movementDirection; i = i + movementDirection) {\r\n this.innerFormArray.setControl(i, this.innerFormArray.at(i + movementDirection));\r\n }\r\n this.innerFormArray.setControl(currentIndex, movedControl);\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n}\r\n\r\n/**\r\n * A dropdown that is automatically created from the given property.\r\n * The dropdown supports searching through a RESTWorld list endpoint on the backend.\r\n * It is advised to use RestWorldInputComponent <rw-input> and control the rendered inputs with the passed in property\r\n * instead of using this component directly.\r\n */\r\n@Component({\r\n selector: 'rw-input-dropdown',\r\n templateUrl: './restworld-input-dropdown/restworld-input-dropdown.component.html',\r\n styleUrls: ['./restworld-input-dropdown/restworld-input-dropdown.component.css'],\r\n viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]\r\n})\r\nexport class RestWorldInputDropdownComponent {\r\n @Input()\r\n property!: Property & { options: Options };\r\n\r\n @Input()\r\n apiName!: string;\r\n\r\n @ContentChild('inputOptionsSingle', { static: false })\r\n inputOptionsSingleRef?: TemplateRef<PropertyTemplateContext>;\r\n\r\n @ContentChild('inputOptionsMultiple', { static: false })\r\n inputOptionsMultipleRef?: TemplateRef<PropertyTemplateContext>;\r\n\r\n constructor (\r\n private readonly _messageService: MessageService,\r\n private readonly _clients: RestWorldClientCollection\r\n ) {\r\n }\r\n\r\n public getDropdownElementTooltip(resource: Resource, keysToExclude?: string[]): string {\r\n const tooltip = Object.entries(resource)\r\n .filter(([key]) => !(key.startsWith('_') || ['createdAt', 'createdBy', 'lastChangedAt', 'lastChangedBy', 'timestamp'].includes(key) || keysToExclude?.includes(key)))\r\n .reduce((prev, [key, value], index) => `${prev}${index === 0 ? '' : '\\n'}${key}: ${RestWorldInputDropdownComponent.jsonStringifyWithElipsis(value)}`, '');\r\n\r\n return tooltip;\r\n }\r\n\r\n public async onOptionsFiltered(property: Property, event: { originalEvent: unknown; filter: string | null }) {\r\n const options = property?.options;\r\n\r\n if (!options?.link?.href || !event.filter || event.filter === '')\r\n return;\r\n\r\n\r\n const templatedUri = options.link.href;\r\n let filter = `contains(${options.promptField}, '${event.filter}')`;\r\n if (options.valueField?.toLowerCase() === 'id' && !Number.isNaN(Number.parseInt(event.filter)))\r\n filter = `(${options.valueField} eq ${event.filter}) or (${filter})`;\r\n\r\n const response = await this.getClient().getListByUri(templatedUri, { $filter: filter, $top: 10 });\r\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body) {\r\n const message = `An error occurred while getting the filtered items.`;\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: message, data: response, sticky: true });\r\n return;\r\n }\r\n\r\n const items = response.body._embedded.items;\r\n options.inline = items;\r\n }\r\n\r\n private getClient(): RestWorldClient {\r\n if (!this.apiName)\r\n throw new Error('Cannot get a client, because the apiName is not set.');\r\n\r\n return this._clients.getClient(this.apiName);\r\n }\r\n\r\n private static jsonStringifyWithElipsis(value: unknown) {\r\n const maxLength = 200;\r\n const end = 10;\r\n const start = maxLength - end - 2;\r\n const json = JSON.stringify(value);\r\n const shortened = json.length > maxLength ? json.substring(0, start) + '…' + json.substring(json.length - end) : json;\r\n\r\n return shortened;\r\n }\r\n}\r\n\r\n/**\r\n * A complex object with multiple properties that is automatically created from the given property.\r\n * The object can also be nested.\r\n * It is advised to use RestWorldInputComponent <rw-input> and control the rendered inputs with the passed in property\r\n * instead of using this component directly.\r\n */\r\n@Component({\r\n selector: 'rw-input-object',\r\n templateUrl: './restworld-input-object/restworld-input-object.component.html',\r\n styleUrls: ['./restworld-input-object/restworld-input-object.component.css'],\r\n viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]\r\n})\r\nexport class RestWorldInputObjectComponent<T extends { [K in keyof T]: AbstractControl<any, any>; }> implements OnInit {\r\n\r\n @Input()\r\n property!: Property;\r\n\r\n @Input()\r\n apiName!: string;\r\n\r\n @ContentChild('inputObject', { static: false })\r\n inputObjectRef?: TemplateRef<unknown>;\r\n\r\n private _innerFormGroup?: FormGroup<T>;\r\n\r\n public get innerFormGroup() {\r\n if (this._innerFormGroup === undefined)\r\n throw new Error(\"formGroup is not set.\");\r\n\r\n return this._innerFormGroup;\r\n }\r\n\r\n constructor (\r\n private readonly _controlContainer: ControlContainer\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n const formGroup = this._controlContainer.control as FormGroup<any>;\r\n this._innerFormGroup = formGroup.controls[this.property.name] as FormGroup<T>;\r\n }\r\n}\r\n\r\n/**\r\n * A simple input element, like a text, or a number that is automatically created from the given property.\r\n * It is advised to use RestWorldInputComponent <rw-input> and control the rendered inputs with the passed in property\r\n * instead of using this component directly.\r\n */\r\n@Component({\r\n selector: 'rw-input-simple',\r\n templateUrl: './restworld-input-simple/restworld-input-simple.component.html',\r\n styleUrls: ['./restworld-input-simple/restworld-input-simple.component.css'],\r\n viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]\r\n})\r\nexport class RestWorldInputSimpleComponent<T> implements OnInit {\r\n\r\n @Input()\r\n property!: Property;\r\n\r\n public get PropertyType() {\r\n return PropertyType;\r\n }\r\n\r\n public get dateFormat(): string {\r\n return new Date(3333, 11, 22)\r\n .toLocaleDateString()\r\n .replace(\"22\", \"dd\")\r\n .replace(\"11\", \"mm\")\r\n .replace(\"3333\", \"yy\")\r\n .replace(\"33\", \"y\");\r\n }\r\n\r\n private _formControl?: FormControl<T>;\r\n\r\n public get formControl() {\r\n if (this._formControl === undefined)\r\n throw new Error(\"formGroup is not set.\");\r\n\r\n return this._formControl;\r\n }\r\n\r\n public get PropertyWithImage() {\r\n return PropertyWithImage;\r\n }\r\n\r\n constructor (\r\n private readonly _controlContainer: ControlContainer\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n const formGroup = this._controlContainer.control as FormGroup<any>;\r\n this._formControl = formGroup.controls[this.property.name] as FormControl<T>;\r\n }\r\n}\r\n\r\n/**\r\n * A collection of rw-form-elemtns automatically created from a template.\r\n * Does not have any buttons on its own.\r\n * If you want buttons, use RestWorldForm <rw-form>.\r\n */\r\n@Component({\r\n selector: 'rw-input-template',\r\n templateUrl: './restworld-input-template/restworld-input-template.component.html',\r\n styleUrls: ['./restworld-input-template/restworld-input-template.component.css'],\r\n viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]\r\n})\r\nexport class RestWorldInputTemplateComponent<T extends { [K in keyof T]: AbstractControl<any, any>; }> {\r\n @Input()\r\n apiName!: string;\r\n\r\n @Input()\r\n template!: Template;\r\n}\r\n","<div class=\"grid field\">\r\n <rw-label [property]=\"property\" class=\"col-12 md:col-2 flex align-items-center\"></rw-label>\r\n <rw-input [apiName]=\"apiName\" [property]=\"property\" class=\"col-12 md:col-10\"></rw-input>\r\n</div>\r\n","<rw-input-dropdown *ngIf=\"property.options\" [apiName]=\"apiName\" [property]=\"property | as:PropertyWithOptions\"></rw-input-dropdown>\r\n\r\n<ng-container *ngIf=\"!property.options\">\r\n <ng-container [ngSwitch]=\"property.type\">\r\n <rw-input-object *ngSwitchCase=\"PropertyType.Object\" [apiName]=\"apiName\" [property]=\"property\"></rw-input-object>\r\n <rw-input-collection *ngSwitchCase=\"PropertyType.Collection\" [apiName]=\"apiName\" [property]=\"property\"></rw-input-collection>\r\n <rw-input-simple *ngSwitchDefault [property]=\"property\"></rw-input-simple>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<rw-validation-errors [property]=\"property\"></rw-validation-errors>","<div class=\"flex align-items-center\">\n <div class=\"brace\">\n </div>\n <div class=\"w-full\" cdkDropList (cdkDropListDropped)=\"collectionItemDropped($event)\">\n <div *ngFor=\"let template of templates\" class=\"flex align-items-center\" cdkDrag>\n <i class=\"fas fa-grip-lines\" cdkDragHandle></i>\n <div class=\"brace\">\n </div>\n <div class=\"w-full flex justify-content-end\">\n <rw-input-template [formGroup]=\"innerFormArray.controls[template.title]\" [template]=\"defaultTemplate\" [apiName]=\"apiName\" class=\"w-full\"></rw-input-template>\n <button pButton pRipple type=\"button\" icon=\"fas fa-trash\" class=\"p-button-outlined p-button-danger ml-2 mb-3\" (click)=\"deleteItemFromCollection(template)\"></button>\n </div>\n </div>\n <div class=\"flex justify-content-end w-full\">\n <button pButton pRipple type=\"button\" icon=\"fas fa-plus\" class=\"p-button-outlined p-button-info\" (click)=\"addNewItemToCollection()\"></button>\n </div>\n </div>\n</div>","<ng-template #defaultInputOptionsSingle let-property=\"property\" let-template=\"template\">\n <p-dropdown \n [formControlName]=\"property.name\" \n [id]=\"property.name\" \n [options]=\"property.options.inline\" \n [filterBy]=\"(property.options.promptField ?? 'prompt') + ',' + (property.options.valueField ?? 'value')\" \n [optionValue]=\"property.options.valueField ?? 'value'\" \n [readonly]=\"property.readOnly\" \n [required]=\"property.required || property.options.minItems > 0\" \n [filter]=\"true\" \n [autoDisplayFirst]=\"false\" \n [showClear]=\"!property.required || property.options.minItems <= 0\" \n (onFilter)=\"onOptionsFiltered(property, $event)\" \n styleClass=\"w-full\" \n [filterPlaceholder]=\"property?.options?.link?.href ? 'search for more results' : ''\">\n <ng-template let-item pTemplate=\"selectedItem\">\n <span [pTooltip]=\"getDropdownElementTooltip(item, [property.options.promptField ?? 'prompt', property.options.valueField ?? 'value'])\">{{item[property.options.promptField ?? 'prompt']}} ({{item[property.options.valueField ?? 'value']}})</span>\n </ng-template>\n <ng-template let-item pTemplate=\"item\">\n <span [pTooltip]=\"getDropdownElementTooltip(item, [property.options.promptField ?? 'prompt', property.options.valueField ?? 'value'])\">{{item[property.options.promptField ?? 'prompt']}} ({{item[property.options.valueField ?? 'value']}})</span>\n </ng-template>\n </p-dropdown>\n</ng-template>\n<ng-container *ngIf=\"!property.options.maxItems || property.options.maxItems == 1\">\n <ng-container *ngTemplateOutlet=\"inputOptionsSingleRef ?? defaultInputOptionsSingle; context: { property: property, apiName: apiName }\"></ng-container>\n</ng-container>\n\n<ng-template #defaultInputOptionsMultiple let-property=\"property\" let-template=\"template\">\n <p-multiSelect \n [formControlName]=\"property.name\" \n [id]=\"property.name\" \n [options]=\"property.options.inline\" \n [optionLabel]=\"property.options.promptField ?? 'prompt'\" \n [optionValue]=\"property.options.valueField ?? 'value'\" \n [readonly]=\"property.readOnly\" \n [selectionLimit]=\"property.options.maxItems\" \n [required]=\"property.required || property.options.minItems > 0\"></p-multiSelect>\n</ng-template>\n<ng-container *ngIf=\"(property.options.maxItems ?? 0) > 1\">\n <ng-container *ngTemplateOutlet=\"inputOptionsMultipleRef ?? defaultInputOptionsMultiple; context: { property: property, apiName: apiName }\"></ng-container>\n</ng-container>","<ng-template #defaultInputObject let-property=\"property\" let-template=\"template\">\n <div class=\"flex align-items-center\">\n <div class=\"brace\">\n </div>\n <div class=\"w-full\">\n <rw-input-template [formGroup]=\"innerFormGroup\" [template]=\"property._templates.default\" [apiName]=\"apiName\"></rw-input-template>\n </div>\n </div>\n</ng-template>\n<ng-container>\n <ng-container *ngTemplateOutlet=\"inputObjectRef || defaultInputObject; context: { property: property, innerFormGroup: innerFormGroup, apiName: apiName }\"></ng-container>\n</ng-container>","<div [ngSwitch]=\"property.type\">\n\n <input *ngSwitchCase=\"PropertyType.Hidden\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"hidden\" [value]=\"property.value\" />\n \n <input *ngSwitchCase=\"PropertyType.Text\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"text\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n \n <textarea *ngSwitchCase=\"PropertyType.Textarea\" [formControlName]=\"property.name\" [id]=\"property.name\" pInputTextarea class=\"w-full p-inputtextarea p-inputtext p-component p-element\" [class.p-disabled]=\"property.readOnly\" [cols]=\"property.cols\" [rows]=\"property.rows\"></textarea>\n \n <input *ngSwitchCase=\"PropertyType.Search\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"search\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n \n <input *ngSwitchCase=\"PropertyType.Tel\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"tel\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n \n <input *ngSwitchCase=\"PropertyType.Url\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"url\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n \n <input *ngSwitchCase=\"PropertyType.Email\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"email\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n \n <input *ngSwitchCase=\"PropertyType.Password\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"password\" pPassword class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n \n <p-calendar *ngSwitchCase=\"PropertyType.Date\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showWeek]=\"true\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n \n <p-calendar *ngSwitchCase=\"PropertyType.Month\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showWeek]=\"false\" view=\"month\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n \n <input *ngSwitchCase=\"PropertyType.Week\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"week\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n \n <p-calendar *ngSwitchCase=\"PropertyType.Time\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [timeOnly]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n \n <p-calendar *ngSwitchCase=\"PropertyType.DatetimeLocal\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n \n <p-inputNumber *ngSwitchCase=\"PropertyType.Number\" [formControlName]=\"property.name\" [id]=\"property.name\" mode=\"decimal\" [showButtons]=\"!property.readOnly\" class=\"w-full\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-inputNumber>\n \n <input *ngSwitchCase=\"PropertyType.Range\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"range\" [min]=\"property.min\" [max]=\"property.max\" [step]=\"property.step\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n \n <input *ngSwitchCase=\"PropertyType.Color\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"color\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n \n <ng-container *ngSwitchCase=\"PropertyType.Bool\">\n <p-checkbox *ngIf=\"property.required\" [binary]=\"true\" [formControl]=\"formControl\" [id]=\"property.name\" [readonly]=\"property.readOnly!\"></p-checkbox>\n <p-triStateCheckbox *ngIf=\"!property.required\" [formControl]=\"formControl\" [id]=\"property.name\" [readonly]=\"property.readOnly!\"></p-triStateCheckbox>\n </ng-container>\n \n <p-calendar *ngSwitchCase=\"PropertyType.DatetimeOffset\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n \n <p-calendar *ngSwitchCase=\"PropertyType.Duration\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [timeOnly]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <rw-image *ngSwitchCase=\"PropertyType.Image\" [formControlName]=\"property.name\" [property]=\"property | as:PropertyWithImage\"></rw-image>\n\n <rw-file *ngSwitchCase=\"PropertyType.File\" [formControlName]=\"property.name\" [fileName]=\"property.name\" [accept]=\"property.placeholder\"></rw-file>\n\n <input *ngSwitchDefault [formControlName]=\"property.name\" [id]=\"property.name\" type=\"text\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n</div>","<rw-form-element *ngFor=\"let property of template.properties\" [property]=\"property\" [apiName]=\"apiName\"></rw-form-element>","import { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { AbstractControl, FormGroup, UntypedFormArray, UntypedFormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { FormsResource, Template } from '@wertzui/ngx-hal-client';\nimport { ConfirmationService, MessageService } from 'primeng/api';\nimport { ProblemDetails } from '../../models/problem-details';\nimport { FormService } from '../../services/form.service';\nimport { RestWorldClient } from '../../services/restworld-client';\nimport { RestWorldClientCollection } from '../../services/restworld-client-collection';\n\n/**\n * A form with Save, Reload and Delete buttons.\n * If you do not want buttons, use RestWorldFormTemplateComponent <rw-form-template>.\n * You can also provide your own buttons by passing in a template.\n */\n@Component({\n selector: 'rw-form',\n templateUrl: './restworld-form.component.html',\n styleUrls: ['./restworld-form.component.css']\n})\nexport class RestWorldFormComponent implements OnInit{\n @Input()\n template!: Template;\n\n @Input()\n apiName!: string;\n\n @Input()\n rel!: string;\n\n @Input()\n allowSubmit = true;\n\n @Input()\n allowDelete = true;\n\n @Input()\n allowReload = true;\n\n @Input()\n showSubmit = true;\n\n @Input()\n showDelete = true;\n\n @Input()\n showReload = true;\n\n @Output()\n afterDelete = new EventEmitter<void>();\n\n @Output()\n afterSubmit = new EventEmitter<{old: Template, new: Template}>();\n\n @ContentChild('buttons', { static: false })\n buttonsRef?: TemplateRef<unknown>;\n\n private _isLoading = false;\n public get isLoading(): boolean {\n return this._isLoading;\n }\n\n private _formGroup?: FormGroup<{timestamp: AbstractControl<string>}>;\n public get formGroup(): FormGroup<{timestamp: AbstractControl<string>}> | undefined {\n return this._formGroup;\n }\n\n public get canSubmit() : boolean {\n return this.allowSubmit &&\n this.template.target !== undefined &&\n !this.isLoading;\n }\n\n public get canDelete(): boolean {\n return this.allowDelete &&\n this.template.target !== undefined &&\n this.template.method == \"PUT\" &&\n !this.isLoading;\n }\n\n public get canReload(): boolean {\n return this.allowReload &&\n this.template.target !== undefined &&\n this.template.title !== undefined &&\n this.template.properties.some(p => p.name === \"id\" && p.value !== undefined && p.value !== null && p.value !== 0) &&\n !this.isLoading;\n }\n\n constructor(\n private readonly _clients: RestWorldClientCollection,\n private readonly _confirmationService: ConfirmationService,\n private readonly _messageService: MessageService,\n private readonly _formService: FormService) {\n }\n\n ngOnInit(): void {\n this._formGroup = this._formService.createFormGroupFromTemplate(this.template);\n }\n\n public async reload(): Promise<void> {\n if (!this.canReload)\n return;\n\n this._isLoading = true;\n\n try\n {\n const response = await this.getClient().getForm(this.template.target!);\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body) {\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'Error while loading the resource from the API.', data: response, sticky: true });\n }\n else {\n this.template = response.body.getTemplateByTitle(this.template.title!);\n this._formGroup = this._formService.createFormGroupFromTemplate(this.template);\n }\n }\n catch (e: unknown) {\n this._messageService.add({ severity: 'error', summary: 'Error', detail: `An unknown error occurred. ${JSON.stringify(e)}`, sticky: true });\n console.log(e);\n }\n\n this._isLoading = false;\n }\n\n public showDeleteConfirmatioModal() {\n this._confirmationService.confirm({\n message: 'Do you really want to delete this resource?',\n header: 'Confirm delete',\n icon: 'far fa-trash-alt',\n accept: () => this.delete()\n });\n }\n\n public async submit() {\n if(!this.canSubmit)\n return;\n\n this._isLoading = true;\n\n try {\n const response = await this.getClient().submit(this.template, this.formGroup!.value);\n\n if (!response.ok) {\n let summary = 'Error';\n let detail = 'Error while saving the resource.';\n if (ProblemDetails.isProblemDetails(response.body)) {\n const problemDetails = response.body as ProblemDetails;\n summary = problemDetails.title || summary;\n detail = problemDetails.detail || detail;\n // display validation errors\n if (problemDetails['errors'] as {}) {\n for (const [key, errorsForKey] of Object.entries(problemDetails['errors'] as {})) {\n const path = key.split(/\\.|\\[/).map(e => e.replace(\"]\", \"\"));\n // The path might start with a $, indicating the root.\n if (path.length > 0 && path[0] === '$')\n path.shift();\n const formControl = path.reduce<AbstractControl>(RestWorldFormComponent.getSubControl, this.formGroup!);\n formControl.setErrors({ ...formControl.errors, ...{ remote: errorsForKey } });\n formControl.markAsTouched();\n }\n }\n }\n\n this._messageService.add({ severity: 'error', summary: summary, detail: detail, data: response, sticky: true });\n }\n else {\n const templateBeforeSubmit = this.template;\n const responseResource = (response.body as FormsResource);\n const templateAfterSubmit = responseResource.getTemplateByTitle(this.template.title!);\n\n this._messageService.add({ severity: 'success', summary: 'Saved', detail: 'The resource has been saved.' });\n\n this.afterSubmit.emit({old: templateBeforeSubmit, new: templateAfterSubmit});\n }\n }\n catch (e: unknown) {\n this._messageService.add({ severity: 'error', summary: 'Error', detail: `An unknown error occurred. ${JSON.stringify(e)}`, sticky: true });\n console.log(e);\n }\n\n this._isLoading = false;\n }\n\n public async delete(): Promise<void> {\n if (!this.canDelete)\n return;\n\n if (this.formGroup === undefined)\n throw new Error(\"formGroup cannot be undefined.\");\n\n await this.getClient().deleteByTemplateAndForm(this.template, this.formGroup);\n this._messageService.add({ severity: 'success', summary: 'Deleted', detail: 'The resource has been deleted.' })\n\n this.afterDelete.emit();\n }\n\n private static getSubControl(control: AbstractControl, pathElement: string): AbstractControl {\n if (pathElement === \"\")\n return control;\n\n if (control instanceof UntypedFormGroup)\n return control.controls[pathElement];\n\n if (control instanceof UntypedFormArray) {\n const index = Number.parseInt(pathElement);\n if (Number.isInteger(index))\n return control.controls[index];\n }\n\n return control;\n }\n\n private getClient(): RestWorldClient {\n return this._clients.getClient(this.apiName);\n }\n}\n","<form *ngIf=\"formGroup !== undefined && template !== undefined\" [formGroup]=\"formGroup\" (ngSubmit)=\"submit()\">\n <div class=\"blockable-container\">\n <div class=\"blockable-element\">\n <rw-input-template [template]=\"template\" [apiName]=\"apiName\"></rw-input-template>\n </div>\n <div class=\"blockable-overlay\" *ngIf=\"isLoading\">\n <p-progressSpinner></p-progressSpinner>\n </div>\n </div>\n\n <div class=\"grid\">\n <div class=\"col\">\n <div class=\"flex justify-content-end w-full\">\n <ng-template #defaultButtons>\n <button pButton pRipple type=\"submit\" label=\"Save\" icon=\"far fa-save\" class=\"mx-2 p-button-success\"\n [disabled]=\"!canSubmit\"></button>\n <button pButton pRipple type=\"button\" label=\"Reload\" icon=\"fas fa-redo\" class=\"mx-2 p-button-info\"\n (click)=\"reload()\" [disabled]=\"!canReload\"></button>\n <button pButton pRipple type=\"button\" label=\"Delete\" icon=\"far fa-trash-alt\"\n class=\"ml-2 p-button-danger\" (click)=\"showDeleteConfirmatioModal()\"\n [disabled]=\"!canDelete\"></button>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"buttonsRef || defaultButtons\"></ng-container>\n </div>\n </div>\n </div>\n</form>\n","import { Component, Input } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ProblemDetails } from '../../models/problem-details';\nimport { Resource } from '@wertzui/ngx-hal-client';\nimport { RestWorldClient } from '../../services/restworld-client';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MessageService } from 'primeng/api';\nimport { RestWorldClientCollection } from '../../services/restworld-client-collection';\n\n@Component({\n selector: 'rw-id-navigation',\n templateUrl: './restworld-id-navigation.component.html',\n styleUrls: ['./restworld-id-navigation.component.css']\n})\nexport class RestWorldIdNavigationComponent {\n\n @Input()\n public apiName?: string;\n\n @Input()\n public rel?: string;\n\n /**\n * A prefix to use for the URL that si returned from the backend.\n * If none is provided, a relative navigation will be performed which means that the last part of the current URL is replaced with the one from the backend.\n */\n @Input()\n public urlPrefix?: string;\n\n public idNavigationForm = new FormGroup<{\n id: FormControl<number | null>\n }>({\n id: new FormControl(null, Validators.compose([Validators.min(1), Validators.max(Number.MAX_SAFE_INTEGER)]))\n });\n\n constructor(\n private readonly _clients: RestWorldClientCollection,\n private readonly _messageService: MessageService,\n private readonly _router: Router,\n private readonly _route: ActivatedRoute) {\n }\n\n public async navigateById(): Promise<void> {\n if (!this.rel)\n throw new Error('The \"rel\" must be set through the uri of this page for the ID navigation to work.');\n\n if (!this.idNavigationForm.valid) {\n this._messageService.add({ detail: 'You must enter a valid ID to naviage to.', severity: 'error' });\n return;\n }\n var idToNavigateTo = this.idNavigationForm.controls.id.value;\n\n var client = this.getClient();\n\n var response = await client.getList<Resource>(this.rel, { $filter: `id eq ${idToNavigateTo}` });\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body) {\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'Error while loading the resources from the API.', data: response });\n return;\n }\n\n var resource = response.body?._embedded?.items?.[0];\n if (!resource) {\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'No resource found with the specified ID.' });\n return;\n }\n\n if(this.urlPrefix !== undefined)\n await this._router.navigate([this.urlPrefix, resource._links.self[0].href]);\n else\n await this._router.navigate([\"..\", resource._links.self[0].href], { relativeTo: this._route});\n\n this.idNavigationForm.reset();\n }\n\n private getClient(): RestWorldClient {\n if (!this.apiName)\n throw new Error('Cannot get a client, because the apiName is not set.');\n\n return this._clients.getClient(this.apiName);\n }\n}\n","<form [formGroup]=\"idNavigationForm\" (ngSubmit)=\"navigateById()\" class=\"mr-3\">\n <div class=\"p-inputgroup\">\n <p-inputNumber formControlName=\"id\" placeholder=\"Navigate by ID\"></p-inputNumber>\n <button type=\"submit\" pButton pRipple icon=\"fa-solid fa-arrow-right\"></button>\n </div>\n</form>\n","import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'rw-menu-button',\n templateUrl: './restworld-menu-button.component.html',\n styleUrls: ['./restworld-menu-button.component.css']\n})\nexport class RestWorldMenuButtonComponent {\n @Input()\n public items: MenuItem[]= [];\n\n constructor(private readonly _router: Router) {\n\n }\n\n onClick(item: MenuItem) {\n if (item.url) {\n window.location.href = item.url;\n } else if (item.routerLink) {\n this._router.navigate(item.routerLink, {\n queryParams: item.queryParams,\n fragment: item.fragment,\n queryParamsHandling: item.queryParamsHandling,\n preserveFragment: item.preserveFragment,\n skipLocationChange: item.skipLocationChange,\n replaceUrl: item.replaceUrl\n });\n } else if (item.command) {\n item.command();\n }\n }\n}\n","<ng-container *ngFor=\"let item of items; index as i\">\n <p-button\n *ngIf=\"!item.items\"\n [label]=\"item.label!\"\n [icon]=\"item.icon!\"\n [disabled]=\"item.disabled!\"\n [style]=\"item.style\"\n [styleClass]=\"item.styleClass!\"\n [pTooltip]=\"item.tooltip!\"\n [tooltipPosition]=\"item.tooltipPosition!\"\n (onClick)=\"onClick(item)\"\n [class.ml-2]=\"i > 0\">\n </p-button>\n\n <p-splitButton\n *ngIf=\"item.items\"\n [label]=\"item.label!\"\n [icon]=\"item.icon!\"\n [model]=\"item.items\"\n appendTo=\"body\"\n [disabled]=\"item.disabled!\"\n [style]=\"item.style\"\n [styleClass]=\"item.styleClass!\"\n [pTooltip]=\"item.tooltip!\"\n [tooltipPosition]=\"item.tooltipPosition!\"\n (onClick)=\"onClick(item)\"\n [class.ml-2]=\"i > 0\">\n </p-splitButton>\n</ng-container>\n","import { FilterMatchMode, FilterMetadata, LazyLoadEvent } from 'primeng/api';\r\nimport { Property, PropertyType, Template } from '@wertzui/ngx-hal-client';\r\n\r\nexport class ODataService {\r\n public static createFilterForProperty(property: Property, filter: FilterMetadata): string | undefined {\r\n if (!filter.value)\r\n return undefined;\r\n\r\n const oDataOperator = ODataService.createODataOperator(\r\n filter.matchMode,\r\n );\r\n const comparisonValue = ODataService.createComparisonValue(property, filter.value);\r\n\r\n switch (oDataOperator) {\r\n case 'contains':\r\n case 'not contains':\r\n case 'startswith':\r\n case 'endswith':\r\n return `${oDataOperator}(${property.name}, ${comparisonValue})`;\r\n default:\r\n return `${property.name} ${oDataOperator} ${comparisonValue}`;\r\n }\r\n }\r\n\r\n public static createFilterForPropertyArray(property: Property, filters: FilterMetadata[]): string | undefined {\r\n const filter = filters\r\n .map(f => ODataService.createFilterForProperty(property, f))\r\n .filter(f => !!f)\r\n .join(` ${filters[0].operator} `);\r\n\r\n if (filter === '')\r\n return undefined;\r\n\r\n return `(${filter})`;\r\n }\r\n\r\n public static createFilterFromTableLoadEvent(event: LazyLoadEvent, properties?: Property[]): string | undefined {\r\n if (!event.filters || properties === undefined)\r\n return undefined;\r\n\r\n const filter = Object.entries(event.filters)\r\n // The type definition is wrong, event.filters has values of type FilterMetadata[] and not FilterMetadata.\r\n .map(([propertyName, filter]) => ({ property: ODataService.findPropertyByName(properties, propertyName), filters: filter as FilterMetadata[] }))\r\n .map(f => ODataService.createFilterForPropertyArray(f.property, f.filters))\r\n .filter(f => !!f)\r\n .join(' and ');\r\n\r\n if (filter === '')\r\n return undefined;\r\n\r\n return `(${filter})`;\r\n }\r\n\r\n public static createOrderByFromTableLoadEvent(event: LazyLoadEvent): string | undefined {\r\n if (event.sortField) {\r\n const order = !event.sortOrder || event.sortOrder > 0 ? 'asc' : 'desc';\r\n return `${event.sortField} ${order}`;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public static createParametersFromTableLoadEvent(event: LazyLoadEvent, template?: Template) {\r\n const oDataParameters = {\r\n $filter: ODataService.createFilterFromTableLoadEvent(event, template?.properties),\r\n $orderby: ODataService.createOrderByFromTableLoadEvent(event),\r\n $top: ODataService.createTopFromTableLoadEvent(event),\r\n $skip: ODataService.createSkipFromTableLoadEvent(event)\r\n };\r\n\r\n return oDataParameters;\r\n }\r\n\r\n public static createSkipFromTableLoadEvent(event: LazyLoadEvent): number | undefined {\r\n return event.first;\r\n }\r\n\r\n public static createTopFromTableLoadEvent(event: LazyLoadEvent): number | undefined {\r\n return event.rows;\r\n }\r\n\r\n private static createComparisonValue(property: Property, value: unknown): string {\r\n if (value === null || value === undefined)\r\n return 'null';\r\n\r\n const type = property.type;\r\n\r\n switch (type) {\r\n case PropertyType.Date:\r\n return `cast(${(value as Date).toISOString()}, Edm.DateOnly)`;\r\n case PropertyType.DatetimeLocal:\r\n return `cast(${(value as Date).toISOString()}, Edm.DateTime)`;\r\n case PropertyType.DatetimeOffset:\r\n return `cast(${(value as Date).toISOString()}, Edm.DateTimeOffset)`;\r\n case PropertyType.Time:\r\n return `cast(${(value as Date).toISOString()}, Edm.TimeOnly)`;\r\n case PropertyType.Duration:\r\n return `cast(${(value as Date).toISOString()}, Edm.TimeSpan)`;\r\n case PropertyType.Bool:\r\n case PropertyType.Number:\r\n return '' + value;\r\n default:\r\n return `'${value}'`;\r\n }\r\n }\r\n\r\n private static createODataOperator(matchMode?: string): string {\r\n switch (matchMode) {\r\n case FilterMatchMode.STARTS_WITH:\r\n return 'startswith';\r\n case FilterMatchMode.CONTAINS:\r\n return 'contains';\r\n case FilterMatchMode.NOT_CONTAINS:\r\n return 'not contains';\r\n case FilterMatchMode.ENDS_WITH:\r\n return 'endswith';\r\n case FilterMatchMode.EQUALS:\r\n return 'eq';\r\n case FilterMatchMode.NOT_EQUALS:\r\n return 'ne';\r\n case FilterMatchMode.IN:\r\n return 'in';\r\n case FilterMatchMode.LESS_THAN:\r\n return 'lt';\r\n case FilterMatchMode.LESS_THAN_OR_EQUAL_TO:\r\n return 'le';\r\n case FilterMatchMode.GREATER_THAN:\r\n return 'gt';\r\n case FilterMatchMode.GREATER_THAN_OR_EQUAL_TO:\r\n return 'ge';\r\n case FilterMatchMode.IS:\r\n return 'eq';\r\n case FilterMatchMode.IS_NOT:\r\n return 'ne';\r\n case FilterMatchMode.BEFORE:\r\n return 'lt';\r\n case FilterMatchMode.AFTER:\r\n return 'gt';\r\n case FilterMatchMode.DATE_AFTER:\r\n return 'ge';\r\n case FilterMatchMode.DATE_BEFORE:\r\n return 'lt';\r\n case FilterMatchMode.DATE_IS:\r\n return 'eq';\r\n case FilterMatchMode.DATE_IS_NOT:\r\n return 'ne';\r\n default:\r\n throw Error(`Unknown matchMode ${matchMode}`);\r\n }\r\n }\r\n\r\n private static findPropertyByName(properties: Property[], propertyName: string): Property {\r\n const property = properties.find(p => p.name === propertyName);\r\n if (property === undefined)\r\n throw new Error(`Cannot find a property with the name ${propertyName} in the properties of the search form template.`);\r\n\r\n return property;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { Property, PropertyType, Template } from '@wertzui/ngx-hal-client';\nimport * as _ from 'lodash';\nimport { LazyLoadEvent, MenuItem } from 'primeng/api';\nimport { ODataParameters } from '../../models/o-data';\nimport { ODataService } from '../../services/o-data.service';\nimport { ContextMenu } from 'primeng/contextmenu';\n\nenum ColumnFilterType {\n text = 'text',\n numeric = 'numeric',\n boolean = 'boolean',\n date = 'date'\n}\n\n@Component({\n selector: 'rw-table',\n templateUrl: './restworld-table.component.html',\n styleUrls: ['./restworld-table.component.css']\n})\nexport class RestWorldTableComponent<TListDto> {\n @Input()\n public api?: string;\n\n private _template?: Template;\n @Input()\n public set template(value: Template | undefined){\n this._template = value;\n this._columns = value?.properties.filter(p => p.type !== PropertyType.Hidden) ?? [];\n this.setSortFieldAndSortOrder(value)\n }\n\n public get template() {\n return this._template;\n }\n\n private _rows: TListDto[] = [];\n public get rows() {\n return this._rows;\n }\n @Input()\n public set rows(value: TListDto[]) {\n this._rows = value;\n if(this.showRowMenuAsColumn)\n this._rowMenus = value.map(r => this.rowMenu(r, false));\n }\n\n @Input()\n public rowsPerPageOptions = [10, 25, 50];\n\n @Input()\n public headerMenu: MenuItem[] = [];\n\n @Input()\n public rowMenu: (row: TListDto, openedByRightClick: boolean) => MenuItem[] = () => [];\n\n private _rowMenus: MenuItem[][] = [];\n public get rowMenus() {\n return this._rowMenus;\n }\n\n public get showMenuColumn() {\n return this.headerMenu.length > 0 || this.showRowMenuAsColumn;\n }\n\n @Input()\n public showRowMenuAsColumn = true;\n\n @Input()\n public showRowMenuOnRightClick = true;\n\n @Input()\n public totalRecords = 0;\n\n private setSortFieldAndSortOrder(template: Template | undefined) {\n const orderBy = template?.properties?.find(p => p?.name === \"$orderby\")?.value;\n\n if(orderBy === null || orderBy === undefined || typeof orderBy !== 'string')\n return;\n\n const [field, order] = orderBy.split(\" \");\n const orderAsNumber = order?.toLowerCase() === \"desc\" ? -1 : 1;\n\n if (this.sortField !== field)\n this.sortField = field;\n if (this.sortOrder !== orderAsNumber)\n this.sortOrder = orderAsNumber;\n }\n\n public sortField?: string;\n public sortOrder?: number;\n\n @Input()\n public styleClass: string = \"\";\n\n @Input()\n public tableStyle?: string;\n\n @Input()\n public scrollable: boolean = true;\n\n @Input()\n public scrollHeight: string = \"flex\";\n\n @Output()\n public onFilterOrSortChanged = new EventEmitter<ODataParameters>();\n\n @ViewChild(\"contextMenu\")\n contextMenu?: ContextMenu;\n\n private _contextMenuItems: MenuItem[] = [];\n public get contextMenuItems() {\n return this._contextMenuItems;\n }\n\n @Input()\n public isLoading = false;\n\n private _columns: Property[] = [];\n public get columns(): Property[] {\n return this._columns;\n }\n\n private static readonly _dateFormat = new Date(3333, 10, 22)\n .toLocaleDateString()\n .replace(\"22\", \"dd\")\n .replace(\"11\", \"MM\")\n .replace(\"3333\", \"y\")\n .replace(\"33\", \"yy\");\n\n public get dateFormat() {\n return RestWorldTableComponent._dateFormat;\n }\n\n public get PropertyType(): typeof PropertyType {\n return PropertyType;\n }\n\n public load(event: LazyLoadEvent) {\n this.sortField = event.sortField;\n this.sortOrder = event.sortOrder;\n const parameters = ODataService.createParametersFromTableLoadEvent(event, this.template);\n this.onFilterOrSortChanged.emit(parameters);\n }\n\n public openContextMenu(event: MouseEvent, row: TListDto): void {\n if (!this.showRowMenuOnRightClick || this.contextMenu === undefined)\n return;\n\n this._contextMenuItems = this.rowMenu(row, true);\n this.contextMenu.show(event);\n event.stopPropagation();\n }\n\n public toColumnFilterType(propertyType: PropertyType) : ColumnFilterType{\n switch(propertyType) {\n case PropertyType.Number:\n return ColumnFilterType.numeric;\n case PropertyType.Bool:\n return ColumnFilterType.boolean;\n case PropertyType.Date:\n case PropertyType.DatetimeLocal:\n case PropertyType.DatetimeOffset:\n return ColumnFilterType.date;\n default:\n return ColumnFilterType.text;\n }\n }\n}\n","<p-table\n #table\n [value]=\"rows\"\n [columns]=\"columns\"\n [lazy]=\"true\"\n [lazyLoadOnInit]=\"false\"\n (onLazyLoad)=\"load($event)\"\n responsiveLayout=\"scroll\"\n [paginator]=\"true\"\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\n [rows]=\"rows.length\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"isLoading\"\n [sortField]=\"sortField!\"\n [sortOrder]=\"sortOrder!\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" [pSortableColumn]=\"col.name\">\n <div class=\"p-d-flex p-jc-between p-ai-center\">\n {{col.prompt}}\n <ng-container *ngIf=\"!col.readOnly\">\n <p-sortIcon [field]=\"col.name\"></p-sortIcon>\n <p-columnFilter [type]=\"toColumnFilterType(col.type)\" [field]=\"col.name\" display=\"menu\"></p-columnFilter>\n </ng-container>\n </div>\n </th>\n <th *ngIf=\"showMenuColumn\" class=\"flex justify-content-end\">\n <rw-menu-button [items]=\"headerMenu\"></rw-menu-button>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-entity let-columns=\"columns\" let-rowIndex=\"rowIndex\">\n <tr (contextmenu)=\"openContextMenu($event, entity)\">\n <td [ngSwitch]=\"col.type\" *ngFor=\"let col of columns\">\n <ng-container *ngSwitchCase=\"PropertyType.Text\">\n <rw-avatar *ngIf=\"col.name === 'createdBy' || col.name === 'lastChangedBy'\" [user]=\"entity[col.name]\"></rw-avatar>\n <span *ngIf=\"col.name !== 'createdBy' && col.name !== 'lastChangedBy'\">{{entity[col.name]}}</span>\n </ng-container>\n <span *ngSwitchCase=\"PropertyType.Number\" class=\"flex justify-content-end\">{{entity[col.name]}}</span>\n <span *ngSwitchCase=\"PropertyType.Bool\" class=\"flex justify-content-center\"><p-triStateCheckbox [(ngModel)]=\"entity[col.name]\" [readonly]=\"true\"></p-triStateCheckbox></span>\n <span *ngSwitchCase=\"PropertyType.Date\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.DatetimeLocal\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.DatetimeOffset\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.Collection\" class=\"flex justify-content-end\"><p *ngFor=\"let arrayElement of entity[col.name]\">{{arrayElement | json}}</p></span>\n <span *ngSwitchCase=\"PropertyType.Object\" class=\"flex justify-content-end\">{{entity[col.name] | json}}</span>\n </td>\n <td *ngIf=\"showMenuColumn\" class=\"flex justify-content-end\">\n <rw-menu-button *ngIf=\"showRowMenuAsColumn\" [items]=\"rowMenus[rowIndex - table.first]\"></rw-menu-button>\n </td>\n </tr>\n </ng-template>\n\n <p-contextMenu #contextMenu appendTo=\"body\" [model]=\"contextMenuItems\"></p-contextMenu>\n</p-table>\n","export class RestWorldOptions {\r\n constructor(public readonly BaseUrl: string, public readonly Version?: number) {\r\n if (!BaseUrl.endsWith('/'))\r\n throw new Error(`The provided BaseUrl '${BaseUrl}' does not end with a slash '/'.`);\r\n }\r\n}\r\n","import { HttpBackend, HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ClientSettings } from \"../models/client-settings\";\r\nimport { RestWorldOptions } from \"../models/restworld-options\";\r\nimport { RestWorldClientCollection } from \"./restworld-client-collection\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SettingsService {\r\n private static _settings: ClientSettings | undefined;\r\n public get settings(): ClientSettings | undefined {\r\n return SettingsService._settings;\r\n }\r\n\r\n private initializing = false;\r\n private initialized = false;\r\n\r\n constructor(\r\n private _clients: RestWorldClientCollection) {\r\n }\r\n\r\n public async ensureInitialized(): Promise<void> {\r\n if (this.initializing || this.initialized)\r\n return;\r\n\r\n this.initializing = true;\r\n\r\n await SettingsService.ensureSettingsAreLoaded();\r\n await this.populateRESTworldClientCollectionFromSettings();\r\n\r\n this.initialized = true;\r\n this.initializing = false;\r\n\r\n }\r\n\r\n /**\r\n * Call this method in your main.ts before calling bootstrapModule(...)\r\n *\r\n * Example:\r\n * async function main() {\r\n * try {\r\n * await SettingsService.ensureSettingsAreLoaded();\r\n *\r\n * const providers : StaticProvider[] = [\r\n * { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }\r\n * ];\r\n *\r\n * await platformBrowserDynamic(providers).bootstrapModule(AppModule);\r\n * }\r\n * catch (e) {\r\n * console.error(e);\r\n * }\r\n * }\r\n *\r\n * main();\r\n * */\r\n public static async ensureSettingsAreLoaded(): Promise<void> {\r\n if (SettingsService._settings === undefined) {\r\n const response = await fetch('/settings');\r\n const settings: ClientSettings = await response.json();\r\n SettingsService._settings = settings;\r\n }\r\n }\r\n\r\n private async populateRESTworldClientCollectionFromSettings(): Promise<void> {\r\n if (!this.settings?.apiUrls)\r\n return;\r\n\r\n await Promise.all(this.settings.apiUrls\r\n .map(api => this._clients.addOrGetExistingClient(api.name, new RestWorldOptions(api.url, api.version))));\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { PropertyType, Resource, Template, Templates } from '@wertzui/ngx-hal-client';\r\nimport { RestWorldClient } from '../../services/restworld-client';\r\nimport { RestWorldClientCollection } from '../../services/restworld-client-collection';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { MessageService } from 'primeng/api';\r\nimport { ProblemDetails } from '../../models/problem-details';\r\nimport { ContentChild } from '@angular/core';\r\nimport { TemplateRef } from '@angular/core';\r\nimport { ValdemortConfig } from 'ngx-valdemort';\r\n\r\n@Component({\r\n selector: 'rw-edit',\r\n templateUrl: './restworld-edit-view.component.html',\r\n styleUrls: ['./restworld-edit-view.component.css']\r\n})\r\nexport class RESTworldEditViewComponent {\r\n @ContentChild('extraTabs', { static: false })\r\n extraTabsRef?: TemplateRef<unknown>;\r\n public idNavigationForm = new FormGroup < {\r\n id: FormControl<number | null>\r\n }>({\r\n id: new FormControl(null, Validators.compose([Validators.min(1), Validators.max(Number.MAX_SAFE_INTEGER)]))\r\n });\r\n\r\n public isLoading = true;\r\n private _templates: Template[] = [];\r\n public get templates(): Template[] {\r\n return this._templates;\r\n }\r\n private _resource?: Resource;\r\n\r\n constructor(\r\n private _clients: RestWorldClientCollection,\r\n private _messageService: MessageService,\r\n valdemortConfig: ValdemortConfig) {\r\n valdemortConfig.errorClasses = 'p-error text-sm';\r\n }\r\n\r\n public get PropertyType() {\r\n return PropertyType;\r\n }\r\n\r\n private _apiName!: string;\r\n public get apiName(): string {\r\n return this._apiName;\r\n }\r\n @Input()\r\n public set apiName(value: string) {\r\n this._apiName = value;\r\n this.load();\r\n }\r\n\r\n @Input()\r\n public rel!: string;\r\n\r\n public get resource() {\r\n return this._resource;\r\n }\r\n\r\n private _uri!: string;\r\n public get uri(): string {\r\n return this._uri;\r\n }\r\n @Input()\r\n public set uri(value: string) {\r\n this._uri = value;\r\n this.load();\r\n }\r\n\r\n public async load(): Promise<void> {\r\n if (!this.apiName || !this.uri)\r\n return;\r\n\r\n this.isLoading = true;\r\n\r\n const response = await this.getClient().getSingleByUri(this.uri);\r\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body) {\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'Error while loading the resource from the API.', data: response, sticky: true });\r\n }\r\n else {\r\n this._resource = response.body;\r\n const templates = await this.getAllTemplates(this._resource);\r\n this._templates = Object.values(templates);\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n\r\n private async getAllTemplates(resource: Resource): Promise<Templates> {\r\n try {\r\n return this.getClient().getAllTemplates(resource);\r\n }\r\n catch (e: unknown) {\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'Error while loading the templates from the API. ' + e, data: e });\r\n return {};\r\n }\r\n }\r\n\r\n private getClient(): RestWorldClient {\r\n if (!this.apiName)\r\n throw new Error('Cannot get a client, because the apiName is not set.');\r\n\r\n return this._clients.getClient(this.apiName);\r\n }\r\n}\r\n","<div class=\"grid\">\r\n <div class=\"col-12 md:col-10\">\r\n <h1>Edit resource</h1>\r\n </div>\r\n <div class=\"col-12 md:col-2 align-items-center justify-content-end flex\">\r\n <rw-id-navigation [apiName]=\"apiName\" [rel]=\"rel\"></rw-id-navigation>\r\n </div>\r\n</div>\r\n\r\n<p-tabView>\r\n\r\n <p-tabPanel *ngIf=\"isLoading; else tabs\" header=\"Loading\">\r\n <div *ngFor=\"let i of [1, 2, 3, 4, 5]\" class=\"grid field\">\r\n <p-skeleton class=\"col-12 mb-2 md:col-2 md:mb-0\" height=\"39px\"></p-skeleton>\r\n <div class=\"col-12 md:col-10\">\r\n <p-skeleton class=\"w-full\" height=\"39px\"></p-skeleton>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col\">\r\n <div class=\"flex justify-content-end w-full\">\r\n <p-skeleton width=\"120px\" height=\"39px\" class=\"mx-2\"></p-skeleton>\r\n <p-skeleton width=\"120px\" height=\"39px\" class=\"mx-2\"></p-skeleton>\r\n <p-skeleton width=\"120px\" height=\"39px\" class=\"mx-2\"></p-skeleton>\r\n </div>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <ng-template #tabs>\r\n <p-tabPanel *ngFor=\"let template of templates\" [header]=\"template.title ?? ''\" [disabled]=\"isLoading\">\r\n <rw-form [template]=\"template\" [apiName]=\"apiName\"></rw-form>\r\n </p-tabPanel>\r\n</ng-template>\r\n\r\n <ng-template #defaultExtraTabs>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"extraTabsRef || defaultExtraTabs\"></ng-container>\r\n\r\n</p-tabView>\r\n\r\n<p-toast></p-toast>\r\n<p-confirmDialog></p-confirmDialog>\r\n","import { Component, Input } from '@angular/core';\r\nimport { PagedListResource, Resource, ResourceDto, ResourceOfDto, Template } from '@wertzui/ngx-hal-client';\r\nimport * as _ from 'lodash';\r\nimport { ConfirmationService, MenuItem, MessageService } from 'primeng/api';\r\nimport { RestWorldClient } from '../../services/restworld-client';\r\nimport { RestWorldClientCollection } from '../../services/restworld-client-collection';\r\nimport { ProblemDetails } from '../../models/problem-details';\r\nimport { AvatarGenerator } from '../../services/avatar-generator';\r\nimport { Router } from '@angular/router';\r\nimport { ODataParameters } from '../../models/o-data';\r\n\r\n@Component({\r\n selector: 'rw-list',\r\n templateUrl: './restworld-list-view.component.html',\r\n styleUrls: ['./restworld-list-view.component.css']\r\n})\r\nexport class RESTworldListViewComponent<TListDto extends ResourceDto> {\r\n\r\n @Input()\r\n public createButtonMenu?: MenuItem[];\r\n public isLoading = false;\r\n public load = _.debounce(this.loadInternal, 100);\r\n public resource?: PagedListResource<TListDto>;\r\n\r\n private _editLink = '/edit';\r\n\r\n public get editLink() {\r\n return this._editLink;\r\n }\r\n\r\n @Input()\r\n public set editLink(value: string) {\r\n if(value)\r\n this._editLink = value;\r\n }\r\n private _lastParameters: ODataParameters = {};\r\n private _template?: Template;\r\n public _totalRecords = 0;\r\n\r\n public headerMenu: MenuItem[] = [];\r\n public rowMenu: (row: ResourceOfDto<TListDto>, openedByRightClick: boolean) => MenuItem[] = (row, openedByRightClick) => {\r\n return [\r\n {\r\n icon: \"fas fa-edit\",\r\n label: openedByRightClick ? \"View / Edit\" : undefined,\r\n tooltip: !openedByRightClick ? \"View / Edit\" : undefined,\r\n tooltipPosition: \"left\",\r\n routerLink: [this.editLink, this.apiName, this.rel, row._links?.self[0].href]\r\n }, {\r\n icon: \"fas fa-trash-alt\",\r\n label: openedByRightClick ? \"Delete\" : undefined,\r\n tooltip: !openedByRightClick ? \"Delete\" : undefined,\r\n tooltipPosition: \"left\",\r\n styleClass: \"p-button-danger\",\r\n command: () => this.showDeleteConfirmatioModal(row)\r\n }\r\n ];\r\n }\r\n\r\n constructor(\r\n private readonly _clients: RestWorldClientCollection,\r\n private readonly _confirmationService: ConfirmationService,\r\n private readonly _messageService: MessageService,\r\n public readonly avatarGenerator: AvatarGenerator,\r\n private readonly _router: Router) {\r\n }\r\n\r\n private _apiName?: string;\r\n\r\n @Input()\r\n public set apiName(value: string | undefined) {\r\n this._apiName = value;\r\n this.load(this._lastParameters);\r\n };\r\n\r\n public get apiName() {\r\n return this._apiName;\r\n }\r\n\r\n public get newHref(): string | undefined {\r\n return this.resource?.findLink('new')?.href;\r\n }\r\n\r\n private _rel!: string;\r\n public get rel(): string {\r\n return this._rel;\r\n }\r\n @Input()\r\n public set rel(value: string) {\r\n this._rel = value;\r\n this.load(this._lastParameters);\r\n }\r\n\r\n public get template(): Template | undefined {\r\n return this._template;\r\n }\r\n\r\n public get totalRecords(): number {\r\n return this._totalRecords;\r\n }\r\n\r\n public get value(): ResourceOfDto<TListDto>[] {\r\n return this.resource?._embedded?.items || [];\r\n }\r\n\r\n public createNew(): Promise<boolean> {\r\n return this._router.navigate([this.editLink, this.apiName, this.rel, this.newHref]);\r\n }\r\n\r\n public async delete(resource: Resource): Promise<void> {\r\n if (!this.apiName || !this.rel)\r\n return;\r\n\r\n await this.getClient().delete(resource);\r\n\r\n this._messageService.add({ severity: 'success', summary: 'Deleted', detail: 'The resource has been deleted.' });\r\n\r\n this.loadInternal(this._lastParameters);\r\n }\r\n\r\n public async loadInternal(parameters: ODataParameters): Promise<void> {\r\n if (!this.apiName || !this.rel)\r\n return;\r\n\r\n this.isLoading = true;\r\n\r\n const response = await this.getClient().getList<TListDto>(this.rel, parameters);\r\n if (!response.ok || ProblemDetails.isProblemDetails(response.body) || !response.body) {\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'Error while loading the resources from the API.', data: response });\r\n }\r\n else if (response.body) {\r\n try {\r\n const templates = await this.getClient().getAllTemplates(response.body);\r\n this._template = templates[\"Search\"];\r\n if (this._template === undefined)\r\n throw new Error(\"No search template found in the API response.\");\r\n }\r\n catch (e: unknown) {\r\n this._messageService.add({ severity: 'error', summary: 'Error', detail: 'Error while loading the resources from the API. ' + e, data: e });\r\n }\r\n\r\n this.resource = response.body;\r\n const rowsPerPage = parameters.$top ?? response.body._embedded.items.length;\r\n const totalPages = response.body.totalPages ?? 1;\r\n this._totalRecords = totalPages * rowsPerPage;\r\n\r\n this.headerMenu = [\r\n {\r\n icon: \"fas fa-plus\",\r\n styleClass: \"p-button-success\",\r\n routerLink: [this.editLink, this.apiName, this.rel, this.newHref],\r\n items: this.createButtonMenu\r\n }\r\n ];\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n\r\n public showDeleteConfirmatioModal(resource: Resource) {\r\n this._confirmationService.confirm({\r\n message: 'Do you really want to delete this resource?',\r\n header: 'Confirm delete',\r\n icon: 'far fa-trash-alt',\r\n accept: () => this.delete(resource)\r\n });\r\n }\r\n\r\n private getClient(): RestWorldClient {\r\n if (!this.apiName)\r\n throw new Error('Cannot get a client, because the apiName is not set.');\r\n\r\n return this._clients.getClient(this.apiName);\r\n }\r\n}\r\n","<rw-table\r\n [api]=\"apiName\"\r\n [template]=\"template\"\r\n [rows]=\"value\"\r\n [headerMenu]=\"headerMenu\"\r\n [rowMenu]=\"rowMenu\"\r\n [totalRecords]=\"totalRecords\"\r\n [isLoading]=\"isLoading\"\r\n (onFilterOrSortChanged)=\"load($event)\">\r\n</rw-table>\r\n","import { APP_INITIALIZER, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { TableModule } from 'primeng/table';\r\nimport { TooltipModule } from 'primeng/tooltip'\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { ValdemortModule } from 'ngx-valdemort';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { ContextMenuModule } from 'primeng/contextmenu';\r\n\r\nimport { RESTworldListViewComponent } from './views/restworld-list-view/restworld-list-view.component';\r\nimport { RESTworldEditViewComponent } from './views/restworld-edit-view/restworld-edit-view.component';\r\nimport { RestWorldClientCollection } from './services/restworld-client-collection';\r\nimport { AvatarGenerator } from './services/avatar-generator';\r\nimport { SettingsService } from './services/settings.service';\r\nimport { RestWorldImageComponent } from './components/restworld-image/restworld-image.component';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { RestWorldFileComponent } from './components/restworld-file/restworld-file.component';\r\nimport { SafeUrlPipe } from './pipes/safe-url.pipe';\r\nimport { FormService } from './services/form.service';\r\nimport { AsPipe } from './pipes/as.pipe';\r\nimport { SplitButtonModule } from 'primeng/splitbutton';\r\nimport { RestWorldAvatarComponent } from './components/restworld-avatar/restworld-avatar.component';\r\nimport { RestWorldLabelComponent } from './components/restworld-label/restworld-label.component';\r\nimport { RestWorldValidationErrorsComponent } from './components/restworld-validation-errors/restworld-validation-errors.component';\r\nimport { RestWorldFormComponent } from './components/restworld-form/restworld-form.component';\r\nimport { RestWorldTableComponent } from './components/restworld-table/restworld-table.component';\r\nimport { RestWorldMenuButtonComponent } from './components/restworld-menu-button/restworld-menu-button.component';\r\nimport { RestWorldIdNavigationComponent } from './components/restworld-id-navigation/restworld-id-navigation.component';\r\nimport { RestWorldFormElementComponent, RestWorldInputCollectionComponent, RestWorldInputComponent, RestWorldInputDropdownComponent, RestWorldInputObjectComponent, RestWorldInputSimpleComponent, RestWorldInputTemplateComponent } from './components/restworld-inputs/restworld-inputs';\r\n\r\nexport function initializeSettings(settingsService: SettingsService): () => Promise<void> {\r\n return async () => await settingsService.ensureInitialized();\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n RESTworldListViewComponent,\r\n RESTworldEditViewComponent,\r\n RestWorldImageComponent,\r\n RestWorldFileComponent,\r\n RestWorldAvatarComponent,\r\n SafeUrlPipe,\r\n AsPipe,\r\n RestWorldAvatarComponent,\r\n RestWorldInputComponent,\r\n RestWorldLabelComponent,\r\n RestWorldFormElementComponent,\r\n RestWorldInputDropdownComponent,\r\n RestWorldInputCollectionComponent,\r\n RestWorldInputObjectComponent,\r\n RestWorldInputSimpleComponent,\r\n RestWorldValidationErrorsComponent,\r\n RestWorldInputTemplateComponent,\r\n RestWorldFormComponent,\r\n RestWorldTableComponent,\r\n RestWorldMenuButtonComponent,\r\n RestWorldIdNavigationComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TableModule,\r\n TooltipModule,\r\n ScrollingModule,\r\n InputTextModule,\r\n InputNumberModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n ConfirmDialogModule,\r\n ToastModule,\r\n MessagesModule,\r\n PanelModule,\r\n TabViewModule,\r\n SkeletonModule,\r\n ProgressSpinnerModule,\r\n RippleModule,\r\n TriStateCheckboxModule,\r\n AvatarModule,\r\n DropdownModule,\r\n MultiSelectModule,\r\n FileUploadModule,\r\n ValdemortModule,\r\n ImageCropperModule,\r\n DialogModule,\r\n ButtonModule,\r\n ColorPickerModule,\r\n DragDropModule,\r\n SplitButtonModule,\r\n AvatarModule,\r\n ContextMenuModule,\r\n ],\r\n exports: [\r\n RESTworldListViewComponent,\r\n RESTworldEditViewComponent,\r\n RestWorldImageComponent,\r\n RestWorldFileComponent,\r\n RestWorldAvatarComponent,\r\n SafeUrlPipe,\r\n AsPipe,\r\n RestWorldInputComponent,\r\n RestWorldLabelComponent,\r\n RestWorldFormElementComponent,\r\n RestWorldInputDropdownComponent,\r\n RestWorldInputCollectionComponent,\r\n RestWorldInputObjectComponent,\r\n RestWorldInputSimpleComponent,\r\n RestWorldValidationErrorsComponent,\r\n RestWorldInputTemplateComponent,\r\n RestWorldFormComponent,\r\n RestWorldTableComponent,\r\n RestWorldMenuButtonComponent,\r\n RestWorldIdNavigationComponent\r\n ],\r\n providers: [\r\n RestWorldClientCollection,\r\n AvatarGenerator,\r\n ConfirmationService,\r\n FormService,\r\n MessageService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initializeSettings,\r\n deps: [SettingsService],\r\n multi: true,\r\n }\r\n ]\r\n})\r\nexport class RestworldClientModule { }\r\n","/*\n * Public API Surface of ngx-restworld-client\n */\n\nexport * from './lib/constants/link-names';\n\nexport * from './lib/components/restworld-avatar/restworld-avatar.component';\nexport * from './lib/components/restworld-file/restworld-file.component';\nexport * from './lib/components/restworld-form/restworld-form.component';\nexport * from './lib/components/restworld-id-navigation/restworld-id-navigation.component';\nexport * from './lib/components/restworld-image/restworld-image.component';\nexport * from './lib/components/restworld-inputs/restworld-inputs';\nexport * from './lib/components/restworld-label/restworld-label.component';\nexport * from './lib/components/restworld-menu-button/restworld-menu-button.component';\nexport * from './lib/components/restworld-table/restworld-table.component';\nexport * from './lib/components/restworld-validation-errors/restworld-validation-errors.component';\n\nexport * from './lib/constants/link-names';\n\nexport * from './lib/models/api-url';\nexport * from './lib/models/client-settings';\nexport * from './lib/models/o-data';\nexport * from './lib/models/problem-details';\nexport * from './lib/models/restworld-image';\nexport * from './lib/models/restworld-options';\nexport * from './lib/models/special-properties';\nexport * from './lib/models/templating';\n\nexport * from './lib/pipes/as.pipe';\nexport * from './lib/pipes/safe-url.pipe';\n\nexport * from './lib/services/avatar-generator';\nexport * from './lib/services/form.service';\nexport * from './lib/services/o-data.service';\nexport * from './lib/services/restworld-client-collection';\nexport * from './lib/services/restworld-client';\nexport * from './lib/services/settings.service';\n\nexport * from './lib/views/restworld-edit-view/restworld-edit-view.component';\nexport * from './lib/views/restworld-list-view/restworld-list-view.component';\n\nexport * from './lib/restworld-client.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AvatarGenerator","i1","i3","i5.SafeUrlPipe","i2","i4","i5","i6","i7","i8","i11.SafeUrlPipe","i6.FormService","i9","i10","i11.RestWorldClientCollection","i12","i15","i20.RestWorldImageComponent","i21.RestWorldFileComponent","i4.AsPipe","i1.RestWorldClientCollection","i3.FormService","i9.RestWorldInputTemplateComponent","i8.RestWorldAvatarComponent","i9.RestWorldMenuButtonComponent","i9.RestWorldFormComponent","i10.RestWorldIdNavigationComponent","i3.AvatarGenerator","i5.RestWorldTableComponent"],"mappings":"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"}
|