Subversion Repositories portal2

Rev

Blame | Last modification | View Log | RSS feed

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


var operation = 1;
var infos = null;

var url = "ajax_discover.php";
var params;
var query;

var div = document.getElementById('ajax_status');
var table = document.getElementById('table_form');
var line;
var html;

function drawProgressBar(n, d)
{
        var ratio = Math.round((100 * n) / d);

        document.getElementById("pbar_left").style.width = ratio + '%';
        document.getElementById("pbar_right").innerHTML = ratio + '%';
}

//div.innerHTML = 'Network discovery is in progress...';
drawProgressBar(0,4);

query = new XMLHttpRequest();
operation = 1;
params = "timeout=" + timeout + "&retry=" + retry + "&port=" + port + "&operation=" + operation + "&infos=" + infos;
query.open('POST', url, true);
query.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
query.setRequestHeader("Content-length", params.length);
query.setRequestHeader("Connection", "close");
query.send(params);
query.onreadystatechange = query_change_cb_1;

function query_change_cb_1()
{
        if(query.readyState == 4)
        {
                if(query.status != 500 && query.status != 404)
                {
                        //div.innerHTML = 'Network discovery is in progress: 1/4.';
                        drawProgressBar(1,4);
                        infos = eval('(' + query.responseText + ')');

                        for(var i = 0; i < infos.length; i++)
                        {
                                line = document.createElement('tr');
                                table.appendChild(line);
                                html = '<td>' + infos[i].ip + '</td> <td></td> <td></td> <td></td> <td></td>';
                                line.innerHTML = html;
                        }

                        query = new XMLHttpRequest();
                        operation = 2;
                        params = "timeout=" + timeout + "&retry=" + retry + "&port=" + port + "&operation=" + operation + "&infos=" + JSON.stringify(infos);
                        query.open('POST', url, true);
                        query.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                        query.setRequestHeader("Content-length", params.length);
                        query.setRequestHeader("Connection", "close");
                        query.send(params);
                        query.onreadystatechange = query_change_cb_2;
                }
                else
                {
                        div.innerHTML = 'Internal AJAX error (' + query.status + ').';
                }
        }
        else
        {
                //div.innerHTML = 'Query is in progress: ' + query.readyState + '/4<br/>';
        }
}

function query_change_cb_2()
{
        //alert(JSON.stringify(infos));

        if(query.readyState == 4)
        {
                if(query.status != 500 && query.status != 404)
                {
                        //div.innerHTML = 'Network discovery is in progress: 2/4.';
                        drawProgressBar(2,4);
                        infos = eval('(' + query.responseText + ')');

                        for(var i = 0; i < infos.length; i++)
                        {
                                var cell = table.rows[i+1].cells[operation-1];
                                cell.innerHTML = infos[i].uuid.toString();
                        }

                        query = new XMLHttpRequest();
                        operation = 3;
                        params = "timeout=" + timeout + "&retry=" + retry + "&port=" + port + "&operation=" + operation + "&infos=" + JSON.stringify(infos);
                        query.open('POST', url, true);
                        query.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                        query.setRequestHeader("Content-length", params.length);
                        query.setRequestHeader("Connection", "close");
                        query.send(params);
                        query.onreadystatechange = query_change_cb_3;
                }
                else
                {
                        div.innerHTML = 'Internal AJAX error (' + query.status + ').';
                }
        }
        else
        {
                //div.innerHTML = 'Query is in progress: ' + query.readyState + '/4<br/>';
        }
}

