import { Http } from '@angular/http'; import { ToastsManager } from 'ng2-toastr/ng2-toastr'; import { PacksService, PACK_STATUS, PACK_ACTIONS } from '../resources/packs'; import { LicenseTypesService } from '../resources/license_types'; import { LocaleService } from '../common/i18n'; import { TdDataTableService, TdDataTableSortingOrder, ITdDataTableSortChangeEvent, ITdDataTableColumn } from '@covalent/core'; import { TdDialogService } from '@covalent/core'; import { Component, AfterViewInit } from '@angular/core'; import { TdMediaService } from '@covalent/core'; import { IComboOption, FormBase } from './base'; import { ActivatedRoute, Router } from '@angular/router'; @Component({ selector: 'pack-form', templateUrl: 'src/app/forms/pack.form.html' }) export class PackFormComponent extends FormBase implements AfterViewInit { organizations : IComboOption[]; licensetypes : IComboOption[]; pack_menu_options = PACK_ACTIONS; constructor(private http: Http, private licenseTypes: LicenseTypesService, private packs: PacksService, router: Router, toaster: ToastsManager, route: ActivatedRoute, $L: LocaleService, dialogs: TdDialogService) { super($L, router, route, toaster, packs, $L.get('pack'), dialogs); } loadCombos(): void { this.http.get('organization') .map(response => response.json().map((org : any) => {id: org.id, label: `(${org.code}) ${org.name}`})) .subscribe( data => this.organizations = (data).sort((e1, e2) => e1.label.localeCompare(e2.label)), err => console.error('Error loading orgs') ); this.licenseTypes.get() .map(list => list.map((lt : any) => {id: lt.id, label: `(${lt.code}) ${lt.name}`})) .subscribe( data => this.licensetypes = (data).sort((e1, e2) => e1.label.localeCompare(e2.label)), err => console.error('Error loading license types') ); } goBack(): void { this.router.navigate([`packs`]); } changeLicType(event: any) { this.licenseTypes.get(this.data.license_type_id) .map(lt_data => lt_data.metadata) .subscribe( metadata => this.data.metadata = metadata, err => { console.error('Error loading license type metadata'); console.error(err); } ); } packAction(action: string) { return this.packs[action](this.data.id).subscribe( (actionResponse : any) => { this.toaster.success(this.$L.get('Action "{}" executed successfully', action)); this.init(); }, (err : any) => this.toaster.error(err.message, this.$L.get('Action "{}" failed', action)) ); } changeOrg(event: any) { console.log(this.data.organization_id); } canBeDeleted(event: any) : boolean{ return !this.isNew && this.packs.isActionAvailable('delete', this.data); } convertToEpoch(str: string) : number { return new Date(str).getTime(); } ngAfterViewInit(): void { this.init(); } init(): void { this.loadCombos(); super.prepareInitialData('packId', { status: PACK_STATUS.CREATED }); } }