Skip to content
Snippets Groups Projects
Commit 4084e2ed authored by Steve Reis's avatar Steve Reis
Browse files

fix(datashield): Manage errors from API

parent 71f2f504
No related branches found
No related tags found
No related merge requests found
import * as jsonata from 'jsonata'; import * as jsonata from 'jsonata';
import { Experiment } from '../../../../models/experiment/experiment.model'; import { Experiment } from '../../../../models/experiment/experiment.model';
import {
AlertLevel,
AlertResult,
} from '../../../../models/result/alert-result.model';
import { Variable } from '../../../../models/variable.model'; import { Variable } from '../../../../models/variable.model';
import BaseHandler from '../base.handler'; import BaseHandler from '../base.handler';
...@@ -31,9 +35,11 @@ const transformToDescriptiveStats = jsonata(` ...@@ -31,9 +35,11 @@ const transformToDescriptiveStats = jsonata(`
} }
}; };
$append(quants.$each(function($v, $k) { $append(quants.$each(function($v, $k) {(
$type($v) = "array" ? $histoNumber($v, $k) : $histoNominal($v, $k) $t := $type($v);
}), heatmaps.{ $t = "array" ? $histoNumber($v, $k) : ($t = "object" ? $histoNominal($v, $k) : undefined)
)}), heatmaps.(
$.'1' ? {
"name": '', "name": '',
"xAxis": { "xAxis": {
"label": $clearLabel($.xlab), "label": $clearLabel($.xlab),
...@@ -44,13 +50,15 @@ const transformToDescriptiveStats = jsonata(` ...@@ -44,13 +50,15 @@ const transformToDescriptiveStats = jsonata(`
"categories": $.y "categories": $.y
}, },
"matrix": $transposeMat($.'1') "matrix": $transposeMat($.'1')
}) } : []))
)[] )
`); `);
transformToDescriptiveStats.registerFunction( transformToDescriptiveStats.registerFunction(
'transposeMat', 'transposeMat',
(matrix) => { (matrix) => {
if (!matrix) return [[]];
const invMatrix = []; const invMatrix = [];
for (let i = 0; i < matrix[0].length; i++) { for (let i = 0; i < matrix[0].length; i++) {
...@@ -76,12 +84,40 @@ export default class DescriptiveHandler extends BaseHandler { ...@@ -76,12 +84,40 @@ export default class DescriptiveHandler extends BaseHandler {
); );
} }
getErrors(data: unknown): AlertResult[] {
const errors = [];
if (
data['heatmaps'] &&
data['heatmaps'][0] &&
typeof data['heatmaps'][0][0] === 'string'
) {
errors.push({
message: 'Heatmaps error: ' + data['heatmaps'][0][0],
level: AlertLevel.ERROR,
});
}
if (data['quants']) {
for (const [key, value] of Object.entries(data['quants'])) {
if (typeof value === 'string') {
errors.push({
message: `Table '${key}' error: ` + value,
level: AlertLevel.ERROR,
});
}
}
}
return errors;
}
handle(experiment: Experiment, data: unknown, vars: Variable[]): void { handle(experiment: Experiment, data: unknown, vars: Variable[]): void {
if (!this.canHandle(experiment.algorithm.name, data)) if (!this.canHandle(experiment.algorithm.name, data))
return this.next?.handle(experiment, data, vars); return this.next?.handle(experiment, data, vars);
const results = transformToDescriptiveStats.evaluate(data); const results = transformToDescriptiveStats.evaluate(data);
const errors = this.getErrors(data);
experiment.results.push(...results); experiment.results.push(...errors, ...results);
} }
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment