Zorgatone
4/13/2015 - 12:29 PM

Allarm by date

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));