Allarm by date
/**
* Created by Comunico on 13/04/2015.
*/
/*jslint browser: true */
/*global jQuery, moment, performance, console*/
/*properties
call, codice, data, date, descrizione, dettagli, exec, floor, forEach,
format, length, locale, log, milliseconds, now, operatore, ora, prototype,
random, ready, seconds, sorted, splice, subtract, supercodice, time,
tipoAllarme, toString
*/
(function closure($, w, d) {
"use strict";
var main, Allarme, creaAllarmi, strToDate, start, end;
(function utilities() {
moment.locale("it");
Array.prototype.random = Array.prototype.random || function random() {
return this[Math.floor(Math.random() * this.length)];
};
}());
Allarme = function Allarme() {
var allarme = this, proto = "__proto__";
if (!(allarme instanceof Allarme)) {
allarme = {};
allarme[proto] = Allarme.prototype;
}
Array.prototype.forEach.call(arguments, function (arg) {
if (arg && typeof arg === 'object') {
allarme.tipoAllarme = arg.tipoAllarme || allarme.tipoAllarme;
allarme.data = arg.data || allarme.data;
allarme.ora = arg.ora || allarme.ora;
allarme.supercodice = arg.supercodice || allarme.supercodice;
allarme.codice = arg.codice || allarme.codice;
allarme.descrizione = arg.descrizione || allarme.descrizione;
allarme.dettagli = arg.dettagli || allarme.dettagli;
allarme.operatore = arg.operatore || allarme.operatore;
}
});
};
creaAllarmi = function creaAllarmi() {
var i, allarmi, randDate, r;
allarmi = [];
randDate = function randDate() {
var m = moment().seconds(0).milliseconds(0).subtract(Math.floor(Math.random() * 6000), 'minutes');
return {
date: m.format("MM-DD-YYYY"),
time: m.format("HH:mm")
};
};
start = performance.now();
for (i = 0; i < 2000; i += 1) {
r = randDate();
allarmi[i] = new Allarme({
tipoAllarme: [
"AllarmiIngresso",
"MancatoInserimento",
"MancatoDisinserimento",
"Sopravvivenza",
"CadutaLink",
"SorveglianzaRete",
"CadutaLinkSorveglianzaRete",
"SuperamentoChiamateAllarmiGiornalieri",
"SuperamentoChiamate",
"AllarmiGiornalieri",
"AllarmiDiSistema",
"AllarmiPersistenti",
"Selezione",
"IngressoVariato",
"IngressoSegnalato",
"IngressoRipristinato",
"IngressoAllarmato",
"Undefined"
].random(),
data: r.date,
ora: r.time,
supercodice: [
"MVIGGI1",
"MVIGGI",
"MVI12399",
"P1"
].random(),
codice: [
"RBA1",
"RBA12"
].random(),
descrizione: [
"TEST",
"VIGGI",
"BANCA DI CREDITO",
"MI- PROVA TEST",
"PERIFERICA CENTRALINA"
].random(),
dettagli: Math.floor(Math.random() * 9824895).toString(),
operatore: [
"davidex",
"mviggi1",
"t.ricci"
].random()
});
}
end = performance.now();
console.log("Created 2000 entries in: " + (end - start) + " ms");
return allarmi;
};
strToDate = function strToDate(str) {
var data = /(\d{2})-(\d{2})-(\d{4})\s(\d{2}):(\d{2})/.exec(str);
return new Date(
parseInt(data[3], 10),
parseInt(data[1], 10) - 1,
parseInt(data[2], 10),
parseInt(data[4], 10),
parseInt(data[5], 10)
);
};
main = function main() {
var allarmi, sorted, i, j, date1, date2, one, two;
allarmi = creaAllarmi();
sorted = [];
start = performance.now();
for (i = 0; i < allarmi.length; i += 1) {
for (j = 0; j < sorted.length && j < i; j += 1) {
one = allarmi[i];
two = sorted[j];
date1 = strToDate(one.data + " " + one.ora);
date2 = strToDate(two.data + " " + two.ora);
if (date2 >= date1) {
break;
}
}
sorted.splice(j, 0, allarmi[i]);
}
end = performance.now();
console.log("Loaded 2000 ordered entries in: " + (end - start) + " ms");
window.sorted = sorted;
};
$(d).ready(function docready() {
$(w).ready(function windowready() {
main();
});
});
}(jQuery, window, document));