Skip to content

Commit

Permalink
updateIconState of more dialogs
Browse files Browse the repository at this point in the history
  • Loading branch information
sgratzl committed Mar 30, 2020
1 parent ab25efe commit dc7b6e4
Show file tree
Hide file tree
Showing 8 changed files with 19 additions and 31 deletions.
2 changes: 0 additions & 2 deletions src/ui/dialogs/BooleanFilterDialog.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import {BooleanColumn} from '../../model';
import ADialog, {IDialogContext} from './ADialog';
import {updateFilterState} from './utils';
import {cssClass} from '../../styles';

/** @internal */
Expand All @@ -25,7 +24,6 @@ export default class BooleanFilterDialog extends ADialog {
}

private updateFilter(filter: boolean | null) {
updateFilterState(this.attachment, this.column, filter != null);
this.column.setFilter(filter);
}

Expand Down
3 changes: 1 addition & 2 deletions src/ui/dialogs/CategoricalFilterDialog.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {SetColumn, CategoricalColumn, ICategoricalFilter} from '../../model';
import {filterMissingMarkup, findFilterMissing} from '../missing';
import ADialog, {IDialogContext} from './ADialog';
import {updateFilterState, forEach} from './utils';
import {forEach} from './utils';
import {cssClass} from '../../styles';
import {isCategoryIncluded} from '../../model/internalCategorical';

Expand Down Expand Up @@ -46,7 +46,6 @@ export default class CategoricalFilterDialog extends ADialog {

private updateFilter(filter: string[] | null | RegExp | string, filterMissing: boolean) {
const noFilter = filter == null && filterMissing === false;
updateFilterState(this.attachment, this.column, !noFilter);
this.column.setFilter(noFilter ? null : {filter: filter!, filterMissing});
}

Expand Down
3 changes: 1 addition & 2 deletions src/ui/dialogs/CategoricalMappingFilterDialog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {OrdinalColumn, ICategoricalFilter} from '../../model';
import {isCategoryIncluded} from '../../model/internalCategorical';
import {filterMissingMarkup, findFilterMissing} from '../missing';
import ADialog, {IDialogContext} from './ADialog';
import {updateFilterState, forEach} from './utils';
import {forEach} from './utils';
import {cssClass} from '../../styles';

/** @internal */
Expand Down Expand Up @@ -60,7 +60,6 @@ export default class CategoricalMappingFilterDialog extends ADialog {

private updateFilter(filter: string[] | null | string | RegExp, filterMissing: boolean) {
const noFilter = filter == null && filterMissing === false;
updateFilterState(this.attachment, this.column, !noFilter);
this.column.setFilter(noFilter ? null : {filter: filter!, filterMissing});
}

Expand Down
5 changes: 2 additions & 3 deletions src/ui/dialogs/DateFilterDialog.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import {filterMissingMarkup, findFilterMissing} from '../missing';
import ADialog, {IDialogContext} from './ADialog';
import {updateFilterState, uniqueId} from './utils';
import {uniqueId} from './utils';
import {DateColumn, IDateFilter} from '../../model';
import {isDummyDateFilter, noDateFilter, shiftFilterDateDay} from '../../model/internalDate';
import {noDateFilter, shiftFilterDateDay} from '../../model/internalDate';
import {timeFormat} from 'd3-time-format';

/** @internal */
Expand All @@ -18,7 +18,6 @@ export default class DateFilterDialog extends ADialog {
}

private updateFilter(filter: IDateFilter | null) {
updateFilterState(this.attachment, this.column, filter != null && !isDummyDateFilter(filter));
this.column.setFilter(filter);
}

Expand Down
1 change: 1 addition & 0 deletions src/ui/dialogs/MoreColumnOptionsDialog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export default class MoreColumnOptionsDialog extends APopup {

protected build(node: HTMLElement) {
node.classList.add(cssClass('more-options'));
node.dataset.colId = this.column.id;
createToolbarMenuItems(node, this.dialog.level + 1, this.column, this.ctx);

updateIconState(node, this.column);
Expand Down
2 changes: 0 additions & 2 deletions src/ui/dialogs/StringFilterDialog.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import {StringColumn, IStringFilter} from '../../model';
import {filterMissingMarkup, findFilterMissing} from '../missing';
import ADialog, {IDialogContext} from './ADialog';
import {updateFilterState} from './utils';
import {cssClass} from '../../styles';
import {debounce} from '../../internal';

Expand Down Expand Up @@ -29,7 +28,6 @@ export default class StringFilterDialog extends ADialog {
}

private updateFilter(filter: string | RegExp | null, filterMissing: boolean) {
updateFilterState(this.attachment, this.column, filterMissing || filter != null);
if (filter == null && !filterMissing) {
this.column.setFilter(null);
} else {
Expand Down
20 changes: 0 additions & 20 deletions src/ui/dialogs/utils.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,8 @@
import {Column} from '../../model';
import {forEach} from '../../renderer/utils';
import {cssClass} from '../../styles';
import {getSortLabel} from '../../internal';
import {IToolbarDialogAddonHandler} from '../interfaces';

/** @internal */
export function updateFilterState(attachment: HTMLElement, column: Column, filtered: boolean) {
const toggle = (e: Element) => {
const n = <HTMLElement>e;
if (filtered) {
n.dataset.active = '';
} else {
delete n.dataset.active;
}
};

toggle(attachment);
const root = attachment.closest(`.${cssClass()}`);
if (!root) {
return;
}
Array.from(root.querySelectorAll(`[data-col-id="${column.id}"] i[title^=Filter]`)).forEach(toggle);
}

/** @internal */
export function sortMethods(node: HTMLElement, column: {setSortMethod(v: string): void, getSortMethod(): string}, methods: string[]): IToolbarDialogAddonHandler {
const bak = column.getSortMethod();
Expand Down
14 changes: 14 additions & 0 deletions src/ui/header.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,20 @@ export function updateHeader(node: HTMLElement, col: Column, minWidth = MIN_LABE
label.dataset.typeCat = categoryOf(col).name;

updateIconState(node, col);

updateMoreDialogIcons(node, col);
}

function updateMoreDialogIcons(node: HTMLElement, col: Column) {
const root = node.closest(`.${cssClass()}`);
if (!root) {
return;
}
const dialog = root.querySelector<HTMLElement>(`.${cssClass('more-options')}[data-col-id="${col.id}"]`);
if (!dialog) {
return;
}
updateIconState(dialog, col);
}


Expand Down

0 comments on commit dc7b6e4

Please sign in to comment.