import { Utility, UsageUnit, UsagePeriod } from '../../common/entities/Enums'; import { SupplierDetails, SupplierTariff } from '../../common/entities/Suppliers'; export function FuelUsageDirectiveFactory() { return new FuelUsageDirective(); } class FuelUsageDirective implements ng.IDirective { restrict = 'E'; bindToController = true; controller = FuelUsageController; controllerAs = 'ctrl'; template = require('./FuelUsagePanel.html'); scope = { utility: '@', suppliers: '=', getTariffs: '&', usageDetails: '=', economy7: '=' } } export class FuelUsageController { utility: Utility; suppliers: SupplierDetails[]; getTariffs: ({ supplierId: string, utility: Utility }) => Promise; usageDetails: UsageDetails; tariffs: SupplierTariff[]; collapsed: boolean = false; toggleExpander() { this.collapsed = !this.collapsed; } selectSupplier(item: SupplierDetails) { return this.getTariffs({ supplierId: item.id, utility: this.utility }) .then(tariffs => this.tariffs = tariffs); } } export interface UsageDetails { unit: UsageUnit; usage: number; period: UsagePeriod; supplier: SupplierDetails; tariff: SupplierTariff; }