import { Component, OnInit, ViewChild } from '@angular/core'; import { FormBuilder, FormGroup, FormArray } from '@angular/forms'; import { MatStepper } from '@angular/material'; import { Router } from '@angular/router'; import { BaseComponent } from '../../core/common/base/base.component'; import { QuickWizardService } from '../../core/services/quick-wizard/quick-wizard.service'; import { DatasetCreateWizardModel } from './dataset-create-wizard.model'; import { IBreadCrumbComponent } from '../misc/breadcrumb/definition/IBreadCrumbComponent'; import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { BreadcrumbItem } from '../misc/breadcrumb/definition/breadcrumb-item'; import { SnackBarNotificationLevel, UiNotificationService } from '../../core/services/notification/ui-notification-service'; import { TranslateService } from '@ngx-translate/core'; @Component({ selector: 'dataset-create-wizard.component', templateUrl: 'dataset-create-wizard.component.html', styleUrls: ['./dataset-create-wizard.component.scss'], }) export class DatasetCreateWizard extends BaseComponent implements OnInit, IBreadCrumbComponent { breadCrumbs: Observable; isLinear = false; isNew = true; formGroup: FormGroup; datasetCreateWizardModel: DatasetCreateWizardModel; @ViewChild('stepper') stepper: MatStepper; constructor( private router: Router, private formBuilder: FormBuilder, public quickWizardService: QuickWizardService, public language: TranslateService, private uiNotificationService: UiNotificationService ) { super(); } ngOnInit() { this.datasetCreateWizardModel = new DatasetCreateWizardModel(); this.formGroup = this.datasetCreateWizardModel.buildForm(); this.breadCrumbs = Observable.of([ { parentComponentName: 'Dashboard', label: 'Dataset description wizard', url: '/datasetcreatewizard' }] ); } save() { for(let control of (this.formGroup.get('datasets').get('datasetsList') as FormArray).controls){ control.get('status').setValue('0'); } this.submit(); } saveFinalize() { if (!this.isFormValid()) { return; } for(let control of (this.formGroup.get('datasets').get('datasetsList') as FormArray).controls){ control.get('status').setValue('1'); } this.submit(); } submit() { this.quickWizardService.createQuickDatasetWizard(this.formGroup.value) .pipe(takeUntil(this._destroyed)) .subscribe( complete => this.onCallbackSuccess() ) } public isFormValid() { return this.formGroup.valid; } onCallbackSuccess(): void { this.uiNotificationService.snackBarNotification(this.isNew ? this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-CREATION') : this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); this.router.navigate(['/home']); } isActive(step: string): boolean { switch (step) { case 'step1': return this.stepper.selectedIndex == 0; case 'step2': return this.stepper.selectedIndex == 1; } } }