Subversion Repositories portal2

Rev

Rev 705 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/*  emg - Energy Monitoring & Graphing
*  Copyright (C) 2006-2012 Romain Lievin
*
*  This program is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 3 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 General Public License for more details.
*
*  You should have received a copy of the GNU 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
*/

?>

<?php
include_once('auth_check.php');
?>

<?php
$form_token = md5(uniqid('auth', true));
$_SESSION['form_token'] = $form_token;

//var_dump($_POST);

if(isset($_POST['form_datum_key']))
{
        $form_datum_key = $_POST['form_datum_key'];
}
else
{
        $data            = $_SESSION['data'];
        $form_datum_keys = $data->getDatumsKeys();
        $form_datum_key  = $form_datum_keys[0];
}

if(isset($_POST['form_browse_type']))
{
        $form_browse_type = $_POST['form_browse_type'];
}
else
{
        $form_browse_type = 'line';
}
?>

<div id="page_form_browse_costs">
        <h1>
                <?php echo _('Costs'); ?>
        </h1>

        <?php
        $id = link_get_id_from_filename("form_browse_costs.php");
        echo "<form action=\"index.php?id_page=$id\" method=\"post\">";
        ?>

        <fieldset id="form_list">
                <legend>
                        <?php
                        if(isset($form_datum_key))
                        {
                                $data       = $_SESSION['data'];
                                $datum      = $data->getItem($form_datum_key);
                                $datum_name = $datum->getName();
                                echo $datum_name;
                        }
                        ?>
                </legend>

                <?php
                // Create datum list form
                if(isset($_SESSION['data']) && ($_SESSION['data']->countDatums() > 1))
                {
                        $data = $_SESSION['data'];

                        echo "<label for=\"form_datum_key\">" . _('Data') . ': </label>';

                        $select = "\r\n";
                        $select .= "<select name=\"form_datum_key\" id=\"form_datum_key\">";

                        if($data && $data->countDatums() > 0)
                        {
                                foreach($data as $key => $datum)
                                {
                                        $datum_name = $datum->getName();

                                        if($key == $form_datum_key)
                                        {
                                                $select .= "<option value=\"$key\" selected=\"selected\"> $datum_name </option>";
                                        }
                                        else
                                        {
                                                $select .= "<option value=\"$key\"> $datum_name </option>";
                                        }
                                }
                        }

                        $select .= "</select>\n";
                        echo $select;
                }
                ?>
                <input type="submit" value=<?php echo _('Update'); ?> id="form_refresh" name="form_refresh" />

                <br/>

                <label>
                        <?php echo _('Browse type'); ?>
                </label>:
               
                <input type="radio" name="form_browse_type" value="table" id="form_browse_type_table"
                        <?php if($form_browse_type == 'table') echo "checked=\"checked\""; ?>
                />
                <?php echo _("table"); ?>
               
                <input type="radio" name="form_browse_type" value="line" id="form_browse_type_line"
                        <?php if($form_browse_type == 'line') echo "checked=\"checked\""; ?>
                />
                <?php echo _("line"); ?>

                <br/>
        </fieldset>
        </form>


        <object>
                <?php
                if(isset($_SESSION['data']))
                {
                        $data = $_SESSION['data'];
                        $data->sortItems('name', true);

                        if($data)
                        {
                                $table = "\n";
                                $table .= "<table id=\"table_form\">\n";

                                foreach($data as $key => $datum)
                                {
                                        if($key != $form_datum_key)
                                        {
                                                continue;
                                        }

                                        //echo $key; echo " < br />";
                                        $form_datum_key = $key;
                                        $datum_name     = $datum->getName();

                                        //$datum = $data->getItem($form_datum_key);
                                        //$datum_name = $datum->getName();
                                        $tracker_key    = $datum->getPath();
                                        $costs          = $datum->getCosts();

                                        if($datum->getType() != DatumFactory::SINGLE)
                                        {
                                                $groups = $datum->getGroups();
                                        }

                                        $costs->sortItems('name', true);
                                        if($costs)
                                        {
                                                $dump    = $costs->dumpAsGoogleData();
                                                //echo $dump; echo " < br/>";

                                                $js_data = "<script type='text/javascript'>\n";
                                                $js_data .= "view = '" . $form_browse_type . "';\n";
                                                $js_data .= "label = '" . $datum_name . " (euro)';\n";
                                                $js_data .= "date_str = '" . _("Date") . "';\n";
                                                $js_data .= "subscription_string = '" . _("Subscription") . "';\n";
                                                $js_data .= "consumption_string = '" . _("Consumption") . "';\n";
                                                $js_data .= "values=";
                                                $js_data .= $dump . ";\n";
                                                $js_data .= "</script>";
                                                echo $js_data;
                                                //var_dump($js_data);
                                        }
                                }
                        }
                }
                ?>
        </object>

        <?php
        if($form_browse_type == 'table')
        {
                echo "<div id='table_div'></div>";
        }
        else
        {
                echo "<div id='chart_div' style=\"width: 800px; height: 500px;\"></div>";
        }
        ?>

        <p>
                <?php echo _('Need to export your data? Choose `table` mode, select the whole table, copy from browser and paste contents in your favourite spreadsheet program.'); ?>
        </p>

        <!-- if not connected -->
        <script type="text/javascript" src="google/01.js">
        </script>
        <script type="text/javascript" src="google/02.js">
        </script>
        <script type="text/javascript" src="google/03.js">
        </script>
        <script type="text/javascript" src="google/04.js">
        </script>
        <script type="text/javascript" src="google/05.js">
        </script>
        <!-- if connected -->
        <script type='text/javascript' src='https://www.google.com/jsapi'>
        </script>
        <script type='text/javascript'>

                if(view == 'table')
                {
                        google.load('visualization', '1', {packages:['table']});
                        google.setOnLoadCallback(function(){drawTable(values)});

                        function drawTable(array)
                        {
                                var data = new google.visualization.DataTable();

                                data.addColumn('date', date_str);
                                data.addColumn('number', subscription_string);
                                data.addColumn('number', consumption_string);
                                data.addRows(array);

                                var formatter_short = new google.visualization.DateFormat({formatType: 'short', timeZone: 2, pattern: "EEE, MMM d, ''yy Z"});
                                formatter_short.format(data, 0);

                                var formatter_col1 = new google.visualization.NumberFormat({fractionDigits: 2});
                                formatter_col1.format(data, 1);

                                var formatter_col2 = new google.visualization.NumberFormat({fractionDigits: 3});
                                formatter_col2.format(data, 2);

                                var table = new google.visualization.Table(document.getElementById('table_div'));
                                table.draw(data, {showRowNumber: true});
                        }
                }

                if(view == 'line')
                {
                        google.load('visualization', '1', {packages:['corechart']});
                        google.setOnLoadCallback(function(){drawChart(values)});

                        function drawChart(array)
                        {
                                var data = new google.visualization.DataTable();
                                //var options = { title: label, legend: {position: 'top', textStyle: {color: 'blue', fontSize: 16}} };
                                var options =
                                {
                                        title: label,
                                        legend:
                                        {
                                                position: 'top', textStyle:
                                                {
                                                        color: 'black', fontSize: 16
                                                }
                                        },
                                        series:
                                        {
                                                1:
                                                {
                                                        targetAxisIndex:1
                                                }
                                        },
                                        vAxes:
                                        {
                                                0:
                                                {
                                                        textStyle:
                                                        {
                                                                color: 'blue'
                                                        }
                                                }, 1:
                                                {
                                                        textStyle:
                                                        {
                                                                color: 'red'
                                                        }
                                                }
                                        },
                                        vAxis:
                                        {
                                                0:
                                                {
                                                        format:'##,##'
                                                }, 1 :
                                                {
                                                        format:'#,###'
                                                }
                                        },
                                };

                                data.addColumn('date', date_str);
                                data.addColumn('number', subscription_string);
                                data.addColumn('number', consumption_string);
                                data.addRows(array);

                                var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
                                chart.draw(data, options);
                        }
                }
        </script>
</div>