diff --git a/src/App.vue b/src/App.vue index 7f3aa80..2c41ba4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -9,7 +9,8 @@ import * as O from 'fp-ts/Option' import * as A from 'fp-ts/lib/Array'; import { pipe } from 'fp-ts/function' import * as uuid from 'uuid'; -import type { Filter, FilterConfig } from './models' +import type { Filter, FilterConfig, FilterNode } from './models' +import { filterToTreeNode } from './services/filter' const darkMode = ref(document.documentElement.classList.contains('dark')) @@ -22,11 +23,6 @@ watch(darkMode, (dark) => { ) localStorage.theme = dark ? 'dark' : 'light' }) -function onNodeSelect(node: TreeNode) { -} - -function onNodeUnselect(node: TreeNode) { -} let defaultFilters: Filter[] = [ { type: 'leaf', id: uuid.v4(), name: "", show: true, enabled: true, rule: {} }, @@ -36,28 +32,41 @@ let defaultFilters: Filter[] = [ ] } ] -const filters = ref(pipe( +const nodes = ref(pipe( localStorage.getItem("filters"), O.fromNullable, O.map((value): FilterConfig => JSON.parse(value)), O.map(value => value.filters), O.getOrElse(() => defaultFilters), + A.map(filterToTreeNode) )) -const selectedFilter = ref() +const selectedFilter = ref() + +function onDelete() { + let target = selectedFilter.value! + let array = nodes.value as FilterNode[] + if (target.parent) { + array = target.parent.children! + } + let index = array.findIndex(item => item === target) + array.splice(index, 1) + selectedFilter.value = undefined +} +