static/hosts.js
author Tero Marttila <terom@paivola.fi>
Wed, 24 Oct 2012 21:02:33 +0300
changeset 31 3e6d0feb115c
parent 30 841d856293a1
child 37 9039238f8885
permissions -rw-r--r--
pvl.syslog: import from pvl-collectd
26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
     1
/* http://fgnass.github.com/spin.js/ */
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
     2
$.fn.spin = function(opts) {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
     3
  this.each(function() {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
     4
    var $this = $(this),
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
     5
        data = $this.data();
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
     6
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
     7
    if (data.spinner) {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
     8
      data.spinner.stop();
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
     9
      delete data.spinner;
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    10
    }
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    11
    if (opts !== false) {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    12
      data.spinner = new Spinner($.extend({color: $this.css('color')}, opts)).spin(this);
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    13
    }
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    14
  });
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    15
  return this;
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    16
};
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    17
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    18
$.fn.disable = function (disable) {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    19
    if (disable)
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    20
        this.attr('disabled', 'disabled');
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    21
    else
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    22
        this.removeAttr('disabled');
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    23
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    24
    return this;
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    25
};
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    27
var Timer = function (interval, cb) {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    28
    var handle = null;
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    29
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    30
    this.enable = function () {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    31
        if (handle) return;
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    32
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    33
        handle = window.setInterval(cb, interval);
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    34
    };
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    35
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    36
    this.disable = function () {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    37
        if (!handle) return;
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    38
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    39
        window.clearInterval(handle);
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    40
        handle = null;
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    41
    };
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    42
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    43
    return this;
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    44
};
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    45
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    46
function html (tag, params, html) {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    47
    return $("<" + tag + " />", $.extend({html: html}, params));
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    48
};
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    49
25
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
function hosts_realtime (params) {
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
    var t = params.t;
26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    52
    var refreshTimer = Timer(2 * 1000, refresh);
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    53
    var animate = false; // true;
25
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
    function render_host (host) {
29
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    56
        var columns = [
26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    57
            html("td", {}, 
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    58
                html("a", { href: params.host.replace('0', host.id) }, "#" )
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    59
            ),
29
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    60
        ];
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    61
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    62
        $.each(params.columns, function (i, name) {
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    63
            column = html("td", { class: name }, host[name]);
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    64
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    65
            if (name == 'state')
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    66
                column.addClass(host['state_class']);
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    67
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    68
            columns.push(column);
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    69
        });
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    70
38265b7d8f62 hosts.RealtimeHandler: refactor COLUMNS handling
Tero Marttila <terom@paivola.fi>
parents: 28
diff changeset
    71
        return html("tr", {id: host.id}, columns);
25
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
    }
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
    function refresh () {
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
        console.log("refresh: " + t);
26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    76
        
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    77
        var refresh = $('#refresh').disable(true);
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    78
        var spinner = $('#wrapper').spin();
25
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
30
841d856293a1 hosts: refactor ListHandler filter support up into BaseHandler, adding support for filters in RealtimeHandler
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
    80
        var url = params.url;
841d856293a1 hosts: refactor ListHandler filter support up into BaseHandler, adding support for filters in RealtimeHandler
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
    81
        var query = $.param($.extend(params.filters, {t: t }), true);   // using traditional encoding for multi-values
841d856293a1 hosts: refactor ListHandler filter support up into BaseHandler, adding support for filters in RealtimeHandler
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
    82
841d856293a1 hosts: refactor ListHandler filter support up into BaseHandler, adding support for filters in RealtimeHandler
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
    83
        $.getJSON(url, query, function (data) {
26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    84
            var t1 = data.t;
25
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    85
            var hosts = data.hosts;
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    86
26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    87
            console.log("refresh: " + t + " -> " + t1 + ": " + hosts.length);
25
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    88
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    89
            $.each(hosts, function (i, host) {
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    90
                var item = $('#' + host.id);
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    91
26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    92
                if (item.length) {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    93
                    if (animate) item.slideUp();
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    94
                } else {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    95
                    item = render_host(host)
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    96
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    97
                    if (animate) item.hide();
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
    98
                }
25
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    99
                
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   100
                // move to top
26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   101
                item.prependTo($('#hosts tbody'));
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   102
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   103
                if (animate)
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   104
                    item.slideDown();
28
9940bc6c0a34 hosts: use jquery ui background color animation instead of position
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   105
                else
9940bc6c0a34 hosts: use jquery ui background color animation instead of position
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   106
                    item.effect("highlight", {}, 'slow');
25
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   107
            });
26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   108
            
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   109
            // update
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   110
            t = t1;
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   111
        }).error(function () {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   112
            alert("Error :("); 
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   113
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   114
            // disable auto-refresh
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   115
            refreshTimer.disable();
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   116
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   117
        }).complete(function () {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   118
            spinner.spin(false);
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   119
            refresh.disable(false);
25
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   120
        });
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   121
    }
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   122
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   123
    return function () {
26
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   124
        // init
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   125
        if (animate)
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   126
            $("#hosts").css('display', 'block');
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   127
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   128
        $("#refresh").click(function () {
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   129
            // in case diabled on error
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   130
            refreshTimer.enable();
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   131
            refresh();
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   132
        });
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   133
        
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   134
        // start auto-refresh
589249097230 hosts: convert realtime list into table; breaks animations :(
Tero Marttila <terom@paivola.fi>
parents: 25
diff changeset
   135
        refreshTimer.enable();
25
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   136
    }
47faf2ac32d0 hosts: pseudo-realtime list
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   137
}