Skip to content

Commit 8ca7e89

Browse files
authored
fix(FOROME-299): load preset on dropdown change
* fix(FOROME-299): load preset on dropdown change
1 parent 76e132c commit 8ca7e89

File tree

20 files changed

+1551
-1207
lines changed

20 files changed

+1551
-1207
lines changed

src/core/enum/action-filter.enum.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
export enum ActionFilterEnum {
2-
Load = 'Load',
32
Create = 'Create',
43
Modify = 'Modify',
54
Join = 'Join',

src/i18n/locales/en.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,10 @@ export const en = {
219219
tooLongNote: 'Note is too long',
220220
tagNameIsTooLong: 'Tag name is too long',
221221
dtreeNameIsNotValid: 'Decision tree name is not valid',
222+
noChangesToModify: 'There are no changes to modify',
223+
choosePresetFirst: 'Choose preset first',
224+
chooseFiltersFirst: 'Choose filters first',
225+
cantJoinTheSamePreset: 'Cant join the same preset',
222226
},
223227
igv: {
224228
openIgv: 'Open igv',

src/pages/filter/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { Header } from '@components/header'
1515
import { GlbPagesNames } from '@glb/glb-names'
1616
import { ModalNumbers } from '@pages/filter/ui/modal-edit/components/modal-numbers'
1717
import { ErrorPage } from '../error/error'
18-
import { FilterControl } from './ui/filter-control'
18+
import { FilterControl } from './ui/filter-control/filter-control'
1919
import { ModalEditCompoundHet } from './ui/modal-edit/components/modal-edit-compound-het'
2020
import { ModalEditCompoundRequest } from './ui/modal-edit/components/modal-edit-compound-request'
2121
import { ModalEditCustomInheritanceMode } from './ui/modal-edit/components/modal-edit-custom-inheritance-mode'

src/pages/filter/ui/filter-control-refiner.tsx

Lines changed: 0 additions & 180 deletions
This file was deleted.

src/pages/filter/ui/filter-control-query-builder.tsx renamed to src/pages/filter/ui/filter-control/filter-control-query-builder/filter-control-query-builder.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import { PopperButton } from '@components/popper-button'
1717
import { DatasetCreationButton } from '@pages/ws/ui/dataset-creation-button'
1818
import { showToast } from '@utils/notifications/showToast'
1919
import { validatePresetName } from '@utils/validation/validatePresetName'
20-
import { DtreeModal } from './dtree-modal'
21-
import { FilterButton } from './filter-button'
20+
import { DtreeModal } from '../../dtree-modal'
21+
import { FilterButton } from '../../filter-button'
2222

2323
export const FilterControlQueryBuilder = observer((): ReactElement => {
2424
const [activeTree, setActiveTree] = useState('')
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
import { get } from 'lodash'
2+
import { makeAutoObservable } from 'mobx'
3+
4+
import { FilterList } from '@declarations'
5+
import { ActionFilterEnum } from '@core/enum/action-filter.enum'
6+
import { t } from '@i18n'
7+
import datasetStore from '@store/dataset'
8+
import filterStore from '@store/filter'
9+
import presetStore from '@store/filterPreset'
10+
import { compareConditions } from '@utils/filter-refiner/compareConditions'
11+
import { showToast } from '@utils/notifications/showToast'
12+
import { validatePresetName } from '@utils/validation/validatePresetName'
13+
14+
class FilterControlRefinerStore {
15+
constructor() {
16+
makeAutoObservable(this)
17+
}
18+
19+
get activePreset(): string {
20+
return datasetStore.activePreset
21+
}
22+
23+
get presets(): string[] {
24+
return get(datasetStore, 'dsStat.filter-list', [])
25+
.filter(this.isPresetAbleToBeModified)
26+
.map((preset: FilterList) => preset.name)
27+
}
28+
29+
public isPresetAbleToBeModified(preset: FilterList): boolean {
30+
return filterStore.actionName === ActionFilterEnum.Delete ||
31+
filterStore.actionName === ActionFilterEnum.Modify
32+
? !preset.standard
33+
: true
34+
}
35+
36+
public applyAction = (
37+
createPresetName: string,
38+
isSelectedFiltersEmpty: boolean,
39+
): void => {
40+
if (filterStore.actionName === ActionFilterEnum.Delete) {
41+
presetStore.deletePreset()
42+
}
43+
44+
if (filterStore.actionName === ActionFilterEnum.Join) {
45+
if (!datasetStore.activePreset) {
46+
showToast(t('error.choosePresetFirst'), 'error')
47+
48+
return
49+
}
50+
51+
const isConditionsAbleToJoin = compareConditions({
52+
currentConditions: datasetStore.conditions,
53+
startConditions: datasetStore.startPresetConditions,
54+
currentPreset: datasetStore.activePreset,
55+
prevPreset: datasetStore.prevPreset,
56+
})
57+
58+
if (!isConditionsAbleToJoin) {
59+
showToast(t('error.cantJoinTheSamePreset'), 'error')
60+
61+
return
62+
}
63+
64+
presetStore.joinPreset(datasetStore.activePreset)
65+
}
66+
67+
if (filterStore.actionName === ActionFilterEnum.Create) {
68+
const isPresetNameValid = validatePresetName(createPresetName)
69+
70+
if (!isPresetNameValid) {
71+
showToast(t('filter.notValidName'), 'error')
72+
73+
return
74+
}
75+
76+
if (isSelectedFiltersEmpty) {
77+
showToast(t('error.chooseFiltersFirst'), 'error')
78+
79+
return
80+
}
81+
82+
presetStore.createPreset(createPresetName)
83+
}
84+
85+
if (filterStore.actionName === ActionFilterEnum.Modify) {
86+
if (!datasetStore.activePreset) {
87+
showToast(t('error.choosePresetFirst'), 'error')
88+
89+
return
90+
}
91+
92+
const isConditionsAbleToModify = compareConditions({
93+
currentConditions: datasetStore.conditions,
94+
startConditions: datasetStore.startPresetConditions,
95+
currentPreset: datasetStore.activePreset,
96+
prevPreset: datasetStore.prevPreset,
97+
})
98+
99+
if (!isConditionsAbleToModify) {
100+
showToast(t('error.noChangesToModify'), 'error')
101+
102+
return
103+
}
104+
105+
presetStore.modifyPreset(datasetStore.activePreset)
106+
}
107+
}
108+
}
109+
110+
export default new FilterControlRefinerStore()

0 commit comments

Comments
 (0)