function query_change_cb_3()
{

        if(query.readyState == 4)
        {

                if(query.status != 500 && query.status != 404)
                {
                        //div.innerHTML = 'Network discovery is in progress: 3/4.';
                        drawProgressBar(3,4);
                        infos = eval('(' + query.responseText + ')');

                        for(var i = 0; i < infos.length; i++)
                        {
                                var cell = table.rows[i+1].cells[operation-1];
                                cell.innerHTML = infos[i].name.toString();
                        }

                        query = new XMLHttpRequest();
                        operation = 4;
                        params = "timeout=" + timeout + "&retry=" + retry + "&port=" + port + "&operation=" + operation + "&infos=" + JSON.stringify(infos);
                        query.open('POST', url, true);
                        query.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                        query.setRequestHeader("Content-length", params.length);
                        query.setRequestHeader("Connection", "close");
                        query.send(params);
                        query.onreadystatechange = query_change_cb_4;
                }
                else
                {
                        div.innerHTML = 'Internal AJAX error (' + query.status + ').';
                }
        }
        else
        {
                //div.innerHTML = 'Query is in progress: ' + query.readyState + '/4<br/>';
        }
}

function query_change_cb_4()
{
        if(query.readyState == 4)
        {
                if(query.status != 500 && query.status != 404)
                {
                        //div.innerHTML = 'Network discovery is in progress: 4/4.';
                        drawProgressBar(4,4);
                        infos = eval('(' + query.responseText + ')');

                        for(var i = 0; i < infos.length; i++)
                        {
                                var cell = table.rows[i+1].cells[operation-1];
                                cell.innerHTML = infos[i].mac.toString();
                        }

                        //uuid
                        //uuids = eval('(' + uuids_str + ')');
                        //uuids = {"0":"2DC683C6-5CDC-11E1-935C-8D314824019B","1":"2DC683C6-5CDC-11E1-935C-8D314824019C"};

                        for(var i = 0; i < infos.length; i++)
                        {
                                for(var j = 0; j < uuids.length; j++)
                                {
                                        if(infos[i].uuid == uuids[j])
                                        {
                                                var cell;
                                                var html;

                                                cell = table.rows[i+1].cells[1];
                                                html = '      <a href=\"index.php?id_page=' + view_device_id + '&device_key=' + uuids[j] + '\">' + uuids[j] + '</a>' + '\n';
                                                cell.innerHTML = html;

                                                cell = table.rows[i+1].cells[4];
                                                html = '';
                                                html += '      <form action=\"index.php?id_page=' + devices_mod_id + '\" method=\"post\">\n';
                                                html += '        <input type=\"hidden\" name=\"form_device_key\" value=\"' + infos[i].uuid + '\" />\n';
                                                html += '        <input type=\"hidden\" name=\"form_device_url\" value=\"' + infos[i].ip + '\" />\n';
                                                html += '        <input type=\"hidden\" name=\"form_device_name\" value=\"' + infos[i].name + '\" />\n';
                                                html += '        <input type=\"hidden\" name=\"form_device_type\" value=\"remote\" />\n';
                                                html += '        <input type=\"image\" name=\"merge\" value=\"submit\" id=\"device_merge\" src=\"images/btn_merge.png\" alt=\"merge\" title="merge" />\n';
                                                html += '      </form>\n';
                                                cell.innerHTML = html;
                                        }
                                        else
                                        {
                                                cell = table.rows[i+1].cells[4];
                                                html = '';
                                                html += '      <form action=\"index.php?id_page=' + devices_add_id + '\" method=\"post\">\n';
                                                html += '        <input type=\"hidden\" name=\"form_device_key\" value=\"' + infos[i].uuid + '\" />\n';
                                                html += '        <input type=\"hidden\" name=\"form_device_url\" value=\"' + infos[i].ip + '\" />\n';
                                                html += '        <input type=\"hidden\" name=\"form_device_name\" value=\"' + infos[i].name + '\" />\n';
                                                html += '        <input type=\"hidden\" name=\"form_device_type\" value=\"remote\" />\n';
                                                html += '        <input type=\"image\" name=\"add\" value=\"submit\" id=\"device_add_2\" src=\"images/btn_add.png\" alt=\"add\" title="add" />\n';
                                                html += '      </form>\n';
                                                cell.innerHTML = html;
                                        }
                                }
                        }

                        //div.innerHTML = 'Network discovery is finished.';
                }
                else
                {
                        div.innerHTML = 'Internal AJAX error (' + query.status + ').';
                }
        }
        else
        {
                //div.innerHTML = 'Query is in progress: ' + query.readyState + '/4<br/>';
        }
}