Skip to content

main.js

使用以下内容创建一个 main.js 文件:

const anomalyDetectorUrl = '/api/anomalydetection/v3';

/**
 * Trains model.
 */
function train() {
 const timeseries = document.getElementById('train-timeseries').value;
 const epsilon = document.getElementById('epsilon').value;
 const clusterSize = document.getElementById('cluster-size').value;
 const algorithm = document.getElementById('algorithm').value;

 // region request for training model.
 const xhr = new XMLHttpRequest();
 xhr.open('POST', `${anomalyDetectorUrl}/models?epsilon=${epsilon}&minPointsPerCluster=${clusterSize}&distanceMeasureAlgorithm=${algorithm}`, true);
 xhr.setRequestHeader('Content-Type', 'application/json');
 xhr.setRequestHeader('X-XSRF-TOKEN', getCookie("XSRF-TOKEN"));
 xhr.onreadystatechange = function() {
 if (xhr.readyState != 4) return;

 if (xhr.status != 200 && xhr.status != 201) {
 console.log(xhr.status + ': ' + xhr.statusText);
 }
 else {
 console.log(xhr.responseText);
 const model = JSON.parse(xhr.responseText);
 document.getElementById('train-result').textContent = `id: ${model.id}`;
 document.getElementById('model-id').value = model.id;
 }
 }
 xhr.send(timeseries);
 // endregion.
}

/**
 * Detects anomalyes.
 */
function detect() {
 const timeseries = document.getElementById('detect-timeseries').value;
 const modelId = document.getElementById('model-id').value;

 // region request for anomaly.
 var xhr = new XMLHttpRequest();
 xhr.open('POST', `${anomalyDetectorUrl}/detectanomalies?modelID=${modelId}`, true);
 xhr.setRequestHeader('Content-Type', 'application/json');
 xhr.setRequestHeader('X-XSRF-TOKEN', getCookie("XSRF-TOKEN"));
 xhr.onreadystatechange = function() {
 if (xhr.readyState != 4) return;

 if (xhr.status != 200) {
 console.log(xhr.status + ': ' + xhr.statusText);
 }
 else {
 console.log(xhr.responseText);
 addTable(JSON.parse(xhr.responseText));
 }
 }
 xhr.send(timeseries);
 // endregion

 /**
 * Adds results table.
 * @param eventList List of anomaly events. 
 */
 function addTable(eventList) {
 let eventHtml = '';
 for (let i = 0; i < eventList.length; i++) {
 eventHtml += 
 `<div class="body__row">
        <div class="body__cell">${eventList[i]._time}</div>
        <div class="body__cell">${eventList[i].anomalyExtent}</div>
      </div>`;
 }
 document.getElementById('detect-result').innerHTML = eventHtml;
 }
}

function getCookie(cname) {
 var name = cname + "=";
 var decodedCookie = decodeURIComponent(document.cookie);
 var ca = decodedCookie.split(';');
 for(var i = 0; i <ca.length; i++) {
 var c = ca[i];
 while (c.charAt(0) == ' ') {
 c = c.substring(1);
 }
 if (c.indexOf(name) == 0) {
 return c.substring(name.length, c.length);
 }
 }
 return "";
}

