Subversion Repositories portal2

Rev

Rev 695 | 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');
$_SESSION['error'] = new Error();
?>

<?php

$data_century = 20; // fixed value
$date         = getdate();

if(!isset($_POST['data_year']) && !isset($_GET['data_year']))
{
        $data_year = $date['year'];
}
else
if(isset($_POST['data_year']))
{
        $data_year = $_POST['data_year'];
}
else
if(isset($_GET['data_year']))
{
        $data_year = $_GET['data_year'];
}

if(!isset($_POST['data_month']) && !isset($_GET['data_month']))
{
        $data_month = $date['mon'];
}
else
if(isset($_POST['data_month']))
{
        $data_month = $_POST['data_month'];
}
else
if(isset($_GET['data_month']))
{
        $data_month = $_GET['data_month'];
}

if(!isset($_POST['data_day']) && !isset($_GET['data_day']))
{
        $data_day = $date['mday'];
}
else
if(isset($_POST['data_day']))
{
        $data_day = $_POST['data_day'];
}
else
if(isset($_GET['data_day']))
{
        $data_day = $_GET['data_day'];
}

if(!isset($_POST['form_device_key']))
{
        // the form has not been submitted yet
}
else
{
        $form_device_key = $_POST['form_device_key'];
}

if(!isset($_POST['form_device_check']))
{
        // the form has not been submitted yet
        $form_device_check = 'off';
}
else
{
        $form_device_check = $_POST['form_device_check'];
}

