Archived
2
This commit is contained in:
VLE2FE
2020-08-09 17:10:47 +02:00
parent 8e85e37e5e
commit 501cd1907e
4 changed files with 78 additions and 36 deletions

View File

@ -41,6 +41,8 @@ router.get('/samples', async (req, res, next) => {
const sampleKeys = ['_id', 'color', 'number', 'type', 'batch', 'added', 'condition', 'material_id', 'note_id',
'user_id'];
// TODO find further optimizations from bachelor thesis
// evaluate sort parameter from 'color-asc' to ['color', 1]
filters.sort = filters.sort.split('-');
filters.sort[0] = filters.sort[0] === 'added' ? '_id' : filters.sort[0]; // route added sorting criteria to _id
@ -193,15 +195,15 @@ router.get('/samples', async (req, res, next) => {
{$addFields: {'material.group': { $arrayElemAt: ['$material.group.name', 0]}}}
);
}
if (sortFilterKeys.find(e => e === 'material.number')) { // add material number if needed
materialQuery.push(
{$addFields: {'material.number': { $arrayElemAt: [
'$material.numbers.number', {$indexOfArray: ['$material.numbers.color', '$color']}
]}}}
);
}
// if (sortFilterKeys.find(e => e === 'material.number')) { // add material number if needed // TODO: adapt code to new numbers format
// materialQuery.push(
// {$addFields: {'material.number': { $arrayElemAt: [
// '$material.numbers.number', {$indexOfArray: ['$material.numbers.color', '$color']}
// ]}}}
// );
// }
const specialMFilters = sortFilterKeys.filter(e => /material\./.test(e))
.filter(e => ['material.supplier', 'material.group', 'material.number'].indexOf(e) >= 0);
.filter(e => ['material.supplier', 'material.group', 'material.number'].indexOf(e) >= 0); // TODO
// base material filters
addFilterQueries(materialQuery, filters.filters.filter(e => specialMFilters.indexOf(e.field) >= 0));
queryPtr.push(...materialQuery);
@ -304,13 +306,13 @@ router.get('/samples', async (req, res, next) => {
{$addFields: {'material.group': { $arrayElemAt: ['$material.group.name', 0]}}}
);
}
if (fieldsToAdd.indexOf('material.number') >= 0) { // add material number if needed
queryPtr.push(
{$addFields: {'material.number': {
$arrayElemAt: ['$material.numbers.number', {$indexOfArray: ['$material.numbers.color', '$color']}]
}}}
);
}
// if (fieldsToAdd.indexOf('material.number') >= 0) { // add material number if needed // TODO
// queryPtr.push(
// {$addFields: {'material.number': {
// $arrayElemAt: ['$material.numbers.number', {$indexOfArray: ['$material.numbers.color', '$color']}]
// }}}
// );
// }
let measurementFieldsFields: string[] = _.uniq(
fieldsToAdd.filter(e => /measurements\./.test(e)).map(e => e.split('.')[1])