document.addEventListener('DOMContentLoaded', () => {
 document.getElementById('train-timeseries').value = JSON.stringify([
 {
 "_time":"2018-05-29T09:56:32.836Z",
 "temperature":199.13066,
 "pressure":200.18154,
 "flow":203.91713
 },
 {
 "_time":"2018-05-29T09:56:33.123Z",
 "temperature":199.41138,
 "pressure":200.93165,
 "flow":202.68726
 },
 {
 "_time":"2018-05-29T09:56:33.323Z",
 "temperature":199.97283,
 "pressure":201.27727,
 "flow":201.78946
 },
 {
 "_time":"2018-05-29T09:56:33.524Z",
 "temperature":200.9599,
 "pressure":201.0878,
 "flow":200
 },
 {
 "_time":"2018-05-29T09:56:33.725Z",
 "temperature":201.09573,
 "pressure":200.41176,
 "flow":200
 },
 {
 "_time":"2018-05-29T09:56:33.928Z",
 "temperature":200.53428,
 "pressure":200.1574,
 "flow":202.12152
 },
 {
 "_time":"2018-05-29T09:56:34.131Z",
 "temperature":199.76455,
 "pressure":199.87969,
 "flow":203.51127
 },
 {
 "_time":"2018-05-29T09:56:34.372Z",
 "temperature":199.05821,
 "pressure":198.97925,
 "flow":202.76101
 },
 {
 "_time":"2018-05-29T09:56:34.573Z",
 "temperature":199.69211,
 "pressure":198.52587,
 "flow":199.10835
 },
 {
 "_time":"2018-05-29T09:56:34.774Z",
 "temperature":200.39845,
 "pressure":199.23372,
 "flow":202.04773
 },
 {
 "_time":"2018-05-29T09:56:34.975Z",
 "temperature":201.16818,
 "pressure":198.84877,
 "flow":198.49884
 },
 {
 "_time":"2018-05-29T09:56:35.176Z",
 "temperature":201.37646,
 "pressure":199.48577,
 "flow":200.76867
 },
 {
 "_time":"2018-05-29T09:56:35.376Z",
 "temperature":201.9379,
 "pressure":200.34455,
 "flow":201.51889
 },
 {
 "_time":"2018-05-29T09:56:35.577Z",
 "temperature":201.9379,
 "pressure":201.52781,
 "flow":201.02694
 },
 {
 "_time":"2018-05-29T09:56:35.778Z",
 "temperature":201.59379,
 "pressure":202.047,
 "flow":201.92474
 },
 {
 "_time":"2018-05-29T09:56:35.978Z",
 "temperature":200.88745,
 "pressure":202.31414,
 "flow":200.76867
 },
 {
 "_time":"2018-05-29T09:56:36.178Z",
 "temperature":199.97283,
 "pressure":200.76865,
 "flow":197.46032
 },
 {
 "_time":"2018-05-29T09:56:36.378Z",
 "temperature":198.70505,
 "pressure":201.46883,
 "flow":200
 },
 {
 "_time":"2018-05-29T09:56:36.579Z",
 "temperature":198.35188,
 "pressure":200.02609,
 "flow":198.5918
 },
 {
 "_time":"2018-05-29T09:56:36.780Z",
 "temperature":198.28849,
 "pressure":199.65622,
 "flow":199.42154
 },
 {
 "_time":"2018-05-29T09:56:36.981Z",
 "temperature":198.35188,
 "pressure":198.69944,
 "flow":201.4082
 },
 {
 "_time":"2018-05-29T09:56:37.181Z",
 "temperature":199.48383,
 "pressure":198.22855,
 "flow":200.12914
 },
 {
 "_time":"2018-05-29T09:56:37.382Z",
 "temperature":200.53428,
 "pressure":198.38551,
 "flow":200.38741
 },
 {
 "_time":"2018-05-29T09:56:37.582Z",
 "temperature":201.72962,
 "pressure":198.25873,
 "flow":199.36662
 },
 {
 "_time":"2018-05-29T09:56:37.782Z",
 "temperature":202.5718,
 "pressure":199.60198,
 "flow":197.53411
 },
 {
 "_time":"2018-05-29T09:56:37.982Z",
 "temperature":202.71669,
 "pressure":201.44933,
 "flow":198.72709
 },
 {
 "_time":"2018-05-29T09:56:38.183Z",
 "temperature":202.21863,
 "pressure":202.2309,
 "flow":200
 },
 {
 "_time":"2018-05-29T09:56:38.384Z",
 "temperature":202.01035,
 "pressure":201.86136,
 "flow":198.78858
 },
 {
 "_time":"2018-05-29T09:56:38.585Z",
 "temperature":201.37646,
 "pressure":201.87042,
 "flow":200.19063
 },
 {
 "_time":"2018-05-29T09:56:38.785Z",
 "temperature":200.53428,
 "pressure":201.76326,
 "flow":203.17921
 },
 {
 "_time":"2018-05-29T09:56:38.986Z",
 "temperature":199.76455,
 "pressure":201.42971,
 "flow":202.71186
 },
 {
 "_time":"2018-05-29T09:56:39.186Z",
 "temperature":198.84994,
 "pressure":200.70375,
 "flow":199.66179
 },
 {
 "_time":"2018-05-29T09:56:39.387Z",
 "temperature":198.00776,
 "pressure":201.74817,
 "flow":197.6571
 },
 {
 "_time":"2018-05-29T09:56:39.588Z",
 "temperature":197.72704,
 "pressure":200.88486,
 "flow":201.02694
 },
 {
 "_time":"2018-05-29T09:56:39.789Z",
 "temperature":197.86287,
 "pressure":199.64969,
 "flow":197.6571
 },
 {
 "_time":"2018-05-29T09:56:39.990Z",
 "temperature":199.69211,
 "pressure":200.41176,
 "flow":201.1499
 },
 {
 "_time":"2018-05-29T09:56:40.190Z",
 "temperature":198.98577,
 "pressure":200.27059,
 "flow":197.06676
 },
 {
 "_time":"2018-05-29T09:56:40.390Z",
 "temperature":199.33894,
 "pressure":201.26671,
 "flow":196.99297
 },
 {
 "_time":"2018-05-29T09:56:40.591Z",
 "temperature":200.53428,
 "pressure":201.46883,
 "flow":200
 },
 {
 "_time":"2018-05-29T09:56:40.791Z",
 "temperature":200.326,
 "pressure":202.2309,
 "flow":201.1499
 },
 {
 "_time":"2018-05-29T09:56:40.992Z",
 "temperature":200.9599,
 "pressure":201.74817,
 "flow":201.14993
 },
 {
 "_time":"2018-05-29T09:56:41.192Z",
 "temperature":201.4489,
 "pressure":201.19879,
 "flow":198.85007
 },
 {
 "_time":"2018-05-29T09:56:41.393Z",
 "temperature":201.37646,
 "pressure":200.32572,
 "flow":203.0808
 },
 {
 "_time":"2018-05-29T09:56:41.593Z",
 "temperature":202.01035,
 "pressure":199.64969,
 "flow":200.2445
 },
 {
 "_time":"2018-05-29T09:56:41.793Z",
 "temperature":201.87451,
 "pressure":199.53256,
 "flow":203.08082
 },
 {
 "_time":"2018-05-29T09:56:41.994Z",
 "temperature":200.46184,
 "pressure":199.12354,
 "flow":198.5918
 },
 {
 "_time":"2018-05-29T09:56:42.195Z",
 "temperature":199.69211,
 "pressure":199.26866,
 "flow":200.2435
 },
 {
 "_time":"2018-05-29T09:56:42.396Z",
 "temperature":200.04528,
 "pressure":200.32572,
 "flow":200.87988
 },
 {
 "_time":"2018-05-29T09:56:42.596Z",
 "temperature":200.39845,
 "pressure":200.61621,
 "flow":202.306
 },
 {
 "_time":"2018-05-29T09:56:42.796Z",
 "temperature":200.88745,
 "pressure":200.41176,
 "flow":201.6
 }
 ]);

 document.getElementById('detect-timeseries').value = JSON.stringify([
 {
 "_time":"2018-05-29T09:56:32.836Z",
 "temperature":196.53066,
 "pressure":196.48154,
 "flow":203.61713
 },
 {
 "_time":"2018-05-29T09:56:33.123Z",
 "temperature":200.11138,
 "pressure":199.93165,
 "flow":200.168726
 },
 {
 "_time":"2018-05-29T09:56:33.323Z",
 "temperature":202.97283,
 "pressure":197.27727,
 "flow":196.178946
 }
 ]);
});

还有问题?

向社区提问


除非另行声明,该网站内容遵循MindSphere开发许可协议.


Last update: April 24, 2019