mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-31 09:37:15 +01:00
Merged PR 288: #1013 Fix Duplicate Check in AddResult Reducer
Related work items: #1013
This commit is contained in:
@@ -34,7 +34,7 @@ import { ReloadRemission } from '../actions/remission.actions';
|
||||
import { ReloadFormState } from '../actions/forms.actions';
|
||||
import { FILIALE_LANDING_PAGE } from '../../utils/app.constants';
|
||||
|
||||
export const SYNC_DATA_VERSION = 212;
|
||||
export const SYNC_DATA_VERSION = 213;
|
||||
|
||||
export class AppStateModel {
|
||||
currentProcesssId: number;
|
||||
|
||||
@@ -1,13 +1,24 @@
|
||||
import { createReducer, Action, on } from '@ngrx/store';
|
||||
import { INITIAL_SEARCH_STATE, SearchState, searchStateAdapter, INITIAL_SEARCH_PROCESS } from './search.state';
|
||||
import {
|
||||
INITIAL_SEARCH_STATE,
|
||||
SearchState,
|
||||
searchStateAdapter,
|
||||
INITIAL_SEARCH_PROCESS,
|
||||
} from './search.state';
|
||||
import * as actions from './search.actions';
|
||||
import { SearchProcessState } from './defs';
|
||||
|
||||
const _searchReducer = createReducer(
|
||||
INITIAL_SEARCH_STATE,
|
||||
on(actions.addSearchProcess, (s, a) => searchStateAdapter.addOne({ ...INITIAL_SEARCH_PROCESS, id: a.id }, s)),
|
||||
on(actions.removeSearchProcess, (s, a) => searchStateAdapter.removeOne(a.id, s)),
|
||||
on(actions.setInput, (s, a) => searchStateAdapter.updateOne({ id: a.id, changes: { input: a.input } }, s)),
|
||||
on(actions.addSearchProcess, (s, a) =>
|
||||
searchStateAdapter.addOne({ ...INITIAL_SEARCH_PROCESS, id: a.id }, s)
|
||||
),
|
||||
on(actions.removeSearchProcess, (s, a) =>
|
||||
searchStateAdapter.removeOne(a.id, s)
|
||||
),
|
||||
on(actions.setInput, (s, a) =>
|
||||
searchStateAdapter.updateOne({ id: a.id, changes: { input: a.input } }, s)
|
||||
),
|
||||
on(actions.setSelectFilters, (s, a) =>
|
||||
searchStateAdapter.updateOne(
|
||||
{
|
||||
@@ -40,17 +51,19 @@ const _searchReducer = createReducer(
|
||||
changes: {
|
||||
filters: {
|
||||
...s.entities[a.id].filters,
|
||||
selectedFilters: s.entities[a.id].filters.selectedFilters.map((filter) => {
|
||||
let options = filter.options || [];
|
||||
if (filter.options) {
|
||||
options = filter.options.map((o) => ({
|
||||
...o,
|
||||
selected: o.initial_selected_state,
|
||||
}));
|
||||
}
|
||||
selectedFilters: s.entities[a.id].filters.selectedFilters.map(
|
||||
(filter) => {
|
||||
let options = filter.options || [];
|
||||
if (filter.options) {
|
||||
options = filter.options.map((o) => ({
|
||||
...o,
|
||||
selected: o.initial_selected_state,
|
||||
}));
|
||||
}
|
||||
|
||||
return { ...filter, options };
|
||||
}),
|
||||
return { ...filter, options };
|
||||
}
|
||||
),
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -64,10 +77,12 @@ const _searchReducer = createReducer(
|
||||
changes: {
|
||||
filters: {
|
||||
...s.entities[a.id].filters,
|
||||
primaryFilters: s.entities[a.id].filters.primaryFilters.map((primaryFilter) => ({
|
||||
...primaryFilter,
|
||||
selected: primaryFilter.initial_selected_state,
|
||||
})),
|
||||
primaryFilters: s.entities[a.id].filters.primaryFilters.map(
|
||||
(primaryFilter) => ({
|
||||
...primaryFilter,
|
||||
selected: primaryFilter.initial_selected_state,
|
||||
})
|
||||
),
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -86,11 +101,16 @@ const _searchReducer = createReducer(
|
||||
)
|
||||
),
|
||||
on(actions.clearResults, (s, a) =>
|
||||
searchStateAdapter.updateOne({ id: a.id, changes: { result: [], state: SearchProcessState.INIT } }, s)
|
||||
searchStateAdapter.updateOne(
|
||||
{ id: a.id, changes: { result: [], state: SearchProcessState.INIT } },
|
||||
s
|
||||
)
|
||||
),
|
||||
on(actions.addResult, (s, a) => {
|
||||
const addSubsetIds = a.result.map((item) => item.orderItemSubsetId);
|
||||
const entitiesWithoutDublicatedItems = s.entities[a.id].result.filter((item) => !addSubsetIds.some((id) => item.orderItemSubsetId));
|
||||
const entitiesWithoutDublicatedItems = s.entities[a.id].result.filter(
|
||||
(item) => !addSubsetIds.some((id) => id === item.orderItemSubsetId)
|
||||
);
|
||||
|
||||
return searchStateAdapter.updateOne(
|
||||
{
|
||||
@@ -103,8 +123,12 @@ const _searchReducer = createReducer(
|
||||
s
|
||||
);
|
||||
}),
|
||||
on(actions.clearHits, (s, a) => searchStateAdapter.updateOne({ id: a.id, changes: { hits: undefined } }, s)),
|
||||
on(actions.setHits, (s, a) => searchStateAdapter.updateOne({ id: a.id, changes: { hits: a.hits } }, s)),
|
||||
on(actions.clearHits, (s, a) =>
|
||||
searchStateAdapter.updateOne({ id: a.id, changes: { hits: undefined } }, s)
|
||||
),
|
||||
on(actions.setHits, (s, a) =>
|
||||
searchStateAdapter.updateOne({ id: a.id, changes: { hits: a.hits } }, s)
|
||||
),
|
||||
on(actions.setTimestamp, (s, a) =>
|
||||
searchStateAdapter.updateOne(
|
||||
{
|
||||
@@ -114,8 +138,18 @@ const _searchReducer = createReducer(
|
||||
s
|
||||
)
|
||||
),
|
||||
on(actions.fetchResult, (s, a) => searchStateAdapter.updateOne({ id: a.id, changes: { state: SearchProcessState.FETCHING } }, s)),
|
||||
on(actions.fetchResultDone, (s, a) => searchStateAdapter.updateOne({ id: a.id, changes: { state: SearchProcessState.FETCHED } }, s)),
|
||||
on(actions.fetchResult, (s, a) =>
|
||||
searchStateAdapter.updateOne(
|
||||
{ id: a.id, changes: { state: SearchProcessState.FETCHING } },
|
||||
s
|
||||
)
|
||||
),
|
||||
on(actions.fetchResultDone, (s, a) =>
|
||||
searchStateAdapter.updateOne(
|
||||
{ id: a.id, changes: { state: SearchProcessState.FETCHED } },
|
||||
s
|
||||
)
|
||||
),
|
||||
on(actions.setPendingInput, (s, a) =>
|
||||
searchStateAdapter.updateOne(
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user