@smartbit4all/ng-client 2.0.7 → 2.1.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/smart-client/smart-component-api-client.mjs +11 -3
- package/esm2020/lib/view-context/api/api/api.mjs +1 -1
- package/esm2020/lib/view-context/api/api/view.service.mjs +43 -1
- package/esm2020/lib/view-context/api/api.module.mjs +1 -1
- package/esm2020/lib/view-context/api/configuration.mjs +1 -1
- package/esm2020/lib/view-context/api/encoder.mjs +1 -1
- package/esm2020/lib/view-context/api/index.mjs +1 -1
- package/esm2020/lib/view-context/api/model/closeResult.mjs +1 -1
- package/esm2020/lib/view-context/api/model/componentConstraint.mjs +1 -1
- package/esm2020/lib/view-context/api/model/componentModel.mjs +1 -1
- package/esm2020/lib/view-context/api/model/componentModelChange.mjs +1 -1
- package/esm2020/lib/view-context/api/model/dataChange.mjs +1 -1
- package/esm2020/lib/view-context/api/model/dataChangeEvent.mjs +1 -1
- package/esm2020/lib/view-context/api/model/dataChangeKind.mjs +1 -1
- package/esm2020/lib/view-context/api/model/messageData.mjs +1 -1
- package/esm2020/lib/view-context/api/model/messageOption.mjs +1 -1
- package/esm2020/lib/view-context/api/model/messageOptionType.mjs +1 -1
- package/esm2020/lib/view-context/api/model/messageResult.mjs +1 -1
- package/esm2020/lib/view-context/api/model/messageType.mjs +1 -1
- package/esm2020/lib/view-context/api/model/models.mjs +1 -1
- package/esm2020/lib/view-context/api/model/openPendingData.mjs +1 -1
- package/esm2020/lib/view-context/api/model/smartLinkData.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiAction.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionButtonDescriptor.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionButtonIconPos.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionButtonType.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionConstraint.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionDescriptor.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionDialogDescriptor.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionFeedbackType.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionInputType.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionRequest.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
- package/esm2020/lib/view-context/api/model/valueSet.mjs +1 -1
- package/esm2020/lib/view-context/api/model/view.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewApiError.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewConstraint.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewContext.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewContextChange.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewContextData.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewContextUpdate.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewData.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewState.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewStateUpdate.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewType.mjs +1 -1
- package/esm2020/lib/view-context/api/param.mjs +1 -1
- package/esm2020/lib/view-context/api/variables.mjs +1 -1
- package/esm2020/lib/view-context/smart-view-context.service.mjs +4 -1
- package/fesm2015/smartbit4all-ng-client.mjs +57 -2
- package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
- package/fesm2020/smartbit4all-ng-client.mjs +55 -2
- package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/view-context/api/api/view.service.d.ts +18 -0
- package/lib/view-context/smart-view-context.service.d.ts +1 -0
- package/package.json +1 -1
- package/smartbit4all-ng-client-2.1.0.tgz +0 -0
- package/src/lib/view-context/api/README.md +226 -226
- package/smartbit4all-ng-client-2.0.7.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartbit4all-ng-client.mjs","sources":["../../../projects/smart-ng-client/src/lib/session/api/encoder.ts","../../../projects/smart-ng-client/src/lib/session/api/variables.ts","../../../projects/smart-ng-client/src/lib/session/api/configuration.ts","../../../projects/smart-ng-client/src/lib/session/api/api/session.service.ts","../../../projects/smart-ng-client/src/lib/session/api/api/api.ts","../../../projects/smart-ng-client/src/lib/session/cookie-service/smart-cookie.service.ts","../../../projects/smart-ng-client/src/lib/session/smart-session.service.ts","../../../projects/smart-ng-client/src/lib/view-context/api/encoder.ts","../../../projects/smart-ng-client/src/lib/view-context/api/variables.ts","../../../projects/smart-ng-client/src/lib/view-context/api/configuration.ts","../../../projects/smart-ng-client/src/lib/view-context/api/api/view.service.ts","../../../projects/smart-ng-client/src/lib/view-context/api/api/api.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/closeResult.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/dataChangeKind.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/messageOptionType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/messageType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/uiActionButtonIconPos.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/uiActionButtonType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/uiActionFeedbackType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/uiActionInputType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/viewEventHandler.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/viewState.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/viewType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/api.module.ts","../../../projects/smart-ng-client/src/lib/view-context/message-dialog/message-dialog.component.ts","../../../projects/smart-ng-client/src/lib/view-context/message-dialog/message-dialog.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context.service.ts","../../../projects/smart-ng-client/src/lib/smart-ng-client.service.ts","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool.service.ts","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.ts","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.ts","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.html","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.ts","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.html","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool.interceptor.ts","../../../projects/smart-ng-client/src/lib/session/smart-session-handler.service.ts","../../../projects/smart-ng-client/src/lib/session/smart-timer/smart-session-timer.service.ts","../../../projects/smart-ng-client/src/lib/session/smart-timer/smart-session-timer.component.ts","../../../projects/smart-ng-client/src/lib/session/smart-timer/smart-session-timer.component.html","../../../projects/smart-ng-client/src/lib/session/projects.ts","../../../projects/smart-ng-client/src/lib/session/smart-error-catching.interceptor.ts","../../../projects/smart-ng-client/src/lib/session/smart-header-maintainer.interceptor.ts","../../../projects/smart-ng-client/src/lib/session/smart-session.module.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context.interceptor.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-view-redirect/smart-view-redirect.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/ui-action.descriptor.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/ui-action.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/ui-action-toolbar.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/ui-action-toolbar.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context.module.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/ui-action.model.ts","../../../projects/smart-ng-client/src/lib/view-context/projects.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart-file-uploader/smart-file-uploader.component.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart-file-uploader/smart-file-uploader.component.html","../../../projects/smart-ng-client/src/lib/smart-tree/tree-api/encoder.ts","../../../projects/smart-ng-client/src/lib/smart-tree/tree-api/variables.ts","../../../projects/smart-ng-client/src/lib/smart-tree/tree-api/configuration.ts","../../../projects/smart-ng-client/src/lib/smart-tree/tree-api/api/tree.service.ts","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree.model.ts","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree.service.ts","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree-generic.service.ts","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree.component.ts","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree.component.html","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree.module.ts","../../../projects/smart-ng-client/src/lib/smart-ng-client.module.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart-authentication.service.ts","../../../projects/smart-ng-client/src/lib/smart-tree/projects.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart-component-api-client.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart.component.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart.service.ts","../../../projects/smart-ng-client/src/projects.ts","../../../projects/smart-ng-client/src/smartbit4all-ng-client.ts"],"sourcesContent":["import { HttpParameterCodec } from '@angular/common/http';\r\n\r\n/**\r\n * Custom HttpParameterCodec\r\n * Workaround for https://github.com/angular/angular/issues/18261\r\n */\r\nexport class CustomHttpParameterCodec implements HttpParameterCodec {\r\n encodeKey(k: string): string {\r\n return encodeURIComponent(k);\r\n }\r\n encodeValue(v: string): string {\r\n return encodeURIComponent(v);\r\n }\r\n decodeKey(k: string): string {\r\n return decodeURIComponent(k);\r\n }\r\n decodeValue(v: string): string {\r\n return decodeURIComponent(v);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const BASE_PATH = new InjectionToken<string>('basePath');\r\nexport const COLLECTION_FORMATS = {\r\n 'csv': ',',\r\n 'tsv': ' ',\r\n 'ssv': ' ',\r\n 'pipes': '|'\r\n}\r\n","import { HttpParameterCodec } from '@angular/common/http';\r\nimport { Param } from './param';\r\n\r\nexport interface ConfigurationParameters {\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n /**\r\n * Takes care of encoding query- and form-parameters.\r\n */\r\n encoder?: HttpParameterCodec;\r\n /**\r\n * Override the default method for encoding path parameters in various\r\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\r\n * <p>\r\n * See {@link README.md} for more details\r\n * </p>\r\n */\r\n encodeParam?: (param: Param) => string;\r\n /**\r\n * The keys are the names in the securitySchemes section of the OpenAPI\r\n * document. They should map to the value used for authentication\r\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\r\n */\r\n credentials?: {[ key: string ]: string | (() => string | undefined)};\r\n}\r\n\r\nexport class Configuration {\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n /**\r\n * Takes care of encoding query- and form-parameters.\r\n */\r\n encoder?: HttpParameterCodec;\r\n /**\r\n * Encoding of various path parameter\r\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\r\n * <p>\r\n * See {@link README.md} for more details\r\n * </p>\r\n */\r\n encodeParam: (param: Param) => string;\r\n /**\r\n * The keys are the names in the securitySchemes section of the OpenAPI\r\n * document. They should map to the value used for authentication\r\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\r\n */\r\n credentials: {[ key: string ]: string | (() => string | undefined)};\r\n\r\n constructor(configurationParameters: ConfigurationParameters = {}) {\r\n this.apiKeys = configurationParameters.apiKeys;\r\n this.username = configurationParameters.username;\r\n this.password = configurationParameters.password;\r\n this.accessToken = configurationParameters.accessToken;\r\n this.basePath = configurationParameters.basePath;\r\n this.withCredentials = configurationParameters.withCredentials;\r\n this.encoder = configurationParameters.encoder;\r\n if (configurationParameters.encodeParam) {\r\n this.encodeParam = configurationParameters.encodeParam;\r\n }\r\n else {\r\n this.encodeParam = param => this.defaultEncodeParam(param);\r\n }\r\n if (configurationParameters.credentials) {\r\n this.credentials = configurationParameters.credentials;\r\n }\r\n else {\r\n this.credentials = {};\r\n }\r\n }\r\n\r\n /**\r\n * Select the correct content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param contentTypes - the array of content types that are available for selection\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\r\n if (contentTypes.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = contentTypes.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return contentTypes[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Select the correct accept content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param accepts - the array of content types that are available for selection.\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderAccept(accepts: string[]): string | undefined {\r\n if (accepts.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = accepts.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return accepts[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Check if the given MIME is a JSON MIME.\r\n * JSON MIME examples:\r\n * application/json\r\n * application/json; charset=UTF8\r\n * APPLICATION/JSON\r\n * application/vnd.company+json\r\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\r\n * @return True if the given MIME is JSON, false otherwise.\r\n */\r\n public isJsonMime(mime: string): boolean {\r\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\r\n return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\r\n }\r\n\r\n public lookupCredential(key: string): string | undefined {\r\n const value = this.credentials[key];\r\n return typeof value === 'function'\r\n ? value()\r\n : value;\r\n }\r\n\r\n private defaultEncodeParam(param: Param): string {\r\n // This implementation exists as fallback for missing configuration\r\n // and for backwards compatibility to older typescript-angular generator versions.\r\n // It only works for the 'simple' parameter style.\r\n // Date-handling only works for the 'date-time' format.\r\n // All other styles and Date-formats are probably handled incorrectly.\r\n //\r\n // But: if that's all you need (i.e.: the most common use-case): no need for customization!\r\n\r\n const value = param.dataFormat === 'date-time'\r\n ? (param.value as Date).toISOString()\r\n : param.value;\r\n\r\n return encodeURIComponent(String(value));\r\n }\r\n}\r\n","/**\r\n * Session api\r\n * Session api...\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n/* tslint:disable:no-unused-variable member-ordering */\r\n\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams,\r\n HttpResponse, HttpEvent, HttpParameterCodec, HttpContext \r\n } from '@angular/common/http';\r\nimport { CustomHttpParameterCodec } from '../encoder';\r\nimport { Observable } from 'rxjs';\r\n\r\n// @ts-ignore\r\nimport { ApiError } from '../model/apiError';\r\n// @ts-ignore\r\nimport { GetAuthenticationProvidersResponse } from '../model/getAuthenticationProvidersResponse';\r\n// @ts-ignore\r\nimport { RefreshSessionRequest } from '../model/refreshSessionRequest';\r\n// @ts-ignore\r\nimport { SessionInfoData } from '../model/sessionInfoData';\r\n\r\n// @ts-ignore\r\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\r\nimport { Configuration } from '../configuration';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SessionService {\r\n\r\n protected basePath = 'http://localhost';\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n public encoder: HttpParameterCodec;\r\n\r\n constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) {\r\n if (configuration) {\r\n this.configuration = configuration;\r\n }\r\n if (typeof this.configuration.basePath !== 'string') {\r\n if (Array.isArray(basePath) && basePath.length > 0) {\r\n basePath = basePath[0];\r\n }\r\n\r\n if (typeof basePath !== 'string') {\r\n basePath = this.basePath;\r\n }\r\n this.configuration.basePath = basePath;\r\n }\r\n this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\r\n }\r\n\r\n\r\n // @ts-ignore\r\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\r\n if (typeof value === \"object\" && value instanceof Date === false) {\r\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\r\n } else {\r\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\r\n }\r\n return httpParams;\r\n }\r\n\r\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\r\n if (value == null) {\r\n return httpParams;\r\n }\r\n\r\n if (typeof value === \"object\") {\r\n if (Array.isArray(value)) {\r\n (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\r\n } else if (value instanceof Date) {\r\n if (key != null) {\r\n httpParams = httpParams.append(key, (value as Date).toISOString().substr(0, 10));\r\n } else {\r\n throw Error(\"key may not be null if value is Date\");\r\n }\r\n } else {\r\n Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\r\n httpParams, value[k], key != null ? `${key}.${k}` : k));\r\n }\r\n } else if (key != null) {\r\n httpParams = httpParams.append(key, value);\r\n } else {\r\n throw Error(\"key may not be null if value is not object or array\");\r\n }\r\n return httpParams;\r\n }\r\n\r\n /**\r\n * Returns the available authentication providers\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getAuthenticationProviders(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<GetAuthenticationProvidersResponse>;\r\n public getAuthenticationProviders(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<GetAuthenticationProvidersResponse>>;\r\n public getAuthenticationProviders(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<GetAuthenticationProvidersResponse>>;\r\n public getAuthenticationProviders(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/authenticationProviders`;\r\n return this.httpClient.request<GetAuthenticationProvidersResponse>('get', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Returns the existing session info\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getSession(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<SessionInfoData>;\r\n public getSession(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<SessionInfoData>>;\r\n public getSession(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<SessionInfoData>>;\r\n public getSession(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/session`;\r\n return this.httpClient.request<SessionInfoData>('get', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Refreshes the session\r\n * @param refreshSessionRequest \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public refreshSession(refreshSessionRequest: RefreshSessionRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<SessionInfoData>;\r\n public refreshSession(refreshSessionRequest: RefreshSessionRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<SessionInfoData>>;\r\n public refreshSession(refreshSessionRequest: RefreshSessionRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<SessionInfoData>>;\r\n public refreshSession(refreshSessionRequest: RefreshSessionRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (refreshSessionRequest === null || refreshSessionRequest === undefined) {\r\n throw new Error('Required parameter refreshSessionRequest was null or undefined when calling refreshSession.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/refresh`;\r\n return this.httpClient.request<SessionInfoData>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: refreshSessionRequest,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Sets the locale of the session\r\n * Sets the locale of the current session and returns the SessionInfoData\r\n * @param locale \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public setLocale(locale: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<SessionInfoData>;\r\n public setLocale(locale: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<SessionInfoData>>;\r\n public setLocale(locale: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<SessionInfoData>>;\r\n public setLocale(locale: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (locale === null || locale === undefined) {\r\n throw new Error('Required parameter locale was null or undefined when calling setLocale.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/locale/${this.configuration.encodeParam({name: \"locale\", value: locale, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}`;\r\n return this.httpClient.request<SessionInfoData>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Creates a new session\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public startSession(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<SessionInfoData>;\r\n public startSession(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<SessionInfoData>>;\r\n public startSession(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<SessionInfoData>>;\r\n public startSession(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/session`;\r\n return this.httpClient.request<SessionInfoData>('put', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\n","export * from \"./session.service\";\r\nimport { SessionService } from \"./session.service\";\r\nexport const SessionAPIS = [SessionService];\r\n","// This service is based on the `ng2-cookies` package which sadly is not a service and does\r\n// not use `DOCUMENT` injection and therefore doesn't work well with AoT production builds.\r\n// Package: https://github.com/BCJTI/ng2-cookies\r\n\r\nimport { Inject, Injectable, PLATFORM_ID } from \"@angular/core\";\r\nimport { DOCUMENT, isPlatformBrowser } from \"@angular/common\";\r\n\r\nexport type SameSite = \"Lax\" | \"None\" | \"Strict\";\r\n\r\nexport interface CookieOptions {\r\n expires?: number | Date;\r\n path?: string;\r\n domain?: string;\r\n secure?: boolean;\r\n sameSite?: SameSite;\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class SmartCookieService {\r\n private readonly documentIsAccessible: boolean;\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: Document,\r\n // Get the `PLATFORM_ID` so we can check if we're in a browser.\r\n @Inject(PLATFORM_ID) private platformId: any\r\n ) {\r\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\r\n }\r\n\r\n /**\r\n * Get cookie Regular Expression\r\n *\r\n * @param name Cookie name\r\n * @returns property RegExp\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n private static getCookieRegExp(name: string): RegExp {\r\n const escapedName: string = name.replace(/([\\[\\]\\{\\}\\(\\)\\|\\=\\;\\+\\?\\,\\.\\*\\^\\$])/gi, \"\\\\$1\");\r\n\r\n return new RegExp(\"(?:^\" + escapedName + \"|;\\\\s*\" + escapedName + \")=(.*?)(?:;|$)\", \"g\");\r\n }\r\n\r\n /**\r\n * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).\r\n *\r\n * @param encodedURIComponent A value representing an encoded URI component.\r\n *\r\n * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n private static safeDecodeURIComponent(encodedURIComponent: string): string {\r\n try {\r\n return decodeURIComponent(encodedURIComponent);\r\n } catch {\r\n // probably it is not uri encoded. return as is\r\n return encodedURIComponent;\r\n }\r\n }\r\n\r\n /**\r\n * Return `true` if {@link Document} is accessible, otherwise return `false`\r\n *\r\n * @param name Cookie name\r\n * @returns boolean - whether cookie with specified name exists\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n check(name: string): boolean {\r\n if (!this.documentIsAccessible) {\r\n return false;\r\n }\r\n name = encodeURIComponent(name);\r\n const regExp: RegExp = SmartCookieService.getCookieRegExp(name);\r\n return regExp.test(this.document.cookie);\r\n }\r\n\r\n /**\r\n * Get cookies by name\r\n *\r\n * @param name Cookie name\r\n * @returns property value\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n get(name: string): string {\r\n if (this.documentIsAccessible && this.check(name)) {\r\n name = encodeURIComponent(name);\r\n\r\n const regExp: RegExp = SmartCookieService.getCookieRegExp(name);\r\n const result: RegExpExecArray = regExp.exec(this.document.cookie)!;\r\n let results = result.input.split(\";\");\r\n\r\n let value: string | undefined;\r\n\r\n results.forEach((r: string) => {\r\n let values = r.split(`${name}=`);\r\n if (values[1] !== \"null\") {\r\n value = values[1];\r\n }\r\n });\r\n\r\n return value ?? \"\";\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n\r\n /**\r\n * Get all cookies in JSON format\r\n *\r\n * @returns all the cookies in json\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n getAll(): { [key: string]: string } {\r\n if (!this.documentIsAccessible) {\r\n return {};\r\n }\r\n\r\n const cookies: { [key: string]: string } = {};\r\n const document: any = this.document;\r\n\r\n if (document.cookie && document.cookie !== \"\") {\r\n document.cookie.split(\";\").forEach((currentCookie: any) => {\r\n const [cookieName, cookieValue] = currentCookie.split(\"=\");\r\n cookies[SmartCookieService.safeDecodeURIComponent(cookieName.replace(/^ /, \"\"))] =\r\n SmartCookieService.safeDecodeURIComponent(cookieValue);\r\n });\r\n }\r\n\r\n return cookies;\r\n }\r\n\r\n /**\r\n * Set cookie based on provided information\r\n *\r\n * @param name Cookie name\r\n * @param value Cookie value\r\n * @param expires Number of days until the cookies expires or an actual `Date`\r\n * @param path Cookie path\r\n * @param domain Cookie domain\r\n * @param secure Secure flag\r\n * @param sameSite OWASP samesite token `Lax`, `None`, or `Strict`. Defaults to `Lax`\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n set(\r\n name: string,\r\n value: string,\r\n expires?: CookieOptions[\"expires\"],\r\n path?: CookieOptions[\"path\"],\r\n domain?: CookieOptions[\"domain\"],\r\n secure?: CookieOptions[\"secure\"],\r\n sameSite?: SameSite\r\n ): void;\r\n\r\n /**\r\n * Set cookie based on provided information\r\n *\r\n * Cookie's parameters:\r\n * <pre>\r\n * expires Number of days until the cookies expires or an actual `Date`\r\n * path Cookie path\r\n * domain Cookie domain\r\n * secure Secure flag\r\n * sameSite OWASP samesite token `Lax`, `None`, or `Strict`. Defaults to `Lax`\r\n * </pre>\r\n *\r\n * @param name Cookie name\r\n * @param value Cookie value\r\n * @param options Body with cookie's params\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n set(name: string, value: string, options?: CookieOptions): void;\r\n\r\n set(\r\n name: string,\r\n value: string,\r\n expiresOrOptions?: CookieOptions[\"expires\"] | CookieOptions,\r\n path?: CookieOptions[\"path\"],\r\n domain?: CookieOptions[\"domain\"],\r\n secure?: CookieOptions[\"secure\"],\r\n sameSite?: SameSite\r\n ): void {\r\n if (!this.documentIsAccessible) {\r\n return;\r\n }\r\n\r\n if (\r\n typeof expiresOrOptions === \"number\" ||\r\n expiresOrOptions instanceof Date ||\r\n path ||\r\n domain ||\r\n secure ||\r\n sameSite\r\n ) {\r\n const optionsBody = {\r\n expires: expiresOrOptions as CookieOptions[\"expires\"],\r\n path,\r\n domain,\r\n secure,\r\n sameSite: sameSite ? sameSite : \"Lax\",\r\n };\r\n\r\n this.set(name, value, optionsBody);\r\n return;\r\n }\r\n\r\n let cookieString: string = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";\";\r\n\r\n const options = expiresOrOptions ? expiresOrOptions : {};\r\n\r\n if (options.expires) {\r\n if (typeof options.expires === \"number\") {\r\n const dateExpires: Date = new Date(\r\n new Date().getTime() + options.expires * 1000 * 60 * 60 * 24\r\n );\r\n\r\n cookieString += \"expires=\" + dateExpires.toUTCString() + \";\";\r\n } else {\r\n cookieString += \"expires=\" + options.expires.toUTCString() + \";\";\r\n }\r\n }\r\n\r\n if (options.path) {\r\n cookieString += \"path=\" + options.path + \";\";\r\n } else {\r\n cookieString += \"path=/;\";\r\n }\r\n\r\n if (options.domain) {\r\n cookieString += \"domain=\" + options.domain + \";\";\r\n }\r\n\r\n if (options.secure === false && options.sameSite === \"None\") {\r\n options.secure = true;\r\n console.warn(\r\n `[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +\r\n `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`\r\n );\r\n }\r\n if (options.secure) {\r\n cookieString += \"secure;\";\r\n }\r\n\r\n if (!options.sameSite) {\r\n options.sameSite = \"Lax\";\r\n }\r\n cookieString += \"sameSite=\" + options.sameSite + \";\";\r\n this.document.cookie = cookieString;\r\n }\r\n\r\n /**\r\n * Delete cookie by name\r\n *\r\n * @param name Cookie name\r\n * @param path Cookie path\r\n * @param domain Cookie domain\r\n * @param secure Cookie secure flag\r\n * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n delete(\r\n name: string,\r\n path?: CookieOptions[\"path\"],\r\n domain?: CookieOptions[\"domain\"],\r\n secure?: CookieOptions[\"secure\"],\r\n sameSite: SameSite = \"Lax\"\r\n ): void {\r\n if (!this.documentIsAccessible) {\r\n return;\r\n }\r\n const expiresDate = new Date(\"Thu, 01 Jan 1970 00:00:01 GMT\");\r\n this.set(name, \"\", { expires: expiresDate, path, domain, secure, sameSite });\r\n }\r\n\r\n /**\r\n * Delete all cookies\r\n *\r\n * @param path Cookie path\r\n * @param domain Cookie domain\r\n * @param secure Is the Cookie secure\r\n * @param sameSite Is the cookie same site\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n deleteAll(\r\n path?: CookieOptions[\"path\"],\r\n domain?: CookieOptions[\"domain\"],\r\n secure?: CookieOptions[\"secure\"],\r\n sameSite: SameSite = \"Lax\"\r\n ): void {\r\n if (!this.documentIsAccessible) {\r\n return;\r\n }\r\n\r\n const cookies: any = this.getAll();\r\n\r\n for (const cookieName in cookies) {\r\n if (cookies.hasOwnProperty(cookieName)) {\r\n this.delete(cookieName, path, domain, secure, sameSite);\r\n }\r\n }\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n ApiError,\r\n AuthenticationProviderData,\r\n GetAuthenticationProvidersResponse,\r\n SessionInfoData,\r\n SessionService,\r\n} from './api';\r\nimport { SmartCookieService } from './cookie-service/smart-cookie.service';\r\nimport { SessionError, SmartSessionHandlerService } from './smart-session-handler.service';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\nexport interface HeaderParam {\r\n headerName: string;\r\n value: string;\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartSessionService implements OnDestroy {\r\n private basePath?: string;\r\n private token?: string;\r\n private _sessionInfoData?: SessionInfoData;\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n public get sessionInfoData(): SessionInfoData | undefined {\r\n return this._sessionInfoData;\r\n }\r\n private set sessionInfoData(sessionInfoData: SessionInfoData | undefined) {\r\n let expiracyChanged = this.sessionInfoData?.expiration !== sessionInfoData?.expiration;\r\n\r\n this._sessionInfoData = sessionInfoData;\r\n\r\n if (expiracyChanged) {\r\n this.sessionExpiracyChanged.next();\r\n }\r\n }\r\n\r\n private providers?: Array<AuthenticationProviderData>;\r\n private cookieName?: string;\r\n public isAuthenticated: boolean = false;\r\n\r\n public authenticationStateChanged: Subject<boolean> = new SmartSubject(this._destroy$);\r\n\r\n public headerParams: Array<HeaderParam> = new Array();\r\n public headersUpdated: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n // Locale\r\n private localStorageLocaleName: string = 'locale';\r\n public localeChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n private initializeRunning: Subject<void> | undefined;\r\n\r\n public sessionExpiracyChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n private sessionHandlerService?: SmartSessionHandlerService;\r\n\r\n constructor(private apiService: SessionService, private cookieService: SmartCookieService) {}\r\n\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n public setSessionHandlerService(smartSessionHandlerService: SmartSessionHandlerService): void {\r\n this.sessionHandlerService = smartSessionHandlerService;\r\n }\r\n\r\n public async handleSessionError(sessionError: SessionError): Promise<void> {\r\n if (this.sessionHandlerService) {\r\n await this.sessionHandlerService.handleSessionError(sessionError);\r\n }\r\n throw new Error(`sessionHandlerService was not initialized. Error: ${sessionError.code}`);\r\n }\r\n\r\n public addHeaderParam(headerParam: HeaderParam): void {\r\n if (this.headerParams.find((h: HeaderParam) => h.headerName === headerParam.headerName)) {\r\n let index = this.headerParams.findIndex(\r\n (h: HeaderParam) => h.headerName === headerParam.headerName\r\n );\r\n this.headerParams[index!].value = headerParam.value;\r\n } else {\r\n this.headerParams.push(headerParam);\r\n }\r\n this.headersUpdated.next();\r\n }\r\n\r\n private setUpTokenForSessionService(): void {\r\n this.addHeaderParam({\r\n headerName: 'Authorization',\r\n value: `Bearer ${this.token!}`,\r\n });\r\n }\r\n\r\n public setUrl(url: string): void {\r\n this.basePath = url;\r\n }\r\n public getBasePath(): string {\r\n if (!this.basePath) {\r\n throw new Error('BasePath has not been set in SmartSessionService!');\r\n }\r\n return this.basePath;\r\n }\r\n\r\n public setCookieName(name: string): void {\r\n this.cookieName = name;\r\n }\r\n\r\n private saveTokenToLocalStorage(): void {\r\n if (this.sessionInfoData && this.cookieName) {\r\n localStorage.setItem('token', this.sessionInfoData.sid);\r\n if (\r\n this.sessionInfoData.refreshToken &&\r\n this.sessionInfoData.refreshToken !== localStorage.getItem('refreshToken')\r\n ) {\r\n localStorage.setItem('refreshToken', this.sessionInfoData.refreshToken);\r\n }\r\n this.cookieService.set(this.cookieName, this.token!);\r\n }\r\n }\r\n\r\n private setAuthenticationStatus(): void {\r\n if (this.sessionInfoData && this.sessionInfoData.authentications) {\r\n this.isAuthenticated = this.sessionInfoData.authentications.length > 0;\r\n }\r\n this.authenticationStateChanged.next(this.isAuthenticated);\r\n }\r\n\r\n private checkStatements(): void {\r\n if (!this.basePath) {\r\n throw new Error('The url of the backend api has not been set!');\r\n } else if (!this.cookieName) {\r\n throw new Error('The name of the cookie required by the backend has not been set!');\r\n }\r\n }\r\n\r\n public async initialize(): Promise<void> {\r\n if (this.initializeRunning) {\r\n return this.initializeRunning.toPromise();\r\n } else {\r\n this.initializeRunning = new SmartSubject(this._destroy$);\r\n try {\r\n this.checkStatements();\r\n\r\n let tokenFromLocalStorage = localStorage.getItem('token');\r\n let tokenFromCookies = this.cookieService.get(this.cookieName!);\r\n\r\n if (\r\n tokenFromLocalStorage &&\r\n tokenFromCookies &&\r\n tokenFromLocalStorage === tokenFromCookies\r\n ) {\r\n this.token = tokenFromLocalStorage;\r\n this.setUpTokenForSessionService();\r\n try {\r\n await this.getSession();\r\n } catch (err) {\r\n await this.startSession();\r\n }\r\n } else {\r\n await this.clearAndStartNewSession();\r\n }\r\n if (this.sessionInfoData && this.sessionInfoData.locale) {\r\n localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);\r\n this.localeChanged.next();\r\n }\r\n } finally {\r\n this.initializeRunning.complete();\r\n this.initializeRunning = undefined;\r\n }\r\n }\r\n }\r\n\r\n private async startSession(): Promise<SessionInfoData> {\r\n let sessionInfo = await this.apiService.startSession().toPromise();\r\n if (sessionInfo) {\r\n this.sessionInfoData = sessionInfo;\r\n this.token = sessionInfo.sid;\r\n this.saveTokenToLocalStorage();\r\n this.setAuthenticationStatus();\r\n this.setUpTokenForSessionService();\r\n }\r\n\r\n return this.sessionInfoData!;\r\n }\r\n\r\n public async getSession(): Promise<SessionInfoData> {\r\n let sessionInfo = await this.apiService.getSession().toPromise();\r\n if (sessionInfo) {\r\n this.sessionInfoData = sessionInfo;\r\n this.token = sessionInfo.sid;\r\n this.saveTokenToLocalStorage();\r\n this.setAuthenticationStatus();\r\n }\r\n\r\n return this.sessionInfoData!;\r\n }\r\n\r\n public async refreshSession(): Promise<SessionInfoData> {\r\n let refreshToken = localStorage.getItem('refreshToken');\r\n if (!refreshToken) {\r\n return await this.startSession();\r\n }\r\n\r\n let sessionInfo = await this.apiService\r\n .refreshSession({\r\n refreshToken,\r\n })\r\n .toPromise()\r\n .catch(async (error: HttpErrorResponse) => {\r\n if (\r\n error.error &&\r\n (error.error as ApiError).code &&\r\n (error.error as ApiError).code === 'session.refreshtoken.invalid'\r\n ) {\r\n await this.startSession();\r\n }\r\n });\r\n\r\n if (sessionInfo) {\r\n this.sessionInfoData = sessionInfo;\r\n this.token = sessionInfo.sid;\r\n this.saveTokenToLocalStorage();\r\n this.setAuthenticationStatus();\r\n this.setUpTokenForSessionService();\r\n }\r\n\r\n return this.sessionInfoData!;\r\n }\r\n\r\n public async getAuthenticationProviders(): Promise<Array<AuthenticationProviderData>> {\r\n let providers: GetAuthenticationProvidersResponse | undefined = await this.apiService\r\n .getAuthenticationProviders()\r\n .toPromise();\r\n\r\n this.providers = providers?.authenticationProviders;\r\n\r\n return this.providers!;\r\n }\r\n\r\n public async getIsAuthenticated(): Promise<boolean> {\r\n if (this.sessionInfoData) {\r\n return this.isAuthenticated;\r\n }\r\n await this.getSession();\r\n return this.isAuthenticated;\r\n }\r\n\r\n public async clearAndStartNewSession(): Promise<void> {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n this.headerParams = [];\r\n this.cookieService.delete(this.cookieName!);\r\n\r\n await this.startSession();\r\n }\r\n\r\n public getLocale(): string {\r\n if (this.sessionInfoData && this.sessionInfoData.locale) {\r\n if (localStorage.getItem(this.localStorageLocaleName) !== this.sessionInfoData.locale) {\r\n localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);\r\n }\r\n return this.sessionInfoData.locale;\r\n }\r\n throw new Error('There is no SessionInfoData or locale is undefined.');\r\n }\r\n\r\n public async changeLocale(locale: string): Promise<void> {\r\n this.sessionInfoData = await this.apiService.setLocale(locale).toPromise();\r\n if (this.sessionInfoData && this.sessionInfoData.locale) {\r\n localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);\r\n this.localeChanged.next();\r\n }\r\n }\r\n}\r\n","import { HttpParameterCodec } from '@angular/common/http';\r\n\r\n/**\r\n * Custom HttpParameterCodec\r\n * Workaround for https://github.com/angular/angular/issues/18261\r\n */\r\nexport class CustomHttpParameterCodec implements HttpParameterCodec {\r\n encodeKey(k: string): string {\r\n return encodeURIComponent(k);\r\n }\r\n encodeValue(v: string): string {\r\n return encodeURIComponent(v);\r\n }\r\n decodeKey(k: string): string {\r\n return decodeURIComponent(k);\r\n }\r\n decodeValue(v: string): string {\r\n return decodeURIComponent(v);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const BASE_PATH = new InjectionToken<string>('basePath');\r\nexport const COLLECTION_FORMATS = {\r\n 'csv': ',',\r\n 'tsv': ' ',\r\n 'ssv': ' ',\r\n 'pipes': '|'\r\n}\r\n","import { HttpParameterCodec } from '@angular/common/http';\r\nimport { Param } from './param';\r\n\r\nexport interface ConfigurationParameters {\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n /**\r\n * Takes care of encoding query- and form-parameters.\r\n */\r\n encoder?: HttpParameterCodec;\r\n /**\r\n * Override the default method for encoding path parameters in various\r\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\r\n * <p>\r\n * See {@link README.md} for more details\r\n * </p>\r\n */\r\n encodeParam?: (param: Param) => string;\r\n /**\r\n * The keys are the names in the securitySchemes section of the OpenAPI\r\n * document. They should map to the value used for authentication\r\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\r\n */\r\n credentials?: {[ key: string ]: string | (() => string | undefined)};\r\n}\r\n\r\nexport class Configuration {\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n /**\r\n * Takes care of encoding query- and form-parameters.\r\n */\r\n encoder?: HttpParameterCodec;\r\n /**\r\n * Encoding of various path parameter\r\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\r\n * <p>\r\n * See {@link README.md} for more details\r\n * </p>\r\n */\r\n encodeParam: (param: Param) => string;\r\n /**\r\n * The keys are the names in the securitySchemes section of the OpenAPI\r\n * document. They should map to the value used for authentication\r\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\r\n */\r\n credentials: {[ key: string ]: string | (() => string | undefined)};\r\n\r\n constructor(configurationParameters: ConfigurationParameters = {}) {\r\n this.apiKeys = configurationParameters.apiKeys;\r\n this.username = configurationParameters.username;\r\n this.password = configurationParameters.password;\r\n this.accessToken = configurationParameters.accessToken;\r\n this.basePath = configurationParameters.basePath;\r\n this.withCredentials = configurationParameters.withCredentials;\r\n this.encoder = configurationParameters.encoder;\r\n if (configurationParameters.encodeParam) {\r\n this.encodeParam = configurationParameters.encodeParam;\r\n }\r\n else {\r\n this.encodeParam = param => this.defaultEncodeParam(param);\r\n }\r\n if (configurationParameters.credentials) {\r\n this.credentials = configurationParameters.credentials;\r\n }\r\n else {\r\n this.credentials = {};\r\n }\r\n }\r\n\r\n /**\r\n * Select the correct content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param contentTypes - the array of content types that are available for selection\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\r\n if (contentTypes.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = contentTypes.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return contentTypes[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Select the correct accept content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param accepts - the array of content types that are available for selection.\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderAccept(accepts: string[]): string | undefined {\r\n if (accepts.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = accepts.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return accepts[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Check if the given MIME is a JSON MIME.\r\n * JSON MIME examples:\r\n * application/json\r\n * application/json; charset=UTF8\r\n * APPLICATION/JSON\r\n * application/vnd.company+json\r\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\r\n * @return True if the given MIME is JSON, false otherwise.\r\n */\r\n public isJsonMime(mime: string): boolean {\r\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\r\n return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\r\n }\r\n\r\n public lookupCredential(key: string): string | undefined {\r\n const value = this.credentials[key];\r\n return typeof value === 'function'\r\n ? value()\r\n : value;\r\n }\r\n\r\n private defaultEncodeParam(param: Param): string {\r\n // This implementation exists as fallback for missing configuration\r\n // and for backwards compatibility to older typescript-angular generator versions.\r\n // It only works for the 'simple' parameter style.\r\n // Date-handling only works for the 'date-time' format.\r\n // All other styles and Date-formats are probably handled incorrectly.\r\n //\r\n // But: if that's all you need (i.e.: the most common use-case): no need for customization!\r\n\r\n const value = param.dataFormat === 'date-time' && param.value instanceof Date\r\n ? (param.value as Date).toISOString()\r\n : param.value;\r\n\r\n return encodeURIComponent(String(value));\r\n }\r\n}\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n/* tslint:disable:no-unused-variable member-ordering */\r\n\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams,\r\n HttpResponse, HttpEvent, HttpParameterCodec, HttpContext \r\n } from '@angular/common/http';\r\nimport { CustomHttpParameterCodec } from '../encoder';\r\nimport { Observable } from 'rxjs';\r\n\r\n// @ts-ignore\r\nimport { ComponentModel } from '../model/componentModel';\r\n// @ts-ignore\r\nimport { DataChange } from '../model/dataChange';\r\n// @ts-ignore\r\nimport { MessageResult } from '../model/messageResult';\r\n// @ts-ignore\r\nimport { UiActionRequest } from '../model/uiActionRequest';\r\n// @ts-ignore\r\nimport { ViewConstraint } from '../model/viewConstraint';\r\n// @ts-ignore\r\nimport { ViewContextChange } from '../model/viewContextChange';\r\n// @ts-ignore\r\nimport { ViewContextData } from '../model/viewContextData';\r\n// @ts-ignore\r\nimport { ViewContextUpdate } from '../model/viewContextUpdate';\r\n\r\n// @ts-ignore\r\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\r\nimport { Configuration } from '../configuration';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ViewService {\r\n\r\n protected basePath = 'http://localhost';\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n public encoder: HttpParameterCodec;\r\n\r\n constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) {\r\n if (configuration) {\r\n this.configuration = configuration;\r\n }\r\n if (typeof this.configuration.basePath !== 'string') {\r\n if (Array.isArray(basePath) && basePath.length > 0) {\r\n basePath = basePath[0];\r\n }\r\n\r\n if (typeof basePath !== 'string') {\r\n basePath = this.basePath;\r\n }\r\n this.configuration.basePath = basePath;\r\n }\r\n this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\r\n }\r\n\r\n /**\r\n * @param consumes string[] mime-types\r\n * @return true: consumes contains 'multipart/form-data', false: otherwise\r\n */\r\n private canConsumeForm(consumes: string[]): boolean {\r\n const form = 'multipart/form-data';\r\n for (const consume of consumes) {\r\n if (form === consume) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n // @ts-ignore\r\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\r\n if (typeof value === \"object\" && value instanceof Date === false) {\r\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\r\n } else {\r\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\r\n }\r\n return httpParams;\r\n }\r\n\r\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\r\n if (value == null) {\r\n return httpParams;\r\n }\r\n\r\n if (typeof value === \"object\") {\r\n if (Array.isArray(value)) {\r\n (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\r\n } else if (value instanceof Date) {\r\n if (key != null) {\r\n httpParams = httpParams.append(key, (value as Date).toISOString().substr(0, 10));\r\n } else {\r\n throw Error(\"key may not be null if value is Date\");\r\n }\r\n } else {\r\n Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\r\n httpParams, value[k], key != null ? `${key}.${k}` : k));\r\n }\r\n } else if (key != null) {\r\n httpParams = httpParams.append(key, value);\r\n } else {\r\n throw Error(\"key may not be null if value is not object or array\");\r\n }\r\n return httpParams;\r\n }\r\n\r\n /**\r\n * Creates a new ViewContext\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public createViewContext(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextData>;\r\n public createViewContext(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextData>>;\r\n public createViewContext(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextData>>;\r\n public createViewContext(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/context`;\r\n return this.httpClient.request<ViewContextData>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Notification of a data change event.. \r\n * @param uuid \r\n * @param dataChange \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public dataChanged(uuid: string, dataChange: DataChange, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\r\n public dataChanged(uuid: string, dataChange: DataChange, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\r\n public dataChanged(uuid: string, dataChange: DataChange, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\r\n public dataChanged(uuid: string, dataChange: DataChange, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling dataChanged.');\r\n }\r\n if (dataChange === null || dataChange === undefined) {\r\n throw new Error('Required parameter dataChange was null or undefined when calling dataChanged.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/data`;\r\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: dataChange,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param uuid \r\n * @param item \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public downloadItem(uuid: string, item: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<Blob>;\r\n public downloadItem(uuid: string, item: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<HttpResponse<Blob>>;\r\n public downloadItem(uuid: string, item: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<HttpEvent<Blob>>;\r\n public downloadItem(uuid: string, item: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<any> {\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling downloadItem.');\r\n }\r\n if (item === null || item === undefined) {\r\n throw new Error('Required parameter item was null or undefined when calling downloadItem.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/octet-stream'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/download/${this.configuration.encodeParam({name: \"item\", value: item, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}`;\r\n return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: \"blob\",\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param uuid \r\n * @param item \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public downloadItemDeprecated(uuid: string, item: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<Blob>;\r\n public downloadItemDeprecated(uuid: string, item: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<HttpResponse<Blob>>;\r\n public downloadItemDeprecated(uuid: string, item: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<HttpEvent<Blob>>;\r\n public downloadItemDeprecated(uuid: string, item: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<any> {\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling downloadItemDeprecated.');\r\n }\r\n if (item === null || item === undefined) {\r\n throw new Error('Required parameter item was null or undefined when calling downloadItemDeprecated.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/octet-stream'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let localVarPath = `/view/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/download/${this.configuration.encodeParam({name: \"item\", value: item, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}`;\r\n return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: \"blob\",\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Returns component\\'s model.\r\n * @param uuid Component\\'s unique identifier.\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getComponentModel(uuid: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ComponentModel>;\r\n public getComponentModel(uuid: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ComponentModel>>;\r\n public getComponentModel(uuid: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ComponentModel>>;\r\n public getComponentModel(uuid: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling getComponentModel.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}`;\r\n return this.httpClient.request<ComponentModel>('get', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Returns the view constraint object belongs to the given view\r\n * @param uuid View\\'s unique identifier.\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getViewConstraint(uuid: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewConstraint>;\r\n public getViewConstraint(uuid: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewConstraint>>;\r\n public getViewConstraint(uuid: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewConstraint>>;\r\n public getViewConstraint(uuid: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling getViewConstraint.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/view/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/constraint`;\r\n return this.httpClient.request<ViewConstraint>('get', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Returns the existing session info\r\n * @param uuid ViewContext\\'s unique identifier.\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getViewContext(uuid: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextData>;\r\n public getViewContext(uuid: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextData>>;\r\n public getViewContext(uuid: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextData>>;\r\n public getViewContext(uuid: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling getViewContext.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/context/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}`;\r\n return this.httpClient.request<ViewContextData>('get', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * @param viewUuid View UUID.\r\n * @param messageUuid Message UUID.\r\n * @param messageResult \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public message(viewUuid: string, messageUuid: string, messageResult: MessageResult, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<any>;\r\n public message(viewUuid: string, messageUuid: string, messageResult: MessageResult, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<HttpResponse<any>>;\r\n public message(viewUuid: string, messageUuid: string, messageResult: MessageResult, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<HttpEvent<any>>;\r\n public message(viewUuid: string, messageUuid: string, messageResult: MessageResult, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error('Required parameter viewUuid was null or undefined when calling message.');\r\n }\r\n if (messageUuid === null || messageUuid === undefined) {\r\n throw new Error('Required parameter messageUuid was null or undefined when calling message.');\r\n }\r\n if (messageResult === null || messageResult === undefined) {\r\n throw new Error('Required parameter messageResult was null or undefined when calling message.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/message/${this.configuration.encodeParam({name: \"viewUuid\", value: viewUuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/${this.configuration.encodeParam({name: \"messageUuid\", value: messageUuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}`;\r\n return this.httpClient.request<any>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: messageResult,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Performs a generic UI action. \r\n * @param uuid \r\n * @param body \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public performAction(uuid: string, body: UiActionRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\r\n public performAction(uuid: string, body: UiActionRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\r\n public performAction(uuid: string, body: UiActionRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\r\n public performAction(uuid: string, body: UiActionRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling performAction.');\r\n }\r\n if (body === null || body === undefined) {\r\n throw new Error('Required parameter body was null or undefined when calling performAction.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/action`;\r\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: body,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Performs a widget UI action. \r\n * @param uuid \r\n * @param widgetId \r\n * @param nodeId \r\n * @param body \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public performWidgetAction(uuid: string, widgetId: string, nodeId: string, body: UiActionRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\r\n public performWidgetAction(uuid: string, widgetId: string, nodeId: string, body: UiActionRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\r\n public performWidgetAction(uuid: string, widgetId: string, nodeId: string, body: UiActionRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\r\n public performWidgetAction(uuid: string, widgetId: string, nodeId: string, body: UiActionRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling performWidgetAction.');\r\n }\r\n if (widgetId === null || widgetId === undefined) {\r\n throw new Error('Required parameter widgetId was null or undefined when calling performWidgetAction.');\r\n }\r\n if (nodeId === null || nodeId === undefined) {\r\n throw new Error('Required parameter nodeId was null or undefined when calling performWidgetAction.');\r\n }\r\n if (body === null || body === undefined) {\r\n throw new Error('Required parameter body was null or undefined when calling performWidgetAction.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/${this.configuration.encodeParam({name: \"widgetId\", value: widgetId, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}/${this.configuration.encodeParam({name: \"nodeId\", value: nodeId, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}/action`;\r\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: body,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Performs a widget UI action. \r\n * @param uuid \r\n * @param widgetId \r\n * @param body \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public performWidgetMainAction(uuid: string, widgetId: string, body: UiActionRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\r\n public performWidgetMainAction(uuid: string, widgetId: string, body: UiActionRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\r\n public performWidgetMainAction(uuid: string, widgetId: string, body: UiActionRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\r\n public performWidgetMainAction(uuid: string, widgetId: string, body: UiActionRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling performWidgetMainAction.');\r\n }\r\n if (widgetId === null || widgetId === undefined) {\r\n throw new Error('Required parameter widgetId was null or undefined when calling performWidgetMainAction.');\r\n }\r\n if (body === null || body === undefined) {\r\n throw new Error('Required parameter body was null or undefined when calling performWidgetMainAction.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/${this.configuration.encodeParam({name: \"widgetId\", value: widgetId, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}/action`;\r\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: body,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param channel Smartlink\\'s channel.\r\n * @param uuid Smartlink\\'s unique identifier\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public showPublishedView(channel: string, uuid: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<any>;\r\n public showPublishedView(channel: string, uuid: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<HttpResponse<any>>;\r\n public showPublishedView(channel: string, uuid: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<HttpEvent<any>>;\r\n public showPublishedView(channel: string, uuid: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<any> {\r\n if (channel === null || channel === undefined) {\r\n throw new Error('Required parameter channel was null or undefined when calling showPublishedView.');\r\n }\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling showPublishedView.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/smartlink/${this.configuration.encodeParam({name: \"channel\", value: channel, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}`;\r\n return this.httpClient.request<any>('put', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Updates an existing ViewContext\r\n * @param viewContextUpdate \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public updateViewContext(viewContextUpdate: ViewContextUpdate, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextData>;\r\n public updateViewContext(viewContextUpdate: ViewContextUpdate, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextData>>;\r\n public updateViewContext(viewContextUpdate: ViewContextUpdate, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextData>>;\r\n public updateViewContext(viewContextUpdate: ViewContextUpdate, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (viewContextUpdate === null || viewContextUpdate === undefined) {\r\n throw new Error('Required parameter viewContextUpdate was null or undefined when calling updateViewContext.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/context`;\r\n return this.httpClient.request<ViewContextData>('put', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: viewContextUpdate,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Performs an upload UI action. \r\n * @param uuid \r\n * @param uiActionRequest Stringify-d UiActionRequest.\r\n * @param param Parameter name to use when converting uploaded file to BinaryData.\r\n * @param content \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public uploadAction(uuid: string, uiActionRequest?: string, param?: string, content?: Blob, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\r\n public uploadAction(uuid: string, uiActionRequest?: string, param?: string, content?: Blob, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\r\n public uploadAction(uuid: string, uiActionRequest?: string, param?: string, content?: Blob, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\r\n public uploadAction(uuid: string, uiActionRequest?: string, param?: string, content?: Blob, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling uploadAction.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'multipart/form-data'\r\n ];\r\n\r\n const canConsumeForm = this.canConsumeForm(consumes);\r\n\r\n let localVarFormParams: { append(param: string, value: any): any; };\r\n let localVarUseForm = false;\r\n let localVarConvertFormParamsToString = false;\r\n // use FormData to transmit files using content-type \"multipart/form-data\"\r\n // see https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data\r\n localVarUseForm = canConsumeForm;\r\n if (localVarUseForm) {\r\n localVarFormParams = new FormData();\r\n } else {\r\n localVarFormParams = new HttpParams({encoder: this.encoder});\r\n }\r\n\r\n if (uiActionRequest !== undefined) {\r\n localVarFormParams = localVarFormParams.append('uiActionRequest', <any>uiActionRequest) as any || localVarFormParams;\r\n }\r\n if (param !== undefined) {\r\n localVarFormParams = localVarFormParams.append('param', <any>param) as any || localVarFormParams;\r\n }\r\n if (content !== undefined) {\r\n localVarFormParams = localVarFormParams.append('content', <any>content) as any || localVarFormParams;\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/upload`;\r\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: localVarConvertFormParamsToString ? localVarFormParams.toString() : localVarFormParams,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Performs a generic UI action. \r\n * @param uuid \r\n * @param uiActionRequest Stringify-d UiActionRequest.\r\n * @param param Parameter name to use when converting uploaded file to BinaryData.\r\n * @param contents \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public uploadMultipleAction(uuid: string, uiActionRequest?: string, param?: string, contents?: Array<Blob>, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\r\n public uploadMultipleAction(uuid: string, uiActionRequest?: string, param?: string, contents?: Array<Blob>, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\r\n public uploadMultipleAction(uuid: string, uiActionRequest?: string, param?: string, contents?: Array<Blob>, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\r\n public uploadMultipleAction(uuid: string, uiActionRequest?: string, param?: string, contents?: Array<Blob>, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (uuid === null || uuid === undefined) {\r\n throw new Error('Required parameter uuid was null or undefined when calling uploadMultipleAction.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'multipart/form-data'\r\n ];\r\n\r\n const canConsumeForm = this.canConsumeForm(consumes);\r\n\r\n let localVarFormParams: { append(param: string, value: any): any; };\r\n let localVarUseForm = false;\r\n let localVarConvertFormParamsToString = false;\r\n // use FormData to transmit files using content-type \"multipart/form-data\"\r\n // see https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data\r\n localVarUseForm = canConsumeForm;\r\n if (localVarUseForm) {\r\n localVarFormParams = new FormData();\r\n } else {\r\n localVarFormParams = new HttpParams({encoder: this.encoder});\r\n }\r\n\r\n if (uiActionRequest !== undefined) {\r\n localVarFormParams = localVarFormParams.append('uiActionRequest', <any>uiActionRequest) as any || localVarFormParams;\r\n }\r\n if (param !== undefined) {\r\n localVarFormParams = localVarFormParams.append('param', <any>param) as any || localVarFormParams;\r\n }\r\n if (contents) {\r\n if (localVarUseForm) {\r\n contents.forEach((element) => {\r\n localVarFormParams = localVarFormParams.append('contents', <any>element) as any || localVarFormParams;\r\n })\r\n } else {\r\n localVarFormParams = localVarFormParams.append('contents', [...contents].join(COLLECTION_FORMATS['csv'])) as any || localVarFormParams;\r\n }\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/uploadMultiple`;\r\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: localVarConvertFormParamsToString ? localVarFormParams.toString() : localVarFormParams,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\n","export * from './view.service';\r\nimport { ViewService } from './view.service';\r\nexport const APIS = [ViewService];\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\nexport type CloseResult = 'approved' | 'pending' | 'rejected';\r\n\r\nexport const CloseResult = {\r\n Approved: 'approved' as CloseResult,\r\n Pending: 'pending' as CloseResult,\r\n Rejected: 'rejected' as CloseResult\r\n};\r\n\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\n/**\r\n * Defines the kind of the source of this event.. \r\n */\r\nexport type DataChangeKind = 'WIDGET' | 'SELECTION' | 'LOOKUP';\r\n\r\nexport const DataChangeKind = {\r\n Widget: 'WIDGET' as DataChangeKind,\r\n Selection: 'SELECTION' as DataChangeKind,\r\n Lookup: 'LOOKUP' as DataChangeKind\r\n};\r\n\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\nexport type MessageOptionType = 'confirm' | 'reject' | 'cancel';\r\n\r\nexport const MessageOptionType = {\r\n Confirm: 'confirm' as MessageOptionType,\r\n Reject: 'reject' as MessageOptionType,\r\n Cancel: 'cancel' as MessageOptionType\r\n};\r\n\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\nexport type MessageType = 'info' | 'question' | 'warning' | 'error';\r\n\r\nexport const MessageType = {\r\n Info: 'info' as MessageType,\r\n Question: 'question' as MessageType,\r\n Warning: 'warning' as MessageType,\r\n Error: 'error' as MessageType\r\n};\r\n\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\n/**\r\n * Defines the position of an icon related to the button\\'s label. \r\n */\r\nexport type UiActionButtonIconPos = 'PRE' | 'POST';\r\n\r\nexport const UiActionButtonIconPos = {\r\n Pre: 'PRE' as UiActionButtonIconPos,\r\n Post: 'POST' as UiActionButtonIconPos\r\n};\r\n\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\n/**\r\n * Defines the type of the button. \r\n */\r\nexport type UiActionButtonType = 'NORMAL' | 'FLAT' | 'STROKED' | 'RAISED' | 'ICON' | 'MINI_FAB' | 'FAB';\r\n\r\nexport const UiActionButtonType = {\r\n Normal: 'NORMAL' as UiActionButtonType,\r\n Flat: 'FLAT' as UiActionButtonType,\r\n Stroked: 'STROKED' as UiActionButtonType,\r\n Raised: 'RAISED' as UiActionButtonType,\r\n Icon: 'ICON' as UiActionButtonType,\r\n MiniFab: 'MINI_FAB' as UiActionButtonType,\r\n Fab: 'FAB' as UiActionButtonType\r\n};\r\n\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\n/**\r\n * Defines the possible feedback types which are shown if a UiAction was completed. \r\n */\r\nexport type UiActionFeedbackType = 'NONE' | 'SNACKBAR';\r\n\r\nexport const UiActionFeedbackType = {\r\n None: 'NONE' as UiActionFeedbackType,\r\n Snackbar: 'SNACKBAR' as UiActionFeedbackType\r\n};\r\n\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\nexport type UiActionInputType = 'none' | 'textfield' | 'textarea' | 'user_select' | 'file' | 'multiple_files';\r\n\r\nexport const UiActionInputType = {\r\n None: 'none' as UiActionInputType,\r\n Textfield: 'textfield' as UiActionInputType,\r\n Textarea: 'textarea' as UiActionInputType,\r\n UserSelect: 'user_select' as UiActionInputType,\r\n File: 'file' as UiActionInputType,\r\n MultipleFiles: 'multiple_files' as UiActionInputType\r\n};\r\n\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * An event handler is a special callback function to call when the given event is occurred. So the event handler can be an action as is or can be fired on a before or after event\r\n */\r\nexport interface ViewEventHandler {\r\n /**\r\n * The event handler path defines the location of the event. We can use regular expressions to fine tune the event definition. In this way we can add before event handler for all the actions we have. The actions will have a predefined path. The path of the normal actions is the action code itself.\r\n */\r\n path?: Array<string>;\r\n viewEventType?: ViewEventHandler.ViewEventTypeEnum;\r\n invocationRequestDefinition?: any;\r\n}\r\nexport namespace ViewEventHandler {\r\n export type ViewEventTypeEnum = 'before' | 'instead' | 'after';\r\n export const ViewEventTypeEnum = {\r\n Before: 'before' as ViewEventTypeEnum,\r\n Instead: 'instead' as ViewEventTypeEnum,\r\n After: 'after' as ViewEventTypeEnum,\r\n };\r\n}\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\nexport type ViewState = 'open_pending' | 'to_open' | 'opened' | 'close_pending' | 'close_approved' | 'to_close' | 'closed';\r\n\r\nexport const ViewState = {\r\n OpenPending: 'open_pending' as ViewState,\r\n ToOpen: 'to_open' as ViewState,\r\n Opened: 'opened' as ViewState,\r\n ClosePending: 'close_pending' as ViewState,\r\n CloseApproved: 'close_approved' as ViewState,\r\n ToClose: 'to_close' as ViewState,\r\n Closed: 'closed' as ViewState\r\n};\r\n\r\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n\r\nexport type ViewType = 'normal' | 'dialog' | 'embedded';\r\n\r\nexport const ViewType = {\r\n Normal: 'normal' as ViewType,\r\n Dialog: 'dialog' as ViewType,\r\n Embedded: 'embedded' as ViewType\r\n};\r\n\r\n","import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\r\nimport { Configuration } from './configuration';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [],\r\n exports: [],\r\n providers: []\r\n})\r\nexport class ApiModule {\r\n public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders<ApiModule> {\r\n return {\r\n ngModule: ApiModule,\r\n providers: [ { provide: Configuration, useFactory: configurationFactory } ]\r\n };\r\n }\r\n\r\n constructor( @Optional() @SkipSelf() parentModule: ApiModule,\r\n @Optional() http: HttpClient) {\r\n if (parentModule) {\r\n throw new Error('ApiModule is already loaded. Import in your base AppModule only.');\r\n }\r\n if (!http) {\r\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\r\n 'See also https://github.com/angular/angular/issues/20575');\r\n }\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { MessageData, MessageOption, MessageOptionType } from \"../api\";\r\nimport { SmartViewContextService } from \"../smart-view-context.service\";\r\n\r\n@Component({\r\n selector: \"app-message-dialog\",\r\n templateUrl: \"./message-dialog.component.html\",\r\n styleUrls: [\"./message-dialog.component.css\"],\r\n})\r\nexport class MessageDialogComponent implements OnInit, OnDestroy {\r\n messageData!: MessageData;\r\n\r\n constructor(private viewContext: SmartViewContextService) {}\r\n ngOnInit(): void {\r\n this.getMessageData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (!this.messageData.options || !this.messageData.options.length) {\r\n this.viewContext.message(this.messageData, {\r\n selectedOption: {\r\n code: MessageOptionType.Cancel,\r\n label: \"\",\r\n },\r\n });\r\n }\r\n }\r\n\r\n async getMessageData(): Promise<void> {\r\n let messageDialogName = this.viewContext.messageDialogname;\r\n let viewData = await this.viewContext.getViewContextDataByPageName(messageDialogName!);\r\n this.messageData = viewData.message!;\r\n }\r\n\r\n getColor(option: MessageOption): string {\r\n switch (option.type) {\r\n case MessageOptionType.Cancel:\r\n return \"accent\";\r\n case MessageOptionType.Confirm:\r\n return \"primary\";\r\n case MessageOptionType.Reject:\r\n return \"warn\";\r\n default:\r\n return \"accent\";\r\n }\r\n }\r\n\r\n getType(option: MessageOption): string {\r\n switch (option.type) {\r\n case MessageOptionType.Confirm:\r\n case MessageOptionType.Reject:\r\n return \"mat-raised-button\";\r\n default:\r\n return \"mat-button\";\r\n }\r\n }\r\n\r\n onClick(selectedOption: MessageOption): void {\r\n this.viewContext.message(this.messageData, {\r\n selectedOption,\r\n });\r\n }\r\n}\r\n","<div class=\"taskDialogContainer\" *ngIf=\"messageData\">\r\n\t<h2>\r\n\t\t{{ messageData.header }}\r\n\t</h2>\r\n\t<p>{{ messageData.text }}</p>\r\n\t<div class=\"buttonsContainer\">\r\n\t\t<button\r\n\t\t\t*ngFor=\"let option of messageData.options\"\r\n\t\t\tmat-button\r\n\t\t\tclass=\"taskDialogButton\"\r\n\t\t\t[ngClass]=\"getType(option)\"\r\n\t\t\tcolor=\"{{ getColor(option) }}\"\r\n\t\t\t(click)=\"onClick(option)\"\r\n\t\t>\r\n\t\t\t<mat-icon *ngIf=\"option.icon\">\r\n\t\t\t\t{{ option.icon }}\r\n\t\t\t</mat-icon>\r\n\t\t\t{{ option.label }}\r\n\t\t</button>\r\n\t</div>\r\n</div>\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { SmartdialogService } from '@smartbit4all/dialog';\r\nimport { SmartNavigationService } from '@smartbit4all/navigation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartSessionService } from '../session/smart-session.service';\r\nimport {\r\n ComponentModel,\r\n ComponentModelChange,\r\n DataChange,\r\n MessageData,\r\n MessageResult,\r\n UiActionDescriptor,\r\n UiActionRequest,\r\n ViewConstraint,\r\n ViewContextChange,\r\n ViewContextData,\r\n ViewContextUpdate,\r\n ViewData,\r\n ViewService,\r\n ViewState,\r\n ViewType,\r\n} from './api';\r\nimport { MessageDialogComponent } from './message-dialog/message-dialog.component';\r\nimport {\r\n SmartTranslateService,\r\n SmartViewContextApiError,\r\n SmartViewContextApiErrors,\r\n SmartViewDialogRef,\r\n SmartViewHandlerModel,\r\n} from './smart-view-context.model';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\nexport const SmartViewContextErrorDialogButtonLabel = 'SmartViewContextErrorDialogButtonLabel';\r\nexport const SmartViewContextErrorDialogTitle = 'SmartViewContextErrorDialogTitle';\r\nexport const SmartViewContextErrorDialogMessage = 'SmartViewContextErrorDialogMessage';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartViewContextService implements OnDestroy {\r\n private tabIdName: string = 'viewContextUuid';\r\n private tabIdhttpHeaderName: string = 'viewContextUuid';\r\n public messageDialogname: string | undefined;\r\n private url?: string;\r\n private viewContext?: ViewContextData;\r\n private viewHandlers: Array<SmartViewHandlerModel> = new Array();\r\n private openedViewUuids: Array<string> = new Array();\r\n private openedViewData: Array<ViewData> = new Array();\r\n\r\n private _destroy$: Subject<void> = new Subject();\r\n public uuidOfPageHasBeenChanged: Subject<string> = new SmartSubject(this._destroy$);\r\n public viewContextHasBeenSynced: Subject<void> = new SmartSubject(this._destroy$);\r\n private initializeRunning: Subject<ViewContextData> | undefined;\r\n\r\n public smartViewContextApiErrors?: SmartViewContextApiErrors;\r\n\r\n public openSmartLink: Subject<void> = new SmartSubject(this._destroy$);\r\n public isOpeningSmartLink: boolean = false;\r\n\r\n private dialogRefs: SmartViewDialogRef[] = [];\r\n\r\n private actionDescriptors?: Map<string, UiActionDescriptor>;\r\n\r\n public commonFeedbackText?: string;\r\n\r\n public smartApiClients: Map<string, SmartSubject<any>> = new Map();\r\n\r\n public set translateService(translateService: SmartTranslateService | undefined) {\r\n this._translateService = translateService;\r\n this.translateServiceChanged.next();\r\n this.translateServiceChanged.complete();\r\n }\r\n\r\n public get translateService(): SmartTranslateService | undefined {\r\n if (this._translateService) {\r\n return this._translateService;\r\n }\r\n return undefined;\r\n }\r\n\r\n private _translateService?: SmartTranslateService;\r\n public translateServiceChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n constructor(\r\n private view: ViewService,\r\n private session: SmartSessionService,\r\n private navigation: SmartNavigationService,\r\n private dialog: SmartdialogService,\r\n private apiQueueService: ApiQueueService\r\n ) {}\r\n\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n public follow(uuid: string, detectChange: SmartSubject<any>): void {\r\n this.smartApiClients.set(uuid, detectChange);\r\n }\r\n public unfollow(uuid: string): void {\r\n this.smartApiClients.delete(uuid);\r\n }\r\n\r\n public setActionDescriptors(actionDescriptors: Map<string, UiActionDescriptor>): void {\r\n this.actionDescriptors = actionDescriptors;\r\n }\r\n\r\n public getActionDescriptors(): Map<string, UiActionDescriptor> | undefined {\r\n if (!this.actionDescriptors) {\r\n console.error('No action descriptors has been set to ViewContext.');\r\n }\r\n return this.actionDescriptors;\r\n }\r\n\r\n public setViewHandlers(viewHandlers: Array<SmartViewHandlerModel>): void {\r\n this.viewHandlers = viewHandlers;\r\n }\r\n\r\n public setViewApiErrors(viewApiErrors: SmartViewContextApiErrors): void {\r\n this.smartViewContextApiErrors = viewApiErrors;\r\n }\r\n\r\n public setMessageDialogName(messageDialogName: string): void {\r\n this.messageDialogname = messageDialogName;\r\n this.viewHandlers.push({\r\n name: messageDialogName,\r\n component: MessageDialogComponent,\r\n });\r\n }\r\n\r\n private setUpUrlForViewService(): void {\r\n this.view.configuration.basePath = this.url;\r\n }\r\n\r\n public setUrl(url: string): void {\r\n this.url = url + '/view';\r\n this.setUpUrlForViewService();\r\n }\r\n\r\n public async getAndSyncViewContext(uuid?: string): Promise<void> {\r\n if (!uuid) {\r\n uuid = this.getUuidOfPage(this.tabIdName);\r\n }\r\n await this.getViewContext(uuid).then(() => {\r\n this.syncView();\r\n });\r\n }\r\n\r\n public async getViewContext(uuid: string): Promise<ViewContextData> {\r\n this.viewContext = await this.view.getViewContext(uuid).toPromise();\r\n if (!this.viewContext) {\r\n throw new Error('ViewContext does not exist with the given uuid.');\r\n }\r\n return this.viewContext;\r\n }\r\n\r\n public async getViewContextDataByPageName(pageName: string): Promise<ViewData> {\r\n if (!this.viewContext) {\r\n let viewContextUuid = sessionStorage.getItem(this.tabIdName);\r\n if (!viewContextUuid) {\r\n throw new Error('View context is not initialized!');\r\n }\r\n await this.getViewContext(viewContextUuid!);\r\n }\r\n let pageUuid = this.getUuidOfPage(pageName);\r\n\r\n let viewContextByPageName = this.viewContext?.views.find((view) => view.uuid === pageUuid);\r\n if (!viewContextByPageName) {\r\n throw new Error(`The ViewData of ${pageName} is not found!`);\r\n }\r\n return viewContextByPageName;\r\n }\r\n\r\n public async updateViewContext(\r\n viewContextUpdate: ViewContextUpdate\r\n ): Promise<ViewContextData | undefined> {\r\n this.viewContext = await this.view.updateViewContext(viewContextUpdate).toPromise();\r\n\r\n return this.viewContext;\r\n }\r\n\r\n private clearSessionStorage(): void {\r\n sessionStorage.clear();\r\n this.openedViewData = [];\r\n this.openedViewUuids = [];\r\n }\r\n\r\n private setTabId(tabId: string): void {\r\n sessionStorage.setItem(this.tabIdName, tabId);\r\n this.session.addHeaderParam({\r\n headerName: this.tabIdhttpHeaderName,\r\n value: tabId,\r\n });\r\n }\r\n\r\n public async startViewContext(): Promise<ViewContextData> {\r\n this.clearSessionStorage();\r\n\r\n let newViewContext: ViewContextData | undefined = await this.view\r\n .createViewContext()\r\n .toPromise();\r\n if (!newViewContext) {\r\n throw new Error('No ViewContext was created');\r\n }\r\n this.viewContext = newViewContext;\r\n this.setTabId(newViewContext.uuid!);\r\n\r\n return this.viewContext;\r\n }\r\n\r\n public async initialize(uuid?: string): Promise<ViewContextData | undefined> {\r\n if (this.initializeRunning) {\r\n return this.initializeRunning.toPromise();\r\n } else {\r\n this.initializeRunning = new SmartSubject(this._destroy$);\r\n try {\r\n if (this.viewHandlers.length === 0) {\r\n throw new Error(\r\n \"There aren't any viewHandlers in SmartViewContextService! Provide some to use its functions.\"\r\n );\r\n }\r\n if (!this.messageDialogname) {\r\n throw new Error('The messageDialogName provided by the backend has not been set.');\r\n }\r\n if (uuid) {\r\n this.setTabId(uuid);\r\n try {\r\n await this.getViewContext(uuid);\r\n } catch (err) {\r\n await this.startViewContext();\r\n }\r\n } else {\r\n await this.startViewContext();\r\n }\r\n\r\n return this.viewContext!;\r\n } finally {\r\n this.initializeRunning.next(this.viewContext!);\r\n this.initializeRunning.complete();\r\n this.initializeRunning = undefined;\r\n }\r\n }\r\n }\r\n\r\n public openView(view: ViewData): void {\r\n let viewHandler: SmartViewHandlerModel | undefined = this.viewHandlers.find(\r\n (handler) => handler.name === view.viewName\r\n );\r\n\r\n if (!viewHandler) {\r\n throw new Error(`SmartViewHandlerModel was not found by view name: ${view.viewName}`);\r\n }\r\n if (view.type === ViewType.Dialog) {\r\n if (!viewHandler.component) {\r\n throw new Error(\r\n `Component is undefined in SmartViewHandlerModel with name: ${view.viewName}`\r\n );\r\n }\r\n let dialogRef = this.dialog.openComponentAsDialog(viewHandler.component, viewHandler.name);\r\n dialogRef.disableClose = true;\r\n // if (view.viewName === this.messageDialogname) {\r\n // if (view.message?.options && view.message.options.length) {\r\n // }\r\n // }\r\n this.dialogRefs.push({\r\n uuid: view.uuid,\r\n dialogRef,\r\n });\r\n } else if (view.type === ViewType.Normal) {\r\n if (viewHandler.route === undefined) {\r\n throw new Error(`Route is undefined in SmartViewHandlerModel with name: ${view.viewName}`);\r\n }\r\n this.navigation.navigateTo(viewHandler.route.split('/'));\r\n } else {\r\n throw new Error('The type of the view and its viewHandler is not the same!');\r\n }\r\n\r\n view.state = ViewState.Opened;\r\n\r\n this.openedViewUuids.push(view.uuid);\r\n this.openedViewData.push(view);\r\n\r\n sessionStorage.setItem(view.viewName, view.uuid);\r\n this.uuidOfPageHasBeenChanged.next(view.viewName);\r\n\r\n this.updateViewContext({\r\n updates: [\r\n {\r\n state: ViewState.Opened,\r\n uuid: view.uuid,\r\n },\r\n ],\r\n uuid: this.viewContext?.uuid,\r\n });\r\n }\r\n\r\n public closeView(view: ViewData): void {\r\n let viewHandler: SmartViewHandlerModel | undefined = this.viewHandlers.find(\r\n (handler) => handler.name === view.viewName\r\n );\r\n\r\n if (!viewHandler) {\r\n throw new Error(`SmartViewHandlerModel was not found by view name: ${view.viewName}`);\r\n }\r\n\r\n if (view.type === ViewType.Dialog) {\r\n let dialogRef = this.dialogRefs.find(\r\n (dialogRef: SmartViewDialogRef) => dialogRef.uuid === view.uuid\r\n );\r\n if (dialogRef) {\r\n dialogRef.dialogRef.close();\r\n let index = this.dialogRefs.indexOf(dialogRef);\r\n this.dialogRefs.splice(index, 1);\r\n } else {\r\n throw new Error('DialogRef is not found by uuid.');\r\n }\r\n } else if (view.type === ViewType.Normal) {\r\n // TODO: close normal page???\r\n // this.navigation.navigateTo(viewHandler.route.split(\"/\"));\r\n } else {\r\n throw new Error('The type of the view and its viewHandler is not the same!');\r\n }\r\n\r\n view.state = ViewState.Closed;\r\n\r\n const index = this.openedViewUuids.indexOf(view.uuid);\r\n if (index >= 0) {\r\n this.openedViewUuids.splice(index, 1);\r\n this.openedViewData.splice(index, 1);\r\n sessionStorage.removeItem(view.viewName);\r\n }\r\n\r\n this.updateViewContext({\r\n updates: [\r\n {\r\n state: ViewState.Closed,\r\n uuid: view.uuid,\r\n },\r\n ],\r\n uuid: this.viewContext?.uuid,\r\n });\r\n }\r\n\r\n public async restoreViews(uuid: string): Promise<void> {\r\n if (!this.viewContext) {\r\n await this.getViewContext(uuid);\r\n }\r\n this.viewContext!.views.map((view: ViewData) => {\r\n this.openView(view);\r\n });\r\n }\r\n\r\n public syncView(): void {\r\n this.viewContext?.views.map((view: ViewData) => {\r\n switch (view.state) {\r\n case ViewState.ToOpen:\r\n this.openView(view);\r\n break;\r\n case ViewState.ToClose:\r\n this.closeView(view);\r\n break;\r\n }\r\n });\r\n\r\n const viewDataToClose = this.openedViewData.filter(\r\n (viewData: ViewData) =>\r\n !this.viewContext?.views\r\n .flatMap((viewData: ViewData) => viewData.uuid)\r\n .includes(viewData.uuid)\r\n );\r\n if (viewDataToClose?.length) {\r\n viewDataToClose.map((viewData: ViewData) => {\r\n this.closeView(viewData);\r\n });\r\n }\r\n\r\n this.viewContextHasBeenSynced.next();\r\n }\r\n\r\n public getUuidOfPage(pageName: string): string {\r\n let uuid = sessionStorage.getItem(pageName);\r\n if (!uuid) {\r\n throw new Error(`The uuid of ${pageName} is not available.`);\r\n }\r\n return uuid;\r\n }\r\n\r\n public async message(messageData: MessageData, messageResult: MessageResult): Promise<void> {\r\n await this.view\r\n .message(messageData.viewUuid ?? '', messageData.uuid, messageResult)\r\n .toPromise();\r\n await this.getAndSyncViewContext();\r\n }\r\n\r\n public async getSmartViewContextApiErrorByCode(code: string): Promise<SmartViewContextApiError> {\r\n let buttonLabel;\r\n let dialogTitle;\r\n let message;\r\n if (this.translateService) {\r\n buttonLabel = await this.translateService\r\n .get(SmartViewContextErrorDialogButtonLabel)\r\n .toPromise();\r\n dialogTitle = await this.translateService.get(SmartViewContextErrorDialogTitle).toPromise();\r\n message = await this.translateService.get(SmartViewContextErrorDialogMessage).toPromise();\r\n } else {\r\n buttonLabel = 'Ok';\r\n dialogTitle = 'Hiba';\r\n message = 'An error has occured.';\r\n }\r\n\r\n if (!this.smartViewContextApiErrors) {\r\n return {\r\n code,\r\n message,\r\n buttonLabel,\r\n dialogTitle,\r\n };\r\n }\r\n let apiErrorsWithCode = this.smartViewContextApiErrors.viewContextApiErrors.filter(\r\n (apiError: SmartViewContextApiError) => {\r\n return apiError.code === code;\r\n }\r\n );\r\n if (!apiErrorsWithCode || (apiErrorsWithCode && !apiErrorsWithCode.length)) {\r\n console.error(`SmartViewContextApiError with code ${code} could not be found.`);\r\n\r\n return {\r\n code,\r\n message,\r\n buttonLabel,\r\n dialogTitle,\r\n };\r\n }\r\n return apiErrorsWithCode[0];\r\n }\r\n\r\n public async getViewConstraint(uuid: string): Promise<ViewConstraint> {\r\n let viewConstraintResponse = await this.view.getViewConstraint(uuid).toPromise();\r\n if (!viewConstraintResponse)\r\n throw new Error('Could not get ViewConstraint with the given uuid.');\r\n return viewConstraintResponse;\r\n }\r\n\r\n public async showPublishedView(channel: string, uuid: string): Promise<void> {\r\n await this.session.initialize();\r\n // TODO init view context automatically\r\n // await this.initialize();\r\n\r\n this.isOpeningSmartLink = true;\r\n this.openSmartLink.next();\r\n await this.openSmartLink.toPromise();\r\n\r\n await this.view.showPublishedView(channel, uuid).toPromise();\r\n await this.getAndSyncViewContext();\r\n this.isOpeningSmartLink = false;\r\n }\r\n\r\n public async downloadResource(uuid: string, item: string): Promise<any> {\r\n return await this.view.downloadItem(uuid, item).toPromise();\r\n }\r\n\r\n public async performAction(uuid: string, uiActionRequest: UiActionRequest): Promise<void> {\r\n return await this._performAction({\r\n uuid,\r\n uiActionRequest,\r\n });\r\n // const isCompleted = new Subject<void>();\r\n // this.apiQueueService.addToQueue({\r\n // callback: this._performAction.bind(this),\r\n // config: {\r\n // uuid,\r\n // uiActionRequest,\r\n // },\r\n // isCompleted,\r\n // });\r\n // return await isCompleted.toPromise();\r\n }\r\n\r\n public async performWidgetAction(\r\n uuid: string,\r\n widgetId: string,\r\n nodeId: string,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<void> {\r\n return await this._performWidgetAction({ uuid, widgetId, nodeId, uiActionRequest });\r\n // const isCompleted = new Subject<void>();\r\n // this.apiQueueService.addToQueue({\r\n // callback: this._performWidgetAction.bind(this),\r\n // config: {\r\n // uuid,\r\n // widgetId,\r\n // nodeId,\r\n // uiActionRequest,\r\n // },\r\n // isCompleted,\r\n // });\r\n // return await isCompleted.toPromise();\r\n }\r\n\r\n public async performWidgetMainAction(\r\n uuid: string,\r\n widgetId: string,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<void> {\r\n return await this._performWidgetMainAction({ uuid, widgetId, uiActionRequest });\r\n // const isCompleted = new Subject<void>();\r\n // this.apiQueueService.addToQueue({\r\n // callback: this._performWidgetMainAction.bind(this),\r\n // config: {\r\n // uuid,\r\n // widgetId,\r\n // uiActionRequest,\r\n // },\r\n // isCompleted,\r\n // });\r\n // return await isCompleted.toPromise();\r\n }\r\n\r\n public async performUploadAction(\r\n uuid: string,\r\n uiActionRequest: UiActionRequest,\r\n param: 'INPUT' | 'INPUT2',\r\n content: any\r\n ): Promise<void> {\r\n this._performUploadAction({\r\n uuid,\r\n uiActionRequest,\r\n param,\r\n content,\r\n });\r\n }\r\n\r\n public async performUploadMultipleAction(\r\n uuid: string,\r\n uiActionRequest: UiActionRequest,\r\n param: 'INPUT' | 'INPUT2',\r\n content: any[]\r\n ): Promise<void> {\r\n this._performUploadMultipleAction({\r\n uuid,\r\n uiActionRequest,\r\n param,\r\n content,\r\n });\r\n }\r\n\r\n public async dataChanged(uuid: string, dataChange: DataChange): Promise<void> {\r\n return await this._dataChanged({ uuid, dataChange });\r\n // const isCompleted = new Subject<void>();\r\n // this.apiQueueService.addToQueue(\r\n // {\r\n // callback: this._dataChanged.bind(this),\r\n // config: {\r\n // uuid,\r\n // dataChange,\r\n // },\r\n // isCompleted,\r\n // },\r\n // true\r\n // );\r\n // return await isCompleted.toPromise();\r\n }\r\n\r\n private async _performAction(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view.performAction(config.uuid, config.uiActionRequest).toPromise()\r\n );\r\n }\r\n\r\n private async _performWidgetAction(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view\r\n .performWidgetAction(config.uuid, config.widgetId, config.nodeId, config.uiActionRequest)\r\n .toPromise()\r\n );\r\n }\r\n\r\n private async _performWidgetMainAction(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view\r\n .performWidgetMainAction(config.uuid, config.widgetId, config.uiActionRequest)\r\n .toPromise()\r\n );\r\n }\r\n\r\n private async _performUploadAction(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view\r\n .uploadAction(\r\n config.uuid,\r\n JSON.stringify(config.uiActionRequest),\r\n config.param,\r\n config.content\r\n )\r\n .toPromise()\r\n );\r\n }\r\n private async _performUploadMultipleAction(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view\r\n .uploadMultipleAction(\r\n config.uuid,\r\n JSON.stringify(config.uiActionRequest),\r\n config.param,\r\n config.content\r\n )\r\n .toPromise()\r\n );\r\n }\r\n\r\n private async _dataChanged(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view.dataChanged(config.uuid, config.dataChange).toPromise()\r\n );\r\n }\r\n\r\n public async handlePerformActionResponse(\r\n viewContextChange: ViewContextChange | undefined\r\n ): Promise<void> {\r\n this.viewContext = viewContextChange?.viewContext;\r\n this.syncView();\r\n\r\n if (viewContextChange?.changes) {\r\n this.handleChanges(viewContextChange.changes);\r\n }\r\n }\r\n\r\n private handleChanges(changes: Array<ComponentModelChange>): void {\r\n changes.forEach((componentModelChange: ComponentModelChange) => {\r\n let detectChange: SmartSubject<ComponentModelChange> | undefined = this.smartApiClients.get(\r\n componentModelChange.uuid\r\n );\r\n if (detectChange) {\r\n detectChange.next(componentModelChange);\r\n }\r\n });\r\n }\r\n\r\n public async load(uuid: string): Promise<ComponentModel | undefined> {\r\n return await this.view.getComponentModel(uuid).toPromise();\r\n }\r\n}\r\n\r\nexport const IS_ASYNC_PARAM_NAME = 'isAsync';\r\n\r\nexport interface ApiQueueCall {\r\n callback: (config: any) => Promise<any>;\r\n config: any;\r\n isCompleted: Subject<void>;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApiQueueService implements OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n private queue: ApiQueueCall[] = [];\r\n private isProcessing = false;\r\n private queueSubject: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n constructor() {\r\n this.queueSubject.pipe(takeUntil(this._destroy$)).subscribe(() => this.processQueue());\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n addToQueue(call: ApiQueueCall, priority: boolean = false) {\r\n if (priority) {\r\n this.queue.unshift(call); // Add at the beginning of the queue if it has higher priority\r\n } else {\r\n this.queue.push(call); // Add at the end of the queue if it has lower priority\r\n }\r\n if (!this.isProcessing) {\r\n this.processQueue();\r\n }\r\n }\r\n\r\n async processQueue(): Promise<void> {\r\n if (this.queue.length === 0) {\r\n this.isProcessing = false;\r\n return;\r\n }\r\n\r\n const apiQueueCall = this.queue.shift();\r\n if (apiQueueCall) {\r\n await apiQueueCall.callback(apiQueueCall.config);\r\n apiQueueCall.isCompleted.complete();\r\n this.queueSubject.next();\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { SmartSessionService } from \"./session/smart-session.service\";\r\nimport { SmartViewContextService } from \"./view-context/smart-view-context.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class SmartNgClientService {\r\n constructor(\r\n private session: SmartSessionService,\r\n private viewContext: SmartViewContextService\r\n ) {}\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { HttpErrorResponse, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Injectable, OnDestroy, Pipe, PipeTransform } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { SmartCookieService } from '../cookie-service/smart-cookie.service';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartDevToolService implements OnDestroy {\r\n descriptor?: SmartDevToolDescriptor;\r\n\r\n smartDevToolName: string = 'smartDevTool';\r\n isSmartDevToolActiveName: string = 'smartDevToolActive';\r\n isActive: boolean = false;\r\n smartDevToolHoursName: string = 'smartDevToolHours';\r\n smartDevToolMaxName: string = 'smartDevToolMaxCalls';\r\n hoursToSave: number = 1;\r\n maxNumOfSavedCalls: number = 50;\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n descriptorChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n newErrorsCount: number = 0;\r\n newErrorsCountChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n constructor(private cookieService: SmartCookieService) {\r\n this.setUpLocalStorage();\r\n\r\n let apiCallsFromLocalStorage = localStorage.getItem(this.smartDevToolName);\r\n if (apiCallsFromLocalStorage) {\r\n this.descriptor = JSON.parse(apiCallsFromLocalStorage);\r\n } else {\r\n this.descriptor = { apiCalls: [] };\r\n this.save();\r\n }\r\n\r\n window.addEventListener('storage', (event) => {\r\n if (event.storageArea === localStorage) {\r\n this.isActive = localStorage.getItem(this.isSmartDevToolActiveName) === 'true';\r\n let hoursToSaveString = localStorage.getItem(this.smartDevToolHoursName);\r\n if (hoursToSaveString) {\r\n this.hoursToSave = Number.parseInt(hoursToSaveString);\r\n }\r\n let maxNumOfSavedCalls = localStorage.getItem(this.smartDevToolMaxName);\r\n if (maxNumOfSavedCalls) {\r\n this.maxNumOfSavedCalls = Number.parseInt(maxNumOfSavedCalls);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n private setUpLocalStorage(): void {\r\n let keysOfLocalStorage = Object.keys(localStorage);\r\n if (!keysOfLocalStorage.includes(this.isSmartDevToolActiveName)) {\r\n localStorage.setItem(this.isSmartDevToolActiveName, 'true');\r\n }\r\n }\r\n\r\n writeResponse(\r\n request: HttpRequest<any>,\r\n response: HttpResponse<any> | HttpErrorResponse,\r\n requestDate: Date,\r\n responseDate: Date\r\n ): void {\r\n this.sanitizeByLength();\r\n this.sanitizeByTime();\r\n\r\n let requestHeader: any = this.createObject(request.headers.keys(), request.headers, false);\r\n let responseHeader: any = this.createObject(response.headers.keys(), response.headers, false);\r\n\r\n let _localStorage: any = this.createObject(\r\n Object.keys(localStorage).filter((key: string) => key !== this.smartDevToolName),\r\n localStorage,\r\n true\r\n );\r\n let _sessionStorage: any = this.createObject(Object.keys(sessionStorage), sessionStorage, true);\r\n let _cookies: any = this.cookieService.getAll();\r\n\r\n this.descriptor!.apiCalls = [\r\n {\r\n url: response.url,\r\n requestBody: request.body,\r\n requestHeader,\r\n requestDate,\r\n requestMethod: request.method,\r\n responseBody: (response as HttpResponse<any>).body ?? null,\r\n responseHeader,\r\n responseStatus: response.status,\r\n responseStatusText: response.statusText,\r\n responseDate,\r\n localStorage: _localStorage,\r\n sessionStorage: _sessionStorage,\r\n cookies: _cookies,\r\n },\r\n ...this.descriptor!.apiCalls,\r\n ];\r\n\r\n if (response.status !== 200) {\r\n this.newErrorsCount++;\r\n this.newErrorsCountChanged.next();\r\n }\r\n\r\n this.save();\r\n }\r\n\r\n clearErrors(): void {\r\n this.newErrorsCount = 0;\r\n this.newErrorsCountChanged.next();\r\n }\r\n\r\n createObject(keys: string[], mapWithValues: any, useGetItem: boolean): any {\r\n let newObject: any = {};\r\n keys.forEach((key: string) => {\r\n if (useGetItem) {\r\n newObject[key] = mapWithValues.getItem(key);\r\n } else {\r\n newObject[key] = mapWithValues.get(key);\r\n }\r\n });\r\n return newObject;\r\n }\r\n\r\n sanitizeByTime(): void {\r\n let now: Date = new Date();\r\n this.descriptor!.apiCalls = this.descriptor!.apiCalls.filter(\r\n (apiCall: SmartDevToolApiCallDescriptor) => {\r\n let hoursBetween: number;\r\n if (typeof apiCall.requestDate === 'string') {\r\n hoursBetween = Math.floor(\r\n Math.abs(now.getMilliseconds() - new Date(apiCall.requestDate).getMilliseconds()) / 36e5\r\n );\r\n } else {\r\n hoursBetween = Math.floor(\r\n Math.abs(now.getMilliseconds() - apiCall.requestDate.getMilliseconds()) / 36e5\r\n );\r\n }\r\n\r\n return hoursBetween < this.hoursToSave;\r\n }\r\n );\r\n }\r\n\r\n sanitizeByLength(): void {\r\n if (this.descriptor?.apiCalls && this.descriptor.apiCalls.length > this.maxNumOfSavedCalls) {\r\n let length = this.descriptor.apiCalls.length;\r\n this.descriptor.apiCalls.splice(\r\n this.maxNumOfSavedCalls - 1,\r\n length - this.maxNumOfSavedCalls\r\n );\r\n }\r\n }\r\n\r\n save(): void {\r\n try {\r\n localStorage.setItem(this.smartDevToolName, JSON.stringify(this.descriptor));\r\n this.descriptorChanged.next();\r\n } catch (error: any) {\r\n // localStorage.setItem() throws a \"QuotaExceededError\" DOMException exception if the new value\r\n // couldn't be set. (Setting could fail if, e.g., the user has disabled storage for the site,\r\n // or if the quota has been exceeded.)\r\n this.sanitizeByLength();\r\n this.save();\r\n }\r\n }\r\n\r\n clear(): void {\r\n this.descriptor = {\r\n apiCalls: [],\r\n };\r\n this.save();\r\n }\r\n\r\n getPureString(): string {\r\n return localStorage.getItem(this.smartDevToolName)!;\r\n }\r\n}\r\n\r\nexport interface SmartDevToolDescriptor {\r\n apiCalls: SmartDevToolApiCallDescriptor[];\r\n}\r\n\r\nexport interface SmartDevToolApiCallDescriptor {\r\n url: string | null;\r\n responseBody: any;\r\n responseHeader: any;\r\n responseStatus: number;\r\n responseStatusText: string;\r\n responseDate: Date;\r\n requestHeader: any;\r\n requestBody: any;\r\n requestDate: Date;\r\n requestMethod: string;\r\n localStorage: any;\r\n sessionStorage: any;\r\n cookies: any;\r\n}\r\n\r\n@Pipe({\r\n name: 'smartDevToolDatePipe',\r\n})\r\nexport class SmartDevToolDatePipe extends DatePipe implements PipeTransform {\r\n override transform(value: any, format: string = 'yyyy.MM.dd. H:mm:ss'): any {\r\n return super.transform(value, format);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { SmartDialogData, SmartdialogService } from '@smartbit4all/dialog';\r\nimport { Subject } from 'rxjs';\r\nimport { SmartDevToolDescriptor, SmartDevToolService } from '../smart-dev-tool.service';\r\nimport { SmartDevToolDialogComponent } from './smart-dev-tool-dialog.component';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SmartDevToolDialogService extends SmartdialogService {\r\n\tupdate: Subject<void>;\r\n\r\n\tconstructor(dialog: MatDialog, router: Router, public service: SmartDevToolService) {\r\n\t\tsuper(dialog, router);\r\n\t\tthis.update = this.service.descriptorChanged;\r\n\t}\r\n\r\n\toverride handleAfterClosed(result: any): void {}\r\n\r\n\toverride openDialog(): void {\r\n\t\tconst dialogData: SmartDialogData = {\r\n\t\t\tcontent: {\r\n\t\t\t\ttitle: ''\r\n\t\t\t},\r\n\t\t\tsize: {},\r\n\t\t\tcustomComponent: SmartDevToolDialogComponent\r\n\t\t};\r\n\t\tthis.createDialog(dialogData, SmartDevToolDialogComponent);\r\n\t}\r\n\r\n\tgetData(): SmartDevToolDescriptor {\r\n\t\treturn this.service.descriptor!;\r\n\t}\r\n\r\n\tgetPureString(): string {\r\n\t\treturn this.service.getPureString();\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis.service.clear();\r\n\t}\r\n}\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartDevToolDescriptor } from '../smart-dev-tool.service';\r\nimport { SmartDevToolDialogService } from './smart-dev-tool-dialog.service';\r\n\r\n@Component({\r\n selector: 'app-smart-dev-tool-dialog',\r\n templateUrl: './smart-dev-tool-dialog.component.html',\r\n styleUrls: ['./smart-dev-tool-dialog.component.css'],\r\n})\r\nexport class SmartDevToolDialogComponent implements OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n descriptor?: SmartDevToolDescriptor;\r\n\r\n constructor(private service: SmartDevToolDialogService) {\r\n this.descriptor = this.service.getData();\r\n this.service.update.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n this.descriptor = this.service.getData();\r\n });\r\n this.service.service.clearErrors();\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n }\r\n\r\n clear(): void {\r\n this.service.clear();\r\n }\r\n\r\n getBody(inp: any) {\r\n return this.syntaxHighlight(inp);\r\n }\r\n\r\n syntaxHighlight(json: any) {\r\n if (typeof json != 'string') {\r\n json = JSON.stringify(json, undefined, 2);\r\n }\r\n json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\r\n return json.replace(\r\n /(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g,\r\n function (match: any) {\r\n var cls = 'number';\r\n if (/^\"/.test(match)) {\r\n if (/:$/.test(match)) {\r\n cls = 'key';\r\n } else {\r\n cls = 'string';\r\n }\r\n } else if (/true|false/.test(match)) {\r\n cls = 'boolean';\r\n } else if (/null/.test(match)) {\r\n cls = 'null';\r\n }\r\n return '<span class=\"' + cls + '\">' + match + '</span>';\r\n }\r\n );\r\n }\r\n\r\n copy(): void {\r\n copyToClipboard({\r\n value: this.service.getPureString(),\r\n });\r\n }\r\n\r\n close(): void {\r\n this.service.closeDialog();\r\n }\r\n}\r\n\r\ninterface ICopyToClipboard {\r\n /** HTML reference identifier ```<div id=\"foo\"></div>``` */\r\n target?: string;\r\n /** String value */\r\n value?: string;\r\n /** (Optional) message to display in snackbar on success */\r\n message?: string;\r\n}\r\n\r\nexport const copyToClipboard = async ({ target, message, value }: ICopyToClipboard) => {\r\n try {\r\n let copyValue = '';\r\n\r\n if (!navigator.clipboard) {\r\n throw new Error(\"Browser don't have support for native clipboard.\");\r\n }\r\n\r\n if (target) {\r\n const node = document.querySelector(target);\r\n\r\n if (!node || !node.textContent) {\r\n throw new Error('Element not found');\r\n }\r\n\r\n value = node.textContent;\r\n }\r\n\r\n if (value) {\r\n copyValue = value;\r\n }\r\n\r\n await navigator.clipboard.writeText(copyValue);\r\n } catch (error: any) {\r\n console.error(error.toString());\r\n }\r\n};\r\n","<div class=\"smartDevToolDialogContainer\">\r\n <div class=\"header\">\r\n <h2>Developer tool</h2>\r\n <button mat-icon-button title=\"close\" (click)=\"close()\">\r\n <smart-icon icon=\"close\"></smart-icon>\r\n </button>\r\n </div>\r\n <div class=\"requestsContainer\">\r\n <mat-accordion multi>\r\n <mat-expansion-panel\r\n class=\"requestCard\"\r\n [ngClass]=\"apiCall.responseStatus === 200 ? '' : 'hasError'\"\r\n *ngFor=\"let apiCall of descriptor?.apiCalls; let i = index\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <div class=\"titlePanel\">\r\n <span class=\"date\">\r\n {{ apiCall.responseDate | smartDevToolDatePipe }}\r\n </span>\r\n <span class=\"urlText\">\r\n {{ apiCall.url }}\r\n </span>\r\n <div [ngClass]=\"apiCall.requestMethod\">\r\n {{ apiCall.requestMethod }}\r\n </div>\r\n <div [ngClass]=\"'statusCode-' + apiCall.responseStatus.toString()[0]\">\r\n {{ apiCall.responseStatus }}\r\n </div>\r\n </div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div>\r\n <div class=\"table\">\r\n <div class=\"row\">\r\n <div class=\"mainCol heading\">Request</div>\r\n <div class=\"mainCol heading\">Response</div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Date</div>\r\n <div class=\"data\">\r\n {{ apiCall.requestDate | smartDevToolDatePipe }}\r\n </div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Date</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseDate | smartDevToolDatePipe }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Headers</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Headers</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.requestHeader\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.requestHeader)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.requestHeader\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.responseHeader\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.responseHeader)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.responseHeader\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\"></div>\r\n <div class=\"data\"></div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Status</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseStatus }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\"></div>\r\n <div class=\"data\"></div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Status text</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseStatusText }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Body</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Body</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.requestBody\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.requestBody)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.requestBody\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.responseBody\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.responseBody)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.responseBody\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Session Storage</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Local Storage</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Cookies</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.sessionStorage\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.sessionStorage)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.sessionStorage\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.localStorage\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.localStorage)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.localStorage\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.cookies\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.cookies)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.cookies\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n <div class=\"buttonsContainer\">\r\n <button color=\"primary\" mat-raised-button (click)=\"copy()\">Copy</button>\r\n <button color=\"warn\" mat-raised-button (click)=\"clear()\">Clear</button>\r\n </div>\r\n</div>\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartDevToolDialogService } from '../smart-dev-tool-dialog/smart-dev-tool-dialog.service';\r\n\r\n@Component({\r\n selector: 'smart-session-dev-tool',\r\n templateUrl: './smart-dev-tool-floating-button.component.html',\r\n styleUrls: ['./smart-dev-tool-floating-button.component.css'],\r\n})\r\nexport class SmartDevToolFloatingButtonComponent implements OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n adminKeyName: string = 'useDevTool';\r\n isShown: boolean = false;\r\n\r\n errorsCount: string = '';\r\n\r\n constructor(private service: SmartDevToolDialogService) {\r\n this.service.service.newErrorsCountChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n this.errorsCount = `${\r\n this.service.service.newErrorsCount > 0 ? this.service.service.newErrorsCount : ''\r\n }`;\r\n });\r\n\r\n window.addEventListener('storage', (event) => {\r\n if (event.storageArea === localStorage) {\r\n if (Object.keys(localStorage).includes(this.adminKeyName)) {\r\n this.isShown = localStorage.getItem(this.adminKeyName) === 'true';\r\n }\r\n }\r\n });\r\n\r\n this.isShown = localStorage.getItem(this.adminKeyName) === 'true';\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n }\r\n\r\n openDevToolDialog(): void {\r\n this.service.openDialog();\r\n }\r\n}\r\n","<button\r\n *ngIf=\"isShown\"\r\n mat-fab\r\n [color]=\"errorsCount.length ? 'warn' : 'accent'\"\r\n class=\"floatingButton\"\r\n extended\r\n title=\"devTool\"\r\n (click)=\"openDevToolDialog()\"\r\n>\r\n <smart-icon color=\"white\" icon=\"developer_mode\"></smart-icon>\r\n {{ errorsCount }}\r\n</button>\r\n","import {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpEventType,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n} from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { catchError, map, Observable, throwError } from \"rxjs\";\r\nimport { SmartDevToolService } from \"./smart-dev-tool.service\";\r\n\r\n@Injectable()\r\nexport class SmartDevToolInterceptor implements HttpInterceptor {\r\n constructor(private service: SmartDevToolService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n if (!this.service.isActive) {\r\n return next.handle(request);\r\n }\r\n let requestDate = new Date();\r\n return next.handle(request).pipe(\r\n map((event: HttpEvent<any>) => {\r\n if (event.type === HttpEventType.Response) {\r\n let responseDate = new Date();\r\n this.service.writeResponse(request, event, requestDate, responseDate);\r\n }\r\n\r\n return event;\r\n })\r\n );\r\n }\r\n}\r\n@Injectable()\r\nexport class SmartDevToolErrorInterceptor implements HttpInterceptor {\r\n constructor(private service: SmartDevToolService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n if (!this.service.isActive) {\r\n return next.handle(request);\r\n }\r\n let requestDate = new Date();\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (error.status !== 200) {\r\n let responseDate = new Date();\r\n this.service.writeResponse(request, error, requestDate, responseDate);\r\n }\r\n\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n}\r\n","export interface SmartSessionHandlerService {\r\n handleSessionError(sessionError: SessionError): Promise<void>;\r\n}\r\n\r\nexport interface SessionError {\r\n code: string;\r\n behaviour: SessionErrorBehaviour;\r\n}\r\n\r\nexport enum SessionErrorBehaviour {\r\n REFRESH,\r\n RESTART,\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartSessionService } from '../smart-session.service';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartSessionTimerService implements OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n totalTimeInMinutes: number = 30;\r\n timeLeftInSeconds?: number;\r\n\r\n readonly sessionExpiration: string = 'sessionExpiracy';\r\n\r\n timeChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n onTimerExpired: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n timer: any;\r\n\r\n constructor(private session: SmartSessionService) {\r\n this.session.sessionExpiracyChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n this.restart();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n startTimer(): void {\r\n let sessionInfoData = this.session.sessionInfoData;\r\n let expiration = new Date(sessionInfoData!.expiration!);\r\n let now = new Date();\r\n\r\n this.timeLeftInSeconds = Math.floor((expiration.getTime() - now.getTime()) / 1000);\r\n this.timer = setInterval(() => {\r\n this.timeLeftInSeconds!--;\r\n if (this.timeLeftInSeconds === 0) {\r\n this.timeout();\r\n }\r\n this.timeChanged.next();\r\n }, 1000);\r\n }\r\n\r\n restart(): void {\r\n clearInterval(this.timer);\r\n\r\n this.startTimer();\r\n }\r\n\r\n timeout(): void {\r\n clearInterval(this.timer);\r\n\r\n this.onTimerExpired.next();\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\n\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartSessionTimerService } from './smart-session-timer.service';\r\n\r\n@Component({\r\n selector: 'smart-session-timer',\r\n templateUrl: './smart-session-timer.component.html',\r\n styleUrls: ['./smart-session-timer.component.css'],\r\n providers: [SmartSessionTimerService],\r\n})\r\nexport class SmartSessionTimerComponent implements OnInit, OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n timeInSeconds?: number;\r\n\r\n constructor(public service: SmartSessionTimerService) {}\r\n\r\n ngOnInit(): void {\r\n this.service.startTimer();\r\n this.timeInSeconds = this.service.timeLeftInSeconds;\r\n\r\n this.service.timeChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n this.timeInSeconds = this.service.timeLeftInSeconds;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n formatTime(seconds: number): string {\r\n let minutes: number = Math.floor(seconds / 60);\r\n let remainingSeconds: number = seconds % 60;\r\n return `${minutes}:${remainingSeconds < 10 ? '0' : ''}${remainingSeconds}`;\r\n }\r\n}\r\n","<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\" *ngIf=\"timeInSeconds\">\r\n {{ formatTime(timeInSeconds!) }}\r\n </span>\r\n</div>\r\n","/*\r\n * Public API Surface of smart-session\r\n */\r\n\r\nexport * from \"./smart-session.service\";\r\nexport * from \"./api/index\";\r\nexport * from \"./smart-session.module\";\r\nexport * from \"./dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component\";\r\nexport * from \"./dev-tool/smart-dev-tool.service\";\r\nexport * from \"./smart-session-handler.service\";\r\nexport * from \"./smart-timer/smart-session-timer.component\";\r\nexport * from \"./smart-timer/smart-session-timer.service\";\r\n","import {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n} from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { from, Observable, throwError } from \"rxjs\";\r\nimport { catchError, switchMap } from \"rxjs/operators\";\r\nimport {\r\n ApiError,\r\n HeaderParam,\r\n SessionError,\r\n SessionErrorBehaviour,\r\n SmartSessionService,\r\n} from \"./projects\";\r\n\r\n@Injectable()\r\nexport class SmartErrorCatchingInterceptor implements HttpInterceptor {\r\n sessionErrorCodes: SessionError[] = [\r\n {\r\n code: \"session.expired\",\r\n behaviour: SessionErrorBehaviour.REFRESH,\r\n },\r\n {\r\n code: \"session.refreshtoken.invalid\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n {\r\n code: \"session.badrequest.missingtoken\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n {\r\n code: \"session.security.nocontext\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n {\r\n code: \"session.invalidsessionuri\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n {\r\n code: \"session.notinitialized\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n {\r\n code: \"session.viewcontext.missing\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n ];\r\n\r\n constructor(private session: SmartSessionService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (error.status === 400 && (error.error as ApiError).code) {\r\n let sessionError = this.sessionErrorCodes.find(\r\n (sessionError: SessionError) =>\r\n sessionError.code === (error.error as ApiError).code\r\n );\r\n if (sessionError) {\r\n return this.resolveError(sessionError).pipe(\r\n switchMap(() => {\r\n this.session.headerParams.map((headerParam: HeaderParam) => {\r\n request = request.clone({\r\n headers: request.headers.set(\r\n headerParam.headerName,\r\n headerParam.value\r\n ),\r\n });\r\n });\r\n return next.handle(request);\r\n })\r\n );\r\n }\r\n }\r\n\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n resolveError(sessionError: SessionError): Observable<any> {\r\n if (sessionError.behaviour === SessionErrorBehaviour.RESTART) {\r\n return from(this.session.handleSessionError(sessionError));\r\n }\r\n return from(this.session.refreshSession());\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { SmartSessionService } from './smart-session.service';\r\n\r\n@Injectable()\r\nexport class SmartHeaderMaintainerInterceptor implements HttpInterceptor {\r\n constructor(private session: SmartSessionService) {}\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n // new request data\r\n let url = request.urlWithParams.replace('http://localhost', this.session.getBasePath());\r\n // TODO fix me\r\n if (request.urlWithParams.includes('/kerb/sso')) {\r\n request = request.clone({\r\n url: url,\r\n });\r\n\r\n return next.handle(request);\r\n }\r\n\r\n let headers: { [name: string]: string | string[] } = {};\r\n\r\n // copy current headers\r\n request.headers.keys().map((key) => {\r\n let value = request.headers.getAll(key);\r\n if (value) {\r\n headers[key] = value;\r\n }\r\n });\r\n\r\n // add own headers\r\n const hasHeaders = this.session.headerParams && this.session.headerParams.length;\r\n if (hasHeaders) {\r\n this.session.headerParams.map((headerParam) => {\r\n headers[headerParam.headerName] = headerParam.value;\r\n });\r\n }\r\n\r\n // create new request (necessary to rewrite url)\r\n request = request.clone({\r\n url: url,\r\n setHeaders: headers,\r\n });\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","import { HTTP_INTERCEPTORS } from \"@angular/common/http\";\r\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from \"@angular/core\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCommonModule } from \"@angular/material/core\";\r\nimport { MatExpansionModule } from \"@angular/material/expansion\";\r\nimport { BrowserModule } from \"@angular/platform-browser\";\r\nimport { SmartdialogModule } from \"@smartbit4all/dialog\";\r\nimport { SmartIconModule } from \"@smartbit4all/icon\";\r\nimport { SmartCookieService } from \"./cookie-service/smart-cookie.service\";\r\nimport { SmartDevToolDialogComponent } from \"./dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component\";\r\nimport { SmartDevToolFloatingButtonComponent } from \"./dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component\";\r\nimport {\r\n SmartDevToolInterceptor,\r\n SmartDevToolErrorInterceptor,\r\n} from \"./dev-tool/smart-dev-tool.interceptor\";\r\nimport { SmartDevToolDatePipe } from \"./dev-tool/smart-dev-tool.service\";\r\nimport { SmartErrorCatchingInterceptor } from \"./smart-error-catching.interceptor\";\r\nimport { SmartHeaderMaintainerInterceptor } from \"./smart-header-maintainer.interceptor\";\r\nimport { SmartSessionService } from \"./smart-session.service\";\r\nimport { SmartSessionTimerComponent } from \"./smart-timer/smart-session-timer.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n SmartDevToolDialogComponent,\r\n SmartDevToolFloatingButtonComponent,\r\n SmartDevToolDatePipe,\r\n SmartSessionTimerComponent,\r\n ],\r\n imports: [BrowserModule, MatCommonModule, MatExpansionModule, MatButtonModule, SmartIconModule],\r\n exports: [SmartDevToolFloatingButtonComponent, SmartSessionTimerComponent],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [\r\n SmartCookieService,\r\n SmartSessionService,\r\n SmartdialogModule,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: SmartErrorCatchingInterceptor,\r\n multi: true,\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: SmartHeaderMaintainerInterceptor,\r\n multi: true,\r\n },\r\n { provide: HTTP_INTERCEPTORS, useClass: SmartDevToolInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: SmartDevToolErrorInterceptor, multi: true },\r\n ],\r\n})\r\nexport class SmartSessionModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { SmartDialogData, SmartdialogService } from '@smartbit4all/dialog';\r\n\r\nimport { ViewApiError } from '../api';\r\nimport { SmartViewContextApiError } from '../smart-view-context.model';\r\nimport {\r\n SmartViewContextErrorDialogButtonLabel,\r\n SmartViewContextErrorDialogMessage,\r\n SmartViewContextErrorDialogTitle,\r\n SmartViewContextService,\r\n} from '../smart-view-context.service';\r\nimport { SmartViewContextErrorDialogComponent } from './smart-view-context-error-dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartViewContextErrorDialogService extends SmartdialogService {\r\n viewApiError?: ViewApiError;\r\n\r\n dialogRefs: MatDialogRef<any, any>[] = [];\r\n\r\n constructor(dialog: MatDialog, router: Router, private viewContext: SmartViewContextService) {\r\n super(dialog, router);\r\n }\r\n\r\n override handleAfterClosed(result: any): void {}\r\n\r\n override openDialog(): void {\r\n const dialogData: SmartDialogData = {\r\n content: {\r\n title: '',\r\n },\r\n size: {},\r\n customComponent: SmartViewContextErrorDialogComponent,\r\n };\r\n this.dialogRefs.push(this.createDialogRef(dialogData, SmartViewContextErrorDialogComponent));\r\n }\r\n\r\n override async closeDialog(): Promise<void> {\r\n let dialogRef = this.dialogRefs.pop();\r\n dialogRef?.close();\r\n }\r\n\r\n async getSmartViewContextApiError(): Promise<SmartViewContextApiError> {\r\n if (this.viewApiError?.code) {\r\n return await this.viewContext.getSmartViewContextApiErrorByCode(this.viewApiError.code);\r\n }\r\n\r\n let dialogTitle;\r\n let buttonLabel;\r\n let message;\r\n\r\n if (this.viewContext.translateService) {\r\n dialogTitle = await this.viewContext.translateService\r\n .get(SmartViewContextErrorDialogTitle)\r\n .toPromise();\r\n buttonLabel = await this.viewContext.translateService\r\n .get(SmartViewContextErrorDialogButtonLabel)\r\n .toPromise();\r\n message = await this.viewContext.translateService\r\n .get(SmartViewContextErrorDialogMessage)\r\n .toPromise();\r\n } else {\r\n buttonLabel = 'Ok';\r\n dialogTitle = 'Hiba';\r\n message = 'An error has occured.';\r\n }\r\n\r\n return {\r\n code: this.viewApiError?.code ?? '',\r\n message: this.viewApiError?.message ?? message,\r\n buttonLabel,\r\n dialogTitle,\r\n };\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SmartViewContextApiError } from '../smart-view-context.model';\r\nimport { SmartViewContextErrorDialogService } from './smart-view-context-error-dialog.service';\r\n\r\n@Component({\r\n selector: 'lib-smart-view-context-error-dialog',\r\n templateUrl: './smart-view-context-error-dialog.component.html',\r\n styleUrls: ['./smart-view-context-error-dialog.component.css'],\r\n})\r\nexport class SmartViewContextErrorDialogComponent implements OnInit {\r\n smartViewContextApiError?: SmartViewContextApiError;\r\n\r\n constructor(private service: SmartViewContextErrorDialogService) {\r\n this.service\r\n .getSmartViewContextApiError()\r\n .then((smartViewContextApiError: SmartViewContextApiError) => {\r\n this.smartViewContextApiError = smartViewContextApiError;\r\n });\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n onActionClick(): void {\r\n if (this.smartViewContextApiError?.customAction) {\r\n this.smartViewContextApiError.customAction();\r\n }\r\n this.service.closeDialog();\r\n }\r\n}\r\n","<div *ngIf=\"smartViewContextApiError\" class=\"container\">\r\n <h3 class=\"color-accent-700\">\r\n {{ smartViewContextApiError.dialogTitle }}\r\n </h3>\r\n <div class=\"content\">\r\n <p>\r\n {{ smartViewContextApiError.message }}\r\n </p>\r\n </div>\r\n <div class=\"buttonContainer\">\r\n <button mat-raised-button color=\"primary\" (click)=\"onActionClick()\">\r\n {{ smartViewContextApiError.buttonLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n","import {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError, Observable, throwError } from 'rxjs';\r\nimport { UiActionRequest, ViewApiError } from './api';\r\nimport { SmartViewContextErrorDialogService } from './smart-view-context-error-dialog/smart-view-context-error-dialog.service';\r\nimport { IS_ASYNC_PARAM_NAME } from './smart-view-context.service';\r\n\r\n@Injectable()\r\nexport class SmartViewContextInterceptor implements HttpInterceptor {\r\n constructor(private viewContextErrorDialog: SmartViewContextErrorDialogService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n // parameter: async: True -> don't throw/open error (dialog)\r\n if (request.body) {\r\n try {\r\n let body: UiActionRequest = request.body as UiActionRequest;\r\n if (body.params[IS_ASYNC_PARAM_NAME]) {\r\n return next.handle(request);\r\n }\r\n } catch (error) {}\r\n }\r\n\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (\r\n error.status === 409 &&\r\n ((error.error as ViewApiError).code || (error.error as ViewApiError).message)\r\n ) {\r\n this.openErrorDialog(error.error);\r\n }\r\n\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n openErrorDialog(viewApiError: ViewApiError): void {\r\n this.viewContextErrorDialog.viewApiError = viewApiError;\r\n this.viewContextErrorDialog.openDialog();\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { SmartNavigationService } from \"@smartbit4all/navigation\";\r\nimport { SmartViewContextService } from \"../smart-view-context.service\";\r\n\r\n@Component({\r\n selector: \"app-redirect\",\r\n template: \"<div>Smart redirect</div>\",\r\n})\r\nexport class SmartViewRedirect {\r\n constructor(\r\n private service: SmartViewContextService,\r\n private navigation: SmartNavigationService,\r\n private route: ActivatedRoute\r\n ) {\r\n this.navigation.route = this.route;\r\n this.navigation.subscribeToUrlChange((url: string) => {\r\n let channel = this.route.snapshot.paramMap.get(SmartLinkChannelVariableInPath);\r\n let uuid = this.route.snapshot.paramMap.get(SmartLinkUuidVariableInPath);\r\n\r\n if (!channel || !uuid) {\r\n throw new Error(\"channel or uuid is not reachable from the url!\");\r\n }\r\n this.service.showPublishedView(channel, uuid);\r\n });\r\n }\r\n}\r\n\r\nexport const SmartLinkChannelVariableInPath: string = \"channel\";\r\nexport const SmartLinkUuidVariableInPath: string = \"uuid\";\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport {\r\n UiAction,\r\n UiActionButtonIconPos,\r\n UiActionButtonType,\r\n UiActionDescriptor,\r\n UiActionFeedbackType,\r\n} from '../api';\r\nimport { SmartViewContextService } from '../smart-view-context.service';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiActionDescriptorService implements OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n languageChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n keysToTranslate: string[] = ['title', 'text', 'placeholder', 'caption', 'feedbackText'];\r\n\r\n constructor(private viewContext: SmartViewContextService) {\r\n if (this.viewContext.translateService) {\r\n this.subscribeToTranslateService();\r\n } else {\r\n this.viewContext.translateServiceChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n this.subscribeToTranslateService();\r\n });\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n private subscribeToTranslateService(): void {\r\n this.viewContext\r\n .translateService!.onLangChange.pipe(takeUntil(this._destroy$))\r\n .subscribe(() => {\r\n this.languageChanged.next();\r\n });\r\n }\r\n\r\n public async getActionDescriptor(uiAction: UiAction): Promise<UiActionDescriptor> {\r\n let code = uiAction.code!;\r\n let actionDescriptorFromDescriptors = this.viewContext.getActionDescriptors()?.get(code);\r\n let isUnkown = false;\r\n\r\n let actionDescriptor: UiActionDescriptor | undefined | null;\r\n if (actionDescriptorFromDescriptors) {\r\n actionDescriptor = JSON.parse(JSON.stringify(actionDescriptorFromDescriptors));\r\n }\r\n\r\n if (!actionDescriptor) {\r\n isUnkown = true;\r\n let unkownActionDescriptor = this.basicActionDescriptors.get('UNKOWN');\r\n actionDescriptor = { ...unkownActionDescriptor! };\r\n actionDescriptor!.title = code;\r\n }\r\n\r\n if (!actionDescriptor!.dialog) {\r\n actionDescriptor = this.setUpUnkownDialogDescriptor(code, actionDescriptor!, 'dialog');\r\n }\r\n\r\n if (!actionDescriptor!.feedbackType && uiAction.submit) {\r\n actionDescriptor!.feedbackType = UiActionFeedbackType.Snackbar;\r\n }\r\n\r\n if (this.viewContext.translateService && actionDescriptor && !isUnkown) {\r\n actionDescriptor = await this.translateUiActionDescriptor(actionDescriptor);\r\n }\r\n\r\n return actionDescriptor!;\r\n }\r\n\r\n private async translateUiActionDescriptor(\r\n uiActionDescriptor: UiActionDescriptor\r\n ): Promise<UiActionDescriptor> {\r\n uiActionDescriptor = await this.deepTranslate(uiActionDescriptor);\r\n\r\n return uiActionDescriptor;\r\n }\r\n\r\n private async deepTranslate(_model: any): Promise<any> {\r\n let model = { ..._model };\r\n await Promise.all(\r\n Object.keys(model).map(async (key: string) => {\r\n if (\r\n model[key] !== undefined &&\r\n typeof model[key] === 'string' &&\r\n model[key].length &&\r\n this.keysToTranslate.includes(key)\r\n ) {\r\n model[key] = await this.viewContext.translateService!.get(model[key]).toPromise();\r\n } else if (model[key] !== undefined && typeof model[key] === 'object') {\r\n model[key] = await this.deepTranslate(model[key]);\r\n }\r\n return model;\r\n })\r\n );\r\n\r\n return model;\r\n }\r\n\r\n private setUpUnkownDialogDescriptor(\r\n code: string,\r\n uiActionDescriptor: UiActionDescriptor,\r\n dialogType: 'dialog' | 'confirmDialog' | 'inputDialog' | 'input2Dialog'\r\n ): UiActionDescriptor {\r\n let unkownDescriptor = this.basicActionDescriptors.get('UNKOWN');\r\n\r\n uiActionDescriptor[dialogType] = unkownDescriptor!.dialog;\r\n uiActionDescriptor[dialogType]!.title = code;\r\n uiActionDescriptor[dialogType]!.actionButton.caption = code;\r\n\r\n return uiActionDescriptor;\r\n }\r\n\r\n private basicActionDescriptors: Map<string, UiActionDescriptor> = new Map([\r\n [\r\n 'UNKOWN',\r\n {\r\n title: '',\r\n type: UiActionButtonType.Normal,\r\n color: 'accent',\r\n icon: 'Question',\r\n iconColor: `text-primary`,\r\n iconPosition: UiActionButtonIconPos.Post,\r\n dialog: {\r\n title: '',\r\n placeholder: 'placeholder',\r\n actionButton: {\r\n caption: '',\r\n color: 'accent',\r\n },\r\n cancelButton: {\r\n caption: 'Mégse',\r\n color: '',\r\n },\r\n },\r\n },\r\n ],\r\n ]);\r\n}\r\n","import { Component, Inject } from \"@angular/core\";\r\nimport { MAT_SNACK_BAR_DATA } from \"@angular/material/snack-bar\";\r\nimport { UiAction } from \"../../../api\";\r\n\r\nimport { SmartViewContextService } from \"../../../smart-view-context.service\";\r\nimport { UiActionDescriptorService } from \"../../ui-action.descriptor.service\";\r\n\r\n@Component({\r\n selector: \"app-success-snack-bar\",\r\n templateUrl: \"./success-snack-bar.component.html\",\r\n styleUrls: [\"./success-snack-bar.component.css\"],\r\n})\r\nexport class SuccessSnackBarComponent {\r\n text?: string;\r\n\r\n constructor(\r\n @Inject(MAT_SNACK_BAR_DATA) public data: UiAction,\r\n private viewContext: SmartViewContextService,\r\n private manager: UiActionDescriptorService\r\n ) {\r\n this.manager.getActionDescriptor(data).then((descriptor) => {\r\n if (descriptor.feedbackText) {\r\n this.text = descriptor.feedbackText;\r\n } else {\r\n this.text = this.viewContext.commonFeedbackText ?? \"A mentés sikeres volt!\";\r\n }\r\n });\r\n }\r\n}\r\n","<span class=\"successSnakBarContainer\" matSnackBarLabel> {{ text }} </span>\r\n","import { Component, OnDestroy } from \"@angular/core\";\r\nimport { UiActionDescriptor } from \"../../../api\";\r\nimport { UiActionDescriptorService } from \"../../ui-action.descriptor.service\";\r\nimport { UiActionConfirmDialogService } from \"./ui-action-confirm-dialog.service\";\r\n\r\n@Component({\r\n selector: \"app-ui-action-confirm-dialog\",\r\n templateUrl: \"./ui-action-confirm-dialog.component.html\",\r\n styleUrls: [\"./ui-action-confirm-dialog.component.css\"],\r\n})\r\nexport class UiActionConfirmDialogComponent implements OnDestroy {\r\n code!: string;\r\n dialogType!: \"dialog\" | \"confirmDialog\" | \"inputDialog\";\r\n\r\n descriptor?: UiActionDescriptor;\r\n\r\n constructor(\r\n private service: UiActionConfirmDialogService,\r\n private manager: UiActionDescriptorService\r\n ) {\r\n this.code = this.service.action.code!;\r\n this.setUp();\r\n }\r\n\r\n async setUp(): Promise<void> {\r\n this.descriptor = await this.manager.getActionDescriptor(this.service.action);\r\n\r\n this.dialogType = this.descriptor.confirmDialog ? \"confirmDialog\" : \"dialog\";\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.service._destroy$.next();\r\n this.cancel();\r\n }\r\n\r\n getTitle(): string {\r\n return this.descriptor![this.dialogType]!.title;\r\n }\r\n getText(): string {\r\n return this.descriptor![this.dialogType]!.text ?? \"\";\r\n }\r\n getActionButtonLabel(): string {\r\n return this.descriptor![this.dialogType]!.actionButton.caption;\r\n }\r\n getActionButtonColor(): string {\r\n return this.descriptor![this.dialogType]!.actionButton.color;\r\n }\r\n getCancelButtonLabel(): string {\r\n return this.descriptor![this.dialogType]!.cancelButton.caption;\r\n }\r\n getCancelButtonColor(): string {\r\n return this.descriptor![this.dialogType]!.cancelButton.color;\r\n }\r\n\r\n doAction(): void {\r\n this.service.doAction();\r\n }\r\n\r\n cancel(): void {\r\n this.service.cancel();\r\n }\r\n}\r\n","<div class=\"folderNameDialogContainer\">\r\n\t<div class=\"headerContainer\">\r\n\t\t<h3 class=\"color-accent-700\">\r\n\t\t\t{{ getTitle() }}\r\n\t\t</h3>\r\n\t\t<button mat-icon-button title=\"close\" (click)=\"cancel()\">\r\n\t\t\t<smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\r\n\t\t</button>\r\n\t</div>\r\n\t<p>\r\n\t\t{{ getText() }}\r\n\t</p>\r\n\t<div class=\"folderNameDialogButtonsContainer\">\r\n\t\t<button mat-button color=\"accent\" [color]=\"getCancelButtonColor()\" (click)=\"cancel()\">\r\n\t\t\t{{ getCancelButtonLabel() }}\r\n\t\t</button>\r\n\t\t<button mat-raised-button [color]=\"getActionButtonColor()\" (click)=\"doAction()\">\r\n\t\t\t{{ getActionButtonLabel() }}\r\n\t\t</button>\r\n\t</div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { SmartDialogData, SmartdialogService } from '@smartbit4all/dialog';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { UiAction } from '../../../api';\r\nimport { UiActionConfirmDialogComponent } from './ui-action-confirm-dialog.component';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiActionConfirmDialogService extends SmartdialogService {\r\n _destroy$: Subject<void> = new Subject();\r\n\r\n action!: UiAction;\r\n\r\n onAction: Subject<void> = new SmartSubject(this._destroy$);\r\n shouldDoAction: boolean = false;\r\n\r\n constructor(dialog: MatDialog, router: Router) {\r\n super(dialog, router);\r\n }\r\n\r\n override openDialog(): void {\r\n this.shouldDoAction = false;\r\n this.onAction = new SmartSubject(this._destroy$);\r\n const dialogData: SmartDialogData = {\r\n content: {\r\n title: '',\r\n },\r\n size: {},\r\n customComponent: UiActionConfirmDialogComponent,\r\n };\r\n this.createDialog(dialogData, UiActionConfirmDialogComponent);\r\n }\r\n\r\n doAction(): void {\r\n this.shouldDoAction = true;\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n cancel(): void {\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n}\r\n","import { Component, OnDestroy, ViewChild } from '@angular/core';\r\nimport { Validators } from '@angular/forms';\r\nimport {\r\n\tSmartForm,\r\n\tSmartformComponent,\r\n\tSmartFormWidget,\r\n\tSmartFormWidgetDirection,\r\n\tSmartFormWidgetType,\r\n\tSmartValidatorName,\r\n} from '@smartbit4all/form';\r\nimport { UiActionDescriptor, UiActionInputType } from '../../../api';\r\n\r\nimport { UiActionDescriptorService } from '../../ui-action.descriptor.service';\r\n\r\nimport { UiActionInputDialogService } from './ui-action-input-dialog.service';\r\n\r\n@Component({\r\n\tselector: 'smart-ui-action-input-dialog',\r\n\ttemplateUrl: './ui-action-input-dialog.component.html',\r\n\tstyleUrls: ['./ui-action-input-dialog.component.css'],\r\n})\r\nexport class UiActionInputDialogComponent implements OnDestroy {\r\n\t@ViewChild('form') folderFormChild!: SmartformComponent;\r\n\tcode!: string;\r\n\tfolderForm!: SmartForm;\r\n\r\n\tdialogType!: 'dialog' | 'inputDialog' | 'input2Dialog';\r\n\r\n\tdescriptor?: UiActionDescriptor;\r\n\r\n\tconstructor(private service: UiActionInputDialogService, private manager: UiActionDescriptorService) {\r\n\t\tthis.code = this.service.action.code!;\r\n\t\tthis.setUp();\r\n\t}\r\n\tngOnDestroy(): void {\r\n\t\tthis.service._destroy$.next();\r\n\t\tthis.cancel();\r\n\t}\r\n\r\n\tasync setUp(): Promise<void> {\r\n\t\tthis.descriptor = await this.manager.getActionDescriptor(this.service.action);\r\n\r\n\t\tif (this.descriptor[this.service.inputTypeName]) {\r\n\t\t\tthis.dialogType = this.service.inputTypeName;\r\n\t\t} else {\r\n\t\t\tthis.dialogType = this.descriptor.inputDialog ? 'inputDialog' : 'dialog';\r\n\t\t}\r\n\r\n\t\tthis.constructForm();\r\n\t}\r\n\r\n\tgetTitle(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.title;\r\n\t}\r\n\tgetText(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.text ?? '';\r\n\t}\r\n\tgetActionButtonLabel(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.actionButton.caption;\r\n\t}\r\n\tgetActionButtonColor(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.actionButton.color;\r\n\t}\r\n\tgetCancelButtonLabel(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.cancelButton.caption;\r\n\t}\r\n\tgetCancelButtonColor(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.cancelButton.color;\r\n\t}\r\n\r\n\tconstructForm(): void {\r\n\t\tlet model: any = {};\r\n\t\tlet inputName: 'input' | 'input2';\r\n\r\n\t\tif (this.service.inputTypeName === 'inputDialog') {\r\n\t\t\tinputName = 'input';\r\n\t\t} else {\r\n\t\t\tinputName = 'input2';\r\n\t\t}\r\n\r\n\t\tif (this.service.nodeName) {\r\n\t\t\tmodel[inputName] = this.service.nodeName;\r\n\t\t} else {\r\n\t\t\tmodel[inputName] = '';\r\n\t\t}\r\n\t\tlet type: SmartFormWidgetType;\r\n\t\tlet inputType: 'inputType' | 'input2Type' = `${inputName}Type`;\r\n\r\n\t\tif (this.service.action[inputType] === UiActionInputType.Textfield) {\r\n\t\t\ttype = SmartFormWidgetType.TEXT_FIELD;\r\n\t\t} else {\r\n\t\t\ttype = SmartFormWidgetType.TEXT_BOX;\r\n\t\t}\r\n\r\n\t\tlet widgets: SmartFormWidget<any>[] = [\r\n\t\t\t{\r\n\t\t\t\tkey: inputName,\r\n\t\t\t\tlabel: '',\r\n\t\t\t\ttype,\r\n\t\t\t\tvalue: '',\r\n\t\t\t\tvalidators: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvalidator: Validators.required,\r\n\t\t\t\t\t\tname: SmartValidatorName.required,\r\n\t\t\t\t\t\terrorMessage: 'Ez a mező kötelező',\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t\tplaceholder: this.descriptor![this.dialogType]!.placeholder ?? '',\r\n\t\t\t\tshowLabel: true,\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\tif (widgets[0].type === SmartFormWidgetType.TEXT_FIELD && this.descriptor![this.dialogType]?.mask) {\r\n\t\t\twidgets[0].mask = this.descriptor![this.dialogType]?.mask;\r\n\t\t}\r\n\r\n\t\tthis.folderForm = {\r\n\t\t\tdirection: SmartFormWidgetDirection.COL,\r\n\t\t\tmodel,\r\n\t\t\twidgets,\r\n\t\t};\r\n\t}\r\n\r\n\tsave(): void {\r\n\t\tlet form = this.folderFormChild.submitForm();\r\n\t\tif ((form as SmartForm).invalidFields) {\r\n\t\t\tthrow new Error('The form is invalid!');\r\n\t\t}\r\n\t\tthis.service.onSave((form as SmartForm).model);\r\n\t}\r\n\r\n\tcancel(): void {\r\n\t\tthis.service.cancel();\r\n\t}\r\n}\r\n","<div class=\"folderNameDialogContainer\">\r\n\t<div class=\"headerContainer\">\r\n\t\t<h3 class=\"color-accent-700\">\r\n\t\t\t{{ getTitle() }}\r\n\t\t</h3>\r\n\t\t<button mat-icon-button title=\"close\" (click)=\"cancel()\">\r\n\t\t\t<smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\r\n\t\t</button>\r\n\t</div>\r\n\t<p>\r\n\t\t{{ getText() }}\r\n\t</p>\r\n\t<smartform #form [smartForm]=\"folderForm\"></smartform>\r\n\t<div class=\"folderNameDialogButtonsContainer\">\r\n\t\t<button mat-button color=\"accent\" [color]=\"getCancelButtonColor()\" (click)=\"cancel()\">\r\n\t\t\t{{ getCancelButtonLabel() }}\r\n\t\t</button>\r\n\t\t<button mat-raised-button [color]=\"getActionButtonColor()\" (click)=\"save()\">\r\n\t\t\t{{ getActionButtonLabel() }}\r\n\t\t</button>\r\n\t</div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { SmartDialogData, SmartdialogService } from '@smartbit4all/dialog';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { UiAction, UiActionRequest } from '../../../api';\r\nimport { UiActionInputDialogComponent } from './ui-action-input-dialog.component';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiActionInputDialogService extends SmartdialogService {\r\n _destroy$: Subject<void> = new Subject();\r\n\r\n inputTypeName!: 'inputDialog' | 'input2Dialog';\r\n action!: UiAction;\r\n nodeName?: string;\r\n\r\n onAction: Subject<EditFolderAction> = new SmartSubject(this._destroy$);\r\n params?: any;\r\n\r\n constructor(dialog: MatDialog, router: Router) {\r\n super(dialog, router);\r\n }\r\n\r\n setDataAndOpenDialog(action: UiAction, nodeName?: string): void {\r\n this.action = action;\r\n this.nodeName = nodeName;\r\n this.openDialog();\r\n }\r\n\r\n override openDialog(): void {\r\n this.params = undefined;\r\n this.onAction = new SmartSubject(this._destroy$);\r\n const dialogData: SmartDialogData = {\r\n content: {\r\n title: '',\r\n },\r\n size: {},\r\n customComponent: UiActionInputDialogComponent,\r\n };\r\n this.createDialog(dialogData, UiActionInputDialogComponent);\r\n }\r\n\r\n async onSave(params: any): Promise<void> {\r\n this.params = params;\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n\r\n cancel(): void {\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n}\r\n\r\nexport interface EditFolderAction {\r\n nodeId: string;\r\n uiActionRequest: UiActionRequest;\r\n}\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { SmartFileUploaderI18n } from '@smartbit4all/form';\r\nimport { UiActionDescriptor } from '../../../api';\r\nimport { UiActionDescriptorService } from '../../ui-action.descriptor.service';\r\nimport { UiActionFileUploadDialogService } from './ui-action-file-upload-dialog.service';\r\n\r\n@Component({\r\n selector: 'lib-ui-action-file-upload-dialog',\r\n templateUrl: './ui-action-file-upload-dialog.component.html',\r\n styleUrls: ['./ui-action-file-upload-dialog.component.css'],\r\n})\r\nexport class UiActionFileUploadDialogComponent implements OnDestroy {\r\n code!: string;\r\n\r\n dialogType!: 'dialog' | 'inputDialog' | 'input2Dialog';\r\n\r\n descriptor?: UiActionDescriptor;\r\n\r\n i18n?: SmartFileUploaderI18n;\r\n maxSizeMb?: number;\r\n fileFormats?: string[];\r\n isMultiple?: boolean;\r\n\r\n constructor(\r\n private service: UiActionFileUploadDialogService,\r\n private manager: UiActionDescriptorService\r\n ) {\r\n this.code = this.service.action.code!;\r\n this.setUp();\r\n }\r\n ngOnDestroy(): void {\r\n this.service._destroy$.next();\r\n this.cancel();\r\n }\r\n\r\n async setUp(): Promise<void> {\r\n this.descriptor = await this.manager.getActionDescriptor(this.service.action);\r\n\r\n this.isMultiple = this.service.isMultiple;\r\n\r\n this.i18n = {\r\n addFile: this.descriptor.upload?.title ?? 'dokumentum hozzáadása',\r\n browseOrDrag: this.descriptor.upload?.description ?? 'tallózás vagy behúzás',\r\n formats: this.descriptor.upload?.formats ?? '',\r\n maxSize: this.descriptor.upload?.maxSize ?? '',\r\n upload: this.descriptor.upload?.uploadButtonTitle,\r\n };\r\n\r\n // TODO set max size and file formats by UiAction.params\r\n\r\n if (this.descriptor[this.service.inputTypeName]) {\r\n this.dialogType = this.service.inputTypeName;\r\n } else {\r\n this.dialogType = this.descriptor.inputDialog ? 'inputDialog' : 'dialog';\r\n }\r\n }\r\n\r\n getTitle(): string {\r\n return this.descriptor![this.dialogType]!.title;\r\n }\r\n getText(): string {\r\n return this.descriptor![this.dialogType]!.text ?? '';\r\n }\r\n getActionButtonLabel(): string {\r\n return this.descriptor![this.dialogType]!.actionButton.caption;\r\n }\r\n getActionButtonColor(): string {\r\n return this.descriptor![this.dialogType]!.actionButton.color;\r\n }\r\n getCancelButtonLabel(): string {\r\n return this.descriptor![this.dialogType]!.cancelButton.caption;\r\n }\r\n getCancelButtonColor(): string {\r\n return this.descriptor![this.dialogType]!.cancelButton.color;\r\n }\r\n\r\n upload(files: any[]): void {\r\n this.service.onSave(files);\r\n }\r\n\r\n cancel(): void {\r\n this.service.cancel();\r\n }\r\n}\r\n","<div class=\"folderNameDialogContainer\">\r\n <div class=\"headerContainer\">\r\n <h3 class=\"color-accent-700\">\r\n {{ getTitle() }}\r\n </h3>\r\n <button mat-icon-button title=\"close\" (click)=\"cancel()\">\r\n <smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\r\n </button>\r\n </div>\r\n <p>\r\n {{ getText() }}\r\n </p>\r\n <smartfileuploader\r\n [i18n]=\"i18n\"\r\n [fileFormats]=\"fileFormats\"\r\n [maxSizeMb]=\"maxSizeMb\"\r\n [uploadCallback]=\"upload.bind(this)\"\r\n [isMultiple]=\"isMultiple\"\r\n ></smartfileuploader>\r\n <div class=\"folderNameDialogButtonsContainer\">\r\n <button mat-button color=\"accent\" [color]=\"getCancelButtonColor()\" (click)=\"cancel()\">\r\n {{ getCancelButtonLabel() }}\r\n </button>\r\n <!-- <button mat-raised-button [color]=\"getActionButtonColor()\" (click)=\"upload()\">\r\n {{ getActionButtonLabel() }}\r\n </button> -->\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { SmartDialogData, SmartdialogService } from '@smartbit4all/dialog';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\nimport { Subject } from 'rxjs';\r\nimport { UiAction } from '../../../api';\r\nimport { UiActionFileUploadDialogComponent } from './ui-action-file-upload-dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiActionFileUploadDialogService extends SmartdialogService {\r\n _destroy$: Subject<void> = new Subject();\r\n\r\n inputTypeName!: 'inputDialog' | 'input2Dialog';\r\n action!: UiAction;\r\n nodeName?: string;\r\n\r\n onAction: Subject<void> = new SmartSubject(this._destroy$);\r\n files?: any;\r\n\r\n isMultiple: boolean = false;\r\n\r\n constructor(dialog: MatDialog, router: Router) {\r\n super(dialog, router);\r\n }\r\n\r\n setDataAndOpenDialog(action: UiAction, nodeName?: string): void {\r\n this.action = action;\r\n this.nodeName = nodeName;\r\n this.openDialog();\r\n }\r\n\r\n override openDialog(): void {\r\n this.files = undefined;\r\n this.onAction = new SmartSubject(this._destroy$);\r\n const dialogData: SmartDialogData = {\r\n content: {\r\n title: '',\r\n },\r\n size: {},\r\n customComponent: UiActionFileUploadDialogComponent,\r\n };\r\n this.createDialog(dialogData, UiActionFileUploadDialogComponent);\r\n }\r\n\r\n async onSave(files: any[]): Promise<void> {\r\n this.files = files;\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n\r\n cancel(): void {\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { UiAction, UiActionFeedbackType, UiActionInputType, UiActionRequest } from '../api';\r\nimport { SuccessSnackBarComponent } from './components/success-snack-bar/success-snack-bar.component';\r\n\r\nimport { UiActionConfirmDialogService } from './dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service';\r\nimport { UiActionInputDialogService } from './dialogs/ui-action-input-dialog/ui-action-input-dialog.service';\r\nimport { UiActionModel } from './ui-action.model';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\nimport { UiActionFileUploadDialogService } from './dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service';\r\n\r\nexport interface ExecuteUiActionOptions {\r\n /**\r\n * In case of using a grid: grid.identifier\r\n */\r\n widgetId?: string;\r\n /**\r\n * In case of using a grid: gridRow.id\r\n */\r\n nodeId?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiActionService implements OnDestroy {\r\n uiActionModel!: UiActionModel;\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n constructor(\r\n private confirmDialogService: UiActionConfirmDialogService,\r\n private textFieldDialogService: UiActionInputDialogService,\r\n private fileUploadDialogService: UiActionFileUploadDialogService,\r\n private _snackBar: MatSnackBar\r\n ) {}\r\n\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n async execute(uiAction: UiAction, options?: ExecuteUiActionOptions): Promise<void> {\r\n let uiActionRequest: UiActionRequest | undefined;\r\n\r\n uiActionRequest = {\r\n code: uiAction.code!,\r\n identifier: uiAction.identifier,\r\n params: uiAction.params ?? {},\r\n };\r\n\r\n if (uiAction.submit) {\r\n this.uiActionModel.serviceToUse.submit.next();\r\n try {\r\n await this.uiActionModel.serviceToUse.submit.toPromise();\r\n this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);\r\n this.uiActionModel.serviceToUse.reSubscribeToChange.next();\r\n } catch (error: any) {\r\n console.error(error);\r\n this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);\r\n this.uiActionModel.serviceToUse.reSubscribeToChange.next();\r\n return;\r\n }\r\n }\r\n\r\n if (uiAction.confirm) {\r\n this.confirmDialogService.action = uiAction;\r\n this.confirmDialogService.openDialog();\r\n await this.confirmDialogService.onAction.toPromise();\r\n if (!this.confirmDialogService.shouldDoAction) {\r\n return;\r\n }\r\n }\r\n\r\n // InputType\r\n if (uiAction.inputType) {\r\n uiActionRequest = await this.handleInputType(\r\n uiAction.inputType,\r\n uiAction,\r\n uiActionRequest,\r\n 'inputDialog'\r\n );\r\n if (!uiActionRequest) {\r\n return;\r\n }\r\n await new Promise((resolve) => setTimeout(resolve, 250));\r\n }\r\n // Input2Type\r\n if (uiAction.input2Type) {\r\n uiActionRequest = await this.handleInputType(\r\n uiAction.input2Type,\r\n uiAction,\r\n uiActionRequest,\r\n 'input2Dialog'\r\n );\r\n if (!uiActionRequest) {\r\n return;\r\n }\r\n }\r\n\r\n if (this.uiActionModel.exception) {\r\n let response = await this.uiActionModel.serviceToUse.handleSpecificDemandsAsynchronously(\r\n uiAction,\r\n uiActionRequest\r\n );\r\n\r\n if (!response.shouldPerformAction || !response.uiActionRequest) {\r\n return;\r\n }\r\n uiActionRequest = response.uiActionRequest;\r\n }\r\n\r\n await this.performAction(uiAction, uiActionRequest, options);\r\n }\r\n\r\n private async handleInputType(\r\n inputType: UiActionInputType,\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest,\r\n inputTypeName: 'inputDialog' | 'input2Dialog'\r\n ): Promise<UiActionRequest | undefined> {\r\n switch (inputType) {\r\n case UiActionInputType.None:\r\n return uiActionRequest;\r\n case UiActionInputType.Textarea:\r\n case UiActionInputType.Textfield:\r\n return await this.handleInputTypeTextField(inputTypeName, uiAction, uiActionRequest);\r\n case UiActionInputType.UserSelect:\r\n return await this.handleInputTypeUserSelect(inputTypeName, uiAction, uiActionRequest);\r\n case UiActionInputType.File:\r\n return await this.handleInputTypeUpload(inputTypeName, uiAction, uiActionRequest, false);\r\n case UiActionInputType.MultipleFiles:\r\n return await this.handleInputTypeUpload(inputTypeName, uiAction, uiActionRequest, true);\r\n default:\r\n return uiActionRequest;\r\n }\r\n }\r\n\r\n private async handleInputTypeTextField(\r\n inputTypeName: 'inputDialog' | 'input2Dialog',\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<UiActionRequest | undefined> {\r\n let additionalParams = this.uiActionModel.serviceToUse.getAdditionalParams(uiAction);\r\n let inputType: 'inputType' | 'input2Type' =\r\n inputTypeName === 'inputDialog' ? 'inputType' : 'input2Type';\r\n\r\n if (uiAction[inputType] === UiActionInputType.Textfield) {\r\n this.textFieldDialogService.nodeName = additionalParams.forTextField;\r\n } else if (uiAction[inputType] === UiActionInputType.Textarea) {\r\n this.textFieldDialogService.nodeName = additionalParams.forTextArea;\r\n }\r\n\r\n this.textFieldDialogService.inputTypeName = inputTypeName;\r\n this.textFieldDialogService.action = uiAction;\r\n\r\n this.textFieldDialogService.openDialog();\r\n\r\n await this.textFieldDialogService.onAction.toPromise();\r\n let params = this.textFieldDialogService.params;\r\n\r\n if (!params) {\r\n console.error('There was no response from InputDialog');\r\n return;\r\n }\r\n uiActionRequest.params = {\r\n ...uiActionRequest.params,\r\n ...params,\r\n };\r\n return uiActionRequest;\r\n }\r\n\r\n private async handleInputTypeUpload(\r\n inputTypeName: 'inputDialog' | 'input2Dialog',\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest,\r\n isMultiple: boolean\r\n ): Promise<UiActionRequest | undefined> {\r\n this.fileUploadDialogService.inputTypeName = inputTypeName;\r\n this.fileUploadDialogService.action = uiAction;\r\n this.fileUploadDialogService.isMultiple = isMultiple;\r\n\r\n this.fileUploadDialogService.openDialog();\r\n\r\n await this.fileUploadDialogService.onAction.toPromise();\r\n let files = this.fileUploadDialogService.files;\r\n\r\n if (!files || !files.length) {\r\n console.error('There was no response from InputDialog');\r\n return;\r\n }\r\n uiActionRequest.params = {\r\n ...uiActionRequest.params,\r\n _files: files,\r\n isMultiple,\r\n param:\r\n uiAction.inputType === 'file' || uiAction.inputType === 'multiple_files'\r\n ? 'INPUT'\r\n : 'INPUT2',\r\n };\r\n return uiActionRequest;\r\n }\r\n\r\n private async handleInputTypeUserSelect(\r\n inputTypeName: 'inputDialog' | 'input2Dialog',\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<UiActionRequest | undefined> {\r\n let response = await this.uiActionModel.serviceToUse.handleSpecificDemandsAsynchronously(\r\n uiAction,\r\n uiActionRequest\r\n );\r\n\r\n if (!response.shouldPerformAction || !response.uiActionRequest) {\r\n return;\r\n }\r\n uiActionRequest = response.uiActionRequest;\r\n return uiActionRequest;\r\n }\r\n\r\n private async performAction(\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest,\r\n options?: ExecuteUiActionOptions\r\n ): Promise<void> {\r\n if (\r\n !uiActionRequest.params ||\r\n (uiActionRequest.params && !Object.keys(uiActionRequest.params).length)\r\n ) {\r\n uiActionRequest.params = {\r\n model: this.uiActionModel.serviceToUse.getModel(),\r\n };\r\n } else if (uiAction.submit) {\r\n uiActionRequest.params['model'] = this.uiActionModel.serviceToUse.getModel();\r\n }\r\n\r\n try {\r\n await this.uiActionModel.serviceToUse.performUiActionRequest(\r\n uiActionRequest,\r\n options?.widgetId,\r\n options?.nodeId\r\n );\r\n\r\n if (this.uiActionModel.descriptor?.feedbackType === UiActionFeedbackType.Snackbar) {\r\n this.showSavedSnackbar(uiAction);\r\n }\r\n } catch (error: any) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n showSavedSnackbar(uiAction: UiAction): void {\r\n this._snackBar.openFromComponent(SuccessSnackBarComponent, {\r\n duration: 5 * 1000,\r\n panelClass: ['backgroundColor-accent'],\r\n data: uiAction,\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { UiActionButtonIconPos, UiActionButtonType } from '../api';\r\nimport { UiActionDescriptorService } from './ui-action.descriptor.service';\r\nimport { UiActionModel } from './ui-action.model';\r\nimport { ExecuteUiActionOptions, UiActionService } from './ui-action.service';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'smart-ui-action-toolbar',\r\n templateUrl: './ui-action-toolbar.component.html',\r\n styleUrls: ['./ui-action-toolbar.component.css'],\r\n})\r\nexport class UiActionToolbarComponent implements OnInit, OnChanges, OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n pressedButtonActive: boolean = true;\r\n\r\n @Input() uiActionModels!: UiActionModel[];\r\n @Input() uiActionDescriptorService?: UiActionDescriptorService;\r\n\r\n uiActionModelsWithDescriptions?: UiActionModel[];\r\n\r\n private manager!: UiActionDescriptorService;\r\n private languageChangedSubscription?: Subscription;\r\n\r\n constructor(private service: UiActionService, private inject: Injector) {\r\n // Injects the basic UiActionDescriptorService provided by the AppModule\r\n this.manager = inject.get(UiActionDescriptorService);\r\n\r\n this.subscribeToLanguageChange();\r\n }\r\n\r\n ngOnInit(): void {\r\n // Overrides the basic UiActionDescriptorService with a custom one if there is one\r\n if (this.uiActionDescriptorService) {\r\n this.manager = this.uiActionDescriptorService;\r\n this.subscribeToLanguageChange();\r\n }\r\n\r\n this.setUp();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let uiActionModels = changes['uiActionModels'].currentValue;\r\n if (uiActionModels) {\r\n this.uiActionModels = uiActionModels;\r\n this.setUp();\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n }\r\n\r\n private subscribeToLanguageChange(): void {\r\n this.languageChangedSubscription?.unsubscribe();\r\n\r\n this.languageChangedSubscription = this.manager.languageChanged\r\n .pipe(takeUntil(this._destroy$))\r\n .subscribe(() => {\r\n this.setUp();\r\n });\r\n }\r\n\r\n async setUp(): Promise<void> {\r\n this.uiActionModelsWithDescriptions = await Promise.all(\r\n this.uiActionModels.map(async (uiActionModel: UiActionModel) => {\r\n uiActionModel.descriptor = await this.manager.getActionDescriptor(uiActionModel.uiAction);\r\n\r\n return uiActionModel;\r\n })\r\n );\r\n }\r\n\r\n async onActionClicked(event: any, uiActionModel: UiActionModel): Promise<void> {\r\n event.stopPropagation();\r\n\r\n if (this.pressedButtonActive) {\r\n this.pressedButtonActive = false;\r\n\r\n this.service.uiActionModel = uiActionModel;\r\n let options: ExecuteUiActionOptions = {\r\n nodeId: uiActionModel.nodeId,\r\n widgetId: uiActionModel.widgetId,\r\n };\r\n\r\n await this.service.execute(uiActionModel.uiAction, options);\r\n\r\n this.pressedButtonActive = true;\r\n }\r\n }\r\n\r\n onActionDoubleClicked(event: any, uiActionModel: UiActionModel): void {\r\n event.stopPropagation();\r\n // We do not handle double clicks\r\n }\r\n\r\n getType(uiActionModel: UiActionModel): string {\r\n switch (uiActionModel.descriptor?.type) {\r\n case UiActionButtonType.Normal:\r\n return 'mat-button';\r\n case UiActionButtonType.Flat:\r\n return 'mat-flat-button';\r\n case UiActionButtonType.Raised:\r\n return 'mat-raised-button';\r\n case UiActionButtonType.Stroked:\r\n return 'mat-stroked-button';\r\n case UiActionButtonType.Icon:\r\n return 'mat-icon-button';\r\n case UiActionButtonType.MiniFab:\r\n return 'mat-mini-fab';\r\n case UiActionButtonType.Fab:\r\n return 'mat-fab';\r\n default:\r\n console.log(`Unhandled action button type case: ${uiActionModel.descriptor?.type}`);\r\n return `mat-button`;\r\n }\r\n }\r\n\r\n iconPosition(): typeof UiActionButtonIconPos {\r\n return UiActionButtonIconPos;\r\n }\r\n\r\n isOnlyIcon(uiActionModel: UiActionModel): boolean {\r\n return (\r\n uiActionModel.descriptor?.type === UiActionButtonType.Icon ||\r\n uiActionModel.descriptor?.type === UiActionButtonType.MiniFab ||\r\n uiActionModel.descriptor?.type === UiActionButtonType.Fab\r\n );\r\n }\r\n}\r\n","<div class=\"uiActionButtonsContainer\">\r\n <button\r\n *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions\"\r\n mat-button\r\n [ngClass]=\"getType(uiActionModel)\"\r\n class=\"{{ uiActionModel.cssClass }}\"\r\n [color]=\"uiActionModel.descriptor?.color\"\r\n (click)=\"onActionClicked($event, uiActionModel)\"\r\n (dblclick)=\"onActionDoubleClicked($event, uiActionModel)\"\r\n >\r\n <div *ngIf=\"isOnlyIcon(uiActionModel); then iconOnly; else text\"></div>\r\n <ng-template #iconOnly>\r\n <smart-icon\r\n *ngIf=\"uiActionModel.descriptor?.icon\"\r\n [icon]=\"uiActionModel.descriptor!.icon!\"\r\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\r\n ></smart-icon>\r\n </ng-template>\r\n <ng-template #text>\r\n <smart-icon\r\n *ngIf=\"\r\n uiActionModel.descriptor?.icon &&\r\n uiActionModel.descriptor?.iconPosition === iconPosition().Pre\r\n \"\r\n [icon]=\"uiActionModel.descriptor!.icon!\"\r\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\r\n ></smart-icon>\r\n {{ uiActionModel.descriptor?.title }}\r\n <smart-icon\r\n *ngIf=\"\r\n uiActionModel.descriptor?.icon &&\r\n uiActionModel.descriptor?.iconPosition === iconPosition().Post\r\n \"\r\n [icon]=\"uiActionModel.descriptor!.icon!\"\r\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\r\n ></smart-icon>\r\n </ng-template>\r\n </button>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MessageDialogComponent } from './message-dialog/message-dialog.component';\r\nimport { SmartViewContextService } from './smart-view-context.service';\r\nimport { SmartViewContextErrorDialogComponent } from './smart-view-context-error-dialog/smart-view-context-error-dialog.component';\r\nimport { SmartViewContextInterceptor } from './smart-view-context.interceptor';\r\nimport { SmartViewRedirect } from './smart-view-redirect/smart-view-redirect';\r\nimport { SmartIconModule } from '@smartbit4all/icon';\r\nimport { UiActionToolbarComponent } from './smart-ui-action/ui-action-toolbar.component';\r\nimport { UiActionInputDialogComponent } from './smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component';\r\nimport { UiActionConfirmDialogComponent } from './smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component';\r\nimport { SmartformModule } from '@smartbit4all/form';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { UiActionFileUploadDialogComponent } from './smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n MessageDialogComponent,\r\n SmartViewContextErrorDialogComponent,\r\n SmartViewRedirect,\r\n UiActionToolbarComponent,\r\n UiActionInputDialogComponent,\r\n UiActionConfirmDialogComponent,\r\n UiActionFileUploadDialogComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n MatCommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatSnackBarModule,\r\n SmartIconModule,\r\n SmartformModule,\r\n ],\r\n exports: [UiActionToolbarComponent, UiActionInputDialogComponent],\r\n providers: [\r\n SmartViewContextService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: SmartViewContextInterceptor,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SmartViewContextModule {}\r\n","import { Subject } from 'rxjs';\r\nimport { UiAction, UiActionDescriptor, UiActionRequest } from '../api';\r\n\r\nexport interface UiActionModel {\r\n\tuiAction: UiAction;\r\n\tserviceToUse: UseUiAction;\r\n\texception?: boolean;\r\n\tdescriptor?: UiActionDescriptor;\r\n\tcssClass?: string;\r\n\twidgetId?: string;\r\n\tnodeId?: string;\r\n}\r\n\r\nexport interface UseUiAction {\r\n\tsubmit: Subject<void>;\r\n\treSubscribeToChange: Subject<void>;\r\n\tgetAdditionalParams(uiAction: UiAction): UiActionAdditionalParams;\r\n\tgetModel(): any;\r\n\tperformUiActionRequest(uiActionRequest: UiActionRequest, widgetId?: string, nodeId?: string): Promise<any>;\r\n\thandleSpecificDemandsAsynchronously(\r\n\t\tuiAction: UiAction,\r\n\t\tuiActionRequest: UiActionRequest\r\n\t): Promise<UiActionSpecificDemandResponse>;\r\n}\r\n\r\nexport interface UiActionSpecificDemandResponse {\r\n\tshouldPerformAction: boolean;\r\n\tuiActionRequest?: UiActionRequest;\r\n}\r\n\r\nexport interface UiActionAdditionalParams {\r\n\tforTextField?: string;\r\n\tforTextArea?: string;\r\n}\r\n\r\nexport enum UiActionDialogType {\r\n\tinputDialog = 'inputDialog',\r\n\tconfirmDialog = 'confirmDialog',\r\n\tdialog = 'dialog',\r\n}\r\n","/*\r\n * Public API Surface of smart-view-context\r\n */\r\n\r\nexport * from \"./smart-view-context.service\";\r\nexport * from \"./smart-view-context.model\";\r\nexport * from \"./smart-view-context.module\";\r\nexport * from \"./smart-view-redirect/smart-view-redirect\";\r\nexport * from \"./api/index\";\r\nexport * from \"./smart-ui-action/ui-action-toolbar.component\";\r\nexport * from \"./smart-ui-action/ui-action.service\";\r\nexport * from \"./smart-ui-action/ui-action.model\";\r\nexport * from \"./smart-ui-action/ui-action.descriptor.service\";\r\nexport * from \"./smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service\";\r\nexport * from \"./smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component\";\r\nexport * from \"./smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service\";\r\nexport * from \"./smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component\";\r\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { SmartFileUploaderI18n } from '@smartbit4all/form';\r\nimport {\r\n UiActionDescriptorService,\r\n UiActionModel,\r\n UiActionService,\r\n} from '../../view-context/projects';\r\nimport { SmartFileUploader } from '../smart-component-api-client';\r\n\r\n@Component({\r\n selector: 'smart-file-uploader4sc',\r\n templateUrl: './smart-file-uploader.component.html',\r\n styleUrls: ['./smart-file-uploader.component.css'],\r\n})\r\nexport class SmartFileUploaderComponent implements OnChanges {\r\n @Input() config?: SmartFileUploader;\r\n\r\n i18n?: SmartFileUploaderI18n;\r\n private uiActionModel?: UiActionModel;\r\n\r\n constructor(\r\n private uiActionService: UiActionService,\r\n private uiActionDescriptorService: UiActionDescriptorService\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.config = changes['config'].currentValue;\r\n if (this.config) {\r\n this.setUp();\r\n }\r\n }\r\n\r\n async setUp(): Promise<void> {\r\n this.uiActionModel = this.config?.smartComponent.uiActionModels.find(\r\n (uiActionModel: UiActionModel) => uiActionModel.uiAction.code === this.config?.uiActionCode\r\n );\r\n\r\n if (!this.uiActionModel) {\r\n throw new Error(`UiAction with code ${this.config?.uiActionCode} could not found`);\r\n }\r\n\r\n const descriptor = await this.uiActionDescriptorService.getActionDescriptor(\r\n this.uiActionModel.uiAction\r\n );\r\n\r\n this.i18n = {\r\n addFile: descriptor.upload?.title ?? 'dokumentum hozzáadása',\r\n browseOrDrag: descriptor.upload?.description ?? 'tallózás vagy behúzás',\r\n formats: descriptor.upload?.formats ?? '',\r\n maxSize: descriptor.upload?.maxSize ?? '',\r\n upload: descriptor.upload?.uploadButtonTitle,\r\n };\r\n }\r\n\r\n executeUpload(files: any[]): void {\r\n this.uiActionModel!.uiAction.params = {\r\n ...this.uiActionModel!.uiAction.params,\r\n _files: files,\r\n isMultiple: this.config?.isMultiple,\r\n param: 'INPUT',\r\n };\r\n\r\n this.uiActionService.uiActionModel = this.uiActionModel!;\r\n this.uiActionService.execute(this.uiActionModel!.uiAction);\r\n }\r\n}\r\n","<smartfileuploader\r\n *ngIf=\"i18n\"\r\n [i18n]=\"i18n\"\r\n [fileFormats]=\"config?.fileFormats\"\r\n [isMultiple]=\"config?.isMultiple\"\r\n [maxSizeMb]=\"config?.maxSizeMb\"\r\n [uploadCallback]=\"executeUpload.bind(this)\"\r\n></smartfileuploader>\r\n","import { HttpParameterCodec } from '@angular/common/http';\r\n\r\n/**\r\n * Custom HttpParameterCodec\r\n * Workaround for https://github.com/angular/angular/issues/18261\r\n */\r\nexport class CustomHttpParameterCodec implements HttpParameterCodec {\r\n encodeKey(k: string): string {\r\n return encodeURIComponent(k);\r\n }\r\n encodeValue(v: string): string {\r\n return encodeURIComponent(v);\r\n }\r\n decodeKey(k: string): string {\r\n return decodeURIComponent(k);\r\n }\r\n decodeValue(v: string): string {\r\n return decodeURIComponent(v);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const BASE_PATH = new InjectionToken<string>('basePath');\r\nexport const COLLECTION_FORMATS = {\r\n 'csv': ',',\r\n 'tsv': ' ',\r\n 'ssv': ' ',\r\n 'pipes': '|'\r\n}\r\n","import { HttpParameterCodec } from '@angular/common/http';\r\nimport { Param } from './param';\r\n\r\nexport interface ConfigurationParameters {\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n /**\r\n * Takes care of encoding query- and form-parameters.\r\n */\r\n encoder?: HttpParameterCodec;\r\n /**\r\n * Override the default method for encoding path parameters in various\r\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\r\n * <p>\r\n * See {@link README.md} for more details\r\n * </p>\r\n */\r\n encodeParam?: (param: Param) => string;\r\n /**\r\n * The keys are the names in the securitySchemes section of the OpenAPI\r\n * document. They should map to the value used for authentication\r\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\r\n */\r\n credentials?: {[ key: string ]: string | (() => string | undefined)};\r\n}\r\n\r\nexport class Configuration {\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n /**\r\n * Takes care of encoding query- and form-parameters.\r\n */\r\n encoder?: HttpParameterCodec;\r\n /**\r\n * Encoding of various path parameter\r\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\r\n * <p>\r\n * See {@link README.md} for more details\r\n * </p>\r\n */\r\n encodeParam: (param: Param) => string;\r\n /**\r\n * The keys are the names in the securitySchemes section of the OpenAPI\r\n * document. They should map to the value used for authentication\r\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\r\n */\r\n credentials: {[ key: string ]: string | (() => string | undefined)};\r\n\r\n constructor(configurationParameters: ConfigurationParameters = {}) {\r\n this.apiKeys = configurationParameters.apiKeys;\r\n this.username = configurationParameters.username;\r\n this.password = configurationParameters.password;\r\n this.accessToken = configurationParameters.accessToken;\r\n this.basePath = configurationParameters.basePath;\r\n this.withCredentials = configurationParameters.withCredentials;\r\n this.encoder = configurationParameters.encoder;\r\n if (configurationParameters.encodeParam) {\r\n this.encodeParam = configurationParameters.encodeParam;\r\n }\r\n else {\r\n this.encodeParam = param => this.defaultEncodeParam(param);\r\n }\r\n if (configurationParameters.credentials) {\r\n this.credentials = configurationParameters.credentials;\r\n }\r\n else {\r\n this.credentials = {};\r\n }\r\n }\r\n\r\n /**\r\n * Select the correct content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param contentTypes - the array of content types that are available for selection\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\r\n if (contentTypes.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = contentTypes.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return contentTypes[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Select the correct accept content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param accepts - the array of content types that are available for selection.\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderAccept(accepts: string[]): string | undefined {\r\n if (accepts.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = accepts.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return accepts[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Check if the given MIME is a JSON MIME.\r\n * JSON MIME examples:\r\n * application/json\r\n * application/json; charset=UTF8\r\n * APPLICATION/JSON\r\n * application/vnd.company+json\r\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\r\n * @return True if the given MIME is JSON, false otherwise.\r\n */\r\n public isJsonMime(mime: string): boolean {\r\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\r\n return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\r\n }\r\n\r\n public lookupCredential(key: string): string | undefined {\r\n const value = this.credentials[key];\r\n return typeof value === 'function'\r\n ? value()\r\n : value;\r\n }\r\n\r\n private defaultEncodeParam(param: Param): string {\r\n // This implementation exists as fallback for missing configuration\r\n // and for backwards compatibility to older typescript-angular generator versions.\r\n // It only works for the 'simple' parameter style.\r\n // Date-handling only works for the 'date-time' format.\r\n // All other styles and Date-formats are probably handled incorrectly.\r\n //\r\n // But: if that's all you need (i.e.: the most common use-case): no need for customization!\r\n\r\n const value = param.dataFormat === 'date-time'\r\n ? (param.value as Date).toISOString()\r\n : param.value;\r\n\r\n return encodeURIComponent(String(value));\r\n }\r\n}\r\n","/**\r\n * UiTree domain objects\r\n * Tree domain objects\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n/* tslint:disable:no-unused-variable member-ordering */\r\n\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport {\r\n HttpClient,\r\n HttpHeaders,\r\n HttpParams,\r\n HttpResponse,\r\n HttpEvent,\r\n HttpParameterCodec,\r\n HttpContext,\r\n} from '@angular/common/http';\r\nimport { CustomHttpParameterCodec } from '../encoder';\r\nimport { Observable } from 'rxjs';\r\n\r\n// @ts-ignore\r\n// @ts-ignore\r\nimport { UiAction, UiActionRequest } from '../view-context/projects';\r\n// @ts-ignore\r\n\r\n// @ts-ignore\r\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\r\nimport { Configuration } from '../configuration';\r\nimport { SmartTreeNode } from '../../smarttree.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TreeService {\r\n protected basePath = 'http://localhost';\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n public encoder: HttpParameterCodec;\r\n\r\n constructor(\r\n protected httpClient: HttpClient,\r\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\r\n @Optional() configuration: Configuration\r\n ) {\r\n if (configuration) {\r\n this.configuration = configuration;\r\n }\r\n if (typeof this.configuration.basePath !== 'string') {\r\n if (Array.isArray(basePath) && basePath.length > 0) {\r\n basePath = basePath[0];\r\n }\r\n\r\n if (typeof basePath !== 'string') {\r\n basePath = this.basePath;\r\n }\r\n this.configuration.basePath = basePath;\r\n }\r\n this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\r\n }\r\n\r\n // @ts-ignore\r\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\r\n if (typeof value === 'object' && value instanceof Date === false) {\r\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\r\n } else {\r\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\r\n }\r\n return httpParams;\r\n }\r\n\r\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\r\n if (value == null) {\r\n return httpParams;\r\n }\r\n\r\n if (typeof value === 'object') {\r\n if (Array.isArray(value)) {\r\n (value as any[]).forEach(\r\n (elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key))\r\n );\r\n } else if (value instanceof Date) {\r\n if (key != null) {\r\n httpParams = httpParams.append(key, (value as Date).toISOString().substr(0, 10));\r\n } else {\r\n throw Error('key may not be null if value is Date');\r\n }\r\n } else {\r\n Object.keys(value).forEach(\r\n (k) =>\r\n (httpParams = this.addToHttpParamsRecursive(\r\n httpParams,\r\n value[k],\r\n key != null ? `${key}.${k}` : k\r\n ))\r\n );\r\n }\r\n } else if (key != null) {\r\n httpParams = httpParams.append(key, value);\r\n } else {\r\n throw Error('key may not be null if value is not object or array');\r\n }\r\n return httpParams;\r\n }\r\n\r\n /**\r\n * Collapses the given treenode. The viewcontext will hold the appropriate instruction for the ui. Returns the collapsed SmartTreeNode.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param nodeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public collapseNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<SmartTreeNode>;\r\n public collapseNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<SmartTreeNode>>;\r\n public collapseNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<SmartTreeNode>>;\r\n public collapseNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling collapseNode.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error('Required parameter treeId was null or undefined when calling collapseNode.');\r\n }\r\n if (nodeId === null || nodeId === undefined) {\r\n throw new Error('Required parameter nodeId was null or undefined when calling collapseNode.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/${this.configuration.encodeParam({\r\n name: 'nodeId',\r\n value: nodeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/collapse`;\r\n return this.httpClient.request<SmartTreeNode>(\r\n 'post',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Expands the given treenode. The viewcontext will hold the appropriate instruction for the ui, if any. Returns the expanded SmartTreeNode.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param nodeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public expandNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<SmartTreeNode>;\r\n public expandNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<SmartTreeNode>>;\r\n public expandNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<SmartTreeNode>>;\r\n public expandNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error('Required parameter viewUuid was null or undefined when calling expandNode.');\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error('Required parameter treeId was null or undefined when calling expandNode.');\r\n }\r\n if (nodeId === null || nodeId === undefined) {\r\n throw new Error('Required parameter nodeId was null or undefined when calling expandNode.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/${this.configuration.encodeParam({\r\n name: 'nodeId',\r\n value: nodeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/expand`;\r\n return this.httpClient.request<SmartTreeNode>(\r\n 'post',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Query the child nodes of the tree\\'s node given in the parameter\r\n * @param viewUuid\r\n * @param treeId\r\n * @param nodeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getChildrenNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<Array<SmartTreeNode>>;\r\n public getChildrenNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<Array<SmartTreeNode>>>;\r\n public getChildrenNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<Array<SmartTreeNode>>>;\r\n public getChildrenNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling getChildrenNodes.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error(\r\n 'Required parameter treeId was null or undefined when calling getChildrenNodes.'\r\n );\r\n }\r\n if (nodeId === null || nodeId === undefined) {\r\n throw new Error(\r\n 'Required parameter nodeId was null or undefined when calling getChildrenNodes.'\r\n );\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/${this.configuration.encodeParam({\r\n name: 'nodeId',\r\n value: nodeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}`;\r\n return this.httpClient.request<Array<SmartTreeNode>>(\r\n 'get',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Query all tree nodes.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getMainActions(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<Array<UiAction>>;\r\n public getMainActions(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<Array<UiAction>>>;\r\n public getMainActions(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<Array<UiAction>>>;\r\n public getMainActions(\r\n viewUuid: string,\r\n treeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling getMainActions.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error(\r\n 'Required parameter treeId was null or undefined when calling getMainActions.'\r\n );\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/action`;\r\n return this.httpClient.request<Array<UiAction>>(\r\n 'get',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Query all tree nodes.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getRootNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<Array<SmartTreeNode>>;\r\n public getRootNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<Array<SmartTreeNode>>>;\r\n public getRootNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<Array<SmartTreeNode>>>;\r\n public getRootNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling getRootNodes.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error('Required parameter treeId was null or undefined when calling getRootNodes.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}`;\r\n return this.httpClient.request<Array<SmartTreeNode>>(\r\n 'get',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Performs an action on the given treenode. The viewcontext will hold the appropriate instruction for the ui. Returns the SmartTreeNode which the action was performed on.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param nodeId\r\n * @param body\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public performAction(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n body: UiActionRequest,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<Array<SmartTreeNode>>;\r\n public performAction(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n body: UiActionRequest,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<Array<SmartTreeNode>>>;\r\n public performAction(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n body: UiActionRequest,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<Array<SmartTreeNode>>>;\r\n public performAction(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n body: UiActionRequest,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling performAction.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error(\r\n 'Required parameter treeId was null or undefined when calling performAction.'\r\n );\r\n }\r\n if (nodeId === null || nodeId === undefined) {\r\n throw new Error(\r\n 'Required parameter nodeId was null or undefined when calling performAction.'\r\n );\r\n }\r\n if (body === null || body === undefined) {\r\n throw new Error('Required parameter body was null or undefined when calling performAction.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = ['application/json'];\r\n const httpContentTypeSelected: string | undefined =\r\n this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/${this.configuration.encodeParam({\r\n name: 'nodeId',\r\n value: nodeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/action`;\r\n return this.httpClient.request<Array<SmartTreeNode>>(\r\n 'post',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: body,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Performs an action on the given treenode. The viewcontext will hold the appropriate instruction for the ui. Returns the SmartTreeNode which the action was performed on.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param body\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public performMainAction(\r\n viewUuid: string,\r\n treeId: string,\r\n body: UiActionRequest,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<Array<SmartTreeNode>>;\r\n public performMainAction(\r\n viewUuid: string,\r\n treeId: string,\r\n body: UiActionRequest,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<Array<SmartTreeNode>>>;\r\n public performMainAction(\r\n viewUuid: string,\r\n treeId: string,\r\n body: UiActionRequest,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<Array<SmartTreeNode>>>;\r\n public performMainAction(\r\n viewUuid: string,\r\n treeId: string,\r\n body: UiActionRequest,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling performMainAction.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error(\r\n 'Required parameter treeId was null or undefined when calling performMainAction.'\r\n );\r\n }\r\n if (body === null || body === undefined) {\r\n throw new Error(\r\n 'Required parameter body was null or undefined when calling performMainAction.'\r\n );\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = ['application/json'];\r\n const httpContentTypeSelected: string | undefined =\r\n this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/action`;\r\n return this.httpClient.request<Array<SmartTreeNode>>(\r\n 'post',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: body,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Collapses the given treenode. The viewcontext will hold the appropriate instruction for the ui. Returns the collapsed SmartTreeNode.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param nodeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public selectNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<SmartTreeNode>;\r\n public selectNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<SmartTreeNode>>;\r\n public selectNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<SmartTreeNode>>;\r\n public selectNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error('Required parameter viewUuid was null or undefined when calling selectNode.');\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error('Required parameter treeId was null or undefined when calling selectNode.');\r\n }\r\n if (nodeId === null || nodeId === undefined) {\r\n throw new Error('Required parameter nodeId was null or undefined when calling selectNode.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/${this.configuration.encodeParam({\r\n name: 'nodeId',\r\n value: nodeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/select`;\r\n return this.httpClient.request<SmartTreeNode>(\r\n 'post',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n}\r\n","import { UiAction } from '../view-context/projects';\r\n\r\nexport interface SmartTreeModel {\r\n // nem temporális storage-ba tenni a UI bean-eket\r\n identifier?: string;\r\n rootNodes: Array<SmartTreeNode>;\r\n selectedNodeIdentifier?: string;\r\n navigationUrlsByNodeType?: Array<SmartTreeNodeType>;\r\n}\r\n\r\nexport interface SmartTreeNode {\r\n icon?: string;\r\n caption: string;\r\n classes?: Array<string>;\r\n hasChildren: boolean;\r\n childrenNodes: Array<SmartTreeNode>;\r\n expanded: boolean;\r\n selected: boolean;\r\n childrenNodesLoaded: boolean;\r\n level: number;\r\n shortDescription?: string;\r\n identifier?: string;\r\n objectUri?: string;\r\n nodeType: string;\r\n button?: SmartTreeNodeButton;\r\n actions?: Array<UiAction>;\r\n}\r\n\r\nexport interface SmartTreeNodeButton {\r\n icon?: string;\r\n label?: string;\r\n type: SmartTreeNodeButtonType;\r\n menuItemButtons?: SmartTreeNodeButton[];\r\n callback?: (...args: any[]) => any;\r\n args?: any[];\r\n}\r\n\r\nexport enum SmartTreeNodeButtonType {\r\n MENU = 'MENU',\r\n ICON = 'ICON',\r\n NORMAL = 'NORMAL',\r\n}\r\n\r\nexport interface SmartTreeNodeType {\r\n nodeType: string;\r\n navigationUrl: any[];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { SmartTreeModel, SmartTreeNode } from './smarttree.model';\r\nimport { SmarttreeServiceDescriptor } from './smarttree.service.interface';\r\nimport { UiActionModel } from '../view-context/projects';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmarttreeService<T> implements SmarttreeServiceDescriptor<T> {\r\n errorMessage: string = 'The tree is currently unavailable';\r\n\r\n treeFromBackend: T | undefined;\r\n smartTreeModel: SmartTreeModel | undefined;\r\n smartTreeModelChanged: Subject<SmartTreeModel> = new Subject();\r\n\r\n protected _uiActionModels: UiActionModel[] | undefined;\r\n uiActionModelsChanged: Subject<void> = new Subject();\r\n\r\n get uiActionModels() {\r\n return this._uiActionModels;\r\n }\r\n set uiActionModels(uiActionModels: UiActionModel[] | undefined) {\r\n this._uiActionModels = uiActionModels;\r\n this.uiActionModelsChanged.next();\r\n }\r\n\r\n constructor() {}\r\n\r\n async initialize(): Promise<void> {\r\n await this.downloadTree().then((rootNodes: T) => {\r\n this.treeFromBackend = rootNodes;\r\n this.syncTree();\r\n });\r\n }\r\n async downloadTree(): Promise<T> {\r\n throw new Error('downloadTree method not implemented.');\r\n }\r\n async downloadChildren(parentNode: SmartTreeNode): Promise<T> {\r\n throw new Error('downloadChildren method not implemented.');\r\n }\r\n onTreeNodeClick(treeNode: SmartTreeNode): void {\r\n throw new Error('onTreeNodeClick method not implemented.');\r\n }\r\n onTreeNodeOpen(treeNode: SmartTreeNode): void {\r\n throw new Error('onTreeNodeOpen method not implemented.');\r\n }\r\n syncTree(): void {\r\n throw new Error('syncTree method not implemented.');\r\n }\r\n}\r\n","import { Inject, Injectable, Injector } from '@angular/core';\r\nimport {\r\n SmartViewContextService,\r\n UiAction,\r\n UiActionAdditionalParams,\r\n UiActionDescriptor,\r\n UiActionDescriptorService,\r\n UiActionModel,\r\n UiActionRequest,\r\n UiActionService,\r\n UiActionSpecificDemandResponse,\r\n UseUiAction,\r\n} from '../view-context/projects';\r\nimport { TreeService } from './tree-api/api/tree.service';\r\nimport { SmartTreeNode, SmartTreeNodeButtonType } from './smarttree.model';\r\nimport { SmarttreeService } from './smarttree.service';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport interface SmarttreeConfiguration {\r\n treeid: string;\r\n viewContextName: string;\r\n pageName: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmarttreeGenericService\r\n extends SmarttreeService<SmartTreeNode[]>\r\n implements UseUiAction\r\n{\r\n // UseUiAction properties\r\n submit: Subject<void> = new Subject();\r\n reSubscribeToChange: Subject<void> = new Subject();\r\n\r\n uiActionDescriptors: Map<string, UiActionDescriptor> = new Map();\r\n\r\n selectedNode?: SmartTreeNode;\r\n\r\n viewContextName: string = 'viewContextUuid';\r\n\r\n protected viewContext!: SmartViewContextService;\r\n private service!: TreeService;\r\n\r\n private uiActionDescriptorService!: UiActionDescriptorService;\r\n private uiActionService!: UiActionService;\r\n\r\n constructor(\r\n inject: Injector,\r\n @Inject('pageName') protected pageName: string,\r\n @Inject('treeId') protected treeId: string\r\n ) {\r\n super();\r\n\r\n this.configureTree({\r\n pageName: this.pageName,\r\n treeid: this.treeId,\r\n viewContextName: this.viewContextName,\r\n });\r\n\r\n this.viewContext = inject.get(SmartViewContextService);\r\n this.service = inject.get(TreeService);\r\n\r\n this.uiActionService = inject.get(UiActionService);\r\n this.uiActionDescriptorService = inject.get(UiActionDescriptorService);\r\n\r\n this.initialize();\r\n }\r\n\r\n constructUiActionModels(uiActions: UiAction[]): void {\r\n this.uiActionModels = uiActions.map((uiAction: UiAction) => {\r\n return {\r\n serviceToUse: this,\r\n uiAction,\r\n };\r\n });\r\n }\r\n\r\n configureTree(configuration: SmarttreeConfiguration): void {\r\n this.treeId = configuration.treeid;\r\n this.viewContextName = configuration.viewContextName;\r\n this.pageName = configuration.pageName;\r\n }\r\n\r\n override async initialize(): Promise<void> {\r\n if (sessionStorage.getItem(this.viewContextName!)) {\r\n await this.downloadTree().then((rootNodes: SmartTreeNode[]) => {\r\n this.treeFromBackend = rootNodes;\r\n this.syncTree();\r\n });\r\n }\r\n }\r\n override async downloadTree(): Promise<SmartTreeNode[]> {\r\n let uuid = this.viewContext.getUuidOfPage(this.pageName!);\r\n const rootNodes = await this.service.getRootNodes(uuid, this.treeId!).toPromise();\r\n const uiActions = await this.service.getMainActions(uuid, this.treeId!).toPromise();\r\n\r\n if (uiActions) {\r\n this.constructUiActionModels(uiActions);\r\n }\r\n\r\n if (!rootNodes) {\r\n throw new Error('RootNodes are undefined!');\r\n }\r\n return rootNodes;\r\n }\r\n override async downloadChildren(parentNode: SmartTreeNode): Promise<SmartTreeNode[]> {\r\n let uuid = this.viewContext.getUuidOfPage(this.pageName!);\r\n const children = await this.service\r\n .getChildrenNodes(uuid, this.treeId!, parentNode.identifier!)\r\n .toPromise();\r\n if (!children) {\r\n throw new Error(`Node with identifier ${parentNode.identifier} does not have children.`);\r\n }\r\n\r\n return children;\r\n }\r\n override async onTreeNodeOpen(treeNode: SmartTreeNode): Promise<void> {\r\n let viewUuid = this.viewContext.getUuidOfPage(this.pageName!);\r\n\r\n if (treeNode?.expanded) {\r\n let tempTreeNode = await this.service\r\n .collapseNode(viewUuid, this.treeId!, treeNode.identifier!)\r\n .toPromise();\r\n treeNode = tempTreeNode!;\r\n } else if (!treeNode?.expanded) {\r\n let tempTreeNode = await this.service\r\n .expandNode(viewUuid, this.treeId!, treeNode?.identifier!)\r\n .toPromise();\r\n treeNode = tempTreeNode!;\r\n }\r\n let node = this.deepSearchTreeNode(treeNode?.identifier!, this.treeFromBackend!);\r\n\r\n node!.expanded = treeNode?.expanded;\r\n node!.childrenNodes = treeNode?.childrenNodes;\r\n this.syncTree();\r\n }\r\n override onTreeNodeClick(treeNode: SmartTreeNode): void {\r\n this.selectFolder(treeNode.identifier!, treeNode);\r\n }\r\n async selectFolder(folderUri: string, treeNode?: SmartTreeNode): Promise<void> {\r\n let viewUuid = this.viewContext.getUuidOfPage(this.pageName!);\r\n\r\n await this.service\r\n .selectNode(viewUuid, this.treeId!, treeNode!.identifier!)\r\n .toPromise()\r\n .then((updatedTreeNode: SmartTreeNode | undefined) => {\r\n if (this.selectedNode) {\r\n this.selectedNode.selected = false;\r\n }\r\n this.selectedNode = updatedTreeNode;\r\n let node = this.deepSearchTreeNode(updatedTreeNode?.identifier!, this.treeFromBackend!);\r\n if (!node) {\r\n throw Error('Tree node does not exist');\r\n }\r\n node.expanded = updatedTreeNode?.expanded!;\r\n node.childrenNodes = updatedTreeNode?.childrenNodes!;\r\n node.selected = updatedTreeNode?.selected!;\r\n treeNode = updatedTreeNode;\r\n this.syncTree();\r\n this.viewContext.getAndSyncViewContext(\r\n this.viewContext.getUuidOfPage(this.viewContextName!)\r\n );\r\n });\r\n }\r\n\r\n async updateTreeOnTheFly(): Promise<void> {\r\n await this.initialize();\r\n }\r\n\r\n override async syncTree(): Promise<void> {\r\n await this.cacheActionDesciptors(this.getAllNodes(this.treeFromBackend!));\r\n\r\n if (!this.treeFromBackend) {\r\n throw new Error('There is no treeFromBackend available!');\r\n }\r\n if (!this.smartTreeModel) {\r\n this.smartTreeModel = {\r\n rootNodes: [],\r\n };\r\n }\r\n\r\n let smartTreeNodes: SmartTreeNode[] = this.createButtonsForTreeNodes(this.treeFromBackend);\r\n this.smartTreeModel = undefined;\r\n\r\n this.smartTreeModel = {\r\n rootNodes: [],\r\n };\r\n this.smartTreeModelChanged.next(this.smartTreeModel);\r\n\r\n this.smartTreeModel.rootNodes = smartTreeNodes;\r\n\r\n this.findSelected(this.smartTreeModel.rootNodes);\r\n\r\n this.smartTreeModelChanged.next(this.smartTreeModel);\r\n }\r\n\r\n deepSearchTreeNode(identifier: string, nodes: SmartTreeNode[]): SmartTreeNode | undefined {\r\n let treeNode: SmartTreeNode | undefined;\r\n for (let index = 0; index < nodes.length; index++) {\r\n const node = nodes[index];\r\n\r\n if (node.identifier === identifier) {\r\n treeNode = node;\r\n break;\r\n }\r\n if (node.childrenNodes && node.childrenNodes.length) {\r\n treeNode = this.deepSearchTreeNode(identifier, node.childrenNodes);\r\n if (treeNode) {\r\n break;\r\n }\r\n }\r\n }\r\n return treeNode;\r\n }\r\n\r\n findSelected(nodes: SmartTreeNode[]): void {\r\n return nodes.forEach((node: SmartTreeNode) => {\r\n if (node.selected) {\r\n this.selectedNode = node;\r\n return;\r\n } else if (node.childrenNodes && node.childrenNodes.length) {\r\n return this.findSelected(node.childrenNodes);\r\n }\r\n });\r\n }\r\n\r\n createButtonsForTreeNodes(nodes: SmartTreeNode[]): SmartTreeNode[] {\r\n nodes.map((node: SmartTreeNode) => {\r\n node.button = node.actions?.length\r\n ? {\r\n type: SmartTreeNodeButtonType.MENU,\r\n icon: 'more_vert',\r\n menuItemButtons: node.actions.map((action: UiAction) => {\r\n return {\r\n type: SmartTreeNodeButtonType.NORMAL,\r\n label: this.getLabelByAction(action),\r\n callback: this.doAction.bind(this),\r\n args: [action, node.identifier],\r\n };\r\n }),\r\n }\r\n : undefined;\r\n node.icon = 'Folders';\r\n if (node.childrenNodes) {\r\n node.childrenNodes = this.createButtonsForTreeNodes(node.childrenNodes);\r\n }\r\n });\r\n return nodes;\r\n }\r\n\r\n async doAction(args: any[]): Promise<void> {\r\n let uiAction: UiAction = args[0];\r\n let nodeUuid: string = args[1];\r\n\r\n if (uiAction.params) {\r\n uiAction.params['nodeUuid'] = nodeUuid;\r\n } else {\r\n uiAction.params = {\r\n nodeUuid: nodeUuid,\r\n };\r\n }\r\n\r\n let uiActionModel: UiActionModel = {\r\n serviceToUse: this,\r\n uiAction,\r\n };\r\n this.uiActionService.uiActionModel = uiActionModel;\r\n this.uiActionService.execute(uiAction);\r\n }\r\n\r\n protected getAllNodes(nodes: SmartTreeNode[]): SmartTreeNode[] {\r\n return nodes.flatMap((n) => [n, ...this.getAllNodes(n.childrenNodes)]);\r\n }\r\n\r\n protected async cacheActionDesciptors(nodes: SmartTreeNode[]) {\r\n await Promise.all(\r\n nodes.map(async (node: SmartTreeNode) => {\r\n let newUiActions = node.actions?.filter(\r\n (uiAction: UiAction) => !this.uiActionDescriptors.get(uiAction.code!)\r\n );\r\n if (!newUiActions) {\r\n return;\r\n }\r\n\r\n await Promise.all(\r\n newUiActions!.map(async (uiAction: UiAction) => {\r\n if (!this.uiActionDescriptors.get(uiAction.code!)) {\r\n let descriptor = await this.uiActionDescriptorService.getActionDescriptor(uiAction);\r\n this.uiActionDescriptors.set(uiAction.code!, descriptor);\r\n }\r\n })\r\n );\r\n })\r\n );\r\n }\r\n getLabelByAction(action: UiAction): string {\r\n let desc = this.uiActionDescriptors.get(action.code!);\r\n return desc!.title;\r\n }\r\n\r\n // #region UseUiAction\r\n getAdditionalParams(uiAction: UiAction): UiActionAdditionalParams {\r\n if (uiAction.params && uiAction.params['nodeUuid']) {\r\n let nodeUuid = uiAction.params!['nodeUuid'];\r\n\r\n let nodeName: string | undefined;\r\n if (uiAction.code === 'RENAME') {\r\n nodeName = this.deepSearchTreeNode(nodeUuid, this.treeFromBackend!)?.caption;\r\n }\r\n\r\n return {\r\n forTextArea: '',\r\n forTextField: nodeName ? nodeName : '',\r\n };\r\n }\r\n\r\n return {\r\n forTextArea: '',\r\n forTextField: '',\r\n };\r\n }\r\n getModel() {\r\n return {};\r\n }\r\n\r\n async performUiActionRequest(uiActionRequest: UiActionRequest): Promise<any> {\r\n if (uiActionRequest.params['nodeUuid']) {\r\n await this.performNodeUiActionRequest(uiActionRequest);\r\n } else {\r\n await this.performMainUiActionRequest(uiActionRequest);\r\n }\r\n\r\n await this.viewContext.getAndSyncViewContext();\r\n\r\n this.syncTree();\r\n }\r\n\r\n async performNodeUiActionRequest(uiActionRequest: UiActionRequest): Promise<any> {\r\n let nodeId = uiActionRequest.params['nodeUuid'];\r\n delete uiActionRequest.params['nodeUuid'];\r\n\r\n let viewUuid = this.viewContext.getUuidOfPage(this.pageName);\r\n\r\n this.treeFromBackend = await this.service\r\n .performAction(viewUuid, this.treeId!, nodeId, uiActionRequest)\r\n .toPromise();\r\n }\r\n async performMainUiActionRequest(uiActionRequest: UiActionRequest): Promise<any> {\r\n let viewUuid = this.viewContext.getUuidOfPage(this.pageName);\r\n\r\n this.treeFromBackend = await this.service\r\n .performMainAction(viewUuid, this.treeId!, uiActionRequest)\r\n .toPromise();\r\n }\r\n\r\n handleSpecificDemandsAsynchronously(\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<UiActionSpecificDemandResponse> {\r\n throw new Error('Method not implemented.');\r\n }\r\n // #endregion\r\n}\r\n","import { NestedTreeControl } from '@angular/cdk/tree';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n ViewChild,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatTreeNestedDataSource } from '@angular/material/tree';\r\nimport {\r\n SmartTreeModel,\r\n SmartTreeNode,\r\n SmartTreeNodeButton,\r\n SmartTreeNodeButtonType,\r\n} from './smarttree.model';\r\nimport { TreeStyle } from './smarttree.node.model';\r\nimport { SmarttreeService } from './smarttree.service';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { UiActionModel } from '../view-context/projects';\r\n\r\n@Component({\r\n selector: 'smart-tree',\r\n templateUrl: './smarttree.component.html',\r\n styleUrls: ['./smarttree.component.css'],\r\n})\r\nexport class SmartTreeComponent implements OnInit, OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n @ViewChildren(MatMenuTrigger) trigger!: QueryList<MatMenuTrigger>;\r\n\r\n @ViewChild('tree') tree: any;\r\n\r\n treeControl = new NestedTreeControl<SmartTreeNode>((node) => node.childrenNodes);\r\n dataSource = new MatTreeNestedDataSource<SmartTreeNode>();\r\n tempActiveNode?: SmartTreeNode;\r\n treeData?: SmartTreeModel;\r\n @Input() treeStyle?: TreeStyle;\r\n @Input() treeService!: SmarttreeService<any>;\r\n smartTreeNodeButtonType = SmartTreeNodeButtonType;\r\n\r\n errorMessage?: string;\r\n\r\n uiActionModels: UiActionModel[] = [];\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n ngOnInit(): void {\r\n if (!this.treeService) {\r\n throw new Error('TreeService has not been given!');\r\n }\r\n this.errorMessage = this.treeService.errorMessage;\r\n\r\n this.treeService.smartTreeModelChanged.subscribe((newSmartTree: SmartTreeModel) => {\r\n this.treeData = newSmartTree;\r\n this.dataSource.data = this.treeData.rootNodes!;\r\n this.expandTreeNodes();\r\n });\r\n this.treeService.uiActionModelsChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n if (this.treeService.uiActionModels) {\r\n this.uiActionModels = this.treeService.uiActionModels;\r\n }\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n getIfExpanded(node: SmartTreeNode): boolean {\r\n return this.treeControl.isExpanded(node);\r\n }\r\n\r\n expandTreeNodes() {\r\n this.expandTreeNodesDeeply(this.dataSource.data);\r\n }\r\n\r\n expandTreeNodesDeeply(nodes: SmartTreeNode[]) {\r\n nodes.forEach((node) => {\r\n if (node.expanded) {\r\n this.treeControl.expand(node);\r\n this.cdr.markForCheck();\r\n if (node.childrenNodes && node.childrenNodes.length) {\r\n this.expandTreeNodesDeeply(node.childrenNodes);\r\n }\r\n } else {\r\n this.treeControl.collapse(node);\r\n }\r\n });\r\n }\r\n\r\n onNodeClick(event: any, node: SmartTreeNode) {\r\n event.stopPropagation();\r\n\r\n if (this.tempActiveNode) this.tempActiveNode.selected = false;\r\n node.selected = true;\r\n this.tempActiveNode = node;\r\n\r\n this.treeService.onTreeNodeClick(node);\r\n }\r\n\r\n onOpenNode(event: any, node: SmartTreeNode) {\r\n event.stopPropagation();\r\n this.treeService.onTreeNodeOpen(node);\r\n }\r\n\r\n hasChild = (_: number, node: SmartTreeNode) => node.hasChildren;\r\n\r\n getNodeStyle(node: SmartTreeNode) {\r\n if (this.treeStyle) {\r\n var style = node.selected\r\n ? {\r\n background: this.treeStyle.activeStyle?.backgroundColor,\r\n color: this.treeStyle.activeStyle?.color,\r\n }\r\n : {\r\n background: this.treeStyle.levelBackgroundColor![node.level!],\r\n color: this.treeStyle.color!,\r\n };\r\n return style;\r\n }\r\n return {};\r\n }\r\n getNodePadding(node: SmartTreeNode) {\r\n if (this.treeStyle) {\r\n var style = node.selected\r\n ? {\r\n 'padding-left': 15 * node.level! + 'px',\r\n }\r\n : {\r\n 'padding-left': 15 * node.level! + 'px',\r\n };\r\n return style;\r\n }\r\n return {};\r\n }\r\n\r\n customButtonClicked(event: any, button: SmartTreeNodeButton, close?: boolean): void {\r\n event.stopPropagation();\r\n\r\n if (button.type === SmartTreeNodeButtonType.MENU) {\r\n return;\r\n }\r\n\r\n if (!button.callback) {\r\n throw new Error(`Button with name ${button.label || button.icon} does not have a callback!`);\r\n }\r\n button.callback(button.args);\r\n if (close) {\r\n let openMenus = this.trigger.filter(\r\n (matMenuTrigger: MatMenuTrigger) => matMenuTrigger.menuOpen\r\n );\r\n openMenus.forEach((matMenuTrigger: MatMenuTrigger) => {\r\n matMenuTrigger.closeMenu();\r\n });\r\n }\r\n }\r\n\r\n getClassesForTreeNode(node: SmartTreeNode): string[] {\r\n let classes: string[] = [];\r\n\r\n if (node.expanded) {\r\n classes.push(this.getCustomClass('expanded', node.level));\r\n } else {\r\n classes.push(this.getCustomClass('collapsed', node.level));\r\n }\r\n\r\n if (node.selected) {\r\n classes.push(this.getCustomClass('selected', node.level));\r\n } else {\r\n classes.push(this.getCustomClass('unselected', node.level));\r\n }\r\n\r\n if (node.level !== 0) {\r\n classes.push(this.getCustomClass('child', node.level));\r\n }\r\n\r\n return classes;\r\n }\r\n\r\n getInnerClassesForTreeNode(node: SmartTreeNode): string[] {\r\n let classes: string[] = [];\r\n\r\n if (node.expanded) {\r\n classes.push(this.getCustomClass('inner-expanded', node.level));\r\n } else {\r\n classes.push(this.getCustomClass('inner-collapsed', node.level));\r\n }\r\n\r\n if (node.selected) {\r\n classes.push(this.getCustomClass('inner-selected', node.level));\r\n } else {\r\n classes.push(this.getCustomClass('inner-unselected', node.level));\r\n }\r\n\r\n return classes;\r\n }\r\n\r\n getClassesForTreeNodeChildren(node: SmartTreeNode): string[] {\r\n let classes: string[] = [];\r\n\r\n classes.push(this.getCustomClass('group', node.level));\r\n\r\n return classes;\r\n }\r\n\r\n getCustomClass(cssClass: string, plusProperty: any): string {\r\n return `${cssClass}-${plusProperty}`;\r\n }\r\n}\r\n","<div class=\"smartTreeContainer\">\r\n <smart-ui-action-toolbar\r\n *ngIf=\"uiActionModels.length\"\r\n [uiActionModels]=\"uiActionModels\"\r\n ></smart-ui-action-toolbar>\r\n <mat-tree\r\n #tree\r\n *ngIf=\"treeData\"\r\n [dataSource]=\"dataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"sm-tree\"\r\n >\r\n <mat-nested-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodeToggle=\"{{ getIfExpanded(node) }}\"\r\n [ngClass]=\"getClassesForTreeNode(node)\"\r\n [ngStyle]=\"getNodeStyle(node)\"\r\n >\r\n <div\r\n [ngStyle]=\"getNodePadding(node)\"\r\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\r\n class=\"mat-tree-node sm-tree-node\"\r\n (click)=\"onNodeClick($event, node)\"\r\n >\r\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' + node.name\">\r\n <mat-icon\r\n class=\"mat-icon-rtl-mirror\"\r\n matTreeNodeToggle\r\n (click)=\"onOpenNode($event, node)\"\r\n >\r\n <div *ngIf=\"hasChild(node.level, node)\">\r\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\r\n </div>\r\n </mat-icon>\r\n </button>\r\n <smart-icon [icon]=\"node.icon\"> </smart-icon>\r\n <div class=\"sm-tree-row\" [ngClass]=\"node.classes\">\r\n <div class=\"sm-tree-row-caption\">\r\n {{ node.caption }}\r\n </div>\r\n <div class=\"sm-shortDescription-spacer\"></div>\r\n <div class=\"sm-tree-row-shortDescription\">\r\n {{ node.shortDescription }}\r\n </div>\r\n <div class=\"sm-shortDescription-button-spacer\"></div>\r\n <div *ngIf=\"node.button\" class=\"sm-tree-node-button\" [ngSwitch]=\"node.button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, node.button)\"\r\n *ngSwitchCase=\"smartTreeNodeButtonType.ICON\"\r\n mat-icon-button\r\n >\r\n <smart-icon title=\"{{ node.button.icon }}\" [icon]=\"node.button.icon\"></smart-icon>\r\n </button>\r\n <div *ngSwitchCase=\"smartTreeNodeButtonType.MENU\">\r\n <button\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, node.button, true)\"\r\n >\r\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon\r\n >{{ node.button.label }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button\r\n *ngFor=\"let button of node.button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, button, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon\r\n >{{ button.label }}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n <button\r\n (click)=\"customButtonClicked($event, node.button)\"\r\n *ngSwitchCase=\"smartTreeNodeButtonType.NORMAL\"\r\n mat-raised-button\r\n >\r\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon>\r\n {{ node.button.icon }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n [class.sm-tree-invisible]=\"!treeControl.isExpanded(node)\"\r\n [ngClass]=\"getClassesForTreeNodeChildren(node)\"\r\n role=\"group\"\r\n >\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </div>\r\n </mat-nested-tree-node>\r\n </mat-tree>\r\n <div *ngIf=\"!treeData\">\r\n <h3>\r\n {{ errorMessage }}\r\n </h3>\r\n </div>\r\n</div>\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { SmartIconModule } from '@smartbit4all/icon';\r\nimport { SmarttreeGenericService } from './smarttree-generic.service';\r\nimport { SmartTreeComponent } from './smarttree.component';\r\nimport { SmarttreeService } from './smarttree.service';\r\nimport { SmartViewContextModule } from '../view-context/smart-view-context.module';\r\n\r\n@NgModule({\r\n declarations: [SmartTreeComponent],\r\n imports: [\r\n BrowserModule,\r\n MatCommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTreeModule,\r\n MatMenuModule,\r\n SmartIconModule,\r\n SmartViewContextModule,\r\n ],\r\n exports: [SmartTreeComponent],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [SmarttreeService, SmarttreeGenericService],\r\n})\r\nexport class SmarttreeModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { SmartExpandableSectionModule } from '@smartbit4all/expandable-section';\r\nimport { SmartformModule } from '@smartbit4all/form';\r\nimport { SmartSessionModule } from './session/smart-session.module';\r\nimport { SmartFileUploaderComponent } from './smart-client/smart-file-uploader/smart-file-uploader.component';\r\nimport { SmartNgClientService } from './smart-ng-client.service';\r\nimport { SmartViewContextModule } from './view-context/smart-view-context.module';\r\nimport { SmarttreeModule } from './smart-tree/smarttree.module';\r\n\r\n@NgModule({\r\n declarations: [SmartFileUploaderComponent],\r\n imports: [\r\n BrowserModule,\r\n MatCommonModule,\r\n SmartSessionModule,\r\n SmartViewContextModule,\r\n SmartformModule,\r\n SmartExpandableSectionModule,\r\n ],\r\n exports: [\r\n SmartSessionModule,\r\n SmartViewContextModule,\r\n SmartFileUploaderComponent,\r\n SmarttreeModule,\r\n ],\r\n providers: [SmartNgClientService],\r\n})\r\nexport class SmartNgClientModule {}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport interface SmartAuthenticationServiceInterface {\r\n bffApisHaveBeenSetUp: boolean;\r\n headersUpdated: Subject<void>;\r\n}\r\n\r\n@Injectable()\r\nexport class SmartAuthService implements SmartAuthenticationServiceInterface, OnDestroy {\r\n bffApisHaveBeenSetUp: boolean = false;\r\n private _destroy$: Subject<void> = new Subject();\r\n headersUpdated: Subject<void> = new SmartSubject(this._destroy$);\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n}\r\n","/*\r\n * Public API Surface of smarttree\r\n */\r\n\r\nexport * from './smarttree.service';\r\nexport * from './smarttree.component';\r\nexport * from './smarttree.module';\r\nexport * from './smarttree.model';\r\nexport * from './smarttree-generic.service';\r\n","import { Inject, Injector } from '@angular/core';\r\nimport { SmartForm, SmartformComponent, SophisticatedValueChange } from '@smartbit4all/form';\r\nimport { GridOptions, SmartGrid, SmartGridComponent } from '@smartbit4all/grid';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\nimport { SmarttreeGenericService } from '../smart-tree/projects';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport {\r\n ComponentModel,\r\n ComponentModelChange,\r\n DataChange,\r\n DataChangeKind,\r\n SmartTranslateService,\r\n SmartViewContextService,\r\n UiAction,\r\n UiActionAdditionalParams,\r\n UiActionDescriptorService,\r\n UiActionModel,\r\n UiActionRequest,\r\n UiActionService,\r\n UiActionSpecificDemandResponse,\r\n UseUiAction,\r\n} from '../view-context/projects';\r\nimport { SmartAuthenticationServiceInterface } from './smart-authentication.service';\r\n\r\nexport abstract class SmartComponentApiClient<T> implements UseUiAction {\r\n protected _destroy$: Subject<void> = new Subject();\r\n\r\n protected sendDataChanges: boolean = false;\r\n\r\n private _useAutoSubmit: boolean = false;\r\n private _useAutoSubmitTurnedOff: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n protected get useAutoSubmit(): boolean {\r\n return this._useAutoSubmit;\r\n }\r\n protected set useAutoSubmit(useAutoSubmit: boolean) {\r\n this._useAutoSubmit = useAutoSubmit;\r\n if (this._useAutoSubmit) {\r\n this.subscribeToAutoSubmit();\r\n this.reSubscribeToChange.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {\r\n this.subscribeToAutoSubmit();\r\n });\r\n } else {\r\n this._useAutoSubmitTurnedOff.next();\r\n }\r\n }\r\n\r\n private subscribeToAutoSubmit(): void {\r\n this.submit.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {\r\n this.submitForms();\r\n this.submit.complete();\r\n });\r\n }\r\n\r\n private detectChange: SmartSubject<ComponentModelChange> = new SmartSubject(this._destroy$);\r\n\r\n private _uuid?: string;\r\n\r\n private uuidOfPageHasBeenChangedSubscription?: Subscription;\r\n\r\n get uuid(): string | undefined {\r\n return this._uuid;\r\n }\r\n set uuid(uuid: string | undefined) {\r\n let firstUuid: boolean = true;\r\n if (this.uuid) {\r\n this.viewContext.unfollow(this.uuid);\r\n firstUuid = false;\r\n }\r\n this._uuid = uuid;\r\n if (uuid) {\r\n this.widgets.widgets.forEach((ref, key) => {\r\n if (ref instanceof SmartGridComponent) {\r\n ref.uuid = uuid;\r\n } else if (!ref && !firstUuid) {\r\n console.error(`Provided reference for ${key} is undefined on uuid change.`);\r\n }\r\n });\r\n if (!this.uuidOfPageHasBeenChangedSubscription) {\r\n this.uuidOfPageHasBeenChangedSubscription = this.viewContext.uuidOfPageHasBeenChanged\r\n .pipe(takeUntil(this._destroy$))\r\n .subscribe((pageName) => {\r\n if (pageName === this.pageName) {\r\n this.run();\r\n }\r\n });\r\n }\r\n }\r\n this.viewContext.follow(this._uuid!, this.detectChange);\r\n }\r\n\r\n private _model: ComponentModel | undefined;\r\n\r\n get model(): ComponentModel | undefined {\r\n return this._model;\r\n }\r\n set model(model: ComponentModel | undefined) {\r\n this._model = model;\r\n\r\n this.initComponentByModel();\r\n }\r\n\r\n private _data?: T;\r\n\r\n get data(): T | undefined {\r\n return this._data;\r\n }\r\n set data(model: T | undefined) {\r\n this._data = model;\r\n this.dataChanged.next();\r\n }\r\n\r\n public uiActionModels: UiActionModel[] = [];\r\n\r\n public dataChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n // UseUiAction\r\n submit: Subject<void> = new SmartSubject(this._destroy$);\r\n reSubscribeToChange: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n // Grid\r\n smartGrid?: SmartGrid;\r\n\r\n // Services\r\n protected viewContext: SmartViewContextService;\r\n protected uiActionService: UiActionService;\r\n protected uiActionDescriptorService: UiActionDescriptorService;\r\n protected translate?: SmartTranslateService;\r\n\r\n // Tree\r\n private _smartTreeService?: SmarttreeGenericService;\r\n\r\n public get smartTreeService(): SmarttreeGenericService | undefined {\r\n return this._smartTreeService;\r\n }\r\n public set smartTreeService(smartTreeService: SmarttreeGenericService | undefined) {\r\n if (this._smartTreeService !== undefined) {\r\n throw Error('The default tree has already set up!');\r\n }\r\n this._smartTreeService = smartTreeService;\r\n }\r\n\r\n // Contained Widgets\r\n widgets: WidgetMap<SmartGridComponent | SmarttreeGenericService | undefined> = new WidgetMap();\r\n\r\n formWidgets: WidgetMap<SmartformComponent | undefined> = new WidgetMap();\r\n\r\n constructor(\r\n protected inject: Injector,\r\n protected auth: SmartAuthenticationServiceInterface,\r\n @Inject('pageName') protected pageName: string\r\n ) {\r\n this.detectChange.subscribe((change: ComponentModelChange) => {\r\n this.handleChanges(change);\r\n });\r\n\r\n this.viewContext = inject.get(SmartViewContextService);\r\n\r\n this.uiActionService = inject.get(UiActionService);\r\n this.uiActionDescriptorService = inject.get(UiActionDescriptorService);\r\n }\r\n\r\n _ngOnInit(): void {\r\n this.run();\r\n }\r\n _ngOnDestroy(): void {\r\n this.viewContext.unfollow(this.uuid!);\r\n this.widgets.clearWidgets();\r\n\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n initComponentByModel(): void {\r\n this.initData();\r\n this.initActions();\r\n\r\n // TODO: layout, valueSet, widgets\r\n }\r\n\r\n initData(): void {\r\n if (this.model?.data) {\r\n this.data = this.model?.data as any;\r\n }\r\n }\r\n\r\n initActions(): void {\r\n if (this.model?.actions) {\r\n this.uiActionModels = this.model?.actions.map((uiAction: UiAction) => {\r\n return {\r\n serviceToUse: this,\r\n uiAction,\r\n };\r\n });\r\n }\r\n }\r\n\r\n run(): void {\r\n if (this.auth.bffApisHaveBeenSetUp) {\r\n this.load();\r\n } else {\r\n this.auth.headersUpdated.subscribe(() => {\r\n this.load();\r\n });\r\n }\r\n }\r\n\r\n async load(): Promise<void> {\r\n this.uuid = this.viewContext.getUuidOfPage(this.pageName);\r\n this.model = await this.viewContext.load(this.uuid);\r\n }\r\n\r\n //#region UseUiAction\r\n getAdditionalParams(uiAction: UiAction): UiActionAdditionalParams {\r\n return {\r\n forTextArea: '',\r\n forTextField: '',\r\n };\r\n }\r\n getModel() {\r\n return this.data;\r\n }\r\n\r\n async performUiActionRequest(\r\n uiActionRequest: UiActionRequest,\r\n widgetId?: string,\r\n nodeId?: string\r\n ): Promise<any> {\r\n if (uiActionRequest.params['_files']) {\r\n const param = uiActionRequest.params['param'];\r\n const files = uiActionRequest.params['_files'];\r\n const isMultiple = uiActionRequest.params['isMultiple'];\r\n delete uiActionRequest.params['param'];\r\n delete uiActionRequest.params['_files'];\r\n delete uiActionRequest.params['isMultiple'];\r\n\r\n if (!isMultiple) {\r\n await this.viewContext.performUploadAction(this.uuid!, uiActionRequest, param, files[0]);\r\n } else {\r\n await this.viewContext.performUploadMultipleAction(\r\n this.uuid!,\r\n uiActionRequest,\r\n param,\r\n files\r\n );\r\n }\r\n } else if (widgetId && nodeId) {\r\n await this.viewContext.performWidgetAction(this.uuid!, widgetId, nodeId, uiActionRequest);\r\n } else if (widgetId) {\r\n await this.viewContext.performWidgetMainAction(this.uuid!, widgetId, uiActionRequest);\r\n } else {\r\n await this.viewContext.performAction(this.uuid!, uiActionRequest);\r\n }\r\n }\r\n\r\n handleSpecificDemandsAsynchronously(\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<UiActionSpecificDemandResponse> {\r\n throw new Error('handleSpecificDemandsAsynchronously method not implemented.');\r\n }\r\n //#endregion\r\n\r\n /**\r\n * Submits all the registered forms in the SmartComponent\r\n */\r\n public submitForms(): void {\r\n Object.keys(this.formWidgets.widgets).map((key: string) => {\r\n this.formWidgets.widgets.get(key)?.submitForm();\r\n });\r\n }\r\n\r\n public addGrid(\r\n smartGrid: SmartGrid,\r\n options: GridOptions,\r\n useAsDefaultGrid?: boolean,\r\n componentReference?: SmartGridComponent\r\n ): SmartGrid {\r\n smartGrid.options = options;\r\n smartGrid.uiActionService = this.uiActionService;\r\n smartGrid.uiActionDescriptorService = this.uiActionDescriptorService;\r\n smartGrid.serviceToUse = this;\r\n smartGrid.viewContextService = this.viewContext;\r\n\r\n this.widgets.addWidget(smartGrid.gridIdentifier, componentReference);\r\n\r\n if (useAsDefaultGrid) {\r\n this.smartGrid = smartGrid;\r\n return this.smartGrid;\r\n }\r\n\r\n return smartGrid;\r\n }\r\n\r\n public addForm(\r\n smartFormId: string,\r\n smartForm: SmartForm,\r\n componentReference?: SmartformComponent\r\n ): SmartForm {\r\n this.formWidgets.addWidget(smartFormId, componentReference);\r\n\r\n if (this.sendDataChanges && componentReference) {\r\n smartForm.useOnValueChangeEvent = true;\r\n\r\n componentReference.sophisticatedValueChange\r\n .pipe(takeUntil(this._destroy$))\r\n .subscribe((valueChange: SophisticatedValueChange) => {\r\n this.handleValueChanges(valueChange);\r\n });\r\n }\r\n\r\n return smartForm;\r\n }\r\n\r\n public setUpDefaultTree(treeId: string): void {\r\n this.smartTreeService = new SmarttreeGenericService(this.inject, this.pageName, treeId);\r\n this.widgets.addWidget(treeId, this.smartTreeService);\r\n }\r\n\r\n public createTreeService(treeId: string): SmarttreeGenericService {\r\n const treeService = new SmarttreeGenericService(this.inject, this.pageName, treeId);\r\n this.widgets.addWidget(treeId, treeService);\r\n\r\n return treeService;\r\n }\r\n\r\n public addFileUploader(\r\n uiActionCode: string,\r\n fileFormats?: string[],\r\n maxSizeMb?: number,\r\n isMultiple?: boolean\r\n ): SmartFileUploader {\r\n return {\r\n uiActionCode,\r\n smartComponent: this,\r\n fileFormats,\r\n isMultiple,\r\n maxSizeMb,\r\n };\r\n }\r\n\r\n // #region handle changes\r\n private handleValueChanges(valueChange: SophisticatedValueChange): void {\r\n let dataChange: DataChange;\r\n if (valueChange.key.includes('.')) {\r\n const source = valueChange.key.split('.')[0];\r\n const valueKey = valueChange.key.split('.')[1];\r\n dataChange = {\r\n kind: valueChange.kind === 'basic' ? DataChangeKind.Widget : DataChangeKind.Selection,\r\n source,\r\n values: [[valueKey, valueChange.value]],\r\n };\r\n } else {\r\n dataChange = {\r\n kind: valueChange.kind === 'basic' ? DataChangeKind.Widget : DataChangeKind.Selection,\r\n source: valueChange.key,\r\n values: [[valueChange.key, valueChange.value]],\r\n };\r\n }\r\n\r\n this.viewContext.dataChanged(this.uuid!, dataChange);\r\n }\r\n\r\n private handleChanges(change: ComponentModelChange): void {\r\n try {\r\n if (change.changedWidgets) {\r\n this.handleChangeWidgets(change.changedWidgets);\r\n }\r\n\r\n if (change.changes) {\r\n const changes = change.changes;\r\n Object.keys(changes).map((changeKey: string) => {\r\n if (changeKey.startsWith('data.')) {\r\n this.handleDataChange(changes, changeKey);\r\n } else if (changeKey.startsWith('layouts.') && this.model?.layouts) {\r\n this.handleLayoutChange(changes, changeKey);\r\n } else if (changeKey.startsWith('valueSets.') && this.model?.valueSets) {\r\n this.handleValueSetChange(changes, changeKey);\r\n } else if (changeKey === 'actions') {\r\n this.handleActionChange(changes, changeKey);\r\n } else if (changeKey === 'constraints') {\r\n this.handleConstraintChange(changes, changeKey);\r\n }\r\n });\r\n\r\n this.dataChanged.next();\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n this.model = change.value as ComponentModel;\r\n }\r\n\r\n if (!change.changedWidgets && !change.changes && change.value) {\r\n this.model = change.value as ComponentModel;\r\n }\r\n }\r\n\r\n private handleChangeWidgets(changedWidgets: string[]): void {\r\n changedWidgets.forEach((key: string) => {\r\n const reference = this.widgets.get(key);\r\n\r\n if (reference instanceof SmartGridComponent) {\r\n reference.refresh();\r\n } else if (reference instanceof SmarttreeGenericService) {\r\n reference.initialize();\r\n } else if (reference === undefined) {\r\n console.error(`Provided reference for ${key} is undefined.`);\r\n }\r\n });\r\n }\r\n\r\n private setValueDeeply(model: any, key: string, value: any): any {\r\n let splittedKeys = key.split('.');\r\n\r\n let deepModel: any[] = [model];\r\n let tempModel: any;\r\n\r\n for (let index = 0; index < splittedKeys.length; index++) {\r\n tempModel = deepModel[index];\r\n\r\n if (\r\n typeof tempModel[splittedKeys[index]] !== 'string' &&\r\n typeof tempModel[splittedKeys[index]] !== 'boolean' &&\r\n typeof tempModel[splittedKeys[index]] !== 'number' &&\r\n tempModel[splittedKeys[index]] !== undefined\r\n ) {\r\n deepModel.push(tempModel[splittedKeys[index]]);\r\n }\r\n\r\n if (index === splittedKeys.length - 1) {\r\n tempModel[splittedKeys[index]] = value;\r\n break;\r\n }\r\n }\r\n return model;\r\n }\r\n\r\n private handleDataChange(changes: { [key: string]: any }, changeKey: string): void {\r\n this.setValueDeeply(this.model, changeKey, changes[changeKey]);\r\n\r\n this.formWidgets.widgets.forEach(\r\n (formComponent: SmartformComponent | undefined, key: string) => {\r\n if (formComponent === undefined) {\r\n console.error(`Provided form reference for ${key} is undefined.`);\r\n } else {\r\n formComponent.refresh();\r\n }\r\n }\r\n );\r\n }\r\n\r\n private handleLayoutChange(changes: { [key: string]: any }, changeKey: string): void {\r\n let layoutKey = changeKey.split('.')[1];\r\n this.model!.layouts[layoutKey] = changes[changeKey];\r\n }\r\n\r\n private handleValueSetChange(changes: { [key: string]: any }, changeKey: string): void {\r\n let valueSetKey = changeKey.split('.')[1];\r\n this.model!.valueSets![valueSetKey] = changes[changeKey];\r\n }\r\n\r\n private handleActionChange(changes: { [key: string]: any }, changeKey: string): void {\r\n this.model!.actions = changes[changeKey];\r\n this.initActions();\r\n }\r\n\r\n private handleConstraintChange(changes: { [key: string]: any }, changeKey: string): void {\r\n this.model!.constraints = changes[changeKey];\r\n }\r\n\r\n // #endregion\r\n}\r\n\r\nexport class WidgetMap<T> {\r\n private _widgets: Map<string, T> = new Map();\r\n\r\n get widgets(): Map<string, T> {\r\n return this._widgets;\r\n }\r\n set widgets(widgets: Map<string, T>) {\r\n this._widgets = widgets;\r\n }\r\n addWidget(key: string, reference: T, isForm?: boolean): void {\r\n this._widgets.set(key, reference);\r\n }\r\n removeWidget(key: string): void {\r\n this._widgets.delete(key);\r\n }\r\n clearWidgets(): void {\r\n this._widgets.clear();\r\n }\r\n\r\n get(key: string): T | undefined {\r\n return this.widgets.get(key);\r\n }\r\n}\r\n\r\nexport interface SmartFileUploader {\r\n uiActionCode: string;\r\n maxSizeMb?: number;\r\n fileFormats?: string[];\r\n isMultiple?: boolean;\r\n smartComponent: SmartComponentApiClient<any>;\r\n}\r\n","import { Component, Inject, Injector, OnDestroy, OnInit } from '@angular/core';\r\nimport { SmartAuthService, SmartAuthenticationServiceInterface } from './smart-authentication.service';\r\nimport { SmartComponentApiClient } from './smart-component-api-client';\r\n\r\n@Component({\r\n\ttemplate: '',\r\n})\r\nexport abstract class SmartComponent<T> extends SmartComponentApiClient<T> implements OnInit, OnDestroy {\r\n\tconstructor(\r\n\t\tinject: Injector,\r\n\t\t@Inject(SmartAuthService) auth: SmartAuthenticationServiceInterface,\r\n\t\t@Inject('pageName') pageName: string\r\n\t) {\r\n\t\tsuper(inject, auth, pageName);\r\n\t}\r\n\tngOnInit(): void {\r\n\t\tthis._ngOnInit();\r\n\t}\r\n\tngOnDestroy(): void {\r\n\t\tthis._ngOnDestroy();\r\n\t}\r\n}\r\n","import { Inject, Injectable, Injector, OnDestroy, OnInit } from '@angular/core';\r\nimport { SmartAuthService, SmartAuthenticationServiceInterface } from './smart-authentication.service';\r\nimport { SmartComponentApiClient } from './smart-component-api-client';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport abstract class SmartService<T> extends SmartComponentApiClient<T> implements OnInit, OnDestroy {\r\n\tconstructor(\r\n\t\tinject: Injector,\r\n\t\t@Inject(SmartAuthService) auth: SmartAuthenticationServiceInterface,\r\n\t\t@Inject('pageName') pageName: string\r\n\t) {\r\n\t\tsuper(inject, auth, pageName);\r\n\t}\r\n\tngOnInit(): void {\r\n\t\tthis._ngOnInit();\r\n\t}\r\n\tngOnDestroy(): void {\r\n\t\tthis._ngOnDestroy();\r\n\t}\r\n}\r\n","/*\r\n * Public API Surface of smart-ng-client\r\n */\r\n\r\nexport * from './lib/smart-ng-client.service';\r\nexport * from './lib/smart-ng-client.module';\r\nexport * from './lib/smart-client/smart-file-uploader/smart-file-uploader.component';\r\n\r\nexport * from './lib/view-context/projects';\r\nexport * from './lib/session/projects';\r\n\r\nexport * from './lib/smart-client/projects';\r\nexport * from './lib/smart-tree/projects';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './projects';\n"],"names":["CustomHttpParameterCodec","BASE_PATH","COLLECTION_FORMATS","Configuration","i2.Configuration","i1.SessionService","i2.SmartCookieService","i1.SmartViewContextService","i1.SmartSessionService","i2.SmartViewContextService","i1.SmartCookieService","i1","i2","i3.SmartDevToolService","i1.SmartDevToolDialogService","i3","i4","i5","i6.SmartDevToolDatePipe","i1.SmartDevToolService","i1.SmartSessionTimerService","catchError","i3.SmartViewContextService","i1.SmartViewContextErrorDialogService","i2.UiActionDescriptorService","i1.UiActionConfirmDialogService","i1.UiActionInputDialogService","i1.UiActionFileUploadDialogService","i2.UiActionInputDialogService","i3.UiActionFileUploadDialogService","i1.UiActionService","i1.UiActionDescriptorService","i1.UiActionToolbarComponent","i7"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"smartbit4all-ng-client.mjs","sources":["../../../projects/smart-ng-client/src/lib/session/api/encoder.ts","../../../projects/smart-ng-client/src/lib/session/api/variables.ts","../../../projects/smart-ng-client/src/lib/session/api/configuration.ts","../../../projects/smart-ng-client/src/lib/session/api/api/session.service.ts","../../../projects/smart-ng-client/src/lib/session/api/api/api.ts","../../../projects/smart-ng-client/src/lib/session/cookie-service/smart-cookie.service.ts","../../../projects/smart-ng-client/src/lib/session/smart-session.service.ts","../../../projects/smart-ng-client/src/lib/view-context/api/encoder.ts","../../../projects/smart-ng-client/src/lib/view-context/api/variables.ts","../../../projects/smart-ng-client/src/lib/view-context/api/configuration.ts","../../../projects/smart-ng-client/src/lib/view-context/api/api/view.service.ts","../../../projects/smart-ng-client/src/lib/view-context/api/api/api.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/closeResult.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/dataChangeKind.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/messageOptionType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/messageType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/uiActionButtonIconPos.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/uiActionButtonType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/uiActionFeedbackType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/uiActionInputType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/viewEventHandler.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/viewState.ts","../../../projects/smart-ng-client/src/lib/view-context/api/model/viewType.ts","../../../projects/smart-ng-client/src/lib/view-context/api/api.module.ts","../../../projects/smart-ng-client/src/lib/view-context/message-dialog/message-dialog.component.ts","../../../projects/smart-ng-client/src/lib/view-context/message-dialog/message-dialog.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context.service.ts","../../../projects/smart-ng-client/src/lib/smart-ng-client.service.ts","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool.service.ts","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.ts","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.ts","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.html","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.ts","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.html","../../../projects/smart-ng-client/src/lib/session/dev-tool/smart-dev-tool.interceptor.ts","../../../projects/smart-ng-client/src/lib/session/smart-session-handler.service.ts","../../../projects/smart-ng-client/src/lib/session/smart-timer/smart-session-timer.service.ts","../../../projects/smart-ng-client/src/lib/session/smart-timer/smart-session-timer.component.ts","../../../projects/smart-ng-client/src/lib/session/smart-timer/smart-session-timer.component.html","../../../projects/smart-ng-client/src/lib/session/projects.ts","../../../projects/smart-ng-client/src/lib/session/smart-error-catching.interceptor.ts","../../../projects/smart-ng-client/src/lib/session/smart-header-maintainer.interceptor.ts","../../../projects/smart-ng-client/src/lib/session/smart-session.module.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context.interceptor.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-view-redirect/smart-view-redirect.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/ui-action.descriptor.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/ui-action.service.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/ui-action-toolbar.component.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/ui-action-toolbar.component.html","../../../projects/smart-ng-client/src/lib/view-context/smart-view-context.module.ts","../../../projects/smart-ng-client/src/lib/view-context/smart-ui-action/ui-action.model.ts","../../../projects/smart-ng-client/src/lib/view-context/projects.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart-file-uploader/smart-file-uploader.component.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart-file-uploader/smart-file-uploader.component.html","../../../projects/smart-ng-client/src/lib/smart-tree/tree-api/encoder.ts","../../../projects/smart-ng-client/src/lib/smart-tree/tree-api/variables.ts","../../../projects/smart-ng-client/src/lib/smart-tree/tree-api/configuration.ts","../../../projects/smart-ng-client/src/lib/smart-tree/tree-api/api/tree.service.ts","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree.model.ts","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree.service.ts","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree-generic.service.ts","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree.component.ts","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree.component.html","../../../projects/smart-ng-client/src/lib/smart-tree/smarttree.module.ts","../../../projects/smart-ng-client/src/lib/smart-ng-client.module.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart-authentication.service.ts","../../../projects/smart-ng-client/src/lib/smart-tree/projects.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart-component-api-client.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart.component.ts","../../../projects/smart-ng-client/src/lib/smart-client/smart.service.ts","../../../projects/smart-ng-client/src/projects.ts","../../../projects/smart-ng-client/src/smartbit4all-ng-client.ts"],"sourcesContent":["import { HttpParameterCodec } from '@angular/common/http';\r\n\r\n/**\r\n * Custom HttpParameterCodec\r\n * Workaround for https://github.com/angular/angular/issues/18261\r\n */\r\nexport class CustomHttpParameterCodec implements HttpParameterCodec {\r\n encodeKey(k: string): string {\r\n return encodeURIComponent(k);\r\n }\r\n encodeValue(v: string): string {\r\n return encodeURIComponent(v);\r\n }\r\n decodeKey(k: string): string {\r\n return decodeURIComponent(k);\r\n }\r\n decodeValue(v: string): string {\r\n return decodeURIComponent(v);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const BASE_PATH = new InjectionToken<string>('basePath');\r\nexport const COLLECTION_FORMATS = {\r\n 'csv': ',',\r\n 'tsv': ' ',\r\n 'ssv': ' ',\r\n 'pipes': '|'\r\n}\r\n","import { HttpParameterCodec } from '@angular/common/http';\r\nimport { Param } from './param';\r\n\r\nexport interface ConfigurationParameters {\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n /**\r\n * Takes care of encoding query- and form-parameters.\r\n */\r\n encoder?: HttpParameterCodec;\r\n /**\r\n * Override the default method for encoding path parameters in various\r\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\r\n * <p>\r\n * See {@link README.md} for more details\r\n * </p>\r\n */\r\n encodeParam?: (param: Param) => string;\r\n /**\r\n * The keys are the names in the securitySchemes section of the OpenAPI\r\n * document. They should map to the value used for authentication\r\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\r\n */\r\n credentials?: {[ key: string ]: string | (() => string | undefined)};\r\n}\r\n\r\nexport class Configuration {\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n /**\r\n * Takes care of encoding query- and form-parameters.\r\n */\r\n encoder?: HttpParameterCodec;\r\n /**\r\n * Encoding of various path parameter\r\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\r\n * <p>\r\n * See {@link README.md} for more details\r\n * </p>\r\n */\r\n encodeParam: (param: Param) => string;\r\n /**\r\n * The keys are the names in the securitySchemes section of the OpenAPI\r\n * document. They should map to the value used for authentication\r\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\r\n */\r\n credentials: {[ key: string ]: string | (() => string | undefined)};\r\n\r\n constructor(configurationParameters: ConfigurationParameters = {}) {\r\n this.apiKeys = configurationParameters.apiKeys;\r\n this.username = configurationParameters.username;\r\n this.password = configurationParameters.password;\r\n this.accessToken = configurationParameters.accessToken;\r\n this.basePath = configurationParameters.basePath;\r\n this.withCredentials = configurationParameters.withCredentials;\r\n this.encoder = configurationParameters.encoder;\r\n if (configurationParameters.encodeParam) {\r\n this.encodeParam = configurationParameters.encodeParam;\r\n }\r\n else {\r\n this.encodeParam = param => this.defaultEncodeParam(param);\r\n }\r\n if (configurationParameters.credentials) {\r\n this.credentials = configurationParameters.credentials;\r\n }\r\n else {\r\n this.credentials = {};\r\n }\r\n }\r\n\r\n /**\r\n * Select the correct content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param contentTypes - the array of content types that are available for selection\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\r\n if (contentTypes.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = contentTypes.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return contentTypes[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Select the correct accept content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param accepts - the array of content types that are available for selection.\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderAccept(accepts: string[]): string | undefined {\r\n if (accepts.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = accepts.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return accepts[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Check if the given MIME is a JSON MIME.\r\n * JSON MIME examples:\r\n * application/json\r\n * application/json; charset=UTF8\r\n * APPLICATION/JSON\r\n * application/vnd.company+json\r\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\r\n * @return True if the given MIME is JSON, false otherwise.\r\n */\r\n public isJsonMime(mime: string): boolean {\r\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\r\n return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\r\n }\r\n\r\n public lookupCredential(key: string): string | undefined {\r\n const value = this.credentials[key];\r\n return typeof value === 'function'\r\n ? value()\r\n : value;\r\n }\r\n\r\n private defaultEncodeParam(param: Param): string {\r\n // This implementation exists as fallback for missing configuration\r\n // and for backwards compatibility to older typescript-angular generator versions.\r\n // It only works for the 'simple' parameter style.\r\n // Date-handling only works for the 'date-time' format.\r\n // All other styles and Date-formats are probably handled incorrectly.\r\n //\r\n // But: if that's all you need (i.e.: the most common use-case): no need for customization!\r\n\r\n const value = param.dataFormat === 'date-time'\r\n ? (param.value as Date).toISOString()\r\n : param.value;\r\n\r\n return encodeURIComponent(String(value));\r\n }\r\n}\r\n","/**\r\n * Session api\r\n * Session api...\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n/* tslint:disable:no-unused-variable member-ordering */\r\n\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams,\r\n HttpResponse, HttpEvent, HttpParameterCodec, HttpContext \r\n } from '@angular/common/http';\r\nimport { CustomHttpParameterCodec } from '../encoder';\r\nimport { Observable } from 'rxjs';\r\n\r\n// @ts-ignore\r\nimport { ApiError } from '../model/apiError';\r\n// @ts-ignore\r\nimport { GetAuthenticationProvidersResponse } from '../model/getAuthenticationProvidersResponse';\r\n// @ts-ignore\r\nimport { RefreshSessionRequest } from '../model/refreshSessionRequest';\r\n// @ts-ignore\r\nimport { SessionInfoData } from '../model/sessionInfoData';\r\n\r\n// @ts-ignore\r\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\r\nimport { Configuration } from '../configuration';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SessionService {\r\n\r\n protected basePath = 'http://localhost';\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n public encoder: HttpParameterCodec;\r\n\r\n constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) {\r\n if (configuration) {\r\n this.configuration = configuration;\r\n }\r\n if (typeof this.configuration.basePath !== 'string') {\r\n if (Array.isArray(basePath) && basePath.length > 0) {\r\n basePath = basePath[0];\r\n }\r\n\r\n if (typeof basePath !== 'string') {\r\n basePath = this.basePath;\r\n }\r\n this.configuration.basePath = basePath;\r\n }\r\n this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\r\n }\r\n\r\n\r\n // @ts-ignore\r\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\r\n if (typeof value === \"object\" && value instanceof Date === false) {\r\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\r\n } else {\r\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\r\n }\r\n return httpParams;\r\n }\r\n\r\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\r\n if (value == null) {\r\n return httpParams;\r\n }\r\n\r\n if (typeof value === \"object\") {\r\n if (Array.isArray(value)) {\r\n (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\r\n } else if (value instanceof Date) {\r\n if (key != null) {\r\n httpParams = httpParams.append(key, (value as Date).toISOString().substr(0, 10));\r\n } else {\r\n throw Error(\"key may not be null if value is Date\");\r\n }\r\n } else {\r\n Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\r\n httpParams, value[k], key != null ? `${key}.${k}` : k));\r\n }\r\n } else if (key != null) {\r\n httpParams = httpParams.append(key, value);\r\n } else {\r\n throw Error(\"key may not be null if value is not object or array\");\r\n }\r\n return httpParams;\r\n }\r\n\r\n /**\r\n * Returns the available authentication providers\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getAuthenticationProviders(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<GetAuthenticationProvidersResponse>;\r\n public getAuthenticationProviders(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<GetAuthenticationProvidersResponse>>;\r\n public getAuthenticationProviders(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<GetAuthenticationProvidersResponse>>;\r\n public getAuthenticationProviders(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/authenticationProviders`;\r\n return this.httpClient.request<GetAuthenticationProvidersResponse>('get', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Returns the existing session info\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getSession(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<SessionInfoData>;\r\n public getSession(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<SessionInfoData>>;\r\n public getSession(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<SessionInfoData>>;\r\n public getSession(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/session`;\r\n return this.httpClient.request<SessionInfoData>('get', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Refreshes the session\r\n * @param refreshSessionRequest \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public refreshSession(refreshSessionRequest: RefreshSessionRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<SessionInfoData>;\r\n public refreshSession(refreshSessionRequest: RefreshSessionRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<SessionInfoData>>;\r\n public refreshSession(refreshSessionRequest: RefreshSessionRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<SessionInfoData>>;\r\n public refreshSession(refreshSessionRequest: RefreshSessionRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (refreshSessionRequest === null || refreshSessionRequest === undefined) {\r\n throw new Error('Required parameter refreshSessionRequest was null or undefined when calling refreshSession.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/refresh`;\r\n return this.httpClient.request<SessionInfoData>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: refreshSessionRequest,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Sets the locale of the session\r\n * Sets the locale of the current session and returns the SessionInfoData\r\n * @param locale \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public setLocale(locale: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<SessionInfoData>;\r\n public setLocale(locale: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<SessionInfoData>>;\r\n public setLocale(locale: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<SessionInfoData>>;\r\n public setLocale(locale: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n if (locale === null || locale === undefined) {\r\n throw new Error('Required parameter locale was null or undefined when calling setLocale.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/locale/${this.configuration.encodeParam({name: \"locale\", value: locale, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}`;\r\n return this.httpClient.request<SessionInfoData>('post', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Creates a new session\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public startSession(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<SessionInfoData>;\r\n public startSession(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<SessionInfoData>>;\r\n public startSession(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<SessionInfoData>>;\r\n public startSession(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/json'\r\n ];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/session`;\r\n return this.httpClient.request<SessionInfoData>('put', `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\n","export * from \"./session.service\";\r\nimport { SessionService } from \"./session.service\";\r\nexport const SessionAPIS = [SessionService];\r\n","// This service is based on the `ng2-cookies` package which sadly is not a service and does\r\n// not use `DOCUMENT` injection and therefore doesn't work well with AoT production builds.\r\n// Package: https://github.com/BCJTI/ng2-cookies\r\n\r\nimport { Inject, Injectable, PLATFORM_ID } from \"@angular/core\";\r\nimport { DOCUMENT, isPlatformBrowser } from \"@angular/common\";\r\n\r\nexport type SameSite = \"Lax\" | \"None\" | \"Strict\";\r\n\r\nexport interface CookieOptions {\r\n expires?: number | Date;\r\n path?: string;\r\n domain?: string;\r\n secure?: boolean;\r\n sameSite?: SameSite;\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class SmartCookieService {\r\n private readonly documentIsAccessible: boolean;\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: Document,\r\n // Get the `PLATFORM_ID` so we can check if we're in a browser.\r\n @Inject(PLATFORM_ID) private platformId: any\r\n ) {\r\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\r\n }\r\n\r\n /**\r\n * Get cookie Regular Expression\r\n *\r\n * @param name Cookie name\r\n * @returns property RegExp\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n private static getCookieRegExp(name: string): RegExp {\r\n const escapedName: string = name.replace(/([\\[\\]\\{\\}\\(\\)\\|\\=\\;\\+\\?\\,\\.\\*\\^\\$])/gi, \"\\\\$1\");\r\n\r\n return new RegExp(\"(?:^\" + escapedName + \"|;\\\\s*\" + escapedName + \")=(.*?)(?:;|$)\", \"g\");\r\n }\r\n\r\n /**\r\n * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).\r\n *\r\n * @param encodedURIComponent A value representing an encoded URI component.\r\n *\r\n * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n private static safeDecodeURIComponent(encodedURIComponent: string): string {\r\n try {\r\n return decodeURIComponent(encodedURIComponent);\r\n } catch {\r\n // probably it is not uri encoded. return as is\r\n return encodedURIComponent;\r\n }\r\n }\r\n\r\n /**\r\n * Return `true` if {@link Document} is accessible, otherwise return `false`\r\n *\r\n * @param name Cookie name\r\n * @returns boolean - whether cookie with specified name exists\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n check(name: string): boolean {\r\n if (!this.documentIsAccessible) {\r\n return false;\r\n }\r\n name = encodeURIComponent(name);\r\n const regExp: RegExp = SmartCookieService.getCookieRegExp(name);\r\n return regExp.test(this.document.cookie);\r\n }\r\n\r\n /**\r\n * Get cookies by name\r\n *\r\n * @param name Cookie name\r\n * @returns property value\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n get(name: string): string {\r\n if (this.documentIsAccessible && this.check(name)) {\r\n name = encodeURIComponent(name);\r\n\r\n const regExp: RegExp = SmartCookieService.getCookieRegExp(name);\r\n const result: RegExpExecArray = regExp.exec(this.document.cookie)!;\r\n let results = result.input.split(\";\");\r\n\r\n let value: string | undefined;\r\n\r\n results.forEach((r: string) => {\r\n let values = r.split(`${name}=`);\r\n if (values[1] !== \"null\") {\r\n value = values[1];\r\n }\r\n });\r\n\r\n return value ?? \"\";\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n\r\n /**\r\n * Get all cookies in JSON format\r\n *\r\n * @returns all the cookies in json\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n getAll(): { [key: string]: string } {\r\n if (!this.documentIsAccessible) {\r\n return {};\r\n }\r\n\r\n const cookies: { [key: string]: string } = {};\r\n const document: any = this.document;\r\n\r\n if (document.cookie && document.cookie !== \"\") {\r\n document.cookie.split(\";\").forEach((currentCookie: any) => {\r\n const [cookieName, cookieValue] = currentCookie.split(\"=\");\r\n cookies[SmartCookieService.safeDecodeURIComponent(cookieName.replace(/^ /, \"\"))] =\r\n SmartCookieService.safeDecodeURIComponent(cookieValue);\r\n });\r\n }\r\n\r\n return cookies;\r\n }\r\n\r\n /**\r\n * Set cookie based on provided information\r\n *\r\n * @param name Cookie name\r\n * @param value Cookie value\r\n * @param expires Number of days until the cookies expires or an actual `Date`\r\n * @param path Cookie path\r\n * @param domain Cookie domain\r\n * @param secure Secure flag\r\n * @param sameSite OWASP samesite token `Lax`, `None`, or `Strict`. Defaults to `Lax`\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n set(\r\n name: string,\r\n value: string,\r\n expires?: CookieOptions[\"expires\"],\r\n path?: CookieOptions[\"path\"],\r\n domain?: CookieOptions[\"domain\"],\r\n secure?: CookieOptions[\"secure\"],\r\n sameSite?: SameSite\r\n ): void;\r\n\r\n /**\r\n * Set cookie based on provided information\r\n *\r\n * Cookie's parameters:\r\n * <pre>\r\n * expires Number of days until the cookies expires or an actual `Date`\r\n * path Cookie path\r\n * domain Cookie domain\r\n * secure Secure flag\r\n * sameSite OWASP samesite token `Lax`, `None`, or `Strict`. Defaults to `Lax`\r\n * </pre>\r\n *\r\n * @param name Cookie name\r\n * @param value Cookie value\r\n * @param options Body with cookie's params\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n set(name: string, value: string, options?: CookieOptions): void;\r\n\r\n set(\r\n name: string,\r\n value: string,\r\n expiresOrOptions?: CookieOptions[\"expires\"] | CookieOptions,\r\n path?: CookieOptions[\"path\"],\r\n domain?: CookieOptions[\"domain\"],\r\n secure?: CookieOptions[\"secure\"],\r\n sameSite?: SameSite\r\n ): void {\r\n if (!this.documentIsAccessible) {\r\n return;\r\n }\r\n\r\n if (\r\n typeof expiresOrOptions === \"number\" ||\r\n expiresOrOptions instanceof Date ||\r\n path ||\r\n domain ||\r\n secure ||\r\n sameSite\r\n ) {\r\n const optionsBody = {\r\n expires: expiresOrOptions as CookieOptions[\"expires\"],\r\n path,\r\n domain,\r\n secure,\r\n sameSite: sameSite ? sameSite : \"Lax\",\r\n };\r\n\r\n this.set(name, value, optionsBody);\r\n return;\r\n }\r\n\r\n let cookieString: string = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";\";\r\n\r\n const options = expiresOrOptions ? expiresOrOptions : {};\r\n\r\n if (options.expires) {\r\n if (typeof options.expires === \"number\") {\r\n const dateExpires: Date = new Date(\r\n new Date().getTime() + options.expires * 1000 * 60 * 60 * 24\r\n );\r\n\r\n cookieString += \"expires=\" + dateExpires.toUTCString() + \";\";\r\n } else {\r\n cookieString += \"expires=\" + options.expires.toUTCString() + \";\";\r\n }\r\n }\r\n\r\n if (options.path) {\r\n cookieString += \"path=\" + options.path + \";\";\r\n } else {\r\n cookieString += \"path=/;\";\r\n }\r\n\r\n if (options.domain) {\r\n cookieString += \"domain=\" + options.domain + \";\";\r\n }\r\n\r\n if (options.secure === false && options.sameSite === \"None\") {\r\n options.secure = true;\r\n console.warn(\r\n `[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +\r\n `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`\r\n );\r\n }\r\n if (options.secure) {\r\n cookieString += \"secure;\";\r\n }\r\n\r\n if (!options.sameSite) {\r\n options.sameSite = \"Lax\";\r\n }\r\n cookieString += \"sameSite=\" + options.sameSite + \";\";\r\n this.document.cookie = cookieString;\r\n }\r\n\r\n /**\r\n * Delete cookie by name\r\n *\r\n * @param name Cookie name\r\n * @param path Cookie path\r\n * @param domain Cookie domain\r\n * @param secure Cookie secure flag\r\n * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n delete(\r\n name: string,\r\n path?: CookieOptions[\"path\"],\r\n domain?: CookieOptions[\"domain\"],\r\n secure?: CookieOptions[\"secure\"],\r\n sameSite: SameSite = \"Lax\"\r\n ): void {\r\n if (!this.documentIsAccessible) {\r\n return;\r\n }\r\n const expiresDate = new Date(\"Thu, 01 Jan 1970 00:00:01 GMT\");\r\n this.set(name, \"\", { expires: expiresDate, path, domain, secure, sameSite });\r\n }\r\n\r\n /**\r\n * Delete all cookies\r\n *\r\n * @param path Cookie path\r\n * @param domain Cookie domain\r\n * @param secure Is the Cookie secure\r\n * @param sameSite Is the cookie same site\r\n *\r\n * @author: Stepan Suvorov\r\n * @since: 1.0.0\r\n */\r\n deleteAll(\r\n path?: CookieOptions[\"path\"],\r\n domain?: CookieOptions[\"domain\"],\r\n secure?: CookieOptions[\"secure\"],\r\n sameSite: SameSite = \"Lax\"\r\n ): void {\r\n if (!this.documentIsAccessible) {\r\n return;\r\n }\r\n\r\n const cookies: any = this.getAll();\r\n\r\n for (const cookieName in cookies) {\r\n if (cookies.hasOwnProperty(cookieName)) {\r\n this.delete(cookieName, path, domain, secure, sameSite);\r\n }\r\n }\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n ApiError,\r\n AuthenticationProviderData,\r\n GetAuthenticationProvidersResponse,\r\n SessionInfoData,\r\n SessionService,\r\n} from './api';\r\nimport { SmartCookieService } from './cookie-service/smart-cookie.service';\r\nimport { SessionError, SmartSessionHandlerService } from './smart-session-handler.service';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\nexport interface HeaderParam {\r\n headerName: string;\r\n value: string;\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartSessionService implements OnDestroy {\r\n private basePath?: string;\r\n private token?: string;\r\n private _sessionInfoData?: SessionInfoData;\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n public get sessionInfoData(): SessionInfoData | undefined {\r\n return this._sessionInfoData;\r\n }\r\n private set sessionInfoData(sessionInfoData: SessionInfoData | undefined) {\r\n let expiracyChanged = this.sessionInfoData?.expiration !== sessionInfoData?.expiration;\r\n\r\n this._sessionInfoData = sessionInfoData;\r\n\r\n if (expiracyChanged) {\r\n this.sessionExpiracyChanged.next();\r\n }\r\n }\r\n\r\n private providers?: Array<AuthenticationProviderData>;\r\n private cookieName?: string;\r\n public isAuthenticated: boolean = false;\r\n\r\n public authenticationStateChanged: Subject<boolean> = new SmartSubject(this._destroy$);\r\n\r\n public headerParams: Array<HeaderParam> = new Array();\r\n public headersUpdated: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n // Locale\r\n private localStorageLocaleName: string = 'locale';\r\n public localeChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n private initializeRunning: Subject<void> | undefined;\r\n\r\n public sessionExpiracyChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n private sessionHandlerService?: SmartSessionHandlerService;\r\n\r\n constructor(private apiService: SessionService, private cookieService: SmartCookieService) {}\r\n\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n public setSessionHandlerService(smartSessionHandlerService: SmartSessionHandlerService): void {\r\n this.sessionHandlerService = smartSessionHandlerService;\r\n }\r\n\r\n public async handleSessionError(sessionError: SessionError): Promise<void> {\r\n if (this.sessionHandlerService) {\r\n await this.sessionHandlerService.handleSessionError(sessionError);\r\n }\r\n throw new Error(`sessionHandlerService was not initialized. Error: ${sessionError.code}`);\r\n }\r\n\r\n public addHeaderParam(headerParam: HeaderParam): void {\r\n if (this.headerParams.find((h: HeaderParam) => h.headerName === headerParam.headerName)) {\r\n let index = this.headerParams.findIndex(\r\n (h: HeaderParam) => h.headerName === headerParam.headerName\r\n );\r\n this.headerParams[index!].value = headerParam.value;\r\n } else {\r\n this.headerParams.push(headerParam);\r\n }\r\n this.headersUpdated.next();\r\n }\r\n\r\n private setUpTokenForSessionService(): void {\r\n this.addHeaderParam({\r\n headerName: 'Authorization',\r\n value: `Bearer ${this.token!}`,\r\n });\r\n }\r\n\r\n public setUrl(url: string): void {\r\n this.basePath = url;\r\n }\r\n public getBasePath(): string {\r\n if (!this.basePath) {\r\n throw new Error('BasePath has not been set in SmartSessionService!');\r\n }\r\n return this.basePath;\r\n }\r\n\r\n public setCookieName(name: string): void {\r\n this.cookieName = name;\r\n }\r\n\r\n private saveTokenToLocalStorage(): void {\r\n if (this.sessionInfoData && this.cookieName) {\r\n localStorage.setItem('token', this.sessionInfoData.sid);\r\n if (\r\n this.sessionInfoData.refreshToken &&\r\n this.sessionInfoData.refreshToken !== localStorage.getItem('refreshToken')\r\n ) {\r\n localStorage.setItem('refreshToken', this.sessionInfoData.refreshToken);\r\n }\r\n this.cookieService.set(this.cookieName, this.token!);\r\n }\r\n }\r\n\r\n private setAuthenticationStatus(): void {\r\n if (this.sessionInfoData && this.sessionInfoData.authentications) {\r\n this.isAuthenticated = this.sessionInfoData.authentications.length > 0;\r\n }\r\n this.authenticationStateChanged.next(this.isAuthenticated);\r\n }\r\n\r\n private checkStatements(): void {\r\n if (!this.basePath) {\r\n throw new Error('The url of the backend api has not been set!');\r\n } else if (!this.cookieName) {\r\n throw new Error('The name of the cookie required by the backend has not been set!');\r\n }\r\n }\r\n\r\n public async initialize(): Promise<void> {\r\n if (this.initializeRunning) {\r\n return this.initializeRunning.toPromise();\r\n } else {\r\n this.initializeRunning = new SmartSubject(this._destroy$);\r\n try {\r\n this.checkStatements();\r\n\r\n let tokenFromLocalStorage = localStorage.getItem('token');\r\n let tokenFromCookies = this.cookieService.get(this.cookieName!);\r\n\r\n if (\r\n tokenFromLocalStorage &&\r\n tokenFromCookies &&\r\n tokenFromLocalStorage === tokenFromCookies\r\n ) {\r\n this.token = tokenFromLocalStorage;\r\n this.setUpTokenForSessionService();\r\n try {\r\n await this.getSession();\r\n } catch (err) {\r\n await this.startSession();\r\n }\r\n } else {\r\n await this.clearAndStartNewSession();\r\n }\r\n if (this.sessionInfoData && this.sessionInfoData.locale) {\r\n localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);\r\n this.localeChanged.next();\r\n }\r\n } finally {\r\n this.initializeRunning.complete();\r\n this.initializeRunning = undefined;\r\n }\r\n }\r\n }\r\n\r\n private async startSession(): Promise<SessionInfoData> {\r\n let sessionInfo = await this.apiService.startSession().toPromise();\r\n if (sessionInfo) {\r\n this.sessionInfoData = sessionInfo;\r\n this.token = sessionInfo.sid;\r\n this.saveTokenToLocalStorage();\r\n this.setAuthenticationStatus();\r\n this.setUpTokenForSessionService();\r\n }\r\n\r\n return this.sessionInfoData!;\r\n }\r\n\r\n public async getSession(): Promise<SessionInfoData> {\r\n let sessionInfo = await this.apiService.getSession().toPromise();\r\n if (sessionInfo) {\r\n this.sessionInfoData = sessionInfo;\r\n this.token = sessionInfo.sid;\r\n this.saveTokenToLocalStorage();\r\n this.setAuthenticationStatus();\r\n }\r\n\r\n return this.sessionInfoData!;\r\n }\r\n\r\n public async refreshSession(): Promise<SessionInfoData> {\r\n let refreshToken = localStorage.getItem('refreshToken');\r\n if (!refreshToken) {\r\n return await this.startSession();\r\n }\r\n\r\n let sessionInfo = await this.apiService\r\n .refreshSession({\r\n refreshToken,\r\n })\r\n .toPromise()\r\n .catch(async (error: HttpErrorResponse) => {\r\n if (\r\n error.error &&\r\n (error.error as ApiError).code &&\r\n (error.error as ApiError).code === 'session.refreshtoken.invalid'\r\n ) {\r\n await this.startSession();\r\n }\r\n });\r\n\r\n if (sessionInfo) {\r\n this.sessionInfoData = sessionInfo;\r\n this.token = sessionInfo.sid;\r\n this.saveTokenToLocalStorage();\r\n this.setAuthenticationStatus();\r\n this.setUpTokenForSessionService();\r\n }\r\n\r\n return this.sessionInfoData!;\r\n }\r\n\r\n public async getAuthenticationProviders(): Promise<Array<AuthenticationProviderData>> {\r\n let providers: GetAuthenticationProvidersResponse | undefined = await this.apiService\r\n .getAuthenticationProviders()\r\n .toPromise();\r\n\r\n this.providers = providers?.authenticationProviders;\r\n\r\n return this.providers!;\r\n }\r\n\r\n public async getIsAuthenticated(): Promise<boolean> {\r\n if (this.sessionInfoData) {\r\n return this.isAuthenticated;\r\n }\r\n await this.getSession();\r\n return this.isAuthenticated;\r\n }\r\n\r\n public async clearAndStartNewSession(): Promise<void> {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n this.headerParams = [];\r\n this.cookieService.delete(this.cookieName!);\r\n\r\n await this.startSession();\r\n }\r\n\r\n public getLocale(): string {\r\n if (this.sessionInfoData && this.sessionInfoData.locale) {\r\n if (localStorage.getItem(this.localStorageLocaleName) !== this.sessionInfoData.locale) {\r\n localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);\r\n }\r\n return this.sessionInfoData.locale;\r\n }\r\n throw new Error('There is no SessionInfoData or locale is undefined.');\r\n }\r\n\r\n public async changeLocale(locale: string): Promise<void> {\r\n this.sessionInfoData = await this.apiService.setLocale(locale).toPromise();\r\n if (this.sessionInfoData && this.sessionInfoData.locale) {\r\n localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);\r\n this.localeChanged.next();\r\n }\r\n }\r\n}\r\n","import { HttpParameterCodec } from '@angular/common/http';\n\n/**\n * Custom HttpParameterCodec\n * Workaround for https://github.com/angular/angular/issues/18261\n */\nexport class CustomHttpParameterCodec implements HttpParameterCodec {\n encodeKey(k: string): string {\n return encodeURIComponent(k);\n }\n encodeValue(v: string): string {\n return encodeURIComponent(v);\n }\n decodeKey(k: string): string {\n return decodeURIComponent(k);\n }\n decodeValue(v: string): string {\n return decodeURIComponent(v);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const BASE_PATH = new InjectionToken<string>('basePath');\nexport const COLLECTION_FORMATS = {\n 'csv': ',',\n 'tsv': ' ',\n 'ssv': ' ',\n 'pipes': '|'\n}\n","import { HttpParameterCodec } from '@angular/common/http';\nimport { Param } from './param';\n\nexport interface ConfigurationParameters {\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n apiKeys?: {[ key: string ]: string};\n username?: string;\n password?: string;\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n accessToken?: string | (() => string);\n basePath?: string;\n withCredentials?: boolean;\n /**\n * Takes care of encoding query- and form-parameters.\n */\n encoder?: HttpParameterCodec;\n /**\n * Override the default method for encoding path parameters in various\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\n * <p>\n * See {@link README.md} for more details\n * </p>\n */\n encodeParam?: (param: Param) => string;\n /**\n * The keys are the names in the securitySchemes section of the OpenAPI\n * document. They should map to the value used for authentication\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\n */\n credentials?: {[ key: string ]: string | (() => string | undefined)};\n}\n\nexport class Configuration {\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n apiKeys?: {[ key: string ]: string};\n username?: string;\n password?: string;\n /**\n * @deprecated Since 5.0. Use credentials instead\n */\n accessToken?: string | (() => string);\n basePath?: string;\n withCredentials?: boolean;\n /**\n * Takes care of encoding query- and form-parameters.\n */\n encoder?: HttpParameterCodec;\n /**\n * Encoding of various path parameter\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\n * <p>\n * See {@link README.md} for more details\n * </p>\n */\n encodeParam: (param: Param) => string;\n /**\n * The keys are the names in the securitySchemes section of the OpenAPI\n * document. They should map to the value used for authentication\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\n */\n credentials: {[ key: string ]: string | (() => string | undefined)};\n\n constructor(configurationParameters: ConfigurationParameters = {}) {\n this.apiKeys = configurationParameters.apiKeys;\n this.username = configurationParameters.username;\n this.password = configurationParameters.password;\n this.accessToken = configurationParameters.accessToken;\n this.basePath = configurationParameters.basePath;\n this.withCredentials = configurationParameters.withCredentials;\n this.encoder = configurationParameters.encoder;\n if (configurationParameters.encodeParam) {\n this.encodeParam = configurationParameters.encodeParam;\n }\n else {\n this.encodeParam = param => this.defaultEncodeParam(param);\n }\n if (configurationParameters.credentials) {\n this.credentials = configurationParameters.credentials;\n }\n else {\n this.credentials = {};\n }\n }\n\n /**\n * Select the correct content-type to use for a request.\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\n * If no content type is found return the first found type if the contentTypes is not empty\n * @param contentTypes - the array of content types that are available for selection\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\n */\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\n if (contentTypes.length === 0) {\n return undefined;\n }\n\n const type = contentTypes.find((x: string) => this.isJsonMime(x));\n if (type === undefined) {\n return contentTypes[0];\n }\n return type;\n }\n\n /**\n * Select the correct accept content-type to use for a request.\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\n * If no content type is found return the first found type if the contentTypes is not empty\n * @param accepts - the array of content types that are available for selection.\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\n */\n public selectHeaderAccept(accepts: string[]): string | undefined {\n if (accepts.length === 0) {\n return undefined;\n }\n\n const type = accepts.find((x: string) => this.isJsonMime(x));\n if (type === undefined) {\n return accepts[0];\n }\n return type;\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n public isJsonMime(mime: string): boolean {\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\n return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\n }\n\n public lookupCredential(key: string): string | undefined {\n const value = this.credentials[key];\n return typeof value === 'function'\n ? value()\n : value;\n }\n\n private defaultEncodeParam(param: Param): string {\n // This implementation exists as fallback for missing configuration\n // and for backwards compatibility to older typescript-angular generator versions.\n // It only works for the 'simple' parameter style.\n // Date-handling only works for the 'date-time' format.\n // All other styles and Date-formats are probably handled incorrectly.\n //\n // But: if that's all you need (i.e.: the most common use-case): no need for customization!\n\n const value = param.dataFormat === 'date-time' && param.value instanceof Date\n ? (param.value as Date).toISOString()\n : param.value;\n\n return encodeURIComponent(String(value));\n }\n}\n","/**\n * View API\n * View API\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@it4all.hu\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n HttpResponse, HttpEvent, HttpParameterCodec, HttpContext \n } from '@angular/common/http';\nimport { CustomHttpParameterCodec } from '../encoder';\nimport { Observable } from 'rxjs';\n\n// @ts-ignore\nimport { ComponentModel } from '../model/componentModel';\n// @ts-ignore\nimport { DataChange } from '../model/dataChange';\n// @ts-ignore\nimport { MessageResult } from '../model/messageResult';\n// @ts-ignore\nimport { UiActionRequest } from '../model/uiActionRequest';\n// @ts-ignore\nimport { ViewConstraint } from '../model/viewConstraint';\n// @ts-ignore\nimport { ViewContextChange } from '../model/viewContextChange';\n// @ts-ignore\nimport { ViewContextData } from '../model/viewContextData';\n// @ts-ignore\nimport { ViewContextUpdate } from '../model/viewContextUpdate';\n\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\nimport { Configuration } from '../configuration';\n\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewService {\n\n protected basePath = 'http://localhost';\n public defaultHeaders = new HttpHeaders();\n public configuration = new Configuration();\n public encoder: HttpParameterCodec;\n\n constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) {\n if (configuration) {\n this.configuration = configuration;\n }\n if (typeof this.configuration.basePath !== 'string') {\n if (Array.isArray(basePath) && basePath.length > 0) {\n basePath = basePath[0];\n }\n\n if (typeof basePath !== 'string') {\n basePath = this.basePath;\n }\n this.configuration.basePath = basePath;\n }\n this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n }\n\n /**\n * @param consumes string[] mime-types\n * @return true: consumes contains 'multipart/form-data', false: otherwise\n */\n private canConsumeForm(consumes: string[]): boolean {\n const form = 'multipart/form-data';\n for (const consume of consumes) {\n if (form === consume) {\n return true;\n }\n }\n return false;\n }\n\n // @ts-ignore\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n if (typeof value === \"object\" && value instanceof Date === false) {\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\n } else {\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n }\n return httpParams;\n }\n\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n if (value == null) {\n return httpParams;\n }\n\n if (typeof value === \"object\") {\n if (Array.isArray(value)) {\n (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n } else if (value instanceof Date) {\n if (key != null) {\n httpParams = httpParams.append(key, (value as Date).toISOString().substr(0, 10));\n } else {\n throw Error(\"key may not be null if value is Date\");\n }\n } else {\n Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n httpParams, value[k], key != null ? `${key}.${k}` : k));\n }\n } else if (key != null) {\n httpParams = httpParams.append(key, value);\n } else {\n throw Error(\"key may not be null if value is not object or array\");\n }\n return httpParams;\n }\n\n /**\n * Creates a new ViewContext\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public createViewContext(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextData>;\n public createViewContext(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextData>>;\n public createViewContext(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextData>>;\n public createViewContext(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/context`;\n return this.httpClient.request<ViewContextData>('post', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * Notification of a data change event.. \n * @param uuid \n * @param dataChange \n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public dataChanged(uuid: string, dataChange: DataChange, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\n public dataChanged(uuid: string, dataChange: DataChange, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\n public dataChanged(uuid: string, dataChange: DataChange, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\n public dataChanged(uuid: string, dataChange: DataChange, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling dataChanged.');\n }\n if (dataChange === null || dataChange === undefined) {\n throw new Error('Required parameter dataChange was null or undefined when calling dataChanged.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n // to determine the Content-Type header\n const consumes: string[] = [\n 'application/json'\n ];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/data`;\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n body: dataChange,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * @param uuid \n * @param item \n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public downloadItem(uuid: string, item: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<Blob>;\n public downloadItem(uuid: string, item: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<HttpResponse<Blob>>;\n public downloadItem(uuid: string, item: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<HttpEvent<Blob>>;\n public downloadItem(uuid: string, item: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling downloadItem.');\n }\n if (item === null || item === undefined) {\n throw new Error('Required parameter item was null or undefined when calling downloadItem.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/octet-stream'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/download/${this.configuration.encodeParam({name: \"item\", value: item, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}`;\n return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n responseType: \"blob\",\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * @param uuid \n * @param item \n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public downloadItemDeprecated(uuid: string, item: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<Blob>;\n public downloadItemDeprecated(uuid: string, item: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<HttpResponse<Blob>>;\n public downloadItemDeprecated(uuid: string, item: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<HttpEvent<Blob>>;\n public downloadItemDeprecated(uuid: string, item: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/octet-stream', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling downloadItemDeprecated.');\n }\n if (item === null || item === undefined) {\n throw new Error('Required parameter item was null or undefined when calling downloadItemDeprecated.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/octet-stream'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n let localVarPath = `/view/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/download/${this.configuration.encodeParam({name: \"item\", value: item, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}`;\n return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n responseType: \"blob\",\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * Returns component\\'s model.\n * @param uuid Component\\'s unique identifier.\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getComponentModel(uuid: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ComponentModel>;\n public getComponentModel(uuid: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ComponentModel>>;\n public getComponentModel(uuid: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ComponentModel>>;\n public getComponentModel(uuid: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling getComponentModel.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}`;\n return this.httpClient.request<ComponentModel>('get', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * Returns component\\'s model in a ViewContextChange.\n * @param uuid Component\\'s unique identifier.\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getComponentModel2(uuid: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\n public getComponentModel2(uuid: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\n public getComponentModel2(uuid: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\n public getComponentModel2(uuid: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling getComponentModel2.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/load`;\n return this.httpClient.request<ViewContextChange>('get', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * Returns the view constraint object belongs to the given view\n * @param uuid View\\'s unique identifier.\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getViewConstraint(uuid: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewConstraint>;\n public getViewConstraint(uuid: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewConstraint>>;\n public getViewConstraint(uuid: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewConstraint>>;\n public getViewConstraint(uuid: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling getViewConstraint.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/view/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/constraint`;\n return this.httpClient.request<ViewConstraint>('get', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * Returns the existing session info\n * @param uuid ViewContext\\'s unique identifier.\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public getViewContext(uuid: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextData>;\n public getViewContext(uuid: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextData>>;\n public getViewContext(uuid: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextData>>;\n public getViewContext(uuid: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling getViewContext.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/context/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}`;\n return this.httpClient.request<ViewContextData>('get', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * \n * @param viewUuid View UUID.\n * @param messageUuid Message UUID.\n * @param messageResult \n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public message(viewUuid: string, messageUuid: string, messageResult: MessageResult, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<any>;\n public message(viewUuid: string, messageUuid: string, messageResult: MessageResult, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<HttpResponse<any>>;\n public message(viewUuid: string, messageUuid: string, messageResult: MessageResult, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<HttpEvent<any>>;\n public message(viewUuid: string, messageUuid: string, messageResult: MessageResult, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<any> {\n if (viewUuid === null || viewUuid === undefined) {\n throw new Error('Required parameter viewUuid was null or undefined when calling message.');\n }\n if (messageUuid === null || messageUuid === undefined) {\n throw new Error('Required parameter messageUuid was null or undefined when calling message.');\n }\n if (messageResult === null || messageResult === undefined) {\n throw new Error('Required parameter messageResult was null or undefined when calling message.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n // to determine the Content-Type header\n const consumes: string[] = [\n 'application/json'\n ];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/message/${this.configuration.encodeParam({name: \"viewUuid\", value: viewUuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/${this.configuration.encodeParam({name: \"messageUuid\", value: messageUuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}`;\n return this.httpClient.request<any>('post', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n body: messageResult,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * Performs a generic UI action. \n * @param uuid \n * @param body \n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public performAction(uuid: string, body: UiActionRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\n public performAction(uuid: string, body: UiActionRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\n public performAction(uuid: string, body: UiActionRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\n public performAction(uuid: string, body: UiActionRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling performAction.');\n }\n if (body === null || body === undefined) {\n throw new Error('Required parameter body was null or undefined when calling performAction.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n // to determine the Content-Type header\n const consumes: string[] = [\n 'application/json'\n ];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/action`;\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n body: body,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * Performs a widget UI action. \n * @param uuid \n * @param widgetId \n * @param nodeId \n * @param body \n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public performWidgetAction(uuid: string, widgetId: string, nodeId: string, body: UiActionRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\n public performWidgetAction(uuid: string, widgetId: string, nodeId: string, body: UiActionRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\n public performWidgetAction(uuid: string, widgetId: string, nodeId: string, body: UiActionRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\n public performWidgetAction(uuid: string, widgetId: string, nodeId: string, body: UiActionRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling performWidgetAction.');\n }\n if (widgetId === null || widgetId === undefined) {\n throw new Error('Required parameter widgetId was null or undefined when calling performWidgetAction.');\n }\n if (nodeId === null || nodeId === undefined) {\n throw new Error('Required parameter nodeId was null or undefined when calling performWidgetAction.');\n }\n if (body === null || body === undefined) {\n throw new Error('Required parameter body was null or undefined when calling performWidgetAction.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n // to determine the Content-Type header\n const consumes: string[] = [\n 'application/json'\n ];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/${this.configuration.encodeParam({name: \"widgetId\", value: widgetId, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}/${this.configuration.encodeParam({name: \"nodeId\", value: nodeId, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}/action`;\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n body: body,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * Performs a widget UI action. \n * @param uuid \n * @param widgetId \n * @param body \n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public performWidgetMainAction(uuid: string, widgetId: string, body: UiActionRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\n public performWidgetMainAction(uuid: string, widgetId: string, body: UiActionRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\n public performWidgetMainAction(uuid: string, widgetId: string, body: UiActionRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\n public performWidgetMainAction(uuid: string, widgetId: string, body: UiActionRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling performWidgetMainAction.');\n }\n if (widgetId === null || widgetId === undefined) {\n throw new Error('Required parameter widgetId was null or undefined when calling performWidgetMainAction.');\n }\n if (body === null || body === undefined) {\n throw new Error('Required parameter body was null or undefined when calling performWidgetMainAction.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n // to determine the Content-Type header\n const consumes: string[] = [\n 'application/json'\n ];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/${this.configuration.encodeParam({name: \"widgetId\", value: widgetId, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}/action`;\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n body: body,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * @param channel Smartlink\\'s channel.\n * @param uuid Smartlink\\'s unique identifier\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public showPublishedView(channel: string, uuid: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<any>;\n public showPublishedView(channel: string, uuid: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<HttpResponse<any>>;\n public showPublishedView(channel: string, uuid: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<HttpEvent<any>>;\n public showPublishedView(channel: string, uuid: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext}): Observable<any> {\n if (channel === null || channel === undefined) {\n throw new Error('Required parameter channel was null or undefined when calling showPublishedView.');\n }\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling showPublishedView.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/smartlink/${this.configuration.encodeParam({name: \"channel\", value: channel, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: undefined})}/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}`;\n return this.httpClient.request<any>('put', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * Updates an existing ViewContext\n * @param viewContextUpdate \n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public updateViewContext(viewContextUpdate: ViewContextUpdate, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextData>;\n public updateViewContext(viewContextUpdate: ViewContextUpdate, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextData>>;\n public updateViewContext(viewContextUpdate: ViewContextUpdate, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextData>>;\n public updateViewContext(viewContextUpdate: ViewContextUpdate, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n if (viewContextUpdate === null || viewContextUpdate === undefined) {\n throw new Error('Required parameter viewContextUpdate was null or undefined when calling updateViewContext.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n\n // to determine the Content-Type header\n const consumes: string[] = [\n 'application/json'\n ];\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n if (httpContentTypeSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/context`;\n return this.httpClient.request<ViewContextData>('put', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n body: viewContextUpdate,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * Performs an upload UI action. \n * @param uuid \n * @param uiActionRequest Stringify-d UiActionRequest.\n * @param param Parameter name to use when converting uploaded file to BinaryData.\n * @param content \n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public uploadAction(uuid: string, uiActionRequest?: string, param?: string, content?: Blob, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\n public uploadAction(uuid: string, uiActionRequest?: string, param?: string, content?: Blob, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\n public uploadAction(uuid: string, uiActionRequest?: string, param?: string, content?: Blob, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\n public uploadAction(uuid: string, uiActionRequest?: string, param?: string, content?: Blob, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling uploadAction.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n // to determine the Content-Type header\n const consumes: string[] = [\n 'multipart/form-data'\n ];\n\n const canConsumeForm = this.canConsumeForm(consumes);\n\n let localVarFormParams: { append(param: string, value: any): any; };\n let localVarUseForm = false;\n let localVarConvertFormParamsToString = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n // see https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data\n localVarUseForm = canConsumeForm;\n if (localVarUseForm) {\n localVarFormParams = new FormData();\n } else {\n localVarFormParams = new HttpParams({encoder: this.encoder});\n }\n\n if (uiActionRequest !== undefined) {\n localVarFormParams = localVarFormParams.append('uiActionRequest', <any>uiActionRequest) as any || localVarFormParams;\n }\n if (param !== undefined) {\n localVarFormParams = localVarFormParams.append('param', <any>param) as any || localVarFormParams;\n }\n if (content !== undefined) {\n localVarFormParams = localVarFormParams.append('content', <any>content) as any || localVarFormParams;\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/upload`;\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n body: localVarConvertFormParamsToString ? localVarFormParams.toString() : localVarFormParams,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n /**\n * Performs a generic UI action. \n * @param uuid \n * @param uiActionRequest Stringify-d UiActionRequest.\n * @param param Parameter name to use when converting uploaded file to BinaryData.\n * @param contents \n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n * @param reportProgress flag to report request and response progress.\n */\n public uploadMultipleAction(uuid: string, uiActionRequest?: string, param?: string, contents?: Array<Blob>, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<ViewContextChange>;\n public uploadMultipleAction(uuid: string, uiActionRequest?: string, param?: string, contents?: Array<Blob>, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<ViewContextChange>>;\n public uploadMultipleAction(uuid: string, uiActionRequest?: string, param?: string, contents?: Array<Blob>, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<ViewContextChange>>;\n public uploadMultipleAction(uuid: string, uiActionRequest?: string, param?: string, contents?: Array<Blob>, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {\n if (uuid === null || uuid === undefined) {\n throw new Error('Required parameter uuid was null or undefined when calling uploadMultipleAction.');\n }\n\n let localVarHeaders = this.defaultHeaders;\n\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n if (localVarHttpHeaderAcceptSelected === undefined) {\n // to determine the Accept header\n const httpHeaderAccepts: string[] = [\n 'application/json'\n ];\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n }\n if (localVarHttpHeaderAcceptSelected !== undefined) {\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\n }\n\n let localVarHttpContext: HttpContext | undefined = options && options.context;\n if (localVarHttpContext === undefined) {\n localVarHttpContext = new HttpContext();\n }\n\n // to determine the Content-Type header\n const consumes: string[] = [\n 'multipart/form-data'\n ];\n\n const canConsumeForm = this.canConsumeForm(consumes);\n\n let localVarFormParams: { append(param: string, value: any): any; };\n let localVarUseForm = false;\n let localVarConvertFormParamsToString = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n // see https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data\n localVarUseForm = canConsumeForm;\n if (localVarUseForm) {\n localVarFormParams = new FormData();\n } else {\n localVarFormParams = new HttpParams({encoder: this.encoder});\n }\n\n if (uiActionRequest !== undefined) {\n localVarFormParams = localVarFormParams.append('uiActionRequest', <any>uiActionRequest) as any || localVarFormParams;\n }\n if (param !== undefined) {\n localVarFormParams = localVarFormParams.append('param', <any>param) as any || localVarFormParams;\n }\n if (contents) {\n if (localVarUseForm) {\n contents.forEach((element) => {\n localVarFormParams = localVarFormParams.append('contents', <any>element) as any || localVarFormParams;\n })\n } else {\n localVarFormParams = localVarFormParams.append('contents', [...contents].join(COLLECTION_FORMATS['csv'])) as any || localVarFormParams;\n }\n }\n\n let responseType_: 'text' | 'json' | 'blob' = 'json';\n if (localVarHttpHeaderAcceptSelected) {\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\n responseType_ = 'text';\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\n responseType_ = 'json';\n } else {\n responseType_ = 'blob';\n }\n }\n\n let localVarPath = `/component/${this.configuration.encodeParam({name: \"uuid\", value: uuid, in: \"path\", style: \"simple\", explode: false, dataType: \"string\", dataFormat: \"uuid\"})}/uploadMultiple`;\n return this.httpClient.request<ViewContextChange>('post', `${this.configuration.basePath}${localVarPath}`,\n {\n context: localVarHttpContext,\n body: localVarConvertFormParamsToString ? localVarFormParams.toString() : localVarFormParams,\n responseType: <any>responseType_,\n withCredentials: this.configuration.withCredentials,\n headers: localVarHeaders,\n observe: observe,\n reportProgress: reportProgress\n }\n );\n }\n\n}\n","export * from './view.service';\nimport { ViewService } from './view.service';\nexport const APIS = [ViewService];\n","/**\n * View API\n * View API\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@it4all.hu\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport type CloseResult = 'approved' | 'pending' | 'rejected';\n\nexport const CloseResult = {\n Approved: 'approved' as CloseResult,\n Pending: 'pending' as CloseResult,\n Rejected: 'rejected' as CloseResult\n};\n\n","/**\n * View API\n * View API\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@it4all.hu\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Defines the kind of the source of this event.. \n */\nexport type DataChangeKind = 'WIDGET' | 'SELECTION' | 'LOOKUP';\n\nexport const DataChangeKind = {\n Widget: 'WIDGET' as DataChangeKind,\n Selection: 'SELECTION' as DataChangeKind,\n Lookup: 'LOOKUP' as DataChangeKind\n};\n\n","/**\n * View API\n * View API\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@it4all.hu\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport type MessageOptionType = 'confirm' | 'reject' | 'cancel';\n\nexport const MessageOptionType = {\n Confirm: 'confirm' as MessageOptionType,\n Reject: 'reject' as MessageOptionType,\n Cancel: 'cancel' as MessageOptionType\n};\n\n","/**\n * View API\n * View API\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@it4all.hu\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport type MessageType = 'info' | 'question' | 'warning' | 'error';\n\nexport const MessageType = {\n Info: 'info' as MessageType,\n Question: 'question' as MessageType,\n Warning: 'warning' as MessageType,\n Error: 'error' as MessageType\n};\n\n","/**\n * View API\n * View API\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@it4all.hu\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Defines the position of an icon related to the button\\'s label. \n */\nexport type UiActionButtonIconPos = 'PRE' | 'POST';\n\nexport const UiActionButtonIconPos = {\n Pre: 'PRE' as UiActionButtonIconPos,\n Post: 'POST' as UiActionButtonIconPos\n};\n\n","/**\n * View API\n * View API\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@it4all.hu\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Defines the type of the button. \n */\nexport type UiActionButtonType = 'NORMAL' | 'FLAT' | 'STROKED' | 'RAISED' | 'ICON' | 'MINI_FAB' | 'FAB';\n\nexport const UiActionButtonType = {\n Normal: 'NORMAL' as UiActionButtonType,\n Flat: 'FLAT' as UiActionButtonType,\n Stroked: 'STROKED' as UiActionButtonType,\n Raised: 'RAISED' as UiActionButtonType,\n Icon: 'ICON' as UiActionButtonType,\n MiniFab: 'MINI_FAB' as UiActionButtonType,\n Fab: 'FAB' as UiActionButtonType\n};\n\n","/**\n * View API\n * View API\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@it4all.hu\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Defines the possible feedback types which are shown if a UiAction was completed. \n */\nexport type UiActionFeedbackType = 'NONE' | 'SNACKBAR';\n\nexport const UiActionFeedbackType = {\n None: 'NONE' as UiActionFeedbackType,\n Snackbar: 'SNACKBAR' as UiActionFeedbackType\n};\n\n","/**\n * View API\n * View API\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@it4all.hu\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport type UiActionInputType = 'none' | 'textfield' | 'textarea' | 'user_select' | 'file' | 'multiple_files';\n\nexport const UiActionInputType = {\n None: 'none' as UiActionInputType,\n Textfield: 'textfield' as UiActionInputType,\n Textarea: 'textarea' as UiActionInputType,\n UserSelect: 'user_select' as UiActionInputType,\n File: 'file' as UiActionInputType,\n MultipleFiles: 'multiple_files' as UiActionInputType\n};\n\n","/**\r\n * View API\r\n * View API\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n\r\n/**\r\n * An event handler is a special callback function to call when the given event is occurred. So the event handler can be an action as is or can be fired on a before or after event\r\n */\r\nexport interface ViewEventHandler {\r\n /**\r\n * The event handler path defines the location of the event. We can use regular expressions to fine tune the event definition. In this way we can add before event handler for all the actions we have. The actions will have a predefined path. The path of the normal actions is the action code itself.\r\n */\r\n path?: Array<string>;\r\n viewEventType?: ViewEventHandler.ViewEventTypeEnum;\r\n invocationRequestDefinition?: any;\r\n}\r\nexport namespace ViewEventHandler {\r\n export type ViewEventTypeEnum = 'before' | 'instead' | 'after';\r\n export const ViewEventTypeEnum = {\r\n Before: 'before' as ViewEventTypeEnum,\r\n Instead: 'instead' as ViewEventTypeEnum,\r\n After: 'after' as ViewEventTypeEnum,\r\n };\r\n}\r\n","/**\n * View API\n * View API\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@it4all.hu\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport type ViewState = 'open_pending' | 'to_open' | 'opened' | 'close_pending' | 'close_approved' | 'to_close' | 'closed';\n\nexport const ViewState = {\n OpenPending: 'open_pending' as ViewState,\n ToOpen: 'to_open' as ViewState,\n Opened: 'opened' as ViewState,\n ClosePending: 'close_pending' as ViewState,\n CloseApproved: 'close_approved' as ViewState,\n ToClose: 'to_close' as ViewState,\n Closed: 'closed' as ViewState\n};\n\n","/**\n * View API\n * View API\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@it4all.hu\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport type ViewType = 'normal' | 'dialog' | 'embedded';\n\nexport const ViewType = {\n Normal: 'normal' as ViewType,\n Dialog: 'dialog' as ViewType,\n Embedded: 'embedded' as ViewType\n};\n\n","import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { Configuration } from './configuration';\nimport { HttpClient } from '@angular/common/http';\n\n\n@NgModule({\n imports: [],\n declarations: [],\n exports: [],\n providers: []\n})\nexport class ApiModule {\n public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders<ApiModule> {\n return {\n ngModule: ApiModule,\n providers: [ { provide: Configuration, useFactory: configurationFactory } ]\n };\n }\n\n constructor( @Optional() @SkipSelf() parentModule: ApiModule,\n @Optional() http: HttpClient) {\n if (parentModule) {\n throw new Error('ApiModule is already loaded. Import in your base AppModule only.');\n }\n if (!http) {\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\n 'See also https://github.com/angular/angular/issues/20575');\n }\n }\n}\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { MessageData, MessageOption, MessageOptionType } from \"../api\";\r\nimport { SmartViewContextService } from \"../smart-view-context.service\";\r\n\r\n@Component({\r\n selector: \"app-message-dialog\",\r\n templateUrl: \"./message-dialog.component.html\",\r\n styleUrls: [\"./message-dialog.component.css\"],\r\n})\r\nexport class MessageDialogComponent implements OnInit, OnDestroy {\r\n messageData!: MessageData;\r\n\r\n constructor(private viewContext: SmartViewContextService) {}\r\n ngOnInit(): void {\r\n this.getMessageData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (!this.messageData.options || !this.messageData.options.length) {\r\n this.viewContext.message(this.messageData, {\r\n selectedOption: {\r\n code: MessageOptionType.Cancel,\r\n label: \"\",\r\n },\r\n });\r\n }\r\n }\r\n\r\n async getMessageData(): Promise<void> {\r\n let messageDialogName = this.viewContext.messageDialogname;\r\n let viewData = await this.viewContext.getViewContextDataByPageName(messageDialogName!);\r\n this.messageData = viewData.message!;\r\n }\r\n\r\n getColor(option: MessageOption): string {\r\n switch (option.type) {\r\n case MessageOptionType.Cancel:\r\n return \"accent\";\r\n case MessageOptionType.Confirm:\r\n return \"primary\";\r\n case MessageOptionType.Reject:\r\n return \"warn\";\r\n default:\r\n return \"accent\";\r\n }\r\n }\r\n\r\n getType(option: MessageOption): string {\r\n switch (option.type) {\r\n case MessageOptionType.Confirm:\r\n case MessageOptionType.Reject:\r\n return \"mat-raised-button\";\r\n default:\r\n return \"mat-button\";\r\n }\r\n }\r\n\r\n onClick(selectedOption: MessageOption): void {\r\n this.viewContext.message(this.messageData, {\r\n selectedOption,\r\n });\r\n }\r\n}\r\n","<div class=\"taskDialogContainer\" *ngIf=\"messageData\">\r\n\t<h2>\r\n\t\t{{ messageData.header }}\r\n\t</h2>\r\n\t<p>{{ messageData.text }}</p>\r\n\t<div class=\"buttonsContainer\">\r\n\t\t<button\r\n\t\t\t*ngFor=\"let option of messageData.options\"\r\n\t\t\tmat-button\r\n\t\t\tclass=\"taskDialogButton\"\r\n\t\t\t[ngClass]=\"getType(option)\"\r\n\t\t\tcolor=\"{{ getColor(option) }}\"\r\n\t\t\t(click)=\"onClick(option)\"\r\n\t\t>\r\n\t\t\t<mat-icon *ngIf=\"option.icon\">\r\n\t\t\t\t{{ option.icon }}\r\n\t\t\t</mat-icon>\r\n\t\t\t{{ option.label }}\r\n\t\t</button>\r\n\t</div>\r\n</div>\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { SmartdialogService } from '@smartbit4all/dialog';\r\nimport { SmartNavigationService } from '@smartbit4all/navigation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartSessionService } from '../session/smart-session.service';\r\nimport {\r\n ComponentModel,\r\n ComponentModelChange,\r\n DataChange,\r\n MessageData,\r\n MessageResult,\r\n UiActionDescriptor,\r\n UiActionRequest,\r\n ViewConstraint,\r\n ViewContextChange,\r\n ViewContextData,\r\n ViewContextUpdate,\r\n ViewData,\r\n ViewService,\r\n ViewState,\r\n ViewType,\r\n} from './api';\r\nimport { MessageDialogComponent } from './message-dialog/message-dialog.component';\r\nimport {\r\n SmartTranslateService,\r\n SmartViewContextApiError,\r\n SmartViewContextApiErrors,\r\n SmartViewDialogRef,\r\n SmartViewHandlerModel,\r\n} from './smart-view-context.model';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\nexport const SmartViewContextErrorDialogButtonLabel = 'SmartViewContextErrorDialogButtonLabel';\r\nexport const SmartViewContextErrorDialogTitle = 'SmartViewContextErrorDialogTitle';\r\nexport const SmartViewContextErrorDialogMessage = 'SmartViewContextErrorDialogMessage';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartViewContextService implements OnDestroy {\r\n private tabIdName: string = 'viewContextUuid';\r\n private tabIdhttpHeaderName: string = 'viewContextUuid';\r\n public messageDialogname: string | undefined;\r\n private url?: string;\r\n private viewContext?: ViewContextData;\r\n private viewHandlers: Array<SmartViewHandlerModel> = new Array();\r\n private openedViewUuids: Array<string> = new Array();\r\n private openedViewData: Array<ViewData> = new Array();\r\n\r\n private _destroy$: Subject<void> = new Subject();\r\n public uuidOfPageHasBeenChanged: Subject<string> = new SmartSubject(this._destroy$);\r\n public viewContextHasBeenSynced: Subject<void> = new SmartSubject(this._destroy$);\r\n private initializeRunning: Subject<ViewContextData> | undefined;\r\n\r\n public smartViewContextApiErrors?: SmartViewContextApiErrors;\r\n\r\n public openSmartLink: Subject<void> = new SmartSubject(this._destroy$);\r\n public isOpeningSmartLink: boolean = false;\r\n\r\n private dialogRefs: SmartViewDialogRef[] = [];\r\n\r\n private actionDescriptors?: Map<string, UiActionDescriptor>;\r\n\r\n public commonFeedbackText?: string;\r\n\r\n public smartApiClients: Map<string, SmartSubject<any>> = new Map();\r\n\r\n public set translateService(translateService: SmartTranslateService | undefined) {\r\n this._translateService = translateService;\r\n this.translateServiceChanged.next();\r\n this.translateServiceChanged.complete();\r\n }\r\n\r\n public get translateService(): SmartTranslateService | undefined {\r\n if (this._translateService) {\r\n return this._translateService;\r\n }\r\n return undefined;\r\n }\r\n\r\n private _translateService?: SmartTranslateService;\r\n public translateServiceChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n constructor(\r\n private view: ViewService,\r\n private session: SmartSessionService,\r\n private navigation: SmartNavigationService,\r\n private dialog: SmartdialogService,\r\n private apiQueueService: ApiQueueService\r\n ) {}\r\n\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n public follow(uuid: string, detectChange: SmartSubject<any>): void {\r\n this.smartApiClients.set(uuid, detectChange);\r\n }\r\n public unfollow(uuid: string): void {\r\n this.smartApiClients.delete(uuid);\r\n }\r\n\r\n public setActionDescriptors(actionDescriptors: Map<string, UiActionDescriptor>): void {\r\n this.actionDescriptors = actionDescriptors;\r\n }\r\n\r\n public getActionDescriptors(): Map<string, UiActionDescriptor> | undefined {\r\n if (!this.actionDescriptors) {\r\n console.error('No action descriptors has been set to ViewContext.');\r\n }\r\n return this.actionDescriptors;\r\n }\r\n\r\n public setViewHandlers(viewHandlers: Array<SmartViewHandlerModel>): void {\r\n this.viewHandlers = viewHandlers;\r\n }\r\n\r\n public setViewApiErrors(viewApiErrors: SmartViewContextApiErrors): void {\r\n this.smartViewContextApiErrors = viewApiErrors;\r\n }\r\n\r\n public setMessageDialogName(messageDialogName: string): void {\r\n this.messageDialogname = messageDialogName;\r\n this.viewHandlers.push({\r\n name: messageDialogName,\r\n component: MessageDialogComponent,\r\n });\r\n }\r\n\r\n private setUpUrlForViewService(): void {\r\n this.view.configuration.basePath = this.url;\r\n }\r\n\r\n public setUrl(url: string): void {\r\n this.url = url + '/view';\r\n this.setUpUrlForViewService();\r\n }\r\n\r\n public async getAndSyncViewContext(uuid?: string): Promise<void> {\r\n if (!uuid) {\r\n uuid = this.getUuidOfPage(this.tabIdName);\r\n }\r\n await this.getViewContext(uuid).then(() => {\r\n this.syncView();\r\n });\r\n }\r\n\r\n public async getViewContext(uuid: string): Promise<ViewContextData> {\r\n this.viewContext = await this.view.getViewContext(uuid).toPromise();\r\n if (!this.viewContext) {\r\n throw new Error('ViewContext does not exist with the given uuid.');\r\n }\r\n return this.viewContext;\r\n }\r\n\r\n public async getViewContextDataByPageName(pageName: string): Promise<ViewData> {\r\n if (!this.viewContext) {\r\n let viewContextUuid = sessionStorage.getItem(this.tabIdName);\r\n if (!viewContextUuid) {\r\n throw new Error('View context is not initialized!');\r\n }\r\n await this.getViewContext(viewContextUuid!);\r\n }\r\n let pageUuid = this.getUuidOfPage(pageName);\r\n\r\n let viewContextByPageName = this.viewContext?.views.find((view) => view.uuid === pageUuid);\r\n if (!viewContextByPageName) {\r\n throw new Error(`The ViewData of ${pageName} is not found!`);\r\n }\r\n return viewContextByPageName;\r\n }\r\n\r\n public async updateViewContext(\r\n viewContextUpdate: ViewContextUpdate\r\n ): Promise<ViewContextData | undefined> {\r\n this.viewContext = await this.view.updateViewContext(viewContextUpdate).toPromise();\r\n\r\n return this.viewContext;\r\n }\r\n\r\n private clearSessionStorage(): void {\r\n sessionStorage.clear();\r\n this.openedViewData = [];\r\n this.openedViewUuids = [];\r\n }\r\n\r\n private setTabId(tabId: string): void {\r\n sessionStorage.setItem(this.tabIdName, tabId);\r\n this.session.addHeaderParam({\r\n headerName: this.tabIdhttpHeaderName,\r\n value: tabId,\r\n });\r\n }\r\n\r\n public async startViewContext(): Promise<ViewContextData> {\r\n this.clearSessionStorage();\r\n\r\n let newViewContext: ViewContextData | undefined = await this.view\r\n .createViewContext()\r\n .toPromise();\r\n if (!newViewContext) {\r\n throw new Error('No ViewContext was created');\r\n }\r\n this.viewContext = newViewContext;\r\n this.setTabId(newViewContext.uuid!);\r\n\r\n return this.viewContext;\r\n }\r\n\r\n public async initialize(uuid?: string): Promise<ViewContextData | undefined> {\r\n if (this.initializeRunning) {\r\n return this.initializeRunning.toPromise();\r\n } else {\r\n this.initializeRunning = new SmartSubject(this._destroy$);\r\n try {\r\n if (this.viewHandlers.length === 0) {\r\n throw new Error(\r\n \"There aren't any viewHandlers in SmartViewContextService! Provide some to use its functions.\"\r\n );\r\n }\r\n if (!this.messageDialogname) {\r\n throw new Error('The messageDialogName provided by the backend has not been set.');\r\n }\r\n if (uuid) {\r\n this.setTabId(uuid);\r\n try {\r\n await this.getViewContext(uuid);\r\n } catch (err) {\r\n await this.startViewContext();\r\n }\r\n } else {\r\n await this.startViewContext();\r\n }\r\n\r\n return this.viewContext!;\r\n } finally {\r\n this.initializeRunning.next(this.viewContext!);\r\n this.initializeRunning.complete();\r\n this.initializeRunning = undefined;\r\n }\r\n }\r\n }\r\n\r\n public openView(view: ViewData): void {\r\n let viewHandler: SmartViewHandlerModel | undefined = this.viewHandlers.find(\r\n (handler) => handler.name === view.viewName\r\n );\r\n\r\n if (!viewHandler) {\r\n throw new Error(`SmartViewHandlerModel was not found by view name: ${view.viewName}`);\r\n }\r\n if (view.type === ViewType.Dialog) {\r\n if (!viewHandler.component) {\r\n throw new Error(\r\n `Component is undefined in SmartViewHandlerModel with name: ${view.viewName}`\r\n );\r\n }\r\n let dialogRef = this.dialog.openComponentAsDialog(viewHandler.component, viewHandler.name);\r\n dialogRef.disableClose = true;\r\n // if (view.viewName === this.messageDialogname) {\r\n // if (view.message?.options && view.message.options.length) {\r\n // }\r\n // }\r\n this.dialogRefs.push({\r\n uuid: view.uuid,\r\n dialogRef,\r\n });\r\n } else if (view.type === ViewType.Normal) {\r\n if (viewHandler.route === undefined) {\r\n throw new Error(`Route is undefined in SmartViewHandlerModel with name: ${view.viewName}`);\r\n }\r\n this.navigation.navigateTo(viewHandler.route.split('/'));\r\n } else {\r\n throw new Error('The type of the view and its viewHandler is not the same!');\r\n }\r\n\r\n view.state = ViewState.Opened;\r\n\r\n this.openedViewUuids.push(view.uuid);\r\n this.openedViewData.push(view);\r\n\r\n sessionStorage.setItem(view.viewName, view.uuid);\r\n this.uuidOfPageHasBeenChanged.next(view.viewName);\r\n\r\n this.updateViewContext({\r\n updates: [\r\n {\r\n state: ViewState.Opened,\r\n uuid: view.uuid,\r\n },\r\n ],\r\n uuid: this.viewContext?.uuid,\r\n });\r\n }\r\n\r\n public closeView(view: ViewData): void {\r\n let viewHandler: SmartViewHandlerModel | undefined = this.viewHandlers.find(\r\n (handler) => handler.name === view.viewName\r\n );\r\n\r\n if (!viewHandler) {\r\n throw new Error(`SmartViewHandlerModel was not found by view name: ${view.viewName}`);\r\n }\r\n\r\n if (view.type === ViewType.Dialog) {\r\n let dialogRef = this.dialogRefs.find(\r\n (dialogRef: SmartViewDialogRef) => dialogRef.uuid === view.uuid\r\n );\r\n if (dialogRef) {\r\n dialogRef.dialogRef.close();\r\n let index = this.dialogRefs.indexOf(dialogRef);\r\n this.dialogRefs.splice(index, 1);\r\n } else {\r\n throw new Error('DialogRef is not found by uuid.');\r\n }\r\n } else if (view.type === ViewType.Normal) {\r\n // TODO: close normal page???\r\n // this.navigation.navigateTo(viewHandler.route.split(\"/\"));\r\n } else {\r\n throw new Error('The type of the view and its viewHandler is not the same!');\r\n }\r\n\r\n view.state = ViewState.Closed;\r\n\r\n const index = this.openedViewUuids.indexOf(view.uuid);\r\n if (index >= 0) {\r\n this.openedViewUuids.splice(index, 1);\r\n this.openedViewData.splice(index, 1);\r\n sessionStorage.removeItem(view.viewName);\r\n }\r\n\r\n this.updateViewContext({\r\n updates: [\r\n {\r\n state: ViewState.Closed,\r\n uuid: view.uuid,\r\n },\r\n ],\r\n uuid: this.viewContext?.uuid,\r\n });\r\n }\r\n\r\n public async restoreViews(uuid: string): Promise<void> {\r\n if (!this.viewContext) {\r\n await this.getViewContext(uuid);\r\n }\r\n this.viewContext!.views.map((view: ViewData) => {\r\n this.openView(view);\r\n });\r\n }\r\n\r\n public syncView(): void {\r\n this.viewContext?.views.map((view: ViewData) => {\r\n switch (view.state) {\r\n case ViewState.ToOpen:\r\n this.openView(view);\r\n break;\r\n case ViewState.ToClose:\r\n this.closeView(view);\r\n break;\r\n }\r\n });\r\n\r\n const viewDataToClose = this.openedViewData.filter(\r\n (viewData: ViewData) =>\r\n !this.viewContext?.views\r\n .flatMap((viewData: ViewData) => viewData.uuid)\r\n .includes(viewData.uuid)\r\n );\r\n if (viewDataToClose?.length) {\r\n viewDataToClose.map((viewData: ViewData) => {\r\n this.closeView(viewData);\r\n });\r\n }\r\n\r\n this.viewContextHasBeenSynced.next();\r\n }\r\n\r\n public getUuidOfPage(pageName: string): string {\r\n let uuid = sessionStorage.getItem(pageName);\r\n if (!uuid) {\r\n throw new Error(`The uuid of ${pageName} is not available.`);\r\n }\r\n return uuid;\r\n }\r\n\r\n public async message(messageData: MessageData, messageResult: MessageResult): Promise<void> {\r\n await this.view\r\n .message(messageData.viewUuid ?? '', messageData.uuid, messageResult)\r\n .toPromise();\r\n await this.getAndSyncViewContext();\r\n }\r\n\r\n public async getSmartViewContextApiErrorByCode(code: string): Promise<SmartViewContextApiError> {\r\n let buttonLabel;\r\n let dialogTitle;\r\n let message;\r\n if (this.translateService) {\r\n buttonLabel = await this.translateService\r\n .get(SmartViewContextErrorDialogButtonLabel)\r\n .toPromise();\r\n dialogTitle = await this.translateService.get(SmartViewContextErrorDialogTitle).toPromise();\r\n message = await this.translateService.get(SmartViewContextErrorDialogMessage).toPromise();\r\n } else {\r\n buttonLabel = 'Ok';\r\n dialogTitle = 'Hiba';\r\n message = 'An error has occured.';\r\n }\r\n\r\n if (!this.smartViewContextApiErrors) {\r\n return {\r\n code,\r\n message,\r\n buttonLabel,\r\n dialogTitle,\r\n };\r\n }\r\n let apiErrorsWithCode = this.smartViewContextApiErrors.viewContextApiErrors.filter(\r\n (apiError: SmartViewContextApiError) => {\r\n return apiError.code === code;\r\n }\r\n );\r\n if (!apiErrorsWithCode || (apiErrorsWithCode && !apiErrorsWithCode.length)) {\r\n console.error(`SmartViewContextApiError with code ${code} could not be found.`);\r\n\r\n return {\r\n code,\r\n message,\r\n buttonLabel,\r\n dialogTitle,\r\n };\r\n }\r\n return apiErrorsWithCode[0];\r\n }\r\n\r\n public async getViewConstraint(uuid: string): Promise<ViewConstraint> {\r\n let viewConstraintResponse = await this.view.getViewConstraint(uuid).toPromise();\r\n if (!viewConstraintResponse)\r\n throw new Error('Could not get ViewConstraint with the given uuid.');\r\n return viewConstraintResponse;\r\n }\r\n\r\n public async showPublishedView(channel: string, uuid: string): Promise<void> {\r\n await this.session.initialize();\r\n // TODO init view context automatically\r\n // await this.initialize();\r\n\r\n this.isOpeningSmartLink = true;\r\n this.openSmartLink.next();\r\n await this.openSmartLink.toPromise();\r\n\r\n await this.view.showPublishedView(channel, uuid).toPromise();\r\n await this.getAndSyncViewContext();\r\n this.isOpeningSmartLink = false;\r\n }\r\n\r\n public async downloadResource(uuid: string, item: string): Promise<any> {\r\n return await this.view.downloadItem(uuid, item).toPromise();\r\n }\r\n\r\n public async performAction(uuid: string, uiActionRequest: UiActionRequest): Promise<void> {\r\n return await this._performAction({\r\n uuid,\r\n uiActionRequest,\r\n });\r\n // const isCompleted = new Subject<void>();\r\n // this.apiQueueService.addToQueue({\r\n // callback: this._performAction.bind(this),\r\n // config: {\r\n // uuid,\r\n // uiActionRequest,\r\n // },\r\n // isCompleted,\r\n // });\r\n // return await isCompleted.toPromise();\r\n }\r\n\r\n public async performWidgetAction(\r\n uuid: string,\r\n widgetId: string,\r\n nodeId: string,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<void> {\r\n return await this._performWidgetAction({ uuid, widgetId, nodeId, uiActionRequest });\r\n // const isCompleted = new Subject<void>();\r\n // this.apiQueueService.addToQueue({\r\n // callback: this._performWidgetAction.bind(this),\r\n // config: {\r\n // uuid,\r\n // widgetId,\r\n // nodeId,\r\n // uiActionRequest,\r\n // },\r\n // isCompleted,\r\n // });\r\n // return await isCompleted.toPromise();\r\n }\r\n\r\n public async performWidgetMainAction(\r\n uuid: string,\r\n widgetId: string,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<void> {\r\n return await this._performWidgetMainAction({ uuid, widgetId, uiActionRequest });\r\n // const isCompleted = new Subject<void>();\r\n // this.apiQueueService.addToQueue({\r\n // callback: this._performWidgetMainAction.bind(this),\r\n // config: {\r\n // uuid,\r\n // widgetId,\r\n // uiActionRequest,\r\n // },\r\n // isCompleted,\r\n // });\r\n // return await isCompleted.toPromise();\r\n }\r\n\r\n public async performUploadAction(\r\n uuid: string,\r\n uiActionRequest: UiActionRequest,\r\n param: 'INPUT' | 'INPUT2',\r\n content: any\r\n ): Promise<void> {\r\n this._performUploadAction({\r\n uuid,\r\n uiActionRequest,\r\n param,\r\n content,\r\n });\r\n }\r\n\r\n public async performUploadMultipleAction(\r\n uuid: string,\r\n uiActionRequest: UiActionRequest,\r\n param: 'INPUT' | 'INPUT2',\r\n content: any[]\r\n ): Promise<void> {\r\n this._performUploadMultipleAction({\r\n uuid,\r\n uiActionRequest,\r\n param,\r\n content,\r\n });\r\n }\r\n\r\n public async dataChanged(uuid: string, dataChange: DataChange): Promise<void> {\r\n return await this._dataChanged({ uuid, dataChange });\r\n // const isCompleted = new Subject<void>();\r\n // this.apiQueueService.addToQueue(\r\n // {\r\n // callback: this._dataChanged.bind(this),\r\n // config: {\r\n // uuid,\r\n // dataChange,\r\n // },\r\n // isCompleted,\r\n // },\r\n // true\r\n // );\r\n // return await isCompleted.toPromise();\r\n }\r\n\r\n private async _performAction(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view.performAction(config.uuid, config.uiActionRequest).toPromise()\r\n );\r\n }\r\n\r\n private async _performWidgetAction(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view\r\n .performWidgetAction(config.uuid, config.widgetId, config.nodeId, config.uiActionRequest)\r\n .toPromise()\r\n );\r\n }\r\n\r\n private async _performWidgetMainAction(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view\r\n .performWidgetMainAction(config.uuid, config.widgetId, config.uiActionRequest)\r\n .toPromise()\r\n );\r\n }\r\n\r\n private async _performUploadAction(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view\r\n .uploadAction(\r\n config.uuid,\r\n JSON.stringify(config.uiActionRequest),\r\n config.param,\r\n config.content\r\n )\r\n .toPromise()\r\n );\r\n }\r\n private async _performUploadMultipleAction(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view\r\n .uploadMultipleAction(\r\n config.uuid,\r\n JSON.stringify(config.uiActionRequest),\r\n config.param,\r\n config.content\r\n )\r\n .toPromise()\r\n );\r\n }\r\n\r\n private async _dataChanged(config: any): Promise<void> {\r\n return await this.handlePerformActionResponse(\r\n await this.view.dataChanged(config.uuid, config.dataChange).toPromise()\r\n );\r\n }\r\n\r\n public async handlePerformActionResponse(\r\n viewContextChange: ViewContextChange | undefined\r\n ): Promise<void> {\r\n this.viewContext = viewContextChange?.viewContext;\r\n this.syncView();\r\n\r\n if (viewContextChange?.changes) {\r\n this.handleChanges(viewContextChange.changes);\r\n }\r\n }\r\n\r\n private handleChanges(changes: Array<ComponentModelChange>): void {\r\n changes.forEach((componentModelChange: ComponentModelChange) => {\r\n let detectChange: SmartSubject<ComponentModelChange> | undefined = this.smartApiClients.get(\r\n componentModelChange.uuid\r\n );\r\n if (detectChange) {\r\n detectChange.next(componentModelChange);\r\n }\r\n });\r\n }\r\n\r\n public async load(uuid: string): Promise<ComponentModel | undefined> {\r\n return await this.view.getComponentModel(uuid).toPromise();\r\n }\r\n\r\n public async load2(uuid: string): Promise<ViewContextChange | undefined> {\r\n return await this.view.getComponentModel2(uuid).toPromise();\r\n }\r\n}\r\n\r\nexport const IS_ASYNC_PARAM_NAME = 'isAsync';\r\n\r\nexport interface ApiQueueCall {\r\n callback: (config: any) => Promise<any>;\r\n config: any;\r\n isCompleted: Subject<void>;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApiQueueService implements OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n private queue: ApiQueueCall[] = [];\r\n private isProcessing = false;\r\n private queueSubject: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n constructor() {\r\n this.queueSubject.pipe(takeUntil(this._destroy$)).subscribe(() => this.processQueue());\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n addToQueue(call: ApiQueueCall, priority: boolean = false) {\r\n if (priority) {\r\n this.queue.unshift(call); // Add at the beginning of the queue if it has higher priority\r\n } else {\r\n this.queue.push(call); // Add at the end of the queue if it has lower priority\r\n }\r\n if (!this.isProcessing) {\r\n this.processQueue();\r\n }\r\n }\r\n\r\n async processQueue(): Promise<void> {\r\n if (this.queue.length === 0) {\r\n this.isProcessing = false;\r\n return;\r\n }\r\n\r\n const apiQueueCall = this.queue.shift();\r\n if (apiQueueCall) {\r\n await apiQueueCall.callback(apiQueueCall.config);\r\n apiQueueCall.isCompleted.complete();\r\n this.queueSubject.next();\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { SmartSessionService } from \"./session/smart-session.service\";\r\nimport { SmartViewContextService } from \"./view-context/smart-view-context.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class SmartNgClientService {\r\n constructor(\r\n private session: SmartSessionService,\r\n private viewContext: SmartViewContextService\r\n ) {}\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { HttpErrorResponse, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Injectable, OnDestroy, Pipe, PipeTransform } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { SmartCookieService } from '../cookie-service/smart-cookie.service';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartDevToolService implements OnDestroy {\r\n descriptor?: SmartDevToolDescriptor;\r\n\r\n smartDevToolName: string = 'smartDevTool';\r\n isSmartDevToolActiveName: string = 'smartDevToolActive';\r\n isActive: boolean = false;\r\n smartDevToolHoursName: string = 'smartDevToolHours';\r\n smartDevToolMaxName: string = 'smartDevToolMaxCalls';\r\n hoursToSave: number = 1;\r\n maxNumOfSavedCalls: number = 50;\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n descriptorChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n newErrorsCount: number = 0;\r\n newErrorsCountChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n constructor(private cookieService: SmartCookieService) {\r\n this.setUpLocalStorage();\r\n\r\n let apiCallsFromLocalStorage = localStorage.getItem(this.smartDevToolName);\r\n if (apiCallsFromLocalStorage) {\r\n this.descriptor = JSON.parse(apiCallsFromLocalStorage);\r\n } else {\r\n this.descriptor = { apiCalls: [] };\r\n this.save();\r\n }\r\n\r\n window.addEventListener('storage', (event) => {\r\n if (event.storageArea === localStorage) {\r\n this.isActive = localStorage.getItem(this.isSmartDevToolActiveName) === 'true';\r\n let hoursToSaveString = localStorage.getItem(this.smartDevToolHoursName);\r\n if (hoursToSaveString) {\r\n this.hoursToSave = Number.parseInt(hoursToSaveString);\r\n }\r\n let maxNumOfSavedCalls = localStorage.getItem(this.smartDevToolMaxName);\r\n if (maxNumOfSavedCalls) {\r\n this.maxNumOfSavedCalls = Number.parseInt(maxNumOfSavedCalls);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n private setUpLocalStorage(): void {\r\n let keysOfLocalStorage = Object.keys(localStorage);\r\n if (!keysOfLocalStorage.includes(this.isSmartDevToolActiveName)) {\r\n localStorage.setItem(this.isSmartDevToolActiveName, 'true');\r\n }\r\n }\r\n\r\n writeResponse(\r\n request: HttpRequest<any>,\r\n response: HttpResponse<any> | HttpErrorResponse,\r\n requestDate: Date,\r\n responseDate: Date\r\n ): void {\r\n this.sanitizeByLength();\r\n this.sanitizeByTime();\r\n\r\n let requestHeader: any = this.createObject(request.headers.keys(), request.headers, false);\r\n let responseHeader: any = this.createObject(response.headers.keys(), response.headers, false);\r\n\r\n let _localStorage: any = this.createObject(\r\n Object.keys(localStorage).filter((key: string) => key !== this.smartDevToolName),\r\n localStorage,\r\n true\r\n );\r\n let _sessionStorage: any = this.createObject(Object.keys(sessionStorage), sessionStorage, true);\r\n let _cookies: any = this.cookieService.getAll();\r\n\r\n this.descriptor!.apiCalls = [\r\n {\r\n url: response.url,\r\n requestBody: request.body,\r\n requestHeader,\r\n requestDate,\r\n requestMethod: request.method,\r\n responseBody: (response as HttpResponse<any>).body ?? null,\r\n responseHeader,\r\n responseStatus: response.status,\r\n responseStatusText: response.statusText,\r\n responseDate,\r\n localStorage: _localStorage,\r\n sessionStorage: _sessionStorage,\r\n cookies: _cookies,\r\n },\r\n ...this.descriptor!.apiCalls,\r\n ];\r\n\r\n if (response.status !== 200) {\r\n this.newErrorsCount++;\r\n this.newErrorsCountChanged.next();\r\n }\r\n\r\n this.save();\r\n }\r\n\r\n clearErrors(): void {\r\n this.newErrorsCount = 0;\r\n this.newErrorsCountChanged.next();\r\n }\r\n\r\n createObject(keys: string[], mapWithValues: any, useGetItem: boolean): any {\r\n let newObject: any = {};\r\n keys.forEach((key: string) => {\r\n if (useGetItem) {\r\n newObject[key] = mapWithValues.getItem(key);\r\n } else {\r\n newObject[key] = mapWithValues.get(key);\r\n }\r\n });\r\n return newObject;\r\n }\r\n\r\n sanitizeByTime(): void {\r\n let now: Date = new Date();\r\n this.descriptor!.apiCalls = this.descriptor!.apiCalls.filter(\r\n (apiCall: SmartDevToolApiCallDescriptor) => {\r\n let hoursBetween: number;\r\n if (typeof apiCall.requestDate === 'string') {\r\n hoursBetween = Math.floor(\r\n Math.abs(now.getMilliseconds() - new Date(apiCall.requestDate).getMilliseconds()) / 36e5\r\n );\r\n } else {\r\n hoursBetween = Math.floor(\r\n Math.abs(now.getMilliseconds() - apiCall.requestDate.getMilliseconds()) / 36e5\r\n );\r\n }\r\n\r\n return hoursBetween < this.hoursToSave;\r\n }\r\n );\r\n }\r\n\r\n sanitizeByLength(): void {\r\n if (this.descriptor?.apiCalls && this.descriptor.apiCalls.length > this.maxNumOfSavedCalls) {\r\n let length = this.descriptor.apiCalls.length;\r\n this.descriptor.apiCalls.splice(\r\n this.maxNumOfSavedCalls - 1,\r\n length - this.maxNumOfSavedCalls\r\n );\r\n }\r\n }\r\n\r\n save(): void {\r\n try {\r\n localStorage.setItem(this.smartDevToolName, JSON.stringify(this.descriptor));\r\n this.descriptorChanged.next();\r\n } catch (error: any) {\r\n // localStorage.setItem() throws a \"QuotaExceededError\" DOMException exception if the new value\r\n // couldn't be set. (Setting could fail if, e.g., the user has disabled storage for the site,\r\n // or if the quota has been exceeded.)\r\n this.sanitizeByLength();\r\n this.save();\r\n }\r\n }\r\n\r\n clear(): void {\r\n this.descriptor = {\r\n apiCalls: [],\r\n };\r\n this.save();\r\n }\r\n\r\n getPureString(): string {\r\n return localStorage.getItem(this.smartDevToolName)!;\r\n }\r\n}\r\n\r\nexport interface SmartDevToolDescriptor {\r\n apiCalls: SmartDevToolApiCallDescriptor[];\r\n}\r\n\r\nexport interface SmartDevToolApiCallDescriptor {\r\n url: string | null;\r\n responseBody: any;\r\n responseHeader: any;\r\n responseStatus: number;\r\n responseStatusText: string;\r\n responseDate: Date;\r\n requestHeader: any;\r\n requestBody: any;\r\n requestDate: Date;\r\n requestMethod: string;\r\n localStorage: any;\r\n sessionStorage: any;\r\n cookies: any;\r\n}\r\n\r\n@Pipe({\r\n name: 'smartDevToolDatePipe',\r\n})\r\nexport class SmartDevToolDatePipe extends DatePipe implements PipeTransform {\r\n override transform(value: any, format: string = 'yyyy.MM.dd. H:mm:ss'): any {\r\n return super.transform(value, format);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { SmartDialogData, SmartdialogService } from '@smartbit4all/dialog';\r\nimport { Subject } from 'rxjs';\r\nimport { SmartDevToolDescriptor, SmartDevToolService } from '../smart-dev-tool.service';\r\nimport { SmartDevToolDialogComponent } from './smart-dev-tool-dialog.component';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SmartDevToolDialogService extends SmartdialogService {\r\n\tupdate: Subject<void>;\r\n\r\n\tconstructor(dialog: MatDialog, router: Router, public service: SmartDevToolService) {\r\n\t\tsuper(dialog, router);\r\n\t\tthis.update = this.service.descriptorChanged;\r\n\t}\r\n\r\n\toverride handleAfterClosed(result: any): void {}\r\n\r\n\toverride openDialog(): void {\r\n\t\tconst dialogData: SmartDialogData = {\r\n\t\t\tcontent: {\r\n\t\t\t\ttitle: ''\r\n\t\t\t},\r\n\t\t\tsize: {},\r\n\t\t\tcustomComponent: SmartDevToolDialogComponent\r\n\t\t};\r\n\t\tthis.createDialog(dialogData, SmartDevToolDialogComponent);\r\n\t}\r\n\r\n\tgetData(): SmartDevToolDescriptor {\r\n\t\treturn this.service.descriptor!;\r\n\t}\r\n\r\n\tgetPureString(): string {\r\n\t\treturn this.service.getPureString();\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis.service.clear();\r\n\t}\r\n}\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartDevToolDescriptor } from '../smart-dev-tool.service';\r\nimport { SmartDevToolDialogService } from './smart-dev-tool-dialog.service';\r\n\r\n@Component({\r\n selector: 'app-smart-dev-tool-dialog',\r\n templateUrl: './smart-dev-tool-dialog.component.html',\r\n styleUrls: ['./smart-dev-tool-dialog.component.css'],\r\n})\r\nexport class SmartDevToolDialogComponent implements OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n descriptor?: SmartDevToolDescriptor;\r\n\r\n constructor(private service: SmartDevToolDialogService) {\r\n this.descriptor = this.service.getData();\r\n this.service.update.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n this.descriptor = this.service.getData();\r\n });\r\n this.service.service.clearErrors();\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n }\r\n\r\n clear(): void {\r\n this.service.clear();\r\n }\r\n\r\n getBody(inp: any) {\r\n return this.syntaxHighlight(inp);\r\n }\r\n\r\n syntaxHighlight(json: any) {\r\n if (typeof json != 'string') {\r\n json = JSON.stringify(json, undefined, 2);\r\n }\r\n json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\r\n return json.replace(\r\n /(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g,\r\n function (match: any) {\r\n var cls = 'number';\r\n if (/^\"/.test(match)) {\r\n if (/:$/.test(match)) {\r\n cls = 'key';\r\n } else {\r\n cls = 'string';\r\n }\r\n } else if (/true|false/.test(match)) {\r\n cls = 'boolean';\r\n } else if (/null/.test(match)) {\r\n cls = 'null';\r\n }\r\n return '<span class=\"' + cls + '\">' + match + '</span>';\r\n }\r\n );\r\n }\r\n\r\n copy(): void {\r\n copyToClipboard({\r\n value: this.service.getPureString(),\r\n });\r\n }\r\n\r\n close(): void {\r\n this.service.closeDialog();\r\n }\r\n}\r\n\r\ninterface ICopyToClipboard {\r\n /** HTML reference identifier ```<div id=\"foo\"></div>``` */\r\n target?: string;\r\n /** String value */\r\n value?: string;\r\n /** (Optional) message to display in snackbar on success */\r\n message?: string;\r\n}\r\n\r\nexport const copyToClipboard = async ({ target, message, value }: ICopyToClipboard) => {\r\n try {\r\n let copyValue = '';\r\n\r\n if (!navigator.clipboard) {\r\n throw new Error(\"Browser don't have support for native clipboard.\");\r\n }\r\n\r\n if (target) {\r\n const node = document.querySelector(target);\r\n\r\n if (!node || !node.textContent) {\r\n throw new Error('Element not found');\r\n }\r\n\r\n value = node.textContent;\r\n }\r\n\r\n if (value) {\r\n copyValue = value;\r\n }\r\n\r\n await navigator.clipboard.writeText(copyValue);\r\n } catch (error: any) {\r\n console.error(error.toString());\r\n }\r\n};\r\n","<div class=\"smartDevToolDialogContainer\">\r\n <div class=\"header\">\r\n <h2>Developer tool</h2>\r\n <button mat-icon-button title=\"close\" (click)=\"close()\">\r\n <smart-icon icon=\"close\"></smart-icon>\r\n </button>\r\n </div>\r\n <div class=\"requestsContainer\">\r\n <mat-accordion multi>\r\n <mat-expansion-panel\r\n class=\"requestCard\"\r\n [ngClass]=\"apiCall.responseStatus === 200 ? '' : 'hasError'\"\r\n *ngFor=\"let apiCall of descriptor?.apiCalls; let i = index\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <div class=\"titlePanel\">\r\n <span class=\"date\">\r\n {{ apiCall.responseDate | smartDevToolDatePipe }}\r\n </span>\r\n <span class=\"urlText\">\r\n {{ apiCall.url }}\r\n </span>\r\n <div [ngClass]=\"apiCall.requestMethod\">\r\n {{ apiCall.requestMethod }}\r\n </div>\r\n <div [ngClass]=\"'statusCode-' + apiCall.responseStatus.toString()[0]\">\r\n {{ apiCall.responseStatus }}\r\n </div>\r\n </div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div>\r\n <div class=\"table\">\r\n <div class=\"row\">\r\n <div class=\"mainCol heading\">Request</div>\r\n <div class=\"mainCol heading\">Response</div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Date</div>\r\n <div class=\"data\">\r\n {{ apiCall.requestDate | smartDevToolDatePipe }}\r\n </div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Date</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseDate | smartDevToolDatePipe }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Headers</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Headers</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.requestHeader\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.requestHeader)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.requestHeader\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.responseHeader\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.responseHeader)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.responseHeader\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\"></div>\r\n <div class=\"data\"></div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Status</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseStatus }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\"></div>\r\n <div class=\"data\"></div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Status text</div>\r\n <div class=\"data\">\r\n {{ apiCall.responseStatusText }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Body</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Body</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.requestBody\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.requestBody)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.requestBody\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.responseBody\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.responseBody)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.responseBody\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Session Storage</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Local Storage</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <div class=\"heading\">Cookies</div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.sessionStorage\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.sessionStorage)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.sessionStorage\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.localStorage\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.localStorage)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.localStorage\" class=\"data\">null</div>\r\n </div>\r\n <div class=\"mainCol\">\r\n <pre\r\n *ngIf=\"apiCall.cookies\"\r\n class=\"data\"\r\n [innerHTML]=\"getBody(apiCall.cookies)\"\r\n ></pre>\r\n <div *ngIf=\"!apiCall.cookies\" class=\"data\">null</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n <div class=\"buttonsContainer\">\r\n <button color=\"primary\" mat-raised-button (click)=\"copy()\">Copy</button>\r\n <button color=\"warn\" mat-raised-button (click)=\"clear()\">Clear</button>\r\n </div>\r\n</div>\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartDevToolDialogService } from '../smart-dev-tool-dialog/smart-dev-tool-dialog.service';\r\n\r\n@Component({\r\n selector: 'smart-session-dev-tool',\r\n templateUrl: './smart-dev-tool-floating-button.component.html',\r\n styleUrls: ['./smart-dev-tool-floating-button.component.css'],\r\n})\r\nexport class SmartDevToolFloatingButtonComponent implements OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n adminKeyName: string = 'useDevTool';\r\n isShown: boolean = false;\r\n\r\n errorsCount: string = '';\r\n\r\n constructor(private service: SmartDevToolDialogService) {\r\n this.service.service.newErrorsCountChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n this.errorsCount = `${\r\n this.service.service.newErrorsCount > 0 ? this.service.service.newErrorsCount : ''\r\n }`;\r\n });\r\n\r\n window.addEventListener('storage', (event) => {\r\n if (event.storageArea === localStorage) {\r\n if (Object.keys(localStorage).includes(this.adminKeyName)) {\r\n this.isShown = localStorage.getItem(this.adminKeyName) === 'true';\r\n }\r\n }\r\n });\r\n\r\n this.isShown = localStorage.getItem(this.adminKeyName) === 'true';\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n }\r\n\r\n openDevToolDialog(): void {\r\n this.service.openDialog();\r\n }\r\n}\r\n","<button\r\n *ngIf=\"isShown\"\r\n mat-fab\r\n [color]=\"errorsCount.length ? 'warn' : 'accent'\"\r\n class=\"floatingButton\"\r\n extended\r\n title=\"devTool\"\r\n (click)=\"openDevToolDialog()\"\r\n>\r\n <smart-icon color=\"white\" icon=\"developer_mode\"></smart-icon>\r\n {{ errorsCount }}\r\n</button>\r\n","import {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpEventType,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n} from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { catchError, map, Observable, throwError } from \"rxjs\";\r\nimport { SmartDevToolService } from \"./smart-dev-tool.service\";\r\n\r\n@Injectable()\r\nexport class SmartDevToolInterceptor implements HttpInterceptor {\r\n constructor(private service: SmartDevToolService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n if (!this.service.isActive) {\r\n return next.handle(request);\r\n }\r\n let requestDate = new Date();\r\n return next.handle(request).pipe(\r\n map((event: HttpEvent<any>) => {\r\n if (event.type === HttpEventType.Response) {\r\n let responseDate = new Date();\r\n this.service.writeResponse(request, event, requestDate, responseDate);\r\n }\r\n\r\n return event;\r\n })\r\n );\r\n }\r\n}\r\n@Injectable()\r\nexport class SmartDevToolErrorInterceptor implements HttpInterceptor {\r\n constructor(private service: SmartDevToolService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n if (!this.service.isActive) {\r\n return next.handle(request);\r\n }\r\n let requestDate = new Date();\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (error.status !== 200) {\r\n let responseDate = new Date();\r\n this.service.writeResponse(request, error, requestDate, responseDate);\r\n }\r\n\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n}\r\n","export interface SmartSessionHandlerService {\r\n handleSessionError(sessionError: SessionError): Promise<void>;\r\n}\r\n\r\nexport interface SessionError {\r\n code: string;\r\n behaviour: SessionErrorBehaviour;\r\n}\r\n\r\nexport enum SessionErrorBehaviour {\r\n REFRESH,\r\n RESTART,\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartSessionService } from '../smart-session.service';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartSessionTimerService implements OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n totalTimeInMinutes: number = 30;\r\n timeLeftInSeconds?: number;\r\n\r\n readonly sessionExpiration: string = 'sessionExpiracy';\r\n\r\n timeChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n onTimerExpired: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n timer: any;\r\n\r\n constructor(private session: SmartSessionService) {\r\n this.session.sessionExpiracyChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n this.restart();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n startTimer(): void {\r\n let sessionInfoData = this.session.sessionInfoData;\r\n let expiration = new Date(sessionInfoData!.expiration!);\r\n let now = new Date();\r\n\r\n this.timeLeftInSeconds = Math.floor((expiration.getTime() - now.getTime()) / 1000);\r\n this.timer = setInterval(() => {\r\n this.timeLeftInSeconds!--;\r\n if (this.timeLeftInSeconds === 0) {\r\n this.timeout();\r\n }\r\n this.timeChanged.next();\r\n }, 1000);\r\n }\r\n\r\n restart(): void {\r\n clearInterval(this.timer);\r\n\r\n this.startTimer();\r\n }\r\n\r\n timeout(): void {\r\n clearInterval(this.timer);\r\n\r\n this.onTimerExpired.next();\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\n\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartSessionTimerService } from './smart-session-timer.service';\r\n\r\n@Component({\r\n selector: 'smart-session-timer',\r\n templateUrl: './smart-session-timer.component.html',\r\n styleUrls: ['./smart-session-timer.component.css'],\r\n providers: [SmartSessionTimerService],\r\n})\r\nexport class SmartSessionTimerComponent implements OnInit, OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n timeInSeconds?: number;\r\n\r\n constructor(public service: SmartSessionTimerService) {}\r\n\r\n ngOnInit(): void {\r\n this.service.startTimer();\r\n this.timeInSeconds = this.service.timeLeftInSeconds;\r\n\r\n this.service.timeChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n this.timeInSeconds = this.service.timeLeftInSeconds;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n formatTime(seconds: number): string {\r\n let minutes: number = Math.floor(seconds / 60);\r\n let remainingSeconds: number = seconds % 60;\r\n return `${minutes}:${remainingSeconds < 10 ? '0' : ''}${remainingSeconds}`;\r\n }\r\n}\r\n","<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\" *ngIf=\"timeInSeconds\">\r\n {{ formatTime(timeInSeconds!) }}\r\n </span>\r\n</div>\r\n","/*\r\n * Public API Surface of smart-session\r\n */\r\n\r\nexport * from \"./smart-session.service\";\r\nexport * from \"./api/index\";\r\nexport * from \"./smart-session.module\";\r\nexport * from \"./dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component\";\r\nexport * from \"./dev-tool/smart-dev-tool.service\";\r\nexport * from \"./smart-session-handler.service\";\r\nexport * from \"./smart-timer/smart-session-timer.component\";\r\nexport * from \"./smart-timer/smart-session-timer.service\";\r\n","import {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n} from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { from, Observable, throwError } from \"rxjs\";\r\nimport { catchError, switchMap } from \"rxjs/operators\";\r\nimport {\r\n ApiError,\r\n HeaderParam,\r\n SessionError,\r\n SessionErrorBehaviour,\r\n SmartSessionService,\r\n} from \"./projects\";\r\n\r\n@Injectable()\r\nexport class SmartErrorCatchingInterceptor implements HttpInterceptor {\r\n sessionErrorCodes: SessionError[] = [\r\n {\r\n code: \"session.expired\",\r\n behaviour: SessionErrorBehaviour.REFRESH,\r\n },\r\n {\r\n code: \"session.refreshtoken.invalid\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n {\r\n code: \"session.badrequest.missingtoken\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n {\r\n code: \"session.security.nocontext\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n {\r\n code: \"session.invalidsessionuri\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n {\r\n code: \"session.notinitialized\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n {\r\n code: \"session.viewcontext.missing\",\r\n behaviour: SessionErrorBehaviour.RESTART,\r\n },\r\n ];\r\n\r\n constructor(private session: SmartSessionService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (error.status === 400 && (error.error as ApiError).code) {\r\n let sessionError = this.sessionErrorCodes.find(\r\n (sessionError: SessionError) =>\r\n sessionError.code === (error.error as ApiError).code\r\n );\r\n if (sessionError) {\r\n return this.resolveError(sessionError).pipe(\r\n switchMap(() => {\r\n this.session.headerParams.map((headerParam: HeaderParam) => {\r\n request = request.clone({\r\n headers: request.headers.set(\r\n headerParam.headerName,\r\n headerParam.value\r\n ),\r\n });\r\n });\r\n return next.handle(request);\r\n })\r\n );\r\n }\r\n }\r\n\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n resolveError(sessionError: SessionError): Observable<any> {\r\n if (sessionError.behaviour === SessionErrorBehaviour.RESTART) {\r\n return from(this.session.handleSessionError(sessionError));\r\n }\r\n return from(this.session.refreshSession());\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { SmartSessionService } from './smart-session.service';\r\n\r\n@Injectable()\r\nexport class SmartHeaderMaintainerInterceptor implements HttpInterceptor {\r\n constructor(private session: SmartSessionService) {}\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n // new request data\r\n let url = request.urlWithParams.replace('http://localhost', this.session.getBasePath());\r\n // TODO fix me\r\n if (request.urlWithParams.includes('/kerb/sso')) {\r\n request = request.clone({\r\n url: url,\r\n });\r\n\r\n return next.handle(request);\r\n }\r\n\r\n let headers: { [name: string]: string | string[] } = {};\r\n\r\n // copy current headers\r\n request.headers.keys().map((key) => {\r\n let value = request.headers.getAll(key);\r\n if (value) {\r\n headers[key] = value;\r\n }\r\n });\r\n\r\n // add own headers\r\n const hasHeaders = this.session.headerParams && this.session.headerParams.length;\r\n if (hasHeaders) {\r\n this.session.headerParams.map((headerParam) => {\r\n headers[headerParam.headerName] = headerParam.value;\r\n });\r\n }\r\n\r\n // create new request (necessary to rewrite url)\r\n request = request.clone({\r\n url: url,\r\n setHeaders: headers,\r\n });\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","import { HTTP_INTERCEPTORS } from \"@angular/common/http\";\r\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from \"@angular/core\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCommonModule } from \"@angular/material/core\";\r\nimport { MatExpansionModule } from \"@angular/material/expansion\";\r\nimport { BrowserModule } from \"@angular/platform-browser\";\r\nimport { SmartdialogModule } from \"@smartbit4all/dialog\";\r\nimport { SmartIconModule } from \"@smartbit4all/icon\";\r\nimport { SmartCookieService } from \"./cookie-service/smart-cookie.service\";\r\nimport { SmartDevToolDialogComponent } from \"./dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component\";\r\nimport { SmartDevToolFloatingButtonComponent } from \"./dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component\";\r\nimport {\r\n SmartDevToolInterceptor,\r\n SmartDevToolErrorInterceptor,\r\n} from \"./dev-tool/smart-dev-tool.interceptor\";\r\nimport { SmartDevToolDatePipe } from \"./dev-tool/smart-dev-tool.service\";\r\nimport { SmartErrorCatchingInterceptor } from \"./smart-error-catching.interceptor\";\r\nimport { SmartHeaderMaintainerInterceptor } from \"./smart-header-maintainer.interceptor\";\r\nimport { SmartSessionService } from \"./smart-session.service\";\r\nimport { SmartSessionTimerComponent } from \"./smart-timer/smart-session-timer.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n SmartDevToolDialogComponent,\r\n SmartDevToolFloatingButtonComponent,\r\n SmartDevToolDatePipe,\r\n SmartSessionTimerComponent,\r\n ],\r\n imports: [BrowserModule, MatCommonModule, MatExpansionModule, MatButtonModule, SmartIconModule],\r\n exports: [SmartDevToolFloatingButtonComponent, SmartSessionTimerComponent],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [\r\n SmartCookieService,\r\n SmartSessionService,\r\n SmartdialogModule,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: SmartErrorCatchingInterceptor,\r\n multi: true,\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: SmartHeaderMaintainerInterceptor,\r\n multi: true,\r\n },\r\n { provide: HTTP_INTERCEPTORS, useClass: SmartDevToolInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: SmartDevToolErrorInterceptor, multi: true },\r\n ],\r\n})\r\nexport class SmartSessionModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { SmartDialogData, SmartdialogService } from '@smartbit4all/dialog';\r\n\r\nimport { ViewApiError } from '../api';\r\nimport { SmartViewContextApiError } from '../smart-view-context.model';\r\nimport {\r\n SmartViewContextErrorDialogButtonLabel,\r\n SmartViewContextErrorDialogMessage,\r\n SmartViewContextErrorDialogTitle,\r\n SmartViewContextService,\r\n} from '../smart-view-context.service';\r\nimport { SmartViewContextErrorDialogComponent } from './smart-view-context-error-dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmartViewContextErrorDialogService extends SmartdialogService {\r\n viewApiError?: ViewApiError;\r\n\r\n dialogRefs: MatDialogRef<any, any>[] = [];\r\n\r\n constructor(dialog: MatDialog, router: Router, private viewContext: SmartViewContextService) {\r\n super(dialog, router);\r\n }\r\n\r\n override handleAfterClosed(result: any): void {}\r\n\r\n override openDialog(): void {\r\n const dialogData: SmartDialogData = {\r\n content: {\r\n title: '',\r\n },\r\n size: {},\r\n customComponent: SmartViewContextErrorDialogComponent,\r\n };\r\n this.dialogRefs.push(this.createDialogRef(dialogData, SmartViewContextErrorDialogComponent));\r\n }\r\n\r\n override async closeDialog(): Promise<void> {\r\n let dialogRef = this.dialogRefs.pop();\r\n dialogRef?.close();\r\n }\r\n\r\n async getSmartViewContextApiError(): Promise<SmartViewContextApiError> {\r\n if (this.viewApiError?.code) {\r\n return await this.viewContext.getSmartViewContextApiErrorByCode(this.viewApiError.code);\r\n }\r\n\r\n let dialogTitle;\r\n let buttonLabel;\r\n let message;\r\n\r\n if (this.viewContext.translateService) {\r\n dialogTitle = await this.viewContext.translateService\r\n .get(SmartViewContextErrorDialogTitle)\r\n .toPromise();\r\n buttonLabel = await this.viewContext.translateService\r\n .get(SmartViewContextErrorDialogButtonLabel)\r\n .toPromise();\r\n message = await this.viewContext.translateService\r\n .get(SmartViewContextErrorDialogMessage)\r\n .toPromise();\r\n } else {\r\n buttonLabel = 'Ok';\r\n dialogTitle = 'Hiba';\r\n message = 'An error has occured.';\r\n }\r\n\r\n return {\r\n code: this.viewApiError?.code ?? '',\r\n message: this.viewApiError?.message ?? message,\r\n buttonLabel,\r\n dialogTitle,\r\n };\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SmartViewContextApiError } from '../smart-view-context.model';\r\nimport { SmartViewContextErrorDialogService } from './smart-view-context-error-dialog.service';\r\n\r\n@Component({\r\n selector: 'lib-smart-view-context-error-dialog',\r\n templateUrl: './smart-view-context-error-dialog.component.html',\r\n styleUrls: ['./smart-view-context-error-dialog.component.css'],\r\n})\r\nexport class SmartViewContextErrorDialogComponent implements OnInit {\r\n smartViewContextApiError?: SmartViewContextApiError;\r\n\r\n constructor(private service: SmartViewContextErrorDialogService) {\r\n this.service\r\n .getSmartViewContextApiError()\r\n .then((smartViewContextApiError: SmartViewContextApiError) => {\r\n this.smartViewContextApiError = smartViewContextApiError;\r\n });\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n onActionClick(): void {\r\n if (this.smartViewContextApiError?.customAction) {\r\n this.smartViewContextApiError.customAction();\r\n }\r\n this.service.closeDialog();\r\n }\r\n}\r\n","<div *ngIf=\"smartViewContextApiError\" class=\"container\">\r\n <h3 class=\"color-accent-700\">\r\n {{ smartViewContextApiError.dialogTitle }}\r\n </h3>\r\n <div class=\"content\">\r\n <p>\r\n {{ smartViewContextApiError.message }}\r\n </p>\r\n </div>\r\n <div class=\"buttonContainer\">\r\n <button mat-raised-button color=\"primary\" (click)=\"onActionClick()\">\r\n {{ smartViewContextApiError.buttonLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n","import {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest,\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError, Observable, throwError } from 'rxjs';\r\nimport { UiActionRequest, ViewApiError } from './api';\r\nimport { SmartViewContextErrorDialogService } from './smart-view-context-error-dialog/smart-view-context-error-dialog.service';\r\nimport { IS_ASYNC_PARAM_NAME } from './smart-view-context.service';\r\n\r\n@Injectable()\r\nexport class SmartViewContextInterceptor implements HttpInterceptor {\r\n constructor(private viewContextErrorDialog: SmartViewContextErrorDialogService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n // parameter: async: True -> don't throw/open error (dialog)\r\n if (request.body) {\r\n try {\r\n let body: UiActionRequest = request.body as UiActionRequest;\r\n if (body.params[IS_ASYNC_PARAM_NAME]) {\r\n return next.handle(request);\r\n }\r\n } catch (error) {}\r\n }\r\n\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (\r\n error.status === 409 &&\r\n ((error.error as ViewApiError).code || (error.error as ViewApiError).message)\r\n ) {\r\n this.openErrorDialog(error.error);\r\n }\r\n\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n openErrorDialog(viewApiError: ViewApiError): void {\r\n this.viewContextErrorDialog.viewApiError = viewApiError;\r\n this.viewContextErrorDialog.openDialog();\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { SmartNavigationService } from \"@smartbit4all/navigation\";\r\nimport { SmartViewContextService } from \"../smart-view-context.service\";\r\n\r\n@Component({\r\n selector: \"app-redirect\",\r\n template: \"<div>Smart redirect</div>\",\r\n})\r\nexport class SmartViewRedirect {\r\n constructor(\r\n private service: SmartViewContextService,\r\n private navigation: SmartNavigationService,\r\n private route: ActivatedRoute\r\n ) {\r\n this.navigation.route = this.route;\r\n this.navigation.subscribeToUrlChange((url: string) => {\r\n let channel = this.route.snapshot.paramMap.get(SmartLinkChannelVariableInPath);\r\n let uuid = this.route.snapshot.paramMap.get(SmartLinkUuidVariableInPath);\r\n\r\n if (!channel || !uuid) {\r\n throw new Error(\"channel or uuid is not reachable from the url!\");\r\n }\r\n this.service.showPublishedView(channel, uuid);\r\n });\r\n }\r\n}\r\n\r\nexport const SmartLinkChannelVariableInPath: string = \"channel\";\r\nexport const SmartLinkUuidVariableInPath: string = \"uuid\";\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport {\r\n UiAction,\r\n UiActionButtonIconPos,\r\n UiActionButtonType,\r\n UiActionDescriptor,\r\n UiActionFeedbackType,\r\n} from '../api';\r\nimport { SmartViewContextService } from '../smart-view-context.service';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiActionDescriptorService implements OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n languageChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n keysToTranslate: string[] = ['title', 'text', 'placeholder', 'caption', 'feedbackText'];\r\n\r\n constructor(private viewContext: SmartViewContextService) {\r\n if (this.viewContext.translateService) {\r\n this.subscribeToTranslateService();\r\n } else {\r\n this.viewContext.translateServiceChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n this.subscribeToTranslateService();\r\n });\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n private subscribeToTranslateService(): void {\r\n this.viewContext\r\n .translateService!.onLangChange.pipe(takeUntil(this._destroy$))\r\n .subscribe(() => {\r\n this.languageChanged.next();\r\n });\r\n }\r\n\r\n public async getActionDescriptor(uiAction: UiAction): Promise<UiActionDescriptor> {\r\n let code = uiAction.code!;\r\n let actionDescriptorFromDescriptors = this.viewContext.getActionDescriptors()?.get(code);\r\n let isUnkown = false;\r\n\r\n let actionDescriptor: UiActionDescriptor | undefined | null;\r\n if (actionDescriptorFromDescriptors) {\r\n actionDescriptor = JSON.parse(JSON.stringify(actionDescriptorFromDescriptors));\r\n }\r\n\r\n if (!actionDescriptor) {\r\n isUnkown = true;\r\n let unkownActionDescriptor = this.basicActionDescriptors.get('UNKOWN');\r\n actionDescriptor = { ...unkownActionDescriptor! };\r\n actionDescriptor!.title = code;\r\n }\r\n\r\n if (!actionDescriptor!.dialog) {\r\n actionDescriptor = this.setUpUnkownDialogDescriptor(code, actionDescriptor!, 'dialog');\r\n }\r\n\r\n if (!actionDescriptor!.feedbackType && uiAction.submit) {\r\n actionDescriptor!.feedbackType = UiActionFeedbackType.Snackbar;\r\n }\r\n\r\n if (this.viewContext.translateService && actionDescriptor && !isUnkown) {\r\n actionDescriptor = await this.translateUiActionDescriptor(actionDescriptor);\r\n }\r\n\r\n return actionDescriptor!;\r\n }\r\n\r\n private async translateUiActionDescriptor(\r\n uiActionDescriptor: UiActionDescriptor\r\n ): Promise<UiActionDescriptor> {\r\n uiActionDescriptor = await this.deepTranslate(uiActionDescriptor);\r\n\r\n return uiActionDescriptor;\r\n }\r\n\r\n private async deepTranslate(_model: any): Promise<any> {\r\n let model = { ..._model };\r\n await Promise.all(\r\n Object.keys(model).map(async (key: string) => {\r\n if (\r\n model[key] !== undefined &&\r\n typeof model[key] === 'string' &&\r\n model[key].length &&\r\n this.keysToTranslate.includes(key)\r\n ) {\r\n model[key] = await this.viewContext.translateService!.get(model[key]).toPromise();\r\n } else if (model[key] !== undefined && typeof model[key] === 'object') {\r\n model[key] = await this.deepTranslate(model[key]);\r\n }\r\n return model;\r\n })\r\n );\r\n\r\n return model;\r\n }\r\n\r\n private setUpUnkownDialogDescriptor(\r\n code: string,\r\n uiActionDescriptor: UiActionDescriptor,\r\n dialogType: 'dialog' | 'confirmDialog' | 'inputDialog' | 'input2Dialog'\r\n ): UiActionDescriptor {\r\n let unkownDescriptor = this.basicActionDescriptors.get('UNKOWN');\r\n\r\n uiActionDescriptor[dialogType] = unkownDescriptor!.dialog;\r\n uiActionDescriptor[dialogType]!.title = code;\r\n uiActionDescriptor[dialogType]!.actionButton.caption = code;\r\n\r\n return uiActionDescriptor;\r\n }\r\n\r\n private basicActionDescriptors: Map<string, UiActionDescriptor> = new Map([\r\n [\r\n 'UNKOWN',\r\n {\r\n title: '',\r\n type: UiActionButtonType.Normal,\r\n color: 'accent',\r\n icon: 'Question',\r\n iconColor: `text-primary`,\r\n iconPosition: UiActionButtonIconPos.Post,\r\n dialog: {\r\n title: '',\r\n placeholder: 'placeholder',\r\n actionButton: {\r\n caption: '',\r\n color: 'accent',\r\n },\r\n cancelButton: {\r\n caption: 'Mégse',\r\n color: '',\r\n },\r\n },\r\n },\r\n ],\r\n ]);\r\n}\r\n","import { Component, Inject } from \"@angular/core\";\r\nimport { MAT_SNACK_BAR_DATA } from \"@angular/material/snack-bar\";\r\nimport { UiAction } from \"../../../api\";\r\n\r\nimport { SmartViewContextService } from \"../../../smart-view-context.service\";\r\nimport { UiActionDescriptorService } from \"../../ui-action.descriptor.service\";\r\n\r\n@Component({\r\n selector: \"app-success-snack-bar\",\r\n templateUrl: \"./success-snack-bar.component.html\",\r\n styleUrls: [\"./success-snack-bar.component.css\"],\r\n})\r\nexport class SuccessSnackBarComponent {\r\n text?: string;\r\n\r\n constructor(\r\n @Inject(MAT_SNACK_BAR_DATA) public data: UiAction,\r\n private viewContext: SmartViewContextService,\r\n private manager: UiActionDescriptorService\r\n ) {\r\n this.manager.getActionDescriptor(data).then((descriptor) => {\r\n if (descriptor.feedbackText) {\r\n this.text = descriptor.feedbackText;\r\n } else {\r\n this.text = this.viewContext.commonFeedbackText ?? \"A mentés sikeres volt!\";\r\n }\r\n });\r\n }\r\n}\r\n","<span class=\"successSnakBarContainer\" matSnackBarLabel> {{ text }} </span>\r\n","import { Component, OnDestroy } from \"@angular/core\";\r\nimport { UiActionDescriptor } from \"../../../api\";\r\nimport { UiActionDescriptorService } from \"../../ui-action.descriptor.service\";\r\nimport { UiActionConfirmDialogService } from \"./ui-action-confirm-dialog.service\";\r\n\r\n@Component({\r\n selector: \"app-ui-action-confirm-dialog\",\r\n templateUrl: \"./ui-action-confirm-dialog.component.html\",\r\n styleUrls: [\"./ui-action-confirm-dialog.component.css\"],\r\n})\r\nexport class UiActionConfirmDialogComponent implements OnDestroy {\r\n code!: string;\r\n dialogType!: \"dialog\" | \"confirmDialog\" | \"inputDialog\";\r\n\r\n descriptor?: UiActionDescriptor;\r\n\r\n constructor(\r\n private service: UiActionConfirmDialogService,\r\n private manager: UiActionDescriptorService\r\n ) {\r\n this.code = this.service.action.code!;\r\n this.setUp();\r\n }\r\n\r\n async setUp(): Promise<void> {\r\n this.descriptor = await this.manager.getActionDescriptor(this.service.action);\r\n\r\n this.dialogType = this.descriptor.confirmDialog ? \"confirmDialog\" : \"dialog\";\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.service._destroy$.next();\r\n this.cancel();\r\n }\r\n\r\n getTitle(): string {\r\n return this.descriptor![this.dialogType]!.title;\r\n }\r\n getText(): string {\r\n return this.descriptor![this.dialogType]!.text ?? \"\";\r\n }\r\n getActionButtonLabel(): string {\r\n return this.descriptor![this.dialogType]!.actionButton.caption;\r\n }\r\n getActionButtonColor(): string {\r\n return this.descriptor![this.dialogType]!.actionButton.color;\r\n }\r\n getCancelButtonLabel(): string {\r\n return this.descriptor![this.dialogType]!.cancelButton.caption;\r\n }\r\n getCancelButtonColor(): string {\r\n return this.descriptor![this.dialogType]!.cancelButton.color;\r\n }\r\n\r\n doAction(): void {\r\n this.service.doAction();\r\n }\r\n\r\n cancel(): void {\r\n this.service.cancel();\r\n }\r\n}\r\n","<div class=\"folderNameDialogContainer\">\r\n\t<div class=\"headerContainer\">\r\n\t\t<h3 class=\"color-accent-700\">\r\n\t\t\t{{ getTitle() }}\r\n\t\t</h3>\r\n\t\t<button mat-icon-button title=\"close\" (click)=\"cancel()\">\r\n\t\t\t<smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\r\n\t\t</button>\r\n\t</div>\r\n\t<p>\r\n\t\t{{ getText() }}\r\n\t</p>\r\n\t<div class=\"folderNameDialogButtonsContainer\">\r\n\t\t<button mat-button color=\"accent\" [color]=\"getCancelButtonColor()\" (click)=\"cancel()\">\r\n\t\t\t{{ getCancelButtonLabel() }}\r\n\t\t</button>\r\n\t\t<button mat-raised-button [color]=\"getActionButtonColor()\" (click)=\"doAction()\">\r\n\t\t\t{{ getActionButtonLabel() }}\r\n\t\t</button>\r\n\t</div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { SmartDialogData, SmartdialogService } from '@smartbit4all/dialog';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { UiAction } from '../../../api';\r\nimport { UiActionConfirmDialogComponent } from './ui-action-confirm-dialog.component';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiActionConfirmDialogService extends SmartdialogService {\r\n _destroy$: Subject<void> = new Subject();\r\n\r\n action!: UiAction;\r\n\r\n onAction: Subject<void> = new SmartSubject(this._destroy$);\r\n shouldDoAction: boolean = false;\r\n\r\n constructor(dialog: MatDialog, router: Router) {\r\n super(dialog, router);\r\n }\r\n\r\n override openDialog(): void {\r\n this.shouldDoAction = false;\r\n this.onAction = new SmartSubject(this._destroy$);\r\n const dialogData: SmartDialogData = {\r\n content: {\r\n title: '',\r\n },\r\n size: {},\r\n customComponent: UiActionConfirmDialogComponent,\r\n };\r\n this.createDialog(dialogData, UiActionConfirmDialogComponent);\r\n }\r\n\r\n doAction(): void {\r\n this.shouldDoAction = true;\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n cancel(): void {\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n}\r\n","import { Component, OnDestroy, ViewChild } from '@angular/core';\r\nimport { Validators } from '@angular/forms';\r\nimport {\r\n\tSmartForm,\r\n\tSmartformComponent,\r\n\tSmartFormWidget,\r\n\tSmartFormWidgetDirection,\r\n\tSmartFormWidgetType,\r\n\tSmartValidatorName,\r\n} from '@smartbit4all/form';\r\nimport { UiActionDescriptor, UiActionInputType } from '../../../api';\r\n\r\nimport { UiActionDescriptorService } from '../../ui-action.descriptor.service';\r\n\r\nimport { UiActionInputDialogService } from './ui-action-input-dialog.service';\r\n\r\n@Component({\r\n\tselector: 'smart-ui-action-input-dialog',\r\n\ttemplateUrl: './ui-action-input-dialog.component.html',\r\n\tstyleUrls: ['./ui-action-input-dialog.component.css'],\r\n})\r\nexport class UiActionInputDialogComponent implements OnDestroy {\r\n\t@ViewChild('form') folderFormChild!: SmartformComponent;\r\n\tcode!: string;\r\n\tfolderForm!: SmartForm;\r\n\r\n\tdialogType!: 'dialog' | 'inputDialog' | 'input2Dialog';\r\n\r\n\tdescriptor?: UiActionDescriptor;\r\n\r\n\tconstructor(private service: UiActionInputDialogService, private manager: UiActionDescriptorService) {\r\n\t\tthis.code = this.service.action.code!;\r\n\t\tthis.setUp();\r\n\t}\r\n\tngOnDestroy(): void {\r\n\t\tthis.service._destroy$.next();\r\n\t\tthis.cancel();\r\n\t}\r\n\r\n\tasync setUp(): Promise<void> {\r\n\t\tthis.descriptor = await this.manager.getActionDescriptor(this.service.action);\r\n\r\n\t\tif (this.descriptor[this.service.inputTypeName]) {\r\n\t\t\tthis.dialogType = this.service.inputTypeName;\r\n\t\t} else {\r\n\t\t\tthis.dialogType = this.descriptor.inputDialog ? 'inputDialog' : 'dialog';\r\n\t\t}\r\n\r\n\t\tthis.constructForm();\r\n\t}\r\n\r\n\tgetTitle(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.title;\r\n\t}\r\n\tgetText(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.text ?? '';\r\n\t}\r\n\tgetActionButtonLabel(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.actionButton.caption;\r\n\t}\r\n\tgetActionButtonColor(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.actionButton.color;\r\n\t}\r\n\tgetCancelButtonLabel(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.cancelButton.caption;\r\n\t}\r\n\tgetCancelButtonColor(): string {\r\n\t\treturn this.descriptor![this.dialogType]!.cancelButton.color;\r\n\t}\r\n\r\n\tconstructForm(): void {\r\n\t\tlet model: any = {};\r\n\t\tlet inputName: 'input' | 'input2';\r\n\r\n\t\tif (this.service.inputTypeName === 'inputDialog') {\r\n\t\t\tinputName = 'input';\r\n\t\t} else {\r\n\t\t\tinputName = 'input2';\r\n\t\t}\r\n\r\n\t\tif (this.service.nodeName) {\r\n\t\t\tmodel[inputName] = this.service.nodeName;\r\n\t\t} else {\r\n\t\t\tmodel[inputName] = '';\r\n\t\t}\r\n\t\tlet type: SmartFormWidgetType;\r\n\t\tlet inputType: 'inputType' | 'input2Type' = `${inputName}Type`;\r\n\r\n\t\tif (this.service.action[inputType] === UiActionInputType.Textfield) {\r\n\t\t\ttype = SmartFormWidgetType.TEXT_FIELD;\r\n\t\t} else {\r\n\t\t\ttype = SmartFormWidgetType.TEXT_BOX;\r\n\t\t}\r\n\r\n\t\tlet widgets: SmartFormWidget<any>[] = [\r\n\t\t\t{\r\n\t\t\t\tkey: inputName,\r\n\t\t\t\tlabel: '',\r\n\t\t\t\ttype,\r\n\t\t\t\tvalue: '',\r\n\t\t\t\tvalidators: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvalidator: Validators.required,\r\n\t\t\t\t\t\tname: SmartValidatorName.required,\r\n\t\t\t\t\t\terrorMessage: 'Ez a mező kötelező',\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t\tplaceholder: this.descriptor![this.dialogType]!.placeholder ?? '',\r\n\t\t\t\tshowLabel: true,\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\tif (widgets[0].type === SmartFormWidgetType.TEXT_FIELD && this.descriptor![this.dialogType]?.mask) {\r\n\t\t\twidgets[0].mask = this.descriptor![this.dialogType]?.mask;\r\n\t\t}\r\n\r\n\t\tthis.folderForm = {\r\n\t\t\tdirection: SmartFormWidgetDirection.COL,\r\n\t\t\tmodel,\r\n\t\t\twidgets,\r\n\t\t};\r\n\t}\r\n\r\n\tsave(): void {\r\n\t\tlet form = this.folderFormChild.submitForm();\r\n\t\tif ((form as SmartForm).invalidFields) {\r\n\t\t\tthrow new Error('The form is invalid!');\r\n\t\t}\r\n\t\tthis.service.onSave((form as SmartForm).model);\r\n\t}\r\n\r\n\tcancel(): void {\r\n\t\tthis.service.cancel();\r\n\t}\r\n}\r\n","<div class=\"folderNameDialogContainer\">\r\n\t<div class=\"headerContainer\">\r\n\t\t<h3 class=\"color-accent-700\">\r\n\t\t\t{{ getTitle() }}\r\n\t\t</h3>\r\n\t\t<button mat-icon-button title=\"close\" (click)=\"cancel()\">\r\n\t\t\t<smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\r\n\t\t</button>\r\n\t</div>\r\n\t<p>\r\n\t\t{{ getText() }}\r\n\t</p>\r\n\t<smartform #form [smartForm]=\"folderForm\"></smartform>\r\n\t<div class=\"folderNameDialogButtonsContainer\">\r\n\t\t<button mat-button color=\"accent\" [color]=\"getCancelButtonColor()\" (click)=\"cancel()\">\r\n\t\t\t{{ getCancelButtonLabel() }}\r\n\t\t</button>\r\n\t\t<button mat-raised-button [color]=\"getActionButtonColor()\" (click)=\"save()\">\r\n\t\t\t{{ getActionButtonLabel() }}\r\n\t\t</button>\r\n\t</div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { SmartDialogData, SmartdialogService } from '@smartbit4all/dialog';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { UiAction, UiActionRequest } from '../../../api';\r\nimport { UiActionInputDialogComponent } from './ui-action-input-dialog.component';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiActionInputDialogService extends SmartdialogService {\r\n _destroy$: Subject<void> = new Subject();\r\n\r\n inputTypeName!: 'inputDialog' | 'input2Dialog';\r\n action!: UiAction;\r\n nodeName?: string;\r\n\r\n onAction: Subject<EditFolderAction> = new SmartSubject(this._destroy$);\r\n params?: any;\r\n\r\n constructor(dialog: MatDialog, router: Router) {\r\n super(dialog, router);\r\n }\r\n\r\n setDataAndOpenDialog(action: UiAction, nodeName?: string): void {\r\n this.action = action;\r\n this.nodeName = nodeName;\r\n this.openDialog();\r\n }\r\n\r\n override openDialog(): void {\r\n this.params = undefined;\r\n this.onAction = new SmartSubject(this._destroy$);\r\n const dialogData: SmartDialogData = {\r\n content: {\r\n title: '',\r\n },\r\n size: {},\r\n customComponent: UiActionInputDialogComponent,\r\n };\r\n this.createDialog(dialogData, UiActionInputDialogComponent);\r\n }\r\n\r\n async onSave(params: any): Promise<void> {\r\n this.params = params;\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n\r\n cancel(): void {\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n}\r\n\r\nexport interface EditFolderAction {\r\n nodeId: string;\r\n uiActionRequest: UiActionRequest;\r\n}\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { SmartFileUploaderI18n } from '@smartbit4all/form';\r\nimport { UiActionDescriptor } from '../../../api';\r\nimport { UiActionDescriptorService } from '../../ui-action.descriptor.service';\r\nimport { UiActionFileUploadDialogService } from './ui-action-file-upload-dialog.service';\r\n\r\n@Component({\r\n selector: 'lib-ui-action-file-upload-dialog',\r\n templateUrl: './ui-action-file-upload-dialog.component.html',\r\n styleUrls: ['./ui-action-file-upload-dialog.component.css'],\r\n})\r\nexport class UiActionFileUploadDialogComponent implements OnDestroy {\r\n code!: string;\r\n\r\n dialogType!: 'dialog' | 'inputDialog' | 'input2Dialog';\r\n\r\n descriptor?: UiActionDescriptor;\r\n\r\n i18n?: SmartFileUploaderI18n;\r\n maxSizeMb?: number;\r\n fileFormats?: string[];\r\n isMultiple?: boolean;\r\n\r\n constructor(\r\n private service: UiActionFileUploadDialogService,\r\n private manager: UiActionDescriptorService\r\n ) {\r\n this.code = this.service.action.code!;\r\n this.setUp();\r\n }\r\n ngOnDestroy(): void {\r\n this.service._destroy$.next();\r\n this.cancel();\r\n }\r\n\r\n async setUp(): Promise<void> {\r\n this.descriptor = await this.manager.getActionDescriptor(this.service.action);\r\n\r\n this.isMultiple = this.service.isMultiple;\r\n\r\n this.i18n = {\r\n addFile: this.descriptor.upload?.title ?? 'dokumentum hozzáadása',\r\n browseOrDrag: this.descriptor.upload?.description ?? 'tallózás vagy behúzás',\r\n formats: this.descriptor.upload?.formats ?? '',\r\n maxSize: this.descriptor.upload?.maxSize ?? '',\r\n upload: this.descriptor.upload?.uploadButtonTitle,\r\n };\r\n\r\n // TODO set max size and file formats by UiAction.params\r\n\r\n if (this.descriptor[this.service.inputTypeName]) {\r\n this.dialogType = this.service.inputTypeName;\r\n } else {\r\n this.dialogType = this.descriptor.inputDialog ? 'inputDialog' : 'dialog';\r\n }\r\n }\r\n\r\n getTitle(): string {\r\n return this.descriptor![this.dialogType]!.title;\r\n }\r\n getText(): string {\r\n return this.descriptor![this.dialogType]!.text ?? '';\r\n }\r\n getActionButtonLabel(): string {\r\n return this.descriptor![this.dialogType]!.actionButton.caption;\r\n }\r\n getActionButtonColor(): string {\r\n return this.descriptor![this.dialogType]!.actionButton.color;\r\n }\r\n getCancelButtonLabel(): string {\r\n return this.descriptor![this.dialogType]!.cancelButton.caption;\r\n }\r\n getCancelButtonColor(): string {\r\n return this.descriptor![this.dialogType]!.cancelButton.color;\r\n }\r\n\r\n upload(files: any[]): void {\r\n this.service.onSave(files);\r\n }\r\n\r\n cancel(): void {\r\n this.service.cancel();\r\n }\r\n}\r\n","<div class=\"folderNameDialogContainer\">\r\n <div class=\"headerContainer\">\r\n <h3 class=\"color-accent-700\">\r\n {{ getTitle() }}\r\n </h3>\r\n <button mat-icon-button title=\"close\" (click)=\"cancel()\">\r\n <smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\r\n </button>\r\n </div>\r\n <p>\r\n {{ getText() }}\r\n </p>\r\n <smartfileuploader\r\n [i18n]=\"i18n\"\r\n [fileFormats]=\"fileFormats\"\r\n [maxSizeMb]=\"maxSizeMb\"\r\n [uploadCallback]=\"upload.bind(this)\"\r\n [isMultiple]=\"isMultiple\"\r\n ></smartfileuploader>\r\n <div class=\"folderNameDialogButtonsContainer\">\r\n <button mat-button color=\"accent\" [color]=\"getCancelButtonColor()\" (click)=\"cancel()\">\r\n {{ getCancelButtonLabel() }}\r\n </button>\r\n <!-- <button mat-raised-button [color]=\"getActionButtonColor()\" (click)=\"upload()\">\r\n {{ getActionButtonLabel() }}\r\n </button> -->\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { SmartDialogData, SmartdialogService } from '@smartbit4all/dialog';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\nimport { Subject } from 'rxjs';\r\nimport { UiAction } from '../../../api';\r\nimport { UiActionFileUploadDialogComponent } from './ui-action-file-upload-dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiActionFileUploadDialogService extends SmartdialogService {\r\n _destroy$: Subject<void> = new Subject();\r\n\r\n inputTypeName!: 'inputDialog' | 'input2Dialog';\r\n action!: UiAction;\r\n nodeName?: string;\r\n\r\n onAction: Subject<void> = new SmartSubject(this._destroy$);\r\n files?: any;\r\n\r\n isMultiple: boolean = false;\r\n\r\n constructor(dialog: MatDialog, router: Router) {\r\n super(dialog, router);\r\n }\r\n\r\n setDataAndOpenDialog(action: UiAction, nodeName?: string): void {\r\n this.action = action;\r\n this.nodeName = nodeName;\r\n this.openDialog();\r\n }\r\n\r\n override openDialog(): void {\r\n this.files = undefined;\r\n this.onAction = new SmartSubject(this._destroy$);\r\n const dialogData: SmartDialogData = {\r\n content: {\r\n title: '',\r\n },\r\n size: {},\r\n customComponent: UiActionFileUploadDialogComponent,\r\n };\r\n this.createDialog(dialogData, UiActionFileUploadDialogComponent);\r\n }\r\n\r\n async onSave(files: any[]): Promise<void> {\r\n this.files = files;\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n\r\n cancel(): void {\r\n this.onAction.complete();\r\n this.closeDialog();\r\n this.onAction = new SmartSubject(this._destroy$);\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { UiAction, UiActionFeedbackType, UiActionInputType, UiActionRequest } from '../api';\r\nimport { SuccessSnackBarComponent } from './components/success-snack-bar/success-snack-bar.component';\r\n\r\nimport { UiActionConfirmDialogService } from './dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service';\r\nimport { UiActionInputDialogService } from './dialogs/ui-action-input-dialog/ui-action-input-dialog.service';\r\nimport { UiActionModel } from './ui-action.model';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\nimport { UiActionFileUploadDialogService } from './dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service';\r\n\r\nexport interface ExecuteUiActionOptions {\r\n /**\r\n * In case of using a grid: grid.identifier\r\n */\r\n widgetId?: string;\r\n /**\r\n * In case of using a grid: gridRow.id\r\n */\r\n nodeId?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiActionService implements OnDestroy {\r\n uiActionModel!: UiActionModel;\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n constructor(\r\n private confirmDialogService: UiActionConfirmDialogService,\r\n private textFieldDialogService: UiActionInputDialogService,\r\n private fileUploadDialogService: UiActionFileUploadDialogService,\r\n private _snackBar: MatSnackBar\r\n ) {}\r\n\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n async execute(uiAction: UiAction, options?: ExecuteUiActionOptions): Promise<void> {\r\n let uiActionRequest: UiActionRequest | undefined;\r\n\r\n uiActionRequest = {\r\n code: uiAction.code!,\r\n identifier: uiAction.identifier,\r\n params: uiAction.params ?? {},\r\n };\r\n\r\n if (uiAction.submit) {\r\n this.uiActionModel.serviceToUse.submit.next();\r\n try {\r\n await this.uiActionModel.serviceToUse.submit.toPromise();\r\n this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);\r\n this.uiActionModel.serviceToUse.reSubscribeToChange.next();\r\n } catch (error: any) {\r\n console.error(error);\r\n this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);\r\n this.uiActionModel.serviceToUse.reSubscribeToChange.next();\r\n return;\r\n }\r\n }\r\n\r\n if (uiAction.confirm) {\r\n this.confirmDialogService.action = uiAction;\r\n this.confirmDialogService.openDialog();\r\n await this.confirmDialogService.onAction.toPromise();\r\n if (!this.confirmDialogService.shouldDoAction) {\r\n return;\r\n }\r\n }\r\n\r\n // InputType\r\n if (uiAction.inputType) {\r\n uiActionRequest = await this.handleInputType(\r\n uiAction.inputType,\r\n uiAction,\r\n uiActionRequest,\r\n 'inputDialog'\r\n );\r\n if (!uiActionRequest) {\r\n return;\r\n }\r\n await new Promise((resolve) => setTimeout(resolve, 250));\r\n }\r\n // Input2Type\r\n if (uiAction.input2Type) {\r\n uiActionRequest = await this.handleInputType(\r\n uiAction.input2Type,\r\n uiAction,\r\n uiActionRequest,\r\n 'input2Dialog'\r\n );\r\n if (!uiActionRequest) {\r\n return;\r\n }\r\n }\r\n\r\n if (this.uiActionModel.exception) {\r\n let response = await this.uiActionModel.serviceToUse.handleSpecificDemandsAsynchronously(\r\n uiAction,\r\n uiActionRequest\r\n );\r\n\r\n if (!response.shouldPerformAction || !response.uiActionRequest) {\r\n return;\r\n }\r\n uiActionRequest = response.uiActionRequest;\r\n }\r\n\r\n await this.performAction(uiAction, uiActionRequest, options);\r\n }\r\n\r\n private async handleInputType(\r\n inputType: UiActionInputType,\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest,\r\n inputTypeName: 'inputDialog' | 'input2Dialog'\r\n ): Promise<UiActionRequest | undefined> {\r\n switch (inputType) {\r\n case UiActionInputType.None:\r\n return uiActionRequest;\r\n case UiActionInputType.Textarea:\r\n case UiActionInputType.Textfield:\r\n return await this.handleInputTypeTextField(inputTypeName, uiAction, uiActionRequest);\r\n case UiActionInputType.UserSelect:\r\n return await this.handleInputTypeUserSelect(inputTypeName, uiAction, uiActionRequest);\r\n case UiActionInputType.File:\r\n return await this.handleInputTypeUpload(inputTypeName, uiAction, uiActionRequest, false);\r\n case UiActionInputType.MultipleFiles:\r\n return await this.handleInputTypeUpload(inputTypeName, uiAction, uiActionRequest, true);\r\n default:\r\n return uiActionRequest;\r\n }\r\n }\r\n\r\n private async handleInputTypeTextField(\r\n inputTypeName: 'inputDialog' | 'input2Dialog',\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<UiActionRequest | undefined> {\r\n let additionalParams = this.uiActionModel.serviceToUse.getAdditionalParams(uiAction);\r\n let inputType: 'inputType' | 'input2Type' =\r\n inputTypeName === 'inputDialog' ? 'inputType' : 'input2Type';\r\n\r\n if (uiAction[inputType] === UiActionInputType.Textfield) {\r\n this.textFieldDialogService.nodeName = additionalParams.forTextField;\r\n } else if (uiAction[inputType] === UiActionInputType.Textarea) {\r\n this.textFieldDialogService.nodeName = additionalParams.forTextArea;\r\n }\r\n\r\n this.textFieldDialogService.inputTypeName = inputTypeName;\r\n this.textFieldDialogService.action = uiAction;\r\n\r\n this.textFieldDialogService.openDialog();\r\n\r\n await this.textFieldDialogService.onAction.toPromise();\r\n let params = this.textFieldDialogService.params;\r\n\r\n if (!params) {\r\n console.error('There was no response from InputDialog');\r\n return;\r\n }\r\n uiActionRequest.params = {\r\n ...uiActionRequest.params,\r\n ...params,\r\n };\r\n return uiActionRequest;\r\n }\r\n\r\n private async handleInputTypeUpload(\r\n inputTypeName: 'inputDialog' | 'input2Dialog',\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest,\r\n isMultiple: boolean\r\n ): Promise<UiActionRequest | undefined> {\r\n this.fileUploadDialogService.inputTypeName = inputTypeName;\r\n this.fileUploadDialogService.action = uiAction;\r\n this.fileUploadDialogService.isMultiple = isMultiple;\r\n\r\n this.fileUploadDialogService.openDialog();\r\n\r\n await this.fileUploadDialogService.onAction.toPromise();\r\n let files = this.fileUploadDialogService.files;\r\n\r\n if (!files || !files.length) {\r\n console.error('There was no response from InputDialog');\r\n return;\r\n }\r\n uiActionRequest.params = {\r\n ...uiActionRequest.params,\r\n _files: files,\r\n isMultiple,\r\n param:\r\n uiAction.inputType === 'file' || uiAction.inputType === 'multiple_files'\r\n ? 'INPUT'\r\n : 'INPUT2',\r\n };\r\n return uiActionRequest;\r\n }\r\n\r\n private async handleInputTypeUserSelect(\r\n inputTypeName: 'inputDialog' | 'input2Dialog',\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<UiActionRequest | undefined> {\r\n let response = await this.uiActionModel.serviceToUse.handleSpecificDemandsAsynchronously(\r\n uiAction,\r\n uiActionRequest\r\n );\r\n\r\n if (!response.shouldPerformAction || !response.uiActionRequest) {\r\n return;\r\n }\r\n uiActionRequest = response.uiActionRequest;\r\n return uiActionRequest;\r\n }\r\n\r\n private async performAction(\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest,\r\n options?: ExecuteUiActionOptions\r\n ): Promise<void> {\r\n if (\r\n !uiActionRequest.params ||\r\n (uiActionRequest.params && !Object.keys(uiActionRequest.params).length)\r\n ) {\r\n uiActionRequest.params = {\r\n model: this.uiActionModel.serviceToUse.getModel(),\r\n };\r\n } else if (uiAction.submit) {\r\n uiActionRequest.params['model'] = this.uiActionModel.serviceToUse.getModel();\r\n }\r\n\r\n try {\r\n await this.uiActionModel.serviceToUse.performUiActionRequest(\r\n uiActionRequest,\r\n options?.widgetId,\r\n options?.nodeId\r\n );\r\n\r\n if (this.uiActionModel.descriptor?.feedbackType === UiActionFeedbackType.Snackbar) {\r\n this.showSavedSnackbar(uiAction);\r\n }\r\n } catch (error: any) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n showSavedSnackbar(uiAction: UiAction): void {\r\n this._snackBar.openFromComponent(SuccessSnackBarComponent, {\r\n duration: 5 * 1000,\r\n panelClass: ['backgroundColor-accent'],\r\n data: uiAction,\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { UiActionButtonIconPos, UiActionButtonType } from '../api';\r\nimport { UiActionDescriptorService } from './ui-action.descriptor.service';\r\nimport { UiActionModel } from './ui-action.model';\r\nimport { ExecuteUiActionOptions, UiActionService } from './ui-action.service';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'smart-ui-action-toolbar',\r\n templateUrl: './ui-action-toolbar.component.html',\r\n styleUrls: ['./ui-action-toolbar.component.css'],\r\n})\r\nexport class UiActionToolbarComponent implements OnInit, OnChanges, OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n pressedButtonActive: boolean = true;\r\n\r\n @Input() uiActionModels!: UiActionModel[];\r\n @Input() uiActionDescriptorService?: UiActionDescriptorService;\r\n\r\n uiActionModelsWithDescriptions?: UiActionModel[];\r\n\r\n private manager!: UiActionDescriptorService;\r\n private languageChangedSubscription?: Subscription;\r\n\r\n constructor(private service: UiActionService, private inject: Injector) {\r\n // Injects the basic UiActionDescriptorService provided by the AppModule\r\n this.manager = inject.get(UiActionDescriptorService);\r\n\r\n this.subscribeToLanguageChange();\r\n }\r\n\r\n ngOnInit(): void {\r\n // Overrides the basic UiActionDescriptorService with a custom one if there is one\r\n if (this.uiActionDescriptorService) {\r\n this.manager = this.uiActionDescriptorService;\r\n this.subscribeToLanguageChange();\r\n }\r\n\r\n this.setUp();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let uiActionModels = changes['uiActionModels'].currentValue;\r\n if (uiActionModels) {\r\n this.uiActionModels = uiActionModels;\r\n this.setUp();\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n }\r\n\r\n private subscribeToLanguageChange(): void {\r\n this.languageChangedSubscription?.unsubscribe();\r\n\r\n this.languageChangedSubscription = this.manager.languageChanged\r\n .pipe(takeUntil(this._destroy$))\r\n .subscribe(() => {\r\n this.setUp();\r\n });\r\n }\r\n\r\n async setUp(): Promise<void> {\r\n this.uiActionModelsWithDescriptions = await Promise.all(\r\n this.uiActionModels.map(async (uiActionModel: UiActionModel) => {\r\n uiActionModel.descriptor = await this.manager.getActionDescriptor(uiActionModel.uiAction);\r\n\r\n return uiActionModel;\r\n })\r\n );\r\n }\r\n\r\n async onActionClicked(event: any, uiActionModel: UiActionModel): Promise<void> {\r\n event.stopPropagation();\r\n\r\n if (this.pressedButtonActive) {\r\n this.pressedButtonActive = false;\r\n\r\n this.service.uiActionModel = uiActionModel;\r\n let options: ExecuteUiActionOptions = {\r\n nodeId: uiActionModel.nodeId,\r\n widgetId: uiActionModel.widgetId,\r\n };\r\n\r\n await this.service.execute(uiActionModel.uiAction, options);\r\n\r\n this.pressedButtonActive = true;\r\n }\r\n }\r\n\r\n onActionDoubleClicked(event: any, uiActionModel: UiActionModel): void {\r\n event.stopPropagation();\r\n // We do not handle double clicks\r\n }\r\n\r\n getType(uiActionModel: UiActionModel): string {\r\n switch (uiActionModel.descriptor?.type) {\r\n case UiActionButtonType.Normal:\r\n return 'mat-button';\r\n case UiActionButtonType.Flat:\r\n return 'mat-flat-button';\r\n case UiActionButtonType.Raised:\r\n return 'mat-raised-button';\r\n case UiActionButtonType.Stroked:\r\n return 'mat-stroked-button';\r\n case UiActionButtonType.Icon:\r\n return 'mat-icon-button';\r\n case UiActionButtonType.MiniFab:\r\n return 'mat-mini-fab';\r\n case UiActionButtonType.Fab:\r\n return 'mat-fab';\r\n default:\r\n console.log(`Unhandled action button type case: ${uiActionModel.descriptor?.type}`);\r\n return `mat-button`;\r\n }\r\n }\r\n\r\n iconPosition(): typeof UiActionButtonIconPos {\r\n return UiActionButtonIconPos;\r\n }\r\n\r\n isOnlyIcon(uiActionModel: UiActionModel): boolean {\r\n return (\r\n uiActionModel.descriptor?.type === UiActionButtonType.Icon ||\r\n uiActionModel.descriptor?.type === UiActionButtonType.MiniFab ||\r\n uiActionModel.descriptor?.type === UiActionButtonType.Fab\r\n );\r\n }\r\n}\r\n","<div class=\"uiActionButtonsContainer\">\r\n <button\r\n *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions\"\r\n mat-button\r\n [ngClass]=\"getType(uiActionModel)\"\r\n class=\"{{ uiActionModel.cssClass }}\"\r\n [color]=\"uiActionModel.descriptor?.color\"\r\n (click)=\"onActionClicked($event, uiActionModel)\"\r\n (dblclick)=\"onActionDoubleClicked($event, uiActionModel)\"\r\n >\r\n <div *ngIf=\"isOnlyIcon(uiActionModel); then iconOnly; else text\"></div>\r\n <ng-template #iconOnly>\r\n <smart-icon\r\n *ngIf=\"uiActionModel.descriptor?.icon\"\r\n [icon]=\"uiActionModel.descriptor!.icon!\"\r\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\r\n ></smart-icon>\r\n </ng-template>\r\n <ng-template #text>\r\n <smart-icon\r\n *ngIf=\"\r\n uiActionModel.descriptor?.icon &&\r\n uiActionModel.descriptor?.iconPosition === iconPosition().Pre\r\n \"\r\n [icon]=\"uiActionModel.descriptor!.icon!\"\r\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\r\n ></smart-icon>\r\n {{ uiActionModel.descriptor?.title }}\r\n <smart-icon\r\n *ngIf=\"\r\n uiActionModel.descriptor?.icon &&\r\n uiActionModel.descriptor?.iconPosition === iconPosition().Post\r\n \"\r\n [icon]=\"uiActionModel.descriptor!.icon!\"\r\n [color]=\"uiActionModel.descriptor?.iconColor ?? uiActionModel.descriptor?.color\"\r\n ></smart-icon>\r\n </ng-template>\r\n </button>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MessageDialogComponent } from './message-dialog/message-dialog.component';\r\nimport { SmartViewContextService } from './smart-view-context.service';\r\nimport { SmartViewContextErrorDialogComponent } from './smart-view-context-error-dialog/smart-view-context-error-dialog.component';\r\nimport { SmartViewContextInterceptor } from './smart-view-context.interceptor';\r\nimport { SmartViewRedirect } from './smart-view-redirect/smart-view-redirect';\r\nimport { SmartIconModule } from '@smartbit4all/icon';\r\nimport { UiActionToolbarComponent } from './smart-ui-action/ui-action-toolbar.component';\r\nimport { UiActionInputDialogComponent } from './smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component';\r\nimport { UiActionConfirmDialogComponent } from './smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component';\r\nimport { SmartformModule } from '@smartbit4all/form';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { UiActionFileUploadDialogComponent } from './smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n MessageDialogComponent,\r\n SmartViewContextErrorDialogComponent,\r\n SmartViewRedirect,\r\n UiActionToolbarComponent,\r\n UiActionInputDialogComponent,\r\n UiActionConfirmDialogComponent,\r\n UiActionFileUploadDialogComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n MatCommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatSnackBarModule,\r\n SmartIconModule,\r\n SmartformModule,\r\n ],\r\n exports: [UiActionToolbarComponent, UiActionInputDialogComponent],\r\n providers: [\r\n SmartViewContextService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: SmartViewContextInterceptor,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SmartViewContextModule {}\r\n","import { Subject } from 'rxjs';\r\nimport { UiAction, UiActionDescriptor, UiActionRequest } from '../api';\r\n\r\nexport interface UiActionModel {\r\n\tuiAction: UiAction;\r\n\tserviceToUse: UseUiAction;\r\n\texception?: boolean;\r\n\tdescriptor?: UiActionDescriptor;\r\n\tcssClass?: string;\r\n\twidgetId?: string;\r\n\tnodeId?: string;\r\n}\r\n\r\nexport interface UseUiAction {\r\n\tsubmit: Subject<void>;\r\n\treSubscribeToChange: Subject<void>;\r\n\tgetAdditionalParams(uiAction: UiAction): UiActionAdditionalParams;\r\n\tgetModel(): any;\r\n\tperformUiActionRequest(uiActionRequest: UiActionRequest, widgetId?: string, nodeId?: string): Promise<any>;\r\n\thandleSpecificDemandsAsynchronously(\r\n\t\tuiAction: UiAction,\r\n\t\tuiActionRequest: UiActionRequest\r\n\t): Promise<UiActionSpecificDemandResponse>;\r\n}\r\n\r\nexport interface UiActionSpecificDemandResponse {\r\n\tshouldPerformAction: boolean;\r\n\tuiActionRequest?: UiActionRequest;\r\n}\r\n\r\nexport interface UiActionAdditionalParams {\r\n\tforTextField?: string;\r\n\tforTextArea?: string;\r\n}\r\n\r\nexport enum UiActionDialogType {\r\n\tinputDialog = 'inputDialog',\r\n\tconfirmDialog = 'confirmDialog',\r\n\tdialog = 'dialog',\r\n}\r\n","/*\r\n * Public API Surface of smart-view-context\r\n */\r\n\r\nexport * from \"./smart-view-context.service\";\r\nexport * from \"./smart-view-context.model\";\r\nexport * from \"./smart-view-context.module\";\r\nexport * from \"./smart-view-redirect/smart-view-redirect\";\r\nexport * from \"./api/index\";\r\nexport * from \"./smart-ui-action/ui-action-toolbar.component\";\r\nexport * from \"./smart-ui-action/ui-action.service\";\r\nexport * from \"./smart-ui-action/ui-action.model\";\r\nexport * from \"./smart-ui-action/ui-action.descriptor.service\";\r\nexport * from \"./smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service\";\r\nexport * from \"./smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component\";\r\nexport * from \"./smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service\";\r\nexport * from \"./smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component\";\r\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { SmartFileUploaderI18n } from '@smartbit4all/form';\r\nimport {\r\n UiActionDescriptorService,\r\n UiActionModel,\r\n UiActionService,\r\n} from '../../view-context/projects';\r\nimport { SmartFileUploader } from '../smart-component-api-client';\r\n\r\n@Component({\r\n selector: 'smart-file-uploader4sc',\r\n templateUrl: './smart-file-uploader.component.html',\r\n styleUrls: ['./smart-file-uploader.component.css'],\r\n})\r\nexport class SmartFileUploaderComponent implements OnChanges {\r\n @Input() config?: SmartFileUploader;\r\n\r\n i18n?: SmartFileUploaderI18n;\r\n private uiActionModel?: UiActionModel;\r\n\r\n constructor(\r\n private uiActionService: UiActionService,\r\n private uiActionDescriptorService: UiActionDescriptorService\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.config = changes['config'].currentValue;\r\n if (this.config) {\r\n this.setUp();\r\n }\r\n }\r\n\r\n async setUp(): Promise<void> {\r\n this.uiActionModel = this.config?.smartComponent.uiActionModels.find(\r\n (uiActionModel: UiActionModel) => uiActionModel.uiAction.code === this.config?.uiActionCode\r\n );\r\n\r\n if (!this.uiActionModel) {\r\n throw new Error(`UiAction with code ${this.config?.uiActionCode} could not found`);\r\n }\r\n\r\n const descriptor = await this.uiActionDescriptorService.getActionDescriptor(\r\n this.uiActionModel.uiAction\r\n );\r\n\r\n this.i18n = {\r\n addFile: descriptor.upload?.title ?? 'dokumentum hozzáadása',\r\n browseOrDrag: descriptor.upload?.description ?? 'tallózás vagy behúzás',\r\n formats: descriptor.upload?.formats ?? '',\r\n maxSize: descriptor.upload?.maxSize ?? '',\r\n upload: descriptor.upload?.uploadButtonTitle,\r\n };\r\n }\r\n\r\n executeUpload(files: any[]): void {\r\n this.uiActionModel!.uiAction.params = {\r\n ...this.uiActionModel!.uiAction.params,\r\n _files: files,\r\n isMultiple: this.config?.isMultiple,\r\n param: 'INPUT',\r\n };\r\n\r\n this.uiActionService.uiActionModel = this.uiActionModel!;\r\n this.uiActionService.execute(this.uiActionModel!.uiAction);\r\n }\r\n}\r\n","<smartfileuploader\r\n *ngIf=\"i18n\"\r\n [i18n]=\"i18n\"\r\n [fileFormats]=\"config?.fileFormats\"\r\n [isMultiple]=\"config?.isMultiple\"\r\n [maxSizeMb]=\"config?.maxSizeMb\"\r\n [uploadCallback]=\"executeUpload.bind(this)\"\r\n></smartfileuploader>\r\n","import { HttpParameterCodec } from '@angular/common/http';\r\n\r\n/**\r\n * Custom HttpParameterCodec\r\n * Workaround for https://github.com/angular/angular/issues/18261\r\n */\r\nexport class CustomHttpParameterCodec implements HttpParameterCodec {\r\n encodeKey(k: string): string {\r\n return encodeURIComponent(k);\r\n }\r\n encodeValue(v: string): string {\r\n return encodeURIComponent(v);\r\n }\r\n decodeKey(k: string): string {\r\n return decodeURIComponent(k);\r\n }\r\n decodeValue(v: string): string {\r\n return decodeURIComponent(v);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const BASE_PATH = new InjectionToken<string>('basePath');\r\nexport const COLLECTION_FORMATS = {\r\n 'csv': ',',\r\n 'tsv': ' ',\r\n 'ssv': ' ',\r\n 'pipes': '|'\r\n}\r\n","import { HttpParameterCodec } from '@angular/common/http';\r\nimport { Param } from './param';\r\n\r\nexport interface ConfigurationParameters {\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n /**\r\n * Takes care of encoding query- and form-parameters.\r\n */\r\n encoder?: HttpParameterCodec;\r\n /**\r\n * Override the default method for encoding path parameters in various\r\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\r\n * <p>\r\n * See {@link README.md} for more details\r\n * </p>\r\n */\r\n encodeParam?: (param: Param) => string;\r\n /**\r\n * The keys are the names in the securitySchemes section of the OpenAPI\r\n * document. They should map to the value used for authentication\r\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\r\n */\r\n credentials?: {[ key: string ]: string | (() => string | undefined)};\r\n}\r\n\r\nexport class Configuration {\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n /**\r\n * @deprecated Since 5.0. Use credentials instead\r\n */\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n /**\r\n * Takes care of encoding query- and form-parameters.\r\n */\r\n encoder?: HttpParameterCodec;\r\n /**\r\n * Encoding of various path parameter\r\n * <a href=\"https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values\">styles</a>.\r\n * <p>\r\n * See {@link README.md} for more details\r\n * </p>\r\n */\r\n encodeParam: (param: Param) => string;\r\n /**\r\n * The keys are the names in the securitySchemes section of the OpenAPI\r\n * document. They should map to the value used for authentication\r\n * minus any standard prefixes such as 'Basic' or 'Bearer'.\r\n */\r\n credentials: {[ key: string ]: string | (() => string | undefined)};\r\n\r\n constructor(configurationParameters: ConfigurationParameters = {}) {\r\n this.apiKeys = configurationParameters.apiKeys;\r\n this.username = configurationParameters.username;\r\n this.password = configurationParameters.password;\r\n this.accessToken = configurationParameters.accessToken;\r\n this.basePath = configurationParameters.basePath;\r\n this.withCredentials = configurationParameters.withCredentials;\r\n this.encoder = configurationParameters.encoder;\r\n if (configurationParameters.encodeParam) {\r\n this.encodeParam = configurationParameters.encodeParam;\r\n }\r\n else {\r\n this.encodeParam = param => this.defaultEncodeParam(param);\r\n }\r\n if (configurationParameters.credentials) {\r\n this.credentials = configurationParameters.credentials;\r\n }\r\n else {\r\n this.credentials = {};\r\n }\r\n }\r\n\r\n /**\r\n * Select the correct content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param contentTypes - the array of content types that are available for selection\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\r\n if (contentTypes.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = contentTypes.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return contentTypes[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Select the correct accept content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param accepts - the array of content types that are available for selection.\r\n * @returns the selected content-type or <code>undefined</code> if no selection could be made.\r\n */\r\n public selectHeaderAccept(accepts: string[]): string | undefined {\r\n if (accepts.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = accepts.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return accepts[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Check if the given MIME is a JSON MIME.\r\n * JSON MIME examples:\r\n * application/json\r\n * application/json; charset=UTF8\r\n * APPLICATION/JSON\r\n * application/vnd.company+json\r\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\r\n * @return True if the given MIME is JSON, false otherwise.\r\n */\r\n public isJsonMime(mime: string): boolean {\r\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\r\n return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\r\n }\r\n\r\n public lookupCredential(key: string): string | undefined {\r\n const value = this.credentials[key];\r\n return typeof value === 'function'\r\n ? value()\r\n : value;\r\n }\r\n\r\n private defaultEncodeParam(param: Param): string {\r\n // This implementation exists as fallback for missing configuration\r\n // and for backwards compatibility to older typescript-angular generator versions.\r\n // It only works for the 'simple' parameter style.\r\n // Date-handling only works for the 'date-time' format.\r\n // All other styles and Date-formats are probably handled incorrectly.\r\n //\r\n // But: if that's all you need (i.e.: the most common use-case): no need for customization!\r\n\r\n const value = param.dataFormat === 'date-time'\r\n ? (param.value as Date).toISOString()\r\n : param.value;\r\n\r\n return encodeURIComponent(String(value));\r\n }\r\n}\r\n","/**\r\n * UiTree domain objects\r\n * Tree domain objects\r\n *\r\n * The version of the OpenAPI document: 1.0.0\r\n * Contact: info@it4all.hu\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n/* tslint:disable:no-unused-variable member-ordering */\r\n\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport {\r\n HttpClient,\r\n HttpHeaders,\r\n HttpParams,\r\n HttpResponse,\r\n HttpEvent,\r\n HttpParameterCodec,\r\n HttpContext,\r\n} from '@angular/common/http';\r\nimport { CustomHttpParameterCodec } from '../encoder';\r\nimport { Observable } from 'rxjs';\r\n\r\n// @ts-ignore\r\n// @ts-ignore\r\nimport { UiAction, UiActionRequest } from '../view-context/projects';\r\n// @ts-ignore\r\n\r\n// @ts-ignore\r\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\r\nimport { Configuration } from '../configuration';\r\nimport { SmartTreeNode } from '../../smarttree.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TreeService {\r\n protected basePath = 'http://localhost';\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n public encoder: HttpParameterCodec;\r\n\r\n constructor(\r\n protected httpClient: HttpClient,\r\n @Optional() @Inject(BASE_PATH) basePath: string | string[],\r\n @Optional() configuration: Configuration\r\n ) {\r\n if (configuration) {\r\n this.configuration = configuration;\r\n }\r\n if (typeof this.configuration.basePath !== 'string') {\r\n if (Array.isArray(basePath) && basePath.length > 0) {\r\n basePath = basePath[0];\r\n }\r\n\r\n if (typeof basePath !== 'string') {\r\n basePath = this.basePath;\r\n }\r\n this.configuration.basePath = basePath;\r\n }\r\n this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\r\n }\r\n\r\n // @ts-ignore\r\n private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\r\n if (typeof value === 'object' && value instanceof Date === false) {\r\n httpParams = this.addToHttpParamsRecursive(httpParams, value);\r\n } else {\r\n httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\r\n }\r\n return httpParams;\r\n }\r\n\r\n private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\r\n if (value == null) {\r\n return httpParams;\r\n }\r\n\r\n if (typeof value === 'object') {\r\n if (Array.isArray(value)) {\r\n (value as any[]).forEach(\r\n (elem) => (httpParams = this.addToHttpParamsRecursive(httpParams, elem, key))\r\n );\r\n } else if (value instanceof Date) {\r\n if (key != null) {\r\n httpParams = httpParams.append(key, (value as Date).toISOString().substr(0, 10));\r\n } else {\r\n throw Error('key may not be null if value is Date');\r\n }\r\n } else {\r\n Object.keys(value).forEach(\r\n (k) =>\r\n (httpParams = this.addToHttpParamsRecursive(\r\n httpParams,\r\n value[k],\r\n key != null ? `${key}.${k}` : k\r\n ))\r\n );\r\n }\r\n } else if (key != null) {\r\n httpParams = httpParams.append(key, value);\r\n } else {\r\n throw Error('key may not be null if value is not object or array');\r\n }\r\n return httpParams;\r\n }\r\n\r\n /**\r\n * Collapses the given treenode. The viewcontext will hold the appropriate instruction for the ui. Returns the collapsed SmartTreeNode.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param nodeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public collapseNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<SmartTreeNode>;\r\n public collapseNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<SmartTreeNode>>;\r\n public collapseNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<SmartTreeNode>>;\r\n public collapseNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling collapseNode.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error('Required parameter treeId was null or undefined when calling collapseNode.');\r\n }\r\n if (nodeId === null || nodeId === undefined) {\r\n throw new Error('Required parameter nodeId was null or undefined when calling collapseNode.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/${this.configuration.encodeParam({\r\n name: 'nodeId',\r\n value: nodeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/collapse`;\r\n return this.httpClient.request<SmartTreeNode>(\r\n 'post',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Expands the given treenode. The viewcontext will hold the appropriate instruction for the ui, if any. Returns the expanded SmartTreeNode.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param nodeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public expandNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<SmartTreeNode>;\r\n public expandNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<SmartTreeNode>>;\r\n public expandNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<SmartTreeNode>>;\r\n public expandNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error('Required parameter viewUuid was null or undefined when calling expandNode.');\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error('Required parameter treeId was null or undefined when calling expandNode.');\r\n }\r\n if (nodeId === null || nodeId === undefined) {\r\n throw new Error('Required parameter nodeId was null or undefined when calling expandNode.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/${this.configuration.encodeParam({\r\n name: 'nodeId',\r\n value: nodeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/expand`;\r\n return this.httpClient.request<SmartTreeNode>(\r\n 'post',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Query the child nodes of the tree\\'s node given in the parameter\r\n * @param viewUuid\r\n * @param treeId\r\n * @param nodeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getChildrenNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<Array<SmartTreeNode>>;\r\n public getChildrenNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<Array<SmartTreeNode>>>;\r\n public getChildrenNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<Array<SmartTreeNode>>>;\r\n public getChildrenNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling getChildrenNodes.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error(\r\n 'Required parameter treeId was null or undefined when calling getChildrenNodes.'\r\n );\r\n }\r\n if (nodeId === null || nodeId === undefined) {\r\n throw new Error(\r\n 'Required parameter nodeId was null or undefined when calling getChildrenNodes.'\r\n );\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/${this.configuration.encodeParam({\r\n name: 'nodeId',\r\n value: nodeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}`;\r\n return this.httpClient.request<Array<SmartTreeNode>>(\r\n 'get',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Query all tree nodes.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getMainActions(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<Array<UiAction>>;\r\n public getMainActions(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<Array<UiAction>>>;\r\n public getMainActions(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<Array<UiAction>>>;\r\n public getMainActions(\r\n viewUuid: string,\r\n treeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling getMainActions.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error(\r\n 'Required parameter treeId was null or undefined when calling getMainActions.'\r\n );\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/action`;\r\n return this.httpClient.request<Array<UiAction>>(\r\n 'get',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Query all tree nodes.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public getRootNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<Array<SmartTreeNode>>;\r\n public getRootNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<Array<SmartTreeNode>>>;\r\n public getRootNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<Array<SmartTreeNode>>>;\r\n public getRootNodes(\r\n viewUuid: string,\r\n treeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling getRootNodes.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error('Required parameter treeId was null or undefined when calling getRootNodes.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}`;\r\n return this.httpClient.request<Array<SmartTreeNode>>(\r\n 'get',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Performs an action on the given treenode. The viewcontext will hold the appropriate instruction for the ui. Returns the SmartTreeNode which the action was performed on.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param nodeId\r\n * @param body\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public performAction(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n body: UiActionRequest,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<Array<SmartTreeNode>>;\r\n public performAction(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n body: UiActionRequest,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<Array<SmartTreeNode>>>;\r\n public performAction(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n body: UiActionRequest,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<Array<SmartTreeNode>>>;\r\n public performAction(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n body: UiActionRequest,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling performAction.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error(\r\n 'Required parameter treeId was null or undefined when calling performAction.'\r\n );\r\n }\r\n if (nodeId === null || nodeId === undefined) {\r\n throw new Error(\r\n 'Required parameter nodeId was null or undefined when calling performAction.'\r\n );\r\n }\r\n if (body === null || body === undefined) {\r\n throw new Error('Required parameter body was null or undefined when calling performAction.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = ['application/json'];\r\n const httpContentTypeSelected: string | undefined =\r\n this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/${this.configuration.encodeParam({\r\n name: 'nodeId',\r\n value: nodeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/action`;\r\n return this.httpClient.request<Array<SmartTreeNode>>(\r\n 'post',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: body,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Performs an action on the given treenode. The viewcontext will hold the appropriate instruction for the ui. Returns the SmartTreeNode which the action was performed on.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param body\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public performMainAction(\r\n viewUuid: string,\r\n treeId: string,\r\n body: UiActionRequest,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<Array<SmartTreeNode>>;\r\n public performMainAction(\r\n viewUuid: string,\r\n treeId: string,\r\n body: UiActionRequest,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<Array<SmartTreeNode>>>;\r\n public performMainAction(\r\n viewUuid: string,\r\n treeId: string,\r\n body: UiActionRequest,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<Array<SmartTreeNode>>>;\r\n public performMainAction(\r\n viewUuid: string,\r\n treeId: string,\r\n body: UiActionRequest,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error(\r\n 'Required parameter viewUuid was null or undefined when calling performMainAction.'\r\n );\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error(\r\n 'Required parameter treeId was null or undefined when calling performMainAction.'\r\n );\r\n }\r\n if (body === null || body === undefined) {\r\n throw new Error(\r\n 'Required parameter body was null or undefined when calling performMainAction.'\r\n );\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = ['application/json'];\r\n const httpContentTypeSelected: string | undefined =\r\n this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/action`;\r\n return this.httpClient.request<Array<SmartTreeNode>>(\r\n 'post',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n body: body,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Collapses the given treenode. The viewcontext will hold the appropriate instruction for the ui. Returns the collapsed SmartTreeNode.\r\n * @param viewUuid\r\n * @param treeId\r\n * @param nodeId\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public selectNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'body',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<SmartTreeNode>;\r\n public selectNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'response',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpResponse<SmartTreeNode>>;\r\n public selectNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe?: 'events',\r\n reportProgress?: boolean,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<HttpEvent<SmartTreeNode>>;\r\n public selectNode(\r\n viewUuid: string,\r\n treeId: string,\r\n nodeId: string,\r\n observe: any = 'body',\r\n reportProgress: boolean = false,\r\n options?: { httpHeaderAccept?: 'application/json'; context?: HttpContext }\r\n ): Observable<any> {\r\n if (viewUuid === null || viewUuid === undefined) {\r\n throw new Error('Required parameter viewUuid was null or undefined when calling selectNode.');\r\n }\r\n if (treeId === null || treeId === undefined) {\r\n throw new Error('Required parameter treeId was null or undefined when calling selectNode.');\r\n }\r\n if (nodeId === null || nodeId === undefined) {\r\n throw new Error('Required parameter nodeId was null or undefined when calling selectNode.');\r\n }\r\n\r\n let localVarHeaders = this.defaultHeaders;\r\n\r\n let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\r\n if (localVarHttpHeaderAcceptSelected === undefined) {\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = ['application/json'];\r\n localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n }\r\n if (localVarHttpHeaderAcceptSelected !== undefined) {\r\n localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);\r\n }\r\n\r\n let localVarHttpContext: HttpContext | undefined = options && options.context;\r\n if (localVarHttpContext === undefined) {\r\n localVarHttpContext = new HttpContext();\r\n }\r\n\r\n let responseType_: 'text' | 'json' | 'blob' = 'json';\r\n if (localVarHttpHeaderAcceptSelected) {\r\n if (localVarHttpHeaderAcceptSelected.startsWith('text')) {\r\n responseType_ = 'text';\r\n } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {\r\n responseType_ = 'json';\r\n } else {\r\n responseType_ = 'blob';\r\n }\r\n }\r\n\r\n let localVarPath = `/tree/${this.configuration.encodeParam({\r\n name: 'viewUuid',\r\n value: viewUuid,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: 'uuid',\r\n })}/${this.configuration.encodeParam({\r\n name: 'treeId',\r\n value: treeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/${this.configuration.encodeParam({\r\n name: 'nodeId',\r\n value: nodeId,\r\n in: 'path',\r\n style: 'simple',\r\n explode: false,\r\n dataType: 'string',\r\n dataFormat: undefined,\r\n })}/select`;\r\n return this.httpClient.request<SmartTreeNode>(\r\n 'post',\r\n `${this.configuration.basePath}${localVarPath}`,\r\n {\r\n context: localVarHttpContext,\r\n responseType: <any>responseType_,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: localVarHeaders,\r\n observe: observe,\r\n reportProgress: reportProgress,\r\n }\r\n );\r\n }\r\n}\r\n","import { UiAction } from '../view-context/projects';\r\n\r\nexport interface SmartTreeModel {\r\n // nem temporális storage-ba tenni a UI bean-eket\r\n identifier?: string;\r\n rootNodes: Array<SmartTreeNode>;\r\n selectedNodeIdentifier?: string;\r\n navigationUrlsByNodeType?: Array<SmartTreeNodeType>;\r\n}\r\n\r\nexport interface SmartTreeNode {\r\n icon?: string;\r\n caption: string;\r\n classes?: Array<string>;\r\n hasChildren: boolean;\r\n childrenNodes: Array<SmartTreeNode>;\r\n expanded: boolean;\r\n selected: boolean;\r\n childrenNodesLoaded: boolean;\r\n level: number;\r\n shortDescription?: string;\r\n identifier?: string;\r\n objectUri?: string;\r\n nodeType: string;\r\n button?: SmartTreeNodeButton;\r\n actions?: Array<UiAction>;\r\n}\r\n\r\nexport interface SmartTreeNodeButton {\r\n icon?: string;\r\n label?: string;\r\n type: SmartTreeNodeButtonType;\r\n menuItemButtons?: SmartTreeNodeButton[];\r\n callback?: (...args: any[]) => any;\r\n args?: any[];\r\n}\r\n\r\nexport enum SmartTreeNodeButtonType {\r\n MENU = 'MENU',\r\n ICON = 'ICON',\r\n NORMAL = 'NORMAL',\r\n}\r\n\r\nexport interface SmartTreeNodeType {\r\n nodeType: string;\r\n navigationUrl: any[];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { SmartTreeModel, SmartTreeNode } from './smarttree.model';\r\nimport { SmarttreeServiceDescriptor } from './smarttree.service.interface';\r\nimport { UiActionModel } from '../view-context/projects';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmarttreeService<T> implements SmarttreeServiceDescriptor<T> {\r\n errorMessage: string = 'The tree is currently unavailable';\r\n\r\n treeFromBackend: T | undefined;\r\n smartTreeModel: SmartTreeModel | undefined;\r\n smartTreeModelChanged: Subject<SmartTreeModel> = new Subject();\r\n\r\n protected _uiActionModels: UiActionModel[] | undefined;\r\n uiActionModelsChanged: Subject<void> = new Subject();\r\n\r\n get uiActionModels() {\r\n return this._uiActionModels;\r\n }\r\n set uiActionModels(uiActionModels: UiActionModel[] | undefined) {\r\n this._uiActionModels = uiActionModels;\r\n this.uiActionModelsChanged.next();\r\n }\r\n\r\n constructor() {}\r\n\r\n async initialize(): Promise<void> {\r\n await this.downloadTree().then((rootNodes: T) => {\r\n this.treeFromBackend = rootNodes;\r\n this.syncTree();\r\n });\r\n }\r\n async downloadTree(): Promise<T> {\r\n throw new Error('downloadTree method not implemented.');\r\n }\r\n async downloadChildren(parentNode: SmartTreeNode): Promise<T> {\r\n throw new Error('downloadChildren method not implemented.');\r\n }\r\n onTreeNodeClick(treeNode: SmartTreeNode): void {\r\n throw new Error('onTreeNodeClick method not implemented.');\r\n }\r\n onTreeNodeOpen(treeNode: SmartTreeNode): void {\r\n throw new Error('onTreeNodeOpen method not implemented.');\r\n }\r\n syncTree(): void {\r\n throw new Error('syncTree method not implemented.');\r\n }\r\n}\r\n","import { Inject, Injectable, Injector } from '@angular/core';\r\nimport {\r\n SmartViewContextService,\r\n UiAction,\r\n UiActionAdditionalParams,\r\n UiActionDescriptor,\r\n UiActionDescriptorService,\r\n UiActionModel,\r\n UiActionRequest,\r\n UiActionService,\r\n UiActionSpecificDemandResponse,\r\n UseUiAction,\r\n} from '../view-context/projects';\r\nimport { TreeService } from './tree-api/api/tree.service';\r\nimport { SmartTreeNode, SmartTreeNodeButtonType } from './smarttree.model';\r\nimport { SmarttreeService } from './smarttree.service';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport interface SmarttreeConfiguration {\r\n treeid: string;\r\n viewContextName: string;\r\n pageName: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SmarttreeGenericService\r\n extends SmarttreeService<SmartTreeNode[]>\r\n implements UseUiAction\r\n{\r\n // UseUiAction properties\r\n submit: Subject<void> = new Subject();\r\n reSubscribeToChange: Subject<void> = new Subject();\r\n\r\n uiActionDescriptors: Map<string, UiActionDescriptor> = new Map();\r\n\r\n selectedNode?: SmartTreeNode;\r\n\r\n viewContextName: string = 'viewContextUuid';\r\n\r\n protected viewContext!: SmartViewContextService;\r\n private service!: TreeService;\r\n\r\n private uiActionDescriptorService!: UiActionDescriptorService;\r\n private uiActionService!: UiActionService;\r\n\r\n constructor(\r\n inject: Injector,\r\n @Inject('pageName') protected pageName: string,\r\n @Inject('treeId') protected treeId: string\r\n ) {\r\n super();\r\n\r\n this.configureTree({\r\n pageName: this.pageName,\r\n treeid: this.treeId,\r\n viewContextName: this.viewContextName,\r\n });\r\n\r\n this.viewContext = inject.get(SmartViewContextService);\r\n this.service = inject.get(TreeService);\r\n\r\n this.uiActionService = inject.get(UiActionService);\r\n this.uiActionDescriptorService = inject.get(UiActionDescriptorService);\r\n\r\n this.initialize();\r\n }\r\n\r\n constructUiActionModels(uiActions: UiAction[]): void {\r\n this.uiActionModels = uiActions.map((uiAction: UiAction) => {\r\n return {\r\n serviceToUse: this,\r\n uiAction,\r\n };\r\n });\r\n }\r\n\r\n configureTree(configuration: SmarttreeConfiguration): void {\r\n this.treeId = configuration.treeid;\r\n this.viewContextName = configuration.viewContextName;\r\n this.pageName = configuration.pageName;\r\n }\r\n\r\n override async initialize(): Promise<void> {\r\n if (sessionStorage.getItem(this.viewContextName!)) {\r\n await this.downloadTree().then((rootNodes: SmartTreeNode[]) => {\r\n this.treeFromBackend = rootNodes;\r\n this.syncTree();\r\n });\r\n }\r\n }\r\n override async downloadTree(): Promise<SmartTreeNode[]> {\r\n let uuid = this.viewContext.getUuidOfPage(this.pageName!);\r\n const rootNodes = await this.service.getRootNodes(uuid, this.treeId!).toPromise();\r\n const uiActions = await this.service.getMainActions(uuid, this.treeId!).toPromise();\r\n\r\n if (uiActions) {\r\n this.constructUiActionModels(uiActions);\r\n }\r\n\r\n if (!rootNodes) {\r\n throw new Error('RootNodes are undefined!');\r\n }\r\n return rootNodes;\r\n }\r\n override async downloadChildren(parentNode: SmartTreeNode): Promise<SmartTreeNode[]> {\r\n let uuid = this.viewContext.getUuidOfPage(this.pageName!);\r\n const children = await this.service\r\n .getChildrenNodes(uuid, this.treeId!, parentNode.identifier!)\r\n .toPromise();\r\n if (!children) {\r\n throw new Error(`Node with identifier ${parentNode.identifier} does not have children.`);\r\n }\r\n\r\n return children;\r\n }\r\n override async onTreeNodeOpen(treeNode: SmartTreeNode): Promise<void> {\r\n let viewUuid = this.viewContext.getUuidOfPage(this.pageName!);\r\n\r\n if (treeNode?.expanded) {\r\n let tempTreeNode = await this.service\r\n .collapseNode(viewUuid, this.treeId!, treeNode.identifier!)\r\n .toPromise();\r\n treeNode = tempTreeNode!;\r\n } else if (!treeNode?.expanded) {\r\n let tempTreeNode = await this.service\r\n .expandNode(viewUuid, this.treeId!, treeNode?.identifier!)\r\n .toPromise();\r\n treeNode = tempTreeNode!;\r\n }\r\n let node = this.deepSearchTreeNode(treeNode?.identifier!, this.treeFromBackend!);\r\n\r\n node!.expanded = treeNode?.expanded;\r\n node!.childrenNodes = treeNode?.childrenNodes;\r\n this.syncTree();\r\n }\r\n override onTreeNodeClick(treeNode: SmartTreeNode): void {\r\n this.selectFolder(treeNode.identifier!, treeNode);\r\n }\r\n async selectFolder(folderUri: string, treeNode?: SmartTreeNode): Promise<void> {\r\n let viewUuid = this.viewContext.getUuidOfPage(this.pageName!);\r\n\r\n await this.service\r\n .selectNode(viewUuid, this.treeId!, treeNode!.identifier!)\r\n .toPromise()\r\n .then((updatedTreeNode: SmartTreeNode | undefined) => {\r\n if (this.selectedNode) {\r\n this.selectedNode.selected = false;\r\n }\r\n this.selectedNode = updatedTreeNode;\r\n let node = this.deepSearchTreeNode(updatedTreeNode?.identifier!, this.treeFromBackend!);\r\n if (!node) {\r\n throw Error('Tree node does not exist');\r\n }\r\n node.expanded = updatedTreeNode?.expanded!;\r\n node.childrenNodes = updatedTreeNode?.childrenNodes!;\r\n node.selected = updatedTreeNode?.selected!;\r\n treeNode = updatedTreeNode;\r\n this.syncTree();\r\n this.viewContext.getAndSyncViewContext(\r\n this.viewContext.getUuidOfPage(this.viewContextName!)\r\n );\r\n });\r\n }\r\n\r\n async updateTreeOnTheFly(): Promise<void> {\r\n await this.initialize();\r\n }\r\n\r\n override async syncTree(): Promise<void> {\r\n await this.cacheActionDesciptors(this.getAllNodes(this.treeFromBackend!));\r\n\r\n if (!this.treeFromBackend) {\r\n throw new Error('There is no treeFromBackend available!');\r\n }\r\n if (!this.smartTreeModel) {\r\n this.smartTreeModel = {\r\n rootNodes: [],\r\n };\r\n }\r\n\r\n let smartTreeNodes: SmartTreeNode[] = this.createButtonsForTreeNodes(this.treeFromBackend);\r\n this.smartTreeModel = undefined;\r\n\r\n this.smartTreeModel = {\r\n rootNodes: [],\r\n };\r\n this.smartTreeModelChanged.next(this.smartTreeModel);\r\n\r\n this.smartTreeModel.rootNodes = smartTreeNodes;\r\n\r\n this.findSelected(this.smartTreeModel.rootNodes);\r\n\r\n this.smartTreeModelChanged.next(this.smartTreeModel);\r\n }\r\n\r\n deepSearchTreeNode(identifier: string, nodes: SmartTreeNode[]): SmartTreeNode | undefined {\r\n let treeNode: SmartTreeNode | undefined;\r\n for (let index = 0; index < nodes.length; index++) {\r\n const node = nodes[index];\r\n\r\n if (node.identifier === identifier) {\r\n treeNode = node;\r\n break;\r\n }\r\n if (node.childrenNodes && node.childrenNodes.length) {\r\n treeNode = this.deepSearchTreeNode(identifier, node.childrenNodes);\r\n if (treeNode) {\r\n break;\r\n }\r\n }\r\n }\r\n return treeNode;\r\n }\r\n\r\n findSelected(nodes: SmartTreeNode[]): void {\r\n return nodes.forEach((node: SmartTreeNode) => {\r\n if (node.selected) {\r\n this.selectedNode = node;\r\n return;\r\n } else if (node.childrenNodes && node.childrenNodes.length) {\r\n return this.findSelected(node.childrenNodes);\r\n }\r\n });\r\n }\r\n\r\n createButtonsForTreeNodes(nodes: SmartTreeNode[]): SmartTreeNode[] {\r\n nodes.map((node: SmartTreeNode) => {\r\n node.button = node.actions?.length\r\n ? {\r\n type: SmartTreeNodeButtonType.MENU,\r\n icon: 'more_vert',\r\n menuItemButtons: node.actions.map((action: UiAction) => {\r\n return {\r\n type: SmartTreeNodeButtonType.NORMAL,\r\n label: this.getLabelByAction(action),\r\n callback: this.doAction.bind(this),\r\n args: [action, node.identifier],\r\n };\r\n }),\r\n }\r\n : undefined;\r\n node.icon = 'Folders';\r\n if (node.childrenNodes) {\r\n node.childrenNodes = this.createButtonsForTreeNodes(node.childrenNodes);\r\n }\r\n });\r\n return nodes;\r\n }\r\n\r\n async doAction(args: any[]): Promise<void> {\r\n let uiAction: UiAction = args[0];\r\n let nodeUuid: string = args[1];\r\n\r\n if (uiAction.params) {\r\n uiAction.params['nodeUuid'] = nodeUuid;\r\n } else {\r\n uiAction.params = {\r\n nodeUuid: nodeUuid,\r\n };\r\n }\r\n\r\n let uiActionModel: UiActionModel = {\r\n serviceToUse: this,\r\n uiAction,\r\n };\r\n this.uiActionService.uiActionModel = uiActionModel;\r\n this.uiActionService.execute(uiAction);\r\n }\r\n\r\n protected getAllNodes(nodes: SmartTreeNode[]): SmartTreeNode[] {\r\n return nodes.flatMap((n) => [n, ...this.getAllNodes(n.childrenNodes)]);\r\n }\r\n\r\n protected async cacheActionDesciptors(nodes: SmartTreeNode[]) {\r\n await Promise.all(\r\n nodes.map(async (node: SmartTreeNode) => {\r\n let newUiActions = node.actions?.filter(\r\n (uiAction: UiAction) => !this.uiActionDescriptors.get(uiAction.code!)\r\n );\r\n if (!newUiActions) {\r\n return;\r\n }\r\n\r\n await Promise.all(\r\n newUiActions!.map(async (uiAction: UiAction) => {\r\n if (!this.uiActionDescriptors.get(uiAction.code!)) {\r\n let descriptor = await this.uiActionDescriptorService.getActionDescriptor(uiAction);\r\n this.uiActionDescriptors.set(uiAction.code!, descriptor);\r\n }\r\n })\r\n );\r\n })\r\n );\r\n }\r\n getLabelByAction(action: UiAction): string {\r\n let desc = this.uiActionDescriptors.get(action.code!);\r\n return desc!.title;\r\n }\r\n\r\n // #region UseUiAction\r\n getAdditionalParams(uiAction: UiAction): UiActionAdditionalParams {\r\n if (uiAction.params && uiAction.params['nodeUuid']) {\r\n let nodeUuid = uiAction.params!['nodeUuid'];\r\n\r\n let nodeName: string | undefined;\r\n if (uiAction.code === 'RENAME') {\r\n nodeName = this.deepSearchTreeNode(nodeUuid, this.treeFromBackend!)?.caption;\r\n }\r\n\r\n return {\r\n forTextArea: '',\r\n forTextField: nodeName ? nodeName : '',\r\n };\r\n }\r\n\r\n return {\r\n forTextArea: '',\r\n forTextField: '',\r\n };\r\n }\r\n getModel() {\r\n return {};\r\n }\r\n\r\n async performUiActionRequest(uiActionRequest: UiActionRequest): Promise<any> {\r\n if (uiActionRequest.params['nodeUuid']) {\r\n await this.performNodeUiActionRequest(uiActionRequest);\r\n } else {\r\n await this.performMainUiActionRequest(uiActionRequest);\r\n }\r\n\r\n await this.viewContext.getAndSyncViewContext();\r\n\r\n this.syncTree();\r\n }\r\n\r\n async performNodeUiActionRequest(uiActionRequest: UiActionRequest): Promise<any> {\r\n let nodeId = uiActionRequest.params['nodeUuid'];\r\n delete uiActionRequest.params['nodeUuid'];\r\n\r\n let viewUuid = this.viewContext.getUuidOfPage(this.pageName);\r\n\r\n this.treeFromBackend = await this.service\r\n .performAction(viewUuid, this.treeId!, nodeId, uiActionRequest)\r\n .toPromise();\r\n }\r\n async performMainUiActionRequest(uiActionRequest: UiActionRequest): Promise<any> {\r\n let viewUuid = this.viewContext.getUuidOfPage(this.pageName);\r\n\r\n this.treeFromBackend = await this.service\r\n .performMainAction(viewUuid, this.treeId!, uiActionRequest)\r\n .toPromise();\r\n }\r\n\r\n handleSpecificDemandsAsynchronously(\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<UiActionSpecificDemandResponse> {\r\n throw new Error('Method not implemented.');\r\n }\r\n // #endregion\r\n}\r\n","import { NestedTreeControl } from '@angular/cdk/tree';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n ViewChild,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatTreeNestedDataSource } from '@angular/material/tree';\r\nimport {\r\n SmartTreeModel,\r\n SmartTreeNode,\r\n SmartTreeNodeButton,\r\n SmartTreeNodeButtonType,\r\n} from './smarttree.model';\r\nimport { TreeStyle } from './smarttree.node.model';\r\nimport { SmarttreeService } from './smarttree.service';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { UiActionModel } from '../view-context/projects';\r\n\r\n@Component({\r\n selector: 'smart-tree',\r\n templateUrl: './smarttree.component.html',\r\n styleUrls: ['./smarttree.component.css'],\r\n})\r\nexport class SmartTreeComponent implements OnInit, OnDestroy {\r\n private _destroy$: Subject<void> = new Subject();\r\n\r\n @ViewChildren(MatMenuTrigger) trigger!: QueryList<MatMenuTrigger>;\r\n\r\n @ViewChild('tree') tree: any;\r\n\r\n treeControl = new NestedTreeControl<SmartTreeNode>((node) => node.childrenNodes);\r\n dataSource = new MatTreeNestedDataSource<SmartTreeNode>();\r\n tempActiveNode?: SmartTreeNode;\r\n treeData?: SmartTreeModel;\r\n @Input() treeStyle?: TreeStyle;\r\n @Input() treeService!: SmarttreeService<any>;\r\n smartTreeNodeButtonType = SmartTreeNodeButtonType;\r\n\r\n errorMessage?: string;\r\n\r\n uiActionModels: UiActionModel[] = [];\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n ngOnInit(): void {\r\n if (!this.treeService) {\r\n throw new Error('TreeService has not been given!');\r\n }\r\n this.errorMessage = this.treeService.errorMessage;\r\n\r\n this.treeService.smartTreeModelChanged.subscribe((newSmartTree: SmartTreeModel) => {\r\n this.treeData = newSmartTree;\r\n this.dataSource.data = this.treeData.rootNodes!;\r\n this.expandTreeNodes();\r\n });\r\n this.treeService.uiActionModelsChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n if (this.treeService.uiActionModels) {\r\n this.uiActionModels = this.treeService.uiActionModels;\r\n }\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n getIfExpanded(node: SmartTreeNode): boolean {\r\n return this.treeControl.isExpanded(node);\r\n }\r\n\r\n expandTreeNodes() {\r\n this.expandTreeNodesDeeply(this.dataSource.data);\r\n }\r\n\r\n expandTreeNodesDeeply(nodes: SmartTreeNode[]) {\r\n nodes.forEach((node) => {\r\n if (node.expanded) {\r\n this.treeControl.expand(node);\r\n this.cdr.markForCheck();\r\n if (node.childrenNodes && node.childrenNodes.length) {\r\n this.expandTreeNodesDeeply(node.childrenNodes);\r\n }\r\n } else {\r\n this.treeControl.collapse(node);\r\n }\r\n });\r\n }\r\n\r\n onNodeClick(event: any, node: SmartTreeNode) {\r\n event.stopPropagation();\r\n\r\n if (this.tempActiveNode) this.tempActiveNode.selected = false;\r\n node.selected = true;\r\n this.tempActiveNode = node;\r\n\r\n this.treeService.onTreeNodeClick(node);\r\n }\r\n\r\n onOpenNode(event: any, node: SmartTreeNode) {\r\n event.stopPropagation();\r\n this.treeService.onTreeNodeOpen(node);\r\n }\r\n\r\n hasChild = (_: number, node: SmartTreeNode) => node.hasChildren;\r\n\r\n getNodeStyle(node: SmartTreeNode) {\r\n if (this.treeStyle) {\r\n var style = node.selected\r\n ? {\r\n background: this.treeStyle.activeStyle?.backgroundColor,\r\n color: this.treeStyle.activeStyle?.color,\r\n }\r\n : {\r\n background: this.treeStyle.levelBackgroundColor![node.level!],\r\n color: this.treeStyle.color!,\r\n };\r\n return style;\r\n }\r\n return {};\r\n }\r\n getNodePadding(node: SmartTreeNode) {\r\n if (this.treeStyle) {\r\n var style = node.selected\r\n ? {\r\n 'padding-left': 15 * node.level! + 'px',\r\n }\r\n : {\r\n 'padding-left': 15 * node.level! + 'px',\r\n };\r\n return style;\r\n }\r\n return {};\r\n }\r\n\r\n customButtonClicked(event: any, button: SmartTreeNodeButton, close?: boolean): void {\r\n event.stopPropagation();\r\n\r\n if (button.type === SmartTreeNodeButtonType.MENU) {\r\n return;\r\n }\r\n\r\n if (!button.callback) {\r\n throw new Error(`Button with name ${button.label || button.icon} does not have a callback!`);\r\n }\r\n button.callback(button.args);\r\n if (close) {\r\n let openMenus = this.trigger.filter(\r\n (matMenuTrigger: MatMenuTrigger) => matMenuTrigger.menuOpen\r\n );\r\n openMenus.forEach((matMenuTrigger: MatMenuTrigger) => {\r\n matMenuTrigger.closeMenu();\r\n });\r\n }\r\n }\r\n\r\n getClassesForTreeNode(node: SmartTreeNode): string[] {\r\n let classes: string[] = [];\r\n\r\n if (node.expanded) {\r\n classes.push(this.getCustomClass('expanded', node.level));\r\n } else {\r\n classes.push(this.getCustomClass('collapsed', node.level));\r\n }\r\n\r\n if (node.selected) {\r\n classes.push(this.getCustomClass('selected', node.level));\r\n } else {\r\n classes.push(this.getCustomClass('unselected', node.level));\r\n }\r\n\r\n if (node.level !== 0) {\r\n classes.push(this.getCustomClass('child', node.level));\r\n }\r\n\r\n return classes;\r\n }\r\n\r\n getInnerClassesForTreeNode(node: SmartTreeNode): string[] {\r\n let classes: string[] = [];\r\n\r\n if (node.expanded) {\r\n classes.push(this.getCustomClass('inner-expanded', node.level));\r\n } else {\r\n classes.push(this.getCustomClass('inner-collapsed', node.level));\r\n }\r\n\r\n if (node.selected) {\r\n classes.push(this.getCustomClass('inner-selected', node.level));\r\n } else {\r\n classes.push(this.getCustomClass('inner-unselected', node.level));\r\n }\r\n\r\n return classes;\r\n }\r\n\r\n getClassesForTreeNodeChildren(node: SmartTreeNode): string[] {\r\n let classes: string[] = [];\r\n\r\n classes.push(this.getCustomClass('group', node.level));\r\n\r\n return classes;\r\n }\r\n\r\n getCustomClass(cssClass: string, plusProperty: any): string {\r\n return `${cssClass}-${plusProperty}`;\r\n }\r\n}\r\n","<div class=\"smartTreeContainer\">\r\n <smart-ui-action-toolbar\r\n *ngIf=\"uiActionModels.length\"\r\n [uiActionModels]=\"uiActionModels\"\r\n ></smart-ui-action-toolbar>\r\n <mat-tree\r\n #tree\r\n *ngIf=\"treeData\"\r\n [dataSource]=\"dataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"sm-tree\"\r\n >\r\n <mat-nested-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodeToggle=\"{{ getIfExpanded(node) }}\"\r\n [ngClass]=\"getClassesForTreeNode(node)\"\r\n [ngStyle]=\"getNodeStyle(node)\"\r\n >\r\n <div\r\n [ngStyle]=\"getNodePadding(node)\"\r\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\r\n class=\"mat-tree-node sm-tree-node\"\r\n (click)=\"onNodeClick($event, node)\"\r\n >\r\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' + node.name\">\r\n <mat-icon\r\n class=\"mat-icon-rtl-mirror\"\r\n matTreeNodeToggle\r\n (click)=\"onOpenNode($event, node)\"\r\n >\r\n <div *ngIf=\"hasChild(node.level, node)\">\r\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\r\n </div>\r\n </mat-icon>\r\n </button>\r\n <smart-icon [icon]=\"node.icon\"> </smart-icon>\r\n <div class=\"sm-tree-row\" [ngClass]=\"node.classes\">\r\n <div class=\"sm-tree-row-caption\">\r\n {{ node.caption }}\r\n </div>\r\n <div class=\"sm-shortDescription-spacer\"></div>\r\n <div class=\"sm-tree-row-shortDescription\">\r\n {{ node.shortDescription }}\r\n </div>\r\n <div class=\"sm-shortDescription-button-spacer\"></div>\r\n <div *ngIf=\"node.button\" class=\"sm-tree-node-button\" [ngSwitch]=\"node.button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, node.button)\"\r\n *ngSwitchCase=\"smartTreeNodeButtonType.ICON\"\r\n mat-icon-button\r\n >\r\n <smart-icon title=\"{{ node.button.icon }}\" [icon]=\"node.button.icon\"></smart-icon>\r\n </button>\r\n <div *ngSwitchCase=\"smartTreeNodeButtonType.MENU\">\r\n <button\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, node.button, true)\"\r\n >\r\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon\r\n >{{ node.button.label }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button\r\n *ngFor=\"let button of node.button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, button, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon\r\n >{{ button.label }}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n <button\r\n (click)=\"customButtonClicked($event, node.button)\"\r\n *ngSwitchCase=\"smartTreeNodeButtonType.NORMAL\"\r\n mat-raised-button\r\n >\r\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon>\r\n {{ node.button.icon }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n [class.sm-tree-invisible]=\"!treeControl.isExpanded(node)\"\r\n [ngClass]=\"getClassesForTreeNodeChildren(node)\"\r\n role=\"group\"\r\n >\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </div>\r\n </mat-nested-tree-node>\r\n </mat-tree>\r\n <div *ngIf=\"!treeData\">\r\n <h3>\r\n {{ errorMessage }}\r\n </h3>\r\n </div>\r\n</div>\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { SmartIconModule } from '@smartbit4all/icon';\r\nimport { SmarttreeGenericService } from './smarttree-generic.service';\r\nimport { SmartTreeComponent } from './smarttree.component';\r\nimport { SmarttreeService } from './smarttree.service';\r\nimport { SmartViewContextModule } from '../view-context/smart-view-context.module';\r\n\r\n@NgModule({\r\n declarations: [SmartTreeComponent],\r\n imports: [\r\n BrowserModule,\r\n MatCommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTreeModule,\r\n MatMenuModule,\r\n SmartIconModule,\r\n SmartViewContextModule,\r\n ],\r\n exports: [SmartTreeComponent],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [SmarttreeService, SmarttreeGenericService],\r\n})\r\nexport class SmarttreeModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatCommonModule } from '@angular/material/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { SmartExpandableSectionModule } from '@smartbit4all/expandable-section';\r\nimport { SmartformModule } from '@smartbit4all/form';\r\nimport { SmartSessionModule } from './session/smart-session.module';\r\nimport { SmartFileUploaderComponent } from './smart-client/smart-file-uploader/smart-file-uploader.component';\r\nimport { SmartNgClientService } from './smart-ng-client.service';\r\nimport { SmartViewContextModule } from './view-context/smart-view-context.module';\r\nimport { SmarttreeModule } from './smart-tree/smarttree.module';\r\n\r\n@NgModule({\r\n declarations: [SmartFileUploaderComponent],\r\n imports: [\r\n BrowserModule,\r\n MatCommonModule,\r\n SmartSessionModule,\r\n SmartViewContextModule,\r\n SmartformModule,\r\n SmartExpandableSectionModule,\r\n ],\r\n exports: [\r\n SmartSessionModule,\r\n SmartViewContextModule,\r\n SmartFileUploaderComponent,\r\n SmarttreeModule,\r\n ],\r\n providers: [SmartNgClientService],\r\n})\r\nexport class SmartNgClientModule {}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport interface SmartAuthenticationServiceInterface {\r\n bffApisHaveBeenSetUp: boolean;\r\n headersUpdated: Subject<void>;\r\n}\r\n\r\n@Injectable()\r\nexport class SmartAuthService implements SmartAuthenticationServiceInterface, OnDestroy {\r\n bffApisHaveBeenSetUp: boolean = false;\r\n private _destroy$: Subject<void> = new Subject();\r\n headersUpdated: Subject<void> = new SmartSubject(this._destroy$);\r\n ngOnDestroy(): void {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n}\r\n","/*\r\n * Public API Surface of smarttree\r\n */\r\n\r\nexport * from './smarttree.service';\r\nexport * from './smarttree.component';\r\nexport * from './smarttree.module';\r\nexport * from './smarttree.model';\r\nexport * from './smarttree-generic.service';\r\n","import { Inject, Injector } from '@angular/core';\r\nimport { SmartForm, SmartformComponent, SophisticatedValueChange } from '@smartbit4all/form';\r\nimport { GridOptions, SmartGrid, SmartGridComponent } from '@smartbit4all/grid';\r\nimport { SmartSubject } from '@smartbit4all/subject';\r\nimport { SmarttreeGenericService } from '../smart-tree/projects';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport {\r\n ComponentModel,\r\n ComponentModelChange,\r\n DataChange,\r\n DataChangeKind,\r\n SmartTranslateService,\r\n SmartViewContextService,\r\n UiAction,\r\n UiActionAdditionalParams,\r\n UiActionDescriptorService,\r\n UiActionModel,\r\n UiActionRequest,\r\n UiActionService,\r\n UiActionSpecificDemandResponse,\r\n UseUiAction,\r\n} from '../view-context/projects';\r\nimport { SmartAuthenticationServiceInterface } from './smart-authentication.service';\r\n\r\nexport abstract class SmartComponentApiClient<T> implements UseUiAction {\r\n protected _destroy$: Subject<void> = new Subject();\r\n\r\n protected sendDataChanges: boolean = false;\r\n\r\n private _useAutoSubmit: boolean = false;\r\n private _useAutoSubmitTurnedOff: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n protected get useAutoSubmit(): boolean {\r\n return this._useAutoSubmit;\r\n }\r\n protected set useAutoSubmit(useAutoSubmit: boolean) {\r\n this._useAutoSubmit = useAutoSubmit;\r\n if (this._useAutoSubmit) {\r\n this.subscribeToAutoSubmit();\r\n this.reSubscribeToChange.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {\r\n this.subscribeToAutoSubmit();\r\n });\r\n } else {\r\n this._useAutoSubmitTurnedOff.next();\r\n }\r\n }\r\n\r\n private subscribeToAutoSubmit(): void {\r\n this.submit.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {\r\n this.submitForms();\r\n this.submit.complete();\r\n });\r\n }\r\n\r\n private detectChange: SmartSubject<ComponentModelChange> = new SmartSubject(this._destroy$);\r\n\r\n private _uuid?: string;\r\n\r\n private uuidOfPageHasBeenChangedSubscription?: Subscription;\r\n\r\n get uuid(): string | undefined {\r\n return this._uuid;\r\n }\r\n set uuid(uuid: string | undefined) {\r\n let firstUuid: boolean = true;\r\n if (this.uuid) {\r\n this.viewContext.unfollow(this.uuid);\r\n firstUuid = false;\r\n }\r\n this._uuid = uuid;\r\n if (uuid) {\r\n this.widgets.widgets.forEach((ref, key) => {\r\n if (ref instanceof SmartGridComponent) {\r\n ref.uuid = uuid;\r\n } else if (!ref && !firstUuid) {\r\n console.error(`Provided reference for ${key} is undefined on uuid change.`);\r\n }\r\n });\r\n if (!this.uuidOfPageHasBeenChangedSubscription) {\r\n this.uuidOfPageHasBeenChangedSubscription = this.viewContext.uuidOfPageHasBeenChanged\r\n .pipe(takeUntil(this._destroy$))\r\n .subscribe((pageName) => {\r\n if (pageName === this.pageName) {\r\n this.run();\r\n }\r\n });\r\n }\r\n }\r\n this.viewContext.follow(this._uuid!, this.detectChange);\r\n }\r\n\r\n private _model: ComponentModel | undefined;\r\n\r\n get model(): ComponentModel | undefined {\r\n return this._model;\r\n }\r\n set model(model: ComponentModel | undefined) {\r\n this._model = model;\r\n\r\n this.initComponentByModel();\r\n }\r\n\r\n private _data?: T;\r\n\r\n get data(): T | undefined {\r\n return this._data;\r\n }\r\n set data(model: T | undefined) {\r\n this._data = model;\r\n this.dataChanged.next();\r\n }\r\n\r\n public uiActionModels: UiActionModel[] = [];\r\n\r\n public dataChanged: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n // UseUiAction\r\n submit: Subject<void> = new SmartSubject(this._destroy$);\r\n reSubscribeToChange: Subject<void> = new SmartSubject(this._destroy$);\r\n\r\n // Grid\r\n smartGrid?: SmartGrid;\r\n\r\n // Services\r\n protected viewContext: SmartViewContextService;\r\n protected uiActionService: UiActionService;\r\n protected uiActionDescriptorService: UiActionDescriptorService;\r\n protected translate?: SmartTranslateService;\r\n\r\n // Tree\r\n private _smartTreeService?: SmarttreeGenericService;\r\n\r\n public get smartTreeService(): SmarttreeGenericService | undefined {\r\n return this._smartTreeService;\r\n }\r\n public set smartTreeService(smartTreeService: SmarttreeGenericService | undefined) {\r\n if (this._smartTreeService !== undefined) {\r\n throw Error('The default tree has already set up!');\r\n }\r\n this._smartTreeService = smartTreeService;\r\n }\r\n\r\n // Contained Widgets\r\n widgets: WidgetMap<SmartGridComponent | SmarttreeGenericService | undefined> = new WidgetMap();\r\n\r\n formWidgets: WidgetMap<SmartformComponent | undefined> = new WidgetMap();\r\n\r\n constructor(\r\n protected inject: Injector,\r\n protected auth: SmartAuthenticationServiceInterface,\r\n @Inject('pageName') protected pageName: string\r\n ) {\r\n this.detectChange.subscribe((change: ComponentModelChange) => {\r\n this.handleChanges(change);\r\n });\r\n\r\n this.viewContext = inject.get(SmartViewContextService);\r\n\r\n this.uiActionService = inject.get(UiActionService);\r\n this.uiActionDescriptorService = inject.get(UiActionDescriptorService);\r\n }\r\n\r\n _ngOnInit(): void {\r\n this.run();\r\n }\r\n _ngOnDestroy(): void {\r\n this.viewContext.unfollow(this.uuid!);\r\n this.widgets.clearWidgets();\r\n\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n\r\n initComponentByModel(): void {\r\n this.initData();\r\n this.initActions();\r\n\r\n // TODO: layout, valueSet, widgets\r\n }\r\n\r\n initData(): void {\r\n if (this.model?.data) {\r\n this.data = this.model?.data as any;\r\n }\r\n }\r\n\r\n initActions(): void {\r\n if (this.model?.actions) {\r\n this.uiActionModels = this.model?.actions.map((uiAction: UiAction) => {\r\n return {\r\n serviceToUse: this,\r\n uiAction,\r\n };\r\n });\r\n }\r\n }\r\n\r\n run(): void {\r\n if (this.auth.bffApisHaveBeenSetUp) {\r\n this.load();\r\n } else {\r\n this.auth.headersUpdated.subscribe(() => {\r\n this.load();\r\n });\r\n }\r\n }\r\n\r\n async load(): Promise<void> {\r\n this.uuid = this.viewContext.getUuidOfPage(this.pageName);\r\n //this.model = await this.viewContext.load(this.uuid);\r\n await this.viewContext.load2(this.uuid);\r\n }\r\n\r\n //#region UseUiAction\r\n getAdditionalParams(uiAction: UiAction): UiActionAdditionalParams {\r\n return {\r\n forTextArea: '',\r\n forTextField: '',\r\n };\r\n }\r\n getModel() {\r\n return this.data;\r\n }\r\n\r\n async performUiActionRequest(\r\n uiActionRequest: UiActionRequest,\r\n widgetId?: string,\r\n nodeId?: string\r\n ): Promise<any> {\r\n if (uiActionRequest.params['_files']) {\r\n const param = uiActionRequest.params['param'];\r\n const files = uiActionRequest.params['_files'];\r\n const isMultiple = uiActionRequest.params['isMultiple'];\r\n delete uiActionRequest.params['param'];\r\n delete uiActionRequest.params['_files'];\r\n delete uiActionRequest.params['isMultiple'];\r\n\r\n if (!isMultiple) {\r\n await this.viewContext.performUploadAction(this.uuid!, uiActionRequest, param, files[0]);\r\n } else {\r\n await this.viewContext.performUploadMultipleAction(\r\n this.uuid!,\r\n uiActionRequest,\r\n param,\r\n files\r\n );\r\n }\r\n } else if (widgetId && nodeId) {\r\n await this.viewContext.performWidgetAction(this.uuid!, widgetId, nodeId, uiActionRequest);\r\n } else if (widgetId) {\r\n await this.viewContext.performWidgetMainAction(this.uuid!, widgetId, uiActionRequest);\r\n } else {\r\n await this.viewContext.performAction(this.uuid!, uiActionRequest);\r\n }\r\n }\r\n\r\n handleSpecificDemandsAsynchronously(\r\n uiAction: UiAction,\r\n uiActionRequest: UiActionRequest\r\n ): Promise<UiActionSpecificDemandResponse> {\r\n throw new Error('handleSpecificDemandsAsynchronously method not implemented.');\r\n }\r\n //#endregion\r\n\r\n /**\r\n * Submits all the registered forms in the SmartComponent\r\n */\r\n public submitForms(): void {\r\n Object.keys(this.formWidgets.widgets).map((key: string) => {\r\n this.formWidgets.widgets.get(key)?.submitForm();\r\n });\r\n }\r\n\r\n public addGrid(\r\n smartGrid: SmartGrid,\r\n options: GridOptions,\r\n useAsDefaultGrid?: boolean,\r\n componentReference?: SmartGridComponent\r\n ): SmartGrid {\r\n smartGrid.options = options;\r\n smartGrid.uiActionService = this.uiActionService;\r\n smartGrid.uiActionDescriptorService = this.uiActionDescriptorService;\r\n smartGrid.serviceToUse = this;\r\n smartGrid.viewContextService = this.viewContext;\r\n\r\n this.widgets.addWidget(smartGrid.gridIdentifier, componentReference);\r\n\r\n if (useAsDefaultGrid) {\r\n this.smartGrid = smartGrid;\r\n return this.smartGrid;\r\n }\r\n\r\n return smartGrid;\r\n }\r\n\r\n public addForm(\r\n smartFormId: string,\r\n smartForm: SmartForm,\r\n componentReference?: SmartformComponent\r\n ): SmartForm {\r\n this.formWidgets.addWidget(smartFormId, componentReference);\r\n\r\n if (this.sendDataChanges && componentReference) {\r\n smartForm.useOnValueChangeEvent = true;\r\n\r\n componentReference.sophisticatedValueChange\r\n .pipe(takeUntil(this._destroy$))\r\n .subscribe((valueChange: SophisticatedValueChange) => {\r\n this.handleValueChanges(valueChange);\r\n });\r\n }\r\n\r\n return smartForm;\r\n }\r\n\r\n public setUpDefaultTree(treeId: string): void {\r\n this.smartTreeService = new SmarttreeGenericService(this.inject, this.pageName, treeId);\r\n this.widgets.addWidget(treeId, this.smartTreeService);\r\n }\r\n\r\n public createTreeService(treeId: string): SmarttreeGenericService {\r\n const treeService = new SmarttreeGenericService(this.inject, this.pageName, treeId);\r\n this.widgets.addWidget(treeId, treeService);\r\n\r\n return treeService;\r\n }\r\n\r\n public addFileUploader(\r\n uiActionCode: string,\r\n fileFormats?: string[],\r\n maxSizeMb?: number,\r\n isMultiple?: boolean\r\n ): SmartFileUploader {\r\n return {\r\n uiActionCode,\r\n smartComponent: this,\r\n fileFormats,\r\n isMultiple,\r\n maxSizeMb,\r\n };\r\n }\r\n\r\n // #region handle changes\r\n private handleValueChanges(valueChange: SophisticatedValueChange): void {\r\n let dataChange: DataChange;\r\n if (valueChange.key.includes('.')) {\r\n const source = valueChange.key.split('.')[0];\r\n const valueKey = valueChange.key.split('.')[1];\r\n dataChange = {\r\n kind: valueChange.kind === 'basic' ? DataChangeKind.Widget : DataChangeKind.Selection,\r\n source,\r\n values: [[valueKey, valueChange.value]],\r\n };\r\n } else {\r\n dataChange = {\r\n kind: valueChange.kind === 'basic' ? DataChangeKind.Widget : DataChangeKind.Selection,\r\n source: valueChange.key,\r\n values: [[valueChange.key, valueChange.value]],\r\n };\r\n }\r\n\r\n this.viewContext.dataChanged(this.uuid!, dataChange);\r\n }\r\n\r\n private handleChanges(change: ComponentModelChange): void {\r\n try {\r\n if (change.changedWidgets) {\r\n this.handleChangeWidgets(change.changedWidgets);\r\n }\r\n\r\n let dataChangeHasBeenNexted = false;\r\n if (change.changes) {\r\n const changes = change.changes;\r\n Object.keys(changes).map((changeKey: string) => {\r\n if (changeKey.startsWith('data.')) {\r\n this.handleDataChange(changes, changeKey);\r\n } else if (changeKey.startsWith('layouts.') && this.model?.layouts) {\r\n this.handleLayoutChange(changes, changeKey);\r\n } else if (changeKey.startsWith('valueSets.') && this.model?.valueSets) {\r\n this.handleValueSetChange(changes, changeKey);\r\n } else if (changeKey === 'actions') {\r\n this.handleActionChange(changes, changeKey);\r\n } else if (changeKey === 'constraints') {\r\n this.handleConstraintChange(changes, changeKey);\r\n } else if (changeKey === '') {\r\n this.model = changes[''] as ComponentModel;\r\n dataChangeHasBeenNexted = true;\r\n }\r\n });\r\n\r\n if (!dataChangeHasBeenNexted) {\r\n this.dataChanged.next();\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n this.model = change.value as ComponentModel;\r\n }\r\n\r\n if (!change.changedWidgets && !change.changes && change.value) {\r\n this.model = change.value as ComponentModel;\r\n }\r\n }\r\n\r\n private handleChangeWidgets(changedWidgets: string[]): void {\r\n changedWidgets.forEach((key: string) => {\r\n const reference = this.widgets.get(key);\r\n\r\n if (reference instanceof SmartGridComponent) {\r\n reference.refresh();\r\n } else if (reference instanceof SmarttreeGenericService) {\r\n reference.initialize();\r\n } else if (reference === undefined) {\r\n console.error(`Provided reference for ${key} is undefined.`);\r\n }\r\n });\r\n }\r\n\r\n private setValueDeeply(model: any, key: string, value: any): any {\r\n let splittedKeys = key.split('.');\r\n\r\n let deepModel: any[] = [model];\r\n let tempModel: any;\r\n\r\n for (let index = 0; index < splittedKeys.length; index++) {\r\n tempModel = deepModel[index];\r\n\r\n if (\r\n typeof tempModel[splittedKeys[index]] !== 'string' &&\r\n typeof tempModel[splittedKeys[index]] !== 'boolean' &&\r\n typeof tempModel[splittedKeys[index]] !== 'number' &&\r\n tempModel[splittedKeys[index]] !== undefined\r\n ) {\r\n deepModel.push(tempModel[splittedKeys[index]]);\r\n }\r\n\r\n if (index === splittedKeys.length - 1) {\r\n tempModel[splittedKeys[index]] = value;\r\n break;\r\n }\r\n }\r\n return model;\r\n }\r\n\r\n private handleDataChange(changes: { [key: string]: any }, changeKey: string): void {\r\n this.setValueDeeply(this.model, changeKey, changes[changeKey]);\r\n\r\n this.formWidgets.widgets.forEach(\r\n (formComponent: SmartformComponent | undefined, key: string) => {\r\n if (formComponent === undefined) {\r\n console.error(`Provided form reference for ${key} is undefined.`);\r\n } else {\r\n formComponent.refresh();\r\n }\r\n }\r\n );\r\n }\r\n\r\n private handleLayoutChange(changes: { [key: string]: any }, changeKey: string): void {\r\n let layoutKey = changeKey.split('.')[1];\r\n this.model!.layouts[layoutKey] = changes[changeKey];\r\n }\r\n\r\n private handleValueSetChange(changes: { [key: string]: any }, changeKey: string): void {\r\n let valueSetKey = changeKey.split('.')[1];\r\n this.model!.valueSets![valueSetKey] = changes[changeKey];\r\n }\r\n\r\n private handleActionChange(changes: { [key: string]: any }, changeKey: string): void {\r\n this.model!.actions = changes[changeKey];\r\n this.initActions();\r\n }\r\n\r\n private handleConstraintChange(changes: { [key: string]: any }, changeKey: string): void {\r\n this.model!.constraints = changes[changeKey];\r\n }\r\n\r\n // #endregion\r\n}\r\n\r\nexport class WidgetMap<T> {\r\n private _widgets: Map<string, T> = new Map();\r\n\r\n get widgets(): Map<string, T> {\r\n return this._widgets;\r\n }\r\n set widgets(widgets: Map<string, T>) {\r\n this._widgets = widgets;\r\n }\r\n addWidget(key: string, reference: T, isForm?: boolean): void {\r\n this._widgets.set(key, reference);\r\n }\r\n removeWidget(key: string): void {\r\n this._widgets.delete(key);\r\n }\r\n clearWidgets(): void {\r\n this._widgets.clear();\r\n }\r\n\r\n get(key: string): T | undefined {\r\n return this.widgets.get(key);\r\n }\r\n}\r\n\r\nexport interface SmartFileUploader {\r\n uiActionCode: string;\r\n maxSizeMb?: number;\r\n fileFormats?: string[];\r\n isMultiple?: boolean;\r\n smartComponent: SmartComponentApiClient<any>;\r\n}\r\n","import { Component, Inject, Injector, OnDestroy, OnInit } from '@angular/core';\r\nimport { SmartAuthService, SmartAuthenticationServiceInterface } from './smart-authentication.service';\r\nimport { SmartComponentApiClient } from './smart-component-api-client';\r\n\r\n@Component({\r\n\ttemplate: '',\r\n})\r\nexport abstract class SmartComponent<T> extends SmartComponentApiClient<T> implements OnInit, OnDestroy {\r\n\tconstructor(\r\n\t\tinject: Injector,\r\n\t\t@Inject(SmartAuthService) auth: SmartAuthenticationServiceInterface,\r\n\t\t@Inject('pageName') pageName: string\r\n\t) {\r\n\t\tsuper(inject, auth, pageName);\r\n\t}\r\n\tngOnInit(): void {\r\n\t\tthis._ngOnInit();\r\n\t}\r\n\tngOnDestroy(): void {\r\n\t\tthis._ngOnDestroy();\r\n\t}\r\n}\r\n","import { Inject, Injectable, Injector, OnDestroy, OnInit } from '@angular/core';\r\nimport { SmartAuthService, SmartAuthenticationServiceInterface } from './smart-authentication.service';\r\nimport { SmartComponentApiClient } from './smart-component-api-client';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport abstract class SmartService<T> extends SmartComponentApiClient<T> implements OnInit, OnDestroy {\r\n\tconstructor(\r\n\t\tinject: Injector,\r\n\t\t@Inject(SmartAuthService) auth: SmartAuthenticationServiceInterface,\r\n\t\t@Inject('pageName') pageName: string\r\n\t) {\r\n\t\tsuper(inject, auth, pageName);\r\n\t}\r\n\tngOnInit(): void {\r\n\t\tthis._ngOnInit();\r\n\t}\r\n\tngOnDestroy(): void {\r\n\t\tthis._ngOnDestroy();\r\n\t}\r\n}\r\n","/*\r\n * Public API Surface of smart-ng-client\r\n */\r\n\r\nexport * from './lib/smart-ng-client.service';\r\nexport * from './lib/smart-ng-client.module';\r\nexport * from './lib/smart-client/smart-file-uploader/smart-file-uploader.component';\r\n\r\nexport * from './lib/view-context/projects';\r\nexport * from './lib/session/projects';\r\n\r\nexport * from './lib/smart-client/projects';\r\nexport * from './lib/smart-tree/projects';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './projects';\n"],"names":["CustomHttpParameterCodec","BASE_PATH","COLLECTION_FORMATS","Configuration","i2.Configuration","i1.SessionService","i2.SmartCookieService","i1.SmartViewContextService","i1.SmartSessionService","i2.SmartViewContextService","i1.SmartCookieService","i1","i2","i3.SmartDevToolService","i1.SmartDevToolDialogService","i3","i4","i5","i6.SmartDevToolDatePipe","i1.SmartDevToolService","i1.SmartSessionTimerService","catchError","i3.SmartViewContextService","i1.SmartViewContextErrorDialogService","i2.UiActionDescriptorService","i1.UiActionConfirmDialogService","i1.UiActionInputDialogService","i1.UiActionFileUploadDialogService","i2.UiActionInputDialogService","i3.UiActionFileUploadDialogService","i1.UiActionService","i1.UiActionDescriptorService","i1.UiActionToolbarComponent","i7"],"mappings":"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"}
|