Merged in filter-and-filter-item-mappings (pull request #28)

Mapping; from Filter[] to QueryTokenDTO
This commit is contained in:
Lorenz Hilpert
2019-02-08 16:23:02 +00:00
committed by Eraldo Hasanaj

View File

@@ -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;
}
}