import {sortByNumberAscending, sortByStringAscending} from './sorting.service'; export abstract class TableComponentBase { public sortBy: string; public sortDescending = false; public items: T[] = []; protected doNumericSort(by: string, key: (ScrumTask) => number) { if (this.sortBy === by) { this.sortDescending = !this.sortDescending; } else { this.sortBy = by; } this.items = sortByNumberAscending(this.items, key); if (this.sortDescending) { this.items = this.items.reverse(); } } protected doStringSort(by: string, key: (ScrumTask) => string) { if (this.sortBy === by) { this.sortDescending = !this.sortDescending; } else { this.sortBy = by; } this.items = sortByStringAscending(this.items, key); if (this.sortDescending) { this.items = this.items.reverse(); } } }