@lowcodeunit/applications-flow-common 1.34.4-social-ui-bug-fixes → 1.34.7-lets-get-social-ish
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lcu.api.mjs +3 -3
- package/esm2020/lib/applications-flow.module.mjs +22 -11
- 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/dialogs/feed-header-dialog/feed-header-dialog.component.mjs +287 -0
- package/esm2020/lib/elements/feed-card-sm/feed-card-sm.component.mjs +2 -2
- package/esm2020/lib/elements/feed-header/feed-header.component.mjs +131 -0
- package/esm2020/lib/elements/main-feed-card/main-feed-card.component.mjs +2 -2
- package/esm2020/lib/elements/projects/controls/git-auth/git-auth.component.mjs +3 -2
- package/esm2020/lib/elements/projects/controls/tabs/domains/domains.component.mjs +2 -2
- package/esm2020/lib/elements/skeleton-feed-card/skeleton-feed-card.component.mjs +2 -2
- package/esm2020/lib/models/user-feed.model.mjs +3 -1
- package/esm2020/lib/services/applications-flow.service.mjs +8 -1
- package/esm2020/lib/services/eac.service.mjs +4 -1
- package/esm2020/lib/services/project.service.mjs +25 -1
- package/esm2020/lib/state/applications-flow.state.mjs +1 -1
- package/fesm2015/lowcodeunit-applications-flow-common.mjs +1716 -1352
- package/fesm2015/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/fesm2020/lowcodeunit-applications-flow-common.mjs +1636 -1292
- package/fesm2020/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/lcu.api.d.ts +2 -2
- package/lib/applications-flow.module.d.ts +12 -10
- package/lib/dialogs/feed-header-dialog/feed-header-dialog.component.d.ts +71 -0
- package/lib/elements/{gh-control/gh-control.component.d.ts → feed-header/feed-header.component.d.ts} +9 -7
- package/lib/models/user-feed.model.d.ts +17 -0
- package/lib/services/applications-flow.service.d.ts +2 -0
- package/lib/services/eac.service.d.ts +2 -1
- package/lib/services/project.service.d.ts +2 -1
- package/lib/state/applications-flow.state.d.ts +2 -1
- package/package.json +1 -1
- package/esm2020/lib/elements/gh-control/gh-control.component.mjs +0 -107
|
@@ -42,11 +42,13 @@ 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 { EaCApplicationAsCode } from '@semanticjs/common';
|
|
46
|
-
import * as i3$1 from '@angular/material/snack-bar';
|
|
47
|
-
import * as i7$1 from '@angular/material/menu';
|
|
48
45
|
import moment from 'moment';
|
|
46
|
+
import * as i3$1 from '@angular/material/snack-bar';
|
|
49
47
|
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';
|
|
50
52
|
|
|
51
53
|
/**
|
|
52
54
|
* Model for form values
|
|
@@ -308,6 +310,13 @@ class ApplicationsFlowService {
|
|
|
308
310
|
headers: this.loadHeaders(),
|
|
309
311
|
});
|
|
310
312
|
}
|
|
313
|
+
SubmitFeedEntry(entry) {
|
|
314
|
+
return this.http.post(`${this.apiRoot}/api/lowcodeunit/userfeed/entry`, {
|
|
315
|
+
FeedEntry: entry,
|
|
316
|
+
}, {
|
|
317
|
+
headers: this.loadHeaders(),
|
|
318
|
+
});
|
|
319
|
+
}
|
|
311
320
|
UnpackLowCodeUnit(req) {
|
|
312
321
|
return this.http.post(`${this.apiRoot}/api/lowcodeunit/manage/projects/unpack`, req, {
|
|
313
322
|
headers: this.loadHeaders(),
|
|
@@ -587,6 +596,7 @@ class ProjectService {
|
|
|
587
596
|
if (response.Status.Code === 0) {
|
|
588
597
|
state.Feed = response.Items;
|
|
589
598
|
state.FeedSourceControlLookups = response.SourceControlLookups;
|
|
599
|
+
state.FeedActions = response.Actions;
|
|
590
600
|
// console.log("ITEMZ: ", response.Items)
|
|
591
601
|
resolve(response.Items);
|
|
592
602
|
}
|
|
@@ -675,6 +685,29 @@ class ProjectService {
|
|
|
675
685
|
}
|
|
676
686
|
});
|
|
677
687
|
}
|
|
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
|
+
}
|
|
678
711
|
ToggleCreateProject() {
|
|
679
712
|
this.SetCreatingProject(!this.CreatingProject);
|
|
680
713
|
}
|
|
@@ -935,6 +968,9 @@ class EaCService {
|
|
|
935
968
|
async SetEditProjectSettings(projectLookup) {
|
|
936
969
|
await this.projectService.SetEditProjectSettings(this.State, projectLookup);
|
|
937
970
|
}
|
|
971
|
+
async SubmitFeedEntry(entry) {
|
|
972
|
+
return await this.projectService.SubmitFeedEntry(this.State, entry);
|
|
973
|
+
}
|
|
938
974
|
async UnpackLowCodeUnit(req) {
|
|
939
975
|
if (confirm(`Are you sure you want to unpack application '${req.ApplicationName}' with version '${req.Version}'?`)) {
|
|
940
976
|
await this.projectService.UnpackLowCodeUnit(this.State, req);
|
|
@@ -1206,7 +1242,7 @@ class DomainsComponent {
|
|
|
1206
1242
|
config() {
|
|
1207
1243
|
this.Config = new CardFormConfigModel({
|
|
1208
1244
|
Icon: 'head',
|
|
1209
|
-
Title: '
|
|
1245
|
+
Title: '',
|
|
1210
1246
|
Subtitle: 'In order to use a custom domain, create a CNAME dns record pointing desired subdomain to ' + this.HostDNSInstance + '.',
|
|
1211
1247
|
FormActions: {
|
|
1212
1248
|
Message: 'Changes will be applied to your next deployment',
|
|
@@ -3539,7 +3575,8 @@ class GitAuthComponent {
|
|
|
3539
3575
|
ConnectGitHubProvider() {
|
|
3540
3576
|
const reidrectUri = location.pathname + location.search;
|
|
3541
3577
|
// window.location.href = `/.oauth/GitHubOAuth?redirectUri=${reidrectUri}`;
|
|
3542
|
-
|
|
3578
|
+
// added below line for the new social ui redirectUri wasn't working
|
|
3579
|
+
window.location.href = '/.oauth/GitHubOAuth?redirectUri=%2Fdashboard';
|
|
3543
3580
|
this.ConnectClicked = true;
|
|
3544
3581
|
}
|
|
3545
3582
|
}
|
|
@@ -3828,1448 +3865,1090 @@ class FeedCardSmComponent {
|
|
|
3828
3865
|
}
|
|
3829
3866
|
}
|
|
3830
3867
|
FeedCardSmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FeedCardSmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
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:
|
|
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:24px;width:24px;font-size:24px;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"] }] });
|
|
3832
3869
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FeedCardSmComponent, decorators: [{
|
|
3833
3870
|
type: Component,
|
|
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:
|
|
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:24px;width:24px;font-size:24px;cursor:pointer}\n"] }]
|
|
3835
3872
|
}], ctorParameters: function () { return []; }, propDecorators: { FeedItem: [{
|
|
3836
3873
|
type: Input,
|
|
3837
3874
|
args: ['feed-item']
|
|
3838
3875
|
}] } });
|
|
3839
3876
|
|
|
3840
|
-
class
|
|
3841
|
-
|
|
3842
|
-
|
|
3877
|
+
class DevopsSourceControlFormComponent {
|
|
3878
|
+
// Constructors
|
|
3879
|
+
constructor(appsFlowSvc, eacSvc, formBuilder) {
|
|
3880
|
+
this.appsFlowSvc = appsFlowSvc;
|
|
3843
3881
|
this.eacSvc = eacSvc;
|
|
3844
|
-
this.
|
|
3845
|
-
this.
|
|
3882
|
+
this.formBuilder = formBuilder;
|
|
3883
|
+
this.SeparatorKeysCodes = [ENTER, COMMA];
|
|
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;
|
|
3846
3892
|
}
|
|
3847
|
-
|
|
3848
|
-
|
|
3893
|
+
// Properties
|
|
3894
|
+
get ArtifactLookups() {
|
|
3895
|
+
return this.DevOpsAction?.ArtifactLookups;
|
|
3849
3896
|
}
|
|
3850
|
-
get
|
|
3851
|
-
|
|
3897
|
+
get ArtifactLookup() {
|
|
3898
|
+
const artLookup = this.DevOpsAction?.ArtifactLookups
|
|
3899
|
+
? this.DevOpsAction?.ArtifactLookups[0]
|
|
3900
|
+
: null;
|
|
3901
|
+
return artLookup;
|
|
3852
3902
|
}
|
|
3853
|
-
get
|
|
3854
|
-
return this.
|
|
3903
|
+
get Artifact() {
|
|
3904
|
+
return this.Environment?.Artifacts && this.ArtifactLookup
|
|
3905
|
+
? this.Environment?.Artifacts[this.ArtifactLookup] || {}
|
|
3906
|
+
: {};
|
|
3855
3907
|
}
|
|
3856
|
-
get
|
|
3857
|
-
return this.
|
|
3908
|
+
get BranchesFormControl() {
|
|
3909
|
+
return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'branches');
|
|
3858
3910
|
}
|
|
3859
|
-
|
|
3860
|
-
this.
|
|
3911
|
+
get BuildPathFormControl() {
|
|
3912
|
+
return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'buildPath');
|
|
3861
3913
|
}
|
|
3862
|
-
|
|
3863
|
-
console.log(
|
|
3864
|
-
this.
|
|
3914
|
+
get DevOpsActionLookups() {
|
|
3915
|
+
// console.log(this.DevOpsActions);
|
|
3916
|
+
return Object.keys(this.DevOpsActions || {});
|
|
3865
3917
|
}
|
|
3866
|
-
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
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;
|
|
3918
|
+
get DevOpsAction() {
|
|
3919
|
+
return this.Environment.DevOpsActions && this.DevOpsActionLookup
|
|
3920
|
+
? this.Environment.DevOpsActions[this.DevOpsActionLookup] || {}
|
|
3921
|
+
: {};
|
|
3922
|
+
}
|
|
3923
|
+
get DevOpsActionLookup() {
|
|
3924
|
+
if (!!this.DevOpsActionLookupFormControl?.value) {
|
|
3925
|
+
return this.DevOpsActionLookupFormControl.value;
|
|
3879
3926
|
}
|
|
3880
|
-
if (
|
|
3881
|
-
|
|
3927
|
+
if (!!this.EditingSourceControl?.DevOpsActionTriggerLookups) {
|
|
3928
|
+
return this.EditingSourceControl?.DevOpsActionTriggerLookups[0];
|
|
3882
3929
|
}
|
|
3883
|
-
|
|
3884
|
-
|
|
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
|
-
});
|
|
3930
|
+
else {
|
|
3931
|
+
return null;
|
|
3912
3932
|
}
|
|
3913
3933
|
}
|
|
3914
|
-
|
|
3915
|
-
|
|
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();
|
|
3934
|
+
get DevOpsActionLookupFormControl() {
|
|
3935
|
+
return this.DevOpsSourceControlFormGroup.get('devOpsActionLookup');
|
|
3948
3936
|
}
|
|
3949
|
-
get
|
|
3950
|
-
return this.
|
|
3937
|
+
get DevOpsActions() {
|
|
3938
|
+
return this.Environment.DevOpsActions || {};
|
|
3951
3939
|
}
|
|
3952
|
-
get
|
|
3953
|
-
|
|
3940
|
+
get EditingSourceControl() {
|
|
3941
|
+
let sc = this.Environment?.Sources
|
|
3942
|
+
? this.Environment?.Sources[this.EditingSourceControlLookup]
|
|
3943
|
+
: null;
|
|
3944
|
+
if (sc == null && this.EditingSourceControlLookup) {
|
|
3945
|
+
sc = {};
|
|
3946
|
+
}
|
|
3947
|
+
return sc;
|
|
3954
3948
|
}
|
|
3955
|
-
get
|
|
3956
|
-
return this.
|
|
3949
|
+
get MainBranchFormControl() {
|
|
3950
|
+
return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'mainBranch');
|
|
3957
3951
|
}
|
|
3958
|
-
get
|
|
3959
|
-
return this.
|
|
3952
|
+
get OrganizationFormControl() {
|
|
3953
|
+
return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'organization');
|
|
3960
3954
|
}
|
|
3961
|
-
get
|
|
3962
|
-
return this.
|
|
3955
|
+
get RepositoryFormControl() {
|
|
3956
|
+
return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'repository');
|
|
3963
3957
|
}
|
|
3964
|
-
get
|
|
3965
|
-
return this.
|
|
3958
|
+
get State() {
|
|
3959
|
+
return this.eacSvc.State;
|
|
3966
3960
|
}
|
|
3967
|
-
|
|
3968
|
-
|
|
3961
|
+
// Life Cycle
|
|
3962
|
+
ngAfterViewInit() { }
|
|
3963
|
+
ngOnDestroy() {
|
|
3964
|
+
this.destroyFormControls();
|
|
3969
3965
|
}
|
|
3970
|
-
|
|
3971
|
-
|
|
3972
|
-
|
|
3973
|
-
|
|
3974
|
-
}
|
|
3966
|
+
ngOnInit() {
|
|
3967
|
+
console.log("source control lookup", this.EditingSourceControlLookup);
|
|
3968
|
+
if (this.EditingSourceControlLookup === null) {
|
|
3969
|
+
this.CreateNewSourceControl();
|
|
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();
|
|
3975
3977
|
}
|
|
3976
|
-
|
|
3977
|
-
|
|
3978
|
+
// API Methods
|
|
3979
|
+
AddBranchOption(event) {
|
|
3980
|
+
this.addBranchOption(event.value);
|
|
3981
|
+
event.input.value = '';
|
|
3978
3982
|
}
|
|
3979
|
-
|
|
3980
|
-
|
|
3983
|
+
BranchOptionSelected(event) {
|
|
3984
|
+
this.addBranchOption(event.option.value);
|
|
3981
3985
|
}
|
|
3982
|
-
|
|
3983
|
-
|
|
3986
|
+
BranchesChanged(branches) {
|
|
3987
|
+
this.loadProjectHostingDetails();
|
|
3984
3988
|
}
|
|
3985
|
-
|
|
3986
|
-
|
|
3989
|
+
BuildPathChanged(event) {
|
|
3990
|
+
//do something??
|
|
3987
3991
|
}
|
|
3988
|
-
|
|
3989
|
-
|
|
3992
|
+
CreateNewSourceControl() {
|
|
3993
|
+
this.SetEditingSourceControl(Guid.CreateRaw());
|
|
3990
3994
|
}
|
|
3991
|
-
|
|
3992
|
-
|
|
3995
|
+
CreateRepository() {
|
|
3996
|
+
this.CreatingRepository = true;
|
|
3997
|
+
this.RepositoryFormControl.reset();
|
|
3993
3998
|
}
|
|
3994
|
-
|
|
3995
|
-
|
|
3999
|
+
CancelCreateRepository() {
|
|
4000
|
+
this.CreatingRepository = false;
|
|
3996
4001
|
}
|
|
3997
|
-
|
|
3998
|
-
|
|
3999
|
-
}
|
|
4000
|
-
get SecurityFormControl() {
|
|
4001
|
-
return this.ProcessorDetailsFormGroup?.controls.security;
|
|
4002
|
+
DevOpsActionLookupChanged(event) {
|
|
4003
|
+
this.configureDevOpsAction();
|
|
4002
4004
|
}
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
+
MainBranchChanged(event) {
|
|
4006
|
+
this.emitBranchesChanged();
|
|
4005
4007
|
}
|
|
4006
|
-
|
|
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();
|
|
4008
4016
|
}
|
|
4009
|
-
|
|
4010
|
-
|
|
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
|
+
}
|
|
4011
4025
|
}
|
|
4012
|
-
|
|
4013
|
-
|
|
4026
|
+
RemoveBranchOption(option) {
|
|
4027
|
+
const index = this.SelectedBranches.indexOf(option);
|
|
4028
|
+
if (index >= 0) {
|
|
4029
|
+
this.SelectedBranches.splice(index, 1);
|
|
4030
|
+
}
|
|
4031
|
+
this.emitBranchesChanged();
|
|
4014
4032
|
}
|
|
4015
|
-
|
|
4016
|
-
|
|
4033
|
+
RepositoryChanged(event) {
|
|
4034
|
+
const repo = this.RepositoryFormControl;
|
|
4035
|
+
if (this.UseBranches) {
|
|
4036
|
+
this.BranchesFormControl.reset();
|
|
4037
|
+
this.SelectedBranches = [];
|
|
4038
|
+
this.listBranches();
|
|
4039
|
+
}
|
|
4040
|
+
if (!this.UseBranches) {
|
|
4041
|
+
this.listBuildPaths();
|
|
4042
|
+
}
|
|
4017
4043
|
}
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
|
|
4044
|
+
SaveRepository() {
|
|
4045
|
+
this.Loading = true;
|
|
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;
|
|
4024
4054
|
}
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
|
|
4055
|
+
else {
|
|
4056
|
+
// TODO: Need to surface an error to the user...
|
|
4057
|
+
this.Loading = false;
|
|
4058
|
+
}
|
|
4059
|
+
});
|
|
4028
4060
|
}
|
|
4029
|
-
|
|
4030
|
-
|
|
4061
|
+
SetEditingSourceControl(scLookup) {
|
|
4062
|
+
this.EditingSourceControlLookup = scLookup;
|
|
4031
4063
|
}
|
|
4032
|
-
|
|
4033
|
-
|
|
4064
|
+
SubmitSourceControl() {
|
|
4065
|
+
console.log('source control submitted: ', this.DevOpsSourceControlFormGroup.value);
|
|
4066
|
+
this.SaveSourceControl();
|
|
4034
4067
|
}
|
|
4035
|
-
|
|
4036
|
-
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
|
|
4068
|
+
SaveSourceControl() {
|
|
4069
|
+
const saveEnvReq = {
|
|
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
|
+
});
|
|
4097
|
+
}
|
|
4098
|
+
// Helpers
|
|
4099
|
+
addBranchOption(value) {
|
|
4100
|
+
value = (value || '').trim();
|
|
4101
|
+
if (value && this.SelectedBranches.indexOf(value) < 0) {
|
|
4102
|
+
this.SelectedBranches.push(value);
|
|
4041
4103
|
}
|
|
4104
|
+
this.BranchesInput.nativeElement.blur();
|
|
4105
|
+
this.emitBranchesChanged();
|
|
4042
4106
|
}
|
|
4043
|
-
|
|
4044
|
-
|
|
4107
|
+
configureDevOpsAction() {
|
|
4108
|
+
setTimeout(() => {
|
|
4109
|
+
this.DevOpsActionLookupFormControl.setValue(this.DevOpsActionLookup);
|
|
4110
|
+
}, 0);
|
|
4045
4111
|
}
|
|
4046
|
-
|
|
4047
|
-
|
|
4048
|
-
|
|
4049
|
-
|
|
4050
|
-
|
|
4051
|
-
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
this.
|
|
4112
|
+
destroyFormControls() {
|
|
4113
|
+
this.DevOpsSourceControlFormGroup.removeControl([this.SourceControlRoot, 'mainBranch'].join(''));
|
|
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(''));
|
|
4119
|
+
}
|
|
4120
|
+
emitBranchesChanged() {
|
|
4121
|
+
if (this.SelectedBranches?.length > 0 &&
|
|
4122
|
+
(!this.MainBranchFormControl.value ||
|
|
4123
|
+
this.SelectedBranches.indexOf(this.MainBranchFormControl.value) < 0)) {
|
|
4124
|
+
this.MainBranchFormControl.setValue(this.SelectedBranches.find((branch) => branch === 'main' || branch === 'master') || this.SelectedBranches[0]);
|
|
4057
4125
|
}
|
|
4058
|
-
else if (
|
|
4059
|
-
this.
|
|
4126
|
+
else if (this.SelectedBranches?.length <= 0) {
|
|
4127
|
+
this.MainBranchFormControl.reset();
|
|
4060
4128
|
}
|
|
4129
|
+
this.BranchesFormControl.setValue(this.SelectedBranches.join(','));
|
|
4130
|
+
this.BranchesChanged(this.SelectedBranches || []);
|
|
4061
4131
|
}
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
this.
|
|
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;
|
|
4132
|
+
listBranches() {
|
|
4133
|
+
if (this.UseBranches) {
|
|
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;
|
|
4109
4142
|
}
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
|
|
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;
|
|
4143
|
+
else if (this.BranchOptions?.length === 1) {
|
|
4144
|
+
this.BranchesFormControl.setValue(this.BranchOptions[0].Name);
|
|
4145
|
+
this.SelectedBranches = [this.BranchOptions[0].Name];
|
|
4124
4146
|
}
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
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}`;
|
|
4147
|
+
this.emitBranchesChanged();
|
|
4148
|
+
this.listBuildPaths();
|
|
4149
|
+
});
|
|
4135
4150
|
}
|
|
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
4151
|
}
|
|
4190
4152
|
listBuildPaths() {
|
|
4191
|
-
this.
|
|
4192
|
-
|
|
4193
|
-
|
|
4194
|
-
|
|
4195
|
-
|
|
4196
|
-
|
|
4197
|
-
|
|
4198
|
-
|
|
4199
|
-
|
|
4200
|
-
|
|
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: [{
|
|
4326
|
-
type: Component,
|
|
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: [{
|
|
4329
|
-
type: Input,
|
|
4330
|
-
args: ['editing-application']
|
|
4331
|
-
}], EditingApplicationLookup: [{
|
|
4332
|
-
type: Input,
|
|
4333
|
-
args: ['editing-application-lookup']
|
|
4334
|
-
}], HasSaveButton: [{
|
|
4335
|
-
type: Input,
|
|
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: [{
|
|
4344
|
-
type: Output,
|
|
4345
|
-
args: ['save-form-event']
|
|
4346
|
-
}] } });
|
|
4347
|
-
|
|
4348
|
-
class NewApplicationDialogComponent {
|
|
4349
|
-
constructor(eacSvc, dialogRef, data, snackBar) {
|
|
4350
|
-
this.eacSvc = eacSvc;
|
|
4351
|
-
this.dialogRef = dialogRef;
|
|
4352
|
-
this.data = data;
|
|
4353
|
-
this.snackBar = snackBar;
|
|
4354
|
-
this.HasSaveButton = false;
|
|
4355
|
-
}
|
|
4356
|
-
get Environment() {
|
|
4357
|
-
return this.State?.EaC?.Environments[this.data.environmentLookup];
|
|
4358
|
-
}
|
|
4359
|
-
get SourceControls() {
|
|
4360
|
-
return this.Environment?.Sources || {};
|
|
4361
|
-
}
|
|
4362
|
-
get SourceControlLookups() {
|
|
4363
|
-
return Object.keys(this.Environment.Sources || {});
|
|
4364
|
-
}
|
|
4365
|
-
get State() {
|
|
4366
|
-
return this.eacSvc.State;
|
|
4367
|
-
}
|
|
4368
|
-
ngOnInit() {
|
|
4369
|
-
this.SetupApplication(Guid.CreateRaw());
|
|
4370
|
-
}
|
|
4371
|
-
CloseDialog() {
|
|
4372
|
-
this.dialogRef.close();
|
|
4373
|
-
}
|
|
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;
|
|
4153
|
+
if (this.UseBuildPath) {
|
|
4154
|
+
this.Loading = true;
|
|
4155
|
+
this.appsFlowSvc
|
|
4156
|
+
.ListBuildPaths(this.OrganizationFormControl.value, this.RepositoryFormControl.value)
|
|
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
|
+
});
|
|
4479
4164
|
}
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4165
|
+
}
|
|
4166
|
+
listOrganizations() {
|
|
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
|
+
}
|
|
4483
4180
|
});
|
|
4484
4181
|
}
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
this.
|
|
4489
|
-
|
|
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;
|
|
4490
4214
|
});
|
|
4491
|
-
this.CloseDialog();
|
|
4492
4215
|
}
|
|
4493
|
-
|
|
4494
|
-
|
|
4216
|
+
}
|
|
4217
|
+
setupFormControls() {
|
|
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));
|
|
4227
|
+
}
|
|
4228
|
+
if (this.UseBuildPath) {
|
|
4229
|
+
this.DevOpsSourceControlFormGroup.addControl([this.SourceControlRoot, 'buildPath'].join(''), new FormControl(this.BuildPath ?? '', Validators.required));
|
|
4495
4230
|
}
|
|
4496
4231
|
}
|
|
4497
4232
|
}
|
|
4498
|
-
|
|
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:
|
|
4233
|
+
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 });
|
|
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
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: DevopsSourceControlFormComponent, decorators: [{
|
|
4501
4236
|
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:
|
|
4504
|
-
|
|
4505
|
-
|
|
4506
|
-
|
|
4507
|
-
type:
|
|
4508
|
-
args: [
|
|
4509
|
-
}],
|
|
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: EaCService }, { type: i1$2.FormBuilder }]; }, propDecorators: { EditingSourceControlLookup: [{
|
|
4239
|
+
type: Input,
|
|
4240
|
+
args: ['editing-source-control-lookup']
|
|
4241
|
+
}], Environment: [{
|
|
4242
|
+
type: Input,
|
|
4243
|
+
args: ['environment']
|
|
4244
|
+
}], EnvironmentLookup: [{
|
|
4245
|
+
type: Input,
|
|
4246
|
+
args: ['environment-lookup']
|
|
4247
|
+
}], SaveStatusEvent: [{
|
|
4248
|
+
type: Output,
|
|
4249
|
+
args: ['save-status-event']
|
|
4250
|
+
}], BranchesInput: [{
|
|
4510
4251
|
type: ViewChild,
|
|
4511
|
-
args: [
|
|
4252
|
+
args: ['branches']
|
|
4512
4253
|
}] } });
|
|
4513
4254
|
|
|
4514
|
-
class
|
|
4515
|
-
constructor(eacSvc,
|
|
4255
|
+
class SourceControlDialogComponent {
|
|
4256
|
+
constructor(dialogRef, eacSvc, data, snackBar) {
|
|
4257
|
+
this.dialogRef = dialogRef;
|
|
4516
4258
|
this.eacSvc = eacSvc;
|
|
4517
|
-
this.
|
|
4518
|
-
this.
|
|
4519
|
-
this.SkeletonEffect = "wave";
|
|
4520
|
-
this.selectedBtn = "pr-btn";
|
|
4259
|
+
this.data = data;
|
|
4260
|
+
this.snackBar = snackBar;
|
|
4521
4261
|
}
|
|
4522
|
-
get
|
|
4523
|
-
|
|
4524
|
-
|
|
4525
|
-
|
|
4262
|
+
get DevOpsSourceControlFormGroup() {
|
|
4263
|
+
return this.DevopsSourceControl?.DevOpsSourceControlFormGroup;
|
|
4264
|
+
}
|
|
4265
|
+
get HasConnection() {
|
|
4266
|
+
return this.State.GitHub.HasConnection;
|
|
4526
4267
|
}
|
|
4527
4268
|
get State() {
|
|
4528
4269
|
return this.eacSvc.State;
|
|
4529
4270
|
}
|
|
4530
4271
|
ngOnInit() {
|
|
4531
4272
|
}
|
|
4532
|
-
|
|
4533
|
-
this.
|
|
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;
|
|
4273
|
+
CloseDialog() {
|
|
4274
|
+
this.dialogRef.close();
|
|
4570
4275
|
}
|
|
4571
|
-
|
|
4572
|
-
console.log("
|
|
4573
|
-
|
|
4574
|
-
|
|
4575
|
-
|
|
4576
|
-
|
|
4577
|
-
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
|
|
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;
|
|
4276
|
+
HandleSaveStatusEvent(event) {
|
|
4277
|
+
console.log("event to save: ", event);
|
|
4278
|
+
if (event.Code === 0) {
|
|
4279
|
+
this.snackBar.open("Source Control Succesfully Saved", "Dismiss", {
|
|
4280
|
+
duration: 5000
|
|
4281
|
+
});
|
|
4282
|
+
this.CloseDialog();
|
|
4283
|
+
}
|
|
4284
|
+
else {
|
|
4285
|
+
this.ErrorMessage = event.Message;
|
|
4589
4286
|
}
|
|
4590
4287
|
}
|
|
4591
|
-
|
|
4592
|
-
|
|
4593
|
-
// (<HTMLElement>document.getElementById(this.selectedBtn)).classList.add('selected');
|
|
4594
|
-
}
|
|
4595
|
-
removeSelectedBtn() {
|
|
4596
|
-
// (<HTMLElement>document.getElementById(this.selectedBtn)).classList.remove('selected');
|
|
4288
|
+
SaveSourceControl() {
|
|
4289
|
+
this.DevopsSourceControl.SaveSourceControl();
|
|
4597
4290
|
}
|
|
4598
4291
|
}
|
|
4599
|
-
|
|
4600
|
-
|
|
4601
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type:
|
|
4292
|
+
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 });
|
|
4293
|
+
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"] }] });
|
|
4294
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SourceControlDialogComponent, decorators: [{
|
|
4602
4295
|
type: Component,
|
|
4603
|
-
args: [{ selector: 'lcu-
|
|
4604
|
-
}], ctorParameters: function () { return [{ type:
|
|
4296
|
+
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"] }]
|
|
4297
|
+
}], ctorParameters: function () { return [{ type: i2$3.MatDialogRef }, { type: EaCService }, { type: undefined, decorators: [{
|
|
4298
|
+
type: Inject,
|
|
4299
|
+
args: [MAT_DIALOG_DATA]
|
|
4300
|
+
}] }, { type: i3$1.MatSnackBar }]; }, propDecorators: { DevopsSourceControl: [{
|
|
4301
|
+
type: ViewChild,
|
|
4302
|
+
args: [DevopsSourceControlFormComponent]
|
|
4303
|
+
}] } });
|
|
4605
4304
|
|
|
4606
|
-
class
|
|
4607
|
-
|
|
4608
|
-
constructor(appsFlowSvc, eacSvc, formBuilder) {
|
|
4609
|
-
this.appsFlowSvc = appsFlowSvc;
|
|
4305
|
+
class MainFeedCardComponent {
|
|
4306
|
+
constructor(eacSvc, dialog, sanitizer) {
|
|
4610
4307
|
this.eacSvc = eacSvc;
|
|
4611
|
-
this.
|
|
4612
|
-
this.
|
|
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;
|
|
4621
|
-
}
|
|
4622
|
-
// Properties
|
|
4623
|
-
get ArtifactLookups() {
|
|
4624
|
-
return this.DevOpsAction?.ArtifactLookups;
|
|
4625
|
-
}
|
|
4626
|
-
get ArtifactLookup() {
|
|
4627
|
-
const artLookup = this.DevOpsAction?.ArtifactLookups
|
|
4628
|
-
? this.DevOpsAction?.ArtifactLookups[0]
|
|
4629
|
-
: null;
|
|
4630
|
-
return artLookup;
|
|
4631
|
-
}
|
|
4632
|
-
get Artifact() {
|
|
4633
|
-
return this.Environment?.Artifacts && this.ArtifactLookup
|
|
4634
|
-
? this.Environment?.Artifacts[this.ArtifactLookup] || {}
|
|
4635
|
-
: {};
|
|
4636
|
-
}
|
|
4637
|
-
get BranchesFormControl() {
|
|
4638
|
-
return this.DevOpsSourceControlFormGroup.get(this.SourceControlRoot + 'branches');
|
|
4308
|
+
this.dialog = dialog;
|
|
4309
|
+
this.sanitizer = sanitizer;
|
|
4639
4310
|
}
|
|
4640
|
-
get
|
|
4641
|
-
return this.
|
|
4311
|
+
get ActiveEnvironment() {
|
|
4312
|
+
return this.State?.EaC?.Environments[this.ActiveEnvironmentLookup];
|
|
4642
4313
|
}
|
|
4643
|
-
get
|
|
4644
|
-
//
|
|
4645
|
-
|
|
4314
|
+
get ActiveEnvironmentLookup() {
|
|
4315
|
+
// TODO: Eventually support multiple environments
|
|
4316
|
+
const envLookups = Object.keys(this.State?.EaC?.Environments || {});
|
|
4317
|
+
return envLookups[0];
|
|
4646
4318
|
}
|
|
4647
|
-
get
|
|
4648
|
-
|
|
4649
|
-
|
|
4650
|
-
: {};
|
|
4319
|
+
get Environment() {
|
|
4320
|
+
// console.log("Ent Environment var: ", this.State?.EaC?.Environments[this.State?.EaC?.Enterprise?.PrimaryEnvironment]);
|
|
4321
|
+
return this.State?.EaC?.Environments[this.State?.EaC?.Enterprise?.PrimaryEnvironment];
|
|
4651
4322
|
}
|
|
4652
|
-
get
|
|
4653
|
-
if (
|
|
4654
|
-
return
|
|
4323
|
+
get Icon() {
|
|
4324
|
+
if (this.FeedItem.Status.Code === 0) {
|
|
4325
|
+
return 'check_circle';
|
|
4655
4326
|
}
|
|
4656
|
-
if (
|
|
4657
|
-
return
|
|
4327
|
+
else if (this.FeedItem.Status.Code === 1) {
|
|
4328
|
+
return 'cancel';
|
|
4329
|
+
}
|
|
4330
|
+
else if (this.FeedItem.Status.Code === 2) {
|
|
4331
|
+
return 'sync';
|
|
4658
4332
|
}
|
|
4659
4333
|
else {
|
|
4660
|
-
return
|
|
4334
|
+
return 'help_outline';
|
|
4661
4335
|
}
|
|
4662
4336
|
}
|
|
4663
|
-
get
|
|
4664
|
-
|
|
4665
|
-
|
|
4666
|
-
|
|
4667
|
-
|
|
4668
|
-
|
|
4669
|
-
|
|
4670
|
-
|
|
4671
|
-
|
|
4672
|
-
|
|
4673
|
-
|
|
4674
|
-
|
|
4337
|
+
get IconColor() {
|
|
4338
|
+
if (this.FeedItem.Status.Code === 0) {
|
|
4339
|
+
return 'green';
|
|
4340
|
+
}
|
|
4341
|
+
else if (this.FeedItem.Status.Code === 1) {
|
|
4342
|
+
return 'red';
|
|
4343
|
+
}
|
|
4344
|
+
else if (this.FeedItem.Status.Code === 2) {
|
|
4345
|
+
return 'blue';
|
|
4346
|
+
}
|
|
4347
|
+
else {
|
|
4348
|
+
return 'gray';
|
|
4675
4349
|
}
|
|
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');
|
|
4686
4350
|
}
|
|
4687
4351
|
get State() {
|
|
4688
4352
|
return this.eacSvc.State;
|
|
4689
4353
|
}
|
|
4690
4354
|
// Life Cycle
|
|
4691
|
-
ngAfterViewInit() { }
|
|
4692
|
-
ngOnDestroy() {
|
|
4693
|
-
this.destroyFormControls();
|
|
4694
|
-
}
|
|
4695
4355
|
ngOnInit() {
|
|
4696
|
-
|
|
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();
|
|
4356
|
+
this.handleRefresh();
|
|
4706
4357
|
}
|
|
4707
4358
|
// API Methods
|
|
4708
|
-
|
|
4709
|
-
|
|
4710
|
-
event.input.value = '';
|
|
4711
|
-
}
|
|
4712
|
-
BranchOptionSelected(event) {
|
|
4713
|
-
this.addBranchOption(event.option.value);
|
|
4714
|
-
}
|
|
4715
|
-
BranchesChanged(branches) {
|
|
4716
|
-
this.loadProjectHostingDetails();
|
|
4717
|
-
}
|
|
4718
|
-
BuildPathChanged(event) {
|
|
4719
|
-
//do something??
|
|
4720
|
-
}
|
|
4721
|
-
CreateNewSourceControl() {
|
|
4722
|
-
this.SetEditingSourceControl(Guid.CreateRaw());
|
|
4723
|
-
}
|
|
4724
|
-
CreateRepository() {
|
|
4725
|
-
this.CreatingRepository = true;
|
|
4726
|
-
this.RepositoryFormControl.reset();
|
|
4727
|
-
}
|
|
4728
|
-
CancelCreateRepository() {
|
|
4729
|
-
this.CreatingRepository = false;
|
|
4730
|
-
}
|
|
4731
|
-
DevOpsActionLookupChanged(event) {
|
|
4732
|
-
this.configureDevOpsAction();
|
|
4733
|
-
}
|
|
4734
|
-
MainBranchChanged(event) {
|
|
4735
|
-
this.emitBranchesChanged();
|
|
4736
|
-
}
|
|
4737
|
-
OrganizationChanged(event) {
|
|
4738
|
-
const org = this.OrganizationFormControl;
|
|
4739
|
-
this.RepositoryFormControl.reset();
|
|
4740
|
-
if (this.UseBranches) {
|
|
4741
|
-
this.BranchesFormControl.reset();
|
|
4742
|
-
this.SelectedBranches = [];
|
|
4743
|
-
}
|
|
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();
|
|
4753
|
-
}
|
|
4754
|
-
}
|
|
4755
|
-
RemoveBranchOption(option) {
|
|
4756
|
-
const index = this.SelectedBranches.indexOf(option);
|
|
4757
|
-
if (index >= 0) {
|
|
4758
|
-
this.SelectedBranches.splice(index, 1);
|
|
4759
|
-
}
|
|
4760
|
-
this.emitBranchesChanged();
|
|
4359
|
+
CalculateTimelapse(timestamp) {
|
|
4360
|
+
return moment(timestamp).fromNow();
|
|
4761
4361
|
}
|
|
4762
|
-
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
|
|
4768
|
-
|
|
4769
|
-
|
|
4770
|
-
this.listBuildPaths();
|
|
4362
|
+
HandleAction(action) {
|
|
4363
|
+
if (action.ActionType == 'Link') {
|
|
4364
|
+
if (action.Action.startsWith('http')) {
|
|
4365
|
+
window.open(action.Action, '_blank');
|
|
4366
|
+
}
|
|
4367
|
+
else {
|
|
4368
|
+
window.location.href = action.Action;
|
|
4369
|
+
}
|
|
4771
4370
|
}
|
|
4772
|
-
|
|
4773
|
-
|
|
4774
|
-
|
|
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;
|
|
4371
|
+
else if (action.ActionType == 'Modal') {
|
|
4372
|
+
if (action.Action == 'AddSourceControl') {
|
|
4373
|
+
this.OpenSourceControlDialog(null);
|
|
4783
4374
|
}
|
|
4784
4375
|
else {
|
|
4785
|
-
|
|
4786
|
-
this.Loading = false;
|
|
4376
|
+
alert('other modaled ' + action.Action);
|
|
4787
4377
|
}
|
|
4788
|
-
}
|
|
4789
|
-
}
|
|
4790
|
-
SetEditingSourceControl(scLookup) {
|
|
4791
|
-
this.EditingSourceControlLookup = scLookup;
|
|
4792
|
-
}
|
|
4793
|
-
SubmitSourceControl() {
|
|
4794
|
-
console.log('source control submitted: ', this.DevOpsSourceControlFormGroup.value);
|
|
4795
|
-
this.SaveSourceControl();
|
|
4378
|
+
}
|
|
4796
4379
|
}
|
|
4797
|
-
|
|
4798
|
-
const
|
|
4799
|
-
|
|
4800
|
-
|
|
4801
|
-
|
|
4380
|
+
OpenSourceControlDialog(scLookup) {
|
|
4381
|
+
const dialogRef = this.dialog.open(SourceControlDialogComponent, {
|
|
4382
|
+
width: '550px',
|
|
4383
|
+
data: {
|
|
4384
|
+
environment: this.Environment,
|
|
4385
|
+
environmentLookup: this.ActiveEnvironmentLookup,
|
|
4386
|
+
scLookup: scLookup,
|
|
4802
4387
|
},
|
|
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
4388
|
});
|
|
4389
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
4390
|
+
// console.log('The dialog was closed');
|
|
4391
|
+
// console.log("result:", result)
|
|
4392
|
+
});
|
|
4393
|
+
}
|
|
4394
|
+
SafeHtml(html) {
|
|
4395
|
+
return this.sanitizer.bypassSecurityTrustHtml(html);
|
|
4826
4396
|
}
|
|
4827
4397
|
// Helpers
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
|
|
4398
|
+
handleRefresh() {
|
|
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);
|
|
4832
4413
|
}
|
|
4833
|
-
this.BranchesInput.nativeElement.blur();
|
|
4834
|
-
this.emitBranchesChanged();
|
|
4835
4414
|
}
|
|
4836
|
-
|
|
4837
|
-
|
|
4838
|
-
|
|
4839
|
-
|
|
4415
|
+
}
|
|
4416
|
+
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 });
|
|
4417
|
+
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: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"], 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"] }] });
|
|
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() {
|
|
4840
4429
|
}
|
|
4841
|
-
|
|
4842
|
-
|
|
4843
|
-
|
|
4844
|
-
|
|
4845
|
-
|
|
4846
|
-
|
|
4847
|
-
|
|
4430
|
+
}
|
|
4431
|
+
TwoColumnHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TwoColumnHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
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;
|
|
4848
4441
|
}
|
|
4849
|
-
|
|
4850
|
-
|
|
4851
|
-
|
|
4852
|
-
|
|
4853
|
-
|
|
4442
|
+
ngOnInit() {
|
|
4443
|
+
}
|
|
4444
|
+
ngAfterViewInit() {
|
|
4445
|
+
this.assignCarouselClass();
|
|
4446
|
+
}
|
|
4447
|
+
LeftChevronClicked() {
|
|
4448
|
+
this.removeCarouselClasses();
|
|
4449
|
+
if (this.carouselIndex === 0) {
|
|
4450
|
+
this.carouselIndex = this.Stats.length - 1;
|
|
4854
4451
|
}
|
|
4855
|
-
else
|
|
4856
|
-
this.
|
|
4452
|
+
else {
|
|
4453
|
+
this.carouselIndex--;
|
|
4857
4454
|
}
|
|
4858
|
-
this.
|
|
4859
|
-
this.BranchesChanged(this.SelectedBranches || []);
|
|
4455
|
+
this.assignCarouselClass();
|
|
4860
4456
|
}
|
|
4861
|
-
|
|
4862
|
-
|
|
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
|
-
}
|
|
4457
|
+
MoreDetailsClicked() {
|
|
4458
|
+
console.log("More details clicked on carousel item", this.Stats[this.carouselIndex]);
|
|
4880
4459
|
}
|
|
4881
|
-
|
|
4882
|
-
|
|
4883
|
-
|
|
4884
|
-
this.
|
|
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
|
-
});
|
|
4460
|
+
RightChevronClicked() {
|
|
4461
|
+
this.removeCarouselClasses();
|
|
4462
|
+
if (this.carouselIndex === this.Stats.length - 1) {
|
|
4463
|
+
this.carouselIndex = 0;
|
|
4893
4464
|
}
|
|
4465
|
+
else {
|
|
4466
|
+
this.carouselIndex++;
|
|
4467
|
+
}
|
|
4468
|
+
this.assignCarouselClass();
|
|
4894
4469
|
}
|
|
4895
|
-
|
|
4896
|
-
|
|
4897
|
-
this.
|
|
4898
|
-
.
|
|
4899
|
-
|
|
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
|
-
});
|
|
4910
|
-
}
|
|
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);
|
|
4470
|
+
//HELPERS
|
|
4471
|
+
removeCarouselClasses() {
|
|
4472
|
+
for (let i = 0; i < this.Stats.length; i++) {
|
|
4473
|
+
if (i === this.carouselIndex) {
|
|
4474
|
+
document.getElementById("carousel-" + this.carouselIndex).classList.remove('active');
|
|
4926
4475
|
}
|
|
4927
|
-
else
|
|
4928
|
-
|
|
4476
|
+
else {
|
|
4477
|
+
document.getElementById("carousel-" + i).classList.remove('hidden');
|
|
4929
4478
|
}
|
|
4930
|
-
});
|
|
4931
|
-
}
|
|
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
4479
|
}
|
|
4945
4480
|
}
|
|
4946
|
-
|
|
4947
|
-
this.
|
|
4948
|
-
|
|
4949
|
-
|
|
4950
|
-
|
|
4951
|
-
|
|
4952
|
-
|
|
4953
|
-
|
|
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));
|
|
4481
|
+
assignCarouselClass() {
|
|
4482
|
+
for (let i = 0; i < this.Stats.length; i++) {
|
|
4483
|
+
if (i === this.carouselIndex) {
|
|
4484
|
+
document.getElementById("carousel-" + this.carouselIndex).classList.add('active');
|
|
4485
|
+
}
|
|
4486
|
+
else {
|
|
4487
|
+
document.getElementById("carousel-" + i).classList.add('hidden');
|
|
4488
|
+
}
|
|
4959
4489
|
}
|
|
4960
4490
|
}
|
|
4961
4491
|
}
|
|
4962
|
-
|
|
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:
|
|
4492
|
+
CardCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CardCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4493
|
+
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"] }] });
|
|
4494
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CardCarouselComponent, decorators: [{
|
|
4965
4495
|
type: Component,
|
|
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 [
|
|
4968
|
-
type: Input,
|
|
4969
|
-
args: ['editing-source-control-lookup']
|
|
4970
|
-
}], Environment: [{
|
|
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: [{
|
|
4971
4498
|
type: Input,
|
|
4972
|
-
args: ['
|
|
4973
|
-
}]
|
|
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';
|
|
4508
|
+
}
|
|
4509
|
+
get IsPrivateFormControl() {
|
|
4510
|
+
return this.SecurityFormGroup?.controls.isPrivate;
|
|
4511
|
+
}
|
|
4512
|
+
get IsTriggerSignInFormControl() {
|
|
4513
|
+
return this.SecurityFormGroup?.controls.isTriggerSignIn;
|
|
4514
|
+
}
|
|
4515
|
+
get State() {
|
|
4516
|
+
return this.eacSvc.State;
|
|
4517
|
+
}
|
|
4518
|
+
ngOnInit() {
|
|
4519
|
+
this.setupSecurityFormGroup();
|
|
4520
|
+
}
|
|
4521
|
+
SecuritySubmit() {
|
|
4522
|
+
//save the security settings
|
|
4523
|
+
console.log("submitting security values: ", this.SecurityFormGroup.value);
|
|
4524
|
+
this.SaveFormEvent.emit(this.SecurityFormGroup.value);
|
|
4525
|
+
}
|
|
4526
|
+
setupSecurityFormGroup() {
|
|
4527
|
+
this.ProcessorType = this.EditingApplication?.Processor?.Type || '';
|
|
4528
|
+
this.SecurityFormGroup = this.formBldr.group({});
|
|
4529
|
+
this.setupSecurityForm();
|
|
4530
|
+
}
|
|
4531
|
+
setupSecurityForm() {
|
|
4532
|
+
this.SecurityFormGroup.addControl('isPrivate', this.formBldr.control(this.EditingApplication.LookupConfig?.IsPrivate || false, [Validators.required]));
|
|
4533
|
+
this.SecurityFormGroup.addControl('isTriggerSignIn', this.formBldr.control(this.EditingApplication.LookupConfig?.IsTriggerSignIn || false, [Validators.required]));
|
|
4534
|
+
}
|
|
4535
|
+
}
|
|
4536
|
+
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 });
|
|
4537
|
+
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]" }] });
|
|
4538
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SecurityToggleComponent, decorators: [{
|
|
4539
|
+
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: { EditingApplication: [{
|
|
4974
4542
|
type: Input,
|
|
4975
|
-
args: ['
|
|
4976
|
-
}],
|
|
4543
|
+
args: ['editing-application']
|
|
4544
|
+
}], SaveFormEvent: [{
|
|
4977
4545
|
type: Output,
|
|
4978
|
-
args: ['save-
|
|
4979
|
-
}], BranchesInput: [{
|
|
4980
|
-
type: ViewChild,
|
|
4981
|
-
args: ['branches']
|
|
4546
|
+
args: ['save-form-event']
|
|
4982
4547
|
}] } });
|
|
4983
4548
|
|
|
4984
|
-
class
|
|
4985
|
-
constructor(
|
|
4986
|
-
this.
|
|
4549
|
+
class ProcessorDetailsFormComponent {
|
|
4550
|
+
constructor(appsFlowSvc, formBldr, eacSvc) {
|
|
4551
|
+
this.appsFlowSvc = appsFlowSvc;
|
|
4552
|
+
this.formBldr = formBldr;
|
|
4987
4553
|
this.eacSvc = eacSvc;
|
|
4988
|
-
this.
|
|
4989
|
-
this.
|
|
4554
|
+
this.redirectTooltip = '';
|
|
4555
|
+
this.HasSaveButton = true;
|
|
4556
|
+
this.SaveFormEvent = new EventEmitter();
|
|
4990
4557
|
}
|
|
4991
|
-
get
|
|
4992
|
-
return this.
|
|
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;
|
|
4605
|
+
}
|
|
4606
|
+
get ScopesFormControl() {
|
|
4607
|
+
return this.ProcessorDetailsFormGroup?.controls.scopes;
|
|
4993
4608
|
}
|
|
4994
|
-
get
|
|
4995
|
-
return this.
|
|
4609
|
+
get SecurityFormControl() {
|
|
4610
|
+
return this.ProcessorDetailsFormGroup?.controls.security;
|
|
4996
4611
|
}
|
|
4997
4612
|
get State() {
|
|
4998
4613
|
return this.eacSvc.State;
|
|
4999
4614
|
}
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
CloseDialog() {
|
|
5003
|
-
this.dialogRef.close();
|
|
4615
|
+
get SourceControls() {
|
|
4616
|
+
return this.Environment?.Sources || {};
|
|
5004
4617
|
}
|
|
5005
|
-
|
|
5006
|
-
|
|
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;
|
|
5015
|
-
}
|
|
4618
|
+
get SourceControlFormControl() {
|
|
4619
|
+
return this.ProcessorDetailsFormGroup?.controls.sourceControl;
|
|
5016
4620
|
}
|
|
5017
|
-
|
|
5018
|
-
this.
|
|
4621
|
+
get SPARootFormControl() {
|
|
4622
|
+
return this.ProcessorDetailsFormGroup?.controls.spaRoot;
|
|
5019
4623
|
}
|
|
5020
|
-
|
|
5021
|
-
|
|
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;
|
|
4624
|
+
get TokenLookupFormControl() {
|
|
4625
|
+
return this.ProcessorDetailsFormGroup?.controls.tokenLookup;
|
|
5039
4626
|
}
|
|
5040
|
-
get
|
|
5041
|
-
|
|
4627
|
+
get ValidFormControls() {
|
|
4628
|
+
let vfc = new Array();
|
|
4629
|
+
for (const field in this.ProcessorDetailsFormGroup.controls) {
|
|
4630
|
+
const control = this.ProcessorDetailsFormGroup.get(field);
|
|
4631
|
+
if (control.valid) {
|
|
4632
|
+
vfc.push(control);
|
|
4633
|
+
}
|
|
4634
|
+
}
|
|
4635
|
+
// console.log("VFC=", vfc)
|
|
4636
|
+
return vfc;
|
|
5042
4637
|
}
|
|
5043
|
-
get
|
|
5044
|
-
|
|
5045
|
-
const envLookups = Object.keys(this.State?.EaC?.Environments || {});
|
|
5046
|
-
return envLookups[0];
|
|
4638
|
+
get VersionFormControl() {
|
|
4639
|
+
return this.ProcessorDetailsFormGroup?.controls.version;
|
|
5047
4640
|
}
|
|
5048
|
-
get
|
|
5049
|
-
|
|
5050
|
-
return this.State?.EaC?.Environments[this.State?.EaC?.Enterprise?.PrimaryEnvironment];
|
|
4641
|
+
get ZipFileFormControl() {
|
|
4642
|
+
return this.ProcessorDetailsFormGroup?.controls.zipFile;
|
|
5051
4643
|
}
|
|
5052
|
-
|
|
5053
|
-
if (this.
|
|
5054
|
-
|
|
5055
|
-
}
|
|
5056
|
-
else if (this.FeedItem.Status.Code === 1) {
|
|
5057
|
-
return 'cancel';
|
|
5058
|
-
}
|
|
5059
|
-
else if (this.FeedItem.Status.Code === 2) {
|
|
5060
|
-
return 'sync';
|
|
4644
|
+
ngOnInit() {
|
|
4645
|
+
if (!this.EditingApplication) {
|
|
4646
|
+
this.CreateNewApplication();
|
|
5061
4647
|
}
|
|
5062
4648
|
else {
|
|
5063
|
-
|
|
4649
|
+
this.setupProcessorDetailsForm();
|
|
5064
4650
|
}
|
|
5065
4651
|
}
|
|
5066
|
-
|
|
5067
|
-
|
|
5068
|
-
|
|
5069
|
-
|
|
5070
|
-
|
|
5071
|
-
|
|
5072
|
-
|
|
5073
|
-
|
|
5074
|
-
return 'blue';
|
|
4652
|
+
CreateNewApplication() {
|
|
4653
|
+
this.SetEditingApplication(Guid.CreateRaw());
|
|
4654
|
+
}
|
|
4655
|
+
DetermineTooltipText() {
|
|
4656
|
+
let permanentValue = this.PermanentFormControl.value;
|
|
4657
|
+
let preserveValue = this.PreserveMethodFormControl.value;
|
|
4658
|
+
if (permanentValue === true && preserveValue === false) {
|
|
4659
|
+
this.redirectTooltip = '301 – Permanent and Not Preserve';
|
|
5075
4660
|
}
|
|
5076
|
-
else {
|
|
5077
|
-
|
|
4661
|
+
else if (permanentValue === false && preserveValue === false) {
|
|
4662
|
+
this.redirectTooltip = '302 – Not Permanent and Not Preserve';
|
|
5078
4663
|
}
|
|
5079
|
-
|
|
5080
|
-
|
|
5081
|
-
return this.eacSvc.State;
|
|
5082
|
-
}
|
|
5083
|
-
// Life Cycle
|
|
5084
|
-
ngOnInit() {
|
|
5085
|
-
this.handleRefresh();
|
|
5086
|
-
}
|
|
5087
|
-
// API Methods
|
|
5088
|
-
CalculateTimelapse(timestamp) {
|
|
5089
|
-
return moment(timestamp).fromNow();
|
|
5090
|
-
}
|
|
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
|
-
}
|
|
4664
|
+
else if (permanentValue === false && preserveValue === true) {
|
|
4665
|
+
this.redirectTooltip = '307 – Not Permanent and Preserve';
|
|
5099
4666
|
}
|
|
5100
|
-
else if (
|
|
5101
|
-
|
|
5102
|
-
this.OpenSourceControlDialog(null);
|
|
5103
|
-
}
|
|
5104
|
-
else {
|
|
5105
|
-
alert('other modaled ' + action.Action);
|
|
5106
|
-
}
|
|
4667
|
+
else if (permanentValue === true && preserveValue === true) {
|
|
4668
|
+
this.redirectTooltip = '308 – Permanent and Preserve';
|
|
5107
4669
|
}
|
|
5108
4670
|
}
|
|
5109
|
-
|
|
5110
|
-
const
|
|
5111
|
-
|
|
5112
|
-
|
|
5113
|
-
|
|
5114
|
-
|
|
5115
|
-
|
|
5116
|
-
|
|
5117
|
-
|
|
5118
|
-
|
|
5119
|
-
|
|
5120
|
-
|
|
5121
|
-
|
|
5122
|
-
|
|
5123
|
-
|
|
5124
|
-
|
|
5125
|
-
|
|
5126
|
-
|
|
5127
|
-
|
|
5128
|
-
|
|
5129
|
-
|
|
5130
|
-
|
|
5131
|
-
|
|
5132
|
-
|
|
5133
|
-
|
|
5134
|
-
|
|
5135
|
-
|
|
5136
|
-
|
|
5137
|
-
|
|
5138
|
-
|
|
5139
|
-
|
|
5140
|
-
|
|
5141
|
-
|
|
4671
|
+
SaveProcessorDetails() {
|
|
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;
|
|
5142
4741
|
}
|
|
4742
|
+
if (!app.LookupConfig.PathRegex.startsWith('/')) {
|
|
4743
|
+
app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;
|
|
4744
|
+
}
|
|
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
|
+
});
|
|
5143
4753
|
}
|
|
5144
|
-
|
|
5145
|
-
|
|
5146
|
-
|
|
5147
|
-
|
|
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;
|
|
4754
|
+
SetEditingApplication(appLookup) {
|
|
4755
|
+
this.EditingApplication = new EaCApplicationAsCode();
|
|
4756
|
+
this.EditingApplicationLookup = appLookup;
|
|
4757
|
+
this.setupProcessorDetailsForm();
|
|
5170
4758
|
}
|
|
5171
|
-
|
|
4759
|
+
SourceControlChanged(event) {
|
|
4760
|
+
this.listBuildPaths();
|
|
5172
4761
|
}
|
|
5173
|
-
|
|
5174
|
-
this.
|
|
4762
|
+
ProcessorTypeChanged(event) {
|
|
4763
|
+
this.ProcessorType = event.value;
|
|
4764
|
+
this.setupProcessorTypeSubForm();
|
|
5175
4765
|
}
|
|
5176
|
-
|
|
5177
|
-
this.
|
|
5178
|
-
|
|
5179
|
-
this.carouselIndex = this.Stats.length - 1;
|
|
5180
|
-
}
|
|
5181
|
-
else {
|
|
5182
|
-
this.carouselIndex--;
|
|
5183
|
-
}
|
|
5184
|
-
this.assignCarouselClass();
|
|
4766
|
+
LCUTypeChanged(event) {
|
|
4767
|
+
this.LCUType = event.value;
|
|
4768
|
+
this.setupLcuTypeSubForm();
|
|
5185
4769
|
}
|
|
5186
|
-
|
|
5187
|
-
|
|
4770
|
+
//HELPERS
|
|
4771
|
+
cleanupLcuTypeSubForm() {
|
|
4772
|
+
this.ProcessorDetailsFormGroup.removeControl('methods');
|
|
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');
|
|
5188
4784
|
}
|
|
5189
|
-
|
|
5190
|
-
this.
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
|
|
5194
|
-
|
|
5195
|
-
|
|
5196
|
-
|
|
5197
|
-
this.
|
|
4785
|
+
cleanupProcessorTypeSubForm() {
|
|
4786
|
+
this.ProcessorDetailsFormGroup.removeControl('defaultFile');
|
|
4787
|
+
// this.ApplicationFormGroup.removeControl('dfsLcuType');
|
|
4788
|
+
// this.ApplicationFormGroup.removeControl('oauthLcuType');
|
|
4789
|
+
this.ProcessorDetailsFormGroup.removeControl('scopes');
|
|
4790
|
+
this.ProcessorDetailsFormGroup.removeControl('tokenLookup');
|
|
4791
|
+
this.ProcessorDetailsFormGroup.removeControl('inboundPath');
|
|
4792
|
+
this.ProcessorDetailsFormGroup.removeControl('proxyLcuType');
|
|
4793
|
+
this.ProcessorDetailsFormGroup.removeControl('includeRequest');
|
|
4794
|
+
this.ProcessorDetailsFormGroup.removeControl('redirect');
|
|
4795
|
+
this.ProcessorDetailsFormGroup.removeControl('permanent');
|
|
4796
|
+
this.ProcessorDetailsFormGroup.removeControl('preserveMethod');
|
|
4797
|
+
this.cleanupLcuTypeSubForm();
|
|
5198
4798
|
}
|
|
5199
|
-
|
|
5200
|
-
|
|
5201
|
-
|
|
5202
|
-
|
|
5203
|
-
|
|
5204
|
-
|
|
5205
|
-
|
|
5206
|
-
|
|
4799
|
+
listBuildPaths() {
|
|
4800
|
+
this.State.Loading = true;
|
|
4801
|
+
console.log("Source Control: ", this.SourceControls[this.SourceControlFormControl.value]);
|
|
4802
|
+
this.appsFlowSvc
|
|
4803
|
+
.ListBuildPaths(this.SourceControls[this.SourceControlFormControl.value]?.Organization, this.SourceControls[this.SourceControlFormControl.value]?.Repository)
|
|
4804
|
+
.subscribe((response) => {
|
|
4805
|
+
this.BuildPathOptions = response.Model;
|
|
4806
|
+
console.log("build path options: ", this.BuildPathOptions);
|
|
4807
|
+
this.State.Loading = false;
|
|
4808
|
+
// if (this.BuildPathOptions?.length === 1) {
|
|
4809
|
+
// this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);
|
|
4810
|
+
// }
|
|
4811
|
+
});
|
|
4812
|
+
}
|
|
4813
|
+
setupLcuTypeSubForm() {
|
|
4814
|
+
this.cleanupLcuTypeSubForm();
|
|
4815
|
+
if (this.LCUType) {
|
|
4816
|
+
switch (this.LCUType) {
|
|
4817
|
+
case 'API':
|
|
4818
|
+
this.setupLCUAPIForm();
|
|
4819
|
+
break;
|
|
4820
|
+
case 'ApplicationPointer':
|
|
4821
|
+
this.setupLCUApplicationPointerForm();
|
|
4822
|
+
break;
|
|
4823
|
+
case 'GitHub':
|
|
4824
|
+
this.setupLCUGitHubForm();
|
|
4825
|
+
break;
|
|
4826
|
+
case 'GitHubOAuth':
|
|
4827
|
+
this.setupLCUGitHubOAuthForm();
|
|
4828
|
+
break;
|
|
4829
|
+
case 'WordPress':
|
|
4830
|
+
this.setupLCUWordPressForm();
|
|
4831
|
+
break;
|
|
4832
|
+
// case 'NPM':
|
|
4833
|
+
// this.setupLCUNPMForm();
|
|
4834
|
+
// break;
|
|
4835
|
+
case 'SPA':
|
|
4836
|
+
this.setupLCUSPAForm();
|
|
4837
|
+
break;
|
|
4838
|
+
case 'Zip':
|
|
4839
|
+
this.setupLCUZipForm();
|
|
4840
|
+
break;
|
|
5207
4841
|
}
|
|
5208
4842
|
}
|
|
5209
4843
|
}
|
|
5210
|
-
|
|
5211
|
-
|
|
5212
|
-
|
|
5213
|
-
|
|
5214
|
-
|
|
5215
|
-
|
|
5216
|
-
|
|
5217
|
-
|
|
4844
|
+
setupProcessorDetailsForm() {
|
|
4845
|
+
this.ProcessorType = this.EditingApplication?.Processor?.Type || '';
|
|
4846
|
+
// console.log('EDITING APP = ', this.EditingApplication);
|
|
4847
|
+
if (this.EditingApplication != null) {
|
|
4848
|
+
this.ProcessorDetailsFormGroup = this.formBldr.group({
|
|
4849
|
+
procType: [this.ProcessorType, [Validators.required]],
|
|
4850
|
+
});
|
|
4851
|
+
// this.setupDfsForm();
|
|
4852
|
+
// this.setupLcuTypeSubForm();
|
|
4853
|
+
this.setupProcessorTypeSubForm();
|
|
5218
4854
|
}
|
|
5219
4855
|
}
|
|
5220
|
-
|
|
5221
|
-
|
|
5222
|
-
|
|
5223
|
-
|
|
5224
|
-
|
|
5225
|
-
|
|
5226
|
-
|
|
5227
|
-
|
|
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';
|
|
4856
|
+
setupLCUGitHubForm() {
|
|
4857
|
+
console.log('EditingApplication: ', this.EditingApplication);
|
|
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();
|
|
5237
4864
|
}
|
|
5238
|
-
|
|
5239
|
-
|
|
4865
|
+
setupLCUApplicationPointerForm() {
|
|
4866
|
+
this.ProcessorDetailsFormGroup.addControl('applicationId', this.formBldr.control(this.EditingApplication.LowCodeUnit?.ApplicationID || '', [Validators.required]));
|
|
5240
4867
|
}
|
|
5241
|
-
|
|
5242
|
-
|
|
4868
|
+
setupLCUSPAForm() {
|
|
4869
|
+
this.ProcessorDetailsFormGroup.addControl('spaRoot', this.formBldr.control(this.EditingApplication.LowCodeUnit?.SPARoot || '', [Validators.required]));
|
|
5243
4870
|
}
|
|
5244
|
-
|
|
5245
|
-
|
|
4871
|
+
setupLCUAPIForm() {
|
|
4872
|
+
this.ProcessorDetailsFormGroup.addControl('methods', this.formBldr.control(this.EditingApplication.LookupConfig?.AllowedMethods?.join(' ') || '', []));
|
|
4873
|
+
this.ProcessorDetailsFormGroup.addControl('apiRoot', this.formBldr.control(this.EditingApplication.LowCodeUnit?.APIRoot || '', [Validators.required]));
|
|
4874
|
+
this.ProcessorDetailsFormGroup.addControl('security', this.formBldr.control(this.EditingApplication.LowCodeUnit?.Security || '', [Validators.required]));
|
|
5246
4875
|
}
|
|
5247
|
-
|
|
5248
|
-
this.
|
|
4876
|
+
setupLCUGitHubOAuthForm() {
|
|
4877
|
+
this.ProcessorDetailsFormGroup.addControl('clientId', this.formBldr.control(this.EditingApplication.LowCodeUnit?.ClientID || '', [Validators.required]));
|
|
4878
|
+
this.ProcessorDetailsFormGroup.addControl('clientSecret', this.formBldr.control(this.EditingApplication.LowCodeUnit?.ClientSecret || '', [Validators.required]));
|
|
5249
4879
|
}
|
|
5250
|
-
|
|
5251
|
-
|
|
5252
|
-
console.log("submitting security values: ", this.SecurityFormGroup.value);
|
|
5253
|
-
this.SaveFormEvent.emit(this.SecurityFormGroup.value);
|
|
4880
|
+
setupLCUWordPressForm() {
|
|
4881
|
+
this.ProcessorDetailsFormGroup.addControl('apiRoot', this.formBldr.control(this.EditingApplication.LowCodeUnit?.APIRoot || '', [Validators.required]));
|
|
5254
4882
|
}
|
|
5255
|
-
|
|
5256
|
-
this.
|
|
5257
|
-
this.
|
|
5258
|
-
this.
|
|
4883
|
+
setupProxyForm() {
|
|
4884
|
+
this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';
|
|
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]));
|
|
5259
4887
|
}
|
|
5260
|
-
|
|
5261
|
-
this.
|
|
5262
|
-
|
|
4888
|
+
setupRedirectForm() {
|
|
4889
|
+
this.ProcessorDetailsFormGroup.addControl('redirect', this.formBldr.control(this.EditingApplication.Processor?.Redirect || '', [
|
|
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();
|
|
4896
|
+
}
|
|
4897
|
+
setupOAuthForm() {
|
|
4898
|
+
this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';
|
|
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]));
|
|
4902
|
+
}
|
|
4903
|
+
setupLCUZipForm() {
|
|
4904
|
+
this.ProcessorDetailsFormGroup.addControl('zipFile', this.formBldr.control(this.EditingApplication.LowCodeUnit?.ZipFile || '', [Validators.required]));
|
|
4905
|
+
}
|
|
4906
|
+
setupDfsForm() {
|
|
4907
|
+
this.LCUType = this.EditingApplication.LowCodeUnit?.Type || '';
|
|
4908
|
+
this.ProcessorDetailsFormGroup.addControl('defaultFile', this.formBldr.control(this.EditingApplication.Processor?.DefaultFile || 'index.html', [Validators.required]));
|
|
4909
|
+
this.ProcessorDetailsFormGroup.addControl('lcuType', this.formBldr.control(this.LCUType, [Validators.required]));
|
|
4910
|
+
}
|
|
4911
|
+
setupProcessorTypeSubForm() {
|
|
4912
|
+
this.cleanupProcessorTypeSubForm();
|
|
4913
|
+
if (this.ProcessorType) {
|
|
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();
|
|
5263
4930
|
}
|
|
5264
4931
|
}
|
|
5265
|
-
|
|
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:
|
|
4932
|
+
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 });
|
|
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: ProcessorDetailsFormComponent, decorators: [{
|
|
5268
4935
|
type: Component,
|
|
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:
|
|
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: ApplicationsFlowService }, { type: i1$2.FormBuilder }, { type: EaCService }]; }, propDecorators: { EditingApplication: [{
|
|
5271
4938
|
type: Input,
|
|
5272
4939
|
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']
|
|
5273
4952
|
}], SaveFormEvent: [{
|
|
5274
4953
|
type: Output,
|
|
5275
4954
|
args: ['save-form-event']
|
|
@@ -5617,6 +5296,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
5617
5296
|
args: [BuildPipelineFormComponent]
|
|
5618
5297
|
}] } });
|
|
5619
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: [{
|
|
5380
|
+
type: Input,
|
|
5381
|
+
args: ['application-lookup']
|
|
5382
|
+
}], CurrentRoute: [{
|
|
5383
|
+
type: Input,
|
|
5384
|
+
args: ['current-route']
|
|
5385
|
+
}], EditingApplication: [{
|
|
5386
|
+
type: Input,
|
|
5387
|
+
args: ['editing-application']
|
|
5388
|
+
}], HasSaveButton: [{
|
|
5389
|
+
type: Input,
|
|
5390
|
+
args: ['has-save-button']
|
|
5391
|
+
}], ProjectLookup: [{
|
|
5392
|
+
type: Input,
|
|
5393
|
+
args: ['project-lookup']
|
|
5394
|
+
}], SaveFormEvent: [{
|
|
5395
|
+
type: Output,
|
|
5396
|
+
args: ['save-form-event']
|
|
5397
|
+
}] } });
|
|
5398
|
+
|
|
5620
5399
|
class BreadcrumbComponent {
|
|
5621
5400
|
constructor(eacSvc) {
|
|
5622
5401
|
this.eacSvc = eacSvc;
|
|
@@ -5716,7 +5495,7 @@ class BreadcrumbComponent {
|
|
|
5716
5495
|
async handleStateChange() { }
|
|
5717
5496
|
}
|
|
5718
5497
|
BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: EaCService }], target: i0.ɵɵFactoryTarget.Component });
|
|
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:
|
|
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: i4$4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i4$4.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: i4$4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
5720
5499
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
5721
5500
|
type: Component,
|
|
5722
5501
|
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"] }]
|
|
@@ -5749,10 +5528,10 @@ class CustomDomainDialogComponent {
|
|
|
5749
5528
|
}
|
|
5750
5529
|
}
|
|
5751
5530
|
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 });
|
|
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"] }] });
|
|
5531
|
+
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\n\n\n<!-- NEW BELOW -->\n<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Custom Domain</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n\n\n <lcu-domains\n [data]=\"DomainData\"\n >\n \n </lcu-domains>\n\n <!-- <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n </mat-error> -->\n\n</mat-dialog-content>\n\n\n<!-- <mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveCustomDomain()\"\n [disabled]=\"!BuildPipelineFormGroup?.valid || !BuildPipelineFormGroup?.dirty\">\n Save\n </button>\n\n</mat-dialog-actions> -->\n", 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"] }, { 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]" }] });
|
|
5753
5532
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: CustomDomainDialogComponent, decorators: [{
|
|
5754
5533
|
type: Component,
|
|
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: [""] }]
|
|
5534
|
+
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\n\n\n<!-- NEW BELOW -->\n<div class=\"dialog-header\" fxLayoutAlign=\"space-between center\">\n <h2 mat-dialog-title>Custom Domain</h2>\n\n <button mat-icon-button (click)=\"CloseDialog()\">\n <mat-icon>cancel</mat-icon>\n </button>\n</div>\n\n<mat-dialog-content>\n\n\n\n <lcu-domains\n [data]=\"DomainData\"\n >\n \n </lcu-domains>\n\n <!-- <mat-error *ngIf=\"ErrorMessage\" fxLayoutAlign=\"center center\" >\n {{ ErrorMessage }}\n </mat-error> -->\n\n</mat-dialog-content>\n\n\n<!-- <mat-dialog-actions \n class=\"actions-container\" \n div fxLayout=\"row\" \n fxLayoutAlign=\"end center\"\n>\n <button \n class=\"action-button\"\n mat-raised-button\n fxFlex=\"25%\"\n (click)=\"CloseDialog()\">\n Cancel\n\n </button>\n\n\n\n <button \n *ngIf=\"!State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"25%\" \n color=\"primary\" \n (click)=\"SaveCustomDomain()\"\n [disabled]=\"!BuildPipelineFormGroup?.valid || !BuildPipelineFormGroup?.dirty\">\n Save\n </button>\n\n</mat-dialog-actions> -->\n", styles: [""] }]
|
|
5756
5535
|
}], ctorParameters: function () { return [{ type: i2$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
5757
5536
|
type: Inject,
|
|
5758
5537
|
args: [MAT_DIALOG_DATA]
|
|
@@ -5776,33 +5555,199 @@ class EditApplicationDialogComponent {
|
|
|
5776
5555
|
CloseDialog() {
|
|
5777
5556
|
this.dialogRef.close();
|
|
5778
5557
|
}
|
|
5779
|
-
HandleSaveApplicationEvent(event) {
|
|
5780
|
-
console.log("event to save: ", event);
|
|
5781
|
-
if (event.Code === 0) {
|
|
5782
|
-
this.snackBar.open("Application Succesfully Updated", "Dismiss", {
|
|
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
|
+
});
|
|
5723
|
+
}
|
|
5724
|
+
handleSaveStatus(status) {
|
|
5725
|
+
console.log("event to save: ", status);
|
|
5726
|
+
if (status.Code === 0) {
|
|
5727
|
+
this.snackBar.open("Application Succesfully Created", "Dismiss", {
|
|
5783
5728
|
duration: 5000
|
|
5784
5729
|
});
|
|
5785
5730
|
this.CloseDialog();
|
|
5786
5731
|
}
|
|
5787
5732
|
else {
|
|
5788
|
-
this.ErrorMessage =
|
|
5733
|
+
this.ErrorMessage = status.Message;
|
|
5789
5734
|
}
|
|
5790
5735
|
}
|
|
5791
|
-
SaveApplication() {
|
|
5792
|
-
this.EditApplicationControl.SaveApplication();
|
|
5793
|
-
}
|
|
5794
5736
|
}
|
|
5795
|
-
|
|
5796
|
-
|
|
5797
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type:
|
|
5737
|
+
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 });
|
|
5738
|
+
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"] }] });
|
|
5739
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NewApplicationDialogComponent, decorators: [{
|
|
5798
5740
|
type: Component,
|
|
5799
|
-
args: [{ selector: 'lcu-
|
|
5741
|
+
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: [""] }]
|
|
5800
5742
|
}], ctorParameters: function () { return [{ type: EaCService }, { type: i2$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
5801
5743
|
type: Inject,
|
|
5802
5744
|
args: [MAT_DIALOG_DATA]
|
|
5803
|
-
}] }, { type: i3$1.MatSnackBar }]; }, propDecorators: {
|
|
5745
|
+
}] }, { type: i3$1.MatSnackBar }]; }, propDecorators: { ApplicationFormControls: [{
|
|
5804
5746
|
type: ViewChild,
|
|
5805
5747
|
args: [EditApplicationFormComponent]
|
|
5748
|
+
}], ProcessorDetailsFormControls: [{
|
|
5749
|
+
type: ViewChild,
|
|
5750
|
+
args: [ProcessorDetailsFormComponent]
|
|
5806
5751
|
}] } });
|
|
5807
5752
|
|
|
5808
5753
|
class ProcessorDetailsDialogComponent {
|
|
@@ -5872,10 +5817,10 @@ class SkeletonFeedCardComponent {
|
|
|
5872
5817
|
}
|
|
5873
5818
|
}
|
|
5874
5819
|
SkeletonFeedCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SkeletonFeedCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
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:
|
|
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:24px;width:24px;font-size:24px;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"] }] });
|
|
5876
5821
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SkeletonFeedCardComponent, decorators: [{
|
|
5877
5822
|
type: Component,
|
|
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:
|
|
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:24px;width:24px;font-size:24px;cursor:pointer}\n"] }]
|
|
5879
5824
|
}], ctorParameters: function () { return []; } });
|
|
5880
5825
|
|
|
5881
5826
|
class EmulatedDevicesToggleComponent {
|
|
@@ -5994,6 +5939,394 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
5994
5939
|
}]
|
|
5995
5940
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.LCUServiceSettings }]; } });
|
|
5996
5941
|
|
|
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 "PullRequest":
|
|
6155
|
+
this.setupPRForm();
|
|
6156
|
+
break;
|
|
6157
|
+
case "OpenIssue":
|
|
6158
|
+
this.setupIssueForm();
|
|
6159
|
+
break;
|
|
6160
|
+
case "CreateBranch":
|
|
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 === 'OpenIssue' \">\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select \n formControlName=\"sourceControl\"\n (selectionChange)=\"IssueSourceControlChanged($event)\"\n\n >\n <ng-container *ngFor=\"let scLookup of SourceControlLookups | slice: 0:Slices.Sources\">\n <mat-option *ngIf=\"SourceControls[scLookup]; let sc\" [value]=\"scLookup\">\n {{sc.Name}}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n\n <angular-editor \n id=\"issue-editor\"\n formControlName=\"editor\" \n [config]=\"EditorConfig\"\n ></angular-editor>\n </ng-container>\n\n <!-- ANNOUNCEMENT FORM -->\n\n <ng-container *ngIf=\"data.type === 'announcement' \">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Subtitle\"\n formControlName=\"subtitle\"\n />\n </mat-form-field>\n\n <angular-editor \n id=\"announcement-editor\"\n formControlName=\"editor\" \n [config]=\"EditorConfig\"\n ></angular-editor>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Text\"\n formControlName=\"actionText\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Link\"\n formControlName=\"actionLink\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Icon\"\n formControlName=\"actionIcon\"\n />\n </mat-form-field>\n\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <button \n *ngIf=\"ActionTextControl?.value || ActionIconControl?.value\"\n mat-button color=\"primary\" \n (click)=\"HandleAction(ActionLinkControl?.value)\"\n >\n <mat-icon *ngIf=\"ActionIconControl?.value\">{{ ActionIconControl?.value }}</mat-icon>\n \n {{ ActionTextControl?.value }}\n </button>\n\n <button \n *ngIf=\"!ActionTextControl?.value && !ActionIconControl?.value\"\n mat-button color=\"primary\" \n >\n <mat-icon>cruelty_free</mat-icon>\n \n Example Button\n </button>\n </div>\n\n </ng-container>\n\n <!-- PR FORM -->\n\n <ng-container *ngIf=\"data.type === 'PullRequest' \">\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select \n formControlName=\"sourceControl\"\n (selectionChange)=\"PullRequestSourceControlChanged($event)\"\n >\n <ng-container *ngFor=\"let scLookup of SourceControlLookups | slice: 0:Slices.Sources\">\n <mat-option *ngIf=\"SourceControls[scLookup]; let sc\" [value]=\"scLookup\">\n {{sc.Name}}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Base</mat-label>\n <mat-select formControlName=\"targetBranch\" required\n >\n <mat-option *ngFor=\"let branchOpt of BranchOptions\" [value]=\"branchOpt.Name\">\n {{branchOpt.Name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n \n <mat-icon>arrow_back</mat-icon>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Compare</mat-label>\n <mat-select formControlName=\"sourceBranch\" required\n >\n <mat-option *ngFor=\"let branchOpt of BranchOptions\" [value]=\"branchOpt.Name\">\n {{branchOpt.Name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n\n <angular-editor \n id=\"pr-editor\"\n formControlName=\"editor\" \n [config]=\"EditorConfig\"\n ></angular-editor>\n\n </ng-container>\n\n <!-- Feature Branch form -->\n\n <ng-container *ngIf=\"data.type === 'CreateBranch' \">\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\n <mat-form-field >\n <mat-label>Source Control</mat-label>\n <mat-select \n formControlName=\"sourceControl\"\n (selectionChange)=\"FeatureBranchSourceControlChanged($event)\"\n >\n <ng-container *ngFor=\"let scLookup of SourceControlLookups | slice: 0:Slices.Sources\">\n <mat-option *ngIf=\"SourceControls[scLookup]; let sc\" [value]=\"scLookup\">\n {{sc.Name}}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n\n <mat-form-field *ngIf=\"OrganizationOptions?.length > 0\">\n\n <mat-select \n formControlName=\"organization\" \n placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\" \n required\n >\n <ng-container *ngFor=\"let orgOpt of OrganizationOptions\">\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n\n\n </mat-form-field>\n\n <mat-form-field *ngIf=\"RepositoryOptions?.length > 0\">\n\n <mat-select formControlName=\"repository\" \n placeholder=\"Repository\" \n (selectionChange)=\"RepositoryChanged($event)\" \n required\n >\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select> \n </mat-form-field>\n\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\" *ngIf=\"BranchOptions?.length > 0\">\n\n <mat-form-field >\n <mat-label>Base Branch</mat-label>\n <mat-select formControlName=\"sourceBranch\" required\n >\n <mat-option *ngFor=\"let branchOpt of BranchOptions\" [value]=\"branchOpt.Name\">\n {{branchOpt.Name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field >\n <input\n matInput\n placeholder=\"Create New Branch\"\n formControlName=\"targetBranch\"\n required\n />\n </mat-form-field>\n </div>\n\n </ng-container>\n\n\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 === 'OpenIssue' \">\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select \n formControlName=\"sourceControl\"\n (selectionChange)=\"IssueSourceControlChanged($event)\"\n\n >\n <ng-container *ngFor=\"let scLookup of SourceControlLookups | slice: 0:Slices.Sources\">\n <mat-option *ngIf=\"SourceControls[scLookup]; let sc\" [value]=\"scLookup\">\n {{sc.Name}}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n\n <angular-editor \n id=\"issue-editor\"\n formControlName=\"editor\" \n [config]=\"EditorConfig\"\n ></angular-editor>\n </ng-container>\n\n <!-- ANNOUNCEMENT FORM -->\n\n <ng-container *ngIf=\"data.type === 'announcement' \">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Subtitle\"\n formControlName=\"subtitle\"\n />\n </mat-form-field>\n\n <angular-editor \n id=\"announcement-editor\"\n formControlName=\"editor\" \n [config]=\"EditorConfig\"\n ></angular-editor>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\">\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Text\"\n formControlName=\"actionText\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Link\"\n formControlName=\"actionLink\"\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Action Icon\"\n formControlName=\"actionIcon\"\n />\n </mat-form-field>\n\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <button \n *ngIf=\"ActionTextControl?.value || ActionIconControl?.value\"\n mat-button color=\"primary\" \n (click)=\"HandleAction(ActionLinkControl?.value)\"\n >\n <mat-icon *ngIf=\"ActionIconControl?.value\">{{ ActionIconControl?.value }}</mat-icon>\n \n {{ ActionTextControl?.value }}\n </button>\n\n <button \n *ngIf=\"!ActionTextControl?.value && !ActionIconControl?.value\"\n mat-button color=\"primary\" \n >\n <mat-icon>cruelty_free</mat-icon>\n \n Example Button\n </button>\n </div>\n\n </ng-container>\n\n <!-- PR FORM -->\n\n <ng-container *ngIf=\"data.type === 'PullRequest' \">\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Source Control</mat-label>\n <mat-select \n formControlName=\"sourceControl\"\n (selectionChange)=\"PullRequestSourceControlChanged($event)\"\n >\n <ng-container *ngFor=\"let scLookup of SourceControlLookups | slice: 0:Slices.Sources\">\n <mat-option *ngIf=\"SourceControls[scLookup]; let sc\" [value]=\"scLookup\">\n {{sc.Name}}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Base</mat-label>\n <mat-select formControlName=\"targetBranch\" required\n >\n <mat-option *ngFor=\"let branchOpt of BranchOptions\" [value]=\"branchOpt.Name\">\n {{branchOpt.Name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n \n <mat-icon>arrow_back</mat-icon>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>Compare</mat-label>\n <mat-select formControlName=\"sourceBranch\" required\n >\n <mat-option *ngFor=\"let branchOpt of BranchOptions\" [value]=\"branchOpt.Name\">\n {{branchOpt.Name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n </mat-form-field>\n\n\n <angular-editor \n id=\"pr-editor\"\n formControlName=\"editor\" \n [config]=\"EditorConfig\"\n ></angular-editor>\n\n </ng-container>\n\n <!-- Feature Branch form -->\n\n <ng-container *ngIf=\"data.type === 'CreateBranch' \">\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n\n <mat-form-field >\n <mat-label>Source Control</mat-label>\n <mat-select \n formControlName=\"sourceControl\"\n (selectionChange)=\"FeatureBranchSourceControlChanged($event)\"\n >\n <ng-container *ngFor=\"let scLookup of SourceControlLookups | slice: 0:Slices.Sources\">\n <mat-option *ngIf=\"SourceControls[scLookup]; let sc\" [value]=\"scLookup\">\n {{sc.Name}}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n\n <mat-form-field *ngIf=\"OrganizationOptions?.length > 0\">\n\n <mat-select \n formControlName=\"organization\" \n placeholder=\"Organization\"\n (selectionChange)=\"OrganizationChanged($event)\" \n required\n >\n <ng-container *ngFor=\"let orgOpt of OrganizationOptions\">\n <mat-option [value]=\"orgOpt.Name\">\n {{ orgOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n\n\n\n </mat-form-field>\n\n <mat-form-field *ngIf=\"RepositoryOptions?.length > 0\">\n\n <mat-select formControlName=\"repository\" \n placeholder=\"Repository\" \n (selectionChange)=\"RepositoryChanged($event)\" \n required\n >\n <ng-container *ngFor=\"let repoOpt of RepositoryOptions\">\n <mat-option [value]=\"repoOpt.Name\">\n {{ repoOpt.Name }}\n </mat-option>\n </ng-container>\n </mat-select> \n </mat-form-field>\n\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\" *ngIf=\"BranchOptions?.length > 0\">\n\n <mat-form-field >\n <mat-label>Base Branch</mat-label>\n <mat-select formControlName=\"sourceBranch\" required\n >\n <mat-option *ngFor=\"let branchOpt of BranchOptions\" [value]=\"branchOpt.Name\">\n {{branchOpt.Name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field >\n <input\n matInput\n placeholder=\"Create New Branch\"\n formControlName=\"targetBranch\"\n required\n />\n </mat-form-field>\n </div>\n\n </ng-container>\n\n\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 FeedHeaderActions() {
|
|
6225
|
+
return this.State?.FeedActions;
|
|
6226
|
+
}
|
|
6227
|
+
get State() {
|
|
6228
|
+
return this.eacSvc.State;
|
|
6229
|
+
}
|
|
6230
|
+
ngOnInit() {
|
|
6231
|
+
}
|
|
6232
|
+
ngAfterViewInit() {
|
|
6233
|
+
this.addSelectBtn();
|
|
6234
|
+
}
|
|
6235
|
+
CreateAnnouncement() {
|
|
6236
|
+
// this.ModalHeader = "Create Team Announcement";
|
|
6237
|
+
this.OpenFHDialog('announcement', "Create Team Announcement");
|
|
6238
|
+
}
|
|
6239
|
+
// public CreateFeatureBranch(){
|
|
6240
|
+
// this.removeSelectedBtn();
|
|
6241
|
+
// this.ModalHeader = "Create Feature Branch";
|
|
6242
|
+
// this.selectedBtn = "fb-btn";
|
|
6243
|
+
// this.addSelectBtn();
|
|
6244
|
+
// console.log("create feature branch selected");
|
|
6245
|
+
// this.OpenFHDialog('branch');
|
|
6246
|
+
// }
|
|
6247
|
+
// public OpenIssue(){
|
|
6248
|
+
// this.removeSelectedBtn();
|
|
6249
|
+
// this.ModalHeader = "Open Issue";
|
|
6250
|
+
// this.selectedBtn = "oi-btn";
|
|
6251
|
+
// this.addSelectBtn();
|
|
6252
|
+
// console.log("open issue selected");
|
|
6253
|
+
// this.OpenFHDialog('issue');
|
|
6254
|
+
// }
|
|
6255
|
+
// public CreatePullRequest(){
|
|
6256
|
+
// this.removeSelectedBtn();
|
|
6257
|
+
// this.ModalHeader = "Create Pull Request";
|
|
6258
|
+
// this.selectedBtn = "pr-btn";
|
|
6259
|
+
// this.addSelectBtn();
|
|
6260
|
+
// console.log("create pull request selected");
|
|
6261
|
+
// this.OpenFHDialog('pull-request');
|
|
6262
|
+
// }
|
|
6263
|
+
CreateNewApp() {
|
|
6264
|
+
const dialogRef = this.dialog.open(NewApplicationDialogComponent, {
|
|
6265
|
+
width: '600px',
|
|
6266
|
+
data: {
|
|
6267
|
+
environmentLookup: this.ActiveEnvironmentLookup,
|
|
6268
|
+
},
|
|
6269
|
+
});
|
|
6270
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
6271
|
+
// console.log('The dialog was closed');
|
|
6272
|
+
// console.log("result:", result)
|
|
6273
|
+
});
|
|
6274
|
+
}
|
|
6275
|
+
OpenFHDialog(modalType, modalHeader) {
|
|
6276
|
+
const dialogRef = this.dialog.open(FeedHeaderDialogComponent, {
|
|
6277
|
+
width: '600px',
|
|
6278
|
+
data: {
|
|
6279
|
+
dialogTitle: modalHeader,
|
|
6280
|
+
type: modalType,
|
|
6281
|
+
sourceControlLookup: this.SourceControlLookup ? this.SourceControlLookup : null
|
|
6282
|
+
},
|
|
6283
|
+
});
|
|
6284
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
6285
|
+
// console.log('The dialog was closed');
|
|
6286
|
+
// console.log("result:", result)
|
|
6287
|
+
});
|
|
6288
|
+
}
|
|
6289
|
+
RouteToPath(path) {
|
|
6290
|
+
window.location.href = path;
|
|
6291
|
+
}
|
|
6292
|
+
Submit() {
|
|
6293
|
+
console.log("submitting: ", this.value);
|
|
6294
|
+
switch (this.selectedBtn) {
|
|
6295
|
+
case "pr-btn":
|
|
6296
|
+
//Pull request
|
|
6297
|
+
console.log("creating pull request: ", this.value);
|
|
6298
|
+
break;
|
|
6299
|
+
case "oi-btn":
|
|
6300
|
+
//Open Issue
|
|
6301
|
+
console.log("Open issue: ", this.value);
|
|
6302
|
+
break;
|
|
6303
|
+
case "fb-btn":
|
|
6304
|
+
//Feature Branch
|
|
6305
|
+
console.log("creating feature branch: ", this.value);
|
|
6306
|
+
break;
|
|
6307
|
+
default:
|
|
6308
|
+
console.log("hmm");
|
|
6309
|
+
break;
|
|
6310
|
+
}
|
|
6311
|
+
}
|
|
6312
|
+
//HELPERS
|
|
6313
|
+
addSelectBtn() {
|
|
6314
|
+
document.getElementById(this.selectedBtn)?.classList.add('selected');
|
|
6315
|
+
}
|
|
6316
|
+
removeSelectedBtn() {
|
|
6317
|
+
document.getElementById(this.selectedBtn)?.classList.remove('selected');
|
|
6318
|
+
}
|
|
6319
|
+
}
|
|
6320
|
+
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 });
|
|
6321
|
+
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?.LoadingFeed\">\n <div class=\"gh-card-container\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-icon fxFlex=\"15%\" class=\"gh-icon\" color=\"primary\">error_outline</mat-icon>\n <div fxFlex=\"85%\" class=\"gh-card-main-content\">\n <button \n mat-button \n class=\"main-btn\"\n (click)=\"CreateAnnouncement()\" \n color=\"primary\"\n >Create Team Announcement</button>\n\n <!-- <mat-form-field appearance=\"fill\" class=\"gh-input\">\n <mat-label>{{ InputLabel }}</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"value\" (click)=\"OpenFHDialog('announcement')\"/>\n </mat-form-field> -->\n </div>\n\n <!-- <button\n fxFlex=\"15%\"\n mat-button\n (click)=\"Submit()\"\n id=\"submit-btn\"\n color=\"primary\"\n >\n Submit\n </button> -->\n </div>\n\n <mat-card-actions fxLayout=\"row\" fxLayoutAlign=\"space-around center\" \n >\n <button \n *ngFor=\"let action of FeedHeaderActions\"\n mat-button \n (click)=\"OpenFHDialog(action.Action, action.Text)\" \n id=\"pr-btn\" \n color=\"primary\"\n >\n <mat-icon>{{action.Icon}}</mat-icon>\n {{action.Text}}\n </button>\n\n <!-- <button \n mat-button \n (click)=\"OpenIssue()\" \n id=\"oi-btn\" \n color=\"primary\"\n >\n Open Issue\n </button>\n\n <button \n mat-button \n (click)=\"CreateFeatureBranch()\" \n id=\"fb-btn\" \n color=\"primary\"\n >\n Feature Branch\n </button> -->\n\n <!-- <button mat-icon-button [matMenuTriggerFor]=\"menu\" aria-label=\"menu\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button class=\"gh-menu-action\" mat-menu-item (click)=\"CreateNewApp()\">\n Create New App\n </button>\n\n <button\n class=\"gh-menu-action\"\n mat-menu-item\n (click)=\"RouteToPath('/dashboard/create-project')\"\n >\n Create Project\n </button>\n </mat-menu> -->\n </mat-card-actions>\n </ng-container>\n\n <!-- SKELETON -->\n <ng-container *ngIf=\"State?.LoadingFeed\">\n <div id=\"gh-card-skeleton\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <skeleton-avatar\n class=\"gh-icon\"\n [showIcon]=\"false\"\n [effect]=\"SkeletonEffect\"\n ></skeleton-avatar>\n\n <div fxFlex=\"85%\" class=\"gh-card-main-content\">\n <skeleton-block\n height=\"60px\"\n [effect]=\"SkeletonEffect\"\n ></skeleton-block>\n </div>\n\n <!-- <div\n skeleton-text\n fxFlex=\"15%\"\n [effect]=\"SkeletonEffect\"\n style=\"margin: 0px 10px\"\n >\n Submit\n </div> -->\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Pull Request</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Open Issue</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Feature Branch</div>\n <!-- <div skeleton-text [effect]=\"SkeletonEffect\">\n <mat-icon>more_horiz</mat-icon>\n </div> -->\n </div>\n </ng-container>\n</mat-card>\n", 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: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$3.SkeletonTextDirective, selector: "[skeleton-text]", inputs: ["effect"] }] });
|
|
6322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FeedHeaderComponent, decorators: [{
|
|
6323
|
+
type: Component,
|
|
6324
|
+
args: [{ selector: 'lcu-feed-header', template: "<mat-card class=\"social-card\">\n <ng-container *ngIf=\"!State?.LoadingFeed\">\n <div class=\"gh-card-container\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-icon fxFlex=\"15%\" class=\"gh-icon\" color=\"primary\">error_outline</mat-icon>\n <div fxFlex=\"85%\" class=\"gh-card-main-content\">\n <button \n mat-button \n class=\"main-btn\"\n (click)=\"CreateAnnouncement()\" \n color=\"primary\"\n >Create Team Announcement</button>\n\n <!-- <mat-form-field appearance=\"fill\" class=\"gh-input\">\n <mat-label>{{ InputLabel }}</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"value\" (click)=\"OpenFHDialog('announcement')\"/>\n </mat-form-field> -->\n </div>\n\n <!-- <button\n fxFlex=\"15%\"\n mat-button\n (click)=\"Submit()\"\n id=\"submit-btn\"\n color=\"primary\"\n >\n Submit\n </button> -->\n </div>\n\n <mat-card-actions fxLayout=\"row\" fxLayoutAlign=\"space-around center\" \n >\n <button \n *ngFor=\"let action of FeedHeaderActions\"\n mat-button \n (click)=\"OpenFHDialog(action.Action, action.Text)\" \n id=\"pr-btn\" \n color=\"primary\"\n >\n <mat-icon>{{action.Icon}}</mat-icon>\n {{action.Text}}\n </button>\n\n <!-- <button \n mat-button \n (click)=\"OpenIssue()\" \n id=\"oi-btn\" \n color=\"primary\"\n >\n Open Issue\n </button>\n\n <button \n mat-button \n (click)=\"CreateFeatureBranch()\" \n id=\"fb-btn\" \n color=\"primary\"\n >\n Feature Branch\n </button> -->\n\n <!-- <button mat-icon-button [matMenuTriggerFor]=\"menu\" aria-label=\"menu\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button class=\"gh-menu-action\" mat-menu-item (click)=\"CreateNewApp()\">\n Create New App\n </button>\n\n <button\n class=\"gh-menu-action\"\n mat-menu-item\n (click)=\"RouteToPath('/dashboard/create-project')\"\n >\n Create Project\n </button>\n </mat-menu> -->\n </mat-card-actions>\n </ng-container>\n\n <!-- SKELETON -->\n <ng-container *ngIf=\"State?.LoadingFeed\">\n <div id=\"gh-card-skeleton\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <skeleton-avatar\n class=\"gh-icon\"\n [showIcon]=\"false\"\n [effect]=\"SkeletonEffect\"\n ></skeleton-avatar>\n\n <div fxFlex=\"85%\" class=\"gh-card-main-content\">\n <skeleton-block\n height=\"60px\"\n [effect]=\"SkeletonEffect\"\n ></skeleton-block>\n </div>\n\n <!-- <div\n skeleton-text\n fxFlex=\"15%\"\n [effect]=\"SkeletonEffect\"\n style=\"margin: 0px 10px\"\n >\n Submit\n </div> -->\n </div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <div skeleton-text [effect]=\"SkeletonEffect\">Pull Request</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Open Issue</div>\n <div skeleton-text [effect]=\"SkeletonEffect\">Feature Branch</div>\n <!-- <div skeleton-text [effect]=\"SkeletonEffect\">\n <mat-icon>more_horiz</mat-icon>\n </div> -->\n </div>\n </ng-container>\n</mat-card>\n", 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"] }]
|
|
6325
|
+
}], ctorParameters: function () { return [{ type: EaCService }, { type: i2$3.MatDialog }]; }, propDecorators: { SourceControlLookup: [{
|
|
6326
|
+
type: Input,
|
|
6327
|
+
args: ['source-control-lookup']
|
|
6328
|
+
}] } });
|
|
6329
|
+
|
|
5997
6330
|
class ApplicationsFlowModule {
|
|
5998
6331
|
static forRoot() {
|
|
5999
6332
|
return {
|
|
@@ -6038,7 +6371,7 @@ ApplicationsFlowModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
6038
6371
|
ProjectInfoCardComponent,
|
|
6039
6372
|
AnalyticsCardComponent,
|
|
6040
6373
|
FeedCardSmComponent,
|
|
6041
|
-
|
|
6374
|
+
FeedHeaderComponent,
|
|
6042
6375
|
MainFeedCardComponent,
|
|
6043
6376
|
TwoColumnHeaderComponent,
|
|
6044
6377
|
CardCarouselComponent,
|
|
@@ -6057,7 +6390,9 @@ ApplicationsFlowModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
6057
6390
|
ProcessorDetailsDialogComponent,
|
|
6058
6391
|
SkeletonFeedCardComponent,
|
|
6059
6392
|
UpgradeDialogComponent,
|
|
6060
|
-
EmulatedDevicesToggleComponent
|
|
6393
|
+
EmulatedDevicesToggleComponent,
|
|
6394
|
+
FeedHeaderDialogComponent], imports: [AngularEditorModule,
|
|
6395
|
+
ClipboardModule,
|
|
6061
6396
|
FathymSharedModule,
|
|
6062
6397
|
FormsModule,
|
|
6063
6398
|
ReactiveFormsModule,
|
|
@@ -6095,7 +6430,8 @@ ApplicationsFlowModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
6095
6430
|
ProjectInfoCardComponent,
|
|
6096
6431
|
AnalyticsCardComponent,
|
|
6097
6432
|
FeedCardSmComponent,
|
|
6098
|
-
|
|
6433
|
+
FeedHeaderComponent,
|
|
6434
|
+
FeedHeaderDialogComponent,
|
|
6099
6435
|
MainFeedCardComponent,
|
|
6100
6436
|
TwoColumnHeaderComponent,
|
|
6101
6437
|
CardCarouselComponent,
|
|
@@ -6114,8 +6450,10 @@ ApplicationsFlowModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
6114
6450
|
ProcessorDetailsDialogComponent,
|
|
6115
6451
|
SkeletonFeedCardComponent,
|
|
6116
6452
|
UpgradeDialogComponent,
|
|
6117
|
-
EmulatedDevicesToggleComponent
|
|
6453
|
+
EmulatedDevicesToggleComponent,
|
|
6454
|
+
FeedHeaderDialogComponent] });
|
|
6118
6455
|
ApplicationsFlowModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ApplicationsFlowModule, imports: [[
|
|
6456
|
+
AngularEditorModule,
|
|
6119
6457
|
ClipboardModule,
|
|
6120
6458
|
FathymSharedModule,
|
|
6121
6459
|
FormsModule,
|
|
@@ -6159,7 +6497,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
6159
6497
|
ProjectInfoCardComponent,
|
|
6160
6498
|
AnalyticsCardComponent,
|
|
6161
6499
|
FeedCardSmComponent,
|
|
6162
|
-
|
|
6500
|
+
FeedHeaderComponent,
|
|
6163
6501
|
MainFeedCardComponent,
|
|
6164
6502
|
TwoColumnHeaderComponent,
|
|
6165
6503
|
CardCarouselComponent,
|
|
@@ -6178,9 +6516,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
6178
6516
|
ProcessorDetailsDialogComponent,
|
|
6179
6517
|
SkeletonFeedCardComponent,
|
|
6180
6518
|
UpgradeDialogComponent,
|
|
6181
|
-
EmulatedDevicesToggleComponent
|
|
6519
|
+
EmulatedDevicesToggleComponent,
|
|
6520
|
+
FeedHeaderDialogComponent
|
|
6182
6521
|
],
|
|
6183
6522
|
imports: [
|
|
6523
|
+
AngularEditorModule,
|
|
6184
6524
|
ClipboardModule,
|
|
6185
6525
|
FathymSharedModule,
|
|
6186
6526
|
FormsModule,
|
|
@@ -6221,7 +6561,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
6221
6561
|
ProjectInfoCardComponent,
|
|
6222
6562
|
AnalyticsCardComponent,
|
|
6223
6563
|
FeedCardSmComponent,
|
|
6224
|
-
|
|
6564
|
+
FeedHeaderComponent,
|
|
6565
|
+
FeedHeaderDialogComponent,
|
|
6225
6566
|
MainFeedCardComponent,
|
|
6226
6567
|
TwoColumnHeaderComponent,
|
|
6227
6568
|
CardCarouselComponent,
|
|
@@ -6240,7 +6581,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
6240
6581
|
ProcessorDetailsDialogComponent,
|
|
6241
6582
|
SkeletonFeedCardComponent,
|
|
6242
6583
|
UpgradeDialogComponent,
|
|
6243
|
-
EmulatedDevicesToggleComponent
|
|
6584
|
+
EmulatedDevicesToggleComponent,
|
|
6585
|
+
FeedHeaderDialogComponent
|
|
6244
6586
|
],
|
|
6245
6587
|
entryComponents: [
|
|
6246
6588
|
ApplicationsFlowProjectsElementComponent,
|
|
@@ -6267,7 +6609,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
6267
6609
|
ProjectInfoCardComponent,
|
|
6268
6610
|
AnalyticsCardComponent,
|
|
6269
6611
|
FeedCardSmComponent,
|
|
6270
|
-
|
|
6612
|
+
FeedHeaderComponent,
|
|
6271
6613
|
MainFeedCardComponent,
|
|
6272
6614
|
TwoColumnHeaderComponent,
|
|
6273
6615
|
CardCarouselComponent,
|
|
@@ -6306,6 +6648,8 @@ class FeedItemAction {
|
|
|
6306
6648
|
}
|
|
6307
6649
|
class FeedItemTab {
|
|
6308
6650
|
}
|
|
6651
|
+
class FeedEntry {
|
|
6652
|
+
}
|
|
6309
6653
|
|
|
6310
6654
|
class ActionsModel {
|
|
6311
6655
|
}
|
|
@@ -6329,5 +6673,5 @@ class FormModel {
|
|
|
6329
6673
|
* Generated bundle index. Do not edit.
|
|
6330
6674
|
*/
|
|
6331
6675
|
|
|
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,
|
|
6676
|
+
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, FeedEntry, FeedHeaderComponent, FeedHeaderDialogComponent, FeedItem, FeedItemAction, FeedItemContributor, FeedItemTab, FlowToolComponent, FormActionsModel, FormCardComponent, FormModel, FormValuesModel, FormsService, 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 };
|
|
6333
6677
|
//# sourceMappingURL=lowcodeunit-applications-flow-common.mjs.map
|