@lowcodeunit/applications-flow-common 1.34.60-social-ui-bug-fixes → 1.34.63-lets-get-social-ish
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/lcu.api.mjs +5 -4
- package/esm2020/lib/applications-flow.module.mjs +42 -26
- package/esm2020/lib/controls/devops-source-control-form/devops-source-control-form.component.mjs +3 -3
- package/esm2020/lib/controls/dfs-modifiers-form/dfs-modifiers-form.component.mjs +277 -0
- package/esm2020/lib/controls/security-toggle/security-toggle.component.mjs +2 -2
- package/esm2020/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.mjs +10 -3
- package/esm2020/lib/dialogs/custom-domain-dialog/custom-domain-dialog.component.mjs +3 -3
- package/esm2020/lib/dialogs/dfs-modifiers-dialog/dfs-modifiers-dialog.component.mjs +109 -0
- package/esm2020/lib/dialogs/feed-header-dialog/feed-header-dialog.component.mjs +280 -0
- package/esm2020/lib/dialogs/source-control-dialog/source-control-dialog.component.mjs +10 -3
- package/esm2020/lib/elements/feed-card-sm/feed-card-sm.component.mjs +2 -2
- package/esm2020/lib/elements/feed-header/feed-header.component.mjs +131 -0
- package/esm2020/lib/elements/main-feed-card/main-feed-card.component.mjs +2 -2
- package/esm2020/lib/elements/project-info-card/project-info-card.component.mjs +2 -2
- package/esm2020/lib/elements/projects/controls/git-auth/git-auth.component.mjs +3 -2
- package/esm2020/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.mjs +3 -3
- package/esm2020/lib/elements/projects/controls/tabs/domains/domains.component.mjs +2 -2
- package/esm2020/lib/elements/skeleton-feed-card/skeleton-feed-card.component.mjs +2 -2
- package/esm2020/lib/models/user-feed.model.mjs +3 -1
- package/esm2020/lib/services/applications-flow.service.mjs +16 -6
- package/esm2020/lib/services/eac.service.mjs +28 -5
- package/esm2020/lib/services/project.service.mjs +50 -3
- package/esm2020/lib/state/applications-flow.state.mjs +1 -1
- package/fesm2015/lowcodeunit-applications-flow-common.mjs +2407 -1700
- package/fesm2015/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/fesm2020/lowcodeunit-applications-flow-common.mjs +2373 -1687
- package/fesm2020/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/lcu.api.d.ts +4 -3
- package/lib/applications-flow.module.d.ts +21 -18
- package/lib/controls/dfs-modifiers-form/dfs-modifiers-form.component.d.ts +62 -0
- package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts +2 -0
- package/lib/dialogs/dfs-modifiers-dialog/dfs-modifiers-dialog.component.d.ts +41 -0
- package/lib/dialogs/feed-header-dialog/feed-header-dialog.component.d.ts +71 -0
- package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts +1 -0
- package/lib/elements/{gh-control/gh-control.component.d.ts → feed-header/feed-header.component.d.ts} +9 -7
- package/lib/models/user-feed.model.d.ts +17 -0
- package/lib/services/applications-flow.service.d.ts +4 -1
- package/lib/services/eac.service.d.ts +7 -4
- package/lib/services/project.service.d.ts +5 -3
- package/lib/state/applications-flow.state.d.ts +2 -1
- package/package.json +1 -1
- package/esm2020/lib/elements/flow-tool/flow-tool.component.mjs +0 -75
- package/esm2020/lib/elements/gh-control/gh-control.component.mjs +0 -107
- package/lib/elements/flow-tool/flow-tool.component.d.ts +0 -28
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lowcodeunit-applications-flow-common.mjs","sources":["../../../projects/common/src/lib/models/form.values.model.ts","../../../projects/common/src/lib/services/forms.service.ts","../../../projects/common/src/lib/services/applications-flow.service.ts","../../../projects/common/src/lib/services/project.service.ts","../../../projects/common/src/lib/state/applications-flow-state.context.ts","../../../projects/common/src/lib/state/applications-flow.state.ts","../../../projects/common/src/lib/services/eac.service.ts","../../../projects/common/src/lib/elements/projects/controls/project-items/project-items.component.ts","../../../projects/common/src/lib/elements/projects/controls/project-items/project-items.component.html","../../../projects/common/src/lib/elements/projects/controls/header/header.component.ts","../../../projects/common/src/lib/elements/projects/controls/header/header.component.html","../../../projects/common/src/lib/models/card-form-config.model.ts","../../../projects/common/src/lib/elements/form-card/form-card.component.ts","../../../projects/common/src/lib/elements/form-card/form-card.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/domains/domains.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/domains/domains.component.html","../../../projects/common/src/lib/models/dynamic-tabs.model.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/general.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/general.component.html","../../../projects/common/src/lib/elements/projects/controls/forms/source-control/source-control.component.ts","../../../projects/common/src/lib/elements/projects/controls/forms/source-control/source-control.component.html","../../../projects/common/src/lib/services/npm.service.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.html","../../../projects/common/src/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.ts","../../../projects/common/src/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/devops/devops.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/devops/devops.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.html","../../../projects/common/src/lib/elements/dynamic-tabs/dynamic-tabs.component.ts","../../../projects/common/src/lib/elements/dynamic-tabs/dynamic-tabs.component.html","../../../projects/common/src/lib/elements/projects/controls/project-tabs/project-tabs.component.ts","../../../projects/common/src/lib/elements/projects/controls/project-tabs/project-tabs.component.html","../../../projects/common/src/lib/elements/projects/projects.component.ts","../../../projects/common/src/lib/elements/projects/projects.component.html","../../../projects/common/src/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.ts","../../../projects/common/src/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.html","../../../projects/common/src/lib/elements/projects/controls/builds/builds.component.ts","../../../projects/common/src/lib/elements/projects/controls/builds/builds.component.html","../../../projects/common/src/lib/elements/projects/controls/recent-activities/recent-activities.component.ts","../../../projects/common/src/lib/elements/projects/controls/recent-activities/recent-activities.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.html","../../../projects/common/src/lib/elements/base-form/base-form.component.ts","../../../projects/common/src/lib/elements/base-form/base-form.component.html","../../../projects/common/src/lib/models/base-form-config.model.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.html","../../../projects/common/src/lib/elements/projects/controls/git-auth/git-auth.component.ts","../../../projects/common/src/lib/elements/projects/controls/git-auth/git-auth.component.html","../../../projects/common/src/lib/elements/flow-tool/flow-tool.component.ts","../../../projects/common/src/lib/elements/flow-tool/flow-tool.component.html","../../../projects/common/src/lib/elements/three-column/three-column.component.ts","../../../projects/common/src/lib/elements/three-column/three-column.component.html","../../../projects/common/src/lib/elements/slotted-card/slotted-card.component.ts","../../../projects/common/src/lib/elements/slotted-card/slotted-card.component.html","../../../projects/common/src/lib/dialogs/upgrade-dialog/upgrade-dialog.component.ts","../../../projects/common/src/lib/dialogs/upgrade-dialog/upgrade-dialog.component.html","../../../projects/common/src/lib/elements/project-info-card/project-info-card.component.ts","../../../projects/common/src/lib/elements/project-info-card/project-info-card.component.html","../../../projects/common/src/lib/elements/analytics-card/analytics-card.component.ts","../../../projects/common/src/lib/elements/analytics-card/analytics-card.component.html","../../../projects/common/src/lib/elements/feed-card-sm/feed-card-sm.component.ts","../../../projects/common/src/lib/elements/feed-card-sm/feed-card-sm.component.html","../../../projects/common/src/lib/controls/edit-application-form/edit-application-form.component.ts","../../../projects/common/src/lib/controls/edit-application-form/edit-application-form.component.html","../../../projects/common/src/lib/controls/processor-details-form/processor-details-form.component.ts","../../../projects/common/src/lib/controls/processor-details-form/processor-details-form.component.html","../../../projects/common/src/lib/dialogs/new-application-dialog/new-application-dialog.component.ts","../../../projects/common/src/lib/dialogs/new-application-dialog/new-application-dialog.component.html","../../../projects/common/src/lib/elements/gh-control/gh-control.component.ts","../../../projects/common/src/lib/elements/gh-control/gh-control.component.html","../../../projects/common/src/lib/controls/devops-source-control-form/devops-source-control-form.component.ts","../../../projects/common/src/lib/controls/devops-source-control-form/devops-source-control-form.component.html","../../../projects/common/src/lib/dialogs/source-control-dialog/source-control-dialog.component.ts","../../../projects/common/src/lib/dialogs/source-control-dialog/source-control-dialog.component.html","../../../projects/common/src/lib/elements/main-feed-card/main-feed-card.component.ts","../../../projects/common/src/lib/elements/main-feed-card/main-feed-card.component.html","../../../projects/common/src/lib/elements/two-column-header/two-column-header.component.ts","../../../projects/common/src/lib/elements/two-column-header/two-column-header.component.html","../../../projects/common/src/lib/elements/card-carousel/card-carousel.component.ts","../../../projects/common/src/lib/elements/card-carousel/card-carousel.component.html","../../../projects/common/src/lib/controls/security-toggle/security-toggle.component.ts","../../../projects/common/src/lib/controls/security-toggle/security-toggle.component.html","../../../projects/common/src/lib/controls/source-control-form/source-control-form.component.ts","../../../projects/common/src/lib/controls/source-control-form/source-control-form.component.html","../../../projects/common/src/lib/controls/build-pipeline-form/build-pipeline-form.component.ts","../../../projects/common/src/lib/controls/build-pipeline-form/build-pipeline-form.component.html","../../../projects/common/src/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.ts","../../../projects/common/src/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.html","../../../projects/common/src/lib/elements/breadcrumb/breadcrumb.component.ts","../../../projects/common/src/lib/elements/breadcrumb/breadcrumb.component.html","../../../projects/common/src/lib/dialogs/custom-domain-dialog/custom-domain-dialog.component.ts","../../../projects/common/src/lib/dialogs/custom-domain-dialog/custom-domain-dialog.component.html","../../../projects/common/src/lib/dialogs/edit-application-dialog/edit-application-dialog.component.ts","../../../projects/common/src/lib/dialogs/edit-application-dialog/edit-application-dialog.component.html","../../../projects/common/src/lib/dialogs/processor-details-dialog/processor-details-dialog.component.ts","../../../projects/common/src/lib/dialogs/processor-details-dialog/processor-details-dialog.component.html","../../../projects/common/src/lib/elements/skeleton-feed-card/skeleton-feed-card.component.ts","../../../projects/common/src/lib/elements/skeleton-feed-card/skeleton-feed-card.component.html","../../../projects/common/src/lib/controls/emulated-devices-toggle/emulated-devices-toggle.component.ts","../../../projects/common/src/lib/controls/emulated-devices-toggle/emulated-devices-toggle.component.html","../../../projects/common/src/lib/state/iot-ensemble.state.ts","../../../projects/common/src/lib/services/iot-ensemble.service.ts","../../../projects/common/src/lib/applications-flow.module.ts","../../../projects/common/src/lib/models/project-actions.model.ts","../../../projects/common/src/lib/models/user-feed.model.ts","../../../projects/common/src/lib/models/actions.model.ts","../../../projects/common/src/lib/models/form-actions.model.ts","../../../projects/common/src/lib/models/dev-settings-preset.model.ts","../../../projects/common/src/lib/models/domain.model.ts","../../../projects/common/src/lib/models/form.model.ts","../../../projects/common/src/lowcodeunit-applications-flow-common.ts"],"sourcesContent":["/**\n * Model for form values\n * \n */\n export class FormValuesModel {\n /**\n * Form ID\n */\n public Id: string;\n\n /**\n * Form values\n */\n public Values: object;\n\n constructor(id: string, values: object) {\n this.Id = id;\n this.Values = values;\n }\n}","import { FormValuesModel } from './../models/form.values.model';\nimport { FormModel } from './../models/form.model';\nimport { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n })\n\nexport class FormsService {\n\n /**\n * List of forms\n */\n private _form: FormModel;\n public set Form(val: FormModel) {\n\n if (!val) { return; }\n\n this._form = val;\n this.forms.push(val);\n this.createValuesReference(val);\n }\n\n public get Form(): FormModel {\n return this._form;\n }\n\n /**\n * When any form is being edited\n */\n public FormIsDirty: Subject<boolean>;\n\n protected forms: Array<FormModel>;\n\n /**\n * Storage reference for intial form values\n */\n // public formsInitialValues: Array<FormModel>;\n protected previousFormValues: Array<FormValuesModel>;\n\n /**\n * \n * @param val as string - enabled form name\n * @param val as boolen - enable/disable all forms\n * \n * Enable / disable forms, use this when a form is being edited and \n * all other forms need to be disabled\n */\n public DisableForms(val: string | boolean): void {\n\n const preventEvent: {onlySelf: boolean, emitEvent: boolean} = { onlySelf: true, emitEvent: false };\n\n this.forms.forEach((form: FormModel) => {\n\n if (typeof val === 'boolean') {\n val ? form.Form.disable(preventEvent) : form.Form.enable(preventEvent);\n } else {\n if (form.Id === val) {\n form.Form.enable(preventEvent);\n } else {\n form.Form.disable(preventEvent);\n }\n }\n });\n }\n\n\n /**\n * Create a reference of initial form data\n * Use this to compare if values really changed, because\n * the user could change values back to the original\n *\n * @param obj form data\n */\n protected createValuesReference(val: FormModel): void {\n\n // const values: Array<{key: string, value: string}> = [];\n const keyValues: object = {};\n\n for (const [key, value] of Object.entries(val.Form.controls)) {\n\n // values.push({key, value: value.value});\n keyValues[key] = value.value;\n }\n\n // this.formsValues.push(new FormValuesModel(val.Id, val.Form.value));\n this.previousFormValues.push(new FormValuesModel(val.Id, keyValues));\n }\n\n /**\n * Update value reference after saves\n * \n * @param val form model with values\n */\n public UpdateValuesReference(val: FormModel): void {\n\n const index: number = this.previousFormValues.findIndex((x: FormValuesModel) => {\n return x.Id === val.Id;\n });\n\n this.previousFormValues[index].Values = val.Form.value;\n\n // TODO: look at consolidating updating this.forms and this.previousFormValues - shannon (7-14-21)\n const formIndex: number = this.forms.findIndex((x: FormModel) => {\n return x.Id === val.Id;\n });\n\n this.forms[formIndex] = val;\n }\n\n /**\n * Reset form values back to previous \n * \n * @param id form id\n */\n public ResetFormValues(id: string): void {\n this.forms.find((form: FormModel) => {\n if (form.Id === id) {\n form.Form.patchValue(this.GetPreviousFormValues(id).Values);\n }\n });\n }\n\n /**\n * \n * @param id form id to search for\n *\n * @returns previous form values\n */\n public GetPreviousFormValues(id: string): FormValuesModel {\n return this.previousFormValues.find((x: FormValuesModel) => {\n return x.Id === id;\n });\n }\n\n /**\n * Check for actual form changes, because the user\n * could have canceled or changed the value back to the\n * original\n *\n * @param id form id\n * @param formToCheck form to be tested\n */\n public ForRealThough(id: string, formToCheck: FormGroup): boolean {\n\n const formVals: FormValuesModel = this.previousFormValues.find((x: FormValuesModel) => {\n return x.Id === id;\n });\n\n for (const key in formToCheck.controls) {\n if (formToCheck.controls[key].value !== formVals.Values[key]) {\n this.FormIsDirty.next(true);\n return true;\n }\n }\n\n this.FormIsDirty.next(false);\n return false;\n }\n\n constructor() {\n this.forms = [];\n this.previousFormValues = [];\n this.FormIsDirty = new Subject();\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { LCUServiceSettings } from '@lcu/common';\r\nimport { Observable } from 'rxjs';\r\nimport { EnterpriseAsCode } from '@semanticjs/common';\r\nimport { UnpackLowCodeUnitRequest } from '../state/applications-flow.state';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApplicationsFlowService {\r\n // Fields\r\n protected apiRoot: string;\r\n\r\n // Properties\r\n\r\n // Constructors\r\n constructor(\r\n protected http: HttpClient,\r\n protected settings: LCUServiceSettings\r\n ) {\r\n this.apiRoot = settings.APIRoot;\r\n }\r\n\r\n // API Methods\r\n public ConfigureDevOpsAction(actionLookup: string): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/manage/devops/actions/${actionLookup}/configure`,\r\n {},\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public CreateRepository(\r\n organization: string,\r\n repoName: string\r\n ): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/github/organizations/${organization}/repositories`,\r\n {\r\n Name: repoName,\r\n },\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public DeleteApplication(appLookup: string): Observable<object> {\r\n return this.http.delete(\r\n `${this.apiRoot}/api/lowcodeunit/manage/applications/${appLookup}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public DeleteDevOpsAction(doaLookup: string): Observable<object> {\r\n return this.http.delete(\r\n `${this.apiRoot}/api/lowcodeunit/manage/devops-actions/${doaLookup}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public DeleteProject(projectLookup: string): Observable<object> {\r\n return this.http.delete(\r\n `${this.apiRoot}/api/lowcodeunit/manage/projects/${projectLookup}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public DeleteSourceControl(scLookup: string): Observable<object> {\r\n return this.http.delete(\r\n `${this.apiRoot}/api/lowcodeunit/manage/source-controls/${scLookup}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public EnsureUserEnterprise(): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/manage/enterprise/ensure`,\r\n {},\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public GetActiveEnterprise(): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/manage/enterprises/active`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public HasValidConnection(): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/github/connection/valid`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public ListProjects(): Observable<object> {\r\n return this.http.get(`${this.apiRoot}/api/lowcodeunit/manage/projects`, {\r\n headers: this.loadHeaders(),\r\n });\r\n }\r\n\r\n public ListBranches(\r\n organization: string,\r\n repository: string\r\n ): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/github/organizations/${organization}/repositories/${repository}/branches`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public ListBuildPaths(\r\n organization: string,\r\n repository: string,\r\n branch: string = ''\r\n ): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/github/organizations/${organization}/repositories/${repository}/build-paths?branch=${branch}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public ListEnterprises(): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/manage/enterprises/list`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public ListOrganizations(): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/github/organizations`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public ListRepositories(organization: string): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/github/organizations/${organization}/repositories`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public LoadEnterpriseAsCode(): Observable<object> {\r\n return this.http.get(`${this.apiRoot}/api/lowcodeunit/manage/eac`, {\r\n headers: this.loadHeaders(),\r\n });\r\n }\r\n\r\n // public LoadProjectHostingDetails(\r\n // organization: string,\r\n // repository: string,\r\n // branch: string\r\n // ): Observable<object> {\r\n // branch = encodeURIComponent(branch);\r\n\r\n // return this.http.get(\r\n // `${this.apiRoot}/api/lowcodeunit/manage/projects/organizations/${organization}/repositories/${repository}/branches/${branch}/hosting/details`,\r\n // {\r\n // headers: this.loadHeaders(),\r\n // }\r\n // );\r\n // }\r\n\r\n public LoadProjectHostingDetails(): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/manage/projects/hosting/details`,\r\n\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public SaveEnterpriseAsCode(eac: EnterpriseAsCode): Observable<object> {\r\n return this.http.post(`${this.apiRoot}/api/lowcodeunit/manage/eac`, eac, {\r\n headers: this.loadHeaders(),\r\n });\r\n }\r\n\r\n public SetActiveEnterprise(activeEntLookup: string): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/manage/enterprises/active`,\r\n {\r\n ActiveEnterpriseLookup: activeEntLookup,\r\n },\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public UnpackLowCodeUnit(req: UnpackLowCodeUnitRequest): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/manage/projects/unpack`,\r\n req,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public LoadUserFeed(\r\n page: number,\r\n pageSize: number,\r\n project: string,\r\n applications: string[]\r\n ): Observable<object> {\r\n var apps = JSON.stringify(applications || []);\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/userfeed?page=${page}&pageSize=${pageSize}&project=${project}&applications=${apps}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n // Helpers\r\n protected loadHeaders(): { [header: string]: string | string[] } {\r\n return {};\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { BaseModeledResponse, BaseResponse, Status } from '@lcu/common';\nimport { debug } from 'console';\nimport { EaCApplicationAsCode, EaCProjectAsCode, EnterpriseAsCode } from '@semanticjs/common';\nimport {\n ApplicationsFlowState,\n GitHubWorkflowRun,\n UnpackLowCodeUnitRequest,\n} from '../state/applications-flow.state';\nimport { ApplicationsFlowService } from './applications-flow.service';\nimport { FeedItem, UserFeedResponse } from '../models/user-feed.model';\nimport { ActivatedRoute } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProjectService {\n public CreatingProject: boolean;\n\n public EditingProjectLookup: string;\n\n constructor(\n protected appsFlowSvc: ApplicationsFlowService,\n protected activatedRoute: ActivatedRoute\n ) {}\n\n // public CreateRepository(state: ApplicationsFlowState, org: string, repoName: string): void {\n // state.GitHub.Loading = true;\n\n // this.appsFlowSvc\n // .CreateRepository(org, repoName)\n // .subscribe((response: BaseResponse) => {\n // if (response.Status.Code === 0) {\n // this.listRepositories(repoName);\n\n // state.GitHub.CreatingRepository = false;\n // } else {\n // // TODO: Need to surface an error to the user...\n\n // state.GitHub.Loading = false;\n // }\n // });\n // }\n\n public async DeleteApplication(\n state: ApplicationsFlowState,\n appLookup: string\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.DeleteApplication(appLookup).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(eac);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public DeleteDevOpsAction(\n state: ApplicationsFlowState,\n doaLookup: string\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.DeleteDevOpsAction(doaLookup).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(eac);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public DeleteProject(\n state: ApplicationsFlowState,\n projectLookup: string\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.DeleteProject(projectLookup).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(eac);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public DeleteSourceControl(\n state: ApplicationsFlowState,\n scLookup: string\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.DeleteSourceControl(scLookup).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(eac);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public EnsureUserEnterprise(\n state: ApplicationsFlowState\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.EnsureUserEnterprise().subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(eac);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public GenerateRoutedApplications(applications: { [lookup: string]: EaCApplicationAsCode }, state: ApplicationsFlowState): {\n [route: string]: { [lookup: string]: EaCApplicationAsCode };\n } {\n const appLookups = Object.keys(applications);\n\n const apps = appLookups.map((appLookup) => applications[appLookup]);\n\n let appRoutes =\n apps.map((app) => {\n return app?.LookupConfig?.PathRegex.replace('.*', '');\n }) || [];\n\n appRoutes = appRoutes.filter((ar) => ar != null);\n\n let routeBases: string[] = [];\n\n appRoutes.forEach((appRoute) => {\n const appRouteParts = appRoute.split('/');\n\n const appRouteBase = `/${appRouteParts[1]}`;\n\n if (routeBases.indexOf(appRouteBase) < 0) {\n routeBases.push(appRouteBase);\n }\n });\n\n let workingAppLookups = [...(appLookups || [])];\n\n routeBases = routeBases.sort((a, b) => b.localeCompare(a));\n\n const routeSet =\n routeBases.reduce((prevRouteMap, currentRouteBase) => {\n const routeMap = {\n ...prevRouteMap,\n };\n\n const filteredAppLookups = workingAppLookups.filter((wal) => {\n const wa = applications[wal];\n\n return wa?.LookupConfig?.PathRegex.startsWith(currentRouteBase);\n });\n\n routeMap[currentRouteBase] =\n filteredAppLookups.reduce((prevAppMap, appLookup) => {\n const appMap = {\n ...prevAppMap,\n };\n\n appMap[appLookup] = applications[appLookup];\n\n return appMap;\n }, {}) || {};\n\n workingAppLookups = workingAppLookups.filter((wa) => {\n return filteredAppLookups.indexOf(wa) < 0;\n });\n\n return routeMap;\n }, {}) || {};\n\n let routeSetKeys = Object.keys(routeSet);\n\n routeSetKeys = routeSetKeys.sort((a, b) => a.localeCompare(b));\n\n const routeSetResult = {};\n\n routeSetKeys.forEach((rsk) => (routeSetResult[rsk] = routeSet[rsk]));\n\n return routeSetResult;\n }\n\n public async GetActiveEnterprise(\n state: ApplicationsFlowState\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n state.LoadingActiveEnterprise = true;\n\n this.appsFlowSvc.GetActiveEnterprise().subscribe(\n async (\n response: BaseModeledResponse<{ Name: string; Lookup: string }>\n ) => {\n state.LoadingActiveEnterprise = false;\n\n if (response.Status.Code === 0) {\n state.ActiveEnterpriseLookup = response.Model?.Lookup;\n\n resolve();\n } else {\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.LoadingActiveEnterprise = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public HasValidConnection(\n state: ApplicationsFlowState,\n forceEnsureUser: boolean = false\n ): Promise<EnterpriseAsCode> {\n return new Promise(async (resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.HasValidConnection().subscribe(\n async (response: BaseResponse) => {\n state.GitHub.HasConnection = response.Status.Code === 0;\n\n if (state.GitHub.HasConnection || forceEnsureUser) {\n } else {\n }\n\n resolve({});\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public async ListEnterprises(state: ApplicationsFlowState): Promise<any[]> {\n return new Promise((resolve, reject) => {\n state.LoadingEnterprises = true;\n\n this.appsFlowSvc.ListEnterprises().subscribe(\n async (response: BaseModeledResponse<Array<any>>) => {\n state.LoadingEnterprises = false;\n\n if (response.Status.Code === 0) {\n state.Enterprises = response.Model;\n\n resolve(response.Model);\n } else {\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.LoadingEnterprises = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public LoadEnterpriseAsCode(\n state: ApplicationsFlowState\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.LoadEnterpriseAsCode().subscribe(\n (response: BaseModeledResponse<EnterpriseAsCode>) => {\n state.Loading = false;\n\n if (response.Status.Code === 0) {\n state.EaC = response.Model || {};\n } else if (response.Status.Code === 3) {\n }\n\n state.EaC = state.EaC || {};\n\n this.CreatingProject =\n Object.keys(state?.EaC?.Projects || {}).length <= 0;\n\n resolve(state.EaC);\n\n console.log(state);\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public async LoadUserFeed(\n page: number,\n pageSize: number,\n state: ApplicationsFlowState\n ): Promise<Array<FeedItem>> {\n return new Promise((resolve, reject) => {\n state.LoadingFeed = true;\n\n let paramMap = this.activatedRoute.snapshot.children[0].paramMap;\n\n let result = this.loadApplicationsForFeed(state, paramMap);\n \n this.appsFlowSvc\n .LoadUserFeed(page, pageSize, result.Project, result.Applications)\n .subscribe(\n async (response: UserFeedResponse) => {\n state.LoadingFeed = false;\n\n if (response.Status.Code === 0) {\n state.Feed = response.Items;\n\n state.FeedSourceControlLookups = response.SourceControlLookups;\n // console.log(\"ITEMZ: \", response.Items)\n\n resolve(response.Items);\n } else {\n reject(response.Status);\n }\n },\n (err) => {\n state.LoadingFeed = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public async SetActiveEnterprise(\n state: ApplicationsFlowState,\n activeEntLookup: string\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n state.LoadingFeed = true;\n\n this.appsFlowSvc.SetActiveEnterprise(activeEntLookup).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n this.EditingProjectLookup = null;\n\n console.log('project service active ent: ', activeEntLookup);\n\n state.ActiveEnterpriseLookup = activeEntLookup;\n\n console.log(\n 'project service State active ent: ',\n state.ActiveEnterpriseLookup\n );\n\n var results = await Promise.all([\n this.LoadEnterpriseAsCode(state),\n this.LoadUserFeed(1, 25, state),\n ]);\n\n resolve(results[0]);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public async SaveEnterpriseAsCode(\n state: ApplicationsFlowState,\n eac: EnterpriseAsCode\n ): Promise<Status> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.SaveEnterpriseAsCode(eac).subscribe(\n async (response: BaseModeledResponse<string>) => {\n if (response.Status.Code === 0) {\n var results = await Promise.all([\n this.LoadEnterpriseAsCode(state),\n this.LoadUserFeed(1, 25, state),\n ]);\n\n resolve(response.Status);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public SetCreatingProject(creatingProject: boolean): void {\n this.CreatingProject = creatingProject;\n\n this.EditingProjectLookup = null;\n }\n\n public SetEditProjectSettings(\n state: ApplicationsFlowState,\n projectLookup: string\n ): Promise<any> {\n return new Promise((resolve, reject) => {\n if (projectLookup != null) {\n state.Loading = false;\n\n this.EditingProjectLookup = null;\n\n setTimeout(() => {\n this.EditingProjectLookup = projectLookup;\n\n resolve({});\n }, 0);\n\n this.CreatingProject = false;\n\n console.log(state);\n } else {\n state.Loading = false;\n\n this.EditingProjectLookup = projectLookup;\n\n this.CreatingProject = false;\n\n resolve({});\n }\n });\n }\n\n public ToggleCreateProject(): void {\n this.SetCreatingProject(!this.CreatingProject);\n }\n\n public UnpackLowCodeUnit(\n state: ApplicationsFlowState,\n req: UnpackLowCodeUnitRequest\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.UnpackLowCodeUnit(req).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(eac);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n // Helpers\n protected loadApplicationsForFeed(state: ApplicationsFlowState, paramMap: any) {\n // this.activatedRoute.paramMap.subscribe(async (paramMap) => {\n var project = paramMap.get('projectLookup') || '';\n\n var route = paramMap.get('appRoute');\n\n var application = paramMap.get('appLookup');\n\n var applications: string[] = [];\n\n if (application) {\n applications.push(application);\n } else if (route && project) {\n const apps: { [lookup: string]: EaCApplicationAsCode } = {};\n\n state.EaC.Projects[project].ApplicationLookups.forEach(\n (appLookup: string) => {\n apps[appLookup] = state.EaC.Applications[appLookup];\n }\n );\n\n var routedApps = this.GenerateRoutedApplications(apps, state);\n\n var currentApps = routedApps[route];\n\n applications = Object.keys(currentApps) || [];\n }\n\n return {\n Applications: applications,\n Project: project,\n };\n // });\n }\n\n}\n","import { Injectable, Injector } from '@angular/core';\r\nimport { StateContext } from '@lcu/common';\r\nimport { ApplicationsFlowState } from './applications-flow.state';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApplicationsFlowStateContext extends StateContext<ApplicationsFlowState> {\r\n\r\n // Constructors\r\n constructor(protected injector: Injector) {\r\n super(injector);\r\n }\r\n\r\n\r\n // API Methods\r\n public AddApplication(): void {\r\n this.Execute({\r\n Arguments: {\r\n },\r\n Type: 'AddApplication'\r\n });\r\n }\r\n\r\n // Helpers\r\n protected defaultValue(): ApplicationsFlowState {\r\n return { Loading: true } as ApplicationsFlowState;\r\n }\r\n\r\n protected loadStateKey(): string {\r\n return 'main';\r\n }\r\n\r\n protected loadStateName(): string {\r\n return 'lcu';\r\n }\r\n}\r\n","import { EnterpriseAsCode } from '@semanticjs/common';\r\nimport { FeedItem } from '../models/user-feed.model';\r\n\r\nexport class ApplicationsFlowState {\r\n public ActiveEnterpriseLookup?: string;\r\n\r\n public EaC?: EnterpriseAsCode;\r\n\r\n public Enterprises?: Array<{ Name: string; Lookup: string }>;\r\n\r\n public Feed?: Array<FeedItem>;\r\n\r\n public FeedSourceControlLookups?: Array<string>;\r\n\r\n public GitHub?: GitHubSetupState;\r\n\r\n public HostingDetails?: ProjectHostingDetails;\r\n\r\n public Loading?: boolean;\r\n\r\n public LoadingActiveEnterprise?: boolean;\r\n\r\n public LoadingEnterprises?: boolean;\r\n \r\n public LoadingFeed?: boolean;\r\n\r\n // public Projects?: ProjectState[];\r\n\r\n public Unleashed?: boolean;\r\n\r\n public UserEnterpriseLookup?: string;\r\n\r\n constructor() {\r\n this.GitHub = {};\r\n\r\n this.HostingDetails = {};\r\n\r\n this.Loading = true;\r\n\r\n this.LoadingActiveEnterprise = true;\r\n\r\n this.LoadingEnterprises = true;\r\n\r\n this.LoadingFeed = true;\r\n\r\n // this.Projects = [];\r\n }\r\n}\r\n\r\n// export class ProjectState {\r\n// public ActionsSet?: { [id: string]: DevOpsAction };\r\n\r\n// public Applications?: ApplicationState[];\r\n\r\n// public Description?: string;\r\n\r\n// public Host?: string;\r\n\r\n// public ID?: string;\r\n\r\n// public Image?: string;\r\n\r\n// public LCUs?: GitHubLowCodeUnit[];\r\n\r\n// public Name?: string;\r\n\r\n// public PreventInheritedApplications?: boolean;\r\n\r\n// public Runs?: GitHubWorkflowRun[];\r\n// }\r\n\r\n// export class ApplicationState {\r\n// public IsPrivate?: boolean;\r\n\r\n// public Name?: string;\r\n\r\n// public Organization?: string;\r\n\r\n// public PathRegex?: string;\r\n\r\n// public Priority?: number;\r\n\r\n// public Repository?: string;\r\n\r\n// public Version?: string;\r\n// }\r\n\r\nexport class GitHubSetupState {\r\n public BranchOptions?: GitHubBranch[];\r\n\r\n public CreatingRepository?: boolean;\r\n\r\n public HasConnection?: boolean;\r\n\r\n public Loading?: boolean;\r\n\r\n public OrganizationOptions?: GitHubOrganization[];\r\n\r\n public RepositoryOptions?: GitHubRepository[];\r\n}\r\n\r\nexport class GitHubBranch {\r\n public Name?: string;\r\n}\r\n\r\n// export class GitHubLowCodeUnit {\r\n// public Branch?: string;\r\n\r\n// public ID?: string;\r\n\r\n// public Lookup?: string;\r\n\r\n// public Organization?: string;\r\n\r\n// public Repository?: string;\r\n// }\r\n\r\nexport class GitHubOrganization {\r\n public Name?: string;\r\n}\r\n\r\nexport class GitHubRepository {\r\n public CloneURL?: string;\r\n\r\n public Name?: string;\r\n}\r\n\r\nexport class GitHubWorkflowRun {\r\n public Conclusion?: string;\r\n\r\n public CreatedAt?: string;\r\n\r\n public ID?: string;\r\n\r\n public LCUID?: string;\r\n\r\n public RunNumber?: number;\r\n\r\n public Status?: string;\r\n\r\n public Workflow?: string;\r\n\r\n public UpdatedAt?: string;\r\n}\r\n\r\nexport class UnpackLowCodeUnitRequest {\r\n public ApplicationLookup?: string;\r\n\r\n public ApplicationName?: string;\r\n\r\n public Version?: string;\r\n}\r\n\r\n// export class DevOpsAction {\r\n// public Details?: string;\r\n\r\n// public ID?: string;\r\n\r\n// public Name?: string;\r\n\r\n// public Overwrite?: boolean;\r\n\r\n// public Path?: string;\r\n\r\n// public Template?: string;\r\n// }\r\n\r\nexport class ProjectHostingDetails {\r\n public HostingOptions?: ProjectHostingOption[];\r\n\r\n public Loading?: boolean;\r\n}\r\n\r\nexport class ProjectHostingOption {\r\n public ArtifactType?: string;\r\n\r\n public Description?: string;\r\n\r\n public Image?: string;\r\n\r\n public Inputs?: ProjectHostingOptionInput[];\r\n\r\n public Lookup?: string;\r\n\r\n public Name?: string;\r\n\r\n public Path?: string;\r\n\r\n public Templates?: string[];\r\n}\r\n\r\nexport class ProjectHostingOptionInput {\r\n public DefaultValue?: string;\r\n\r\n public Hint?: string;\r\n\r\n public Lookup?: string;\r\n\r\n public Placeholder?: string;\r\n\r\n public Required?: boolean;\r\n}\r\n\r\n// export class EstablishProjectRequest {\r\n// public Branch?: string;\r\n\r\n// public BuildScript?: string;\r\n\r\n// public HostingOption?: string;\r\n\r\n// public Organization?: string;\r\n\r\n// public OutputFolder?: string;\r\n\r\n// public ProjectName?: string;\r\n\r\n// public Repository?: string;\r\n// }\r\n","import { Injectable } from '@angular/core';\nimport { ProjectService } from './project.service';\nimport {\n ApplicationsFlowState,\n UnpackLowCodeUnitRequest,\n} from '../state/applications-flow.state';\nimport {\n EaCApplicationAsCode,\n EaCDataToken,\n EaCDFSModifier,\n EaCEnvironmentAsCode,\n EaCHost,\n EaCProjectAsCode,\n EnterpriseAsCode,\n} from '@semanticjs/common';\nimport { FeedItem } from '../models/user-feed.model';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseModeledResponse, Status } from '@lcu/common';\nimport { Observable } from 'rxjs';\n\nexport class SaveApplicationAsCodeEventRequest {\n public Application?: EaCApplicationAsCode;\n\n public ApplicationLookup?: string;\n\n public ProjectLookup?: string;\n}\n\nexport class SaveDFSModifierEventRequest {\n public Modifier: EaCDFSModifier;\n\n public ModifierLookup: string;\n\n public ProjectLookup?: string;\n}\n\nexport class SaveEnvironmentAsCodeEventRequest {\n public EnterpriseDataTokens?: { [lookup: string]: EaCDataToken };\n\n public Environment?: EaCEnvironmentAsCode;\n\n public EnvironmentLookup?: string;\n}\n\nexport class SaveProjectAsCodeEventRequest {\n public Project?: EaCProjectAsCode;\n\n public ProjectLookup?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EaCService {\n // Properties\n public get EditingProjectLookup(): string {\n return this.projectService.EditingProjectLookup;\n }\n\n public get CreatingProject(): boolean {\n return this.projectService.CreatingProject;\n }\n\n public State: ApplicationsFlowState;\n\n // Constructors\n constructor(protected projectService: ProjectService,\n protected http: HttpClient) {\n this.State = new ApplicationsFlowState();\n }\n\n // API Methods\n public CheckUserFeedItem(feedItem: FeedItem): Observable<object> {\n return this.http.get(feedItem.RefreshLink);\n }\n\n public async DeleteApplication(\n appLookup: string,\n appName: string\n ): Promise<void> {\n if (confirm(`Are you sure you want to delete application '${appName}'?`)) {\n await this.projectService.DeleteApplication(this.State, appLookup);\n }\n }\n\n public async DeleteDevOpsAction(doaLookup: string): Promise<void> {\n if (\n confirm(`Are you sure you want to delete DevOps action '${doaLookup}'?`)\n ) {\n await this.projectService.DeleteDevOpsAction(this.State, doaLookup);\n }\n }\n\n public async DeleteProject(projectLookup: string): Promise<void> {\n if (\n confirm(`Are you sure you want to delete Project '${projectLookup}'?`)\n ) {\n await this.projectService.DeleteProject(this.State, projectLookup);\n }\n }\n\n public async DeleteSourceControl(scLookup: string): Promise<void> {\n if (\n confirm(`Are you sure you want to delete Source Control '${scLookup}'?`)\n ) {\n await this.projectService.DeleteSourceControl(this.State, scLookup);\n }\n }\n\n // this.appsFlowEventsSvc.EnsureUserEnterpriseEvent.subscribe(async () => {\n // await this.projectService.EnsureUserEnterprise(this.State);\n // });\n\n public async EnsureUserEnterprise(): Promise<void> {\n await this.projectService.EnsureUserEnterprise(this.State);\n }\n\n public async GetActiveEnterprise(): Promise<void> {\n await this.projectService.GetActiveEnterprise(this.State);\n }\n\n public async LoadUserFeed(page: number, pageSize: number): Promise<void> {\n await this.projectService.LoadUserFeed(page, pageSize, this.State);\n }\n\n \n public GenerateRoutedApplications(applications: { [lookup: string]: EaCApplicationAsCode }): {\n [route: string]: { [lookup: string]: EaCApplicationAsCode };\n } {\n return this.projectService.GenerateRoutedApplications(applications, this.State);\n }\n\n public async HasValidConnection(): Promise<void> {\n await this.projectService.HasValidConnection(this.State);\n }\n\n public async ListEnterprises(): Promise<void> {\n await this.projectService.ListEnterprises(this.State);\n }\n\n public async LoadEnterpriseAsCode(): Promise<void> {\n await this.projectService.LoadEnterpriseAsCode(this.State);\n }\n\n public async SaveApplicationAsCode(\n req: SaveApplicationAsCodeEventRequest\n ): Promise<Status> {\n return await this.handleSaveApplication(req);\n }\n\n public async SaveDFSModifier(\n req: SaveDFSModifierEventRequest\n ): Promise<void> {\n await this.handleSaveDFSModifier(req);\n }\n\n public async SaveEnterpriseAsCode(eac: EnterpriseAsCode): Promise<Status> {\n return await this.projectService.SaveEnterpriseAsCode(this.State, eac);\n }\n\n public async SaveEnvironmentAsCode(\n req: SaveEnvironmentAsCodeEventRequest\n ): Promise<Status> {\n return await this.handleSaveEnvironment(req);\n }\n\n public async SaveProjectAsCode(\n req: SaveProjectAsCodeEventRequest\n ): Promise<void> {\n await this.handleSaveProject(req.ProjectLookup, req.Project);\n }\n\n public async SetActiveEnterprise(entLookup: any): Promise<void> {\n this.projectService.SetActiveEnterprise(this.State, entLookup);\n }\n\n public async SetCreatingProject(creatingProject: boolean): Promise<void> {\n this.projectService.SetCreatingProject(creatingProject);\n }\n\n public async SetEditProjectSettings(projectLookup: string): Promise<void> {\n await this.projectService.SetEditProjectSettings(this.State, projectLookup);\n }\n\n public async UnpackLowCodeUnit(req: UnpackLowCodeUnitRequest): Promise<void> {\n if (\n confirm(\n `Are you sure you want to unpack application '${req.ApplicationName}' with version '${req.Version}'?`\n )\n ) {\n await this.projectService.UnpackLowCodeUnit(this.State, req);\n }\n }\n\n // Helpers\n protected async handleSaveApplication(\n req: SaveApplicationAsCodeEventRequest\n ): Promise<Status> {\n const saveEaC: EnterpriseAsCode = {\n EnterpriseLookup: this.State.EaC.EnterpriseLookup,\n Applications: {},\n Projects: {},\n };\n\n const existingProj = {\n ...this.State.EaC.Projects[req.ProjectLookup],\n };\n\n if (existingProj.ApplicationLookups?.indexOf(req.ApplicationLookup) < 0) {\n if (!existingProj.ApplicationLookups) {\n existingProj.ApplicationLookups = [];\n }\n\n existingProj.ApplicationLookups.push(req.ApplicationLookup);\n\n saveEaC.Projects[req.ProjectLookup] = existingProj;\n }\n\n if (req.Application) {\n saveEaC.Applications[req.ApplicationLookup] = req.Application;\n }\n\n return await this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);\n }\n\n protected async handleSaveDFSModifier(\n req: SaveDFSModifierEventRequest\n ): Promise<void> {\n const saveEaC: EnterpriseAsCode = {\n EnterpriseLookup: this.State.EaC.EnterpriseLookup,\n Modifiers: {},\n Projects: {},\n };\n\n if (req.Modifier) {\n saveEaC.Modifiers[req.ModifierLookup] = req.Modifier;\n }\n\n if (req.ProjectLookup) {\n saveEaC.Projects[req.ProjectLookup] = {\n ModifierLookups: [req.ModifierLookup],\n };\n }\n\n await this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);\n }\n\n protected async handleSaveEnvironment(\n req: SaveEnvironmentAsCodeEventRequest\n ): Promise<Status> {\n const saveEaC: EnterpriseAsCode = {\n EnterpriseLookup: this.State?.EaC?.EnterpriseLookup,\n DataTokens: {},\n Environments: {},\n };\n\n if (req.Environment) {\n saveEaC.Environments[req.EnvironmentLookup] = req.Environment;\n }\n\n if (req.EnterpriseDataTokens) {\n saveEaC.DataTokens = req.EnterpriseDataTokens;\n }\n\n return await this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);\n \n }\n\n protected async handleSaveProject(\n projectLookup: string,\n project: EaCProjectAsCode\n ): Promise<Status> {\n const projHosts: { [lookup: string]: EaCHost } = {};\n\n project?.Hosts?.forEach((host) => {\n projHosts[host] = this.State.EaC.Hosts[host];\n });\n\n const saveEaC: EnterpriseAsCode = {\n EnterpriseLookup: this.State.EaC.EnterpriseLookup,\n Enterprise: {\n ...this.State.EaC.Enterprise,\n PrimaryHost: project.Hosts[0],\n },\n Hosts: projHosts,\n // Providers: this.State.EaC.Providers, // TODO: Remove after all providers ADB2C's have been upgraded\n Projects: {},\n };\n\n saveEaC.Projects[projectLookup] = project;\n\n let status = await this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);\n\n this.SetEditProjectSettings(projectLookup);\n\n return status;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { EaCService } from '../../../../services/eac.service';\nimport { EaCProjectAsCode } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-project-items',\n templateUrl: './project-items.component.html',\n styleUrls: ['./project-items.component.scss'],\n})\nexport class ProjectItemsComponent implements OnInit {\n // Fields\n\n // Properties\n public get ProjectLookups(): Array<string> {\n return Object.keys(this.Projects || {});\n }\n\n /**\n * List of projects\n */\n @Input('projects')\n public Projects: { [lookup: string]: EaCProjectAsCode };\n\n public PanelOpenState: boolean;\n\n @Input('selected-project-lookup')\n public SelectedProjectLookup: string;\n\n // Constructors\n constructor(protected eacSvc: EaCService) {}\n\n // Life Cycle\n public ngOnInit(): void {\n }\n\n // API Methods\n public DeleteProject(projectLookup: string, projectName: string): void {\n if (confirm(`Are you sure you want to delete project '${projectName}'?`)) {\n this.eacSvc.DeleteProject(projectLookup);\n }\n }\n\n public GetPrimaryHost(project: EaCProjectAsCode): string {\n return project.Hosts[project.Hosts.length - 1];\n }\n\n /**\n *\n * @param project Current project object\n *\n * Event to edit project settings\n */\n public ProjectSettings(projectLookup: string): void {\n this.eacSvc.SetEditProjectSettings(projectLookup);\n }\n\n //HELPERS\n}\n","<div\n [fxLayout]=\"SelectedProjectLookup ? 'row' : 'row wrap'\"\n [fxLayout.lt-md]=\"SelectedProjectLookup ? 'row' : 'column'\"\n>\n <div class=\"no-projects\" fxFlex=\"100%\" *ngIf=\"ProjectLookups?.length <= 0\">\n <!-- <h1 class=\"spread mat-display-1\">No projects configured</h1> -->\n\n <h2 class=\"spread mat-headline\">\n Create your first project to get started\n </h2>\n </div>\n \n <!-- [fxFlex]=\"SelectedProjectLookup ? '350px' : '30%'\"\n fxFlex.lt-md=\"100%\" vv-->\n <div\n \n *ngFor=\"let projectLookup of ProjectLookups\"\n class=\"card-container\"\n >\n <mat-card\n class=\"spread project-card\"\n fxLayout=\"column\"\n fxLayoutAlign=\"space-between\"\n [class.selected-project]=\"projectLookup == SelectedProjectLookup\"\n *ngIf=\"Projects[projectLookup]; let project\"\n >\n <mat-card-header>\n <img mat-card-avatar=\"/assets/images/project-icon.png\" />\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"project.Project.Description\"\n >\n {{ project.Project.Name }}\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\">\n <span class=\"mat-body-2\">{{ GetPrimaryHost(project) }}</span>\n </div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <a\n mat-icon-button\n href=\"https://{{ GetPrimaryHost(project) }}\"\n target=\"_blank\"\n \n >\n <mat-icon matTooltip=\"Launch\">launch</mat-icon>\n </a>\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"ProjectSettings(projectLookup)\"\n *ngIf=\"SelectedProjectLookup != projectLookup\"\n >\n <mat-icon matTooltip=\"Edit Project Settings\">settings</mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"ProjectSettings(null)\"\n *ngIf=\"SelectedProjectLookup == projectLookup\"\n >\n <mat-icon matTooltip=\"Edit Project Settings\">cancel</mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"DeleteProject(projectLookup, project.Project.Name)\"\n >\n <mat-icon matTooltip=\"Delete {{ project.Project.Name }}\">\n delete_forever\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n</div>\n","import { Component, Input, OnInit} from '@angular/core';\nimport { EaCService } from './../../../../services/eac.service';\nimport {\n EaCProjectAsCode,\n} from '@semanticjs/common';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { Guid, LCUServiceSettings } from '@lcu/common';\n\n@Component({\n selector: 'lcu-projects-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent implements OnInit {\n // Fields\n\n // Properties\n @Input('creating-project')\n public CreatingProject: boolean;\n\n public get HasProjects(): boolean {\n return this.ProjectLookups && this.ProjectLookups.length > 0;\n }\n\n public ProjectFormGroup: FormGroup;\n\n public get ProjectLookups(): Array<string> {\n return Object.keys(this.Projects || {});\n }\n\n public get ProjectName(): AbstractControl {\n return this.ProjectFormGroup.get('name');\n }\n\n @Input('projects')\n public Projects: { [lookup: string]: EaCProjectAsCode };\n\n @Input('selected-project-lookup')\n public SelectedProjectLookup: string;\n\n // Constructors\n public constructor(\n protected formBuilder: FormBuilder,\n protected lcuSettings: LCUServiceSettings,\n protected eacSvc: EaCService\n ) {}\n\n // Life Cycle\n public ngOnInit(): void {\n this.ProjectFormGroup = this.formBuilder.group({\n name: ['', Validators.required],\n });\n }\n\n // API Methods\n public CreateProject(): void {\n const proj: EaCProjectAsCode = {\n Project: {\n Name: this.ProjectName?.value,\n },\n Hosts: [`${Guid.CreateRaw()}-shared.lowcodeunit.com`],\n ModifierLookups: ['html-base', 'lcu-reg'],\n RelyingParty: {\n AccessConfigurations: {\n fathym: {\n AccessRightLookups: ['Fathym.Global.Admin', 'Fathym.User'],\n ProviderLookups: ['ADB2C'],\n Usernames: ['support@fathym.com', this.lcuSettings.User.Email],\n },\n },\n AccessRightLookups: ['Fathym.Global.Admin', 'Fathym.User'],\n DefaultAccessConfigurationLookup: 'fathym',\n TrustedProviderLookups: ['ADB2C'],\n },\n };\n\n this.eacSvc.SaveProjectAsCode({\n ProjectLookup: Guid.CreateRaw(),\n Project: proj,\n });\n }\n\n public EnableCreatingProject(): void {\n this.eacSvc.SetCreatingProject(true);\n }\n\n // Helpers\n}\n","<div\n [fxLayout]=\"HasProjects ? 'row' : 'column'\"\n fxLayout.lt-md=\"column\"\n fxLayoutAlign=\"center center\"\n>\n <div fxFlex=\"100%\" [class.has-selected]=\"SelectedProjectLookup\">\n <lcu-project-items\n [projects]=\"Projects\"\n [selected-project-lookup]=\"SelectedProjectLookup\"\n ></lcu-project-items>\n </div>\n <div fxFlex=\"250px\" fxFlex.lt-md=\"100%\">\n <div class=\"divider-fill-vert margin-y-4\"></div>\n\n <div class=\"extras\" [fxLayout]=\"HasProjects ? 'column' : 'row'\">\n <mat-card class=\"spread\" id=\"create-new-project-card\">\n <mat-card-header>\n <mat-card-title>Create New Project</mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <form\n [formGroup]=\"ProjectFormGroup\"\n (ngSubmit)=\"CreateProject()\"\n *ngIf=\"CreatingProject\"\n >\n <div class=\"margin-2\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n autofocus\n placeholder=\"Project Name\"\n formControlName=\"name\"\n required\n />\n </mat-form-field>\n\n <div>\n <button\n mat-fab\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"!ProjectFormGroup.valid\"\n >\n <mat-icon>save</mat-icon>\n </button>\n </div>\n </div>\n </form>\n\n <div *ngIf=\"!CreatingProject\">\n <a\n mat-fab\n color=\"accent\"\n href=\"/dashboard/create-project\"\n class=\"margin-top-4 margin-bottom-2\"\n >\n <mat-icon>add</mat-icon>\n </a>\n\n <!-- <button\n mat-fab\n color=\"accent\"\n (click)=\"EnableCreatingProject()\"\n class=\"margin-top-4 margin-bottom-2\"\n >\n <mat-icon>add</mat-icon>\n </button> -->\n </div>\n </mat-card-content>\n </mat-card>\n\n <!-- <mat-card class=\"spread\">\n <mat-card-header>\n <mat-card-title>Documentation</mat-card-title>\n </mat-card-header>\n \n <mat-card-content>\n <a\n mat-fab\n color=\"accent\"\n href=\"/docs\"\n target=\"_blank\"\n class=\"margin-top-4 margin-bottom-2\"\n >\n <mat-icon>description</mat-icon>\n </a>\n </mat-card-content>\n </mat-card> -->\n </div>\n </div>\n</div>\n\n<!-- <div class=\"divider-fill-vert\" [fxHide.lt-md]=\"true\"></div> -->\n\n<!-- Builds -->\n<!-- <div\n id=\"builds\"\n fxFlex.gt-xs=\"25\"\n fxLayout=\"column\"\n class=\"padding-top-3\"\n [ngClass.lt-sm]=\"'margin-bottom-2'\"\n [ngClass.gt-xs]=\"'margin-right-2'\"\n >\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n class=\"title margin-bottom-4\"\n >\n <mat-icon class=\"margin-right-2\">gavel</mat-icon>\n <span>Builds</span>\n </div>\n\n <lcu-builds [projects]=\"Projects\"> </lcu-builds>\n </div> -->\n\n<!-- <div class=\"divider-fill-vert\" fxShow [fxHide.lt-md]=\"true\"></div> -->\n\n<!-- Recent Activities -->\n<!-- <div\n id=\"recent\"\n fxLayout=\"column\"\n fxFlex.gt-xs=\"25\"\n class=\"padding-top-3\"\n >\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n class=\"title margin-bottom-4\"\n >\n <mat-icon class=\"margin-right-2\">list</mat-icon>\n\n <span>Recent Activities</span>\n </div>\n </div> -->\n","import { FormActionsModel } from './form-actions.model';\n\nexport class CardFormConfigModel {\n\n /**\n * Form button actions\n */\n public FormActions?: FormActionsModel;\n\n /**\n * Card title icon\n */\n public Icon: string;\n\n /**\n * Card title\n */\n public Title: string;\n\n /**\n * Card subtitle\n */\n public Subtitle: string;\n\n constructor(opts: CardFormConfigModel) {\n\n Object.assign(this, opts); // destructure values\n }\n}\n","import { FormGroup } from '@angular/forms';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { CardFormConfigModel } from '../../models/card-form-config.model';\nimport { FormActionsModel } from '../../models/form-actions.model';\n@Component({\n selector: 'lcu-form-card',\n templateUrl: './form-card.component.html',\n styleUrls: ['./form-card.component.scss']\n})\n\nexport class FormCardComponent implements OnInit {\n\n /**\n * Values for building out the card\n */\n @Input('config')\n public Config: CardFormConfigModel;\n\n /**\n * Disable everything\n */\n @Input('disabled')\n public Disabled: boolean;\n\n @Input('is-dirty')\n public IsDirty: boolean;\n\n /**\n * Form\n */\n @Input('form')\n public Form: FormGroup;\n\n constructor() {\n\n }\n\n ngOnInit(): void {\n }\n\n}\n","<div\n [ngClass]=\"Disabled ? 'form-disabled' : 'form-enabled'\">\n <mat-card>\n <mat-card-header>\n <div mat-card-avatar>\n <mat-icon\n color=\"accent\"\n class=\"title-icon\">\n {{ Config.Icon }}\n </mat-icon>\n </div>\n <mat-card-title\n class=\"paragraph-title\">\n {{ Config.Title }}\n </mat-card-title>\n <mat-card-subtitle\n class=\"plain-text\">\n {{ Config.Subtitle }}\n </mat-card-subtitle>\n </mat-card-header>\n <mat-card-content fxFlexFill class=\"margin-top-3\">\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"content\">\n </ng-container>\n </mat-card-content>\n <mat-card-actions>\n <div\n *ngIf=\"Config.FormActions && IsDirty\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\">\n <span class=\"mat-small caption-text\">{{ Config.FormActions.Message }}</span>\n <div fxLayoutAlign=\"end center\">\n <div\n *ngFor=\"let action of Config.FormActions?.Actions\"\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n class=\"margin-right-1\">\n <button\n [disabled]=\"Disabled || (action.Type === 'SAVE' && Form.invalid)\"\n color=\"{{ action.Color }}\"\n mat-flat-button (click)=\"action.ClickEvent()\">\n {{ action.Label }}\n </button>\n </div>\n </div>\n </div>\n </mat-card-actions>\n </mat-card>\n</div>\n","import { FormsService } from './../../../../../services/forms.service';\nimport { CardFormConfigModel } from './../../../../../models/card-form-config.model';\nimport { Component, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { EaCService } from '../../../../../services/eac.service';\nimport { EaCHost, EaCProjectAsCode } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-domains',\n templateUrl: './domains.component.html',\n styleUrls: ['./domains.component.scss'],\n})\nexport class DomainsComponent implements OnInit {\n /**\n * Card / Form Config\n */\n public Config: CardFormConfigModel;\n\n /**\n * FormGroup\n */\n public Form: FormGroup;\n\n /**\n * Form name\n */\n protected formName: string;\n\n /**\n * When form is dirty, ties into formsService.DisableForms\n */\n public IsDirty: boolean;\n\n /**\n * Access form control for root directory\n */\n public get Domain(): AbstractControl {\n return this.Form.get('domain');\n }\n\n @Input('data')\n public Data: {\n Hosts: { [lookup: string]: EaCHost };\n PrimaryHost: string;\n Project: EaCProjectAsCode;\n ProjectLookup: string;\n };\n\n public get Host(): EaCHost {\n return this.Data?.Hosts[this.HostLookup];\n }\n\n public get HostLookup(): string {\n // let hostKeys = Object.keys(this.Data?.Hosts || {});\n\n // hostKeys = hostKeys.filter(hk => hk.indexOf('|') < 0);\n\n // return hostKeys[0];\n return this.PrimaryHost;\n }\n\n public get HostDNSInstance(): string {\n return this.Host ? this.Host?.HostDNSInstance : null;\n }\n\n public get PrimaryHost(): string {\n return this.Data.PrimaryHost;\n }\n\n public get Project(): EaCProjectAsCode {\n return this.Data.Project;\n }\n\n public get ProjectLookup(): string {\n return this.Data.ProjectLookup;\n }\n\n constructor(\n protected formsService: FormsService,\n protected eacSvc: EaCService,\n \n ) {}\n\n public ngOnInit(): void {\n this.formName = 'DomainForm';\n\n this.setupForm();\n\n this.config();\n }\n\n protected config(): void {\n this.Config = new CardFormConfigModel({\n Icon: 'head',\n Title: 'Domains',\n Subtitle:\n 'In order to use a custom domain, create a CNAME dns record pointing desired subdomain to ' + this.HostDNSInstance + '.',\n FormActions: {\n Message: 'Changes will be applied to your next deployment',\n Actions: [\n {\n Label: 'Reset',\n Color: 'warn',\n ClickEvent: () => this.resetForm(),\n // use arrow function, so 'this' refers to ProjectNameComponent\n // if we used ClickeEvent: this.clearForm, then 'this' would refer to this current Actions object\n Type: 'RESET',\n },\n {\n Label: 'Save',\n Color: 'accent',\n ClickEvent: () => this.save(),\n Type: 'SAVE',\n },\n ],\n },\n });\n }\n\n protected setupForm(): void {\n this.Form = new FormGroup({\n domain: new FormControl(this.HostLookup || '', {\n validators: [Validators.required, Validators.minLength(3)],\n updateOn: 'change',\n }),\n });\n\n this.formsService.Form = { Id: this.formName, Form: this.Form };\n this.onChange();\n }\n\n protected onChange(): void {\n this.Form.valueChanges.subscribe((val: any) => {\n if (this.formsService.ForRealThough(this.formName, this.Form)) {\n this.IsDirty = true;\n // disable all forms except the current form being edited\n this.formsService.DisableForms(this.formName);\n } else {\n this.IsDirty = false;\n // enable all forms\n this.formsService.DisableForms(false);\n }\n });\n }\n\n /**\n * Reset form controls back to previous values\n */\n protected resetForm(): void {\n // enable all forms\n // this.formsService.DisableForms(false);\n\n this.formsService.ResetFormValues(this.formName);\n }\n\n /**\n * Save changes\n */\n protected save(): void {\n this.eacSvc.SaveProjectAsCode({\n ProjectLookup: this.ProjectLookup,\n Project: {\n ...this.Project,\n // Hosts: [...this.Project.Hosts, this.Domain.value],\n Hosts: [this.Domain.value],\n },\n });\n this.formsService.UpdateValuesReference({\n Id: this.formName,\n Form: this.Form,\n });\n }\n}\n","<form\n fxLayout=\"row\"\n fxLayout.lt-md=\"column\"\n class=\"padding-top-3\"\n [formGroup]=\"Form\">\n <div>\n <lcu-form-card \n [config]=\"Config\"\n [form]=\"Form\"\n [is-dirty]=\"IsDirty\"\n >\n <div fxLayout=\"column\">\n <div fxLayout=\"row\">\n <div fxFlex fxLayout=\"row\">\n <mat-form-field fxFlex appearance=\"fill\" class=\"margin-right-3\">\n <mat-icon\n matSuffix\n [ngClass]=\"Domain.valid ? 'valid-control' : 'invalid-control'\"\n >\n {{ Domain.valid ? \"check_circle\" : \"error_outline\" }}\n </mat-icon>\n <input\n type=\"text\"\n matInput\n [placeholder]=\"Domain.invalid || Domain.disabled ? '/' : ''\"\n formControlName=\"domain\"\n />\n\n <mat-hint>\n These domains are assigned to your deployments. Optionally, \n a different Git branch or a redirection to another domain \n can be configured for each one.\n </mat-hint>\n\n <mat-error *ngIf=\"Domain.hasError('required')\">\n Domain is required\n </mat-error>\n </mat-form-field>\n\n <button mat-icon-button [cdkCopyToClipboard]=\"HostDNSInstance\" matTooltip=\"Copy subdomain to clipboard\">\n <mat-icon>content_copy</mat-icon>\n </button>\n\n </div>\n <!-- <button mat-button color=\"accent\">Add</button> -->\n </div>\n </div>\n <!-- <div class=\"card-divider\"></div> -->\n </lcu-form-card>\n </div>\n</form>\n","\nexport class DynamicTabsModel {\n\n /**\n * Component instance to add to the tab\n */\n public Component: any;\n\n /**\n * Component data\n */\n public Data?: any;\n\n /**\n * Icon to use next to tab label\n */\n public Icon?: string;\n\n /**\n * Tab label\n */\n public Label: string;\n\n constructor(opts: DynamicTabsModel) {\n Object.assign(this, opts); // destructure values\n }\n }\n","import { FormsService } from './../../../../../services/forms.service';\nimport {\n AfterContentChecked,\n ChangeDetectorRef,\n Component,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { LcuElementComponent, LCUElementContext } from '@lcu/common';\nimport { ApplicationsFlowService } from './../../../../../services/applications-flow.service';\nimport { EaCProjectAsCode } from '@semanticjs/common';\n\nexport class ApplicationsFlowProjectsElementState {}\n\nexport class ApplicationsFlowProjectsContext extends LCUElementContext<ApplicationsFlowProjectsElementState> {}\n\n@Component({\n selector: 'lcu-general',\n templateUrl: './general.component.html',\n styleUrls: ['./general.component.scss'],\n})\nexport class GeneralComponent\n extends LcuElementComponent<ApplicationsFlowProjectsContext>\n implements OnDestroy, OnInit, AfterContentChecked\n{\n @Input('data')\n public Data: { Project: EaCProjectAsCode; ProjectLookup: string };\n\n public get Project(): EaCProjectAsCode {\n return this.Data.Project;\n }\n\n public get ProjectLookup(): string {\n return this.Data.ProjectLookup;\n }\n\n constructor(\n protected injector: Injector,\n protected appsFlowSvc: ApplicationsFlowService,\n protected cd: ChangeDetectorRef,\n protected formsService: FormsService\n ) {\n super(injector);\n }\n\n // Life Cycle\n public ngOnDestroy(): void {}\n\n public ngOnInit(): void {}\n\n public ngAfterContentChecked(): void {\n this.cd.detectChanges();\n }\n}\n","<div fxLayout=\"row\" fxLayout.lt-md=\"column\">\n <div fxFlex=\"50\" fxLayout=\"column\" class=\"margin-right-3\">\n <!-- <lcu-project-details\n [project]=\"Project\"\n [project-lookup]=\"ProjectLookup\"\n class=\"margin-bottom-3\"\n ></lcu-project-details> -->\n\n <!-- <lcu-root-directory [project]=\"Project\"></lcu-root-directory> -->\n </div>\n\n <div fxFlex=\"50\">\n <!-- <lcu-settings [project]=\"Project\"></lcu-settings> -->\n <!-- <lcu-base-form-test></lcu-base-form-test> -->\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport {\n FormGroup,\n FormBuilder,\n Validators,\n AbstractControl,\n FormControl,\n} from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipInputEvent } from '@angular/material/chips';\nimport { MatSelectChange } from '@angular/material/select';\nimport { BaseResponse, BaseModeledResponse } from '@lcu/common';\nimport {\n GitHubBranch,\n GitHubOrganization,\n GitHubRepository,\n} from '../../../../../state/applications-flow.state';\nimport { ApplicationsFlowService } from '../../../../../services/applications-flow.service';\nimport { EaCSourceControl } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-source-control-form-controls',\n templateUrl: './source-control.component.html',\n styleUrls: ['./source-control.component.scss'],\n})\nexport class SourceControlFormControlsComponent\n implements AfterViewInit, OnDestroy, OnInit\n{\n // Fields\n\n // Properties\n public get BranchesFormControl(): AbstractControl {\n return this.FormGroup.get(this.SourceControlRoot + 'branches');\n }\n\n @Output('branches-changed')\n public BranchesChanged: EventEmitter<Array<string>>;\n\n @Input('branches-disabled')\n public BranchesDisabled: boolean;\n\n @ViewChild('branches')\n public BranchesInput: ElementRef<HTMLInputElement>;\n\n public BranchOptions: GitHubBranch[];\n\n @Input('build-path')\n public BuildPath: string;\n\n @Input('build-path-disabled')\n public BuildPathDisabled: boolean;\n\n public get BuildPathFormControl(): AbstractControl {\n return this.FormGroup.get(this.SourceControlRoot + 'buildPath');\n }\n\n public BuildPathOptions: string[];\n\n public CreatingRepository: boolean;\n\n @Input('form-group')\n public FormGroup: FormGroup;\n\n public Loading: boolean;\n\n public get MainBranchFormControl(): AbstractControl {\n return this.FormGroup.get(this.SourceControlRoot + 'mainBranch');\n }\n\n @Input('org-disabled')\n public OrganizationDisabled: boolean;\n\n public get OrganizationFormControl(): AbstractControl {\n return this.FormGroup.get(this.SourceControlRoot + 'organization');\n }\n\n public OrganizationOptions: GitHubOrganization[];\n\n public get RepositoryFormControl(): AbstractControl {\n return this.FormGroup.get(this.SourceControlRoot + 'repository');\n }\n\n @Input('repo-disabled')\n public RepositoryDisabled: boolean;\n\n public RepositoryOptions: GitHubRepository[];\n\n public SelectedBranches: string[];\n\n public readonly SeparatorKeysCodes = [ENTER, COMMA] as const;\n\n @Input('source-control')\n public SourceControl: EaCSourceControl;\n\n @Input('source-control-root')\n public SourceControlRoot: string;\n\n @Input('use-branches')\n public UseBranches: boolean;\n\n @Input('use-build-path')\n public UseBuildPath: boolean;\n\n // Constructors\n constructor(\n protected formBuilder: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService,\n ) {\n this.BranchesChanged = new EventEmitter();\n\n this.SelectedBranches = [];\n\n this.SourceControl = {};\n\n this.SourceControlRoot = '';\n\n this.UseBranches = true;\n }\n\n // Life Cycle\n public ngAfterViewInit(): void {}\n\n public ngOnDestroy(): void {\n this.destroyFormControls();\n }\n\n public ngOnInit(): void {\n this.setupFormControls();\n\n this.RefreshOrganizations();\n }\n\n // API Methods\n public AddBranchOption(event: MatChipInputEvent): void {\n this.addBranchOption(event.value);\n\n event.input.value = '';\n }\n\n public BranchOptionSelected(event: MatAutocompleteSelectedEvent): void {\n this.addBranchOption(event.option.value);\n }\n\n public BuildPathChanged(event: MatSelectChange): void {\n }\n\n public CreateRepository(): void {\n this.CreatingRepository = true;\n\n this.RepositoryFormControl.reset();\n }\n\n public CancelCreateRepository(): void {\n this.CreatingRepository = false;\n }\n\n public MainBranchChanged(event: MatSelectChange): void {\n this.emitBranchesChanged();\n }\n\n public OrganizationChanged(event: MatSelectChange): void {\n const org = this.OrganizationFormControl;\n\n this.RepositoryFormControl.reset();\n\n if (this.UseBranches) {\n this.BranchesFormControl.reset();\n\n this.SelectedBranches = [];\n }\n\n this.listRepositories();\n }\n\n public RefreshOrganizations(): void {\n // this.Loading = true;\n this.listOrganizations();\n\n this.OrganizationFormControl?.reset();\n\n this.RepositoryFormControl?.reset();\n\n if (this.UseBranches) {\n this.BranchesFormControl?.reset();\n }\n }\n\n public RemoveBranchOption(option: string): void {\n const index = this.SelectedBranches.indexOf(option);\n\n if (index >= 0) {\n this.SelectedBranches.splice(index, 1);\n }\n\n this.emitBranchesChanged();\n }\n\n public RepositoryChanged(event: MatSelectChange): void {\n const repo = this.RepositoryFormControl;\n\n if (this.UseBranches) {\n this.BranchesFormControl.reset();\n\n this.SelectedBranches = [];\n\n this.listBranches();\n }\n\n if (!this.UseBranches) {\n this.listBuildPaths();\n }\n }\n\n public SaveRepository(): void {\n this.Loading = true;\n\n const org = this.OrganizationFormControl.value;\n\n const repoName = this.RepositoryFormControl.value;\n\n this.appsFlowSvc\n .CreateRepository(org, repoName)\n .subscribe((response: BaseResponse) => {\n if (response.Status.Code === 0) {\n this.listRepositories(repoName);\n\n this.CreatingRepository = false;\n } else {\n // TODO: Need to surface an error to the user...\n\n this.Loading = false;\n }\n });\n }\n\n // Helpers\n protected addBranchOption(value: string): void {\n value = (value || '').trim();\n\n if (value && this.SelectedBranches.indexOf(value) < 0) {\n this.SelectedBranches.push(value);\n }\n\n this.BranchesInput.nativeElement.blur();\n\n this.emitBranchesChanged();\n }\n\n protected destroyFormControls(): void {\n this.FormGroup.removeControl(\n [this.SourceControlRoot, 'mainBranch'].join('')\n );\n\n this.FormGroup.removeControl([this.SourceControlRoot, 'branches'].join(''));\n\n this.FormGroup.removeControl([this.SourceControlRoot, 'buildPath'].join(''));\n\n this.SelectedBranches = [];\n\n this.FormGroup.removeControl(\n [this.SourceControlRoot, 'organization'].join('')\n );\n\n this.FormGroup.removeControl(\n [this.SourceControlRoot, 'repository'].join('')\n );\n }\n\n protected emitBranchesChanged(): void {\n if (\n this.SelectedBranches?.length > 0 &&\n (!this.MainBranchFormControl.value ||\n this.SelectedBranches.indexOf(this.MainBranchFormControl.value) < 0)\n ) {\n this.MainBranchFormControl.setValue(\n this.SelectedBranches.find(\n (branch) => branch === 'main' || branch === 'master'\n ) || this.SelectedBranches[0]\n );\n } else if (this.SelectedBranches?.length <= 0) {\n this.MainBranchFormControl.reset();\n }\n\n this.BranchesFormControl.setValue(this.SelectedBranches.join(','));\n\n this.BranchesChanged.emit(this.SelectedBranches || []);\n }\n\n protected listBranches(): void {\n if (this.UseBranches) {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListBranches(\n this.OrganizationFormControl.value,\n this.RepositoryFormControl.value\n )\n .subscribe((response: BaseModeledResponse<GitHubBranch[]>) => {\n this.BranchOptions = response.Model;\n\n this.Loading = false;\n\n if (this.SourceControl?.Branches?.length > 0) {\n this.SelectedBranches = this.SourceControl.Branches;\n } else if (this.BranchOptions?.length === 1) {\n this.BranchesFormControl.setValue(this.BranchOptions[0].Name);\n\n this.SelectedBranches = [this.BranchOptions[0].Name];\n }\n\n this.emitBranchesChanged();\n\n this.listBuildPaths();\n });\n }\n }\n\n protected listBuildPaths(): void {\n if (this.UseBuildPath) {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListBuildPaths(\n this.OrganizationFormControl.value,\n this.RepositoryFormControl.value\n )\n .subscribe((response: BaseModeledResponse<string[]>) => {\n this.BuildPathOptions = response.Model;\n\n this.Loading = false;\n\n if (this.BuildPathOptions?.length === 1) {\n this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);\n }\n });\n }\n }\n\n protected listOrganizations(): void {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListOrganizations()\n .subscribe((response: BaseModeledResponse<GitHubOrganization[]>) => {\n this.OrganizationOptions = response.Model;\n\n this.Loading = false;\n\n if (this.SourceControl?.Organization) {\n setTimeout(() => {\n this.OrganizationFormControl.setValue(\n this.SourceControl.Organization\n );\n\n this.listRepositories(this.SourceControl?.Repository);\n }, 0);\n }\n });\n }\n\n protected listRepositories(activeRepo: string = null): void {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListRepositories(this.OrganizationFormControl.value)\n .subscribe((response: BaseModeledResponse<GitHubRepository[]>) => {\n this.RepositoryOptions = response.Model;\n\n this.Loading = false;\n\n if (activeRepo) {\n setTimeout(() => {\n this.RepositoryFormControl.setValue(activeRepo);\n\n this.listBranches();\n\n if (!this.UseBranches) {\n this.listBuildPaths();\n }\n }, 0);\n } else if (this.RepositoryOptions?.length <= 0) {\n this.CreatingRepository = true;\n }\n });\n }\n\n protected setupFormControls(): void {\n this.destroyFormControls();\n\n this.FormGroup.addControl(\n [this.SourceControlRoot, 'organization'].join(''),\n new FormControl(\n this.SourceControl.Organization ?? '',\n Validators.required\n )\n );\n\n this.FormGroup.addControl(\n [this.SourceControlRoot, 'repository'].join(''),\n new FormControl(this.SourceControl.Repository ?? '', Validators.required)\n );\n\n if (this.UseBranches) {\n this.FormGroup.addControl(\n [this.SourceControlRoot, 'branches'].join(''),\n new FormControl(this.SourceControl?.Branches ?? '', Validators.required)\n );\n\n this.SelectedBranches = this.SourceControl?.Branches;\n\n this.FormGroup.addControl(\n [this.SourceControlRoot, 'mainBranch'].join(''),\n new FormControl(\n this.SourceControl.MainBranch ?? '',\n Validators.required\n )\n );\n }\n\n if (this.UseBuildPath) {\n this.FormGroup.addControl(\n [this.SourceControlRoot, 'buildPath'].join(''),\n new FormControl(this.BuildPath ?? '', Validators.required)\n );\n }\n }\n}\n","<div [formGroup]=\"FormGroup\">\n <div class=\"card\" *ngIf=\"OrganizationFormControl?.valid || !Loading\">\n <mat-form-field\n class=\"mat-full-width with-hint\"\n *ngIf=\"OrganizationOptions?.length > 0\"\n >\n <mat-icon class=\"org-icon\" matPrefix>corporate_fare</mat-icon>\n\n <mat-select\n [formControlName]=\"SourceControlRoot + 'organization'\"\n placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\"\n [disabled]=\"Loading || OrganizationDisabled\"\n required\n >\n <ng-container *ngFor=\"let orgOpt of OrganizationOptions\">\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-icon matSuffix (click)=\"RefreshOrganizations()\" matTooltip=\"Refresh Organization\"> refresh </mat-icon>\n\n <a\n matSuffix\n href=\"/.oauth/github?oauth-force-edit=true\"\n target=\"_blank\"\n color=\"accent\"\n >\n <mat-icon color=\"accent\" matTooltip=\"Re-authorize Organizations\"> launch </mat-icon>\n </a>\n\n <mat-hint>\n If you don't have an organization or would like to create a new one,\n <a\n href=\"https://github.com/account/organizations/new\"\n target=\"_blank\"\n >\n start here\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div\n class=\"card\"\n *ngIf=\"\n RepositoryFormControl?.valid ||\n (OrganizationFormControl?.valid && !Loading)\n \"\n >\n <mat-form-field class=\"mat-full-width\">\n <mat-icon class=\"org-icon\" matPrefix>description</mat-icon>\n\n <mat-select\n [formControlName]=\"SourceControlRoot + 'repository'\"\n [placeholder]=\"\n OrganizationFormControl?.valid\n ? 'Repository'\n : 'Repository (select organization first)'\n \"\n [disabled]=\"\n !OrganizationFormControl?.valid || Loading || RepositoryDisabled\n \"\n (selectionChange)=\"RepositoryChanged($event)\"\n *ngIf=\"!CreatingRepository\"\n required\n >\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <input\n matInput\n placeholder=\"Repository (creates new if does not exist)\"\n [formControlName]=\"SourceControlRoot + 'repository'\"\n *ngIf=\"CreatingRepository\"\n [fxHide]=\"Loading || RepositoryDisabled\"\n required\n />\n\n <mat-icon\n matSuffix\n (click)=\"CreateRepository()\"\n [fxHide]=\"Loading || RepositoryDisabled\"\n *ngIf=\"!CreatingRepository && OrganizationFormControl?.valid\"\n >\n add_circle\n </mat-icon>\n\n <button mat-button type=\"button\" \n (click)=\"SaveRepository()\" \n *ngIf=\"CreatingRepository && RepositoryFormControl?.valid\">\n\n <mat-icon\n matSuffix\n color=\"primary\"\n >\n save\n </mat-icon>\n </button>\n\n <button mat-button type=\"button\" \n (click)=\"CancelCreateRepository()\"\n *ngIf=\"CreatingRepository\">\n\n <mat-icon\n matSuffix\n \n >\n cancel\n </mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div\n class=\"card\"\n *ngIf=\"\n (BranchesFormControl?.valid ||\n (OrganizationFormControl?.valid &&\n RepositoryFormControl?.valid &&\n !Loading)) &&\n !CreatingRepository &&\n UseBranches\n \"\n >\n <mat-form-field class=\"mat-full-width\">\n <mat-icon class=\"org-icon\" matPrefix>account_tree</mat-icon>\n\n <mat-label>Selected Branches</mat-label>\n\n <mat-autocomplete\n (optionSelected)=\"BranchOptionSelected($event)\"\n #branchOptions=\"matAutocomplete\"\n >\n <ng-container *ngFor=\"let branchOpt of BranchOptions\">\n <mat-option [value]=\"branchOpt.Name\">\n {{ branchOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n\n <mat-chip-list #selectedBranches>\n <mat-chip\n [removable]=\"true\"\n (removed)=\"RemoveBranchOption(selBranch)\"\n *ngFor=\"let selBranch of SelectedBranches\"\n >\n {{ selBranch }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n\n <input\n matInput\n placeholder=\"New Branch...\"\n [formControlName]=\"SourceControlRoot + 'branches'\"\n #branches\n [matAutocomplete]=\"branchOptions\"\n [matChipInputFor]=\"selectedBranches\"\n [matChipInputSeparatorKeyCodes]=\"SeparatorKeysCodes\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"AddBranchOption($event)\"\n [disabled]=\"Loading || BranchesDisabled\"\n required\n />\n </mat-chip-list>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width with-hint\"\n [fxShow]=\"SelectedBranches?.length > 1\"\n >\n <mat-icon class=\"org-icon\" matPrefix>account_tree</mat-icon>\n\n <mat-select\n [formControlName]=\"SourceControlRoot + 'mainBranch'\"\n placeholder=\"Main Branch\"\n [disabled]=\"Loading || BranchesDisabled\"\n (selectionChange)=\"MainBranchChanged($event)\"\n required\n >\n <ng-container *ngFor=\"let branch of SelectedBranches\">\n <mat-option [value]=\"branch\">\n {{ branch }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-icon matSuffix (click)=\"RefreshOrganizations()\"> refresh </mat-icon>\n\n <a\n matSuffix\n mat-icon-button\n href=\"/.oauth/github?oauth-force-edit=true\"\n \n target=\"_blank\"\n color=\"accent\"\n >\n <mat-icon\n matTooltip=\"Re-authorize Organizations\"\n color=\"accent\"> launch </mat-icon>\n </a>\n\n <mat-hint>\n If you don't have an organization or would like to create a new one,\n <a\n href=\"https://github.com/account/organizations/new\"\n target=\"_blank\"\n >\n start here\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div\n class=\"card\"\n *ngIf=\"\n (BuildPathFormControl?.valid ||\n (OrganizationFormControl?.valid &&\n RepositoryFormControl?.valid &&\n !Loading)) &&\n !CreatingRepository &&\n UseBuildPath\n \"\n >\n <mat-form-field class=\"mat-full-width with-hint\">\n <mat-icon class=\"org-icon\" matPrefix>build</mat-icon>\n\n <mat-select\n [formControlName]=\"SourceControlRoot + 'buildPath'\"\n placeholder=\"Build Path\"\n [disabled]=\"Loading || BuildPathDisabled\"\n (selectionChange)=\"BuildPathChanged($event)\"\n required\n >\n <ng-container *ngFor=\"let buildPath of BuildPathOptions\">\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to use for your\n configuration.\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"Loading\">\n <div class=\"spread\">\n <lcu-loader style=\"margin: auto\" [loading]=\"true\"></lcu-loader>\n\n <div class=\"margin-3\">\n <h4 class=\"mat-title\" *ngIf=\"!OrganizationFormControl?.valid\">\n Loading organizations\n </h4>\n\n <h4\n class=\"mat-title\"\n *ngIf=\"\n OrganizationFormControl?.valid && !RepositoryFormControl?.valid\n \"\n >\n Loading repositories\n </h4>\n\n <h4\n class=\"mat-title\"\n *ngIf=\"RepositoryFormControl?.valid && !BranchesFormControl?.valid\"\n >\n Loading branches\n </h4>\n\n <h4\n class=\"mat-title\"\n *ngIf=\"\n (RepositoryFormControl?.valid || BranchesFormControl?.valid) &&\n !BuildPathFormControl?.valid\n \"\n >\n Loading build paths\n </h4>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable, Injector } from '@angular/core';\nimport { DAFService, BaseModeledResponse, Pageable } from '@lcu/common';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { HttpClient, HttpBackend } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NPMService extends DAFService {\n // Properties\n\n // Constructors\n constructor(protected injector: Injector, handler: HttpBackend) {\n super(injector);\n\n this.http = new HttpClient(handler);\n }\n\n // API Methods\n public Search(\n search: string\n ): Observable<BaseModeledResponse<Pageable<any>>> {\n if (search) {\n return this.http.get(`https://api.npms.io/v2/search?q=${search}`).pipe(\n this.catchError(),\n map((res: any) => {\n return <BaseModeledResponse<Pageable<any>>>{\n Status: {\n Code: 0,\n Message: 'Success',\n },\n Model: {\n TotalRecords: res.total,\n Items: res.results,\n },\n };\n })\n );\n } else {\n return Observable.create((obs: any) => {\n obs.next(<BaseModeledResponse<Pageable<any>>>{\n Status: {\n Code: 0,\n Message: 'Success',\n },\n });\n\n obs.complete();\n });\n }\n }\n\n public Versions(\n npmPkg: string\n ): Observable<BaseModeledResponse<Pageable<any>>> {\n if (npmPkg) {\n return this.http.get(`https://registry.npmjs.org/${npmPkg}`).pipe(\n this.catchError(),\n map((res: any) => {\n return <BaseModeledResponse<any>>{\n Status: {\n Code: 0,\n Message: 'Success',\n },\n Model: res,\n };\n })\n );\n } else {\n return new Observable((obs: any) => {\n obs.next(<BaseModeledResponse<Pageable<any>>>{\n Status: {\n Code: 0,\n Message: 'Success',\n },\n });\n\n obs.complete();\n });\n }\n }\n\n // Helpers\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { debounceTime, map, switchMap } from 'rxjs/operators';\nimport { NPMService } from '../../../../../../services/npm.service';\n\n@Component({\n selector: 'lcu-npm-package-select',\n templateUrl: './npm-package-select.component.html',\n styleUrls: ['./npm-package-select.component.scss'],\n})\nexport class NpmPackageSelectComponent implements OnInit {\n // Fields\n\n // Properties\n @Input('npm-package')\n public NPMPackage: string;\n\n @Input('npm-package-version')\n public NPMPackageVersion: string;\n\n @Input('form-group')\n public FormGroup: FormGroup;\n\n public NPMPackages: { Name: string; NPMLink: string; Version: string }[];\n\n public NPMPackageVersions: string[];\n\n // Constructors\n constructor(protected npm: NPMService) {}\n\n // Life Cycle\n public ngOnDestroy(): void {\n this.FormGroup.removeControl('package');\n\n this.FormGroup.removeControl('version');\n }\n\n public ngOnInit(): void {\n this.FormGroup.addControl(\n 'package',\n new FormControl(this.NPMPackage || '', [Validators.required])\n );\n\n this.FormGroup.addControl(\n 'version',\n new FormControl(this.NPMPackageVersion || 'latest', [Validators.required])\n );\n\n this.FormGroup.controls.package.valueChanges\n .pipe(\n debounceTime(500),\n switchMap((value) => this.npm.Search(value ? value.toString() : '')),\n map((val) => {\n return val.Model\n ? val.Model.Items.map((i) => {\n return {\n Name: i.package.name,\n Version: i.package.version,\n NPMLink: i.package.links.npm,\n };\n })\n : [];\n })\n )\n .subscribe((packages) => {\n this.NPMPackages = packages;\n });\n }\n\n // API Methods\n public PackageSelected(event: MatAutocompleteSelectedEvent) {\n const pkg = this.NPMPackages.find((p) => p.Name === event.option.value);\n\n if (!this.FormGroup.controls.version.value) {\n this.FormGroup.controls.version.setValue(pkg.Version);\n\n this.npm.Versions(pkg.Name).subscribe((pkgDetails: any) => {\n const tags = Object.keys(pkgDetails['dist-tags']);\n\n const versions = Object.keys(pkgDetails['versions']);\n\n this.NPMPackageVersions = [...tags, ...versions];\n });\n }\n }\n\n // Helpers\n}\n","<div [formGroup]=\"FormGroup\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"NPM Package\"\n formControlName=\"package\"\n [matAutocomplete]=\"package\"\n required\n />\n\n <mat-autocomplete\n #package=\"matAutocomplete\"\n (optionSelected)=\"PackageSelected($event)\"\n >\n <ng-container *ngFor=\"let pkg of NPMPackages\">\n <mat-option [value]=\"pkg.Name\">\n <span>{{ pkg.Name }}</span> |\n\n <small>(latest: {{ pkg.Version }})</small>\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n\n <mat-icon\n matSuffix\n mat-icon-button\n matTooltip=\"Enter the name of your NPM node package.\"\n >\n info_outline\n </mat-icon>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Package Version\"\n formControlName=\"version\"\n [matAutocomplete]=\"version\"\n required\n />\n\n <mat-autocomplete #version=\"matAutocomplete\">\n <ng-container *ngFor=\"let version of NPMPackageVersions\">\n <mat-option [value]=\"version\">\n <span>{{ version }}</span>\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n\n <a\n mat-icon-button\n matSuffix\n matTooltip=\"Enter a Tag or current/previous version of your package. Using Tags allows for easy updates to unpack the latest version of that Tag. Click here to access the package version in NPM.\"\n [href]=\"\n 'https://www.npmjs.com/package/' + FormGroup.controls.package.value\n \"\n target=\"_blank\"\n id=\"npm-package-button\"\n >\n <mat-icon>info_outline</mat-icon>\n </a>\n </mat-form-field>\n</div>\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport {EaCService, SaveApplicationAsCodeEventRequest} from '../../../../../services/eac.service';\nimport {\n EaCApplicationAsCode,\n EaCEnvironmentAsCode,\n EaCProcessor,\n EaCProjectAsCode,\n EaCSourceControl,\n} from '@semanticjs/common';\nimport { Guid } from '@lcu/common';\nimport { MatSelectChange } from '@angular/material/select';\nimport { SourceControlFormControlsComponent } from '../../forms/source-control/source-control.component';\nimport { ApplicationsFlowService } from '../../../../../services/applications-flow.service';\n\n@Component({\n selector: 'lcu-apps-flow',\n templateUrl: './apps-flow.component.html',\n styleUrls: ['./apps-flow.component.scss'],\n})\nexport class AppsFlowComponent implements OnInit {\n // Fields\n\n // Properties\n public get APIRootFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.apiRoot;\n }\n\n public ApplicationFormGroup: FormGroup;\n\n public get ApplicationIDFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.applicationId;\n }\n\n public get ApplicationLookups(): Array<string> {\n return Object.keys(this.Applications || {});\n }\n\n public get ApplicationRoutes(): Array<string> {\n return Object.keys(this.RoutedApplications || {});\n }\n\n public get ApplicationsBank(): { [lookup: string]: EaCApplicationAsCode } {\n return this.Data?.Applications || {};\n }\n\n public get Applications(): { [lookup: string]: EaCApplicationAsCode } {\n const apps: { [lookup: string]: EaCApplicationAsCode } = {};\n\n this.Project.ApplicationLookups.forEach((appLookup) => {\n apps[appLookup] = this.ApplicationsBank[appLookup];\n });\n return apps;\n }\n\n public get BuildFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.build;\n }\n\n public get ClientIDFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.clientId;\n }\n\n public get ClientSecretFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.clientSecret;\n }\n\n public CurrentApplicationRoute: string;\n\n public get CurrentRouteApplicationLookups(): Array<string> {\n return Object.keys(\n this.RoutedApplications[this.CurrentApplicationRoute] || {}\n );\n }\n\n @Input('data')\n public Data: {\n Applications: { [lookup: string]: EaCApplicationAsCode };\n Environment: EaCEnvironmentAsCode;\n PrimaryHost: string;\n Project: EaCProjectAsCode;\n ProjectLookup: string;\n };\n\n public get DefaultFileFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.defaultFile;\n }\n\n public get DefaultSourceControl(): EaCSourceControl {\n return {\n Organization: this.EditingApplication?.LowCodeUnit?.Organization,\n Repository: this.EditingApplication?.LowCodeUnit?.Repository,\n };\n }\n\n public get DescriptionFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.description;\n }\n\n public get EditingApplication(): EaCApplicationAsCode {\n let app = this.Applications\n ? this.Applications[this.EditingApplicationLookup]\n : null;\n\n if (app == null && this.EditingApplicationLookup) {\n app = {};\n }\n\n return app;\n }\n\n public EditingApplicationLookup: string;\n\n public get HasBuildFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.hasBuild;\n }\n\n public get InboundPathFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.inboundPath;\n }\n\n public get IsPrivateFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.isPrivate;\n }\n\n public get IsTriggerSignInFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.isTriggerSignIn;\n }\n\n public LCUType: string;\n\n public get MethodsFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.methods;\n }\n\n public get NameFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.name;\n }\n\n public get PackageFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.package;\n }\n\n public IsPermanent: boolean;\n\n public IsPreserve: boolean;\n\n public redirectTooltip: string;\n\n public get PermanentFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.permanent;\n }\n\n public get PreserveMethodFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.preserveMethod;\n }\n\n public get PrimaryHost(): string {\n return this.Data.PrimaryHost;\n }\n\n public ProcessorType: string;\n\n public get Project(): EaCProjectAsCode {\n return this.Data.Project;\n }\n\n public get ProjectLookup(): string {\n return this.Data.ProjectLookup;\n }\n\n public get RedirectFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.redirect;\n }\n\n public get RoutedApplications(): {\n [route: string]: { [lookup: string]: EaCApplicationAsCode };\n } {\n const appLookups = Object.keys(this.Applications);\n\n const apps = appLookups.map((appLookup) => this.Applications[appLookup]);\n\n let appRoutes =\n apps.map((app) => {\n return app?.LookupConfig?.PathRegex.replace('.*', '');\n }) || [];\n\n appRoutes = appRoutes.filter((ar) => ar != null);\n\n let routeBases: string[] = [];\n\n appRoutes.forEach((appRoute) => {\n const appRouteParts = appRoute.split('/');\n\n const appRouteBase = `/${appRouteParts[1]}`;\n\n if (routeBases.indexOf(appRouteBase) < 0) {\n routeBases.push(appRouteBase);\n }\n });\n\n let workingAppLookups = [...(appLookups || [])];\n\n routeBases = routeBases.sort((a, b) => b.localeCompare(a));\n\n const routeSet =\n routeBases.reduce((prevRouteMap, currentRouteBase) => {\n const routeMap = {\n ...prevRouteMap,\n };\n\n const filteredAppLookups = workingAppLookups.filter((wal) => {\n const wa = this.Applications[wal];\n\n return wa?.LookupConfig?.PathRegex.startsWith(currentRouteBase);\n });\n\n routeMap[currentRouteBase] =\n filteredAppLookups.reduce((prevAppMap, appLookup) => {\n const appMap = {\n ...prevAppMap,\n };\n\n appMap[appLookup] = this.Applications[appLookup];\n\n return appMap;\n }, {}) || {};\n\n workingAppLookups = workingAppLookups.filter((wa) => {\n return filteredAppLookups.indexOf(wa) < 0;\n });\n\n return routeMap;\n }, {}) || {};\n\n let routeSetKeys = Object.keys(routeSet);\n\n routeSetKeys = routeSetKeys.sort((a, b) => a.localeCompare(b));\n\n const routeSetResult = {};\n\n routeSetKeys.forEach((rsk) => (routeSetResult[rsk] = routeSet[rsk]));\n\n return routeSetResult;\n }\n\n public get RouteFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.route;\n }\n\n public get ScopesFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.scopes;\n }\n\n public get SecurityFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.security;\n }\n\n @ViewChild(SourceControlFormControlsComponent)\n public SourceControlFormControls: SourceControlFormControlsComponent;\n\n public get SourceControlLookupFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.sourceControlLookup;\n }\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.SourceControls || {});\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Data.Environment.Sources || {};\n }\n\n public get SPARootFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.spaRoot;\n }\n\n public get TokenLookupFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.tokenLookup;\n }\n\n public get VersionFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.version;\n }\n\n public get ZipFileFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.zipFile;\n }\n\n // Constructors\n constructor(\n protected formBldr: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService\n ) {\n this.EditingApplicationLookup = null;\n this.redirectTooltip = '';\n\n // this.IsPermanent = false;\n\n // this.IsPreserve = false;\n }\n\n // Life Cycle\n public ngOnInit(): void {\n if (this.ApplicationLookups?.length <= 0) {\n this.CreateNewApplication();\n }\n }\n\n // API Methods\n public CreateNewApplication(): void {\n this.SetEditingApplication(Guid.CreateRaw());\n }\n\n public DeleteApplication(appLookup: string, appName: string): void {\n this.eacSvc.DeleteApplication(appLookup, appName);\n }\n\n public LCUTypeChanged(event: MatSelectChange): void {\n this.LCUType = event.value;\n\n this.setupLcuTypeSubForm();\n }\n\n public ProcessorTypeChanged(event: MatSelectChange): void {\n this.ProcessorType = event.value;\n\n this.setupProcessorTypeSubForm();\n }\n\n public DetermineTooltipText() {\n let permanentValue = this.PermanentFormControl.value;\n let preserveValue = this.PreserveMethodFormControl.value;\n\n if (permanentValue === true && preserveValue === false) {\n this.redirectTooltip = '301 – Permanent and Not Preserve';\n } else if (permanentValue === false && preserveValue === false) {\n this.redirectTooltip = '302 – Not Permanent and Not Preserve';\n } else if (permanentValue === false && preserveValue === true) {\n this.redirectTooltip = '307 – Not Permanent and Preserve';\n } else if (permanentValue === true && preserveValue === true) {\n this.redirectTooltip = '308 – Permanent and Preserve';\n }\n }\n\n public GetProcessorType(appLookup: any): string {\n let processorType = '';\n processorType = this.Applications[appLookup].Processor.Type\n ? this.Applications[appLookup].Processor.Type\n : '';\n // console.log(\"Ptype = \", processorType);\n\n return processorType;\n }\n\n public EditApplicationRouteClicked(appRoute: any) {\n this.CurrentApplicationRoute = appRoute;\n }\n\n public SaveApplication(): void {\n const app: EaCApplicationAsCode = {\n Application: {\n Name: this.NameFormControl.value,\n Description: this.DescriptionFormControl.value,\n PriorityShift: this.EditingApplication?.Application?.PriorityShift || 0,\n },\n AccessRightLookups: [],\n DataTokens: {},\n LicenseConfigurationLookups: [],\n LookupConfig: {\n IsPrivate: this.IsPrivateFormControl.value,\n IsTriggerSignIn: this.IsPrivateFormControl.value\n ? this.IsTriggerSignInFormControl.value\n : false,\n PathRegex: `${this.RouteFormControl.value}.*`,\n QueryRegex: this.EditingApplication?.LookupConfig?.QueryRegex || '',\n HeaderRegex: this.EditingApplication?.LookupConfig?.HeaderRegex || '',\n AllowedMethods: this.MethodsFormControl?.value\n ?.split(' ')\n .filter((v: string) => !!v),\n },\n Processor: {\n Type: this.ProcessorType,\n },\n };\n\n switch (app.Processor.Type) {\n case 'DFS':\n app.Processor.BaseHref = `${this.RouteFormControl.value}/`.replace(\n '//',\n '/'\n );\n\n app.Processor.DefaultFile =\n this.DefaultFileFormControl.value || 'index.html';\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHub':\n app.LowCodeUnit.Organization =\n this.SourceControlFormControls.OrganizationFormControl.value;\n\n app.LowCodeUnit.Repository =\n this.SourceControlFormControls.RepositoryFormControl.value;\n\n app.LowCodeUnit.Build = this.BuildFormControl.value;\n\n app.LowCodeUnit.Path =\n this.SourceControlFormControls.BuildPathFormControl.value;\n break;\n\n case 'NPM':\n app.LowCodeUnit.Package = this.PackageFormControl.value;\n\n app.LowCodeUnit.Version = this.VersionFormControl.value;\n break;\n\n case 'Zip':\n app.LowCodeUnit.ZipFile = this.ZipFileFormControl.value;\n break;\n }\n break;\n\n case 'OAuth':\n app.Processor.Scopes = this.ScopesFormControl.value.split(' ');\n\n app.Processor.TokenLookup = this.TokenLookupFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHubOAuth':\n app.LowCodeUnit.ClientID = this.ClientIDFormControl.value;\n\n app.LowCodeUnit.ClientSecret = this.ClientSecretFormControl.value;\n break;\n }\n break;\n\n case 'Proxy':\n app.Processor.InboundPath = this.InboundPathFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'API':\n app.LowCodeUnit.APIRoot = this.APIRootFormControl.value;\n\n app.LowCodeUnit.Security = this.SecurityFormControl.value;\n\n break;\n\n case 'SPA':\n app.LowCodeUnit.SPARoot = this.SPARootFormControl.value;\n break;\n }\n break;\n\n case 'Redirect':\n app.Processor.Permanent = !!this.PermanentFormControl.value;\n\n app.Processor.PreserveMethod = !!this.PreserveMethodFormControl.value;\n\n app.Processor.Redirect = this.RedirectFormControl.value;\n break;\n }\n\n if (!app.LookupConfig.PathRegex.startsWith('/')) {\n app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;\n }\n\n const saveAppReq: SaveApplicationAsCodeEventRequest = {\n ProjectLookup: this.ProjectLookup,\n Application: app,\n ApplicationLookup: this.EditingApplicationLookup || Guid.CreateRaw(),\n };\n\n if (this.HasBuildFormControl.value && this.ProcessorType !== 'redirect') {\n if (app) {\n app.LowCodeUnit.SourceControlLookup = this.SourceControlLookupFormControl.value;\n }\n } else if (app) {\n app.LowCodeUnit.SourceControlLookup = null;\n }\n\n this.eacSvc.SaveApplicationAsCode(saveAppReq);\n }\n\n public SetEditingApplication(appLookup: string): void {\n this.EditingApplicationLookup = appLookup;\n\n this.setupApplicationForm();\n }\n\n public SourceControlLookupChanged(event: MatSelectChange): void {\n // TODO: Anything to do here on change?\n }\n\n public StartsWith(app: EaCApplicationAsCode, appRouteBase: string): boolean {\n if (appRouteBase === '/') {\n return app?.LookupConfig?.PathRegex === '/.*';\n } else {\n return app?.LookupConfig?.PathRegex.startsWith(appRouteBase);\n }\n }\n\n public Unpack(appLookup: string, app: EaCApplicationAsCode): void {\n this.eacSvc.UnpackLowCodeUnit({\n ApplicationLookup: appLookup,\n ApplicationName: app.Application?.Name,\n Version: app.LowCodeUnit?.Version || app.LowCodeUnit?.Build,\n });\n }\n\n // Helpers\n protected cleanupLcuTypeSubForm(): void {\n this.ApplicationFormGroup.removeControl('methods');\n this.ApplicationFormGroup.removeControl('apiRoot');\n this.ApplicationFormGroup.removeControl('security');\n\n this.ApplicationFormGroup.removeControl('spaRoot');\n\n this.ApplicationFormGroup.removeControl('applicationId');\n\n this.ApplicationFormGroup.removeControl('build');\n\n this.ApplicationFormGroup.removeControl('clientId');\n this.ApplicationFormGroup.removeControl('clientSecret');\n\n this.ApplicationFormGroup.removeControl('zipFile');\n }\n\n protected cleanupProcessorTypeSubForm(): void {\n this.ApplicationFormGroup.removeControl('defaultFile');\n this.ApplicationFormGroup.removeControl('dfsLcuType');\n\n this.ApplicationFormGroup.removeControl('oauthLcuType');\n this.ApplicationFormGroup.removeControl('scopes');\n this.ApplicationFormGroup.removeControl('tokenLookup');\n\n this.ApplicationFormGroup.removeControl('inboundPath');\n this.ApplicationFormGroup.removeControl('proxyLcuType');\n\n this.ApplicationFormGroup.removeControl('redirect');\n this.ApplicationFormGroup.removeControl('permanent');\n this.ApplicationFormGroup.removeControl('preserveMethod');\n\n this.cleanupLcuTypeSubForm();\n }\n\n protected setupApplicationForm(): void {\n this.ProcessorType = this.EditingApplication?.Processor?.Type || '';\n console.log('ProcessorType = ', this.ProcessorType);\n\n if (this.EditingApplication != null) {\n this.ApplicationFormGroup = this.formBldr.group({\n name: [this.EditingApplication.Application?.Name, Validators.required],\n description: [\n this.EditingApplication.Application?.Description,\n Validators.required,\n ],\n route: [\n this.EditingApplication.LookupConfig?.PathRegex.replace('.*', '') ||\n '/',\n Validators.required,\n ],\n // priority: [\n // this.EditingApplication.Application?.Priority || 10000,\n // Validators.required,\n // ],\n procType: [this.ProcessorType, [Validators.required]],\n });\n\n this.setupBuildForm();\n\n this.setupSecurityForm();\n\n this.setupProcessorTypeSubForm();\n }\n }\n\n protected setupBuildForm(): void {\n this.ApplicationFormGroup.addControl(\n 'hasBuild',\n this.formBldr.control(\n !!this.EditingApplication.LowCodeUnit?.SourceControlLookup || false,\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'sourceControlLookup',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.SourceControlLookup || '',\n []\n )\n );\n }\n\n protected setupDfsForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ApplicationFormGroup.addControl(\n 'defaultFile',\n this.formBldr.control(\n this.EditingApplication.Processor?.DefaultFile || 'index.html',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupLCUAPIForm(): void {\n this.ApplicationFormGroup.addControl(\n 'methods',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.AllowedMethods?.join(' ') || '',\n []\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'apiRoot',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.APIRoot || '',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'security',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.Security || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUApplicationPointerForm(): void {\n this.ApplicationFormGroup.addControl(\n 'applicationId',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ApplicationID || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUGitHubForm(): void {\n this.ApplicationFormGroup.addControl(\n 'build',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.Build || 'latest',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUGitHubOAuthForm(): void {\n this.ApplicationFormGroup.addControl(\n 'clientId',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ClientID || '',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'clientSecret',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ClientSecret || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUNPMForm(): void {\n // this.ApplicationFormGroup.addControl(\n // 'package',\n // this.formBldr.control(\n // this.EditingApplication.LowCodeUnit?.Package || '',\n // [Validators.required]\n // )\n // );\n // this.ApplicationFormGroup.addControl(\n // 'version',\n // this.formBldr.control(\n // this.EditingApplication.LowCodeUnit?.Version || '',\n // [Validators.required]\n // )\n // );\n }\n\n protected setupLCUSPAForm(): void {\n this.ApplicationFormGroup.addControl(\n 'spaRoot',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.SPARoot || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUZipForm(): void {\n this.ApplicationFormGroup.addControl(\n 'zipFile',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ZipFile || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLcuTypeSubForm(): void {\n this.cleanupLcuTypeSubForm();\n\n // this.ApplicationFormGroup.removeControl('package');\n // this.ApplicationFormGroup.removeControl('version');\n\n if (this.LCUType) {\n switch (this.LCUType) {\n case 'API':\n this.setupLCUAPIForm();\n break;\n\n case 'ApplicationPointer':\n this.setupLCUApplicationPointerForm();\n break;\n\n case 'GitHub':\n this.setupLCUGitHubForm();\n break;\n\n case 'GitHubOAuth':\n this.setupLCUGitHubOAuthForm();\n break;\n\n case 'NPM':\n this.setupLCUNPMForm();\n break;\n\n case 'SPA':\n this.setupLCUSPAForm();\n break;\n\n case 'Zip':\n this.setupLCUZipForm();\n break;\n }\n }\n }\n\n protected setupOAuthForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ApplicationFormGroup.addControl(\n 'scopes',\n this.formBldr.control(\n this.EditingApplication.Processor?.Scopes?.Join(' ') || '',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'tokenLookup',\n this.formBldr.control(\n this.EditingApplication.Processor?.TokenLookup || '',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupProxyForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ApplicationFormGroup.addControl(\n 'inboundPath',\n this.formBldr.control(\n this.EditingApplication.Processor?.InboundPath || '',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupProcessorTypeSubForm(): void {\n this.cleanupProcessorTypeSubForm();\n\n if (this.ProcessorType) {\n switch (this.ProcessorType) {\n case 'DFS':\n this.setupDfsForm();\n break;\n\n case 'OAuth':\n this.setupOAuthForm();\n break;\n\n case 'Proxy':\n this.setupProxyForm();\n break;\n\n case 'Redirect':\n this.setupRedirectForm();\n break;\n }\n }\n\n this.setupLcuTypeSubForm();\n }\n\n protected setupRedirectForm(): void {\n this.ApplicationFormGroup.addControl(\n 'redirect',\n this.formBldr.control(this.EditingApplication.Processor?.Redirect || '', [\n Validators.required,\n ])\n );\n\n this.ApplicationFormGroup.addControl(\n 'permanent',\n this.formBldr.control(\n this.EditingApplication.Processor?.Permanent || false,\n []\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'preserveMethod',\n this.formBldr.control(\n this.EditingApplication.Processor?.PreserveMethod || false,\n []\n )\n );\n this.DetermineTooltipText();\n }\n\n protected setupSecurityForm(): void {\n this.ApplicationFormGroup.addControl(\n 'isPrivate',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.IsPrivate || false,\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'isTriggerSignIn',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.IsTriggerSignIn || false,\n [Validators.required]\n )\n );\n }\n}\n","<div>\n <div *ngIf=\"EditingApplication?.Application\">\n <h2>\n <button\n mat-icon-button\n matTooltip=\"Back to Routes\"\n (click)=\"SetEditingApplication(null)\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n\n {{ CurrentApplicationRoute }} / {{ EditingApplication.Application?.Name }}\n </h2>\n </div>\n <form\n [formGroup]=\"ApplicationFormGroup\"\n (ngSubmit)=\"SaveApplication()\"\n *ngIf=\"EditingApplication\"\n >\n\n <div\n fxLayout=\"row wrap\"\n fxLayoutAlign=\"center start\"\n fxLayout.lt-md=\"column\"\n >\n <div class=\"form-card\" fxFlex=\"70%\" fxFlex.lt-md=\"100%\">\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title>\n <ng-container *ngIf=\"EditingApplication?.Application\">\n Edit Application:\n {{ EditingApplication.Application?.Name }}\n </ng-container>\n\n <ng-container *ngIf=\"!EditingApplication?.Application\">\n Create an Application\n </ng-container>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Name\"\n formControlName=\"name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n placeholder=\"Description\"\n formControlName=\"description\"\n rows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Route\"\n formControlName=\"route\"\n required\n />\n </mat-form-field>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div class=\"form-card\" fxFlex=\"35%\">\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ApplicationFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"\n SourceControlFormControls?.RepositoryFormControl?.valid\n \"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <lcu-npm-package-select\n [npm-package]=\"EditingApplication?.LowCodeUnit?.Package\"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ApplicationFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{ EditingApplication?.LowCodeUnit?.CurrentVersion }}\n </mat-hint>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\">Single Page Application</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle \n class=\"spread\" \n formControlName=\"permanent\">\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip={{redirectTooltip}}\n >\n info_outline\n </mat-icon>\n\n <!-- <mat-icon\n *ngIf=\"!IsPermanent && !IsPreserve\"\n\n class=\"spread\"\n matSuffix\n matTooltip=\"302 – Not Permanent and Not Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n <!-- <mat-icon\n *ngIf=\"!IsPermanent && IsPreserve\"\n class=\"spread\"\n matSuffix\n matTooltip=\"307 – Not Permanent and Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n <!-- <mat-icon\n *ngIf=\"IsPermanent && IsPreserve\"\n class=\"spread\"\n matSuffix\n matTooltip=\"308 – Permanent and Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n \n\n <!-- <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Values used to control the redirect type. Permanent and Not Preserve = 301; Not Permanent and Not Preserve = 302; Permanent and Preserve = 308; Not Permanent and Not Preserve = 307;\"\n >\n info_outline\n </mat-icon> -->\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div class=\"form-card\" fxFlex=\"35%\">\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title> Security Settings </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"isPrivate\"\n matTooltip=\"Is Secure Application?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Secured Application is one that requires the user to be authenticated to use the application. The application is hosted behind an identity wall.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <div>\n <div *ngIf=\"IsPrivateFormControl.value\">\n <div>\n <mat-slide-toggle formControlName=\"isTriggerSignIn\">\n Is Trigger Sign In Application?\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Trigger Sign In Application will direct the user to sign in if they are not already.\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <mat-card class=\"spread flow-card\" *ngIf=\"ProcessorType != 'Redirect'\">\n <mat-card-header>\n <mat-card-title *ngIf=\"!HasBuildFormControl.value\">\n Build & Source\n </mat-card-title>\n\n <mat-card-title *ngIf=\"HasBuildFormControl.value\">\n Source Control\n </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"hasBuild\"\n matTooltip=\"Has Build?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"Configure source control, DevOps CI/CD, and artifacts.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"\n HasBuildFormControl.value && SourceControlLookups?.length > 0\n \"\n >\n <mat-select\n formControlName=\"sourceControlLookup\"\n placeholder=\"Source Control\"\n (selectionChange)=\"SourceControlLookupChanged($event)\"\n [disabled]=\"\n SourceControlFormControls?.Loading || HostingDetails?.Loading\n \"\n >\n <ng-container\n *ngFor=\"let srcCtrlLookup of SourceControlLookups\"\n >\n <mat-option\n [value]=\"srcCtrlLookup\"\n *ngIf=\"SourceControls[srcCtrlLookup]; let srcCtrl\"\n >\n {{ srcCtrl.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <div *ngIf=\"HasBuildFormControl?.value\">\n <h3>\n @{{\n SourceControlFormControls?.OrganizationFormControl?.value ||\n SourceControl?.Organization\n }}/{{\n SourceControlFormControls?.RepositoryFormControl?.value ||\n SourceControl?.Repository\n }}\n </h3>\n\n <p>Organization and Repository pulled from build settings</p>\n\n <mat-hint>\n CurrentBuild:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </div>\n </mat-form-field>\n\n <div *ngIf=\"SourceControlLookups?.length < 0\">\n <h3>\n Create source control locations under the DevOps tab above.\n </h3>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n\n <div class=\"spread\">\n <div fxFlex></div>\n\n <button mat-button type=\"button\" (click)=\"SetEditingApplication(null)\">\n <mat-icon>cancel</mat-icon> Cancel\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"!ApplicationFormGroup.valid || !ApplicationFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon> Save Application\n </button>\n\n <div fxFlex></div>\n </div>\n </form>\n\n <div class=\"spread\" *ngIf=\"!EditingApplication\">\n <span class=\"apps-actions\">\n <button mat-raised-button color=\"accent\" (click)=\"CreateNewApplication()\">\n <mat-icon color=\"primary\">add</mat-icon> Create New\n </button>\n </span>\n\n <div class=\"spread\" *ngIf=\"!CurrentApplicationRoute\">\n <div *ngIf=\"ApplicationRoutes?.length <= 0\">\n <h2>No applications created, create your first application.</h2>\n </div>\n\n <div *ngIf=\"ApplicationRoutes?.length > 0\">\n <h2>Project Routes</h2>\n\n <div\n fxLayout=\"row wrap\"\n fxLayout.lt-md=\"column\"\n *ngIf=\"ApplicationRoutes\"\n >\n <div\n fxFlex=\"20%\"\n fxFlex.lt-md=\"100%\"\n *ngFor=\"let appRoute of ApplicationRoutes\"\n >\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <!-- <img mat-card-avatar=\"/assets/images/project-icon.png\" /> -->\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"appRoute\"\n >\n {{ appRoute }}\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\"></div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <a\n mat-icon-button\n href=\"https://{{ PrimaryHost }}{{ appRoute }}\"\n target=\"_blank\"\n >\n <mat-icon matTooltip=\"Launch\">launch</mat-icon>\n </a>\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"EditApplicationRouteClicked(appRoute)\"\n >\n <mat-icon matTooltip=\"Edit Application Route\">\n settings\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"CurrentApplicationRoute\">\n <h2>\n <button\n mat-icon-button\n matTooltip=\"Back to Routes\"\n (click)=\"CurrentApplicationRoute = null\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n\n {{ CurrentApplicationRoute }} Routes\n </h2>\n\n <div fxLayout=\"row wrap\" fxLayout.lt-md=\"column\">\n <ng-container *ngFor=\"let appLookup of CurrentRouteApplicationLookups\">\n <div\n fxFlex=\"30%\"\n fxFlex.lt-md=\"100%\"\n *ngIf=\"\n RoutedApplications[CurrentApplicationRoute][appLookup];\n let app\n \"\n >\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <!-- <img mat-card-avatar=\"/assets/images/project-icon.png\" /> -->\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"app.Application.Description\"\n >\n {{ app.Application.Name }}\n </mat-card-title>\n\n <mat-card-subtitle\n class=\"mat-subheading-1\"\n [matTooltip]=\"\n app.LowCodeUnit?.CurrentVersion ||\n app.LowCodeUnit?.CurrentBuild\n \"\n >\n @{{\n app.LowCodeUnit?.CurrentVersion ||\n app.LowCodeUnit?.CurrentBuild ||\n app.Processor?.Redirect ||\n \"No version deployed\"\n }}\n </mat-card-subtitle>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\"></div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <a\n mat-icon-button\n href=\"https://{{ PrimaryHost }}{{\n app.LookupConfig.PathRegex.replace('.*', '')\n }}\"\n target=\"_blank\"\n >\n <mat-icon matTooltip=\"Launch\">launch</mat-icon>\n </a>\n\n <a\n *ngIf=\"GetProcessorType(appLookup) === 'DFS'\"\n mat-icon-button\n (click)=\"Unpack(appLookup, app)\"\n target=\"_blank\"\n matTooltip=\"Unpack {{\n app.LowCodeUnit?.Version || app.LowCodeUnit?.Build\n }}\"\n >\n <mat-icon>cloud_upload</mat-icon>\n </a>\n\n <button\n mat-icon-button\n (click)=\"SetEditingApplication(appLookup)\"\n >\n <mat-icon matTooltip=\"Edit Application\"> edit </mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"DeleteApplication(appLookup, app.Application.Name)\"\n >\n <mat-icon matTooltip=\"Delete {{ app.Application.Name }}\">\n delete_forever\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled \n *ngIf=\"GetProcessorType(appLookup) === 'DFS'\">\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { EaCDevOpsAction, EaCArtifact } from '@semanticjs/common';\nimport {\n ProjectHostingDetails,\n ProjectHostingOption,\n} from '../../../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-hosting-details-form-group',\n templateUrl: './hosting-details-form-group.component.html',\n styleUrls: ['./hosting-details-form-group.component.scss'],\n})\nexport class HostingDetailsFormGroupComponent implements OnChanges, OnInit {\n // Fields\n\n // Properties\n @Input('artifact')\n public Artifact: EaCArtifact;\n\n @Input('build-pipeline')\n public BuildPipeline: string;\n\n public get BuildPipelineFormControl(): AbstractControl {\n return this.FormGroup.get('buildPipeline');\n }\n\n @Input('details')\n public Details: ProjectHostingDetails;\n\n @Input('devops-action')\n public DevOpsAction: EaCDevOpsAction;\n\n public get DevOpsActionNameFormControl(): AbstractControl {\n return this.FormGroup.get('devOpsActionName');\n }\n\n @Input('disabled')\n public Disabled: boolean;\n\n public get FormGroup(): FormGroup {\n return this.ParentFormGroup.get('hostingDetails') as FormGroup;\n }\n\n public get NPMTokenFormControl(): AbstractControl {\n return this.FormGroup.get('npmToken');\n }\n\n @Input('organization')\n public Organization: string;\n\n @Input('formGroup')\n public ParentFormGroup: FormGroup;\n\n public get SelectedHostingOption(): ProjectHostingOption {\n return this.Details?.HostingOptions?.find(\n (ho) => ho.Lookup === this.BuildPipeline\n );\n }\n\n public get SelectedHostingOptionInputControlValues(): {\n [lookup: string]: any;\n } {\n return this.SelectedHostingOption?.Inputs?.reduce((prev, cur) => {\n const res = {\n ...prev,\n };\n\n res[cur.Lookup] = this.FormGroup.controls[cur.Lookup].value;\n\n return res;\n }, {});\n }\n\n // Constructors\n constructor(protected formBuilder: FormBuilder) {}\n\n // Life Cycle\n public ngOnChanges(): void {}\n\n public ngOnInit(): void {\n\n\n this.BuildPipeline =\n this.BuildPipeline || this.Details?.HostingOptions\n ? this.Details?.HostingOptions[0]?.Lookup\n : '';\n\n if (this.FormGroup != null) {\n this.ParentFormGroup.removeControl('hostingDetails');\n }\n\n this.ParentFormGroup.addControl(\n 'hostingDetails',\n this.formBuilder.group({\n buildPipeline: [this.BuildPipeline, [Validators.required]],\n })\n );\n\n this.setupControlsForForm();\n }\n\n // API Methods\n public BuildPipelineChanged(): void {\n this.BuildPipeline = this.BuildPipelineFormControl.value;\n\n this.setupControlsForForm();\n }\n\n // Helpers\n protected setupControlsForForm(): void {\n for (const ctrlName in this.FormGroup.controls) {\n if (ctrlName !== 'buildPipeline' && ctrlName !== 'devOpsAction') {\n this.FormGroup.removeControl(ctrlName);\n }\n }\n\n this.FormGroup.addControl(\n 'devOpsActionName',\n this.formBuilder.control(\n this.DevOpsAction?.Name || this.SelectedHostingOption?.Name || '',\n [Validators.required]\n )\n );\n\n this.SelectedHostingOption?.Inputs?.forEach((input) => {\n const validators = input.Required ? [Validators.required] : [];\n\n this.FormGroup.addControl(\n input.Lookup,\n this.formBuilder.control(\n this.Artifact[input.Lookup] || input.DefaultValue || '',\n validators\n )\n );\n\n // if (this.Disabled) {\n // this.FormGroup.controls[input.Lookup].disable();\n // }\n });\n\n if (this.BuildPipelineFormControl.value === 'npm-release') {\n if (!this.FormGroup.controls.npmToken) {\n this.FormGroup.addControl(\n 'npmToken',\n this.formBuilder.control(\n '',\n this.Disabled ? [] : [Validators.required]\n )\n );\n\n if (this.Disabled) {\n this.FormGroup.controls.npmToken.disable();\n }\n }\n } else if (\n this.BuildPipelineFormControl.value === 'github-artifacts-release'\n ) {\n if (this.FormGroup.controls.npmToken) {\n this.FormGroup.removeControl('npmToken');\n }\n }\n }\n}\n","<div [formGroup]=\"FormGroup\" *ngIf=\"!Details?.Loading\">\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n formControlName=\"buildPipeline\"\n placeholder=\"Build Pipeline\"\n [disabled]=\"Disabled\"\n (selectionChange)=\"BuildPipelineChanged()\"\n required\n >\n <ng-container\n *ngFor=\"let hostOption of Details?.HostingOptions; let i = index\"\n >\n <mat-option [value]=\"hostOption?.Lookup\">\n {{ hostOption.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n <ng-container *ngFor=\"let hostOption of Details?.HostingOptions\">\n <span *ngIf=\"BuildPipeline == hostOption?.Lookup\">\n {{ hostOption.Description }}\n </span>\n </ng-container>\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"devOpsActionName\"\n placeholder=\"Name of DevOps Action\"\n required=\"true\"\n />\n </mat-form-field>\n\n <ng-container *ngFor=\"let input of SelectedHostingOption?.Inputs\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n [formControlName]=\"input.Lookup\"\n [placeholder]=\"input.Placeholder\"\n [required]=\"input.Required\"\n />\n\n <mat-hint>{{ input.Hint }}</mat-hint>\n </mat-form-field>\n </ng-container>\n\n <div *ngIf=\"BuildPipeline == 'npm-release'\">\n <mat-form-field class=\"mat-full-width with-hint padding-bottom-4\">\n <mat-icon matPrefix>security</mat-icon>\n\n <input\n id=\"npm-token\"\n matInput\n type=\"text\"\n formControlName=\"npmToken\"\n placeholder=\"NPM token\"\n [required]=\"!Disabled\"\n style=\"-webkit-text-security: disc;\"\n />\n <mat-hint>\n Securely publish to NPM, provide an NPM Personal Access Token (PAT) with publish access to the organization used for your NPM packages. \n Learn how to create and view access tokens \n <a\n href=\"https://docs.npmjs.com/creating-and-viewing-access-tokens\"\n target=\"_blank\"\n >\n here.\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n</div>\n\n<div *ngIf=\"Details?.Loading\">\n <div class=\"spread\">\n <lcu-loader style=\"margin: auto\" [loading]=\"true\"></lcu-loader>\n\n <div class=\"margin-3\">\n <h4 class=\"mat-title\">Loading hosting details</h4>\n </div>\n </div>\n</div>\n","\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n} from '@angular/forms';\nimport {\n EaCService,\n SaveEnvironmentAsCodeEventRequest,\n} from '../../../../../services/eac.service';\nimport {\n EaCArtifact,\n EaCDevOpsAction,\n EaCEnvironmentAsCode,\n EaCSourceControl,\n} from '@semanticjs/common';\nimport { BaseModeledResponse, Guid } from '@lcu/common';\nimport { MatSelectChange } from '@angular/material/select';\nimport { SourceControlFormControlsComponent } from '../../forms/source-control/source-control.component';\nimport { ProjectHostingDetails } from '../../../../../state/applications-flow.state';\nimport { ApplicationsFlowService } from '../../../../../services/applications-flow.service';\nimport { HostingDetailsFormGroupComponent } from '../../hosting-details-form-group/hosting-details-form-group.component';\n\n@Component({\n selector: 'lcu-devops',\n templateUrl: './devops.component.html',\n styleUrls: ['./devops.component.scss'],\n})\nexport class DevOpsComponent implements OnInit {\n // Fields\n\n // Properties\n public DevOpsFormGroup: FormGroup;\n\n public get Artifact(): EaCArtifact {\n return this.Data.Environment.Artifacts && this.ArtifactLookup\n ? this.Data.Environment.Artifacts[this.ArtifactLookup] || {}\n : {};\n }\n\n public get ArtifactLookup(): string {\n const artLookup = this.DevOpsAction?.ArtifactLookups\n ? this.DevOpsAction?.ArtifactLookups[0]\n : null;\n\n return artLookup;\n }\n\n @Input('data')\n public Data: {\n Environment: EaCEnvironmentAsCode;\n EnvironmentLookup: string;\n };\n\n public get DefaultFileFormControl(): AbstractControl {\n return this.DevOpsFormGroup?.controls.defaultFile;\n }\n\n public get DevOpsAction(): EaCDevOpsAction {\n return this.Data.Environment.DevOpsActions && this.DevOpsActionLookup\n ? this.Data.Environment.DevOpsActions[this.DevOpsActionLookup] || {}\n : {};\n }\n\n public get DevOpsActionLookup(): string {\n if (!!this.DevOpsActionLookupFormControl?.value) {\n return this.DevOpsActionLookupFormControl.value;\n }\n\n if (!!this.EditingSourceControl?.DevOpsActionTriggerLookups) {\n return this.EditingSourceControl?.DevOpsActionTriggerLookups[0];\n } else {\n return null;\n }\n }\n\n public get DevOpsActionLookups(): Array<string> {\n return Object.keys(this.DevOpsActions || {});\n }\n\n public get DevOpsActionLookupFormControl(): AbstractControl {\n return this.DevOpsFormGroup.get('devOpsActionLookup');\n }\n\n public get DevOpsActions(): { [lookup: string]: EaCDevOpsAction } {\n return this.Data.Environment.DevOpsActions || {};\n }\n\n public get EditingSourceControl(): EaCSourceControl {\n let sc = this.Data?.Environment?.Sources\n ? this.Data?.Environment?.Sources[this.EditingSourceControlLookup]\n : null;\n\n if (sc == null && this.EditingSourceControlLookup) {\n sc = {};\n }\n\n return sc;\n }\n\n public EditingSourceControlLookup: string;\n\n public HostingDetails: ProjectHostingDetails;\n\n @ViewChild(HostingDetailsFormGroupComponent)\n public HostingDetailsFormControls: HostingDetailsFormGroupComponent;\n\n @ViewChild(SourceControlFormControlsComponent)\n public SourceControlFormControls: SourceControlFormControlsComponent;\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.SourceControls || {});\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Data.Environment.Sources || {};\n }\n\n // Constructors\n constructor(\n protected formBldr: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService\n ) {\n this.EditingSourceControlLookup = null;\n\n this.HostingDetails = new ProjectHostingDetails();\n }\n\n // Life Cycle\n public ngOnInit(): void {\n if (this.SourceControlLookups?.length <= 0) {\n this.CreateNewSourceControl();\n }\n }\n\n // API Methods\n public BranchesChanged(branches: string[]): void {\n this.loadProjectHostingDetails();\n }\n\n public CreateNewSourceControl(): void {\n this.SetEditingSourceControl(Guid.CreateRaw());\n }\n\n public DeleteSourceControl(scLookup: string): void {\n if (\n confirm(`Are you sure you want to delete source control '${scLookup}'?`)\n ) {\n this.eacSvc.DeleteSourceControl(scLookup);\n }\n }\n\n public DevOpsActionLookupChanged(event: MatSelectChange): void {\n this.configureDevOpsAction();\n }\n\n public SaveEnvironment(): void {\n const saveEnvReq: SaveEnvironmentAsCodeEventRequest = {\n Environment: {\n ...this.Data.Environment,\n Artifacts: this.Data.Environment.Artifacts || {},\n DevOpsActions: this.Data.Environment.DevOpsActions || {},\n Secrets: this.Data.Environment.Secrets || {},\n Sources: this.Data.Environment.Sources || {},\n },\n EnvironmentLookup: this.Data.EnvironmentLookup,\n EnterpriseDataTokens: {},\n };\n\n let artifactLookup: string;\n\n let artifact: EaCArtifact = {\n ...this.Artifact,\n ...this.HostingDetailsFormControls\n .SelectedHostingOptionInputControlValues,\n };\n\n if (!this.ArtifactLookup) {\n artifactLookup = Guid.CreateRaw();\n\n artifact = {\n ...artifact,\n Type: this.HostingDetailsFormControls.SelectedHostingOption\n .ArtifactType,\n Name: this.HostingDetailsFormControls.SelectedHostingOption.Name,\n NPMRegistry: 'https://registry.npmjs.org/',\n };\n } else {\n artifactLookup = this.ArtifactLookup;\n }\n\n saveEnvReq.Environment.Artifacts[artifactLookup] = artifact;\n\n let devOpsActionLookup: string;\n\n if (!this.DevOpsActionLookup) {\n devOpsActionLookup = Guid.CreateRaw();\n\n const doa: EaCDevOpsAction = {\n ...this.DevOpsAction,\n ArtifactLookups: [artifactLookup],\n Name: this.HostingDetailsFormControls.DevOpsActionNameFormControl.value,\n Path: this.HostingDetailsFormControls.SelectedHostingOption.Path,\n Templates:\n this.HostingDetailsFormControls.SelectedHostingOption.Templates,\n };\n\n if (this.HostingDetailsFormControls.NPMTokenFormControl?.value) {\n const secretLookup = 'npm-access-token';\n\n doa.SecretLookups = [secretLookup];\n\n saveEnvReq.Environment.Secrets[secretLookup] = {\n Name: 'NPM Access Token',\n DataTokenLookup: secretLookup,\n KnownAs: 'NPM_TOKEN',\n };\n\n saveEnvReq.EnterpriseDataTokens[secretLookup] = {\n Name: saveEnvReq.Environment.Secrets[secretLookup].Name,\n Description: saveEnvReq.Environment.Secrets[secretLookup].Name,\n Value: this.HostingDetailsFormControls.NPMTokenFormControl.value,\n };\n }\n\n saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;\n } else {\n devOpsActionLookup = this.DevOpsActionLookupFormControl.value;\n\n const doa: EaCDevOpsAction = {\n ...this.DevOpsAction,\n Name: this.HostingDetailsFormControls.DevOpsActionNameFormControl.value,\n };\n\n saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;\n }\n\n let source: EaCSourceControl = {\n ...this.EditingSourceControl,\n Branches: this.SourceControlFormControls.SelectedBranches,\n MainBranch: this.SourceControlFormControls.MainBranchFormControl.value,\n };\n\n source = {\n ...source,\n Type: 'GitHub',\n Name: this.EditingSourceControlLookup,\n DevOpsActionTriggerLookups: [devOpsActionLookup],\n Organization:\n this.SourceControlFormControls.OrganizationFormControl.value,\n Repository: this.SourceControlFormControls.RepositoryFormControl.value,\n };\n\n const scLookup = `github://${source.Organization}/${source.Repository}`;\n\n saveEnvReq.Environment.Sources[scLookup] = source;\n\n this.eacSvc.SaveEnvironmentAsCode(saveEnvReq);\n }\n\n public SetEditingSourceControl(scLookup: string): void {\n this.EditingSourceControlLookup = scLookup;\n\n this.setupDevOpsForm();\n }\n\n // Helpers\n protected configureDevOpsAction(): void {\n setTimeout(() => {\n this.DevOpsActionLookupFormControl.setValue(this.DevOpsActionLookup);\n\n setTimeout(() => {\n const hostOption = this.HostingDetails?.HostingOptions?.find(\n (ho) => ho.Path === this.DevOpsAction.Path\n );\n\n this.HostingDetailsFormControls?.BuildPipelineFormControl.setValue(\n hostOption?.Lookup\n );\n\n this.HostingDetailsFormControls?.BuildPipelineChanged();\n }, 0);\n }, 0);\n }\n\n protected loadProjectHostingDetails(): void {\n if (this.SourceControlFormControls?.SelectedBranches?.length > 0) {\n this.HostingDetails.Loading = true;\n\n this.appsFlowSvc\n .LoadProjectHostingDetails()\n .subscribe(\n (response: BaseModeledResponse<ProjectHostingDetails>) => {\n this.HostingDetails = response.Model;\n\n this.HostingDetails.Loading = false;\n\n this.configureDevOpsAction();\n },\n (err) => {\n this.HostingDetails.Loading = false;\n }\n );\n }\n }\n\n protected setupDevOpsForm(): void {\n if (this.EditingSourceControl != null) {\n this.DevOpsFormGroup = this.formBldr.group({});\n\n this.setupBuildForm();\n }\n }\n\n protected setupBuildForm(): void {\n this.DevOpsFormGroup.addControl(\n 'devOpsActionLookup',\n this.formBldr.control(this.DevOpsActionLookup || '', [])\n );\n }\n}\n","<div>\n <form\n [formGroup]=\"DevOpsFormGroup\"\n (ngSubmit)=\"SaveEnvironment()\"\n *ngIf=\"EditingSourceControl\"\n >\n <div\n fxLayout=\"row wrap\"\n fxLayoutAlign=\"center start\"\n fxLayout.lt-md=\"column\"\n >\n <div class=\"form-card\" fxFlex=\"35%\" fxFlex.lt-md=\"100%\">\n <mat-card class=\"spread\">\n <mat-card-header>\n <mat-card-title> Source Control </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-icon\n matSuffix\n matTooltip=\"Configure source control, DevOps CI/CD, and artifacts.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <lcu-source-control-form-controls\n [branches-disabled]=\"HostingDetails?.Loading\"\n [form-group]=\"DevOpsFormGroup\"\n [org-disabled]=\"HostingDetails?.Loading\"\n [repo-disabled]=\"HostingDetails?.Loading\"\n [source-control]=\"EditingSourceControl\"\n (branches-changed)=\"BranchesChanged($event)\"\n ></lcu-source-control-form-controls>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div class=\"form-card\" fxFlex=\"35%\" fxFlex.lt-md=\"100%\">\n <mat-card\n class=\"spread\"\n *ngIf=\"\n SourceControlFormControls?.SelectedBranches?.length > 0 ||\n EditingSourceControl?.Branches?.length > 0\n \"\n >\n <mat-card-header>\n <mat-card-title> Build Pipeline </mat-card-title>\n\n <mat-hint>\n Changes made here are reflected for all sources using this\n DevOpsAction\n </mat-hint>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n formControlName=\"devOpsActionLookup\"\n placeholder=\"DevOps Action\"\n [disabled]=\"\n SourceControlLookupFormControl?.value ||\n SourceControlFormControls?.Loading ||\n HostingDetails?.Loading\n \"\n (selectionChange)=\"DevOpsActionLookupChanged($event)\"\n >\n <ng-container\n *ngFor=\"let devOpsActionLookup of DevOpsActionLookups\"\n >\n <mat-option\n [value]=\"devOpsActionLookup\"\n *ngIf=\"DevOpsActions[devOpsActionLookup]; let devOpsAction\"\n >\n {{ devOpsAction.Name }}\n </mat-option>\n </ng-container>\n\n <mat-option value=\"\">-- Create New --</mat-option>\n </mat-select>\n </mat-form-field>\n\n <ng-container>\n <lcu-hosting-details-form-group\n [artifact]=\"Artifact\"\n [devops-action]=\"\n DevOpsActions[DevOpsActionLookupFormControl?.value]\n \"\n [details]=\"HostingDetails\"\n [formGroup]=\"DevOpsFormGroup\"\n [organization]=\"\n SourceControlFormControls?.OrganizationFormControl?.value\n \"\n [disabled]=\"\n !!DevOpsActionLookupFormControl?.value ||\n SourceControlFormControls?.Loading ||\n HostingDetails?.Loading\n \"\n ></lcu-hosting-details-form-group>\n </ng-container>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n\n <div class=\"spread\">\n <div fxFlex></div>\n\n <button mat-button type=\"button\" (click)=\"SetEditingSourceControl(null)\">\n <mat-icon>cancel</mat-icon> Cancel\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"!DevOpsFormGroup.valid || !DevOpsFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon> Save Application\n </button>\n\n <div fxFlex></div>\n </div>\n </form>\n\n <div class=\"spread\" *ngIf=\"!EditingSourceControl\">\n <span class=\"apps-actions\">\n <button\n mat-raised-button\n color=\"accent\"\n (click)=\"CreateNewSourceControl()\"\n >\n <mat-icon color=\"primary\">add</mat-icon> Create New\n </button>\n </span>\n\n <div class=\"spread\">\n <div *ngIf=\"SourceControlLookups?.length <= 0\">\n <h2>No source controls created, create your first source control.</h2>\n </div>\n\n <div *ngIf=\"SourceControlLookups?.length > 0\">\n <h2>Source Controls</h2>\n\n <div fxLayout=\"row wrap\" fxLayout.lt-md=\"column\">\n <div\n fxFlex=\"30%\"\n fxFlex.lt-md=\"100%\"\n *ngFor=\"let sourceControlLookup of SourceControlLookups\"\n >\n <mat-card class=\"spread\">\n <mat-card-header>\n <!-- <img mat-card-avatar=\"/assets/images/project-icon.png\" /> -->\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"sourceControlLookup\"\n >\n {{ sourceControlLookup }}\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\"></div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"SetEditingSourceControl(sourceControlLookup)\"\n >\n <mat-icon matTooltip=\"Edit Source Control\">\n settings\n </mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"DeleteSourceControl(sourceControlLookup)\"\n >\n <mat-icon matTooltip=\"Delete {{ sourceControlLookup }}\">\n delete_forever\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","\nimport { Component, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport {\n EaCService,\n SaveDFSModifierEventRequest,\n} from '../../../../../services/eac.service';\nimport {\n EaCApplicationAsCode,\n EaCArtifact,\n EaCDevOpsAction,\n EaCDFSModifier,\n EaCEnvironmentAsCode,\n EaCProcessor,\n EaCProjectAsCode,\n EaCSourceControl,\n} from '@semanticjs/common';\nimport { BaseModeledResponse, Guid } from '@lcu/common';\nimport { MatSelectChange } from '@angular/material/select';\nimport { SourceControlFormControlsComponent } from '../../forms/source-control/source-control.component';\nimport { ProjectHostingDetails } from '../../../../../state/applications-flow.state';\nimport { ApplicationsFlowService } from '../../../../../services/applications-flow.service';\nimport { HostingDetailsFormGroupComponent } from '../../hosting-details-form-group/hosting-details-form-group.component';\n\n@Component({\n selector: 'lcu-dfs-modifiers',\n templateUrl: './dfs-modifiers.component.html',\n styleUrls: ['./dfs-modifiers.component.scss'],\n})\nexport class DFSModifiersComponent implements OnInit {\n // Fields\n\n // Properties\n public CurrentType: string;\n\n @Input('data')\n public Data: {\n Modifiers: { [lookup: string]: EaCDFSModifier };\n Project: EaCProjectAsCode;\n ProjectLookup: string;\n };\n\n public get DetailsFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.details;\n }\n\n public get EditingModifier(): EaCDFSModifier {\n let mdfr = this.Modifiers\n ? this.Modifiers[this.EditingModifierLookup]\n : null;\n\n if (mdfr == null && this.EditingModifierLookup) {\n mdfr = {};\n }\n\n return mdfr;\n }\n\n public EditingModifierLookup: string;\n\n public get EnabledFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.enabled;\n }\n\n public get LocationFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.location;\n }\n\n public ModifierFormGroup: FormGroup;\n\n public get ModifierLookups(): Array<string> {\n return Object.keys(this.Modifiers || {});\n }\n\n public get Modifiers(): { [lookup: string]: EaCDFSModifier } {\n return this.Data.Modifiers || {};\n }\n\n public get NameFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.name;\n }\n\n public get PathFilterFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.pathFilter;\n }\n\n public get PriorityFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.priority;\n }\n\n public get Project(): EaCProjectAsCode {\n return this.Data.Project || {};\n }\n\n public get ScriptFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.script;\n }\n\n public get ScriptIDFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.scriptId;\n }\n\n public get StateDataTokenFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.stateDataToken;\n }\n\n public get TypeFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.type;\n }\n\n // Constructors\n constructor(\n protected formBldr: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService\n ) {\n this.EditingModifierLookup = null;\n }\n\n // Life Cycle\n public ngOnInit(): void {\n if (this.ModifierLookups?.length <= 0) {\n this.CreateNewModifier();\n }\n }\n\n // API Methods\n public CreateNewModifier(): void {\n this.SetEditingModifier(Guid.CreateRaw());\n }\n\n public DeleteModifier(modifierLookup: string, modifierName: string): void {\n if (\n confirm(`Are you sure you want to delete modifier '${modifierName}'?`)\n ) {\n this.eacSvc.DeleteSourceControl(modifierLookup);\n }\n }\n\n public SaveModifier(projectLookup: string = null): void {\n const saveMdfrReq: SaveDFSModifierEventRequest = {\n Modifier: {\n ...this.EditingModifier,\n Name: this.NameFormControl.value,\n Enabled: this.EnabledFormControl.value,\n PathFilterRegex: this.PathFilterFormControl.value,\n Priority: this.PriorityFormControl.value,\n Type: this.CurrentType,\n },\n ModifierLookup: this.EditingModifierLookup,\n ProjectLookup: projectLookup,\n };\n\n const details = {};\n\n switch (this.CurrentType) {\n case 'LCU.Runtime.Applications.Modifiers.HTMLBaseDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n details['StateDataToken'] = this.StateDataTokenFormControl.value;\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n details['Location'] = this.LocationFormControl.value;\n\n details['Script'] = this.ScriptFormControl.value;\n\n details['ScriptID'] = this.ScriptIDFormControl.value;\n break;\n }\n\n saveMdfrReq.Modifier.Details = JSON.stringify(details);\n\n this.eacSvc.SaveDFSModifier(saveMdfrReq);\n }\n\n public SetEditingModifier(modifierLookup: string): void {\n this.EditingModifierLookup = modifierLookup;\n\n this.setupModifierForm();\n }\n\n public SetUseForProject(\n modifierLookup: string,\n change: MatSlideToggleChange\n ): void {\n this.SetEditingModifier(modifierLookup);\n\n this.SaveModifier(this.Data.ProjectLookup);\n }\n\n public TypeChanged(event: MatSelectChange): void {\n this.CurrentType = event.value;\n\n this.setupTypeForm();\n }\n\n // Helpers\n protected setupModifierForm(): void {\n if (this.EditingModifier != null) {\n this.CurrentType = this.EditingModifier?.Type;\n\n this.ModifierFormGroup = this.formBldr.group({\n name: [this.EditingModifier?.Name, Validators.required],\n type: [this.CurrentType, Validators.required],\n priority: [this.EditingModifier?.Priority, Validators.required],\n enabled: [this.EditingModifier?.Enabled, []],\n pathFilter: [\n this.EditingModifier?.PathFilterRegex,\n Validators.required,\n ],\n });\n\n this.setupTypeForm();\n }\n }\n\n protected setupTypeForm(): void {\n this.ModifierFormGroup.removeControl('stateDataToken');\n\n this.ModifierFormGroup.removeControl('location');\n this.ModifierFormGroup.removeControl('script');\n this.ModifierFormGroup.removeControl('scriptId');\n\n const details = JSON.parse(this.EditingModifier?.Details || '{}');\n\n switch (this.CurrentType) {\n case 'LCU.Runtime.Applications.Modifiers.HTMLBaseDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n this.ModifierFormGroup.addControl(\n 'stateDataToken',\n this.formBldr.control(details?.StateDataToken || '', [\n Validators.required,\n ])\n );\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n this.ModifierFormGroup.addControl(\n 'location',\n this.formBldr.control(details?.Location || '', [Validators.required])\n );\n\n this.ModifierFormGroup.addControl(\n 'script',\n this.formBldr.control(details?.Script || '', [Validators.required])\n );\n\n this.ModifierFormGroup.addControl(\n 'scriptId',\n this.formBldr.control(details?.ScriptID || '', [Validators.required])\n );\n break;\n }\n }\n}\n","<div>\n <form\n [formGroup]=\"ModifierFormGroup\"\n (ngSubmit)=\"SaveModifier()\"\n *ngIf=\"EditingModifier\"\n >\n <div class=\"form-card\">\n <mat-card class=\"spread\">\n <mat-card-header>\n <mat-card-title> DFS Modifier </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-icon\n matSuffix\n matTooltip=\"Configure modifiers for your DFS files.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"name\"\n placeholder=\"Name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"priority\"\n placeholder=\"Priority\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"pathFilter\"\n placeholder=\"Path Filter (regex)\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n formControlName=\"type\"\n placeholder=\"DFS Modifier Type\"\n (selectionChange)=\"TypeChanged($event)\"\n >\n <mat-option\n value=\"LCU.Runtime.Applications.Modifiers.HTMLBaseDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\"\n >\n HTML Base Modfier\n </mat-option>\n\n <mat-option\n value=\"LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\"\n >\n LCU Reg Modfier\n </mat-option>\n\n <mat-option\n value=\"LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\"\n >\n Thrid Party Library Modifier\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <ng-container\n *ngIf=\"\n CurrentType ==\n 'LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'\n \"\n >\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"stateDataToken\"\n placeholder=\"State Data Token\"\n required\n />\n </mat-form-field>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n CurrentType ==\n 'LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'\n \"\n >\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"location\"\n placeholder=\"Location\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"scriptId\"\n placeholder=\"Script ID\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n formControlName=\"script\"\n placeholder=\"Script\"\n required></textarea>\n </mat-form-field>\n </ng-container>\n\n <mat-slide-toggle class=\"spread\" formControlName=\"enabled\">\n Is Enabled?\n </mat-slide-toggle>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div class=\"spread\">\n <div fxFlex></div>\n\n <button mat-button type=\"button\" (click)=\"SetEditingModifier(null)\">\n <mat-icon>cancel</mat-icon> Cancel\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"!ModifierFormGroup.valid || !ModifierFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon> Save DFS Modifier\n </button>\n\n <div fxFlex></div>\n </div>\n </form>\n\n <div class=\"spread\" *ngIf=\"!EditingModifier\">\n <span class=\"apps-actions\">\n <button mat-raised-button color=\"accent\" (click)=\"CreateNewModifier()\">\n <mat-icon color=\"primary\">add</mat-icon> Create New\n </button>\n </span>\n\n <div class=\"spread\">\n <div *ngIf=\"ModifierLookups?.length <= 0\">\n <h2>No DFS modifiers created, create your first DFS modifier.</h2>\n </div>\n\n <div *ngIf=\"ModifierLookups?.length > 0\">\n <h2>DFS Modifiers</h2>\n\n <div fxLayout=\"row wrap\" fxLayout.lt-md=\"column\">\n <div\n fxFlex=\"30%\"\n fxFlex.lt-md=\"100%\"\n *ngFor=\"let modifierLookup of ModifierLookups\"\n >\n <mat-card\n class=\"spread\"\n *ngIf=\"Modifiers[modifierLookup]; let modifier\"\n >\n <mat-card-header>\n <!-- <img mat-card-avatar=\"/assets/images/project-icon.png\" /> -->\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"modifier.Name\"\n >\n {{ modifier.Name || modifier.Lookup }}\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n class=\"spread\"\n [checked]=\"\n Project?.ModifierLookups.indexOf(modifierLookup) >= 0\n \"\n (change)=\"SetUseForProject(modifierLookup, $event)\"\n matTooltip=\"Use for project?\"\n >\n </mat-slide-toggle>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\"></div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"SetEditingModifier(modifierLookup)\"\n >\n <mat-icon matTooltip=\"Edit DFS Modifier\">\n settings\n </mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"DeleteModifier(modifierLookup, modifier.Name)\"\n >\n <mat-icon matTooltip=\"Delete {{ modifier.Name }}\">\n delete_forever\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { FormsService } from './../../services/forms.service';\nimport { Subscription } from 'rxjs';\nimport { DynamicTabsModel } from './../../models/dynamic-tabs.model';\nimport { \n AfterViewInit, \n Component, \n Input, \n OnInit, \n ViewChild, \n ViewContainerRef } from '@angular/core';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\n\n@Component({\n selector: 'lcu-dynamic-tabs',\n templateUrl: './dynamic-tabs.component.html',\n styleUrls: ['./dynamic-tabs.component.scss']\n})\n\nexport class DynamicTabsComponent implements OnInit, AfterViewInit {\n\n /**\n * Container used to display dynamic components\n */\n @ViewChild('container', {read: ViewContainerRef, static: false})\n protected viewContainer: ViewContainerRef;\n\n @Input('background-color')\n public BackgroundColor: string;\n\n @Input('color')\n public Color: string;\n\n /**\n * Form is dirty flag\n */\n public FormIsDirty: boolean;\n\n /**\n * Listener for when any form is dirty\n */\n protected formIsDirtySubscription: Subscription;\n\n /**\n * Components loaded as dynamic components\n */ \n @Input('tab-components')\n public TabComponents: Array<DynamicTabsModel>;\n\n constructor(\n protected viewContainerRef: ViewContainerRef,\n protected formsService: FormsService) { }\n\n // Lifecycle hook\n public ngOnInit(): void {\n\n // listen for any form to be dirty, then disable all tabs except for the current tab\n this.formIsDirtySubscription = this.formsService.FormIsDirty.subscribe(\n (val: boolean) => {\n this.FormIsDirty = val;\n });\n }\n\n public ngAfterViewInit(): void {\n this.renderComponent(0);\n }\n\n /**\n * Tab change event\n *\n * @param index selected tab index\n */\n public TabChanged(evt: MatTabChangeEvent): void {\n\n setTimeout(() => {\n this.renderComponent(evt.index);\n }, 1000);\n }\n\n /**\n * Render component for the active tab\n *\n * @param index TabComponents index position\n */\n protected renderComponent(index: number): any {\n\n if (!this.TabComponents) {\n return;\n }\n const componentRef = this.viewContainerRef.createComponent(this.TabComponents[index].Component);\n\n // factory for creating a dynamic component\n // const factory: ComponentFactory<any> = this.componentFactoryResolver\n // .resolveComponentFactory(this.TabComponents[index].Component);\n\n // component created by a factory\n // const componentRef: ComponentRef<any> = this.viewContainer.createComponent(factory);\n\n // current component instance\n const instance: DynamicTabsComponent = componentRef.instance as DynamicTabsComponent;\n\n // find the current component in TabComponents and set the data\n this.TabComponents.find((comp: DynamicTabsModel) => {\n if (comp.Component.name === instance.constructor.name) {\n instance['Data'] = comp.Data;\n }\n });\n }\n}\n","<mat-tab-group \n [color]=\"Color\" \n [backgroundColor]=\"BackgroundColor\" \n (selectedTabChange)=\"TabChanged($event)\">\n <!-- <div>\n\n </div> -->\n <mat-tab\n *ngFor=\"let component of TabComponents\"\n #tab\n [disabled]='!tab.isActive && FormIsDirty'>\n <ng-template mat-tab-label>\n <mat-icon [color]=\"Color\" class=\"margin-right-2\">\n {{ component.Icon }}\n </mat-icon>\n {{ component.Label }}\n </ng-template>\n <ng-template matTabContent>\n <div #container class=\"margin-top-3\"></div>\n </ng-template>\n </mat-tab>\n</mat-tab-group>","import { DomainsComponent } from './../tabs/domains/domains.component';\nimport { DynamicTabsModel } from './../../../../models/dynamic-tabs.model';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { GeneralComponent } from '../tabs/general/general.component';\nimport {\n EaCApplicationAsCode,\n EaCDFSModifier,\n EaCEnvironmentAsCode,\n EaCHost,\n EaCProjectAsCode,\n} from '@semanticjs/common';\nimport { AppsFlowComponent } from '../tabs/apps-flow/apps-flow.component';\nimport { DevOpsComponent } from '../tabs/devops/devops.component';\nimport { DFSModifiersComponent } from '../tabs/dfs-modifiers/dfs-modifiers.component';\n\n@Component({\n selector: 'lcu-project-tabs',\n templateUrl: './project-tabs.component.html',\n styleUrls: ['./project-tabs.component.scss'],\n})\nexport class ProjectTabsComponent implements OnInit {\n // Fields\n\n // Properties\n public get ApplicationLookups(): Array<string> {\n return Object.keys(this.Applications || {});\n }\n\n @Input('applications')\n public Applications: { [lookup: string]: EaCApplicationAsCode };\n\n @Input('dfs-modifiers')\n public DFSModifiers: { [lookup: string]: EaCDFSModifier };\n\n @Input('environment')\n public Environment: EaCEnvironmentAsCode;\n\n @Input('environment-lookup')\n public EnvironmentLookup: string;\n\n @Input('hosts')\n public Hosts: { [lookup: string]: EaCHost };\n\n public get PrimaryHost(): string {\n return this.Project.Hosts[this.Project.Hosts.length - 1];\n }\n\n @Input('project')\n public Project: EaCProjectAsCode;\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n public TabComponents: Array<DynamicTabsModel>;\n\n constructor() {}\n\n public ngOnInit(): void {\n this.tabsComponents();\n }\n\n protected tabsComponents(): void {\n this.TabComponents = [\n new DynamicTabsModel({\n Component: AppsFlowComponent,\n Data: {\n Project: this.Project,\n ProjectLookup: this.ProjectLookup,\n Applications: this.Applications,\n Environment: this.Environment,\n PrimaryHost: this.PrimaryHost,\n },\n Label: 'Application Flow',\n Icon: 'account_tree',\n }),\n new DynamicTabsModel({\n Component: DevOpsComponent,\n Data: {\n Environment: this.Environment,\n EnvironmentLookup: this.EnvironmentLookup,\n },\n Label: 'DevOps',\n Icon: 'build',\n }),\n new DynamicTabsModel({\n Component: DFSModifiersComponent,\n Data: {\n Modifiers: this.DFSModifiers,\n Project: this.Project,\n ProjectLookup: this.ProjectLookup,\n },\n Label: 'Modifiers',\n Icon: 'auto_fix_high',\n }),\n new DynamicTabsModel({\n Component: GeneralComponent,\n Data: { Project: this.Project, ProjectLookup: this.ProjectLookup },\n Label: 'General',\n Icon: 'pages',\n }),\n new DynamicTabsModel({\n Component: DomainsComponent,\n Data: {\n Hosts: this.Hosts,\n Project: this.Project,\n ProjectLookup: this.ProjectLookup,\n PrimaryHost: this.PrimaryHost,\n },\n Label: 'Domains',\n Icon: 'domain',\n }),\n ];\n }\n}\n","<lcu-dynamic-tabs \n color=\"accent\" \n [tab-components]=\"TabComponents\">\n</lcu-dynamic-tabs>\n","import {\r\n Component,\r\n OnInit,\r\n Injector,\r\n \r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport {\r\n LCUElementContext,\r\n LcuElementComponent,\r\n BaseResponse,\r\n} from '@lcu/common';\r\nimport { ApplicationsFlowState } from './../../state/applications-flow.state';\r\nimport { ApplicationsFlowService } from '../../services/applications-flow.service';\r\nimport {\r\n EaCEnvironmentAsCode,\r\n EaCProjectAsCode,\r\n} from '@semanticjs/common';\r\nimport { EaCService } from '../../services/eac.service';\r\n\r\ndeclare var window: Window;\r\n\r\nexport class ApplicationsFlowProjectsElementState {}\r\n\r\nexport class ApplicationsFlowProjectsContext extends LCUElementContext<ApplicationsFlowProjectsElementState> {}\r\n\r\nexport const SELECTOR_APPLICATIONS_FLOW_PROJECTS_ELEMENT =\r\n 'applications-flow-projects-element';\r\n\r\n@Component({\r\n selector: SELECTOR_APPLICATIONS_FLOW_PROJECTS_ELEMENT,\r\n templateUrl: './projects.component.html',\r\n styleUrls: ['./projects.component.scss'],\r\n})\r\nexport class ApplicationsFlowProjectsElementComponent\r\n extends LcuElementComponent<ApplicationsFlowProjectsContext>\r\n implements OnDestroy, OnInit\r\n{\r\n // Fields\r\n protected projMon: NodeJS.Timeout;\r\n\r\n // Properties\r\n public get ActiveEnvironment(): EaCEnvironmentAsCode {\r\n return this.State?.EaC?.Environments[this.ActiveEnvironmentLookup];\r\n }\r\n\r\n public get ActiveEnvironmentLookup(): string {\r\n // TODO: Eventually support multiple environments\r\n const envLookups = Object.keys(this.State?.EaC?.Environments || {});\r\n\r\n return envLookups[0];\r\n }\r\n\r\n public get CreatingProject(): boolean {\r\n return this.eacSvc.CreatingProject;\r\n }\r\n\r\n public get EditingProject(): EaCProjectAsCode {\r\n return this.State?.EaC?.Projects\r\n ? this.State?.EaC?.Projects[this.EditingProjectLookup]\r\n : null;\r\n }\r\n\r\n public get EditingProjectLookup(): string {\r\n return this.eacSvc.EditingProjectLookup;\r\n }\r\n\r\n public get ProjectLookups(): Array<string> {\r\n return Object.keys(this.State?.EaC?.Projects || {});\r\n }\r\n\r\n public get State(): ApplicationsFlowState {\r\n return this.eacSvc.State;\r\n }\r\n\r\n // Constructors\r\n constructor(\r\n protected injector: Injector,\r\n protected appsFlowSvc: ApplicationsFlowService,\r\n protected eacSvc: EaCService\r\n ) {\r\n super(injector);\r\n }\r\n\r\n // Life Cycle\r\n public ngOnDestroy(): void {}\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n this.handleStateChange().then((eac) => {});\r\n\r\n // this.setupProjectMonitor();\r\n }\r\n\r\n // API Methods\r\n public async ActiveEnterpriseChanged(event: MatSelectChange): Promise<void> {\r\n await this.eacSvc.SetActiveEnterprise(event.value);\r\n }\r\n\r\n public ConfigureDevOpsAction(devOpsActionLookup: string): void {\r\n this.State.Loading = true;\r\n\r\n this.appsFlowSvc\r\n .ConfigureDevOpsAction(devOpsActionLookup)\r\n .subscribe((response: BaseResponse) => {\r\n if (response.Status.Code === 0) {\r\n this.eacSvc.LoadEnterpriseAsCode();\r\n } else {\r\n this.State.Loading = false;\r\n }\r\n });\r\n }\r\n\r\n // Helpers\r\n protected async handleStateChange(): Promise<void> {\r\n this.State.Loading = true;\r\n }\r\n}\r\n","<app-host-dashboard-card-element\r\n [context]=\"{ Title: 'Projects', Icon: 'language' }\"\r\n>\r\n <nav>\r\n <mat-form-field\r\n class=\"mat-full-width\"\r\n *ngIf=\"State.Enterprises?.length > 1\"\r\n >\r\n <mat-select\r\n placeholder=\"Active Enterprise ({{ State.ActiveEnterpriseLookup }})\"\r\n [value]=\"State.ActiveEnterpriseLookup\"\r\n (selectionChange)=\"ActiveEnterpriseChanged($event)\"\r\n >\r\n <mat-option [value]=\"ent.Lookup\" *ngFor=\"let ent of State.Enterprises\">\r\n {{ ent.Name }}\r\n </mat-option>\r\n </mat-select>\r\n\r\n <!-- Toggle between Caged Krakyn and Unleashed Krakyn (Flow Tool) -->\r\n </mat-form-field>\r\n\r\n <a\r\n mat-icon-button\r\n href=\"/docs/getting-started/setup\"\r\n target=\"_blank\"\r\n lcuEvent=\"click\"\r\n label=\"Projects\"\r\n category=\"help\"\r\n >\r\n <mat-icon matTooltip=\"More info\">help_outline</mat-icon>\r\n </a>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"!State?.Loading\">\r\n <div\r\n fxLayout=\"column\"\r\n fxLayoutAlign=\"center center\"\r\n class=\"margin-bottom-4\"\r\n >\r\n <h2 class=\"mat-display-2 margin-y-2\" *ngIf=\"ProjectLookups?.length <= 0\">\r\n <span> Thank you for signing up </span>\r\n </h2>\r\n </div>\r\n\r\n <!-- <lcu-git-auth *ngIf=\"!State.GitHub.HasConnection\"></lcu-git-auth> -->\r\n\r\n <!-- *ngIf=\"State.GitHub.HasConnection\" -->\r\n <ng-container> \r\n <!-- <div *ngIf=\"!CreatingProject\">\r\n Creating\r\n <lcu-create-project-wizard></lcu-create-project-wizard>\r\n </div> -->\r\n\r\n <ng-container *ngIf=\"!State.Unleashed\">\r\n <ng-container *ngIf=\"State\">\r\n <lcu-projects-header\r\n [creating-project]=\"CreatingProject\"\r\n [projects]=\"State.EaC?.Projects\"\r\n [selected-project-lookup]=\"EditingProjectLookup\"\r\n ></lcu-projects-header>\r\n\r\n <div *ngIf=\"EditingProject\">\r\n <div class=\"divider margin-bottom-3\"></div>\r\n\r\n <lcu-project-tabs\r\n [applications]=\"State.EaC?.Applications\"\r\n [dfs-modifiers]=\"State.EaC?.Modifiers\"\r\n [hosts]=\"State.EaC?.Hosts\"\r\n [project]=\"EditingProject\"\r\n [project-lookup]=\"EditingProjectLookup\"\r\n [environment]=\"ActiveEnvironment\"\r\n [environment-lookup]=\"ActiveEnvironmentLookup\"\r\n class=\"margin-top-3\"\r\n >\r\n </lcu-project-tabs>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"State.Unleashed\">\r\n <!-- Shannon flow tool control implemented -->\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div class=\"loading\" *ngIf=\"State?.Loading\">\r\n <lcu-loader [loading]=\"State?.Loading\"></lcu-loader>\r\n\r\n <div class=\"margin-3\">\r\n <!-- <p *ngIf=\"!State.UserEnterpriseLookup\">Loading your projects</p> -->\r\n\r\n <!-- <p *ngIf=\"State.UserEnterpriseLookup\">Loading your Dashboard.</p> -->\r\n </div>\r\n </div>\r\n\r\n <!-- <div>\r\n <pre>{{ State | json }}</pre>\r\n </div> -->\r\n</app-host-dashboard-card-element>\r\n","import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup, FormBuilder} from '@angular/forms';\nimport { MatStepper } from '@angular/material/stepper';\nimport { BaseModeledResponse } from '@lcu/common';\nimport { EaCService } from '../../../../services/eac.service';\nimport { ApplicationsFlowService } from '../../../../services/applications-flow.service';\nimport { ProjectHostingDetails } from '../../../../state/applications-flow.state';\nimport { SourceControlFormControlsComponent } from '../forms/source-control/source-control.component';\n\n@Component({\n selector: 'lcu-create-project-wizard',\n templateUrl: './create-project-wizard.component.html',\n styleUrls: ['./create-project-wizard.component.scss'],\n})\nexport class CreateProjectWizardComponent implements AfterViewInit, OnInit {\n // Fields\n\n // Properties\n public get AreProjectDetailsValid(): boolean {\n return this.ProjectDetailsFormGroup?.valid;\n }\n\n public HostingDetails: ProjectHostingDetails;\n\n public get IsBranchValid(): boolean {\n return this.SourceControl?.SelectedBranches?.length > 0;\n }\n\n public get IsOrganizationValid(): boolean {\n return this.RepoDetailsFormGroup.get('organization')?.valid;\n }\n\n public get IsRepositoryValid(): boolean {\n return this.RepoDetailsFormGroup.get('repository')?.valid;\n }\n\n public Loading?: boolean;\n\n public get ProjectDetailsFormGroup(): FormGroup {\n return this.ProjectFormGroup.get('projectDetails') as FormGroup;\n }\n\n public ProjectFormGroup: FormGroup;\n\n public get RepoDetailsFormGroup(): FormGroup {\n return this.ProjectFormGroup.get('repoDetails') as FormGroup;\n }\n\n @ViewChild(SourceControlFormControlsComponent)\n public SourceControl: SourceControlFormControlsComponent;\n\n @ViewChild('projectStepper')\n public Stepper: MatStepper;\n\n // Constructors\n constructor(\n protected formBuilder: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService\n ) {\n this.HostingDetails = new ProjectHostingDetails();\n }\n // Life Cycle\n public ngAfterViewInit(): void {\n this.handleStateChange();\n }\n\n public ngOnInit(): void {\n this.ProjectFormGroup = this.formBuilder.group({\n repoDetails: this.formBuilder.group({}),\n projectDetails: this.formBuilder.group({}),\n });\n }\n\n // API Methods\n public Cancel() {\n this.eacSvc.SetCreatingProject(false);\n }\n\n public ConfigureRepository() {\n this.loadProjectHostingDetails();\n }\n\n public CreateProject(): void {\n this.Loading = true;\n\n // const req: ProjectState = {\n // Branch: this.SourceControl.SelectedBranches.join(','),\n // BuildScript: this.ProjectDetailsFormGroup.get('buildScript').value,\n // // HostingOption: projectDetails.get('hostingOption').value,\n // Organization: this.RepoDetailsFormGroup.get('organization').value,\n // OutputFolder: this.ProjectDetailsFormGroup.get('outputFolder').value,\n // // ProjectName: projectDetails.get('projectName').value,\n // Repository: this.RepoDetailsFormGroup.get('repository').value,\n // };\n\n // const src: EaCSourceControl = {\n // Name: '',\n // Type: 'GitHub',\n // Organization: this.RepoDetailsFormGroup.get('organization').value,\n // Repository: this.RepoDetailsFormGroup.get('repository').value,\n // Branches: this.SourceControl.SelectedBranches.join(','),\n // };\n\n // const doa: EaCDevOpsAction = {\n // Type: 'NPM',\n // Name: 'NPM Deploy',\n // Lookup: 'npm-deploy',\n // Output: this.ProjectDetailsFormGroup.get('outputFolder').value,\n // DeployCommand: 'npm run deploy',\n // InstallCommand: 'npm ci',\n // NPMRegistry: 'https://registry.npmjs.org/',\n // };\n\n // const art: EaCArtifact = {\n // Type: 'NPM',\n // Name: 'NPM Deploy',\n // Lookup: 'npm-deploy',\n // Output: this.ProjectDetailsFormGroup.get('output').value,\n // DeployCommand: 'npm run deploy',\n // InstallCommand: 'npm ci',\n // NPMRegistry: 'https://registry.npmjs.org/',\n // };\n\n // const proj: EaCProjectAsCode = {\n // Project: {\n // Name: `${src.Organization} ${src.Repository} ${src.Branches}`,\n // },\n // };\n\n // this.appsFlowEventsSvc.SaveProject(req);\n }\n\n public SetupRepository(): void {\n this.determineStep();\n }\n\n // Helpers\n protected determineStep(): void {\n let index = 0;\n\n if (\n this.IsOrganizationValid &&\n this.IsRepositoryValid &&\n this.IsBranchValid\n ) {\n index = 1;\n }\n\n setTimeout(() => {\n this.Stepper.selectedIndex = index;\n }, 0);\n }\n\n protected handleStateChange(): void {\n this.determineStep();\n }\n\n protected loadProjectHostingDetails(): void {\n this.HostingDetails.Loading = true;\n\n this.appsFlowSvc\n .LoadProjectHostingDetails()\n .subscribe((response: BaseModeledResponse<ProjectHostingDetails>) => {\n this.HostingDetails = response.Model;\n\n this.HostingDetails.Loading = false;\n\n this.Stepper.next();\n });\n }\n}\n","<div>\n <div [fxHide]=\"Loading\">\n <!-- <div style=\"position: absolute; top: 5px; right: 5px\">\n <button mat-mini-fab (click)=\"Cancel()\">\n <mat-icon>cancel</mat-icon>\n </button>\n </div> -->\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <div\n fxFlex=\"80%\"\n fxFlex.lt-md=\"100%\"\n fxLayout=\"column\"\n fxLayoutAlign=\"center center\"\n >\n <div class=\"welcome margin-x-1\" fxFlex=\"40%\" fxFlex.lt-md=\"100%\">\n <h3 class=\"mat-title\">Let's get your Project setup and running</h3>\n\n <div class=\"divider-fill-hor margin-y-4\"></div>\n </div>\n\n <div class=\"setup margin-x-1\" fxFlex=\"90%\" fxFlex.lt-md=\"100%\">\n <form [formGroup]=\"ProjectFormGroup\" (ngSubmit)=\"CreateProject()\">\n <mat-horizontal-stepper linear #projectStepper>\n <mat-step\n label=\"Connect Repository\"\n formGroupName=\"repoDetails\"\n [completed]=\"\n IsOrganizationValid && IsRepositoryValid && IsBranchValid\n \"\n >\n <div>\n <h3 class=\"mat-display-1 margin-bottom-4 margin-top-3\">\n Connect your repository\n </h3>\n\n <div [fxShow]=\"!HostingDetails.Loading\">\n <div class=\"margin-y-2\">\n <lcu-source-control-form-controls\n [form-group]=\"RepoDetailsFormGroup\"\n [source-control]=\"{}\"\n ></lcu-source-control-form-controls>\n </div>\n\n <div class=\"margin-top-4\">\n <button\n mat-button\n color=\"warn\"\n (click)=\"Cancel()\"\n type=\"button\"\n >\n Cancel\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n color=\"accent\"\n (click)=\"ConfigureRepository()\"\n type=\"button\"\n [disabled]=\"!IsBranchValid\"\n >\n Next\n </button>\n </div>\n </div>\n\n <div class=\"margin-3\" *ngIf=\"HostingDetails.Loading\">\n <lcu-loader\n style=\"margin: auto\"\n [loading]=\"true\"\n ></lcu-loader>\n\n <div class=\"margin-3\">\n <h4 class=\"mat-title\">Configuring</h4>\n </div>\n </div>\n </div>\n </mat-step>\n\n <!-- [stepControl]=\"formArray.get([2])\" -->\n <mat-step\n label=\"Configure Project\"\n formGroupName=\"projectDetails\"\n >\n <h3 class=\"mat-display-1 margin-bottom-2\">\n Configure build pipeline for\n </h3>\n\n <h4 class=\"mat-headline margin-bottom-2\">\n <strong>\n @{{ RepoDetailsFormGroup.get(\"organization\")?.value }}/{{\n RepoDetailsFormGroup.get(\"repository\")?.value\n }}\n\n <br />\n\n <span\n *ngFor=\"let selBranch of SourceControl?.SelectedBranches\"\n >\n @{{ selBranch }}\n </span>\n </strong>\n </h4>\n\n <div class=\"margin-y-2\" *ngIf=\"!HostingDetails.Loading\">\n <lcu-hosting-details-form-group\n [formGroup]=\"ProjectDetailsFormGroup\"\n [details]=\"HostingDetails\"\n ></lcu-hosting-details-form-group>\n </div>\n\n <div>\n <button mat-button matStepperPrevious type=\"button\">\n Back\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n color=\"primary\"\n [disabled]=\"!AreProjectDetailsValid\"\n >\n Create Project\n </button>\n </div>\n </mat-step>\n </mat-horizontal-stepper>\n </form>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"loading\" *ngIf=\"Loading\">\n <lcu-loader [loading]=\"Loading\"></lcu-loader>\n\n <div class=\"margin-3\">\n <p>Loading</p>\n </div>\n </div>\n</div>\n","import {\n GitHubWorkflowRun,\n} from './../../../../state/applications-flow.state';\nimport {\n Component,\n Input,\n OnInit,\n OnDestroy\n} from '@angular/core';\nimport { EaCLowCodeUnit, EaCProjectAsCode } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-builds',\n templateUrl: './builds.component.html',\n styleUrls: ['./builds.component.scss'],\n})\nexport class BuildsComponent implements OnInit, OnDestroy {\n // Fields\n\n // Properties\n @Input('projects')\n public Projects: Array<EaCProjectAsCode>;\n\n constructor() {}\n\n public ngOnInit(): void {}\n\n public ngOnDestroy(): void {\n }\n\n public DeployRun(lastrun: GitHubWorkflowRun): void {\n // this.appsFlowEventsSvc.DeployRun(lastrun);\n }\n\n public RetrieveLCU(val: {\n project: EaCProjectAsCode;\n lcuID: string;\n }): EaCLowCodeUnit {\n // this.RetrieveLCUEmitter.emit(lcu);\n return {};//val.project.LCUs.find((lcu) => lcu.ID === val.lcuID);\n }\n}\n","<mat-accordion>\n <div \n *ngIf=\"Projects\" \n class=\"expansion-container\">\n <div \n fxLayout=\"row\" \n fxLayoutAlign=\"space-between center\" \n *ngFor=\"let project of Projects\">\n <div \n fxFlex \n fxLayout=\"row\" >\n <mat-expansion-panel (opened)=\"panelOpenState = true;\" (closed)=\"panelOpenState = false\"\n [ngClass]=\"panelOpenState === true ? 'active' : 'inactive'\" class=\"expansion-panel\">\n <mat-expansion-panel-header \n [collapsedHeight]=\"'75px'\" \n [expandedHeight]=\"'75px'\">\n <div \n fxFlex\n fxLayout=\"row\" \n fxLayoutAlign=\"space-between center\" \n class=\"margin-right-3\" \n *ngIf=\"project.Runs[0]; let latestRun\">\n <div fxLayout=\"row\">\n <div>\n <div fxLayout=\"column\"\n *ngIf=\"RetrieveLCU({project: project, lcuID: latestRun.LCUID}); let lcu\">\n <div class=\"workflow-run-status\">\n <a mat-icon-button\n href=\"https://github.com/{{ lcu.Organization }}/{{lcu.Repository}}/actions\"\n target=\"_blank\">\n <div fxLayout=\"row\">\n <div \n fxLayoutAlign=\"center center\" \n class=\"icon-bg\"\n [ngClass]=\"latestRun.Conclusion == 'success' ? 'success' : 'error'\">\n <mat-icon\n matTooltip=\"{{ latestRun.Status }} {{ latestRun.Conclusion }}\"\n *ngIf=\"latestRun.Conclusion == 'success'\">\n {{ latestRun.Conclusion == 'success' ? 'check_circle' :\n 'error'}}\n </mat-icon>\n </div>\n\n <div>\n <mat-icon class=\"error\"\n *ngIf=\"latestRun.Conclusion == 'failure'\">\n error_outline\n </mat-icon>\n </div>\n </div>\n </a>\n </div>\n </div>\n </div>\n <div fxLayout=\"column\" class=\"details margin-left-3\">\n <span class=\"name mat-headline mat-body-1\">{{ project.Name }}</span>\n </div>\n </div>\n\n <div fxLayout=\"row\" class=\"actions\">\n <a mat-button color=\"accent\" (click)=\"DeployRun(latestRun)\" target=\"_blank\"\n matTooltip=\"Deploy Latest\">\n <mat-icon>cloud_upload</mat-icon>\n </a>\n </div>\n </div>\n </mat-expansion-panel-header>\n <span class=\"mat-body-2\">Build Details</span>\n </mat-expansion-panel>\n </div>\n </div>\n </div>\n</mat-accordion>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-recent-activities',\n templateUrl: './recent-activities.component.html',\n styleUrls: ['./recent-activities.component.scss']\n})\nexport class RecentActivitiesComponent implements OnInit {\n\n constructor() { }\n\n public ngOnInit(): void {\n }\n\n}\n","<p>recent-activities works!</p>\n","\nimport { Component, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { FormsService } from '../../../../../../../services/forms.service';\nimport { CardFormConfigModel } from '../../../../../../../models/card-form-config.model';\nimport { EaCService } from '../../../../../../../services/eac.service';\nimport { EaCProjectAsCode } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-project-details',\n templateUrl: './project-details.component.html',\n styleUrls: ['./project-details.component.scss'],\n})\nexport class ProjectNameComponent implements OnInit {\n /**\n * Form button actions\n */\n public Config: CardFormConfigModel;\n\n /**\n * Access form control for description\n */\n public get Description(): AbstractControl {\n return this.Form.get('description');\n }\n\n /**\n * FormGroup for project name card\n */\n public Form: FormGroup;\n\n /**\n * Name of form\n */\n protected formName: string;\n\n /**\n * When form is dirty, ties into formsService.DisableForms\n */\n public IsDirty: boolean;\n\n /**\n * Access form control for project name\n */\n public get Name(): AbstractControl {\n return this.Form.get('name');\n }\n\n /**\n * Input value for state\n */\n @Input('project')\n public Project: EaCProjectAsCode;\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n constructor(\n protected formsService: FormsService,\n protected eacSvc: EaCService\n ) {}\n\n public ngOnInit(): void {\n this.formName = 'ProjectNameForm';\n\n this.setupForm();\n\n this.config();\n }\n\n /**\n * Form configurations\n */\n protected config(): void {\n this.Config = new CardFormConfigModel({\n Icon: 'house',\n Title: 'Root Directory',\n Subtitle:\n 'The directory within your project, in which your code is located. Leave this field empty if your code is not located in a subdirectory',\n FormActions: {\n Message: 'Changes will be applied to your next deployment',\n Actions: [\n {\n Label: 'Reset',\n Color: 'warn',\n ClickEvent: () => this.resetForm(),\n // use arrow function, so 'this' refers to ProjectNameComponent\n // if we used ClickeEvent: this.clearForm, then 'this' would refer to this current Actions object\n Type: 'RESET',\n },\n {\n Label: 'Save',\n Color: 'accent',\n ClickEvent: () => this.save(),\n Type: 'SAVE',\n },\n ],\n },\n });\n }\n /**\n * Setup form controls\n */\n protected setupForm(): void {\n this.Form = new FormGroup({\n name: new FormControl(this.Project?.Project?.Name || '', {\n validators: [Validators.required, Validators.minLength(1)],\n updateOn: 'change',\n }),\n description: new FormControl(this.Project?.Project?.Description || '', {\n validators: [Validators.required, Validators.minLength(1)],\n updateOn: 'change',\n }),\n });\n\n this.formsService.Form = { Id: this.formName, Form: this.Form };\n\n this.onChange();\n }\n\n /**\n * Save form\n */\n protected save(): void {\n this.eacSvc.SaveProjectAsCode({\n ProjectLookup: this.ProjectLookup,\n Project: {\n ...this.Project,\n Project: {\n ...(this.Project || {}),\n Description: this.Description.value,\n Name: this.Name.value,\n },\n },\n });\n\n this.formsService.UpdateValuesReference({\n Id: this.formName,\n Form: this.Form,\n });\n }\n\n /**\n * Reset form controls back to previous values\n */\n protected resetForm(): void {\n // enable all forms\n // this.formsService.DisableForms(false);\n\n this.formsService.ResetFormValues(this.formName);\n }\n\n /**\n * Listen to form changes\n */\n protected onChange(): void {\n this.Form.valueChanges.subscribe((val: object) => {\n if (this.formsService.ForRealThough(this.formName, this.Form)) {\n this.IsDirty = true;\n // disable all forms except the current form being edited\n this.formsService.DisableForms(this.formName);\n } else {\n this.IsDirty = false;\n // enable all forms\n this.formsService.DisableForms(false);\n }\n });\n }\n}\n","<form fxFlex fxLayout=\"row\" fxLayout.lt-md=\"column\" [formGroup]=\"Form\">\n <lcu-form-card\n fxFlex\n [config]=\"Config\"\n [form]=\"Form\"\n [is-dirty]=\"IsDirty\"\n >\n <div fxLayout=\"column\">\n <mat-form-field appearance=\"fill\" fxFlex class=\"margin-right-1 margin-bottom-2\">\n <mat-icon\n matSuffix\n [ngClass]=\"Name.valid ? 'valid-control' : 'invalid-control'\"\n >\n {{ Name.valid ? \"check_circle\" : \"error_outline\" }}\n </mat-icon>\n\n <input\n type=\"text\"\n matInput\n [placeholder]=\"Name.invalid || Name.disabled ? 'Project Name' : ''\"\n formControlName=\"name\"\n />\n\n <!-- <mat-hint *ngIf=\"Name.valid\"> Selected Project Name </mat-hint> -->\n\n <mat-error *ngIf=\"Name.hasError('required')\">\n Project Name is required\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex appearance=\"fill\" class=\"margin-right-1\">\n <mat-icon\n matTooltip=\"Brief content that allows users to understand the purpose, objective, goals or problems addressed by the project.\"\n matSuffix\n [ngClass]=\"Description.valid ? 'valid-control' : 'invalid-control'\"\n >\n {{ Description.valid ? \"check_circle\" : \"error_outline\" }}\n </mat-icon>\n\n <textarea\n type=\"text\"\n matInput\n rows=\"3\"\n [placeholder]=\"\n Description.invalid || Description.disabled\n ? 'Project Description'\n : ''\n \"\n formControlName=\"description\"\n ></textarea>\n\n <!-- <mat-hint *ngIf=\"Description.valid\">\n Selected Project Description\n </mat-hint> -->\n\n <mat-error *ngIf=\"Description.hasError('required')\">\n Project Description is required\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"card-divider\"></div>\n </lcu-form-card>\n</form>\n","import { Subscription } from 'rxjs';\nimport { FormsService } from './../../../../../../../services/forms.service';\nimport { CardFormConfigModel } from './../../../../../../../models/card-form-config.model';\nimport { Component, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { EaCService } from '../../../../../../../services/eac.service';\nimport { EaCProjectAsCode } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-root-directory',\n templateUrl: './root-directory.component.html',\n styleUrls: ['./root-directory.component.scss'],\n})\nexport class RootDirectoryComponent implements OnInit {\n /**\n * Card / Form Config\n */\n public Config: CardFormConfigModel;\n\n /**\n * FormGroup\n */\n public Form: FormGroup;\n\n protected formIsDirtySubscription: Subscription;\n\n /**\n * Access form control for root directory\n */\n public get Root(): AbstractControl {\n return this.Form.get('root');\n }\n\n /**\n * Access form control for root directory\n */\n public get IncludeSource(): AbstractControl {\n return this.Form.get('includeSource');\n }\n\n /**\n * Input value for state\n */\n @Input('project')\n public Project: EaCProjectAsCode;\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n constructor(\n protected formsService: FormsService,\n protected eacSvc: EaCService\n ) {}\n\n public ngOnInit(): void {\n this.setupForm();\n\n this.config();\n }\n\n /**\n * Setup form controls\n */\n protected setupForm(): void {\n this.Form = new FormGroup({\n root: new FormControl('/', {\n validators: [Validators.required, Validators.minLength(1)],\n updateOn: 'change',\n }),\n includeSource: new FormControl(false),\n });\n\n this.formsService.Form = { Id: 'RootDirectoryForm', Form: this.Form };\n this.onChange();\n }\n\n /**\n * Form configurations\n */\n protected config(): void {\n this.Config = new CardFormConfigModel({\n Icon: 'house',\n Title: 'Root Directory',\n Subtitle:\n 'The directory within your project, in which your code is located. Leave this field empty if your code is not located in a subdirectory',\n FormActions: {\n Message: 'Changes will be applied to your next deployment',\n Actions: [\n {\n Label: 'Clear',\n Color: 'warn',\n ClickEvent: () => this.clearForm(),\n // use arrow function, so 'this' refers to ProjectNameComponent\n // if we used ClickeEvent: this.clearForm, then 'this' would refer to this current Actions object\n Type: 'RESET',\n },\n {\n Label: 'Save',\n Color: 'accent',\n ClickEvent: () => this.save(),\n Type: 'SAVE',\n },\n ],\n },\n });\n }\n\n /**\n * Save form\n */\n protected save(): void {\n this.eacSvc.SaveProjectAsCode({\n ProjectLookup: this.ProjectLookup,\n Project: {\n ...this.Project,\n // Root: this.Root.value,\n // IncludeSource: this.IncludeSource.value\n },\n });\n // this.formsService.UpdateValuesReference({ Id: 'RootDirectoryForm', Form: this.Form });\n }\n\n /**\n * Clear form controls\n */\n protected clearForm(): void {\n // this.Form.reset();\n\n // enable all forms\n this.formsService.DisableForms(false);\n }\n\n /**\n * Listen to form changes\n */\n protected onChange(): void {\n this.Form.valueChanges.subscribe((val: any) => {\n // disable all forms except the current form being edited\n this.formsService.DisableForms('RootDirectoryForm');\n });\n }\n}\n","<form\n fxFlex\n fxLayout=\"row\"\n fxLayout.lt-md=\"column\"\n [formGroup]=\"Form\">\n <lcu-form-card\n [config]=\"Config\"\n [form]=\"Form\"\n [disabled]=\"Form.disabled\">\n <div fxLayout=\"column\">\n <mat-form-field appearance=\"fill\" class=\"margin-right-1\">\n <mat-icon\n matSuffix\n [ngClass]=\"Root.valid ? 'valid-control' : 'invalid-control'\">\n {{ Root.valid ? 'check_circle' : 'cancel' }}\n </mat-icon>\n <input\n type=\"text\"\n matInput\n [placeholder]=\"Root.invalid || Root.disabled ? 'Root Directory' : ''\"\n formControlName=\"root\"\n />\n <mat-hint *ngIf=\"Root.valid\">\n Selected Root Directory\n </mat-hint>\n <mat-error *ngIf=\"Root.hasError('required')\">\n Root Directory is required\n </mat-error>\n </mat-form-field>\n <mat-checkbox\n id=\"includeSource\"\n formControlName=\"includeSource\">\n Include source files outside of the Root Directory in the build step \n </mat-checkbox>\n </div>\n <div class=\"card-divider\"></div>\n </lcu-form-card>\n</form>","import { BaseFormConfigModel } from './../../models/base-form-config.model';\nimport { Component, OnInit } from '@angular/core';\nimport { EaCService } from '../../services/eac.service';\nimport { FormsService } from '../../services/forms.service';\n\n@Component({\n selector: 'lcu-base-form',\n templateUrl: './base-form.component.html',\n styleUrls: ['./base-form.component.scss']\n})\nexport class BaseFormComponent implements OnInit {\n\n /**\n * FormGroup for project name card\n */\n // public Form: FormGroup;\n\n /**\n * Form name\n */\n // protected formName: string;\n\n /**\n * When form is dirty, ties into formsService.DisableForms\n */\n // public IsDirty: boolean;\n\n public FormConfig: BaseFormConfigModel;\n\n constructor(\n protected formsService: FormsService,\n protected eac: EaCService\n ) { }\n\n public ngOnInit(): void {\n\n this.setupForm();\n }\n\n protected setupForm(): void {\n\n this.formsService.Form = {Id: this.FormConfig.FormName, Form: this.FormConfig.Form};\n\n // this.onChange();\n }\n\n /**\n * Listen to form value changes\n */\n protected onChange(): void {\n \n\n }\n\n protected checkFormForChanges(): void {\n this.FormConfig.Form.valueChanges.subscribe((val: object) => {\n\n if (this.formsService.ForRealThough(this.FormConfig.FormName, this.FormConfig.Form)) {\n this.FormConfig.IsDirty = true;\n // disable all forms except the current form being edited\n this.formsService.DisableForms(this.FormConfig.FormName);\n } else {\n\n this.FormConfig.IsDirty = false;\n // enable all forms\n this.formsService.DisableForms(false);\n }\n });\n }\n\n /**\n * Update Form value reference\n */\n protected updateValueRef(): void {\n\n this.formsService.UpdateValuesReference(\n {\n Id: this.FormConfig.FormName,\n Form: this.FormConfig.Form\n });\n }\n\n protected save(): void {\n console.log('PARENT SAVE');\n }\n\n protected resetForm(): void {\n\n }\n}\n","\n","import { Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { CardFormConfigModel } from './card-form-config.model';\n\nexport class BaseFormConfigModel {\n\n public CardConfig?: CardFormConfigModel;\n public Form?: FormGroup;\n public FormName: string;\n public IsDirty?: boolean;\n\n constructor(opts: BaseFormConfigModel) {\n Object.assign(this, opts); // destructure values\n }\n}","import { CardFormConfigModel } from '../../../../../../../models/card-form-config.model';\nimport { FormsService } from '../../../../../../../services/forms.service';\nimport { EaCService } from '../../../../../../../services/eac.service';\nimport { BaseFormComponent } from '../../../../../../base-form/base-form.component';\nimport { Component, OnInit } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { BaseFormConfigModel } from '../../../../../../../models/base-form-config.model';\n\n@Component({\n selector: 'lcu-base-form-test',\n templateUrl: './base-form-test.component.html',\n styleUrls: ['./base-form-test.component.scss']\n})\nexport class BaseFormTestComponent extends BaseFormComponent implements OnInit {\n\n\n /**\n * Access form control for description\n */\n public get Description(): AbstractControl {\n return this.FormConfig.Form.get('description');\n }\n\n /**\n * Access form control for project name\n */\n public get Name(): AbstractControl {\n return this.FormConfig.Form.get('name');\n }\n\n constructor(\n protected formsService: FormsService,\n protected eacSvc: EaCService\n ) {\n\n super(formsService, eacSvc);\n \n }\n\n public ngOnInit(): void {\n this.FormConfig = new BaseFormConfigModel({FormName: 'TestFormComponent'});\n\n this.setupConfig();\n this.setupMyForm();\n\n super.ngOnInit();\n }\n\n protected setupMyForm(): void {\n this.FormConfig.Form = new FormGroup({\n name: new FormControl('', {\n validators: [Validators.required, Validators.minLength(1)],\n updateOn: 'change',\n }),\n description: new FormControl('', {\n validators: [Validators.required, Validators.minLength(1)],\n updateOn: 'change',\n }),\n });\n\n this.checkFormForChanges();\n }\n\n protected setupConfig(): void {\n this.FormConfig.CardConfig = new CardFormConfigModel({\n Icon: 'house',\n Title: 'Test Form',\n Subtitle:\n 'The directory within your project, in which your code is located. Leave this field empty if your code is not located in a subdirectory',\n FormActions: {\n Message: 'Changes will be applied to your next deployment',\n Actions: [\n {\n Label: 'Reset',\n Color: 'warn',\n ClickEvent: () => this.resetForm(),\n // use arrow function, so 'this' refers to ProjectNameComponent\n // if we used ClickeEvent: this.clearForm, then 'this' would refer to this current Actions object\n Type: 'RESET',\n },\n {\n Label: 'Save',\n Color: 'accent',\n ClickEvent: () => this.save(),\n Type: 'SAVE',\n },\n ],\n },\n });\n }\n\n protected save(): void {\n console.log('CHILD SAVE');\n }\n\n}\n","<form \n fxFlex \n fxLayout=\"row\" \n fxLayout.lt-md=\"column\" \n [formGroup]=\"FormConfig.Form\">\n <lcu-form-card\n fxFlex\n [config]=\"FormConfig.CardConfig\"\n [form]=\"FormConfig.Form\"\n [is-dirty]=\"FormConfig.IsDirty\">\n <div fxLayout=\"column\">\n <mat-form-field appearance=\"fill\" fxFlex class=\"margin-right-1 margin-bottom-2\">\n <mat-icon\n matSuffix\n [ngClass]=\"Name.valid ? 'valid-control' : 'invalid-control'\"\n >\n {{ Name.valid ? \"check_circle\" : \"error_outline\" }}\n </mat-icon>\n \n <input\n type=\"text\"\n matInput\n [placeholder]=\"Name.invalid || Name.disabled ? 'Project Name' : ''\"\n formControlName=\"name\"\n />\n \n <mat-hint *ngIf=\"Name.valid\"> Selected Project Name </mat-hint>\n \n <mat-error *ngIf=\"Name.hasError('required')\">\n Project Name is required\n </mat-error>\n </mat-form-field>\n \n <mat-form-field fxFlex appearance=\"fill\" class=\"margin-right-1\">\n <mat-icon\n matSuffix\n [ngClass]=\"Description.valid ? 'valid-control' : 'invalid-control'\"\n >\n {{ Description.valid ? \"check_circle\" : \"error_outline\" }}\n </mat-icon>\n \n <textarea\n type=\"text\"\n matInput\n rows=\"3\"\n [placeholder]=\"\n Description.invalid || Description.disabled\n ? 'Project Description'\n : ''\n \"\n formControlName=\"description\"\n ></textarea>\n \n <mat-hint *ngIf=\"Description.valid\">\n Selected Project Description\n </mat-hint>\n \n <mat-error *ngIf=\"Description.hasError('required')\">\n Project Description is required\n </mat-error>\n </mat-form-field>\n </div>\n \n <div class=\"card-divider\"></div>\n </lcu-form-card>\n</form>","import { Component, OnInit, AfterViewInit, } from '@angular/core';\n\n@Component({\n selector: 'lcu-git-auth',\n templateUrl: './git-auth.component.html',\n styleUrls: ['./git-auth.component.scss'],\n})\nexport class GitAuthComponent implements OnInit, AfterViewInit {\n // Properties\n public ConnectClicked: boolean;\n\n // Constructors\n constructor() {}\n\n // Life Cycle\n public ngAfterViewInit(): void {}\n\n public ngOnInit(): void {}\n\n /**\n * Connect Github Provider\n */\n public ConnectGitHubProvider(): void {\n const reidrectUri = location.pathname + location.search;\n\n // window.location.href = `/.oauth/GitHubOAuth?redirectUri=${reidrectUri}`;\n\n window.location.href = `/.oauth/GitHubOAuth?redirectUri=%2Fdashboard`;\n\n this.ConnectClicked = true;\n }\n\n /**\n * Listen for State changes\n */\n}\n","<div \n fxFlex \n fxLayout=\"column\"\n fxLayoutAlign=\"center center\">\n <!-- <div\n label=\"Connect Git\"\n [completed]=\"State.GitHub.HasConnection\"\n > -->\n <!-- <div \n label=\"Connect Git\" \n *ngIf=\"!State.GitHub.HasConnection\"> -->\n <div \n fxLayout=\"column\"\n fxLayoutAlign=\"center center\"\n class=\"connect margin-x-3 margin-bottom-3\">\n <h3 class=\"mat-display-1 margin-bottom-4\">\n Connect your git provider\n </h3>\n\n <!-- href=\"/.oauth/github\" -->\n <a \n (click)=\"ConnectGitHubProvider();\" \n mat-raised-button color=\"primary\" \n class=\"github margin-y-3\"\n [disabled]=\"ConnectClicked\">\n Connect with GitHub\n\n <span class=\"octocat-icon\"></span>\n </a>\n </div>\n <!-- </div> -->\n</div>","import { Component, Injector, OnInit } from '@angular/core';\nimport { EaCNapkinIDEFlowImporter } from '@semanticjs/napkin-ide';\n// import '@semanticjs/krakyn';\nimport { ConstantUtils, DragDropUtils, DragItemsTemplates, VariablesUtils } from '@semanticjs/krakyn';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\nimport { ApplicationsFlowService } from '../../services/applications-flow.service';\nimport { ProjectService } from '../../services/project.service';\n@Component({\n selector: 'lcu-flow-tool',\n templateUrl: './flow-tool.component.html',\n styleUrls: ['./flow-tool.component.scss']\n})\n\n\nexport class FlowToolComponent implements OnInit {\n\n public State: ApplicationsFlowState;\n\n\n // Array<{Module: string, Data: Array<any>}>\n public KrakynData: any;\n public SideMenuItems: any;\n public Title: string;\n public TabMenuItems: Array<{Label: string, Target: string, Class?: string}>;\n\n constructor(\n protected injector: Injector,\n protected appsFlowSvc: ApplicationsFlowService,\n protected projectService: ProjectService\n ) {\n\n // super(injector);\n\n console.log('CONSTRUCTOR');\n\n this.State = new ApplicationsFlowState();\n\n // VariablesUtils.DataFlowModuleData =\n // [\n // ConstantUtils.NAPKIN_IDE_MODULE_DATA,\n // ConstantUtils.HOME_MODULE_DATA\n // ];\n\n this.Title = 'The Krakyn Tool';\n\n this.SideMenuItems = DragItemsTemplates.FLOW_DRAG_ITEMS(DragDropUtils.Drag);\n\n this.TabMenuItems = [\n { Label: 'External Data Test', Target: 'ExternalData', Class: 'selected' },\n { Label: 'Original Data', Target: 'OriginalData', Class: '' }\n // { Label: 'Home', Target: 'Home' }\n ];\n\n // this.Data = VariablesUtils.DataFlowModuleData[0];\n // console.log('Krakyn Tool Test Data: ', this.Data.Data);\n }\n\n // Lifecycle hooks\n public ngOnInit(): void {\n\n this.handleStateChange()\n .then((eac) => {});\n }\n\n /**\n * Import tool data\n */\n protected importData(): void {\n\n const eaCNapkinIDEFlowImporter: EaCNapkinIDEFlowImporter = new EaCNapkinIDEFlowImporter();\n\n this.Title = 'Imported data for Krakyn';\n\n const externalData: { Module: string, Data: any } = {\n Module: 'ExternalData',\n Data: eaCNapkinIDEFlowImporter.Import(this.State.EaC)\n };\n\n const dataIndex: number = 0;\n\n VariablesUtils.DataFlowModuleData = [\n ConstantUtils.MapData('ExternalData', externalData.Data),\n ConstantUtils.MapData('OriginalData', ConstantUtils.ORIGINAL_TEST_DATA)\n ];\n\n VariablesUtils.ActiveModule = VariablesUtils.DataFlowModuleData[dataIndex].Module;\n\n this.KrakynData = VariablesUtils.DataFlowModuleData[dataIndex];\n\n console.log('KRAKYN - DATA SET!!!!!!!', this.KrakynData);\n\n }\n\n protected async handleStateChange(): Promise<void> {\n\n console.log('HANDLE STATE CHANGE');\n\n this.State.Loading = true;\n\n await this.projectService.HasValidConnection(this.State);\n\n await this.projectService.EnsureUserEnterprise(this.State);\n\n await this.projectService.ListEnterprises(this.State);\n\n if (this.State.Enterprises?.length > 0) {\n\n this.State.Loading = false;\n\n this.importData();\n\n await this.projectService.GetActiveEnterprise(this.State);\n\n }\n }\n}\n","<krakyn-flow-tool\n [HeaderTitle] = 'Title'\n [FlowData] = 'KrakynData'\n [SideMenuItems] = 'SideMenuItems'\n [TabMenuItems] = 'TabMenuItems'>\n</krakyn-flow-tool>","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-three-column',\n templateUrl: './three-column.component.html',\n styleUrls: ['./three-column.component.scss']\n})\nexport class ThreeColumnComponent implements OnInit {\n\n public SmallScreen:boolean;\n\n\n\n constructor(public breakpointObserver: BreakpointObserver) { }\n\n ngOnInit(): void {\n this.breakpointObserver\n .observe(['(max-width: 850px)'])\n .subscribe((state: BreakpointState) => {\n // console.log(\"Breakpoint: \", state.matches)\n if (state.matches) {\n this.SmallScreen=true;\n } else {\n this.SmallScreen=false;\n }\n // console.log(\"SmallScrren = \" ,this.SmallScreen);\n });\n }\n\n}\n","\n<div \n class=\"col-container\" \n fxLayout.gt-md=\"row\" \n fxLayout.lt-md=\"column\" \n fxLayoutAlign.lt-md=\"space-evenly center\"\n>\n\n<!-- LEFT COL -->\n\n <div \n class=\"col-left\" \n fxFlex.gt-md=\"25%\"\n fxFlexOrder.lt-md=\"1\"\n >\n <ng-content select=\"[left]\"></ng-content>\n\n </div>\n\n <!-- CENTER COL -->\n\n <div \n class=\"col-center\" \n fxFlex.gt-md=\"50%\" \n fxFlexOrder.lt-md=\"3\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- RIGHT COL -->\n\n <div \n class=\"col-right\" \n fxFlex.gt-md=\"25%\" \n fxFlexOrder.lt-md=\"2\"\n >\n <ng-content select=\"[right]\"></ng-content>\n </div>\n\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-slotted-card',\n templateUrl: './slotted-card.component.html',\n styleUrls: ['./slotted-card.component.scss']\n})\nexport class SlottedCardComponent implements OnInit {\n\n @Input('action-text') \n public ActionText: string;\n\n @Input('action-path')\n public ActionPath: string;\n\n @Input('icon') \n public Icon: string;\n\n @Input('main-slot-description') \n public MainSlotDescription: string;\n\n @Input('main-icon') \n public MainIcon: string;\n\n @Input('show-main-icon') \n public ShowMainIcon: boolean;\n\n @Input('title') \n public Title: string;\n\n @Input('secondary-slot-description') \n public SecondarySlotDescription: string;\n\n @Output('main-action-clicked') \n public MainActionClicked: EventEmitter<{}>;\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public SkeletonEffect: string;\n\n\n constructor(protected eacSvc: EaCService) { \n this.MainActionClicked = new EventEmitter;\n this.SkeletonEffect = 'wave';\n\n this.MainIcon = 'add';\n\n this.ShowMainIcon = true;\n }\n\n public ngOnInit(): void {\n }\n\n public MainActionClickEvent(){\n this.MainActionClicked.emit({});\n }\n\n}\n","<mat-card class=\"col-info-card\">\n <mat-card-header\n class=\"slotted-card-header\"\n fxLayoutAlign=\"space-between center\"\n >\n <div mat-card-avatar fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <mat-icon class=\"header-icon\">{{ Icon }}</mat-icon>\n <div class=\"card-title\">{{ Title }}</div>\n </div>\n\n <mat-icon\n *ngIf=\"!ActionPath && !State?.Loading && ShowMainIcon\"\n class=\"header-icon pointer\"\n (click)=\"MainActionClickEvent()\"\n >\n {{ MainIcon }}\n </mat-icon>\n\n <mat-icon\n *ngIf=\"State?.Loading\"\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"header-icon\"\n >\n add\n </mat-icon>\n </mat-card-header>\n\n <!-- SKELETON CONTENT -->\n\n <ng-container *ngIf=\"State?.Loading\">\n <mat-card-content>\n <div class=\"slot-main-container\">\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"header-description\">\n Descrption text\n </div>\n\n <div class=\"slot-main\">\n <ng-content skeleton-block [effect]=\"SkeletonEffect\"></ng-content>\n </div>\n </div>\n\n <div\n class=\"slot-secondary\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n >\n <div class=\"slot-header-container\">\n <div class=\"slot-header\">\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\">\n Name of the content\n </div>\n </div>\n\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\">\n Description\n </div>\n </div>\n\n <div class=\"slot-actions-container\" fxLayout=\"row\">\n <mat-icon\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"skeleton-item\"\n >\n edit\n </mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"SecondarySlotDescription\" class=\"slot-secondary-container\">\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"header-description\">\n {{ SecondarySlotDescription }}\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions fxLayoutAlign=\"center center\">\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\">\n {{ ActionText }}\n </div>\n </mat-card-actions>\n </ng-container>\n <!-- END SKELETON CONTENT -->\n\n <!-- ACTUAL CONTENT -->\n\n <ng-container *ngIf=\"!State?.Loading\">\n <mat-card-content>\n <div class=\"slot-main-container\">\n <div class=\"header-description\">{{ MainSlotDescription }}</div>\n\n <div class=\"slot-main\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <div *ngIf=\"SecondarySlotDescription\" class=\"slot-secondary-container\">\n <div class=\"header-description\">{{ SecondarySlotDescription }}</div>\n\n <div class=\"slot-secondary\">\n <ng-content select=\"[secondary]\"></ng-content>\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions *ngIf=\"ActionText\" fxLayoutAlign=\"center\">\n <a\n mat-button\n *ngIf=\"ActionPath\"\n class=\"slotted-card-action-btn\"\n [href]=\"ActionPath\"\n color=\"primary\"\n >{{ ActionText }}\n </a>\n\n <a\n mat-button\n *ngIf=\"!ActionPath\"\n class=\"slotted-card-action-btn\"\n (click)=\"MainActionClickEvent()\"\n color=\"primary\"\n >\n {{ ActionText }}\n </a>\n </mat-card-actions>\n </ng-container>\n</mat-card>\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'lcu-upgrade-dialog',\n templateUrl: './upgrade-dialog.component.html',\n styleUrls: ['./upgrade-dialog.component.scss']\n})\nexport class UpgradeDialogComponent implements OnInit {\n\n constructor(public dialogRef: MatDialogRef<UpgradeDialogComponent>,\n ) { }\n\n public ngOnInit(): void {\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"end center\">\n <button mat-icon-button id=\"close-upgrade-button\" (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<div fxLayout=\"row\" fxLayoutAlign=\"space-around center\" id=\"upgrade-content\">\n \n <div class=\"upgrade-container\" fxLayout=\"column\" fxLayoutAlign=\"center start\">\n <div class=\"x-large\">Wow!</div>\n <div class=\"x-large\">Fathym Premium is Free During Beta!</div>\n <div class=\"large\">Really...no credit card required.</div>\n </div>\n <div class=\"upgrade-container\">\n <img src=\"./assets/images/Happy_Lady.png\" id=\"upgrade-promo-image\" alt=\"Fathym Premium Free During Beta\">\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UpgradeDialogComponent } from '../../dialogs/upgrade-dialog/upgrade-dialog.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-project-info-card',\n templateUrl: './project-info-card.component.html',\n styleUrls: ['./project-info-card.component.scss']\n})\nexport class ProjectInfoCardComponent implements OnInit {\n \n @Input('description')\n public Description: string;\n \n @Input('image')\n public Image: string;\n\n @Input('is-editable')\n public IsEditable: boolean;\n\n @Input('is-shareable')\n public IsShareable: boolean;\n\n @Input('name')\n public Name: string;\n\n @Input('subtext')\n public Subtext: string;\n\n @Input('version')\n public Version: string;\n\n @Output('left-click-event')\n public LeftClickEvent: EventEmitter<{}>;\n\n @Output('right-click-event')\n public RightClickEvent: EventEmitter<{}>;\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public SkeletonEffect: string;\n\n\n constructor(protected eacSvc: EaCService,protected dialog: MatDialog,) {\n this.LeftClickEvent = new EventEmitter();\n\n this.RightClickEvent = new EventEmitter();\n\n this.SkeletonEffect = 'wave';\n }\n\n public ngOnInit(): void {\n // console.log(\"loading = \", this.Loading)\n // console.log(\"is shareable: \", this.IsShareable);\n // console.log(\"is editable: \", this.IsEditable);\n }\n\n\n\n public LeftIconClicked(){\n this.LeftClickEvent.emit({});\n }\n\n public RightIconClicked(){\n console.log(\"share clicked\")\n this.RightClickEvent.emit({});\n }\n\n public UpgradeClicked(){\n const dialogRef = this.dialog.open(UpgradeDialogComponent, {\n width: '600px',\n data: {\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n // console.log('The dialog was closed');\n // console.log(\"result:\", result)\n });\n\n }\n\n}\n","<mat-card class=\"project-info-card\">\n <!-- SKELETON CONTENT -->\n <ng-container *ngIf=\"State?.Loading\">\n <div class=\"header-img-container\" fxLayout=\"row\">\n <skeleton-avatar\n class=\"round-project-img\"\n [effect]=\"SkeletonEffect\"\n [size]=\"75\"\n ></skeleton-avatar>\n </div>\n\n <mat-card-header class=\"project-card-header\" fxLayoutAlign=\"center center\">\n <mat-card-title\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"project-card-name\"\n >\n Name of card\n </mat-card-title>\n\n <mat-card-subtitle\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"project-card-description\"\n >\n Description Text\n </mat-card-subtitle>\n\n <mat-card-subtitle class=\"project-card-host\">\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"host-anchor\">\n https://www.fathym.com\n </div>\n </mat-card-subtitle>\n </mat-card-header>\n <mat-card-content class=\"card-content-container\">\n <div\n skeleton-block\n [effect]=\"SkeletonEffect\"\n class=\"stats-container\"\n ></div>\n\n <div\n class=\"promo-container-skeleton\"\n fxLayout=\"column\"\n fxLayoutAlign=\"center center\"\n >\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\">\n Access exclusive tools & insights\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <mat-icon\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"skeleton-item\"\n >emoji_events</mat-icon\n >\n\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\">\n Upgrade to premium now\n </div>\n </div>\n </div>\n </mat-card-content>\n <mat-card-actions\n class=\"actions-container-skeleton\"\n fxLayoutAlign=\"center center\"\n >\n <div\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"skeleton-item\"\n action\n mat-button\n >\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\"\n >outbox</mat-icon\n >\n Unpack\n </div>\n </mat-card-actions>\n </ng-container>\n <!-- END SKELETON CONTENT -->\n\n <!-- ACTUAL CONTENT -->\n\n <ng-container *ngIf=\"!State?.Loading\">\n <div class=\"header-img-container\" fxLayout=\"row\">\n <div class=\"round-project-img\" fxLayoutAlign=\"center center\">\n <mat-icon *ngIf=\"!Image\" class=\"temp-icon\">flutter_dash</mat-icon>\n <img\n *ngIf=\"Image\"\n [src]=\"Image\"\n [alt]=\"Name\"\n style=\"width: 75px; border-radius: 40px; \"\n />\n </div>\n </div>\n\n <div\n class=\"icon-btn-container\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n >\n <button\n *ngIf=\"IsEditable\"\n mat-icon-button\n id=\"left-icon\"\n (click)=\"LeftIconClicked()\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n *ngIf=\"IsShareable\"\n mat-icon-button\n id=\"right-icon\"\n (click)=\"RightIconClicked()\"\n >\n <mat-icon>share</mat-icon>\n </button>\n </div>\n\n <mat-card-header class=\"project-card-header\" fxLayoutAlign=\"center center\">\n <mat-card-title class=\"project-card-name\" *ngIf=\"Name\">\n {{ Name }}\n </mat-card-title>\n\n <mat-card-subtitle class=\"project-card-description\" *ngIf=\"Description\">\n {{ Description }}\n </mat-card-subtitle>\n\n <mat-card-subtitle class=\"project-card-version\" *ngIf=\"Version\">\n {{ Version }}\n </mat-card-subtitle>\n\n <mat-card-subtitle class=\"project-card-host\">\n <a\n class=\"host-anchor\"\n *ngIf=\"Subtext\"\n [href]=\"'https://' + Subtext\"\n target=\"_blank\"\n fxLayoutAlign=\"center center\"\n >\n {{ Subtext }}\n <mat-icon>launch</mat-icon>\n </a>\n </mat-card-subtitle>\n </mat-card-header>\n\n <mat-card-content class=\"card-content-container\">\n <div class=\"stats-container\">\n <ng-content select=\"[stats]\"></ng-content>\n </div>\n\n <!-- <div class=\"promo-container\"> -->\n <!-- <ng-content select=\"[promo]\"></ng-content> -->\n <div\n class=\"promo-container\"\n fxLayout=\"column\"\n fxLayoutAlign=\"center center\"\n (click)=\"UpgradeClicked()\"\n >\n <div>Access exclusive tools & insights</div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <mat-icon class=\"gold-icon\">emoji_events</mat-icon>\n\n <div class=\"upgrade-text\" (click)=\"UpgradeClicked()\">\n Upgrade to premium now\n </div>\n </div>\n </div>\n <!-- </div> -->\n </mat-card-content>\n <mat-card-actions class=\"actions-container\">\n <ng-content select=\"[action]\"></ng-content>\n </mat-card-actions>\n </ng-container>\n</mat-card>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-analytics-card',\n templateUrl: './analytics-card.component.html',\n styleUrls: ['./analytics-card.component.scss']\n})\nexport class AnalyticsCardComponent implements OnInit {\n\n @Input('title')\n public Title: string;\n\n @Input('subtext')\n public Subtext: string;\n\n // TODO update from any to an analytics model\n @Input('analytics')\n public Analytics: any[];\n\n\n constructor() {\n \n }\n\n ngOnInit(): void {\n }\n\n}\n","<mat-card class=\"analytics-card\">\n <mat-card-header>\n <mat-card-title *ngIf=\"Title\">{{Title}}</mat-card-title>\n <mat-card-subtitle *ngIf=\"Subtext\">{{Subtext}}</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <!-- <ng-container *ngFor=\"let atics of analytics \"> -->\n \n <div class=\"analytic-container\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <div fxLayout=\"column\">\n <div class=\"analytic-number\">57</div>\n <div class=\"analytic-name\">Unique Visitors</div>\n </div>\n\n <div class=\"percent-change increase\" fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <mat-icon>arrow_drop_up</mat-icon>\n <div>{{ .16 | percent}}</div>\n </div>\n\n <!-- <div class=\"percent-change decrease\" fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <mat-icon>arrow_drop_down</mat-icon>\n <div>16</div>\n </div> -->\n </div>\n\n <!-- </ng-container> -->\n </mat-card-content>\n <!-- <mat-card-actions>\n <button mat-button>LIKE</button>\n <button mat-button>SHARE</button>\n </mat-card-actions> -->\n </mat-card>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FeedItem, FeedItemAction } from '../../models/user-feed.model';\n\n@Component({\n selector: 'lcu-feed-card-sm',\n templateUrl: './feed-card-sm.component.html',\n styleUrls: ['./feed-card-sm.component.scss'],\n})\nexport class FeedCardSmComponent implements OnInit {\n @Input('feed-item')\n public FeedItem: FeedItem;\n\n public IconColor: string;\n\n public Icon: string;\n\n constructor() {}\n\n // Life Cycle\n public ngOnInit(): void {\n this.determineIcon();\n }\n\n // API Methods\n public HandleAction(action: FeedItemAction) {\n console.log('Action clicked');\n }\n\n // Helpers\n protected determineIcon(): void {\n if (this.FeedItem.Status.Code === 0) {\n this.Icon = 'check_circle';\n \n this.IconColor = 'green';\n } else if (this.FeedItem.Status.Code === 1) {\n this.Icon = 'cancel';\n \n this.IconColor = 'red';\n } else if (this.FeedItem.Status.Code === 2) {\n this.Icon = 'sync';\n \n this.IconColor = 'blue';\n }\n }\n}\n","<mat-card class=\"social-card\">\n <div class=\"feed-card-container\" fxLayout=\"row\">\n <mat-icon *ngIf=\"Icon\" [style.color]=\"IconColor\">{{ Icon }}</mat-icon>\n <div class=\"feed-card-main-content\">\n <mat-card-title *ngIf=\"FeedItem.Title\">\n {{ FeedItem.Title }}\n </mat-card-title>\n\n <div *ngIf=\"FeedItem.Subtitle\">{{ FeedItem.Subtitle }}</div>\n\n <ng-content select=\"[more-details]\"></ng-content>\n </div>\n </div>\n\n <mat-card-actions fxLayout=\"row\" fxLayoutAlign=\"end\">\n <ng-content select=\"[actions]\"></ng-content>\n </mat-card-actions>\n</mat-card>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { EaCApplicationAsCode } from '@semanticjs/common';\nimport { EaCService, SaveApplicationAsCodeEventRequest } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-edit-application-form',\n templateUrl: './edit-application-form.component.html',\n styleUrls: ['./edit-application-form.component.scss']\n})\nexport class EditApplicationFormComponent implements OnInit {\n\n @Input('application-lookup')\n public ApplicationLookup: string;\n\n @Input('current-route')\n public CurrentRoute: string;\n\n @Input('editing-application') \n public EditingApplication: EaCApplicationAsCode;\n\n @Input('has-save-button')\n public HasSaveButton: boolean;\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n @Output('save-form-event')\n public SaveFormEvent: EventEmitter<{}>\n\n public get DescriptionFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.description;\n }\n\n public get NameFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.name;\n }\n\n public get RouteFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.route;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public ApplicationFormGroup: FormGroup;\n\n constructor(protected formBldr: FormBuilder,\n protected eacSvc: EaCService) {\n this.SaveFormEvent = new EventEmitter;\n this.HasSaveButton = true;\n }\n\n public ngOnInit(): void {\n this.setupApplicationForm();\n }\n\n public SubmitApplicationControl(){\n console.log(\"application form: \", this.ApplicationFormGroup.value);\n this.SaveApplication();\n }\n\n public SaveApplication(): void {\n const app: EaCApplicationAsCode = this.EditingApplication;\n // console.log(\"APP=\", app);\n app.Application = {\n Name: this.NameFormControl.value,\n Description: this.DescriptionFormControl.value,\n PriorityShift: this.EditingApplication?.Application?.PriorityShift || 0,\n };\n\n app.LookupConfig.PathRegex = `${this.RouteFormControl.value}.*`;\n\n switch (app.Processor.Type) {\n case 'DFS':\n app.Processor.BaseHref = `${this.RouteFormControl.value}/`.replace('//', '/');\n\n break;\n }\n\n if (!app.LookupConfig.PathRegex.startsWith('/')) {\n app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;\n }\n\n const saveAppReq: SaveApplicationAsCodeEventRequest = {\n ProjectLookup: this.ProjectLookup,\n Application: app,\n ApplicationLookup: this.ApplicationLookup,\n };\n\n console.log(\"processor details being submitted: \", app.Processor)\n\n this.eacSvc.SaveApplicationAsCode(saveAppReq).then(res =>{\n this.SaveFormEvent.emit(res);\n })\n \n }\n\n //HELPERS\n protected setupApplicationForm(){\n if (this.EditingApplication != null) {\n this.ApplicationFormGroup = this.formBldr.group({\n name: [this.EditingApplication.Application?.Name, Validators.required],\n description: [\n this.EditingApplication.Application?.Description,\n Validators.required,\n ],\n route: [this.CurrentRoute ? this.CurrentRoute :\n this.EditingApplication.LookupConfig?.PathRegex.replace('.*', '') ||\n '/',\n Validators.required,\n ],\n // priority: [\n // this.EditingApplication.Application?.Priority || 10000,\n // Validators.required,\n // ],\n });\n }\n }\n\n \n\n}\n","<form class=\"form-card\" [formGroup]=\"ApplicationFormGroup\" (ngSubmit)=\"SubmitApplicationControl()\" >\n <!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title>\n <ng-container *ngIf=\"EditingApplication?.Application\">\n Edit Application:\n {{ EditingApplication.Application?.Name }}\n </ng-container>\n\n <ng-container *ngIf=\"!EditingApplication?.Application\">\n Create an Application\n </ng-container>\n </mat-card-title>\n </mat-card-header> -->\n\n <!-- <mat-card-content> -->\n <ng-container *ngIf=\"State?.Loading\">\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n </ng-container>\n\n <ng-container *ngIf=\"!State?.Loading\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Name\"\n formControlName=\"name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n placeholder=\"Description\"\n formControlName=\"description\"\n rows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Route\"\n formControlName=\"route\"\n required\n />\n </mat-form-field>\n </ng-container>\n\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\">\n\n <button \n *ngIf=\"HasSaveButton && !State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ApplicationFormGroup.valid || !ApplicationFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save\n </button>\n <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"State?.Loading\"></lcu-loader>\n \n </mat-card-actions> -->\n <!-- </mat-card> -->\n</form>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\nimport { BaseModeledResponse, Guid } from '@lcu/common';\nimport {\n EaCApplicationAsCode,\n EaCEnvironmentAsCode,\n EaCSourceControl,\n} from '@semanticjs/common';\nimport { ApplicationsFlowService } from '../../services/applications-flow.service';\nimport {\n EaCService,\n SaveApplicationAsCodeEventRequest,\n} from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-processor-details-form',\n templateUrl: './processor-details-form.component.html',\n styleUrls: ['./processor-details-form.component.scss'],\n})\nexport class ProcessorDetailsFormComponent implements OnInit {\n @Input('editing-application')\n public EditingApplication: EaCApplicationAsCode;\n\n @Input('editing-application-lookup')\n public EditingApplicationLookup: string;\n\n @Input('has-save-button')\n public HasSaveButton: boolean;\n\n @Input('source-control-lookups')\n public SourceControlLookups: Array<string>;\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n @Output('save-form-event')\n public SaveFormEvent: EventEmitter<{}>;\n\n public get APIRootFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.apiRoot;\n }\n\n public get Environment(): EaCEnvironmentAsCode {\n return this.State?.EaC?.Environments[\n this.State?.EaC?.Enterprise?.PrimaryEnvironment\n ];\n }\n\n public get BuildFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.build;\n }\n\n public get BuildPathFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.buildPath;\n }\n\n public get ClientIDFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.clientId;\n }\n\n public get ClientSecretFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.clientSecret;\n }\n\n public get DefaultFileFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.defaultFile;\n }\n\n public get DefaultSourceControl(): EaCSourceControl {\n return {\n Organization: this.EditingApplication?.LowCodeUnit?.Organization,\n Repository: this.EditingApplication?.LowCodeUnit?.Repository,\n };\n }\n\n public get InboundPathFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.inboundPath;\n }\n\n public get IncludeRequestFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.includeRequest;\n }\n\n public get MethodsFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.methods;\n }\n\n public get PackageFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.package;\n }\n\n public get PermanentFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.permanent;\n }\n\n public get PreserveMethodFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.preserveMethod;\n }\n\n public get RedirectFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.redirect;\n }\n\n public get ScopesFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.scopes;\n }\n\n public get SecurityFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.security;\n }\n\n public get State(): ApplicationsFlowState {\n return this.eacSvc.State;\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Environment?.Sources || {};\n }\n\n public get SourceControlFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.sourceControl;\n }\n\n public get SPARootFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.spaRoot;\n }\n\n public get TokenLookupFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.tokenLookup;\n }\n\n public get ValidFormControls():Array<AbstractControl> {\n let vfc: Array<AbstractControl> = new Array<AbstractControl>();\n for (const field in this.ProcessorDetailsFormGroup.controls) { \n const control = this.ProcessorDetailsFormGroup.get(field); \n if(control.valid){\n vfc.push(control);\n }\n }\n // console.log(\"VFC=\", vfc)\n return vfc;\n }\n\n public get VersionFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.version;\n }\n\n public get ZipFileFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.zipFile;\n }\n\n public BuildPathOptions: string[];\n\n public IsPermanent: boolean;\n\n public IsPreserve: boolean;\n\n public LCUType: string;\n\n public redirectTooltip: string;\n\n public ProcessorDetailsFormGroup: FormGroup;\n\n public ProcessorType: string;\n\n constructor(\n protected appsFlowSvc: ApplicationsFlowService,\n protected formBldr: FormBuilder,\n protected eacSvc: EaCService\n ) {\n this.redirectTooltip = '';\n\n this.HasSaveButton = true;\n\n this.SaveFormEvent = new EventEmitter();\n }\n\n public ngOnInit(): void {\n if (!this.EditingApplication) {\n this.CreateNewApplication();\n } else {\n this.setupProcessorDetailsForm();\n }\n }\n\n public CreateNewApplication(): void {\n this.SetEditingApplication(Guid.CreateRaw());\n }\n\n public DetermineTooltipText() {\n let permanentValue = this.PermanentFormControl.value;\n let preserveValue = this.PreserveMethodFormControl.value;\n\n if (permanentValue === true && preserveValue === false) {\n this.redirectTooltip = '301 – Permanent and Not Preserve';\n } else if (permanentValue === false && preserveValue === false) {\n this.redirectTooltip = '302 – Not Permanent and Not Preserve';\n } else if (permanentValue === false && preserveValue === true) {\n this.redirectTooltip = '307 – Not Permanent and Preserve';\n } else if (permanentValue === true && preserveValue === true) {\n this.redirectTooltip = '308 – Permanent and Preserve';\n }\n }\n\n public SaveProcessorDetails(): void {\n const app: EaCApplicationAsCode = this.EditingApplication;\n app.LookupConfig.AllowedMethods = this.MethodsFormControl?.value\n ?.split(' ')\n .filter((v: string) => !!v);\n app.Processor.Type = this.ProcessorType;\n\n switch (app.Processor.Type) {\n case 'DFS':\n app.Processor.DefaultFile =\n this.DefaultFileFormControl.value || 'index.html';\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHub':\n app.LowCodeUnit.Organization =\n this.SourceControls[\n this.SourceControlFormControl.value\n ]?.Organization;\n\n app.LowCodeUnit.Repository =\n this.SourceControls[\n this.SourceControlFormControl.value\n ]?.Repository;\n\n app.LowCodeUnit.Build = this.BuildFormControl.value;\n\n app.LowCodeUnit.Path = this.BuildPathFormControl.value;\n\n app.LowCodeUnit.SourceControlLookup =\n this.SourceControlFormControl.value;\n break;\n\n case 'NPM':\n app.LowCodeUnit.Package = this.PackageFormControl.value;\n\n app.LowCodeUnit.Version = this.VersionFormControl.value;\n break;\n\n case 'WordPress':\n app.LowCodeUnit.APIRoot = this.APIRootFormControl.value;\n break;\n\n case 'Zip':\n app.LowCodeUnit.ZipFile = this.ZipFileFormControl.value;\n break;\n }\n break;\n\n case 'OAuth':\n app.Processor.Scopes = this.ScopesFormControl.value.split(' ');\n\n app.Processor.TokenLookup = this.TokenLookupFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHubOAuth':\n app.LowCodeUnit.ClientID = this.ClientIDFormControl.value;\n\n app.LowCodeUnit.ClientSecret = this.ClientSecretFormControl.value;\n break;\n }\n break;\n\n case 'Proxy':\n app.Processor.InboundPath = this.InboundPathFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'API':\n app.LowCodeUnit.APIRoot = this.APIRootFormControl.value;\n\n app.LowCodeUnit.Security = this.SecurityFormControl.value;\n\n break;\n\n case 'SPA':\n app.LowCodeUnit.SPARoot = this.SPARootFormControl.value;\n break;\n }\n break;\n\n case 'Redirect':\n app.Processor.IncludeRequest = !!this.IncludeRequestFormControl.value;\n\n app.Processor.Permanent = !!this.PermanentFormControl.value;\n\n app.Processor.PreserveMethod = !!this.PreserveMethodFormControl.value;\n\n app.Processor.Redirect = this.RedirectFormControl.value;\n break;\n }\n\n if (!app.LookupConfig.PathRegex.startsWith('/')) {\n app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;\n }\n\n const saveAppReq: SaveApplicationAsCodeEventRequest = {\n ProjectLookup: this.ProjectLookup,\n Application: app,\n ApplicationLookup: this.EditingApplicationLookup || Guid.CreateRaw(),\n };\n\n\n this.eacSvc.SaveApplicationAsCode(saveAppReq).then((res) => {\n this.SaveFormEvent.emit(res);\n });\n }\n\n public SetEditingApplication(appLookup: string): void {\n this.EditingApplication = new EaCApplicationAsCode();\n this.EditingApplicationLookup = appLookup;\n\n this.setupProcessorDetailsForm();\n }\n\n public SourceControlChanged(event: any) {\n this.listBuildPaths();\n }\n\n public ProcessorTypeChanged(event: MatSelectChange): void {\n this.ProcessorType = event.value;\n\n this.setupProcessorTypeSubForm();\n }\n\n public LCUTypeChanged(event: MatSelectChange): void {\n this.LCUType = event.value;\n\n this.setupLcuTypeSubForm();\n }\n\n //HELPERS\n\n protected cleanupLcuTypeSubForm(): void {\n this.ProcessorDetailsFormGroup.removeControl('methods');\n this.ProcessorDetailsFormGroup.removeControl('apiRoot');\n this.ProcessorDetailsFormGroup.removeControl('security');\n\n this.ProcessorDetailsFormGroup.removeControl('spaRoot');\n\n this.ProcessorDetailsFormGroup.removeControl('applicationId');\n this.ProcessorDetailsFormGroup.removeControl('sourceControl');\n\n this.ProcessorDetailsFormGroup.removeControl('build');\n\n this.ProcessorDetailsFormGroup.removeControl('clientId');\n this.ProcessorDetailsFormGroup.removeControl('clientSecret');\n this.ProcessorDetailsFormGroup.removeControl('package')\n this.ProcessorDetailsFormGroup.removeControl('version');\n\n this.ProcessorDetailsFormGroup.removeControl('zipFile');\n \n }\n\n protected cleanupProcessorTypeSubForm(): void {\n this.ProcessorDetailsFormGroup.removeControl('defaultFile');\n\n // this.ApplicationFormGroup.removeControl('dfsLcuType');\n\n // this.ApplicationFormGroup.removeControl('oauthLcuType');\n this.ProcessorDetailsFormGroup.removeControl('scopes');\n this.ProcessorDetailsFormGroup.removeControl('tokenLookup');\n\n this.ProcessorDetailsFormGroup.removeControl('inboundPath');\n this.ProcessorDetailsFormGroup.removeControl('proxyLcuType');\n\n this.ProcessorDetailsFormGroup.removeControl('includeRequest');\n this.ProcessorDetailsFormGroup.removeControl('redirect');\n this.ProcessorDetailsFormGroup.removeControl('permanent');\n this.ProcessorDetailsFormGroup.removeControl('preserveMethod');\n\n this.cleanupLcuTypeSubForm();\n }\n\n protected listBuildPaths(): void {\n this.State.Loading = true;\n\n console.log(\"Source Control: \", this.SourceControls[this.SourceControlFormControl.value])\n\n this.appsFlowSvc\n .ListBuildPaths(\n this.SourceControls[this.SourceControlFormControl.value]?.Organization,\n this.SourceControls[this.SourceControlFormControl.value]?.Repository\n )\n .subscribe((response: BaseModeledResponse<string[]>) => {\n this.BuildPathOptions = response.Model;\n console.log(\"build path options: \", this.BuildPathOptions)\n\n this.State.Loading = false;\n\n // if (this.BuildPathOptions?.length === 1) {\n // this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);\n // }\n });\n }\n\n protected setupLcuTypeSubForm(): void {\n this.cleanupLcuTypeSubForm();\n\n if (this.LCUType) {\n switch (this.LCUType) {\n case 'API':\n this.setupLCUAPIForm();\n break;\n\n case 'ApplicationPointer':\n this.setupLCUApplicationPointerForm();\n break;\n\n case 'GitHub':\n this.setupLCUGitHubForm();\n break;\n\n case 'GitHubOAuth':\n this.setupLCUGitHubOAuthForm();\n break;\n\n case 'WordPress':\n this.setupLCUWordPressForm();\n break;\n\n // case 'NPM':\n // this.setupLCUNPMForm();\n // break;\n\n case 'SPA':\n this.setupLCUSPAForm();\n break;\n\n case 'Zip':\n this.setupLCUZipForm();\n break;\n }\n }\n }\n\n protected setupProcessorDetailsForm(): void {\n this.ProcessorType = this.EditingApplication?.Processor?.Type || '';\n\n // console.log('EDITING APP = ', this.EditingApplication);\n\n if (this.EditingApplication != null) {\n this.ProcessorDetailsFormGroup = this.formBldr.group({\n procType: [this.ProcessorType, [Validators.required]],\n });\n // this.setupDfsForm();\n\n // this.setupLcuTypeSubForm();\n this.setupProcessorTypeSubForm()\n }\n }\n\n protected setupLCUGitHubForm(): void {\n console.log('EditingApplication: ', this.EditingApplication);\n\n this.ProcessorDetailsFormGroup.addControl(\n 'sourceControl',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.SourceControlLookup || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'buildPath',\n this.formBldr.control(this.EditingApplication.LowCodeUnit?.Path || '', [\n Validators.required,\n ])\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'build',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.Build || 'latest',\n [Validators.required]\n )\n );\n\n this.listBuildPaths();\n }\n\n protected setupLCUApplicationPointerForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'applicationId',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ApplicationID || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUSPAForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'spaRoot',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.SPARoot || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUAPIForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'methods',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.AllowedMethods?.join(' ') || '',\n []\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'apiRoot',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.APIRoot || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'security',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.Security || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUGitHubOAuthForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'clientId',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ClientID || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'clientSecret',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ClientSecret || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUWordPressForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'apiRoot',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.APIRoot || '',\n [Validators.required]\n )\n );\n }\n\n protected setupProxyForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ProcessorDetailsFormGroup.addControl(\n 'inboundPath',\n this.formBldr.control(\n this.EditingApplication.Processor?.InboundPath || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupRedirectForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'redirect',\n this.formBldr.control(this.EditingApplication.Processor?.Redirect || '', [\n Validators.required,\n ])\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'permanent',\n this.formBldr.control(\n this.EditingApplication.Processor?.Permanent || false,\n []\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'preserveMethod',\n this.formBldr.control(\n this.EditingApplication.Processor?.PreserveMethod || false,\n []\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'includeRequest',\n this.formBldr.control(\n this.EditingApplication.Processor?.IncludeRequest || false,\n []\n )\n );\n\n this.DetermineTooltipText();\n }\n\n protected setupOAuthForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ProcessorDetailsFormGroup.addControl(\n 'scopes',\n this.formBldr.control(\n this.EditingApplication.Processor?.Scopes?.Join(' ') || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'tokenLookup',\n this.formBldr.control(\n this.EditingApplication.Processor?.TokenLookup || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupLCUZipForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'zipFile',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ZipFile || '',\n [Validators.required]\n )\n );\n }\n\n protected setupDfsForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ProcessorDetailsFormGroup.addControl(\n 'defaultFile',\n this.formBldr.control(\n this.EditingApplication.Processor?.DefaultFile || 'index.html',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupProcessorTypeSubForm(): void {\n this.cleanupProcessorTypeSubForm();\n\n if (this.ProcessorType) {\n switch (this.ProcessorType) {\n case 'DFS':\n this.setupDfsForm();\n break;\n\n case 'OAuth':\n this.setupOAuthForm();\n break;\n\n case 'Proxy':\n this.setupProxyForm();\n break;\n\n case 'Redirect':\n this.setupRedirectForm();\n break;\n }\n }\n\n this.setupLcuTypeSubForm();\n }\n}\n","<form class=\"processor-details-form\" [formGroup]=\"ProcessorDetailsFormGroup\" (ngSubmit)=\"SaveProcessorDetails()\">\n<!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header> -->\n\n <ng-container *ngIf=\"State?.Loading\">\n\n <ng-container *ngFor=\"let fc of ValidFormControls\">\n\n <skeleton-block \n [id]=\"fc\"\n class=\"s-block\" \n effect=\"wave\"\n ></skeleton-block>\n \n </ng-container>\n\n <lcu-loader *ngIf=\"LCUType === 'Redirect'\" [loading]=\"State?.Loading\"></lcu-loader>\n\n </ng-container>\n <!-- END SKELETON -->\n\n <ng-container *ngIf=\"!State?.Loading\">\n\n <!-- <mat-card-content> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <mat-option value=\"WordPress\">WordPress</mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <!-- <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ProcessorDetailsFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls> -->\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option \n *ngFor=\"let scLookup of SourceControlLookups\" \n [value]=\"scLookup\">\n {{scLookup}}\n </mat-option>\n \n \n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width with-hint\"\n *ngIf=\"\n SourceControlFormControl?.valid\n \"\n > \n <mat-select\n formControlName=\"buildPath\"\n placeholder=\"Build Path\"\n required\n >\n <ng-container *ngFor=\"let buildPath of BuildPathOptions\">\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n \n <mat-hint>\n The build path identifies which build action to use for your\n configuration.\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"\n SourceControlFormControl?.valid\n \"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <lcu-npm-package-select\n [npm-package]=\"EditingApplication?.LowCodeUnit?.Package\"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ProcessorDetailsFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{ EditingApplication?.LowCodeUnit?.CurrentVersion }}\n </mat-hint>\n </div>\n\n <div *ngSwitchCase=\"'WordPress'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\">Single Page Application</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle \n class=\"spread\" \n formControlName=\"permanent\">\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip={{redirectTooltip}}\n >\n info_outline\n </mat-icon>\n\n \n </div>\n \n <div>\n <mat-slide-toggle \n class=\"spread\" \n formControlName=\"includeRequest\">\n Include Path and Query?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Should the redirect include the path and query?\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"HasSaveButton && !State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ProcessorDetailsFormGroup.valid || !ProcessorDetailsFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Processor Details\n </button> -->\n <!-- <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"State?.Loading\"></lcu-loader> -->\n\n <!-- </mat-card-actions> -->\n\n </ng-container>\n \n<!-- </mat-card> -->\n</form>\n \n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Guid, Status } from '@lcu/common';\nimport { EaCApplicationAsCode, EaCEnvironmentAsCode, EaCSourceControl, EnterpriseAsCode } from '@semanticjs/common';\nimport { EditApplicationFormComponent } from '../../controls/edit-application-form/edit-application-form.component';\nimport { ProcessorDetailsFormComponent } from '../../controls/processor-details-form/processor-details-form.component';\nimport { EaCService, SaveApplicationAsCodeEventRequest } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\nexport interface NewApplicationDialogData {\n environmentLookup: string;\n projectLookup: string;\n currentRoute: string;\n}\n\n@Component({\n selector: 'lcu-new-application-dialog',\n templateUrl: './new-application-dialog.component.html',\n styleUrls: ['./new-application-dialog.component.scss']\n})\n\nexport class NewApplicationDialogComponent implements OnInit {\n\n @ViewChild(EditApplicationFormComponent)\n public ApplicationFormControls: EditApplicationFormComponent;\n\n @ViewChild(ProcessorDetailsFormComponent)\n public ProcessorDetailsFormControls: ProcessorDetailsFormComponent;\n\n public get Environment(): EaCEnvironmentAsCode {\n return this.State?.EaC?.Environments[this.data.environmentLookup];\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Environment?.Sources || {};\n }\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.Environment.Sources || {});\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public ErrorMessage: string;\n\n public HasSaveButton: boolean;\n\n public NewApplication: EaCApplicationAsCode;\n\n public NewApplicationLookup: string;\n\n\n constructor(\n protected eacSvc: EaCService, \n public dialogRef: MatDialogRef<NewApplicationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: NewApplicationDialogData,\n protected snackBar: MatSnackBar) { \n\n this.HasSaveButton = false\n }\n\n public ngOnInit(): void {\n\n this.SetupApplication(Guid.CreateRaw());\n \n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public SetupApplication(appLookup: string){\n this.NewApplication = new EaCApplicationAsCode;\n this.NewApplicationLookup = appLookup;\n\n }\n\n \n\n public SaveApplication(): void {\n const app: EaCApplicationAsCode = {\n Application: {\n Name: this.ApplicationFormControls.NameFormControl.value,\n Description: this.ApplicationFormControls.DescriptionFormControl.value,\n PriorityShift: 0,\n },\n AccessRightLookups: [],\n DataTokens: {},\n LicenseConfigurationLookups: [],\n LookupConfig: {\n IsPrivate: false,\n IsTriggerSignIn: false,\n PathRegex: `${this.ApplicationFormControls.RouteFormControl.value}.*`,\n QueryRegex: '',\n HeaderRegex: '',\n AllowedMethods: this.ProcessorDetailsFormControls.MethodsFormControl?.value\n ?.split(' ')\n .filter((v: string) => !!v),\n },\n Processor: {\n Type: this.ProcessorDetailsFormControls.ProcessorType,\n },\n };\n\n switch (app.Processor.Type) {\n case 'DFS':\n app.Processor.BaseHref = `${this.ApplicationFormControls.RouteFormControl.value}/`.replace(\n '//',\n '/'\n );\n\n app.Processor.DefaultFile =\n this.ProcessorDetailsFormControls.DefaultFileFormControl.value || 'index.html';\n\n app.LowCodeUnit = {\n Type: this.ProcessorDetailsFormControls.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHub':\n app.LowCodeUnit.Organization =\n this.SourceControls[\n this.ProcessorDetailsFormControls.SourceControlFormControl.value\n ].Organization;\n\n app.LowCodeUnit.Repository =\n this.SourceControls[\n this.ProcessorDetailsFormControls.SourceControlFormControl.value\n ].Repository;\n\n app.LowCodeUnit.Build = this.ProcessorDetailsFormControls.BuildFormControl.value;\n\n app.LowCodeUnit.Path =\n this.ProcessorDetailsFormControls.BuildPathFormControl.value;\n break;\n\n case 'NPM':\n app.LowCodeUnit.Package = this.ProcessorDetailsFormControls.PackageFormControl.value;\n\n app.LowCodeUnit.Version = this.ProcessorDetailsFormControls.VersionFormControl.value;\n break;\n\n case 'Zip':\n app.LowCodeUnit.ZipFile = this.ProcessorDetailsFormControls.ZipFileFormControl.value;\n break;\n }\n break;\n\n case 'OAuth':\n app.Processor.Scopes = this.ProcessorDetailsFormControls.ScopesFormControl.value.split(' ');\n\n app.Processor.TokenLookup = this.ProcessorDetailsFormControls.TokenLookupFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.ProcessorDetailsFormControls.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHubOAuth':\n app.LowCodeUnit.ClientID = this.ProcessorDetailsFormControls.ClientIDFormControl.value;\n\n app.LowCodeUnit.ClientSecret = this.ProcessorDetailsFormControls.ClientSecretFormControl.value;\n break;\n }\n break;\n\n case 'Proxy':\n app.Processor.InboundPath = this.ProcessorDetailsFormControls.InboundPathFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.ProcessorDetailsFormControls.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'API':\n app.LowCodeUnit.APIRoot = this.ProcessorDetailsFormControls.APIRootFormControl.value;\n\n app.LowCodeUnit.Security = this.ProcessorDetailsFormControls.SecurityFormControl.value;\n\n break;\n\n case 'SPA':\n app.LowCodeUnit.SPARoot = this.ProcessorDetailsFormControls.SPARootFormControl.value;\n break;\n }\n break;\n\n case 'Redirect':\n app.Processor.Permanent = !!this.ProcessorDetailsFormControls.PermanentFormControl.value;\n\n app.Processor.PreserveMethod = !!this.ProcessorDetailsFormControls.PreserveMethodFormControl.value;\n\n app.Processor.Redirect = this.ProcessorDetailsFormControls.RedirectFormControl.value;\n break;\n }\n\n if (!app.LookupConfig.PathRegex.startsWith('/')) {\n app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;\n }\n\n const saveAppReq: SaveApplicationAsCodeEventRequest = {\n ProjectLookup: this.data.projectLookup,\n Application: app,\n ApplicationLookup: this.NewApplicationLookup,\n };\n// this.HasBuildFormControl.value && taken out from below if statement\n if (this.ProcessorDetailsFormControls.ProcessorType !== 'redirect' && this.ProcessorDetailsFormControls.LCUType === 'GitHub') {\n if (app) {\n app.LowCodeUnit.SourceControlLookup = this.ProcessorDetailsFormControls.SourceControlFormControl.value;\n }\n } else if (app) {\n app.LowCodeUnit.SourceControlLookup = null;\n }\n\n // console.log(\"Save new App request: \", saveAppReq);\n\n\n this.eacSvc.SaveApplicationAsCode(saveAppReq).then(res =>{\n this.handleSaveStatus(res);\n });\n }\n\n protected handleSaveStatus(status: Status){\n console.log(\"event to save: \", status);\n if (status.Code === 0){\n this.snackBar.open(\"Application Succesfully Created\", \"Dismiss\",{\n duration: 5000\n });\n this.CloseDialog();\n }\n else{\n this.ErrorMessage = status.Message;\n }\n }\n\n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Create Application</h2>\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n <lcu-edit-application-form \n [current-route]=\"data.currentRoute\"\n [editing-application]=\"NewApplication\"\n [has-save-button]=\"HasSaveButton\"\n >\n </lcu-edit-application-form>\n\n <lcu-processor-details-form \n [editing-application]=\"NewApplication\"\n [editing-application-lookup]=\"NewApplicationLookup\"\n [has-save-button]=\"HasSaveButton\"\n [source-control-lookups]=\"SourceControlLookups\"\n [project-lookup]=\"data.projectLookup\"\n >\n </lcu-processor-details-form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n\n <button \n *ngIf=\"ProcessorDetailsFormControls && ApplicationFormControls && !State?.Loading\"\n mat-raised-button \n color=\"primary\"\n fxFlex=\"25%\"\n class=\"new-app-submit\" \n (click)=\"SaveApplication()\"\n [disabled]=\"\n !ProcessorDetailsFormControls?.ProcessorDetailsFormGroup?.valid \n || \n !ApplicationFormControls?.ApplicationFormGroup?.valid\n \"\n >\n Save Application\n </button>\n</mat-dialog-actions>\n\n\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NewApplicationDialogComponent } from '../../dialogs/new-application-dialog/new-application-dialog.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-gh-control',\n templateUrl: './gh-control.component.html',\n styleUrls: ['./gh-control.component.scss']\n})\nexport class GhControlComponent implements OnInit {\n\n public get ActiveEnvironmentLookup(): string {\n // TODO: Eventually support multiple environments\n const envLookups = Object.keys(this.State?.EaC?.Environments || {});\n\n return envLookups[0];\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public InputLabel: string;\n\n public SkeletonEffect: string;\n\n protected selectedBtn: string;\n\n public value: string;\n\n constructor( \n protected eacSvc: EaCService,\n protected dialog: MatDialog) { \n\n this.InputLabel = \"Create Pull Request\";\n this.SkeletonEffect = \"wave\";\n this.selectedBtn = \"pr-btn\";\n\n }\n\n public ngOnInit(): void {\n \n }\n\n public ngAfterViewInit(){\n this.addSelectBtn();\n }\n\n public CreateFeatureBranch(){\n this.removeSelectedBtn();\n this.InputLabel = \"Create Feature Branch\";\n this.selectedBtn = \"fb-btn\";\n this.addSelectBtn();\n console.log(\"create feature branch selected\");\n\n }\n\n public OpenIssue(){\n this.removeSelectedBtn();\n this.InputLabel = \"Open Issue\";\n this.selectedBtn = \"oi-btn\";\n this.addSelectBtn();\n console.log(\"open issue selected\");\n\n }\n\n public CreatePullRequest(){\n this.removeSelectedBtn();\n this.InputLabel = \"Create Pull Request\";\n this.selectedBtn = \"pr-btn\";\n this.addSelectBtn();\n console.log(\"create pull request selected\");\n\n }\n\n public CreateNewApp(){\n const dialogRef = this.dialog.open(NewApplicationDialogComponent, {\n width: '600px',\n data: {\n environmentLookup: this.ActiveEnvironmentLookup,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n // console.log('The dialog was closed');\n // console.log(\"result:\", result)\n });\n }\n\n public RouteToPath(path: string): void {\n window.location.href = path;\n }\n\n\n public Submit(){\n console.log(\"submitting: \", this.value);\n switch (this.selectedBtn){\n case \"pr-btn\":\n //Pull request\n console.log(\"creating pull request: \", this.value);\n break;\n case \"oi-btn\":\n //Open Issue\n console.log(\"Open issue: \", this.value);\n break;\n case \"fb-btn\":\n //Feature Branch\n console.log(\"creating feature branch: \", this.value);\n break;\n default:\n console.log(\"hmm\")\n\n break;\n }\n }\n\n //HELPERS\n\n protected addSelectBtn(){ \n // (<HTMLElement>document.getElementById(this.selectedBtn)).classList.add('selected');\n }\n\n protected removeSelectedBtn(){\n // (<HTMLElement>document.getElementById(this.selectedBtn)).classList.remove('selected');\n }\n\n}\n","<mat-card class=\"social-card\" *ngIf=\"false\">\n <ng-container *ngIf=\"!State?.Loading\">\n <div class=\"gh-card-container\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-icon fxFlex=\"15%\" class=\"gh-icon\">error_outline</mat-icon>\n <div fxFlex=\"70%\" class=\"gh-card-main-content\">\n <mat-form-field appearance=\"fill\" class=\"gh-input\">\n <mat-label>{{ InputLabel }}</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"value\" />\n <!-- <button *ngIf=\"value\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"value=''\">\n <mat-icon>close</mat-icon>\n </button> -->\n </mat-form-field>\n </div>\n\n <button\n fxFlex=\"15%\"\n mat-button\n (click)=\"Submit()\"\n id=\"submit-btn\"\n color=\"primary\"\n >\n Submit\n </button>\n </div>\n\n <mat-card-actions fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <button mat-button (click)=\"CreatePullRequest()\" id=\"pr-btn\">\n Pull Request\n </button>\n <button mat-button (click)=\"OpenIssue()\" id=\"oi-btn\">Open Issue</button>\n <button mat-button (click)=\"CreateFeatureBranch()\" id=\"fb-btn\">\n Feature Branch\n </button>\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" aria-label=\"menu\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button class=\"gh-menu-action\" mat-menu-item (click)=\"CreateNewApp()\">\n Create New App\n </button>\n\n <button\n class=\"gh-menu-action\"\n mat-menu-item\n (click)=\"RouteToPath('/dashboard/create-project')\"\n >\n Create Project\n </button>\n </mat-menu>\n </mat-card-actions>\n </ng-container>\n\n <!-- SKELETON -->\n <ng-container *ngIf=\"State?.Loading\">\n <div id=\"gh-card-skeleton\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <skeleton-avatar\n class=\"gh-icon\"\n [showIcon]=\"false\"\n [effect]=\"SkeletonEffect\"\n ></skeleton-avatar>\n\n <div fxFlex=\"70%\" class=\"gh-card-main-content\">\n <skeleton-block\n height=\"60px\"\n [effect]=\"SkeletonEffect\"\n ></skeleton-block>\n </div>\n\n <div\n skeleton-text\n fxFlex=\"15%\"\n [effect]=\"SkeletonEffect\"\n style=\"margin: 0px 10px\"\n >\n Submit\n </div>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Pull Request</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Open Issue</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Feature Branch</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">\n <mat-icon>more_horiz</mat-icon>\n </div>\n </div>\n </ng-container>\n</mat-card>\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipInputEvent } from '@angular/material/chips';\nimport { MatSelectChange } from '@angular/material/select';\nimport { BaseModeledResponse, BaseResponse, Guid, Status } from '@lcu/common';\nimport {\n EaCArtifact,\n EaCDevOpsAction,\n EaCEnvironmentAsCode,\n EaCSourceControl,\n} from '@semanticjs/common';\nimport { ApplicationsFlowService } from '../../services/applications-flow.service';\nimport {\n EaCService,\n SaveEnvironmentAsCodeEventRequest,\n} from '../../services/eac.service';\nimport {\n ApplicationsFlowState,\n GitHubBranch,\n GitHubOrganization,\n GitHubRepository,\n ProjectHostingDetails,\n} from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-devops-source-control-form',\n templateUrl: './devops-source-control-form.component.html',\n styleUrls: ['./devops-source-control-form.component.scss'],\n})\nexport class DevopsSourceControlFormComponent\n implements AfterViewInit, OnDestroy, OnInit\n{\n // Fields\n\n @Input('editing-source-control-lookup')\n public EditingSourceControlLookup: string;\n\n @Input('environment')\n public Environment: EaCEnvironmentAsCode;\n\n @Input('environment-lookup')\n public EnvironmentLookup: string;\n\n @Output('save-status-event')\n public SaveStatusEvent: EventEmitter<Status>;\n\n @ViewChild('branches')\n public BranchesInput: ElementRef<HTMLInputElement>;\n\n //Optional input not being used setting to\n // @Input('build-path')\n public BuildPath: string;\n\n //Optional not being used\n // @Input('build-path-disabled')\n public BuildPathDisabled: boolean;\n\n // this input is not being used anywhere\n // @Input('source-control-root')\n public SourceControlRoot: string;\n\n //not being used set to true by default\n // @Input('use-branches')\n public UseBranches: boolean;\n\n //not being used set to false by default\n // @Input('use-build-path')\n public UseBuildPath: boolean;\n\n // Properties\n\n public get ArtifactLookups(): Array<string> {\n return this.DevOpsAction?.ArtifactLookups;\n }\n\n public get ArtifactLookup(): string {\n const artLookup = this.DevOpsAction?.ArtifactLookups\n ? this.DevOpsAction?.ArtifactLookups[0]\n : null;\n return artLookup;\n }\n\n public get Artifact(): EaCArtifact {\n return this.Environment?.Artifacts && this.ArtifactLookup\n ? this.Environment?.Artifacts[this.ArtifactLookup] || {}\n : {};\n }\n public get BranchesFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get(\n this.SourceControlRoot + 'branches'\n );\n }\n\n public get BuildPathFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get(\n this.SourceControlRoot + 'buildPath'\n );\n }\n\n public get DevOpsActionLookups(): Array<string> {\n // console.log(this.DevOpsActions);\n return Object.keys(this.DevOpsActions || {});\n }\n\n public get DevOpsAction(): any {\n return this.Environment.DevOpsActions && this.DevOpsActionLookup\n ? this.Environment.DevOpsActions[this.DevOpsActionLookup] || {}\n : {};\n }\n\n public get DevOpsActionLookup(): string {\n if (!!this.DevOpsActionLookupFormControl?.value) {\n return this.DevOpsActionLookupFormControl.value;\n }\n\n if (!!this.EditingSourceControl?.DevOpsActionTriggerLookups) {\n return this.EditingSourceControl?.DevOpsActionTriggerLookups[0];\n } else {\n return null;\n }\n }\n\n public get DevOpsActionLookupFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get('devOpsActionLookup');\n }\n\n public get DevOpsActions(): { [lookup: string]: EaCDevOpsAction } {\n return this.Environment.DevOpsActions || {};\n }\n\n public get EditingSourceControl(): EaCSourceControl {\n let sc = this.Environment?.Sources\n ? this.Environment?.Sources[this.EditingSourceControlLookup]\n : null;\n\n if (sc == null && this.EditingSourceControlLookup) {\n sc = {};\n }\n\n return sc;\n }\n\n public get MainBranchFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get(\n this.SourceControlRoot + 'mainBranch'\n );\n }\n\n public get OrganizationFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get(\n this.SourceControlRoot + 'organization'\n );\n }\n\n public get RepositoryFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get(\n this.SourceControlRoot + 'repository'\n );\n }\n\n public get State(): ApplicationsFlowState {\n return this.eacSvc.State;\n }\n\n public BranchOptions: GitHubBranch[];\n\n public BuildPathOptions: string[];\n\n public CreatingRepository: boolean;\n\n public DevOpsSourceControlFormGroup: FormGroup;\n\n public HostingDetails: ProjectHostingDetails;\n\n public Loading: boolean;\n\n public OrganizationOptions: GitHubOrganization[];\n\n public RepositoryOptions: GitHubRepository[];\n\n public SelectedBranches: string[];\n\n public SkeletonEffect: string;\n\n public readonly SeparatorKeysCodes = [ENTER, COMMA] as const;\n\n // Constructors\n constructor(\n protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService,\n protected formBuilder: FormBuilder\n ) {\n this.SaveStatusEvent = new EventEmitter();\n\n this.BuildPath = null;\n\n this.HostingDetails = new ProjectHostingDetails();\n\n this.SelectedBranches = [];\n\n this.SourceControlRoot = '';\n\n this.SkeletonEffect = \"wave\";\n\n this.UseBranches = true;\n\n this.UseBuildPath = false;\n }\n\n // Life Cycle\n public ngAfterViewInit(): void {}\n\n public ngOnDestroy(): void {\n this.destroyFormControls();\n }\n\n public ngOnInit(): void {\n\n console.log(\"source control lookup\", this.EditingSourceControlLookup)\n\n if (this.EditingSourceControlLookup === null) {\n this.CreateNewSourceControl();\n }\n console.log(\"source control\", this.EditingSourceControl);\n\n if (this.EditingSourceControl != null) {\n this.DevOpsSourceControlFormGroup = this.formBuilder.group({});\n\n this.setupFormControls();\n }\n\n this.RefreshOrganizations();\n }\n\n // API Methods\n public AddBranchOption(event: MatChipInputEvent): void {\n this.addBranchOption(event.value);\n\n event.input.value = '';\n }\n\n public BranchOptionSelected(event: MatAutocompleteSelectedEvent): void {\n this.addBranchOption(event.option.value);\n }\n\n public BranchesChanged(branches: string[]): void {\n this.loadProjectHostingDetails();\n }\n\n public BuildPathChanged(event: MatSelectChange): void {\n //do something??\n }\n\n public CreateNewSourceControl(): void {\n this.SetEditingSourceControl(Guid.CreateRaw());\n }\n\n public CreateRepository(): void {\n this.CreatingRepository = true;\n\n this.RepositoryFormControl.reset();\n }\n\n public CancelCreateRepository(): void {\n this.CreatingRepository = false;\n }\n\n public DevOpsActionLookupChanged(event: MatSelectChange): void {\n this.configureDevOpsAction();\n }\n\n public MainBranchChanged(event: MatSelectChange): void {\n this.emitBranchesChanged();\n }\n\n public OrganizationChanged(event: MatSelectChange): void {\n const org = this.OrganizationFormControl;\n\n this.RepositoryFormControl.reset();\n\n if (this.UseBranches) {\n this.BranchesFormControl.reset();\n\n this.SelectedBranches = [];\n }\n\n this.listRepositories();\n }\n\n public RefreshOrganizations(): void {\n // this.Loading = true;\n this.listOrganizations();\n\n this.OrganizationFormControl?.reset();\n\n this.RepositoryFormControl?.reset();\n\n if (this.UseBranches) {\n this.BranchesFormControl?.reset();\n }\n }\n\n public RemoveBranchOption(option: string): void {\n const index = this.SelectedBranches.indexOf(option);\n\n if (index >= 0) {\n this.SelectedBranches.splice(index, 1);\n }\n\n this.emitBranchesChanged();\n }\n\n public RepositoryChanged(event: MatSelectChange): void {\n const repo = this.RepositoryFormControl;\n\n if (this.UseBranches) {\n this.BranchesFormControl.reset();\n\n this.SelectedBranches = [];\n\n this.listBranches();\n }\n\n if (!this.UseBranches) {\n this.listBuildPaths();\n }\n }\n\n public SaveRepository(): void {\n this.Loading = true;\n\n const org = this.OrganizationFormControl.value;\n\n const repoName = this.RepositoryFormControl.value;\n\n this.appsFlowSvc\n .CreateRepository(org, repoName)\n .subscribe((response: BaseResponse) => {\n if (response.Status.Code === 0) {\n this.listRepositories(repoName);\n\n this.CreatingRepository = false;\n } else {\n // TODO: Need to surface an error to the user...\n\n this.Loading = false;\n }\n });\n }\n\n public SetEditingSourceControl(scLookup: string): void {\n this.EditingSourceControlLookup = scLookup;\n }\n\n public SubmitSourceControl() {\n console.log(\n 'source control submitted: ',\n this.DevOpsSourceControlFormGroup.value\n );\n this.SaveSourceControl();\n }\n\n public SaveSourceControl(): void {\n const saveEnvReq: SaveEnvironmentAsCodeEventRequest = {\n Environment: {\n ...this.Environment,\n Sources: this.Environment.Sources || {},\n },\n EnvironmentLookup: this.EnvironmentLookup,\n EnterpriseDataTokens: {},\n };\n\n let source: EaCSourceControl = {\n ...this.EditingSourceControl,\n Branches: this.SelectedBranches,\n MainBranch: this.MainBranchFormControl.value,\n };\n\n source = {\n ...source,\n Type: 'GitHub',\n Name: `@${this.OrganizationFormControl.value}/${this.RepositoryFormControl.value}`,\n DevOpsActionTriggerLookups: [this.DevOpsActionLookup],\n Organization: this.OrganizationFormControl.value,\n Repository: this.RepositoryFormControl.value,\n };\n\n const scLookup = `github://${source.Organization}/${source.Repository}`;\n\n saveEnvReq.Environment.Sources[scLookup] = source;\n\n console.log('save SC: ', saveEnvReq)\n\n let resp = this.eacSvc.SaveEnvironmentAsCode(saveEnvReq);\n\n resp.then((res) => {\n this.SaveStatusEvent.emit(res);\n });\n }\n\n // Helpers\n\n protected addBranchOption(value: string): void {\n value = (value || '').trim();\n\n if (value && this.SelectedBranches.indexOf(value) < 0) {\n this.SelectedBranches.push(value);\n }\n\n this.BranchesInput.nativeElement.blur();\n\n this.emitBranchesChanged();\n }\n\n protected configureDevOpsAction(): void {\n setTimeout(() => {\n this.DevOpsActionLookupFormControl.setValue(this.DevOpsActionLookup);\n }, 0);\n }\n\n protected destroyFormControls(): void {\n this.DevOpsSourceControlFormGroup.removeControl(\n [this.SourceControlRoot, 'mainBranch'].join('')\n );\n\n this.DevOpsSourceControlFormGroup?.removeControl(\n [this.SourceControlRoot, 'branches'].join('')\n );\n\n this.DevOpsSourceControlFormGroup?.removeControl(\n [this.SourceControlRoot, 'buildPath'].join('')\n );\n\n this.SelectedBranches = [];\n\n this.DevOpsSourceControlFormGroup?.removeControl(\n [this.SourceControlRoot, 'organization'].join('')\n );\n\n this.DevOpsSourceControlFormGroup?.removeControl(\n [this.SourceControlRoot, 'repository'].join('')\n );\n }\n\n protected emitBranchesChanged(): void {\n if (\n this.SelectedBranches?.length > 0 &&\n (!this.MainBranchFormControl.value ||\n this.SelectedBranches.indexOf(this.MainBranchFormControl.value) < 0)\n ) {\n this.MainBranchFormControl.setValue(\n this.SelectedBranches.find(\n (branch) => branch === 'main' || branch === 'master'\n ) || this.SelectedBranches[0]\n );\n } else if (this.SelectedBranches?.length <= 0) {\n this.MainBranchFormControl.reset();\n }\n\n this.BranchesFormControl.setValue(this.SelectedBranches.join(','));\n\n this.BranchesChanged(this.SelectedBranches || []);\n }\n\n protected listBranches(): void {\n if (this.UseBranches) {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListBranches(\n this.OrganizationFormControl.value,\n this.RepositoryFormControl.value\n )\n .subscribe((response: BaseModeledResponse<GitHubBranch[]>) => {\n this.BranchOptions = response.Model;\n\n this.Loading = false;\n\n if (this.EditingSourceControl?.Branches?.length > 0) {\n this.SelectedBranches = this.EditingSourceControl.Branches;\n } else if (this.BranchOptions?.length === 1) {\n this.BranchesFormControl.setValue(this.BranchOptions[0].Name);\n\n this.SelectedBranches = [this.BranchOptions[0].Name];\n }\n\n this.emitBranchesChanged();\n\n this.listBuildPaths();\n });\n }\n }\n\n protected listBuildPaths(): void {\n if (this.UseBuildPath) {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListBuildPaths(\n this.OrganizationFormControl.value,\n this.RepositoryFormControl.value\n )\n .subscribe((response: BaseModeledResponse<string[]>) => {\n this.BuildPathOptions = response.Model;\n\n this.Loading = false;\n\n if (this.BuildPathOptions?.length === 1) {\n this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);\n }\n });\n }\n }\n\n protected listOrganizations(): void {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListOrganizations()\n .subscribe((response: BaseModeledResponse<GitHubOrganization[]>) => {\n this.OrganizationOptions = response.Model;\n console.log(\"Organization Options: \", this.OrganizationOptions);\n\n this.Loading = false;\n\n if (this.EditingSourceControl?.Organization) {\n setTimeout(() => {\n this.OrganizationFormControl.setValue(\n this.EditingSourceControl.Organization\n );\n\n this.listRepositories(this.EditingSourceControl?.Repository);\n }, 0);\n }\n });\n }\n\n protected listRepositories(activeRepo: string = null): void {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListRepositories(this.OrganizationFormControl.value)\n .subscribe((response: BaseModeledResponse<GitHubRepository[]>) => {\n this.RepositoryOptions = response.Model;\n\n this.Loading = false;\n\n if (activeRepo) {\n setTimeout(() => {\n this.RepositoryFormControl.setValue(activeRepo);\n\n this.listBranches();\n\n if (!this.UseBranches) {\n this.listBuildPaths();\n }\n }, 0);\n } else if (this.RepositoryOptions?.length <= 0) {\n this.CreatingRepository = true;\n }\n });\n }\n\n protected loadProjectHostingDetails(): void {\n if (this.SelectedBranches?.length > 0) {\n this.HostingDetails.Loading = true;\n\n this.appsFlowSvc\n .LoadProjectHostingDetails()\n .subscribe(\n (response: BaseModeledResponse<ProjectHostingDetails>) => {\n this.HostingDetails = response.Model;\n\n this.HostingDetails.Loading = false;\n\n this.configureDevOpsAction();\n },\n (err) => {\n this.HostingDetails.Loading = false;\n }\n );\n }\n }\n\n protected setupFormControls(): void {\n this.destroyFormControls();\n\n console.log(\"Source Control: \", this.EditingSourceControl);\n\n this.DevOpsSourceControlFormGroup.addControl(\n 'devOpsActionLookup',\n new FormControl(this.DevOpsActionLookup || '', [])\n );\n\n this.DevOpsSourceControlFormGroup.addControl(\n [this.SourceControlRoot, 'organization'].join(''),\n new FormControl(\n this.EditingSourceControl.Organization ?? '',\n Validators.required\n )\n );\n\n this.DevOpsSourceControlFormGroup.addControl(\n [this.SourceControlRoot, 'repository'].join(''),\n new FormControl(\n this.EditingSourceControl.Repository ?? '',\n Validators.required\n )\n );\n\n if (this.UseBranches) {\n this.DevOpsSourceControlFormGroup.addControl(\n [this.SourceControlRoot, 'branches'].join(''),\n new FormControl(\n this.EditingSourceControl?.Branches ?? '',\n Validators.required\n )\n );\n\n this.SelectedBranches = this.EditingSourceControl?.Branches;\n\n this.DevOpsSourceControlFormGroup.addControl(\n [this.SourceControlRoot, 'mainBranch'].join(''),\n new FormControl(\n this.EditingSourceControl.MainBranch ?? '',\n Validators.required\n )\n );\n }\n\n if (this.UseBuildPath) {\n this.DevOpsSourceControlFormGroup.addControl(\n [this.SourceControlRoot, 'buildPath'].join(''),\n new FormControl(this.BuildPath ?? '', Validators.required)\n );\n }\n }\n}\n","<form \n class=\"form-card\" \n [formGroup]=\"DevOpsSourceControlFormGroup\" \n (ngSubmit)=\"SubmitSourceControl()\"\n>\n\n <!-- <mat-card class=\"spread\" class=\"sc-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Source Control </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-icon matSuffix matTooltip=\"Configure source control, DevOps CI/CD, and artifacts.\">\n info_outline\n </mat-icon>\n </mat-card-header> -->\n\n <!-- <mat-card-content> -->\n\n <ng-container *ngIf=\"State?.Loading\">\n <lcu-loader [loading]=\"State?.Loading\"></lcu-loader>\n\n <!-- <skeleton-block \n class=\"s-block\"\n [effect]=\"SkeletonEffect\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n [effect]=\"SkeletonEffect\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n [effect]=\"SkeletonEffect\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n [effect]=\"SkeletonEffect\" \n ></skeleton-block> -->\n\n </ng-container>\n\n <ng-container *ngIf=\"!State?.Loading\">\n\n <div class=\"card\">\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select \n formControlName=\"devOpsActionLookup\" \n placeholder=\"DevOps Action\"\n [disabled]=\"HostingDetails?.Loading\" \n (selectionChange)=\"DevOpsActionLookupChanged($event)\"\n >\n <ng-container *ngFor=\"let devOpsActionLookup of DevOpsActionLookups\">\n <mat-option \n [value]=\"devOpsActionLookup\" \n *ngIf=\"DevOpsActions[devOpsActionLookup]; let devOpsAction\">\n {{ devOpsAction.Name }}\n </mat-option>\n </ng-container>\n\n <mat-option value=\"\">-- Create New --</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"card\" *ngIf=\"OrganizationFormControl?.valid || !Loading\">\n <mat-form-field \n class=\"mat-full-width with-hint margin-bottom\" \n *ngIf=\"OrganizationOptions?.length > 0\"\n >\n <mat-icon class=\"org-icon\" matPrefix>corporate_fare</mat-icon>\n\n <mat-select \n [formControlName]=\"SourceControlRoot + 'organization'\" \n placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\" \n [disabled]=\"Loading || HostingDetails?.Loading\" \n required\n >\n <ng-container *ngFor=\"let orgOpt of OrganizationOptions\">\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-icon matSuffix (click)=\"RefreshOrganizations()\" matTooltip=\"Refresh Organization\" color=\"accent\"> refresh </mat-icon>\n\n <a matSuffix href=\"/.oauth/github?oauth-force-edit=true\" target=\"_blank\" color=\"accent\">\n <mat-icon color=\"accent\" matTooltip=\"Re-authorize Organizations\"> launch </mat-icon>\n </a>\n\n <mat-hint>\n If you don't have an organization or would like to create a new one,\n <a href=\"https://github.com/account/organizations/new\" class=\"primary-link\" target=\"_blank\">\n start here\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"card\" *ngIf=\"\n RepositoryFormControl?.valid ||\n (OrganizationFormControl?.valid && !Loading)\n \">\n <mat-form-field class=\"mat-full-width\">\n <mat-icon class=\"org-icon\" matPrefix>description</mat-icon>\n\n <mat-select [formControlName]=\"SourceControlRoot + 'repository'\" [placeholder]=\"\n OrganizationFormControl?.valid\n ? 'Repository'\n : 'Repository (select organization first)'\n \" [disabled]=\"\n !OrganizationFormControl?.valid || Loading || HostingDetails?.Loading\n \" (selectionChange)=\"RepositoryChanged($event)\" *ngIf=\"!CreatingRepository\" required>\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <input matInput placeholder=\"Repository (creates new if does not exist)\"\n [formControlName]=\"SourceControlRoot + 'repository'\" *ngIf=\"CreatingRepository\"\n [fxHide]=\"Loading || HostingDetails?.Loading\" required />\n\n <mat-icon matSuffix (click)=\"CreateRepository()\" [fxHide]=\"Loading || HostingDetails?.Loading\"\n *ngIf=\"!CreatingRepository && OrganizationFormControl?.valid\">\n add_circle\n </mat-icon>\n\n <button mat-button type=\"button\" (click)=\"SaveRepository()\"\n *ngIf=\"CreatingRepository && RepositoryFormControl?.valid\">\n\n <mat-icon matSuffix color=\"primary\">\n save\n </mat-icon>\n </button>\n\n <button mat-button type=\"button\" (click)=\"CancelCreateRepository()\" *ngIf=\"CreatingRepository\">\n\n <mat-icon matSuffix>\n cancel\n </mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div class=\"card\" *ngIf=\"\n (BranchesFormControl?.valid ||\n (OrganizationFormControl?.valid &&\n RepositoryFormControl?.valid &&\n !Loading)) &&\n !CreatingRepository &&\n UseBranches\n \">\n <mat-form-field class=\"mat-full-width\">\n <mat-icon class=\"org-icon\" matPrefix>account_tree</mat-icon>\n\n <mat-label>Selected Branches</mat-label>\n\n <mat-autocomplete (optionSelected)=\"BranchOptionSelected($event)\" #branchOptions=\"matAutocomplete\">\n <ng-container *ngFor=\"let branchOpt of BranchOptions\">\n <mat-option [value]=\"branchOpt.Name\">\n {{ branchOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n\n <mat-chip-list #selectedBranches>\n <mat-chip [removable]=\"true\" (removed)=\"RemoveBranchOption(selBranch)\"\n *ngFor=\"let selBranch of SelectedBranches\">\n {{ selBranch }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n\n <input matInput placeholder=\"New Branch...\" [formControlName]=\"SourceControlRoot + 'branches'\" #branches\n [matAutocomplete]=\"branchOptions\" [matChipInputFor]=\"selectedBranches\"\n [matChipInputSeparatorKeyCodes]=\"SeparatorKeysCodes\" [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"AddBranchOption($event)\" [disabled]=\"Loading || HostingDetails?.Loading\"\n required />\n </mat-chip-list>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width with-hint\" [fxShow]=\"SelectedBranches?.length > 1\">\n <mat-icon class=\"org-icon\" matPrefix>account_tree</mat-icon>\n\n <mat-select [formControlName]=\"SourceControlRoot + 'mainBranch'\" placeholder=\"Main Branch\"\n [disabled]=\"Loading || HostingDetails?.Loading\" (selectionChange)=\"MainBranchChanged($event)\" required>\n <ng-container *ngFor=\"let branch of SelectedBranches\">\n <mat-option [value]=\"branch\">\n {{ branch }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-icon matSuffix (click)=\"RefreshOrganizations()\" color=\"accent\"> refresh </mat-icon>\n\n <a matSuffix mat-icon-button href=\"/.oauth/github?oauth-force-edit=true\" target=\"_blank\" color=\"accent\">\n <mat-icon matTooltip=\"Re-authorize Organizations\" color=\"accent\"> launch </mat-icon>\n </a>\n\n <mat-hint>\n If you don't have an organization or would like to create a new one,\n <a href=\"https://github.com/account/organizations/new\" target=\"_blank\"class=\"primary-link\">\n start here\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"card\" *ngIf=\"\n (BuildPathFormControl?.valid ||\n (OrganizationFormControl?.valid &&\n RepositoryFormControl?.valid &&\n !Loading)) &&\n !CreatingRepository &&\n UseBuildPath\n \">\n <mat-form-field class=\"mat-full-width with-hint\">\n <mat-icon class=\"org-icon\" matPrefix>build</mat-icon>\n\n <mat-select [formControlName]=\"SourceControlRoot + 'buildPath'\" placeholder=\"Build Path\"\n [disabled]=\"Loading || BuildPathDisabled\" (selectionChange)=\"BuildPathChanged($event)\" required>\n <ng-container *ngFor=\"let buildPath of BuildPathOptions\">\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to use for your\n configuration.\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"Loading\">\n <div class=\"spread\">\n <lcu-loader style=\"margin: auto\" [loading]=\"true\"></lcu-loader>\n\n <div class=\"margin-3\">\n <h4 class=\"mat-title\" *ngIf=\"!OrganizationFormControl?.valid\">\n Loading organizations\n </h4>\n\n <h4 class=\"mat-title\" *ngIf=\"\n OrganizationFormControl?.valid && !RepositoryFormControl?.valid\n \">\n Loading repositories\n </h4>\n\n <h4 class=\"mat-title\" *ngIf=\"RepositoryFormControl?.valid && !BranchesFormControl?.valid\">\n Loading branches\n </h4>\n\n <h4 class=\"mat-title\" *ngIf=\"\n (RepositoryFormControl?.valid || BranchesFormControl?.valid) &&\n !BuildPathFormControl?.valid\n \">\n Loading build paths\n </h4>\n </div>\n </div>\n </div>\n </ng-container>\n <!-- </div> -->\n\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n mat-raised-button \n *ngIf=\"!State?.Loading\"\n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!DevOpsSourceControlFormGroup.valid || !DevOpsSourceControlFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Source Control\n </button>\n <lcu-loader [loading]=\"State?.Loading\"></lcu-loader> -->\n \n <!-- </mat-card-actions> -->\n <!-- </mat-card> -->\n</form>","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Status } from '@lcu/common';\nimport { EaCEnvironmentAsCode } from '@semanticjs/common';\nimport { DevopsSourceControlFormComponent } from '../../controls/devops-source-control-form/devops-source-control-form.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\nexport interface SCDialogData {\n environment: EaCEnvironmentAsCode;\n environmentLookup: string;\n scLookup: string;\n}\n\n@Component({\n selector: 'lcu-source-control-dialog',\n templateUrl: './source-control-dialog.component.html',\n styleUrls: ['./source-control-dialog.component.scss']\n})\nexport class SourceControlDialogComponent implements OnInit {\n\n @ViewChild(DevopsSourceControlFormComponent)\n public DevopsSourceControl: DevopsSourceControlFormComponent;\n\n public get DevOpsSourceControlFormGroup(): FormGroup {\n return this.DevopsSourceControl?.DevOpsSourceControlFormGroup;\n }\n\n public get HasConnection(): boolean{\n return this.State.GitHub.HasConnection;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n\n public ErrorMessage: string;\n\n constructor( public dialogRef: MatDialogRef<SourceControlDialogComponent>,\n protected eacSvc: EaCService,\n @Inject(MAT_DIALOG_DATA) public data: SCDialogData,\n protected snackBar: MatSnackBar) { }\n\n public ngOnInit(): void {\n \n }\n\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public HandleSaveStatusEvent(event: Status){\n console.log(\"event to save: \", event);\n if (event.Code === 0){\n this.snackBar.open(\"Source Control Succesfully Saved\", \"Dismiss\",{\n duration: 5000\n });\n this.CloseDialog();\n }\n else{\n this.ErrorMessage = event.Message;\n }\n }\n\n public SaveSourceControl(){\n this.DevopsSourceControl.SaveSourceControl();\n }\n\n}\n","\n<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Source Control</h2>\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n <ng-container *ngIf=\"!HasConnection\">\n \n <lcu-git-auth></lcu-git-auth>\n\n </ng-container>\n\n <ng-conatiner *ngIf=\"HasConnection\" fxLayout=\"column\">\n\n <div fxLayoutAlign=\"center center\">\n <lcu-devops-source-control-form\n [environment]=\"data.environment\"\n [environment-lookup]=\"data.environmentLookup\"\n [editing-source-control-lookup]=\"data.scLookup\"\n (save-status-event)=\"HandleSaveStatusEvent($event)\">\n </lcu-devops-source-control-form>\n </div>\n \n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n </mat-error>\n\n </ng-conatiner>\n\n</mat-dialog-content>\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n\n <button \n class=\"action-button\"\n mat-raised-button \n *ngIf=\"!State?.Loading\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveSourceControl()\"\n [disabled]=\"!DevOpsSourceControlFormGroup?.valid || !DevOpsSourceControlFormGroup?.dirty\">\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n\n</mat-dialog-actions>\n\n\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FeedItem, FeedItemAction } from '../../models/user-feed.model';\nimport moment from 'moment';\nimport { JsonHubProtocol } from '@aspnet/signalr';\nimport { EaCService } from '../../services/eac.service';\nimport { BaseModeledResponse } from '@lcu/common';\nimport { SourceControlDialogComponent } from '../../dialogs/source-control-dialog/source-control-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { EaCEnvironmentAsCode } from '@semanticjs/common';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'lcu-main-feed-card',\n templateUrl: './main-feed-card.component.html',\n styleUrls: ['./main-feed-card.component.scss'],\n})\nexport class MainFeedCardComponent implements OnInit {\n public get ActiveEnvironment(): EaCEnvironmentAsCode {\n return this.State?.EaC?.Environments[this.ActiveEnvironmentLookup];\n }\n\n public get ActiveEnvironmentLookup(): string {\n // TODO: Eventually support multiple environments\n const envLookups = Object.keys(this.State?.EaC?.Environments || {});\n\n return envLookups[0];\n }\n\n public get Environment(): EaCEnvironmentAsCode {\n // console.log(\"Ent Environment var: \", this.State?.EaC?.Environments[this.State?.EaC?.Enterprise?.PrimaryEnvironment]);\n return this.State?.EaC?.Environments[\n this.State?.EaC?.Enterprise?.PrimaryEnvironment\n ];\n }\n\n @Input('feed-item')\n public FeedItem: FeedItem;\n\n public get Icon(): string {\n if (this.FeedItem.Status.Code === 0) {\n return 'check_circle';\n } else if (this.FeedItem.Status.Code === 1) {\n return 'cancel';\n } else if (this.FeedItem.Status.Code === 2) {\n return 'sync';\n } else {\n return 'help_outline';\n }\n }\n\n public get IconColor(): string {\n if (this.FeedItem.Status.Code === 0) {\n return 'green';\n } else if (this.FeedItem.Status.Code === 1) {\n return 'red';\n } else if (this.FeedItem.Status.Code === 2) {\n return 'blue';\n } else {\n return 'gray';\n }\n }\n\n public get State(): ApplicationsFlowState {\n return this.eacSvc.State;\n }\n\n constructor(\n protected eacSvc: EaCService,\n protected dialog: MatDialog,\n private sanitizer: DomSanitizer\n ) {}\n\n // Life Cycle\n public ngOnInit(): void {\n this.handleRefresh();\n }\n\n // API Methods\n public CalculateTimelapse(timestamp: Date) {\n return moment(timestamp).fromNow();\n }\n\n public HandleAction(action: FeedItemAction) {\n if (action.ActionType == 'Link') {\n if (action.Action.startsWith('http')) {\n window.open(action.Action, '_blank');\n } else {\n window.location.href = action.Action;\n }\n } else if (action.ActionType == 'Modal') {\n if (action.Action == 'AddSourceControl') {\n this.OpenSourceControlDialog(null);\n } else {\n alert('other modaled ' + action.Action);\n }\n }\n }\n\n public OpenSourceControlDialog(scLookup: string): void {\n const dialogRef = this.dialog.open(SourceControlDialogComponent, {\n width: '550px',\n data: {\n environment: this.Environment,\n environmentLookup: this.ActiveEnvironmentLookup,\n scLookup: scLookup,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n // console.log('The dialog was closed');\n // console.log(\"result:\", result)\n });\n }\n\n public SafeHtml(html: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n // Helpers\n protected handleRefresh(): void {\n if (this.FeedItem?.RefreshLink) {\n setTimeout(() => {\n this.eacSvc.CheckUserFeedItem(this.FeedItem).subscribe(\n async (response: BaseModeledResponse<FeedItem>) => {\n if (response.Status.Code === 0) {\n this.FeedItem = response.Model;\n\n this.handleRefresh();\n } else {\n console.log(response);\n }\n },\n (err) => {\n console.log(err);\n }\n );\n }, 5000);\n }\n }\n}\n","<mat-card class=\"social-card\">\n <mat-card-header>\n <img\n mat-card-avatar\n class=\"example-header-image\"\n [src]=\"FeedItem.Avatar\"\n *ngIf=\"FeedItem.Avatar\"\n />\n\n <mat-card-title *ngIf=\"FeedItem.Title\">{{ FeedItem.Title }}</mat-card-title>\n\n <mat-card-subtitle>\n <div *ngIf=\"FeedItem.Subtitle\">{{ FeedItem.Subtitle }}</div>\n\n <div *ngIf=\"FeedItem.Subtext\">{{ FeedItem.Subtext }}</div>\n\n <div *ngIf=\"FeedItem.Status\">\n <mat-icon\n *ngIf=\"Icon\"\n [style.color]=\"IconColor\"\n [class.spin]=\"FeedItem.Status?.Code == 2\"\n >\n {{ Icon }}\n </mat-icon>\n\n <span *ngIf=\"FeedItem.Timestamp\">\n {{ CalculateTimelapse(FeedItem.Timestamp) }}\n </span>\n </div>\n </mat-card-subtitle>\n </mat-card-header>\n\n <div *ngIf=\"!FeedItem.IsShortForm\">\n <div class=\"feed-card-container\">\n <div class=\"feed-card-main-content\">\n <mat-tab-group>\n <ng-container *ngFor=\"let tab of FeedItem.Tabs\">\n <mat-tab [label]=\"tab.Title\">\n <div class=\"tab\">\n <ng-container *ngIf=\"tab.Data?.Commit?.Message\">\n <div class=\"commit-message\">\n {{ tab.Data?.Commit?.Message }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"tab.Data?.Content\">\n <div class=\"content\">\n {{ tab.Data?.Content }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"tab.Data?.Video\">\n <div\n class=\"video\"\n [innerHTML]=\"SafeHtml(tab.Data.Video)\"\n ></div>\n </ng-container>\n\n <ng-container *ngIf=\"tab.Data?.Comments\">\n <div class=\"comments\">\n <ng-container *ngIf=\"tab.Data?.Comments?.length <= 0\">\n <h4>No comments provided</h4>\n </ng-container>\n\n <mat-card *ngFor=\"let comment of tab.Data?.Comments\">\n <mat-card-header>\n <img\n mat-card-avatar\n class=\"example-header-image\"\n [src]=\"comment.Avatar\"\n *ngIf=\"comment.Avatar\"\n />\n\n <mat-card-title>\n {{ comment.Author }}\n commented on\n {{ comment.UpdatedAt }}\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n {{ comment.Comment }}\n </mat-card-content>\n </mat-card>\n </div>\n </ng-container>\n </div>\n </mat-tab>\n </ng-container>\n </mat-tab-group>\n </div>\n </div>\n </div>\n\n <mat-card-actions fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <div fxFlex></div>\n\n <ng-container *ngFor=\"let action of FeedItem.Actions\">\n <button mat-button [color]=\"action.Color\" (click)=\"HandleAction(action)\">\n <mat-icon *ngIf=\"action.Icon\">{{ action.Icon }}</mat-icon>\n\n {{ action.Text }}\n </button>\n </ng-container>\n </mat-card-actions>\n</mat-card>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-two-column-header',\n templateUrl: './two-column-header.component.html',\n styleUrls: ['./two-column-header.component.scss']\n})\nexport class TwoColumnHeaderComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div class=\"col-container\" fxLayout=\"row\">\n\n <div class=\"col-left\" fxFlex=\"15%\" >\n <ng-content select=\"[left]\"></ng-content>\n </div>\n\n <div class=\"col-center\" fxFlex=\"85%\">\n <ng-content></ng-content>\n </div>\n\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-card-carousel',\n templateUrl: './card-carousel.component.html',\n styleUrls: ['./card-carousel.component.scss']\n})\nexport class CardCarouselComponent implements OnInit {\n\n @Input('stats')\n public Stats: any[];\n\n protected carouselIndex: number;\n\n constructor() { \n this.carouselIndex = 0;\n }\n\n ngOnInit(): void {\n }\n\n public ngAfterViewInit(){\n this.assignCarouselClass();\n }\n\n public LeftChevronClicked(){\n\n this.removeCarouselClasses();\n \n if(this.carouselIndex === 0){\n this.carouselIndex = this.Stats.length-1;\n }\n else{\n this.carouselIndex--;\n }\n \n this.assignCarouselClass();\n \n }\n\n public MoreDetailsClicked(){\n console.log(\"More details clicked on carousel item\", this.Stats[this.carouselIndex]);\n }\n \n public RightChevronClicked(){\n this.removeCarouselClasses();\n \n if(this.carouselIndex === this.Stats.length-1){\n this.carouselIndex = 0;\n }\n else{\n this.carouselIndex++;\n }\n \n this.assignCarouselClass();\n }\n\n \n //HELPERS\n\n protected removeCarouselClasses(){\n for(let i=0; i<this.Stats.length; i++){\n if(i === this.carouselIndex){\n (<HTMLElement>document.getElementById(\"carousel-\"+this.carouselIndex)).classList.remove('active');\n }\n else{\n (<HTMLElement>document.getElementById(\"carousel-\"+i)).classList.remove('hidden');\n }\n }\n }\n\n protected assignCarouselClass(){\n for(let i=0; i<this.Stats.length; i++){\n if(i === this.carouselIndex){\n (<HTMLElement>document.getElementById(\"carousel-\"+this.carouselIndex)).classList.add('active');\n }\n else{\n (<HTMLElement>document.getElementById(\"carousel-\"+i)).classList.add('hidden');\n }\n }\n }\n\n}\n","<div stats class=\"carousel-container\">\n <div class=\"chevron-container\" fxLayout=\"row\">\n <button mat-icon-button class=\"chevron-button\" id=\"left-chevron\" (click)=\"LeftChevronClicked()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button mat-icon-button class=\"chevron-button\" id=\"right-chevron\" (click)=\"RightChevronClicked()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n <ng-container *ngFor=\"let stat of Stats; let i = index\">\n <div class=\"carousel-item\" [id]=\"'carousel-'+i\">\n <div class=\"carousel-title\">{{stat.Name}}</div>\n <div class=\"carousel-stat\">{{stat.Stat}}</div>\n </div>\n </ng-container>\n <div (click)=\"MoreDetailsClicked()\">More details</div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { EaCApplicationAsCode } from '@semanticjs/common';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-security-toggle',\n templateUrl: './security-toggle.component.html',\n styleUrls: ['./security-toggle.component.scss']\n})\nexport class SecurityToggleComponent implements OnInit {\n\n @Input('editing-application')\n public EditingApplication: EaCApplicationAsCode;\n\n @Output('save-form-event')\n public SaveFormEvent: EventEmitter<{}>;\n\n public get IsPrivateFormControl(): AbstractControl {\n return this.SecurityFormGroup?.controls.isPrivate;\n }\n\n public get IsTriggerSignInFormControl(): AbstractControl {\n return this.SecurityFormGroup?.controls.isTriggerSignIn;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public SecurityFormGroup: FormGroup;\n\n public ProcessorType: string;\n\n public SkeletonEffect: string;\n\n constructor(protected eacSvc: EaCService,\n protected formBldr: FormBuilder) { \n this.SaveFormEvent = new EventEmitter;\n this.SkeletonEffect = 'wave';\n }\n\n public ngOnInit(): void {\n this.setupSecurityFormGroup();\n }\n\n public SecuritySubmit() {\n //save the security settings\n console.log(\"submitting security values: \", this.SecurityFormGroup.value);\n this.SaveFormEvent.emit(this.SecurityFormGroup.value);\n }\n\n protected setupSecurityFormGroup() {\n this.ProcessorType = this.EditingApplication?.Processor?.Type || '';\n this.SecurityFormGroup = this.formBldr.group({});\n this.setupSecurityForm();\n }\n\n protected setupSecurityForm(): void {\n this.SecurityFormGroup.addControl(\n 'isPrivate',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.IsPrivate || false,\n [Validators.required]\n )\n );\n\n this.SecurityFormGroup.addControl(\n 'isTriggerSignIn',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.IsTriggerSignIn || false,\n [Validators.required]\n )\n );\n }\n\n}\n","<form\n class=\"security-form\"\n [formGroup]=\"SecurityFormGroup\"\n (ngSubmit)=\"SecuritySubmit()\"\n>\n <mat-card class=\"flow-card\">\n <!-- SKELETON LOADING -->\n <ng-container *ngIf=\"State?.Loading\">\n <mat-card-header fxLayoutAlign=\"space-between center\">\n <mat-card-title skeleton-text [effect]=\"SkeletonEffect\">\n Security Settings\n </mat-card-title>\n <div fxLayoutAlign=\"space-around center\">\n <div skeleton-text [effect]=\"SkeletonEffect\">XXX</div>\n\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">\n info_outline\n </mat-icon>\n </div>\n </mat-card-header>\n\n <mat-card-actions fxLayoutAlign=\"center center\">\n <div\n fxFlex=\"100%\"\n skeleton-text\n [effect]=\"SkeletonEffect\"\n fxLayoutAlign=\"center center\"\n >\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\"> save </mat-icon>\n\n Save Settings\n </div>\n </mat-card-actions>\n </ng-container>\n <!-- END SKELETON LOADING -->\n\n <!-- BEGIN ACTUAL CONTENT -->\n\n <ng-container *ngIf=\"!State?.Loading\">\n <mat-card-header>\n <mat-card-title> Security Settings </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"isPrivate\"\n matTooltip=\"Is Secure Application?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Secured Application is one that requires the user to be authenticated to use the application. The application is hosted behind an identity wall.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <div>\n <div *ngIf=\"IsPrivateFormControl.value\">\n <div>\n <mat-slide-toggle formControlName=\"isTriggerSignIn\">\n Is Trigger Sign In Application?\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Trigger Sign In Application will direct the user to sign in if they are not already.\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions fxLayoutAlign=\"center center\">\n <button\n mat-raised-button\n type=\"submit\"\n fxFlex=\"100%\"\n color=\"primary\"\n [disabled]=\"!SecurityFormGroup.valid || !SecurityFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon>\n Save Settings\n </button>\n </mat-card-actions>\n </ng-container>\n </mat-card>\n</form>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\nimport { EaCApplicationAsCode, EaCEnvironmentAsCode, EaCProjectAsCode, EaCSourceControl } from '@semanticjs/common';\nimport { SourceControlFormControlsComponent } from '../../elements/projects/controls/forms/source-control/source-control.component';\n\n@Component({\n selector: 'lcu-source-control-form',\n templateUrl: './source-control-form.component.html',\n styleUrls: ['./source-control-form.component.scss']\n})\nexport class SourceControlFormComponent implements OnInit {\n\n @Input('editing-application')\n public EditingApplication: EaCApplicationAsCode;\n\n @Input('environment')\n public Environment: EaCEnvironmentAsCode;\n\n @Output('save-form-event')\n public SaveFormEvent: EventEmitter<{}>\n\n public get HasBuildFormControl(): AbstractControl {\n return this.SourceControlFormGroup?.controls.hasBuild;\n }\n\n public get SourceControlLookupFormControl(): AbstractControl {\n return this.SourceControlFormGroup?.controls.sourceControlLookup;\n }\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.SourceControls || {});\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Environment.Sources || {};\n }\n\n public SourceControlFormGroup: FormGroup;\n\n public ProcessorType: string;\n\n constructor(protected formBldr: FormBuilder) {\n this.SaveFormEvent = new EventEmitter;\n }\n\n public ngOnInit(): void {\n this.setupSourceControlForm();\n }\n\n public SourceControlLookupChanged(event: MatSelectChange): void {\n // TODO: Anything to do here on change?\n console.log(\"sourceControlLookupChanged: \", event);\n }\n\n public SubmitSourceControl() {\n console.log(\"submitting source control: \", this.SourceControlFormGroup.value);\n this.SaveFormEvent.emit(this.SourceControlFormGroup.value);\n\n }\n\n\n //HELPER\n\n protected setupSourceControlForm(): void {\n this.ProcessorType = this.EditingApplication?.Processor?.Type || '';\n\n this.SourceControlFormGroup = this.formBldr.group({});\n\n this.setupBuildForm();\n\n }\n\n protected setupBuildForm(): void {\n this.SourceControlFormGroup.addControl(\n 'hasBuild',\n this.formBldr.control(\n !!this.EditingApplication.LowCodeUnit?.SourceControlLookup || false,\n [Validators.required]\n )\n );\n\n this.SourceControlFormGroup.addControl(\n 'sourceControlLookup',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.SourceControlLookup || '',\n []\n )\n );\n }\n\n}\n","<form class=\"source-control-form\" [formGroup]=\"SourceControlFormGroup\" (ngSubmit)=\"SubmitSourceControl()\">\n\n<mat-card class=\"spread flow-card\" *ngIf=\"ProcessorType != 'Redirect'\">\n <mat-card-header>\n <mat-card-title *ngIf=\"!HasBuildFormControl.value\">\n Build & Source\n </mat-card-title>\n\n <mat-card-title *ngIf=\"HasBuildFormControl.value\">\n Source Control\n </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"hasBuild\"\n matTooltip=\"Has Build?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"Configure source control, DevOps CI/CD, and artifacts.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"\n HasBuildFormControl.value && SourceControlLookups?.length > 0\n \"\n >\n <mat-select\n formControlName=\"sourceControlLookup\"\n placeholder=\"Source Control\"\n (selectionChange)=\"SourceControlLookupChanged($event)\"\n [disabled]=\"\n SourceControlFormControls?.Loading || HostingDetails?.Loading\n \"\n >\n <ng-container\n *ngFor=\"let srcCtrlLookup of SourceControlLookups\"\n >\n <mat-option\n [value]=\"srcCtrlLookup\"\n *ngIf=\"SourceControls[srcCtrlLookup]; let srcCtrl\"\n >\n {{ srcCtrl.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <div *ngIf=\"HasBuildFormControl?.value\">\n <h3>\n @{{\n SourceControlFormControls?.OrganizationFormControl?.value ||\n SourceControl?.Organization\n }}/{{\n SourceControlFormControls?.RepositoryFormControl?.value ||\n SourceControl?.Repository\n }}\n </h3>\n\n <p>Organization and Repository pulled from build settings</p>\n\n <mat-hint>\n CurrentBuild:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </div>\n </mat-form-field>\n\n <div *ngIf=\"SourceControlLookups?.length < 0\">\n <h3>\n Create source control locations under the DevOps tab above.\n </h3>\n </div>\n </mat-card-content>\n <mat-card-actions fxLayoutAlign=\"center center\">\n\n <button \n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!SourceControlFormGroup.valid || !SourceControlFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save\n </button>\n \n </mat-card-actions>\n </mat-card>\n</form>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { BaseModeledResponse, Guid } from '@lcu/common';\nimport {\n EaCArtifact,\n EaCDevOpsAction,\n EaCEnvironmentAsCode,\n EaCSourceControl,\n} from '@semanticjs/common';\nimport { ApplicationsFlowService } from '../../services/applications-flow.service';\nimport {\n EaCService,\n SaveEnvironmentAsCodeEventRequest,\n} from '../../services/eac.service';\nimport {\n ApplicationsFlowState,\n ProjectHostingDetails,\n ProjectHostingOption,\n} from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-build-pipeline-form',\n templateUrl: './build-pipeline-form.component.html',\n styleUrls: ['./build-pipeline-form.component.scss'],\n})\nexport class BuildPipelineFormComponent implements OnInit {\n //PROPERTIES\n\n // @Input('build-pipeline')\n public BuildPipeline: string;\n\n @Input('devops-action-lookup')\n public DevOpsActionLookup: string;\n\n @Input('disabled')\n public Disabled: boolean;\n\n @Input('environment')\n public Environment: EaCEnvironmentAsCode;\n\n @Input('environment-lookup')\n public EnvironmentLookup: string;\n\n @Input('hosting-details')\n public HostingDetails: ProjectHostingDetails;\n\n @Output('response-event')\n public ResponseEvent: EventEmitter<any>;\n\n public get Artifact(): EaCArtifact {\n // console.log(\"ARTIFACT: \", this.Environment?.Artifacts[this.ArtifactLookup]);\n return this.Environment?.Artifacts && this.ArtifactLookup\n ? this.Environment?.Artifacts[this.ArtifactLookup] || {}\n : {};\n }\n\n public get ArtifactLookup(): string {\n const artLookup = this.DevOpsAction?.ArtifactLookups\n ? this.DevOpsAction?.ArtifactLookups[0]\n : null;\n\n return artLookup;\n }\n\n public get BuildPipelineFormControl(): AbstractControl {\n return this.BuildPipelineFormGroup?.get('buildPipeline');\n }\n\n public get DevOpsAction(): EaCDevOpsAction {\n return this.Environment.DevOpsActions && this.DevOpsActionLookup\n ? this.Environment.DevOpsActions[this.DevOpsActionLookup] || {}\n : {};\n }\n\n public get DevOpsActions(): { [lookup: string]: EaCDevOpsAction } {\n return this.Environment.DevOpsActions || {};\n }\n\n public get DevOpsActionNameFormControl(): AbstractControl {\n return this.BuildPipelineFormGroup.get('devOpsActionName');\n }\n\n public get NPMTokenFormControl(): AbstractControl {\n return this.BuildPipelineFormGroup.get('npmToken');\n }\n\n // (ho) => ho.Lookup === this.BuildPipeline\n public get SelectedHostingOption(): ProjectHostingOption {\n return this.HostingDetails?.HostingOptions?.find(\n (ho) => ho.Lookup === this.BuildPipeline\n );\n }\n\n public get SelectedHostingOptionInputControlValues(): {\n [lookup: string]: any;\n } {\n return this.SelectedHostingOption?.Inputs?.reduce((prev, cur) => {\n const res = {\n ...prev,\n };\n\n res[cur.Lookup] = this.BuildPipelineFormGroup.controls[cur.Lookup].value;\n\n return res;\n }, {});\n }\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.SourceControls || {});\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Environment.Sources || {};\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public BuildPipelineFormGroup: FormGroup;\n\n constructor(\n protected eacSvc: EaCService,\n protected formBuilder: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService\n ) {\n this.Disabled = false;\n this.HostingDetails = new ProjectHostingDetails();\n this.ResponseEvent = new EventEmitter;\n }\n\n public ngOnInit(): void {\n // console.log('BuildPipeline = ', this.BuildPipeline)\n\n // this.BuildPipelineFormGroup = this.formBuilder.group({});\n\n // if (this.BuildPipelineFormGroup != null) {\n // this.BuildPipelineFormGroup.removeControl('hostingDetails');\n // }\n\n // this.BuildPipelineFormGroup.addControl(\n // 'hostingDetails',\n this.BuildPipelineFormGroup = this.formBuilder.group({\n // buildPipeline: [this.BuildPipeline, [Validators.required]],\n });\n // );\n\n this.loadProjectHostingDetails();\n // this.setupControlsForForm();\n }\n\n //API METHODS\n\n public BuildPipelineChanged(): void {\n //for some reason this value is coming back undefined\n // console.log(\"build pipeline value: \", this.BuildPipelineFormControl?.value)\n this.BuildPipeline = this.BuildPipelineFormControl?.value;\n\n this.setupControlsForForm();\n }\n\n public SubmitBuildPipeline() {\n // console.log(\"submitting build pipeline: \", this.BuildPipelineFormGroup.value);\n this.SaveEnvironment();\n }\n\n public SaveEnvironment(): void {\n const saveEnvReq: SaveEnvironmentAsCodeEventRequest = {\n Environment: {\n ...this.Environment,\n Artifacts: this.Environment.Artifacts || {},\n DevOpsActions: this.Environment.DevOpsActions || {},\n Secrets: this.Environment.Secrets || {},\n Sources: this.Environment.Sources || {},\n },\n EnvironmentLookup: this.EnvironmentLookup,\n EnterpriseDataTokens: {},\n };\n\n let artifactLookup: string;\n\n let artifact: EaCArtifact = {\n ...this.Artifact,\n ...this.SelectedHostingOptionInputControlValues,\n };\n\n if (!this.ArtifactLookup) {\n artifactLookup = Guid.CreateRaw();\n\n artifact = {\n ...artifact,\n Type: this.SelectedHostingOption.ArtifactType,\n Name: this.SelectedHostingOption.Name,\n NPMRegistry: 'https://registry.npmjs.org/',\n };\n } else {\n artifactLookup = this.ArtifactLookup;\n }\n\n saveEnvReq.Environment.Artifacts[artifactLookup] = artifact;\n\n let devOpsActionLookup: string;\n\n if (!this.DevOpsActionLookup) {\n devOpsActionLookup = Guid.CreateRaw();\n\n const doa: EaCDevOpsAction = {\n ...this.DevOpsAction,\n ArtifactLookups: [artifactLookup],\n Name: this.DevOpsActionNameFormControl.value,\n Path: this.SelectedHostingOption.Path,\n Templates: this.SelectedHostingOption.Templates,\n };\n\n if (this.NPMTokenFormControl?.value) {\n const secretLookup = 'npm-access-token';\n\n doa.SecretLookups = [secretLookup];\n\n saveEnvReq.Environment.Secrets[secretLookup] = {\n Name: 'NPM Access Token',\n DataTokenLookup: secretLookup,\n KnownAs: 'NPM_TOKEN',\n };\n\n saveEnvReq.EnterpriseDataTokens[secretLookup] = {\n Name: saveEnvReq.Environment.Secrets[secretLookup].Name,\n Description: saveEnvReq.Environment.Secrets[secretLookup].Name,\n Value: this.NPMTokenFormControl.value,\n };\n }\n\n saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;\n } else {\n devOpsActionLookup = this.DevOpsActionLookup;\n\n const doa: EaCDevOpsAction = {\n ...this.DevOpsAction,\n Name: this.DevOpsActionNameFormControl.value,\n };\n\n saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;\n }\n\n \n this.eacSvc.SaveEnvironmentAsCode(saveEnvReq).then(res =>{\n this.ResponseEvent.emit(res);\n });\n \n }\n\n // Helpers\n protected setupControlsForForm(): void {\n // this.BuildPipeline =\n // this.BuildPipeline || this.HostingDetails?.HostingOptions\n // ? this.HostingDetails?.HostingOptions[0]?.Lookup\n // : '';\n\n // console.log(\"hosting details: \", this.HostingDetails)\n\n for (const ctrlName in this.BuildPipelineFormGroup.controls) {\n //devOpsAction doesn't exist\n //removes hosting details\n if (ctrlName !== 'buildPipeline' && ctrlName !== 'devOpsAction') {\n // console.log(\"removing control: \", ctrlName)\n this.BuildPipelineFormGroup.removeControl(ctrlName);\n }\n }\n\n this.BuildPipelineFormGroup.addControl(\n 'buildPipeline',\n this.formBuilder.control(\n this.BuildPipeline || '',\n [Validators.required]\n )\n );\n\n this.BuildPipelineFormGroup.addControl(\n 'devOpsActionName',\n this.formBuilder.control(\n this.DevOpsAction?.Name || this.SelectedHostingOption?.Name || '',\n [Validators.required]\n )\n );\n\n // console.log(\"selected hosting options: \", this.SelectedHostingOption.Inputs);\n\n this.SelectedHostingOption?.Inputs?.forEach((input) => {\n const validators = input.Required ? [Validators.required] : [];\n\n this.BuildPipelineFormGroup.addControl(\n input.Lookup,\n this.formBuilder.control(\n this.Artifact[input.Lookup] || input.DefaultValue || '',\n validators\n )\n );\n\n // if (this.Disabled) {\n // this.FormGroup.controls[input.Lookup].disable();\n // }\n });\n\n if (this.BuildPipelineFormControl?.value === 'npm-release') {\n console.log(\"npm release\")\n if (!this.BuildPipelineFormGroup?.controls?.npmToken) {\n console.log(\"npm token if\")\n this.BuildPipelineFormGroup.addControl(\n 'npmToken',\n this.formBuilder.control(\n '',\n this.Disabled ? [] : [Validators.required]\n )\n );\n\n if (this.Disabled) {\n this.BuildPipelineFormGroup.controls.npmToken.disable();\n }\n }\n } else if (\n this.BuildPipelineFormControl?.value === 'github-artifacts-release'\n ) {\n if (this.BuildPipelineFormGroup?.controls?.npmToken) {\n this.BuildPipelineFormGroup.removeControl('npmToken');\n }\n }\n }\n\n protected loadProjectHostingDetails(): void {\n this.HostingDetails.Loading = true;\n this.appsFlowSvc.LoadProjectHostingDetails().subscribe(\n (response: BaseModeledResponse<ProjectHostingDetails>) => {\n this.HostingDetails = response.Model;\n // console.log(\"response: \", response);\n this.HostingDetails.Loading = false;\n\n const hostOption = this.HostingDetails?.HostingOptions?.find(\n (ho) => ho.Path === this.DevOpsAction.Path\n );\n this.BuildPipeline = hostOption?.Lookup;\n\n // console.log(\"Build Pipeline HERE= \", this.BuildPipeline);\n\n this.setupControlsForForm();\n },\n (err) => {\n console.log('ERR: ', err);\n this.HostingDetails.Loading = false;\n }\n );\n // console.log('HOSTING DETAILS: ', this.HostingDetails);\n }\n}\n","<form \n class=\"form-card\" \n [formGroup]=\"BuildPipelineFormGroup\" \n (ngSubmit)=\"SubmitBuildPipeline()\"\n>\n <!-- <mat-card\n class=\"spread\" \n > -->\n <!-- <mat-card-header>\n <mat-card-title> Build Pipeline </mat-card-title>\n\n <mat-hint>\n Changes made here are reflected for all sources using this\n DevOpsAction\n </mat-hint>\n </mat-card-header> -->\n\n <!-- <mat-card-content> -->\n\n <ng-container *ngIf=\"HostingDetails?.Loading || State?.Loading\">\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n <ng-container *ngIf=\"SelectedHostingOption?.Inputs\">\n <ng-container *ngFor=\"let hostOption of HostingDetails?.HostingOptions\">\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n </ng-container>\n\n </ng-container>\n\n <skeleton-block \n *ngIf=\"\"\n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n </ng-container>\n\n <ng-container *ngIf=\"!HostingDetails?.Loading && !State?.Loading\">\n\n <!-- <div *ngIf=\"!HostingDetails?.Loading\"> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n formControlName=\"buildPipeline\"\n placeholder=\"Build Pipeline\"\n [disabled]=\"Disabled\"\n (selectionChange)=\"BuildPipelineChanged()\"\n required\n >\n <ng-container\n *ngFor=\"let hostOption of HostingDetails?.HostingOptions; let i = index\"\n >\n <mat-option [value]=\"hostOption.Lookup\">\n {{ hostOption.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n \n <mat-hint>\n <ng-container *ngFor=\"let hostOption of HostingDetails?.HostingOptions\">\n <span *ngIf=\"BuildPipeline == hostOption?.Lookup\">\n {{ hostOption.Description }}\n </span>\n </ng-container>\n </mat-hint>\n </mat-form-field>\n \n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"devOpsActionName\"\n placeholder=\"Name of DevOps Action\"\n required=\"true\"\n />\n </mat-form-field>\n \n <ng-container *ngFor=\"let input of SelectedHostingOption?.Inputs\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n [formControlName]=\"input.Lookup\"\n [placeholder]=\"input.Placeholder\"\n [required]=\"input.Required\"\n />\n \n <mat-hint>{{ input.Hint }}</mat-hint>\n </mat-form-field>\n </ng-container>\n \n <div *ngIf=\"BuildPipeline == 'npm-release'\">\n <mat-form-field class=\"mat-full-width with-hint padding-bottom-4\">\n <mat-icon matPrefix>security</mat-icon>\n \n <input\n id=\"npm-token\"\n matInput\n type=\"text\"\n formControlName=\"npmToken\"\n placeholder=\"NPM token\"\n [required]=\"!Disabled\"\n style=\"-webkit-text-security: disc;\"\n />\n <mat-hint>\n Securely publish to NPM, provide an NPM Personal Access Token (PAT) with publish access to the organization used for your NPM packages. \n Learn how to create and view access tokens \n <a\n href=\"https://docs.npmjs.com/creating-and-viewing-access-tokens\"\n target=\"_blank\"\n class=\"primary-link\"\n >\n here.\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n <!-- </div> -->\n \n <!-- <div *ngIf=\"HostingDetails?.Loading\">\n <div class=\"spread\">\n <lcu-loader style=\"margin: auto\" [loading]=\"true\"></lcu-loader>\n \n <div class=\"margin-3\">\n <h4 class=\"mat-title\">Loading hosting details</h4>\n </div>\n </div>\n </div> -->\n </ng-container>\n <!-- </mat-card-content> -->\n\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!BuildPipelineFormGroup.valid || !BuildPipelineFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Build Pipeline\n </button> -->\n <!-- <lcu-loader [loading]=\"State?.Loading\"></lcu-loader> -->\n \n <!-- </mat-card-actions> -->\n <!-- </mat-card> -->\n</form>\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Status } from '@lcu/common';\nimport { EaCEnvironmentAsCode } from '@semanticjs/common';\nimport { BuildPipelineFormComponent } from '../../controls/build-pipeline-form/build-pipeline-form.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n\nexport interface BPDialogData {\n devopsActionLookup: string;\n environment: EaCEnvironmentAsCode;\n environmentLookup: string;\n // buildPipeline: string;\n}\n\n@Component({\n selector: 'lcu-build-pipeline-dialog',\n templateUrl: './build-pipeline-dialog.component.html',\n styleUrls: ['./build-pipeline-dialog.component.scss']\n})\n\nexport class BuildPipelineDialogComponent implements OnInit {\n\n @ViewChild(BuildPipelineFormComponent)\n public BuildPipelineControl: BuildPipelineFormComponent;\n\n public get BuildPipelineFormGroup(): FormGroup{\n return this.BuildPipelineControl?.BuildPipelineFormGroup;\n }\n\n public get HasConnection(): boolean{\n return this.State.GitHub.HasConnection;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public ErrorMessage: string;\n\nconstructor( public dialogRef: MatDialogRef<BuildPipelineDialogComponent>,\n protected eacSvc: EaCService,\n @Inject(MAT_DIALOG_DATA) public data: BPDialogData,\n protected snackBar: MatSnackBar) { }\n\n public ngOnInit(): void {\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public HandleResponseEvent(event: Status){\n console.log(\"Response Event: \", event);\n if (event.Code === 0){\n this.snackBar.open(\"Build Pipeline Created Succesfully\", \"Dismiss\",{\n duration: 5000\n });\n this.CloseDialog();\n }\n else{\n this.ErrorMessage = event.Message;\n }\n }\n\n public SaveBuildPipeline(){\n this.BuildPipelineControl.SaveEnvironment();\n }\n\n \n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Build Pipeline</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n<ng-container *ngIf=\"!HasConnection\">\n \n <lcu-git-auth></lcu-git-auth>\n\n</ng-container>\n\n<ng-container *ngIf=\"HasConnection\">\n\n<lcu-build-pipeline-form \n [devops-action-lookup]=\"data.devopsActionLookup\"\n [environment]=\"data.environment\" \n [environment-lookup]=\"data.environmentLookup\"\n (response-event)=\"HandleResponseEvent($event)\"\n >\n\n</lcu-build-pipeline-form>\n\n<mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n</mat-error>\n\n</ng-container>\n</mat-dialog-content>\n\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveBuildPipeline()\"\n [disabled]=\"!BuildPipelineFormGroup?.valid || !BuildPipelineFormGroup?.dirty\">\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n\n</mat-dialog-actions>","import { Component, Input, OnInit } from '@angular/core';\nimport { EaCApplicationAsCode } from '@semanticjs/common';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n})\nexport class BreadcrumbComponent implements OnInit {\n @Input('application-lookup')\n public ApplicationLookup: string;\n\n \n\n public get Enterprise(): any {\n return this.State?.EaC?.Enterprise;\n }\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n @Input('selected-route')\n public SelectedRoute: string;\n\n public get ApplicationsBank(): { [lookup: string]: EaCApplicationAsCode } {\n return this.State?.EaC?.Applications || {};\n }\n\n public get Applications(): { [lookup: string]: EaCApplicationAsCode } {\n const apps: { [lookup: string]: EaCApplicationAsCode } = {};\n\n this.SelectedProject?.ApplicationLookups?.forEach((appLookup: string) => {\n apps[appLookup] = this.ApplicationsBank[appLookup];\n });\n return apps;\n }\n\n public get SelectedApplication(): EaCApplicationAsCode {\n return this.State?.EaC?.Applications[this.ApplicationLookup] || {};\n }\n\n public get CurrentRouteApplicationLookups(): Array<string> {\n return Object.keys(this.RoutedApplications[this.SelectedRoute] || {});\n }\n\n public get Loading(): boolean {\n return (\n this.State?.LoadingActiveEnterprise || this.State?.LoadingEnterprises\n );\n }\n\n public get Projects(): any {\n return this.State?.EaC?.Projects || {};\n }\n\n public get ProjectLookups(): string[] {\n return Object.keys(this.State?.EaC?.Projects || {});\n }\n\n public get Routes(): Array<string> {\n return Object.keys(this.RoutedApplications || {});\n }\n\n public get RoutedApplications(): {\n [route: string]: { [lookup: string]: EaCApplicationAsCode };\n } {\n const appLookups = Object.keys(this.Applications);\n\n const apps = appLookups.map((appLookup) => this.Applications[appLookup]);\n\n let appRoutes =\n apps.map((app) => {\n return app?.LookupConfig?.PathRegex.replace('.*', '');\n }) || [];\n\n appRoutes = appRoutes.filter((ar) => ar != null);\n\n let routeBases: string[] = [];\n\n appRoutes?.forEach((appRoute) => {\n const appRouteParts = appRoute.split('/');\n\n const appRouteBase = `/${appRouteParts[1]}`;\n\n if (routeBases.indexOf(appRouteBase) < 0) {\n routeBases.push(appRouteBase);\n }\n });\n\n let workingAppLookups = [...(appLookups || [])];\n\n routeBases = routeBases.sort((a, b) => b.localeCompare(a));\n\n const routeSet =\n routeBases.reduce((prevRouteMap, currentRouteBase) => {\n const routeMap = {\n ...prevRouteMap,\n };\n\n const filteredAppLookups = workingAppLookups.filter((wal) => {\n const wa = this.Applications[wal];\n\n return wa?.LookupConfig?.PathRegex.startsWith(currentRouteBase);\n });\n\n routeMap[currentRouteBase] =\n filteredAppLookups.reduce((prevAppMap, appLookup) => {\n const appMap = {\n ...prevAppMap,\n };\n\n appMap[appLookup] = this.Applications[appLookup];\n\n return appMap;\n }, {}) || {};\n\n workingAppLookups = workingAppLookups.filter((wa) => {\n return filteredAppLookups.indexOf(wa) < 0;\n });\n\n return routeMap;\n }, {}) || {};\n\n let routeSetKeys = Object.keys(routeSet);\n\n routeSetKeys = routeSetKeys.sort((a, b) => a.localeCompare(b));\n\n const routeSetResult = {};\n\n routeSetKeys?.forEach((rsk) => (routeSetResult[rsk] = routeSet[rsk]));\n\n return routeSetResult;\n }\n\n public get SelectedProject(): any {\n return this.State?.EaC?.Projects[this.ProjectLookup] || {};\n }\n\n public get State(): ApplicationsFlowState {\n return this.eacSvc.State;\n }\n\n public SkeletonEffect: string;\n\n constructor(protected eacSvc: EaCService) {\n this.SkeletonEffect = 'wave';\n }\n\n ngOnInit(): void {\n this.handleStateChange().then((eac) => {});\n\n // console.log(\"state: \", this.State)\n\n console.log(\"selected enterprise: \", this.Enterprise)\n\n // console.log('Selected project: ', this.SelectedProject.Project);\n\n // console.log('SelectedRoute:', this.SelectedRoute);\n }\n\n public SetActiveEnterprise(entLookup: string): void {\n this.eacSvc.SetActiveEnterprise(entLookup).then(() => {});\n }\n\n protected async handleStateChange(): Promise<void> {}\n}\n","<div class=\"breadcrumb-container\" fxLayout=\"row wrap\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <ng-container *ngIf=\"State.Loading || Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">home</mat-icon>\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Enterprise Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!State.Loading && Enterprise && !Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprises']\">\n <mat-icon>home</mat-icon>\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprises']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of State.Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"ProjectLookup && SelectedProject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"State?.Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Project Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!State?.Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/projects', ProjectLookup]\">\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/projects', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div *ngIf=\"SelectedRoute\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"State?.Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Route Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!State?.Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/routes', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/routes', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"SelectedApplication && ApplicationLookup\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"State?.Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Application Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!State?.Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/applications',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/applications',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span *ngIf=\"RoutedApplications[SelectedRoute][appLookup]; let app\">{{\n app.Application?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { EaCHost, EaCProjectAsCode } from '@semanticjs/common';\n\nexport interface CDDialogData {\n hosts: { [lookup: string]: EaCHost };\n primaryHost: string;\n project: EaCProjectAsCode;\n projectLookup: string;\n}\n\n@Component({\n selector: 'lcu-custom-domain-dialog',\n templateUrl: './custom-domain-dialog.component.html',\n styleUrls: ['./custom-domain-dialog.component.scss']\n})\n\nexport class CustomDomainDialogComponent implements OnInit {\n\n public DomainData: {};\n\n constructor(public dialogRef: MatDialogRef<CustomDomainDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: CDDialogData) {\n\n this.DomainData = {\n Hosts: this.data.hosts,\n PrimaryHost: this.data.primaryHost,\n Project: this.data.project,\n ProjectLookup: this.data.projectLookup\n }\n \n }\n\n public ngOnInit(): void {\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"end center\">\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<lcu-domains\n[data]=\"DomainData\"\n>\n\n</lcu-domains>\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Status } from '@lcu/common';\nimport { EaCApplicationAsCode } from '@semanticjs/common';\nimport { EditApplicationFormComponent } from '../../controls/edit-application-form/edit-application-form.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\nexport interface ApplicationDialogData {\n application: EaCApplicationAsCode;\n applicationLookup: string;\n projectLookup: string;\n}\n\n@Component({\n selector: 'lcu-edit-application-dialog',\n templateUrl: './edit-application-dialog.component.html',\n styleUrls: ['./edit-application-dialog.component.scss']\n})\nexport class EditApplicationDialogComponent implements OnInit {\n\n @ViewChild(EditApplicationFormComponent)\n public EditApplicationControl: EditApplicationFormComponent;\n\n public get ApplicationFormGroup(): FormGroup{\n return this.EditApplicationControl?.ApplicationFormGroup;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public ErrorMessage: string;\n\n constructor(public eacSvc: EaCService,\n public dialogRef: MatDialogRef<EditApplicationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: ApplicationDialogData,\n protected snackBar: MatSnackBar) { }\n\n public ngOnInit(): void {\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public HandleSaveApplicationEvent(event: Status){\n console.log(\"event to save: \", event);\n if (event.Code === 0){\n this.snackBar.open(\"Application Succesfully Updated\", \"Dismiss\",{\n duration: 5000\n });\n this.CloseDialog();\n }\n else{\n this.ErrorMessage = event.Message;\n }\n }\n\n public SaveApplication(){\n this.EditApplicationControl.SaveApplication();\n }\n\n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Edit Application:\n {{ data.application?.Application?.Name }}</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n<lcu-edit-application-form \n [application-lookup]=\"data.applicationLookup\"\n [editing-application]=\"data.application\"\n [project-lookup]=\"data.projectLookup\"\n (save-form-event)=\"HandleSaveApplicationEvent($event)\">\n</lcu-edit-application-form>\n\n<mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n</mat-error>\n\n</mat-dialog-content>\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveApplication()\"\n [disabled]=\"!ApplicationFormGroup?.valid || !ApplicationFormGroup?.dirty\">\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n\n</mat-dialog-actions>\n\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Status } from '@lcu/common';\nimport { EaCApplicationAsCode, EaCEnvironmentAsCode, EaCSourceControl } from '@semanticjs/common';\nimport { ProcessorDetailsFormComponent } from '../../controls/processor-details-form/processor-details-form.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n\nexport interface ProcessorDetailsDialogData {\n applicationLookup: string;\n environmentLookup: string;\n projectLookup: string;\n}\n\n@Component({\n selector: 'lcu-processor-details-dialog',\n templateUrl: './processor-details-dialog.component.html',\n styleUrls: ['./processor-details-dialog.component.scss']\n})\n\nexport class ProcessorDetailsDialogComponent implements OnInit {\n\n @ViewChild(ProcessorDetailsFormComponent)\n public ProcessorDetailsFormControls: ProcessorDetailsFormComponent;\n\n public get Application(): EaCApplicationAsCode {\n return this.State?.EaC?.Applications[this.data.applicationLookup] || {};\n }\n\n public get Environment(): EaCEnvironmentAsCode {\n return this.State?.EaC?.Environments[this.data.environmentLookup];\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Environment?.Sources || {};\n }\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.Environment?.Sources || {});\n }\n\n public get State(): ApplicationsFlowState {\n return this.eacSvc.State;\n }\n\n public get ProcessorDetailsFormGroup(): FormGroup{\n return this.ProcessorDetailsFormControls?.ProcessorDetailsFormGroup;\n }\n\n public ErrorMessage: string;\n\n constructor(protected eacSvc: EaCService, \n public dialogRef: MatDialogRef<ProcessorDetailsDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: ProcessorDetailsDialogData,\n protected snackBar: MatSnackBar) { }\n\n public ngOnInit(): void {\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public HandleSaveFormEvent(event: Status){\n console.log(\"event: \", event);\n if (event.Code === 0){\n this.snackBar.open(\"Build Pipeline Created Succesfully\", \"Dismiss\",{\n duration: 5000\n });\n this.CloseDialog();\n }\n else{\n this.ErrorMessage = event.Message;\n }\n }\n\n public SaveProcessorDetails(){\n this.ProcessorDetailsFormControls.SaveProcessorDetails();\n\n }\n\n\n \n\n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Processor Details</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n\n<lcu-processor-details-form \n more-details \n [editing-application]=\"Application\"\n [editing-application-lookup]=\"data.applicationLookup\" \n [source-control-lookups]=\"SourceControlLookups\"\n [project-lookup]=\"data.projectLookup\"\n (save-form-event)=\"HandleSaveFormEvent($event)\"\n>\n</lcu-processor-details-form>\n\n<mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n</mat-error>\n\n</mat-dialog-content>\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveProcessorDetails()\"\n [disabled]=\"!ProcessorDetailsFormGroup?.valid || !ProcessorDetailsFormGroup?.dirty\"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n\n</mat-dialog-actions>\n\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-skeleton-feed-card',\n templateUrl: './skeleton-feed-card.component.html',\n styleUrls: ['./skeleton-feed-card.component.scss']\n})\nexport class SkeletonFeedCardComponent implements OnInit {\n\n public SkeletonEffect: string;\n\n constructor() { \n this.SkeletonEffect = 'wave';\n }\n\n ngOnInit(): void {\n }\n\n}\n","<mat-card class=\"social-card\">\n <mat-card-header>\n \n <skeleton-avatar mat-card-avatar size=\"100\" [effect]=\"SkeletonEffect\"></skeleton-avatar>\n \n <mat-card-title skeleton-text [effect]=\"SkeletonEffect\">FeedItem Title</mat-card-title>\n \n <mat-card-subtitle>\n <div skeleton-text [effect]=\"SkeletonEffect\">FeedItem Subtitle</div>\n <div >\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">check</mat-icon>\n \n <div skeleton-text [effect]=\"SkeletonEffect\">Timestamp</div>\n </div>\n </mat-card-subtitle>\n </mat-card-header>\n \n <mat-card-content>\n <div skeleton-text [effect]=\"SkeletonEffect\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sit amet\n ante dui. Praesent ut aliquam metus. Phasellus consectetur non eros eu\n gravida. Vestibulum faucibus laoreet leo, ac molestie felis tincidunt\n semper. Vivamus lorem ipsum, sagittis nec blandit sed, accumsan sed\n dolor. Etiam tincidunt vel ligula ut malesuada. Nulla sit amet fermentum\n libero. Quisque magna tellus, pellentesque in convallis vitae, aliquet\n et orci. Pellentesque commodo ante id est viverra posuere ac vitae\n ligula. Ut sed ullamcorper purus. Integer sit amet lorem eros.\n </div>\n </mat-card-content>\n \n <mat-card-actions fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Button Text</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Button Text</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Button Text</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Button Text</div>\n </mat-card-actions>\n </mat-card>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { EaCApplicationAsCode } from '@semanticjs/common';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-emulated-devices-toggle',\n templateUrl: './emulated-devices-toggle.component.html',\n styleUrls: ['./emulated-devices-toggle.component.scss']\n})\nexport class EmulatedDevicesToggleComponent implements OnInit {\n\n @Input('editing-application')\n public EditingApplication: EaCApplicationAsCode;\n\n @Output('save-form-event')\n public SaveFormEvent: EventEmitter<{}>;\n\n public get IsPrivateFormControl(): AbstractControl {\n return this.EmulatedDevicesFormGroup?.controls.isPrivate;\n }\n\n public get IsTriggerSignInFormControl(): AbstractControl {\n return this.EmulatedDevicesFormGroup?.controls.isTriggerSignIn;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public EmulatedDevicesFormGroup: FormGroup;\n\n public ProcessorType: string;\n\n public SkeletonEffect: string;\n\n constructor(protected eacSvc: EaCService,\n protected formBldr: FormBuilder) { \n this.SaveFormEvent = new EventEmitter;\n this.SkeletonEffect = 'wave';\n }\n\n public ngOnInit(): void {\n this.setupEmulatedDevicesFormGroup();\n }\n\n public EmulatedDevicesSubmit() {\n //save the EmulatedDevices settings\n console.log(\"submitting EmulatedDevices values: \", this.EmulatedDevicesFormGroup.value);\n this.SaveFormEvent.emit(this.EmulatedDevicesFormGroup.value);\n }\n\n protected setupEmulatedDevicesFormGroup() {\n this.ProcessorType = this.EditingApplication?.Processor?.Type || '';\n this.EmulatedDevicesFormGroup = this.formBldr.group({});\n this.setupEmulatedDevicesForm();\n }\n\n protected setupEmulatedDevicesForm(): void {\n this.EmulatedDevicesFormGroup.addControl(\n 'isEmulated',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.IsPrivate || false,\n [Validators.required]\n )\n );\n }\n\n}\n","<form\n class=\"emulated-devices-form\"\n [formGroup]=\"EmulatedDevicesFormGroup\"\n (ngSubmit)=\"EmulatedDevicesSubmit()\"\n>\n <mat-card class=\"flow-card\">\n <!-- SKELETON LOADING -->\n <ng-container *ngIf=\"State?.Loading\">\n <mat-card-header fxLayoutAlign=\"space-between center\">\n <mat-card-title skeleton-text [effect]=\"SkeletonEffect\">\n Emulated Devices Settings\n </mat-card-title>\n <div fxLayoutAlign=\"space-around center\">\n <div skeleton-text [effect]=\"SkeletonEffect\">XXX</div>\n\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">\n info_outline\n </mat-icon>\n </div>\n </mat-card-header>\n\n <mat-card-actions fxLayoutAlign=\"center center\">\n <div\n fxFlex=\"100%\"\n skeleton-text\n [effect]=\"SkeletonEffect\"\n fxLayoutAlign=\"center center\"\n >\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\"> save </mat-icon>\n\n Save Settings\n </div>\n </mat-card-actions>\n </ng-container>\n <!-- END SKELETON LOADING -->\n\n <!-- BEGIN ACTUAL CONTENT -->\n\n <ng-container *ngIf=\"!State?.Loading\">\n <mat-card-header>\n <mat-card-title> Emulated Device Settings </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"isPrivate\"\n matTooltip=\"Is Secure Application?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Secured Application is one that requires the user to be authenticated to use the application. The application is hosted behind an identity wall.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <div>\n <div *ngIf=\"IsPrivateFormControl.value\">\n <div>\n <mat-slide-toggle formControlName=\"isTriggerSignIn\">\n Is Trigger Sign In Application?\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Trigger Sign In Application will direct the user to sign in if they are not already.\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions fxLayoutAlign=\"center center\">\n <button\n mat-raised-button\n type=\"submit\"\n fxFlex=\"100%\"\n color=\"primary\"\n [disabled]=\"!EmulatedDevicesFormGroup.valid || !EmulatedDevicesFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon>\n Save Settings\n </button>\n </mat-card-actions>\n </ng-container>\n </mat-card>\n</form>\n","import { Status } from '@lcu/common';\r\n\r\nexport class IoTEnsembleState {\r\n public AccessLicenseType?: string;\r\n\r\n public AccessPlanGroup?: string;\r\n\r\n public DataInterval?: number;\r\n\r\n public DataRetention?: number;\r\n\r\n public DevicesConfig?: IoTEnsembleConnectedDevicesConfig;\r\n\r\n public Dashboard?: IoTEnsembleDashboardConfiguration;\r\n\r\n public Drawers?: IoTEnsembleDrawersConfig;\r\n\r\n public Emulated?: EmulatedDeviceInfo;\r\n\r\n public Error?: ErrorContext;\r\n\r\n public ExpandedPayloadID?: string;\r\n\r\n public HasAccess?: boolean;\r\n\r\n public Loading?: boolean;\r\n\r\n public SelectedDeviceID?: string;\r\n\r\n public Storage?: IoTEnsembleStorageConfiguration;\r\n\r\n public Telemetry?: IoTEnsembleTelemetry;\r\n\r\n public UserEnterpriseLookup?: string;\r\n}\r\n\r\nexport class EmulatedDeviceInfo {\r\n public Enabled?: boolean;\r\n\r\n public Loading?: boolean;\r\n}\r\n\r\nexport class IoTEnsembleDashboardConfiguration {\r\n public FreeboardConfig?: any;\r\n\r\n public PowerBIConfig?: any;\r\n}\r\n\r\nexport class ErrorContext {\r\n public ActionPath?: string;\r\n\r\n public ActionTarget?: string;\r\n\r\n public ActionText?: string;\r\n\r\n public Message?: string;\r\n\r\n public Title?: string;\r\n}\r\n\r\nexport class IoTEnsembleDeviceEnrollment {\r\n public DeviceName?: string;\r\n}\r\n\r\nexport class IoTEnsembleConnectedDevicesConfig {\r\n public EnterpriseDevicesCount: number;\r\n\r\n public Devices?: IoTEnsembleDeviceInfo[];\r\n\r\n public Loading?: boolean;\r\n\r\n public MaxDevicesCount?: number;\r\n\r\n public Page?: number;\r\n\r\n public PageSize?: number;\r\n\r\n public SASTokens?: { [deviceName: string]: string };\r\n\r\n public Status?: Status;\r\n\r\n public TotalDevices?: number;\r\n}\r\n\r\nexport class IoTEnsembleDeviceInfo {\r\n [prop: string]: any;\r\n\r\n public ActivelySendingData?: boolean;\r\n\r\n public AuthenticationType?: string;\r\n\r\n public CloudToDeviceMessageCount?: number;\r\n\r\n public ConnectionString?: string;\r\n\r\n public DeviceID?: string;\r\n\r\n public DeviceName?: string;\r\n\r\n public LastStatusUpdate?: Status;\r\n\r\n}\r\n\r\nexport class IoTEnsembleTelemetry {\r\n\r\n public Enabled?: boolean;\r\n\r\n public Loading?: boolean;\r\n\r\n public Page?: number;\r\n\r\n public PageSize?: number;\r\n\r\n public Payloads?: IoTEnsembleTelemetryPayload[];\r\n\r\n public RefreshRate?: number;\r\n\r\n public LastSyncedAt?: string;\r\n\r\n public TotalPayloads?: number;\r\n}\r\n\r\nexport class IoTEnsembleTelemetryPayload {\r\n [prop: string]: any;\r\n\r\n public DeviceData?: { [prop: string]: any };\r\n\r\n public DeviceID?: string;\r\n\r\n public DeviceType?: string;\r\n\r\n public ID?: string;\r\n\r\n public SensorMetadata?: { [prop: string]: any };\r\n\r\n public SensorReadings?: { [prop: string]: any };\r\n\r\n public Timestamp?: Date;\r\n\r\n public TotalPayloads?: number;\r\n\r\n public Version?: string;\r\n}\r\n\r\nexport class IoTEnsembleDrawersConfig {\r\n public DetailsActive: boolean;\r\n\r\n public HasBackdrop: boolean;\r\n\r\n public NavActive: boolean;\r\n}\r\n\r\nexport class IoTEnsembleStorageConfiguration {\r\n public APIKeys: IoTEnsembleAPIKeyData[];\r\n\r\n public OpenAPISource: string;\r\n}\r\n\r\nexport class IoTEnsembleAPIKeyData {\r\n public Key: string;\r\n\r\n public KeyName: string;\r\n}\r\n\r\nexport enum ColdQueryDataTypes {\r\n Telemetry = 'Telemetry',\r\n Observations = 'Observations',\r\n SensorMetadata = 'SensorMetadata',\r\n}\r\n\r\nexport enum ColdQueryResultTypes {\r\n CSV = 'CSV',\r\n JSON = 'JSON',\r\n JSONLines = 'JSONLines',\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { IoTEnsembleState } from '../state/iot-ensemble.state';\nimport { LCUServiceSettings } from '@lcu/common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IoTEnsembleService {\n // Fields\n protected apiRoot: string;\n\n // Properties\n public State: IoTEnsembleState;\n\n // Constructors\n constructor(\n protected http: HttpClient,\n protected settings: LCUServiceSettings\n ) {\n this.apiRoot = settings.APIRoot;\n\n this.State = new IoTEnsembleState();\n }\n\n // API Methods\n public ColdQuery(): Observable<object> {\n return this.http.get(\n `${this.apiRoot}/api/lowcodeunit/iot/cold-query`,\n {\n headers: this.loadHeaders(),\n }\n );\n }\n \n public ToggleEmulatedEnabled(): Observable<object> {\n return this.http.get(\n `${this.apiRoot}/api/lowcodeunit/userfeed`,\n {\n headers: this.loadHeaders(),\n }\n );\n }\n\n // Helpers\n protected loadHeaders(): { [header: string]: string | string[] } {\n return {};\n }\n}\n","import { FormsService } from './services/forms.service';\r\nimport { ProjectService } from './services/project.service';\r\nimport { NgModule, ModuleWithProviders, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FathymSharedModule, MaterialModule } from '@lcu/common';\r\nimport { ApplicationsFlowStateContext } from './state/applications-flow-state.context';\r\nimport { ApplicationsFlowProjectsElementComponent } from './elements/projects/projects.component';\r\nimport { AppHostModule } from '@lowcodeunit/app-host-common';\r\nimport { ApplicationsFlowService } from './services/applications-flow.service';\r\nimport { HostingDetailsFormGroupComponent } from './elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component';\r\nimport { CreateProjectWizardComponent } from './elements/projects/controls/create-project-wizard/create-project-wizard.component';\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { DynamicTabsComponent } from './elements/dynamic-tabs/dynamic-tabs.component';\r\nimport { HeaderComponent } from './elements/projects/controls/header/header.component';\r\nimport { ProjectTabsComponent } from './elements/projects/controls/project-tabs/project-tabs.component';\r\nimport { DomainsComponent } from './elements/projects/controls/tabs/domains/domains.component';\r\nimport { ProjectItemsComponent } from './elements/projects/controls/project-items/project-items.component';\r\nimport { BuildsComponent } from './elements/projects/controls/builds/builds.component';\r\nimport { RecentActivitiesComponent } from './elements/projects/controls/recent-activities/recent-activities.component';\r\nimport { FormCardComponent } from './elements/form-card/form-card.component';\r\nimport { ProjectNameComponent } from './elements/projects/controls/tabs/general/forms/project-details/project-details.component';\r\nimport { RootDirectoryComponent } from './elements/projects/controls/tabs/general/forms/root-directory/root-directory.component';\r\nimport { BaseFormComponent } from './elements/base-form/base-form.component';\r\nimport { BaseFormTestComponent } from './elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component';\r\nimport { GitAuthComponent } from './elements/projects/controls/git-auth/git-auth.component';\r\nimport { SourceControlFormControlsComponent } from './elements/projects/controls/forms/source-control/source-control.component';\r\nimport { AppsFlowComponent } from './elements/projects/controls/tabs/apps-flow/apps-flow.component';\r\nimport { NPMService } from './services/npm.service';\r\nimport { NpmPackageSelectComponent } from './elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component';\r\nimport { DevOpsComponent } from './elements/projects/controls/tabs/devops/devops.component';\r\nimport { DFSModifiersComponent } from './elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component';\r\nimport { FlowToolComponent } from './elements/flow-tool/flow-tool.component';\r\nimport { ThreeColumnComponent } from './elements/three-column/three-column.component';\r\nimport { SlottedCardComponent } from './elements/slotted-card/slotted-card.component';\r\nimport { ProjectInfoCardComponent } from './elements/project-info-card/project-info-card.component';\r\nimport { AnalyticsCardComponent } from './elements/analytics-card/analytics-card.component';\r\nimport { FeedCardSmComponent } from './elements/feed-card-sm/feed-card-sm.component';\r\nimport { GhControlComponent } from './elements/gh-control/gh-control.component';\r\nimport { MainFeedCardComponent } from './elements/main-feed-card/main-feed-card.component';\r\nimport { TwoColumnHeaderComponent } from './elements/two-column-header/two-column-header.component';\r\nimport { CardCarouselComponent } from './elements/card-carousel/card-carousel.component';\r\nimport { SecurityToggleComponent } from './controls/security-toggle/security-toggle.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { EaCService } from './services/eac.service';\r\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\r\nimport { ProcessorDetailsFormComponent } from './controls/processor-details-form/processor-details-form.component';\r\nimport { SourceControlFormComponent } from './controls/source-control-form/source-control-form.component';\r\nimport { BuildPipelineFormComponent } from './controls/build-pipeline-form/build-pipeline-form.component';\r\nimport { DevopsSourceControlFormComponent } from './controls/devops-source-control-form/devops-source-control-form.component';\r\nimport { SourceControlDialogComponent } from './dialogs/source-control-dialog/source-control-dialog.component';\r\nimport { BuildPipelineDialogComponent } from './dialogs/build-pipeline-dialog/build-pipeline-dialog.component';\r\nimport { EditApplicationFormComponent } from './controls/edit-application-form/edit-application-form.component';\r\nimport { BreadcrumbComponent } from './elements/breadcrumb/breadcrumb.component';\r\nimport { CustomDomainDialogComponent } from './dialogs/custom-domain-dialog/custom-domain-dialog.component';\r\nimport { EditApplicationDialogComponent } from './dialogs/edit-application-dialog/edit-application-dialog.component';\r\nimport { NewApplicationDialogComponent } from './dialogs/new-application-dialog/new-application-dialog.component';\r\nimport { ProcessorDetailsDialogComponent } from './dialogs/processor-details-dialog/processor-details-dialog.component';\r\nimport { SkeletonElementsModule } from 'skeleton-elements/angular';\r\nimport { SkeletonFeedCardComponent } from './elements/skeleton-feed-card/skeleton-feed-card.component';\r\nimport { UpgradeDialogComponent } from './dialogs/upgrade-dialog/upgrade-dialog.component';\r\nimport { EmulatedDevicesToggleComponent } from './controls/emulated-devices-toggle/emulated-devices-toggle.component';\r\nimport { IoTEnsembleService } from './services/iot-ensemble.service';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ApplicationsFlowProjectsElementComponent,\r\n HostingDetailsFormGroupComponent,\r\n CreateProjectWizardComponent,\r\n DynamicTabsComponent,\r\n HeaderComponent,\r\n ProjectTabsComponent,\r\n DomainsComponent,\r\n ProjectItemsComponent,\r\n BuildsComponent,\r\n RecentActivitiesComponent,\r\n FormCardComponent,\r\n ProjectNameComponent,\r\n RootDirectoryComponent,\r\n BaseFormComponent,\r\n BaseFormTestComponent,\r\n GitAuthComponent,\r\n SourceControlFormControlsComponent,\r\n AppsFlowComponent,\r\n DevOpsComponent,\r\n DFSModifiersComponent,\r\n NpmPackageSelectComponent,\r\n FlowToolComponent,\r\n ThreeColumnComponent,\r\n SlottedCardComponent,\r\n ProjectInfoCardComponent,\r\n AnalyticsCardComponent,\r\n FeedCardSmComponent,\r\n GhControlComponent,\r\n MainFeedCardComponent,\r\n TwoColumnHeaderComponent,\r\n CardCarouselComponent,\r\n SecurityToggleComponent,\r\n ProcessorDetailsFormComponent,\r\n SourceControlFormComponent,\r\n BuildPipelineFormComponent,\r\n DevopsSourceControlFormComponent,\r\n SourceControlDialogComponent,\r\n BuildPipelineDialogComponent,\r\n EditApplicationFormComponent,\r\n BreadcrumbComponent,\r\n CustomDomainDialogComponent,\r\n EditApplicationDialogComponent,\r\n NewApplicationDialogComponent,\r\n ProcessorDetailsDialogComponent,\r\n SkeletonFeedCardComponent,\r\n UpgradeDialogComponent,\r\n EmulatedDevicesToggleComponent\r\n ],\r\n imports: [\r\n ClipboardModule,\r\n FathymSharedModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n AppHostModule,\r\n MatTooltipModule,\r\n MatSlideToggleModule,\r\n SkeletonElementsModule\r\n\r\n // LazyElementModule,\r\n ],\r\n exports: [\r\n ApplicationsFlowProjectsElementComponent,\r\n HostingDetailsFormGroupComponent,\r\n CreateProjectWizardComponent,\r\n DynamicTabsComponent,\r\n HeaderComponent,\r\n ProjectTabsComponent,\r\n DomainsComponent,\r\n ProjectItemsComponent,\r\n BuildsComponent,\r\n RecentActivitiesComponent,\r\n FormCardComponent,\r\n ProjectNameComponent,\r\n RootDirectoryComponent,\r\n BaseFormComponent,\r\n BaseFormTestComponent,\r\n GitAuthComponent,\r\n SourceControlFormControlsComponent,\r\n AppsFlowComponent,\r\n DevOpsComponent,\r\n DFSModifiersComponent,\r\n NpmPackageSelectComponent,\r\n FlowToolComponent,\r\n ThreeColumnComponent,\r\n SlottedCardComponent,\r\n ProjectInfoCardComponent,\r\n AnalyticsCardComponent,\r\n FeedCardSmComponent,\r\n GhControlComponent,\r\n MainFeedCardComponent,\r\n TwoColumnHeaderComponent,\r\n CardCarouselComponent,\r\n SecurityToggleComponent,\r\n ProcessorDetailsFormComponent,\r\n SourceControlFormComponent,\r\n BuildPipelineFormComponent,\r\n DevopsSourceControlFormComponent,\r\n SourceControlDialogComponent,\r\n BuildPipelineDialogComponent,\r\n EditApplicationFormComponent,\r\n BreadcrumbComponent,\r\n CustomDomainDialogComponent,\r\n EditApplicationDialogComponent,\r\n NewApplicationDialogComponent,\r\n ProcessorDetailsDialogComponent,\r\n SkeletonFeedCardComponent,\r\n UpgradeDialogComponent,\r\n EmulatedDevicesToggleComponent\r\n ],\r\n entryComponents: [\r\n ApplicationsFlowProjectsElementComponent,\r\n DynamicTabsComponent,\r\n HeaderComponent,\r\n ProjectTabsComponent,\r\n DomainsComponent,\r\n ProjectItemsComponent,\r\n BuildsComponent,\r\n RecentActivitiesComponent,\r\n FormCardComponent,\r\n ProjectNameComponent,\r\n RootDirectoryComponent,\r\n BaseFormComponent,\r\n BaseFormTestComponent,\r\n GitAuthComponent,\r\n SourceControlFormControlsComponent,\r\n AppsFlowComponent,\r\n DevOpsComponent,\r\n DFSModifiersComponent,\r\n NpmPackageSelectComponent,\r\n ThreeColumnComponent,\r\n SlottedCardComponent,\r\n ProjectInfoCardComponent,\r\n AnalyticsCardComponent,\r\n FeedCardSmComponent,\r\n GhControlComponent,\r\n MainFeedCardComponent,\r\n TwoColumnHeaderComponent,\r\n CardCarouselComponent,\r\n SecurityToggleComponent,\r\n ProcessorDetailsFormComponent,\r\n SourceControlFormComponent,\r\n BuildPipelineFormComponent,\r\n DevopsSourceControlFormComponent,\r\n SourceControlDialogComponent,\r\n BuildPipelineDialogComponent,\r\n EditApplicationFormComponent,\r\n BreadcrumbComponent,\r\n CustomDomainDialogComponent,\r\n EditApplicationDialogComponent,\r\n EmulatedDevicesToggleComponent\r\n ],\r\n schemas: [\r\n CUSTOM_ELEMENTS_SCHEMA // Tells Angular we will have custom tags in our templates\r\n ]\r\n})\r\nexport class ApplicationsFlowModule {\r\n static forRoot(): ModuleWithProviders<ApplicationsFlowModule> {\r\n return {\r\n ngModule: ApplicationsFlowModule,\r\n providers: [\r\n ApplicationsFlowStateContext,\r\n ApplicationsFlowService,\r\n ProjectService,\r\n NPMService,\r\n FormsService,\r\n EaCService,\r\n IoTEnsembleService\r\n ],\r\n };\r\n }\r\n}\r\n","export class ProjectActionsModel {\n /**\n * Click Action\n */\n public Action?: any;\n /**\n * Mat Icon\n */\n\n public Icon: string;\n\n /**\n * Tooltip\n */\n public Tooltip?: string;\n\n constructor(opts: ProjectActionsModel) {\n Object.assign(this, opts); // destructure values\n }\n}","import { BaseResponse, Status } from '@lcu/common';\n\nexport class UserFeedResponse extends BaseResponse {\n public Items: Array<FeedItem>;\n\n public SourceControlLookups: Array<string>;\n}\n\nexport class FeedItem {\n [key: string]: any;\n\n public Actions: Array<FeedItemAction>;\n\n public Avatar: string;\n\n public Badge: string;\n\n public Contributors: Array<FeedItemContributor>;\n\n public IsPinned: boolean;\n\n public IsShortForm: boolean;\n\n public RefreshLink: string;\n\n public Status: Status;\n\n public Subtext: string;\n\n public Subtitle: string;\n\n public Tabs: Array<FeedItemTab>;\n\n public Timestamp: Date;\n\n public Title: string;\n\n public Type: string;\n}\n\nexport class FeedItemContributor {\n [key: string]: any;\n\n public Status: string;\n\n public StatusIcon: string;\n\n public UserImage: string;\n\n public Username: string;\n}\n\nexport class FeedItemAction {\n [key: string]: any;\n\n public Action: string;\n\n public ActionType: string;\n\n public Color: string;\n\n public Icon: string;\n\n public Text: string;\n}\n\nexport class FeedItemTab {\n [key: string]: any;\n\n public Data: { [key: string]: any };\n\n public Title: string;\n}\n","type ButtonType = 'GENERIC' | 'RESET' | 'SAVE';\nexport class ActionsModel {\n\n /**\n * Callback function on button click\n */\n public ClickEvent: any;\n\n /**\n * Angular Material theme color (primary, accent, warn)\n */\n public Color?: string;\n\n /**\n * Button text value\n */\n public Label: string;\n\n /**\n * Style from parent component\n */\n public Style?: string;\n\n /**\n * Type of button functionality (reset, save, generic)\n */\n public Type: ButtonType;\n }\n","import { ActionsModel } from './actions.model';\n\nexport class FormActionsModel {\n\n /**\n * Button actions\n */\n public Actions: Array<ActionsModel>;\n\n /**\n * Simple text on the same line as the buttons\n */\n public Message?: string;\n}\n","export class DevSettingsPresetModel {\n public Icon: string;\n public ID: number;\n public Label: string;\n}","export class DomainModel {\n public Branch: string;\n public Name: string;\n public Host: string;\n public ValidConfig: string;\n}","import { FormGroup } from '@angular/forms';\nexport class FormModel {\n\n /**\n * Form Id\n */\n public Id: string;\n\n /**\n * Form\n */\n public Form: FormGroup;\n\n constructor(opts: FormModel) {\n Object.assign(this, opts); // destructure values\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './lcu.api';\n"],"names":["ApplicationsFlowProjectsElementState","ApplicationsFlowProjectsContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lowcodeunit-applications-flow-common.mjs","sources":["../../../projects/common/src/lib/models/form.values.model.ts","../../../projects/common/src/lib/services/forms.service.ts","../../../projects/common/src/lib/services/applications-flow.service.ts","../../../projects/common/src/lib/services/project.service.ts","../../../projects/common/src/lib/state/applications-flow-state.context.ts","../../../projects/common/src/lib/state/applications-flow.state.ts","../../../projects/common/src/lib/services/eac.service.ts","../../../projects/common/src/lib/elements/projects/controls/project-items/project-items.component.ts","../../../projects/common/src/lib/elements/projects/controls/project-items/project-items.component.html","../../../projects/common/src/lib/elements/projects/controls/header/header.component.ts","../../../projects/common/src/lib/elements/projects/controls/header/header.component.html","../../../projects/common/src/lib/models/card-form-config.model.ts","../../../projects/common/src/lib/elements/form-card/form-card.component.ts","../../../projects/common/src/lib/elements/form-card/form-card.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/domains/domains.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/domains/domains.component.html","../../../projects/common/src/lib/models/dynamic-tabs.model.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/general.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/general.component.html","../../../projects/common/src/lib/elements/projects/controls/forms/source-control/source-control.component.ts","../../../projects/common/src/lib/elements/projects/controls/forms/source-control/source-control.component.html","../../../projects/common/src/lib/services/npm.service.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.html","../../../projects/common/src/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.ts","../../../projects/common/src/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/devops/devops.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/devops/devops.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.html","../../../projects/common/src/lib/elements/dynamic-tabs/dynamic-tabs.component.ts","../../../projects/common/src/lib/elements/dynamic-tabs/dynamic-tabs.component.html","../../../projects/common/src/lib/elements/projects/controls/project-tabs/project-tabs.component.ts","../../../projects/common/src/lib/elements/projects/controls/project-tabs/project-tabs.component.html","../../../projects/common/src/lib/elements/projects/projects.component.ts","../../../projects/common/src/lib/elements/projects/projects.component.html","../../../projects/common/src/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.ts","../../../projects/common/src/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.html","../../../projects/common/src/lib/elements/projects/controls/builds/builds.component.ts","../../../projects/common/src/lib/elements/projects/controls/builds/builds.component.html","../../../projects/common/src/lib/elements/projects/controls/recent-activities/recent-activities.component.ts","../../../projects/common/src/lib/elements/projects/controls/recent-activities/recent-activities.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.html","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.html","../../../projects/common/src/lib/elements/base-form/base-form.component.ts","../../../projects/common/src/lib/elements/base-form/base-form.component.html","../../../projects/common/src/lib/models/base-form-config.model.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.ts","../../../projects/common/src/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.html","../../../projects/common/src/lib/elements/projects/controls/git-auth/git-auth.component.ts","../../../projects/common/src/lib/elements/projects/controls/git-auth/git-auth.component.html","../../../projects/common/src/lib/elements/three-column/three-column.component.ts","../../../projects/common/src/lib/elements/three-column/three-column.component.html","../../../projects/common/src/lib/elements/slotted-card/slotted-card.component.ts","../../../projects/common/src/lib/elements/slotted-card/slotted-card.component.html","../../../projects/common/src/lib/dialogs/upgrade-dialog/upgrade-dialog.component.ts","../../../projects/common/src/lib/dialogs/upgrade-dialog/upgrade-dialog.component.html","../../../projects/common/src/lib/elements/project-info-card/project-info-card.component.ts","../../../projects/common/src/lib/elements/project-info-card/project-info-card.component.html","../../../projects/common/src/lib/elements/analytics-card/analytics-card.component.ts","../../../projects/common/src/lib/elements/analytics-card/analytics-card.component.html","../../../projects/common/src/lib/elements/feed-card-sm/feed-card-sm.component.ts","../../../projects/common/src/lib/elements/feed-card-sm/feed-card-sm.component.html","../../../projects/common/src/lib/controls/devops-source-control-form/devops-source-control-form.component.ts","../../../projects/common/src/lib/controls/devops-source-control-form/devops-source-control-form.component.html","../../../projects/common/src/lib/dialogs/source-control-dialog/source-control-dialog.component.ts","../../../projects/common/src/lib/dialogs/source-control-dialog/source-control-dialog.component.html","../../../projects/common/src/lib/elements/main-feed-card/main-feed-card.component.ts","../../../projects/common/src/lib/elements/main-feed-card/main-feed-card.component.html","../../../projects/common/src/lib/elements/two-column-header/two-column-header.component.ts","../../../projects/common/src/lib/elements/two-column-header/two-column-header.component.html","../../../projects/common/src/lib/elements/card-carousel/card-carousel.component.ts","../../../projects/common/src/lib/elements/card-carousel/card-carousel.component.html","../../../projects/common/src/lib/controls/security-toggle/security-toggle.component.ts","../../../projects/common/src/lib/controls/security-toggle/security-toggle.component.html","../../../projects/common/src/lib/controls/processor-details-form/processor-details-form.component.ts","../../../projects/common/src/lib/controls/processor-details-form/processor-details-form.component.html","../../../projects/common/src/lib/controls/source-control-form/source-control-form.component.ts","../../../projects/common/src/lib/controls/source-control-form/source-control-form.component.html","../../../projects/common/src/lib/controls/build-pipeline-form/build-pipeline-form.component.ts","../../../projects/common/src/lib/controls/build-pipeline-form/build-pipeline-form.component.html","../../../projects/common/src/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.ts","../../../projects/common/src/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.html","../../../projects/common/src/lib/controls/edit-application-form/edit-application-form.component.ts","../../../projects/common/src/lib/controls/edit-application-form/edit-application-form.component.html","../../../projects/common/src/lib/elements/breadcrumb/breadcrumb.component.ts","../../../projects/common/src/lib/elements/breadcrumb/breadcrumb.component.html","../../../projects/common/src/lib/dialogs/custom-domain-dialog/custom-domain-dialog.component.ts","../../../projects/common/src/lib/dialogs/custom-domain-dialog/custom-domain-dialog.component.html","../../../projects/common/src/lib/dialogs/edit-application-dialog/edit-application-dialog.component.ts","../../../projects/common/src/lib/dialogs/edit-application-dialog/edit-application-dialog.component.html","../../../projects/common/src/lib/dialogs/new-application-dialog/new-application-dialog.component.ts","../../../projects/common/src/lib/dialogs/new-application-dialog/new-application-dialog.component.html","../../../projects/common/src/lib/dialogs/processor-details-dialog/processor-details-dialog.component.ts","../../../projects/common/src/lib/dialogs/processor-details-dialog/processor-details-dialog.component.html","../../../projects/common/src/lib/elements/skeleton-feed-card/skeleton-feed-card.component.ts","../../../projects/common/src/lib/elements/skeleton-feed-card/skeleton-feed-card.component.html","../../../projects/common/src/lib/controls/emulated-devices-toggle/emulated-devices-toggle.component.ts","../../../projects/common/src/lib/controls/emulated-devices-toggle/emulated-devices-toggle.component.html","../../../projects/common/src/lib/state/iot-ensemble.state.ts","../../../projects/common/src/lib/services/iot-ensemble.service.ts","../../../projects/common/src/lib/dialogs/feed-header-dialog/feed-header-dialog.component.ts","../../../projects/common/src/lib/dialogs/feed-header-dialog/feed-header-dialog.component.html","../../../projects/common/src/lib/elements/feed-header/feed-header.component.ts","../../../projects/common/src/lib/elements/feed-header/feed-header.component.html","../../../projects/common/src/lib/controls/dfs-modifiers-form/dfs-modifiers-form.component.ts","../../../projects/common/src/lib/controls/dfs-modifiers-form/dfs-modifiers-form.component.html","../../../projects/common/src/lib/dialogs/dfs-modifiers-dialog/dfs-modifiers-dialog.component.ts","../../../projects/common/src/lib/dialogs/dfs-modifiers-dialog/dfs-modifiers-dialog.component.html","../../../projects/common/src/lib/applications-flow.module.ts","../../../projects/common/src/lib/models/project-actions.model.ts","../../../projects/common/src/lib/models/user-feed.model.ts","../../../projects/common/src/lib/models/actions.model.ts","../../../projects/common/src/lib/models/form-actions.model.ts","../../../projects/common/src/lib/models/dev-settings-preset.model.ts","../../../projects/common/src/lib/models/domain.model.ts","../../../projects/common/src/lib/models/form.model.ts","../../../projects/common/src/lowcodeunit-applications-flow-common.ts"],"sourcesContent":["/**\n * Model for form values\n * \n */\n export class FormValuesModel {\n /**\n * Form ID\n */\n public Id: string;\n\n /**\n * Form values\n */\n public Values: object;\n\n constructor(id: string, values: object) {\n this.Id = id;\n this.Values = values;\n }\n}","import { FormValuesModel } from './../models/form.values.model';\nimport { FormModel } from './../models/form.model';\nimport { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n })\n\nexport class FormsService {\n\n /**\n * List of forms\n */\n private _form: FormModel;\n public set Form(val: FormModel) {\n\n if (!val) { return; }\n\n this._form = val;\n this.forms.push(val);\n this.createValuesReference(val);\n }\n\n public get Form(): FormModel {\n return this._form;\n }\n\n /**\n * When any form is being edited\n */\n public FormIsDirty: Subject<boolean>;\n\n protected forms: Array<FormModel>;\n\n /**\n * Storage reference for intial form values\n */\n // public formsInitialValues: Array<FormModel>;\n protected previousFormValues: Array<FormValuesModel>;\n\n /**\n * \n * @param val as string - enabled form name\n * @param val as boolen - enable/disable all forms\n * \n * Enable / disable forms, use this when a form is being edited and \n * all other forms need to be disabled\n */\n public DisableForms(val: string | boolean): void {\n\n const preventEvent: {onlySelf: boolean, emitEvent: boolean} = { onlySelf: true, emitEvent: false };\n\n this.forms.forEach((form: FormModel) => {\n\n if (typeof val === 'boolean') {\n val ? form.Form.disable(preventEvent) : form.Form.enable(preventEvent);\n } else {\n if (form.Id === val) {\n form.Form.enable(preventEvent);\n } else {\n form.Form.disable(preventEvent);\n }\n }\n });\n }\n\n\n /**\n * Create a reference of initial form data\n * Use this to compare if values really changed, because\n * the user could change values back to the original\n *\n * @param obj form data\n */\n protected createValuesReference(val: FormModel): void {\n\n // const values: Array<{key: string, value: string}> = [];\n const keyValues: object = {};\n\n for (const [key, value] of Object.entries(val.Form.controls)) {\n\n // values.push({key, value: value.value});\n keyValues[key] = value.value;\n }\n\n // this.formsValues.push(new FormValuesModel(val.Id, val.Form.value));\n this.previousFormValues.push(new FormValuesModel(val.Id, keyValues));\n }\n\n /**\n * Update value reference after saves\n * \n * @param val form model with values\n */\n public UpdateValuesReference(val: FormModel): void {\n\n const index: number = this.previousFormValues.findIndex((x: FormValuesModel) => {\n return x.Id === val.Id;\n });\n\n this.previousFormValues[index].Values = val.Form.value;\n\n // TODO: look at consolidating updating this.forms and this.previousFormValues - shannon (7-14-21)\n const formIndex: number = this.forms.findIndex((x: FormModel) => {\n return x.Id === val.Id;\n });\n\n this.forms[formIndex] = val;\n }\n\n /**\n * Reset form values back to previous \n * \n * @param id form id\n */\n public ResetFormValues(id: string): void {\n this.forms.find((form: FormModel) => {\n if (form.Id === id) {\n form.Form.patchValue(this.GetPreviousFormValues(id).Values);\n }\n });\n }\n\n /**\n * \n * @param id form id to search for\n *\n * @returns previous form values\n */\n public GetPreviousFormValues(id: string): FormValuesModel {\n return this.previousFormValues.find((x: FormValuesModel) => {\n return x.Id === id;\n });\n }\n\n /**\n * Check for actual form changes, because the user\n * could have canceled or changed the value back to the\n * original\n *\n * @param id form id\n * @param formToCheck form to be tested\n */\n public ForRealThough(id: string, formToCheck: FormGroup): boolean {\n\n const formVals: FormValuesModel = this.previousFormValues.find((x: FormValuesModel) => {\n return x.Id === id;\n });\n\n for (const key in formToCheck.controls) {\n if (formToCheck.controls[key].value !== formVals.Values[key]) {\n this.FormIsDirty.next(true);\n return true;\n }\n }\n\n this.FormIsDirty.next(false);\n return false;\n }\n\n constructor() {\n this.forms = [];\n this.previousFormValues = [];\n this.FormIsDirty = new Subject();\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { LCUServiceSettings } from '@lcu/common';\r\nimport { Observable } from 'rxjs';\r\nimport { EnterpriseAsCode } from '@semanticjs/common';\r\nimport { UnpackLowCodeUnitRequest } from '../state/applications-flow.state';\r\nimport { FeedEntry } from '../models/user-feed.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApplicationsFlowService {\r\n // Fields\r\n protected apiRoot: string;\r\n\r\n // Properties\r\n\r\n // Constructors\r\n constructor(\r\n protected http: HttpClient,\r\n protected settings: LCUServiceSettings\r\n ) {\r\n this.apiRoot = settings.APIRoot;\r\n }\r\n\r\n // API Methods\r\n public ConfigureDevOpsAction(actionLookup: string): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/manage/devops/actions/${actionLookup}/configure`,\r\n {},\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public CreateRepository(\r\n organization: string,\r\n repoName: string\r\n ): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/github/organizations/${organization}/repositories`,\r\n {\r\n Name: repoName,\r\n },\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public DeleteApplication(appLookup: string): Observable<object> {\r\n return this.http.delete(\r\n `${this.apiRoot}/api/lowcodeunit/manage/applications/${appLookup}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public DeleteDevOpsAction(doaLookup: string): Observable<object> {\r\n return this.http.delete(\r\n `${this.apiRoot}/api/lowcodeunit/manage/devops-actions/${doaLookup}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public DeleteProject(projectLookup: string): Observable<object> {\r\n return this.http.delete(\r\n `${this.apiRoot}/api/lowcodeunit/manage/projects/${projectLookup}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public DeleteSourceControl(scLookup: string): Observable<object> {\r\n return this.http.delete(\r\n `${this.apiRoot}/api/lowcodeunit/manage/source-controls/${scLookup}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public EnsureUserEnterprise(): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/manage/enterprise/ensure`,\r\n {},\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public EnterpriseAsCodeRemovals(removals: EnterpriseAsCode): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/manage/eac`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public GetActiveEnterprise(): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/manage/enterprises/active`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public HasValidConnection(): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/github/connection/valid`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public ListProjects(): Observable<object> {\r\n return this.http.get(`${this.apiRoot}/api/lowcodeunit/manage/projects`, {\r\n headers: this.loadHeaders(),\r\n });\r\n }\r\n\r\n public ListBranches(\r\n organization: string,\r\n repository: string\r\n ): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/github/organizations/${organization}/repositories/${repository}/branches`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public ListBuildPaths(\r\n organization: string,\r\n repository: string,\r\n branch: string = ''\r\n ): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/github/organizations/${organization}/repositories/${repository}/build-paths?branch=${branch}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public ListEnterprises(): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/manage/enterprises/list`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public ListOrganizations(): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/github/organizations`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public ListRepositories(organization: string): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/github/organizations/${organization}/repositories`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public LoadEnterpriseAsCode(): Observable<object> {\r\n return this.http.get(`${this.apiRoot}/api/lowcodeunit/manage/eac`, {\r\n headers: this.loadHeaders(),\r\n });\r\n }\r\n\r\n // public LoadProjectHostingDetails(\r\n // organization: string,\r\n // repository: string,\r\n // branch: string\r\n // ): Observable<object> {\r\n // branch = encodeURIComponent(branch);\r\n\r\n // return this.http.get(\r\n // `${this.apiRoot}/api/lowcodeunit/manage/projects/organizations/${organization}/repositories/${repository}/branches/${branch}/hosting/details`,\r\n // {\r\n // headers: this.loadHeaders(),\r\n // }\r\n // );\r\n // }\r\n\r\n public LoadProjectHostingDetails(): Observable<object> {\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/manage/projects/hosting/details`,\r\n\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public LoadUserFeed(\r\n page: number,\r\n pageSize: number,\r\n project: string,\r\n applications: string[]\r\n ): Observable<object> {\r\n var apps = JSON.stringify(applications || []);\r\n return this.http.get(\r\n `${this.apiRoot}/api/lowcodeunit/userfeed?page=${page}&pageSize=${pageSize}&project=${project}&applications=${apps}`,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public SaveEnterpriseAsCode(eac: EnterpriseAsCode): Observable<object> {\r\n return this.http.post(`${this.apiRoot}/api/lowcodeunit/manage/eac`, eac, {\r\n headers: this.loadHeaders(),\r\n });\r\n }\r\n\r\n public SetActiveEnterprise(activeEntLookup: string): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/manage/enterprises/active`,\r\n {\r\n ActiveEnterpriseLookup: activeEntLookup,\r\n },\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public SubmitFeedEntry(entry: FeedEntry): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/userfeed/entry`,\r\n entry,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n public UnpackLowCodeUnit(req: UnpackLowCodeUnitRequest): Observable<object> {\r\n return this.http.post(\r\n `${this.apiRoot}/api/lowcodeunit/manage/projects/unpack`,\r\n req,\r\n {\r\n headers: this.loadHeaders(),\r\n }\r\n );\r\n }\r\n\r\n // Helpers\r\n protected loadHeaders(): { [header: string]: string | string[] } {\r\n return {};\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { BaseModeledResponse, BaseResponse, Status } from '@lcu/common';\nimport { debug } from 'console';\nimport { EaCApplicationAsCode, EaCProjectAsCode, EnterpriseAsCode } from '@semanticjs/common';\nimport {\n ApplicationsFlowState,\n GitHubWorkflowRun,\n UnpackLowCodeUnitRequest,\n} from '../state/applications-flow.state';\nimport { ApplicationsFlowService } from './applications-flow.service';\nimport { FeedEntry, FeedItem, UserFeedResponse } from '../models/user-feed.model';\nimport { ActivatedRoute } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProjectService {\n public CreatingProject: boolean;\n\n public EditingProjectLookup: string;\n\n constructor(\n protected appsFlowSvc: ApplicationsFlowService,\n protected activatedRoute: ActivatedRoute\n ) {}\n\n // public CreateRepository(state: ApplicationsFlowState, org: string, repoName: string): void {\n // state.GitHub.Loading = true;\n\n // this.appsFlowSvc\n // .CreateRepository(org, repoName)\n // .subscribe((response: BaseResponse) => {\n // if (response.Status.Code === 0) {\n // this.listRepositories(repoName);\n\n // state.GitHub.CreatingRepository = false;\n // } else {\n // // TODO: Need to surface an error to the user...\n\n // state.GitHub.Loading = false;\n // }\n // });\n // }\n\n public async DeleteApplication(\n state: ApplicationsFlowState,\n appLookup: string\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.DeleteApplication(appLookup).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(eac);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public DeleteDevOpsAction(\n state: ApplicationsFlowState,\n doaLookup: string\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.DeleteDevOpsAction(doaLookup).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(eac);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public DeleteProject(\n state: ApplicationsFlowState,\n projectLookup: string\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.DeleteProject(projectLookup).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(eac);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public DeleteSourceControl(\n state: ApplicationsFlowState,\n scLookup: string\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.DeleteSourceControl(scLookup).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(eac);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public EnsureUserEnterprise(\n state: ApplicationsFlowState\n ): Promise<BaseResponse> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.EnsureUserEnterprise().subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n // const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(response);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public async EnterpriseAsCodeRemovals(\n state: ApplicationsFlowState,\n eac: EnterpriseAsCode\n ): Promise<Status> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.EnterpriseAsCodeRemovals(eac).subscribe(\n async (response: BaseModeledResponse<string>) => {\n if (response.Status.Code === 0) {\n var results = await Promise.all([\n this.LoadEnterpriseAsCode(state),\n this.LoadUserFeed(1, 25, state),\n ]);\n\n resolve(response.Status);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public GenerateRoutedApplications(applications: { [lookup: string]: EaCApplicationAsCode }, state: ApplicationsFlowState): {\n [route: string]: { [lookup: string]: EaCApplicationAsCode };\n } {\n const appLookups = Object.keys(applications);\n\n const apps = appLookups.map((appLookup) => applications[appLookup]);\n\n let appRoutes =\n apps.map((app) => {\n return app?.LookupConfig?.PathRegex.replace('.*', '');\n }) || [];\n\n appRoutes = appRoutes.filter((ar) => ar != null);\n\n let routeBases: string[] = [];\n\n appRoutes.forEach((appRoute) => {\n const appRouteParts = appRoute.split('/');\n\n const appRouteBase = `/${appRouteParts[1]}`;\n\n if (routeBases.indexOf(appRouteBase) < 0) {\n routeBases.push(appRouteBase);\n }\n });\n\n let workingAppLookups = [...(appLookups || [])];\n\n routeBases = routeBases.sort((a, b) => b.localeCompare(a));\n\n const routeSet =\n routeBases.reduce((prevRouteMap, currentRouteBase) => {\n const routeMap = {\n ...prevRouteMap,\n };\n\n const filteredAppLookups = workingAppLookups.filter((wal) => {\n const wa = applications[wal];\n\n return wa?.LookupConfig?.PathRegex.startsWith(currentRouteBase);\n });\n\n routeMap[currentRouteBase] =\n filteredAppLookups.reduce((prevAppMap, appLookup) => {\n const appMap = {\n ...prevAppMap,\n };\n\n appMap[appLookup] = applications[appLookup];\n\n return appMap;\n }, {}) || {};\n\n workingAppLookups = workingAppLookups.filter((wa) => {\n return filteredAppLookups.indexOf(wa) < 0;\n });\n\n return routeMap;\n }, {}) || {};\n\n let routeSetKeys = Object.keys(routeSet);\n\n routeSetKeys = routeSetKeys.sort((a, b) => a.localeCompare(b));\n\n const routeSetResult = {};\n\n routeSetKeys.forEach((rsk) => (routeSetResult[rsk] = routeSet[rsk]));\n\n return routeSetResult;\n }\n\n public async GetActiveEnterprise(\n state: ApplicationsFlowState\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n state.LoadingActiveEnterprise = true;\n\n this.appsFlowSvc.GetActiveEnterprise().subscribe(\n async (\n response: BaseModeledResponse<{ Name: string; Lookup: string }>\n ) => {\n state.LoadingActiveEnterprise = false;\n\n if (response.Status.Code === 0) {\n state.ActiveEnterpriseLookup = response.Model?.Lookup;\n\n resolve();\n } else {\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.LoadingActiveEnterprise = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public HasValidConnection(\n state: ApplicationsFlowState,\n forceEnsureUser: boolean = false\n ): Promise<EnterpriseAsCode> {\n return new Promise(async (resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.HasValidConnection().subscribe(\n async (response: BaseResponse) => {\n state.GitHub.HasConnection = response.Status.Code === 0;\n\n if (state.GitHub.HasConnection || forceEnsureUser) {\n } else {\n }\n\n resolve({});\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public async ListEnterprises(state: ApplicationsFlowState): Promise<any[]> {\n return new Promise((resolve, reject) => {\n state.LoadingEnterprises = true;\n\n this.appsFlowSvc.ListEnterprises().subscribe(\n async (response: BaseModeledResponse<Array<any>>) => {\n state.LoadingEnterprises = false;\n\n if (response.Status.Code === 0) {\n state.Enterprises = response.Model;\n\n resolve(response.Model);\n } else {\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.LoadingEnterprises = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public LoadEnterpriseAsCode(\n state: ApplicationsFlowState\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.LoadEnterpriseAsCode().subscribe(\n (response: BaseModeledResponse<EnterpriseAsCode>) => {\n state.Loading = false;\n\n if (response.Status.Code === 0) {\n state.EaC = response.Model || {};\n } else if (response.Status.Code === 3) {\n }\n\n state.EaC = state.EaC || {};\n\n this.CreatingProject =\n Object.keys(state?.EaC?.Projects || {}).length <= 0;\n\n resolve(state.EaC);\n\n console.log(state);\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public async LoadUserFeed(\n page: number,\n pageSize: number,\n state: ApplicationsFlowState\n ): Promise<Array<FeedItem>> {\n return new Promise((resolve, reject) => {\n state.LoadingFeed = true;\n\n let paramMap = this.activatedRoute.snapshot.children[0].paramMap;\n\n let result = this.loadApplicationsForFeed(state, paramMap);\n \n this.appsFlowSvc\n .LoadUserFeed(page, pageSize, result.Project, result.Applications)\n .subscribe(\n async (response: UserFeedResponse) => {\n state.LoadingFeed = false;\n\n if (response.Status.Code === 0) {\n state.Feed = response.Items;\n\n state.FeedSourceControlLookups = response.SourceControlLookups;\n\n state.FeedActions = response.Actions;\n // console.log(\"ITEMZ: \", response.Items)\n\n resolve(response.Items);\n } else {\n reject(response.Status);\n }\n },\n (err) => {\n state.LoadingFeed = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public async SetActiveEnterprise(\n state: ApplicationsFlowState,\n activeEntLookup: string\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n state.LoadingFeed = true;\n\n this.appsFlowSvc.SetActiveEnterprise(activeEntLookup).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n this.EditingProjectLookup = null;\n\n console.log('project service active ent: ', activeEntLookup);\n\n state.ActiveEnterpriseLookup = activeEntLookup;\n\n console.log(\n 'project service State active ent: ',\n state.ActiveEnterpriseLookup\n );\n\n var results = await Promise.all([\n this.LoadEnterpriseAsCode(state),\n this.LoadUserFeed(1, 25, state),\n ]);\n\n resolve(results[0]);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public async SaveEnterpriseAsCode(\n state: ApplicationsFlowState,\n eac: EnterpriseAsCode\n ): Promise<Status> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.SaveEnterpriseAsCode(eac).subscribe(\n async (response: BaseModeledResponse<string>) => {\n if (response.Status.Code === 0) {\n var results = await Promise.all([\n this.LoadEnterpriseAsCode(state),\n this.LoadUserFeed(1, 25, state),\n ]);\n\n resolve(response.Status);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public SetCreatingProject(creatingProject: boolean): void {\n this.CreatingProject = creatingProject;\n\n this.EditingProjectLookup = null;\n }\n\n public SetEditProjectSettings(\n state: ApplicationsFlowState,\n projectLookup: string\n ): Promise<any> {\n return new Promise((resolve, reject) => {\n if (projectLookup != null) {\n state.Loading = false;\n\n this.EditingProjectLookup = null;\n\n setTimeout(() => {\n this.EditingProjectLookup = projectLookup;\n\n resolve({});\n }, 0);\n\n this.CreatingProject = false;\n\n console.log(state);\n } else {\n state.Loading = false;\n\n this.EditingProjectLookup = projectLookup;\n\n this.CreatingProject = false;\n\n resolve({});\n }\n });\n }\n\n public async SubmitFeedEntry(\n state: ApplicationsFlowState,\n entry: FeedEntry\n ): Promise<Status> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.SubmitFeedEntry(entry).subscribe(\n async (response: BaseModeledResponse<string>) => {\n if (response.Status.Code === 0) {\n var results = await Promise.all([\n this.LoadEnterpriseAsCode(state),\n this.LoadUserFeed(1, 25, state),\n ]);\n\n resolve(response.Status);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n public ToggleCreateProject(): void {\n this.SetCreatingProject(!this.CreatingProject);\n }\n\n public UnpackLowCodeUnit(\n state: ApplicationsFlowState,\n req: UnpackLowCodeUnitRequest\n ): Promise<EnterpriseAsCode> {\n return new Promise((resolve, reject) => {\n state.Loading = true;\n\n this.appsFlowSvc.UnpackLowCodeUnit(req).subscribe(\n async (response: BaseResponse) => {\n if (response.Status.Code === 0) {\n const eac = await this.LoadEnterpriseAsCode(state);\n\n resolve(eac);\n } else {\n state.Loading = false;\n\n reject(response.Status);\n\n console.log(response);\n }\n },\n (err) => {\n state.Loading = false;\n\n reject(err);\n\n console.log(err);\n }\n );\n });\n }\n\n // Helpers\n protected loadApplicationsForFeed(state: ApplicationsFlowState, paramMap: any) {\n // this.activatedRoute.paramMap.subscribe(async (paramMap) => {\n var project = paramMap.get('projectLookup') || '';\n\n var route = paramMap.get('appRoute');\n\n var application = paramMap.get('appLookup');\n\n var applications: string[] = [];\n\n if (application) {\n applications.push(application);\n } else if (route && project) {\n const apps: { [lookup: string]: EaCApplicationAsCode } = {};\n\n state.EaC.Projects[project].ApplicationLookups.forEach(\n (appLookup: string) => {\n apps[appLookup] = state.EaC.Applications[appLookup];\n }\n );\n\n var routedApps = this.GenerateRoutedApplications(apps, state);\n\n var currentApps = routedApps[route];\n\n applications = Object.keys(currentApps) || [];\n }\n\n return {\n Applications: applications,\n Project: project,\n };\n // });\n }\n\n}\n","import { Injectable, Injector } from '@angular/core';\r\nimport { StateContext } from '@lcu/common';\r\nimport { ApplicationsFlowState } from './applications-flow.state';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApplicationsFlowStateContext extends StateContext<ApplicationsFlowState> {\r\n\r\n // Constructors\r\n constructor(protected injector: Injector) {\r\n super(injector);\r\n }\r\n\r\n\r\n // API Methods\r\n public AddApplication(): void {\r\n this.Execute({\r\n Arguments: {\r\n },\r\n Type: 'AddApplication'\r\n });\r\n }\r\n\r\n // Helpers\r\n protected defaultValue(): ApplicationsFlowState {\r\n return { Loading: true } as ApplicationsFlowState;\r\n }\r\n\r\n protected loadStateKey(): string {\r\n return 'main';\r\n }\r\n\r\n protected loadStateName(): string {\r\n return 'lcu';\r\n }\r\n}\r\n","import { EnterpriseAsCode } from '@semanticjs/common';\r\nimport { FeedItem, FeedItemAction } from '../models/user-feed.model';\r\n\r\nexport class ApplicationsFlowState {\r\n public ActiveEnterpriseLookup?: string;\r\n\r\n public EaC?: EnterpriseAsCode;\r\n\r\n public Enterprises?: Array<{ Name: string; Lookup: string }>;\r\n\r\n public Feed?: Array<FeedItem>;\r\n\r\n public FeedActions?: Array<FeedItemAction>;\r\n\r\n public FeedSourceControlLookups?: Array<string>;\r\n\r\n public GitHub?: GitHubSetupState;\r\n\r\n public HostingDetails?: ProjectHostingDetails;\r\n\r\n public Loading?: boolean;\r\n\r\n public LoadingActiveEnterprise?: boolean;\r\n\r\n public LoadingEnterprises?: boolean;\r\n \r\n public LoadingFeed?: boolean;\r\n\r\n // public Projects?: ProjectState[];\r\n\r\n public Unleashed?: boolean;\r\n\r\n public UserEnterpriseLookup?: string;\r\n\r\n constructor() {\r\n this.GitHub = {};\r\n\r\n this.HostingDetails = {};\r\n\r\n this.Loading = true;\r\n\r\n this.LoadingActiveEnterprise = true;\r\n\r\n this.LoadingEnterprises = true;\r\n\r\n this.LoadingFeed = true;\r\n\r\n // this.Projects = [];\r\n }\r\n}\r\n\r\n// export class ProjectState {\r\n// public ActionsSet?: { [id: string]: DevOpsAction };\r\n\r\n// public Applications?: ApplicationState[];\r\n\r\n// public Description?: string;\r\n\r\n// public Host?: string;\r\n\r\n// public ID?: string;\r\n\r\n// public Image?: string;\r\n\r\n// public LCUs?: GitHubLowCodeUnit[];\r\n\r\n// public Name?: string;\r\n\r\n// public PreventInheritedApplications?: boolean;\r\n\r\n// public Runs?: GitHubWorkflowRun[];\r\n// }\r\n\r\n// export class ApplicationState {\r\n// public IsPrivate?: boolean;\r\n\r\n// public Name?: string;\r\n\r\n// public Organization?: string;\r\n\r\n// public PathRegex?: string;\r\n\r\n// public Priority?: number;\r\n\r\n// public Repository?: string;\r\n\r\n// public Version?: string;\r\n// }\r\n\r\nexport class GitHubSetupState {\r\n public BranchOptions?: GitHubBranch[];\r\n\r\n public CreatingRepository?: boolean;\r\n\r\n public HasConnection?: boolean;\r\n\r\n public Loading?: boolean;\r\n\r\n public OrganizationOptions?: GitHubOrganization[];\r\n\r\n public RepositoryOptions?: GitHubRepository[];\r\n}\r\n\r\nexport class GitHubBranch {\r\n public Name?: string;\r\n}\r\n\r\n// export class GitHubLowCodeUnit {\r\n// public Branch?: string;\r\n\r\n// public ID?: string;\r\n\r\n// public Lookup?: string;\r\n\r\n// public Organization?: string;\r\n\r\n// public Repository?: string;\r\n// }\r\n\r\nexport class GitHubOrganization {\r\n public Name?: string;\r\n}\r\n\r\nexport class GitHubRepository {\r\n public CloneURL?: string;\r\n\r\n public Name?: string;\r\n}\r\n\r\nexport class GitHubWorkflowRun {\r\n public Conclusion?: string;\r\n\r\n public CreatedAt?: string;\r\n\r\n public ID?: string;\r\n\r\n public LCUID?: string;\r\n\r\n public RunNumber?: number;\r\n\r\n public Status?: string;\r\n\r\n public Workflow?: string;\r\n\r\n public UpdatedAt?: string;\r\n}\r\n\r\nexport class UnpackLowCodeUnitRequest {\r\n public ApplicationLookup?: string;\r\n\r\n public ApplicationName?: string;\r\n\r\n public Version?: string;\r\n}\r\n\r\n// export class DevOpsAction {\r\n// public Details?: string;\r\n\r\n// public ID?: string;\r\n\r\n// public Name?: string;\r\n\r\n// public Overwrite?: boolean;\r\n\r\n// public Path?: string;\r\n\r\n// public Template?: string;\r\n// }\r\n\r\nexport class ProjectHostingDetails {\r\n public HostingOptions?: ProjectHostingOption[];\r\n\r\n public Loading?: boolean;\r\n}\r\n\r\nexport class ProjectHostingOption {\r\n public ArtifactType?: string;\r\n\r\n public Description?: string;\r\n\r\n public Image?: string;\r\n\r\n public Inputs?: ProjectHostingOptionInput[];\r\n\r\n public Lookup?: string;\r\n\r\n public Name?: string;\r\n\r\n public Path?: string;\r\n\r\n public Templates?: string[];\r\n}\r\n\r\nexport class ProjectHostingOptionInput {\r\n public DefaultValue?: string;\r\n\r\n public Hint?: string;\r\n\r\n public Lookup?: string;\r\n\r\n public Placeholder?: string;\r\n\r\n public Required?: boolean;\r\n}\r\n\r\n// export class EstablishProjectRequest {\r\n// public Branch?: string;\r\n\r\n// public BuildScript?: string;\r\n\r\n// public HostingOption?: string;\r\n\r\n// public Organization?: string;\r\n\r\n// public OutputFolder?: string;\r\n\r\n// public ProjectName?: string;\r\n\r\n// public Repository?: string;\r\n// }\r\n","import { Injectable } from '@angular/core';\nimport { ProjectService } from './project.service';\nimport {\n ApplicationsFlowState,\n UnpackLowCodeUnitRequest,\n} from '../state/applications-flow.state';\nimport {\n EaCApplicationAsCode,\n EaCDataToken,\n EaCDFSModifier,\n EaCEnvironmentAsCode,\n EaCHost,\n EaCProjectAsCode,\n EnterpriseAsCode,\n} from '@semanticjs/common';\nimport { FeedEntry, FeedItem } from '../models/user-feed.model';\nimport { HttpClient } from '@angular/common/http';\nimport { BaseModeledResponse, Status } from '@lcu/common';\nimport { Observable } from 'rxjs';\n\nexport class SaveApplicationAsCodeEventRequest {\n public Application?: EaCApplicationAsCode;\n\n public ApplicationLookup?: string;\n\n public ProjectLookup?: string;\n}\n\n// export class SaveDFSModifierForApplicationEventRequest {\n// public Modifier: EaCDFSModifier;\n\n// public ModifierLookup: string;\n\n// public ApplicationLookup?: string;\n// }\n\nexport class SaveDFSModifierEventRequest {\n\n public ApplicationLookup?: string;\n\n public Modifier?: EaCDFSModifier;\n\n public ModifierLookups?: Array<string>;\n\n // public ModifierLookup?: string;\n\n // public ProjectLookup?: string;\n\n public ProjectLookups?: Array<string>;\n\n\n \n}\n\n// export class SaveDFSModifierForAllEventRequest {\n// public Modifier: EaCDFSModifier;\n\n// public ModifierLookup: string;\n\n// public ProjectLookups?: Array<string>;\n// }\n\nexport class SaveEnvironmentAsCodeEventRequest {\n public EnterpriseDataTokens?: { [lookup: string]: EaCDataToken };\n\n public Environment?: EaCEnvironmentAsCode;\n\n public EnvironmentLookup?: string;\n}\n\nexport class SaveProjectAsCodeEventRequest {\n public Project?: EaCProjectAsCode;\n\n public ProjectLookup?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EaCService {\n // Properties\n public get EditingProjectLookup(): string {\n return this.projectService.EditingProjectLookup;\n }\n\n public get CreatingProject(): boolean {\n return this.projectService.CreatingProject;\n }\n\n public State: ApplicationsFlowState;\n\n // Constructors\n constructor(protected projectService: ProjectService,\n protected http: HttpClient) {\n this.State = new ApplicationsFlowState();\n }\n\n // API Methods\n public CheckUserFeedItem(feedItem: FeedItem): Observable<object> {\n return this.http.get(feedItem.RefreshLink);\n }\n\n public async DeleteApplication(\n appLookup: string,\n appName: string\n ): Promise<void> {\n if (confirm(`Are you sure you want to delete application '${appName}'?`)) {\n await this.projectService.DeleteApplication(this.State, appLookup);\n }\n }\n\n public async DeleteDevOpsAction(doaLookup: string): Promise<void> {\n if (\n confirm(`Are you sure you want to delete DevOps action '${doaLookup}'?`)\n ) {\n await this.projectService.DeleteDevOpsAction(this.State, doaLookup);\n }\n }\n\n public async DeleteProject(projectLookup: string): Promise<void> {\n if (\n confirm(`Are you sure you want to delete Project '${projectLookup}'?`)\n ) {\n await this.projectService.DeleteProject(this.State, projectLookup);\n }\n }\n\n public async DeleteSourceControl(scLookup: string): Promise<void> {\n if (\n confirm(`Are you sure you want to delete Source Control '${scLookup}'?`)\n ) {\n await this.projectService.DeleteSourceControl(this.State, scLookup);\n }\n }\n\n // this.appsFlowEventsSvc.EnsureUserEnterpriseEvent.subscribe(async () => {\n // await this.projectService.EnsureUserEnterprise(this.State);\n // });\n\n public async EnsureUserEnterprise(): Promise<void> {\n await this.projectService.EnsureUserEnterprise(this.State);\n }\n\n public async EnterpriseAsCodeRemovals(eac: EnterpriseAsCode): Promise<Status> {\n return await this.projectService.EnterpriseAsCodeRemovals(this.State, eac);\n }\n\n public async GetActiveEnterprise(): Promise<void> {\n await this.projectService.GetActiveEnterprise(this.State);\n }\n\n public async LoadUserFeed(page: number, pageSize: number): Promise<void> {\n await this.projectService.LoadUserFeed(page, pageSize, this.State);\n }\n \n public GenerateRoutedApplications(applications: { [lookup: string]: EaCApplicationAsCode }): {\n [route: string]: { [lookup: string]: EaCApplicationAsCode };\n } {\n return this.projectService.GenerateRoutedApplications(applications, this.State);\n }\n\n public async HasValidConnection(): Promise<void> {\n await this.projectService.HasValidConnection(this.State);\n }\n\n public async ListEnterprises(): Promise<void> {\n await this.projectService.ListEnterprises(this.State);\n }\n\n public async LoadEnterpriseAsCode(): Promise<void> {\n await this.projectService.LoadEnterpriseAsCode(this.State);\n }\n\n public async SaveApplicationAsCode(\n req: SaveApplicationAsCodeEventRequest\n ): Promise<Status> {\n return await this.handleSaveApplication(req);\n }\n\n public async SaveDFSModifier(\n req: SaveDFSModifierEventRequest\n ): Promise<void> {\n await this.handleSaveDFSModifier(req);\n }\n\n\n public async SaveEnterpriseAsCode(eac: EnterpriseAsCode): Promise<Status> {\n return await this.projectService.SaveEnterpriseAsCode(this.State, eac);\n }\n\n public async SaveEnvironmentAsCode(\n req: SaveEnvironmentAsCodeEventRequest\n ): Promise<Status> {\n return await this.handleSaveEnvironment(req);\n }\n\n public async SaveProjectAsCode(\n req: SaveProjectAsCodeEventRequest\n ): Promise<void> {\n await this.handleSaveProject(req.ProjectLookup, req.Project);\n }\n\n public async SetActiveEnterprise(entLookup: any): Promise<void> {\n this.projectService.SetActiveEnterprise(this.State, entLookup);\n }\n\n public async SetCreatingProject(creatingProject: boolean): Promise<void> {\n this.projectService.SetCreatingProject(creatingProject);\n }\n\n public async SetEditProjectSettings(projectLookup: string): Promise<void> {\n await this.projectService.SetEditProjectSettings(this.State, projectLookup);\n }\n\n public async SubmitFeedEntry(entry: FeedEntry): Promise<Status> {\n return await this.projectService.SubmitFeedEntry(this.State, entry);\n }\n\n public async UnpackLowCodeUnit(req: UnpackLowCodeUnitRequest): Promise<void> {\n if (\n confirm(\n `Are you sure you want to unpack application '${req.ApplicationName}' with version '${req.Version}'?`\n )\n ) {\n await this.projectService.UnpackLowCodeUnit(this.State, req);\n }\n }\n\n // Helpers\n protected async handleSaveApplication(\n req: SaveApplicationAsCodeEventRequest\n ): Promise<Status> {\n const saveEaC: EnterpriseAsCode = {\n EnterpriseLookup: this.State.EaC.EnterpriseLookup,\n Applications: {},\n Projects: {},\n };\n\n const existingProj = {\n ...this.State.EaC.Projects[req.ProjectLookup],\n };\n\n if (existingProj.ApplicationLookups?.indexOf(req.ApplicationLookup) < 0) {\n if (!existingProj.ApplicationLookups) {\n existingProj.ApplicationLookups = [];\n }\n\n existingProj.ApplicationLookups.push(req.ApplicationLookup);\n\n saveEaC.Projects[req.ProjectLookup] = existingProj;\n }\n\n if (req.Application) {\n saveEaC.Applications[req.ApplicationLookup] = req.Application;\n }\n\n return await this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);\n }\n\n\n protected async handleSaveDFSModifier(\n req: SaveDFSModifierEventRequest\n ): Promise<void> {\n const saveEaC: EnterpriseAsCode = {\n EnterpriseLookup: this.State.EaC.EnterpriseLookup,\n Modifiers: {},\n Projects: {},\n };\n\n if (req.Modifier) {\n saveEaC.Modifiers[req.ModifierLookups[0]] = req.Modifier;\n }\n\n if (req.ProjectLookups) {\n req.ProjectLookups.forEach(lookup =>{\n saveEaC.Projects[lookup] = {\n ModifierLookups: req.ModifierLookups,\n };\n })\n \n }\n\n if (req.ApplicationLookup) {\n saveEaC.Applications[req.ApplicationLookup] = {\n ModifierLookups: req.ModifierLookups,\n };\n }\n\n await this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);\n }\n\n protected async handleSaveEnvironment(\n req: SaveEnvironmentAsCodeEventRequest\n ): Promise<Status> {\n const saveEaC: EnterpriseAsCode = {\n EnterpriseLookup: this.State?.EaC?.EnterpriseLookup,\n DataTokens: {},\n Environments: {},\n };\n\n if (req.Environment) {\n saveEaC.Environments[req.EnvironmentLookup] = req.Environment;\n }\n\n if (req.EnterpriseDataTokens) {\n saveEaC.DataTokens = req.EnterpriseDataTokens;\n }\n\n return await this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);\n \n }\n\n protected async handleSaveProject(\n projectLookup: string,\n project: EaCProjectAsCode\n ): Promise<Status> {\n const projHosts: { [lookup: string]: EaCHost } = {};\n\n project?.Hosts?.forEach((host: any) => {\n projHosts[host] = this.State.EaC.Hosts[host];\n });\n\n const saveEaC: EnterpriseAsCode = {\n EnterpriseLookup: this.State.EaC.EnterpriseLookup,\n Enterprise: {\n ...this.State.EaC.Enterprise,\n PrimaryHost: project.Hosts[0],\n },\n Hosts: projHosts,\n // Providers: this.State.EaC.Providers, // TODO: Remove after all providers ADB2C's have been upgraded\n Projects: {},\n };\n\n saveEaC.Projects[projectLookup] = project;\n\n let status = await this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);\n\n this.SetEditProjectSettings(projectLookup);\n\n return status;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { EaCService } from '../../../../services/eac.service';\nimport { EaCProjectAsCode } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-project-items',\n templateUrl: './project-items.component.html',\n styleUrls: ['./project-items.component.scss'],\n})\nexport class ProjectItemsComponent implements OnInit {\n // Fields\n\n // Properties\n public get ProjectLookups(): Array<string> {\n return Object.keys(this.Projects || {});\n }\n\n /**\n * List of projects\n */\n @Input('projects')\n public Projects: { [lookup: string]: EaCProjectAsCode };\n\n public PanelOpenState: boolean;\n\n @Input('selected-project-lookup')\n public SelectedProjectLookup: string;\n\n // Constructors\n constructor(protected eacSvc: EaCService) {}\n\n // Life Cycle\n public ngOnInit(): void {\n }\n\n // API Methods\n public DeleteProject(projectLookup: string, projectName: string): void {\n if (confirm(`Are you sure you want to delete project '${projectName}'?`)) {\n this.eacSvc.DeleteProject(projectLookup);\n }\n }\n\n public GetPrimaryHost(project: EaCProjectAsCode): string {\n return project.Hosts[project.Hosts.length - 1];\n }\n\n /**\n *\n * @param project Current project object\n *\n * Event to edit project settings\n */\n public ProjectSettings(projectLookup: string): void {\n this.eacSvc.SetEditProjectSettings(projectLookup);\n }\n\n //HELPERS\n}\n","<div\n [fxLayout]=\"SelectedProjectLookup ? 'row' : 'row wrap'\"\n [fxLayout.lt-md]=\"SelectedProjectLookup ? 'row' : 'column'\"\n>\n <div class=\"no-projects\" fxFlex=\"100%\" *ngIf=\"ProjectLookups?.length <= 0\">\n <!-- <h1 class=\"spread mat-display-1\">No projects configured</h1> -->\n\n <h2 class=\"spread mat-headline\">\n Create your first project to get started\n </h2>\n </div>\n \n <!-- [fxFlex]=\"SelectedProjectLookup ? '350px' : '30%'\"\n fxFlex.lt-md=\"100%\" vv-->\n <div\n \n *ngFor=\"let projectLookup of ProjectLookups\"\n class=\"card-container\"\n >\n <mat-card\n class=\"spread project-card\"\n fxLayout=\"column\"\n fxLayoutAlign=\"space-between\"\n [class.selected-project]=\"projectLookup == SelectedProjectLookup\"\n *ngIf=\"Projects[projectLookup]; let project\"\n >\n <mat-card-header>\n <img mat-card-avatar=\"/assets/images/project-icon.png\" />\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"project.Project.Description\"\n >\n {{ project.Project.Name }}\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\">\n <span class=\"mat-body-2\">{{ GetPrimaryHost(project) }}</span>\n </div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <a\n mat-icon-button\n href=\"https://{{ GetPrimaryHost(project) }}\"\n target=\"_blank\"\n \n >\n <mat-icon matTooltip=\"Launch\">launch</mat-icon>\n </a>\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"ProjectSettings(projectLookup)\"\n *ngIf=\"SelectedProjectLookup != projectLookup\"\n >\n <mat-icon matTooltip=\"Edit Project Settings\">settings</mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"ProjectSettings(null)\"\n *ngIf=\"SelectedProjectLookup == projectLookup\"\n >\n <mat-icon matTooltip=\"Edit Project Settings\">cancel</mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"DeleteProject(projectLookup, project.Project.Name)\"\n >\n <mat-icon matTooltip=\"Delete {{ project.Project.Name }}\">\n delete_forever\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n</div>\n","import { Component, Input, OnInit} from '@angular/core';\nimport { EaCService } from './../../../../services/eac.service';\nimport {\n EaCProjectAsCode,\n} from '@semanticjs/common';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { Guid, LCUServiceSettings } from '@lcu/common';\n\n@Component({\n selector: 'lcu-projects-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent implements OnInit {\n // Fields\n\n // Properties\n @Input('creating-project')\n public CreatingProject: boolean;\n\n public get HasProjects(): boolean {\n return this.ProjectLookups && this.ProjectLookups.length > 0;\n }\n\n public ProjectFormGroup: FormGroup;\n\n public get ProjectLookups(): Array<string> {\n return Object.keys(this.Projects || {});\n }\n\n public get ProjectName(): AbstractControl {\n return this.ProjectFormGroup.get('name');\n }\n\n @Input('projects')\n public Projects: { [lookup: string]: EaCProjectAsCode };\n\n @Input('selected-project-lookup')\n public SelectedProjectLookup: string;\n\n // Constructors\n public constructor(\n protected formBuilder: FormBuilder,\n protected lcuSettings: LCUServiceSettings,\n protected eacSvc: EaCService\n ) {}\n\n // Life Cycle\n public ngOnInit(): void {\n this.ProjectFormGroup = this.formBuilder.group({\n name: ['', Validators.required],\n });\n }\n\n // API Methods\n public CreateProject(): void {\n const proj: EaCProjectAsCode = {\n Project: {\n Name: this.ProjectName?.value,\n },\n Hosts: [`${Guid.CreateRaw()}-shared.lowcodeunit.com`],\n ModifierLookups: ['html-base', 'lcu-reg'],\n RelyingParty: {\n AccessConfigurations: {\n fathym: {\n AccessRightLookups: ['Fathym.Global.Admin', 'Fathym.User'],\n ProviderLookups: ['ADB2C'],\n Usernames: ['support@fathym.com', this.lcuSettings.User.Email],\n },\n },\n AccessRightLookups: ['Fathym.Global.Admin', 'Fathym.User'],\n DefaultAccessConfigurationLookup: 'fathym',\n TrustedProviderLookups: ['ADB2C'],\n },\n };\n\n this.eacSvc.SaveProjectAsCode({\n ProjectLookup: Guid.CreateRaw(),\n Project: proj,\n });\n }\n\n public EnableCreatingProject(): void {\n this.eacSvc.SetCreatingProject(true);\n }\n\n // Helpers\n}\n","<div\n [fxLayout]=\"HasProjects ? 'row' : 'column'\"\n fxLayout.lt-md=\"column\"\n fxLayoutAlign=\"center center\"\n>\n <div fxFlex=\"100%\" [class.has-selected]=\"SelectedProjectLookup\">\n <lcu-project-items\n [projects]=\"Projects\"\n [selected-project-lookup]=\"SelectedProjectLookup\"\n ></lcu-project-items>\n </div>\n <div fxFlex=\"250px\" fxFlex.lt-md=\"100%\">\n <div class=\"divider-fill-vert margin-y-4\"></div>\n\n <div class=\"extras\" [fxLayout]=\"HasProjects ? 'column' : 'row'\">\n <mat-card class=\"spread\" id=\"create-new-project-card\">\n <mat-card-header>\n <mat-card-title>Create New Project</mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <form\n [formGroup]=\"ProjectFormGroup\"\n (ngSubmit)=\"CreateProject()\"\n *ngIf=\"CreatingProject\"\n >\n <div class=\"margin-2\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n autofocus\n placeholder=\"Project Name\"\n formControlName=\"name\"\n required\n />\n </mat-form-field>\n\n <div>\n <button\n mat-fab\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"!ProjectFormGroup.valid\"\n >\n <mat-icon>save</mat-icon>\n </button>\n </div>\n </div>\n </form>\n\n <div *ngIf=\"!CreatingProject\">\n <a\n mat-fab\n color=\"accent\"\n href=\"/dashboard/create-project\"\n class=\"margin-top-4 margin-bottom-2\"\n >\n <mat-icon>add</mat-icon>\n </a>\n\n <!-- <button\n mat-fab\n color=\"accent\"\n (click)=\"EnableCreatingProject()\"\n class=\"margin-top-4 margin-bottom-2\"\n >\n <mat-icon>add</mat-icon>\n </button> -->\n </div>\n </mat-card-content>\n </mat-card>\n\n <!-- <mat-card class=\"spread\">\n <mat-card-header>\n <mat-card-title>Documentation</mat-card-title>\n </mat-card-header>\n \n <mat-card-content>\n <a\n mat-fab\n color=\"accent\"\n href=\"/docs\"\n target=\"_blank\"\n class=\"margin-top-4 margin-bottom-2\"\n >\n <mat-icon>description</mat-icon>\n </a>\n </mat-card-content>\n </mat-card> -->\n </div>\n </div>\n</div>\n\n<!-- <div class=\"divider-fill-vert\" [fxHide.lt-md]=\"true\"></div> -->\n\n<!-- Builds -->\n<!-- <div\n id=\"builds\"\n fxFlex.gt-xs=\"25\"\n fxLayout=\"column\"\n class=\"padding-top-3\"\n [ngClass.lt-sm]=\"'margin-bottom-2'\"\n [ngClass.gt-xs]=\"'margin-right-2'\"\n >\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n class=\"title margin-bottom-4\"\n >\n <mat-icon class=\"margin-right-2\">gavel</mat-icon>\n <span>Builds</span>\n </div>\n\n <lcu-builds [projects]=\"Projects\"> </lcu-builds>\n </div> -->\n\n<!-- <div class=\"divider-fill-vert\" fxShow [fxHide.lt-md]=\"true\"></div> -->\n\n<!-- Recent Activities -->\n<!-- <div\n id=\"recent\"\n fxLayout=\"column\"\n fxFlex.gt-xs=\"25\"\n class=\"padding-top-3\"\n >\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n class=\"title margin-bottom-4\"\n >\n <mat-icon class=\"margin-right-2\">list</mat-icon>\n\n <span>Recent Activities</span>\n </div>\n </div> -->\n","import { FormActionsModel } from './form-actions.model';\n\nexport class CardFormConfigModel {\n\n /**\n * Form button actions\n */\n public FormActions?: FormActionsModel;\n\n /**\n * Card title icon\n */\n public Icon: string;\n\n /**\n * Card title\n */\n public Title: string;\n\n /**\n * Card subtitle\n */\n public Subtitle: string;\n\n constructor(opts: CardFormConfigModel) {\n\n Object.assign(this, opts); // destructure values\n }\n}\n","import { FormGroup } from '@angular/forms';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { CardFormConfigModel } from '../../models/card-form-config.model';\nimport { FormActionsModel } from '../../models/form-actions.model';\n@Component({\n selector: 'lcu-form-card',\n templateUrl: './form-card.component.html',\n styleUrls: ['./form-card.component.scss']\n})\n\nexport class FormCardComponent implements OnInit {\n\n /**\n * Values for building out the card\n */\n @Input('config')\n public Config: CardFormConfigModel;\n\n /**\n * Disable everything\n */\n @Input('disabled')\n public Disabled: boolean;\n\n @Input('is-dirty')\n public IsDirty: boolean;\n\n /**\n * Form\n */\n @Input('form')\n public Form: FormGroup;\n\n constructor() {\n\n }\n\n ngOnInit(): void {\n }\n\n}\n","<div\n [ngClass]=\"Disabled ? 'form-disabled' : 'form-enabled'\">\n <mat-card>\n <mat-card-header>\n <div mat-card-avatar>\n <mat-icon\n color=\"accent\"\n class=\"title-icon\">\n {{ Config.Icon }}\n </mat-icon>\n </div>\n <mat-card-title\n class=\"paragraph-title\">\n {{ Config.Title }}\n </mat-card-title>\n <mat-card-subtitle\n class=\"plain-text\">\n {{ Config.Subtitle }}\n </mat-card-subtitle>\n </mat-card-header>\n <mat-card-content fxFlexFill class=\"margin-top-3\">\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"content\">\n </ng-container>\n </mat-card-content>\n <mat-card-actions>\n <div\n *ngIf=\"Config.FormActions && IsDirty\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\">\n <span class=\"mat-small caption-text\">{{ Config.FormActions.Message }}</span>\n <div fxLayoutAlign=\"end center\">\n <div\n *ngFor=\"let action of Config.FormActions?.Actions\"\n fxLayout=\"row\"\n fxLayoutAlign=\"end center\"\n class=\"margin-right-1\">\n <button\n [disabled]=\"Disabled || (action.Type === 'SAVE' && Form.invalid)\"\n color=\"{{ action.Color }}\"\n mat-flat-button (click)=\"action.ClickEvent()\">\n {{ action.Label }}\n </button>\n </div>\n </div>\n </div>\n </mat-card-actions>\n </mat-card>\n</div>\n","import { FormsService } from './../../../../../services/forms.service';\nimport { CardFormConfigModel } from './../../../../../models/card-form-config.model';\nimport { Component, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { EaCService } from '../../../../../services/eac.service';\nimport { EaCHost, EaCProjectAsCode } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-domains',\n templateUrl: './domains.component.html',\n styleUrls: ['./domains.component.scss'],\n})\nexport class DomainsComponent implements OnInit {\n /**\n * Card / Form Config\n */\n public Config: CardFormConfigModel;\n\n /**\n * FormGroup\n */\n public Form: FormGroup;\n\n /**\n * Form name\n */\n protected formName: string;\n\n /**\n * When form is dirty, ties into formsService.DisableForms\n */\n public IsDirty: boolean;\n\n /**\n * Access form control for root directory\n */\n public get Domain(): AbstractControl {\n return this.Form.get('domain');\n }\n\n @Input('data')\n public Data: {\n Hosts: { [lookup: string]: EaCHost };\n PrimaryHost: string;\n Project: EaCProjectAsCode;\n ProjectLookup: string;\n };\n\n public get Host(): EaCHost {\n return this.Data?.Hosts[this.HostLookup];\n }\n\n public get HostLookup(): string {\n // let hostKeys = Object.keys(this.Data?.Hosts || {});\n\n // hostKeys = hostKeys.filter(hk => hk.indexOf('|') < 0);\n\n // return hostKeys[0];\n return this.PrimaryHost;\n }\n\n public get HostDNSInstance(): string {\n return this.Host ? this.Host?.HostDNSInstance : null;\n }\n\n public get PrimaryHost(): string {\n return this.Data.PrimaryHost;\n }\n\n public get Project(): EaCProjectAsCode {\n return this.Data.Project;\n }\n\n public get ProjectLookup(): string {\n return this.Data.ProjectLookup;\n }\n\n constructor(\n protected formsService: FormsService,\n protected eacSvc: EaCService,\n \n ) {}\n\n public ngOnInit(): void {\n this.formName = 'DomainForm';\n\n this.setupForm();\n\n this.config();\n }\n\n protected config(): void {\n this.Config = new CardFormConfigModel({\n Icon: 'head',\n Title: '',\n Subtitle:\n 'In order to use a custom domain, create a CNAME dns record pointing desired subdomain to ' + this.HostDNSInstance + '.',\n FormActions: {\n Message: 'Changes will be applied to your next deployment',\n Actions: [\n {\n Label: 'Reset',\n Color: 'warn',\n ClickEvent: () => this.resetForm(),\n // use arrow function, so 'this' refers to ProjectNameComponent\n // if we used ClickeEvent: this.clearForm, then 'this' would refer to this current Actions object\n Type: 'RESET',\n },\n {\n Label: 'Save',\n Color: 'accent',\n ClickEvent: () => this.save(),\n Type: 'SAVE',\n },\n ],\n },\n });\n }\n\n protected setupForm(): void {\n this.Form = new FormGroup({\n domain: new FormControl(this.HostLookup || '', {\n validators: [Validators.required, Validators.minLength(3)],\n updateOn: 'change',\n }),\n });\n\n this.formsService.Form = { Id: this.formName, Form: this.Form };\n this.onChange();\n }\n\n protected onChange(): void {\n this.Form.valueChanges.subscribe((val: any) => {\n if (this.formsService.ForRealThough(this.formName, this.Form)) {\n this.IsDirty = true;\n // disable all forms except the current form being edited\n this.formsService.DisableForms(this.formName);\n } else {\n this.IsDirty = false;\n // enable all forms\n this.formsService.DisableForms(false);\n }\n });\n }\n\n /**\n * Reset form controls back to previous values\n */\n protected resetForm(): void {\n // enable all forms\n // this.formsService.DisableForms(false);\n\n this.formsService.ResetFormValues(this.formName);\n }\n\n /**\n * Save changes\n */\n protected save(): void {\n this.eacSvc.SaveProjectAsCode({\n ProjectLookup: this.ProjectLookup,\n Project: {\n ...this.Project,\n // Hosts: [...this.Project.Hosts, this.Domain.value],\n Hosts: [this.Domain.value],\n },\n });\n this.formsService.UpdateValuesReference({\n Id: this.formName,\n Form: this.Form,\n });\n }\n}\n","<form\n fxLayout=\"row\"\n fxLayout.lt-md=\"column\"\n class=\"padding-top-3\"\n [formGroup]=\"Form\">\n <div>\n <lcu-form-card \n [config]=\"Config\"\n [form]=\"Form\"\n [is-dirty]=\"IsDirty\"\n >\n <div fxLayout=\"column\">\n <div fxLayout=\"row\">\n <div fxFlex fxLayout=\"row\">\n <mat-form-field fxFlex appearance=\"fill\" class=\"margin-right-3\">\n <mat-icon\n matSuffix\n [ngClass]=\"Domain.valid ? 'valid-control' : 'invalid-control'\"\n >\n {{ Domain.valid ? \"check_circle\" : \"error_outline\" }}\n </mat-icon>\n <input\n type=\"text\"\n matInput\n [placeholder]=\"Domain.invalid || Domain.disabled ? '/' : ''\"\n formControlName=\"domain\"\n />\n\n <mat-hint>\n These domains are assigned to your deployments. Optionally, \n a different Git branch or a redirection to another domain \n can be configured for each one.\n </mat-hint>\n\n <mat-error *ngIf=\"Domain.hasError('required')\">\n Domain is required\n </mat-error>\n </mat-form-field>\n\n <button mat-icon-button [cdkCopyToClipboard]=\"HostDNSInstance\" matTooltip=\"Copy subdomain to clipboard\">\n <mat-icon>content_copy</mat-icon>\n </button>\n\n </div>\n <!-- <button mat-button color=\"accent\">Add</button> -->\n </div>\n </div>\n <!-- <div class=\"card-divider\"></div> -->\n </lcu-form-card>\n </div>\n</form>\n","\nexport class DynamicTabsModel {\n\n /**\n * Component instance to add to the tab\n */\n public Component: any;\n\n /**\n * Component data\n */\n public Data?: any;\n\n /**\n * Icon to use next to tab label\n */\n public Icon?: string;\n\n /**\n * Tab label\n */\n public Label: string;\n\n constructor(opts: DynamicTabsModel) {\n Object.assign(this, opts); // destructure values\n }\n }\n","import { FormsService } from './../../../../../services/forms.service';\nimport {\n AfterContentChecked,\n ChangeDetectorRef,\n Component,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { LcuElementComponent, LCUElementContext } from '@lcu/common';\nimport { ApplicationsFlowService } from './../../../../../services/applications-flow.service';\nimport { EaCProjectAsCode } from '@semanticjs/common';\n\nexport class ApplicationsFlowProjectsElementState {}\n\nexport class ApplicationsFlowProjectsContext extends LCUElementContext<ApplicationsFlowProjectsElementState> {}\n\n@Component({\n selector: 'lcu-general',\n templateUrl: './general.component.html',\n styleUrls: ['./general.component.scss'],\n})\nexport class GeneralComponent\n extends LcuElementComponent<ApplicationsFlowProjectsContext>\n implements OnDestroy, OnInit, AfterContentChecked\n{\n @Input('data')\n public Data: { Project: EaCProjectAsCode; ProjectLookup: string };\n\n public get Project(): EaCProjectAsCode {\n return this.Data.Project;\n }\n\n public get ProjectLookup(): string {\n return this.Data.ProjectLookup;\n }\n\n constructor(\n protected injector: Injector,\n protected appsFlowSvc: ApplicationsFlowService,\n protected cd: ChangeDetectorRef,\n protected formsService: FormsService\n ) {\n super(injector);\n }\n\n // Life Cycle\n public ngOnDestroy(): void {}\n\n public ngOnInit(): void {}\n\n public ngAfterContentChecked(): void {\n this.cd.detectChanges();\n }\n}\n","<div fxLayout=\"row\" fxLayout.lt-md=\"column\">\n <div fxFlex=\"50\" fxLayout=\"column\" class=\"margin-right-3\">\n <!-- <lcu-project-details\n [project]=\"Project\"\n [project-lookup]=\"ProjectLookup\"\n class=\"margin-bottom-3\"\n ></lcu-project-details> -->\n\n <!-- <lcu-root-directory [project]=\"Project\"></lcu-root-directory> -->\n </div>\n\n <div fxFlex=\"50\">\n <!-- <lcu-settings [project]=\"Project\"></lcu-settings> -->\n <!-- <lcu-base-form-test></lcu-base-form-test> -->\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport {\n FormGroup,\n FormBuilder,\n Validators,\n AbstractControl,\n FormControl,\n} from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipInputEvent } from '@angular/material/chips';\nimport { MatSelectChange } from '@angular/material/select';\nimport { BaseResponse, BaseModeledResponse } from '@lcu/common';\nimport {\n GitHubBranch,\n GitHubOrganization,\n GitHubRepository,\n} from '../../../../../state/applications-flow.state';\nimport { ApplicationsFlowService } from '../../../../../services/applications-flow.service';\nimport { EaCSourceControl } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-source-control-form-controls',\n templateUrl: './source-control.component.html',\n styleUrls: ['./source-control.component.scss'],\n})\nexport class SourceControlFormControlsComponent\n implements AfterViewInit, OnDestroy, OnInit\n{\n // Fields\n\n // Properties\n public get BranchesFormControl(): AbstractControl {\n return this.FormGroup.get(this.SourceControlRoot + 'branches');\n }\n\n @Output('branches-changed')\n public BranchesChanged: EventEmitter<Array<string>>;\n\n @Input('branches-disabled')\n public BranchesDisabled: boolean;\n\n @ViewChild('branches')\n public BranchesInput: ElementRef<HTMLInputElement>;\n\n public BranchOptions: GitHubBranch[];\n\n @Input('build-path')\n public BuildPath: string;\n\n @Input('build-path-disabled')\n public BuildPathDisabled: boolean;\n\n public get BuildPathFormControl(): AbstractControl {\n return this.FormGroup.get(this.SourceControlRoot + 'buildPath');\n }\n\n public BuildPathOptions: string[];\n\n public CreatingRepository: boolean;\n\n @Input('form-group')\n public FormGroup: FormGroup;\n\n public Loading: boolean;\n\n public get MainBranchFormControl(): AbstractControl {\n return this.FormGroup.get(this.SourceControlRoot + 'mainBranch');\n }\n\n @Input('org-disabled')\n public OrganizationDisabled: boolean;\n\n public get OrganizationFormControl(): AbstractControl {\n return this.FormGroup.get(this.SourceControlRoot + 'organization');\n }\n\n public OrganizationOptions: GitHubOrganization[];\n\n public get RepositoryFormControl(): AbstractControl {\n return this.FormGroup.get(this.SourceControlRoot + 'repository');\n }\n\n @Input('repo-disabled')\n public RepositoryDisabled: boolean;\n\n public RepositoryOptions: GitHubRepository[];\n\n public SelectedBranches: string[];\n\n public readonly SeparatorKeysCodes = [ENTER, COMMA] as const;\n\n @Input('source-control')\n public SourceControl: EaCSourceControl;\n\n @Input('source-control-root')\n public SourceControlRoot: string;\n\n @Input('use-branches')\n public UseBranches: boolean;\n\n @Input('use-build-path')\n public UseBuildPath: boolean;\n\n // Constructors\n constructor(\n protected formBuilder: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService,\n ) {\n this.BranchesChanged = new EventEmitter();\n\n this.SelectedBranches = [];\n\n this.SourceControl = {};\n\n this.SourceControlRoot = '';\n\n this.UseBranches = true;\n }\n\n // Life Cycle\n public ngAfterViewInit(): void {}\n\n public ngOnDestroy(): void {\n this.destroyFormControls();\n }\n\n public ngOnInit(): void {\n this.setupFormControls();\n\n this.RefreshOrganizations();\n }\n\n // API Methods\n public AddBranchOption(event: MatChipInputEvent): void {\n this.addBranchOption(event.value);\n\n event.input.value = '';\n }\n\n public BranchOptionSelected(event: MatAutocompleteSelectedEvent): void {\n this.addBranchOption(event.option.value);\n }\n\n public BuildPathChanged(event: MatSelectChange): void {\n }\n\n public CreateRepository(): void {\n this.CreatingRepository = true;\n\n this.RepositoryFormControl.reset();\n }\n\n public CancelCreateRepository(): void {\n this.CreatingRepository = false;\n }\n\n public MainBranchChanged(event: MatSelectChange): void {\n this.emitBranchesChanged();\n }\n\n public OrganizationChanged(event: MatSelectChange): void {\n const org = this.OrganizationFormControl;\n\n this.RepositoryFormControl.reset();\n\n if (this.UseBranches) {\n this.BranchesFormControl.reset();\n\n this.SelectedBranches = [];\n }\n\n this.listRepositories();\n }\n\n public RefreshOrganizations(): void {\n // this.Loading = true;\n this.listOrganizations();\n\n this.OrganizationFormControl?.reset();\n\n this.RepositoryFormControl?.reset();\n\n if (this.UseBranches) {\n this.BranchesFormControl?.reset();\n }\n }\n\n public RemoveBranchOption(option: string): void {\n const index = this.SelectedBranches.indexOf(option);\n\n if (index >= 0) {\n this.SelectedBranches.splice(index, 1);\n }\n\n this.emitBranchesChanged();\n }\n\n public RepositoryChanged(event: MatSelectChange): void {\n const repo = this.RepositoryFormControl;\n\n if (this.UseBranches) {\n this.BranchesFormControl.reset();\n\n this.SelectedBranches = [];\n\n this.listBranches();\n }\n\n if (!this.UseBranches) {\n this.listBuildPaths();\n }\n }\n\n public SaveRepository(): void {\n this.Loading = true;\n\n const org = this.OrganizationFormControl.value;\n\n const repoName = this.RepositoryFormControl.value;\n\n this.appsFlowSvc\n .CreateRepository(org, repoName)\n .subscribe((response: BaseResponse) => {\n if (response.Status.Code === 0) {\n this.listRepositories(repoName);\n\n this.CreatingRepository = false;\n } else {\n // TODO: Need to surface an error to the user...\n\n this.Loading = false;\n }\n });\n }\n\n // Helpers\n protected addBranchOption(value: string): void {\n value = (value || '').trim();\n\n if (value && this.SelectedBranches.indexOf(value) < 0) {\n this.SelectedBranches.push(value);\n }\n\n this.BranchesInput.nativeElement.blur();\n\n this.emitBranchesChanged();\n }\n\n protected destroyFormControls(): void {\n this.FormGroup.removeControl(\n [this.SourceControlRoot, 'mainBranch'].join('')\n );\n\n this.FormGroup.removeControl([this.SourceControlRoot, 'branches'].join(''));\n\n this.FormGroup.removeControl([this.SourceControlRoot, 'buildPath'].join(''));\n\n this.SelectedBranches = [];\n\n this.FormGroup.removeControl(\n [this.SourceControlRoot, 'organization'].join('')\n );\n\n this.FormGroup.removeControl(\n [this.SourceControlRoot, 'repository'].join('')\n );\n }\n\n protected emitBranchesChanged(): void {\n if (\n this.SelectedBranches?.length > 0 &&\n (!this.MainBranchFormControl.value ||\n this.SelectedBranches.indexOf(this.MainBranchFormControl.value) < 0)\n ) {\n this.MainBranchFormControl.setValue(\n this.SelectedBranches.find(\n (branch) => branch === 'main' || branch === 'master'\n ) || this.SelectedBranches[0]\n );\n } else if (this.SelectedBranches?.length <= 0) {\n this.MainBranchFormControl.reset();\n }\n\n this.BranchesFormControl.setValue(this.SelectedBranches.join(','));\n\n this.BranchesChanged.emit(this.SelectedBranches || []);\n }\n\n protected listBranches(): void {\n if (this.UseBranches) {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListBranches(\n this.OrganizationFormControl.value,\n this.RepositoryFormControl.value\n )\n .subscribe((response: BaseModeledResponse<GitHubBranch[]>) => {\n this.BranchOptions = response.Model;\n\n this.Loading = false;\n\n if (this.SourceControl?.Branches?.length > 0) {\n this.SelectedBranches = this.SourceControl.Branches;\n } else if (this.BranchOptions?.length === 1) {\n this.BranchesFormControl.setValue(this.BranchOptions[0].Name);\n\n this.SelectedBranches = [this.BranchOptions[0].Name];\n }\n\n this.emitBranchesChanged();\n\n this.listBuildPaths();\n });\n }\n }\n\n protected listBuildPaths(): void {\n if (this.UseBuildPath) {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListBuildPaths(\n this.OrganizationFormControl.value,\n this.RepositoryFormControl.value\n )\n .subscribe((response: BaseModeledResponse<string[]>) => {\n this.BuildPathOptions = response.Model;\n\n this.Loading = false;\n\n if (this.BuildPathOptions?.length === 1) {\n this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);\n }\n });\n }\n }\n\n protected listOrganizations(): void {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListOrganizations()\n .subscribe((response: BaseModeledResponse<GitHubOrganization[]>) => {\n this.OrganizationOptions = response.Model;\n\n this.Loading = false;\n\n if (this.SourceControl?.Organization) {\n setTimeout(() => {\n this.OrganizationFormControl.setValue(\n this.SourceControl.Organization\n );\n\n this.listRepositories(this.SourceControl?.Repository);\n }, 0);\n }\n });\n }\n\n protected listRepositories(activeRepo: string = null): void {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListRepositories(this.OrganizationFormControl.value)\n .subscribe((response: BaseModeledResponse<GitHubRepository[]>) => {\n this.RepositoryOptions = response.Model;\n\n this.Loading = false;\n\n if (activeRepo) {\n setTimeout(() => {\n this.RepositoryFormControl.setValue(activeRepo);\n\n this.listBranches();\n\n if (!this.UseBranches) {\n this.listBuildPaths();\n }\n }, 0);\n } else if (this.RepositoryOptions?.length <= 0) {\n this.CreatingRepository = true;\n }\n });\n }\n\n protected setupFormControls(): void {\n this.destroyFormControls();\n\n this.FormGroup.addControl(\n [this.SourceControlRoot, 'organization'].join(''),\n new FormControl(\n this.SourceControl.Organization ?? '',\n Validators.required\n )\n );\n\n this.FormGroup.addControl(\n [this.SourceControlRoot, 'repository'].join(''),\n new FormControl(this.SourceControl.Repository ?? '', Validators.required)\n );\n\n if (this.UseBranches) {\n this.FormGroup.addControl(\n [this.SourceControlRoot, 'branches'].join(''),\n new FormControl(this.SourceControl?.Branches ?? '', Validators.required)\n );\n\n this.SelectedBranches = this.SourceControl?.Branches;\n\n this.FormGroup.addControl(\n [this.SourceControlRoot, 'mainBranch'].join(''),\n new FormControl(\n this.SourceControl.MainBranch ?? '',\n Validators.required\n )\n );\n }\n\n if (this.UseBuildPath) {\n this.FormGroup.addControl(\n [this.SourceControlRoot, 'buildPath'].join(''),\n new FormControl(this.BuildPath ?? '', Validators.required)\n );\n }\n }\n}\n","<div [formGroup]=\"FormGroup\">\n <div class=\"card\" *ngIf=\"OrganizationFormControl?.valid || !Loading\">\n <mat-form-field\n class=\"mat-full-width with-hint\"\n *ngIf=\"OrganizationOptions?.length > 0\"\n >\n <mat-icon class=\"org-icon\" matPrefix>corporate_fare</mat-icon>\n\n <mat-select\n [formControlName]=\"SourceControlRoot + 'organization'\"\n placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\"\n [disabled]=\"Loading || OrganizationDisabled\"\n required\n >\n <ng-container *ngFor=\"let orgOpt of OrganizationOptions\">\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-icon matSuffix (click)=\"RefreshOrganizations()\" matTooltip=\"Refresh Organization\"> refresh </mat-icon>\n\n <a\n matSuffix\n href=\"/.oauth/github?oauth-force-edit=true\"\n target=\"_blank\"\n color=\"accent\"\n >\n <mat-icon color=\"accent\" matTooltip=\"Re-authorize Organizations\"> launch </mat-icon>\n </a>\n\n <mat-hint>\n If you don't have an organization or would like to create a new one,\n <a\n href=\"https://github.com/account/organizations/new\"\n target=\"_blank\"\n >\n start here\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div\n class=\"card\"\n *ngIf=\"\n RepositoryFormControl?.valid ||\n (OrganizationFormControl?.valid && !Loading)\n \"\n >\n <mat-form-field class=\"mat-full-width\">\n <mat-icon class=\"org-icon\" matPrefix>description</mat-icon>\n\n <mat-select\n [formControlName]=\"SourceControlRoot + 'repository'\"\n [placeholder]=\"\n OrganizationFormControl?.valid\n ? 'Repository'\n : 'Repository (select organization first)'\n \"\n [disabled]=\"\n !OrganizationFormControl?.valid || Loading || RepositoryDisabled\n \"\n (selectionChange)=\"RepositoryChanged($event)\"\n *ngIf=\"!CreatingRepository\"\n required\n >\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <input\n matInput\n placeholder=\"Repository (creates new if does not exist)\"\n [formControlName]=\"SourceControlRoot + 'repository'\"\n *ngIf=\"CreatingRepository\"\n [fxHide]=\"Loading || RepositoryDisabled\"\n required\n />\n\n <mat-icon\n matSuffix\n (click)=\"CreateRepository()\"\n [fxHide]=\"Loading || RepositoryDisabled\"\n *ngIf=\"!CreatingRepository && OrganizationFormControl?.valid\"\n >\n add_circle\n </mat-icon>\n\n <button mat-button type=\"button\" \n (click)=\"SaveRepository()\" \n *ngIf=\"CreatingRepository && RepositoryFormControl?.valid\">\n\n <mat-icon\n matSuffix\n color=\"primary\"\n >\n save\n </mat-icon>\n </button>\n\n <button mat-button type=\"button\" \n (click)=\"CancelCreateRepository()\"\n *ngIf=\"CreatingRepository\">\n\n <mat-icon\n matSuffix\n \n >\n cancel\n </mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div\n class=\"card\"\n *ngIf=\"\n (BranchesFormControl?.valid ||\n (OrganizationFormControl?.valid &&\n RepositoryFormControl?.valid &&\n !Loading)) &&\n !CreatingRepository &&\n UseBranches\n \"\n >\n <mat-form-field class=\"mat-full-width\">\n <mat-icon class=\"org-icon\" matPrefix>account_tree</mat-icon>\n\n <mat-label>Selected Branches</mat-label>\n\n <mat-autocomplete\n (optionSelected)=\"BranchOptionSelected($event)\"\n #branchOptions=\"matAutocomplete\"\n >\n <ng-container *ngFor=\"let branchOpt of BranchOptions\">\n <mat-option [value]=\"branchOpt.Name\">\n {{ branchOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n\n <mat-chip-list #selectedBranches>\n <mat-chip\n [removable]=\"true\"\n (removed)=\"RemoveBranchOption(selBranch)\"\n *ngFor=\"let selBranch of SelectedBranches\"\n >\n {{ selBranch }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n\n <input\n matInput\n placeholder=\"New Branch...\"\n [formControlName]=\"SourceControlRoot + 'branches'\"\n #branches\n [matAutocomplete]=\"branchOptions\"\n [matChipInputFor]=\"selectedBranches\"\n [matChipInputSeparatorKeyCodes]=\"SeparatorKeysCodes\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"AddBranchOption($event)\"\n [disabled]=\"Loading || BranchesDisabled\"\n required\n />\n </mat-chip-list>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width with-hint\"\n [fxShow]=\"SelectedBranches?.length > 1\"\n >\n <mat-icon class=\"org-icon\" matPrefix>account_tree</mat-icon>\n\n <mat-select\n [formControlName]=\"SourceControlRoot + 'mainBranch'\"\n placeholder=\"Main Branch\"\n [disabled]=\"Loading || BranchesDisabled\"\n (selectionChange)=\"MainBranchChanged($event)\"\n required\n >\n <ng-container *ngFor=\"let branch of SelectedBranches\">\n <mat-option [value]=\"branch\">\n {{ branch }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-icon matSuffix (click)=\"RefreshOrganizations()\"> refresh </mat-icon>\n\n <a\n matSuffix\n mat-icon-button\n href=\"/.oauth/github?oauth-force-edit=true\"\n \n target=\"_blank\"\n color=\"accent\"\n >\n <mat-icon\n matTooltip=\"Re-authorize Organizations\"\n color=\"accent\"> launch </mat-icon>\n </a>\n\n <mat-hint>\n If you don't have an organization or would like to create a new one,\n <a\n href=\"https://github.com/account/organizations/new\"\n target=\"_blank\"\n >\n start here\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div\n class=\"card\"\n *ngIf=\"\n (BuildPathFormControl?.valid ||\n (OrganizationFormControl?.valid &&\n RepositoryFormControl?.valid &&\n !Loading)) &&\n !CreatingRepository &&\n UseBuildPath\n \"\n >\n <mat-form-field class=\"mat-full-width with-hint\">\n <mat-icon class=\"org-icon\" matPrefix>build</mat-icon>\n\n <mat-select\n [formControlName]=\"SourceControlRoot + 'buildPath'\"\n placeholder=\"Build Path\"\n [disabled]=\"Loading || BuildPathDisabled\"\n (selectionChange)=\"BuildPathChanged($event)\"\n required\n >\n <ng-container *ngFor=\"let buildPath of BuildPathOptions\">\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to use for your\n configuration.\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"Loading\">\n <div class=\"spread\">\n <lcu-loader style=\"margin: auto\" [loading]=\"true\"></lcu-loader>\n\n <div class=\"margin-3\">\n <h4 class=\"mat-title\" *ngIf=\"!OrganizationFormControl?.valid\">\n Loading organizations\n </h4>\n\n <h4\n class=\"mat-title\"\n *ngIf=\"\n OrganizationFormControl?.valid && !RepositoryFormControl?.valid\n \"\n >\n Loading repositories\n </h4>\n\n <h4\n class=\"mat-title\"\n *ngIf=\"RepositoryFormControl?.valid && !BranchesFormControl?.valid\"\n >\n Loading branches\n </h4>\n\n <h4\n class=\"mat-title\"\n *ngIf=\"\n (RepositoryFormControl?.valid || BranchesFormControl?.valid) &&\n !BuildPathFormControl?.valid\n \"\n >\n Loading build paths\n </h4>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable, Injector } from '@angular/core';\nimport { DAFService, BaseModeledResponse, Pageable } from '@lcu/common';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { HttpClient, HttpBackend } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NPMService extends DAFService {\n // Properties\n\n // Constructors\n constructor(protected injector: Injector, handler: HttpBackend) {\n super(injector);\n\n this.http = new HttpClient(handler);\n }\n\n // API Methods\n public Search(\n search: string\n ): Observable<BaseModeledResponse<Pageable<any>>> {\n if (search) {\n return this.http.get(`https://api.npms.io/v2/search?q=${search}`).pipe(\n this.catchError(),\n map((res: any) => {\n return <BaseModeledResponse<Pageable<any>>>{\n Status: {\n Code: 0,\n Message: 'Success',\n },\n Model: {\n TotalRecords: res.total,\n Items: res.results,\n },\n };\n })\n );\n } else {\n return Observable.create((obs: any) => {\n obs.next(<BaseModeledResponse<Pageable<any>>>{\n Status: {\n Code: 0,\n Message: 'Success',\n },\n });\n\n obs.complete();\n });\n }\n }\n\n public Versions(\n npmPkg: string\n ): Observable<BaseModeledResponse<Pageable<any>>> {\n if (npmPkg) {\n return this.http.get(`https://registry.npmjs.org/${npmPkg}`).pipe(\n this.catchError(),\n map((res: any) => {\n return <BaseModeledResponse<any>>{\n Status: {\n Code: 0,\n Message: 'Success',\n },\n Model: res,\n };\n })\n );\n } else {\n return new Observable((obs: any) => {\n obs.next(<BaseModeledResponse<Pageable<any>>>{\n Status: {\n Code: 0,\n Message: 'Success',\n },\n });\n\n obs.complete();\n });\n }\n }\n\n // Helpers\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { debounceTime, map, switchMap } from 'rxjs/operators';\nimport { NPMService } from '../../../../../../services/npm.service';\n\n@Component({\n selector: 'lcu-npm-package-select',\n templateUrl: './npm-package-select.component.html',\n styleUrls: ['./npm-package-select.component.scss'],\n})\nexport class NpmPackageSelectComponent implements OnInit {\n // Fields\n\n // Properties\n @Input('npm-package')\n public NPMPackage: string;\n\n @Input('npm-package-version')\n public NPMPackageVersion: string;\n\n @Input('form-group')\n public FormGroup: FormGroup;\n\n public NPMPackages: { Name: string; NPMLink: string; Version: string }[];\n\n public NPMPackageVersions: string[];\n\n // Constructors\n constructor(protected npm: NPMService) {}\n\n // Life Cycle\n public ngOnDestroy(): void {\n this.FormGroup.removeControl('package');\n\n this.FormGroup.removeControl('version');\n }\n\n public ngOnInit(): void {\n this.FormGroup.addControl(\n 'package',\n new FormControl(this.NPMPackage || '', [Validators.required])\n );\n\n this.FormGroup.addControl(\n 'version',\n new FormControl(this.NPMPackageVersion || 'latest', [Validators.required])\n );\n\n this.FormGroup.controls.package.valueChanges\n .pipe(\n debounceTime(500),\n switchMap((value) => this.npm.Search(value ? value.toString() : '')),\n map((val) => {\n return val.Model\n ? val.Model.Items.map((i) => {\n return {\n Name: i.package.name,\n Version: i.package.version,\n NPMLink: i.package.links.npm,\n };\n })\n : [];\n })\n )\n .subscribe((packages) => {\n this.NPMPackages = packages;\n });\n }\n\n // API Methods\n public PackageSelected(event: MatAutocompleteSelectedEvent) {\n const pkg = this.NPMPackages.find((p) => p.Name === event.option.value);\n\n if (!this.FormGroup.controls.version.value) {\n this.FormGroup.controls.version.setValue(pkg.Version);\n\n this.npm.Versions(pkg.Name).subscribe((pkgDetails: any) => {\n const tags = Object.keys(pkgDetails['dist-tags']);\n\n const versions = Object.keys(pkgDetails['versions']);\n\n this.NPMPackageVersions = [...tags, ...versions];\n });\n }\n }\n\n // Helpers\n}\n","<div [formGroup]=\"FormGroup\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"NPM Package\"\n formControlName=\"package\"\n [matAutocomplete]=\"package\"\n required\n />\n\n <mat-autocomplete\n #package=\"matAutocomplete\"\n (optionSelected)=\"PackageSelected($event)\"\n >\n <ng-container *ngFor=\"let pkg of NPMPackages\">\n <mat-option [value]=\"pkg.Name\">\n <span>{{ pkg.Name }}</span> |\n\n <small>(latest: {{ pkg.Version }})</small>\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n\n <mat-icon\n matSuffix\n mat-icon-button\n matTooltip=\"Enter the name of your NPM node package.\"\n >\n info_outline\n </mat-icon>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Package Version\"\n formControlName=\"version\"\n [matAutocomplete]=\"version\"\n required\n />\n\n <mat-autocomplete #version=\"matAutocomplete\">\n <ng-container *ngFor=\"let version of NPMPackageVersions\">\n <mat-option [value]=\"version\">\n <span>{{ version }}</span>\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n\n <a\n mat-icon-button\n matSuffix\n matTooltip=\"Enter a Tag or current/previous version of your package. Using Tags allows for easy updates to unpack the latest version of that Tag. Click here to access the package version in NPM.\"\n [href]=\"\n 'https://www.npmjs.com/package/' + FormGroup.controls.package.value\n \"\n target=\"_blank\"\n id=\"npm-package-button\"\n >\n <mat-icon>info_outline</mat-icon>\n </a>\n </mat-form-field>\n</div>\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport {EaCService, SaveApplicationAsCodeEventRequest} from '../../../../../services/eac.service';\nimport {\n EaCApplicationAsCode,\n EaCEnvironmentAsCode,\n EaCProcessor,\n EaCProjectAsCode,\n EaCSourceControl,\n} from '@semanticjs/common';\nimport { Guid } from '@lcu/common';\nimport { MatSelectChange } from '@angular/material/select';\nimport { SourceControlFormControlsComponent } from '../../forms/source-control/source-control.component';\nimport { ApplicationsFlowService } from '../../../../../services/applications-flow.service';\n\n@Component({\n selector: 'lcu-apps-flow',\n templateUrl: './apps-flow.component.html',\n styleUrls: ['./apps-flow.component.scss'],\n})\nexport class AppsFlowComponent implements OnInit {\n // Fields\n\n // Properties\n public get APIRootFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.apiRoot;\n }\n\n public ApplicationFormGroup: FormGroup;\n\n public get ApplicationIDFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.applicationId;\n }\n\n public get ApplicationLookups(): Array<string> {\n return Object.keys(this.Applications || {});\n }\n\n public get ApplicationRoutes(): Array<string> {\n return Object.keys(this.RoutedApplications || {});\n }\n\n public get ApplicationsBank(): { [lookup: string]: EaCApplicationAsCode } {\n return this.Data?.Applications || {};\n }\n\n public get Applications(): { [lookup: string]: EaCApplicationAsCode } {\n const apps: { [lookup: string]: EaCApplicationAsCode } = {};\n\n this.Project.ApplicationLookups.forEach((appLookup) => {\n apps[appLookup] = this.ApplicationsBank[appLookup];\n });\n return apps;\n }\n\n public get BuildFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.build;\n }\n\n public get ClientIDFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.clientId;\n }\n\n public get ClientSecretFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.clientSecret;\n }\n\n public CurrentApplicationRoute: string;\n\n public get CurrentRouteApplicationLookups(): Array<string> {\n return Object.keys(\n this.RoutedApplications[this.CurrentApplicationRoute] || {}\n );\n }\n\n @Input('data')\n public Data: {\n Applications: { [lookup: string]: EaCApplicationAsCode };\n Environment: EaCEnvironmentAsCode;\n PrimaryHost: string;\n Project: EaCProjectAsCode;\n ProjectLookup: string;\n };\n\n public get DefaultFileFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.defaultFile;\n }\n\n public get DefaultSourceControl(): EaCSourceControl {\n return {\n Organization: this.EditingApplication?.LowCodeUnit?.Organization,\n Repository: this.EditingApplication?.LowCodeUnit?.Repository,\n };\n }\n\n public get DescriptionFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.description;\n }\n\n public get EditingApplication(): EaCApplicationAsCode {\n let app = this.Applications\n ? this.Applications[this.EditingApplicationLookup]\n : null;\n\n if (app == null && this.EditingApplicationLookup) {\n app = {};\n }\n\n return app;\n }\n\n public EditingApplicationLookup: string;\n\n public get HasBuildFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.hasBuild;\n }\n\n public get InboundPathFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.inboundPath;\n }\n\n public get IsPrivateFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.isPrivate;\n }\n\n public get IsTriggerSignInFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.isTriggerSignIn;\n }\n\n public LCUType: string;\n\n public get MethodsFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.methods;\n }\n\n public get NameFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.name;\n }\n\n public get PackageFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.package;\n }\n\n public IsPermanent: boolean;\n\n public IsPreserve: boolean;\n\n public redirectTooltip: string;\n\n public get PermanentFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.permanent;\n }\n\n public get PreserveMethodFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.preserveMethod;\n }\n\n public get PrimaryHost(): string {\n return this.Data.PrimaryHost;\n }\n\n public ProcessorType: string;\n\n public get Project(): EaCProjectAsCode {\n return this.Data.Project;\n }\n\n public get ProjectLookup(): string {\n return this.Data.ProjectLookup;\n }\n\n public get RedirectFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.redirect;\n }\n\n public get RoutedApplications(): {\n [route: string]: { [lookup: string]: EaCApplicationAsCode };\n } {\n const appLookups = Object.keys(this.Applications);\n\n const apps = appLookups.map((appLookup) => this.Applications[appLookup]);\n\n let appRoutes =\n apps.map((app) => {\n return app?.LookupConfig?.PathRegex.replace('.*', '');\n }) || [];\n\n appRoutes = appRoutes.filter((ar) => ar != null);\n\n let routeBases: string[] = [];\n\n appRoutes.forEach((appRoute) => {\n const appRouteParts = appRoute.split('/');\n\n const appRouteBase = `/${appRouteParts[1]}`;\n\n if (routeBases.indexOf(appRouteBase) < 0) {\n routeBases.push(appRouteBase);\n }\n });\n\n let workingAppLookups = [...(appLookups || [])];\n\n routeBases = routeBases.sort((a, b) => b.localeCompare(a));\n\n const routeSet =\n routeBases.reduce((prevRouteMap, currentRouteBase) => {\n const routeMap = {\n ...prevRouteMap,\n };\n\n const filteredAppLookups = workingAppLookups.filter((wal) => {\n const wa = this.Applications[wal];\n\n return wa?.LookupConfig?.PathRegex.startsWith(currentRouteBase);\n });\n\n routeMap[currentRouteBase] =\n filteredAppLookups.reduce((prevAppMap, appLookup) => {\n const appMap = {\n ...prevAppMap,\n };\n\n appMap[appLookup] = this.Applications[appLookup];\n\n return appMap;\n }, {}) || {};\n\n workingAppLookups = workingAppLookups.filter((wa) => {\n return filteredAppLookups.indexOf(wa) < 0;\n });\n\n return routeMap;\n }, {}) || {};\n\n let routeSetKeys = Object.keys(routeSet);\n\n routeSetKeys = routeSetKeys.sort((a, b) => a.localeCompare(b));\n\n const routeSetResult = {};\n\n routeSetKeys.forEach((rsk) => (routeSetResult[rsk] = routeSet[rsk]));\n\n return routeSetResult;\n }\n\n public get RouteFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.route;\n }\n\n public get ScopesFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.scopes;\n }\n\n public get SecurityFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.security;\n }\n\n @ViewChild(SourceControlFormControlsComponent)\n public SourceControlFormControls: SourceControlFormControlsComponent;\n\n public get SourceControlLookupFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.sourceControlLookup;\n }\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.SourceControls || {});\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Data.Environment.Sources || {};\n }\n\n public get SPARootFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.spaRoot;\n }\n\n public get TokenLookupFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.tokenLookup;\n }\n\n public get VersionFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.version;\n }\n\n public get ZipFileFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.zipFile;\n }\n\n // Constructors\n constructor(\n protected formBldr: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService\n ) {\n this.EditingApplicationLookup = null;\n this.redirectTooltip = '';\n\n // this.IsPermanent = false;\n\n // this.IsPreserve = false;\n }\n\n // Life Cycle\n public ngOnInit(): void {\n if (this.ApplicationLookups?.length <= 0) {\n this.CreateNewApplication();\n }\n }\n\n // API Methods\n public CreateNewApplication(): void {\n this.SetEditingApplication(Guid.CreateRaw());\n }\n\n public DeleteApplication(appLookup: string, appName: string): void {\n this.eacSvc.DeleteApplication(appLookup, appName);\n }\n\n public LCUTypeChanged(event: MatSelectChange): void {\n this.LCUType = event.value;\n\n this.setupLcuTypeSubForm();\n }\n\n public ProcessorTypeChanged(event: MatSelectChange): void {\n this.ProcessorType = event.value;\n\n this.setupProcessorTypeSubForm();\n }\n\n public DetermineTooltipText() {\n let permanentValue = this.PermanentFormControl.value;\n let preserveValue = this.PreserveMethodFormControl.value;\n\n if (permanentValue === true && preserveValue === false) {\n this.redirectTooltip = '301 – Permanent and Not Preserve';\n } else if (permanentValue === false && preserveValue === false) {\n this.redirectTooltip = '302 – Not Permanent and Not Preserve';\n } else if (permanentValue === false && preserveValue === true) {\n this.redirectTooltip = '307 – Not Permanent and Preserve';\n } else if (permanentValue === true && preserveValue === true) {\n this.redirectTooltip = '308 – Permanent and Preserve';\n }\n }\n\n public GetProcessorType(appLookup: any): string {\n let processorType = '';\n processorType = this.Applications[appLookup].Processor.Type\n ? this.Applications[appLookup].Processor.Type\n : '';\n // console.log(\"Ptype = \", processorType);\n\n return processorType;\n }\n\n public EditApplicationRouteClicked(appRoute: any) {\n this.CurrentApplicationRoute = appRoute;\n }\n\n public SaveApplication(): void {\n const app: EaCApplicationAsCode = {\n Application: {\n Name: this.NameFormControl.value,\n Description: this.DescriptionFormControl.value,\n PriorityShift: this.EditingApplication?.Application?.PriorityShift || 0,\n },\n AccessRightLookups: [],\n DataTokens: {},\n LicenseConfigurationLookups: [],\n LookupConfig: {\n IsPrivate: this.IsPrivateFormControl.value,\n IsTriggerSignIn: this.IsPrivateFormControl.value\n ? this.IsTriggerSignInFormControl.value\n : false,\n PathRegex: `${this.RouteFormControl.value}.*`,\n QueryRegex: this.EditingApplication?.LookupConfig?.QueryRegex || '',\n HeaderRegex: this.EditingApplication?.LookupConfig?.HeaderRegex || '',\n AllowedMethods: this.MethodsFormControl?.value\n ?.split(' ')\n .filter((v: string) => !!v),\n },\n Processor: {\n Type: this.ProcessorType,\n },\n };\n\n switch (app.Processor.Type) {\n case 'DFS':\n app.Processor.BaseHref = `${this.RouteFormControl.value}/`.replace(\n '//',\n '/'\n );\n\n app.Processor.DefaultFile =\n this.DefaultFileFormControl.value || 'index.html';\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHub':\n app.LowCodeUnit.Organization =\n this.SourceControlFormControls.OrganizationFormControl.value;\n\n app.LowCodeUnit.Repository =\n this.SourceControlFormControls.RepositoryFormControl.value;\n\n app.LowCodeUnit.Build = this.BuildFormControl.value;\n\n app.LowCodeUnit.Path =\n this.SourceControlFormControls.BuildPathFormControl.value;\n break;\n\n case 'NPM':\n app.LowCodeUnit.Package = this.PackageFormControl.value;\n\n app.LowCodeUnit.Version = this.VersionFormControl.value;\n break;\n\n case 'Zip':\n app.LowCodeUnit.ZipFile = this.ZipFileFormControl.value;\n break;\n }\n break;\n\n case 'OAuth':\n app.Processor.Scopes = this.ScopesFormControl.value.split(' ');\n\n app.Processor.TokenLookup = this.TokenLookupFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHubOAuth':\n app.LowCodeUnit.ClientID = this.ClientIDFormControl.value;\n\n app.LowCodeUnit.ClientSecret = this.ClientSecretFormControl.value;\n break;\n }\n break;\n\n case 'Proxy':\n app.Processor.InboundPath = this.InboundPathFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'API':\n app.LowCodeUnit.APIRoot = this.APIRootFormControl.value;\n\n app.LowCodeUnit.Security = this.SecurityFormControl.value;\n\n break;\n\n case 'SPA':\n app.LowCodeUnit.SPARoot = this.SPARootFormControl.value;\n break;\n }\n break;\n\n case 'Redirect':\n app.Processor.Permanent = !!this.PermanentFormControl.value;\n\n app.Processor.PreserveMethod = !!this.PreserveMethodFormControl.value;\n\n app.Processor.Redirect = this.RedirectFormControl.value;\n break;\n }\n\n if (!app.LookupConfig.PathRegex.startsWith('/')) {\n app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;\n }\n\n const saveAppReq: SaveApplicationAsCodeEventRequest = {\n ProjectLookup: this.ProjectLookup,\n Application: app,\n ApplicationLookup: this.EditingApplicationLookup || Guid.CreateRaw(),\n };\n\n if (this.HasBuildFormControl.value && this.ProcessorType !== 'redirect') {\n if (app) {\n app.LowCodeUnit.SourceControlLookup = this.SourceControlLookupFormControl.value;\n }\n } else if (app) {\n app.LowCodeUnit.SourceControlLookup = null;\n }\n\n this.eacSvc.SaveApplicationAsCode(saveAppReq);\n }\n\n public SetEditingApplication(appLookup: string): void {\n this.EditingApplicationLookup = appLookup;\n\n this.setupApplicationForm();\n }\n\n public SourceControlLookupChanged(event: MatSelectChange): void {\n // TODO: Anything to do here on change?\n }\n\n public StartsWith(app: EaCApplicationAsCode, appRouteBase: string): boolean {\n if (appRouteBase === '/') {\n return app?.LookupConfig?.PathRegex === '/.*';\n } else {\n return app?.LookupConfig?.PathRegex.startsWith(appRouteBase);\n }\n }\n\n public Unpack(appLookup: string, app: EaCApplicationAsCode): void {\n this.eacSvc.UnpackLowCodeUnit({\n ApplicationLookup: appLookup,\n ApplicationName: app.Application?.Name,\n Version: app.LowCodeUnit?.Version || app.LowCodeUnit?.Build,\n });\n }\n\n // Helpers\n protected cleanupLcuTypeSubForm(): void {\n this.ApplicationFormGroup.removeControl('methods');\n this.ApplicationFormGroup.removeControl('apiRoot');\n this.ApplicationFormGroup.removeControl('security');\n\n this.ApplicationFormGroup.removeControl('spaRoot');\n\n this.ApplicationFormGroup.removeControl('applicationId');\n\n this.ApplicationFormGroup.removeControl('build');\n\n this.ApplicationFormGroup.removeControl('clientId');\n this.ApplicationFormGroup.removeControl('clientSecret');\n\n this.ApplicationFormGroup.removeControl('zipFile');\n }\n\n protected cleanupProcessorTypeSubForm(): void {\n this.ApplicationFormGroup.removeControl('defaultFile');\n this.ApplicationFormGroup.removeControl('dfsLcuType');\n\n this.ApplicationFormGroup.removeControl('oauthLcuType');\n this.ApplicationFormGroup.removeControl('scopes');\n this.ApplicationFormGroup.removeControl('tokenLookup');\n\n this.ApplicationFormGroup.removeControl('inboundPath');\n this.ApplicationFormGroup.removeControl('proxyLcuType');\n\n this.ApplicationFormGroup.removeControl('redirect');\n this.ApplicationFormGroup.removeControl('permanent');\n this.ApplicationFormGroup.removeControl('preserveMethod');\n\n this.cleanupLcuTypeSubForm();\n }\n\n protected setupApplicationForm(): void {\n this.ProcessorType = this.EditingApplication?.Processor?.Type || '';\n console.log('ProcessorType = ', this.ProcessorType);\n\n if (this.EditingApplication != null) {\n this.ApplicationFormGroup = this.formBldr.group({\n name: [this.EditingApplication.Application?.Name, Validators.required],\n description: [\n this.EditingApplication.Application?.Description,\n Validators.required,\n ],\n route: [\n this.EditingApplication.LookupConfig?.PathRegex.replace('.*', '') ||\n '/',\n Validators.required,\n ],\n // priority: [\n // this.EditingApplication.Application?.Priority || 10000,\n // Validators.required,\n // ],\n procType: [this.ProcessorType, [Validators.required]],\n });\n\n this.setupBuildForm();\n\n this.setupSecurityForm();\n\n this.setupProcessorTypeSubForm();\n }\n }\n\n protected setupBuildForm(): void {\n this.ApplicationFormGroup.addControl(\n 'hasBuild',\n this.formBldr.control(\n !!this.EditingApplication.LowCodeUnit?.SourceControlLookup || false,\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'sourceControlLookup',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.SourceControlLookup || '',\n []\n )\n );\n }\n\n protected setupDfsForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ApplicationFormGroup.addControl(\n 'defaultFile',\n this.formBldr.control(\n this.EditingApplication.Processor?.DefaultFile || 'index.html',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupLCUAPIForm(): void {\n this.ApplicationFormGroup.addControl(\n 'methods',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.AllowedMethods?.join(' ') || '',\n []\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'apiRoot',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.APIRoot || '',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'security',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.Security || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUApplicationPointerForm(): void {\n this.ApplicationFormGroup.addControl(\n 'applicationId',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ApplicationID || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUGitHubForm(): void {\n this.ApplicationFormGroup.addControl(\n 'build',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.Build || 'latest',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUGitHubOAuthForm(): void {\n this.ApplicationFormGroup.addControl(\n 'clientId',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ClientID || '',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'clientSecret',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ClientSecret || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUNPMForm(): void {\n // this.ApplicationFormGroup.addControl(\n // 'package',\n // this.formBldr.control(\n // this.EditingApplication.LowCodeUnit?.Package || '',\n // [Validators.required]\n // )\n // );\n // this.ApplicationFormGroup.addControl(\n // 'version',\n // this.formBldr.control(\n // this.EditingApplication.LowCodeUnit?.Version || '',\n // [Validators.required]\n // )\n // );\n }\n\n protected setupLCUSPAForm(): void {\n this.ApplicationFormGroup.addControl(\n 'spaRoot',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.SPARoot || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUZipForm(): void {\n this.ApplicationFormGroup.addControl(\n 'zipFile',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ZipFile || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLcuTypeSubForm(): void {\n this.cleanupLcuTypeSubForm();\n\n // this.ApplicationFormGroup.removeControl('package');\n // this.ApplicationFormGroup.removeControl('version');\n\n if (this.LCUType) {\n switch (this.LCUType) {\n case 'API':\n this.setupLCUAPIForm();\n break;\n\n case 'ApplicationPointer':\n this.setupLCUApplicationPointerForm();\n break;\n\n case 'GitHub':\n this.setupLCUGitHubForm();\n break;\n\n case 'GitHubOAuth':\n this.setupLCUGitHubOAuthForm();\n break;\n\n case 'NPM':\n this.setupLCUNPMForm();\n break;\n\n case 'SPA':\n this.setupLCUSPAForm();\n break;\n\n case 'Zip':\n this.setupLCUZipForm();\n break;\n }\n }\n }\n\n protected setupOAuthForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ApplicationFormGroup.addControl(\n 'scopes',\n this.formBldr.control(\n this.EditingApplication.Processor?.Scopes?.Join(' ') || '',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'tokenLookup',\n this.formBldr.control(\n this.EditingApplication.Processor?.TokenLookup || '',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupProxyForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ApplicationFormGroup.addControl(\n 'inboundPath',\n this.formBldr.control(\n this.EditingApplication.Processor?.InboundPath || '',\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupProcessorTypeSubForm(): void {\n this.cleanupProcessorTypeSubForm();\n\n if (this.ProcessorType) {\n switch (this.ProcessorType) {\n case 'DFS':\n this.setupDfsForm();\n break;\n\n case 'OAuth':\n this.setupOAuthForm();\n break;\n\n case 'Proxy':\n this.setupProxyForm();\n break;\n\n case 'Redirect':\n this.setupRedirectForm();\n break;\n }\n }\n\n this.setupLcuTypeSubForm();\n }\n\n protected setupRedirectForm(): void {\n this.ApplicationFormGroup.addControl(\n 'redirect',\n this.formBldr.control(this.EditingApplication.Processor?.Redirect || '', [\n Validators.required,\n ])\n );\n\n this.ApplicationFormGroup.addControl(\n 'permanent',\n this.formBldr.control(\n this.EditingApplication.Processor?.Permanent || false,\n []\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'preserveMethod',\n this.formBldr.control(\n this.EditingApplication.Processor?.PreserveMethod || false,\n []\n )\n );\n this.DetermineTooltipText();\n }\n\n protected setupSecurityForm(): void {\n this.ApplicationFormGroup.addControl(\n 'isPrivate',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.IsPrivate || false,\n [Validators.required]\n )\n );\n\n this.ApplicationFormGroup.addControl(\n 'isTriggerSignIn',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.IsTriggerSignIn || false,\n [Validators.required]\n )\n );\n }\n}\n","<div>\n <div *ngIf=\"EditingApplication?.Application\">\n <h2>\n <button\n mat-icon-button\n matTooltip=\"Back to Routes\"\n (click)=\"SetEditingApplication(null)\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n\n {{ CurrentApplicationRoute }} / {{ EditingApplication.Application?.Name }}\n </h2>\n </div>\n <form\n [formGroup]=\"ApplicationFormGroup\"\n (ngSubmit)=\"SaveApplication()\"\n *ngIf=\"EditingApplication\"\n >\n\n <div\n fxLayout=\"row wrap\"\n fxLayoutAlign=\"center start\"\n fxLayout.lt-md=\"column\"\n >\n <div class=\"form-card\" fxFlex=\"70%\" fxFlex.lt-md=\"100%\">\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title>\n <ng-container *ngIf=\"EditingApplication?.Application\">\n Edit Application:\n {{ EditingApplication.Application?.Name }}\n </ng-container>\n\n <ng-container *ngIf=\"!EditingApplication?.Application\">\n Create an Application\n </ng-container>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Name\"\n formControlName=\"name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n placeholder=\"Description\"\n formControlName=\"description\"\n rows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Route\"\n formControlName=\"route\"\n required\n />\n </mat-form-field>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div class=\"form-card\" fxFlex=\"35%\">\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ApplicationFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"\n SourceControlFormControls?.RepositoryFormControl?.valid\n \"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <lcu-npm-package-select\n [npm-package]=\"EditingApplication?.LowCodeUnit?.Package\"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ApplicationFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{ EditingApplication?.LowCodeUnit?.CurrentVersion }}\n </mat-hint>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\">Single Page Application</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle \n class=\"spread\" \n formControlName=\"permanent\">\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip={{redirectTooltip}}\n >\n info_outline\n </mat-icon>\n\n <!-- <mat-icon\n *ngIf=\"!IsPermanent && !IsPreserve\"\n\n class=\"spread\"\n matSuffix\n matTooltip=\"302 – Not Permanent and Not Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n <!-- <mat-icon\n *ngIf=\"!IsPermanent && IsPreserve\"\n class=\"spread\"\n matSuffix\n matTooltip=\"307 – Not Permanent and Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n <!-- <mat-icon\n *ngIf=\"IsPermanent && IsPreserve\"\n class=\"spread\"\n matSuffix\n matTooltip=\"308 – Permanent and Preserve\"\n >\n info_outline\n </mat-icon> -->\n\n \n\n <!-- <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Values used to control the redirect type. Permanent and Not Preserve = 301; Not Permanent and Not Preserve = 302; Permanent and Preserve = 308; Not Permanent and Not Preserve = 307;\"\n >\n info_outline\n </mat-icon> -->\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div class=\"form-card\" fxFlex=\"35%\">\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title> Security Settings </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"isPrivate\"\n matTooltip=\"Is Secure Application?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Secured Application is one that requires the user to be authenticated to use the application. The application is hosted behind an identity wall.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <div>\n <div *ngIf=\"IsPrivateFormControl.value\">\n <div>\n <mat-slide-toggle formControlName=\"isTriggerSignIn\">\n Is Trigger Sign In Application?\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Trigger Sign In Application will direct the user to sign in if they are not already.\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <mat-card class=\"spread flow-card\" *ngIf=\"ProcessorType != 'Redirect'\">\n <mat-card-header>\n <mat-card-title *ngIf=\"!HasBuildFormControl.value\">\n Build & Source\n </mat-card-title>\n\n <mat-card-title *ngIf=\"HasBuildFormControl.value\">\n Source Control\n </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"hasBuild\"\n matTooltip=\"Has Build?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"Configure source control, DevOps CI/CD, and artifacts.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"\n HasBuildFormControl.value && SourceControlLookups?.length > 0\n \"\n >\n <mat-select\n formControlName=\"sourceControlLookup\"\n placeholder=\"Source Control\"\n (selectionChange)=\"SourceControlLookupChanged($event)\"\n [disabled]=\"\n SourceControlFormControls?.Loading || HostingDetails?.Loading\n \"\n >\n <ng-container\n *ngFor=\"let srcCtrlLookup of SourceControlLookups\"\n >\n <mat-option\n [value]=\"srcCtrlLookup\"\n *ngIf=\"SourceControls[srcCtrlLookup]; let srcCtrl\"\n >\n {{ srcCtrl.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <div *ngIf=\"HasBuildFormControl?.value\">\n <h3>\n @{{\n SourceControlFormControls?.OrganizationFormControl?.value ||\n SourceControl?.Organization\n }}/{{\n SourceControlFormControls?.RepositoryFormControl?.value ||\n SourceControl?.Repository\n }}\n </h3>\n\n <p>Organization and Repository pulled from build settings</p>\n\n <mat-hint>\n CurrentBuild:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </div>\n </mat-form-field>\n\n <div *ngIf=\"SourceControlLookups?.length < 0\">\n <h3>\n Create source control locations under the DevOps tab above.\n </h3>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n\n <div class=\"spread\">\n <div fxFlex></div>\n\n <button mat-button type=\"button\" (click)=\"SetEditingApplication(null)\">\n <mat-icon>cancel</mat-icon> Cancel\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"!ApplicationFormGroup.valid || !ApplicationFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon> Save Application\n </button>\n\n <div fxFlex></div>\n </div>\n </form>\n\n <div class=\"spread\" *ngIf=\"!EditingApplication\">\n <span class=\"apps-actions\">\n <button mat-raised-button color=\"accent\" (click)=\"CreateNewApplication()\">\n <mat-icon color=\"primary\">add</mat-icon> Create New\n </button>\n </span>\n\n <div class=\"spread\" *ngIf=\"!CurrentApplicationRoute\">\n <div *ngIf=\"ApplicationRoutes?.length <= 0\">\n <h2>No applications created, create your first application.</h2>\n </div>\n\n <div *ngIf=\"ApplicationRoutes?.length > 0\">\n <h2>Project Routes</h2>\n\n <div\n fxLayout=\"row wrap\"\n fxLayout.lt-md=\"column\"\n *ngIf=\"ApplicationRoutes\"\n >\n <div\n fxFlex=\"20%\"\n fxFlex.lt-md=\"100%\"\n *ngFor=\"let appRoute of ApplicationRoutes\"\n >\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <!-- <img mat-card-avatar=\"/assets/images/project-icon.png\" /> -->\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"appRoute\"\n >\n {{ appRoute }}\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\"></div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <a\n mat-icon-button\n href=\"https://{{ PrimaryHost }}{{ appRoute }}\"\n target=\"_blank\"\n >\n <mat-icon matTooltip=\"Launch\">launch</mat-icon>\n </a>\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"EditApplicationRouteClicked(appRoute)\"\n >\n <mat-icon matTooltip=\"Edit Application Route\">\n settings\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"CurrentApplicationRoute\">\n <h2>\n <button\n mat-icon-button\n matTooltip=\"Back to Routes\"\n (click)=\"CurrentApplicationRoute = null\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n\n {{ CurrentApplicationRoute }} Routes\n </h2>\n\n <div fxLayout=\"row wrap\" fxLayout.lt-md=\"column\">\n <ng-container *ngFor=\"let appLookup of CurrentRouteApplicationLookups\">\n <div\n fxFlex=\"30%\"\n fxFlex.lt-md=\"100%\"\n *ngIf=\"\n RoutedApplications[CurrentApplicationRoute][appLookup];\n let app\n \"\n >\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <!-- <img mat-card-avatar=\"/assets/images/project-icon.png\" /> -->\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"app.Application.Description\"\n >\n {{ app.Application.Name }}\n </mat-card-title>\n\n <mat-card-subtitle\n class=\"mat-subheading-1\"\n [matTooltip]=\"\n app.LowCodeUnit?.CurrentVersion ||\n app.LowCodeUnit?.CurrentBuild\n \"\n >\n @{{\n app.LowCodeUnit?.CurrentVersion ||\n app.LowCodeUnit?.CurrentBuild ||\n app.Processor?.Redirect ||\n \"No version deployed\"\n }}\n </mat-card-subtitle>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\"></div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <a\n mat-icon-button\n href=\"https://{{ PrimaryHost }}{{\n app.LookupConfig.PathRegex.replace('.*', '')\n }}\"\n target=\"_blank\"\n >\n <mat-icon matTooltip=\"Launch\">launch</mat-icon>\n </a>\n\n <a\n *ngIf=\"GetProcessorType(appLookup) === 'DFS'\"\n mat-icon-button\n (click)=\"Unpack(appLookup, app)\"\n target=\"_blank\"\n matTooltip=\"Unpack {{\n app.LowCodeUnit?.Version || app.LowCodeUnit?.Build\n }}\"\n >\n <mat-icon>cloud_upload</mat-icon>\n </a>\n\n <button\n mat-icon-button\n (click)=\"SetEditingApplication(appLookup)\"\n >\n <mat-icon matTooltip=\"Edit Application\"> edit </mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"DeleteApplication(appLookup, app.Application.Name)\"\n >\n <mat-icon matTooltip=\"Delete {{ app.Application.Name }}\">\n delete_forever\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled \n *ngIf=\"GetProcessorType(appLookup) === 'DFS'\">\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { EaCDevOpsAction, EaCArtifact } from '@semanticjs/common';\nimport {\n ProjectHostingDetails,\n ProjectHostingOption,\n} from '../../../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-hosting-details-form-group',\n templateUrl: './hosting-details-form-group.component.html',\n styleUrls: ['./hosting-details-form-group.component.scss'],\n})\nexport class HostingDetailsFormGroupComponent implements OnChanges, OnInit {\n // Fields\n\n // Properties\n @Input('artifact')\n public Artifact: EaCArtifact;\n\n @Input('build-pipeline')\n public BuildPipeline: string;\n\n public get BuildPipelineFormControl(): AbstractControl {\n return this.FormGroup.get('buildPipeline');\n }\n\n @Input('details')\n public Details: ProjectHostingDetails;\n\n @Input('devops-action')\n public DevOpsAction: EaCDevOpsAction;\n\n public get DevOpsActionNameFormControl(): AbstractControl {\n return this.FormGroup.get('devOpsActionName');\n }\n\n @Input('disabled')\n public Disabled: boolean;\n\n public get FormGroup(): FormGroup {\n return this.ParentFormGroup.get('hostingDetails') as FormGroup;\n }\n\n public get NPMTokenFormControl(): AbstractControl {\n return this.FormGroup.get('npmToken');\n }\n\n @Input('organization')\n public Organization: string;\n\n @Input('formGroup')\n public ParentFormGroup: FormGroup;\n\n public get SelectedHostingOption(): ProjectHostingOption {\n return this.Details?.HostingOptions?.find(\n (ho) => ho.Lookup === this.BuildPipeline\n );\n }\n\n public get SelectedHostingOptionInputControlValues(): {\n [lookup: string]: any;\n } {\n return this.SelectedHostingOption?.Inputs?.reduce((prev, cur) => {\n const res = {\n ...prev,\n };\n\n res[cur.Lookup] = this.FormGroup.controls[cur.Lookup].value;\n\n return res;\n }, {});\n }\n\n // Constructors\n constructor(protected formBuilder: FormBuilder) {}\n\n // Life Cycle\n public ngOnChanges(): void {}\n\n public ngOnInit(): void {\n\n\n this.BuildPipeline =\n this.BuildPipeline || this.Details?.HostingOptions\n ? this.Details?.HostingOptions[0]?.Lookup\n : '';\n\n if (this.FormGroup != null) {\n this.ParentFormGroup.removeControl('hostingDetails');\n }\n\n this.ParentFormGroup.addControl(\n 'hostingDetails',\n this.formBuilder.group({\n buildPipeline: [this.BuildPipeline, [Validators.required]],\n })\n );\n\n this.setupControlsForForm();\n }\n\n // API Methods\n public BuildPipelineChanged(): void {\n this.BuildPipeline = this.BuildPipelineFormControl.value;\n\n this.setupControlsForForm();\n }\n\n // Helpers\n protected setupControlsForForm(): void {\n for (const ctrlName in this.FormGroup.controls) {\n if (ctrlName !== 'buildPipeline' && ctrlName !== 'devOpsAction') {\n this.FormGroup.removeControl(ctrlName);\n }\n }\n\n this.FormGroup.addControl(\n 'devOpsActionName',\n this.formBuilder.control(\n this.DevOpsAction?.Name || this.SelectedHostingOption?.Name || '',\n [Validators.required]\n )\n );\n\n this.SelectedHostingOption?.Inputs?.forEach((input) => {\n const validators = input.Required ? [Validators.required] : [];\n\n this.FormGroup.addControl(\n input.Lookup,\n this.formBuilder.control(\n this.Artifact[input.Lookup] || input.DefaultValue || '',\n validators\n )\n );\n\n // if (this.Disabled) {\n // this.FormGroup.controls[input.Lookup].disable();\n // }\n });\n\n if (this.BuildPipelineFormControl.value === 'npm-release') {\n if (!this.FormGroup.controls.npmToken) {\n this.FormGroup.addControl(\n 'npmToken',\n this.formBuilder.control(\n '',\n this.Disabled ? [] : [Validators.required]\n )\n );\n\n if (this.Disabled) {\n this.FormGroup.controls.npmToken.disable();\n }\n }\n } else if (\n this.BuildPipelineFormControl.value === 'github-artifacts-release'\n ) {\n if (this.FormGroup.controls.npmToken) {\n this.FormGroup.removeControl('npmToken');\n }\n }\n }\n}\n","<div [formGroup]=\"FormGroup\" *ngIf=\"!Details?.Loading\">\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n formControlName=\"buildPipeline\"\n placeholder=\"Build Pipeline\"\n [disabled]=\"Disabled\"\n (selectionChange)=\"BuildPipelineChanged()\"\n required\n >\n <ng-container\n *ngFor=\"let hostOption of Details?.HostingOptions; let i = index\"\n >\n <mat-option [value]=\"hostOption?.Lookup\">\n {{ hostOption.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n <ng-container *ngFor=\"let hostOption of Details?.HostingOptions\">\n <span *ngIf=\"BuildPipeline == hostOption?.Lookup\">\n {{ hostOption.Description }}\n </span>\n </ng-container>\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"devOpsActionName\"\n placeholder=\"Name of DevOps Action\"\n required=\"true\"\n />\n </mat-form-field>\n\n <ng-container *ngFor=\"let input of SelectedHostingOption?.Inputs\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n [formControlName]=\"input.Lookup\"\n [placeholder]=\"input.Placeholder\"\n [required]=\"input.Required\"\n />\n\n <mat-hint>{{ input.Hint }}</mat-hint>\n </mat-form-field>\n </ng-container>\n\n <div *ngIf=\"BuildPipeline == 'npm-release'\">\n <mat-form-field class=\"mat-full-width with-hint padding-bottom-4\">\n <mat-icon matPrefix>security</mat-icon>\n\n <input\n id=\"npm-token\"\n matInput\n type=\"text\"\n formControlName=\"npmToken\"\n placeholder=\"NPM token\"\n [required]=\"!Disabled\"\n style=\"-webkit-text-security: disc;\"\n />\n <mat-hint>\n Securely publish to NPM, provide an NPM Personal Access Token (PAT) with publish access to the organization used for your NPM packages. \n Learn how to create and view access tokens \n <a\n href=\"https://docs.npmjs.com/creating-and-viewing-access-tokens\"\n target=\"_blank\"\n >\n here.\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n</div>\n\n<div *ngIf=\"Details?.Loading\">\n <div class=\"spread\">\n <lcu-loader style=\"margin: auto\" [loading]=\"true\"></lcu-loader>\n\n <div class=\"margin-3\">\n <h4 class=\"mat-title\">Loading hosting details</h4>\n </div>\n </div>\n</div>\n","\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n} from '@angular/forms';\nimport {\n EaCService,\n SaveEnvironmentAsCodeEventRequest,\n} from '../../../../../services/eac.service';\nimport {\n EaCArtifact,\n EaCDevOpsAction,\n EaCEnvironmentAsCode,\n EaCSourceControl,\n} from '@semanticjs/common';\nimport { BaseModeledResponse, Guid } from '@lcu/common';\nimport { MatSelectChange } from '@angular/material/select';\nimport { SourceControlFormControlsComponent } from '../../forms/source-control/source-control.component';\nimport { ProjectHostingDetails } from '../../../../../state/applications-flow.state';\nimport { ApplicationsFlowService } from '../../../../../services/applications-flow.service';\nimport { HostingDetailsFormGroupComponent } from '../../hosting-details-form-group/hosting-details-form-group.component';\n\n@Component({\n selector: 'lcu-devops',\n templateUrl: './devops.component.html',\n styleUrls: ['./devops.component.scss'],\n})\nexport class DevOpsComponent implements OnInit {\n // Fields\n\n // Properties\n public DevOpsFormGroup: FormGroup;\n\n public get Artifact(): EaCArtifact {\n return this.Data.Environment.Artifacts && this.ArtifactLookup\n ? this.Data.Environment.Artifacts[this.ArtifactLookup] || {}\n : {};\n }\n\n public get ArtifactLookup(): string {\n const artLookup = this.DevOpsAction?.ArtifactLookups\n ? this.DevOpsAction?.ArtifactLookups[0]\n : null;\n\n return artLookup;\n }\n\n @Input('data')\n public Data: {\n Environment: EaCEnvironmentAsCode;\n EnvironmentLookup: string;\n };\n\n public get DefaultFileFormControl(): AbstractControl {\n return this.DevOpsFormGroup?.controls.defaultFile;\n }\n\n public get DevOpsAction(): EaCDevOpsAction {\n return this.Data.Environment.DevOpsActions && this.DevOpsActionLookup\n ? this.Data.Environment.DevOpsActions[this.DevOpsActionLookup] || {}\n : {};\n }\n\n public get DevOpsActionLookup(): string {\n if (!!this.DevOpsActionLookupFormControl?.value) {\n return this.DevOpsActionLookupFormControl.value;\n }\n\n if (!!this.EditingSourceControl?.DevOpsActionTriggerLookups) {\n return this.EditingSourceControl?.DevOpsActionTriggerLookups[0];\n } else {\n return null;\n }\n }\n\n public get DevOpsActionLookups(): Array<string> {\n return Object.keys(this.DevOpsActions || {});\n }\n\n public get DevOpsActionLookupFormControl(): AbstractControl {\n return this.DevOpsFormGroup.get('devOpsActionLookup');\n }\n\n public get DevOpsActions(): { [lookup: string]: EaCDevOpsAction } {\n return this.Data.Environment.DevOpsActions || {};\n }\n\n public get EditingSourceControl(): EaCSourceControl {\n let sc = this.Data?.Environment?.Sources\n ? this.Data?.Environment?.Sources[this.EditingSourceControlLookup]\n : null;\n\n if (sc == null && this.EditingSourceControlLookup) {\n sc = {};\n }\n\n return sc;\n }\n\n public EditingSourceControlLookup: string;\n\n public HostingDetails: ProjectHostingDetails;\n\n @ViewChild(HostingDetailsFormGroupComponent)\n public HostingDetailsFormControls: HostingDetailsFormGroupComponent;\n\n @ViewChild(SourceControlFormControlsComponent)\n public SourceControlFormControls: SourceControlFormControlsComponent;\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.SourceControls || {});\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Data.Environment.Sources || {};\n }\n\n // Constructors\n constructor(\n protected formBldr: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService\n ) {\n this.EditingSourceControlLookup = null;\n\n this.HostingDetails = new ProjectHostingDetails();\n }\n\n // Life Cycle\n public ngOnInit(): void {\n if (this.SourceControlLookups?.length <= 0) {\n this.CreateNewSourceControl();\n }\n }\n\n // API Methods\n public BranchesChanged(branches: string[]): void {\n this.loadProjectHostingDetails();\n }\n\n public CreateNewSourceControl(): void {\n this.SetEditingSourceControl(Guid.CreateRaw());\n }\n\n public DeleteSourceControl(scLookup: string): void {\n if (\n confirm(`Are you sure you want to delete source control '${scLookup}'?`)\n ) {\n this.eacSvc.DeleteSourceControl(scLookup);\n }\n }\n\n public DevOpsActionLookupChanged(event: MatSelectChange): void {\n this.configureDevOpsAction();\n }\n\n public SaveEnvironment(): void {\n const saveEnvReq: SaveEnvironmentAsCodeEventRequest = {\n Environment: {\n ...this.Data.Environment,\n Artifacts: this.Data.Environment.Artifacts || {},\n DevOpsActions: this.Data.Environment.DevOpsActions || {},\n Secrets: this.Data.Environment.Secrets || {},\n Sources: this.Data.Environment.Sources || {},\n },\n EnvironmentLookup: this.Data.EnvironmentLookup,\n EnterpriseDataTokens: {},\n };\n\n let artifactLookup: string;\n\n let artifact: EaCArtifact = {\n ...this.Artifact,\n ...this.HostingDetailsFormControls\n .SelectedHostingOptionInputControlValues,\n };\n\n if (!this.ArtifactLookup) {\n artifactLookup = Guid.CreateRaw();\n\n artifact = {\n ...artifact,\n Type: this.HostingDetailsFormControls.SelectedHostingOption\n .ArtifactType,\n Name: this.HostingDetailsFormControls.SelectedHostingOption.Name,\n NPMRegistry: 'https://registry.npmjs.org/',\n };\n } else {\n artifactLookup = this.ArtifactLookup;\n }\n\n saveEnvReq.Environment.Artifacts[artifactLookup] = artifact;\n\n let devOpsActionLookup: string;\n\n if (!this.DevOpsActionLookup) {\n devOpsActionLookup = Guid.CreateRaw();\n\n const doa: EaCDevOpsAction = {\n ...this.DevOpsAction,\n ArtifactLookups: [artifactLookup],\n Name: this.HostingDetailsFormControls.DevOpsActionNameFormControl.value,\n Path: this.HostingDetailsFormControls.SelectedHostingOption.Path,\n Templates:\n this.HostingDetailsFormControls.SelectedHostingOption.Templates,\n };\n\n if (this.HostingDetailsFormControls.NPMTokenFormControl?.value) {\n const secretLookup = 'npm-access-token';\n\n doa.SecretLookups = [secretLookup];\n\n saveEnvReq.Environment.Secrets[secretLookup] = {\n Name: 'NPM Access Token',\n DataTokenLookup: secretLookup,\n KnownAs: 'NPM_TOKEN',\n };\n\n saveEnvReq.EnterpriseDataTokens[secretLookup] = {\n Name: saveEnvReq.Environment.Secrets[secretLookup].Name,\n Description: saveEnvReq.Environment.Secrets[secretLookup].Name,\n Value: this.HostingDetailsFormControls.NPMTokenFormControl.value,\n };\n }\n\n saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;\n } else {\n devOpsActionLookup = this.DevOpsActionLookupFormControl.value;\n\n const doa: EaCDevOpsAction = {\n ...this.DevOpsAction,\n Name: this.HostingDetailsFormControls.DevOpsActionNameFormControl.value,\n };\n\n saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;\n }\n\n let source: EaCSourceControl = {\n ...this.EditingSourceControl,\n Branches: this.SourceControlFormControls.SelectedBranches,\n MainBranch: this.SourceControlFormControls.MainBranchFormControl.value,\n };\n\n source = {\n ...source,\n Type: 'GitHub',\n Name: this.EditingSourceControlLookup,\n DevOpsActionTriggerLookups: [devOpsActionLookup],\n Organization:\n this.SourceControlFormControls.OrganizationFormControl.value,\n Repository: this.SourceControlFormControls.RepositoryFormControl.value,\n };\n\n const scLookup = `github://${source.Organization}/${source.Repository}`;\n\n saveEnvReq.Environment.Sources[scLookup] = source;\n\n this.eacSvc.SaveEnvironmentAsCode(saveEnvReq);\n }\n\n public SetEditingSourceControl(scLookup: string): void {\n this.EditingSourceControlLookup = scLookup;\n\n this.setupDevOpsForm();\n }\n\n // Helpers\n protected configureDevOpsAction(): void {\n setTimeout(() => {\n this.DevOpsActionLookupFormControl.setValue(this.DevOpsActionLookup);\n\n setTimeout(() => {\n const hostOption = this.HostingDetails?.HostingOptions?.find(\n (ho) => ho.Path === this.DevOpsAction.Path\n );\n\n this.HostingDetailsFormControls?.BuildPipelineFormControl.setValue(\n hostOption?.Lookup\n );\n\n this.HostingDetailsFormControls?.BuildPipelineChanged();\n }, 0);\n }, 0);\n }\n\n protected loadProjectHostingDetails(): void {\n if (this.SourceControlFormControls?.SelectedBranches?.length > 0) {\n this.HostingDetails.Loading = true;\n\n this.appsFlowSvc\n .LoadProjectHostingDetails()\n .subscribe(\n (response: BaseModeledResponse<ProjectHostingDetails>) => {\n this.HostingDetails = response.Model;\n\n this.HostingDetails.Loading = false;\n\n this.configureDevOpsAction();\n },\n (err) => {\n this.HostingDetails.Loading = false;\n }\n );\n }\n }\n\n protected setupDevOpsForm(): void {\n if (this.EditingSourceControl != null) {\n this.DevOpsFormGroup = this.formBldr.group({});\n\n this.setupBuildForm();\n }\n }\n\n protected setupBuildForm(): void {\n this.DevOpsFormGroup.addControl(\n 'devOpsActionLookup',\n this.formBldr.control(this.DevOpsActionLookup || '', [])\n );\n }\n}\n","<div>\n <form\n [formGroup]=\"DevOpsFormGroup\"\n (ngSubmit)=\"SaveEnvironment()\"\n *ngIf=\"EditingSourceControl\"\n >\n <div\n fxLayout=\"row wrap\"\n fxLayoutAlign=\"center start\"\n fxLayout.lt-md=\"column\"\n >\n <div class=\"form-card\" fxFlex=\"35%\" fxFlex.lt-md=\"100%\">\n <mat-card class=\"spread\">\n <mat-card-header>\n <mat-card-title> Source Control </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-icon\n matSuffix\n matTooltip=\"Configure source control, DevOps CI/CD, and artifacts.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <lcu-source-control-form-controls\n [branches-disabled]=\"HostingDetails?.Loading\"\n [form-group]=\"DevOpsFormGroup\"\n [org-disabled]=\"HostingDetails?.Loading\"\n [repo-disabled]=\"HostingDetails?.Loading\"\n [source-control]=\"EditingSourceControl\"\n (branches-changed)=\"BranchesChanged($event)\"\n ></lcu-source-control-form-controls>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div class=\"form-card\" fxFlex=\"35%\" fxFlex.lt-md=\"100%\">\n <mat-card\n class=\"spread\"\n *ngIf=\"\n SourceControlFormControls?.SelectedBranches?.length > 0 ||\n EditingSourceControl?.Branches?.length > 0\n \"\n >\n <mat-card-header>\n <mat-card-title> Build Pipeline </mat-card-title>\n\n <mat-hint>\n Changes made here are reflected for all sources using this\n DevOpsAction\n </mat-hint>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n formControlName=\"devOpsActionLookup\"\n placeholder=\"DevOps Action\"\n [disabled]=\"\n SourceControlLookupFormControl?.value ||\n SourceControlFormControls?.Loading ||\n HostingDetails?.Loading\n \"\n (selectionChange)=\"DevOpsActionLookupChanged($event)\"\n >\n <ng-container\n *ngFor=\"let devOpsActionLookup of DevOpsActionLookups\"\n >\n <mat-option\n [value]=\"devOpsActionLookup\"\n *ngIf=\"DevOpsActions[devOpsActionLookup]; let devOpsAction\"\n >\n {{ devOpsAction.Name }}\n </mat-option>\n </ng-container>\n\n <mat-option value=\"\">-- Create New --</mat-option>\n </mat-select>\n </mat-form-field>\n\n <ng-container>\n <lcu-hosting-details-form-group\n [artifact]=\"Artifact\"\n [devops-action]=\"\n DevOpsActions[DevOpsActionLookupFormControl?.value]\n \"\n [details]=\"HostingDetails\"\n [formGroup]=\"DevOpsFormGroup\"\n [organization]=\"\n SourceControlFormControls?.OrganizationFormControl?.value\n \"\n [disabled]=\"\n !!DevOpsActionLookupFormControl?.value ||\n SourceControlFormControls?.Loading ||\n HostingDetails?.Loading\n \"\n ></lcu-hosting-details-form-group>\n </ng-container>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n\n <div class=\"spread\">\n <div fxFlex></div>\n\n <button mat-button type=\"button\" (click)=\"SetEditingSourceControl(null)\">\n <mat-icon>cancel</mat-icon> Cancel\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"!DevOpsFormGroup.valid || !DevOpsFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon> Save Application\n </button>\n\n <div fxFlex></div>\n </div>\n </form>\n\n <div class=\"spread\" *ngIf=\"!EditingSourceControl\">\n <span class=\"apps-actions\">\n <button\n mat-raised-button\n color=\"accent\"\n (click)=\"CreateNewSourceControl()\"\n >\n <mat-icon color=\"primary\">add</mat-icon> Create New\n </button>\n </span>\n\n <div class=\"spread\">\n <div *ngIf=\"SourceControlLookups?.length <= 0\">\n <h2>No source controls created, create your first source control.</h2>\n </div>\n\n <div *ngIf=\"SourceControlLookups?.length > 0\">\n <h2>Source Controls</h2>\n\n <div fxLayout=\"row wrap\" fxLayout.lt-md=\"column\">\n <div\n fxFlex=\"30%\"\n fxFlex.lt-md=\"100%\"\n *ngFor=\"let sourceControlLookup of SourceControlLookups\"\n >\n <mat-card class=\"spread\">\n <mat-card-header>\n <!-- <img mat-card-avatar=\"/assets/images/project-icon.png\" /> -->\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"sourceControlLookup\"\n >\n {{ sourceControlLookup }}\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\"></div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"SetEditingSourceControl(sourceControlLookup)\"\n >\n <mat-icon matTooltip=\"Edit Source Control\">\n settings\n </mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"DeleteSourceControl(sourceControlLookup)\"\n >\n <mat-icon matTooltip=\"Delete {{ sourceControlLookup }}\">\n delete_forever\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","\nimport { Component, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport {\n EaCService,\n SaveDFSModifierEventRequest,\n} from '../../../../../services/eac.service';\nimport {\n EaCDFSModifier,\n EaCProjectAsCode,\n} from '@semanticjs/common';\nimport { Guid } from '@lcu/common';\nimport { MatSelectChange } from '@angular/material/select';\nimport { ApplicationsFlowService } from '../../../../../services/applications-flow.service';\n\n@Component({\n selector: 'lcu-dfs-modifiers',\n templateUrl: './dfs-modifiers.component.html',\n styleUrls: ['./dfs-modifiers.component.scss'],\n})\nexport class DFSModifiersComponent implements OnInit {\n // Fields\n\n // Properties\n public CurrentType: string;\n\n @Input('data')\n public Data: {\n Modifiers: { [lookup: string]: EaCDFSModifier };\n Project: EaCProjectAsCode;\n ProjectLookup: string;\n };\n\n public get DetailsFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.details;\n }\n\n public get EditingModifier(): EaCDFSModifier {\n let mdfr = this.Modifiers\n ? this.Modifiers[this.EditingModifierLookup]\n : null;\n\n if (mdfr == null && this.EditingModifierLookup) {\n mdfr = {};\n }\n\n return mdfr;\n }\n\n public EditingModifierLookup: string;\n\n public get EnabledFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.enabled;\n }\n\n public get LocationFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.location;\n }\n\n public ModifierFormGroup: FormGroup;\n\n public get ModifierLookups(): Array<string> {\n return Object.keys(this.Modifiers || {});\n }\n\n public get Modifiers(): { [lookup: string]: EaCDFSModifier } {\n return this.Data.Modifiers || {};\n }\n\n public get NameFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.name;\n }\n\n public get PathFilterFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.pathFilter;\n }\n\n public get PriorityFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.priority;\n }\n\n public get Project(): EaCProjectAsCode {\n return this.Data.Project || {};\n }\n\n public get ScriptFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.script;\n }\n\n public get ScriptIDFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.scriptId;\n }\n\n public get StateDataTokenFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.stateDataToken;\n }\n\n public get TypeFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.type;\n }\n\n // Constructors\n constructor(\n protected formBldr: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService\n ) {\n this.EditingModifierLookup = null;\n }\n\n // Life Cycle\n public ngOnInit(): void {\n if (this.ModifierLookups?.length <= 0) {\n this.CreateNewModifier();\n }\n }\n\n // API Methods\n public CreateNewModifier(): void {\n this.SetEditingModifier(Guid.CreateRaw());\n }\n\n public DeleteModifier(modifierLookup: string, modifierName: string): void {\n if (\n confirm(`Are you sure you want to delete modifier '${modifierName}'?`)\n ) {\n this.eacSvc.DeleteSourceControl(modifierLookup);\n }\n }\n\n public SaveModifier(projectLookup: string = null): void {\n const saveMdfrReq: SaveDFSModifierEventRequest = {\n Modifier: {\n ...this.EditingModifier,\n Name: this.NameFormControl.value,\n Enabled: this.EnabledFormControl.value,\n PathFilterRegex: this.PathFilterFormControl.value,\n Priority: this.PriorityFormControl.value,\n Type: this.CurrentType,\n },\n ModifierLookups: [this.EditingModifierLookup],\n ProjectLookups: [projectLookup],\n };\n\n const details = {};\n\n switch (this.CurrentType) {\n case 'LCU.Runtime.Applications.Modifiers.HTMLBaseDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n details['StateDataToken'] = this.StateDataTokenFormControl.value;\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n details['Location'] = this.LocationFormControl.value;\n\n details['Script'] = this.ScriptFormControl.value;\n\n details['ScriptID'] = this.ScriptIDFormControl.value;\n break;\n }\n\n saveMdfrReq.Modifier.Details = JSON.stringify(details);\n\n this.eacSvc.SaveDFSModifier(saveMdfrReq);\n }\n\n public SetEditingModifier(modifierLookup: string): void {\n this.EditingModifierLookup = modifierLookup;\n\n this.setupModifierForm();\n }\n\n public SetUseForProject(\n modifierLookup: string,\n change: MatSlideToggleChange\n ): void {\n this.SetEditingModifier(modifierLookup);\n\n this.SaveModifier(this.Data.ProjectLookup);\n }\n\n public TypeChanged(event: MatSelectChange): void {\n this.CurrentType = event.value;\n\n this.setupTypeForm();\n }\n\n // Helpers\n protected setupModifierForm(): void {\n if (this.EditingModifier != null) {\n this.CurrentType = this.EditingModifier?.Type;\n\n this.ModifierFormGroup = this.formBldr.group({\n name: [this.EditingModifier?.Name, Validators.required],\n type: [this.CurrentType, Validators.required],\n priority: [this.EditingModifier?.Priority, Validators.required],\n enabled: [this.EditingModifier?.Enabled, []],\n pathFilter: [\n this.EditingModifier?.PathFilterRegex,\n Validators.required,\n ],\n });\n\n this.setupTypeForm();\n }\n }\n\n protected setupTypeForm(): void {\n this.ModifierFormGroup.removeControl('stateDataToken');\n\n this.ModifierFormGroup.removeControl('location');\n this.ModifierFormGroup.removeControl('script');\n this.ModifierFormGroup.removeControl('scriptId');\n\n const details = JSON.parse(this.EditingModifier?.Details || '{}');\n\n switch (this.CurrentType) {\n case 'LCU.Runtime.Applications.Modifiers.HTMLBaseDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n this.ModifierFormGroup.addControl(\n 'stateDataToken',\n this.formBldr.control(details?.StateDataToken || '', [\n Validators.required,\n ])\n );\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n this.ModifierFormGroup.addControl(\n 'location',\n this.formBldr.control(details?.Location || '', [Validators.required])\n );\n\n this.ModifierFormGroup.addControl(\n 'script',\n this.formBldr.control(details?.Script || '', [Validators.required])\n );\n\n this.ModifierFormGroup.addControl(\n 'scriptId',\n this.formBldr.control(details?.ScriptID || '', [Validators.required])\n );\n break;\n }\n }\n}\n","<div>\n <form\n [formGroup]=\"ModifierFormGroup\"\n (ngSubmit)=\"SaveModifier()\"\n *ngIf=\"EditingModifier\"\n >\n <div class=\"form-card\">\n <mat-card class=\"spread\">\n <mat-card-header>\n <mat-card-title> DFS Modifier </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-icon\n matSuffix\n matTooltip=\"Configure modifiers for your DFS files.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"name\"\n placeholder=\"Name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"priority\"\n placeholder=\"Priority\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"pathFilter\"\n placeholder=\"Path Filter (regex)\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n formControlName=\"type\"\n placeholder=\"DFS Modifier Type\"\n (selectionChange)=\"TypeChanged($event)\"\n >\n <mat-option\n value=\"LCU.Runtime.Applications.Modifiers.HTMLBaseDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\"\n >\n HTML Base Modfier\n </mat-option>\n\n <mat-option\n value=\"LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\"\n >\n LCU Reg Modfier\n </mat-option>\n\n <mat-option\n value=\"LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\"\n >\n Thrid Party Library Modifier\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <ng-container\n *ngIf=\"\n CurrentType ==\n 'LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'\n \"\n >\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"stateDataToken\"\n placeholder=\"State Data Token\"\n required\n />\n </mat-form-field>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n CurrentType ==\n 'LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'\n \"\n >\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"location\"\n placeholder=\"Location\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"scriptId\"\n placeholder=\"Script ID\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n formControlName=\"script\"\n placeholder=\"Script\"\n required></textarea>\n </mat-form-field>\n </ng-container>\n\n <mat-slide-toggle class=\"spread\" formControlName=\"enabled\">\n Is Enabled?\n </mat-slide-toggle>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div class=\"spread\">\n <div fxFlex></div>\n\n <button mat-button type=\"button\" (click)=\"SetEditingModifier(null)\">\n <mat-icon>cancel</mat-icon> Cancel\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"!ModifierFormGroup.valid || !ModifierFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon> Save DFS Modifier\n </button>\n\n <div fxFlex></div>\n </div>\n </form>\n\n <div class=\"spread\" *ngIf=\"!EditingModifier\">\n <span class=\"apps-actions\">\n <button mat-raised-button color=\"accent\" (click)=\"CreateNewModifier()\">\n <mat-icon color=\"primary\">add</mat-icon> Create New\n </button>\n </span>\n\n <div class=\"spread\">\n <div *ngIf=\"ModifierLookups?.length <= 0\">\n <h2>No DFS modifiers created, create your first DFS modifier.</h2>\n </div>\n\n <div *ngIf=\"ModifierLookups?.length > 0\">\n <h2>DFS Modifiers</h2>\n\n <div fxLayout=\"row wrap\" fxLayout.lt-md=\"column\">\n <div\n fxFlex=\"30%\"\n fxFlex.lt-md=\"100%\"\n *ngFor=\"let modifierLookup of ModifierLookups\"\n >\n <mat-card\n class=\"spread\"\n *ngIf=\"Modifiers[modifierLookup]; let modifier\"\n >\n <mat-card-header>\n <!-- <img mat-card-avatar=\"/assets/images/project-icon.png\" /> -->\n\n <mat-card-title\n class=\"mat-subheading-2\"\n [matTooltip]=\"modifier.Name\"\n >\n {{ modifier.Name || modifier.Lookup }}\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n class=\"spread\"\n [checked]=\"\n Project?.ModifierLookups.indexOf(modifierLookup) >= 0\n \"\n (change)=\"SetUseForProject(modifierLookup, $event)\"\n matTooltip=\"Use for project?\"\n >\n </mat-slide-toggle>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"spread\"></div>\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"data-app-actions\">\n <div fxFlex></div>\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"SetEditingModifier(modifierLookup)\"\n >\n <mat-icon matTooltip=\"Edit DFS Modifier\">\n settings\n </mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"DeleteModifier(modifierLookup, modifier.Name)\"\n >\n <mat-icon matTooltip=\"Delete {{ modifier.Name }}\">\n delete_forever\n </mat-icon>\n </button>\n </div>\n\n <div class=\"data-app-fakes\">\n <div fxFlex></div>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n\n <button mat-icon-button disabled>\n <mat-icon>fiber_manual_record</mat-icon>\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { FormsService } from './../../services/forms.service';\nimport { Subscription } from 'rxjs';\nimport { DynamicTabsModel } from './../../models/dynamic-tabs.model';\nimport { \n AfterViewInit, \n Component, \n Input, \n OnInit, \n ViewChild, \n ViewContainerRef } from '@angular/core';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\n\n@Component({\n selector: 'lcu-dynamic-tabs',\n templateUrl: './dynamic-tabs.component.html',\n styleUrls: ['./dynamic-tabs.component.scss']\n})\n\nexport class DynamicTabsComponent implements OnInit, AfterViewInit {\n\n /**\n * Container used to display dynamic components\n */\n @ViewChild('container', {read: ViewContainerRef, static: false})\n protected viewContainer: ViewContainerRef;\n\n @Input('background-color')\n public BackgroundColor: string;\n\n @Input('color')\n public Color: string;\n\n /**\n * Form is dirty flag\n */\n public FormIsDirty: boolean;\n\n /**\n * Listener for when any form is dirty\n */\n protected formIsDirtySubscription: Subscription;\n\n /**\n * Components loaded as dynamic components\n */ \n @Input('tab-components')\n public TabComponents: Array<DynamicTabsModel>;\n\n constructor(\n protected viewContainerRef: ViewContainerRef,\n protected formsService: FormsService) { }\n\n // Lifecycle hook\n public ngOnInit(): void {\n\n // listen for any form to be dirty, then disable all tabs except for the current tab\n this.formIsDirtySubscription = this.formsService.FormIsDirty.subscribe(\n (val: boolean) => {\n this.FormIsDirty = val;\n });\n }\n\n public ngAfterViewInit(): void {\n this.renderComponent(0);\n }\n\n /**\n * Tab change event\n *\n * @param index selected tab index\n */\n public TabChanged(evt: MatTabChangeEvent): void {\n\n setTimeout(() => {\n this.renderComponent(evt.index);\n }, 1000);\n }\n\n /**\n * Render component for the active tab\n *\n * @param index TabComponents index position\n */\n protected renderComponent(index: number): any {\n\n if (!this.TabComponents) {\n return;\n }\n const componentRef = this.viewContainerRef.createComponent(this.TabComponents[index].Component);\n\n // factory for creating a dynamic component\n // const factory: ComponentFactory<any> = this.componentFactoryResolver\n // .resolveComponentFactory(this.TabComponents[index].Component);\n\n // component created by a factory\n // const componentRef: ComponentRef<any> = this.viewContainer.createComponent(factory);\n\n // current component instance\n const instance: DynamicTabsComponent = componentRef.instance as DynamicTabsComponent;\n\n // find the current component in TabComponents and set the data\n this.TabComponents.find((comp: DynamicTabsModel) => {\n if (comp.Component.name === instance.constructor.name) {\n instance['Data'] = comp.Data;\n }\n });\n }\n}\n","<mat-tab-group \n [color]=\"Color\" \n [backgroundColor]=\"BackgroundColor\" \n (selectedTabChange)=\"TabChanged($event)\">\n <!-- <div>\n\n </div> -->\n <mat-tab\n *ngFor=\"let component of TabComponents\"\n #tab\n [disabled]='!tab.isActive && FormIsDirty'>\n <ng-template mat-tab-label>\n <mat-icon [color]=\"Color\" class=\"margin-right-2\">\n {{ component.Icon }}\n </mat-icon>\n {{ component.Label }}\n </ng-template>\n <ng-template matTabContent>\n <div #container class=\"margin-top-3\"></div>\n </ng-template>\n </mat-tab>\n</mat-tab-group>","import { DomainsComponent } from './../tabs/domains/domains.component';\nimport { DynamicTabsModel } from './../../../../models/dynamic-tabs.model';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { GeneralComponent } from '../tabs/general/general.component';\nimport {\n EaCApplicationAsCode,\n EaCDFSModifier,\n EaCEnvironmentAsCode,\n EaCHost,\n EaCProjectAsCode,\n} from '@semanticjs/common';\nimport { AppsFlowComponent } from '../tabs/apps-flow/apps-flow.component';\nimport { DevOpsComponent } from '../tabs/devops/devops.component';\nimport { DFSModifiersComponent } from '../tabs/dfs-modifiers/dfs-modifiers.component';\n\n@Component({\n selector: 'lcu-project-tabs',\n templateUrl: './project-tabs.component.html',\n styleUrls: ['./project-tabs.component.scss'],\n})\nexport class ProjectTabsComponent implements OnInit {\n // Fields\n\n // Properties\n public get ApplicationLookups(): Array<string> {\n return Object.keys(this.Applications || {});\n }\n\n @Input('applications')\n public Applications: { [lookup: string]: EaCApplicationAsCode };\n\n @Input('dfs-modifiers')\n public DFSModifiers: { [lookup: string]: EaCDFSModifier };\n\n @Input('environment')\n public Environment: EaCEnvironmentAsCode;\n\n @Input('environment-lookup')\n public EnvironmentLookup: string;\n\n @Input('hosts')\n public Hosts: { [lookup: string]: EaCHost };\n\n public get PrimaryHost(): string {\n return this.Project.Hosts[this.Project.Hosts.length - 1];\n }\n\n @Input('project')\n public Project: EaCProjectAsCode;\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n public TabComponents: Array<DynamicTabsModel>;\n\n constructor() {}\n\n public ngOnInit(): void {\n this.tabsComponents();\n }\n\n protected tabsComponents(): void {\n this.TabComponents = [\n new DynamicTabsModel({\n Component: AppsFlowComponent,\n Data: {\n Project: this.Project,\n ProjectLookup: this.ProjectLookup,\n Applications: this.Applications,\n Environment: this.Environment,\n PrimaryHost: this.PrimaryHost,\n },\n Label: 'Application Flow',\n Icon: 'account_tree',\n }),\n new DynamicTabsModel({\n Component: DevOpsComponent,\n Data: {\n Environment: this.Environment,\n EnvironmentLookup: this.EnvironmentLookup,\n },\n Label: 'DevOps',\n Icon: 'build',\n }),\n new DynamicTabsModel({\n Component: DFSModifiersComponent,\n Data: {\n Modifiers: this.DFSModifiers,\n Project: this.Project,\n ProjectLookup: this.ProjectLookup,\n },\n Label: 'Modifiers',\n Icon: 'auto_fix_high',\n }),\n new DynamicTabsModel({\n Component: GeneralComponent,\n Data: { Project: this.Project, ProjectLookup: this.ProjectLookup },\n Label: 'General',\n Icon: 'pages',\n }),\n new DynamicTabsModel({\n Component: DomainsComponent,\n Data: {\n Hosts: this.Hosts,\n Project: this.Project,\n ProjectLookup: this.ProjectLookup,\n PrimaryHost: this.PrimaryHost,\n },\n Label: 'Domains',\n Icon: 'domain',\n }),\n ];\n }\n}\n","<lcu-dynamic-tabs \n color=\"accent\" \n [tab-components]=\"TabComponents\">\n</lcu-dynamic-tabs>\n","import {\r\n Component,\r\n OnInit,\r\n Injector,\r\n \r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport {\r\n LCUElementContext,\r\n LcuElementComponent,\r\n BaseResponse,\r\n} from '@lcu/common';\r\nimport { ApplicationsFlowState } from './../../state/applications-flow.state';\r\nimport { ApplicationsFlowService } from '../../services/applications-flow.service';\r\nimport {\r\n EaCEnvironmentAsCode,\r\n EaCProjectAsCode,\r\n} from '@semanticjs/common';\r\nimport { EaCService } from '../../services/eac.service';\r\n\r\ndeclare var window: Window;\r\n\r\nexport class ApplicationsFlowProjectsElementState {}\r\n\r\nexport class ApplicationsFlowProjectsContext extends LCUElementContext<ApplicationsFlowProjectsElementState> {}\r\n\r\nexport const SELECTOR_APPLICATIONS_FLOW_PROJECTS_ELEMENT =\r\n 'applications-flow-projects-element';\r\n\r\n@Component({\r\n selector: SELECTOR_APPLICATIONS_FLOW_PROJECTS_ELEMENT,\r\n templateUrl: './projects.component.html',\r\n styleUrls: ['./projects.component.scss'],\r\n})\r\nexport class ApplicationsFlowProjectsElementComponent\r\n extends LcuElementComponent<ApplicationsFlowProjectsContext>\r\n implements OnDestroy, OnInit\r\n{\r\n // Fields\r\n protected projMon: NodeJS.Timeout;\r\n\r\n // Properties\r\n public get ActiveEnvironment(): EaCEnvironmentAsCode {\r\n return this.State?.EaC?.Environments[this.ActiveEnvironmentLookup];\r\n }\r\n\r\n public get ActiveEnvironmentLookup(): string {\r\n // TODO: Eventually support multiple environments\r\n const envLookups = Object.keys(this.State?.EaC?.Environments || {});\r\n\r\n return envLookups[0];\r\n }\r\n\r\n public get CreatingProject(): boolean {\r\n return this.eacSvc.CreatingProject;\r\n }\r\n\r\n public get EditingProject(): EaCProjectAsCode {\r\n return this.State?.EaC?.Projects\r\n ? this.State?.EaC?.Projects[this.EditingProjectLookup]\r\n : null;\r\n }\r\n\r\n public get EditingProjectLookup(): string {\r\n return this.eacSvc.EditingProjectLookup;\r\n }\r\n\r\n public get ProjectLookups(): Array<string> {\r\n return Object.keys(this.State?.EaC?.Projects || {});\r\n }\r\n\r\n public get State(): ApplicationsFlowState {\r\n return this.eacSvc.State;\r\n }\r\n\r\n // Constructors\r\n constructor(\r\n protected injector: Injector,\r\n protected appsFlowSvc: ApplicationsFlowService,\r\n protected eacSvc: EaCService\r\n ) {\r\n super(injector);\r\n }\r\n\r\n // Life Cycle\r\n public ngOnDestroy(): void {}\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n this.handleStateChange().then((eac) => {});\r\n\r\n // this.setupProjectMonitor();\r\n }\r\n\r\n // API Methods\r\n public async ActiveEnterpriseChanged(event: MatSelectChange): Promise<void> {\r\n await this.eacSvc.SetActiveEnterprise(event.value);\r\n }\r\n\r\n public ConfigureDevOpsAction(devOpsActionLookup: string): void {\r\n this.State.Loading = true;\r\n\r\n this.appsFlowSvc\r\n .ConfigureDevOpsAction(devOpsActionLookup)\r\n .subscribe((response: BaseResponse) => {\r\n if (response.Status.Code === 0) {\r\n this.eacSvc.LoadEnterpriseAsCode();\r\n } else {\r\n this.State.Loading = false;\r\n }\r\n });\r\n }\r\n\r\n // Helpers\r\n protected async handleStateChange(): Promise<void> {\r\n this.State.Loading = true;\r\n }\r\n}\r\n","<app-host-dashboard-card-element\r\n [context]=\"{ Title: 'Projects', Icon: 'language' }\"\r\n>\r\n <nav>\r\n <mat-form-field\r\n class=\"mat-full-width\"\r\n *ngIf=\"State.Enterprises?.length > 1\"\r\n >\r\n <mat-select\r\n placeholder=\"Active Enterprise ({{ State.ActiveEnterpriseLookup }})\"\r\n [value]=\"State.ActiveEnterpriseLookup\"\r\n (selectionChange)=\"ActiveEnterpriseChanged($event)\"\r\n >\r\n <mat-option [value]=\"ent.Lookup\" *ngFor=\"let ent of State.Enterprises\">\r\n {{ ent.Name }}\r\n </mat-option>\r\n </mat-select>\r\n\r\n <!-- Toggle between Caged Krakyn and Unleashed Krakyn (Flow Tool) -->\r\n </mat-form-field>\r\n\r\n <a\r\n mat-icon-button\r\n href=\"/docs/getting-started/setup\"\r\n target=\"_blank\"\r\n lcuEvent=\"click\"\r\n label=\"Projects\"\r\n category=\"help\"\r\n >\r\n <mat-icon matTooltip=\"More info\">help_outline</mat-icon>\r\n </a>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"!State?.Loading\">\r\n <div\r\n fxLayout=\"column\"\r\n fxLayoutAlign=\"center center\"\r\n class=\"margin-bottom-4\"\r\n >\r\n <h2 class=\"mat-display-2 margin-y-2\" *ngIf=\"ProjectLookups?.length <= 0\">\r\n <span> Thank you for signing up </span>\r\n </h2>\r\n </div>\r\n\r\n <!-- <lcu-git-auth *ngIf=\"!State.GitHub.HasConnection\"></lcu-git-auth> -->\r\n\r\n <!-- *ngIf=\"State.GitHub.HasConnection\" -->\r\n <ng-container> \r\n <!-- <div *ngIf=\"!CreatingProject\">\r\n Creating\r\n <lcu-create-project-wizard></lcu-create-project-wizard>\r\n </div> -->\r\n\r\n <ng-container *ngIf=\"!State.Unleashed\">\r\n <ng-container *ngIf=\"State\">\r\n <lcu-projects-header\r\n [creating-project]=\"CreatingProject\"\r\n [projects]=\"State.EaC?.Projects\"\r\n [selected-project-lookup]=\"EditingProjectLookup\"\r\n ></lcu-projects-header>\r\n\r\n <div *ngIf=\"EditingProject\">\r\n <div class=\"divider margin-bottom-3\"></div>\r\n\r\n <lcu-project-tabs\r\n [applications]=\"State.EaC?.Applications\"\r\n [dfs-modifiers]=\"State.EaC?.Modifiers\"\r\n [hosts]=\"State.EaC?.Hosts\"\r\n [project]=\"EditingProject\"\r\n [project-lookup]=\"EditingProjectLookup\"\r\n [environment]=\"ActiveEnvironment\"\r\n [environment-lookup]=\"ActiveEnvironmentLookup\"\r\n class=\"margin-top-3\"\r\n >\r\n </lcu-project-tabs>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"State.Unleashed\">\r\n <!-- Shannon flow tool control implemented -->\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div class=\"loading\" *ngIf=\"State?.Loading\">\r\n <lcu-loader [loading]=\"State?.Loading\"></lcu-loader>\r\n\r\n <div class=\"margin-3\">\r\n <!-- <p *ngIf=\"!State.UserEnterpriseLookup\">Loading your projects</p> -->\r\n\r\n <!-- <p *ngIf=\"State.UserEnterpriseLookup\">Loading your Dashboard.</p> -->\r\n </div>\r\n </div>\r\n\r\n <!-- <div>\r\n <pre>{{ State | json }}</pre>\r\n </div> -->\r\n</app-host-dashboard-card-element>\r\n","import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup, FormBuilder} from '@angular/forms';\nimport { MatStepper } from '@angular/material/stepper';\nimport { BaseModeledResponse } from '@lcu/common';\nimport { EaCService } from '../../../../services/eac.service';\nimport { ApplicationsFlowService } from '../../../../services/applications-flow.service';\nimport { ProjectHostingDetails } from '../../../../state/applications-flow.state';\nimport { SourceControlFormControlsComponent } from '../forms/source-control/source-control.component';\n\n@Component({\n selector: 'lcu-create-project-wizard',\n templateUrl: './create-project-wizard.component.html',\n styleUrls: ['./create-project-wizard.component.scss'],\n})\nexport class CreateProjectWizardComponent implements AfterViewInit, OnInit {\n // Fields\n\n // Properties\n public get AreProjectDetailsValid(): boolean {\n return this.ProjectDetailsFormGroup?.valid;\n }\n\n public HostingDetails: ProjectHostingDetails;\n\n public get IsBranchValid(): boolean {\n return this.SourceControl?.SelectedBranches?.length > 0;\n }\n\n public get IsOrganizationValid(): boolean {\n return this.RepoDetailsFormGroup.get('organization')?.valid;\n }\n\n public get IsRepositoryValid(): boolean {\n return this.RepoDetailsFormGroup.get('repository')?.valid;\n }\n\n public Loading?: boolean;\n\n public get ProjectDetailsFormGroup(): FormGroup {\n return this.ProjectFormGroup.get('projectDetails') as FormGroup;\n }\n\n public ProjectFormGroup: FormGroup;\n\n public get RepoDetailsFormGroup(): FormGroup {\n return this.ProjectFormGroup.get('repoDetails') as FormGroup;\n }\n\n @ViewChild(SourceControlFormControlsComponent)\n public SourceControl: SourceControlFormControlsComponent;\n\n @ViewChild('projectStepper')\n public Stepper: MatStepper;\n\n // Constructors\n constructor(\n protected formBuilder: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService\n ) {\n this.HostingDetails = new ProjectHostingDetails();\n }\n // Life Cycle\n public ngAfterViewInit(): void {\n this.handleStateChange();\n }\n\n public ngOnInit(): void {\n this.ProjectFormGroup = this.formBuilder.group({\n repoDetails: this.formBuilder.group({}),\n projectDetails: this.formBuilder.group({}),\n });\n }\n\n // API Methods\n public Cancel() {\n this.eacSvc.SetCreatingProject(false);\n }\n\n public ConfigureRepository() {\n this.loadProjectHostingDetails();\n }\n\n public CreateProject(): void {\n this.Loading = true;\n\n // const req: ProjectState = {\n // Branch: this.SourceControl.SelectedBranches.join(','),\n // BuildScript: this.ProjectDetailsFormGroup.get('buildScript').value,\n // // HostingOption: projectDetails.get('hostingOption').value,\n // Organization: this.RepoDetailsFormGroup.get('organization').value,\n // OutputFolder: this.ProjectDetailsFormGroup.get('outputFolder').value,\n // // ProjectName: projectDetails.get('projectName').value,\n // Repository: this.RepoDetailsFormGroup.get('repository').value,\n // };\n\n // const src: EaCSourceControl = {\n // Name: '',\n // Type: 'GitHub',\n // Organization: this.RepoDetailsFormGroup.get('organization').value,\n // Repository: this.RepoDetailsFormGroup.get('repository').value,\n // Branches: this.SourceControl.SelectedBranches.join(','),\n // };\n\n // const doa: EaCDevOpsAction = {\n // Type: 'NPM',\n // Name: 'NPM Deploy',\n // Lookup: 'npm-deploy',\n // Output: this.ProjectDetailsFormGroup.get('outputFolder').value,\n // DeployCommand: 'npm run deploy',\n // InstallCommand: 'npm ci',\n // NPMRegistry: 'https://registry.npmjs.org/',\n // };\n\n // const art: EaCArtifact = {\n // Type: 'NPM',\n // Name: 'NPM Deploy',\n // Lookup: 'npm-deploy',\n // Output: this.ProjectDetailsFormGroup.get('output').value,\n // DeployCommand: 'npm run deploy',\n // InstallCommand: 'npm ci',\n // NPMRegistry: 'https://registry.npmjs.org/',\n // };\n\n // const proj: EaCProjectAsCode = {\n // Project: {\n // Name: `${src.Organization} ${src.Repository} ${src.Branches}`,\n // },\n // };\n\n // this.appsFlowEventsSvc.SaveProject(req);\n }\n\n public SetupRepository(): void {\n this.determineStep();\n }\n\n // Helpers\n protected determineStep(): void {\n let index = 0;\n\n if (\n this.IsOrganizationValid &&\n this.IsRepositoryValid &&\n this.IsBranchValid\n ) {\n index = 1;\n }\n\n setTimeout(() => {\n this.Stepper.selectedIndex = index;\n }, 0);\n }\n\n protected handleStateChange(): void {\n this.determineStep();\n }\n\n protected loadProjectHostingDetails(): void {\n this.HostingDetails.Loading = true;\n\n this.appsFlowSvc\n .LoadProjectHostingDetails()\n .subscribe((response: BaseModeledResponse<ProjectHostingDetails>) => {\n this.HostingDetails = response.Model;\n\n this.HostingDetails.Loading = false;\n\n this.Stepper.next();\n });\n }\n}\n","<div>\n <div [fxHide]=\"Loading\">\n <!-- <div style=\"position: absolute; top: 5px; right: 5px\">\n <button mat-mini-fab (click)=\"Cancel()\">\n <mat-icon>cancel</mat-icon>\n </button>\n </div> -->\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <div\n fxFlex=\"80%\"\n fxFlex.lt-md=\"100%\"\n fxLayout=\"column\"\n fxLayoutAlign=\"center center\"\n >\n <div class=\"welcome margin-x-1\" fxFlex=\"40%\" fxFlex.lt-md=\"100%\">\n <h3 class=\"mat-title\">Let's get your Project setup and running</h3>\n\n <div class=\"divider-fill-hor margin-y-4\"></div>\n </div>\n\n <div class=\"setup margin-x-1\" fxFlex=\"90%\" fxFlex.lt-md=\"100%\">\n <form [formGroup]=\"ProjectFormGroup\" (ngSubmit)=\"CreateProject()\">\n <mat-horizontal-stepper linear #projectStepper>\n <mat-step\n label=\"Connect Repository\"\n formGroupName=\"repoDetails\"\n [completed]=\"\n IsOrganizationValid && IsRepositoryValid && IsBranchValid\n \"\n >\n <div>\n <h3 class=\"mat-display-1 margin-bottom-4 margin-top-3\">\n Connect your repository\n </h3>\n\n <div [fxShow]=\"!HostingDetails.Loading\">\n <div class=\"margin-y-2\">\n <lcu-source-control-form-controls\n [form-group]=\"RepoDetailsFormGroup\"\n [source-control]=\"{}\"\n ></lcu-source-control-form-controls>\n </div>\n\n <div class=\"margin-top-4\">\n <button\n mat-button\n color=\"warn\"\n (click)=\"Cancel()\"\n type=\"button\"\n >\n Cancel\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n color=\"accent\"\n (click)=\"ConfigureRepository()\"\n type=\"button\"\n [disabled]=\"!IsBranchValid\"\n >\n Next\n </button>\n </div>\n </div>\n\n <div class=\"margin-3\" *ngIf=\"HostingDetails.Loading\">\n <lcu-loader\n style=\"margin: auto\"\n [loading]=\"true\"\n ></lcu-loader>\n\n <div class=\"margin-3\">\n <h4 class=\"mat-title\">Configuring</h4>\n </div>\n </div>\n </div>\n </mat-step>\n\n <!-- [stepControl]=\"formArray.get([2])\" -->\n <mat-step\n label=\"Configure Project\"\n formGroupName=\"projectDetails\"\n >\n <h3 class=\"mat-display-1 margin-bottom-2\">\n Configure build pipeline for\n </h3>\n\n <h4 class=\"mat-headline margin-bottom-2\">\n <strong>\n @{{ RepoDetailsFormGroup.get(\"organization\")?.value }}/{{\n RepoDetailsFormGroup.get(\"repository\")?.value\n }}\n\n <br />\n\n <span\n *ngFor=\"let selBranch of SourceControl?.SelectedBranches\"\n >\n @{{ selBranch }}\n </span>\n </strong>\n </h4>\n\n <div class=\"margin-y-2\" *ngIf=\"!HostingDetails.Loading\">\n <lcu-hosting-details-form-group\n [formGroup]=\"ProjectDetailsFormGroup\"\n [details]=\"HostingDetails\"\n ></lcu-hosting-details-form-group>\n </div>\n\n <div>\n <button mat-button matStepperPrevious type=\"button\">\n Back\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n color=\"primary\"\n [disabled]=\"!AreProjectDetailsValid\"\n >\n Create Project\n </button>\n </div>\n </mat-step>\n </mat-horizontal-stepper>\n </form>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"loading\" *ngIf=\"Loading\">\n <lcu-loader [loading]=\"Loading\"></lcu-loader>\n\n <div class=\"margin-3\">\n <p>Loading</p>\n </div>\n </div>\n</div>\n","import {\n GitHubWorkflowRun,\n} from './../../../../state/applications-flow.state';\nimport {\n Component,\n Input,\n OnInit,\n OnDestroy\n} from '@angular/core';\nimport { EaCLowCodeUnit, EaCProjectAsCode } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-builds',\n templateUrl: './builds.component.html',\n styleUrls: ['./builds.component.scss'],\n})\nexport class BuildsComponent implements OnInit, OnDestroy {\n // Fields\n\n // Properties\n @Input('projects')\n public Projects: Array<EaCProjectAsCode>;\n\n constructor() {}\n\n public ngOnInit(): void {}\n\n public ngOnDestroy(): void {\n }\n\n public DeployRun(lastrun: GitHubWorkflowRun): void {\n // this.appsFlowEventsSvc.DeployRun(lastrun);\n }\n\n public RetrieveLCU(val: {\n project: EaCProjectAsCode;\n lcuID: string;\n }): EaCLowCodeUnit {\n // this.RetrieveLCUEmitter.emit(lcu);\n return {};//val.project.LCUs.find((lcu) => lcu.ID === val.lcuID);\n }\n}\n","<mat-accordion>\n <div \n *ngIf=\"Projects\" \n class=\"expansion-container\">\n <div \n fxLayout=\"row\" \n fxLayoutAlign=\"space-between center\" \n *ngFor=\"let project of Projects\">\n <div \n fxFlex \n fxLayout=\"row\" >\n <mat-expansion-panel (opened)=\"panelOpenState = true;\" (closed)=\"panelOpenState = false\"\n [ngClass]=\"panelOpenState === true ? 'active' : 'inactive'\" class=\"expansion-panel\">\n <mat-expansion-panel-header \n [collapsedHeight]=\"'75px'\" \n [expandedHeight]=\"'75px'\">\n <div \n fxFlex\n fxLayout=\"row\" \n fxLayoutAlign=\"space-between center\" \n class=\"margin-right-3\" \n *ngIf=\"project.Runs[0]; let latestRun\">\n <div fxLayout=\"row\">\n <div>\n <div fxLayout=\"column\"\n *ngIf=\"RetrieveLCU({project: project, lcuID: latestRun.LCUID}); let lcu\">\n <div class=\"workflow-run-status\">\n <a mat-icon-button\n href=\"https://github.com/{{ lcu.Organization }}/{{lcu.Repository}}/actions\"\n target=\"_blank\">\n <div fxLayout=\"row\">\n <div \n fxLayoutAlign=\"center center\" \n class=\"icon-bg\"\n [ngClass]=\"latestRun.Conclusion == 'success' ? 'success' : 'error'\">\n <mat-icon\n matTooltip=\"{{ latestRun.Status }} {{ latestRun.Conclusion }}\"\n *ngIf=\"latestRun.Conclusion == 'success'\">\n {{ latestRun.Conclusion == 'success' ? 'check_circle' :\n 'error'}}\n </mat-icon>\n </div>\n\n <div>\n <mat-icon class=\"error\"\n *ngIf=\"latestRun.Conclusion == 'failure'\">\n error_outline\n </mat-icon>\n </div>\n </div>\n </a>\n </div>\n </div>\n </div>\n <div fxLayout=\"column\" class=\"details margin-left-3\">\n <span class=\"name mat-headline mat-body-1\">{{ project.Name }}</span>\n </div>\n </div>\n\n <div fxLayout=\"row\" class=\"actions\">\n <a mat-button color=\"accent\" (click)=\"DeployRun(latestRun)\" target=\"_blank\"\n matTooltip=\"Deploy Latest\">\n <mat-icon>cloud_upload</mat-icon>\n </a>\n </div>\n </div>\n </mat-expansion-panel-header>\n <span class=\"mat-body-2\">Build Details</span>\n </mat-expansion-panel>\n </div>\n </div>\n </div>\n</mat-accordion>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-recent-activities',\n templateUrl: './recent-activities.component.html',\n styleUrls: ['./recent-activities.component.scss']\n})\nexport class RecentActivitiesComponent implements OnInit {\n\n constructor() { }\n\n public ngOnInit(): void {\n }\n\n}\n","<p>recent-activities works!</p>\n","\nimport { Component, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { FormsService } from '../../../../../../../services/forms.service';\nimport { CardFormConfigModel } from '../../../../../../../models/card-form-config.model';\nimport { EaCService } from '../../../../../../../services/eac.service';\nimport { EaCProjectAsCode } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-project-details',\n templateUrl: './project-details.component.html',\n styleUrls: ['./project-details.component.scss'],\n})\nexport class ProjectNameComponent implements OnInit {\n /**\n * Form button actions\n */\n public Config: CardFormConfigModel;\n\n /**\n * Access form control for description\n */\n public get Description(): AbstractControl {\n return this.Form.get('description');\n }\n\n /**\n * FormGroup for project name card\n */\n public Form: FormGroup;\n\n /**\n * Name of form\n */\n protected formName: string;\n\n /**\n * When form is dirty, ties into formsService.DisableForms\n */\n public IsDirty: boolean;\n\n /**\n * Access form control for project name\n */\n public get Name(): AbstractControl {\n return this.Form.get('name');\n }\n\n /**\n * Input value for state\n */\n @Input('project')\n public Project: EaCProjectAsCode;\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n constructor(\n protected formsService: FormsService,\n protected eacSvc: EaCService\n ) {}\n\n public ngOnInit(): void {\n this.formName = 'ProjectNameForm';\n\n this.setupForm();\n\n this.config();\n }\n\n /**\n * Form configurations\n */\n protected config(): void {\n this.Config = new CardFormConfigModel({\n Icon: 'house',\n Title: 'Root Directory',\n Subtitle:\n 'The directory within your project, in which your code is located. Leave this field empty if your code is not located in a subdirectory',\n FormActions: {\n Message: 'Changes will be applied to your next deployment',\n Actions: [\n {\n Label: 'Reset',\n Color: 'warn',\n ClickEvent: () => this.resetForm(),\n // use arrow function, so 'this' refers to ProjectNameComponent\n // if we used ClickeEvent: this.clearForm, then 'this' would refer to this current Actions object\n Type: 'RESET',\n },\n {\n Label: 'Save',\n Color: 'accent',\n ClickEvent: () => this.save(),\n Type: 'SAVE',\n },\n ],\n },\n });\n }\n /**\n * Setup form controls\n */\n protected setupForm(): void {\n this.Form = new FormGroup({\n name: new FormControl(this.Project?.Project?.Name || '', {\n validators: [Validators.required, Validators.minLength(1)],\n updateOn: 'change',\n }),\n description: new FormControl(this.Project?.Project?.Description || '', {\n validators: [Validators.required, Validators.minLength(1)],\n updateOn: 'change',\n }),\n });\n\n this.formsService.Form = { Id: this.formName, Form: this.Form };\n\n this.onChange();\n }\n\n /**\n * Save form\n */\n protected save(): void {\n this.eacSvc.SaveProjectAsCode({\n ProjectLookup: this.ProjectLookup,\n Project: {\n ...this.Project,\n Project: {\n ...(this.Project || {}),\n Description: this.Description.value,\n Name: this.Name.value,\n },\n },\n });\n\n this.formsService.UpdateValuesReference({\n Id: this.formName,\n Form: this.Form,\n });\n }\n\n /**\n * Reset form controls back to previous values\n */\n protected resetForm(): void {\n // enable all forms\n // this.formsService.DisableForms(false);\n\n this.formsService.ResetFormValues(this.formName);\n }\n\n /**\n * Listen to form changes\n */\n protected onChange(): void {\n this.Form.valueChanges.subscribe((val: object) => {\n if (this.formsService.ForRealThough(this.formName, this.Form)) {\n this.IsDirty = true;\n // disable all forms except the current form being edited\n this.formsService.DisableForms(this.formName);\n } else {\n this.IsDirty = false;\n // enable all forms\n this.formsService.DisableForms(false);\n }\n });\n }\n}\n","<form fxFlex fxLayout=\"row\" fxLayout.lt-md=\"column\" [formGroup]=\"Form\">\n <lcu-form-card\n fxFlex\n [config]=\"Config\"\n [form]=\"Form\"\n [is-dirty]=\"IsDirty\"\n >\n <div fxLayout=\"column\">\n <mat-form-field appearance=\"fill\" fxFlex class=\"margin-right-1 margin-bottom-2\">\n <mat-icon\n matSuffix\n [ngClass]=\"Name.valid ? 'valid-control' : 'invalid-control'\"\n >\n {{ Name.valid ? \"check_circle\" : \"error_outline\" }}\n </mat-icon>\n\n <input\n type=\"text\"\n matInput\n [placeholder]=\"Name.invalid || Name.disabled ? 'Project Name' : ''\"\n formControlName=\"name\"\n />\n\n <!-- <mat-hint *ngIf=\"Name.valid\"> Selected Project Name </mat-hint> -->\n\n <mat-error *ngIf=\"Name.hasError('required')\">\n Project Name is required\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex appearance=\"fill\" class=\"margin-right-1\">\n <mat-icon\n matTooltip=\"Brief content that allows users to understand the purpose, objective, goals or problems addressed by the project.\"\n matSuffix\n [ngClass]=\"Description.valid ? 'valid-control' : 'invalid-control'\"\n >\n {{ Description.valid ? \"check_circle\" : \"error_outline\" }}\n </mat-icon>\n\n <textarea\n type=\"text\"\n matInput\n rows=\"3\"\n [placeholder]=\"\n Description.invalid || Description.disabled\n ? 'Project Description'\n : ''\n \"\n formControlName=\"description\"\n ></textarea>\n\n <!-- <mat-hint *ngIf=\"Description.valid\">\n Selected Project Description\n </mat-hint> -->\n\n <mat-error *ngIf=\"Description.hasError('required')\">\n Project Description is required\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"card-divider\"></div>\n </lcu-form-card>\n</form>\n","import { Subscription } from 'rxjs';\nimport { FormsService } from './../../../../../../../services/forms.service';\nimport { CardFormConfigModel } from './../../../../../../../models/card-form-config.model';\nimport { Component, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { EaCService } from '../../../../../../../services/eac.service';\nimport { EaCProjectAsCode } from '@semanticjs/common';\n\n@Component({\n selector: 'lcu-root-directory',\n templateUrl: './root-directory.component.html',\n styleUrls: ['./root-directory.component.scss'],\n})\nexport class RootDirectoryComponent implements OnInit {\n /**\n * Card / Form Config\n */\n public Config: CardFormConfigModel;\n\n /**\n * FormGroup\n */\n public Form: FormGroup;\n\n protected formIsDirtySubscription: Subscription;\n\n /**\n * Access form control for root directory\n */\n public get Root(): AbstractControl {\n return this.Form.get('root');\n }\n\n /**\n * Access form control for root directory\n */\n public get IncludeSource(): AbstractControl {\n return this.Form.get('includeSource');\n }\n\n /**\n * Input value for state\n */\n @Input('project')\n public Project: EaCProjectAsCode;\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n constructor(\n protected formsService: FormsService,\n protected eacSvc: EaCService\n ) {}\n\n public ngOnInit(): void {\n this.setupForm();\n\n this.config();\n }\n\n /**\n * Setup form controls\n */\n protected setupForm(): void {\n this.Form = new FormGroup({\n root: new FormControl('/', {\n validators: [Validators.required, Validators.minLength(1)],\n updateOn: 'change',\n }),\n includeSource: new FormControl(false),\n });\n\n this.formsService.Form = { Id: 'RootDirectoryForm', Form: this.Form };\n this.onChange();\n }\n\n /**\n * Form configurations\n */\n protected config(): void {\n this.Config = new CardFormConfigModel({\n Icon: 'house',\n Title: 'Root Directory',\n Subtitle:\n 'The directory within your project, in which your code is located. Leave this field empty if your code is not located in a subdirectory',\n FormActions: {\n Message: 'Changes will be applied to your next deployment',\n Actions: [\n {\n Label: 'Clear',\n Color: 'warn',\n ClickEvent: () => this.clearForm(),\n // use arrow function, so 'this' refers to ProjectNameComponent\n // if we used ClickeEvent: this.clearForm, then 'this' would refer to this current Actions object\n Type: 'RESET',\n },\n {\n Label: 'Save',\n Color: 'accent',\n ClickEvent: () => this.save(),\n Type: 'SAVE',\n },\n ],\n },\n });\n }\n\n /**\n * Save form\n */\n protected save(): void {\n this.eacSvc.SaveProjectAsCode({\n ProjectLookup: this.ProjectLookup,\n Project: {\n ...this.Project,\n // Root: this.Root.value,\n // IncludeSource: this.IncludeSource.value\n },\n });\n // this.formsService.UpdateValuesReference({ Id: 'RootDirectoryForm', Form: this.Form });\n }\n\n /**\n * Clear form controls\n */\n protected clearForm(): void {\n // this.Form.reset();\n\n // enable all forms\n this.formsService.DisableForms(false);\n }\n\n /**\n * Listen to form changes\n */\n protected onChange(): void {\n this.Form.valueChanges.subscribe((val: any) => {\n // disable all forms except the current form being edited\n this.formsService.DisableForms('RootDirectoryForm');\n });\n }\n}\n","<form\n fxFlex\n fxLayout=\"row\"\n fxLayout.lt-md=\"column\"\n [formGroup]=\"Form\">\n <lcu-form-card\n [config]=\"Config\"\n [form]=\"Form\"\n [disabled]=\"Form.disabled\">\n <div fxLayout=\"column\">\n <mat-form-field appearance=\"fill\" class=\"margin-right-1\">\n <mat-icon\n matSuffix\n [ngClass]=\"Root.valid ? 'valid-control' : 'invalid-control'\">\n {{ Root.valid ? 'check_circle' : 'cancel' }}\n </mat-icon>\n <input\n type=\"text\"\n matInput\n [placeholder]=\"Root.invalid || Root.disabled ? 'Root Directory' : ''\"\n formControlName=\"root\"\n />\n <mat-hint *ngIf=\"Root.valid\">\n Selected Root Directory\n </mat-hint>\n <mat-error *ngIf=\"Root.hasError('required')\">\n Root Directory is required\n </mat-error>\n </mat-form-field>\n <mat-checkbox\n id=\"includeSource\"\n formControlName=\"includeSource\">\n Include source files outside of the Root Directory in the build step \n </mat-checkbox>\n </div>\n <div class=\"card-divider\"></div>\n </lcu-form-card>\n</form>","import { BaseFormConfigModel } from './../../models/base-form-config.model';\nimport { Component, OnInit } from '@angular/core';\nimport { EaCService } from '../../services/eac.service';\nimport { FormsService } from '../../services/forms.service';\n\n@Component({\n selector: 'lcu-base-form',\n templateUrl: './base-form.component.html',\n styleUrls: ['./base-form.component.scss']\n})\nexport class BaseFormComponent implements OnInit {\n\n /**\n * FormGroup for project name card\n */\n // public Form: FormGroup;\n\n /**\n * Form name\n */\n // protected formName: string;\n\n /**\n * When form is dirty, ties into formsService.DisableForms\n */\n // public IsDirty: boolean;\n\n public FormConfig: BaseFormConfigModel;\n\n constructor(\n protected formsService: FormsService,\n protected eac: EaCService\n ) { }\n\n public ngOnInit(): void {\n\n this.setupForm();\n }\n\n protected setupForm(): void {\n\n this.formsService.Form = {Id: this.FormConfig.FormName, Form: this.FormConfig.Form};\n\n // this.onChange();\n }\n\n /**\n * Listen to form value changes\n */\n protected onChange(): void {\n \n\n }\n\n protected checkFormForChanges(): void {\n this.FormConfig.Form.valueChanges.subscribe((val: object) => {\n\n if (this.formsService.ForRealThough(this.FormConfig.FormName, this.FormConfig.Form)) {\n this.FormConfig.IsDirty = true;\n // disable all forms except the current form being edited\n this.formsService.DisableForms(this.FormConfig.FormName);\n } else {\n\n this.FormConfig.IsDirty = false;\n // enable all forms\n this.formsService.DisableForms(false);\n }\n });\n }\n\n /**\n * Update Form value reference\n */\n protected updateValueRef(): void {\n\n this.formsService.UpdateValuesReference(\n {\n Id: this.FormConfig.FormName,\n Form: this.FormConfig.Form\n });\n }\n\n protected save(): void {\n console.log('PARENT SAVE');\n }\n\n protected resetForm(): void {\n\n }\n}\n","\n","import { Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { CardFormConfigModel } from './card-form-config.model';\n\nexport class BaseFormConfigModel {\n\n public CardConfig?: CardFormConfigModel;\n public Form?: FormGroup;\n public FormName: string;\n public IsDirty?: boolean;\n\n constructor(opts: BaseFormConfigModel) {\n Object.assign(this, opts); // destructure values\n }\n}","import { CardFormConfigModel } from '../../../../../../../models/card-form-config.model';\nimport { FormsService } from '../../../../../../../services/forms.service';\nimport { EaCService } from '../../../../../../../services/eac.service';\nimport { BaseFormComponent } from '../../../../../../base-form/base-form.component';\nimport { Component, OnInit } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { BaseFormConfigModel } from '../../../../../../../models/base-form-config.model';\n\n@Component({\n selector: 'lcu-base-form-test',\n templateUrl: './base-form-test.component.html',\n styleUrls: ['./base-form-test.component.scss']\n})\nexport class BaseFormTestComponent extends BaseFormComponent implements OnInit {\n\n\n /**\n * Access form control for description\n */\n public get Description(): AbstractControl {\n return this.FormConfig.Form.get('description');\n }\n\n /**\n * Access form control for project name\n */\n public get Name(): AbstractControl {\n return this.FormConfig.Form.get('name');\n }\n\n constructor(\n protected formsService: FormsService,\n protected eacSvc: EaCService\n ) {\n\n super(formsService, eacSvc);\n \n }\n\n public ngOnInit(): void {\n this.FormConfig = new BaseFormConfigModel({FormName: 'TestFormComponent'});\n\n this.setupConfig();\n this.setupMyForm();\n\n super.ngOnInit();\n }\n\n protected setupMyForm(): void {\n this.FormConfig.Form = new FormGroup({\n name: new FormControl('', {\n validators: [Validators.required, Validators.minLength(1)],\n updateOn: 'change',\n }),\n description: new FormControl('', {\n validators: [Validators.required, Validators.minLength(1)],\n updateOn: 'change',\n }),\n });\n\n this.checkFormForChanges();\n }\n\n protected setupConfig(): void {\n this.FormConfig.CardConfig = new CardFormConfigModel({\n Icon: 'house',\n Title: 'Test Form',\n Subtitle:\n 'The directory within your project, in which your code is located. Leave this field empty if your code is not located in a subdirectory',\n FormActions: {\n Message: 'Changes will be applied to your next deployment',\n Actions: [\n {\n Label: 'Reset',\n Color: 'warn',\n ClickEvent: () => this.resetForm(),\n // use arrow function, so 'this' refers to ProjectNameComponent\n // if we used ClickeEvent: this.clearForm, then 'this' would refer to this current Actions object\n Type: 'RESET',\n },\n {\n Label: 'Save',\n Color: 'accent',\n ClickEvent: () => this.save(),\n Type: 'SAVE',\n },\n ],\n },\n });\n }\n\n protected save(): void {\n console.log('CHILD SAVE');\n }\n\n}\n","<form \n fxFlex \n fxLayout=\"row\" \n fxLayout.lt-md=\"column\" \n [formGroup]=\"FormConfig.Form\">\n <lcu-form-card\n fxFlex\n [config]=\"FormConfig.CardConfig\"\n [form]=\"FormConfig.Form\"\n [is-dirty]=\"FormConfig.IsDirty\">\n <div fxLayout=\"column\">\n <mat-form-field appearance=\"fill\" fxFlex class=\"margin-right-1 margin-bottom-2\">\n <mat-icon\n matSuffix\n [ngClass]=\"Name.valid ? 'valid-control' : 'invalid-control'\"\n >\n {{ Name.valid ? \"check_circle\" : \"error_outline\" }}\n </mat-icon>\n \n <input\n type=\"text\"\n matInput\n [placeholder]=\"Name.invalid || Name.disabled ? 'Project Name' : ''\"\n formControlName=\"name\"\n />\n \n <mat-hint *ngIf=\"Name.valid\"> Selected Project Name </mat-hint>\n \n <mat-error *ngIf=\"Name.hasError('required')\">\n Project Name is required\n </mat-error>\n </mat-form-field>\n \n <mat-form-field fxFlex appearance=\"fill\" class=\"margin-right-1\">\n <mat-icon\n matSuffix\n [ngClass]=\"Description.valid ? 'valid-control' : 'invalid-control'\"\n >\n {{ Description.valid ? \"check_circle\" : \"error_outline\" }}\n </mat-icon>\n \n <textarea\n type=\"text\"\n matInput\n rows=\"3\"\n [placeholder]=\"\n Description.invalid || Description.disabled\n ? 'Project Description'\n : ''\n \"\n formControlName=\"description\"\n ></textarea>\n \n <mat-hint *ngIf=\"Description.valid\">\n Selected Project Description\n </mat-hint>\n \n <mat-error *ngIf=\"Description.hasError('required')\">\n Project Description is required\n </mat-error>\n </mat-form-field>\n </div>\n \n <div class=\"card-divider\"></div>\n </lcu-form-card>\n</form>","import { Component, OnInit, AfterViewInit, } from '@angular/core';\n\n@Component({\n selector: 'lcu-git-auth',\n templateUrl: './git-auth.component.html',\n styleUrls: ['./git-auth.component.scss'],\n})\nexport class GitAuthComponent implements OnInit, AfterViewInit {\n // Properties\n public ConnectClicked: boolean;\n\n // Constructors\n constructor() {}\n\n // Life Cycle\n public ngAfterViewInit(): void {}\n\n public ngOnInit(): void {}\n\n /**\n * Connect Github Provider\n */\n public ConnectGitHubProvider(): void {\n const reidrectUri = location.pathname + location.search;\n\n // window.location.href = `/.oauth/GitHubOAuth?redirectUri=${reidrectUri}`;\n\n // added below line for the new social ui redirectUri wasn't working\n\n window.location.href = '/.oauth/GitHubOAuth?redirectUri=%2Fdashboard';\n\n this.ConnectClicked = true;\n }\n\n /**\n * Listen for State changes\n */\n}\n","<div \n fxFlex \n fxLayout=\"column\"\n fxLayoutAlign=\"center center\">\n <!-- <div\n label=\"Connect Git\"\n [completed]=\"State.GitHub.HasConnection\"\n > -->\n <!-- <div \n label=\"Connect Git\" \n *ngIf=\"!State.GitHub.HasConnection\"> -->\n <div \n fxLayout=\"column\"\n fxLayoutAlign=\"center center\"\n class=\"connect margin-x-3 margin-bottom-3\">\n <h3 class=\"mat-display-1 margin-bottom-4\">\n Connect your git provider\n </h3>\n\n <!-- href=\"/.oauth/github\" -->\n <a \n (click)=\"ConnectGitHubProvider();\" \n mat-raised-button color=\"primary\" \n class=\"github margin-y-3\"\n [disabled]=\"ConnectClicked\">\n Connect with GitHub\n\n <span class=\"octocat-icon\"></span>\n </a>\n </div>\n <!-- </div> -->\n</div>","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-three-column',\n templateUrl: './three-column.component.html',\n styleUrls: ['./three-column.component.scss']\n})\nexport class ThreeColumnComponent implements OnInit {\n\n public SmallScreen:boolean;\n\n\n\n constructor(public breakpointObserver: BreakpointObserver) { }\n\n ngOnInit(): void {\n this.breakpointObserver\n .observe(['(max-width: 850px)'])\n .subscribe((state: BreakpointState) => {\n // console.log(\"Breakpoint: \", state.matches)\n if (state.matches) {\n this.SmallScreen=true;\n } else {\n this.SmallScreen=false;\n }\n // console.log(\"SmallScrren = \" ,this.SmallScreen);\n });\n }\n\n}\n","\n<div \n class=\"col-container\" \n fxLayout.gt-md=\"row\" \n fxLayout.lt-md=\"column\" \n fxLayoutAlign.lt-md=\"space-evenly center\"\n>\n\n<!-- LEFT COL -->\n\n <div \n class=\"col-left\" \n fxFlex.gt-md=\"25%\"\n fxFlexOrder.lt-md=\"1\"\n >\n <ng-content select=\"[left]\"></ng-content>\n\n </div>\n\n <!-- CENTER COL -->\n\n <div \n class=\"col-center\" \n fxFlex.gt-md=\"50%\" \n fxFlexOrder.lt-md=\"3\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- RIGHT COL -->\n\n <div \n class=\"col-right\" \n fxFlex.gt-md=\"25%\" \n fxFlexOrder.lt-md=\"2\"\n >\n <ng-content select=\"[right]\"></ng-content>\n </div>\n\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-slotted-card',\n templateUrl: './slotted-card.component.html',\n styleUrls: ['./slotted-card.component.scss']\n})\nexport class SlottedCardComponent implements OnInit {\n\n @Input('action-text') \n public ActionText: string;\n\n @Input('action-path')\n public ActionPath: string;\n\n @Input('icon') \n public Icon: string;\n\n @Input('main-slot-description') \n public MainSlotDescription: string;\n\n @Input('main-icon') \n public MainIcon: string;\n\n @Input('show-main-icon') \n public ShowMainIcon: boolean;\n\n @Input('title') \n public Title: string;\n\n @Input('secondary-slot-description') \n public SecondarySlotDescription: string;\n\n @Output('main-action-clicked') \n public MainActionClicked: EventEmitter<{}>;\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public SkeletonEffect: string;\n\n\n constructor(protected eacSvc: EaCService) { \n this.MainActionClicked = new EventEmitter;\n this.SkeletonEffect = 'wave';\n\n this.MainIcon = 'add';\n\n this.ShowMainIcon = true;\n }\n\n public ngOnInit(): void {\n }\n\n public MainActionClickEvent(){\n this.MainActionClicked.emit({});\n }\n\n}\n","<mat-card class=\"col-info-card\">\n <mat-card-header\n class=\"slotted-card-header\"\n fxLayoutAlign=\"space-between center\"\n >\n <div mat-card-avatar fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <mat-icon class=\"header-icon\">{{ Icon }}</mat-icon>\n <div class=\"card-title\">{{ Title }}</div>\n </div>\n\n <mat-icon\n *ngIf=\"!ActionPath && !State?.Loading && ShowMainIcon\"\n class=\"header-icon pointer\"\n (click)=\"MainActionClickEvent()\"\n >\n {{ MainIcon }}\n </mat-icon>\n\n <mat-icon\n *ngIf=\"State?.Loading\"\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"header-icon\"\n >\n add\n </mat-icon>\n </mat-card-header>\n\n <!-- SKELETON CONTENT -->\n\n <ng-container *ngIf=\"State?.Loading\">\n <mat-card-content>\n <div class=\"slot-main-container\">\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"header-description\">\n Descrption text\n </div>\n\n <div class=\"slot-main\">\n <ng-content skeleton-block [effect]=\"SkeletonEffect\"></ng-content>\n </div>\n </div>\n\n <div\n class=\"slot-secondary\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n >\n <div class=\"slot-header-container\">\n <div class=\"slot-header\">\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\">\n Name of the content\n </div>\n </div>\n\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\">\n Description\n </div>\n </div>\n\n <div class=\"slot-actions-container\" fxLayout=\"row\">\n <mat-icon\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"skeleton-item\"\n >\n edit\n </mat-icon>\n </div>\n </div>\n\n <div *ngIf=\"SecondarySlotDescription\" class=\"slot-secondary-container\">\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"header-description\">\n {{ SecondarySlotDescription }}\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions fxLayoutAlign=\"center center\">\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\">\n {{ ActionText }}\n </div>\n </mat-card-actions>\n </ng-container>\n <!-- END SKELETON CONTENT -->\n\n <!-- ACTUAL CONTENT -->\n\n <ng-container *ngIf=\"!State?.Loading\">\n <mat-card-content>\n <div class=\"slot-main-container\">\n <div class=\"header-description\">{{ MainSlotDescription }}</div>\n\n <div class=\"slot-main\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <div *ngIf=\"SecondarySlotDescription\" class=\"slot-secondary-container\">\n <div class=\"header-description\">{{ SecondarySlotDescription }}</div>\n\n <div class=\"slot-secondary\">\n <ng-content select=\"[secondary]\"></ng-content>\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions *ngIf=\"ActionText\" fxLayoutAlign=\"center\">\n <a\n mat-button\n *ngIf=\"ActionPath\"\n class=\"slotted-card-action-btn\"\n [href]=\"ActionPath\"\n color=\"primary\"\n >{{ ActionText }}\n </a>\n\n <a\n mat-button\n *ngIf=\"!ActionPath\"\n class=\"slotted-card-action-btn\"\n (click)=\"MainActionClickEvent()\"\n color=\"primary\"\n >\n {{ ActionText }}\n </a>\n </mat-card-actions>\n </ng-container>\n</mat-card>\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'lcu-upgrade-dialog',\n templateUrl: './upgrade-dialog.component.html',\n styleUrls: ['./upgrade-dialog.component.scss']\n})\nexport class UpgradeDialogComponent implements OnInit {\n\n constructor(public dialogRef: MatDialogRef<UpgradeDialogComponent>,\n ) { }\n\n public ngOnInit(): void {\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"end center\">\n <button mat-icon-button id=\"close-upgrade-button\" (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<div fxLayout=\"row\" fxLayoutAlign=\"space-around center\" id=\"upgrade-content\">\n \n <div class=\"upgrade-container\" fxLayout=\"column\" fxLayoutAlign=\"center start\">\n <div class=\"x-large\">Wow!</div>\n <div class=\"x-large\">Fathym Premium is Free During Beta!</div>\n <div class=\"large\">Really...no credit card required.</div>\n </div>\n <div class=\"upgrade-container\">\n <img src=\"./assets/images/Happy_Lady.png\" id=\"upgrade-promo-image\" alt=\"Fathym Premium Free During Beta\">\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UpgradeDialogComponent } from '../../dialogs/upgrade-dialog/upgrade-dialog.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-project-info-card',\n templateUrl: './project-info-card.component.html',\n styleUrls: ['./project-info-card.component.scss']\n})\nexport class ProjectInfoCardComponent implements OnInit {\n \n @Input('description')\n public Description: string;\n \n @Input('image')\n public Image: string;\n\n @Input('is-editable')\n public IsEditable: boolean;\n\n @Input('is-shareable')\n public IsShareable: boolean;\n\n @Input('name')\n public Name: string;\n\n @Input('subtext')\n public Subtext: string;\n\n @Input('version')\n public Version: string;\n\n @Output('left-click-event')\n public LeftClickEvent: EventEmitter<{}>;\n\n @Output('right-click-event')\n public RightClickEvent: EventEmitter<{}>;\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public SkeletonEffect: string;\n\n\n constructor(protected eacSvc: EaCService,protected dialog: MatDialog,) {\n this.LeftClickEvent = new EventEmitter();\n\n this.RightClickEvent = new EventEmitter();\n\n this.SkeletonEffect = 'wave';\n }\n\n public ngOnInit(): void {\n // console.log(\"loading = \", this.Loading)\n // console.log(\"is shareable: \", this.IsShareable);\n // console.log(\"is editable: \", this.IsEditable);\n }\n\n\n\n public LeftIconClicked(){\n this.LeftClickEvent.emit({});\n }\n\n public RightIconClicked(){\n console.log(\"share clicked\")\n this.RightClickEvent.emit({});\n }\n\n public UpgradeClicked(){\n const dialogRef = this.dialog.open(UpgradeDialogComponent, {\n width: '600px',\n data: {\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n // console.log('The dialog was closed');\n // console.log(\"result:\", result)\n });\n\n }\n\n}\n","<mat-card class=\"project-info-card\">\n <!-- SKELETON CONTENT -->\n <ng-container *ngIf=\"State?.Loading\">\n <div class=\"header-img-container\" fxLayout=\"row\">\n <skeleton-avatar\n class=\"round-project-img\"\n [effect]=\"SkeletonEffect\"\n [size]=\"75\"\n ></skeleton-avatar>\n </div>\n\n <mat-card-header class=\"project-card-header\" fxLayoutAlign=\"center center\">\n <mat-card-title\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"project-card-name\"\n >\n Name of card\n </mat-card-title>\n\n <mat-card-subtitle\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"project-card-description\"\n >\n Description Text\n </mat-card-subtitle>\n\n <mat-card-subtitle class=\"project-card-host\">\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"host-anchor\">\n https://www.fathym.com\n </div>\n </mat-card-subtitle>\n </mat-card-header>\n <mat-card-content class=\"card-content-container\">\n <div\n skeleton-block\n [effect]=\"SkeletonEffect\"\n class=\"stats-container\"\n ></div>\n\n <div\n class=\"promo-container-skeleton\"\n fxLayout=\"column\"\n fxLayoutAlign=\"center center\"\n >\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\">\n Access exclusive tools & insights\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <mat-icon\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"skeleton-item\"\n >emoji_events</mat-icon\n >\n\n <div skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\">\n Upgrade to premium now\n </div>\n </div>\n </div>\n </mat-card-content>\n <mat-card-actions\n class=\"actions-container-skeleton\"\n fxLayoutAlign=\"center center\"\n >\n <div\n skeleton-text\n [effect]=\"SkeletonEffect\"\n class=\"skeleton-item\"\n action\n mat-button\n >\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\" class=\"skeleton-item\"\n >outbox</mat-icon\n >\n Unpack\n </div>\n </mat-card-actions>\n </ng-container>\n <!-- END SKELETON CONTENT -->\n\n <!-- ACTUAL CONTENT -->\n\n <ng-container *ngIf=\"!State?.Loading\">\n <div class=\"header-img-container\" fxLayout=\"row\">\n <div class=\"round-project-img\" fxLayoutAlign=\"center center\">\n <mat-icon *ngIf=\"!Image\" class=\"temp-icon\">flutter_dash</mat-icon>\n <img\n *ngIf=\"Image\"\n [src]=\"Image\"\n [alt]=\"Name\"\n style=\"width: 75px; border-radius: 40px; \"\n />\n </div>\n </div>\n\n <div\n class=\"icon-btn-container\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n >\n <button\n *ngIf=\"IsEditable\"\n mat-icon-button\n id=\"left-icon\"\n (click)=\"LeftIconClicked()\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n *ngIf=\"IsShareable\"\n mat-icon-button\n id=\"right-icon\"\n (click)=\"RightIconClicked()\"\n >\n <mat-icon>share</mat-icon>\n </button>\n </div>\n\n <mat-card-header class=\"project-card-header\" fxLayoutAlign=\"center center\">\n <mat-card-title class=\"project-card-name\" *ngIf=\"Name\">\n {{ Name }}\n </mat-card-title>\n\n <mat-card-subtitle class=\"project-card-description\" *ngIf=\"Description\">\n {{ Description }}\n </mat-card-subtitle>\n\n <mat-card-subtitle class=\"project-card-version\" *ngIf=\"Version\">\n {{ Version }}\n </mat-card-subtitle>\n\n <mat-card-subtitle class=\"project-card-host\">\n <a\n class=\"host-anchor\"\n *ngIf=\"Subtext\"\n [href]=\"'https://' + Subtext\"\n target=\"_blank\"\n fxLayoutAlign=\"center center\"\n >\n {{ Subtext }}\n <mat-icon>launch</mat-icon>\n </a>\n </mat-card-subtitle>\n </mat-card-header>\n\n <mat-card-content class=\"card-content-container\">\n <div class=\"stats-container\">\n <ng-content select=\"[stats]\"></ng-content>\n </div>\n\n <!-- <div class=\"promo-container\"> -->\n <!-- <ng-content select=\"[promo]\"></ng-content> -->\n <div\n class=\"promo-container\"\n fxLayout=\"column\"\n fxLayoutAlign=\"center center\"\n (click)=\"UpgradeClicked()\"\n >\n <div>Access exclusive tools & insights</div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <mat-icon class=\"gold-icon\">emoji_events</mat-icon>\n\n <div class=\"upgrade-text\" (click)=\"UpgradeClicked()\">\n Upgrade to premium now\n </div>\n </div>\n </div>\n <!-- </div> -->\n </mat-card-content>\n <mat-card-actions class=\"actions-container\">\n <ng-content select=\"[action]\"></ng-content>\n </mat-card-actions>\n </ng-container>\n</mat-card>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-analytics-card',\n templateUrl: './analytics-card.component.html',\n styleUrls: ['./analytics-card.component.scss']\n})\nexport class AnalyticsCardComponent implements OnInit {\n\n @Input('title')\n public Title: string;\n\n @Input('subtext')\n public Subtext: string;\n\n // TODO update from any to an analytics model\n @Input('analytics')\n public Analytics: any[];\n\n\n constructor() {\n \n }\n\n ngOnInit(): void {\n }\n\n}\n","<mat-card class=\"analytics-card\">\n <mat-card-header>\n <mat-card-title *ngIf=\"Title\">{{Title}}</mat-card-title>\n <mat-card-subtitle *ngIf=\"Subtext\">{{Subtext}}</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <!-- <ng-container *ngFor=\"let atics of analytics \"> -->\n \n <div class=\"analytic-container\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n <div fxLayout=\"column\">\n <div class=\"analytic-number\">57</div>\n <div class=\"analytic-name\">Unique Visitors</div>\n </div>\n\n <div class=\"percent-change increase\" fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <mat-icon>arrow_drop_up</mat-icon>\n <div>{{ .16 | percent}}</div>\n </div>\n\n <!-- <div class=\"percent-change decrease\" fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <mat-icon>arrow_drop_down</mat-icon>\n <div>16</div>\n </div> -->\n </div>\n\n <!-- </ng-container> -->\n </mat-card-content>\n <!-- <mat-card-actions>\n <button mat-button>LIKE</button>\n <button mat-button>SHARE</button>\n </mat-card-actions> -->\n </mat-card>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FeedItem, FeedItemAction } from '../../models/user-feed.model';\n\n@Component({\n selector: 'lcu-feed-card-sm',\n templateUrl: './feed-card-sm.component.html',\n styleUrls: ['./feed-card-sm.component.scss'],\n})\nexport class FeedCardSmComponent implements OnInit {\n @Input('feed-item')\n public FeedItem: FeedItem;\n\n public IconColor: string;\n\n public Icon: string;\n\n constructor() {}\n\n // Life Cycle\n public ngOnInit(): void {\n this.determineIcon();\n }\n\n // API Methods\n public HandleAction(action: FeedItemAction) {\n console.log('Action clicked');\n }\n\n // Helpers\n protected determineIcon(): void {\n if (this.FeedItem.Status.Code === 0) {\n this.Icon = 'check_circle';\n \n this.IconColor = 'green';\n } else if (this.FeedItem.Status.Code === 1) {\n this.Icon = 'cancel';\n \n this.IconColor = 'red';\n } else if (this.FeedItem.Status.Code === 2) {\n this.Icon = 'sync';\n \n this.IconColor = 'blue';\n }\n }\n}\n","<mat-card class=\"social-card\">\n <div class=\"feed-card-container\" fxLayout=\"row\">\n <mat-icon *ngIf=\"Icon\" [style.color]=\"IconColor\">{{ Icon }}</mat-icon>\n <div class=\"feed-card-main-content\">\n <mat-card-title *ngIf=\"FeedItem.Title\">\n {{ FeedItem.Title }}\n </mat-card-title>\n\n <div *ngIf=\"FeedItem.Subtitle\">{{ FeedItem.Subtitle }}</div>\n\n <ng-content select=\"[more-details]\"></ng-content>\n </div>\n </div>\n\n <mat-card-actions fxLayout=\"row\" fxLayoutAlign=\"end\">\n <ng-content select=\"[actions]\"></ng-content>\n </mat-card-actions>\n</mat-card>\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipInputEvent } from '@angular/material/chips';\nimport { MatSelectChange } from '@angular/material/select';\nimport { BaseModeledResponse, BaseResponse, Guid, Status } from '@lcu/common';\nimport {\n EaCArtifact,\n EaCDevOpsAction,\n EaCEnvironmentAsCode,\n EaCSourceControl,\n} from '@semanticjs/common';\nimport { ApplicationsFlowService } from '../../services/applications-flow.service';\nimport {\n EaCService,\n SaveEnvironmentAsCodeEventRequest,\n} from '../../services/eac.service';\nimport {\n ApplicationsFlowState,\n GitHubBranch,\n GitHubOrganization,\n GitHubRepository,\n ProjectHostingDetails,\n} from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-devops-source-control-form',\n templateUrl: './devops-source-control-form.component.html',\n styleUrls: ['./devops-source-control-form.component.scss'],\n})\nexport class DevopsSourceControlFormComponent\n implements AfterViewInit, OnDestroy, OnInit\n{\n // Fields\n\n @Input('editing-source-control-lookup')\n public EditingSourceControlLookup: string;\n\n @Input('environment')\n public Environment: EaCEnvironmentAsCode;\n\n @Input('environment-lookup')\n public EnvironmentLookup: string;\n\n @Output('save-status-event')\n public SaveStatusEvent: EventEmitter<Status>;\n\n @ViewChild('branches')\n public BranchesInput: ElementRef<HTMLInputElement>;\n\n //Optional input not being used setting to\n // @Input('build-path')\n public BuildPath: string;\n\n //Optional not being used\n // @Input('build-path-disabled')\n public BuildPathDisabled: boolean;\n\n // this input is not being used anywhere\n // @Input('source-control-root')\n public SourceControlRoot: string;\n\n //not being used set to true by default\n // @Input('use-branches')\n public UseBranches: boolean;\n\n //not being used set to false by default\n // @Input('use-build-path')\n public UseBuildPath: boolean;\n\n // Properties\n\n public get ArtifactLookups(): Array<string> {\n return this.DevOpsAction?.ArtifactLookups;\n }\n\n public get ArtifactLookup(): string {\n const artLookup = this.DevOpsAction?.ArtifactLookups\n ? this.DevOpsAction?.ArtifactLookups[0]\n : null;\n return artLookup;\n }\n\n public get Artifact(): EaCArtifact {\n return this.Environment?.Artifacts && this.ArtifactLookup\n ? this.Environment?.Artifacts[this.ArtifactLookup] || {}\n : {};\n }\n public get BranchesFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get(\n this.SourceControlRoot + 'branches'\n );\n }\n\n public get BuildPathFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get(\n this.SourceControlRoot + 'buildPath'\n );\n }\n\n public get DevOpsActionLookups(): Array<string> {\n // console.log(this.DevOpsActions);\n return Object.keys(this.DevOpsActions || {});\n }\n\n public get DevOpsAction(): any {\n return this.Environment.DevOpsActions && this.DevOpsActionLookup\n ? this.Environment.DevOpsActions[this.DevOpsActionLookup] || {}\n : {};\n }\n\n public get DevOpsActionLookup(): string {\n if (!!this.DevOpsActionLookupFormControl?.value) {\n return this.DevOpsActionLookupFormControl.value;\n }\n\n if (!!this.EditingSourceControl?.DevOpsActionTriggerLookups) {\n return this.EditingSourceControl?.DevOpsActionTriggerLookups[0];\n } else {\n return null;\n }\n }\n\n public get DevOpsActionLookupFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get('devOpsActionLookup');\n }\n\n public get DevOpsActions(): { [lookup: string]: EaCDevOpsAction } {\n return this.Environment.DevOpsActions || {};\n }\n\n public get EditingSourceControl(): EaCSourceControl {\n let sc = this.Environment?.Sources\n ? this.Environment?.Sources[this.EditingSourceControlLookup]\n : null;\n\n if (sc == null && this.EditingSourceControlLookup) {\n sc = {};\n }\n\n return sc;\n }\n\n public get MainBranchFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get(\n this.SourceControlRoot + 'mainBranch'\n );\n }\n\n public get OrganizationFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get(\n this.SourceControlRoot + 'organization'\n );\n }\n\n public get RepositoryFormControl(): AbstractControl {\n return this.DevOpsSourceControlFormGroup.get(\n this.SourceControlRoot + 'repository'\n );\n }\n\n public get State(): ApplicationsFlowState {\n return this.eacSvc.State;\n }\n\n public BranchOptions: GitHubBranch[];\n\n public BuildPathOptions: string[];\n\n public CreatingRepository: boolean;\n\n public DevOpsSourceControlFormGroup: FormGroup;\n\n public HostingDetails: ProjectHostingDetails;\n\n public Loading: boolean;\n\n public OrganizationOptions: GitHubOrganization[];\n\n public RepositoryOptions: GitHubRepository[];\n\n public SelectedBranches: string[];\n\n public SkeletonEffect: string;\n\n public readonly SeparatorKeysCodes = [ENTER, COMMA] as const;\n\n // Constructors\n constructor(\n protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService,\n protected formBuilder: FormBuilder\n ) {\n this.SaveStatusEvent = new EventEmitter();\n\n this.BuildPath = null;\n\n this.HostingDetails = new ProjectHostingDetails();\n\n this.SelectedBranches = [];\n\n this.SourceControlRoot = '';\n\n this.SkeletonEffect = \"wave\";\n\n this.UseBranches = true;\n\n this.UseBuildPath = false;\n }\n\n // Life Cycle\n public ngAfterViewInit(): void {}\n\n public ngOnDestroy(): void {\n this.destroyFormControls();\n }\n\n public ngOnInit(): void {\n\n console.log(\"source control lookup\", this.EditingSourceControlLookup)\n\n if (this.EditingSourceControlLookup === null) {\n this.CreateNewSourceControl();\n }\n console.log(\"source control\", this.EditingSourceControl);\n\n if (this.EditingSourceControl != null) {\n this.DevOpsSourceControlFormGroup = this.formBuilder.group({});\n\n this.setupFormControls();\n }\n\n this.RefreshOrganizations();\n }\n\n // API Methods\n public AddBranchOption(event: MatChipInputEvent): void {\n this.addBranchOption(event.value);\n\n event.input.value = '';\n }\n\n public BranchOptionSelected(event: MatAutocompleteSelectedEvent): void {\n this.addBranchOption(event.option.value);\n }\n\n public BranchesChanged(branches: string[]): void {\n this.loadProjectHostingDetails();\n }\n\n public BuildPathChanged(event: MatSelectChange): void {\n //do something??\n }\n\n public CreateNewSourceControl(): void {\n this.SetEditingSourceControl(Guid.CreateRaw());\n }\n\n public CreateRepository(): void {\n this.CreatingRepository = true;\n\n this.RepositoryFormControl.reset();\n }\n\n public CancelCreateRepository(): void {\n this.CreatingRepository = false;\n }\n\n public DevOpsActionLookupChanged(event: MatSelectChange): void {\n this.configureDevOpsAction();\n }\n\n public MainBranchChanged(event: MatSelectChange): void {\n this.emitBranchesChanged();\n }\n\n public OrganizationChanged(event: MatSelectChange): void {\n const org = this.OrganizationFormControl;\n\n this.RepositoryFormControl.reset();\n\n if (this.UseBranches) {\n this.BranchesFormControl.reset();\n\n this.SelectedBranches = [];\n }\n\n this.listRepositories();\n }\n\n public RefreshOrganizations(): void {\n // this.Loading = true;\n this.listOrganizations();\n\n this.OrganizationFormControl?.reset();\n\n this.RepositoryFormControl?.reset();\n\n if (this.UseBranches) {\n this.BranchesFormControl?.reset();\n }\n }\n\n public RemoveBranchOption(option: string): void {\n const index = this.SelectedBranches.indexOf(option);\n\n if (index >= 0) {\n this.SelectedBranches.splice(index, 1);\n }\n\n this.emitBranchesChanged();\n }\n\n public RepositoryChanged(event: MatSelectChange): void {\n const repo = this.RepositoryFormControl;\n\n if (this.UseBranches) {\n this.BranchesFormControl.reset();\n\n this.SelectedBranches = [];\n\n this.listBranches();\n }\n\n if (!this.UseBranches) {\n this.listBuildPaths();\n }\n }\n\n public SaveRepository(): void {\n this.Loading = true;\n\n const org = this.OrganizationFormControl.value;\n\n const repoName = this.RepositoryFormControl.value;\n\n this.appsFlowSvc\n .CreateRepository(org, repoName)\n .subscribe((response: BaseResponse) => {\n if (response.Status.Code === 0) {\n this.listRepositories(repoName);\n\n this.CreatingRepository = false;\n } else {\n // TODO: Need to surface an error to the user...\n\n this.Loading = false;\n }\n });\n }\n\n public SetEditingSourceControl(scLookup: string): void {\n this.EditingSourceControlLookup = scLookup;\n }\n\n public SubmitSourceControl() {\n console.log(\n 'source control submitted: ',\n this.DevOpsSourceControlFormGroup.value\n );\n this.SaveSourceControl();\n }\n\n public SaveSourceControl(): void {\n const saveEnvReq: SaveEnvironmentAsCodeEventRequest = {\n Environment: {\n ...this.Environment,\n Sources: this.Environment.Sources || {},\n },\n EnvironmentLookup: this.EnvironmentLookup,\n EnterpriseDataTokens: {},\n };\n\n let source: EaCSourceControl = {\n ...this.EditingSourceControl,\n Branches: this.SelectedBranches,\n MainBranch: this.MainBranchFormControl.value,\n };\n\n source = {\n ...source,\n Type: 'GitHub',\n Name: `@${this.OrganizationFormControl.value}/${this.RepositoryFormControl.value}`,\n DevOpsActionTriggerLookups: [this.DevOpsActionLookup],\n Organization: this.OrganizationFormControl.value,\n Repository: this.RepositoryFormControl.value,\n };\n\n const scLookup = `github://${source.Organization}/${source.Repository}`;\n\n saveEnvReq.Environment.Sources[scLookup] = source;\n\n console.log('save SC: ', saveEnvReq)\n\n let resp = this.eacSvc.SaveEnvironmentAsCode(saveEnvReq);\n\n resp.then((res) => {\n this.SaveStatusEvent.emit(res);\n });\n }\n\n // Helpers\n\n protected addBranchOption(value: string): void {\n value = (value || '').trim();\n\n if (value && this.SelectedBranches.indexOf(value) < 0) {\n this.SelectedBranches.push(value);\n }\n\n this.BranchesInput.nativeElement.blur();\n\n this.emitBranchesChanged();\n }\n\n protected configureDevOpsAction(): void {\n setTimeout(() => {\n this.DevOpsActionLookupFormControl.setValue(this.DevOpsActionLookup);\n }, 0);\n }\n\n protected destroyFormControls(): void {\n this.DevOpsSourceControlFormGroup.removeControl(\n [this.SourceControlRoot, 'mainBranch'].join('')\n );\n\n this.DevOpsSourceControlFormGroup?.removeControl(\n [this.SourceControlRoot, 'branches'].join('')\n );\n\n this.DevOpsSourceControlFormGroup?.removeControl(\n [this.SourceControlRoot, 'buildPath'].join('')\n );\n\n this.SelectedBranches = [];\n\n this.DevOpsSourceControlFormGroup?.removeControl(\n [this.SourceControlRoot, 'organization'].join('')\n );\n\n this.DevOpsSourceControlFormGroup?.removeControl(\n [this.SourceControlRoot, 'repository'].join('')\n );\n }\n\n protected emitBranchesChanged(): void {\n if (\n this.SelectedBranches?.length > 0 &&\n (!this.MainBranchFormControl.value ||\n this.SelectedBranches.indexOf(this.MainBranchFormControl.value) < 0)\n ) {\n this.MainBranchFormControl.setValue(\n this.SelectedBranches.find(\n (branch) => branch === 'main' || branch === 'master'\n ) || this.SelectedBranches[0]\n );\n } else if (this.SelectedBranches?.length <= 0) {\n this.MainBranchFormControl.reset();\n }\n\n this.BranchesFormControl.setValue(this.SelectedBranches.join(','));\n\n this.BranchesChanged(this.SelectedBranches || []);\n }\n\n protected listBranches(): void {\n if (this.UseBranches) {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListBranches(\n this.OrganizationFormControl.value,\n this.RepositoryFormControl.value\n )\n .subscribe((response: BaseModeledResponse<GitHubBranch[]>) => {\n this.BranchOptions = response.Model;\n\n this.Loading = false;\n\n if (this.EditingSourceControl?.Branches?.length > 0) {\n this.SelectedBranches = this.EditingSourceControl.Branches;\n } else if (this.BranchOptions?.length === 1) {\n this.BranchesFormControl.setValue(this.BranchOptions[0].Name);\n\n this.SelectedBranches = [this.BranchOptions[0].Name];\n }\n\n this.emitBranchesChanged();\n\n this.listBuildPaths();\n });\n }\n }\n\n protected listBuildPaths(): void {\n if (this.UseBuildPath) {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListBuildPaths(\n this.OrganizationFormControl.value,\n this.RepositoryFormControl.value\n )\n .subscribe((response: BaseModeledResponse<string[]>) => {\n this.BuildPathOptions = response.Model;\n\n this.Loading = false;\n\n if (this.BuildPathOptions?.length === 1) {\n this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);\n }\n });\n }\n }\n\n protected listOrganizations(): void {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListOrganizations()\n .subscribe((response: BaseModeledResponse<GitHubOrganization[]>) => {\n this.OrganizationOptions = response.Model;\n console.log(\"Organization Options: \", this.OrganizationOptions);\n\n this.Loading = false;\n\n if (this.EditingSourceControl?.Organization) {\n setTimeout(() => {\n this.OrganizationFormControl.setValue(\n this.EditingSourceControl.Organization\n );\n\n this.listRepositories(this.EditingSourceControl?.Repository);\n }, 0);\n }\n });\n }\n\n protected listRepositories(activeRepo: string = null): void {\n this.Loading = true;\n\n this.appsFlowSvc\n .ListRepositories(this.OrganizationFormControl.value)\n .subscribe((response: BaseModeledResponse<GitHubRepository[]>) => {\n this.RepositoryOptions = response.Model;\n\n this.Loading = false;\n\n if (activeRepo) {\n setTimeout(() => {\n this.RepositoryFormControl.setValue(activeRepo);\n\n this.listBranches();\n\n if (!this.UseBranches) {\n this.listBuildPaths();\n }\n }, 0);\n } else if (this.RepositoryOptions?.length <= 0) {\n this.CreatingRepository = true;\n }\n });\n }\n\n protected loadProjectHostingDetails(): void {\n if (this.SelectedBranches?.length > 0) {\n this.HostingDetails.Loading = true;\n\n this.appsFlowSvc\n .LoadProjectHostingDetails()\n .subscribe(\n (response: BaseModeledResponse<ProjectHostingDetails>) => {\n this.HostingDetails = response.Model;\n\n this.HostingDetails.Loading = false;\n\n this.configureDevOpsAction();\n },\n (err) => {\n this.HostingDetails.Loading = false;\n }\n );\n }\n }\n\n protected setupFormControls(): void {\n this.destroyFormControls();\n\n console.log(\"Source Control: \", this.EditingSourceControl);\n\n this.DevOpsSourceControlFormGroup.addControl(\n 'devOpsActionLookup',\n new FormControl(this.DevOpsActionLookup || '', [])\n );\n\n this.DevOpsSourceControlFormGroup.addControl(\n [this.SourceControlRoot, 'organization'].join(''),\n new FormControl(\n this.EditingSourceControl.Organization ?? '',\n Validators.required\n )\n );\n\n this.DevOpsSourceControlFormGroup.addControl(\n [this.SourceControlRoot, 'repository'].join(''),\n new FormControl(\n this.EditingSourceControl.Repository ?? '',\n Validators.required\n )\n );\n\n if (this.UseBranches) {\n this.DevOpsSourceControlFormGroup.addControl(\n [this.SourceControlRoot, 'branches'].join(''),\n new FormControl(\n this.EditingSourceControl?.Branches ?? '',\n Validators.required\n )\n );\n\n this.SelectedBranches = this.EditingSourceControl?.Branches;\n\n this.DevOpsSourceControlFormGroup.addControl(\n [this.SourceControlRoot, 'mainBranch'].join(''),\n new FormControl(\n this.EditingSourceControl.MainBranch ?? '',\n Validators.required\n )\n );\n }\n\n if (this.UseBuildPath) {\n this.DevOpsSourceControlFormGroup.addControl(\n [this.SourceControlRoot, 'buildPath'].join(''),\n new FormControl(this.BuildPath ?? '', Validators.required)\n );\n }\n }\n}\n","<form \n class=\"form-card\" \n [formGroup]=\"DevOpsSourceControlFormGroup\" \n (ngSubmit)=\"SubmitSourceControl()\"\n>\n\n <!-- <mat-card class=\"spread\" class=\"sc-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Source Control </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-icon matSuffix matTooltip=\"Configure source control, DevOps CI/CD, and artifacts.\">\n info_outline\n </mat-icon>\n </mat-card-header> -->\n\n <!-- <mat-card-content> -->\n\n <ng-container *ngIf=\"State?.Loading\">\n <lcu-loader [loading]=\"State?.Loading\"></lcu-loader>\n\n <!-- <skeleton-block \n class=\"s-block\"\n [effect]=\"SkeletonEffect\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n [effect]=\"SkeletonEffect\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n [effect]=\"SkeletonEffect\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n [effect]=\"SkeletonEffect\" \n ></skeleton-block> -->\n\n </ng-container>\n\n <ng-container *ngIf=\"!State?.Loading\">\n\n <div class=\"card\">\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select \n formControlName=\"devOpsActionLookup\" \n placeholder=\"DevOps Action\"\n [disabled]=\"HostingDetails?.Loading\" \n (selectionChange)=\"DevOpsActionLookupChanged($event)\"\n >\n <ng-container *ngFor=\"let devOpsActionLookup of DevOpsActionLookups\">\n <mat-option \n [value]=\"devOpsActionLookup\" \n *ngIf=\"DevOpsActions[devOpsActionLookup]; let devOpsAction\">\n {{ devOpsAction.Name }}\n </mat-option>\n </ng-container>\n\n <mat-option value=\"\">-- Create New --</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"card\" *ngIf=\"OrganizationFormControl?.valid || !Loading\">\n <mat-form-field \n class=\"mat-full-width with-hint margin-bottom\" \n *ngIf=\"OrganizationOptions?.length > 0\"\n >\n <mat-icon class=\"org-icon\" matPrefix>corporate_fare</mat-icon>\n\n <mat-select \n [formControlName]=\"SourceControlRoot + 'organization'\" \n placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\" \n [disabled]=\"Loading || HostingDetails?.Loading\" \n required\n >\n <ng-container *ngFor=\"let orgOpt of OrganizationOptions\">\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-icon matSuffix (click)=\"RefreshOrganizations()\" matTooltip=\"Refresh Organization\" color=\"accent\"> refresh </mat-icon>\n\n <a matSuffix href=\"/.oauth/github?oauth-force-edit=true\" target=\"_blank\" color=\"accent\">\n <mat-icon color=\"accent\" matTooltip=\"Re-authorize Organizations\"> launch </mat-icon>\n </a>\n\n <mat-hint>\n If you don't have an organization or would like to create a new one,\n <a href=\"https://github.com/account/organizations/new\" class=\"primary-link\" target=\"_blank\">\n start here\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"card\" *ngIf=\"\n RepositoryFormControl?.valid ||\n (OrganizationFormControl?.valid && !Loading)\n \">\n <mat-form-field class=\"mat-full-width\">\n <mat-icon class=\"org-icon\" matPrefix>description</mat-icon>\n\n <mat-select [formControlName]=\"SourceControlRoot + 'repository'\" \n [placeholder]=\"\n OrganizationFormControl?.valid\n ? 'Repository'\n : 'Repository (select organization first)'\n \" [disabled]=\"\n !OrganizationFormControl?.valid || Loading || HostingDetails?.Loading\n \" (selectionChange)=\"RepositoryChanged($event)\" *ngIf=\"!CreatingRepository\" required>\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <input matInput placeholder=\"Repository (creates new if does not exist)\"\n [formControlName]=\"SourceControlRoot + 'repository'\" *ngIf=\"CreatingRepository\"\n [fxHide]=\"Loading || HostingDetails?.Loading\" required />\n\n <mat-icon matSuffix (click)=\"CreateRepository()\" [fxHide]=\"Loading || HostingDetails?.Loading\"\n *ngIf=\"!CreatingRepository && OrganizationFormControl?.valid\">\n add_circle\n </mat-icon>\n\n <button mat-button type=\"button\" (click)=\"SaveRepository()\"\n *ngIf=\"CreatingRepository && RepositoryFormControl?.valid\">\n\n <mat-icon matSuffix color=\"primary\">\n save\n </mat-icon>\n </button>\n\n <button mat-button type=\"button\" (click)=\"CancelCreateRepository()\" *ngIf=\"CreatingRepository\">\n\n <mat-icon matSuffix>\n cancel\n </mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div class=\"card\" *ngIf=\"\n (BranchesFormControl?.valid ||\n (OrganizationFormControl?.valid &&\n RepositoryFormControl?.valid &&\n !Loading)) &&\n !CreatingRepository &&\n UseBranches\n \">\n <mat-form-field class=\"mat-full-width\">\n <mat-icon class=\"org-icon\" matPrefix>account_tree</mat-icon>\n\n <mat-label>Selected Branches</mat-label>\n\n <mat-autocomplete (optionSelected)=\"BranchOptionSelected($event)\" #branchOptions=\"matAutocomplete\">\n <ng-container *ngFor=\"let branchOpt of BranchOptions\">\n <mat-option [value]=\"branchOpt.Name\">\n {{ branchOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n\n <mat-chip-list #selectedBranches>\n <mat-chip [removable]=\"true\" (removed)=\"RemoveBranchOption(selBranch)\"\n *ngFor=\"let selBranch of SelectedBranches\">\n {{ selBranch }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n\n <input matInput placeholder=\"New Branch...\" [formControlName]=\"SourceControlRoot + 'branches'\" #branches\n [matAutocomplete]=\"branchOptions\" [matChipInputFor]=\"selectedBranches\"\n [matChipInputSeparatorKeyCodes]=\"SeparatorKeysCodes\" [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"AddBranchOption($event)\" [disabled]=\"Loading || HostingDetails?.Loading\"\n required />\n </mat-chip-list>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width with-hint\" [fxShow]=\"SelectedBranches?.length > 1\">\n <mat-icon class=\"org-icon\" matPrefix>account_tree</mat-icon>\n\n <mat-select [formControlName]=\"SourceControlRoot + 'mainBranch'\" placeholder=\"Main Branch\"\n [disabled]=\"Loading || HostingDetails?.Loading\" (selectionChange)=\"MainBranchChanged($event)\" required>\n <ng-container *ngFor=\"let branch of SelectedBranches\">\n <mat-option [value]=\"branch\">\n {{ branch }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-icon matSuffix (click)=\"RefreshOrganizations()\" color=\"accent\"> refresh </mat-icon>\n\n <a matSuffix mat-icon-button href=\"/.oauth/github?oauth-force-edit=true\" target=\"_blank\" color=\"accent\">\n <mat-icon matTooltip=\"Re-authorize Organizations\" color=\"accent\"> launch </mat-icon>\n </a>\n\n <mat-hint>\n If you don't have an organization or would like to create a new one,\n <a href=\"https://github.com/account/organizations/new\" target=\"_blank\"class=\"primary-link\">\n start here\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"card\" *ngIf=\"\n (BuildPathFormControl?.valid ||\n (OrganizationFormControl?.valid &&\n RepositoryFormControl?.valid &&\n !Loading)) &&\n !CreatingRepository &&\n UseBuildPath\n \">\n <mat-form-field class=\"mat-full-width with-hint\">\n <mat-icon class=\"org-icon\" matPrefix>build</mat-icon>\n\n <mat-select [formControlName]=\"SourceControlRoot + 'buildPath'\" placeholder=\"Build Path\"\n [disabled]=\"Loading || BuildPathDisabled\" (selectionChange)=\"BuildPathChanged($event)\" required>\n <ng-container *ngFor=\"let buildPath of BuildPathOptions\">\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <mat-hint>\n The build path identifies which build action to use for your\n configuration.\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"Loading\">\n <div class=\"spread\">\n <lcu-loader style=\"margin: auto\" [loading]=\"true\"></lcu-loader>\n\n <div class=\"margin-3\">\n <h4 class=\"mat-title\" *ngIf=\"!OrganizationFormControl?.valid\">\n Loading organizations\n </h4>\n\n <h4 class=\"mat-title\" *ngIf=\"\n OrganizationFormControl?.valid && !RepositoryFormControl?.valid\n \">\n Loading repositories\n </h4>\n\n <h4 class=\"mat-title\" *ngIf=\"RepositoryFormControl?.valid && !BranchesFormControl?.valid\">\n Loading branches\n </h4>\n\n <h4 class=\"mat-title\" *ngIf=\"\n (RepositoryFormControl?.valid || BranchesFormControl?.valid) &&\n !BuildPathFormControl?.valid\n \">\n Loading build paths\n </h4>\n </div>\n </div>\n </div>\n </ng-container>\n <!-- </div> -->\n\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n mat-raised-button \n *ngIf=\"!State?.Loading\"\n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!DevOpsSourceControlFormGroup.valid || !DevOpsSourceControlFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Source Control\n </button>\n <lcu-loader [loading]=\"State?.Loading\"></lcu-loader> -->\n \n <!-- </mat-card-actions> -->\n <!-- </mat-card> -->\n</form>","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Status } from '@lcu/common';\nimport { EaCEnvironmentAsCode } from '@semanticjs/common';\nimport { DevopsSourceControlFormComponent } from '../../controls/devops-source-control-form/devops-source-control-form.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\nexport interface SCDialogData {\n environment: EaCEnvironmentAsCode;\n environmentLookup: string;\n scLookup: string;\n}\n\n@Component({\n selector: 'lcu-source-control-dialog',\n templateUrl: './source-control-dialog.component.html',\n styleUrls: ['./source-control-dialog.component.scss']\n})\nexport class SourceControlDialogComponent implements OnInit {\n\n @ViewChild(DevopsSourceControlFormComponent)\n public DevopsSourceControl: DevopsSourceControlFormComponent;\n\n public get DevOpsSourceControlFormGroup(): FormGroup {\n return this.DevopsSourceControl?.DevOpsSourceControlFormGroup;\n }\n\n public get HasConnection(): boolean{\n return this.State.GitHub.HasConnection;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n\n public ErrorMessage: string;\n\n constructor( public dialogRef: MatDialogRef<SourceControlDialogComponent>,\n protected eacSvc: EaCService,\n @Inject(MAT_DIALOG_DATA) public data: SCDialogData,\n protected snackBar: MatSnackBar) { }\n\n public ngOnInit(): void {\n \n }\n\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public DeleteSourceControl(scLookup: string): void {\n if (\n confirm(`Are you sure you want to delete source control '${scLookup}'?`)\n ) {\n this.eacSvc.DeleteSourceControl(scLookup);\n this.CloseDialog();\n }\n }\n\n public HandleSaveStatusEvent(event: Status){\n console.log(\"event to save: \", event);\n if (event.Code === 0){\n this.snackBar.open(\"Source Control Succesfully Saved\", \"Dismiss\",{\n duration: 5000\n });\n this.CloseDialog();\n }\n else{\n this.ErrorMessage = event.Message;\n }\n }\n\n public SaveSourceControl(){\n this.DevopsSourceControl.SaveSourceControl();\n }\n\n}\n","\n<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Source Control</h2>\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n <ng-container *ngIf=\"!HasConnection\">\n \n <lcu-git-auth></lcu-git-auth>\n\n </ng-container>\n\n <ng-conatiner *ngIf=\"HasConnection\" fxLayout=\"column\">\n\n <div fxLayoutAlign=\"center center\">\n <lcu-devops-source-control-form\n [environment]=\"data.environment\"\n [environment-lookup]=\"data.environmentLookup\"\n [editing-source-control-lookup]=\"data.scLookup\"\n (save-status-event)=\"HandleSaveStatusEvent($event)\">\n </lcu-devops-source-control-form>\n </div>\n \n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n </mat-error>\n\n </ng-conatiner>\n\n</mat-dialog-content>\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"space-between center\"\n \n>\n <div fxLayoutAlign=\"start center\">\n <button\n mat-raised-button\n color=\"warn\"\n (click)=\"DeleteSourceControl(data.scLookup)\"\n matTooltip=\"Delete {{ data.scLookup }}\"\n >\n Delete\n </button>\n </div>\n\n <div fxLayoutAlign=\"end center\">\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"43%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n\n <button \n class=\"action-button\"\n mat-raised-button \n *ngIf=\"!State?.Loading\" \n fxFlex=\"30%\" \n color=\"primary\" \n (click)=\"SaveSourceControl()\"\n [disabled]=\"!DevOpsSourceControlFormGroup?.valid || !DevOpsSourceControlFormGroup?.dirty\">\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n </div>\n\n</mat-dialog-actions>\n\n\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FeedItem, FeedItemAction } from '../../models/user-feed.model';\nimport moment from 'moment';\nimport { JsonHubProtocol } from '@aspnet/signalr';\nimport { EaCService } from '../../services/eac.service';\nimport { BaseModeledResponse } from '@lcu/common';\nimport { SourceControlDialogComponent } from '../../dialogs/source-control-dialog/source-control-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { EaCEnvironmentAsCode } from '@semanticjs/common';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'lcu-main-feed-card',\n templateUrl: './main-feed-card.component.html',\n styleUrls: ['./main-feed-card.component.scss'],\n})\nexport class MainFeedCardComponent implements OnInit {\n public get ActiveEnvironment(): EaCEnvironmentAsCode {\n return this.State?.EaC?.Environments[this.ActiveEnvironmentLookup];\n }\n\n public get ActiveEnvironmentLookup(): string {\n // TODO: Eventually support multiple environments\n const envLookups = Object.keys(this.State?.EaC?.Environments || {});\n\n return envLookups[0];\n }\n\n public get Environment(): EaCEnvironmentAsCode {\n // console.log(\"Ent Environment var: \", this.State?.EaC?.Environments[this.State?.EaC?.Enterprise?.PrimaryEnvironment]);\n return this.State?.EaC?.Environments[\n this.State?.EaC?.Enterprise?.PrimaryEnvironment\n ];\n }\n\n @Input('feed-item')\n public FeedItem: FeedItem;\n\n public get Icon(): string {\n if (this.FeedItem.Status.Code === 0) {\n return 'check_circle';\n } else if (this.FeedItem.Status.Code === 1) {\n return 'cancel';\n } else if (this.FeedItem.Status.Code === 2) {\n return 'sync';\n } else {\n return 'help_outline';\n }\n }\n\n public get IconColor(): string {\n if (this.FeedItem.Status.Code === 0) {\n return 'green';\n } else if (this.FeedItem.Status.Code === 1) {\n return 'red';\n } else if (this.FeedItem.Status.Code === 2) {\n return 'blue';\n } else {\n return 'gray';\n }\n }\n\n public get State(): ApplicationsFlowState {\n return this.eacSvc.State;\n }\n\n constructor(\n protected eacSvc: EaCService,\n protected dialog: MatDialog,\n private sanitizer: DomSanitizer\n ) {}\n\n // Life Cycle\n public ngOnInit(): void {\n this.handleRefresh();\n }\n\n // API Methods\n public CalculateTimelapse(timestamp: Date) {\n return moment(timestamp).fromNow();\n }\n\n public HandleAction(action: FeedItemAction) {\n if (action.ActionType == 'Link') {\n if (action.Action.startsWith('http')) {\n window.open(action.Action, '_blank');\n } else {\n window.location.href = action.Action;\n }\n } else if (action.ActionType == 'Modal') {\n if (action.Action == 'AddSourceControl') {\n this.OpenSourceControlDialog(null);\n } else {\n alert('other modaled ' + action.Action);\n }\n }\n }\n\n public OpenSourceControlDialog(scLookup: string): void {\n const dialogRef = this.dialog.open(SourceControlDialogComponent, {\n width: '550px',\n data: {\n environment: this.Environment,\n environmentLookup: this.ActiveEnvironmentLookup,\n scLookup: scLookup,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n // console.log('The dialog was closed');\n // console.log(\"result:\", result)\n });\n }\n\n public SafeHtml(html: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n // Helpers\n protected handleRefresh(): void {\n if (this.FeedItem?.RefreshLink) {\n setTimeout(() => {\n this.eacSvc.CheckUserFeedItem(this.FeedItem).subscribe(\n async (response: BaseModeledResponse<FeedItem>) => {\n if (response.Status.Code === 0) {\n this.FeedItem = response.Model;\n\n this.handleRefresh();\n } else {\n console.log(response);\n }\n },\n (err) => {\n console.log(err);\n }\n );\n }, 5000);\n }\n }\n}\n","<mat-card class=\"social-card\">\n <mat-card-header>\n <img\n mat-card-avatar\n class=\"example-header-image\"\n [src]=\"FeedItem.Avatar\"\n *ngIf=\"FeedItem.Avatar\"\n />\n\n <mat-card-title *ngIf=\"FeedItem.Title\">{{ FeedItem.Title }}</mat-card-title>\n\n <mat-card-subtitle>\n <div *ngIf=\"FeedItem.Subtitle\">{{ FeedItem.Subtitle }}</div>\n\n <div *ngIf=\"FeedItem.Subtext\">{{ FeedItem.Subtext }}</div>\n\n <div *ngIf=\"FeedItem.Status\">\n <mat-icon\n *ngIf=\"Icon\"\n [style.color]=\"IconColor\"\n [class.spin]=\"FeedItem.Status?.Code == 2\"\n >\n {{ Icon }}\n </mat-icon>\n\n <span *ngIf=\"FeedItem.Timestamp\">\n {{ CalculateTimelapse(FeedItem.Timestamp) }}\n </span>\n </div>\n </mat-card-subtitle>\n </mat-card-header>\n\n <div *ngIf=\"!FeedItem.IsShortForm\">\n <div class=\"feed-card-container\">\n <div class=\"feed-card-main-content\">\n <mat-tab-group>\n <ng-container *ngFor=\"let tab of FeedItem.Tabs\">\n <mat-tab [label]=\"tab.Title\">\n <div class=\"tab\">\n <ng-container *ngIf=\"tab.Data?.Commit?.Message\">\n <div class=\"commit-message\">\n {{ tab.Data?.Commit?.Message }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"tab.Data?.Content\">\n <div class=\"content\">\n {{ tab.Data?.Content }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"tab.Data?.Video\">\n <div\n class=\"video\"\n [innerHTML]=\"SafeHtml(tab.Data.Video)\"\n ></div>\n </ng-container>\n\n <ng-container *ngIf=\"tab.Data?.Comments\">\n <div class=\"comments\">\n <ng-container *ngIf=\"tab.Data?.Comments?.length <= 0\">\n <h4>No comments provided</h4>\n </ng-container>\n\n <mat-card *ngFor=\"let comment of tab.Data?.Comments\">\n <mat-card-header>\n <img\n mat-card-avatar\n class=\"example-header-image\"\n [src]=\"comment.Avatar\"\n *ngIf=\"comment.Avatar\"\n />\n\n <mat-card-title>\n {{ comment.Author }}\n commented on\n {{ comment.UpdatedAt }}\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n {{ comment.Comment }}\n </mat-card-content>\n </mat-card>\n </div>\n </ng-container>\n </div>\n </mat-tab>\n </ng-container>\n </mat-tab-group>\n </div>\n </div>\n </div>\n\n <mat-card-actions fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <div fxFlex></div>\n\n <ng-container *ngFor=\"let action of FeedItem.Actions\">\n <button mat-button [color]=\"action.Color\" (click)=\"HandleAction(action)\">\n <mat-icon *ngIf=\"action.Icon\">{{ action.Icon }}</mat-icon>\n\n {{ action.Text }}\n </button>\n </ng-container>\n </mat-card-actions>\n</mat-card>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-two-column-header',\n templateUrl: './two-column-header.component.html',\n styleUrls: ['./two-column-header.component.scss']\n})\nexport class TwoColumnHeaderComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div class=\"col-container\" fxLayout=\"row\">\n\n <div class=\"col-left\" fxFlex=\"15%\" >\n <ng-content select=\"[left]\"></ng-content>\n </div>\n\n <div class=\"col-center\" fxFlex=\"85%\">\n <ng-content></ng-content>\n </div>\n\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-card-carousel',\n templateUrl: './card-carousel.component.html',\n styleUrls: ['./card-carousel.component.scss']\n})\nexport class CardCarouselComponent implements OnInit {\n\n @Input('stats')\n public Stats: any[];\n\n protected carouselIndex: number;\n\n constructor() { \n this.carouselIndex = 0;\n }\n\n ngOnInit(): void {\n }\n\n public ngAfterViewInit(){\n this.assignCarouselClass();\n }\n\n public LeftChevronClicked(){\n\n this.removeCarouselClasses();\n \n if(this.carouselIndex === 0){\n this.carouselIndex = this.Stats.length-1;\n }\n else{\n this.carouselIndex--;\n }\n \n this.assignCarouselClass();\n \n }\n\n public MoreDetailsClicked(){\n console.log(\"More details clicked on carousel item\", this.Stats[this.carouselIndex]);\n }\n \n public RightChevronClicked(){\n this.removeCarouselClasses();\n \n if(this.carouselIndex === this.Stats.length-1){\n this.carouselIndex = 0;\n }\n else{\n this.carouselIndex++;\n }\n \n this.assignCarouselClass();\n }\n\n \n //HELPERS\n\n protected removeCarouselClasses(){\n for(let i=0; i<this.Stats.length; i++){\n if(i === this.carouselIndex){\n (<HTMLElement>document.getElementById(\"carousel-\"+this.carouselIndex)).classList.remove('active');\n }\n else{\n (<HTMLElement>document.getElementById(\"carousel-\"+i)).classList.remove('hidden');\n }\n }\n }\n\n protected assignCarouselClass(){\n for(let i=0; i<this.Stats.length; i++){\n if(i === this.carouselIndex){\n (<HTMLElement>document.getElementById(\"carousel-\"+this.carouselIndex)).classList.add('active');\n }\n else{\n (<HTMLElement>document.getElementById(\"carousel-\"+i)).classList.add('hidden');\n }\n }\n }\n\n}\n","<div stats class=\"carousel-container\">\n <div class=\"chevron-container\" fxLayout=\"row\">\n <button mat-icon-button class=\"chevron-button\" id=\"left-chevron\" (click)=\"LeftChevronClicked()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button mat-icon-button class=\"chevron-button\" id=\"right-chevron\" (click)=\"RightChevronClicked()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n <ng-container *ngFor=\"let stat of Stats; let i = index\">\n <div class=\"carousel-item\" [id]=\"'carousel-'+i\">\n <div class=\"carousel-title\">{{stat.Name}}</div>\n <div class=\"carousel-stat\">{{stat.Stat}}</div>\n </div>\n </ng-container>\n <div (click)=\"MoreDetailsClicked()\">More details</div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { EaCApplicationAsCode } from '@semanticjs/common';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-security-toggle',\n templateUrl: './security-toggle.component.html',\n styleUrls: ['./security-toggle.component.scss']\n})\nexport class SecurityToggleComponent implements OnInit {\n\n @Input('editing-application')\n public EditingApplication: EaCApplicationAsCode;\n\n @Output('save-form-event')\n public SaveFormEvent: EventEmitter<{}>;\n\n public get IsPrivateFormControl(): AbstractControl {\n return this.SecurityFormGroup?.controls.isPrivate;\n }\n\n public get IsTriggerSignInFormControl(): AbstractControl {\n return this.SecurityFormGroup?.controls.isTriggerSignIn;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public SecurityFormGroup: FormGroup;\n\n public ProcessorType: string;\n\n public SkeletonEffect: string;\n\n constructor(protected eacSvc: EaCService,\n protected formBldr: FormBuilder) { \n this.SaveFormEvent = new EventEmitter;\n this.SkeletonEffect = 'wave';\n }\n\n public ngOnInit(): void {\n this.setupSecurityFormGroup();\n }\n\n public SecuritySubmit() {\n //save the security settings\n console.log(\"submitting security values: \", this.SecurityFormGroup.value);\n this.SaveFormEvent.emit(this.SecurityFormGroup.value);\n }\n\n protected setupSecurityFormGroup() {\n this.ProcessorType = this.EditingApplication?.Processor?.Type || '';\n this.SecurityFormGroup = this.formBldr.group({});\n this.setupSecurityForm();\n }\n\n protected setupSecurityForm(): void {\n this.SecurityFormGroup.addControl(\n 'isPrivate',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.IsPrivate || false,\n [Validators.required]\n )\n );\n\n this.SecurityFormGroup.addControl(\n 'isTriggerSignIn',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.IsTriggerSignIn || false,\n [Validators.required]\n )\n );\n }\n\n}\n","<form\n class=\"security-form\"\n [formGroup]=\"SecurityFormGroup\"\n (ngSubmit)=\"SecuritySubmit()\"\n>\n <mat-card class=\"flow-card\">\n <!-- SKELETON LOADING -->\n <ng-container *ngIf=\"State?.Loading\">\n <mat-card-header fxLayoutAlign=\"space-between center\">\n <mat-card-title skeleton-text [effect]=\"SkeletonEffect\">\n Security Settings\n </mat-card-title>\n <div fxLayoutAlign=\"space-around center\">\n <div skeleton-text [effect]=\"SkeletonEffect\">XXX</div>\n\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">\n info_outline\n </mat-icon>\n </div>\n </mat-card-header>\n\n <mat-card-actions fxLayoutAlign=\"center center\">\n <div\n fxFlex=\"100%\"\n skeleton-text\n [effect]=\"SkeletonEffect\"\n fxLayoutAlign=\"center center\"\n >\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\"> save </mat-icon>\n\n Save Settings\n </div>\n </mat-card-actions>\n </ng-container>\n <!-- END SKELETON LOADING -->\n\n <!-- BEGIN ACTUAL CONTENT -->\n\n <ng-container *ngIf=\"!State?.Loading\">\n <mat-card-header>\n <mat-card-title> Security Settings </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"isPrivate\"\n matTooltip=\"Is Secure Application?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Secured Application is one that requires the user to be authenticated to use the application. The application is hosted behind an identity wall.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <div>\n <div *ngIf=\"IsPrivateFormControl.value\">\n <div>\n <mat-slide-toggle formControlName=\"isTriggerSignIn\">\n Is Trigger Sign In Application?\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Trigger Sign In Application will direct the user to sign in if they are not already.\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions fxLayoutAlign=\"center center\">\n <button\n mat-raised-button\n type=\"submit\"\n fxFlex=\"100%\"\n color=\"primary\"\n [disabled]=\"!SecurityFormGroup.valid || !SecurityFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon>\n Save Settings\n </button>\n </mat-card-actions>\n </ng-container>\n </mat-card>\n</form>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\nimport { BaseModeledResponse, Guid } from '@lcu/common';\nimport {\n EaCApplicationAsCode,\n EaCEnvironmentAsCode,\n EaCSourceControl,\n} from '@semanticjs/common';\nimport { ApplicationsFlowService } from '../../services/applications-flow.service';\nimport {\n EaCService,\n SaveApplicationAsCodeEventRequest,\n} from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-processor-details-form',\n templateUrl: './processor-details-form.component.html',\n styleUrls: ['./processor-details-form.component.scss'],\n})\nexport class ProcessorDetailsFormComponent implements OnInit {\n @Input('editing-application')\n public EditingApplication: EaCApplicationAsCode;\n\n @Input('editing-application-lookup')\n public EditingApplicationLookup: string;\n\n @Input('has-save-button')\n public HasSaveButton: boolean;\n\n @Input('source-control-lookups')\n public SourceControlLookups: Array<string>;\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n @Output('save-form-event')\n public SaveFormEvent: EventEmitter<{}>;\n\n public get APIRootFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.apiRoot;\n }\n\n public get Environment(): EaCEnvironmentAsCode {\n return this.State?.EaC?.Environments[\n this.State?.EaC?.Enterprise?.PrimaryEnvironment\n ];\n }\n\n public get BuildFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.build;\n }\n\n public get BuildPathFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.buildPath;\n }\n\n public get ClientIDFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.clientId;\n }\n\n public get ClientSecretFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.clientSecret;\n }\n\n public get DefaultFileFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.defaultFile;\n }\n\n public get DefaultSourceControl(): EaCSourceControl {\n return {\n Organization: this.EditingApplication?.LowCodeUnit?.Organization,\n Repository: this.EditingApplication?.LowCodeUnit?.Repository,\n };\n }\n\n public get InboundPathFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.inboundPath;\n }\n\n public get IncludeRequestFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.includeRequest;\n }\n\n public get MethodsFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.methods;\n }\n\n public get PackageFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.package;\n }\n\n public get PermanentFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.permanent;\n }\n\n public get PreserveMethodFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.preserveMethod;\n }\n\n public get RedirectFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.redirect;\n }\n\n public get ScopesFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.scopes;\n }\n\n public get SecurityFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.security;\n }\n\n public get State(): ApplicationsFlowState {\n return this.eacSvc.State;\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Environment?.Sources || {};\n }\n\n public get SourceControlFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.sourceControl;\n }\n\n public get SPARootFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.spaRoot;\n }\n\n public get TokenLookupFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.tokenLookup;\n }\n\n public get ValidFormControls():Array<AbstractControl> {\n let vfc: Array<AbstractControl> = new Array<AbstractControl>();\n for (const field in this.ProcessorDetailsFormGroup.controls) { \n const control = this.ProcessorDetailsFormGroup.get(field); \n if(control.valid){\n vfc.push(control);\n }\n }\n // console.log(\"VFC=\", vfc)\n return vfc;\n }\n\n public get VersionFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.version;\n }\n\n public get ZipFileFormControl(): AbstractControl {\n return this.ProcessorDetailsFormGroup?.controls.zipFile;\n }\n\n public BuildPathOptions: string[];\n\n public IsPermanent: boolean;\n\n public IsPreserve: boolean;\n\n public LCUType: string;\n\n public redirectTooltip: string;\n\n public ProcessorDetailsFormGroup: FormGroup;\n\n public ProcessorType: string;\n\n constructor(\n protected appsFlowSvc: ApplicationsFlowService,\n protected formBldr: FormBuilder,\n protected eacSvc: EaCService\n ) {\n this.redirectTooltip = '';\n\n this.HasSaveButton = true;\n\n this.SaveFormEvent = new EventEmitter();\n }\n\n public ngOnInit(): void {\n if (!this.EditingApplication) {\n this.CreateNewApplication();\n } else {\n this.setupProcessorDetailsForm();\n }\n }\n\n public CreateNewApplication(): void {\n this.SetEditingApplication(Guid.CreateRaw());\n }\n\n public DetermineTooltipText() {\n let permanentValue = this.PermanentFormControl.value;\n let preserveValue = this.PreserveMethodFormControl.value;\n\n if (permanentValue === true && preserveValue === false) {\n this.redirectTooltip = '301 – Permanent and Not Preserve';\n } else if (permanentValue === false && preserveValue === false) {\n this.redirectTooltip = '302 – Not Permanent and Not Preserve';\n } else if (permanentValue === false && preserveValue === true) {\n this.redirectTooltip = '307 – Not Permanent and Preserve';\n } else if (permanentValue === true && preserveValue === true) {\n this.redirectTooltip = '308 – Permanent and Preserve';\n }\n }\n\n public SaveProcessorDetails(): void {\n const app: EaCApplicationAsCode = this.EditingApplication;\n app.LookupConfig.AllowedMethods = this.MethodsFormControl?.value\n ?.split(' ')\n .filter((v: string) => !!v);\n app.Processor.Type = this.ProcessorType;\n\n switch (app.Processor.Type) {\n case 'DFS':\n app.Processor.DefaultFile =\n this.DefaultFileFormControl.value || 'index.html';\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHub':\n app.LowCodeUnit.Organization =\n this.SourceControls[\n this.SourceControlFormControl.value\n ]?.Organization;\n\n app.LowCodeUnit.Repository =\n this.SourceControls[\n this.SourceControlFormControl.value\n ]?.Repository;\n\n app.LowCodeUnit.Build = this.BuildFormControl.value;\n\n app.LowCodeUnit.Path = this.BuildPathFormControl.value;\n\n app.LowCodeUnit.SourceControlLookup =\n this.SourceControlFormControl.value;\n break;\n\n case 'NPM':\n app.LowCodeUnit.Package = this.PackageFormControl.value;\n\n app.LowCodeUnit.Version = this.VersionFormControl.value;\n break;\n\n case 'WordPress':\n app.LowCodeUnit.APIRoot = this.APIRootFormControl.value;\n break;\n\n case 'Zip':\n app.LowCodeUnit.ZipFile = this.ZipFileFormControl.value;\n break;\n }\n break;\n\n case 'OAuth':\n app.Processor.Scopes = this.ScopesFormControl.value.split(' ');\n\n app.Processor.TokenLookup = this.TokenLookupFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHubOAuth':\n app.LowCodeUnit.ClientID = this.ClientIDFormControl.value;\n\n app.LowCodeUnit.ClientSecret = this.ClientSecretFormControl.value;\n break;\n }\n break;\n\n case 'Proxy':\n app.Processor.InboundPath = this.InboundPathFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'API':\n app.LowCodeUnit.APIRoot = this.APIRootFormControl.value;\n\n app.LowCodeUnit.Security = this.SecurityFormControl.value;\n\n break;\n\n case 'SPA':\n app.LowCodeUnit.SPARoot = this.SPARootFormControl.value;\n break;\n }\n break;\n\n case 'Redirect':\n app.Processor.IncludeRequest = !!this.IncludeRequestFormControl.value;\n\n app.Processor.Permanent = !!this.PermanentFormControl.value;\n\n app.Processor.PreserveMethod = !!this.PreserveMethodFormControl.value;\n\n app.Processor.Redirect = this.RedirectFormControl.value;\n break;\n }\n\n if (!app.LookupConfig.PathRegex.startsWith('/')) {\n app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;\n }\n\n const saveAppReq: SaveApplicationAsCodeEventRequest = {\n ProjectLookup: this.ProjectLookup,\n Application: app,\n ApplicationLookup: this.EditingApplicationLookup || Guid.CreateRaw(),\n };\n\n\n this.eacSvc.SaveApplicationAsCode(saveAppReq).then((res) => {\n this.SaveFormEvent.emit(res);\n });\n }\n\n public SetEditingApplication(appLookup: string): void {\n this.EditingApplication = new EaCApplicationAsCode();\n this.EditingApplicationLookup = appLookup;\n\n this.setupProcessorDetailsForm();\n }\n\n public SourceControlChanged(event: any) {\n this.listBuildPaths();\n }\n\n public ProcessorTypeChanged(event: MatSelectChange): void {\n this.ProcessorType = event.value;\n\n this.setupProcessorTypeSubForm();\n }\n\n public LCUTypeChanged(event: MatSelectChange): void {\n this.LCUType = event.value;\n\n this.setupLcuTypeSubForm();\n }\n\n //HELPERS\n\n protected cleanupLcuTypeSubForm(): void {\n this.ProcessorDetailsFormGroup.removeControl('methods');\n this.ProcessorDetailsFormGroup.removeControl('apiRoot');\n this.ProcessorDetailsFormGroup.removeControl('security');\n\n this.ProcessorDetailsFormGroup.removeControl('spaRoot');\n\n this.ProcessorDetailsFormGroup.removeControl('applicationId');\n this.ProcessorDetailsFormGroup.removeControl('sourceControl');\n\n this.ProcessorDetailsFormGroup.removeControl('build');\n\n this.ProcessorDetailsFormGroup.removeControl('clientId');\n this.ProcessorDetailsFormGroup.removeControl('clientSecret');\n this.ProcessorDetailsFormGroup.removeControl('package')\n this.ProcessorDetailsFormGroup.removeControl('version');\n\n this.ProcessorDetailsFormGroup.removeControl('zipFile');\n \n }\n\n protected cleanupProcessorTypeSubForm(): void {\n this.ProcessorDetailsFormGroup.removeControl('defaultFile');\n\n // this.ApplicationFormGroup.removeControl('dfsLcuType');\n\n // this.ApplicationFormGroup.removeControl('oauthLcuType');\n this.ProcessorDetailsFormGroup.removeControl('scopes');\n this.ProcessorDetailsFormGroup.removeControl('tokenLookup');\n\n this.ProcessorDetailsFormGroup.removeControl('inboundPath');\n this.ProcessorDetailsFormGroup.removeControl('proxyLcuType');\n\n this.ProcessorDetailsFormGroup.removeControl('includeRequest');\n this.ProcessorDetailsFormGroup.removeControl('redirect');\n this.ProcessorDetailsFormGroup.removeControl('permanent');\n this.ProcessorDetailsFormGroup.removeControl('preserveMethod');\n\n this.cleanupLcuTypeSubForm();\n }\n\n protected listBuildPaths(): void {\n this.State.Loading = true;\n\n console.log(\"Source Control: \", this.SourceControls[this.SourceControlFormControl.value])\n\n this.appsFlowSvc\n .ListBuildPaths(\n this.SourceControls[this.SourceControlFormControl.value]?.Organization,\n this.SourceControls[this.SourceControlFormControl.value]?.Repository\n )\n .subscribe((response: BaseModeledResponse<string[]>) => {\n this.BuildPathOptions = response.Model;\n console.log(\"build path options: \", this.BuildPathOptions)\n\n this.State.Loading = false;\n\n // if (this.BuildPathOptions?.length === 1) {\n // this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);\n // }\n });\n }\n\n protected setupLcuTypeSubForm(): void {\n this.cleanupLcuTypeSubForm();\n\n if (this.LCUType) {\n switch (this.LCUType) {\n case 'API':\n this.setupLCUAPIForm();\n break;\n\n case 'ApplicationPointer':\n this.setupLCUApplicationPointerForm();\n break;\n\n case 'GitHub':\n this.setupLCUGitHubForm();\n break;\n\n case 'GitHubOAuth':\n this.setupLCUGitHubOAuthForm();\n break;\n\n case 'WordPress':\n this.setupLCUWordPressForm();\n break;\n\n // case 'NPM':\n // this.setupLCUNPMForm();\n // break;\n\n case 'SPA':\n this.setupLCUSPAForm();\n break;\n\n case 'Zip':\n this.setupLCUZipForm();\n break;\n }\n }\n }\n\n protected setupProcessorDetailsForm(): void {\n this.ProcessorType = this.EditingApplication?.Processor?.Type || '';\n\n // console.log('EDITING APP = ', this.EditingApplication);\n\n if (this.EditingApplication != null) {\n this.ProcessorDetailsFormGroup = this.formBldr.group({\n procType: [this.ProcessorType, [Validators.required]],\n });\n // this.setupDfsForm();\n\n // this.setupLcuTypeSubForm();\n this.setupProcessorTypeSubForm()\n }\n }\n\n protected setupLCUGitHubForm(): void {\n console.log('EditingApplication: ', this.EditingApplication);\n\n this.ProcessorDetailsFormGroup.addControl(\n 'sourceControl',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.SourceControlLookup || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'buildPath',\n this.formBldr.control(this.EditingApplication.LowCodeUnit?.Path || '', [\n Validators.required,\n ])\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'build',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.Build || 'latest',\n [Validators.required]\n )\n );\n\n this.listBuildPaths();\n }\n\n protected setupLCUApplicationPointerForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'applicationId',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ApplicationID || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUSPAForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'spaRoot',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.SPARoot || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUAPIForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'methods',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.AllowedMethods?.join(' ') || '',\n []\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'apiRoot',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.APIRoot || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'security',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.Security || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUGitHubOAuthForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'clientId',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ClientID || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'clientSecret',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ClientSecret || '',\n [Validators.required]\n )\n );\n }\n\n protected setupLCUWordPressForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'apiRoot',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.APIRoot || '',\n [Validators.required]\n )\n );\n }\n\n protected setupProxyForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ProcessorDetailsFormGroup.addControl(\n 'inboundPath',\n this.formBldr.control(\n this.EditingApplication.Processor?.InboundPath || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupRedirectForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'redirect',\n this.formBldr.control(this.EditingApplication.Processor?.Redirect || '', [\n Validators.required,\n ])\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'permanent',\n this.formBldr.control(\n this.EditingApplication.Processor?.Permanent || false,\n []\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'preserveMethod',\n this.formBldr.control(\n this.EditingApplication.Processor?.PreserveMethod || false,\n []\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'includeRequest',\n this.formBldr.control(\n this.EditingApplication.Processor?.IncludeRequest || false,\n []\n )\n );\n\n this.DetermineTooltipText();\n }\n\n protected setupOAuthForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ProcessorDetailsFormGroup.addControl(\n 'scopes',\n this.formBldr.control(\n this.EditingApplication.Processor?.Scopes?.Join(' ') || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'tokenLookup',\n this.formBldr.control(\n this.EditingApplication.Processor?.TokenLookup || '',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupLCUZipForm(): void {\n this.ProcessorDetailsFormGroup.addControl(\n 'zipFile',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.ZipFile || '',\n [Validators.required]\n )\n );\n }\n\n protected setupDfsForm(): void {\n this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';\n\n this.ProcessorDetailsFormGroup.addControl(\n 'defaultFile',\n this.formBldr.control(\n this.EditingApplication.Processor?.DefaultFile || 'index.html',\n [Validators.required]\n )\n );\n\n this.ProcessorDetailsFormGroup.addControl(\n 'lcuType',\n this.formBldr.control(this.LCUType, [Validators.required])\n );\n }\n\n protected setupProcessorTypeSubForm(): void {\n this.cleanupProcessorTypeSubForm();\n\n if (this.ProcessorType) {\n switch (this.ProcessorType) {\n case 'DFS':\n this.setupDfsForm();\n break;\n\n case 'OAuth':\n this.setupOAuthForm();\n break;\n\n case 'Proxy':\n this.setupProxyForm();\n break;\n\n case 'Redirect':\n this.setupRedirectForm();\n break;\n }\n }\n\n this.setupLcuTypeSubForm();\n }\n}\n","<form class=\"processor-details-form\" [formGroup]=\"ProcessorDetailsFormGroup\" (ngSubmit)=\"SaveProcessorDetails()\">\n<!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title> Processor Details </mat-card-title>\n </mat-card-header> -->\n\n <ng-container *ngIf=\"State?.Loading\">\n\n <ng-container *ngFor=\"let fc of ValidFormControls\">\n\n <skeleton-block \n [id]=\"fc\"\n class=\"s-block\" \n effect=\"wave\"\n ></skeleton-block>\n \n </ng-container>\n\n <lcu-loader *ngIf=\"LCUType === 'Redirect'\" [loading]=\"State?.Loading\"></lcu-loader>\n\n </ng-container>\n <!-- END SKELETON -->\n\n <ng-container *ngIf=\"!State?.Loading\">\n\n <!-- <mat-card-content> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"procType\"\n (selectionChange)=\"ProcessorTypeChanged($event)\"\n required\n >\n <mat-option value=\"DFS\">View Package</mat-option>\n\n <mat-option value=\"Redirect\">Redirect</mat-option>\n\n <mat-option value=\"Proxy\">Proxy</mat-option>\n\n <mat-option value=\"OAuth\">OAuth</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"ProcessorType\">\n <div *ngSwitchCase=\"'DFS'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Default File\"\n formControlName=\"defaultFile\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"NPM\">NPM</mat-option>\n\n <mat-option value=\"GitHub\">GitHub</mat-option>\n\n <mat-option value=\"WordPress\">WordPress</mat-option>\n\n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHub'\">\n <!-- <lcu-source-control-form-controls\n [build-path]=\"EditingApplication?.LowCodeUnit?.Path\"\n [form-group]=\"ProcessorDetailsFormGroup\"\n [source-control]=\"DefaultSourceControl\"\n [use-branches]=\"false\"\n [use-build-path]=\"true\"\n ></lcu-source-control-form-controls> -->\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Source Control\"\n formControlName=\"sourceControl\"\n (selectionChange)=\"SourceControlChanged($event)\"\n required\n >\n <mat-option \n *ngFor=\"let scLookup of SourceControlLookups\" \n [value]=\"scLookup\">\n {{scLookup}}\n </mat-option>\n \n \n <!-- <mat-option value=\"Zip\">Zip</mat-option> -->\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width with-hint\"\n *ngIf=\"\n SourceControlFormControl?.valid\n \"\n > \n <mat-select\n formControlName=\"buildPath\"\n placeholder=\"Build Path\"\n required\n >\n <ng-container *ngFor=\"let buildPath of BuildPathOptions\">\n <mat-option [value]=\"buildPath\">\n {{ buildPath }}\n </mat-option>\n </ng-container>\n </mat-select>\n \n <mat-hint>\n The build path identifies which build action to use for your\n configuration.\n </mat-hint>\n </mat-form-field>\n\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"\n SourceControlFormControl?.valid\n \"\n >\n <input\n matInput\n placeholder=\"Build\"\n formControlName=\"build\"\n required\n />\n\n <mat-hint>\n Current Build:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'NPM'\">\n <lcu-npm-package-select\n [npm-package]=\"EditingApplication?.LowCodeUnit?.Package\"\n [npm-package-version]=\"\n EditingApplication?.LowCodeUnit?.Version\n \"\n [form-group]=\"ProcessorDetailsFormGroup\"\n ></lcu-npm-package-select>\n\n <mat-hint>\n Current Version:\n {{ EditingApplication?.LowCodeUnit?.CurrentVersion }}\n </mat-hint>\n </div>\n\n <div *ngSwitchCase=\"'WordPress'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'OAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Scopes (space separated)\"\n formControlName=\"scopes\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Token Lookup\"\n formControlName=\"tokenLookup\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"GitHubOAuth\">GitHub</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'GitHubOAuth'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client ID\"\n formControlName=\"clientId\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Client Secret\"\n formControlName=\"clientSecret\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Proxy'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Inbound Path\"\n formControlName=\"inboundPath\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n placeholder=\"Type\"\n formControlName=\"lcuType\"\n (selectionChange)=\"LCUTypeChanged($event)\"\n required\n >\n <mat-option value=\"API\">API</mat-option>\n\n <mat-option value=\"SPA\">Single Page Application</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div [ngSwitch]=\"LCUType\">\n <div *ngSwitchCase=\"'API'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"API Root\"\n formControlName=\"apiRoot\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Allowed Methods (separate with spaces)\"\n formControlName=\"methods\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Security ({header}~{value})\"\n formControlName=\"security\"\n required\n />\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'SPA'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"SPA Root\"\n formControlName=\"spaRoot\"\n required\n />\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'Redirect'\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Redirect URL\"\n formControlName=\"redirect\"\n required\n />\n </mat-form-field>\n\n <div>\n <mat-slide-toggle \n class=\"spread\" \n formControlName=\"permanent\">\n Is Permanent?\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"spread\"\n formControlName=\"preserveMethod\"\n >\n Preserve Method?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n (mouseenter)=\"DetermineTooltipText()\"\n matTooltip={{redirectTooltip}}\n >\n info_outline\n </mat-icon>\n\n \n </div>\n \n <div>\n <mat-slide-toggle \n class=\"spread\" \n formControlName=\"includeRequest\">\n Include Path and Query?\n </mat-slide-toggle>\n\n <mat-icon\n class=\"spread\"\n matSuffix\n matTooltip=\"Should the redirect include the path and query?\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"HasSaveButton && !State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ProcessorDetailsFormGroup.valid || !ProcessorDetailsFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Processor Details\n </button> -->\n <!-- <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"State?.Loading\"></lcu-loader> -->\n\n <!-- </mat-card-actions> -->\n\n </ng-container>\n \n<!-- </mat-card> -->\n</form>\n \n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\nimport { EaCApplicationAsCode, EaCEnvironmentAsCode, EaCProjectAsCode, EaCSourceControl } from '@semanticjs/common';\nimport { SourceControlFormControlsComponent } from '../../elements/projects/controls/forms/source-control/source-control.component';\n\n@Component({\n selector: 'lcu-source-control-form',\n templateUrl: './source-control-form.component.html',\n styleUrls: ['./source-control-form.component.scss']\n})\nexport class SourceControlFormComponent implements OnInit {\n\n @Input('editing-application')\n public EditingApplication: EaCApplicationAsCode;\n\n @Input('environment')\n public Environment: EaCEnvironmentAsCode;\n\n @Output('save-form-event')\n public SaveFormEvent: EventEmitter<{}>\n\n public get HasBuildFormControl(): AbstractControl {\n return this.SourceControlFormGroup?.controls.hasBuild;\n }\n\n public get SourceControlLookupFormControl(): AbstractControl {\n return this.SourceControlFormGroup?.controls.sourceControlLookup;\n }\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.SourceControls || {});\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Environment.Sources || {};\n }\n\n public SourceControlFormGroup: FormGroup;\n\n public ProcessorType: string;\n\n constructor(protected formBldr: FormBuilder) {\n this.SaveFormEvent = new EventEmitter;\n }\n\n public ngOnInit(): void {\n this.setupSourceControlForm();\n }\n\n public SourceControlLookupChanged(event: MatSelectChange): void {\n // TODO: Anything to do here on change?\n console.log(\"sourceControlLookupChanged: \", event);\n }\n\n public SubmitSourceControl() {\n console.log(\"submitting source control: \", this.SourceControlFormGroup.value);\n this.SaveFormEvent.emit(this.SourceControlFormGroup.value);\n\n }\n\n\n //HELPER\n\n protected setupSourceControlForm(): void {\n this.ProcessorType = this.EditingApplication?.Processor?.Type || '';\n\n this.SourceControlFormGroup = this.formBldr.group({});\n\n this.setupBuildForm();\n\n }\n\n protected setupBuildForm(): void {\n this.SourceControlFormGroup.addControl(\n 'hasBuild',\n this.formBldr.control(\n !!this.EditingApplication.LowCodeUnit?.SourceControlLookup || false,\n [Validators.required]\n )\n );\n\n this.SourceControlFormGroup.addControl(\n 'sourceControlLookup',\n this.formBldr.control(\n this.EditingApplication.LowCodeUnit?.SourceControlLookup || '',\n []\n )\n );\n }\n\n}\n","<form class=\"source-control-form\" [formGroup]=\"SourceControlFormGroup\" (ngSubmit)=\"SubmitSourceControl()\">\n\n<mat-card class=\"spread flow-card\" *ngIf=\"ProcessorType != 'Redirect'\">\n <mat-card-header>\n <mat-card-title *ngIf=\"!HasBuildFormControl.value\">\n Build & Source\n </mat-card-title>\n\n <mat-card-title *ngIf=\"HasBuildFormControl.value\">\n Source Control\n </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"hasBuild\"\n matTooltip=\"Has Build?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"Configure source control, DevOps CI/CD, and artifacts.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field\n class=\"mat-full-width\"\n *ngIf=\"\n HasBuildFormControl.value && SourceControlLookups?.length > 0\n \"\n >\n <mat-select\n formControlName=\"sourceControlLookup\"\n placeholder=\"Source Control\"\n (selectionChange)=\"SourceControlLookupChanged($event)\"\n [disabled]=\"\n SourceControlFormControls?.Loading || HostingDetails?.Loading\n \"\n >\n <ng-container\n *ngFor=\"let srcCtrlLookup of SourceControlLookups\"\n >\n <mat-option\n [value]=\"srcCtrlLookup\"\n *ngIf=\"SourceControls[srcCtrlLookup]; let srcCtrl\"\n >\n {{ srcCtrl.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n <div *ngIf=\"HasBuildFormControl?.value\">\n <h3>\n @{{\n SourceControlFormControls?.OrganizationFormControl?.value ||\n SourceControl?.Organization\n }}/{{\n SourceControlFormControls?.RepositoryFormControl?.value ||\n SourceControl?.Repository\n }}\n </h3>\n\n <p>Organization and Repository pulled from build settings</p>\n\n <mat-hint>\n CurrentBuild:\n {{ EditingApplication?.LowCodeUnit?.CurrentBuild }}\n </mat-hint>\n </div>\n </mat-form-field>\n\n <div *ngIf=\"SourceControlLookups?.length < 0\">\n <h3>\n Create source control locations under the DevOps tab above.\n </h3>\n </div>\n </mat-card-content>\n <mat-card-actions fxLayoutAlign=\"center center\">\n\n <button \n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!SourceControlFormGroup.valid || !SourceControlFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save\n </button>\n \n </mat-card-actions>\n </mat-card>\n</form>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { BaseModeledResponse, Guid } from '@lcu/common';\nimport {\n EaCArtifact,\n EaCDevOpsAction,\n EaCEnvironmentAsCode,\n EaCSourceControl,\n} from '@semanticjs/common';\nimport { ApplicationsFlowService } from '../../services/applications-flow.service';\nimport {\n EaCService,\n SaveEnvironmentAsCodeEventRequest,\n} from '../../services/eac.service';\nimport {\n ApplicationsFlowState,\n ProjectHostingDetails,\n ProjectHostingOption,\n} from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-build-pipeline-form',\n templateUrl: './build-pipeline-form.component.html',\n styleUrls: ['./build-pipeline-form.component.scss'],\n})\nexport class BuildPipelineFormComponent implements OnInit {\n //PROPERTIES\n\n // @Input('build-pipeline')\n public BuildPipeline: string;\n\n @Input('devops-action-lookup')\n public DevOpsActionLookup: string;\n\n @Input('disabled')\n public Disabled: boolean;\n\n @Input('environment')\n public Environment: EaCEnvironmentAsCode;\n\n @Input('environment-lookup')\n public EnvironmentLookup: string;\n\n @Input('hosting-details')\n public HostingDetails: ProjectHostingDetails;\n\n @Output('response-event')\n public ResponseEvent: EventEmitter<any>;\n\n public get Artifact(): EaCArtifact {\n // console.log(\"ARTIFACT: \", this.Environment?.Artifacts[this.ArtifactLookup]);\n return this.Environment?.Artifacts && this.ArtifactLookup\n ? this.Environment?.Artifacts[this.ArtifactLookup] || {}\n : {};\n }\n\n public get ArtifactLookup(): string {\n const artLookup = this.DevOpsAction?.ArtifactLookups\n ? this.DevOpsAction?.ArtifactLookups[0]\n : null;\n\n return artLookup;\n }\n\n public get BuildPipelineFormControl(): AbstractControl {\n return this.BuildPipelineFormGroup?.get('buildPipeline');\n }\n\n public get DevOpsAction(): EaCDevOpsAction {\n return this.Environment.DevOpsActions && this.DevOpsActionLookup\n ? this.Environment.DevOpsActions[this.DevOpsActionLookup] || {}\n : {};\n }\n\n public get DevOpsActions(): { [lookup: string]: EaCDevOpsAction } {\n return this.Environment.DevOpsActions || {};\n }\n\n public get DevOpsActionNameFormControl(): AbstractControl {\n return this.BuildPipelineFormGroup.get('devOpsActionName');\n }\n\n public get NPMTokenFormControl(): AbstractControl {\n return this.BuildPipelineFormGroup.get('npmToken');\n }\n\n // (ho) => ho.Lookup === this.BuildPipeline\n public get SelectedHostingOption(): ProjectHostingOption {\n return this.HostingDetails?.HostingOptions?.find(\n (ho) => ho.Lookup === this.BuildPipeline\n );\n }\n\n public get SelectedHostingOptionInputControlValues(): {\n [lookup: string]: any;\n } {\n return this.SelectedHostingOption?.Inputs?.reduce((prev, cur) => {\n const res = {\n ...prev,\n };\n\n res[cur.Lookup] = this.BuildPipelineFormGroup.controls[cur.Lookup].value;\n\n return res;\n }, {});\n }\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.SourceControls || {});\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Environment.Sources || {};\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public BuildPipelineFormGroup: FormGroup;\n\n constructor(\n protected eacSvc: EaCService,\n protected formBuilder: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService\n ) {\n this.Disabled = false;\n this.HostingDetails = new ProjectHostingDetails();\n this.ResponseEvent = new EventEmitter;\n }\n\n public ngOnInit(): void {\n // console.log('BuildPipeline = ', this.BuildPipeline)\n\n // this.BuildPipelineFormGroup = this.formBuilder.group({});\n\n // if (this.BuildPipelineFormGroup != null) {\n // this.BuildPipelineFormGroup.removeControl('hostingDetails');\n // }\n\n // this.BuildPipelineFormGroup.addControl(\n // 'hostingDetails',\n this.BuildPipelineFormGroup = this.formBuilder.group({\n // buildPipeline: [this.BuildPipeline, [Validators.required]],\n });\n // );\n\n this.loadProjectHostingDetails();\n // this.setupControlsForForm();\n }\n\n //API METHODS\n\n public BuildPipelineChanged(): void {\n //for some reason this value is coming back undefined\n // console.log(\"build pipeline value: \", this.BuildPipelineFormControl?.value)\n this.BuildPipeline = this.BuildPipelineFormControl?.value;\n\n this.setupControlsForForm();\n }\n\n public SubmitBuildPipeline() {\n // console.log(\"submitting build pipeline: \", this.BuildPipelineFormGroup.value);\n this.SaveEnvironment();\n }\n\n public SaveEnvironment(): void {\n const saveEnvReq: SaveEnvironmentAsCodeEventRequest = {\n Environment: {\n ...this.Environment,\n Artifacts: this.Environment.Artifacts || {},\n DevOpsActions: this.Environment.DevOpsActions || {},\n Secrets: this.Environment.Secrets || {},\n Sources: this.Environment.Sources || {},\n },\n EnvironmentLookup: this.EnvironmentLookup,\n EnterpriseDataTokens: {},\n };\n\n let artifactLookup: string;\n\n let artifact: EaCArtifact = {\n ...this.Artifact,\n ...this.SelectedHostingOptionInputControlValues,\n };\n\n if (!this.ArtifactLookup) {\n artifactLookup = Guid.CreateRaw();\n\n artifact = {\n ...artifact,\n Type: this.SelectedHostingOption.ArtifactType,\n Name: this.SelectedHostingOption.Name,\n NPMRegistry: 'https://registry.npmjs.org/',\n };\n } else {\n artifactLookup = this.ArtifactLookup;\n }\n\n saveEnvReq.Environment.Artifacts[artifactLookup] = artifact;\n\n let devOpsActionLookup: string;\n\n if (!this.DevOpsActionLookup) {\n devOpsActionLookup = Guid.CreateRaw();\n\n const doa: EaCDevOpsAction = {\n ...this.DevOpsAction,\n ArtifactLookups: [artifactLookup],\n Name: this.DevOpsActionNameFormControl.value,\n Path: this.SelectedHostingOption.Path,\n Templates: this.SelectedHostingOption.Templates,\n };\n\n if (this.NPMTokenFormControl?.value) {\n const secretLookup = 'npm-access-token';\n\n doa.SecretLookups = [secretLookup];\n\n saveEnvReq.Environment.Secrets[secretLookup] = {\n Name: 'NPM Access Token',\n DataTokenLookup: secretLookup,\n KnownAs: 'NPM_TOKEN',\n };\n\n saveEnvReq.EnterpriseDataTokens[secretLookup] = {\n Name: saveEnvReq.Environment.Secrets[secretLookup].Name,\n Description: saveEnvReq.Environment.Secrets[secretLookup].Name,\n Value: this.NPMTokenFormControl.value,\n };\n }\n\n saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;\n } else {\n devOpsActionLookup = this.DevOpsActionLookup;\n\n const doa: EaCDevOpsAction = {\n ...this.DevOpsAction,\n Name: this.DevOpsActionNameFormControl.value,\n };\n\n saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;\n }\n\n \n this.eacSvc.SaveEnvironmentAsCode(saveEnvReq).then(res =>{\n this.ResponseEvent.emit(res);\n });\n \n }\n\n // Helpers\n protected setupControlsForForm(): void {\n // this.BuildPipeline =\n // this.BuildPipeline || this.HostingDetails?.HostingOptions\n // ? this.HostingDetails?.HostingOptions[0]?.Lookup\n // : '';\n\n // console.log(\"hosting details: \", this.HostingDetails)\n\n for (const ctrlName in this.BuildPipelineFormGroup.controls) {\n //devOpsAction doesn't exist\n //removes hosting details\n if (ctrlName !== 'buildPipeline' && ctrlName !== 'devOpsAction') {\n // console.log(\"removing control: \", ctrlName)\n this.BuildPipelineFormGroup.removeControl(ctrlName);\n }\n }\n\n this.BuildPipelineFormGroup.addControl(\n 'buildPipeline',\n this.formBuilder.control(\n this.BuildPipeline || '',\n [Validators.required]\n )\n );\n\n this.BuildPipelineFormGroup.addControl(\n 'devOpsActionName',\n this.formBuilder.control(\n this.DevOpsAction?.Name || this.SelectedHostingOption?.Name || '',\n [Validators.required]\n )\n );\n\n // console.log(\"selected hosting options: \", this.SelectedHostingOption.Inputs);\n\n this.SelectedHostingOption?.Inputs?.forEach((input) => {\n const validators = input.Required ? [Validators.required] : [];\n\n this.BuildPipelineFormGroup.addControl(\n input.Lookup,\n this.formBuilder.control(\n this.Artifact[input.Lookup] || input.DefaultValue || '',\n validators\n )\n );\n\n // if (this.Disabled) {\n // this.FormGroup.controls[input.Lookup].disable();\n // }\n });\n\n if (this.BuildPipelineFormControl?.value === 'npm-release') {\n console.log(\"npm release\")\n if (!this.BuildPipelineFormGroup?.controls?.npmToken) {\n console.log(\"npm token if\")\n this.BuildPipelineFormGroup.addControl(\n 'npmToken',\n this.formBuilder.control(\n '',\n this.Disabled ? [] : [Validators.required]\n )\n );\n\n if (this.Disabled) {\n this.BuildPipelineFormGroup.controls.npmToken.disable();\n }\n }\n } else if (\n this.BuildPipelineFormControl?.value === 'github-artifacts-release'\n ) {\n if (this.BuildPipelineFormGroup?.controls?.npmToken) {\n this.BuildPipelineFormGroup.removeControl('npmToken');\n }\n }\n }\n\n protected loadProjectHostingDetails(): void {\n this.HostingDetails.Loading = true;\n this.appsFlowSvc.LoadProjectHostingDetails().subscribe(\n (response: BaseModeledResponse<ProjectHostingDetails>) => {\n this.HostingDetails = response.Model;\n // console.log(\"response: \", response);\n this.HostingDetails.Loading = false;\n\n const hostOption = this.HostingDetails?.HostingOptions?.find(\n (ho) => ho.Path === this.DevOpsAction.Path\n );\n this.BuildPipeline = hostOption?.Lookup;\n\n // console.log(\"Build Pipeline HERE= \", this.BuildPipeline);\n\n this.setupControlsForForm();\n },\n (err) => {\n console.log('ERR: ', err);\n this.HostingDetails.Loading = false;\n }\n );\n // console.log('HOSTING DETAILS: ', this.HostingDetails);\n }\n}\n","<form \n class=\"form-card\" \n [formGroup]=\"BuildPipelineFormGroup\" \n (ngSubmit)=\"SubmitBuildPipeline()\"\n>\n <!-- <mat-card\n class=\"spread\" \n > -->\n <!-- <mat-card-header>\n <mat-card-title> Build Pipeline </mat-card-title>\n\n <mat-hint>\n Changes made here are reflected for all sources using this\n DevOpsAction\n </mat-hint>\n </mat-card-header> -->\n\n <!-- <mat-card-content> -->\n\n <ng-container *ngIf=\"HostingDetails?.Loading || State?.Loading\">\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n <ng-container *ngIf=\"SelectedHostingOption?.Inputs\">\n <ng-container *ngFor=\"let hostOption of HostingDetails?.HostingOptions\">\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n </ng-container>\n\n </ng-container>\n\n <skeleton-block \n *ngIf=\"\"\n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n </ng-container>\n\n <ng-container *ngIf=\"!HostingDetails?.Loading && !State?.Loading\">\n\n <!-- <div *ngIf=\"!HostingDetails?.Loading\"> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n formControlName=\"buildPipeline\"\n placeholder=\"Build Pipeline\"\n [disabled]=\"Disabled\"\n (selectionChange)=\"BuildPipelineChanged()\"\n required\n >\n <ng-container\n *ngFor=\"let hostOption of HostingDetails?.HostingOptions; let i = index\"\n >\n <mat-option [value]=\"hostOption.Lookup\">\n {{ hostOption.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n \n <mat-hint>\n <ng-container *ngFor=\"let hostOption of HostingDetails?.HostingOptions\">\n <span *ngIf=\"BuildPipeline == hostOption?.Lookup\">\n {{ hostOption.Description }}\n </span>\n </ng-container>\n </mat-hint>\n </mat-form-field>\n \n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"devOpsActionName\"\n placeholder=\"Name of DevOps Action\"\n required=\"true\"\n />\n </mat-form-field>\n \n <ng-container *ngFor=\"let input of SelectedHostingOption?.Inputs\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n [formControlName]=\"input.Lookup\"\n [placeholder]=\"input.Placeholder\"\n [required]=\"input.Required\"\n />\n \n <mat-hint>{{ input.Hint }}</mat-hint>\n </mat-form-field>\n </ng-container>\n \n <div *ngIf=\"BuildPipeline == 'npm-release'\">\n <mat-form-field class=\"mat-full-width with-hint padding-bottom-4\">\n <mat-icon matPrefix>security</mat-icon>\n \n <input\n id=\"npm-token\"\n matInput\n type=\"text\"\n formControlName=\"npmToken\"\n placeholder=\"NPM token\"\n [required]=\"!Disabled\"\n style=\"-webkit-text-security: disc;\"\n />\n <mat-hint>\n Securely publish to NPM, provide an NPM Personal Access Token (PAT) with publish access to the organization used for your NPM packages. \n Learn how to create and view access tokens \n <a\n href=\"https://docs.npmjs.com/creating-and-viewing-access-tokens\"\n target=\"_blank\"\n class=\"primary-link\"\n >\n here.\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n <!-- </div> -->\n \n <!-- <div *ngIf=\"HostingDetails?.Loading\">\n <div class=\"spread\">\n <lcu-loader style=\"margin: auto\" [loading]=\"true\"></lcu-loader>\n \n <div class=\"margin-3\">\n <h4 class=\"mat-title\">Loading hosting details</h4>\n </div>\n </div>\n </div> -->\n </ng-container>\n <!-- </mat-card-content> -->\n\n <!-- <mat-card-actions fxLayoutAlign=\"center center\"> -->\n\n <!-- <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!BuildPipelineFormGroup.valid || !BuildPipelineFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Build Pipeline\n </button> -->\n <!-- <lcu-loader [loading]=\"State?.Loading\"></lcu-loader> -->\n \n <!-- </mat-card-actions> -->\n <!-- </mat-card> -->\n</form>\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Status } from '@lcu/common';\nimport { EaCEnvironmentAsCode } from '@semanticjs/common';\nimport { BuildPipelineFormComponent } from '../../controls/build-pipeline-form/build-pipeline-form.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n\nexport interface BPDialogData {\n devopsActionLookup: string;\n doaName: string;\n environment: EaCEnvironmentAsCode;\n environmentLookup: string;\n\n // buildPipeline: string;\n}\n\n@Component({\n selector: 'lcu-build-pipeline-dialog',\n templateUrl: './build-pipeline-dialog.component.html',\n styleUrls: ['./build-pipeline-dialog.component.scss']\n})\n\nexport class BuildPipelineDialogComponent implements OnInit {\n\n @ViewChild(BuildPipelineFormComponent)\n public BuildPipelineControl: BuildPipelineFormComponent;\n\n public get BuildPipelineFormGroup(): FormGroup{\n return this.BuildPipelineControl?.BuildPipelineFormGroup;\n }\n\n public get HasConnection(): boolean{\n return this.State.GitHub.HasConnection;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public ErrorMessage: string;\n\nconstructor( public dialogRef: MatDialogRef<BuildPipelineDialogComponent>,\n protected eacSvc: EaCService,\n @Inject(MAT_DIALOG_DATA) public data: BPDialogData,\n protected snackBar: MatSnackBar) { }\n\n public ngOnInit(): void {\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public DeleteDevOpsAction(): void {\n if (\n confirm(`Are you sure you want to delete build pipeline '${this.data.doaName}'?`)\n ) {\n this.eacSvc.DeleteDevOpsAction(this.data.devopsActionLookup);\n this.CloseDialog();\n }\n }\n\n public HandleResponseEvent(event: Status){\n console.log(\"Response Event: \", event);\n if (event.Code === 0){\n this.snackBar.open(\"Build Pipeline Created Succesfully\", \"Dismiss\",{\n duration: 5000\n });\n this.CloseDialog();\n }\n else{\n this.ErrorMessage = event.Message;\n }\n }\n\n public SaveBuildPipeline(){\n this.BuildPipelineControl.SaveEnvironment();\n }\n\n \n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Build Pipeline</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n<ng-container *ngIf=\"!HasConnection\">\n \n <lcu-git-auth></lcu-git-auth>\n\n</ng-container>\n\n<ng-container *ngIf=\"HasConnection\">\n\n<lcu-build-pipeline-form \n [devops-action-lookup]=\"data.devopsActionLookup\"\n [environment]=\"data.environment\" \n [environment-lookup]=\"data.environmentLookup\"\n (response-event)=\"HandleResponseEvent($event)\"\n >\n\n</lcu-build-pipeline-form>\n\n<mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n</mat-error>\n\n</ng-container>\n</mat-dialog-content>\n\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"space-between center\"\n>\n <div fxLayoutAlign=\"start center\">\n\n <button\n mat-raised-button\n color=\"warn\"\n (click)=\"DeleteDevOpsAction()\"\n matTooltip=\"Delete {{ data.doaName }}\"\n >\n Delete\n </button>\n </div>\n <div fxLayoutAlign=\"end center\">\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"52%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveBuildPipeline()\"\n [disabled]=\"!BuildPipelineFormGroup?.valid || !BuildPipelineFormGroup?.dirty\">\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n </div>\n\n</mat-dialog-actions>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { EaCApplicationAsCode } from '@semanticjs/common';\nimport { EaCService, SaveApplicationAsCodeEventRequest } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-edit-application-form',\n templateUrl: './edit-application-form.component.html',\n styleUrls: ['./edit-application-form.component.scss']\n})\nexport class EditApplicationFormComponent implements OnInit {\n\n @Input('application-lookup')\n public ApplicationLookup: string;\n\n @Input('current-route')\n public CurrentRoute: string;\n\n @Input('editing-application') \n public EditingApplication: EaCApplicationAsCode;\n\n @Input('has-save-button')\n public HasSaveButton: boolean;\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n @Output('save-form-event')\n public SaveFormEvent: EventEmitter<{}>\n\n public get DescriptionFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.description;\n }\n\n public get NameFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.name;\n }\n\n public get RouteFormControl(): AbstractControl {\n return this.ApplicationFormGroup?.controls.route;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public ApplicationFormGroup: FormGroup;\n\n constructor(protected formBldr: FormBuilder,\n protected eacSvc: EaCService) {\n this.SaveFormEvent = new EventEmitter;\n this.HasSaveButton = true;\n }\n\n public ngOnInit(): void {\n this.setupApplicationForm();\n }\n\n public SubmitApplicationControl(){\n console.log(\"application form: \", this.ApplicationFormGroup.value);\n this.SaveApplication();\n }\n\n public SaveApplication(): void {\n const app: EaCApplicationAsCode = this.EditingApplication;\n // console.log(\"APP=\", app);\n app.Application = {\n Name: this.NameFormControl.value,\n Description: this.DescriptionFormControl.value,\n PriorityShift: this.EditingApplication?.Application?.PriorityShift || 0,\n };\n\n app.LookupConfig.PathRegex = `${this.RouteFormControl.value}.*`;\n\n switch (app.Processor.Type) {\n case 'DFS':\n app.Processor.BaseHref = `${this.RouteFormControl.value}/`.replace('//', '/');\n\n break;\n }\n\n if (!app.LookupConfig.PathRegex.startsWith('/')) {\n app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;\n }\n\n const saveAppReq: SaveApplicationAsCodeEventRequest = {\n ProjectLookup: this.ProjectLookup,\n Application: app,\n ApplicationLookup: this.ApplicationLookup,\n };\n\n console.log(\"processor details being submitted: \", app.Processor)\n\n this.eacSvc.SaveApplicationAsCode(saveAppReq).then(res =>{\n this.SaveFormEvent.emit(res);\n })\n \n }\n\n //HELPERS\n protected setupApplicationForm(){\n if (this.EditingApplication != null) {\n this.ApplicationFormGroup = this.formBldr.group({\n name: [this.EditingApplication.Application?.Name, Validators.required],\n description: [\n this.EditingApplication.Application?.Description,\n Validators.required,\n ],\n route: [this.CurrentRoute ? this.CurrentRoute :\n this.EditingApplication.LookupConfig?.PathRegex.replace('.*', '') ||\n '/',\n Validators.required,\n ],\n // priority: [\n // this.EditingApplication.Application?.Priority || 10000,\n // Validators.required,\n // ],\n });\n }\n }\n\n \n\n}\n","<form class=\"form-card\" [formGroup]=\"ApplicationFormGroup\" (ngSubmit)=\"SubmitApplicationControl()\" >\n <!-- <mat-card class=\"spread flow-card\"> -->\n <!-- <mat-card-header>\n <mat-card-title>\n <ng-container *ngIf=\"EditingApplication?.Application\">\n Edit Application:\n {{ EditingApplication.Application?.Name }}\n </ng-container>\n\n <ng-container *ngIf=\"!EditingApplication?.Application\">\n Create an Application\n </ng-container>\n </mat-card-title>\n </mat-card-header> -->\n\n <!-- <mat-card-content> -->\n <ng-container *ngIf=\"State?.Loading\">\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n <skeleton-block \n class=\"s-block\"\n effect=\"wave\" \n ></skeleton-block>\n\n </ng-container>\n\n <ng-container *ngIf=\"!State?.Loading\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Name\"\n formControlName=\"name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n placeholder=\"Description\"\n formControlName=\"description\"\n rows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Route\"\n formControlName=\"route\"\n required\n />\n </mat-form-field>\n </ng-container>\n\n <!-- </mat-card-content> -->\n <!-- <mat-card-actions fxLayoutAlign=\"center center\">\n\n <button \n *ngIf=\"HasSaveButton && !State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ApplicationFormGroup.valid || !ApplicationFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save\n </button>\n <lcu-loader *ngIf=\"HasSaveButton\" [loading]=\"State?.Loading\"></lcu-loader>\n \n </mat-card-actions> -->\n <!-- </mat-card> -->\n</form>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { EaCApplicationAsCode } from '@semanticjs/common';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n})\nexport class BreadcrumbComponent implements OnInit {\n @Input('application-lookup')\n public ApplicationLookup: string;\n\n \n\n public get Enterprise(): any {\n return this.State?.EaC?.Enterprise;\n }\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n @Input('selected-route')\n public SelectedRoute: string;\n\n public get ApplicationsBank(): { [lookup: string]: EaCApplicationAsCode } {\n return this.State?.EaC?.Applications || {};\n }\n\n public get Applications(): { [lookup: string]: EaCApplicationAsCode } {\n const apps: { [lookup: string]: EaCApplicationAsCode } = {};\n\n this.SelectedProject?.ApplicationLookups?.forEach((appLookup: string) => {\n apps[appLookup] = this.ApplicationsBank[appLookup];\n });\n return apps;\n }\n\n public get SelectedApplication(): EaCApplicationAsCode {\n return this.State?.EaC?.Applications[this.ApplicationLookup] || {};\n }\n\n public get CurrentRouteApplicationLookups(): Array<string> {\n return Object.keys(this.RoutedApplications[this.SelectedRoute] || {});\n }\n\n public get Loading(): boolean {\n return (\n this.State?.LoadingActiveEnterprise || this.State?.LoadingEnterprises\n );\n }\n\n public get Projects(): any {\n return this.State?.EaC?.Projects || {};\n }\n\n public get ProjectLookups(): string[] {\n return Object.keys(this.State?.EaC?.Projects || {});\n }\n\n public get Routes(): Array<string> {\n return Object.keys(this.RoutedApplications || {});\n }\n\n public get RoutedApplications(): {\n [route: string]: { [lookup: string]: EaCApplicationAsCode };\n } {\n const appLookups = Object.keys(this.Applications);\n\n const apps = appLookups.map((appLookup) => this.Applications[appLookup]);\n\n let appRoutes =\n apps.map((app) => {\n return app?.LookupConfig?.PathRegex.replace('.*', '');\n }) || [];\n\n appRoutes = appRoutes.filter((ar) => ar != null);\n\n let routeBases: string[] = [];\n\n appRoutes?.forEach((appRoute) => {\n const appRouteParts = appRoute.split('/');\n\n const appRouteBase = `/${appRouteParts[1]}`;\n\n if (routeBases.indexOf(appRouteBase) < 0) {\n routeBases.push(appRouteBase);\n }\n });\n\n let workingAppLookups = [...(appLookups || [])];\n\n routeBases = routeBases.sort((a, b) => b.localeCompare(a));\n\n const routeSet =\n routeBases.reduce((prevRouteMap, currentRouteBase) => {\n const routeMap = {\n ...prevRouteMap,\n };\n\n const filteredAppLookups = workingAppLookups.filter((wal) => {\n const wa = this.Applications[wal];\n\n return wa?.LookupConfig?.PathRegex.startsWith(currentRouteBase);\n });\n\n routeMap[currentRouteBase] =\n filteredAppLookups.reduce((prevAppMap, appLookup) => {\n const appMap = {\n ...prevAppMap,\n };\n\n appMap[appLookup] = this.Applications[appLookup];\n\n return appMap;\n }, {}) || {};\n\n workingAppLookups = workingAppLookups.filter((wa) => {\n return filteredAppLookups.indexOf(wa) < 0;\n });\n\n return routeMap;\n }, {}) || {};\n\n let routeSetKeys = Object.keys(routeSet);\n\n routeSetKeys = routeSetKeys.sort((a, b) => a.localeCompare(b));\n\n const routeSetResult = {};\n\n routeSetKeys?.forEach((rsk) => (routeSetResult[rsk] = routeSet[rsk]));\n\n return routeSetResult;\n }\n\n public get SelectedProject(): any {\n return this.State?.EaC?.Projects[this.ProjectLookup] || {};\n }\n\n public get State(): ApplicationsFlowState {\n return this.eacSvc.State;\n }\n\n public SkeletonEffect: string;\n\n constructor(protected eacSvc: EaCService) {\n this.SkeletonEffect = 'wave';\n }\n\n ngOnInit(): void {\n this.handleStateChange().then((eac) => {});\n\n // console.log(\"state: \", this.State)\n\n console.log(\"selected enterprise: \", this.Enterprise)\n\n // console.log('Selected project: ', this.SelectedProject.Project);\n\n // console.log('SelectedRoute:', this.SelectedRoute);\n }\n\n public SetActiveEnterprise(entLookup: string): void {\n this.eacSvc.SetActiveEnterprise(entLookup).then(() => {});\n }\n\n protected async handleStateChange(): Promise<void> {}\n}\n","<div class=\"breadcrumb-container\" fxLayout=\"row wrap\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <ng-container *ngIf=\"State.Loading || Loading\">\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">home</mat-icon>\n\n <div skeleton-text [effect]=\"SkeletonEffect\">Enterprise Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!State.Loading && Enterprise && !Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/enterprises']\">\n <mat-icon>home</mat-icon>\n\n {{ Enterprise?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"enterpriseMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #enterpriseMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n [routerLink]=\"['/enterprises']\"\n (click)=\"SetActiveEnterprise(ent.Lookup)\"\n *ngFor=\"let ent of State.Enterprises\"\n >\n <span>{{ ent.Name }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"ProjectLookup && SelectedProject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"State?.Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Project Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!State?.Loading\">\n <div class=\"crumb-name\" [routerLink]=\"['/projects', ProjectLookup]\">\n {{ SelectedProject?.Project?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"projectMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #projectMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let projectLookup of ProjectLookups\"\n [routerLink]=\"['/projects', projectLookup]\"\n >\n <span *ngIf=\"Projects[projectLookup]; let pro\">{{\n pro.Project?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div *ngIf=\"SelectedRoute\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"State?.Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Route Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!State?.Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"['/routes', SelectedRoute, ProjectLookup]\"\n >\n {{ SelectedRoute }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"routeMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #routeMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appRoute of Routes\"\n [routerLink]=\"['/routes', appRoute, ProjectLookup]\"\n >\n <span *ngIf=\"appRoute\">{{ appRoute }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n\n <div\n *ngIf=\"SelectedApplication && ApplicationLookup\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n >\n <span class=\"seperator\">/</span>\n\n <ng-container *ngIf=\"State?.Loading\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Application Name</div>\n </ng-container>\n\n <ng-container *ngIf=\"!State?.Loading\">\n <div\n class=\"crumb-name\"\n [routerLink]=\"[\n '/applications',\n ApplicationLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n {{ SelectedApplication?.Application?.Name }}\n </div>\n\n <button mat-icon-button [matMenuTriggerFor]=\"applicationMenu\">\n <mat-icon>expand_more</mat-icon>\n </button>\n\n <mat-menu #applicationMenu=\"matMenu\" xPosition=\"before\">\n <button\n mat-menu-item\n *ngFor=\"let appLookup of CurrentRouteApplicationLookups\"\n [routerLink]=\"[\n '/applications',\n appLookup,\n SelectedRoute,\n ProjectLookup\n ]\"\n >\n <span *ngIf=\"RoutedApplications[SelectedRoute][appLookup]; let app\">{{\n app.Application?.Name\n }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { EaCHost, EaCProjectAsCode } from '@semanticjs/common';\n\nexport interface CDDialogData {\n hosts: { [lookup: string]: EaCHost };\n primaryHost: string;\n project: EaCProjectAsCode;\n projectLookup: string;\n}\n\n@Component({\n selector: 'lcu-custom-domain-dialog',\n templateUrl: './custom-domain-dialog.component.html',\n styleUrls: ['./custom-domain-dialog.component.scss']\n})\n\nexport class CustomDomainDialogComponent implements OnInit {\n\n public DomainData: {};\n\n constructor(public dialogRef: MatDialogRef<CustomDomainDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: CDDialogData) {\n\n this.DomainData = {\n Hosts: this.data.hosts,\n PrimaryHost: this.data.primaryHost,\n Project: this.data.project,\n ProjectLookup: this.data.projectLookup\n }\n \n }\n\n public ngOnInit(): void {\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n}\n","<!-- <div class=\"dialog-header\" fxLayoutAlign=\"end center\">\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div> -->\n\n\n\n\n<!-- NEW BELOW -->\n<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Custom Domain</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n\n\n <lcu-domains\n [data]=\"DomainData\"\n >\n \n </lcu-domains>\n\n <!-- <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n </mat-error> -->\n\n</mat-dialog-content>\n\n\n<!-- <mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveCustomDomain()\"\n [disabled]=\"!BuildPipelineFormGroup?.valid || !BuildPipelineFormGroup?.dirty\">\n Save\n </button>\n\n</mat-dialog-actions> -->\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Status } from '@lcu/common';\nimport { EaCApplicationAsCode } from '@semanticjs/common';\nimport { EditApplicationFormComponent } from '../../controls/edit-application-form/edit-application-form.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\nexport interface ApplicationDialogData {\n application: EaCApplicationAsCode;\n applicationLookup: string;\n projectLookup: string;\n}\n\n@Component({\n selector: 'lcu-edit-application-dialog',\n templateUrl: './edit-application-dialog.component.html',\n styleUrls: ['./edit-application-dialog.component.scss']\n})\nexport class EditApplicationDialogComponent implements OnInit {\n\n @ViewChild(EditApplicationFormComponent)\n public EditApplicationControl: EditApplicationFormComponent;\n\n public get ApplicationFormGroup(): FormGroup{\n return this.EditApplicationControl?.ApplicationFormGroup;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public ErrorMessage: string;\n\n constructor(public eacSvc: EaCService,\n public dialogRef: MatDialogRef<EditApplicationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: ApplicationDialogData,\n protected snackBar: MatSnackBar) { }\n\n public ngOnInit(): void {\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public HandleSaveApplicationEvent(event: Status){\n console.log(\"event to save: \", event);\n if (event.Code === 0){\n this.snackBar.open(\"Application Succesfully Updated\", \"Dismiss\",{\n duration: 5000\n });\n this.CloseDialog();\n }\n else{\n this.ErrorMessage = event.Message;\n }\n }\n\n public SaveApplication(){\n this.EditApplicationControl.SaveApplication();\n }\n\n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Edit Application:\n {{ data.application?.Application?.Name }}</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n<lcu-edit-application-form \n [application-lookup]=\"data.applicationLookup\"\n [editing-application]=\"data.application\"\n [project-lookup]=\"data.projectLookup\"\n (save-form-event)=\"HandleSaveApplicationEvent($event)\">\n</lcu-edit-application-form>\n\n<mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n</mat-error>\n\n</mat-dialog-content>\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveApplication()\"\n [disabled]=\"!ApplicationFormGroup?.valid || !ApplicationFormGroup?.dirty\">\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n\n</mat-dialog-actions>\n\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Guid, Status } from '@lcu/common';\nimport { EaCApplicationAsCode, EaCEnvironmentAsCode, EaCSourceControl, EnterpriseAsCode } from '@semanticjs/common';\nimport { EditApplicationFormComponent } from '../../controls/edit-application-form/edit-application-form.component';\nimport { ProcessorDetailsFormComponent } from '../../controls/processor-details-form/processor-details-form.component';\nimport { EaCService, SaveApplicationAsCodeEventRequest } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\nexport interface NewApplicationDialogData {\n environmentLookup: string;\n projectLookup: string;\n currentRoute: string;\n}\n\n@Component({\n selector: 'lcu-new-application-dialog',\n templateUrl: './new-application-dialog.component.html',\n styleUrls: ['./new-application-dialog.component.scss']\n})\n\nexport class NewApplicationDialogComponent implements OnInit {\n\n @ViewChild(EditApplicationFormComponent)\n public ApplicationFormControls: EditApplicationFormComponent;\n\n @ViewChild(ProcessorDetailsFormComponent)\n public ProcessorDetailsFormControls: ProcessorDetailsFormComponent;\n\n public get Environment(): EaCEnvironmentAsCode {\n return this.State?.EaC?.Environments[this.data.environmentLookup];\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Environment?.Sources || {};\n }\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.Environment.Sources || {});\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public ErrorMessage: string;\n\n public HasSaveButton: boolean;\n\n public NewApplication: EaCApplicationAsCode;\n\n public NewApplicationLookup: string;\n\n\n constructor(\n protected eacSvc: EaCService, \n public dialogRef: MatDialogRef<NewApplicationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: NewApplicationDialogData,\n protected snackBar: MatSnackBar) { \n\n this.HasSaveButton = false\n }\n\n public ngOnInit(): void {\n\n this.SetupApplication(Guid.CreateRaw());\n \n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public SetupApplication(appLookup: string){\n this.NewApplication = new EaCApplicationAsCode;\n this.NewApplicationLookup = appLookup;\n\n }\n\n \n\n public SaveApplication(): void {\n const app: EaCApplicationAsCode = {\n Application: {\n Name: this.ApplicationFormControls.NameFormControl.value,\n Description: this.ApplicationFormControls.DescriptionFormControl.value,\n PriorityShift: 0,\n },\n AccessRightLookups: [],\n DataTokens: {},\n LicenseConfigurationLookups: [],\n LookupConfig: {\n IsPrivate: false,\n IsTriggerSignIn: false,\n PathRegex: `${this.ApplicationFormControls.RouteFormControl.value}.*`,\n QueryRegex: '',\n HeaderRegex: '',\n AllowedMethods: this.ProcessorDetailsFormControls.MethodsFormControl?.value\n ?.split(' ')\n .filter((v: string) => !!v),\n },\n Processor: {\n Type: this.ProcessorDetailsFormControls.ProcessorType,\n },\n };\n\n switch (app.Processor.Type) {\n case 'DFS':\n app.Processor.BaseHref = `${this.ApplicationFormControls.RouteFormControl.value}/`.replace(\n '//',\n '/'\n );\n\n app.Processor.DefaultFile =\n this.ProcessorDetailsFormControls.DefaultFileFormControl.value || 'index.html';\n\n app.LowCodeUnit = {\n Type: this.ProcessorDetailsFormControls.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHub':\n app.LowCodeUnit.Organization =\n this.SourceControls[\n this.ProcessorDetailsFormControls.SourceControlFormControl.value\n ].Organization;\n\n app.LowCodeUnit.Repository =\n this.SourceControls[\n this.ProcessorDetailsFormControls.SourceControlFormControl.value\n ].Repository;\n\n app.LowCodeUnit.Build = this.ProcessorDetailsFormControls.BuildFormControl.value;\n\n app.LowCodeUnit.Path =\n this.ProcessorDetailsFormControls.BuildPathFormControl.value;\n break;\n\n case 'NPM':\n app.LowCodeUnit.Package = this.ProcessorDetailsFormControls.PackageFormControl.value;\n\n app.LowCodeUnit.Version = this.ProcessorDetailsFormControls.VersionFormControl.value;\n break;\n\n case 'Zip':\n app.LowCodeUnit.ZipFile = this.ProcessorDetailsFormControls.ZipFileFormControl.value;\n break;\n }\n break;\n\n case 'OAuth':\n app.Processor.Scopes = this.ProcessorDetailsFormControls.ScopesFormControl.value.split(' ');\n\n app.Processor.TokenLookup = this.ProcessorDetailsFormControls.TokenLookupFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.ProcessorDetailsFormControls.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'GitHubOAuth':\n app.LowCodeUnit.ClientID = this.ProcessorDetailsFormControls.ClientIDFormControl.value;\n\n app.LowCodeUnit.ClientSecret = this.ProcessorDetailsFormControls.ClientSecretFormControl.value;\n break;\n }\n break;\n\n case 'Proxy':\n app.Processor.InboundPath = this.ProcessorDetailsFormControls.InboundPathFormControl.value;\n\n app.LowCodeUnit = {\n Type: this.ProcessorDetailsFormControls.LCUType,\n };\n\n switch (app.LowCodeUnit.Type) {\n case 'API':\n app.LowCodeUnit.APIRoot = this.ProcessorDetailsFormControls.APIRootFormControl.value;\n\n app.LowCodeUnit.Security = this.ProcessorDetailsFormControls.SecurityFormControl.value;\n\n break;\n\n case 'SPA':\n app.LowCodeUnit.SPARoot = this.ProcessorDetailsFormControls.SPARootFormControl.value;\n break;\n }\n break;\n\n case 'Redirect':\n app.Processor.Permanent = !!this.ProcessorDetailsFormControls.PermanentFormControl.value;\n\n app.Processor.PreserveMethod = !!this.ProcessorDetailsFormControls.PreserveMethodFormControl.value;\n\n app.Processor.Redirect = this.ProcessorDetailsFormControls.RedirectFormControl.value;\n break;\n }\n\n if (!app.LookupConfig.PathRegex.startsWith('/')) {\n app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;\n }\n\n const saveAppReq: SaveApplicationAsCodeEventRequest = {\n ProjectLookup: this.data.projectLookup,\n Application: app,\n ApplicationLookup: this.NewApplicationLookup,\n };\n// this.HasBuildFormControl.value && taken out from below if statement\n if (this.ProcessorDetailsFormControls.ProcessorType !== 'redirect' && this.ProcessorDetailsFormControls.LCUType === 'GitHub') {\n if (app) {\n app.LowCodeUnit.SourceControlLookup = this.ProcessorDetailsFormControls.SourceControlFormControl.value;\n }\n } else if (app) {\n app.LowCodeUnit.SourceControlLookup = null;\n }\n\n // console.log(\"Save new App request: \", saveAppReq);\n\n\n this.eacSvc.SaveApplicationAsCode(saveAppReq).then(res =>{\n this.handleSaveStatus(res);\n });\n }\n\n protected handleSaveStatus(status: Status){\n console.log(\"event to save: \", status);\n if (status.Code === 0){\n this.snackBar.open(\"Application Succesfully Created\", \"Dismiss\",{\n duration: 5000\n });\n this.CloseDialog();\n }\n else{\n this.ErrorMessage = status.Message;\n }\n }\n\n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Create Application</h2>\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n <lcu-edit-application-form \n [current-route]=\"data.currentRoute\"\n [editing-application]=\"NewApplication\"\n [has-save-button]=\"HasSaveButton\"\n >\n </lcu-edit-application-form>\n\n <lcu-processor-details-form \n [editing-application]=\"NewApplication\"\n [editing-application-lookup]=\"NewApplicationLookup\"\n [has-save-button]=\"HasSaveButton\"\n [source-control-lookups]=\"SourceControlLookups\"\n [project-lookup]=\"data.projectLookup\"\n >\n </lcu-processor-details-form>\n\n <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n </mat-error>\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n\n <button \n *ngIf=\"ProcessorDetailsFormControls && ApplicationFormControls && !State?.Loading\"\n mat-raised-button \n color=\"primary\"\n fxFlex=\"25%\"\n class=\"new-app-submit\" \n (click)=\"SaveApplication()\"\n [disabled]=\"\n !ProcessorDetailsFormControls?.ProcessorDetailsFormGroup?.valid \n || \n !ApplicationFormControls?.ApplicationFormGroup?.valid\n \"\n >\n Save Application\n </button>\n</mat-dialog-actions>\n\n\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Status } from '@lcu/common';\nimport { EaCApplicationAsCode, EaCEnvironmentAsCode, EaCSourceControl } from '@semanticjs/common';\nimport { ProcessorDetailsFormComponent } from '../../controls/processor-details-form/processor-details-form.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n\nexport interface ProcessorDetailsDialogData {\n applicationLookup: string;\n environmentLookup: string;\n projectLookup: string;\n}\n\n@Component({\n selector: 'lcu-processor-details-dialog',\n templateUrl: './processor-details-dialog.component.html',\n styleUrls: ['./processor-details-dialog.component.scss']\n})\n\nexport class ProcessorDetailsDialogComponent implements OnInit {\n\n @ViewChild(ProcessorDetailsFormComponent)\n public ProcessorDetailsFormControls: ProcessorDetailsFormComponent;\n\n public get Application(): EaCApplicationAsCode {\n return this.State?.EaC?.Applications[this.data.applicationLookup] || {};\n }\n\n public get Environment(): EaCEnvironmentAsCode {\n return this.State?.EaC?.Environments[this.data.environmentLookup];\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Environment?.Sources || {};\n }\n\n public get SourceControlLookups(): Array<string> {\n return Object.keys(this.Environment?.Sources || {});\n }\n\n public get State(): ApplicationsFlowState {\n return this.eacSvc.State;\n }\n\n public get ProcessorDetailsFormGroup(): FormGroup{\n return this.ProcessorDetailsFormControls?.ProcessorDetailsFormGroup;\n }\n\n public ErrorMessage: string;\n\n constructor(protected eacSvc: EaCService, \n public dialogRef: MatDialogRef<ProcessorDetailsDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: ProcessorDetailsDialogData,\n protected snackBar: MatSnackBar) { }\n\n public ngOnInit(): void {\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public HandleSaveFormEvent(event: Status){\n console.log(\"event: \", event);\n if (event.Code === 0){\n this.snackBar.open(\"Build Pipeline Created Succesfully\", \"Dismiss\",{\n duration: 5000\n });\n this.CloseDialog();\n }\n else{\n this.ErrorMessage = event.Message;\n }\n }\n\n public SaveProcessorDetails(){\n this.ProcessorDetailsFormControls.SaveProcessorDetails();\n\n }\n\n\n \n\n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Processor Details</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n\n<lcu-processor-details-form \n more-details \n [editing-application]=\"Application\"\n [editing-application-lookup]=\"data.applicationLookup\" \n [source-control-lookups]=\"SourceControlLookups\"\n [project-lookup]=\"data.projectLookup\"\n (save-form-event)=\"HandleSaveFormEvent($event)\"\n>\n</lcu-processor-details-form>\n\n<mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n</mat-error>\n\n</mat-dialog-content>\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveProcessorDetails()\"\n [disabled]=\"!ProcessorDetailsFormGroup?.valid || !ProcessorDetailsFormGroup?.dirty\"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n\n</mat-dialog-actions>\n\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lcu-skeleton-feed-card',\n templateUrl: './skeleton-feed-card.component.html',\n styleUrls: ['./skeleton-feed-card.component.scss']\n})\nexport class SkeletonFeedCardComponent implements OnInit {\n\n public SkeletonEffect: string;\n\n constructor() { \n this.SkeletonEffect = 'wave';\n }\n\n ngOnInit(): void {\n }\n\n}\n","<mat-card class=\"social-card\">\n <mat-card-header>\n \n <skeleton-avatar mat-card-avatar size=\"100\" [effect]=\"SkeletonEffect\"></skeleton-avatar>\n \n <mat-card-title skeleton-text [effect]=\"SkeletonEffect\">FeedItem Title</mat-card-title>\n \n <mat-card-subtitle>\n <div skeleton-text [effect]=\"SkeletonEffect\">FeedItem Subtitle</div>\n <div >\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">check</mat-icon>\n \n <div skeleton-text [effect]=\"SkeletonEffect\">Timestamp</div>\n </div>\n </mat-card-subtitle>\n </mat-card-header>\n \n <mat-card-content>\n <div skeleton-text [effect]=\"SkeletonEffect\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sit amet\n ante dui. Praesent ut aliquam metus. Phasellus consectetur non eros eu\n gravida. Vestibulum faucibus laoreet leo, ac molestie felis tincidunt\n semper. Vivamus lorem ipsum, sagittis nec blandit sed, accumsan sed\n dolor. Etiam tincidunt vel ligula ut malesuada. Nulla sit amet fermentum\n libero. Quisque magna tellus, pellentesque in convallis vitae, aliquet\n et orci. Pellentesque commodo ante id est viverra posuere ac vitae\n ligula. Ut sed ullamcorper purus. Integer sit amet lorem eros.\n </div>\n </mat-card-content>\n \n <mat-card-actions fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Button Text</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Button Text</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Button Text</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Button Text</div>\n </mat-card-actions>\n </mat-card>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { EaCApplicationAsCode } from '@semanticjs/common';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-emulated-devices-toggle',\n templateUrl: './emulated-devices-toggle.component.html',\n styleUrls: ['./emulated-devices-toggle.component.scss']\n})\nexport class EmulatedDevicesToggleComponent implements OnInit {\n\n @Input('editing-application')\n public EditingApplication: EaCApplicationAsCode;\n\n @Output('save-form-event')\n public SaveFormEvent: EventEmitter<{}>;\n\n public get IsPrivateFormControl(): AbstractControl {\n return this.EmulatedDevicesFormGroup?.controls.isPrivate;\n }\n\n public get IsTriggerSignInFormControl(): AbstractControl {\n return this.EmulatedDevicesFormGroup?.controls.isTriggerSignIn;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public EmulatedDevicesFormGroup: FormGroup;\n\n public ProcessorType: string;\n\n public SkeletonEffect: string;\n\n constructor(protected eacSvc: EaCService,\n protected formBldr: FormBuilder) { \n this.SaveFormEvent = new EventEmitter;\n this.SkeletonEffect = 'wave';\n }\n\n public ngOnInit(): void {\n this.setupEmulatedDevicesFormGroup();\n }\n\n public EmulatedDevicesSubmit() {\n //save the EmulatedDevices settings\n console.log(\"submitting EmulatedDevices values: \", this.EmulatedDevicesFormGroup.value);\n this.SaveFormEvent.emit(this.EmulatedDevicesFormGroup.value);\n }\n\n protected setupEmulatedDevicesFormGroup() {\n this.ProcessorType = this.EditingApplication?.Processor?.Type || '';\n this.EmulatedDevicesFormGroup = this.formBldr.group({});\n this.setupEmulatedDevicesForm();\n }\n\n protected setupEmulatedDevicesForm(): void {\n this.EmulatedDevicesFormGroup.addControl(\n 'isEmulated',\n this.formBldr.control(\n this.EditingApplication.LookupConfig?.IsPrivate || false,\n [Validators.required]\n )\n );\n }\n\n}\n","<form\n class=\"emulated-devices-form\"\n [formGroup]=\"EmulatedDevicesFormGroup\"\n (ngSubmit)=\"EmulatedDevicesSubmit()\"\n>\n <mat-card class=\"flow-card\">\n <!-- SKELETON LOADING -->\n <ng-container *ngIf=\"State?.Loading\">\n <mat-card-header fxLayoutAlign=\"space-between center\">\n <mat-card-title skeleton-text [effect]=\"SkeletonEffect\">\n Emulated Devices Settings\n </mat-card-title>\n <div fxLayoutAlign=\"space-around center\">\n <div skeleton-text [effect]=\"SkeletonEffect\">XXX</div>\n\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\">\n info_outline\n </mat-icon>\n </div>\n </mat-card-header>\n\n <mat-card-actions fxLayoutAlign=\"center center\">\n <div\n fxFlex=\"100%\"\n skeleton-text\n [effect]=\"SkeletonEffect\"\n fxLayoutAlign=\"center center\"\n >\n <mat-icon skeleton-text [effect]=\"SkeletonEffect\"> save </mat-icon>\n\n Save Settings\n </div>\n </mat-card-actions>\n </ng-container>\n <!-- END SKELETON LOADING -->\n\n <!-- BEGIN ACTUAL CONTENT -->\n\n <ng-container *ngIf=\"!State?.Loading\">\n <mat-card-header>\n <mat-card-title> Emulated Device Settings </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-slide-toggle\n formControlName=\"isPrivate\"\n matTooltip=\"Is Secure Application?\"\n >\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Secured Application is one that requires the user to be authenticated to use the application. The application is hosted behind an identity wall.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header>\n\n <mat-card-content>\n <div>\n <div *ngIf=\"IsPrivateFormControl.value\">\n <div>\n <mat-slide-toggle formControlName=\"isTriggerSignIn\">\n Is Trigger Sign In Application?\n </mat-slide-toggle>\n\n <mat-icon\n matSuffix\n matTooltip=\"A Trigger Sign In Application will direct the user to sign in if they are not already.\"\n >\n info_outline\n </mat-icon>\n </div>\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions fxLayoutAlign=\"center center\">\n <button\n mat-raised-button\n type=\"submit\"\n fxFlex=\"100%\"\n color=\"primary\"\n [disabled]=\"!EmulatedDevicesFormGroup.valid || !EmulatedDevicesFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon>\n Save Settings\n </button>\n </mat-card-actions>\n </ng-container>\n </mat-card>\n</form>\n","import { Status } from '@lcu/common';\r\n\r\nexport class IoTEnsembleState {\r\n public AccessLicenseType?: string;\r\n\r\n public AccessPlanGroup?: string;\r\n\r\n public DataInterval?: number;\r\n\r\n public DataRetention?: number;\r\n\r\n public DevicesConfig?: IoTEnsembleConnectedDevicesConfig;\r\n\r\n public Dashboard?: IoTEnsembleDashboardConfiguration;\r\n\r\n public Drawers?: IoTEnsembleDrawersConfig;\r\n\r\n public Emulated?: EmulatedDeviceInfo;\r\n\r\n public Error?: ErrorContext;\r\n\r\n public ExpandedPayloadID?: string;\r\n\r\n public HasAccess?: boolean;\r\n\r\n public Loading?: boolean;\r\n\r\n public SelectedDeviceID?: string;\r\n\r\n public Storage?: IoTEnsembleStorageConfiguration;\r\n\r\n public Telemetry?: IoTEnsembleTelemetry;\r\n\r\n public UserEnterpriseLookup?: string;\r\n}\r\n\r\nexport class EmulatedDeviceInfo {\r\n public Enabled?: boolean;\r\n\r\n public Loading?: boolean;\r\n}\r\n\r\nexport class IoTEnsembleDashboardConfiguration {\r\n public FreeboardConfig?: any;\r\n\r\n public PowerBIConfig?: any;\r\n}\r\n\r\nexport class ErrorContext {\r\n public ActionPath?: string;\r\n\r\n public ActionTarget?: string;\r\n\r\n public ActionText?: string;\r\n\r\n public Message?: string;\r\n\r\n public Title?: string;\r\n}\r\n\r\nexport class IoTEnsembleDeviceEnrollment {\r\n public DeviceName?: string;\r\n}\r\n\r\nexport class IoTEnsembleConnectedDevicesConfig {\r\n public EnterpriseDevicesCount: number;\r\n\r\n public Devices?: IoTEnsembleDeviceInfo[];\r\n\r\n public Loading?: boolean;\r\n\r\n public MaxDevicesCount?: number;\r\n\r\n public Page?: number;\r\n\r\n public PageSize?: number;\r\n\r\n public SASTokens?: { [deviceName: string]: string };\r\n\r\n public Status?: Status;\r\n\r\n public TotalDevices?: number;\r\n}\r\n\r\nexport class IoTEnsembleDeviceInfo {\r\n [prop: string]: any;\r\n\r\n public ActivelySendingData?: boolean;\r\n\r\n public AuthenticationType?: string;\r\n\r\n public CloudToDeviceMessageCount?: number;\r\n\r\n public ConnectionString?: string;\r\n\r\n public DeviceID?: string;\r\n\r\n public DeviceName?: string;\r\n\r\n public LastStatusUpdate?: Status;\r\n\r\n}\r\n\r\nexport class IoTEnsembleTelemetry {\r\n\r\n public Enabled?: boolean;\r\n\r\n public Loading?: boolean;\r\n\r\n public Page?: number;\r\n\r\n public PageSize?: number;\r\n\r\n public Payloads?: IoTEnsembleTelemetryPayload[];\r\n\r\n public RefreshRate?: number;\r\n\r\n public LastSyncedAt?: string;\r\n\r\n public TotalPayloads?: number;\r\n}\r\n\r\nexport class IoTEnsembleTelemetryPayload {\r\n [prop: string]: any;\r\n\r\n public DeviceData?: { [prop: string]: any };\r\n\r\n public DeviceID?: string;\r\n\r\n public DeviceType?: string;\r\n\r\n public ID?: string;\r\n\r\n public SensorMetadata?: { [prop: string]: any };\r\n\r\n public SensorReadings?: { [prop: string]: any };\r\n\r\n public Timestamp?: Date;\r\n\r\n public TotalPayloads?: number;\r\n\r\n public Version?: string;\r\n}\r\n\r\nexport class IoTEnsembleDrawersConfig {\r\n public DetailsActive: boolean;\r\n\r\n public HasBackdrop: boolean;\r\n\r\n public NavActive: boolean;\r\n}\r\n\r\nexport class IoTEnsembleStorageConfiguration {\r\n public APIKeys: IoTEnsembleAPIKeyData[];\r\n\r\n public OpenAPISource: string;\r\n}\r\n\r\nexport class IoTEnsembleAPIKeyData {\r\n public Key: string;\r\n\r\n public KeyName: string;\r\n}\r\n\r\nexport enum ColdQueryDataTypes {\r\n Telemetry = 'Telemetry',\r\n Observations = 'Observations',\r\n SensorMetadata = 'SensorMetadata',\r\n}\r\n\r\nexport enum ColdQueryResultTypes {\r\n CSV = 'CSV',\r\n JSON = 'JSON',\r\n JSONLines = 'JSONLines',\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { IoTEnsembleState } from '../state/iot-ensemble.state';\nimport { LCUServiceSettings } from '@lcu/common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IoTEnsembleService {\n // Fields\n protected apiRoot: string;\n\n // Properties\n public State: IoTEnsembleState;\n\n // Constructors\n constructor(\n protected http: HttpClient,\n protected settings: LCUServiceSettings\n ) {\n this.apiRoot = settings.APIRoot;\n\n this.State = new IoTEnsembleState();\n }\n\n // API Methods\n public ColdQuery(): Observable<object> {\n return this.http.get(\n `${this.apiRoot}/api/lowcodeunit/iot/cold-query`,\n {\n headers: this.loadHeaders(),\n }\n );\n }\n \n public ToggleEmulatedEnabled(): Observable<object> {\n return this.http.get(\n `${this.apiRoot}/api/lowcodeunit/userfeed`,\n {\n headers: this.loadHeaders(),\n }\n );\n }\n\n // Helpers\n protected loadHeaders(): { [header: string]: string | string[] } {\n return {};\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSelectChange } from '@angular/material/select';\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\nimport { BaseModeledResponse } from '@lcu/common';\nimport { EaCEnvironmentAsCode, EaCSourceControl } from '@semanticjs/common';\nimport { FeedEntry } from '../../models/user-feed.model';\nimport { ApplicationsFlowService } from '../../services/applications-flow.service';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState, GitHubBranch, GitHubOrganization, GitHubRepository } from '../../state/applications-flow.state';\n\nexport interface FeedHeaderDialogData {\n // action: FeedItemAction,\n dialogTitle: string,\n type: string,\n}\n\n@Component({\n selector: 'lcu-feed-header-dialog',\n templateUrl: './feed-header-dialog.component.html',\n styleUrls: ['./feed-header-dialog.component.scss']\n})\n\nexport class FeedHeaderDialogComponent implements OnInit {\n\n public get ActionIconControl(): AbstractControl {\n return this.FeedHeaderFormGroup?.controls.actionIcon;\n }\n\n public get ActionLinkControl(): AbstractControl {\n return this.FeedHeaderFormGroup?.controls.actionLink;\n }\n\n public get ActionTextControl(): AbstractControl {\n return this.FeedHeaderFormGroup?.controls.actionText;\n }\n\n public get EditorControl(): AbstractControl {\n return this.FeedHeaderFormGroup?.controls.editor;\n }\n\n public get Environment(): EaCEnvironmentAsCode {\n return this.State?.EaC?.Environments[\n this.State?.EaC?.Enterprise?.PrimaryEnvironment\n ];\n }\n\n public get TargetBranchFormControl(): AbstractControl {\n return this.FeedHeaderFormGroup.controls.targetBranch;\n }\n\n public get OrganizationFormControl(): AbstractControl {\n return this.FeedHeaderFormGroup.controls.organization;\n }\n\n public get SourceBranchFormControl(): AbstractControl {\n return this.FeedHeaderFormGroup.controls.sourceBranch;\n }\n\n public get RepositoryFormControl(): AbstractControl {\n return this.FeedHeaderFormGroup.controls.repository;\n }\n\n\n public get SourceControlFormControl(): AbstractControl {\n return this.FeedHeaderFormGroup.controls.sourceControl;\n }\n\n public get SourceControlLookups(): Array<string> {\n return this.State.FeedSourceControlLookups \n ? this.State.FeedSourceControlLookups \n : Object.keys(this.SourceControls || {});\n }\n\n public get SourceControls(): { [lookup: string]: EaCSourceControl } {\n return this.Environment?.Sources || {};\n }\n\n public get SubtitleFormControl(): AbstractControl {\n return this.FeedHeaderFormGroup.controls.subtitle;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public get TitleFormControl(): AbstractControl {\n return this.FeedHeaderFormGroup?.controls.title;\n }\n\n public BranchOptions: GitHubBranch[];\n\n public EditorConfig: AngularEditorConfig;\n\n public FeedHeaderFormGroup: FormGroup;\n\n public OrganizationOptions: GitHubOrganization[];\n\n public RepositoryOptions: GitHubRepository[];\n\n public SourceControl: EaCSourceControl;\n\n public Slices: { [key: string]: number };\n\n public SlicesCount: number;\n\n\n\n\n constructor(protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService,\n protected formBldr: FormBuilder,\n public dialogRef: MatDialogRef<FeedHeaderDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: FeedHeaderDialogData,) {\n \n this.EditorConfig = {\n editable: true,\n spellcheck: true,\n height: '250px',\n minHeight: '0',\n maxHeight: 'auto',\n width: 'auto',\n minWidth: '0',\n translate: 'yes',\n enableToolbar: true,\n showToolbar: true,\n placeholder: 'Enter text here...',\n defaultParagraphSeparator: '',\n defaultFontName: '',\n defaultFontSize: '',\n fonts: [\n {class: 'arial', name: 'Arial'},\n {class: 'times-new-roman', name: 'Times New Roman'},\n {class: 'calibri', name: 'Calibri'},\n {class: 'comic-sans-ms', name: 'Comic Sans MS'}\n ],\n customClasses: [\n {\n name: 'quote',\n class: 'quote',\n },\n {\n name: 'redText',\n class: 'redText'\n },\n {\n name: 'titleText',\n class: 'titleText',\n tag: 'h1',\n },\n ],\n sanitize: true,\n toolbarPosition: 'top',\n toolbarHiddenButtons: [\n ['subscript', 'superscript'],\n ['fontSize']\n ]\n };\n\n this.SlicesCount = 5;\n\n this.Slices = {\n Sources: this.SlicesCount,\n };\n\n if(this.SourceControlLookups.length === 1){\n this.SourceControl = this.Environment?.Sources[this.SourceControlLookups[0]];\n }\n }\n\n public ngOnInit(): void {\n this.setupFeedHeaderForm();\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public HandleAction(){\n if (this.ActionLinkControl.value.startsWith('http')) {\n window.open(this.ActionLinkControl.value, '_blank');\n } else {\n window.location.href = this.ActionLinkControl.value;\n }\n }\n\n public PullRequestSourceControlChanged(event: MatSelectChange){\n this.SourceControl = this.SourceControls[this.SourceControlFormControl.value];\n this.listBranches();\n\n }\n\n public FeatureBranchSourceControlChanged(event: MatSelectChange){\n this.SourceControl = this.SourceControls[this.SourceControlFormControl.value];\n this.listOrganizations();\n\n }\n\n public IssueSourceControlChanged(event: MatSelectChange){\n this.SourceControl = this.SourceControls[this.SourceControlFormControl.value];\n\n }\n\n public Submit(){\n let returnObject: FeedEntry = {\n ActionIcon: this.ActionIconControl ? this.ActionIconControl.value : null,\n ActionLink: this.ActionLinkControl ? this.ActionLinkControl.value : null,\n ActionText: this.ActionTextControl ? this.ActionTextControl.value : null,\n Avatar: null,\n Content: this.EditorControl ? this.EditorControl.value : null,\n ExpiresAt: null,\n Organization: this.OrganizationFormControl ? this.OrganizationFormControl.value : null,\n Repositroy: this.RepositoryFormControl ? this.RepositoryFormControl.value : null,\n SourceBranch: this.SourceBranchFormControl ? this.SourceBranchFormControl.value : null,\n SourceControlLookup: this.SourceControlFormControl ? this.SourceBranchFormControl.value : null,\n Subtitle: this.SubtitleFormControl ? this.SubtitleFormControl.value : null,\n TargetBranch: this.TargetBranchFormControl ? this.TargetBranchFormControl.value: null,\n Type: this.data.type,\n Title: this.TitleFormControl ? this.TitleFormControl.value : null,\n\n }\n console.log(\"Control: \", returnObject );\n\n let status = this.eacSvc.SubmitFeedEntry(returnObject);\n console.log(\"feed entry status: \", status);\n\n // console.log(\"Editor: \", this.EditorControl.value )\n }\n\n public OrganizationChanged(event: MatSelectChange): void {\n\n this.RepositoryFormControl.reset();\n\n\n this.listRepositories();\n }\n\n public RepositoryChanged(event: MatSelectChange){\n this.listBranches();\n }\n\n //HELPERS\n\n protected listBranches(): void {\n // this.Loading = true;\n\n this.appsFlowSvc\n .ListBranches(\n this.SourceControl?.Organization,\n this.SourceControl?.Repository\n )\n .subscribe((response: BaseModeledResponse<GitHubBranch[]>) => {\n this.BranchOptions = response.Model; \n\n });\n \n }\n\n protected listOrganizations(): void {\n // this.Loading = true;\n\n this.appsFlowSvc\n .ListOrganizations()\n .subscribe((response: BaseModeledResponse<GitHubOrganization[]>) => {\n this.OrganizationOptions = response.Model;\n console.log(\"Organization Options: \", this.OrganizationOptions);\n\n // this.Loading = false;\n\n if (this.SourceControl?.Organization) {\n setTimeout(() => {\n this.OrganizationFormControl.setValue(\n this.SourceControl.Organization\n );\n\n this.listRepositories(this.SourceControl?.Repository);\n }, 0);\n }\n });\n }\n\n protected listRepositories(activeRepo: string = null): void {\n // this.Loading = true;\n\n this.appsFlowSvc\n .ListRepositories(this.OrganizationFormControl.value)\n .subscribe((response: BaseModeledResponse<GitHubRepository[]>) => {\n this.RepositoryOptions = response.Model;\n\n // this.Loading = false;\n\n if (activeRepo) {\n setTimeout(() => {\n this.RepositoryFormControl.setValue(activeRepo);\n\n this.listBranches();\n\n }, 0);\n } \n });\n }\n\n \n\n protected setupFeedHeaderForm(){\n this.FeedHeaderFormGroup = this.formBldr.group({});\n\n switch ( this.data.type ) {\n case \"Announcement\":\n this.setupAnnouncementForm();\n break;\n case \"PullRequest\":\n this.setupPRForm();\n break;\n case \"OpenIssue\":\n this.setupIssueForm();\n break;\n case \"CreateBranch\":\n this.setupFeatureBranchForm();\n break;\n default: \n // \n break;\n }\n\n }\n\n protected setupAnnouncementForm(){\n this.setupBasicForm();\n\n this.FeedHeaderFormGroup.addControl(\n 'subtitle',\n this.formBldr.control(\n ''\n )\n );\n\n this.FeedHeaderFormGroup.addControl(\n 'actionText',\n this.formBldr.control(\n ''\n )\n );\n\n this.FeedHeaderFormGroup.addControl(\n 'actionLink',\n this.formBldr.control(\n ''\n )\n );\n this.FeedHeaderFormGroup.addControl(\n 'actionIcon',\n this.formBldr.control(\n ''\n )\n );\n\n\n }\n\n protected setupPRForm(){\n this.listBranches();\n this.setupIssueForm();\n this.setupBranchesForm();\n\n\n }\n\nprotected setupBasicForm(){\n this.FeedHeaderFormGroup.addControl(\n 'title',\n this.formBldr.control(\n '',[Validators.required]\n )\n );\n\n this.FeedHeaderFormGroup.addControl(\n 'editor',\n this.formBldr.control(\n ''\n )\n );\n}\n\n\n protected setupIssueForm(){\n this.setupBasicForm();\n \n this.setupSourceControlForm();\n\n }\n\n protected setupFeatureBranchForm(){\n\n this.setupSourceControlForm();\n\n this.FeedHeaderFormGroup.addControl(\n 'organization',\n this.formBldr.control(\n ''\n )\n );\n\n this.FeedHeaderFormGroup.addControl(\n 'repository',\n this.formBldr.control(\n ''\n )\n );\n\n this.setupBranchesForm();\n\n }\n\n protected setupSourceControlForm(){\n this.FeedHeaderFormGroup.addControl(\n 'sourceControl',\n this.formBldr.control(\n ''\n )\n );\n }\n\n protected setupBranchesForm(){\n this.FeedHeaderFormGroup.addControl(\n 'targetBranch',\n this.formBldr.control(\n ''\n )\n );\n\n this.FeedHeaderFormGroup.addControl(\n 'sourceBranch',\n this.formBldr.control(\n ''\n )\n );\n }\n\n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>{{data.dialogTitle}}</h2>\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n <form [formGroup]=\"FeedHeaderFormGroup\" >\n\n <!-- ISSUE FORM -->\n <ng-container *ngIf=\"data.type === 'OpenIssue' \">\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select \n formControlName=\"sourceControl\"\n (selectionChange)=\"IssueSourceControlChanged($event)\"\n\n >\n <ng-container *ngFor=\"let scLookup of SourceControlLookups | slice: 0:Slices.Sources\">\n <mat-option *ngIf=\"SourceControls[scLookup]; let sc\" [value]=\"scLookup\">\n {{sc.Name}}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n\n <angular-editor \n id=\"issue-editor\"\n formControlName=\"editor\" \n [config]=\"EditorConfig\"\n ></angular-editor>\n </ng-container>\n\n <!-- ANNOUNCEMENT FORM -->\n\n <ng-container *ngIf=\"data.type === 'Announcement' \">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Subtitle\"\n formControlName=\"subtitle\"\n />\n </mat-form-field>\n\n <angular-editor \n id=\"announcement-editor\"\n formControlName=\"editor\" \n [config]=\"EditorConfig\"\n ></angular-editor>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Text\"\n formControlName=\"actionText\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Link\"\n formControlName=\"actionLink\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Icon\"\n formControlName=\"actionIcon\"\n />\n </mat-form-field>\n\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <button \n *ngIf=\"ActionTextControl?.value || ActionIconControl?.value\"\n mat-button color=\"primary\" \n (click)=\"HandleAction(ActionLinkControl?.value)\"\n >\n <mat-icon *ngIf=\"ActionIconControl?.value\">{{ ActionIconControl?.value }}</mat-icon>\n \n {{ ActionTextControl?.value }}\n </button>\n\n <button \n *ngIf=\"!ActionTextControl?.value && !ActionIconControl?.value\"\n mat-button color=\"primary\" \n >\n <mat-icon>cruelty_free</mat-icon>\n \n Example Button\n </button>\n </div>\n\n </ng-container>\n\n <!-- PR FORM -->\n\n <ng-container *ngIf=\"data.type === 'PullRequest' \">\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select \n formControlName=\"sourceControl\"\n (selectionChange)=\"PullRequestSourceControlChanged($event)\"\n >\n <ng-container *ngFor=\"let scLookup of SourceControlLookups | slice: 0:Slices.Sources\">\n <mat-option *ngIf=\"SourceControls[scLookup]; let sc\" [value]=\"scLookup\">\n {{sc.Name}}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" *ngIf=\"BranchOptions?.length > 0\">\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Base</mat-label>\n <mat-select formControlName=\"targetBranch\" required\n >\n <mat-option *ngFor=\"let branchOpt of BranchOptions\" [value]=\"branchOpt.Name\">\n {{branchOpt.Name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n \n <mat-icon>arrow_back</mat-icon>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Compare</mat-label>\n <mat-select formControlName=\"sourceBranch\" required\n >\n <mat-option *ngFor=\"let branchOpt of BranchOptions\" [value]=\"branchOpt.Name\">\n {{branchOpt.Name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n\n <angular-editor \n id=\"pr-editor\"\n formControlName=\"editor\" \n [config]=\"EditorConfig\"\n ></angular-editor>\n\n </ng-container>\n\n <!-- Feature Branch form -->\n\n <ng-container *ngIf=\"data.type === 'CreateBranch' \">\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\n <mat-form-field >\n <mat-label>Source Control</mat-label>\n <mat-select \n formControlName=\"sourceControl\"\n (selectionChange)=\"FeatureBranchSourceControlChanged($event)\"\n >\n <ng-container *ngFor=\"let scLookup of SourceControlLookups | slice: 0:Slices.Sources\">\n <mat-option *ngIf=\"SourceControls[scLookup]; let sc\" [value]=\"scLookup\">\n {{sc.Name}}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\" >\n\n <mat-form-field *ngIf=\"OrganizationOptions?.length > 0\">\n\n <mat-select \n formControlName=\"organization\" \n placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\" \n required\n >\n <ng-container *ngFor=\"let orgOpt of OrganizationOptions\">\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n\n\n </mat-form-field>\n\n <mat-form-field *ngIf=\"RepositoryOptions?.length > 0\">\n\n <mat-select formControlName=\"repository\" \n placeholder=\"Repository\" \n (selectionChange)=\"RepositoryChanged($event)\" \n required\n >\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select> \n </mat-form-field>\n\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\" *ngIf=\"BranchOptions?.length > 0\">\n\n <mat-form-field >\n <mat-label>Base Branch</mat-label>\n <mat-select formControlName=\"sourceBranch\" required\n >\n <mat-option *ngFor=\"let branchOpt of BranchOptions\" [value]=\"branchOpt.Name\">\n {{branchOpt.Name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field >\n <input\n matInput\n placeholder=\"Create New Branch\"\n formControlName=\"targetBranch\"\n required\n />\n </mat-form-field>\n </div>\n\n </ng-container>\n\n </form>\n \n \n\n <!-- <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n </mat-error> -->\n</mat-dialog-content>\n\n<mat-dialog-actions\n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\"\n >\n Cancel\n </button>\n\n <!-- -->\n <button \n mat-raised-button \n color=\"primary\"\n fxFlex=\"25%\"\n class=\"submit\" \n (click)=\"Submit()\"\n [disabled]=\"\n !FeedHeaderFormGroup?.valid \n\"\n \n >\n Submit\n </button>\n</mat-dialog-actions>\n\n\n","import { Input } from '@angular/core';\nimport { Component, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { FeedHeaderDialogComponent } from '../../dialogs/feed-header-dialog/feed-header-dialog.component';\nimport { NewApplicationDialogComponent } from '../../dialogs/new-application-dialog/new-application-dialog.component';\nimport { FeedItemAction } from '../../models/user-feed.model';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-feed-header',\n templateUrl: './feed-header.component.html',\n styleUrls: ['./feed-header.component.scss']\n})\nexport class FeedHeaderComponent implements OnInit {\n\n @Input('source-control-lookup')\n public SourceControlLookup: string;\n\n public get ActiveEnvironmentLookup(): string {\n // TODO: Eventually support multiple environments\n const envLookups = Object.keys(this.State?.EaC?.Environments || {});\n\n return envLookups[0];\n }\n\n public get FeedHeaderActions(): Array<FeedItemAction>{\n return this.State?.FeedActions;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public ModalHeader: string;\n\n public SkeletonEffect: string;\n\n protected selectedBtn: string;\n\n public value: string;\n\n constructor( \n protected eacSvc: EaCService,\n protected dialog: MatDialog) { \n\n this.SkeletonEffect = \"wave\";\n // this.selectedBtn = \"pr-btn\";\n\n }\n\n public ngOnInit(): void {\n \n }\n\n public ngAfterViewInit(){\n this.addSelectBtn();\n }\n\n public CreateAnnouncement(){\n // this.ModalHeader = \"Create Team Announcement\";\n this.OpenFHDialog('Announcement', \"Create Team Announcement\");\n\n }\n\n // public CreateFeatureBranch(){\n // this.removeSelectedBtn();\n // this.ModalHeader = \"Create Feature Branch\";\n // this.selectedBtn = \"fb-btn\";\n // this.addSelectBtn();\n // console.log(\"create feature branch selected\");\n // this.OpenFHDialog('branch');\n\n // }\n\n \n\n // public OpenIssue(){\n // this.removeSelectedBtn();\n // this.ModalHeader = \"Open Issue\";\n // this.selectedBtn = \"oi-btn\";\n // this.addSelectBtn();\n // console.log(\"open issue selected\");\n // this.OpenFHDialog('issue');\n\n // }\n\n // public CreatePullRequest(){\n // this.removeSelectedBtn();\n // this.ModalHeader = \"Create Pull Request\";\n // this.selectedBtn = \"pr-btn\";\n // this.addSelectBtn();\n // console.log(\"create pull request selected\");\n // this.OpenFHDialog('pull-request');\n\n // }\n\n public CreateNewApp(){\n const dialogRef = this.dialog.open(NewApplicationDialogComponent, {\n width: '600px',\n data: {\n environmentLookup: this.ActiveEnvironmentLookup,\n },\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n // console.log('The dialog was closed');\n // console.log(\"result:\", result)\n });\n }\n\n public OpenFHDialog(modalType: string, modalHeader: string){\n const dialogRef = this.dialog.open(FeedHeaderDialogComponent, {\n width: '600px',\n data: {\n dialogTitle: modalHeader,\n type: modalType,\n sourceControlLookup: this.SourceControlLookup ? this.SourceControlLookup : null\n },\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n // console.log('The dialog was closed');\n // console.log(\"result:\", result)\n });\n }\n\n public RouteToPath(path: string): void {\n window.location.href = path;\n }\n\n\n public Submit(){\n console.log(\"submitting: \", this.value);\n switch (this.selectedBtn){\n case \"pr-btn\":\n //Pull request\n console.log(\"creating pull request: \", this.value);\n break;\n case \"oi-btn\":\n //Open Issue\n console.log(\"Open issue: \", this.value);\n break;\n case \"fb-btn\":\n //Feature Branch\n console.log(\"creating feature branch: \", this.value);\n break;\n default:\n console.log(\"hmm\")\n\n break;\n }\n }\n\n //HELPERS\n\n protected addSelectBtn(){ \n (<HTMLElement>document.getElementById(this.selectedBtn))?.classList.add('selected');\n }\n\n protected removeSelectedBtn(){\n (<HTMLElement>document.getElementById(this.selectedBtn))?.classList.remove('selected');\n }\n\n}\n","<mat-card class=\"social-card\">\n <ng-container *ngIf=\"!State?.LoadingFeed\">\n <div class=\"gh-card-container\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-icon fxFlex=\"15%\" class=\"gh-icon\" color=\"primary\">error_outline</mat-icon>\n <div fxFlex=\"85%\" class=\"gh-card-main-content\">\n <button \n mat-button \n class=\"main-btn\"\n (click)=\"CreateAnnouncement()\" \n color=\"primary\"\n >Create Team Announcement</button>\n\n <!-- <mat-form-field appearance=\"fill\" class=\"gh-input\">\n <mat-label>{{ InputLabel }}</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"value\" (click)=\"OpenFHDialog('Announcement')\"/>\n </mat-form-field> -->\n </div>\n\n <!-- <button\n fxFlex=\"15%\"\n mat-button\n (click)=\"Submit()\"\n id=\"submit-btn\"\n color=\"primary\"\n >\n Submit\n </button> -->\n </div>\n\n <mat-card-actions fxLayout=\"row\" fxLayoutAlign=\"space-around center\" \n >\n <button \n *ngFor=\"let action of FeedHeaderActions\"\n mat-button \n (click)=\"OpenFHDialog(action.Action, action.Text)\" \n id=\"pr-btn\" \n color=\"primary\"\n >\n <mat-icon>{{action.Icon}}</mat-icon>\n {{action.Text}}\n </button>\n\n <!-- <button \n mat-button \n (click)=\"OpenIssue()\" \n id=\"oi-btn\" \n color=\"primary\"\n >\n Open Issue\n </button>\n\n <button \n mat-button \n (click)=\"CreateFeatureBranch()\" \n id=\"fb-btn\" \n color=\"primary\"\n >\n Feature Branch\n </button> -->\n\n <!-- <button mat-icon-button [matMenuTriggerFor]=\"menu\" aria-label=\"menu\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button class=\"gh-menu-action\" mat-menu-item (click)=\"CreateNewApp()\">\n Create New App\n </button>\n\n <button\n class=\"gh-menu-action\"\n mat-menu-item\n (click)=\"RouteToPath('/dashboard/create-project')\"\n >\n Create Project\n </button>\n </mat-menu> -->\n </mat-card-actions>\n </ng-container>\n\n <!-- SKELETON -->\n <ng-container *ngIf=\"State?.LoadingFeed\">\n <div id=\"gh-card-skeleton\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <skeleton-avatar\n class=\"gh-icon\"\n [showIcon]=\"false\"\n [effect]=\"SkeletonEffect\"\n ></skeleton-avatar>\n\n <div fxFlex=\"85%\" class=\"gh-card-main-content\">\n <skeleton-block\n height=\"60px\"\n [effect]=\"SkeletonEffect\"\n ></skeleton-block>\n </div>\n\n <!-- <div\n skeleton-text\n fxFlex=\"15%\"\n [effect]=\"SkeletonEffect\"\n style=\"margin: 0px 10px\"\n >\n Submit\n </div> -->\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Pull Request</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Open Issue</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Feature Branch</div>\n <!-- <div skeleton-text [effect]=\"SkeletonEffect\">\n <mat-icon>more_horiz</mat-icon>\n </div> -->\n </div>\n </ng-container>\n</mat-card>\n","\nimport { Component, Input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\n\nimport {\n EaCDFSModifier,\n EaCProjectAsCode,\n} from '@semanticjs/common';\nimport { Guid } from '@lcu/common';\nimport { MatSelectChange } from '@angular/material/select';\nimport { EaCService, SaveDFSModifierEventRequest } from '../../services/eac.service';\nimport { ApplicationsFlowService } from '../../services/applications-flow.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n@Component({\n selector: 'lcu-dfs-modifier-form',\n templateUrl: './dfs-modifiers-form.component.html',\n styleUrls: ['./dfs-modifiers-form.component.scss'],\n})\nexport class DFSModifiersFormComponent implements OnInit {\n // Fields\n\n // Properties\n public CurrentType: string;\n\n // @Input('data')\n // public Data: {\n // Modifiers: { [lookup: string]: EaCDFSModifier };\n // Project: EaCProjectAsCode;\n // ProjectLookup: string;\n // };\n\n @Input('editing-modifier-lookup')\n public EditingModifierLookup: string;\n\n /**Specific Modifiers for either the project or appliaction */\n\n // @Input('modifiers')\n // public Modifiers: { [lookup: string]: EaCDFSModifier };\n\n @Input('application-lookup')\n public ApplicationLookup: string;\n\n @Input('project')\n public Project: EaCProjectAsCode;\n\n @Input('project-lookup')\n public ProjectLookup: string;\n\n /**which level is the dfs modifier being edited ent project or app */\n @Input('level')\n public Level: string;\n\n public get DetailsFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.details;\n }\n\n public get EditingModifier(): EaCDFSModifier {\n let mdfr = this.Modifiers\n ? this.Modifiers[this.EditingModifierLookup]\n : null;\n\n if (mdfr == null && this.EditingModifierLookup) {\n mdfr = {};\n }\n\n return mdfr;\n }\n\n // public EditingModifierLookup: string;\n\n public get EnabledFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.enabled;\n }\n\n\n public get EnterprisesModifierLookups(): Array<string> {\n return Object.keys(this.Modifiers || {});\n }\n\n public get LocationFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.location;\n }\n\n public get Modifiers(): { [lookup: string]: EaCDFSModifier } {\n return this.State?.EaC?.Modifiers;\n }\n\n\n public get ModifierLookups(): Array<string> {\n if(this.ProjectLookup){\n return this.State?.EaC?.Projects[this.ProjectLookup]?.ModifierLookups;\n }\n else if(this.ApplicationLookup){\n return this.State.EaC?.Applications[this.ApplicationLookup]?.ModifierLookups;\n }\n else{\n return Object.keys(this.Modifiers || {});\n }\n }\n\n public get MultiSelectFormControl(): AbstractControl {\n return this.ModifierSelectFormGroup?.controls.multiSelect;\n }\n\n public get NameFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.name;\n }\n\n public get PathFilterFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.pathFilter;\n }\n\n public get PriorityFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.priority;\n }\n\n // public get Project(): EaCProjectAsCode {\n // return this.Data.Project || {};\n // }\n\n public get ScriptFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.script;\n }\n\n public get ScriptIDFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.scriptId;\n }\n\n public get StateDataTokenFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.stateDataToken;\n }\n\n public get State(): ApplicationsFlowState{\n return this.eacSvc.State;\n }\n\n public get TypeFormControl(): AbstractControl {\n return this.ModifierFormGroup?.controls.type;\n }\n\n public ModifierFormGroup: FormGroup;\n\n public ModifierSelectFormGroup: FormGroup;\n\n // Constructors\n constructor(\n protected formBldr: FormBuilder,\n protected appsFlowSvc: ApplicationsFlowService,\n protected eacSvc: EaCService\n ) {\n // this.EditingModifierLookup = null;\n }\n\n // Life Cycle\n public ngOnInit(): void {\n\n if(this.Level === \"enterprise\" && !this.EditingModifierLookup){\n this.CreateNewModifier();\n }\n \n else if(this.EditingModifierLookup){\n this.setupModifierForm();\n }\n\n else{\n this.setupModifierSelectForm();\n }\n \n }\n\n // API Methods\n public CreateNewModifier(): void {\n this.SetEditingModifier(Guid.CreateRaw());\n }\n\n public DeleteModifier(modifierLookup: string, modifierName: string): void {\n if (\n confirm(`Are you sure you want to delete modifier '${modifierName}'?`)\n ) {\n this.eacSvc.DeleteSourceControl(modifierLookup);\n }\n }\n\n public SaveModifierForAllProjects(projectLookups: Array<string>){\n const saveMdfrReq: SaveDFSModifierEventRequest = {\n Modifier: {\n ...this.EditingModifier,\n Name: this.NameFormControl.value,\n Enabled: this.EnabledFormControl.value,\n PathFilterRegex: this.PathFilterFormControl.value,\n Priority: this.PriorityFormControl.value,\n Type: this.CurrentType,\n },\n ModifierLookups: [this.EditingModifierLookup],\n ProjectLookups: projectLookups,\n };\n\n let details = this.getDetails();\n\n saveMdfrReq.Modifier.Details = JSON.stringify(details);\n\n this.eacSvc.SaveDFSModifier(saveMdfrReq);\n }\n\n public SaveModifierForApplication(applicationLookup: string): void{\n if(this.ModifierFormGroup){\n const saveMdfrReq: SaveDFSModifierEventRequest = {\n Modifier: {\n ...this.EditingModifier,\n Name: this.NameFormControl.value,\n Enabled: this.EnabledFormControl.value,\n PathFilterRegex: this.PathFilterFormControl.value,\n Priority: this.PriorityFormControl.value,\n Type: this.CurrentType,\n },\n ModifierLookups: [this.EditingModifierLookup],\n ApplicationLookup: applicationLookup,\n };\n\n let details = this.getDetails();\n\n saveMdfrReq.Modifier.Details = JSON.stringify(details);\n\n this.eacSvc.SaveDFSModifier(saveMdfrReq);\n }\n else if(this.ModifierSelectFormGroup){\n const saveMdfrReq: SaveDFSModifierEventRequest = {\n \n ModifierLookups: this.MultiSelectFormControl.value,\n ApplicationLookup: applicationLookup,\n };\n this.eacSvc.SaveDFSModifier(saveMdfrReq);\n\n }\n }\n\n/**\n * \n * Saves a modifier, saves a modifier to a project\n */\n public SaveModifier(projectLookup: string = null): void {\n if(this.ModifierFormGroup){\n const saveMdfrReq: SaveDFSModifierEventRequest = {\n Modifier: {\n ...this.EditingModifier,\n Name: this.NameFormControl.value,\n Enabled: this.EnabledFormControl.value,\n PathFilterRegex: this.PathFilterFormControl.value,\n Priority: this.PriorityFormControl.value,\n Type: this.CurrentType,\n },\n ModifierLookups: [this.EditingModifierLookup],\n ProjectLookups: [projectLookup],\n };\n\n let details = this.getDetails();\n\n saveMdfrReq.Modifier.Details = JSON.stringify(details);\n \n\n this.eacSvc.SaveDFSModifier(saveMdfrReq);\n }\n else if(this.ModifierSelectFormGroup){\n const saveMdfrReq: SaveDFSModifierEventRequest = {\n \n ModifierLookups: this.MultiSelectFormControl.value,\n ProjectLookups: [projectLookup],\n };\n this.eacSvc.SaveDFSModifier(saveMdfrReq);\n\n }\n }\n\n public SetEditingModifier(modifierLookup: string): void {\n this.EditingModifierLookup = modifierLookup;\n\n this.setupModifierForm();\n }\n\n public SetUseForProject(\n modifierLookup: string,\n change: MatSlideToggleChange\n ): void {\n this.SetEditingModifier(modifierLookup);\n\n this.SaveModifier(this.ProjectLookup);\n }\n\n public TypeChanged(event: MatSelectChange): void {\n this.CurrentType = event.value;\n\n this.setupTypeForm();\n }\n\n // Helpers\n\n protected getDetails(): any{\n const details = {};\n\n switch (this.CurrentType) {\n case 'LCU.Runtime.Applications.Modifiers.HTMLBaseDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n details['StateDataToken'] = this.StateDataTokenFormControl.value;\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n details['Location'] = this.LocationFormControl.value;\n\n details['Script'] = this.ScriptFormControl.value;\n\n details['ScriptID'] = this.ScriptIDFormControl.value;\n break;\n }\n return details;\n }\n\n protected setupModifierSelectForm(){\n this.ModifierSelectFormGroup = this.formBldr.group({\n multiSelect: [this.ModifierLookups ? this.ModifierLookups : []]\n });\n\n }\n\n protected setupModifierForm(): void {\n if (this.EditingModifier != null) {\n this.CurrentType = this.EditingModifier?.Type;\n\n this.ModifierFormGroup = this.formBldr.group({\n name: [this.EditingModifier?.Name, Validators.required],\n type: [this.CurrentType, Validators.required],\n priority: [this.EditingModifier?.Priority ? this.EditingModifier?.Priority : 9000, Validators.required],\n enabled: [this.EditingModifier?.Enabled, []],\n pathFilter: [\n this.EditingModifier?.PathFilterRegex ? this.EditingModifier?.PathFilterRegex : \"*index.html\" ,\n Validators.required,\n ],\n });\n\n this.setupTypeForm();\n }\n }\n\n protected setupTypeForm(): void {\n this.ModifierFormGroup.removeControl('stateDataToken');\n\n this.ModifierFormGroup.removeControl('location');\n this.ModifierFormGroup.removeControl('script');\n this.ModifierFormGroup.removeControl('scriptId');\n\n const details = JSON.parse(this.EditingModifier?.Details || '{}');\n\n switch (this.CurrentType) {\n case 'LCU.Runtime.Applications.Modifiers.HTMLBaseDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n this.ModifierFormGroup.addControl(\n 'stateDataToken',\n this.formBldr.control(details?.StateDataToken || 'lcu-state-config', [\n Validators.required,\n ])\n );\n break;\n\n case 'LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null':\n this.ModifierFormGroup.addControl(\n 'location',\n this.formBldr.control(details?.Location || '', [Validators.required])\n );\n\n this.ModifierFormGroup.addControl(\n 'script',\n this.formBldr.control(details?.Script || '', [Validators.required])\n );\n\n this.ModifierFormGroup.addControl(\n 'scriptId',\n this.formBldr.control(details?.ScriptID || '', [Validators.required])\n );\n break;\n }\n }\n\n \n \n\n \n\n\n}\n","<div>\n <form\n [formGroup]=\"ModifierFormGroup\"\n (ngSubmit)=\"SaveModifier()\"\n *ngIf=\"EditingModifier\"\n >\n <div class=\"form-card\">\n <!-- <mat-card class=\"spread\"> -->\n <!-- <mat-card-header>\n <mat-card-title> DFS Modifier </mat-card-title>\n\n <div fxFlex></div>\n\n <mat-icon\n matSuffix\n matTooltip=\"Configure modifiers for your DFS files.\"\n >\n info_outline\n </mat-icon>\n </mat-card-header> -->\n\n <!-- <mat-card-content> -->\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n formControlName=\"type\"\n placeholder=\"DFS Modifier Type\"\n (selectionChange)=\"TypeChanged($event)\"\n >\n <mat-option\n value=\"LCU.Runtime.Applications.Modifiers.HTMLBaseDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\"\n >\n HTML Base Modfier\n </mat-option>\n\n <mat-option\n value=\"LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\"\n >\n LCU Reg Modfier\n </mat-option>\n\n <mat-option\n value=\"LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\"\n >\n Thrid Party Library Modifier\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"name\"\n placeholder=\"Name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"priority\"\n placeholder=\"Priority\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"pathFilter\"\n placeholder=\"Path Filter (regex)\"\n />\n </mat-form-field>\n\n \n\n <ng-container\n *ngIf=\"\n CurrentType ==\n 'LCU.Runtime.Applications.Modifiers.LCURegDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'\n \"\n >\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"stateDataToken\"\n placeholder=\"State Data Token\"\n required\n />\n </mat-form-field>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n CurrentType ==\n 'LCU.Runtime.Applications.Modifiers.ThirdPartyLibraryDFSModifierManager, LCU.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'\n \"\n >\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"location\"\n placeholder=\"Location\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"scriptId\"\n placeholder=\"Script ID\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n formControlName=\"script\"\n placeholder=\"Script\"\n required></textarea>\n </mat-form-field>\n </ng-container>\n\n\n <mat-slide-toggle *ngIf=\"ProjectLookup\" class=\"spread\" formControlName=\"enabled\">\n Is Enabled?\n </mat-slide-toggle>\n <!-- </mat-card-content> -->\n <!-- </mat-card> -->\n </div>\n\n <!-- <div class=\"spread\">\n <div fxFlex></div>\n\n <button mat-button type=\"button\" (click)=\"SetEditingModifier(null)\">\n <mat-icon>cancel</mat-icon> Cancel\n </button>\n\n <div fxFlex></div>\n\n <button\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"!ModifierFormGroup.valid || !ModifierFormGroup.dirty\"\n >\n <mat-icon>save</mat-icon> Save DFS Modifier\n </button>\n\n <div fxFlex></div>\n </div> -->\n </form>\n\n <form\n [formGroup]=\"ModifierSelectFormGroup\"\n *ngIf=\"!EditingModifier\"\n >\n\n <div class=\"spread\" *ngIf=\"!EditingModifier\">\n <span class=\"apps-actions\">\n <button mat-raised-button color=\"accent\" (click)=\"CreateNewModifier()\">\n <mat-icon color=\"primary\">add</mat-icon> Create New\n </button>\n </span>\n\n <div class=\"spread\">\n <div *ngIf=\"EnterprisesModifierLookups?.length <= 0\">\n <h2>No DFS modifiers created, create your first DFS modifier.</h2>\n </div>\n\n <ng-container *ngIf=\"EnterprisesModifierLookups?.length > 0\">\n <!-- <h2>DFS Modifiers</h2> -->\n \n <mat-form-field appearance=\"fill\">\n <mat-label>Modifiers</mat-label>\n <mat-select formControlName=\"multiSelect\" multiple>\n <mat-select-trigger>\n {{MultiSelectFormControl?.value ? MultiSelectFormControl?.value[0] : ''}}\n <span *ngIf=\"MultiSelectFormControl?.value?.length > 1\" class=\"modifier-selection\">\n (+{{MultiSelectFormControl?.value?.length - 1}} {{MultiSelectFormControl?.value?.length === 2 ? 'other' : 'others'}})\n </span>\n </mat-select-trigger>\n <ng-container *ngFor=\"let modifierLookup of EnterprisesModifierLookups\">\n <mat-option *ngIf=\"Modifiers[modifierLookup]; let modifier\" [value]=\"modifierLookup\">{{modifier?.Name}}</mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n\n <!-- <div fxLayout=\"row wrap\" fxLayout.lt-md=\"column\">\n <div\n fxFlex.lt-md=\"100%\"\n *ngFor=\"let modifierLookup of ModifierLookups\"\n >\n \n <ng-container *ngIf=\"Modifiers[modifierLookup]; let modifier\">\n\n <div\n class=\"mat-subheading-2\"\n [matTooltip]=\"modifier.Name\"\n >\n {{ modifier.Name || modifier.Lookup }}\n\n\n <mat-slide-toggle\n class=\"spread\"\n [checked]=\"\n Project?.ModifierLookups.indexOf(modifierLookup) >= 0\n \"\n (change)=\"SetUseForProject(modifierLookup, $event)\"\n [matTooltip]=\"'Use for ' + Level\"\n >\n </mat-slide-toggle>\n </div>\n \n\n <div>\n <div class=\"data-app-actions\">\n\n <button\n mat-icon-button\n color=\"accent\"\n (click)=\"SetEditingModifier(modifierLookup)\"\n >\n <mat-icon matTooltip=\"Edit DFS Modifier\">\n settings\n </mat-icon>\n </button>\n\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"DeleteModifier(modifierLookup, modifier.Name)\"\n >\n <mat-icon matTooltip=\"Delete {{ modifier.Name }}\">\n delete_forever\n </mat-icon>\n </button>\n </div>\n\n \n </div>\n </ng-container>\n </div>\n </div> -->\n </ng-container>\n </div>\n </div>\n </form>\n</div>\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { FormGroup } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Status } from '@lcu/common';\nimport { EaCDFSModifier } from '@semanticjs/common';\nimport { DFSModifiersFormComponent } from '../../controls/dfs-modifiers-form/dfs-modifiers-form.component';\nimport { EaCService } from '../../services/eac.service';\nimport { ApplicationsFlowState } from '../../state/applications-flow.state';\n\n\nexport interface DFSModifiersDialogData {\n applicationLookup?: string,\n modifierLookup?: string;\n // modifiers: { [lookup: string]: EaCDFSModifier };\n level: string;\n projectLookup?: string;\n}\n\n@Component({\n selector: 'lcu-dfs-modifiers-dialog',\n templateUrl: './dfs-modifiers-dialog.component.html',\n styleUrls: ['./dfs-modifiers-dialog.component.scss']\n})\n\nexport class DFSModifiersDialogComponent implements OnInit {\n\n @ViewChild(DFSModifiersFormComponent)\n public DFSModifersFormControls: DFSModifiersFormComponent;\n\n\n public get State(): ApplicationsFlowState {\n return this.eacSvc.State;\n }\n\n public get ProjectLookups(): string[] {\n return Object.keys(this.State?.EaC?.Projects || {});\n }\n\n public get DFSModifersFormGroup(): FormGroup{\n return this.DFSModifersFormControls?.ModifierFormGroup;\n }\n\n public get SelectedModifiersFormGroup(): FormGroup {\n return this.DFSModifersFormControls?.ModifierSelectFormGroup;\n }\n\n public ErrorMessage: string;\n\n public ModifierDialogForm: FormGroup;\n\n public SaveDisabled: boolean;\n\n constructor(protected eacSvc: EaCService, \n public formbldr: FormBuilder,\n public dialogRef: MatDialogRef<DFSModifiersDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: DFSModifiersDialogData,\n protected snackBar: MatSnackBar) {\n this.ModifierDialogForm = this.formbldr.group({});\n \n }\n\n public ngOnInit(): void {\n this.determineLevel();\n }\n\n public CloseDialog(){\n this.dialogRef.close();\n }\n\n public HandleSaveFormEvent(event: Status){\n console.log(\"event: \", event);\n if (event.Code === 0){\n this.snackBar.open(\"DFS Modifier Saved Successfully\", \"Dismiss\",{\n duration: 5000\n });\n this.CloseDialog();\n }\n else{\n this.ErrorMessage = event.Message;\n }\n }\n\n public IsDisabled(){\n this.SaveDisabled=true;\n if(this.DFSModifersFormGroup){\n\n this.SaveDisabled = (!this.DFSModifersFormGroup?.valid || !this.ModifierDialogForm?.valid)\n }\n \n else if(this.SelectedModifiersFormGroup){\n this.SaveDisabled = (!this.SelectedModifiersFormGroup?.valid || !this.SelectedModifiersFormGroup?.dirty);\n }\n return this.SaveDisabled;\n }\n\n \n\n public SaveDFSModifier(){\n\n switch(this.data.level){\n case \"enterprise\":{\n if(this.ModifierDialogForm.controls.applyToAllProjects.value){\n //save modifier add it to the ModifierLookups of all projects\n this.DFSModifersFormControls.SaveModifierForAllProjects(this.ProjectLookups)\n }\n else{\n //save modifier\n this.DFSModifersFormControls.SaveModifier();\n }\n }\n case \"project\": {\n this.DFSModifersFormControls.SaveModifier(this.data.projectLookup);\n\n }\n\n case \"application\": {\n this.DFSModifersFormControls.SaveModifierForApplication(this.data.applicationLookup);\n\n }\n }\n // this.DFSModifersFormControls.SaveModifier();\n\n }\n\n protected determineLevel(){\n switch(this.data.level){\n case \"enterprise\":{\n this.setupEntForm()\n }\n }\n }\n\n protected setupEntForm(){\n this.ModifierDialogForm.addControl(\n 'applyToAllProjects',\n this.formbldr.control(false)\n );\n } \n\n}\n","<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>DFS Modifiers</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n\n <lcu-dfs-modifier-form\n [application-lookup]=\"data.applicationLookup\"\n [project-lookup]=\"data.projectLookup\"\n [editing-modifier-lookup]=\"data.modifierLookup\"\n [level]=\"data.level\"\n >\n\n </lcu-dfs-modifier-form>\n\n <form\n [formGroup]=\"ModifierDialogForm\"\n >\n\n <mat-checkbox *ngIf=\"data.level === 'enterprise' && data.modifierLookup\" formControlName=\"applyToAllProjects\">Apply to all Projects</mat-checkbox>\n </form>\n\n<mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n</mat-error>\n\n</mat-dialog-content>\n\n<mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n <!-- -->\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveDFSModifier()\"\n [disabled]=\"IsDisabled()\"\n >\n <!-- <mat-icon>save</mat-icon> -->\n Save\n </button>\n\n</mat-dialog-actions>\n\n\n","import { FormsService } from './services/forms.service';\r\nimport { ProjectService } from './services/project.service';\r\nimport {\r\n NgModule,\r\n ModuleWithProviders,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n} from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FathymSharedModule, MaterialModule } from '@lcu/common';\r\nimport { ApplicationsFlowStateContext } from './state/applications-flow-state.context';\r\nimport { ApplicationsFlowProjectsElementComponent } from './elements/projects/projects.component';\r\nimport { AppHostModule } from '@lowcodeunit/app-host-common';\r\nimport { ApplicationsFlowService } from './services/applications-flow.service';\r\nimport { HostingDetailsFormGroupComponent } from './elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component';\r\nimport { CreateProjectWizardComponent } from './elements/projects/controls/create-project-wizard/create-project-wizard.component';\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { DynamicTabsComponent } from './elements/dynamic-tabs/dynamic-tabs.component';\r\nimport { HeaderComponent } from './elements/projects/controls/header/header.component';\r\nimport { ProjectTabsComponent } from './elements/projects/controls/project-tabs/project-tabs.component';\r\nimport { DomainsComponent } from './elements/projects/controls/tabs/domains/domains.component';\r\nimport { ProjectItemsComponent } from './elements/projects/controls/project-items/project-items.component';\r\nimport { BuildsComponent } from './elements/projects/controls/builds/builds.component';\r\nimport { RecentActivitiesComponent } from './elements/projects/controls/recent-activities/recent-activities.component';\r\nimport { FormCardComponent } from './elements/form-card/form-card.component';\r\nimport { ProjectNameComponent } from './elements/projects/controls/tabs/general/forms/project-details/project-details.component';\r\nimport { RootDirectoryComponent } from './elements/projects/controls/tabs/general/forms/root-directory/root-directory.component';\r\nimport { BaseFormComponent } from './elements/base-form/base-form.component';\r\nimport { BaseFormTestComponent } from './elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component';\r\nimport { GitAuthComponent } from './elements/projects/controls/git-auth/git-auth.component';\r\nimport { SourceControlFormControlsComponent } from './elements/projects/controls/forms/source-control/source-control.component';\r\nimport { AppsFlowComponent } from './elements/projects/controls/tabs/apps-flow/apps-flow.component';\r\nimport { NPMService } from './services/npm.service';\r\nimport { NpmPackageSelectComponent } from './elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component';\r\nimport { DevOpsComponent } from './elements/projects/controls/tabs/devops/devops.component';\r\nimport { DFSModifiersComponent } from './elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component';\r\nimport { ThreeColumnComponent } from './elements/three-column/three-column.component';\r\nimport { SlottedCardComponent } from './elements/slotted-card/slotted-card.component';\r\nimport { ProjectInfoCardComponent } from './elements/project-info-card/project-info-card.component';\r\nimport { AnalyticsCardComponent } from './elements/analytics-card/analytics-card.component';\r\nimport { FeedCardSmComponent } from './elements/feed-card-sm/feed-card-sm.component';\r\nimport { MainFeedCardComponent } from './elements/main-feed-card/main-feed-card.component';\r\nimport { TwoColumnHeaderComponent } from './elements/two-column-header/two-column-header.component';\r\nimport { CardCarouselComponent } from './elements/card-carousel/card-carousel.component';\r\nimport { SecurityToggleComponent } from './controls/security-toggle/security-toggle.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { EaCService } from './services/eac.service';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { ProcessorDetailsFormComponent } from './controls/processor-details-form/processor-details-form.component';\r\nimport { SourceControlFormComponent } from './controls/source-control-form/source-control-form.component';\r\nimport { BuildPipelineFormComponent } from './controls/build-pipeline-form/build-pipeline-form.component';\r\nimport { DevopsSourceControlFormComponent } from './controls/devops-source-control-form/devops-source-control-form.component';\r\nimport { SourceControlDialogComponent } from './dialogs/source-control-dialog/source-control-dialog.component';\r\nimport { BuildPipelineDialogComponent } from './dialogs/build-pipeline-dialog/build-pipeline-dialog.component';\r\nimport { EditApplicationFormComponent } from './controls/edit-application-form/edit-application-form.component';\r\nimport { BreadcrumbComponent } from './elements/breadcrumb/breadcrumb.component';\r\nimport { CustomDomainDialogComponent } from './dialogs/custom-domain-dialog/custom-domain-dialog.component';\r\nimport { EditApplicationDialogComponent } from './dialogs/edit-application-dialog/edit-application-dialog.component';\r\nimport { NewApplicationDialogComponent } from './dialogs/new-application-dialog/new-application-dialog.component';\r\nimport { ProcessorDetailsDialogComponent } from './dialogs/processor-details-dialog/processor-details-dialog.component';\r\nimport { SkeletonElementsModule } from 'skeleton-elements/angular';\r\nimport { SkeletonFeedCardComponent } from './elements/skeleton-feed-card/skeleton-feed-card.component';\r\nimport { UpgradeDialogComponent } from './dialogs/upgrade-dialog/upgrade-dialog.component';\r\nimport { EmulatedDevicesToggleComponent } from './controls/emulated-devices-toggle/emulated-devices-toggle.component';\r\nimport { IoTEnsembleService } from './services/iot-ensemble.service';\r\nimport { FeedHeaderComponent } from './elements/feed-header/feed-header.component';\r\nimport { FeedHeaderDialogComponent } from './dialogs/feed-header-dialog/feed-header-dialog.component';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { DFSModifiersDialogComponent } from './dialogs/dfs-modifiers-dialog/dfs-modifiers-dialog.component';\r\nimport { DFSModifiersFormComponent } from './controls/dfs-modifiers-form/dfs-modifiers-form.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ApplicationsFlowProjectsElementComponent,\r\n HostingDetailsFormGroupComponent,\r\n CreateProjectWizardComponent,\r\n DynamicTabsComponent,\r\n HeaderComponent,\r\n ProjectTabsComponent,\r\n DomainsComponent,\r\n ProjectItemsComponent,\r\n BuildsComponent,\r\n RecentActivitiesComponent,\r\n FormCardComponent,\r\n ProjectNameComponent,\r\n RootDirectoryComponent,\r\n BaseFormComponent,\r\n BaseFormTestComponent,\r\n GitAuthComponent,\r\n SourceControlFormControlsComponent,\r\n AppsFlowComponent,\r\n DevOpsComponent,\r\n DFSModifiersComponent,\r\n NpmPackageSelectComponent,\r\n DFSModifiersFormComponent,\r\n ThreeColumnComponent,\r\n SlottedCardComponent,\r\n ProjectInfoCardComponent,\r\n AnalyticsCardComponent,\r\n FeedCardSmComponent,\r\n FeedHeaderComponent,\r\n MainFeedCardComponent,\r\n TwoColumnHeaderComponent,\r\n CardCarouselComponent,\r\n SecurityToggleComponent,\r\n ProcessorDetailsFormComponent,\r\n SourceControlFormComponent,\r\n BuildPipelineFormComponent,\r\n DevopsSourceControlFormComponent,\r\n SourceControlDialogComponent,\r\n BuildPipelineDialogComponent,\r\n EditApplicationFormComponent,\r\n BreadcrumbComponent,\r\n DFSModifiersDialogComponent,\r\n CustomDomainDialogComponent,\r\n EditApplicationDialogComponent,\r\n NewApplicationDialogComponent,\r\n ProcessorDetailsDialogComponent,\r\n SkeletonFeedCardComponent,\r\n UpgradeDialogComponent,\r\n EmulatedDevicesToggleComponent,\r\n FeedHeaderDialogComponent,\r\n ],\r\n imports: [\r\n AngularEditorModule,\r\n ClipboardModule,\r\n FathymSharedModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n AppHostModule,\r\n MatTooltipModule,\r\n MatSlideToggleModule,\r\n SkeletonElementsModule,\r\n\r\n // LazyElementModule,\r\n ],\r\n exports: [\r\n ApplicationsFlowProjectsElementComponent,\r\n HostingDetailsFormGroupComponent,\r\n CreateProjectWizardComponent,\r\n DynamicTabsComponent,\r\n HeaderComponent,\r\n ProjectTabsComponent,\r\n DomainsComponent,\r\n ProjectItemsComponent,\r\n BuildsComponent,\r\n RecentActivitiesComponent,\r\n FormCardComponent,\r\n ProjectNameComponent,\r\n RootDirectoryComponent,\r\n BaseFormComponent,\r\n BaseFormTestComponent,\r\n GitAuthComponent,\r\n SourceControlFormControlsComponent,\r\n AppsFlowComponent,\r\n DevOpsComponent,\r\n DFSModifiersComponent,\r\n NpmPackageSelectComponent,\r\n ThreeColumnComponent,\r\n SlottedCardComponent,\r\n ProjectInfoCardComponent,\r\n AnalyticsCardComponent,\r\n FeedCardSmComponent,\r\n FeedHeaderComponent,\r\n FeedHeaderDialogComponent,\r\n MainFeedCardComponent,\r\n TwoColumnHeaderComponent,\r\n CardCarouselComponent,\r\n SecurityToggleComponent,\r\n ProcessorDetailsFormComponent,\r\n SourceControlFormComponent,\r\n BuildPipelineFormComponent,\r\n DevopsSourceControlFormComponent,\r\n SourceControlDialogComponent,\r\n BuildPipelineDialogComponent,\r\n EditApplicationFormComponent,\r\n BreadcrumbComponent,\r\n CustomDomainDialogComponent,\r\n EditApplicationDialogComponent,\r\n NewApplicationDialogComponent,\r\n ProcessorDetailsDialogComponent,\r\n SkeletonFeedCardComponent,\r\n UpgradeDialogComponent,\r\n EmulatedDevicesToggleComponent,\r\n FeedHeaderDialogComponent,\r\n DFSModifiersDialogComponent,\r\n DFSModifiersFormComponent\r\n ],\r\n entryComponents: [\r\n ApplicationsFlowProjectsElementComponent,\r\n DynamicTabsComponent,\r\n HeaderComponent,\r\n ProjectTabsComponent,\r\n DomainsComponent,\r\n ProjectItemsComponent,\r\n BuildsComponent,\r\n RecentActivitiesComponent,\r\n FormCardComponent,\r\n ProjectNameComponent,\r\n RootDirectoryComponent,\r\n BaseFormComponent,\r\n BaseFormTestComponent,\r\n GitAuthComponent,\r\n SourceControlFormControlsComponent,\r\n AppsFlowComponent,\r\n DevOpsComponent,\r\n DFSModifiersComponent,\r\n NpmPackageSelectComponent,\r\n ThreeColumnComponent,\r\n SlottedCardComponent,\r\n ProjectInfoCardComponent,\r\n AnalyticsCardComponent,\r\n FeedCardSmComponent,\r\n FeedHeaderComponent,\r\n MainFeedCardComponent,\r\n TwoColumnHeaderComponent,\r\n CardCarouselComponent,\r\n SecurityToggleComponent,\r\n ProcessorDetailsFormComponent,\r\n DFSModifiersFormComponent,\r\n SourceControlFormComponent,\r\n BuildPipelineFormComponent,\r\n DevopsSourceControlFormComponent,\r\n DFSModifiersDialogComponent,\r\n SourceControlDialogComponent,\r\n BuildPipelineDialogComponent,\r\n EditApplicationFormComponent,\r\n BreadcrumbComponent,\r\n CustomDomainDialogComponent,\r\n EditApplicationDialogComponent,\r\n EmulatedDevicesToggleComponent,\r\n ],\r\n schemas: [\r\n CUSTOM_ELEMENTS_SCHEMA, // Tells Angular we will have custom tags in our templates\r\n ],\r\n})\r\nexport class ApplicationsFlowModule {\r\n static forRoot(): ModuleWithProviders<ApplicationsFlowModule> {\r\n return {\r\n ngModule: ApplicationsFlowModule,\r\n providers: [\r\n ApplicationsFlowStateContext,\r\n ApplicationsFlowService,\r\n ProjectService,\r\n NPMService,\r\n FormsService,\r\n EaCService,\r\n IoTEnsembleService,\r\n ],\r\n };\r\n }\r\n}\r\n","export class ProjectActionsModel {\n /**\n * Click Action\n */\n public Action?: any;\n /**\n * Mat Icon\n */\n\n public Icon: string;\n\n /**\n * Tooltip\n */\n public Tooltip?: string;\n\n constructor(opts: ProjectActionsModel) {\n Object.assign(this, opts); // destructure values\n }\n}","import { BaseResponse, Status } from '@lcu/common';\n\nexport class UserFeedResponse extends BaseResponse {\n public Actions: Array<FeedItemAction>;\n\n public Items: Array<FeedItem>;\n\n public SourceControlLookups: Array<string>;\n}\n\nexport class FeedItem {\n [key: string]: any;\n\n public Actions: Array<FeedItemAction>;\n\n public Avatar: string;\n\n public Badge: string;\n\n public Contributors: Array<FeedItemContributor>;\n\n public IsPinned: boolean;\n\n public IsShortForm: boolean;\n\n public RefreshLink: string;\n\n public Status: Status;\n\n public Subtext: string;\n\n public Subtitle: string;\n\n public Tabs: Array<FeedItemTab>;\n\n public Timestamp: Date;\n\n public Title: string;\n\n public Type: string;\n}\n\nexport class FeedItemContributor {\n [key: string]: any;\n\n public Status: string;\n\n public StatusIcon: string;\n\n public UserImage: string;\n\n public Username: string;\n}\n\nexport class FeedItemAction {\n [key: string]: any;\n\n public Action: string;\n\n public ActionType: string;\n\n public Color: string;\n\n public Icon: string;\n\n public Text: string;\n}\n\nexport class FeedItemTab {\n [key: string]: any;\n\n public Data: { [key: string]: any };\n\n public Title: string;\n}\n\nexport class FeedEntry {\n\npublic ActionIcon: string; \n\npublic ActionLink: string; \n\npublic ActionText: string;\n\npublic Avatar: string;\n\npublic Content: string; \n\npublic ExpiresAt: Date;\n\npublic Organization: string; \n\npublic Repositroy: string; \n\npublic SourceBranch: string;\n\npublic SourceControlLookup: string; \n\npublic Subtitle: string; \n\npublic TargetBranch: string; \n\npublic Title: string; \n\npublic Type: string; \n \n }\n","type ButtonType = 'GENERIC' | 'RESET' | 'SAVE';\nexport class ActionsModel {\n\n /**\n * Callback function on button click\n */\n public ClickEvent: any;\n\n /**\n * Angular Material theme color (primary, accent, warn)\n */\n public Color?: string;\n\n /**\n * Button text value\n */\n public Label: string;\n\n /**\n * Style from parent component\n */\n public Style?: string;\n\n /**\n * Type of button functionality (reset, save, generic)\n */\n public Type: ButtonType;\n }\n","import { ActionsModel } from './actions.model';\n\nexport class FormActionsModel {\n\n /**\n * Button actions\n */\n public Actions: Array<ActionsModel>;\n\n /**\n * Simple text on the same line as the buttons\n */\n public Message?: string;\n}\n","export class DevSettingsPresetModel {\n public Icon: string;\n public ID: number;\n public Label: string;\n}","export class DomainModel {\n public Branch: string;\n public Name: string;\n public Host: string;\n public ValidConfig: string;\n}","import { FormGroup } from '@angular/forms';\nexport class FormModel {\n\n /**\n * Form Id\n */\n public Id: string;\n\n /**\n * Form\n */\n public Form: FormGroup;\n\n constructor(opts: FormModel) {\n Object.assign(this, opts); // destructure values\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './lcu.api';\n"],"names":["i1.ApplicationsFlowService","i2","i1.ProjectService","i1.EaCService","i3","i4","i5","i6","i7","i1","i3.EaCService","i4.ProjectItemsComponent","i8","i9","i10","i11","i1.FormsService","i2.EaCService","i3.FormCardComponent","i12","ApplicationsFlowProjectsElementState","ApplicationsFlowProjectsContext","i2.FormsService","i2.ApplicationsFlowService","i13","i14","i1.NPMService","i10.SourceControlFormControlsComponent","i11.NpmPackageSelectComponent","i15","i16","i6.SourceControlFormControlsComponent","i10.HostingDetailsFormGroupComponent","i1.DynamicTabsComponent","i9.HeaderComponent","i10.ProjectTabsComponent","i5.SourceControlFormControlsComponent","i8.HostingDetailsFormGroupComponent","i6.GitAuthComponent","i7.DevopsSourceControlFormComponent","i9.NpmPackageSelectComponent","i3.ApplicationsFlowService","i7.BuildPipelineFormComponent","i4.DomainsComponent","i6.EditApplicationFormComponent","i7.ProcessorDetailsFormComponent","i6.ProcessorDetailsFormComponent","i7.DFSModifiersFormComponent"],"mappings":"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"}
|