import m from 'mithril'; import { FileMetrics } from '../../../Entity/FileMetrics'; import { EventStore } from '../../../Infrastructure/Event/EventStore'; import { GetDashboard } from '../../../Infrastructure/Event/GetDashboard'; import { FileMetricsTable as Presentational } from './FileMetricsTable'; type Param = { list: FileMetrics[] }; type SortableMetrics = 'CyclomaticComplexity' | 'CognitiveComplexity' | 'BugsDelivered' | 'Maintainability'; export class FileMetricsTable implements m.Component { private currentSelect: SortableMetrics = 'CognitiveComplexity'; private selectableMetrics: SortableMetrics[] = [ 'CognitiveComplexity', 'CyclomaticComplexity', 'BugsDelivered', 'Maintainability', ]; oninit() { EventStore.get(GetDashboard).dispatch(this.currentSelect); } view(vnode: m.Vnode) { return m(Presentational, { ...vnode.attrs, currentSelect: this.currentSelect, selectableList: this.selectableMetrics, onSelect: (value: string) => { this.currentSelect = value; EventStore.get(GetDashboard).dispatch(this.currentSelect); }, }); } }