Last active
February 24, 2016 18:58
-
-
Save esshka/fcca4b34c59964dcf3a4 to your computer and use it in GitHub Desktop.
api clamps
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Выборка смыканий из базы | |
| `SELECT time, type, duration, rnum, den | |
| FROM (SELECT time, type, duration, | |
| row_number() over(ORDER BY time ASC) rnum, | |
| ((select count(*) from clamps where device_id = ${deviceId}) / 200) den | |
| FROM clamps | |
| WHERE clamps.device_id = ${deviceId} | |
| AND (clamps.time BETWEEN '${s}' AND '${e}') | |
| ORDER BY time ASC) full_clamps | |
| WHERE rnum % den = 0`; | |
| // извлекаются записи с полями time, type, duration, rnum, den | |
| // rnum - номер строки | |
| // den - кол-во записей в 'большом смыкании' | |
| // WHERE rnum % den = 0` - условие "что считать большим смыканием". Т е с порядковый номер кратен кол-ву записей в 'большом смыкании' | |
| // Выборка (clamps) обрабатывается так | |
| processedData = _(clamps) | |
| .map(function(n, idx){ // обходим все записи | |
| let average, type, clamp; | |
| if (idx + 1 > clamps.length) { // иногда высказывает ошибка, это чтобы ее не было - не важно | |
| return; | |
| } | |
| else { | |
| try { | |
| average = ((+new Date(clamps[idx+1].time)) - (+new Date(n.time))) / (n.den * 1000); // определяем среднее время смыкания | |
| type = 'norm'; // предполагаем что это нормальное смыкание | |
| } catch (err) { | |
| return; | |
| } | |
| if (average >= normalCycleMin && average <= normalCycleMax) { // если условие выполняется, то смыкание нормальное | |
| type = 'norm'; | |
| } else if (average < normalCycleMin) { // если условие выполняется, то смыкание ускор | |
| type = 'acl'; | |
| } else if (average > normalCycleMax * 5 && average > 60 * 5) { // если условие выполняется, то смыкание простой | |
| type = 'idle'; | |
| } else if (average > normalCycleMax) { // если условие выполняется, то смыкание сбой | |
| type = 'fail'; | |
| } else { | |
| type = 'fail'; // если не выполняются условия выше - что-то не так, смыкание - сбой | |
| } | |
| clamp = { // определяем хеш -смыкание | |
| type: type, | |
| ts: +new Date(n.time) // просто переводим датувремя в таймстэмп | |
| }; | |
| return clamp; | |
| } | |
| }) | |
| .compact() | |
| .value() // получаем значения |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment