-
+
+
diff --git a/projects/ngx-launcher/src/lib/create-app/dependency-editor-step/dependency-editor-step.component.less b/projects/ngx-launcher/src/lib/components/dependency-editor-step/dependency-editor-step.component.less
similarity index 100%
rename from projects/ngx-launcher/src/lib/create-app/dependency-editor-step/dependency-editor-step.component.less
rename to projects/ngx-launcher/src/lib/components/dependency-editor-step/dependency-editor-step.component.less
diff --git a/projects/ngx-launcher/src/lib/create-app/dependency-editor-step/dependency-editor-step.component.spec.ts b/projects/ngx-launcher/src/lib/components/dependency-editor-step/dependency-editor-step.component.spec.ts
similarity index 55%
rename from projects/ngx-launcher/src/lib/create-app/dependency-editor-step/dependency-editor-step.component.spec.ts
rename to projects/ngx-launcher/src/lib/components/dependency-editor-step/dependency-editor-step.component.spec.ts
index a134c8d2..aa82a6ec 100644
--- a/projects/ngx-launcher/src/lib/create-app/dependency-editor-step/dependency-editor-step.component.spec.ts
+++ b/projects/ngx-launcher/src/lib/components/dependency-editor-step/dependency-editor-step.component.spec.ts
@@ -1,21 +1,21 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { CommonModule } from '@angular/common';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { FormsModule } from '@angular/forms';
import { RouterTestingModule } from '@angular/router/testing';
-import { Observable, of} from 'rxjs';
-import { DependencyEditorModule, URLProvider, DependencyEditorTokenProvider } from 'fabric8-analytics-dependency-editor';
+import { DependencyEditorModule } from 'fabric8-analytics-dependency-editor';
import { Broadcaster } from 'ngx-base';
+import { Observable, of } from 'rxjs';
+import { DemoDependencyEditorService } from '../../../../../../src/app/service/demo-dependency-editor.service';
+import { TokenProvider } from '../../../lib/service/token-provider';
import { DependencyCheck } from '../../launcher.module';
+import { Projectile, StepState } from '../../model/projectile.model';
import { DependencyCheckService } from '../../service/dependency-check.service';
import { DependencyEditorService } from '../../service/dependency-editor.service';
-import { DependencyEditorCreateappStepComponent } from './dependency-editor-step.component';
-import { LauncherComponent } from '../../launcher.component';
-import { LauncherStep } from '../../launcher-step';
import { HelperService } from '../../service/helper.service';
-import { TokenProvider } from '../../../lib/service/token-provider';
-import { BroadcasterTestProvider } from '../targetenvironment-createapp-step/target-environment-createapp-step.component.spec';
-import { DemoDependencyEditorService } from '../../../../../../src/app/service/demo-dependency-editor.service';
+import { ButtonNextStepComponent } from '../../shared/button-next-step.component';
+import { BroadcasterTestProvider } from '../targetenvironment-step/target-environment-step.component.spec';
+import { DependencyEditorStepComponent } from './dependency-editor-step.component';
const mockHelperService = {
getBackendUrl(): string {
@@ -33,50 +33,19 @@ const mockDependencyCheckService = {
groupId: 'io.openshift.booster',
projectName: 'App_test_1',
projectVersion: '1.0.0-SNAPSHOT',
- spacePath: '/myspace'
+ spacePath: '/myspace',
+ targetEnvironment: undefined
});
}
};
-export interface TypeWizardComponent {
- selectedSection: string;
- steps: LauncherStep[];
- summary: any;
- summaryCompleted: boolean;
- addStep(step: LauncherStep): void;
- onInViewportChange($event: any, id: string): any;
-}
-
-const mockWizardComponent: TypeWizardComponent = {
- selectedSection: '',
- steps: [],
- summary: {
- dependencyCheck: {},
- gitHubDetails: {}
- },
- summaryCompleted: false,
- addStep(step: LauncherStep) {
- for (let i = 0; i < this.steps.length; i++) {
- if (step.id === this.steps[i].id) {
- return;
- }
- }
- this.steps.push(step);
- },
- onInViewportChange($event: any, id: string) {
- if ($event) {
- setTimeout(() => {
- this.selectedSection = id;
- }, 10); // Avoids ExpressionChangedAfterItHasBeenCheckedError
- }
- }
-};
-
describe('DependencyEditorCreateappStepComponent', () => {
- let component: DependencyEditorCreateappStepComponent;
- let fixture: ComponentFixture
;
+ let component: DependencyEditorStepComponent;
+ let fixture: ComponentFixture;
beforeEach(async(() => {
+ const projectile = new Projectile();
+ projectile.setState('MissionRuntime', new StepState({}, []));
TestBed.configureTestingModule({
imports: [
CommonModule,
@@ -85,9 +54,11 @@ describe('DependencyEditorCreateappStepComponent', () => {
RouterTestingModule
],
declarations: [
- DependencyEditorCreateappStepComponent
+ DependencyEditorStepComponent,
+ ButtonNextStepComponent
],
providers : [
+ { provide: Projectile, useValue: projectile },
TokenProvider,
{
provide: DependencyCheckService, useValue: mockDependencyCheckService
@@ -96,16 +67,13 @@ describe('DependencyEditorCreateappStepComponent', () => {
provide: DependencyEditorService, useClass: DemoDependencyEditorService
},
{ provide: HelperService, useValue: mockHelperService },
- {
- provide: LauncherComponent, useValue: mockWizardComponent
- },
{ provide: Broadcaster, useValue: BroadcasterTestProvider.broadcaster }
]
}).compileComponents();
}));
beforeEach(() => {
- fixture = TestBed.createComponent(DependencyEditorCreateappStepComponent);
+ fixture = TestBed.createComponent(DependencyEditorStepComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
diff --git a/projects/ngx-launcher/src/lib/components/dependency-editor-step/dependency-editor-step.component.ts b/projects/ngx-launcher/src/lib/components/dependency-editor-step/dependency-editor-step.component.ts
new file mode 100644
index 00000000..38f0fe80
--- /dev/null
+++ b/projects/ngx-launcher/src/lib/components/dependency-editor-step/dependency-editor-step.component.ts
@@ -0,0 +1,153 @@
+import {
+ Component,
+ Host,
+ Input,
+ OnDestroy,
+ OnInit,
+ Optional,
+ ViewEncapsulation
+} from '@angular/core';
+import { Broadcaster } from 'ngx-base';
+import { Subscription } from 'rxjs';
+
+import { LauncherStep } from '../../launcher-step';
+import { LauncherComponent } from '../../launcher.component';
+import { DependencyCheck } from '../../model/dependency-check.model';
+import { DependencyEditor } from '../../model/dependency-editor/dependency-editor.model';
+import { Projectile, StepState } from '../../model/projectile.model';
+import { DependencyCheckService } from '../../service/dependency-check.service';
+import { DependencyEditorService } from '../../service/dependency-editor.service';
+
+import * as _ from 'lodash';
+import { BoosterState } from '../../model/booster.model';
+
+@Component({
+ encapsulation: ViewEncapsulation.None,
+ selector: 'f8launcher-dependencychecker-step',
+ templateUrl: './dependency-editor-step.component.html',
+ styleUrls: ['./dependency-editor-step.component.less']
+})
+export class DependencyEditorStepComponent extends LauncherStep implements OnInit, OnDestroy {
+ @Input() id: string;
+ @Input() depEditorFlag: boolean;
+
+ public github = '';
+ public gitref = '';
+ public boosterInfo: any = null;
+ public metadataInfo: any = null;
+
+ public blankResponse: any = null;
+
+ dependencyEditor = new DependencyEditor();
+ dependencyCheck = new DependencyCheck();
+
+ private subscriptions: Subscription[] = [];
+ constructor(
+ @Host() @Optional() public launcherComponent: LauncherComponent,
+ public broadcaster: Broadcaster,
+ @Optional() private depEditorService: DependencyEditorService,
+ private dependencyCheckService: DependencyCheckService,
+ private projectile: Projectile<{ dep: DependencyEditor }>
+ ) {
+ super(projectile);
+ this.broadcaster.on('booster-changed').subscribe(booster => {
+ const artifactTS: number = Date.now();
+ const artifactRuntime = booster.runtime.id.replace(/[.\-_]/g, '');
+ const artifactMission = booster.mission.id.replace(/[.\-_]/g, '');
+ ( this.dependencyCheck).mission = booster.mission;
+ this.dependencyCheck.mavenArtifact = `booster-${artifactMission}-${artifactRuntime}-${artifactTS}`;
+
+ this.boosterInfo = _.cloneDeep(booster);
+ if (booster.mission.id === 'blank-mission') {
+ this.handleBlankMissionFlow(booster.runtime.id);
+ } else {
+ booster.mission['boosters'].forEach((b: any) => {
+ if (booster.mission.id === b.mission.id && booster.runtime.id === b.runtime.id) {
+ if (b.source && b.source.git) {
+ this.github = b.source.git.url;
+ this.gitref = b.source.git.ref;
+ }
+ }
+ });
+ }
+ this.boosterInfo.runtime.version = booster.runtime.version.id;
+ });
+ }
+
+ ngOnDestroy() {
+ this.subscriptions.forEach((sub) => {
+ sub.unsubscribe();
+ });
+ }
+
+ ngOnInit() {
+ const state = new StepState({ dep: this.dependencyEditor }, [
+ { name: 'dependencyEditor', value: 'dep' }
+ ]);
+ this.projectile.setState(this.id, state);
+
+ if (this.launcherComponent) {
+ this.launcherComponent.addStep(this);
+ }
+ this.dependencyCheckService.getDependencyCheck()
+ .subscribe((val) => {
+ this.metadataInfo = val;
+ this.restore();
+ });
+ }
+
+ // Accessors
+ /**
+ * Returns indicator that step is completed
+ *
+ * @returns {boolean} True if step is completed
+ */
+ get completed(): boolean {
+ return (this.dependencyEditor !== undefined);
+ }
+
+ /**
+ * Navigate to step
+ *
+ * @param {string} id The step ID
+ */
+ navToStep(event: string) {
+ this.broadcaster.broadcast('navigate-to', event);
+ }
+
+ public pickDependencies(event: any) {
+ if (event) {
+ this.dependencyEditor['dependencySnapshot'] = event;
+ }
+ }
+
+ public pickMetadata(event: any) {
+ if (event) {
+ this.dependencyCheck.mavenArtifact = event.artifactId;
+ this.dependencyCheck.groupId = event.groupId;
+ this.dependencyCheck.projectVersion = event.version;
+
+ // // Update the dependency editor model
+ this.dependencyEditor['mavenArtifact'] = event.artifactId;
+ this.dependencyEditor['groupId'] = event.groupId;
+ this.dependencyEditor['projectVersion'] = event.version;
+ }
+ }
+
+ private handleBlankMissionFlow(runtimeId: string): void {
+ if (this.depEditorService && runtimeId) {
+ const service = this.depEditorService.getCoreDependencies(runtimeId);
+ if (service) {
+ service.subscribe((response: any) => {
+ if (response) {
+ this.blankResponse = response;
+ }
+ });
+ }
+ }
+ }
+
+ restoreModel(model: any): void {
+ this.dependencyEditor = model.dependencyEditor;
+ }
+}
diff --git a/projects/ngx-launcher/src/lib/create-app/gitprovider-createapp-step/gitprovider-repository.validator.ts b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-repository.validator.ts
similarity index 71%
rename from projects/ngx-launcher/src/lib/create-app/gitprovider-createapp-step/gitprovider-repository.validator.ts
rename to projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-repository.validator.ts
index d2ad2eea..a4296fd5 100644
--- a/projects/ngx-launcher/src/lib/create-app/gitprovider-createapp-step/gitprovider-repository.validator.ts
+++ b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-repository.validator.ts
@@ -1,9 +1,9 @@
-import { Directive, forwardRef } from '@angular/core';
-import { NG_ASYNC_VALIDATORS, Validator, AbstractControl } from '@angular/forms';
+import { Directive, forwardRef, Input } from '@angular/core';
+import { AbstractControl, NG_ASYNC_VALIDATORS, Validator } from '@angular/forms';
import { Observable } from 'rxjs';
-import { GitProviderService } from '../../service/git-provider.service';
import { debounceTime, distinctUntilChanged, first } from 'rxjs/operators';
+import { GitProviderService } from '../../service/git-provider.service';
@Directive({
selector: '[validateRepository]',
@@ -13,6 +13,8 @@ import { debounceTime, distinctUntilChanged, first } from 'rxjs/operators';
export class GitProviderRepositoryValidatorDirective implements Validator {
private pattern = /^[a-zA-Z0-9][a-zA-Z0-9-._]{1,63}$/;
+ @Input('validateRepository') missing: boolean;
+
constructor(private gitProvider: GitProviderService) { }
validate(control: AbstractControl): Observable<{ [key: string]: any }> {
@@ -27,7 +29,15 @@ export class GitProviderRepositoryValidatorDirective implements Validator {
resolve.next(this.createError('pattern', control.value));
} else if (org) {
this.gitProvider.isGitHubRepo(org, control.value).subscribe(
- duplicate => resolve.next(duplicate ? this.createError('duplicate', control.value) : {})
+ duplicate => {
+ if (duplicate && !this.missing) {
+ resolve.next(this.createError('duplicate', control.value));
+ } else if (!duplicate && this.missing) {
+ resolve.next(this.createError('notExist', control.value));
+ } else {
+ resolve.next({});
+ }
+ }
);
}
});
diff --git a/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-review.component.html b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-review.component.html
new file mode 100644
index 00000000..fcbc4420
--- /dev/null
+++ b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-review.component.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+ GitHub
+
+
+
+
+ Incomplete
+
+
To proceed with setting up this application, this section must be completed.
+
+
+
+
+
+
+ Authorized GitHub Account
+
+
+
+
+
+
diff --git a/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-review.component.ts b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-review.component.ts
new file mode 100644
index 00000000..c2ba75b3
--- /dev/null
+++ b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-review.component.ts
@@ -0,0 +1,14 @@
+import { Component, Input } from '@angular/core';
+import { Broadcaster } from 'ngx-base';
+import { Projectile } from '../../model/projectile.model';
+import { ReviewComponent } from '../../review.component';
+
+@Component({
+ selector: 'f8launcher-gitprovider-review',
+ templateUrl: './gitprovider-review.component.html'
+})
+export class GitproviderReviewComponent extends ReviewComponent {
+ constructor(broadcaster: Broadcaster, projectile: Projectile) {
+ super(broadcaster, projectile);
+ }
+}
diff --git a/projects/ngx-launcher/src/lib/create-app/gitprovider-createapp-step/gitprovider-createapp-step.component.html b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-step.component.html
similarity index 59%
rename from projects/ngx-launcher/src/lib/create-app/gitprovider-createapp-step/gitprovider-createapp-step.component.html
rename to projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-step.component.html
index f226f1ac..4dffd97b 100644
--- a/projects/ngx-launcher/src/lib/create-app/gitprovider-createapp-step/gitprovider-createapp-step.component.html
+++ b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-step.component.html
@@ -2,7 +2,7 @@
[ngClass]="{'hidden': hidden}" #section>
-
Authorize Git Provider
+ {{title}}
@@ -31,18 +31,18 @@
Authorized Account Information
-
-
+
+
diff --git a/projects/ngx-launcher/src/lib/create-app/gitprovider-createapp-step/gitprovider-createapp-step.component.less b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-step.component.less
similarity index 100%
rename from projects/ngx-launcher/src/lib/create-app/gitprovider-createapp-step/gitprovider-createapp-step.component.less
rename to projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-step.component.less
diff --git a/projects/ngx-launcher/src/lib/create-app/gitprovider-createapp-step/gitprovider-createapp-step.component.spec.ts b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-step.component.spec.ts
similarity index 57%
rename from projects/ngx-launcher/src/lib/create-app/gitprovider-createapp-step/gitprovider-createapp-step.component.spec.ts
rename to projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-step.component.spec.ts
index b616ac2f..767a63e5 100644
--- a/projects/ngx-launcher/src/lib/create-app/gitprovider-createapp-step/gitprovider-createapp-step.component.spec.ts
+++ b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-step.component.spec.ts
@@ -5,29 +5,15 @@ import { FormsModule } from '@angular/forms';
import { RouterTestingModule } from '@angular/router/testing';
import { Observable, of } from 'rxjs';
-import { PopoverModule } from 'ngx-bootstrap';
+import { PopoverModule, TypeaheadModule } from 'ngx-bootstrap';
-import { LauncherComponent } from '../../launcher.component';
-import { LauncherStep } from '../../launcher-step';
-
-import { DependencyCheck } from '../../launcher.module';
-import { DependencyCheckService } from '../../service/dependency-check.service';
-import { GitproviderCreateappStepComponent } from './gitprovider-createapp-step.component';
import { GitProviderService } from '../../service/git-provider.service';
+import { GitproviderStepComponent } from './gitprovider-step.component';
import { GitHubDetails } from '../../model/github-details.model';
-
-const mockDependencyCheckService = {
- getDependencyCheck(): Observable
{
- return of({
- mavenArtifact: 'd4-345',
- groupId: 'io.openshift.booster',
- projectName: 'App_test_1',
- projectVersion: '1.0.0-SNAPSHOT',
- spacePath: '/myspace'
- });
- }
-};
+import { Projectile } from '../../model/projectile.model';
+import { ButtonNextStepComponent } from '../../shared/button-next-step.component';
+import { GitProviderRepositoryValidatorDirective } from './gitprovider-repository.validator';
const mockGitProviderService = {
connectGitHubAccount(redirectUrl: string): void {
@@ -35,7 +21,7 @@ const mockGitProviderService = {
'&redirect_uri=' + encodeURIComponent(redirectUrl);
},
getGitHubDetails(): Observable {
- const gitHubDetails = of( {
+ const gitHubDetails = of( {
avatar: 'https://avatars3.githubusercontent.com/u/17882357?v=4',
login: 'testuser',
organizations: ['fabric-ui']
@@ -52,43 +38,9 @@ const mockGitProviderService = {
}
};
-export interface TypeWizardComponent {
- selectedSection: string;
- steps: LauncherStep[];
- summary: any;
- summaryCompleted: boolean;
- addStep(step: LauncherStep): void;
- onInViewportChange($event: any, id: string): any;
-}
-
-const mockWizardComponent: TypeWizardComponent = {
- selectedSection: '',
- steps: [],
- summary: {
- dependencyCheck: {},
- gitHubDetails: {}
- },
- summaryCompleted: false,
- addStep(step: LauncherStep) {
- for (let i = 0; i < this.steps.length; i++) {
- if (step.id === this.steps[i].id) {
- return;
- }
- }
- this.steps.push(step);
- },
- onInViewportChange($event: any, id: string) {
- if ($event) {
- setTimeout(() => {
- this.selectedSection = id;
- }, 10); // Avoids ExpressionChangedAfterItHasBeenCheckedError
- }
- }
-};
-
describe('GitProviderStepComponent', () => {
- let component: GitproviderCreateappStepComponent;
- let fixture: ComponentFixture;
+ let component: GitproviderStepComponent;
+ let fixture: ComponentFixture;
let element: HTMLElement;
beforeEach(async(() => {
@@ -97,27 +49,25 @@ describe('GitProviderStepComponent', () => {
CommonModule,
FormsModule,
PopoverModule.forRoot(),
- RouterTestingModule
+ RouterTestingModule,
+ TypeaheadModule
],
declarations: [
- GitproviderCreateappStepComponent
+ GitproviderStepComponent,
+ ButtonNextStepComponent,
+ GitProviderRepositoryValidatorDirective
],
providers: [
- {
- provide: DependencyCheckService, useValue: mockDependencyCheckService
- },
+ Projectile,
{
provide: GitProviderService, useValue: mockGitProviderService
- },
- {
- provide: LauncherComponent, useValue: mockWizardComponent
}
]
}).compileComponents();
}));
beforeEach(() => {
- fixture = TestBed.createComponent(GitproviderCreateappStepComponent);
+ fixture = TestBed.createComponent(GitproviderStepComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
diff --git a/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-step.component.ts b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-step.component.ts
new file mode 100644
index 00000000..0491921b
--- /dev/null
+++ b/projects/ngx-launcher/src/lib/components/gitprovider-step/gitprovider-step.component.ts
@@ -0,0 +1,114 @@
+import {
+ AfterViewInit,
+ Component,
+ ElementRef,
+ Host,
+ Input,
+ OnDestroy,
+ OnInit,
+ Optional,
+ ViewChild,
+ ViewEncapsulation
+} from '@angular/core';
+import { NgForm } from '@angular/forms';
+import { Subscription } from 'rxjs';
+
+import { LauncherStep } from '../../launcher-step';
+import { LauncherComponent } from '../../launcher.component';
+import { GitHubDetails } from '../../model/github-details.model';
+import { Projectile, StepState } from '../../model/projectile.model';
+import { GitProviderService } from '../../service/git-provider.service';
+import { broadcast } from '../../shared/telemetry.decorator';
+
+@Component({
+ encapsulation: ViewEncapsulation.None,
+ selector: 'f8launcher-gitprovider-step',
+ templateUrl: './gitprovider-step.component.html',
+ styleUrls: ['./gitprovider-step.component.less']
+})
+export class GitproviderStepComponent extends LauncherStep implements AfterViewInit, OnDestroy, OnInit {
+ @Input() import: boolean;
+ @ViewChild('form') form: NgForm;
+ @ViewChild('versionSelect') versionSelect: ElementRef;
+
+ private subscriptions: Subscription[] = [];
+ gitHubDetails: GitHubDetails = {};
+ gitHubReposSubscription: Subscription;
+
+ constructor(@Host() @Optional() public launcherComponent: LauncherComponent,
+ private projectile: Projectile,
+ private gitProviderService: GitProviderService) {
+ super(projectile);
+ }
+
+ ngAfterViewInit() {
+ if (this.gitHubDetails.login) {
+ setTimeout(() => {
+ if (this.versionSelect) {
+ this.versionSelect.nativeElement.focus();
+ }
+ }, 10);
+ }
+ }
+
+ ngOnInit() {
+ this.gitHubDetails.repository = this.import ? '' : this.projectile.sharedState.state.projectName;
+ this.gitHubDetails.repositoryList = [];
+ const state = new StepState(this.gitHubDetails, [
+ { name: 'gitRepository', value: 'repository' },
+ { name: 'gitOrganization', value: 'organization' }
+ ]);
+ this.projectile.setState(this.id, state);
+ if (this.launcherComponent) {
+ this.launcherComponent.addStep(this);
+ }
+
+ this.subscriptions.push(this.gitProviderService.getGitHubDetails().subscribe((val) => {
+ if (val !== undefined) {
+ Object.assign(this.gitHubDetails, val);
+ this.restore();
+ }
+ }));
+ }
+
+ ngOnDestroy() {
+ this.subscriptions.forEach((sub) => {
+ sub.unsubscribe();
+ });
+ }
+
+ restoreModel(model: any): void {
+ this.gitHubDetails.organization = model.organization;
+ this.gitHubDetails.repository = model.repository;
+ }
+
+ // Accessors
+
+ /**
+ * Returns indicator that step is completed
+ *
+ * @returns {boolean} True if step is completed
+ */
+ get completed(): boolean {
+ return this.form.valid;
+ }
+
+ // Steps
+
+ /**
+ * Authorize GitHub account
+ */
+ connectAccount(): void {
+ this.gitProviderService.connectGitHubAccount(this.projectile.redirectUrl);
+ }
+
+ getGitHubRepos(): void {
+ if (this.import) {
+ if (this.gitHubReposSubscription) {
+ this.gitHubReposSubscription.unsubscribe();
+ }
+ this.gitHubReposSubscription = this.gitProviderService.getGitHubRepoList(this.gitHubDetails.organization)
+ .subscribe(list => this.gitHubDetails.repositoryList = list);
+ }
+ }
+}
diff --git a/projects/ngx-launcher/src/lib/create-app/link-accounts-createapp-step/link-accounts-createapp-step.component.html b/projects/ngx-launcher/src/lib/components/link-accounts-step/link-accounts-step.component.html
similarity index 100%
rename from projects/ngx-launcher/src/lib/create-app/link-accounts-createapp-step/link-accounts-createapp-step.component.html
rename to projects/ngx-launcher/src/lib/components/link-accounts-step/link-accounts-step.component.html
diff --git a/projects/ngx-launcher/src/lib/create-app/link-accounts-createapp-step/link-accounts-createapp-step.component.less b/projects/ngx-launcher/src/lib/components/link-accounts-step/link-accounts-step.component.less
similarity index 100%
rename from projects/ngx-launcher/src/lib/create-app/link-accounts-createapp-step/link-accounts-createapp-step.component.less
rename to projects/ngx-launcher/src/lib/components/link-accounts-step/link-accounts-step.component.less
diff --git a/projects/ngx-launcher/src/lib/create-app/link-accounts-createapp-step/link-accounts-createapp-step.component.spec.ts b/projects/ngx-launcher/src/lib/components/link-accounts-step/link-accounts-step.component.spec.ts
similarity index 83%
rename from projects/ngx-launcher/src/lib/create-app/link-accounts-createapp-step/link-accounts-createapp-step.component.spec.ts
rename to projects/ngx-launcher/src/lib/components/link-accounts-step/link-accounts-step.component.spec.ts
index 269eade9..c5ac61d8 100644
--- a/projects/ngx-launcher/src/lib/create-app/link-accounts-createapp-step/link-accounts-createapp-step.component.spec.ts
+++ b/projects/ngx-launcher/src/lib/components/link-accounts-step/link-accounts-step.component.spec.ts
@@ -1,13 +1,13 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { CommonModule } from '@angular/common';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { FormsModule } from '@angular/forms';
import { RouterTestingModule } from '@angular/router/testing';
-import { LinkAccountsCreateappStepComponent } from './link-accounts-createapp-step.component';
-import { LauncherComponent } from '../../launcher.component';
+import { of } from 'rxjs';
import { LauncherStep } from '../../launcher-step';
+import { LauncherComponent } from '../../launcher.component';
import { TokenService } from '../../launcher.module';
-import { of } from 'rxjs';
+import { LinkAccountsStepComponent } from './link-accounts-step.component';
export interface TypeWizardComponent {
selectedSection: string;
@@ -41,8 +41,8 @@ const mockTokenService: TokenService = {
};
describe('ActivateBoosterComponent', () => {
- let component: LinkAccountsCreateappStepComponent;
- let fixture: ComponentFixture;
+ let component: LinkAccountsStepComponent;
+ let fixture: ComponentFixture;
beforeEach(async(() => {
TestBed.configureTestingModule({
@@ -52,7 +52,7 @@ describe('ActivateBoosterComponent', () => {
RouterTestingModule
],
declarations: [
- LinkAccountsCreateappStepComponent
+ LinkAccountsStepComponent
],
providers: [
{ provide: LauncherComponent, useValue: mockWizardComponent },
@@ -62,7 +62,7 @@ describe('ActivateBoosterComponent', () => {
}));
beforeEach(() => {
- fixture = TestBed.createComponent(LinkAccountsCreateappStepComponent);
+ fixture = TestBed.createComponent(LinkAccountsStepComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
diff --git a/projects/ngx-launcher/src/lib/create-app/link-accounts-createapp-step/link-accounts-createapp-step.component.ts b/projects/ngx-launcher/src/lib/components/link-accounts-step/link-accounts-step.component.ts
similarity index 80%
rename from projects/ngx-launcher/src/lib/create-app/link-accounts-createapp-step/link-accounts-createapp-step.component.ts
rename to projects/ngx-launcher/src/lib/components/link-accounts-step/link-accounts-step.component.ts
index 5686caf3..b12a174a 100644
--- a/projects/ngx-launcher/src/lib/create-app/link-accounts-createapp-step/link-accounts-createapp-step.component.ts
+++ b/projects/ngx-launcher/src/lib/components/link-accounts-step/link-accounts-step.component.ts
@@ -4,11 +4,11 @@ import { Cluster } from '../../model/cluster.model';
import { TokenService } from '../../service/token.service';
@Component({
- selector: 'f8launcher-link-accounts-createapp-step',
- templateUrl: './link-accounts-createapp-step.component.html',
- styleUrls: ['./link-accounts-createapp-step.component.less']
+ selector: 'f8launcher-link-accounts-step',
+ templateUrl: './link-accounts-step.component.html',
+ styleUrls: ['./link-accounts-step.component.less']
})
-export class LinkAccountsCreateappStepComponent {
+export class LinkAccountsStepComponent {
@Output() select = new EventEmitter(true);
private _clusters: Cluster[] = [];
diff --git a/projects/ngx-launcher/src/lib/components/mission-runtime-step/mission-runtime-review.component.html b/projects/ngx-launcher/src/lib/components/mission-runtime-step/mission-runtime-review.component.html
new file mode 100644
index 00000000..6d52fe52
--- /dev/null
+++ b/projects/ngx-launcher/src/lib/components/mission-runtime-step/mission-runtime-review.component.html
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+ Mission
+
+
+
+
+ Incomplete
+
+
To proceed with setting up this application, this section must be completed.
+
+
+
+
+
+
+ Mission
+
+
+
+
+
{{data?.mission?.name}}
+
{{data?.mission?.description}}
+
+
+
+
+
+
+
+
+
+
+
+ Runtime
+
+
+
+
+ Incomplete
+
+
To proceed with setting up this application, this section must be completed.
+
+
+
+
+
+
+ Runtime
+
+
+
+
+
+ {{data?.runtime?.name}} {{data?.runtime?.version?.name}}
+
+
+
![]()
+
+
{{data?.runtime?.description}}
+
+
+
+
+
diff --git a/projects/ngx-launcher/src/lib/components/mission-runtime-step/mission-runtime-review.component.ts b/projects/ngx-launcher/src/lib/components/mission-runtime-step/mission-runtime-review.component.ts
new file mode 100644
index 00000000..4c6edaff
--- /dev/null
+++ b/projects/ngx-launcher/src/lib/components/mission-runtime-step/mission-runtime-review.component.ts
@@ -0,0 +1,16 @@
+import { Component, Input } from '@angular/core';
+import { DomSanitizer } from '@angular/platform-browser';
+import { Broadcaster } from 'ngx-base';
+import { Projectile } from '../../model/projectile.model';
+import { ReviewComponent } from '../../review.component';
+
+@Component({
+ selector: 'f8launcher-mission-runtime-review',
+ templateUrl: './mission-runtime-review.component.html'
+})
+export class MissionRuntimeReviewComponent extends ReviewComponent {
+
+ constructor(public _DomSanitizer: DomSanitizer, broadcaster: Broadcaster, projectile: Projectile) {
+ super(broadcaster, projectile);
+ }
+}
diff --git a/projects/ngx-launcher/src/lib/create-app/mission-runtime-createapp-step/mission-runtime-createapp-step.component.html b/projects/ngx-launcher/src/lib/components/mission-runtime-step/mission-runtime-step.component.html
similarity index 94%
rename from projects/ngx-launcher/src/lib/create-app/mission-runtime-createapp-step/mission-runtime-createapp-step.component.html
rename to projects/ngx-launcher/src/lib/components/mission-runtime-step/mission-runtime-step.component.html
index a80d003f..fc656aa8 100644
--- a/projects/ngx-launcher/src/lib/create-app/mission-runtime-createapp-step/mission-runtime-createapp-step.component.html
+++ b/projects/ngx-launcher/src/lib/components/mission-runtime-step/mission-runtime-step.component.html
@@ -2,9 +2,7 @@
[ngClass]="{'hidden': hidden}" #section>
-
- Select Mission & Runtime
-
+
{{title}}
Choose a mission and runtime to create a booster, or sample application. You set up a booster to generate
@@ -44,7 +42,7 @@
'community': mission.community}"
*ngFor="let mission of (missions | sortArray: 'suggested': true | sortArray: 'shrinked': true)">
+ [ngClass]="{'disabled': mission.disabled, 'selected-list-item': booster.mission.id === mission.id}">