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.
80 lines
2.0 KiB
80 lines
2.0 KiB
import * as express from 'express'; |
|
import { |
|
getLabeledSegments, |
|
insertSegments, |
|
removeSegments, |
|
} from '../services/segments'; |
|
import {runLearning} from '../services/analytics'; |
|
import {Anomaly, AnomalyId, getAnomalyIdByName, loadAnomalyById} from '../services/anomalyType'; |
|
|
|
|
|
async function sendSegments(req, res) { |
|
try { |
|
let anomalyId: AnomalyId = req.query.anomaly_id; |
|
let anomaly:Anomaly = loadAnomalyById(anomalyId); |
|
if(anomaly === null) { |
|
anomalyId = getAnomalyIdByName(anomalyId); |
|
} |
|
|
|
let lastSegmentId = req.query.last_segment; |
|
let timeFrom = req.query.from; |
|
let timeTo = req.query.to; |
|
|
|
let segments = getLabeledSegments(anomalyId); |
|
|
|
// Id filtering |
|
if(lastSegmentId !== undefined) { |
|
segments = segments.filter(el => el.id > lastSegmentId); |
|
} |
|
|
|
// Time filtering |
|
if(timeFrom !== undefined) { |
|
segments = segments.filter(el => el.finish > timeFrom); |
|
} |
|
|
|
if(timeTo !== undefined) { |
|
segments = segments.filter(el => el.start < timeTo); |
|
} |
|
|
|
let payload = JSON.stringify({ |
|
segments |
|
}); |
|
res.status(200).send(payload); |
|
} catch(e) { |
|
res.status(500).send({ |
|
code: 500, |
|
message: 'Internal error' |
|
}); |
|
} |
|
} |
|
|
|
async function updateSegments(req, res) { |
|
try { |
|
let segmentsUpdate = req.body; |
|
|
|
let anomalyId = segmentsUpdate.anomaly_id; |
|
let anomalyName = segmentsUpdate.name; |
|
|
|
if(anomalyId === undefined) { |
|
anomalyId = getAnomalyIdByName(anomalyName.toLowerCase()); |
|
} |
|
|
|
let addedIds = insertSegments(anomalyId, segmentsUpdate.added_segments, true); |
|
removeSegments(anomalyId, segmentsUpdate.removed_segments); |
|
|
|
let payload = JSON.stringify({ added_ids: addedIds }); |
|
res.status(200).send(payload); |
|
|
|
runLearning(anomalyId); |
|
} catch(e) { |
|
res.status(500).send({ |
|
code: 500, |
|
message: 'Internal error' |
|
}); |
|
} |
|
} |
|
|
|
export const router = express.Router(); |
|
|
|
router.get('/', sendSegments); |
|
router.patch('/', updateSegments);
|
|
|