X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=share%2Fcollection.js;h=63bfd0857993bd098ce42ed82554f71161785e69;hb=718d12da554235c9f814a4efd5e3d9dfb40ae692;hp=d3fb11c6244cf6789d9120e66cb77b9e9d63e8de;hpb=d23e04f683e1b8e1aefb9d659cf30eec4881f66b;p=collection4.git diff --git a/share/collection.js b/share/collection.js index d3fb11c..63bfd08 100644 --- a/share/collection.js +++ b/share/collection.js @@ -1,3 +1,197 @@ +/** + * collection4 - collection.js + * Copyright (C) 2010 Florian octo Forster + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * Authors: + * Florian octo Forster + **/ + +var c4 = +{ + instances: [] +}; + +function instance_get_params (graph) /* {{{ */ +{ + var graph_selector = graph.graph_selector; + var inst_selector = graph.instance_selector; + var selector = {}; + + if (graph_selector.host == inst_selector.host) + { + selector.host = graph_selector.host; + } + else + { + selector.graph_host = graph_selector.host; + selector.inst_host = inst_selector.host; + } + + if (graph_selector.plugin == inst_selector.plugin) + { + selector.plugin = graph_selector.plugin; + } + else + { + selector.graph_plugin = graph_selector.plugin; + selector.inst_plugin = inst_selector.plugin; + } + + if (graph_selector.plugin_instance == inst_selector.plugin_instance) + { + selector.plugin_instance = graph_selector.plugin_instance; + } + else + { + selector.graph_plugin_instance = graph_selector.plugin_instance; + selector.inst_plugin_instance = inst_selector.plugin_instance; + } + + if (graph_selector.type == inst_selector.type) + { + selector.type = graph_selector.type; + } + else + { + selector.graph_type = graph_selector.type; + selector.inst_type = inst_selector.type; + } + + if (graph_selector.type_instance == inst_selector.type_instance) + { + selector.type_instance = graph_selector.type_instance; + } + else + { + selector.graph_type_instance = graph_selector.type_instance; + selector.inst_type_instance = inst_selector.type_instance; + } + + return (selector); +} /* }}} instance_get_params */ + +function ident_clone (ident) /* {{{ */ +{ + var ret = {}; + + ret.host = ident.host; + ret.plugin = ident.plugin; + ret.plugin_instance = ident.plugin_instance; + ret.type = ident.type; + ret.type_instance = ident.type_instance; + + return (ret); +} /* }}} ident_clone */ + +function graph_get_defs (graph) +{ + if (!graph.def) + { + var params = ident_clone (graph.graph_selector); + params.action = "graph_def_json"; + + $.ajax({ + url: "collection.fcgi", + async: false, + dataType: 'json', + data: params, + success: function (data) + { + if (!data) + return; + + graph.def = data; + }}); + } + + if (graph.def) + return (graph.def); + return; +} /* graph_get_defs */ + +function instance_draw (inst, def, data) +{ + var x_data = []; + var y_data = []; + var i; + + if (!inst || !def || !data) + return; + + for (i = 0; i < data.length; i++) + { + var ds = data[i]; + + var j; + var x = []; + var y = []; + + for (j = 0; j < ds.data.length; j++) + { + var dp = ds.data[j]; + var t = dp[0]; + var v = dp[1]; + + x.push (t); + y.push (v); + } + + x_data.push (x); + y_data.push (y); + } + + inst.raphael.clear (); + if (def.title) + inst.raphael.g.text (250, 15, def.title); + if (def.vertical_label) + inst.raphael.g.text (5, 100, def.vertical_label).rotate (270); + inst.raphael.g.linechart(50, 25, 500, 150, x_data, y_data, {axis: "0 0 1 1"}); +} + +function json_graph_update (index) +{ + var inst; + var def; + var params; + + inst = c4.instances[index]; + if (!inst) + return; + + def = graph_get_defs (inst); + if (!def) + return; + + if (!inst.raphael) + inst.raphael = Raphael ("c4-graph" + index); + + params = instance_get_params (inst); + params.action = "instance_data_json"; + params.begin = inst.begin; + params.end = inst.end; + + $.getJSON ("collection.fcgi", params, + function (data) + { + instance_draw (inst, def, data); + }); /* getJSON */ +} /* json_graph_update */ + function format_instance(inst) { return ("
  • 0.0) && (factor_end < 0.0)) + return (true); + + jq_obj.data ('begin', begin + (diff * factor_begin)); + jq_obj.data ('end', end + (diff * factor_end)); + + return (zoom_redraw (jq_obj)); +} /* }}} function zoom_relative */ + +function zoom_reference (graph_id) /* {{{ */ +{ + var jq_obj; + var end; + var begin; + + jq_obj = $("#" + graph_id); + if (jq_obj == null) + return (false); + + begin = jq_obj.data ('begin'); + end = jq_obj.data ('end'); + if ((begin == null) || (end == null)) + return (false); + + $(".graph-img img").each (function () + { + $(this).data ('begin', begin); + $(this).data ('end', end); + zoom_redraw ($(this)); + }); +} /* }}} function zoom_reference */ + +function zoom_earlier (graph_id) /* {{{ */ +{ + return (zoom_relative (graph_id, -0.2, -0.2)); +} /* }}} function zoom_earlier */ + +function zoom_later (graph_id) /* {{{ */ +{ + return (zoom_relative (graph_id, +0.2, +0.2)); +} /* }}} function zoom_later */ + +function zoom_in (graph_id) /* {{{ */ +{ + return (zoom_relative (graph_id, +0.2, -0.2)); +} /* }}} function zoom_earlier */ + +function zoom_out (graph_id) /* {{{ */ +{ + return (zoom_relative (graph_id, (-1.0 / 3.0), (1.0 / 3.0))); +} /* }}} function zoom_earlier */ + $(document).ready(function() { /* $("#layout-middle-right").html ("
      "); */ $("#search-form").append ("
        "); @@ -82,21 +408,44 @@ $(document).ready(function() { update_search_suggestions (); }); - $(".graph-img").append ("
        " - + "
        H
        " - + "
        D
        " - + "
        W
        " - + "
        M
        " - + "
        Y
        " - + "
        !
        " + var graph_count = 0; + $(".graph-img").each (function (index, elem) + { + var id = "graph" + graph_count; + graph_count++; + + $(this).find ("img").each (function (img_index, img_elem) + { + var base_url; + + $(this).attr ("id", id); + + base_url = $(this).attr ("src").replace (/;(begin|end)=[^;]*/g, ''); + $(this).data ("base_url", base_url); + }); + + $(this).append ("
        " + + "
        H
        " + + "
        D
        " + + "
        W
        " + + "
        M
        " + + "
        Y
        " + + "
        !
        " + "
        " + "
        " - + "
        ←
        " - + "
        −
        " - + "
        +
        " - + "
        →
        " + + "
        ←
        " + + "
        −
        " + + "
        +
        " + + "
        →
        " + "
        " ); + }); + + var i; + for (i = 0; i < c4.instances.length; i++) + { + json_graph_update (i); + } }); /* vim: set sw=2 sts=2 et fdm=marker : */