@lowcodeunit/applications-flow-common 1.34.2-lets-get-social-ish → 1.34.5-merge
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 +3 -3
- package/esm2020/lib/applications-flow.module.mjs +11 -22
- package/esm2020/lib/controls/devops-source-control-form/devops-source-control-form.component.mjs +3 -3
- package/esm2020/lib/dialogs/custom-domain-dialog/custom-domain-dialog.component.mjs +3 -3
- package/esm2020/lib/elements/feed-card-sm/feed-card-sm.component.mjs +2 -2
- package/esm2020/lib/elements/gh-control/gh-control.component.mjs +107 -0
- package/esm2020/lib/elements/main-feed-card/main-feed-card.component.mjs +2 -2
- package/esm2020/lib/elements/projects/controls/git-auth/git-auth.component.mjs +2 -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 +1 -3
- package/esm2020/lib/services/applications-flow.service.mjs +1 -8
- package/esm2020/lib/services/eac.service.mjs +1 -4
- package/esm2020/lib/services/project.service.mjs +1 -25
- package/esm2020/lib/state/applications-flow.state.mjs +1 -1
- package/fesm2015/lowcodeunit-applications-flow-common.mjs +1374 -1734
- package/fesm2015/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/fesm2020/lowcodeunit-applications-flow-common.mjs +1364 -1705
- package/fesm2020/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/lcu.api.d.ts +2 -2
- package/lib/applications-flow.module.d.ts +10 -12
- package/lib/elements/{feed-header/feed-header.component.d.ts → gh-control/gh-control.component.d.ts} +4 -7
- package/lib/models/user-feed.model.d.ts +0 -17
- package/lib/services/applications-flow.service.d.ts +0 -2
- package/lib/services/eac.service.d.ts +1 -2
- package/lib/services/project.service.d.ts +1 -2
- package/lib/state/applications-flow.state.d.ts +1 -2
- package/package.json +1 -1
- package/esm2020/lib/dialogs/feed-header-dialog/feed-header-dialog.component.mjs +0 -287
- package/esm2020/lib/elements/feed-header/feed-header.component.mjs +0 -128
- package/lib/dialogs/feed-header-dialog/feed-header-dialog.component.d.ts +0 -71
|
@@ -42,13 +42,11 @@ import * as i4$3 from 'skeleton-elements/angular';
|
|
|
42
42
|
import { SkeletonElementsModule } from 'skeleton-elements/angular';
|
|
43
43
|
import * as i2$3 from '@angular/material/dialog';
|
|
44
44
|
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
45
|
-
import
|
|
45
|
+
import { EaCApplicationAsCode } from '@semanticjs/common';
|
|
46
46
|
import * as i3$1 from '@angular/material/snack-bar';
|
|
47
|
+
import * as i7$1 from '@angular/material/menu';
|
|
48
|
+
import moment from 'moment';
|
|
47
49
|
import * as i3$2 from '@angular/platform-browser';
|
|
48
|
-
import { EaCApplicationAsCode } from '@semanticjs/common';
|
|
49
|
-
import * as i4$4 from '@angular/material/menu';
|
|
50
|
-
import * as i10 from '@kolkov/angular-editor';
|
|
51
|
-
import { AngularEditorModule } from '@kolkov/angular-editor';
|
|
52
50
|
|
|
53
51
|
/**
|
|
54
52
|
* Model for form values
|
|
@@ -310,13 +308,6 @@ class ApplicationsFlowService {
|
|
|
310
308
|
headers: this.loadHeaders(),
|
|
311
309
|
});
|
|
312
310
|
}
|
|
313
|
-
SubmitFeedEntry(entry) {
|
|
314
|
-
return this.http.post(`${this.apiRoot}/api/lowcodeunit/userfeed/entry`, {
|
|
315
|
-
FeedEntry: entry,
|
|
316
|
-
}, {
|
|
317
|
-
headers: this.loadHeaders(),
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
311
|
UnpackLowCodeUnit(req) {
|
|
321
312
|
return this.http.post(`${this.apiRoot}/api/lowcodeunit/manage/projects/unpack`, req, {
|
|
322
313
|
headers: this.loadHeaders(),
|
|
@@ -596,7 +587,6 @@ class ProjectService {
|
|
|
596
587
|
if (response.Status.Code === 0) {
|
|
597
588
|
state.Feed = response.Items;
|
|
598
589
|
state.FeedSourceControlLookups = response.SourceControlLookups;
|
|
599
|
-
state.FeedActions = response.Actions;
|
|
600
590
|
// console.log("ITEMZ: ", response.Items)
|
|
601
591
|
resolve(response.Items);
|
|
602
592
|
}
|
|
@@ -685,29 +675,6 @@ class ProjectService {
|
|
|
685
675
|
}
|
|
686
676
|
});
|
|
687
677
|
}
|
|
688
|
-
async SubmitFeedEntry(state, entry) {
|
|
689
|
-
return new Promise((resolve, reject) => {
|
|
690
|
-
state.Loading = true;
|
|
691
|
-
this.appsFlowSvc.SubmitFeedEntry(entry).subscribe(async (response) => {
|
|
692
|
-
if (response.Status.Code === 0) {
|
|
693
|
-
var results = await Promise.all([
|
|
694
|
-
this.LoadEnterpriseAsCode(state),
|
|
695
|
-
this.LoadUserFeed(1, 25, state),
|
|
696
|
-
]);
|
|
697
|
-
resolve(response.Status);
|
|
698
|
-
}
|
|
699
|
-
else {
|
|
700
|
-
state.Loading = false;
|
|
701
|
-
reject(response.Status);
|
|
702
|
-
console.log(response);
|
|
703
|
-
}
|
|
704
|
-
}, (err) => {
|
|
705
|
-
state.Loading = false;
|
|
706
|
-
reject(err);
|
|
707
|
-
console.log(err);
|
|
708
|
-
});
|
|
709
|
-
});
|
|
710
|
-
}
|
|
711
678
|
ToggleCreateProject() {
|
|
712
679
|
this.SetCreatingProject(!this.CreatingProject);
|
|
713
680
|
}
|
|
@@ -968,9 +935,6 @@ class EaCService {
|
|
|
968
935
|
async SetEditProjectSettings(projectLookup) {
|
|
969
936
|
await this.projectService.SetEditProjectSettings(this.State, projectLookup);
|
|
970
937
|
}
|
|
971
|
-
async SubmitFeedEntry(entry) {
|
|
972
|
-
return await this.projectService.SubmitFeedEntry(this.State, entry);
|
|
973
|
-
}
|
|
974
938
|
async UnpackLowCodeUnit(req) {
|
|
975
939
|
if (confirm(`Are you sure you want to unpack application '${req.ApplicationName}' with version '${req.Version}'?`)) {
|
|
976
940
|
await this.projectService.UnpackLowCodeUnit(this.State, req);
|
|
@@ -1242,7 +1206,7 @@ class DomainsComponent {
|
|
|
1242
1206
|
config() {
|
|
1243
1207
|
this.Config = new CardFormConfigModel({
|
|
1244
1208
|
Icon: 'head',
|
|
1245
|
-
Title: '',
|
|
1209
|
+
Title: 'Domains',
|
|
1246
1210
|
Subtitle: 'In order to use a custom domain, create a CNAME dns record pointing desired subdomain to ' + this.HostDNSInstance + '.',
|
|
1247
1211
|
FormActions: {
|
|
1248
1212
|
Message: 'Changes will be applied to your next deployment',
|
|
@@ -3575,8 +3539,7 @@ class GitAuthComponent {
|
|
|
3575
3539
|
ConnectGitHubProvider() {
|
|
3576
3540
|
const reidrectUri = location.pathname + location.search;
|
|
3577
3541
|
// window.location.href = `/.oauth/GitHubOAuth?redirectUri=${reidrectUri}`;
|
|
3578
|
-
|
|
3579
|
-
window.location.href = '/.oauth/GitHubOAuth?redirectUri=%2Fdashboard';
|
|
3542
|
+
window.location.href = `/.oauth/GitHubOAuth?redirectUri=%2Fdashboard`;
|
|
3580
3543
|
this.ConnectClicked = true;
|
|
3581
3544
|
}
|
|
3582
3545
|
}
|
|
@@ -3865,1090 +3828,1448 @@ class FeedCardSmComponent {
|
|
|
3865
3828
|
}
|
|
3866
3829
|
}
|
|
3867
3830
|
FeedCardSmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FeedCardSmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3868
|
-
FeedCardSmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: FeedCardSmComponent, selector: "lcu-feed-card-sm", inputs: { FeedItem: ["feed-item", "FeedItem"] }, ngImport: i0, template: "<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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:
|
|
3831
|
+
FeedCardSmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: FeedCardSmComponent, selector: "lcu-feed-card-sm", inputs: { FeedItem: ["feed-item", "FeedItem"] }, ngImport: i0, template: "<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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:25px;width:25px;font-size:25px;cursor:pointer}\n"], components: [{ type: i1$1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i1$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }] });
|
|
3869
3832
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FeedCardSmComponent, decorators: [{
|
|
3870
3833
|
type: Component,
|
|
3871
|
-
args: [{ selector: 'lcu-feed-card-sm', template: "<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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:
|
|
3834
|
+
args: [{ selector: 'lcu-feed-card-sm', template: "<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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:25px;width:25px;font-size:25px;cursor:pointer}\n"] }]
|
|
3872
3835
|
}], ctorParameters: function () { return []; }, propDecorators: { FeedItem: [{
|
|
3873
3836
|
type: Input,
|
|
3874
3837
|
args: ['feed-item']
|
|
3875
3838
|
}] } });
|
|
3876
3839
|
|
|
3877
|
-
class
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
this.appsFlowSvc = appsFlowSvc;
|
|
3840
|
+
class EditApplicationFormComponent {
|
|
3841
|
+
constructor(formBldr, eacSvc) {
|
|
3842
|
+
this.formBldr = formBldr;
|
|
3881
3843
|
this.eacSvc = eacSvc;
|
|
3882
|
-
this.
|
|
3883
|
-
this.
|
|
3884
|
-
this.SaveStatusEvent = new EventEmitter();
|
|
3885
|
-
this.BuildPath = null;
|
|
3886
|
-
this.HostingDetails = new ProjectHostingDetails();
|
|
3887
|
-
this.SelectedBranches = [];
|
|
3888
|
-
this.SourceControlRoot = '';
|
|
3889
|
-
this.SkeletonEffect = "wave";
|
|
3890
|
-
this.UseBranches = true;
|
|
3891
|
-
this.UseBuildPath = false;
|
|
3892
|
-
}
|
|
3893
|
-
// Properties
|
|
3894
|
-
get ArtifactLookups() {
|
|
3895
|
-
return this.DevOpsAction?.ArtifactLookups;
|
|
3844
|
+
this.SaveFormEvent = new EventEmitter;
|
|
3845
|
+
this.HasSaveButton = true;
|
|
3896
3846
|
}
|
|
3897
|
-
get
|
|
3898
|
-
|
|
3899
|
-
? this.DevOpsAction?.ArtifactLookups[0]
|
|
3900
|
-
: null;
|
|
3901
|
-
return artLookup;
|
|
3847
|
+
get DescriptionFormControl() {
|
|
3848
|
+
return this.ApplicationFormGroup?.controls.description;
|
|
3902
3849
|
}
|
|
3903
|
-
get
|
|
3904
|
-
return this.
|
|
3905
|
-
? this.Environment?.Artifacts[this.ArtifactLookup] || {}
|
|
3906
|
-
: {};
|
|
3850
|
+
get NameFormControl() {
|
|
3851
|
+
return this.ApplicationFormGroup?.controls.name;
|
|
3907
3852
|
}
|
|
3908
|
-
get
|
|
3909
|
-
return this.
|
|
3853
|
+
get RouteFormControl() {
|
|
3854
|
+
return this.ApplicationFormGroup?.controls.route;
|
|
3910
3855
|
}
|
|
3911
|
-
get
|
|
3912
|
-
return this.
|
|
3856
|
+
get State() {
|
|
3857
|
+
return this.eacSvc.State;
|
|
3913
3858
|
}
|
|
3914
|
-
|
|
3915
|
-
|
|
3916
|
-
return Object.keys(this.DevOpsActions || {});
|
|
3859
|
+
ngOnInit() {
|
|
3860
|
+
this.setupApplicationForm();
|
|
3917
3861
|
}
|
|
3918
|
-
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
: {};
|
|
3862
|
+
SubmitApplicationControl() {
|
|
3863
|
+
console.log("application form: ", this.ApplicationFormGroup.value);
|
|
3864
|
+
this.SaveApplication();
|
|
3922
3865
|
}
|
|
3923
|
-
|
|
3924
|
-
|
|
3925
|
-
|
|
3866
|
+
SaveApplication() {
|
|
3867
|
+
const app = this.EditingApplication;
|
|
3868
|
+
// console.log("APP=", app);
|
|
3869
|
+
app.Application = {
|
|
3870
|
+
Name: this.NameFormControl.value,
|
|
3871
|
+
Description: this.DescriptionFormControl.value,
|
|
3872
|
+
PriorityShift: this.EditingApplication?.Application?.PriorityShift || 0,
|
|
3873
|
+
};
|
|
3874
|
+
app.LookupConfig.PathRegex = `${this.RouteFormControl.value}.*`;
|
|
3875
|
+
switch (app.Processor.Type) {
|
|
3876
|
+
case 'DFS':
|
|
3877
|
+
app.Processor.BaseHref = `${this.RouteFormControl.value}/`.replace('//', '/');
|
|
3878
|
+
break;
|
|
3926
3879
|
}
|
|
3927
|
-
if (
|
|
3928
|
-
|
|
3880
|
+
if (!app.LookupConfig.PathRegex.startsWith('/')) {
|
|
3881
|
+
app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;
|
|
3929
3882
|
}
|
|
3930
|
-
|
|
3931
|
-
|
|
3883
|
+
const saveAppReq = {
|
|
3884
|
+
ProjectLookup: this.ProjectLookup,
|
|
3885
|
+
Application: app,
|
|
3886
|
+
ApplicationLookup: this.ApplicationLookup,
|
|
3887
|
+
};
|
|
3888
|
+
console.log("processor details being submitted: ", app.Processor);
|
|
3889
|
+
this.eacSvc.SaveApplicationAsCode(saveAppReq).then(res => {
|
|
3890
|
+
this.SaveFormEvent.emit(res);
|
|
3891
|
+
});
|
|
3892
|
+
}
|
|
3893
|
+
//HELPERS
|
|
3894
|
+
setupApplicationForm() {
|
|
3895
|
+
if (this.EditingApplication != null) {
|
|
3896
|
+
this.ApplicationFormGroup = this.formBldr.group({
|
|
3897
|
+
name: [this.EditingApplication.Application?.Name, Validators.required],
|
|
3898
|
+
description: [
|
|
3899
|
+
this.EditingApplication.Application?.Description,
|
|
3900
|
+
Validators.required,
|
|
3901
|
+
],
|
|
3902
|
+
route: [this.CurrentRoute ? this.CurrentRoute :
|
|
3903
|
+
this.EditingApplication.LookupConfig?.PathRegex.replace('.*', '') ||
|
|
3904
|
+
'/',
|
|
3905
|
+
Validators.required,
|
|
3906
|
+
],
|
|
3907
|
+
// priority: [
|
|
3908
|
+
// this.EditingApplication.Application?.Priority || 10000,
|
|
3909
|
+
// Validators.required,
|
|
3910
|
+
// ],
|
|
3911
|
+
});
|
|
3932
3912
|
}
|
|
3933
3913
|
}
|
|
3934
|
-
|
|
3935
|
-
|
|
3914
|
+
}
|
|
3915
|
+
EditApplicationFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EditApplicationFormComponent, deps: [{ token: i1$2.FormBuilder }, { token: EaCService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3916
|
+
EditApplicationFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: EditApplicationFormComponent, selector: "lcu-edit-application-form", inputs: { ApplicationLookup: ["application-lookup", "ApplicationLookup"], CurrentRoute: ["current-route", "CurrentRoute"], EditingApplication: ["editing-application", "EditingApplication"], HasSaveButton: ["has-save-button", "HasSaveButton"], ProjectLookup: ["project-lookup", "ProjectLookup"] }, outputs: { SaveFormEvent: "save-form-event" }, ngImport: i0, template: "<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", styles: [".s-block{margin:10px 0;width:100%;height:40px}\n"], components: [{ type: i4$3.SkeletonBlockComponent, selector: "skeleton-block", inputs: ["width", "height", "effect", "borderRadius"] }, { type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }] });
|
|
3917
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EditApplicationFormComponent, decorators: [{
|
|
3918
|
+
type: Component,
|
|
3919
|
+
args: [{ selector: 'lcu-edit-application-form', template: "<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", styles: [".s-block{margin:10px 0;width:100%;height:40px}\n"] }]
|
|
3920
|
+
}], ctorParameters: function () { return [{ type: i1$2.FormBuilder }, { type: EaCService }]; }, propDecorators: { ApplicationLookup: [{
|
|
3921
|
+
type: Input,
|
|
3922
|
+
args: ['application-lookup']
|
|
3923
|
+
}], CurrentRoute: [{
|
|
3924
|
+
type: Input,
|
|
3925
|
+
args: ['current-route']
|
|
3926
|
+
}], EditingApplication: [{
|
|
3927
|
+
type: Input,
|
|
3928
|
+
args: ['editing-application']
|
|
3929
|
+
}], HasSaveButton: [{
|
|
3930
|
+
type: Input,
|
|
3931
|
+
args: ['has-save-button']
|
|
3932
|
+
}], ProjectLookup: [{
|
|
3933
|
+
type: Input,
|
|
3934
|
+
args: ['project-lookup']
|
|
3935
|
+
}], SaveFormEvent: [{
|
|
3936
|
+
type: Output,
|
|
3937
|
+
args: ['save-form-event']
|
|
3938
|
+
}] } });
|
|
3939
|
+
|
|
3940
|
+
class ProcessorDetailsFormComponent {
|
|
3941
|
+
constructor(appsFlowSvc, formBldr, eacSvc) {
|
|
3942
|
+
this.appsFlowSvc = appsFlowSvc;
|
|
3943
|
+
this.formBldr = formBldr;
|
|
3944
|
+
this.eacSvc = eacSvc;
|
|
3945
|
+
this.redirectTooltip = '';
|
|
3946
|
+
this.HasSaveButton = true;
|
|
3947
|
+
this.SaveFormEvent = new EventEmitter();
|
|
3936
3948
|
}
|
|
3937
|
-
get
|
|
3938
|
-
return this.
|
|
3949
|
+
get APIRootFormControl() {
|
|
3950
|
+
return this.ProcessorDetailsFormGroup?.controls.apiRoot;
|
|
3939
3951
|
}
|
|
3940
|
-
get
|
|
3941
|
-
|
|
3942
|
-
? this.Environment?.Sources[this.EditingSourceControlLookup]
|
|
3943
|
-
: null;
|
|
3944
|
-
if (sc == null && this.EditingSourceControlLookup) {
|
|
3945
|
-
sc = {};
|
|
3946
|
-
}
|
|
3947
|
-
return sc;
|
|
3952
|
+
get Environment() {
|
|
3953
|
+
return this.State?.EaC?.Environments[this.State?.EaC?.Enterprise?.PrimaryEnvironment];
|
|
3948
3954
|
}
|
|
3949
|
-
get
|
|
3950
|
-
return this.
|
|
3955
|
+
get BuildFormControl() {
|
|
3956
|
+
return this.ProcessorDetailsFormGroup?.controls.build;
|
|
3951
3957
|
}
|
|
3952
|
-
get
|
|
3953
|
-
return this.
|
|
3958
|
+
get BuildPathFormControl() {
|
|
3959
|
+
return this.ProcessorDetailsFormGroup?.controls.buildPath;
|
|
3954
3960
|
}
|
|
3955
|
-
get
|
|
3956
|
-
return this.
|
|
3961
|
+
get ClientIDFormControl() {
|
|
3962
|
+
return this.ProcessorDetailsFormGroup?.controls.clientId;
|
|
3957
3963
|
}
|
|
3958
|
-
get
|
|
3959
|
-
return this.
|
|
3964
|
+
get ClientSecretFormControl() {
|
|
3965
|
+
return this.ProcessorDetailsFormGroup?.controls.clientSecret;
|
|
3960
3966
|
}
|
|
3961
|
-
|
|
3962
|
-
|
|
3963
|
-
ngOnDestroy() {
|
|
3964
|
-
this.destroyFormControls();
|
|
3967
|
+
get DefaultFileFormControl() {
|
|
3968
|
+
return this.ProcessorDetailsFormGroup?.controls.defaultFile;
|
|
3965
3969
|
}
|
|
3966
|
-
|
|
3967
|
-
|
|
3968
|
-
|
|
3969
|
-
this.
|
|
3970
|
-
}
|
|
3971
|
-
console.log("source control", this.EditingSourceControl);
|
|
3972
|
-
if (this.EditingSourceControl != null) {
|
|
3973
|
-
this.DevOpsSourceControlFormGroup = this.formBuilder.group({});
|
|
3974
|
-
this.setupFormControls();
|
|
3975
|
-
}
|
|
3976
|
-
this.RefreshOrganizations();
|
|
3970
|
+
get DefaultSourceControl() {
|
|
3971
|
+
return {
|
|
3972
|
+
Organization: this.EditingApplication?.LowCodeUnit?.Organization,
|
|
3973
|
+
Repository: this.EditingApplication?.LowCodeUnit?.Repository,
|
|
3974
|
+
};
|
|
3977
3975
|
}
|
|
3978
|
-
|
|
3979
|
-
|
|
3980
|
-
this.addBranchOption(event.value);
|
|
3981
|
-
event.input.value = '';
|
|
3976
|
+
get InboundPathFormControl() {
|
|
3977
|
+
return this.ProcessorDetailsFormGroup?.controls.inboundPath;
|
|
3982
3978
|
}
|
|
3983
|
-
|
|
3984
|
-
this.
|
|
3979
|
+
get IncludeRequestFormControl() {
|
|
3980
|
+
return this.ProcessorDetailsFormGroup?.controls.includeRequest;
|
|
3985
3981
|
}
|
|
3986
|
-
|
|
3987
|
-
this.
|
|
3982
|
+
get MethodsFormControl() {
|
|
3983
|
+
return this.ProcessorDetailsFormGroup?.controls.methods;
|
|
3988
3984
|
}
|
|
3989
|
-
|
|
3990
|
-
|
|
3985
|
+
get PackageFormControl() {
|
|
3986
|
+
return this.ProcessorDetailsFormGroup?.controls.package;
|
|
3991
3987
|
}
|
|
3992
|
-
|
|
3993
|
-
this.
|
|
3988
|
+
get PermanentFormControl() {
|
|
3989
|
+
return this.ProcessorDetailsFormGroup?.controls.permanent;
|
|
3994
3990
|
}
|
|
3995
|
-
|
|
3996
|
-
this.
|
|
3997
|
-
this.RepositoryFormControl.reset();
|
|
3991
|
+
get PreserveMethodFormControl() {
|
|
3992
|
+
return this.ProcessorDetailsFormGroup?.controls.preserveMethod;
|
|
3998
3993
|
}
|
|
3999
|
-
|
|
4000
|
-
this.
|
|
3994
|
+
get RedirectFormControl() {
|
|
3995
|
+
return this.ProcessorDetailsFormGroup?.controls.redirect;
|
|
4001
3996
|
}
|
|
4002
|
-
|
|
4003
|
-
this.
|
|
4004
|
-
}
|
|
4005
|
-
MainBranchChanged(event) {
|
|
4006
|
-
this.emitBranchesChanged();
|
|
4007
|
-
}
|
|
4008
|
-
OrganizationChanged(event) {
|
|
4009
|
-
const org = this.OrganizationFormControl;
|
|
4010
|
-
this.RepositoryFormControl.reset();
|
|
4011
|
-
if (this.UseBranches) {
|
|
4012
|
-
this.BranchesFormControl.reset();
|
|
4013
|
-
this.SelectedBranches = [];
|
|
4014
|
-
}
|
|
4015
|
-
this.listRepositories();
|
|
4016
|
-
}
|
|
4017
|
-
RefreshOrganizations() {
|
|
4018
|
-
// this.Loading = true;
|
|
4019
|
-
this.listOrganizations();
|
|
4020
|
-
this.OrganizationFormControl?.reset();
|
|
4021
|
-
this.RepositoryFormControl?.reset();
|
|
4022
|
-
if (this.UseBranches) {
|
|
4023
|
-
this.BranchesFormControl?.reset();
|
|
4024
|
-
}
|
|
3997
|
+
get ScopesFormControl() {
|
|
3998
|
+
return this.ProcessorDetailsFormGroup?.controls.scopes;
|
|
4025
3999
|
}
|
|
4026
|
-
|
|
4027
|
-
|
|
4028
|
-
if (index >= 0) {
|
|
4029
|
-
this.SelectedBranches.splice(index, 1);
|
|
4030
|
-
}
|
|
4031
|
-
this.emitBranchesChanged();
|
|
4000
|
+
get SecurityFormControl() {
|
|
4001
|
+
return this.ProcessorDetailsFormGroup?.controls.security;
|
|
4032
4002
|
}
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
if (this.UseBranches) {
|
|
4036
|
-
this.BranchesFormControl.reset();
|
|
4037
|
-
this.SelectedBranches = [];
|
|
4038
|
-
this.listBranches();
|
|
4039
|
-
}
|
|
4040
|
-
if (!this.UseBranches) {
|
|
4041
|
-
this.listBuildPaths();
|
|
4042
|
-
}
|
|
4003
|
+
get State() {
|
|
4004
|
+
return this.eacSvc.State;
|
|
4043
4005
|
}
|
|
4044
|
-
|
|
4045
|
-
this.
|
|
4046
|
-
const org = this.OrganizationFormControl.value;
|
|
4047
|
-
const repoName = this.RepositoryFormControl.value;
|
|
4048
|
-
this.appsFlowSvc
|
|
4049
|
-
.CreateRepository(org, repoName)
|
|
4050
|
-
.subscribe((response) => {
|
|
4051
|
-
if (response.Status.Code === 0) {
|
|
4052
|
-
this.listRepositories(repoName);
|
|
4053
|
-
this.CreatingRepository = false;
|
|
4054
|
-
}
|
|
4055
|
-
else {
|
|
4056
|
-
// TODO: Need to surface an error to the user...
|
|
4057
|
-
this.Loading = false;
|
|
4058
|
-
}
|
|
4059
|
-
});
|
|
4006
|
+
get SourceControls() {
|
|
4007
|
+
return this.Environment?.Sources || {};
|
|
4060
4008
|
}
|
|
4061
|
-
|
|
4062
|
-
this.
|
|
4009
|
+
get SourceControlFormControl() {
|
|
4010
|
+
return this.ProcessorDetailsFormGroup?.controls.sourceControl;
|
|
4063
4011
|
}
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
this.SaveSourceControl();
|
|
4012
|
+
get SPARootFormControl() {
|
|
4013
|
+
return this.ProcessorDetailsFormGroup?.controls.spaRoot;
|
|
4067
4014
|
}
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
Environment: {
|
|
4071
|
-
...this.Environment,
|
|
4072
|
-
Sources: this.Environment.Sources || {},
|
|
4073
|
-
},
|
|
4074
|
-
EnvironmentLookup: this.EnvironmentLookup,
|
|
4075
|
-
EnterpriseDataTokens: {},
|
|
4076
|
-
};
|
|
4077
|
-
let source = {
|
|
4078
|
-
...this.EditingSourceControl,
|
|
4079
|
-
Branches: this.SelectedBranches,
|
|
4080
|
-
MainBranch: this.MainBranchFormControl.value,
|
|
4081
|
-
};
|
|
4082
|
-
source = {
|
|
4083
|
-
...source,
|
|
4084
|
-
Type: 'GitHub',
|
|
4085
|
-
Name: `@${this.OrganizationFormControl.value}/${this.RepositoryFormControl.value}`,
|
|
4086
|
-
DevOpsActionTriggerLookups: [this.DevOpsActionLookup],
|
|
4087
|
-
Organization: this.OrganizationFormControl.value,
|
|
4088
|
-
Repository: this.RepositoryFormControl.value,
|
|
4089
|
-
};
|
|
4090
|
-
const scLookup = `github://${source.Organization}/${source.Repository}`;
|
|
4091
|
-
saveEnvReq.Environment.Sources[scLookup] = source;
|
|
4092
|
-
console.log('save SC: ', saveEnvReq);
|
|
4093
|
-
let resp = this.eacSvc.SaveEnvironmentAsCode(saveEnvReq);
|
|
4094
|
-
resp.then((res) => {
|
|
4095
|
-
this.SaveStatusEvent.emit(res);
|
|
4096
|
-
});
|
|
4015
|
+
get TokenLookupFormControl() {
|
|
4016
|
+
return this.ProcessorDetailsFormGroup?.controls.tokenLookup;
|
|
4097
4017
|
}
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4018
|
+
get ValidFormControls() {
|
|
4019
|
+
let vfc = new Array();
|
|
4020
|
+
for (const field in this.ProcessorDetailsFormGroup.controls) {
|
|
4021
|
+
const control = this.ProcessorDetailsFormGroup.get(field);
|
|
4022
|
+
if (control.valid) {
|
|
4023
|
+
vfc.push(control);
|
|
4024
|
+
}
|
|
4103
4025
|
}
|
|
4104
|
-
|
|
4105
|
-
|
|
4026
|
+
// console.log("VFC=", vfc)
|
|
4027
|
+
return vfc;
|
|
4106
4028
|
}
|
|
4107
|
-
|
|
4108
|
-
|
|
4109
|
-
this.DevOpsActionLookupFormControl.setValue(this.DevOpsActionLookup);
|
|
4110
|
-
}, 0);
|
|
4029
|
+
get VersionFormControl() {
|
|
4030
|
+
return this.ProcessorDetailsFormGroup?.controls.version;
|
|
4111
4031
|
}
|
|
4112
|
-
|
|
4113
|
-
this.
|
|
4114
|
-
this.DevOpsSourceControlFormGroup?.removeControl([this.SourceControlRoot, 'branches'].join(''));
|
|
4115
|
-
this.DevOpsSourceControlFormGroup?.removeControl([this.SourceControlRoot, 'buildPath'].join(''));
|
|
4116
|
-
this.SelectedBranches = [];
|
|
4117
|
-
this.DevOpsSourceControlFormGroup?.removeControl([this.SourceControlRoot, 'organization'].join(''));
|
|
4118
|
-
this.DevOpsSourceControlFormGroup?.removeControl([this.SourceControlRoot, 'repository'].join(''));
|
|
4032
|
+
get ZipFileFormControl() {
|
|
4033
|
+
return this.ProcessorDetailsFormGroup?.controls.zipFile;
|
|
4119
4034
|
}
|
|
4120
|
-
|
|
4121
|
-
if (this.
|
|
4122
|
-
|
|
4123
|
-
this.SelectedBranches.indexOf(this.MainBranchFormControl.value) < 0)) {
|
|
4124
|
-
this.MainBranchFormControl.setValue(this.SelectedBranches.find((branch) => branch === 'main' || branch === 'master') || this.SelectedBranches[0]);
|
|
4035
|
+
ngOnInit() {
|
|
4036
|
+
if (!this.EditingApplication) {
|
|
4037
|
+
this.CreateNewApplication();
|
|
4125
4038
|
}
|
|
4126
|
-
else
|
|
4127
|
-
this.
|
|
4039
|
+
else {
|
|
4040
|
+
this.setupProcessorDetailsForm();
|
|
4128
4041
|
}
|
|
4129
|
-
this.BranchesFormControl.setValue(this.SelectedBranches.join(','));
|
|
4130
|
-
this.BranchesChanged(this.SelectedBranches || []);
|
|
4131
4042
|
}
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
this.Loading = true;
|
|
4135
|
-
this.appsFlowSvc
|
|
4136
|
-
.ListBranches(this.OrganizationFormControl.value, this.RepositoryFormControl.value)
|
|
4137
|
-
.subscribe((response) => {
|
|
4138
|
-
this.BranchOptions = response.Model;
|
|
4139
|
-
this.Loading = false;
|
|
4140
|
-
if (this.EditingSourceControl?.Branches?.length > 0) {
|
|
4141
|
-
this.SelectedBranches = this.EditingSourceControl.Branches;
|
|
4142
|
-
}
|
|
4143
|
-
else if (this.BranchOptions?.length === 1) {
|
|
4144
|
-
this.BranchesFormControl.setValue(this.BranchOptions[0].Name);
|
|
4145
|
-
this.SelectedBranches = [this.BranchOptions[0].Name];
|
|
4146
|
-
}
|
|
4147
|
-
this.emitBranchesChanged();
|
|
4148
|
-
this.listBuildPaths();
|
|
4149
|
-
});
|
|
4150
|
-
}
|
|
4043
|
+
CreateNewApplication() {
|
|
4044
|
+
this.SetEditingApplication(Guid.CreateRaw());
|
|
4151
4045
|
}
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
.subscribe((response) => {
|
|
4158
|
-
this.BuildPathOptions = response.Model;
|
|
4159
|
-
this.Loading = false;
|
|
4160
|
-
if (this.BuildPathOptions?.length === 1) {
|
|
4161
|
-
this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);
|
|
4162
|
-
}
|
|
4163
|
-
});
|
|
4046
|
+
DetermineTooltipText() {
|
|
4047
|
+
let permanentValue = this.PermanentFormControl.value;
|
|
4048
|
+
let preserveValue = this.PreserveMethodFormControl.value;
|
|
4049
|
+
if (permanentValue === true && preserveValue === false) {
|
|
4050
|
+
this.redirectTooltip = '301 – Permanent and Not Preserve';
|
|
4164
4051
|
}
|
|
4165
|
-
|
|
4166
|
-
|
|
4167
|
-
this.Loading = true;
|
|
4168
|
-
this.appsFlowSvc
|
|
4169
|
-
.ListOrganizations()
|
|
4170
|
-
.subscribe((response) => {
|
|
4171
|
-
this.OrganizationOptions = response.Model;
|
|
4172
|
-
console.log("Organization Options: ", this.OrganizationOptions);
|
|
4173
|
-
this.Loading = false;
|
|
4174
|
-
if (this.EditingSourceControl?.Organization) {
|
|
4175
|
-
setTimeout(() => {
|
|
4176
|
-
this.OrganizationFormControl.setValue(this.EditingSourceControl.Organization);
|
|
4177
|
-
this.listRepositories(this.EditingSourceControl?.Repository);
|
|
4178
|
-
}, 0);
|
|
4179
|
-
}
|
|
4180
|
-
});
|
|
4181
|
-
}
|
|
4182
|
-
listRepositories(activeRepo = null) {
|
|
4183
|
-
this.Loading = true;
|
|
4184
|
-
this.appsFlowSvc
|
|
4185
|
-
.ListRepositories(this.OrganizationFormControl.value)
|
|
4186
|
-
.subscribe((response) => {
|
|
4187
|
-
this.RepositoryOptions = response.Model;
|
|
4188
|
-
this.Loading = false;
|
|
4189
|
-
if (activeRepo) {
|
|
4190
|
-
setTimeout(() => {
|
|
4191
|
-
this.RepositoryFormControl.setValue(activeRepo);
|
|
4192
|
-
this.listBranches();
|
|
4193
|
-
if (!this.UseBranches) {
|
|
4194
|
-
this.listBuildPaths();
|
|
4195
|
-
}
|
|
4196
|
-
}, 0);
|
|
4197
|
-
}
|
|
4198
|
-
else if (this.RepositoryOptions?.length <= 0) {
|
|
4199
|
-
this.CreatingRepository = true;
|
|
4200
|
-
}
|
|
4201
|
-
});
|
|
4202
|
-
}
|
|
4203
|
-
loadProjectHostingDetails() {
|
|
4204
|
-
if (this.SelectedBranches?.length > 0) {
|
|
4205
|
-
this.HostingDetails.Loading = true;
|
|
4206
|
-
this.appsFlowSvc
|
|
4207
|
-
.LoadProjectHostingDetails()
|
|
4208
|
-
.subscribe((response) => {
|
|
4209
|
-
this.HostingDetails = response.Model;
|
|
4210
|
-
this.HostingDetails.Loading = false;
|
|
4211
|
-
this.configureDevOpsAction();
|
|
4212
|
-
}, (err) => {
|
|
4213
|
-
this.HostingDetails.Loading = false;
|
|
4214
|
-
});
|
|
4052
|
+
else if (permanentValue === false && preserveValue === false) {
|
|
4053
|
+
this.redirectTooltip = '302 – Not Permanent and Not Preserve';
|
|
4215
4054
|
}
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
this.destroyFormControls();
|
|
4219
|
-
console.log("Source Control: ", this.EditingSourceControl);
|
|
4220
|
-
this.DevOpsSourceControlFormGroup.addControl('devOpsActionLookup', new FormControl(this.DevOpsActionLookup || '', []));
|
|
4221
|
-
this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'organization'].join(''), new FormControl(this.EditingSourceControl.Organization ?? '', Validators.required));
|
|
4222
|
-
this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'repository'].join(''), new FormControl(this.EditingSourceControl.Repository ?? '', Validators.required));
|
|
4223
|
-
if (this.UseBranches) {
|
|
4224
|
-
this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'branches'].join(''), new FormControl(this.EditingSourceControl?.Branches ?? '', Validators.required));
|
|
4225
|
-
this.SelectedBranches = this.EditingSourceControl?.Branches;
|
|
4226
|
-
this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'mainBranch'].join(''), new FormControl(this.EditingSourceControl.MainBranch ?? '', Validators.required));
|
|
4055
|
+
else if (permanentValue === false && preserveValue === true) {
|
|
4056
|
+
this.redirectTooltip = '307 – Not Permanent and Preserve';
|
|
4227
4057
|
}
|
|
4228
|
-
if (
|
|
4229
|
-
this.
|
|
4058
|
+
else if (permanentValue === true && preserveValue === true) {
|
|
4059
|
+
this.redirectTooltip = '308 – Permanent and Preserve';
|
|
4230
4060
|
}
|
|
4231
4061
|
}
|
|
4232
|
-
|
|
4233
|
-
|
|
4234
|
-
DevopsSourceControlFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: DevopsSourceControlFormComponent, selector: "lcu-devops-source-control-form", inputs: { EditingSourceControlLookup: ["editing-source-control-lookup", "EditingSourceControlLookup"], Environment: ["environment", "Environment"], EnvironmentLookup: ["environment-lookup", "EnvironmentLookup"] }, outputs: { SaveStatusEvent: "save-status-event" }, viewQueries: [{ propertyName: "BranchesInput", first: true, predicate: ["branches"], descendants: true }], ngImport: i0, template: "<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>", styles: [".form-card,.sc-card{width:100%}.margin-bottom{margin-bottom:15px}.primary-link{color:#4a918e;text-decoration:none}.s-block{margin:10px 0;width:100%;height:40px}\n"], components: [{ type: i3.LoaderComponent, selector: "lcu-loader", inputs: ["diameter", "hide-inner", "loading"] }, { type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i9$2.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.MatPrefix, selector: "[matPrefix]" }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4$1.MatSuffix, selector: "[matSuffix]" }, { type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9$1.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i4$1.MatLabel, selector: "mat-label" }, { type: i9$2.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i9$2.MatChipRemove, selector: "[matChipRemove]" }, { type: i8$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i9$2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }] });
|
|
4235
|
-
|
|
4062
|
+
SaveProcessorDetails() {
|
|
4063
|
+
const app = this.EditingApplication;
|
|
4064
|
+
app.LookupConfig.AllowedMethods = this.MethodsFormControl?.value
|
|
4065
|
+
?.split(' ')
|
|
4066
|
+
.filter((v) => !!v);
|
|
4067
|
+
app.Processor.Type = this.ProcessorType;
|
|
4068
|
+
switch (app.Processor.Type) {
|
|
4069
|
+
case 'DFS':
|
|
4070
|
+
app.Processor.DefaultFile =
|
|
4071
|
+
this.DefaultFileFormControl.value || 'index.html';
|
|
4072
|
+
app.LowCodeUnit = {
|
|
4073
|
+
Type: this.LCUType,
|
|
4074
|
+
};
|
|
4075
|
+
switch (app.LowCodeUnit.Type) {
|
|
4076
|
+
case 'GitHub':
|
|
4077
|
+
app.LowCodeUnit.Organization =
|
|
4078
|
+
this.SourceControls[this.SourceControlFormControl.value]?.Organization;
|
|
4079
|
+
app.LowCodeUnit.Repository =
|
|
4080
|
+
this.SourceControls[this.SourceControlFormControl.value]?.Repository;
|
|
4081
|
+
app.LowCodeUnit.Build = this.BuildFormControl.value;
|
|
4082
|
+
app.LowCodeUnit.Path = this.BuildPathFormControl.value;
|
|
4083
|
+
app.LowCodeUnit.SourceControlLookup =
|
|
4084
|
+
this.SourceControlFormControl.value;
|
|
4085
|
+
break;
|
|
4086
|
+
case 'NPM':
|
|
4087
|
+
app.LowCodeUnit.Package = this.PackageFormControl.value;
|
|
4088
|
+
app.LowCodeUnit.Version = this.VersionFormControl.value;
|
|
4089
|
+
break;
|
|
4090
|
+
case 'WordPress':
|
|
4091
|
+
app.LowCodeUnit.APIRoot = this.APIRootFormControl.value;
|
|
4092
|
+
break;
|
|
4093
|
+
case 'Zip':
|
|
4094
|
+
app.LowCodeUnit.ZipFile = this.ZipFileFormControl.value;
|
|
4095
|
+
break;
|
|
4096
|
+
}
|
|
4097
|
+
break;
|
|
4098
|
+
case 'OAuth':
|
|
4099
|
+
app.Processor.Scopes = this.ScopesFormControl.value.split(' ');
|
|
4100
|
+
app.Processor.TokenLookup = this.TokenLookupFormControl.value;
|
|
4101
|
+
app.LowCodeUnit = {
|
|
4102
|
+
Type: this.LCUType,
|
|
4103
|
+
};
|
|
4104
|
+
switch (app.LowCodeUnit.Type) {
|
|
4105
|
+
case 'GitHubOAuth':
|
|
4106
|
+
app.LowCodeUnit.ClientID = this.ClientIDFormControl.value;
|
|
4107
|
+
app.LowCodeUnit.ClientSecret = this.ClientSecretFormControl.value;
|
|
4108
|
+
break;
|
|
4109
|
+
}
|
|
4110
|
+
break;
|
|
4111
|
+
case 'Proxy':
|
|
4112
|
+
app.Processor.InboundPath = this.InboundPathFormControl.value;
|
|
4113
|
+
app.LowCodeUnit = {
|
|
4114
|
+
Type: this.LCUType,
|
|
4115
|
+
};
|
|
4116
|
+
switch (app.LowCodeUnit.Type) {
|
|
4117
|
+
case 'API':
|
|
4118
|
+
app.LowCodeUnit.APIRoot = this.APIRootFormControl.value;
|
|
4119
|
+
app.LowCodeUnit.Security = this.SecurityFormControl.value;
|
|
4120
|
+
break;
|
|
4121
|
+
case 'SPA':
|
|
4122
|
+
app.LowCodeUnit.SPARoot = this.SPARootFormControl.value;
|
|
4123
|
+
break;
|
|
4124
|
+
}
|
|
4125
|
+
break;
|
|
4126
|
+
case 'Redirect':
|
|
4127
|
+
app.Processor.IncludeRequest = !!this.IncludeRequestFormControl.value;
|
|
4128
|
+
app.Processor.Permanent = !!this.PermanentFormControl.value;
|
|
4129
|
+
app.Processor.PreserveMethod = !!this.PreserveMethodFormControl.value;
|
|
4130
|
+
app.Processor.Redirect = this.RedirectFormControl.value;
|
|
4131
|
+
break;
|
|
4132
|
+
}
|
|
4133
|
+
if (!app.LookupConfig.PathRegex.startsWith('/')) {
|
|
4134
|
+
app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;
|
|
4135
|
+
}
|
|
4136
|
+
const saveAppReq = {
|
|
4137
|
+
ProjectLookup: this.ProjectLookup,
|
|
4138
|
+
Application: app,
|
|
4139
|
+
ApplicationLookup: this.EditingApplicationLookup || Guid.CreateRaw(),
|
|
4140
|
+
};
|
|
4141
|
+
this.eacSvc.SaveApplicationAsCode(saveAppReq).then((res) => {
|
|
4142
|
+
this.SaveFormEvent.emit(res);
|
|
4143
|
+
});
|
|
4144
|
+
}
|
|
4145
|
+
SetEditingApplication(appLookup) {
|
|
4146
|
+
this.EditingApplication = new EaCApplicationAsCode();
|
|
4147
|
+
this.EditingApplicationLookup = appLookup;
|
|
4148
|
+
this.setupProcessorDetailsForm();
|
|
4149
|
+
}
|
|
4150
|
+
SourceControlChanged(event) {
|
|
4151
|
+
this.listBuildPaths();
|
|
4152
|
+
}
|
|
4153
|
+
ProcessorTypeChanged(event) {
|
|
4154
|
+
this.ProcessorType = event.value;
|
|
4155
|
+
this.setupProcessorTypeSubForm();
|
|
4156
|
+
}
|
|
4157
|
+
LCUTypeChanged(event) {
|
|
4158
|
+
this.LCUType = event.value;
|
|
4159
|
+
this.setupLcuTypeSubForm();
|
|
4160
|
+
}
|
|
4161
|
+
//HELPERS
|
|
4162
|
+
cleanupLcuTypeSubForm() {
|
|
4163
|
+
this.ProcessorDetailsFormGroup.removeControl('methods');
|
|
4164
|
+
this.ProcessorDetailsFormGroup.removeControl('apiRoot');
|
|
4165
|
+
this.ProcessorDetailsFormGroup.removeControl('security');
|
|
4166
|
+
this.ProcessorDetailsFormGroup.removeControl('spaRoot');
|
|
4167
|
+
this.ProcessorDetailsFormGroup.removeControl('applicationId');
|
|
4168
|
+
this.ProcessorDetailsFormGroup.removeControl('sourceControl');
|
|
4169
|
+
this.ProcessorDetailsFormGroup.removeControl('build');
|
|
4170
|
+
this.ProcessorDetailsFormGroup.removeControl('clientId');
|
|
4171
|
+
this.ProcessorDetailsFormGroup.removeControl('clientSecret');
|
|
4172
|
+
this.ProcessorDetailsFormGroup.removeControl('package');
|
|
4173
|
+
this.ProcessorDetailsFormGroup.removeControl('version');
|
|
4174
|
+
this.ProcessorDetailsFormGroup.removeControl('zipFile');
|
|
4175
|
+
}
|
|
4176
|
+
cleanupProcessorTypeSubForm() {
|
|
4177
|
+
this.ProcessorDetailsFormGroup.removeControl('defaultFile');
|
|
4178
|
+
// this.ApplicationFormGroup.removeControl('dfsLcuType');
|
|
4179
|
+
// this.ApplicationFormGroup.removeControl('oauthLcuType');
|
|
4180
|
+
this.ProcessorDetailsFormGroup.removeControl('scopes');
|
|
4181
|
+
this.ProcessorDetailsFormGroup.removeControl('tokenLookup');
|
|
4182
|
+
this.ProcessorDetailsFormGroup.removeControl('inboundPath');
|
|
4183
|
+
this.ProcessorDetailsFormGroup.removeControl('proxyLcuType');
|
|
4184
|
+
this.ProcessorDetailsFormGroup.removeControl('includeRequest');
|
|
4185
|
+
this.ProcessorDetailsFormGroup.removeControl('redirect');
|
|
4186
|
+
this.ProcessorDetailsFormGroup.removeControl('permanent');
|
|
4187
|
+
this.ProcessorDetailsFormGroup.removeControl('preserveMethod');
|
|
4188
|
+
this.cleanupLcuTypeSubForm();
|
|
4189
|
+
}
|
|
4190
|
+
listBuildPaths() {
|
|
4191
|
+
this.State.Loading = true;
|
|
4192
|
+
console.log("Source Control: ", this.SourceControls[this.SourceControlFormControl.value]);
|
|
4193
|
+
this.appsFlowSvc
|
|
4194
|
+
.ListBuildPaths(this.SourceControls[this.SourceControlFormControl.value]?.Organization, this.SourceControls[this.SourceControlFormControl.value]?.Repository)
|
|
4195
|
+
.subscribe((response) => {
|
|
4196
|
+
this.BuildPathOptions = response.Model;
|
|
4197
|
+
console.log("build path options: ", this.BuildPathOptions);
|
|
4198
|
+
this.State.Loading = false;
|
|
4199
|
+
// if (this.BuildPathOptions?.length === 1) {
|
|
4200
|
+
// this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);
|
|
4201
|
+
// }
|
|
4202
|
+
});
|
|
4203
|
+
}
|
|
4204
|
+
setupLcuTypeSubForm() {
|
|
4205
|
+
this.cleanupLcuTypeSubForm();
|
|
4206
|
+
if (this.LCUType) {
|
|
4207
|
+
switch (this.LCUType) {
|
|
4208
|
+
case 'API':
|
|
4209
|
+
this.setupLCUAPIForm();
|
|
4210
|
+
break;
|
|
4211
|
+
case 'ApplicationPointer':
|
|
4212
|
+
this.setupLCUApplicationPointerForm();
|
|
4213
|
+
break;
|
|
4214
|
+
case 'GitHub':
|
|
4215
|
+
this.setupLCUGitHubForm();
|
|
4216
|
+
break;
|
|
4217
|
+
case 'GitHubOAuth':
|
|
4218
|
+
this.setupLCUGitHubOAuthForm();
|
|
4219
|
+
break;
|
|
4220
|
+
case 'WordPress':
|
|
4221
|
+
this.setupLCUWordPressForm();
|
|
4222
|
+
break;
|
|
4223
|
+
// case 'NPM':
|
|
4224
|
+
// this.setupLCUNPMForm();
|
|
4225
|
+
// break;
|
|
4226
|
+
case 'SPA':
|
|
4227
|
+
this.setupLCUSPAForm();
|
|
4228
|
+
break;
|
|
4229
|
+
case 'Zip':
|
|
4230
|
+
this.setupLCUZipForm();
|
|
4231
|
+
break;
|
|
4232
|
+
}
|
|
4233
|
+
}
|
|
4234
|
+
}
|
|
4235
|
+
setupProcessorDetailsForm() {
|
|
4236
|
+
this.ProcessorType = this.EditingApplication?.Processor?.Type || '';
|
|
4237
|
+
// console.log('EDITING APP = ', this.EditingApplication);
|
|
4238
|
+
if (this.EditingApplication != null) {
|
|
4239
|
+
this.ProcessorDetailsFormGroup = this.formBldr.group({
|
|
4240
|
+
procType: [this.ProcessorType, [Validators.required]],
|
|
4241
|
+
});
|
|
4242
|
+
// this.setupDfsForm();
|
|
4243
|
+
// this.setupLcuTypeSubForm();
|
|
4244
|
+
this.setupProcessorTypeSubForm();
|
|
4245
|
+
}
|
|
4246
|
+
}
|
|
4247
|
+
setupLCUGitHubForm() {
|
|
4248
|
+
console.log('EditingApplication: ', this.EditingApplication);
|
|
4249
|
+
this.ProcessorDetailsFormGroup.addControl('sourceControl', this.formBldr.control(this.EditingApplication.LowCodeUnit?.SourceControlLookup || '', [Validators.required]));
|
|
4250
|
+
this.ProcessorDetailsFormGroup.addControl('buildPath', this.formBldr.control(this.EditingApplication.LowCodeUnit?.Path || '', [
|
|
4251
|
+
Validators.required,
|
|
4252
|
+
]));
|
|
4253
|
+
this.ProcessorDetailsFormGroup.addControl('build', this.formBldr.control(this.EditingApplication.LowCodeUnit?.Build || 'latest', [Validators.required]));
|
|
4254
|
+
this.listBuildPaths();
|
|
4255
|
+
}
|
|
4256
|
+
setupLCUApplicationPointerForm() {
|
|
4257
|
+
this.ProcessorDetailsFormGroup.addControl('applicationId', this.formBldr.control(this.EditingApplication.LowCodeUnit?.ApplicationID || '', [Validators.required]));
|
|
4258
|
+
}
|
|
4259
|
+
setupLCUSPAForm() {
|
|
4260
|
+
this.ProcessorDetailsFormGroup.addControl('spaRoot', this.formBldr.control(this.EditingApplication.LowCodeUnit?.SPARoot || '', [Validators.required]));
|
|
4261
|
+
}
|
|
4262
|
+
setupLCUAPIForm() {
|
|
4263
|
+
this.ProcessorDetailsFormGroup.addControl('methods', this.formBldr.control(this.EditingApplication.LookupConfig?.AllowedMethods?.join(' ') || '', []));
|
|
4264
|
+
this.ProcessorDetailsFormGroup.addControl('apiRoot', this.formBldr.control(this.EditingApplication.LowCodeUnit?.APIRoot || '', [Validators.required]));
|
|
4265
|
+
this.ProcessorDetailsFormGroup.addControl('security', this.formBldr.control(this.EditingApplication.LowCodeUnit?.Security || '', [Validators.required]));
|
|
4266
|
+
}
|
|
4267
|
+
setupLCUGitHubOAuthForm() {
|
|
4268
|
+
this.ProcessorDetailsFormGroup.addControl('clientId', this.formBldr.control(this.EditingApplication.LowCodeUnit?.ClientID || '', [Validators.required]));
|
|
4269
|
+
this.ProcessorDetailsFormGroup.addControl('clientSecret', this.formBldr.control(this.EditingApplication.LowCodeUnit?.ClientSecret || '', [Validators.required]));
|
|
4270
|
+
}
|
|
4271
|
+
setupLCUWordPressForm() {
|
|
4272
|
+
this.ProcessorDetailsFormGroup.addControl('apiRoot', this.formBldr.control(this.EditingApplication.LowCodeUnit?.APIRoot || '', [Validators.required]));
|
|
4273
|
+
}
|
|
4274
|
+
setupProxyForm() {
|
|
4275
|
+
this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';
|
|
4276
|
+
this.ProcessorDetailsFormGroup.addControl('inboundPath', this.formBldr.control(this.EditingApplication.Processor?.InboundPath || '', [Validators.required]));
|
|
4277
|
+
this.ProcessorDetailsFormGroup.addControl('lcuType', this.formBldr.control(this.LCUType, [Validators.required]));
|
|
4278
|
+
}
|
|
4279
|
+
setupRedirectForm() {
|
|
4280
|
+
this.ProcessorDetailsFormGroup.addControl('redirect', this.formBldr.control(this.EditingApplication.Processor?.Redirect || '', [
|
|
4281
|
+
Validators.required,
|
|
4282
|
+
]));
|
|
4283
|
+
this.ProcessorDetailsFormGroup.addControl('permanent', this.formBldr.control(this.EditingApplication.Processor?.Permanent || false, []));
|
|
4284
|
+
this.ProcessorDetailsFormGroup.addControl('preserveMethod', this.formBldr.control(this.EditingApplication.Processor?.PreserveMethod || false, []));
|
|
4285
|
+
this.ProcessorDetailsFormGroup.addControl('includeRequest', this.formBldr.control(this.EditingApplication.Processor?.IncludeRequest || false, []));
|
|
4286
|
+
this.DetermineTooltipText();
|
|
4287
|
+
}
|
|
4288
|
+
setupOAuthForm() {
|
|
4289
|
+
this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';
|
|
4290
|
+
this.ProcessorDetailsFormGroup.addControl('scopes', this.formBldr.control(this.EditingApplication.Processor?.Scopes?.Join(' ') || '', [Validators.required]));
|
|
4291
|
+
this.ProcessorDetailsFormGroup.addControl('tokenLookup', this.formBldr.control(this.EditingApplication.Processor?.TokenLookup || '', [Validators.required]));
|
|
4292
|
+
this.ProcessorDetailsFormGroup.addControl('lcuType', this.formBldr.control(this.LCUType, [Validators.required]));
|
|
4293
|
+
}
|
|
4294
|
+
setupLCUZipForm() {
|
|
4295
|
+
this.ProcessorDetailsFormGroup.addControl('zipFile', this.formBldr.control(this.EditingApplication.LowCodeUnit?.ZipFile || '', [Validators.required]));
|
|
4296
|
+
}
|
|
4297
|
+
setupDfsForm() {
|
|
4298
|
+
this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';
|
|
4299
|
+
this.ProcessorDetailsFormGroup.addControl('defaultFile', this.formBldr.control(this.EditingApplication.Processor?.DefaultFile || 'index.html', [Validators.required]));
|
|
4300
|
+
this.ProcessorDetailsFormGroup.addControl('lcuType', this.formBldr.control(this.LCUType, [Validators.required]));
|
|
4301
|
+
}
|
|
4302
|
+
setupProcessorTypeSubForm() {
|
|
4303
|
+
this.cleanupProcessorTypeSubForm();
|
|
4304
|
+
if (this.ProcessorType) {
|
|
4305
|
+
switch (this.ProcessorType) {
|
|
4306
|
+
case 'DFS':
|
|
4307
|
+
this.setupDfsForm();
|
|
4308
|
+
break;
|
|
4309
|
+
case 'OAuth':
|
|
4310
|
+
this.setupOAuthForm();
|
|
4311
|
+
break;
|
|
4312
|
+
case 'Proxy':
|
|
4313
|
+
this.setupProxyForm();
|
|
4314
|
+
break;
|
|
4315
|
+
case 'Redirect':
|
|
4316
|
+
this.setupRedirectForm();
|
|
4317
|
+
break;
|
|
4318
|
+
}
|
|
4319
|
+
}
|
|
4320
|
+
this.setupLcuTypeSubForm();
|
|
4321
|
+
}
|
|
4322
|
+
}
|
|
4323
|
+
ProcessorDetailsFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ProcessorDetailsFormComponent, deps: [{ token: ApplicationsFlowService }, { token: i1$2.FormBuilder }, { token: EaCService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4324
|
+
ProcessorDetailsFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: ProcessorDetailsFormComponent, selector: "lcu-processor-details-form", inputs: { EditingApplication: ["editing-application", "EditingApplication"], EditingApplicationLookup: ["editing-application-lookup", "EditingApplicationLookup"], HasSaveButton: ["has-save-button", "HasSaveButton"], SourceControlLookups: ["source-control-lookups", "SourceControlLookups"], ProjectLookup: ["project-lookup", "ProjectLookup"] }, outputs: { SaveFormEvent: "save-form-event" }, ngImport: i0, template: "<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", styles: [".s-block{margin:10px 0;width:100%;height:40px}\n"], components: [{ type: i4$3.SkeletonBlockComponent, selector: "skeleton-block", inputs: ["width", "height", "effect", "borderRadius"] }, { type: i3.LoaderComponent, selector: "lcu-loader", inputs: ["diameter", "hide-inner", "loading"] }, { type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: NpmPackageSelectComponent, selector: "lcu-npm-package-select", inputs: ["npm-package", "npm-package-version", "form-group"] }, { type: i5$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4$1.MatSuffix, selector: "[matSuffix]" }, { type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
4325
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ProcessorDetailsFormComponent, decorators: [{
|
|
4236
4326
|
type: Component,
|
|
4237
|
-
args: [{ selector: 'lcu-devops-source-control-form', template: "<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>", styles: [".form-card,.sc-card{width:100%}.margin-bottom{margin-bottom:15px}.primary-link{color:#4a918e;text-decoration:none}.s-block{margin:10px 0;width:100%;height:40px}\n"] }]
|
|
4238
|
-
}], ctorParameters: function () { return [{ type: ApplicationsFlowService }, { type:
|
|
4327
|
+
args: [{ selector: 'lcu-processor-details-form', template: "<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", styles: [".s-block{margin:10px 0;width:100%;height:40px}\n"] }]
|
|
4328
|
+
}], ctorParameters: function () { return [{ type: ApplicationsFlowService }, { type: i1$2.FormBuilder }, { type: EaCService }]; }, propDecorators: { EditingApplication: [{
|
|
4239
4329
|
type: Input,
|
|
4240
|
-
args: ['editing-
|
|
4241
|
-
}],
|
|
4330
|
+
args: ['editing-application']
|
|
4331
|
+
}], EditingApplicationLookup: [{
|
|
4242
4332
|
type: Input,
|
|
4243
|
-
args: ['
|
|
4244
|
-
}],
|
|
4333
|
+
args: ['editing-application-lookup']
|
|
4334
|
+
}], HasSaveButton: [{
|
|
4245
4335
|
type: Input,
|
|
4246
|
-
args: ['
|
|
4247
|
-
}],
|
|
4336
|
+
args: ['has-save-button']
|
|
4337
|
+
}], SourceControlLookups: [{
|
|
4338
|
+
type: Input,
|
|
4339
|
+
args: ['source-control-lookups']
|
|
4340
|
+
}], ProjectLookup: [{
|
|
4341
|
+
type: Input,
|
|
4342
|
+
args: ['project-lookup']
|
|
4343
|
+
}], SaveFormEvent: [{
|
|
4248
4344
|
type: Output,
|
|
4249
|
-
args: ['save-
|
|
4250
|
-
}], BranchesInput: [{
|
|
4251
|
-
type: ViewChild,
|
|
4252
|
-
args: ['branches']
|
|
4345
|
+
args: ['save-form-event']
|
|
4253
4346
|
}] } });
|
|
4254
4347
|
|
|
4255
|
-
class
|
|
4256
|
-
constructor(
|
|
4257
|
-
this.dialogRef = dialogRef;
|
|
4348
|
+
class NewApplicationDialogComponent {
|
|
4349
|
+
constructor(eacSvc, dialogRef, data, snackBar) {
|
|
4258
4350
|
this.eacSvc = eacSvc;
|
|
4351
|
+
this.dialogRef = dialogRef;
|
|
4259
4352
|
this.data = data;
|
|
4260
4353
|
this.snackBar = snackBar;
|
|
4354
|
+
this.HasSaveButton = false;
|
|
4261
4355
|
}
|
|
4262
|
-
get
|
|
4263
|
-
return this.
|
|
4356
|
+
get Environment() {
|
|
4357
|
+
return this.State?.EaC?.Environments[this.data.environmentLookup];
|
|
4264
4358
|
}
|
|
4265
|
-
get
|
|
4266
|
-
return this.
|
|
4359
|
+
get SourceControls() {
|
|
4360
|
+
return this.Environment?.Sources || {};
|
|
4361
|
+
}
|
|
4362
|
+
get SourceControlLookups() {
|
|
4363
|
+
return Object.keys(this.Environment.Sources || {});
|
|
4267
4364
|
}
|
|
4268
4365
|
get State() {
|
|
4269
4366
|
return this.eacSvc.State;
|
|
4270
4367
|
}
|
|
4271
4368
|
ngOnInit() {
|
|
4369
|
+
this.SetupApplication(Guid.CreateRaw());
|
|
4272
4370
|
}
|
|
4273
4371
|
CloseDialog() {
|
|
4274
4372
|
this.dialogRef.close();
|
|
4275
4373
|
}
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4374
|
+
SetupApplication(appLookup) {
|
|
4375
|
+
this.NewApplication = new EaCApplicationAsCode;
|
|
4376
|
+
this.NewApplicationLookup = appLookup;
|
|
4377
|
+
}
|
|
4378
|
+
SaveApplication() {
|
|
4379
|
+
const app = {
|
|
4380
|
+
Application: {
|
|
4381
|
+
Name: this.ApplicationFormControls.NameFormControl.value,
|
|
4382
|
+
Description: this.ApplicationFormControls.DescriptionFormControl.value,
|
|
4383
|
+
PriorityShift: 0,
|
|
4384
|
+
},
|
|
4385
|
+
AccessRightLookups: [],
|
|
4386
|
+
DataTokens: {},
|
|
4387
|
+
LicenseConfigurationLookups: [],
|
|
4388
|
+
LookupConfig: {
|
|
4389
|
+
IsPrivate: false,
|
|
4390
|
+
IsTriggerSignIn: false,
|
|
4391
|
+
PathRegex: `${this.ApplicationFormControls.RouteFormControl.value}.*`,
|
|
4392
|
+
QueryRegex: '',
|
|
4393
|
+
HeaderRegex: '',
|
|
4394
|
+
AllowedMethods: this.ProcessorDetailsFormControls.MethodsFormControl?.value
|
|
4395
|
+
?.split(' ')
|
|
4396
|
+
.filter((v) => !!v),
|
|
4397
|
+
},
|
|
4398
|
+
Processor: {
|
|
4399
|
+
Type: this.ProcessorDetailsFormControls.ProcessorType,
|
|
4400
|
+
},
|
|
4401
|
+
};
|
|
4402
|
+
switch (app.Processor.Type) {
|
|
4403
|
+
case 'DFS':
|
|
4404
|
+
app.Processor.BaseHref = `${this.ApplicationFormControls.RouteFormControl.value}/`.replace('//', '/');
|
|
4405
|
+
app.Processor.DefaultFile =
|
|
4406
|
+
this.ProcessorDetailsFormControls.DefaultFileFormControl.value || 'index.html';
|
|
4407
|
+
app.LowCodeUnit = {
|
|
4408
|
+
Type: this.ProcessorDetailsFormControls.LCUType,
|
|
4409
|
+
};
|
|
4410
|
+
switch (app.LowCodeUnit.Type) {
|
|
4411
|
+
case 'GitHub':
|
|
4412
|
+
app.LowCodeUnit.Organization =
|
|
4413
|
+
this.SourceControls[this.ProcessorDetailsFormControls.SourceControlFormControl.value].Organization;
|
|
4414
|
+
app.LowCodeUnit.Repository =
|
|
4415
|
+
this.SourceControls[this.ProcessorDetailsFormControls.SourceControlFormControl.value].Repository;
|
|
4416
|
+
app.LowCodeUnit.Build = this.ProcessorDetailsFormControls.BuildFormControl.value;
|
|
4417
|
+
app.LowCodeUnit.Path =
|
|
4418
|
+
this.ProcessorDetailsFormControls.BuildPathFormControl.value;
|
|
4419
|
+
break;
|
|
4420
|
+
case 'NPM':
|
|
4421
|
+
app.LowCodeUnit.Package = this.ProcessorDetailsFormControls.PackageFormControl.value;
|
|
4422
|
+
app.LowCodeUnit.Version = this.ProcessorDetailsFormControls.VersionFormControl.value;
|
|
4423
|
+
break;
|
|
4424
|
+
case 'Zip':
|
|
4425
|
+
app.LowCodeUnit.ZipFile = this.ProcessorDetailsFormControls.ZipFileFormControl.value;
|
|
4426
|
+
break;
|
|
4427
|
+
}
|
|
4428
|
+
break;
|
|
4429
|
+
case 'OAuth':
|
|
4430
|
+
app.Processor.Scopes = this.ProcessorDetailsFormControls.ScopesFormControl.value.split(' ');
|
|
4431
|
+
app.Processor.TokenLookup = this.ProcessorDetailsFormControls.TokenLookupFormControl.value;
|
|
4432
|
+
app.LowCodeUnit = {
|
|
4433
|
+
Type: this.ProcessorDetailsFormControls.LCUType,
|
|
4434
|
+
};
|
|
4435
|
+
switch (app.LowCodeUnit.Type) {
|
|
4436
|
+
case 'GitHubOAuth':
|
|
4437
|
+
app.LowCodeUnit.ClientID = this.ProcessorDetailsFormControls.ClientIDFormControl.value;
|
|
4438
|
+
app.LowCodeUnit.ClientSecret = this.ProcessorDetailsFormControls.ClientSecretFormControl.value;
|
|
4439
|
+
break;
|
|
4440
|
+
}
|
|
4441
|
+
break;
|
|
4442
|
+
case 'Proxy':
|
|
4443
|
+
app.Processor.InboundPath = this.ProcessorDetailsFormControls.InboundPathFormControl.value;
|
|
4444
|
+
app.LowCodeUnit = {
|
|
4445
|
+
Type: this.ProcessorDetailsFormControls.LCUType,
|
|
4446
|
+
};
|
|
4447
|
+
switch (app.LowCodeUnit.Type) {
|
|
4448
|
+
case 'API':
|
|
4449
|
+
app.LowCodeUnit.APIRoot = this.ProcessorDetailsFormControls.APIRootFormControl.value;
|
|
4450
|
+
app.LowCodeUnit.Security = this.ProcessorDetailsFormControls.SecurityFormControl.value;
|
|
4451
|
+
break;
|
|
4452
|
+
case 'SPA':
|
|
4453
|
+
app.LowCodeUnit.SPARoot = this.ProcessorDetailsFormControls.SPARootFormControl.value;
|
|
4454
|
+
break;
|
|
4455
|
+
}
|
|
4456
|
+
break;
|
|
4457
|
+
case 'Redirect':
|
|
4458
|
+
app.Processor.Permanent = !!this.ProcessorDetailsFormControls.PermanentFormControl.value;
|
|
4459
|
+
app.Processor.PreserveMethod = !!this.ProcessorDetailsFormControls.PreserveMethodFormControl.value;
|
|
4460
|
+
app.Processor.Redirect = this.ProcessorDetailsFormControls.RedirectFormControl.value;
|
|
4461
|
+
break;
|
|
4462
|
+
}
|
|
4463
|
+
if (!app.LookupConfig.PathRegex.startsWith('/')) {
|
|
4464
|
+
app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;
|
|
4465
|
+
}
|
|
4466
|
+
const saveAppReq = {
|
|
4467
|
+
ProjectLookup: this.data.projectLookup,
|
|
4468
|
+
Application: app,
|
|
4469
|
+
ApplicationLookup: this.NewApplicationLookup,
|
|
4470
|
+
};
|
|
4471
|
+
// this.HasBuildFormControl.value && taken out from below if statement
|
|
4472
|
+
if (this.ProcessorDetailsFormControls.ProcessorType !== 'redirect' && this.ProcessorDetailsFormControls.LCUType === 'GitHub') {
|
|
4473
|
+
if (app) {
|
|
4474
|
+
app.LowCodeUnit.SourceControlLookup = this.ProcessorDetailsFormControls.SourceControlFormControl.value;
|
|
4475
|
+
}
|
|
4476
|
+
}
|
|
4477
|
+
else if (app) {
|
|
4478
|
+
app.LowCodeUnit.SourceControlLookup = null;
|
|
4479
|
+
}
|
|
4480
|
+
// console.log("Save new App request: ", saveAppReq);
|
|
4481
|
+
this.eacSvc.SaveApplicationAsCode(saveAppReq).then(res => {
|
|
4482
|
+
this.handleSaveStatus(res);
|
|
4483
|
+
});
|
|
4484
|
+
}
|
|
4485
|
+
handleSaveStatus(status) {
|
|
4486
|
+
console.log("event to save: ", status);
|
|
4487
|
+
if (status.Code === 0) {
|
|
4488
|
+
this.snackBar.open("Application Succesfully Created", "Dismiss", {
|
|
4280
4489
|
duration: 5000
|
|
4281
4490
|
});
|
|
4282
4491
|
this.CloseDialog();
|
|
4283
4492
|
}
|
|
4284
4493
|
else {
|
|
4285
|
-
this.ErrorMessage =
|
|
4494
|
+
this.ErrorMessage = status.Message;
|
|
4495
|
+
}
|
|
4496
|
+
}
|
|
4497
|
+
}
|
|
4498
|
+
NewApplicationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NewApplicationDialogComponent, deps: [{ token: EaCService }, { token: i2$3.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3$1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
|
|
4499
|
+
NewApplicationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: NewApplicationDialogComponent, selector: "lcu-new-application-dialog", viewQueries: [{ propertyName: "ApplicationFormControls", first: true, predicate: EditApplicationFormComponent, descendants: true }, { propertyName: "ProcessorDetailsFormControls", first: true, predicate: ProcessorDetailsFormComponent, descendants: true }], ngImport: i0, template: "<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", styles: [""], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: EditApplicationFormComponent, selector: "lcu-edit-application-form", inputs: ["application-lookup", "current-route", "editing-application", "has-save-button", "project-lookup"], outputs: ["save-form-event"] }, { type: ProcessorDetailsFormComponent, selector: "lcu-processor-details-form", inputs: ["editing-application", "editing-application-lookup", "has-save-button", "source-control-lookups", "project-lookup"], outputs: ["save-form-event"] }], directives: [{ type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
4500
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NewApplicationDialogComponent, decorators: [{
|
|
4501
|
+
type: Component,
|
|
4502
|
+
args: [{ selector: 'lcu-new-application-dialog', template: "<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", styles: [""] }]
|
|
4503
|
+
}], ctorParameters: function () { return [{ type: EaCService }, { type: i2$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
4504
|
+
type: Inject,
|
|
4505
|
+
args: [MAT_DIALOG_DATA]
|
|
4506
|
+
}] }, { type: i3$1.MatSnackBar }]; }, propDecorators: { ApplicationFormControls: [{
|
|
4507
|
+
type: ViewChild,
|
|
4508
|
+
args: [EditApplicationFormComponent]
|
|
4509
|
+
}], ProcessorDetailsFormControls: [{
|
|
4510
|
+
type: ViewChild,
|
|
4511
|
+
args: [ProcessorDetailsFormComponent]
|
|
4512
|
+
}] } });
|
|
4513
|
+
|
|
4514
|
+
class GhControlComponent {
|
|
4515
|
+
constructor(eacSvc, dialog) {
|
|
4516
|
+
this.eacSvc = eacSvc;
|
|
4517
|
+
this.dialog = dialog;
|
|
4518
|
+
this.InputLabel = "Create Pull Request";
|
|
4519
|
+
this.SkeletonEffect = "wave";
|
|
4520
|
+
this.selectedBtn = "pr-btn";
|
|
4521
|
+
}
|
|
4522
|
+
get ActiveEnvironmentLookup() {
|
|
4523
|
+
// TODO: Eventually support multiple environments
|
|
4524
|
+
const envLookups = Object.keys(this.State?.EaC?.Environments || {});
|
|
4525
|
+
return envLookups[0];
|
|
4526
|
+
}
|
|
4527
|
+
get State() {
|
|
4528
|
+
return this.eacSvc.State;
|
|
4529
|
+
}
|
|
4530
|
+
ngOnInit() {
|
|
4531
|
+
}
|
|
4532
|
+
ngAfterViewInit() {
|
|
4533
|
+
this.addSelectBtn();
|
|
4534
|
+
}
|
|
4535
|
+
CreateFeatureBranch() {
|
|
4536
|
+
this.removeSelectedBtn();
|
|
4537
|
+
this.InputLabel = "Create Feature Branch";
|
|
4538
|
+
this.selectedBtn = "fb-btn";
|
|
4539
|
+
this.addSelectBtn();
|
|
4540
|
+
console.log("create feature branch selected");
|
|
4541
|
+
}
|
|
4542
|
+
OpenIssue() {
|
|
4543
|
+
this.removeSelectedBtn();
|
|
4544
|
+
this.InputLabel = "Open Issue";
|
|
4545
|
+
this.selectedBtn = "oi-btn";
|
|
4546
|
+
this.addSelectBtn();
|
|
4547
|
+
console.log("open issue selected");
|
|
4548
|
+
}
|
|
4549
|
+
CreatePullRequest() {
|
|
4550
|
+
this.removeSelectedBtn();
|
|
4551
|
+
this.InputLabel = "Create Pull Request";
|
|
4552
|
+
this.selectedBtn = "pr-btn";
|
|
4553
|
+
this.addSelectBtn();
|
|
4554
|
+
console.log("create pull request selected");
|
|
4555
|
+
}
|
|
4556
|
+
CreateNewApp() {
|
|
4557
|
+
const dialogRef = this.dialog.open(NewApplicationDialogComponent, {
|
|
4558
|
+
width: '600px',
|
|
4559
|
+
data: {
|
|
4560
|
+
environmentLookup: this.ActiveEnvironmentLookup,
|
|
4561
|
+
},
|
|
4562
|
+
});
|
|
4563
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
4564
|
+
// console.log('The dialog was closed');
|
|
4565
|
+
// console.log("result:", result)
|
|
4566
|
+
});
|
|
4567
|
+
}
|
|
4568
|
+
RouteToPath(path) {
|
|
4569
|
+
window.location.href = path;
|
|
4570
|
+
}
|
|
4571
|
+
Submit() {
|
|
4572
|
+
console.log("submitting: ", this.value);
|
|
4573
|
+
switch (this.selectedBtn) {
|
|
4574
|
+
case "pr-btn":
|
|
4575
|
+
//Pull request
|
|
4576
|
+
console.log("creating pull request: ", this.value);
|
|
4577
|
+
break;
|
|
4578
|
+
case "oi-btn":
|
|
4579
|
+
//Open Issue
|
|
4580
|
+
console.log("Open issue: ", this.value);
|
|
4581
|
+
break;
|
|
4582
|
+
case "fb-btn":
|
|
4583
|
+
//Feature Branch
|
|
4584
|
+
console.log("creating feature branch: ", this.value);
|
|
4585
|
+
break;
|
|
4586
|
+
default:
|
|
4587
|
+
console.log("hmm");
|
|
4588
|
+
break;
|
|
4286
4589
|
}
|
|
4287
4590
|
}
|
|
4288
|
-
|
|
4289
|
-
|
|
4591
|
+
//HELPERS
|
|
4592
|
+
addSelectBtn() {
|
|
4593
|
+
// (<HTMLElement>document.getElementById(this.selectedBtn)).classList.add('selected');
|
|
4594
|
+
}
|
|
4595
|
+
removeSelectedBtn() {
|
|
4596
|
+
// (<HTMLElement>document.getElementById(this.selectedBtn)).classList.remove('selected');
|
|
4290
4597
|
}
|
|
4291
4598
|
}
|
|
4292
|
-
|
|
4293
|
-
|
|
4294
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type:
|
|
4599
|
+
GhControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: GhControlComponent, deps: [{ token: EaCService }, { token: i2$3.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
4600
|
+
GhControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: GhControlComponent, selector: "lcu-gh-control", ngImport: i0, template: "<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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:25px;width:25px;font-size:25px;cursor:pointer}.gh-icon{width:60px;height:60px;font-size:60px;text-align:center}.gh-input{width:90%}.selected{border:1px solid green}.gh-input ::ng-deep .mat-form-field-flex{border:1px solid;border-radius:30px!important}.gh-input ::ng-deep .mat-form-field-wrapper{padding-bottom:0!important}.gh-input ::ng-deep .mat-form-field-underline{display:none}\n"], components: [{ type: i1$1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i7$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i4$3.SkeletonAvatarComponent, selector: "skeleton-avatar", inputs: ["size", "color", "showIcon", "iconColor", "borderRadius", "effect"] }, { type: i4$3.SkeletonBlockComponent, selector: "skeleton-block", inputs: ["width", "height", "effect", "borderRadius"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i4$1.MatLabel, selector: "mat-label" }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { type: i7$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i4$3.SkeletonTextDirective, selector: "[skeleton-text]", inputs: ["effect"] }] });
|
|
4601
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: GhControlComponent, decorators: [{
|
|
4295
4602
|
type: Component,
|
|
4296
|
-
args: [{ selector: 'lcu-
|
|
4297
|
-
}], ctorParameters: function () { return [{ type:
|
|
4298
|
-
type: Inject,
|
|
4299
|
-
args: [MAT_DIALOG_DATA]
|
|
4300
|
-
}] }, { type: i3$1.MatSnackBar }]; }, propDecorators: { DevopsSourceControl: [{
|
|
4301
|
-
type: ViewChild,
|
|
4302
|
-
args: [DevopsSourceControlFormComponent]
|
|
4303
|
-
}] } });
|
|
4603
|
+
args: [{ selector: 'lcu-gh-control', template: "<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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:25px;width:25px;font-size:25px;cursor:pointer}.gh-icon{width:60px;height:60px;font-size:60px;text-align:center}.gh-input{width:90%}.selected{border:1px solid green}.gh-input ::ng-deep .mat-form-field-flex{border:1px solid;border-radius:30px!important}.gh-input ::ng-deep .mat-form-field-wrapper{padding-bottom:0!important}.gh-input ::ng-deep .mat-form-field-underline{display:none}\n"] }]
|
|
4604
|
+
}], ctorParameters: function () { return [{ type: EaCService }, { type: i2$3.MatDialog }]; } });
|
|
4304
4605
|
|
|
4305
|
-
class
|
|
4306
|
-
|
|
4606
|
+
class DevopsSourceControlFormComponent {
|
|
4607
|
+
// Constructors
|
|
4608
|
+
constructor(appsFlowSvc, eacSvc, formBuilder) {
|
|
4609
|
+
this.appsFlowSvc = appsFlowSvc;
|
|
4307
4610
|
this.eacSvc = eacSvc;
|
|
4308
|
-
this.
|
|
4309
|
-
this.
|
|
4611
|
+
this.formBuilder = formBuilder;
|
|
4612
|
+
this.SeparatorKeysCodes = [ENTER, COMMA];
|
|
4613
|
+
this.SaveStatusEvent = new EventEmitter();
|
|
4614
|
+
this.BuildPath = null;
|
|
4615
|
+
this.HostingDetails = new ProjectHostingDetails();
|
|
4616
|
+
this.SelectedBranches = [];
|
|
4617
|
+
this.SourceControlRoot = '';
|
|
4618
|
+
this.SkeletonEffect = "wave";
|
|
4619
|
+
this.UseBranches = true;
|
|
4620
|
+
this.UseBuildPath = false;
|
|
4310
4621
|
}
|
|
4311
|
-
|
|
4312
|
-
|
|
4622
|
+
// Properties
|
|
4623
|
+
get ArtifactLookups() {
|
|
4624
|
+
return this.DevOpsAction?.ArtifactLookups;
|
|
4313
4625
|
}
|
|
4314
|
-
get
|
|
4315
|
-
|
|
4316
|
-
|
|
4317
|
-
|
|
4626
|
+
get ArtifactLookup() {
|
|
4627
|
+
const artLookup = this.DevOpsAction?.ArtifactLookups
|
|
4628
|
+
? this.DevOpsAction?.ArtifactLookups[0]
|
|
4629
|
+
: null;
|
|
4630
|
+
return artLookup;
|
|
4318
4631
|
}
|
|
4319
|
-
get
|
|
4320
|
-
|
|
4321
|
-
|
|
4632
|
+
get Artifact() {
|
|
4633
|
+
return this.Environment?.Artifacts && this.ArtifactLookup
|
|
4634
|
+
? this.Environment?.Artifacts[this.ArtifactLookup] || {}
|
|
4635
|
+
: {};
|
|
4322
4636
|
}
|
|
4323
|
-
get
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4637
|
+
get BranchesFormControl() {
|
|
4638
|
+
return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'branches');
|
|
4639
|
+
}
|
|
4640
|
+
get BuildPathFormControl() {
|
|
4641
|
+
return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'buildPath');
|
|
4642
|
+
}
|
|
4643
|
+
get DevOpsActionLookups() {
|
|
4644
|
+
// console.log(this.DevOpsActions);
|
|
4645
|
+
return Object.keys(this.DevOpsActions || {});
|
|
4646
|
+
}
|
|
4647
|
+
get DevOpsAction() {
|
|
4648
|
+
return this.Environment.DevOpsActions && this.DevOpsActionLookup
|
|
4649
|
+
? this.Environment.DevOpsActions[this.DevOpsActionLookup] || {}
|
|
4650
|
+
: {};
|
|
4651
|
+
}
|
|
4652
|
+
get DevOpsActionLookup() {
|
|
4653
|
+
if (!!this.DevOpsActionLookupFormControl?.value) {
|
|
4654
|
+
return this.DevOpsActionLookupFormControl.value;
|
|
4329
4655
|
}
|
|
4330
|
-
|
|
4331
|
-
return
|
|
4656
|
+
if (!!this.EditingSourceControl?.DevOpsActionTriggerLookups) {
|
|
4657
|
+
return this.EditingSourceControl?.DevOpsActionTriggerLookups[0];
|
|
4332
4658
|
}
|
|
4333
4659
|
else {
|
|
4334
|
-
return
|
|
4660
|
+
return null;
|
|
4335
4661
|
}
|
|
4336
4662
|
}
|
|
4337
|
-
get
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
|
|
4342
|
-
|
|
4343
|
-
|
|
4344
|
-
|
|
4345
|
-
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
|
|
4663
|
+
get DevOpsActionLookupFormControl() {
|
|
4664
|
+
return this.DevOpsSourceControlFormGroup.get('devOpsActionLookup');
|
|
4665
|
+
}
|
|
4666
|
+
get DevOpsActions() {
|
|
4667
|
+
return this.Environment.DevOpsActions || {};
|
|
4668
|
+
}
|
|
4669
|
+
get EditingSourceControl() {
|
|
4670
|
+
let sc = this.Environment?.Sources
|
|
4671
|
+
? this.Environment?.Sources[this.EditingSourceControlLookup]
|
|
4672
|
+
: null;
|
|
4673
|
+
if (sc == null && this.EditingSourceControlLookup) {
|
|
4674
|
+
sc = {};
|
|
4349
4675
|
}
|
|
4676
|
+
return sc;
|
|
4677
|
+
}
|
|
4678
|
+
get MainBranchFormControl() {
|
|
4679
|
+
return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'mainBranch');
|
|
4680
|
+
}
|
|
4681
|
+
get OrganizationFormControl() {
|
|
4682
|
+
return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'organization');
|
|
4683
|
+
}
|
|
4684
|
+
get RepositoryFormControl() {
|
|
4685
|
+
return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'repository');
|
|
4350
4686
|
}
|
|
4351
4687
|
get State() {
|
|
4352
4688
|
return this.eacSvc.State;
|
|
4353
4689
|
}
|
|
4354
4690
|
// Life Cycle
|
|
4691
|
+
ngAfterViewInit() { }
|
|
4692
|
+
ngOnDestroy() {
|
|
4693
|
+
this.destroyFormControls();
|
|
4694
|
+
}
|
|
4355
4695
|
ngOnInit() {
|
|
4356
|
-
this.
|
|
4696
|
+
console.log("source control lookup", this.EditingSourceControlLookup);
|
|
4697
|
+
if (this.EditingSourceControlLookup === null) {
|
|
4698
|
+
this.CreateNewSourceControl();
|
|
4699
|
+
}
|
|
4700
|
+
console.log("source control", this.EditingSourceControl);
|
|
4701
|
+
if (this.EditingSourceControl != null) {
|
|
4702
|
+
this.DevOpsSourceControlFormGroup = this.formBuilder.group({});
|
|
4703
|
+
this.setupFormControls();
|
|
4704
|
+
}
|
|
4705
|
+
this.RefreshOrganizations();
|
|
4357
4706
|
}
|
|
4358
4707
|
// API Methods
|
|
4359
|
-
|
|
4360
|
-
|
|
4708
|
+
AddBranchOption(event) {
|
|
4709
|
+
this.addBranchOption(event.value);
|
|
4710
|
+
event.input.value = '';
|
|
4361
4711
|
}
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
if (action.Action.startsWith('http')) {
|
|
4365
|
-
window.open(action.Action, '_blank');
|
|
4366
|
-
}
|
|
4367
|
-
else {
|
|
4368
|
-
window.location.href = action.Action;
|
|
4369
|
-
}
|
|
4370
|
-
}
|
|
4371
|
-
else if (action.ActionType == 'Modal') {
|
|
4372
|
-
if (action.Action == 'AddSourceControl') {
|
|
4373
|
-
this.OpenSourceControlDialog(null);
|
|
4374
|
-
}
|
|
4375
|
-
else {
|
|
4376
|
-
alert('other modaled ' + action.Action);
|
|
4377
|
-
}
|
|
4378
|
-
}
|
|
4712
|
+
BranchOptionSelected(event) {
|
|
4713
|
+
this.addBranchOption(event.option.value);
|
|
4379
4714
|
}
|
|
4380
|
-
|
|
4381
|
-
|
|
4382
|
-
width: '550px',
|
|
4383
|
-
data: {
|
|
4384
|
-
environment: this.Environment,
|
|
4385
|
-
environmentLookup: this.ActiveEnvironmentLookup,
|
|
4386
|
-
scLookup: scLookup,
|
|
4387
|
-
},
|
|
4388
|
-
});
|
|
4389
|
-
dialogRef.afterClosed().subscribe((result) => {
|
|
4390
|
-
// console.log('The dialog was closed');
|
|
4391
|
-
// console.log("result:", result)
|
|
4392
|
-
});
|
|
4715
|
+
BranchesChanged(branches) {
|
|
4716
|
+
this.loadProjectHostingDetails();
|
|
4393
4717
|
}
|
|
4394
|
-
|
|
4395
|
-
|
|
4718
|
+
BuildPathChanged(event) {
|
|
4719
|
+
//do something??
|
|
4396
4720
|
}
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
if (this.FeedItem?.RefreshLink) {
|
|
4400
|
-
setTimeout(() => {
|
|
4401
|
-
this.eacSvc.CheckUserFeedItem(this.FeedItem).subscribe(async (response) => {
|
|
4402
|
-
if (response.Status.Code === 0) {
|
|
4403
|
-
this.FeedItem = response.Model;
|
|
4404
|
-
this.handleRefresh();
|
|
4405
|
-
}
|
|
4406
|
-
else {
|
|
4407
|
-
console.log(response);
|
|
4408
|
-
}
|
|
4409
|
-
}, (err) => {
|
|
4410
|
-
console.log(err);
|
|
4411
|
-
});
|
|
4412
|
-
}, 5000);
|
|
4413
|
-
}
|
|
4721
|
+
CreateNewSourceControl() {
|
|
4722
|
+
this.SetEditingSourceControl(Guid.CreateRaw());
|
|
4414
4723
|
}
|
|
4415
|
-
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: MainFeedCardComponent, decorators: [{
|
|
4419
|
-
type: Component,
|
|
4420
|
-
args: [{ selector: 'lcu-main-feed-card', template: "<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", styles: [":host :host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host :host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host :host ::ng-deep .main-slot-container{padding:10px}:host :host ::ng-deep .slot-header{align-items:center}:host :host ::ng-deep .slot-content{width:100%}:host :host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host :host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host :host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host :host ::ng-deep .action-icon{height:24px;width:24px;font-size:24px;cursor:pointer}:host .example-header-image{background-size:cover}:host .mat-icon{display:inline-flex;vertical-align:middle}:host .mat-icon.spin{animation:rotate 1s ease-in-out infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}:host .tab{margin:2em}:host .tab .video iframe{display:block;margin:auto}\n"] }]
|
|
4421
|
-
}], ctorParameters: function () { return [{ type: EaCService }, { type: i2$3.MatDialog }, { type: i3$2.DomSanitizer }]; }, propDecorators: { FeedItem: [{
|
|
4422
|
-
type: Input,
|
|
4423
|
-
args: ['feed-item']
|
|
4424
|
-
}] } });
|
|
4425
|
-
|
|
4426
|
-
class TwoColumnHeaderComponent {
|
|
4427
|
-
constructor() { }
|
|
4428
|
-
ngOnInit() {
|
|
4724
|
+
CreateRepository() {
|
|
4725
|
+
this.CreatingRepository = true;
|
|
4726
|
+
this.RepositoryFormControl.reset();
|
|
4429
4727
|
}
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
TwoColumnHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TwoColumnHeaderComponent, selector: "lcu-two-column-header", ngImport: i0, template: "<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", styles: [".col-container{background-color:#ebecf0}.col-left{min-width:210px}\n"], directives: [{ type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
4433
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TwoColumnHeaderComponent, decorators: [{
|
|
4434
|
-
type: Component,
|
|
4435
|
-
args: [{ selector: 'lcu-two-column-header', template: "<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", styles: [".col-container{background-color:#ebecf0}.col-left{min-width:210px}\n"] }]
|
|
4436
|
-
}], ctorParameters: function () { return []; } });
|
|
4437
|
-
|
|
4438
|
-
class CardCarouselComponent {
|
|
4439
|
-
constructor() {
|
|
4440
|
-
this.carouselIndex = 0;
|
|
4728
|
+
CancelCreateRepository() {
|
|
4729
|
+
this.CreatingRepository = false;
|
|
4441
4730
|
}
|
|
4442
|
-
|
|
4731
|
+
DevOpsActionLookupChanged(event) {
|
|
4732
|
+
this.configureDevOpsAction();
|
|
4443
4733
|
}
|
|
4444
|
-
|
|
4445
|
-
this.
|
|
4734
|
+
MainBranchChanged(event) {
|
|
4735
|
+
this.emitBranchesChanged();
|
|
4446
4736
|
}
|
|
4447
|
-
|
|
4448
|
-
this.
|
|
4449
|
-
|
|
4450
|
-
|
|
4737
|
+
OrganizationChanged(event) {
|
|
4738
|
+
const org = this.OrganizationFormControl;
|
|
4739
|
+
this.RepositoryFormControl.reset();
|
|
4740
|
+
if (this.UseBranches) {
|
|
4741
|
+
this.BranchesFormControl.reset();
|
|
4742
|
+
this.SelectedBranches = [];
|
|
4451
4743
|
}
|
|
4452
|
-
|
|
4453
|
-
|
|
4744
|
+
this.listRepositories();
|
|
4745
|
+
}
|
|
4746
|
+
RefreshOrganizations() {
|
|
4747
|
+
// this.Loading = true;
|
|
4748
|
+
this.listOrganizations();
|
|
4749
|
+
this.OrganizationFormControl?.reset();
|
|
4750
|
+
this.RepositoryFormControl?.reset();
|
|
4751
|
+
if (this.UseBranches) {
|
|
4752
|
+
this.BranchesFormControl?.reset();
|
|
4454
4753
|
}
|
|
4455
|
-
this.assignCarouselClass();
|
|
4456
4754
|
}
|
|
4457
|
-
|
|
4458
|
-
|
|
4755
|
+
RemoveBranchOption(option) {
|
|
4756
|
+
const index = this.SelectedBranches.indexOf(option);
|
|
4757
|
+
if (index >= 0) {
|
|
4758
|
+
this.SelectedBranches.splice(index, 1);
|
|
4759
|
+
}
|
|
4760
|
+
this.emitBranchesChanged();
|
|
4459
4761
|
}
|
|
4460
|
-
|
|
4461
|
-
this.
|
|
4462
|
-
if (this.
|
|
4463
|
-
this.
|
|
4762
|
+
RepositoryChanged(event) {
|
|
4763
|
+
const repo = this.RepositoryFormControl;
|
|
4764
|
+
if (this.UseBranches) {
|
|
4765
|
+
this.BranchesFormControl.reset();
|
|
4766
|
+
this.SelectedBranches = [];
|
|
4767
|
+
this.listBranches();
|
|
4464
4768
|
}
|
|
4465
|
-
|
|
4466
|
-
this.
|
|
4769
|
+
if (!this.UseBranches) {
|
|
4770
|
+
this.listBuildPaths();
|
|
4467
4771
|
}
|
|
4468
|
-
this.assignCarouselClass();
|
|
4469
4772
|
}
|
|
4470
|
-
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4773
|
+
SaveRepository() {
|
|
4774
|
+
this.Loading = true;
|
|
4775
|
+
const org = this.OrganizationFormControl.value;
|
|
4776
|
+
const repoName = this.RepositoryFormControl.value;
|
|
4777
|
+
this.appsFlowSvc
|
|
4778
|
+
.CreateRepository(org, repoName)
|
|
4779
|
+
.subscribe((response) => {
|
|
4780
|
+
if (response.Status.Code === 0) {
|
|
4781
|
+
this.listRepositories(repoName);
|
|
4782
|
+
this.CreatingRepository = false;
|
|
4475
4783
|
}
|
|
4476
4784
|
else {
|
|
4477
|
-
|
|
4785
|
+
// TODO: Need to surface an error to the user...
|
|
4786
|
+
this.Loading = false;
|
|
4478
4787
|
}
|
|
4479
|
-
}
|
|
4788
|
+
});
|
|
4480
4789
|
}
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4790
|
+
SetEditingSourceControl(scLookup) {
|
|
4791
|
+
this.EditingSourceControlLookup = scLookup;
|
|
4792
|
+
}
|
|
4793
|
+
SubmitSourceControl() {
|
|
4794
|
+
console.log('source control submitted: ', this.DevOpsSourceControlFormGroup.value);
|
|
4795
|
+
this.SaveSourceControl();
|
|
4796
|
+
}
|
|
4797
|
+
SaveSourceControl() {
|
|
4798
|
+
const saveEnvReq = {
|
|
4799
|
+
Environment: {
|
|
4800
|
+
...this.Environment,
|
|
4801
|
+
Sources: this.Environment.Sources || {},
|
|
4802
|
+
},
|
|
4803
|
+
EnvironmentLookup: this.EnvironmentLookup,
|
|
4804
|
+
EnterpriseDataTokens: {},
|
|
4805
|
+
};
|
|
4806
|
+
let source = {
|
|
4807
|
+
...this.EditingSourceControl,
|
|
4808
|
+
Branches: this.SelectedBranches,
|
|
4809
|
+
MainBranch: this.MainBranchFormControl.value,
|
|
4810
|
+
};
|
|
4811
|
+
source = {
|
|
4812
|
+
...source,
|
|
4813
|
+
Type: 'GitHub',
|
|
4814
|
+
Name: `@${this.OrganizationFormControl.value}/${this.RepositoryFormControl.value}`,
|
|
4815
|
+
DevOpsActionTriggerLookups: [this.DevOpsActionLookup],
|
|
4816
|
+
Organization: this.OrganizationFormControl.value,
|
|
4817
|
+
Repository: this.RepositoryFormControl.value,
|
|
4818
|
+
};
|
|
4819
|
+
const scLookup = `github://${source.Organization}/${source.Repository}`;
|
|
4820
|
+
saveEnvReq.Environment.Sources[scLookup] = source;
|
|
4821
|
+
console.log('save SC: ', saveEnvReq);
|
|
4822
|
+
let resp = this.eacSvc.SaveEnvironmentAsCode(saveEnvReq);
|
|
4823
|
+
resp.then((res) => {
|
|
4824
|
+
this.SaveStatusEvent.emit(res);
|
|
4825
|
+
});
|
|
4826
|
+
}
|
|
4827
|
+
// Helpers
|
|
4828
|
+
addBranchOption(value) {
|
|
4829
|
+
value = (value || '').trim();
|
|
4830
|
+
if (value && this.SelectedBranches.indexOf(value) < 0) {
|
|
4831
|
+
this.SelectedBranches.push(value);
|
|
4489
4832
|
}
|
|
4833
|
+
this.BranchesInput.nativeElement.blur();
|
|
4834
|
+
this.emitBranchesChanged();
|
|
4490
4835
|
}
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
type: Component,
|
|
4496
|
-
args: [{ selector: 'lcu-card-carousel', template: "<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", styles: [".carousel-container{text-align:center;height:75px;padding-top:20px}.carousel-item.hidden{display:none}.carousel-item.active{visibility:visible}.chevron-button{position:absolute}#right-chevron{right:5px}#left-chevron{left:5px}\n"] }]
|
|
4497
|
-
}], ctorParameters: function () { return []; }, propDecorators: { Stats: [{
|
|
4498
|
-
type: Input,
|
|
4499
|
-
args: ['stats']
|
|
4500
|
-
}] } });
|
|
4501
|
-
|
|
4502
|
-
class SecurityToggleComponent {
|
|
4503
|
-
constructor(eacSvc, formBldr) {
|
|
4504
|
-
this.eacSvc = eacSvc;
|
|
4505
|
-
this.formBldr = formBldr;
|
|
4506
|
-
this.SaveFormEvent = new EventEmitter;
|
|
4507
|
-
this.SkeletonEffect = 'wave';
|
|
4836
|
+
configureDevOpsAction() {
|
|
4837
|
+
setTimeout(() => {
|
|
4838
|
+
this.DevOpsActionLookupFormControl.setValue(this.DevOpsActionLookup);
|
|
4839
|
+
}, 0);
|
|
4508
4840
|
}
|
|
4509
|
-
|
|
4510
|
-
|
|
4841
|
+
destroyFormControls() {
|
|
4842
|
+
this.DevOpsSourceControlFormGroup.removeControl([this.SourceControlRoot, 'mainBranch'].join(''));
|
|
4843
|
+
this.DevOpsSourceControlFormGroup?.removeControl([this.SourceControlRoot, 'branches'].join(''));
|
|
4844
|
+
this.DevOpsSourceControlFormGroup?.removeControl([this.SourceControlRoot, 'buildPath'].join(''));
|
|
4845
|
+
this.SelectedBranches = [];
|
|
4846
|
+
this.DevOpsSourceControlFormGroup?.removeControl([this.SourceControlRoot, 'organization'].join(''));
|
|
4847
|
+
this.DevOpsSourceControlFormGroup?.removeControl([this.SourceControlRoot, 'repository'].join(''));
|
|
4511
4848
|
}
|
|
4512
|
-
|
|
4513
|
-
|
|
4849
|
+
emitBranchesChanged() {
|
|
4850
|
+
if (this.SelectedBranches?.length > 0 &&
|
|
4851
|
+
(!this.MainBranchFormControl.value ||
|
|
4852
|
+
this.SelectedBranches.indexOf(this.MainBranchFormControl.value) < 0)) {
|
|
4853
|
+
this.MainBranchFormControl.setValue(this.SelectedBranches.find((branch) => branch === 'main' || branch === 'master') || this.SelectedBranches[0]);
|
|
4854
|
+
}
|
|
4855
|
+
else if (this.SelectedBranches?.length <= 0) {
|
|
4856
|
+
this.MainBranchFormControl.reset();
|
|
4857
|
+
}
|
|
4858
|
+
this.BranchesFormControl.setValue(this.SelectedBranches.join(','));
|
|
4859
|
+
this.BranchesChanged(this.SelectedBranches || []);
|
|
4514
4860
|
}
|
|
4515
|
-
|
|
4516
|
-
|
|
4861
|
+
listBranches() {
|
|
4862
|
+
if (this.UseBranches) {
|
|
4863
|
+
this.Loading = true;
|
|
4864
|
+
this.appsFlowSvc
|
|
4865
|
+
.ListBranches(this.OrganizationFormControl.value, this.RepositoryFormControl.value)
|
|
4866
|
+
.subscribe((response) => {
|
|
4867
|
+
this.BranchOptions = response.Model;
|
|
4868
|
+
this.Loading = false;
|
|
4869
|
+
if (this.EditingSourceControl?.Branches?.length > 0) {
|
|
4870
|
+
this.SelectedBranches = this.EditingSourceControl.Branches;
|
|
4871
|
+
}
|
|
4872
|
+
else if (this.BranchOptions?.length === 1) {
|
|
4873
|
+
this.BranchesFormControl.setValue(this.BranchOptions[0].Name);
|
|
4874
|
+
this.SelectedBranches = [this.BranchOptions[0].Name];
|
|
4875
|
+
}
|
|
4876
|
+
this.emitBranchesChanged();
|
|
4877
|
+
this.listBuildPaths();
|
|
4878
|
+
});
|
|
4879
|
+
}
|
|
4517
4880
|
}
|
|
4518
|
-
|
|
4519
|
-
this.
|
|
4881
|
+
listBuildPaths() {
|
|
4882
|
+
if (this.UseBuildPath) {
|
|
4883
|
+
this.Loading = true;
|
|
4884
|
+
this.appsFlowSvc
|
|
4885
|
+
.ListBuildPaths(this.OrganizationFormControl.value, this.RepositoryFormControl.value)
|
|
4886
|
+
.subscribe((response) => {
|
|
4887
|
+
this.BuildPathOptions = response.Model;
|
|
4888
|
+
this.Loading = false;
|
|
4889
|
+
if (this.BuildPathOptions?.length === 1) {
|
|
4890
|
+
this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);
|
|
4891
|
+
}
|
|
4892
|
+
});
|
|
4893
|
+
}
|
|
4520
4894
|
}
|
|
4521
|
-
|
|
4522
|
-
|
|
4523
|
-
|
|
4524
|
-
|
|
4895
|
+
listOrganizations() {
|
|
4896
|
+
this.Loading = true;
|
|
4897
|
+
this.appsFlowSvc
|
|
4898
|
+
.ListOrganizations()
|
|
4899
|
+
.subscribe((response) => {
|
|
4900
|
+
this.OrganizationOptions = response.Model;
|
|
4901
|
+
console.log("Organization Options: ", this.OrganizationOptions);
|
|
4902
|
+
this.Loading = false;
|
|
4903
|
+
if (this.EditingSourceControl?.Organization) {
|
|
4904
|
+
setTimeout(() => {
|
|
4905
|
+
this.OrganizationFormControl.setValue(this.EditingSourceControl.Organization);
|
|
4906
|
+
this.listRepositories(this.EditingSourceControl?.Repository);
|
|
4907
|
+
}, 0);
|
|
4908
|
+
}
|
|
4909
|
+
});
|
|
4525
4910
|
}
|
|
4526
|
-
|
|
4527
|
-
this.
|
|
4528
|
-
this.
|
|
4529
|
-
|
|
4911
|
+
listRepositories(activeRepo = null) {
|
|
4912
|
+
this.Loading = true;
|
|
4913
|
+
this.appsFlowSvc
|
|
4914
|
+
.ListRepositories(this.OrganizationFormControl.value)
|
|
4915
|
+
.subscribe((response) => {
|
|
4916
|
+
this.RepositoryOptions = response.Model;
|
|
4917
|
+
this.Loading = false;
|
|
4918
|
+
if (activeRepo) {
|
|
4919
|
+
setTimeout(() => {
|
|
4920
|
+
this.RepositoryFormControl.setValue(activeRepo);
|
|
4921
|
+
this.listBranches();
|
|
4922
|
+
if (!this.UseBranches) {
|
|
4923
|
+
this.listBuildPaths();
|
|
4924
|
+
}
|
|
4925
|
+
}, 0);
|
|
4926
|
+
}
|
|
4927
|
+
else if (this.RepositoryOptions?.length <= 0) {
|
|
4928
|
+
this.CreatingRepository = true;
|
|
4929
|
+
}
|
|
4930
|
+
});
|
|
4530
4931
|
}
|
|
4531
|
-
|
|
4532
|
-
|
|
4533
|
-
|
|
4932
|
+
loadProjectHostingDetails() {
|
|
4933
|
+
if (this.SelectedBranches?.length > 0) {
|
|
4934
|
+
this.HostingDetails.Loading = true;
|
|
4935
|
+
this.appsFlowSvc
|
|
4936
|
+
.LoadProjectHostingDetails()
|
|
4937
|
+
.subscribe((response) => {
|
|
4938
|
+
this.HostingDetails = response.Model;
|
|
4939
|
+
this.HostingDetails.Loading = false;
|
|
4940
|
+
this.configureDevOpsAction();
|
|
4941
|
+
}, (err) => {
|
|
4942
|
+
this.HostingDetails.Loading = false;
|
|
4943
|
+
});
|
|
4944
|
+
}
|
|
4534
4945
|
}
|
|
4535
|
-
|
|
4536
|
-
|
|
4537
|
-
|
|
4538
|
-
|
|
4946
|
+
setupFormControls() {
|
|
4947
|
+
this.destroyFormControls();
|
|
4948
|
+
console.log("Source Control: ", this.EditingSourceControl);
|
|
4949
|
+
this.DevOpsSourceControlFormGroup.addControl('devOpsActionLookup', new FormControl(this.DevOpsActionLookup || '', []));
|
|
4950
|
+
this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'organization'].join(''), new FormControl(this.EditingSourceControl.Organization ?? '', Validators.required));
|
|
4951
|
+
this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'repository'].join(''), new FormControl(this.EditingSourceControl.Repository ?? '', Validators.required));
|
|
4952
|
+
if (this.UseBranches) {
|
|
4953
|
+
this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'branches'].join(''), new FormControl(this.EditingSourceControl?.Branches ?? '', Validators.required));
|
|
4954
|
+
this.SelectedBranches = this.EditingSourceControl?.Branches;
|
|
4955
|
+
this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'mainBranch'].join(''), new FormControl(this.EditingSourceControl.MainBranch ?? '', Validators.required));
|
|
4956
|
+
}
|
|
4957
|
+
if (this.UseBuildPath) {
|
|
4958
|
+
this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'buildPath'].join(''), new FormControl(this.BuildPath ?? '', Validators.required));
|
|
4959
|
+
}
|
|
4960
|
+
}
|
|
4961
|
+
}
|
|
4962
|
+
DevopsSourceControlFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: DevopsSourceControlFormComponent, deps: [{ token: ApplicationsFlowService }, { token: EaCService }, { token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
4963
|
+
DevopsSourceControlFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: DevopsSourceControlFormComponent, selector: "lcu-devops-source-control-form", inputs: { EditingSourceControlLookup: ["editing-source-control-lookup", "EditingSourceControlLookup"], Environment: ["environment", "Environment"], EnvironmentLookup: ["environment-lookup", "EnvironmentLookup"] }, outputs: { SaveStatusEvent: "save-status-event" }, viewQueries: [{ propertyName: "BranchesInput", first: true, predicate: ["branches"], descendants: true }], ngImport: i0, template: "<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>", styles: [".form-card,.sc-card{width:100%}.margin-bottom{margin-bottom:15px}.primary-link{color:#4a918e;text-decoration:none}.s-block{margin:10px 0;width:100%;height:40px}\n"], components: [{ type: i3.LoaderComponent, selector: "lcu-loader", inputs: ["diameter", "hide-inner", "loading"] }, { type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i9$2.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.MatPrefix, selector: "[matPrefix]" }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4$1.MatSuffix, selector: "[matSuffix]" }, { type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9$1.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i4$1.MatLabel, selector: "mat-label" }, { type: i9$2.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i9$2.MatChipRemove, selector: "[matChipRemove]" }, { type: i8$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i9$2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }] });
|
|
4964
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: DevopsSourceControlFormComponent, decorators: [{
|
|
4539
4965
|
type: Component,
|
|
4540
|
-
args: [{ selector: 'lcu-security-toggle', template: "<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", styles: ["::ng-deep .mat-tooltip{color:#000!important}.flow-card{margin:32px 20px}\n"] }]
|
|
4541
|
-
}], ctorParameters: function () { return [{ type: EaCService }, { type: i1$2.FormBuilder }]; }, propDecorators: {
|
|
4966
|
+
args: [{ selector: 'lcu-devops-source-control-form', template: "<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>", styles: [".form-card,.sc-card{width:100%}.margin-bottom{margin-bottom:15px}.primary-link{color:#4a918e;text-decoration:none}.s-block{margin:10px 0;width:100%;height:40px}\n"] }]
|
|
4967
|
+
}], ctorParameters: function () { return [{ type: ApplicationsFlowService }, { type: EaCService }, { type: i1$2.FormBuilder }]; }, propDecorators: { EditingSourceControlLookup: [{
|
|
4542
4968
|
type: Input,
|
|
4543
|
-
args: ['editing-
|
|
4544
|
-
}],
|
|
4969
|
+
args: ['editing-source-control-lookup']
|
|
4970
|
+
}], Environment: [{
|
|
4971
|
+
type: Input,
|
|
4972
|
+
args: ['environment']
|
|
4973
|
+
}], EnvironmentLookup: [{
|
|
4974
|
+
type: Input,
|
|
4975
|
+
args: ['environment-lookup']
|
|
4976
|
+
}], SaveStatusEvent: [{
|
|
4545
4977
|
type: Output,
|
|
4546
|
-
args: ['save-
|
|
4978
|
+
args: ['save-status-event']
|
|
4979
|
+
}], BranchesInput: [{
|
|
4980
|
+
type: ViewChild,
|
|
4981
|
+
args: ['branches']
|
|
4547
4982
|
}] } });
|
|
4548
4983
|
|
|
4549
|
-
class
|
|
4550
|
-
constructor(
|
|
4551
|
-
this.
|
|
4552
|
-
this.formBldr = formBldr;
|
|
4984
|
+
class SourceControlDialogComponent {
|
|
4985
|
+
constructor(dialogRef, eacSvc, data, snackBar) {
|
|
4986
|
+
this.dialogRef = dialogRef;
|
|
4553
4987
|
this.eacSvc = eacSvc;
|
|
4554
|
-
this.
|
|
4555
|
-
this.
|
|
4556
|
-
this.SaveFormEvent = new EventEmitter();
|
|
4557
|
-
}
|
|
4558
|
-
get APIRootFormControl() {
|
|
4559
|
-
return this.ProcessorDetailsFormGroup?.controls.apiRoot;
|
|
4560
|
-
}
|
|
4561
|
-
get Environment() {
|
|
4562
|
-
return this.State?.EaC?.Environments[this.State?.EaC?.Enterprise?.PrimaryEnvironment];
|
|
4563
|
-
}
|
|
4564
|
-
get BuildFormControl() {
|
|
4565
|
-
return this.ProcessorDetailsFormGroup?.controls.build;
|
|
4566
|
-
}
|
|
4567
|
-
get BuildPathFormControl() {
|
|
4568
|
-
return this.ProcessorDetailsFormGroup?.controls.buildPath;
|
|
4569
|
-
}
|
|
4570
|
-
get ClientIDFormControl() {
|
|
4571
|
-
return this.ProcessorDetailsFormGroup?.controls.clientId;
|
|
4572
|
-
}
|
|
4573
|
-
get ClientSecretFormControl() {
|
|
4574
|
-
return this.ProcessorDetailsFormGroup?.controls.clientSecret;
|
|
4575
|
-
}
|
|
4576
|
-
get DefaultFileFormControl() {
|
|
4577
|
-
return this.ProcessorDetailsFormGroup?.controls.defaultFile;
|
|
4578
|
-
}
|
|
4579
|
-
get DefaultSourceControl() {
|
|
4580
|
-
return {
|
|
4581
|
-
Organization: this.EditingApplication?.LowCodeUnit?.Organization,
|
|
4582
|
-
Repository: this.EditingApplication?.LowCodeUnit?.Repository,
|
|
4583
|
-
};
|
|
4584
|
-
}
|
|
4585
|
-
get InboundPathFormControl() {
|
|
4586
|
-
return this.ProcessorDetailsFormGroup?.controls.inboundPath;
|
|
4587
|
-
}
|
|
4588
|
-
get IncludeRequestFormControl() {
|
|
4589
|
-
return this.ProcessorDetailsFormGroup?.controls.includeRequest;
|
|
4590
|
-
}
|
|
4591
|
-
get MethodsFormControl() {
|
|
4592
|
-
return this.ProcessorDetailsFormGroup?.controls.methods;
|
|
4593
|
-
}
|
|
4594
|
-
get PackageFormControl() {
|
|
4595
|
-
return this.ProcessorDetailsFormGroup?.controls.package;
|
|
4596
|
-
}
|
|
4597
|
-
get PermanentFormControl() {
|
|
4598
|
-
return this.ProcessorDetailsFormGroup?.controls.permanent;
|
|
4599
|
-
}
|
|
4600
|
-
get PreserveMethodFormControl() {
|
|
4601
|
-
return this.ProcessorDetailsFormGroup?.controls.preserveMethod;
|
|
4602
|
-
}
|
|
4603
|
-
get RedirectFormControl() {
|
|
4604
|
-
return this.ProcessorDetailsFormGroup?.controls.redirect;
|
|
4988
|
+
this.data = data;
|
|
4989
|
+
this.snackBar = snackBar;
|
|
4605
4990
|
}
|
|
4606
|
-
get
|
|
4607
|
-
return this.
|
|
4991
|
+
get DevOpsSourceControlFormGroup() {
|
|
4992
|
+
return this.DevopsSourceControl?.DevOpsSourceControlFormGroup;
|
|
4608
4993
|
}
|
|
4609
|
-
get
|
|
4610
|
-
return this.
|
|
4994
|
+
get HasConnection() {
|
|
4995
|
+
return this.State.GitHub.HasConnection;
|
|
4611
4996
|
}
|
|
4612
4997
|
get State() {
|
|
4613
4998
|
return this.eacSvc.State;
|
|
4614
4999
|
}
|
|
4615
|
-
|
|
4616
|
-
return this.Environment?.Sources || {};
|
|
4617
|
-
}
|
|
4618
|
-
get SourceControlFormControl() {
|
|
4619
|
-
return this.ProcessorDetailsFormGroup?.controls.sourceControl;
|
|
4620
|
-
}
|
|
4621
|
-
get SPARootFormControl() {
|
|
4622
|
-
return this.ProcessorDetailsFormGroup?.controls.spaRoot;
|
|
5000
|
+
ngOnInit() {
|
|
4623
5001
|
}
|
|
4624
|
-
|
|
4625
|
-
|
|
5002
|
+
CloseDialog() {
|
|
5003
|
+
this.dialogRef.close();
|
|
4626
5004
|
}
|
|
4627
|
-
|
|
4628
|
-
|
|
4629
|
-
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4633
|
-
|
|
5005
|
+
HandleSaveStatusEvent(event) {
|
|
5006
|
+
console.log("event to save: ", event);
|
|
5007
|
+
if (event.Code === 0) {
|
|
5008
|
+
this.snackBar.open("Source Control Succesfully Saved", "Dismiss", {
|
|
5009
|
+
duration: 5000
|
|
5010
|
+
});
|
|
5011
|
+
this.CloseDialog();
|
|
5012
|
+
}
|
|
5013
|
+
else {
|
|
5014
|
+
this.ErrorMessage = event.Message;
|
|
4634
5015
|
}
|
|
4635
|
-
// console.log("VFC=", vfc)
|
|
4636
|
-
return vfc;
|
|
4637
5016
|
}
|
|
4638
|
-
|
|
4639
|
-
|
|
5017
|
+
SaveSourceControl() {
|
|
5018
|
+
this.DevopsSourceControl.SaveSourceControl();
|
|
4640
5019
|
}
|
|
4641
|
-
|
|
4642
|
-
|
|
5020
|
+
}
|
|
5021
|
+
SourceControlDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SourceControlDialogComponent, deps: [{ token: i2$3.MatDialogRef }, { token: EaCService }, { token: MAT_DIALOG_DATA }, { token: i3$1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
|
|
5022
|
+
SourceControlDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: SourceControlDialogComponent, selector: "lcu-source-control-dialog", viewQueries: [{ propertyName: "DevopsSourceControl", first: true, predicate: DevopsSourceControlFormComponent, descendants: true }], ngImport: i0, template: "\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", styles: [".dialog-header{width:100%}.action-button{margin:0 10px}\n"], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: GitAuthComponent, selector: "lcu-git-auth" }, { type: DevopsSourceControlFormComponent, selector: "lcu-devops-source-control-form", inputs: ["editing-source-control-lookup", "environment", "environment-lookup"], outputs: ["save-status-event"] }], directives: [{ type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i4$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
5023
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SourceControlDialogComponent, decorators: [{
|
|
5024
|
+
type: Component,
|
|
5025
|
+
args: [{ selector: 'lcu-source-control-dialog', template: "\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", styles: [".dialog-header{width:100%}.action-button{margin:0 10px}\n"] }]
|
|
5026
|
+
}], ctorParameters: function () { return [{ type: i2$3.MatDialogRef }, { type: EaCService }, { type: undefined, decorators: [{
|
|
5027
|
+
type: Inject,
|
|
5028
|
+
args: [MAT_DIALOG_DATA]
|
|
5029
|
+
}] }, { type: i3$1.MatSnackBar }]; }, propDecorators: { DevopsSourceControl: [{
|
|
5030
|
+
type: ViewChild,
|
|
5031
|
+
args: [DevopsSourceControlFormComponent]
|
|
5032
|
+
}] } });
|
|
5033
|
+
|
|
5034
|
+
class MainFeedCardComponent {
|
|
5035
|
+
constructor(eacSvc, dialog, sanitizer) {
|
|
5036
|
+
this.eacSvc = eacSvc;
|
|
5037
|
+
this.dialog = dialog;
|
|
5038
|
+
this.sanitizer = sanitizer;
|
|
4643
5039
|
}
|
|
4644
|
-
|
|
4645
|
-
|
|
4646
|
-
this.CreateNewApplication();
|
|
4647
|
-
}
|
|
4648
|
-
else {
|
|
4649
|
-
this.setupProcessorDetailsForm();
|
|
4650
|
-
}
|
|
5040
|
+
get ActiveEnvironment() {
|
|
5041
|
+
return this.State?.EaC?.Environments[this.ActiveEnvironmentLookup];
|
|
4651
5042
|
}
|
|
4652
|
-
|
|
4653
|
-
|
|
5043
|
+
get ActiveEnvironmentLookup() {
|
|
5044
|
+
// TODO: Eventually support multiple environments
|
|
5045
|
+
const envLookups = Object.keys(this.State?.EaC?.Environments || {});
|
|
5046
|
+
return envLookups[0];
|
|
4654
5047
|
}
|
|
4655
|
-
|
|
4656
|
-
|
|
4657
|
-
|
|
4658
|
-
|
|
4659
|
-
|
|
4660
|
-
|
|
4661
|
-
|
|
4662
|
-
this.redirectTooltip = '302 – Not Permanent and Not Preserve';
|
|
4663
|
-
}
|
|
4664
|
-
else if (permanentValue === false && preserveValue === true) {
|
|
4665
|
-
this.redirectTooltip = '307 – Not Permanent and Preserve';
|
|
5048
|
+
get Environment() {
|
|
5049
|
+
// console.log("Ent Environment var: ", this.State?.EaC?.Environments[this.State?.EaC?.Enterprise?.PrimaryEnvironment]);
|
|
5050
|
+
return this.State?.EaC?.Environments[this.State?.EaC?.Enterprise?.PrimaryEnvironment];
|
|
5051
|
+
}
|
|
5052
|
+
get Icon() {
|
|
5053
|
+
if (this.FeedItem.Status.Code === 0) {
|
|
5054
|
+
return 'check_circle';
|
|
4666
5055
|
}
|
|
4667
|
-
else if (
|
|
4668
|
-
|
|
5056
|
+
else if (this.FeedItem.Status.Code === 1) {
|
|
5057
|
+
return 'cancel';
|
|
4669
5058
|
}
|
|
4670
|
-
|
|
4671
|
-
|
|
4672
|
-
const app = this.EditingApplication;
|
|
4673
|
-
app.LookupConfig.AllowedMethods = this.MethodsFormControl?.value
|
|
4674
|
-
?.split(' ')
|
|
4675
|
-
.filter((v) => !!v);
|
|
4676
|
-
app.Processor.Type = this.ProcessorType;
|
|
4677
|
-
switch (app.Processor.Type) {
|
|
4678
|
-
case 'DFS':
|
|
4679
|
-
app.Processor.DefaultFile =
|
|
4680
|
-
this.DefaultFileFormControl.value || 'index.html';
|
|
4681
|
-
app.LowCodeUnit = {
|
|
4682
|
-
Type: this.LCUType,
|
|
4683
|
-
};
|
|
4684
|
-
switch (app.LowCodeUnit.Type) {
|
|
4685
|
-
case 'GitHub':
|
|
4686
|
-
app.LowCodeUnit.Organization =
|
|
4687
|
-
this.SourceControls[this.SourceControlFormControl.value]?.Organization;
|
|
4688
|
-
app.LowCodeUnit.Repository =
|
|
4689
|
-
this.SourceControls[this.SourceControlFormControl.value]?.Repository;
|
|
4690
|
-
app.LowCodeUnit.Build = this.BuildFormControl.value;
|
|
4691
|
-
app.LowCodeUnit.Path = this.BuildPathFormControl.value;
|
|
4692
|
-
app.LowCodeUnit.SourceControlLookup =
|
|
4693
|
-
this.SourceControlFormControl.value;
|
|
4694
|
-
break;
|
|
4695
|
-
case 'NPM':
|
|
4696
|
-
app.LowCodeUnit.Package = this.PackageFormControl.value;
|
|
4697
|
-
app.LowCodeUnit.Version = this.VersionFormControl.value;
|
|
4698
|
-
break;
|
|
4699
|
-
case 'WordPress':
|
|
4700
|
-
app.LowCodeUnit.APIRoot = this.APIRootFormControl.value;
|
|
4701
|
-
break;
|
|
4702
|
-
case 'Zip':
|
|
4703
|
-
app.LowCodeUnit.ZipFile = this.ZipFileFormControl.value;
|
|
4704
|
-
break;
|
|
4705
|
-
}
|
|
4706
|
-
break;
|
|
4707
|
-
case 'OAuth':
|
|
4708
|
-
app.Processor.Scopes = this.ScopesFormControl.value.split(' ');
|
|
4709
|
-
app.Processor.TokenLookup = this.TokenLookupFormControl.value;
|
|
4710
|
-
app.LowCodeUnit = {
|
|
4711
|
-
Type: this.LCUType,
|
|
4712
|
-
};
|
|
4713
|
-
switch (app.LowCodeUnit.Type) {
|
|
4714
|
-
case 'GitHubOAuth':
|
|
4715
|
-
app.LowCodeUnit.ClientID = this.ClientIDFormControl.value;
|
|
4716
|
-
app.LowCodeUnit.ClientSecret = this.ClientSecretFormControl.value;
|
|
4717
|
-
break;
|
|
4718
|
-
}
|
|
4719
|
-
break;
|
|
4720
|
-
case 'Proxy':
|
|
4721
|
-
app.Processor.InboundPath = this.InboundPathFormControl.value;
|
|
4722
|
-
app.LowCodeUnit = {
|
|
4723
|
-
Type: this.LCUType,
|
|
4724
|
-
};
|
|
4725
|
-
switch (app.LowCodeUnit.Type) {
|
|
4726
|
-
case 'API':
|
|
4727
|
-
app.LowCodeUnit.APIRoot = this.APIRootFormControl.value;
|
|
4728
|
-
app.LowCodeUnit.Security = this.SecurityFormControl.value;
|
|
4729
|
-
break;
|
|
4730
|
-
case 'SPA':
|
|
4731
|
-
app.LowCodeUnit.SPARoot = this.SPARootFormControl.value;
|
|
4732
|
-
break;
|
|
4733
|
-
}
|
|
4734
|
-
break;
|
|
4735
|
-
case 'Redirect':
|
|
4736
|
-
app.Processor.IncludeRequest = !!this.IncludeRequestFormControl.value;
|
|
4737
|
-
app.Processor.Permanent = !!this.PermanentFormControl.value;
|
|
4738
|
-
app.Processor.PreserveMethod = !!this.PreserveMethodFormControl.value;
|
|
4739
|
-
app.Processor.Redirect = this.RedirectFormControl.value;
|
|
4740
|
-
break;
|
|
5059
|
+
else if (this.FeedItem.Status.Code === 2) {
|
|
5060
|
+
return 'sync';
|
|
4741
5061
|
}
|
|
4742
|
-
|
|
4743
|
-
|
|
5062
|
+
else {
|
|
5063
|
+
return 'help_outline';
|
|
4744
5064
|
}
|
|
4745
|
-
const saveAppReq = {
|
|
4746
|
-
ProjectLookup: this.ProjectLookup,
|
|
4747
|
-
Application: app,
|
|
4748
|
-
ApplicationLookup: this.EditingApplicationLookup || Guid.CreateRaw(),
|
|
4749
|
-
};
|
|
4750
|
-
this.eacSvc.SaveApplicationAsCode(saveAppReq).then((res) => {
|
|
4751
|
-
this.SaveFormEvent.emit(res);
|
|
4752
|
-
});
|
|
4753
|
-
}
|
|
4754
|
-
SetEditingApplication(appLookup) {
|
|
4755
|
-
this.EditingApplication = new EaCApplicationAsCode();
|
|
4756
|
-
this.EditingApplicationLookup = appLookup;
|
|
4757
|
-
this.setupProcessorDetailsForm();
|
|
4758
5065
|
}
|
|
4759
|
-
|
|
4760
|
-
this.
|
|
5066
|
+
get IconColor() {
|
|
5067
|
+
if (this.FeedItem.Status.Code === 0) {
|
|
5068
|
+
return 'green';
|
|
5069
|
+
}
|
|
5070
|
+
else if (this.FeedItem.Status.Code === 1) {
|
|
5071
|
+
return 'red';
|
|
5072
|
+
}
|
|
5073
|
+
else if (this.FeedItem.Status.Code === 2) {
|
|
5074
|
+
return 'blue';
|
|
5075
|
+
}
|
|
5076
|
+
else {
|
|
5077
|
+
return 'gray';
|
|
5078
|
+
}
|
|
4761
5079
|
}
|
|
4762
|
-
|
|
4763
|
-
this.
|
|
4764
|
-
this.setupProcessorTypeSubForm();
|
|
5080
|
+
get State() {
|
|
5081
|
+
return this.eacSvc.State;
|
|
4765
5082
|
}
|
|
4766
|
-
|
|
4767
|
-
|
|
4768
|
-
this.
|
|
5083
|
+
// Life Cycle
|
|
5084
|
+
ngOnInit() {
|
|
5085
|
+
this.handleRefresh();
|
|
4769
5086
|
}
|
|
4770
|
-
//
|
|
4771
|
-
|
|
4772
|
-
|
|
4773
|
-
this.ProcessorDetailsFormGroup.removeControl('apiRoot');
|
|
4774
|
-
this.ProcessorDetailsFormGroup.removeControl('security');
|
|
4775
|
-
this.ProcessorDetailsFormGroup.removeControl('spaRoot');
|
|
4776
|
-
this.ProcessorDetailsFormGroup.removeControl('applicationId');
|
|
4777
|
-
this.ProcessorDetailsFormGroup.removeControl('sourceControl');
|
|
4778
|
-
this.ProcessorDetailsFormGroup.removeControl('build');
|
|
4779
|
-
this.ProcessorDetailsFormGroup.removeControl('clientId');
|
|
4780
|
-
this.ProcessorDetailsFormGroup.removeControl('clientSecret');
|
|
4781
|
-
this.ProcessorDetailsFormGroup.removeControl('package');
|
|
4782
|
-
this.ProcessorDetailsFormGroup.removeControl('version');
|
|
4783
|
-
this.ProcessorDetailsFormGroup.removeControl('zipFile');
|
|
5087
|
+
// API Methods
|
|
5088
|
+
CalculateTimelapse(timestamp) {
|
|
5089
|
+
return moment(timestamp).fromNow();
|
|
4784
5090
|
}
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
|
|
4788
|
-
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
5091
|
+
HandleAction(action) {
|
|
5092
|
+
if (action.ActionType == 'Link') {
|
|
5093
|
+
if (action.Action.startsWith('http')) {
|
|
5094
|
+
window.open(action.Action, '_blank');
|
|
5095
|
+
}
|
|
5096
|
+
else {
|
|
5097
|
+
window.location.href = action.Action;
|
|
5098
|
+
}
|
|
5099
|
+
}
|
|
5100
|
+
else if (action.ActionType == 'Modal') {
|
|
5101
|
+
if (action.Action == 'AddSourceControl') {
|
|
5102
|
+
this.OpenSourceControlDialog(null);
|
|
5103
|
+
}
|
|
5104
|
+
else {
|
|
5105
|
+
alert('other modaled ' + action.Action);
|
|
5106
|
+
}
|
|
5107
|
+
}
|
|
4798
5108
|
}
|
|
4799
|
-
|
|
4800
|
-
this.
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
|
|
4804
|
-
|
|
4805
|
-
|
|
4806
|
-
|
|
4807
|
-
|
|
4808
|
-
|
|
4809
|
-
//
|
|
4810
|
-
//
|
|
5109
|
+
OpenSourceControlDialog(scLookup) {
|
|
5110
|
+
const dialogRef = this.dialog.open(SourceControlDialogComponent, {
|
|
5111
|
+
width: '550px',
|
|
5112
|
+
data: {
|
|
5113
|
+
environment: this.Environment,
|
|
5114
|
+
environmentLookup: this.ActiveEnvironmentLookup,
|
|
5115
|
+
scLookup: scLookup,
|
|
5116
|
+
},
|
|
5117
|
+
});
|
|
5118
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
5119
|
+
// console.log('The dialog was closed');
|
|
5120
|
+
// console.log("result:", result)
|
|
4811
5121
|
});
|
|
4812
5122
|
}
|
|
4813
|
-
|
|
4814
|
-
this.
|
|
4815
|
-
|
|
4816
|
-
|
|
4817
|
-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
|
|
4824
|
-
|
|
4825
|
-
|
|
4826
|
-
|
|
4827
|
-
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
|
|
4832
|
-
// case 'NPM':
|
|
4833
|
-
// this.setupLCUNPMForm();
|
|
4834
|
-
// break;
|
|
4835
|
-
case 'SPA':
|
|
4836
|
-
this.setupLCUSPAForm();
|
|
4837
|
-
break;
|
|
4838
|
-
case 'Zip':
|
|
4839
|
-
this.setupLCUZipForm();
|
|
4840
|
-
break;
|
|
4841
|
-
}
|
|
5123
|
+
SafeHtml(html) {
|
|
5124
|
+
return this.sanitizer.bypassSecurityTrustHtml(html);
|
|
5125
|
+
}
|
|
5126
|
+
// Helpers
|
|
5127
|
+
handleRefresh() {
|
|
5128
|
+
if (this.FeedItem?.RefreshLink) {
|
|
5129
|
+
setTimeout(() => {
|
|
5130
|
+
this.eacSvc.CheckUserFeedItem(this.FeedItem).subscribe(async (response) => {
|
|
5131
|
+
if (response.Status.Code === 0) {
|
|
5132
|
+
this.FeedItem = response.Model;
|
|
5133
|
+
this.handleRefresh();
|
|
5134
|
+
}
|
|
5135
|
+
else {
|
|
5136
|
+
console.log(response);
|
|
5137
|
+
}
|
|
5138
|
+
}, (err) => {
|
|
5139
|
+
console.log(err);
|
|
5140
|
+
});
|
|
5141
|
+
}, 5000);
|
|
4842
5142
|
}
|
|
4843
5143
|
}
|
|
4844
|
-
|
|
4845
|
-
|
|
4846
|
-
|
|
4847
|
-
|
|
4848
|
-
|
|
4849
|
-
|
|
4850
|
-
|
|
4851
|
-
|
|
4852
|
-
|
|
4853
|
-
|
|
5144
|
+
}
|
|
5145
|
+
MainFeedCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: MainFeedCardComponent, deps: [{ token: EaCService }, { token: i2$3.MatDialog }, { token: i3$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
5146
|
+
MainFeedCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: MainFeedCardComponent, selector: "lcu-main-feed-card", inputs: { FeedItem: ["feed-item", "FeedItem"] }, ngImport: i0, template: "<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", styles: [":host :host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host :host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host :host ::ng-deep .main-slot-container{padding:10px}:host :host ::ng-deep .slot-header{align-items:center}:host :host ::ng-deep .slot-content{width:100%}:host :host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host :host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host :host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host :host ::ng-deep .action-icon{height:25px;width:25px;font-size:25px;cursor:pointer}:host .example-header-image{background-size:cover}:host .mat-icon{display:inline-flex;vertical-align:middle}:host .mat-icon.spin{animation:rotate 1s ease-in-out infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}:host .tab{margin:2em}:host .tab .video iframe{display:block;margin:auto}\n"], components: [{ type: i1$1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i1$1.MatCardHeader, selector: "mat-card-header" }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i2$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { type: i1$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i1$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i1$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
5147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: MainFeedCardComponent, decorators: [{
|
|
5148
|
+
type: Component,
|
|
5149
|
+
args: [{ selector: 'lcu-main-feed-card', template: "<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", styles: [":host :host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host :host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host :host ::ng-deep .main-slot-container{padding:10px}:host :host ::ng-deep .slot-header{align-items:center}:host :host ::ng-deep .slot-content{width:100%}:host :host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host :host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host :host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host :host ::ng-deep .action-icon{height:25px;width:25px;font-size:25px;cursor:pointer}:host .example-header-image{background-size:cover}:host .mat-icon{display:inline-flex;vertical-align:middle}:host .mat-icon.spin{animation:rotate 1s ease-in-out infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}:host .tab{margin:2em}:host .tab .video iframe{display:block;margin:auto}\n"] }]
|
|
5150
|
+
}], ctorParameters: function () { return [{ type: EaCService }, { type: i2$3.MatDialog }, { type: i3$2.DomSanitizer }]; }, propDecorators: { FeedItem: [{
|
|
5151
|
+
type: Input,
|
|
5152
|
+
args: ['feed-item']
|
|
5153
|
+
}] } });
|
|
5154
|
+
|
|
5155
|
+
class TwoColumnHeaderComponent {
|
|
5156
|
+
constructor() { }
|
|
5157
|
+
ngOnInit() {
|
|
5158
|
+
}
|
|
5159
|
+
}
|
|
5160
|
+
TwoColumnHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TwoColumnHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5161
|
+
TwoColumnHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TwoColumnHeaderComponent, selector: "lcu-two-column-header", ngImport: i0, template: "<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", styles: [".col-container{background-color:#ebecf0}.col-left{min-width:210px}\n"], directives: [{ type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
5162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TwoColumnHeaderComponent, decorators: [{
|
|
5163
|
+
type: Component,
|
|
5164
|
+
args: [{ selector: 'lcu-two-column-header', template: "<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", styles: [".col-container{background-color:#ebecf0}.col-left{min-width:210px}\n"] }]
|
|
5165
|
+
}], ctorParameters: function () { return []; } });
|
|
5166
|
+
|
|
5167
|
+
class CardCarouselComponent {
|
|
5168
|
+
constructor() {
|
|
5169
|
+
this.carouselIndex = 0;
|
|
5170
|
+
}
|
|
5171
|
+
ngOnInit() {
|
|
5172
|
+
}
|
|
5173
|
+
ngAfterViewInit() {
|
|
5174
|
+
this.assignCarouselClass();
|
|
5175
|
+
}
|
|
5176
|
+
LeftChevronClicked() {
|
|
5177
|
+
this.removeCarouselClasses();
|
|
5178
|
+
if (this.carouselIndex === 0) {
|
|
5179
|
+
this.carouselIndex = this.Stats.length - 1;
|
|
5180
|
+
}
|
|
5181
|
+
else {
|
|
5182
|
+
this.carouselIndex--;
|
|
4854
5183
|
}
|
|
5184
|
+
this.assignCarouselClass();
|
|
4855
5185
|
}
|
|
4856
|
-
|
|
4857
|
-
console.log(
|
|
4858
|
-
this.ProcessorDetailsFormGroup.addControl('sourceControl', this.formBldr.control(this.EditingApplication.LowCodeUnit?.SourceControlLookup || '', [Validators.required]));
|
|
4859
|
-
this.ProcessorDetailsFormGroup.addControl('buildPath', this.formBldr.control(this.EditingApplication.LowCodeUnit?.Path || '', [
|
|
4860
|
-
Validators.required,
|
|
4861
|
-
]));
|
|
4862
|
-
this.ProcessorDetailsFormGroup.addControl('build', this.formBldr.control(this.EditingApplication.LowCodeUnit?.Build || 'latest', [Validators.required]));
|
|
4863
|
-
this.listBuildPaths();
|
|
5186
|
+
MoreDetailsClicked() {
|
|
5187
|
+
console.log("More details clicked on carousel item", this.Stats[this.carouselIndex]);
|
|
4864
5188
|
}
|
|
4865
|
-
|
|
4866
|
-
this.
|
|
5189
|
+
RightChevronClicked() {
|
|
5190
|
+
this.removeCarouselClasses();
|
|
5191
|
+
if (this.carouselIndex === this.Stats.length - 1) {
|
|
5192
|
+
this.carouselIndex = 0;
|
|
5193
|
+
}
|
|
5194
|
+
else {
|
|
5195
|
+
this.carouselIndex++;
|
|
5196
|
+
}
|
|
5197
|
+
this.assignCarouselClass();
|
|
4867
5198
|
}
|
|
4868
|
-
|
|
4869
|
-
|
|
5199
|
+
//HELPERS
|
|
5200
|
+
removeCarouselClasses() {
|
|
5201
|
+
for (let i = 0; i < this.Stats.length; i++) {
|
|
5202
|
+
if (i === this.carouselIndex) {
|
|
5203
|
+
document.getElementById("carousel-" + this.carouselIndex).classList.remove('active');
|
|
5204
|
+
}
|
|
5205
|
+
else {
|
|
5206
|
+
document.getElementById("carousel-" + i).classList.remove('hidden');
|
|
5207
|
+
}
|
|
5208
|
+
}
|
|
4870
5209
|
}
|
|
4871
|
-
|
|
4872
|
-
|
|
4873
|
-
|
|
4874
|
-
|
|
5210
|
+
assignCarouselClass() {
|
|
5211
|
+
for (let i = 0; i < this.Stats.length; i++) {
|
|
5212
|
+
if (i === this.carouselIndex) {
|
|
5213
|
+
document.getElementById("carousel-" + this.carouselIndex).classList.add('active');
|
|
5214
|
+
}
|
|
5215
|
+
else {
|
|
5216
|
+
document.getElementById("carousel-" + i).classList.add('hidden');
|
|
5217
|
+
}
|
|
5218
|
+
}
|
|
4875
5219
|
}
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
|
|
5220
|
+
}
|
|
5221
|
+
CardCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CardCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5222
|
+
CardCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: CardCarouselComponent, selector: "lcu-card-carousel", inputs: { Stats: ["stats", "Stats"] }, ngImport: i0, template: "<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", styles: [".carousel-container{text-align:center;height:75px;padding-top:20px}.carousel-item.hidden{display:none}.carousel-item.active{visibility:visible}.chevron-button{position:absolute}#right-chevron{right:5px}#left-chevron{left:5px}\n"], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
5223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CardCarouselComponent, decorators: [{
|
|
5224
|
+
type: Component,
|
|
5225
|
+
args: [{ selector: 'lcu-card-carousel', template: "<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", styles: [".carousel-container{text-align:center;height:75px;padding-top:20px}.carousel-item.hidden{display:none}.carousel-item.active{visibility:visible}.chevron-button{position:absolute}#right-chevron{right:5px}#left-chevron{left:5px}\n"] }]
|
|
5226
|
+
}], ctorParameters: function () { return []; }, propDecorators: { Stats: [{
|
|
5227
|
+
type: Input,
|
|
5228
|
+
args: ['stats']
|
|
5229
|
+
}] } });
|
|
5230
|
+
|
|
5231
|
+
class SecurityToggleComponent {
|
|
5232
|
+
constructor(eacSvc, formBldr) {
|
|
5233
|
+
this.eacSvc = eacSvc;
|
|
5234
|
+
this.formBldr = formBldr;
|
|
5235
|
+
this.SaveFormEvent = new EventEmitter;
|
|
5236
|
+
this.SkeletonEffect = 'wave';
|
|
4879
5237
|
}
|
|
4880
|
-
|
|
4881
|
-
|
|
5238
|
+
get IsPrivateFormControl() {
|
|
5239
|
+
return this.SecurityFormGroup?.controls.isPrivate;
|
|
4882
5240
|
}
|
|
4883
|
-
|
|
4884
|
-
|
|
4885
|
-
this.ProcessorDetailsFormGroup.addControl('inboundPath', this.formBldr.control(this.EditingApplication.Processor?.InboundPath || '', [Validators.required]));
|
|
4886
|
-
this.ProcessorDetailsFormGroup.addControl('lcuType', this.formBldr.control(this.LCUType, [Validators.required]));
|
|
5241
|
+
get IsTriggerSignInFormControl() {
|
|
5242
|
+
return this.SecurityFormGroup?.controls.isTriggerSignIn;
|
|
4887
5243
|
}
|
|
4888
|
-
|
|
4889
|
-
|
|
4890
|
-
Validators.required,
|
|
4891
|
-
]));
|
|
4892
|
-
this.ProcessorDetailsFormGroup.addControl('permanent', this.formBldr.control(this.EditingApplication.Processor?.Permanent || false, []));
|
|
4893
|
-
this.ProcessorDetailsFormGroup.addControl('preserveMethod', this.formBldr.control(this.EditingApplication.Processor?.PreserveMethod || false, []));
|
|
4894
|
-
this.ProcessorDetailsFormGroup.addControl('includeRequest', this.formBldr.control(this.EditingApplication.Processor?.IncludeRequest || false, []));
|
|
4895
|
-
this.DetermineTooltipText();
|
|
5244
|
+
get State() {
|
|
5245
|
+
return this.eacSvc.State;
|
|
4896
5246
|
}
|
|
4897
|
-
|
|
4898
|
-
this.
|
|
4899
|
-
this.ProcessorDetailsFormGroup.addControl('scopes', this.formBldr.control(this.EditingApplication.Processor?.Scopes?.Join(' ') || '', [Validators.required]));
|
|
4900
|
-
this.ProcessorDetailsFormGroup.addControl('tokenLookup', this.formBldr.control(this.EditingApplication.Processor?.TokenLookup || '', [Validators.required]));
|
|
4901
|
-
this.ProcessorDetailsFormGroup.addControl('lcuType', this.formBldr.control(this.LCUType, [Validators.required]));
|
|
5247
|
+
ngOnInit() {
|
|
5248
|
+
this.setupSecurityFormGroup();
|
|
4902
5249
|
}
|
|
4903
|
-
|
|
4904
|
-
|
|
5250
|
+
SecuritySubmit() {
|
|
5251
|
+
//save the security settings
|
|
5252
|
+
console.log("submitting security values: ", this.SecurityFormGroup.value);
|
|
5253
|
+
this.SaveFormEvent.emit(this.SecurityFormGroup.value);
|
|
4905
5254
|
}
|
|
4906
|
-
|
|
4907
|
-
this.
|
|
4908
|
-
this.
|
|
4909
|
-
this.
|
|
5255
|
+
setupSecurityFormGroup() {
|
|
5256
|
+
this.ProcessorType = this.EditingApplication?.Processor?.Type || '';
|
|
5257
|
+
this.SecurityFormGroup = this.formBldr.group({});
|
|
5258
|
+
this.setupSecurityForm();
|
|
4910
5259
|
}
|
|
4911
|
-
|
|
4912
|
-
this.
|
|
4913
|
-
|
|
4914
|
-
switch (this.ProcessorType) {
|
|
4915
|
-
case 'DFS':
|
|
4916
|
-
this.setupDfsForm();
|
|
4917
|
-
break;
|
|
4918
|
-
case 'OAuth':
|
|
4919
|
-
this.setupOAuthForm();
|
|
4920
|
-
break;
|
|
4921
|
-
case 'Proxy':
|
|
4922
|
-
this.setupProxyForm();
|
|
4923
|
-
break;
|
|
4924
|
-
case 'Redirect':
|
|
4925
|
-
this.setupRedirectForm();
|
|
4926
|
-
break;
|
|
4927
|
-
}
|
|
4928
|
-
}
|
|
4929
|
-
this.setupLcuTypeSubForm();
|
|
5260
|
+
setupSecurityForm() {
|
|
5261
|
+
this.SecurityFormGroup.addControl('isPrivate', this.formBldr.control(this.EditingApplication.LookupConfig?.IsPrivate || false, [Validators.required]));
|
|
5262
|
+
this.SecurityFormGroup.addControl('isTriggerSignIn', this.formBldr.control(this.EditingApplication.LookupConfig?.IsTriggerSignIn || false, [Validators.required]));
|
|
4930
5263
|
}
|
|
4931
5264
|
}
|
|
4932
|
-
|
|
4933
|
-
ProcessorDetailsFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: ProcessorDetailsFormComponent, selector: "lcu-processor-details-form", inputs: { EditingApplication: ["editing-application", "EditingApplication"], EditingApplicationLookup: ["editing-application-lookup", "EditingApplicationLookup"], HasSaveButton: ["has-save-button", "HasSaveButton"], SourceControlLookups: ["source-control-lookups", "SourceControlLookups"], ProjectLookup: ["project-lookup", "ProjectLookup"] }, outputs: { SaveFormEvent: "save-form-event" }, ngImport: i0, template: "<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", styles: [".s-block{margin:10px 0;width:100%;height:40px}\n"], components: [{ type: i4$3.SkeletonBlockComponent, selector: "skeleton-block", inputs: ["width", "height", "effect", "borderRadius"] }, { type: i3.LoaderComponent, selector: "lcu-loader", inputs: ["diameter", "hide-inner", "loading"] }, { type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: NpmPackageSelectComponent, selector: "lcu-npm-package-select", inputs: ["npm-package", "npm-package-version", "form-group"] }, { type: i5$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4$1.MatSuffix, selector: "[matSuffix]" }, { type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
4934
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type:
|
|
5265
|
+
SecurityToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SecurityToggleComponent, deps: [{ token: EaCService }, { token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
5266
|
+
SecurityToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: SecurityToggleComponent, selector: "lcu-security-toggle", inputs: { EditingApplication: ["editing-application", "EditingApplication"] }, outputs: { SaveFormEvent: "save-form-event" }, ngImport: i0, template: "<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", styles: ["::ng-deep .mat-tooltip{color:#000!important}.flow-card{margin:32px 20px}\n"], components: [{ type: i1$1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i1$1.MatCardHeader, selector: "mat-card-header" }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i1$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i4$3.SkeletonTextDirective, selector: "[skeleton-text]", inputs: ["effect"] }, { type: i1$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4$1.MatSuffix, selector: "[matSuffix]" }, { type: i1$1.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }] });
|
|
5267
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SecurityToggleComponent, decorators: [{
|
|
4935
5268
|
type: Component,
|
|
4936
|
-
args: [{ selector: 'lcu-processor-details-form', template: "<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", styles: [".s-block{margin:10px 0;width:100%;height:40px}\n"] }]
|
|
4937
|
-
}], ctorParameters: function () { return [{ type:
|
|
5269
|
+
args: [{ selector: 'lcu-security-toggle', template: "<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", styles: ["::ng-deep .mat-tooltip{color:#000!important}.flow-card{margin:32px 20px}\n"] }]
|
|
5270
|
+
}], ctorParameters: function () { return [{ type: EaCService }, { type: i1$2.FormBuilder }]; }, propDecorators: { EditingApplication: [{
|
|
4938
5271
|
type: Input,
|
|
4939
5272
|
args: ['editing-application']
|
|
4940
|
-
}], EditingApplicationLookup: [{
|
|
4941
|
-
type: Input,
|
|
4942
|
-
args: ['editing-application-lookup']
|
|
4943
|
-
}], HasSaveButton: [{
|
|
4944
|
-
type: Input,
|
|
4945
|
-
args: ['has-save-button']
|
|
4946
|
-
}], SourceControlLookups: [{
|
|
4947
|
-
type: Input,
|
|
4948
|
-
args: ['source-control-lookups']
|
|
4949
|
-
}], ProjectLookup: [{
|
|
4950
|
-
type: Input,
|
|
4951
|
-
args: ['project-lookup']
|
|
4952
5273
|
}], SaveFormEvent: [{
|
|
4953
5274
|
type: Output,
|
|
4954
5275
|
args: ['save-form-event']
|
|
@@ -5225,175 +5546,75 @@ BuildPipelineFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0
|
|
|
5225
5546
|
BuildPipelineFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: BuildPipelineFormComponent, selector: "lcu-build-pipeline-form", inputs: { DevOpsActionLookup: ["devops-action-lookup", "DevOpsActionLookup"], Disabled: ["disabled", "Disabled"], Environment: ["environment", "Environment"], EnvironmentLookup: ["environment-lookup", "EnvironmentLookup"], HostingDetails: ["hosting-details", "HostingDetails"] }, outputs: { ResponseEvent: "response-event" }, ngImport: i0, template: "<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", styles: [".s-block{margin:10px 0;width:100%;height:40px}.primary-link{color:#4a918e;text-decoration:none}\n"], components: [{ type: i4$3.SkeletonBlockComponent, selector: "skeleton-block", inputs: ["width", "height", "effect", "borderRadius"] }, { type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.MatPrefix, selector: "[matPrefix]" }] });
|
|
5226
5547
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BuildPipelineFormComponent, decorators: [{
|
|
5227
5548
|
type: Component,
|
|
5228
|
-
args: [{ selector: 'lcu-build-pipeline-form', template: "<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", styles: [".s-block{margin:10px 0;width:100%;height:40px}.primary-link{color:#4a918e;text-decoration:none}\n"] }]
|
|
5229
|
-
}], ctorParameters: function () { return [{ type: EaCService }, { type: i1$2.FormBuilder }, { type: ApplicationsFlowService }]; }, propDecorators: { DevOpsActionLookup: [{
|
|
5230
|
-
type: Input,
|
|
5231
|
-
args: ['devops-action-lookup']
|
|
5232
|
-
}], Disabled: [{
|
|
5233
|
-
type: Input,
|
|
5234
|
-
args: ['disabled']
|
|
5235
|
-
}], Environment: [{
|
|
5236
|
-
type: Input,
|
|
5237
|
-
args: ['environment']
|
|
5238
|
-
}], EnvironmentLookup: [{
|
|
5239
|
-
type: Input,
|
|
5240
|
-
args: ['environment-lookup']
|
|
5241
|
-
}], HostingDetails: [{
|
|
5242
|
-
type: Input,
|
|
5243
|
-
args: ['hosting-details']
|
|
5244
|
-
}], ResponseEvent: [{
|
|
5245
|
-
type: Output,
|
|
5246
|
-
args: ['response-event']
|
|
5247
|
-
}] } });
|
|
5248
|
-
|
|
5249
|
-
class BuildPipelineDialogComponent {
|
|
5250
|
-
constructor(dialogRef, eacSvc, data, snackBar) {
|
|
5251
|
-
this.dialogRef = dialogRef;
|
|
5252
|
-
this.eacSvc = eacSvc;
|
|
5253
|
-
this.data = data;
|
|
5254
|
-
this.snackBar = snackBar;
|
|
5255
|
-
}
|
|
5256
|
-
get BuildPipelineFormGroup() {
|
|
5257
|
-
return this.BuildPipelineControl?.BuildPipelineFormGroup;
|
|
5258
|
-
}
|
|
5259
|
-
get HasConnection() {
|
|
5260
|
-
return this.State.GitHub.HasConnection;
|
|
5261
|
-
}
|
|
5262
|
-
get State() {
|
|
5263
|
-
return this.eacSvc.State;
|
|
5264
|
-
}
|
|
5265
|
-
ngOnInit() {
|
|
5266
|
-
}
|
|
5267
|
-
CloseDialog() {
|
|
5268
|
-
this.dialogRef.close();
|
|
5269
|
-
}
|
|
5270
|
-
HandleResponseEvent(event) {
|
|
5271
|
-
console.log("Response Event: ", event);
|
|
5272
|
-
if (event.Code === 0) {
|
|
5273
|
-
this.snackBar.open("Build Pipeline Created Succesfully", "Dismiss", {
|
|
5274
|
-
duration: 5000
|
|
5275
|
-
});
|
|
5276
|
-
this.CloseDialog();
|
|
5277
|
-
}
|
|
5278
|
-
else {
|
|
5279
|
-
this.ErrorMessage = event.Message;
|
|
5280
|
-
}
|
|
5281
|
-
}
|
|
5282
|
-
SaveBuildPipeline() {
|
|
5283
|
-
this.BuildPipelineControl.SaveEnvironment();
|
|
5284
|
-
}
|
|
5285
|
-
}
|
|
5286
|
-
BuildPipelineDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BuildPipelineDialogComponent, deps: [{ token: i2$3.MatDialogRef }, { token: EaCService }, { token: MAT_DIALOG_DATA }, { token: i3$1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
|
|
5287
|
-
BuildPipelineDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: BuildPipelineDialogComponent, selector: "lcu-build-pipeline-dialog", viewQueries: [{ propertyName: "BuildPipelineControl", first: true, predicate: BuildPipelineFormComponent, descendants: true }], ngImport: i0, template: "<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>", styles: [".dialog-header{width:100%}\n"], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: GitAuthComponent, selector: "lcu-git-auth" }, { type: BuildPipelineFormComponent, selector: "lcu-build-pipeline-form", inputs: ["devops-action-lookup", "disabled", "environment", "environment-lookup", "hosting-details"], outputs: ["response-event"] }], directives: [{ type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
5288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BuildPipelineDialogComponent, decorators: [{
|
|
5289
|
-
type: Component,
|
|
5290
|
-
args: [{ selector: 'lcu-build-pipeline-dialog', template: "<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>", styles: [".dialog-header{width:100%}\n"] }]
|
|
5291
|
-
}], ctorParameters: function () { return [{ type: i2$3.MatDialogRef }, { type: EaCService }, { type: undefined, decorators: [{
|
|
5292
|
-
type: Inject,
|
|
5293
|
-
args: [MAT_DIALOG_DATA]
|
|
5294
|
-
}] }, { type: i3$1.MatSnackBar }]; }, propDecorators: { BuildPipelineControl: [{
|
|
5295
|
-
type: ViewChild,
|
|
5296
|
-
args: [BuildPipelineFormComponent]
|
|
5297
|
-
}] } });
|
|
5298
|
-
|
|
5299
|
-
class EditApplicationFormComponent {
|
|
5300
|
-
constructor(formBldr, eacSvc) {
|
|
5301
|
-
this.formBldr = formBldr;
|
|
5302
|
-
this.eacSvc = eacSvc;
|
|
5303
|
-
this.SaveFormEvent = new EventEmitter;
|
|
5304
|
-
this.HasSaveButton = true;
|
|
5305
|
-
}
|
|
5306
|
-
get DescriptionFormControl() {
|
|
5307
|
-
return this.ApplicationFormGroup?.controls.description;
|
|
5308
|
-
}
|
|
5309
|
-
get NameFormControl() {
|
|
5310
|
-
return this.ApplicationFormGroup?.controls.name;
|
|
5311
|
-
}
|
|
5312
|
-
get RouteFormControl() {
|
|
5313
|
-
return this.ApplicationFormGroup?.controls.route;
|
|
5314
|
-
}
|
|
5315
|
-
get State() {
|
|
5316
|
-
return this.eacSvc.State;
|
|
5317
|
-
}
|
|
5318
|
-
ngOnInit() {
|
|
5319
|
-
this.setupApplicationForm();
|
|
5320
|
-
}
|
|
5321
|
-
SubmitApplicationControl() {
|
|
5322
|
-
console.log("application form: ", this.ApplicationFormGroup.value);
|
|
5323
|
-
this.SaveApplication();
|
|
5324
|
-
}
|
|
5325
|
-
SaveApplication() {
|
|
5326
|
-
const app = this.EditingApplication;
|
|
5327
|
-
// console.log("APP=", app);
|
|
5328
|
-
app.Application = {
|
|
5329
|
-
Name: this.NameFormControl.value,
|
|
5330
|
-
Description: this.DescriptionFormControl.value,
|
|
5331
|
-
PriorityShift: this.EditingApplication?.Application?.PriorityShift || 0,
|
|
5332
|
-
};
|
|
5333
|
-
app.LookupConfig.PathRegex = `${this.RouteFormControl.value}.*`;
|
|
5334
|
-
switch (app.Processor.Type) {
|
|
5335
|
-
case 'DFS':
|
|
5336
|
-
app.Processor.BaseHref = `${this.RouteFormControl.value}/`.replace('//', '/');
|
|
5337
|
-
break;
|
|
5338
|
-
}
|
|
5339
|
-
if (!app.LookupConfig.PathRegex.startsWith('/')) {
|
|
5340
|
-
app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;
|
|
5341
|
-
}
|
|
5342
|
-
const saveAppReq = {
|
|
5343
|
-
ProjectLookup: this.ProjectLookup,
|
|
5344
|
-
Application: app,
|
|
5345
|
-
ApplicationLookup: this.ApplicationLookup,
|
|
5346
|
-
};
|
|
5347
|
-
console.log("processor details being submitted: ", app.Processor);
|
|
5348
|
-
this.eacSvc.SaveApplicationAsCode(saveAppReq).then(res => {
|
|
5349
|
-
this.SaveFormEvent.emit(res);
|
|
5350
|
-
});
|
|
5351
|
-
}
|
|
5352
|
-
//HELPERS
|
|
5353
|
-
setupApplicationForm() {
|
|
5354
|
-
if (this.EditingApplication != null) {
|
|
5355
|
-
this.ApplicationFormGroup = this.formBldr.group({
|
|
5356
|
-
name: [this.EditingApplication.Application?.Name, Validators.required],
|
|
5357
|
-
description: [
|
|
5358
|
-
this.EditingApplication.Application?.Description,
|
|
5359
|
-
Validators.required,
|
|
5360
|
-
],
|
|
5361
|
-
route: [this.CurrentRoute ? this.CurrentRoute :
|
|
5362
|
-
this.EditingApplication.LookupConfig?.PathRegex.replace('.*', '') ||
|
|
5363
|
-
'/',
|
|
5364
|
-
Validators.required,
|
|
5365
|
-
],
|
|
5366
|
-
// priority: [
|
|
5367
|
-
// this.EditingApplication.Application?.Priority || 10000,
|
|
5368
|
-
// Validators.required,
|
|
5369
|
-
// ],
|
|
5370
|
-
});
|
|
5371
|
-
}
|
|
5372
|
-
}
|
|
5373
|
-
}
|
|
5374
|
-
EditApplicationFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EditApplicationFormComponent, deps: [{ token: i1$2.FormBuilder }, { token: EaCService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5375
|
-
EditApplicationFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: EditApplicationFormComponent, selector: "lcu-edit-application-form", inputs: { ApplicationLookup: ["application-lookup", "ApplicationLookup"], CurrentRoute: ["current-route", "CurrentRoute"], EditingApplication: ["editing-application", "EditingApplication"], HasSaveButton: ["has-save-button", "HasSaveButton"], ProjectLookup: ["project-lookup", "ProjectLookup"] }, outputs: { SaveFormEvent: "save-form-event" }, ngImport: i0, template: "<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", styles: [".s-block{margin:10px 0;width:100%;height:40px}\n"], components: [{ type: i4$3.SkeletonBlockComponent, selector: "skeleton-block", inputs: ["width", "height", "effect", "borderRadius"] }, { type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }] });
|
|
5376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EditApplicationFormComponent, decorators: [{
|
|
5377
|
-
type: Component,
|
|
5378
|
-
args: [{ selector: 'lcu-edit-application-form', template: "<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", styles: [".s-block{margin:10px 0;width:100%;height:40px}\n"] }]
|
|
5379
|
-
}], ctorParameters: function () { return [{ type: i1$2.FormBuilder }, { type: EaCService }]; }, propDecorators: { ApplicationLookup: [{
|
|
5549
|
+
args: [{ selector: 'lcu-build-pipeline-form', template: "<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", styles: [".s-block{margin:10px 0;width:100%;height:40px}.primary-link{color:#4a918e;text-decoration:none}\n"] }]
|
|
5550
|
+
}], ctorParameters: function () { return [{ type: EaCService }, { type: i1$2.FormBuilder }, { type: ApplicationsFlowService }]; }, propDecorators: { DevOpsActionLookup: [{
|
|
5380
5551
|
type: Input,
|
|
5381
|
-
args: ['
|
|
5382
|
-
}],
|
|
5552
|
+
args: ['devops-action-lookup']
|
|
5553
|
+
}], Disabled: [{
|
|
5383
5554
|
type: Input,
|
|
5384
|
-
args: ['
|
|
5385
|
-
}],
|
|
5555
|
+
args: ['disabled']
|
|
5556
|
+
}], Environment: [{
|
|
5386
5557
|
type: Input,
|
|
5387
|
-
args: ['
|
|
5388
|
-
}],
|
|
5558
|
+
args: ['environment']
|
|
5559
|
+
}], EnvironmentLookup: [{
|
|
5389
5560
|
type: Input,
|
|
5390
|
-
args: ['
|
|
5391
|
-
}],
|
|
5561
|
+
args: ['environment-lookup']
|
|
5562
|
+
}], HostingDetails: [{
|
|
5392
5563
|
type: Input,
|
|
5393
|
-
args: ['
|
|
5394
|
-
}],
|
|
5564
|
+
args: ['hosting-details']
|
|
5565
|
+
}], ResponseEvent: [{
|
|
5395
5566
|
type: Output,
|
|
5396
|
-
args: ['
|
|
5567
|
+
args: ['response-event']
|
|
5568
|
+
}] } });
|
|
5569
|
+
|
|
5570
|
+
class BuildPipelineDialogComponent {
|
|
5571
|
+
constructor(dialogRef, eacSvc, data, snackBar) {
|
|
5572
|
+
this.dialogRef = dialogRef;
|
|
5573
|
+
this.eacSvc = eacSvc;
|
|
5574
|
+
this.data = data;
|
|
5575
|
+
this.snackBar = snackBar;
|
|
5576
|
+
}
|
|
5577
|
+
get BuildPipelineFormGroup() {
|
|
5578
|
+
return this.BuildPipelineControl?.BuildPipelineFormGroup;
|
|
5579
|
+
}
|
|
5580
|
+
get HasConnection() {
|
|
5581
|
+
return this.State.GitHub.HasConnection;
|
|
5582
|
+
}
|
|
5583
|
+
get State() {
|
|
5584
|
+
return this.eacSvc.State;
|
|
5585
|
+
}
|
|
5586
|
+
ngOnInit() {
|
|
5587
|
+
}
|
|
5588
|
+
CloseDialog() {
|
|
5589
|
+
this.dialogRef.close();
|
|
5590
|
+
}
|
|
5591
|
+
HandleResponseEvent(event) {
|
|
5592
|
+
console.log("Response Event: ", event);
|
|
5593
|
+
if (event.Code === 0) {
|
|
5594
|
+
this.snackBar.open("Build Pipeline Created Succesfully", "Dismiss", {
|
|
5595
|
+
duration: 5000
|
|
5596
|
+
});
|
|
5597
|
+
this.CloseDialog();
|
|
5598
|
+
}
|
|
5599
|
+
else {
|
|
5600
|
+
this.ErrorMessage = event.Message;
|
|
5601
|
+
}
|
|
5602
|
+
}
|
|
5603
|
+
SaveBuildPipeline() {
|
|
5604
|
+
this.BuildPipelineControl.SaveEnvironment();
|
|
5605
|
+
}
|
|
5606
|
+
}
|
|
5607
|
+
BuildPipelineDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BuildPipelineDialogComponent, deps: [{ token: i2$3.MatDialogRef }, { token: EaCService }, { token: MAT_DIALOG_DATA }, { token: i3$1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
|
|
5608
|
+
BuildPipelineDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: BuildPipelineDialogComponent, selector: "lcu-build-pipeline-dialog", viewQueries: [{ propertyName: "BuildPipelineControl", first: true, predicate: BuildPipelineFormComponent, descendants: true }], ngImport: i0, template: "<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>", styles: [".dialog-header{width:100%}\n"], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: GitAuthComponent, selector: "lcu-git-auth" }, { type: BuildPipelineFormComponent, selector: "lcu-build-pipeline-form", inputs: ["devops-action-lookup", "disabled", "environment", "environment-lookup", "hosting-details"], outputs: ["response-event"] }], directives: [{ type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
5609
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BuildPipelineDialogComponent, decorators: [{
|
|
5610
|
+
type: Component,
|
|
5611
|
+
args: [{ selector: 'lcu-build-pipeline-dialog', template: "<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>", styles: [".dialog-header{width:100%}\n"] }]
|
|
5612
|
+
}], ctorParameters: function () { return [{ type: i2$3.MatDialogRef }, { type: EaCService }, { type: undefined, decorators: [{
|
|
5613
|
+
type: Inject,
|
|
5614
|
+
args: [MAT_DIALOG_DATA]
|
|
5615
|
+
}] }, { type: i3$1.MatSnackBar }]; }, propDecorators: { BuildPipelineControl: [{
|
|
5616
|
+
type: ViewChild,
|
|
5617
|
+
args: [BuildPipelineFormComponent]
|
|
5397
5618
|
}] } });
|
|
5398
5619
|
|
|
5399
5620
|
class BreadcrumbComponent {
|
|
@@ -5495,7 +5716,7 @@ class BreadcrumbComponent {
|
|
|
5495
5716
|
async handleStateChange() { }
|
|
5496
5717
|
}
|
|
5497
5718
|
BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: EaCService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5498
|
-
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: BreadcrumbComponent, selector: "lcu-breadcrumb", inputs: { ApplicationLookup: ["application-lookup", "ApplicationLookup"], ProjectLookup: ["project-lookup", "ProjectLookup"], SelectedRoute: ["selected-route", "SelectedRoute"] }, ngImport: i0, template: "<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", styles: [":host ::ng-deep .breadcrumb-container{background-color:#ebecf0;margin:20px 20px 0}:host ::ng-deep .seperator{font-size:25px;padding:10px}:host ::ng-deep .crumb-name{cursor:pointer}:host ::ng-deep .mat-icon{display:inline-flex;vertical-align:middle}\n"], components: [{ type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type:
|
|
5719
|
+
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: BreadcrumbComponent, selector: "lcu-breadcrumb", inputs: { ApplicationLookup: ["application-lookup", "ApplicationLookup"], ProjectLookup: ["project-lookup", "ProjectLookup"], SelectedRoute: ["selected-route", "SelectedRoute"] }, ngImport: i0, template: "<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", styles: [":host ::ng-deep .breadcrumb-container{background-color:#ebecf0;margin:20px 20px 0}:host ::ng-deep .seperator{font-size:25px;padding:10px}:host ::ng-deep .crumb-name{cursor:pointer}:host ::ng-deep .mat-icon{display:inline-flex;vertical-align:middle}\n"], components: [{ type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i7$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$3.SkeletonTextDirective, selector: "[skeleton-text]", inputs: ["effect"] }, { type: i2$1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i7$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
5499
5720
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
5500
5721
|
type: Component,
|
|
5501
5722
|
args: [{ selector: 'lcu-breadcrumb', template: "<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", styles: [":host ::ng-deep .breadcrumb-container{background-color:#ebecf0;margin:20px 20px 0}:host ::ng-deep .seperator{font-size:25px;padding:10px}:host ::ng-deep .crumb-name{cursor:pointer}:host ::ng-deep .mat-icon{display:inline-flex;vertical-align:middle}\n"] }]
|
|
@@ -5528,10 +5749,10 @@ class CustomDomainDialogComponent {
|
|
|
5528
5749
|
}
|
|
5529
5750
|
}
|
|
5530
5751
|
CustomDomainDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CustomDomainDialogComponent, deps: [{ token: i2$3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
5531
|
-
CustomDomainDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: CustomDomainDialogComponent, selector: "lcu-custom-domain-dialog", ngImport: i0, template: "
|
|
5752
|
+
CustomDomainDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: CustomDomainDialogComponent, selector: "lcu-custom-domain-dialog", ngImport: i0, template: "<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", styles: [""], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: DomainsComponent, selector: "lcu-domains", inputs: ["data"] }], directives: [{ type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }] });
|
|
5532
5753
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CustomDomainDialogComponent, decorators: [{
|
|
5533
5754
|
type: Component,
|
|
5534
|
-
args: [{ selector: 'lcu-custom-domain-dialog', template: "
|
|
5755
|
+
args: [{ selector: 'lcu-custom-domain-dialog', template: "<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", styles: [""] }]
|
|
5535
5756
|
}], ctorParameters: function () { return [{ type: i2$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
5536
5757
|
type: Inject,
|
|
5537
5758
|
args: [MAT_DIALOG_DATA]
|
|
@@ -5540,214 +5761,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
5540
5761
|
class EditApplicationDialogComponent {
|
|
5541
5762
|
constructor(eacSvc, dialogRef, data, snackBar) {
|
|
5542
5763
|
this.eacSvc = eacSvc;
|
|
5543
|
-
this.dialogRef = dialogRef;
|
|
5544
|
-
this.data = data;
|
|
5545
|
-
this.snackBar = snackBar;
|
|
5546
|
-
}
|
|
5547
|
-
get ApplicationFormGroup() {
|
|
5548
|
-
return this.EditApplicationControl?.ApplicationFormGroup;
|
|
5549
|
-
}
|
|
5550
|
-
get State() {
|
|
5551
|
-
return this.eacSvc.State;
|
|
5552
|
-
}
|
|
5553
|
-
ngOnInit() {
|
|
5554
|
-
}
|
|
5555
|
-
CloseDialog() {
|
|
5556
|
-
this.dialogRef.close();
|
|
5557
|
-
}
|
|
5558
|
-
HandleSaveApplicationEvent(event) {
|
|
5559
|
-
console.log("event to save: ", event);
|
|
5560
|
-
if (event.Code === 0) {
|
|
5561
|
-
this.snackBar.open("Application Succesfully Updated", "Dismiss", {
|
|
5562
|
-
duration: 5000
|
|
5563
|
-
});
|
|
5564
|
-
this.CloseDialog();
|
|
5565
|
-
}
|
|
5566
|
-
else {
|
|
5567
|
-
this.ErrorMessage = event.Message;
|
|
5568
|
-
}
|
|
5569
|
-
}
|
|
5570
|
-
SaveApplication() {
|
|
5571
|
-
this.EditApplicationControl.SaveApplication();
|
|
5572
|
-
}
|
|
5573
|
-
}
|
|
5574
|
-
EditApplicationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EditApplicationDialogComponent, deps: [{ token: EaCService }, { token: i2$3.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3$1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
|
|
5575
|
-
EditApplicationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: EditApplicationDialogComponent, selector: "lcu-edit-application-dialog", viewQueries: [{ propertyName: "EditApplicationControl", first: true, predicate: EditApplicationFormComponent, descendants: true }], ngImport: i0, template: "<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", styles: [""], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: EditApplicationFormComponent, selector: "lcu-edit-application-form", inputs: ["application-lookup", "current-route", "editing-application", "has-save-button", "project-lookup"], outputs: ["save-form-event"] }], directives: [{ type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
5576
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EditApplicationDialogComponent, decorators: [{
|
|
5577
|
-
type: Component,
|
|
5578
|
-
args: [{ selector: 'lcu-edit-application-dialog', template: "<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", styles: [""] }]
|
|
5579
|
-
}], ctorParameters: function () { return [{ type: EaCService }, { type: i2$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
5580
|
-
type: Inject,
|
|
5581
|
-
args: [MAT_DIALOG_DATA]
|
|
5582
|
-
}] }, { type: i3$1.MatSnackBar }]; }, propDecorators: { EditApplicationControl: [{
|
|
5583
|
-
type: ViewChild,
|
|
5584
|
-
args: [EditApplicationFormComponent]
|
|
5585
|
-
}] } });
|
|
5586
|
-
|
|
5587
|
-
class NewApplicationDialogComponent {
|
|
5588
|
-
constructor(eacSvc, dialogRef, data, snackBar) {
|
|
5589
|
-
this.eacSvc = eacSvc;
|
|
5590
|
-
this.dialogRef = dialogRef;
|
|
5591
|
-
this.data = data;
|
|
5592
|
-
this.snackBar = snackBar;
|
|
5593
|
-
this.HasSaveButton = false;
|
|
5594
|
-
}
|
|
5595
|
-
get Environment() {
|
|
5596
|
-
return this.State?.EaC?.Environments[this.data.environmentLookup];
|
|
5597
|
-
}
|
|
5598
|
-
get SourceControls() {
|
|
5599
|
-
return this.Environment?.Sources || {};
|
|
5600
|
-
}
|
|
5601
|
-
get SourceControlLookups() {
|
|
5602
|
-
return Object.keys(this.Environment.Sources || {});
|
|
5603
|
-
}
|
|
5604
|
-
get State() {
|
|
5605
|
-
return this.eacSvc.State;
|
|
5606
|
-
}
|
|
5607
|
-
ngOnInit() {
|
|
5608
|
-
this.SetupApplication(Guid.CreateRaw());
|
|
5609
|
-
}
|
|
5610
|
-
CloseDialog() {
|
|
5611
|
-
this.dialogRef.close();
|
|
5612
|
-
}
|
|
5613
|
-
SetupApplication(appLookup) {
|
|
5614
|
-
this.NewApplication = new EaCApplicationAsCode;
|
|
5615
|
-
this.NewApplicationLookup = appLookup;
|
|
5616
|
-
}
|
|
5617
|
-
SaveApplication() {
|
|
5618
|
-
const app = {
|
|
5619
|
-
Application: {
|
|
5620
|
-
Name: this.ApplicationFormControls.NameFormControl.value,
|
|
5621
|
-
Description: this.ApplicationFormControls.DescriptionFormControl.value,
|
|
5622
|
-
PriorityShift: 0,
|
|
5623
|
-
},
|
|
5624
|
-
AccessRightLookups: [],
|
|
5625
|
-
DataTokens: {},
|
|
5626
|
-
LicenseConfigurationLookups: [],
|
|
5627
|
-
LookupConfig: {
|
|
5628
|
-
IsPrivate: false,
|
|
5629
|
-
IsTriggerSignIn: false,
|
|
5630
|
-
PathRegex: `${this.ApplicationFormControls.RouteFormControl.value}.*`,
|
|
5631
|
-
QueryRegex: '',
|
|
5632
|
-
HeaderRegex: '',
|
|
5633
|
-
AllowedMethods: this.ProcessorDetailsFormControls.MethodsFormControl?.value
|
|
5634
|
-
?.split(' ')
|
|
5635
|
-
.filter((v) => !!v),
|
|
5636
|
-
},
|
|
5637
|
-
Processor: {
|
|
5638
|
-
Type: this.ProcessorDetailsFormControls.ProcessorType,
|
|
5639
|
-
},
|
|
5640
|
-
};
|
|
5641
|
-
switch (app.Processor.Type) {
|
|
5642
|
-
case 'DFS':
|
|
5643
|
-
app.Processor.BaseHref = `${this.ApplicationFormControls.RouteFormControl.value}/`.replace('//', '/');
|
|
5644
|
-
app.Processor.DefaultFile =
|
|
5645
|
-
this.ProcessorDetailsFormControls.DefaultFileFormControl.value || 'index.html';
|
|
5646
|
-
app.LowCodeUnit = {
|
|
5647
|
-
Type: this.ProcessorDetailsFormControls.LCUType,
|
|
5648
|
-
};
|
|
5649
|
-
switch (app.LowCodeUnit.Type) {
|
|
5650
|
-
case 'GitHub':
|
|
5651
|
-
app.LowCodeUnit.Organization =
|
|
5652
|
-
this.SourceControls[this.ProcessorDetailsFormControls.SourceControlFormControl.value].Organization;
|
|
5653
|
-
app.LowCodeUnit.Repository =
|
|
5654
|
-
this.SourceControls[this.ProcessorDetailsFormControls.SourceControlFormControl.value].Repository;
|
|
5655
|
-
app.LowCodeUnit.Build = this.ProcessorDetailsFormControls.BuildFormControl.value;
|
|
5656
|
-
app.LowCodeUnit.Path =
|
|
5657
|
-
this.ProcessorDetailsFormControls.BuildPathFormControl.value;
|
|
5658
|
-
break;
|
|
5659
|
-
case 'NPM':
|
|
5660
|
-
app.LowCodeUnit.Package = this.ProcessorDetailsFormControls.PackageFormControl.value;
|
|
5661
|
-
app.LowCodeUnit.Version = this.ProcessorDetailsFormControls.VersionFormControl.value;
|
|
5662
|
-
break;
|
|
5663
|
-
case 'Zip':
|
|
5664
|
-
app.LowCodeUnit.ZipFile = this.ProcessorDetailsFormControls.ZipFileFormControl.value;
|
|
5665
|
-
break;
|
|
5666
|
-
}
|
|
5667
|
-
break;
|
|
5668
|
-
case 'OAuth':
|
|
5669
|
-
app.Processor.Scopes = this.ProcessorDetailsFormControls.ScopesFormControl.value.split(' ');
|
|
5670
|
-
app.Processor.TokenLookup = this.ProcessorDetailsFormControls.TokenLookupFormControl.value;
|
|
5671
|
-
app.LowCodeUnit = {
|
|
5672
|
-
Type: this.ProcessorDetailsFormControls.LCUType,
|
|
5673
|
-
};
|
|
5674
|
-
switch (app.LowCodeUnit.Type) {
|
|
5675
|
-
case 'GitHubOAuth':
|
|
5676
|
-
app.LowCodeUnit.ClientID = this.ProcessorDetailsFormControls.ClientIDFormControl.value;
|
|
5677
|
-
app.LowCodeUnit.ClientSecret = this.ProcessorDetailsFormControls.ClientSecretFormControl.value;
|
|
5678
|
-
break;
|
|
5679
|
-
}
|
|
5680
|
-
break;
|
|
5681
|
-
case 'Proxy':
|
|
5682
|
-
app.Processor.InboundPath = this.ProcessorDetailsFormControls.InboundPathFormControl.value;
|
|
5683
|
-
app.LowCodeUnit = {
|
|
5684
|
-
Type: this.ProcessorDetailsFormControls.LCUType,
|
|
5685
|
-
};
|
|
5686
|
-
switch (app.LowCodeUnit.Type) {
|
|
5687
|
-
case 'API':
|
|
5688
|
-
app.LowCodeUnit.APIRoot = this.ProcessorDetailsFormControls.APIRootFormControl.value;
|
|
5689
|
-
app.LowCodeUnit.Security = this.ProcessorDetailsFormControls.SecurityFormControl.value;
|
|
5690
|
-
break;
|
|
5691
|
-
case 'SPA':
|
|
5692
|
-
app.LowCodeUnit.SPARoot = this.ProcessorDetailsFormControls.SPARootFormControl.value;
|
|
5693
|
-
break;
|
|
5694
|
-
}
|
|
5695
|
-
break;
|
|
5696
|
-
case 'Redirect':
|
|
5697
|
-
app.Processor.Permanent = !!this.ProcessorDetailsFormControls.PermanentFormControl.value;
|
|
5698
|
-
app.Processor.PreserveMethod = !!this.ProcessorDetailsFormControls.PreserveMethodFormControl.value;
|
|
5699
|
-
app.Processor.Redirect = this.ProcessorDetailsFormControls.RedirectFormControl.value;
|
|
5700
|
-
break;
|
|
5701
|
-
}
|
|
5702
|
-
if (!app.LookupConfig.PathRegex.startsWith('/')) {
|
|
5703
|
-
app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;
|
|
5704
|
-
}
|
|
5705
|
-
const saveAppReq = {
|
|
5706
|
-
ProjectLookup: this.data.projectLookup,
|
|
5707
|
-
Application: app,
|
|
5708
|
-
ApplicationLookup: this.NewApplicationLookup,
|
|
5709
|
-
};
|
|
5710
|
-
// this.HasBuildFormControl.value && taken out from below if statement
|
|
5711
|
-
if (this.ProcessorDetailsFormControls.ProcessorType !== 'redirect' && this.ProcessorDetailsFormControls.LCUType === 'GitHub') {
|
|
5712
|
-
if (app) {
|
|
5713
|
-
app.LowCodeUnit.SourceControlLookup = this.ProcessorDetailsFormControls.SourceControlFormControl.value;
|
|
5714
|
-
}
|
|
5715
|
-
}
|
|
5716
|
-
else if (app) {
|
|
5717
|
-
app.LowCodeUnit.SourceControlLookup = null;
|
|
5718
|
-
}
|
|
5719
|
-
// console.log("Save new App request: ", saveAppReq);
|
|
5720
|
-
this.eacSvc.SaveApplicationAsCode(saveAppReq).then(res => {
|
|
5721
|
-
this.handleSaveStatus(res);
|
|
5722
|
-
});
|
|
5764
|
+
this.dialogRef = dialogRef;
|
|
5765
|
+
this.data = data;
|
|
5766
|
+
this.snackBar = snackBar;
|
|
5723
5767
|
}
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
|
|
5768
|
+
get ApplicationFormGroup() {
|
|
5769
|
+
return this.EditApplicationControl?.ApplicationFormGroup;
|
|
5770
|
+
}
|
|
5771
|
+
get State() {
|
|
5772
|
+
return this.eacSvc.State;
|
|
5773
|
+
}
|
|
5774
|
+
ngOnInit() {
|
|
5775
|
+
}
|
|
5776
|
+
CloseDialog() {
|
|
5777
|
+
this.dialogRef.close();
|
|
5778
|
+
}
|
|
5779
|
+
HandleSaveApplicationEvent(event) {
|
|
5780
|
+
console.log("event to save: ", event);
|
|
5781
|
+
if (event.Code === 0) {
|
|
5782
|
+
this.snackBar.open("Application Succesfully Updated", "Dismiss", {
|
|
5728
5783
|
duration: 5000
|
|
5729
5784
|
});
|
|
5730
5785
|
this.CloseDialog();
|
|
5731
5786
|
}
|
|
5732
5787
|
else {
|
|
5733
|
-
this.ErrorMessage =
|
|
5788
|
+
this.ErrorMessage = event.Message;
|
|
5734
5789
|
}
|
|
5735
5790
|
}
|
|
5791
|
+
SaveApplication() {
|
|
5792
|
+
this.EditApplicationControl.SaveApplication();
|
|
5793
|
+
}
|
|
5736
5794
|
}
|
|
5737
|
-
|
|
5738
|
-
|
|
5739
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type:
|
|
5795
|
+
EditApplicationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EditApplicationDialogComponent, deps: [{ token: EaCService }, { token: i2$3.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3$1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component });
|
|
5796
|
+
EditApplicationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: EditApplicationDialogComponent, selector: "lcu-edit-application-dialog", viewQueries: [{ propertyName: "EditApplicationControl", first: true, predicate: EditApplicationFormComponent, descendants: true }], ngImport: i0, template: "<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", styles: [""], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: EditApplicationFormComponent, selector: "lcu-edit-application-form", inputs: ["application-lookup", "current-route", "editing-application", "has-save-button", "project-lookup"], outputs: ["save-form-event"] }], directives: [{ type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i2$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
|
|
5797
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EditApplicationDialogComponent, decorators: [{
|
|
5740
5798
|
type: Component,
|
|
5741
|
-
args: [{ selector: 'lcu-
|
|
5799
|
+
args: [{ selector: 'lcu-edit-application-dialog', template: "<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", styles: [""] }]
|
|
5742
5800
|
}], ctorParameters: function () { return [{ type: EaCService }, { type: i2$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
5743
5801
|
type: Inject,
|
|
5744
5802
|
args: [MAT_DIALOG_DATA]
|
|
5745
|
-
}] }, { type: i3$1.MatSnackBar }]; }, propDecorators: {
|
|
5803
|
+
}] }, { type: i3$1.MatSnackBar }]; }, propDecorators: { EditApplicationControl: [{
|
|
5746
5804
|
type: ViewChild,
|
|
5747
5805
|
args: [EditApplicationFormComponent]
|
|
5748
|
-
}], ProcessorDetailsFormControls: [{
|
|
5749
|
-
type: ViewChild,
|
|
5750
|
-
args: [ProcessorDetailsFormComponent]
|
|
5751
5806
|
}] } });
|
|
5752
5807
|
|
|
5753
5808
|
class ProcessorDetailsDialogComponent {
|
|
@@ -5817,10 +5872,10 @@ class SkeletonFeedCardComponent {
|
|
|
5817
5872
|
}
|
|
5818
5873
|
}
|
|
5819
5874
|
SkeletonFeedCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SkeletonFeedCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5820
|
-
SkeletonFeedCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: SkeletonFeedCardComponent, selector: "lcu-skeleton-feed-card", ngImport: i0, template: "<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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:
|
|
5875
|
+
SkeletonFeedCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: SkeletonFeedCardComponent, selector: "lcu-skeleton-feed-card", ngImport: i0, template: "<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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:25px;width:25px;font-size:25px;cursor:pointer}\n"], components: [{ type: i1$1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i1$1.MatCardHeader, selector: "mat-card-header" }, { type: i4$3.SkeletonAvatarComponent, selector: "skeleton-avatar", inputs: ["size", "color", "showIcon", "iconColor", "borderRadius", "effect"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { type: i1$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i4$3.SkeletonTextDirective, selector: "[skeleton-text]", inputs: ["effect"] }, { type: i1$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { type: i1$1.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i1$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }] });
|
|
5821
5876
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SkeletonFeedCardComponent, decorators: [{
|
|
5822
5877
|
type: Component,
|
|
5823
|
-
args: [{ selector: 'lcu-skeleton-feed-card', template: "<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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:
|
|
5878
|
+
args: [{ selector: 'lcu-skeleton-feed-card', template: "<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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:25px;width:25px;font-size:25px;cursor:pointer}\n"] }]
|
|
5824
5879
|
}], ctorParameters: function () { return []; } });
|
|
5825
5880
|
|
|
5826
5881
|
class EmulatedDevicesToggleComponent {
|
|
@@ -5939,391 +5994,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
5939
5994
|
}]
|
|
5940
5995
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.LCUServiceSettings }]; } });
|
|
5941
5996
|
|
|
5942
|
-
class FeedHeaderDialogComponent {
|
|
5943
|
-
constructor(appsFlowSvc, eacSvc, formBldr, dialogRef, data) {
|
|
5944
|
-
this.appsFlowSvc = appsFlowSvc;
|
|
5945
|
-
this.eacSvc = eacSvc;
|
|
5946
|
-
this.formBldr = formBldr;
|
|
5947
|
-
this.dialogRef = dialogRef;
|
|
5948
|
-
this.data = data;
|
|
5949
|
-
this.EditorConfig = {
|
|
5950
|
-
editable: true,
|
|
5951
|
-
spellcheck: true,
|
|
5952
|
-
height: '250px',
|
|
5953
|
-
minHeight: '0',
|
|
5954
|
-
maxHeight: 'auto',
|
|
5955
|
-
width: 'auto',
|
|
5956
|
-
minWidth: '0',
|
|
5957
|
-
translate: 'yes',
|
|
5958
|
-
enableToolbar: true,
|
|
5959
|
-
showToolbar: true,
|
|
5960
|
-
placeholder: 'Enter text here...',
|
|
5961
|
-
defaultParagraphSeparator: '',
|
|
5962
|
-
defaultFontName: '',
|
|
5963
|
-
defaultFontSize: '',
|
|
5964
|
-
fonts: [
|
|
5965
|
-
{ class: 'arial', name: 'Arial' },
|
|
5966
|
-
{ class: 'times-new-roman', name: 'Times New Roman' },
|
|
5967
|
-
{ class: 'calibri', name: 'Calibri' },
|
|
5968
|
-
{ class: 'comic-sans-ms', name: 'Comic Sans MS' }
|
|
5969
|
-
],
|
|
5970
|
-
customClasses: [
|
|
5971
|
-
{
|
|
5972
|
-
name: 'quote',
|
|
5973
|
-
class: 'quote',
|
|
5974
|
-
},
|
|
5975
|
-
{
|
|
5976
|
-
name: 'redText',
|
|
5977
|
-
class: 'redText'
|
|
5978
|
-
},
|
|
5979
|
-
{
|
|
5980
|
-
name: 'titleText',
|
|
5981
|
-
class: 'titleText',
|
|
5982
|
-
tag: 'h1',
|
|
5983
|
-
},
|
|
5984
|
-
],
|
|
5985
|
-
sanitize: true,
|
|
5986
|
-
toolbarPosition: 'top',
|
|
5987
|
-
toolbarHiddenButtons: [
|
|
5988
|
-
['subscript', 'superscript'],
|
|
5989
|
-
['fontSize']
|
|
5990
|
-
]
|
|
5991
|
-
};
|
|
5992
|
-
this.SlicesCount = 5;
|
|
5993
|
-
this.Slices = {
|
|
5994
|
-
Sources: this.SlicesCount,
|
|
5995
|
-
};
|
|
5996
|
-
if (this.SourceControlLookups.length === 1) {
|
|
5997
|
-
this.SourceControl = this.Environment?.Sources[this.SourceControlLookups[0]];
|
|
5998
|
-
}
|
|
5999
|
-
}
|
|
6000
|
-
get ActionIconControl() {
|
|
6001
|
-
return this.FeedHeaderFormGroup?.controls.actionIcon;
|
|
6002
|
-
}
|
|
6003
|
-
get ActionLinkControl() {
|
|
6004
|
-
return this.FeedHeaderFormGroup?.controls.actionLink;
|
|
6005
|
-
}
|
|
6006
|
-
get ActionTextControl() {
|
|
6007
|
-
return this.FeedHeaderFormGroup?.controls.actionText;
|
|
6008
|
-
}
|
|
6009
|
-
get EditorControl() {
|
|
6010
|
-
return this.FeedHeaderFormGroup?.controls.editor;
|
|
6011
|
-
}
|
|
6012
|
-
get Environment() {
|
|
6013
|
-
return this.State?.EaC?.Environments[this.State?.EaC?.Enterprise?.PrimaryEnvironment];
|
|
6014
|
-
}
|
|
6015
|
-
get TargetBranchFormControl() {
|
|
6016
|
-
return this.FeedHeaderFormGroup.controls.targetBranch;
|
|
6017
|
-
}
|
|
6018
|
-
get OrganizationFormControl() {
|
|
6019
|
-
return this.FeedHeaderFormGroup.controls.organization;
|
|
6020
|
-
}
|
|
6021
|
-
get SourceBranchFormControl() {
|
|
6022
|
-
return this.FeedHeaderFormGroup.controls.sourceBranch;
|
|
6023
|
-
}
|
|
6024
|
-
get RepositoryFormControl() {
|
|
6025
|
-
return this.FeedHeaderFormGroup.controls.repository;
|
|
6026
|
-
}
|
|
6027
|
-
get SourceControlFormControl() {
|
|
6028
|
-
return this.FeedHeaderFormGroup.controls.sourceControl;
|
|
6029
|
-
}
|
|
6030
|
-
get SourceControlLookups() {
|
|
6031
|
-
return this.State.FeedSourceControlLookups
|
|
6032
|
-
? this.State.FeedSourceControlLookups
|
|
6033
|
-
: Object.keys(this.SourceControls || {});
|
|
6034
|
-
}
|
|
6035
|
-
get SourceControls() {
|
|
6036
|
-
return this.Environment?.Sources || {};
|
|
6037
|
-
}
|
|
6038
|
-
get SubtitleFormControl() {
|
|
6039
|
-
return this.FeedHeaderFormGroup.controls.subtitle;
|
|
6040
|
-
}
|
|
6041
|
-
get State() {
|
|
6042
|
-
return this.eacSvc.State;
|
|
6043
|
-
}
|
|
6044
|
-
get TitleFormControl() {
|
|
6045
|
-
return this.FeedHeaderFormGroup?.controls.title;
|
|
6046
|
-
}
|
|
6047
|
-
ngOnInit() {
|
|
6048
|
-
this.setupFeedHeaderForm();
|
|
6049
|
-
}
|
|
6050
|
-
CloseDialog() {
|
|
6051
|
-
this.dialogRef.close();
|
|
6052
|
-
}
|
|
6053
|
-
HandleAction() {
|
|
6054
|
-
if (this.ActionLinkControl.value.startsWith('http')) {
|
|
6055
|
-
window.open(this.ActionLinkControl.value, '_blank');
|
|
6056
|
-
}
|
|
6057
|
-
else {
|
|
6058
|
-
window.location.href = this.ActionLinkControl.value;
|
|
6059
|
-
}
|
|
6060
|
-
}
|
|
6061
|
-
PullRequestSourceControlChanged(event) {
|
|
6062
|
-
this.SourceControl = this.SourceControls[this.SourceControlFormControl.value];
|
|
6063
|
-
this.listBranches();
|
|
6064
|
-
}
|
|
6065
|
-
FeatureBranchSourceControlChanged(event) {
|
|
6066
|
-
this.SourceControl = this.SourceControls[this.SourceControlFormControl.value];
|
|
6067
|
-
this.listOrganizations();
|
|
6068
|
-
}
|
|
6069
|
-
IssueSourceControlChanged(event) {
|
|
6070
|
-
this.SourceControl = this.SourceControls[this.SourceControlFormControl.value];
|
|
6071
|
-
}
|
|
6072
|
-
Submit() {
|
|
6073
|
-
let returnObject = {
|
|
6074
|
-
ActionIcon: this.ActionIconControl ? this.ActionIconControl.value : null,
|
|
6075
|
-
ActionLink: this.ActionLinkControl ? this.ActionLinkControl.value : null,
|
|
6076
|
-
ActionText: this.ActionTextControl ? this.ActionTextControl.value : null,
|
|
6077
|
-
Avatar: null,
|
|
6078
|
-
Content: this.EditorControl ? this.EditorControl.value : null,
|
|
6079
|
-
ExpiresAt: null,
|
|
6080
|
-
Organization: this.OrganizationFormControl ? this.OrganizationFormControl.value : null,
|
|
6081
|
-
Repositroy: this.RepositoryFormControl ? this.RepositoryFormControl.value : null,
|
|
6082
|
-
SourceBranch: this.SourceBranchFormControl ? this.SourceBranchFormControl.value : null,
|
|
6083
|
-
SourceControlLookup: this.SourceControlFormControl ? this.SourceBranchFormControl.value : null,
|
|
6084
|
-
Subtitle: this.SubtitleFormControl ? this.SubtitleFormControl.value : null,
|
|
6085
|
-
TargetBranch: this.TargetBranchFormControl ? this.TargetBranchFormControl.value : null,
|
|
6086
|
-
Type: this.data.type,
|
|
6087
|
-
Title: this.TitleFormControl ? this.TitleFormControl.value : null,
|
|
6088
|
-
};
|
|
6089
|
-
console.log("Control: ", returnObject);
|
|
6090
|
-
let status = this.eacSvc.SubmitFeedEntry(returnObject);
|
|
6091
|
-
console.log("feed entry status: ", status);
|
|
6092
|
-
// console.log("Editor: ", this.EditorControl.value )
|
|
6093
|
-
}
|
|
6094
|
-
OrganizationChanged(event) {
|
|
6095
|
-
this.RepositoryFormControl.reset();
|
|
6096
|
-
this.listRepositories();
|
|
6097
|
-
}
|
|
6098
|
-
RepositoryChanged(event) {
|
|
6099
|
-
this.listBranches();
|
|
6100
|
-
}
|
|
6101
|
-
//HELPERS
|
|
6102
|
-
listBranches() {
|
|
6103
|
-
// this.Loading = true;
|
|
6104
|
-
this.appsFlowSvc
|
|
6105
|
-
.ListBranches(this.SourceControl?.Organization, this.SourceControl?.Repository)
|
|
6106
|
-
.subscribe((response) => {
|
|
6107
|
-
this.BranchOptions = response.Model;
|
|
6108
|
-
// this.Loading = false;
|
|
6109
|
-
// if (this.EditingSourceControl?.Branches?.length > 0) {
|
|
6110
|
-
// this.SelectedBranches = this.EditingSourceControl.Branches;
|
|
6111
|
-
// } else if (this.BranchOptions?.length === 1) {
|
|
6112
|
-
// this.BranchesFormControl.setValue(this.BranchOptions[0].Name);
|
|
6113
|
-
// this.SelectedBranches = [this.BranchOptions[0].Name];
|
|
6114
|
-
// }
|
|
6115
|
-
});
|
|
6116
|
-
}
|
|
6117
|
-
listOrganizations() {
|
|
6118
|
-
// this.Loading = true;
|
|
6119
|
-
this.appsFlowSvc
|
|
6120
|
-
.ListOrganizations()
|
|
6121
|
-
.subscribe((response) => {
|
|
6122
|
-
this.OrganizationOptions = response.Model;
|
|
6123
|
-
console.log("Organization Options: ", this.OrganizationOptions);
|
|
6124
|
-
// this.Loading = false;
|
|
6125
|
-
if (this.SourceControl?.Organization) {
|
|
6126
|
-
setTimeout(() => {
|
|
6127
|
-
this.OrganizationFormControl.setValue(this.SourceControl.Organization);
|
|
6128
|
-
this.listRepositories(this.SourceControl?.Repository);
|
|
6129
|
-
}, 0);
|
|
6130
|
-
}
|
|
6131
|
-
});
|
|
6132
|
-
}
|
|
6133
|
-
listRepositories(activeRepo = null) {
|
|
6134
|
-
// this.Loading = true;
|
|
6135
|
-
this.appsFlowSvc
|
|
6136
|
-
.ListRepositories(this.OrganizationFormControl.value)
|
|
6137
|
-
.subscribe((response) => {
|
|
6138
|
-
this.RepositoryOptions = response.Model;
|
|
6139
|
-
// this.Loading = false;
|
|
6140
|
-
if (activeRepo) {
|
|
6141
|
-
setTimeout(() => {
|
|
6142
|
-
this.RepositoryFormControl.setValue(activeRepo);
|
|
6143
|
-
this.listBranches();
|
|
6144
|
-
}, 0);
|
|
6145
|
-
}
|
|
6146
|
-
});
|
|
6147
|
-
}
|
|
6148
|
-
setupFeedHeaderForm() {
|
|
6149
|
-
this.FeedHeaderFormGroup = this.formBldr.group({});
|
|
6150
|
-
switch (this.data.type) {
|
|
6151
|
-
case "announcement":
|
|
6152
|
-
this.setupAnnouncementForm();
|
|
6153
|
-
break;
|
|
6154
|
-
case "pull-request":
|
|
6155
|
-
this.setupPRForm();
|
|
6156
|
-
break;
|
|
6157
|
-
case "issue":
|
|
6158
|
-
this.setupIssueForm();
|
|
6159
|
-
break;
|
|
6160
|
-
case "branch":
|
|
6161
|
-
this.setupFeatureBranchForm();
|
|
6162
|
-
break;
|
|
6163
|
-
default:
|
|
6164
|
-
//
|
|
6165
|
-
break;
|
|
6166
|
-
}
|
|
6167
|
-
}
|
|
6168
|
-
setupAnnouncementForm() {
|
|
6169
|
-
this.setupBasicForm();
|
|
6170
|
-
this.FeedHeaderFormGroup.addControl('subtitle', this.formBldr.control(''));
|
|
6171
|
-
this.FeedHeaderFormGroup.addControl('actionText', this.formBldr.control(''));
|
|
6172
|
-
this.FeedHeaderFormGroup.addControl('actionLink', this.formBldr.control(''));
|
|
6173
|
-
this.FeedHeaderFormGroup.addControl('actionIcon', this.formBldr.control(''));
|
|
6174
|
-
}
|
|
6175
|
-
setupPRForm() {
|
|
6176
|
-
this.listBranches();
|
|
6177
|
-
this.setupIssueForm();
|
|
6178
|
-
this.setupBranchesForm();
|
|
6179
|
-
}
|
|
6180
|
-
setupBasicForm() {
|
|
6181
|
-
this.FeedHeaderFormGroup.addControl('title', this.formBldr.control('', [Validators.required]));
|
|
6182
|
-
this.FeedHeaderFormGroup.addControl('editor', this.formBldr.control(''));
|
|
6183
|
-
}
|
|
6184
|
-
setupIssueForm() {
|
|
6185
|
-
this.setupBasicForm();
|
|
6186
|
-
this.setupSourceControlForm();
|
|
6187
|
-
}
|
|
6188
|
-
setupFeatureBranchForm() {
|
|
6189
|
-
this.setupSourceControlForm();
|
|
6190
|
-
this.FeedHeaderFormGroup.addControl('organization', this.formBldr.control(''));
|
|
6191
|
-
this.FeedHeaderFormGroup.addControl('repository', this.formBldr.control(''));
|
|
6192
|
-
this.setupBranchesForm();
|
|
6193
|
-
}
|
|
6194
|
-
setupSourceControlForm() {
|
|
6195
|
-
this.FeedHeaderFormGroup.addControl('sourceControl', this.formBldr.control(''));
|
|
6196
|
-
}
|
|
6197
|
-
setupBranchesForm() {
|
|
6198
|
-
this.FeedHeaderFormGroup.addControl('targetBranch', this.formBldr.control(''));
|
|
6199
|
-
this.FeedHeaderFormGroup.addControl('sourceBranch', this.formBldr.control(''));
|
|
6200
|
-
}
|
|
6201
|
-
}
|
|
6202
|
-
FeedHeaderDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FeedHeaderDialogComponent, deps: [{ token: ApplicationsFlowService }, { token: EaCService }, { token: i1$2.FormBuilder }, { token: i2$3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
6203
|
-
FeedHeaderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: FeedHeaderDialogComponent, selector: "lcu-feed-header-dialog", ngImport: i0, template: "<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 === 'issue' \">\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 === 'pull-request' \">\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\">\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 === 'branch' \">\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\n\n\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", styles: [""], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i10.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["html", "viewMode", "blur", "focus"] }], directives: [{ type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i2$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i4$1.MatLabel, selector: "mat-label" }, { type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i2$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "slice": i9.SlicePipe } });
|
|
6204
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FeedHeaderDialogComponent, decorators: [{
|
|
6205
|
-
type: Component,
|
|
6206
|
-
args: [{ selector: 'lcu-feed-header-dialog', template: "<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 === 'issue' \">\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 === 'pull-request' \">\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\">\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 === 'branch' \">\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\n\n\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", styles: [""] }]
|
|
6207
|
-
}], ctorParameters: function () { return [{ type: ApplicationsFlowService }, { type: EaCService }, { type: i1$2.FormBuilder }, { type: i2$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
6208
|
-
type: Inject,
|
|
6209
|
-
args: [MAT_DIALOG_DATA]
|
|
6210
|
-
}] }]; } });
|
|
6211
|
-
|
|
6212
|
-
class FeedHeaderComponent {
|
|
6213
|
-
constructor(eacSvc, dialog) {
|
|
6214
|
-
this.eacSvc = eacSvc;
|
|
6215
|
-
this.dialog = dialog;
|
|
6216
|
-
this.SkeletonEffect = "wave";
|
|
6217
|
-
// this.selectedBtn = "pr-btn";
|
|
6218
|
-
}
|
|
6219
|
-
get ActiveEnvironmentLookup() {
|
|
6220
|
-
// TODO: Eventually support multiple environments
|
|
6221
|
-
const envLookups = Object.keys(this.State?.EaC?.Environments || {});
|
|
6222
|
-
return envLookups[0];
|
|
6223
|
-
}
|
|
6224
|
-
get State() {
|
|
6225
|
-
return this.eacSvc.State;
|
|
6226
|
-
}
|
|
6227
|
-
ngOnInit() {
|
|
6228
|
-
}
|
|
6229
|
-
ngAfterViewInit() {
|
|
6230
|
-
this.addSelectBtn();
|
|
6231
|
-
}
|
|
6232
|
-
CreateAnnouncement() {
|
|
6233
|
-
this.ModalHeader = "Create Team Announcement";
|
|
6234
|
-
this.OpenFHDialog('announcement');
|
|
6235
|
-
}
|
|
6236
|
-
CreateFeatureBranch() {
|
|
6237
|
-
this.removeSelectedBtn();
|
|
6238
|
-
this.ModalHeader = "Create Feature Branch";
|
|
6239
|
-
this.selectedBtn = "fb-btn";
|
|
6240
|
-
this.addSelectBtn();
|
|
6241
|
-
console.log("create feature branch selected");
|
|
6242
|
-
this.OpenFHDialog('branch');
|
|
6243
|
-
}
|
|
6244
|
-
OpenIssue() {
|
|
6245
|
-
this.removeSelectedBtn();
|
|
6246
|
-
this.ModalHeader = "Open Issue";
|
|
6247
|
-
this.selectedBtn = "oi-btn";
|
|
6248
|
-
this.addSelectBtn();
|
|
6249
|
-
console.log("open issue selected");
|
|
6250
|
-
this.OpenFHDialog('issue');
|
|
6251
|
-
}
|
|
6252
|
-
CreatePullRequest() {
|
|
6253
|
-
this.removeSelectedBtn();
|
|
6254
|
-
this.ModalHeader = "Create Pull Request";
|
|
6255
|
-
this.selectedBtn = "pr-btn";
|
|
6256
|
-
this.addSelectBtn();
|
|
6257
|
-
console.log("create pull request selected");
|
|
6258
|
-
this.OpenFHDialog('pull-request');
|
|
6259
|
-
}
|
|
6260
|
-
CreateNewApp() {
|
|
6261
|
-
const dialogRef = this.dialog.open(NewApplicationDialogComponent, {
|
|
6262
|
-
width: '600px',
|
|
6263
|
-
data: {
|
|
6264
|
-
environmentLookup: this.ActiveEnvironmentLookup,
|
|
6265
|
-
},
|
|
6266
|
-
});
|
|
6267
|
-
dialogRef.afterClosed().subscribe((result) => {
|
|
6268
|
-
// console.log('The dialog was closed');
|
|
6269
|
-
// console.log("result:", result)
|
|
6270
|
-
});
|
|
6271
|
-
}
|
|
6272
|
-
OpenFHDialog(modalType) {
|
|
6273
|
-
const dialogRef = this.dialog.open(FeedHeaderDialogComponent, {
|
|
6274
|
-
width: '600px',
|
|
6275
|
-
data: {
|
|
6276
|
-
dialogTitle: this.ModalHeader,
|
|
6277
|
-
type: modalType,
|
|
6278
|
-
sourceControlLookup: this.SourceControlLookup ? this.SourceControlLookup : null
|
|
6279
|
-
},
|
|
6280
|
-
});
|
|
6281
|
-
dialogRef.afterClosed().subscribe((result) => {
|
|
6282
|
-
// console.log('The dialog was closed');
|
|
6283
|
-
// console.log("result:", result)
|
|
6284
|
-
});
|
|
6285
|
-
}
|
|
6286
|
-
RouteToPath(path) {
|
|
6287
|
-
window.location.href = path;
|
|
6288
|
-
}
|
|
6289
|
-
Submit() {
|
|
6290
|
-
console.log("submitting: ", this.value);
|
|
6291
|
-
switch (this.selectedBtn) {
|
|
6292
|
-
case "pr-btn":
|
|
6293
|
-
//Pull request
|
|
6294
|
-
console.log("creating pull request: ", this.value);
|
|
6295
|
-
break;
|
|
6296
|
-
case "oi-btn":
|
|
6297
|
-
//Open Issue
|
|
6298
|
-
console.log("Open issue: ", this.value);
|
|
6299
|
-
break;
|
|
6300
|
-
case "fb-btn":
|
|
6301
|
-
//Feature Branch
|
|
6302
|
-
console.log("creating feature branch: ", this.value);
|
|
6303
|
-
break;
|
|
6304
|
-
default:
|
|
6305
|
-
console.log("hmm");
|
|
6306
|
-
break;
|
|
6307
|
-
}
|
|
6308
|
-
}
|
|
6309
|
-
//HELPERS
|
|
6310
|
-
addSelectBtn() {
|
|
6311
|
-
document.getElementById(this.selectedBtn)?.classList.add('selected');
|
|
6312
|
-
}
|
|
6313
|
-
removeSelectedBtn() {
|
|
6314
|
-
document.getElementById(this.selectedBtn)?.classList.remove('selected');
|
|
6315
|
-
}
|
|
6316
|
-
}
|
|
6317
|
-
FeedHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FeedHeaderComponent, deps: [{ token: EaCService }, { token: i2$3.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
6318
|
-
FeedHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: FeedHeaderComponent, selector: "lcu-feed-header", inputs: { SourceControlLookup: ["source-control-lookup", "SourceControlLookup"] }, ngImport: i0, template: "<mat-card class=\"social-card\">\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\" 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 <button \n mat-button \n (click)=\"CreatePullRequest()\" \n id=\"pr-btn\" \n color=\"primary\"\n >\n Pull Request\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?.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=\"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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:24px;width:24px;font-size:24px;cursor:pointer}.gh-icon{width:60px;height:60px;font-size:60px;text-align:center}.gh-input{width:90%}.main-btn{width:90%;height:50px;border-radius:30px;border:1px solid}.selected{border:1px solid green}.gh-input ::ng-deep .mat-form-field-flex{border:1px solid;border-radius:30px!important}.gh-input ::ng-deep .mat-form-field-wrapper{padding-bottom:0!important}.gh-input ::ng-deep .mat-form-field-underline{display:none}\n"], components: [{ type: i1$1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4$3.SkeletonAvatarComponent, selector: "skeleton-avatar", inputs: ["size", "color", "showIcon", "iconColor", "borderRadius", "effect"] }, { type: i4$3.SkeletonBlockComponent, selector: "skeleton-block", inputs: ["width", "height", "effect", "borderRadius"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i1$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { type: i4$3.SkeletonTextDirective, selector: "[skeleton-text]", inputs: ["effect"] }] });
|
|
6319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FeedHeaderComponent, decorators: [{
|
|
6320
|
-
type: Component,
|
|
6321
|
-
args: [{ selector: 'lcu-feed-header', template: "<mat-card class=\"social-card\">\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\" 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 <button \n mat-button \n (click)=\"CreatePullRequest()\" \n id=\"pr-btn\" \n color=\"primary\"\n >\n Pull Request\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?.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=\"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", styles: [":host ::ng-deep .social-card{margin:20px;padding:15px 5px}:host ::ng-deep mat-card-actions{margin-bottom:-1px!important;margin-left:0!important;margin-right:-.5px!important}:host ::ng-deep .main-slot-container{padding:10px}:host ::ng-deep .slot-header{align-items:center}:host ::ng-deep .slot-content{width:100%}:host ::ng-deep .slot-name{font-size:13px;font-weight:600}:host ::ng-deep .slot-description{font-size:12px;margin-right:10px}:host ::ng-deep .slot-action-anchor{font-size:10px;text-decoration:none;color:#000}:host ::ng-deep .action-icon{height:24px;width:24px;font-size:24px;cursor:pointer}.gh-icon{width:60px;height:60px;font-size:60px;text-align:center}.gh-input{width:90%}.main-btn{width:90%;height:50px;border-radius:30px;border:1px solid}.selected{border:1px solid green}.gh-input ::ng-deep .mat-form-field-flex{border:1px solid;border-radius:30px!important}.gh-input ::ng-deep .mat-form-field-wrapper{padding-bottom:0!important}.gh-input ::ng-deep .mat-form-field-underline{display:none}\n"] }]
|
|
6322
|
-
}], ctorParameters: function () { return [{ type: EaCService }, { type: i2$3.MatDialog }]; }, propDecorators: { SourceControlLookup: [{
|
|
6323
|
-
type: Input,
|
|
6324
|
-
args: ['source-control-lookup']
|
|
6325
|
-
}] } });
|
|
6326
|
-
|
|
6327
5997
|
class ApplicationsFlowModule {
|
|
6328
5998
|
static forRoot() {
|
|
6329
5999
|
return {
|
|
@@ -6368,7 +6038,7 @@ ApplicationsFlowModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
6368
6038
|
ProjectInfoCardComponent,
|
|
6369
6039
|
AnalyticsCardComponent,
|
|
6370
6040
|
FeedCardSmComponent,
|
|
6371
|
-
|
|
6041
|
+
GhControlComponent,
|
|
6372
6042
|
MainFeedCardComponent,
|
|
6373
6043
|
TwoColumnHeaderComponent,
|
|
6374
6044
|
CardCarouselComponent,
|
|
@@ -6387,9 +6057,7 @@ ApplicationsFlowModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
6387
6057
|
ProcessorDetailsDialogComponent,
|
|
6388
6058
|
SkeletonFeedCardComponent,
|
|
6389
6059
|
UpgradeDialogComponent,
|
|
6390
|
-
EmulatedDevicesToggleComponent,
|
|
6391
|
-
FeedHeaderDialogComponent], imports: [AngularEditorModule,
|
|
6392
|
-
ClipboardModule,
|
|
6060
|
+
EmulatedDevicesToggleComponent], imports: [ClipboardModule,
|
|
6393
6061
|
FathymSharedModule,
|
|
6394
6062
|
FormsModule,
|
|
6395
6063
|
ReactiveFormsModule,
|
|
@@ -6427,8 +6095,7 @@ ApplicationsFlowModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
6427
6095
|
ProjectInfoCardComponent,
|
|
6428
6096
|
AnalyticsCardComponent,
|
|
6429
6097
|
FeedCardSmComponent,
|
|
6430
|
-
|
|
6431
|
-
FeedHeaderDialogComponent,
|
|
6098
|
+
GhControlComponent,
|
|
6432
6099
|
MainFeedCardComponent,
|
|
6433
6100
|
TwoColumnHeaderComponent,
|
|
6434
6101
|
CardCarouselComponent,
|
|
@@ -6447,10 +6114,8 @@ ApplicationsFlowModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
6447
6114
|
ProcessorDetailsDialogComponent,
|
|
6448
6115
|
SkeletonFeedCardComponent,
|
|
6449
6116
|
UpgradeDialogComponent,
|
|
6450
|
-
EmulatedDevicesToggleComponent
|
|
6451
|
-
FeedHeaderDialogComponent] });
|
|
6117
|
+
EmulatedDevicesToggleComponent] });
|
|
6452
6118
|
ApplicationsFlowModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ApplicationsFlowModule, imports: [[
|
|
6453
|
-
AngularEditorModule,
|
|
6454
6119
|
ClipboardModule,
|
|
6455
6120
|
FathymSharedModule,
|
|
6456
6121
|
FormsModule,
|
|
@@ -6494,7 +6159,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
6494
6159
|
ProjectInfoCardComponent,
|
|
6495
6160
|
AnalyticsCardComponent,
|
|
6496
6161
|
FeedCardSmComponent,
|
|
6497
|
-
|
|
6162
|
+
GhControlComponent,
|
|
6498
6163
|
MainFeedCardComponent,
|
|
6499
6164
|
TwoColumnHeaderComponent,
|
|
6500
6165
|
CardCarouselComponent,
|
|
@@ -6513,11 +6178,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
6513
6178
|
ProcessorDetailsDialogComponent,
|
|
6514
6179
|
SkeletonFeedCardComponent,
|
|
6515
6180
|
UpgradeDialogComponent,
|
|
6516
|
-
EmulatedDevicesToggleComponent
|
|
6517
|
-
FeedHeaderDialogComponent
|
|
6181
|
+
EmulatedDevicesToggleComponent
|
|
6518
6182
|
],
|
|
6519
6183
|
imports: [
|
|
6520
|
-
AngularEditorModule,
|
|
6521
6184
|
ClipboardModule,
|
|
6522
6185
|
FathymSharedModule,
|
|
6523
6186
|
FormsModule,
|
|
@@ -6558,8 +6221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
6558
6221
|
ProjectInfoCardComponent,
|
|
6559
6222
|
AnalyticsCardComponent,
|
|
6560
6223
|
FeedCardSmComponent,
|
|
6561
|
-
|
|
6562
|
-
FeedHeaderDialogComponent,
|
|
6224
|
+
GhControlComponent,
|
|
6563
6225
|
MainFeedCardComponent,
|
|
6564
6226
|
TwoColumnHeaderComponent,
|
|
6565
6227
|
CardCarouselComponent,
|
|
@@ -6578,8 +6240,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
6578
6240
|
ProcessorDetailsDialogComponent,
|
|
6579
6241
|
SkeletonFeedCardComponent,
|
|
6580
6242
|
UpgradeDialogComponent,
|
|
6581
|
-
EmulatedDevicesToggleComponent
|
|
6582
|
-
FeedHeaderDialogComponent
|
|
6243
|
+
EmulatedDevicesToggleComponent
|
|
6583
6244
|
],
|
|
6584
6245
|
entryComponents: [
|
|
6585
6246
|
ApplicationsFlowProjectsElementComponent,
|
|
@@ -6606,7 +6267,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
6606
6267
|
ProjectInfoCardComponent,
|
|
6607
6268
|
AnalyticsCardComponent,
|
|
6608
6269
|
FeedCardSmComponent,
|
|
6609
|
-
|
|
6270
|
+
GhControlComponent,
|
|
6610
6271
|
MainFeedCardComponent,
|
|
6611
6272
|
TwoColumnHeaderComponent,
|
|
6612
6273
|
CardCarouselComponent,
|
|
@@ -6645,8 +6306,6 @@ class FeedItemAction {
|
|
|
6645
6306
|
}
|
|
6646
6307
|
class FeedItemTab {
|
|
6647
6308
|
}
|
|
6648
|
-
class FeedEntry {
|
|
6649
|
-
}
|
|
6650
6309
|
|
|
6651
6310
|
class ActionsModel {
|
|
6652
6311
|
}
|
|
@@ -6670,5 +6329,5 @@ class FormModel {
|
|
|
6670
6329
|
* Generated bundle index. Do not edit.
|
|
6671
6330
|
*/
|
|
6672
6331
|
|
|
6673
|
-
export { ActionsModel, AnalyticsCardComponent, ApplicationsFlowModule, ApplicationsFlowProjectsContext, ApplicationsFlowProjectsElementComponent, ApplicationsFlowProjectsElementState, ApplicationsFlowService, ApplicationsFlowState, ApplicationsFlowStateContext, AppsFlowComponent, BaseFormComponent, BaseFormConfigModel, BaseFormTestComponent, BreadcrumbComponent, BuildPipelineDialogComponent, BuildPipelineFormComponent, BuildsComponent, CardCarouselComponent, CardFormConfigModel, CreateProjectWizardComponent, CustomDomainDialogComponent, DFSModifiersComponent, DevOpsComponent, DevSettingsPresetModel, DevopsSourceControlFormComponent, DomainModel, DomainsComponent, DynamicTabsComponent, DynamicTabsModel, EaCService, EditApplicationDialogComponent, EditApplicationFormComponent, EmulatedDevicesToggleComponent, FeedCardSmComponent,
|
|
6332
|
+
export { ActionsModel, AnalyticsCardComponent, ApplicationsFlowModule, ApplicationsFlowProjectsContext, ApplicationsFlowProjectsElementComponent, ApplicationsFlowProjectsElementState, ApplicationsFlowService, ApplicationsFlowState, ApplicationsFlowStateContext, AppsFlowComponent, BaseFormComponent, BaseFormConfigModel, BaseFormTestComponent, BreadcrumbComponent, BuildPipelineDialogComponent, BuildPipelineFormComponent, BuildsComponent, CardCarouselComponent, CardFormConfigModel, CreateProjectWizardComponent, CustomDomainDialogComponent, DFSModifiersComponent, DevOpsComponent, DevSettingsPresetModel, DevopsSourceControlFormComponent, DomainModel, DomainsComponent, DynamicTabsComponent, DynamicTabsModel, EaCService, EditApplicationDialogComponent, EditApplicationFormComponent, EmulatedDevicesToggleComponent, FeedCardSmComponent, FeedItem, FeedItemAction, FeedItemContributor, FeedItemTab, FlowToolComponent, FormActionsModel, FormCardComponent, FormModel, FormValuesModel, FormsService, GhControlComponent, GitAuthComponent, GitHubBranch, GitHubOrganization, GitHubRepository, GitHubSetupState, GitHubWorkflowRun, HeaderComponent, HostingDetailsFormGroupComponent, IoTEnsembleService, MainFeedCardComponent, NPMService, NewApplicationDialogComponent, NpmPackageSelectComponent, ProcessorDetailsDialogComponent, ProcessorDetailsFormComponent, ProjectActionsModel, ProjectHostingDetails, ProjectHostingOption, ProjectHostingOptionInput, ProjectInfoCardComponent, ProjectItemsComponent, ProjectNameComponent, ProjectService, ProjectTabsComponent, RecentActivitiesComponent, RootDirectoryComponent, SELECTOR_APPLICATIONS_FLOW_PROJECTS_ELEMENT, SaveApplicationAsCodeEventRequest, SaveDFSModifierEventRequest, SaveEnvironmentAsCodeEventRequest, SaveProjectAsCodeEventRequest, SecurityToggleComponent, SkeletonFeedCardComponent, SlottedCardComponent, SourceControlDialogComponent, SourceControlFormComponent, SourceControlFormControlsComponent, ThreeColumnComponent, TwoColumnHeaderComponent, UnpackLowCodeUnitRequest, UpgradeDialogComponent, UserFeedResponse };
|
|
6674
6333
|
//# sourceMappingURL=lowcodeunit-applications-flow-common.mjs.map
|