if(isset($_POST['data_export']))
{

        //$this->handle = fopen($filename, 'wt');
        //fputs($this->handle, $contents);

        //downloadFile("test.txt");
}
?>

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

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

        <fieldset>
                <legend>
                        <?php
                        if(!$data_year && !$data_month && !$data_day)
                        {
                                echo _('Data of past years');
                        }
                        else
                        if($data_year && !$data_month && !$data_day)
                        {
                                echo _('Data of past months');
                        }
                        else
                        if($data_year && $data_month && !$data_day)
                        {
                                echo _('Data of past days');
                        }
                        else
                        if($data_year && $data_month && $data_day)
                        {
                                echo _('Data of past hours');
                        }
                        ?>
                </legend>

                <label for="form_device_key">
                        <?php echo _('Device'); ?>:
                </label>

                <?php
                include_once('ymd.php');

                // Create device list form
                if(isset($_SESSION['park']))
                {
                        $select = "\r\n";
                        $select .= "<select name=\"form_device_key\" id=\"form_device_key\">";

                        $park = $_SESSION['park'];
                        if($park)
                        {
                                if(!isset($form_device_key))
                                {
                                        $device_keys     = $park->getDevicesKeys();
                                        $form_device_key = $device_keys[0];
                                }

                                foreach($park as $key => $device)
                                {
                                        $device_name = $device->getName();

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

                        $select .= "</select>\n";
                        echo $select;
                }
                ?>

                <!-- <label for="form_device_check">Use labels</label> -->
                <input type="checkbox" id="form_device_check" name="form_device_check"
                <?php
                if($form_device_check == 'on') echo "checked=\"checked\""; ?> />
                <br/>

                <?php
                // Create year / month / day list form from database query (list of tables)
                function form_create($filter, $data_target, $form_device_key)
                {
                        $field = "data_year";

                        if(isset($_SESSION['park']))
                        {
                                $park = $_SESSION['park'];

                                // Extract list of tables
                                if($park)
                                {
                                        $device   = $park->getDevice($form_device_key);
                                        $route    = $device->getRoute();

                                        $db       = new SqliteEngine($route);
                                        $db->setUuid($device->getUuid());
                                       
                                        try
                                        {
                                                $db->open();
                                               
                                                $query    = new SQliteQuery(SqliteQuery::QUERY_TABLE_YEARS);
                                                $range    = $db->fetchStampsRange($query);
                                               
                                                $db->close();

                                                $min      = new DateTime('@' . $range['min']);
                                                $min->setTimezone($_SESSION['timezone']);
                                                $max      = new DateTime('@' . $range['max']);
                                                $max->setTimezone($_SESSION['timezone']);
                                                $min_year = $min->format('Y');
                                                $max_year = $max->format('Y');
                                        }
                                        catch(MyException $e)
                                        {
                                                $_SESSION['error']->push($e->getErrorReport());
                                               
                                                $min_year = 0;
                                                $max_year = 0;
                                        }                                      
                                }

                                //if($data_target == 0) $data_target = current($array);

                                // Once we have a list, we can create menu
                                $select = "\r\n";
                                $select .= "<select name=\"$field\" id=\"$field\">\n";

                                if($data_target == 0)
                                {
                                        $select .= "  <option value=\"0\" selected=\"selected\"> --- </option>\n";
                                }
                                else
                                {
                                        $select .= "  <option value=\"0\"> --- </option>\n";
                                }

                                for($year = $min_year; $year <= $max_year; $year++)
                                {
                                        if($year == $data_target)
                                        {
                                                $select .= "  <option value=\"$year\" selected=\"selected\"> $year </option>\n";
                                        }
                                        else
                                        {
                                                $select .= "  <option value=\"$year\">$year</option>\n";
                                        }
                                }

                                $select .= "</select>\n";
                                echo $select;
                        }

                        return $data_target;
                }
                ?>

                <label >
                        <?php echo _('Date'); ?>:
                </label>
                <!--- <select name="data_century" id="data_century" \">  <option value="20">20</option>\n";      </select> -->

                <?php
                // Dump the 3 forms
                $data_year = form_create(SqliteEngine::DB_TABLES_FILTER_YEARS, $data_year, $form_device_key);
                //$data_month = form_create('month', $data_month, $form_device_key);
                //$data_day = form_create('day', $data_day, $form_device_key);

                form_create_month('data_month', $data_month);
                form_create_day('data_day', $data_day);
                ?>

                <input type="submit" value=<?php echo _('Update'); ?> id="data_refresh" name="data_refresh" alt="refresh" />

        </fieldset>
        </form>

        <br/>

        <object>
                <?php
                // Use user selection to build and populate HTML table
                if(isset($_SESSION['park']))
                {
                        $park = $_SESSION['park'];

                        /* Extract list of entries and merge */
                        if($park)
                        {
                                $device      = $park->getDevice($form_device_key);
                                $device_name = $device->getName();

                                $route       = $device->getRoute();
                                $db          = new SqliteEngine($route);
                                $db->setUuid($device->getUuid());

                                try
                                {
                                        $db->open('.');

                                        $query       = new  SqliteQuery(SqliteQuery::getTableFromYMD($data_year, $data_month, $data_day));
                                        $query->setStart(SqliteQuery::cnvYmd2DateTime($data_year, $data_month, $data_day));
                                        //$query->setEnd(SqliteQuery::cnvYmd2DateTime($data_year, $data_month, $data_day));
                                        $table       = $db->fetchRows($query);
                                        $db->close();
                                }
                                catch(MyException $e)
                                {
                                        $_SESSION['error']->push($e->getErrorReport());
                                        $table = null;
                                }                                      

                                // we should write our own table thead / tbody / tfoot
                                $str         = "";
                                $str .= "<table id=\"browse_data_table\"> \n";
                                //$str .= " < caption > $device_name : $data_year : $data_month : $data_day </caption > \n";

                                $device->sortTrackers('index', true);
                                $trackers_names = $device->getTrackerKeys();

                                // populate table header
                                $str .= "  <thead> \n";
                                $str .= "    <tr> \n";
                                $str .= "<td> <strong>Id</strong> </td>\n";
                                $str .= "<td> <strong>Date &nbsp; Time</strong> </td>\n";

                                foreach($trackers_names as $key => $tracker_name)
                                {
                                        $tracker = $device->getTracker($tracker_name);

                                        if($form_device_check == 'on')
                                        {
                                                $name = $tracker->getVariableName();
                                        }
                                        else
                                        {
                                                $name = $tracker->getName();
                                        }

                                        $str .= "<td> <strong>$name</strong> </td> \n";
                                }
                                $str .= "    </tr> \n";
                                $str .= "  </thead> \n";

                                // populate table itself
                                if($table !== null)
                                {
                                        foreach($table as $key => $record)
                                        {
                                                $str .= $record->dumpAsHtmlRow();
                                        }
                                }

                                $str .= "</table> \n";

                                echo $str;
                        }
                }
                ?>
        </object>

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

        <?php echo $_SESSION['error']->display(); ?>

</div>

<script type="text/javascript">
        var arrayTable  = document.getElementById('browse_data_table')
        var arrayRows  = arrayTable.rows;

        //alert(arrayRows[2].style);
        arrayRows[2].style.backgroundColor = "#123456";
        //arrayRows[2].innerHTML = "#123456";
</script>