mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-31 09:37:15 +01:00
Merged in filter-and-filter-item-mappings (pull request #28)
Mapping; from Filter[] to QueryTokenDTO
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { InputDTO, UISettingsDTO, InputType } from 'cat-service';
|
||||
import { InputDTO, UISettingsDTO, InputType, QueryTokenDTO, SortValueDTO } from 'cat-service';
|
||||
import { Filter } from '../models/filter.model';
|
||||
import { FilterItemMapping } from './filter-item.mapping';
|
||||
import { FilterItem } from '../models/filter-item.model';
|
||||
@@ -69,4 +69,39 @@ export class FilterMapping {
|
||||
|
||||
return filters;
|
||||
}
|
||||
|
||||
toQueryTokenDto(target: QueryTokenDTO, source: Filter[]) {
|
||||
|
||||
const orderBy = source.find(f => f.id === 'orderBy');
|
||||
if (orderBy != null) {
|
||||
target.sort = orderBy.items
|
||||
.filter(i => i.selected)
|
||||
.map(m => ({
|
||||
by: m.id,
|
||||
asc: m.selected
|
||||
}) as SortValueDTO);
|
||||
}
|
||||
|
||||
const filter = source
|
||||
.filter(f => f.id !== 'orderBy')
|
||||
.filter(f => f.items.some(s => s.selected));
|
||||
if (Array.isArray(filter)) {
|
||||
const kvps = filter.map((fil) => {
|
||||
const key = fil.id;
|
||||
const value = fil.items.filter(f => f.selected)
|
||||
.map(f => f.id)
|
||||
.join(';');
|
||||
return [key, value];
|
||||
});
|
||||
|
||||
if (kvps.length > 0) {
|
||||
target.filter = {};
|
||||
for (const kvp of kvps) {
|
||||
target.filter[kvp[0]] = kvp[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return target;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user