You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.0 KiB
76 lines
2.0 KiB
![]()
7 years ago
|
import * as path from 'path';
|
||
|
import { getJsonDataSync, writeJsonDataSync } from './json';
|
||
|
import { SEGMENTS_PATH } from '../config';
|
||
|
import { AnomalyId, loadAnomalyById, saveAnomaly } from './anomalyType';
|
||
|
|
||
|
function getLabeledSegments(anomalyId: AnomalyId) {
|
||
|
let filename = path.join(SEGMENTS_PATH, `${anomalyId}_labeled.json`);
|
||
|
|
||
|
let segments = [];
|
||
|
try {
|
||
|
segments = getJsonDataSync(filename);
|
||
|
for (let segment of segments) {
|
||
|
if (segment.labeled === undefined) {
|
||
|
segment.labeled = false;
|
||
|
}
|
||
|
}
|
||
|
} catch (e) {
|
||
|
console.error(e.message);
|
||
|
}
|
||
|
return segments;
|
||
|
}
|
||
|
|
||
|
function getPredictedSegments(anomalyId: AnomalyId) {
|
||
|
let filename = path.join(SEGMENTS_PATH, `${anomalyId}_segments.json`);
|
||
|
|
||
|
let jsonData;
|
||
|
try {
|
||
|
jsonData = getJsonDataSync(filename);
|
||
|
} catch(e) {
|
||
|
console.error(e.message);
|
||
|
jsonData = [];
|
||
|
}
|
||
|
return jsonData;
|
||
|
}
|
||
|
|
||
|
function saveSegments(anomalyId: AnomalyId, segments) {
|
||
|
let filename = path.join(SEGMENTS_PATH, `${anomalyId}_labeled.json`);
|
||
|
|
||
|
try {
|
||
|
return writeJsonDataSync(filename, segments);
|
||
|
} catch(e) {
|
||
|
console.error(e.message);
|
||
|
throw new Error('Can`t write to db');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function insertSegments(anomalyId: AnomalyId, addedSegments, labeled:boolean) {
|
||
|
// Set status
|
||
|
let info = loadAnomalyById(anomalyId);
|
||
|
let segments = getLabeledSegments(anomalyId);
|
||
|
|
||
|
let nextId = info.next_id;
|
||
|
let addedIds = []
|
||
|
for (let segment of addedSegments) {
|
||
|
segment.id = nextId;
|
||
|
segment.labeled = labeled;
|
||
|
addedIds.push(nextId);
|
||
|
nextId++;
|
||
|
segments.push(segment);
|
||
|
}
|
||
|
info.next_id = nextId;
|
||
|
saveSegments(anomalyId, segments);
|
||
|
saveAnomaly(anomalyId, info);
|
||
|
return addedIds;
|
||
|
}
|
||
|
|
||
|
function removeSegments(anomalyId: AnomalyId, removedSegments) {
|
||
|
let segments = getLabeledSegments(anomalyId);
|
||
|
for (let segmentId of removedSegments) {
|
||
|
segments = segments.filter(el => el.id !== segmentId);
|
||
|
}
|
||
|
saveSegments(anomalyId, segments);
|
||
|
}
|
||
|
|
||
|
export { getLabeledSegments, getPredictedSegments, saveSegments, insertSegments, removeSegments }
|