2007-05-20 Sancho Lerena <slerena@artica.es>

* pandoradb_data.sql: Uptated network component data.

        * include/styles/pandora.css: Few updates for style.

        * include/functions_db.php: Added functions for visual console
        features.

        * include/languages/language_en.php: New strings.

        * include/javascript: Moved all javascript files here.

        * include/javascript/x_slide.js, include/javascript/x_event.js:
          Copied from branch / console from Azabel.

        * include/javascript/wz_jsgraphics.js: New functions to draw
        lines.

        * pandoradb.sql: Created new tlayout and tlayout_data tables.

        * index.php: Small changes. Added support to refresh any page via
        POST.

        * operation/visual_console: Added Visual Console feature.

        * operation/agentes/estado_alertas.php: Updated styles and fixes
        damm bug when no alert available.

        * operation/agentes/status_monitor.php: Updated styles.

        * operation/agentes/estado_generalagente.php: Update styles.

        * operation/agentes/estado_agente.php: Updated style.

        * operation/servers/view_server.php: Updated style.

        * operation/reporting/graph_builder.php: Fixed some minor
        bugs. Needs to fix more bugs :(

        * operation/menu.php: Updated menu. Visual Console has dynamic items!.

        * images/pandora_logo_head.png: New header logo !

        * images/pandora_logo.png: New Pandora FMS 1.3 logo ! :-))

        * images/console/background: More samples added.

        * images/console/icons: Icons to be used in visual console.

        * reporting/fgraph.php: New feature added to simple graph to show
        only average values.

        * reporting/stat_win.php: Added support to avg_only and show avg,
        max and min values from each graph. Zoom factor is more usable
        now.

        * general/logoff.php: New style.

        * general/footer.php: Fixed style.

        * general/logon_failed.php: Fixed style.

        * general/login_page.php: New style.

        * general/header.php: Fixed style.

        * godmode/agentes/configurar_agente.php: Fixed styles.

        * godmode/agentes/agent_manager.php: Fixed styles.

	* operation/active_console: Removed from trunk: not ready to be used.



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@459 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
slerena 2007-05-20 17:12:31 +00:00
parent 16c91673db
commit 4e15be85c7
172 changed files with 2960 additions and 6378 deletions

View File

@ -1,12 +1,85 @@
2007-05-20 Sancho Lerena <slerena@artica.es>
* pandoradb_data.sql: Uptated network component data.
* include/styles/pandora.css: Few updates for style.
* include/functions_db.php: Added functions for visual console
features.
* include/languages/language_en.php: New strings.
* include/javascript: Moved all javascript files here.
* include/javascript/x_slide.js, include/javascript/x_event.js:
Copied from branch / console from Azabel.
* include/javascript/wz_jsgraphics.js: New functions to draw
lines.
* pandoradb.sql: Created new tlayout and tlayout_data tables.
* index.php: Small changes. Added support to refresh any page via
POST.
* operation/visual_console: Added Visual Console feature.
* operation/agentes/estado_alertas.php: Updated styles and fixes
damm bug when no alert available.
* operation/agentes/status_monitor.php: Updated styles.
* operation/agentes/estado_generalagente.php: Update styles.
* operation/agentes/estado_agente.php: Updated style.
* operation/servers/view_server.php: Updated style.
* operation/reporting/graph_builder.php: Fixed some minor
bugs. Needs to fix more bugs :(
* operation/menu.php: Updated menu. Visual Console has dynamic items!.
* images/pandora_logo_head.png: New header logo !
* images/pandora_logo.png: New Pandora FMS 1.3 logo ! :-))
* images/console/background: More samples added.
* images/console/icons: Icons to be used in visual console.
* reporting/fgraph.php: New feature added to simple graph to show
only average values.
* reporting/stat_win.php: Added support to avg_only and show avg,
max and min values from each graph. Zoom factor is more usable
now.
* general/logoff.php: New style.
* general/footer.php: Fixed style.
* general/logon_failed.php: Fixed style.
* general/login_page.php: New style.
* general/header.php: Fixed style.
* godmode/agentes/configurar_agente.php: Fixed styles.
* godmode/agentes/agent_manager.php: Fixed styles.
2007-05-18 Sancho Lerena <slerena@gmail.com> 2007-05-18 Sancho Lerena <slerena@gmail.com>
* include/styles/pandora.css : Some style changes. * include/styles/pandora.css : Some style changes.
* include/functions.php: Changed format_numeric and format_for_graph to show a * include/functions.php: Changed format_numeric and
better number formatting. format_for_graph to show a better number formatting.
* index.php: Some minor changes in layout and bgcolor (not used style because * index.php: Some minor changes in layout and bgcolor (not used
some pages that don't have the same color uses main style, f.e: stat_win for graphs). style because some pages that don't have the same color uses main
style, f.e: stat_win for graphs).
* godmode/agentes/module_manager.php * godmode/agentes/module_manager.php
* operation/agentes/estado_ultimopaquete.php * operation/agentes/estado_ultimopaquete.php
@ -15,8 +88,8 @@
* operation/agentes/datos_agente.php, estado_ul: Updated output render and fixes * operation/agentes/datos_agente.php, estado_ul: Updated output render and fixes
some tables, added databox style, removed line. some tables, added databox style, removed line.
* operation/menu.php: Removed active console. This don't go with 1.3 version * operation/menu.php: Removed active console. This don't go with
finally due many unfixed bugs. 1.3 version finally due many unfixed bugs.
* reporting/stat_win.php: White background fixed. * reporting/stat_win.php: White background fixed.

View File

@ -15,9 +15,9 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software // along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
echo "</center>"; echo "<center>";
echo '<a class="white_bold" target="_new" href="general/license/pandora_info_'.$language_code.'.html"> echo '<a class="white_bold" target="_new" href="general/license/pandora_info_'.$language_code.'.html">
Pandora FMS '.$pandora_version.' Build '.$build_version.' '. Pandora FMS '.$pandora_version.' Build '.$build_version.'<br>'.
$lang_label["gpl_notice"].'</a><br>'; $lang_label["gpl_notice"].'</a><br>';
if (isset($_SERVER['REQUEST_TIME'])) { if (isset($_SERVER['REQUEST_TIME'])) {
$time = $_SERVER['REQUEST_TIME']; $time = $_SERVER['REQUEST_TIME'];

View File

@ -23,7 +23,7 @@ echo '
<span id="logo_text1">Pandora</span> <span id="logo_text2">FMS</span> <span id="logo_text1">Pandora</span> <span id="logo_text2">FMS</span>
</div> </div>
<div id="head_l"> <div id="head_l">
<a href="index.php"><img src="images/logo_menu.gif" border="0" alt="logo"></a> <a href="index.php"><img src="images/pandora_logo_head.png" border="0" alt="logo"></a>
</div> </div>
'; ';

View File

@ -18,25 +18,29 @@
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
?> ?>
<center>
<div align='center'> <div align='center' class='databox' style='margin-top:200px; width: 460px; border-left: solid 1px #000;border-top: solid 1px #000; border-bottom: solid 2px #000; border-right: solid 2px #000;'>
<h1 id="log"><?php echo $lang_label['welcome_title']; ?></h1> <h1 style='font-size: 18px; color: #000; margin-bottom: 0px;'><?php echo $lang_label['welcome_title']; ?></h1>
<div id='login'> <div class='databox' style='width: 400px;'>
<div id="login_box">
<form method="post" action="index.php?login=1"> <form method="post" action="index.php?login=1">
<div class="f9b">Login</div> <table cellpadding=4 cellspacing=1 width=400>
<tr><td rowspan=5 align='left'>
<a href="index.php">
<img src="images/pandora_logo.png" border="0" alt="logo"></a><br>
<?php echo $pandora_version; ?>
<td class='f9b'>
Login <br>
<input class="login" type="text" name="nick" value=""> <input class="login" type="text" name="nick" value="">
<div class="f9b">Password</div> <tr><td class='f9b'>
Password <br>
<input class="login" type="password" name="pass" value=""> <input class="login" type="password" name="pass" value="">
<div><input type="submit" class="sub next" value="Login"></div> <tr><td align='center'>
<input type="submit" class="sub next" value="Login">
</table>
</form> </form>
</div> </div>
<div id="logo_box">
<a href="index.php">
<img src="images/logo_login.gif" border="0" alt="logo"></a><br>
<?php echo $pandora_version; ?>
</div>
<div id="ip"><?php echo 'IP: <b class="f10">'.$REMOTE_ADDR.'</b>'; ?></div> <div id="ip"><?php echo 'IP: <b class="f10">'.$REMOTE_ADDR.'</b>'; ?></div>
</div> </div>
<div id="foot"><?php require("general/footer.php") ?></div> </center>
</div>

View File

@ -17,17 +17,27 @@
// along with this program; if not, write to the Free Software // along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
?> ?>
<div align='center'>
<h1 id="log"><?php echo $lang_label["logged_out"] ; ?></h1> <center>
<div id='login'> <div align='center' class='databox' style='margin-top:200px; width: 460px; border-left: solid 1px #000;border-top: solid 1px #000; border-bottom: solid 2px #000; border-right: solid 2px #000;'>
<div id="login_box"> <h1 style='font-size: 18px; color: #000; margin-bottom: 0px;'>
<?PHP echo $lang_label["logout_msg"]; ?> <?php echo $lang_label["logged_out"]; ?></h1>
</div> <div class='databox' style='width: 400px;'>
<div id="logo_box"> <form method="post" action="index.php?login=1">
<a href="index.php"><img src="images/logo_menu.gif" border="0" alt="logo"></a><br> <table cellpadding=4 cellspacing=1 width=400>
<tr><td align='left'>
<a href="index.php">
<img src="images/pandora_logo.png" border="0" alt="logo"></a><br>
<?php echo $pandora_version; ?> <?php echo $pandora_version; ?>
<td valign='bottom'>
<?PHP echo $lang_label["logout_msg"]; ?>
</table>
</form>
</div> </div>
<div id="ip"><?php echo 'IP: <b class="f10">'.$REMOTE_ADDR.'</b>'; ?></div> <div id="ip"><?php echo 'IP: <b class="f10">'.$REMOTE_ADDR.'</b>'; ?></div>
</div> </div>
<div id="foot"><?php require("general/footer.php") ?></div> </center>
</div>

View File

@ -18,14 +18,22 @@
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
?> ?>
<div align='center'> <center>
<div id='login_f'> <div align='center' class='databox' style='margin-top:200px; width: 460px; border-left: solid 1px #000;border-top: solid 1px #000; border-bottom: solid 2px #000; border-right: solid 2px #000;'>
<h1 id="log_f" class="error"><?php echo $lang_label['err_auth']; ?></h1> <div id='login_f' class='databox' style='width:400px; margin-top: 10px;'>
<div id='noa'><img src='images/noaccess.gif'></div> <h1 id="log_f" style='margin-top: 0px;' class="error"><?php echo $lang_label['err_auth']; ?></h1>
<div> <div id='noa' style='width:50px' >
<a href="index.php"><img src="images/logo_login.gif" border="0"></a><br> <img src='images/noaccess.gif'>
</div>
<div style='width: 350px'>
<a href="index.php"><img src="images/pandora_logo.png" border="0"></a><br>
<?php echo $pandora_version; ?> <?php echo $pandora_version; ?>
</div> </div>
<div class="msg"><?php echo $lang_label["err_auth_msg"]; ?></div> <div class="msg"><?php echo $lang_label["err_auth_msg"]; ?></div>
</div> </div>
<br>
</div> </div>
</center>

View File

@ -58,8 +58,8 @@ if ($create_agent == 1) {
echo "<input type='hidden' name='update_agent' value='1'>"; echo "<input type='hidden' name='update_agent' value='1'>";
echo "<input type='hidden' name='id_agente' value='".$id_agente."'>"; echo "<input type='hidden' name='id_agente' value='".$id_agente."'>";
} }
echo '<table width="650" cellpadding="3" cellspacing="3" class="fon">'; echo '<table width="650" cellpadding="4" cellspacing="4" class="databox_color">';
echo "<tr><td class='lb' rowspan='9' width='1'>"; echo "<tr>";
echo '<td class="datos"><b>'.$lang_label["agent_name"].'</b></td> echo '<td class="datos"><b>'.$lang_label["agent_name"].'</b></td>
<td class="datos"> <td class="datos">
<input type="text" name="agente" size=30 value="'.$nombre_agente.'">'; <input type="text" name="agente" size=30 value="'.$nombre_agente.'">';
@ -170,10 +170,8 @@ while ($row=mysql_fetch_array($result)){
echo $lang_label["active"].' echo $lang_label["active"].'
<input type="radio" name="disabled" class="chk" value="0" checked>'; <input type="radio" name="disabled" class="chk" value="0" checked>';
} }
?>
<tr><td colspan='3'><div class='raya'></div></td></tr> echo '</table><table width="650"><tr><td align="right">';
<tr><td colspan="3" align="right">
<?php
if ($create_agent == 1){ if ($create_agent == 1){
echo " echo "
<input name='crtbutton' type='submit' class='sub wand' value='". <input name='crtbutton' type='submit' class='sub wand' value='".
@ -183,7 +181,6 @@ if ($create_agent == 1){
<input name='uptbutton' type='submit' class='sub upd' value='". <input name='uptbutton' type='submit' class='sub upd' value='".
$lang_label["update"]."'>"; $lang_label["update"]."'>";
} }
echo "</td></form></table>";
?> ?>
</td>
</form>
</table>

View File

@ -617,10 +617,21 @@ if (((!isset($_POST["nc"]) OR ($_POST["nc"]==-1)) ) &&
echo "<h3 class='suc'>".$lang_label["add_module_ok"]."</h3>"; echo "<h3 class='suc'>".$lang_label["add_module_ok"]."</h3>";
} }
// Init vars to null to avoid trash in forms // Init vars to null to avoid trash in forms
$id_tipo_modulo = "";$nombre = "";$descripcion = "";$modulo_max = ""; $id_tipo_modulo = "";
$modulo_min = "";// Pandora 1.2 new module data: $nombre = "";
$tcp_send = "";$tcp_rcv = "";$tcp_port = "";$ip_target = ""; $modulo_nombre = "";
$snmp_oid = "";$snmp_community = "";$id_module_group = ""; $descripcion = "";
$modulo_descripcion= "";
$modulo_max = "";
$modulo_min = "";
// Pandora 1.2 new module data:
$tcp_send = "";
$tcp_rcv = "";
$tcp_port = "";
$ip_target = "";
$snmp_oid = "";
$snmp_community = "";
$id_module_group = "";
$module_interval = ""; $module_interval = "";
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@ -1083,4 +1083,112 @@ function give_db_value ($field, $table, $field_search, $condition_value){
return $pro; return $pro;
} }
// ---------------------------------------------------------------
// Return current status from a given agent module (1 alive, 0 down)
// ---------------------------------------------------------------
function return_status_agent_module ($id_agentmodule = 0){
require("config.php");
$query1="SELECT estado FROM tagente_estado WHERE id_agente_modulo = ".$id_agentmodule;
$resq1=mysql_query($query1);
if ($resq1 != 0) {
$rowdup=mysql_fetch_array($resq1);
if ($rowdup[0] == 0)
return 1;
else
return 0;
} else
return 0;
}
// ---------------------------------------------------------------
// Return current value from a given agent module
// ---------------------------------------------------------------
function return_value_agent_module ($id_agentmodule = 0){
require("config.php");
$query1="SELECT datos FROM tagente_estado WHERE id_agente_modulo = ".$id_agentmodule;
$resq1=mysql_query($query1);
if ($resq1 != 0) {
$rowdup=mysql_fetch_array($resq1);
return format_numeric($rowdup[0]);
} else
return 0;
}
// ---------------------------------------------------------------
// Return coordinate X from a layout item
// ---------------------------------------------------------------
function return_coordinate_X_layoutdata ($id_layoutdata){
require("config.php");
$query1="SELECT pos_x FROM tlayout_data WHERE id = ".$id_layoutdata;
$resq1=mysql_query($query1);
if ($resq1 != 0) {
$rowdup=mysql_fetch_array($resq1);
return ($rowdup[0]);
} else
return (0);
}
// ---------------------------------------------------------------
// Return coordinate X from a layout item
// ---------------------------------------------------------------
function return_coordinate_y_layoutdata ($id_layoutdata){
require("config.php");
$query1="SELECT pos_y FROM tlayout_data WHERE id = ".$id_layoutdata;
$resq1=mysql_query($query1);
if ($resq1 != 0) {
$rowdup=mysql_fetch_array($resq1);
return ($rowdup[0]);
} else
return (0);
}
function return_moduledata_avg_value ($id_agent_module, $period){
require("config.php");
$datelimit = time() - $period; // limit date
$id_agent = give_db_value ("id_agente", "tagente_modulo", "id_agente_modulo", $id_agent_module);
$query1="SELECT AVG(datos) FROM tagente_datos WHERE id_agente = $id_agent AND id_agente_modulo = $id_agent_module AND utimestamp > $datelimit";
$resq1=mysql_query($query1);
if ($resq1 != 0) {
$rowdup=mysql_fetch_array($resq1);
return ($rowdup[0]);
} else
return (0);
}
function return_moduledata_max_value ($id_agent_module, $period){
require("config.php");
$datelimit = time() - $period; // limit date
$id_agent = give_db_value ("id_agente", "tagente_modulo", "id_agente_modulo", $id_agent_module);
$query1="SELECT MAX(datos) FROM tagente_datos WHERE id_agente = $id_agent AND id_agente_modulo = $id_agent_module AND utimestamp > $datelimit";
$resq1=mysql_query($query1);
if ($resq1 != 0) {
$rowdup=mysql_fetch_array($resq1);
return ($rowdup[0]);
} else
return (0);
}
function return_moduledata_min_value ($id_agent_module, $period){
require("config.php");
$datelimit = time() - $period; // limit date
$id_agent = give_db_value ("id_agente", "tagente_modulo", "id_agente_modulo", $id_agent_module);
$query1="SELECT MIN(datos) FROM tagente_datos WHERE id_agente = $id_agent AND id_agente_modulo = $id_agent_module AND utimestamp > $datelimit";
$resq1=mysql_query($query1);
if ($resq1 != 0) {
$rowdup=mysql_fetch_array($resq1);
return ($rowdup[0]);
} else
return (0);
}
?> ?>

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
/* This notice must be untouched at all times. /* This notice must be untouched at all times.
wz_jsgraphics.js v. 2.36 wz_jsgraphics.js v. 3.00
The latest version is available at The latest version is available at
http://www.walterzorn.com http://www.walterzorn.com
or http://www.devira.com or http://www.devira.com
@ -8,7 +8,7 @@ or http://www.walterzorn.de
Copyright (c) 2002-2004 Walter Zorn. All rights reserved. Copyright (c) 2002-2004 Walter Zorn. All rights reserved.
Created 3. 11. 2002 by Walter Zorn (Web: http://www.walterzorn.com ) Created 3. 11. 2002 by Walter Zorn (Web: http://www.walterzorn.com )
Last modified: 21. 6. 2006 Last modified: 4. 2. 2007
Performance optimizations for Internet Explorer Performance optimizations for Internet Explorer
by Thomas Frank and John Holdsworth. by Thomas Frank and John Holdsworth.
@ -18,7 +18,7 @@ High Performance JavaScript Graphics Library.
Provides methods Provides methods
- to draw lines, rectangles, ellipses, polygons - to draw lines, rectangles, ellipses, polygons
with specifiable line thickness, with specifiable line thickness,
- to fill rectangles and ellipses - to fill rectangles, polygons, ellipses and arcs
- to draw text. - to draw text.
NOTE: Operations, functions and branching have rather been optimized NOTE: Operations, functions and branching have rather been optimized
to efficiency and speed than to shortness of source code. to efficiency and speed than to shortness of source code.
@ -42,62 +42,49 @@ or see http://www.gnu.org/copyleft/lesser.html
*/ */
var jg_ihtm, jg_ie, jg_fast, jg_dom, jg_moz, var jg_ok, jg_ie, jg_fast, jg_dom, jg_moz;
jg_n4 = (document.layers && typeof document.classes != "undefined");
function chkDHTM(x, i) function chkDHTM(x, i)
{ {
x = document.body || null; x = document.body || null;
jg_ie = x && typeof x.insertAdjacentHTML != "undefined"; jg_ie = x && typeof x.insertAdjacentHTML != "undefined" && document.createElement;
jg_dom = (x && !jg_ie && jg_dom = (x && !jg_ie &&
typeof x.appendChild != "undefined" && typeof x.appendChild != "undefined" &&
typeof document.createRange != "undefined" && typeof document.createRange != "undefined" &&
typeof (i = document.createRange()).setStartBefore != "undefined" && typeof (i = document.createRange()).setStartBefore != "undefined" &&
typeof i.createContextualFragment != "undefined"); typeof i.createContextualFragment != "undefined");
jg_ihtm = !jg_ie && !jg_dom && x && typeof x.innerHTML != "undefined";
jg_fast = jg_ie && document.all && !window.opera; jg_fast = jg_ie && document.all && !window.opera;
jg_moz = jg_dom && typeof x.style.MozOpacity != "undefined"; jg_moz = jg_dom && typeof x.style.MozOpacity != "undefined";
jg_ok = !!(jg_ie || jg_dom);
} }
function pntDoc()
{
this.wnd.document.write(jg_fast? this.htmRpc() : this.htm);
this.htm = '';
}
function pntCnvDom() function pntCnvDom()
{ {
var x = this.wnd.document.createRange(); var x = this.wnd.document.createRange();
x.setStartBefore(this.cnv); x.setStartBefore(this.cnv);
x = x.createContextualFragment(jg_fast? this.htmRpc() : this.htm); x = x.createContextualFragment(jg_fast? this.htmRpc() : this.htm);
if(this.cnv) this.cnv.appendChild(x); if(this.cnv) this.cnv.appendChild(x);
this.htm = ''; this.htm = "";
} }
function pntCnvIe() function pntCnvIe()
{ {
if(this.cnv) this.cnv.insertAdjacentHTML("BeforeEnd", jg_fast? this.htmRpc() : this.htm); if(this.cnv) this.cnv.insertAdjacentHTML("BeforeEnd", jg_fast? this.htmRpc() : this.htm);
this.htm = ''; this.htm = "";
} }
function pntDoc()
function pntCnvIhtm()
{ {
if(this.cnv) this.cnv.innerHTML += this.htm; this.wnd.document.write(jg_fast? this.htmRpc() : this.htm);
this.htm = ''; this.htm = '';
} }
function pntN()
function pntCnv()
{ {
this.htm = ''; ;
} }
function mkDiv(x, y, w, h) function mkDiv(x, y, w, h)
{ {
this.htm += '<div style="position:absolute;'+ this.htm += '<div style="position:absolute;'+
@ -111,13 +98,11 @@ function mkDiv(x, y, w, h)
';"><\/div>'; ';"><\/div>';
} }
function mkDivIe(x, y, w, h) function mkDivIe(x, y, w, h)
{ {
this.htm += '%%'+this.color+';'+x+';'+y+';'+w+';'+h+';'; this.htm += '%%'+this.color+';'+x+';'+y+';'+w+';'+h+';';
} }
function mkDivPrt(x, y, w, h) function mkDivPrt(x, y, w, h)
{ {
this.htm += '<div style="position:absolute;'+ this.htm += '<div style="position:absolute;'+
@ -132,18 +117,6 @@ function mkDivPrt(x, y, w, h)
';"><\/div>'; ';"><\/div>';
} }
function mkLyr(x, y, w, h)
{
this.htm += '<layer '+
'left="' + x + '" '+
'top="' + y + '" '+
'width="' + w + '" '+
'height="' + h + '" '+
'bgcolor="' + this.color + '"><\/layer>\n';
}
var regex = /%%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);/g; var regex = /%%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);/g;
function htmRpc() function htmRpc()
{ {
@ -153,7 +126,6 @@ function htmRpc()
'$1;left:$2;top:$3;width:$4;height:$5"></div>\n'); '$1;left:$2;top:$3;width:$4;height:$5"></div>\n');
} }
function htmPrtRpc() function htmPrtRpc()
{ {
return this.htm.replace( return this.htm.replace(
@ -162,7 +134,6 @@ function htmPrtRpc()
'$1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n'); '$1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n');
} }
function mkLin(x1, y1, x2, y2) function mkLin(x1, y1, x2, y2)
{ {
if(x1 > x2) if(x1 > x2)
@ -184,8 +155,8 @@ function mkLin(x1, y1, x2, y2)
pru = pr - (dx<<1), pru = pr - (dx<<1),
p = pr-dx, p = pr-dx,
ox = x; ox = x;
while ((dx--) > 0) while(dx > 0)
{ {--dx;
++x; ++x;
if(p > 0) if(p > 0)
{ {
@ -207,8 +178,8 @@ function mkLin(x1, y1, x2, y2)
oy = y; oy = y;
if(y2 <= y1) if(y2 <= y1)
{ {
while ((dy--) > 0) while(dy > 0)
{ {--dy;
if(p > 0) if(p > 0)
{ {
this.mkDiv(x++, y, 1, oy-y+1); this.mkDiv(x++, y, 1, oy-y+1);
@ -226,8 +197,8 @@ function mkLin(x1, y1, x2, y2)
} }
else else
{ {
while ((dy--) > 0) while(dy > 0)
{ {--dy;
y += yIncr; y += yIncr;
if(p > 0) if(p > 0)
{ {
@ -242,7 +213,6 @@ function mkLin(x1, y1, x2, y2)
} }
} }
function mkLin2D(x1, y1, x2, y2) function mkLin2D(x1, y1, x2, y2)
{ {
if(x1 > x2) if(x1 > x2)
@ -273,8 +243,8 @@ function mkLin2D(x1, y1, x2, y2)
pru = pr - (dx<<1), pru = pr - (dx<<1),
p = pr-dx, p = pr-dx,
ox = x; ox = x;
while ((dx--) > 0) while(dx > 0)
{ {--dx;
++x; ++x;
if(p > 0) if(p > 0)
{ {
@ -305,8 +275,8 @@ function mkLin2D(x1, y1, x2, y2)
if(y2 <= y1) if(y2 <= y1)
{ {
++ad; ++ad;
while ((dy--) > 0) while(dy > 0)
{ {--dy;
if(p > 0) if(p > 0)
{ {
this.mkDiv(x++, y, _s, oy-y+ad); this.mkDiv(x++, y, _s, oy-y+ad);
@ -324,8 +294,8 @@ function mkLin2D(x1, y1, x2, y2)
} }
else else
{ {
while ((dy--) > 0) while(dy > 0)
{ {--dy;
y += yIncr; y += yIncr;
if(p > 0) if(p > 0)
{ {
@ -340,7 +310,6 @@ function mkLin2D(x1, y1, x2, y2)
} }
} }
function mkLinDott(x1, y1, x2, y2) function mkLinDott(x1, y1, x2, y2)
{ {
if(x1 > x2) if(x1 > x2)
@ -361,8 +330,8 @@ function mkLinDott(x1, y1, x2, y2)
var pr = dy<<1, var pr = dy<<1,
pru = pr - (dx<<1), pru = pr - (dx<<1),
p = pr-dx; p = pr-dx;
while ((dx--) > 0) while(dx > 0)
{ {--dx;
if(drw) this.mkDiv(x, y, 1, 1); if(drw) this.mkDiv(x, y, 1, 1);
drw = !drw; drw = !drw;
if(p > 0) if(p > 0)
@ -373,16 +342,14 @@ function mkLinDott(x1, y1, x2, y2)
else p += pr; else p += pr;
++x; ++x;
} }
if (drw) this.mkDiv(x, y, 1, 1);
} }
else else
{ {
var pr = dx<<1, var pr = dx<<1,
pru = pr - (dy<<1), pru = pr - (dy<<1),
p = pr-dy; p = pr-dy;
while ((dy--) > 0) while(dy > 0)
{ {--dy;
if(drw) this.mkDiv(x, y, 1, 1); if(drw) this.mkDiv(x, y, 1, 1);
drw = !drw; drw = !drw;
y += yIncr; y += yIncr;
@ -393,84 +360,85 @@ function mkLinDott(x1, y1, x2, y2)
} }
else p += pr; else p += pr;
} }
}
if(drw) this.mkDiv(x, y, 1, 1); if(drw) this.mkDiv(x, y, 1, 1);
} }
}
function mkOv(left, top, width, height) function mkOv(left, top, width, height)
{ {
var a = width>>1, b = height>>1, var a = (++width)>>1, b = (++height)>>1,
wod = width&1, hod = (height&1)+1, wod = width&1, hod = height&1,
cx = left+a, cy = top+b, cx = left+a, cy = top+b,
x = 0, y = b, x = 0, y = b,
ox = 0, oy = b, ox = 0, oy = b,
aa = (a*a)<<1, bb = (b*b)<<1, aa2 = (a*a)<<1, aa4 = aa2<<1, bb2 = (b*b)<<1, bb4 = bb2<<1,
st = (aa>>1)*(1-(b<<1)) + bb, st = (aa2>>1)*(1-(b<<1)) + bb2,
tt = (bb>>1) - aa*((b<<1)-1), tt = (bb2>>1) - aa2*((b<<1)-1),
w, h; w, h;
while(y > 0) while(y > 0)
{ {
if(st < 0) if(st < 0)
{ {
st += bb*((x<<1)+3); st += bb2*((x<<1)+3);
tt += (bb<<1)*(++x); tt += bb4*(++x);
} }
else if(tt < 0) else if(tt < 0)
{ {
st += bb*((x<<1)+3) - (aa<<1)*(y-1); st += bb2*((x<<1)+3) - aa4*(y-1);
tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3); tt += bb4*(++x) - aa2*(((y--)<<1)-3);
w = x-ox; w = x-ox;
h = oy-y; h = oy-y;
if (w&2 && h&2) if((w&2) && (h&2))
{ {
this.mkOvQds(cx, cy, -x+2, ox+wod, -oy, oy-1+hod, 1, 1); this.mkOvQds(cx, cy, x-2, y+2, 1, 1, wod, hod);
this.mkOvQds(cx, cy, -x+1, x-1+wod, -y-1, y+hod, 1, 1); this.mkOvQds(cx, cy, x-1, y+1, 1, 1, wod, hod);
} }
else this.mkOvQds(cx, cy, -x+1, ox+wod, -oy, oy-h+hod, w, h); else this.mkOvQds(cx, cy, x-1, oy, w, h, wod, hod);
ox = x; ox = x;
oy = y; oy = y;
} }
else else
{ {
tt -= aa*((y<<1)-3); tt -= aa2*((y<<1)-3);
st -= (aa<<1)*(--y); st -= aa4*(--y);
} }
} }
this.mkDiv(cx-a, cy-oy, a-ox+1, (oy<<1)+hod); w = a-ox+1;
this.mkDiv(cx+ox+wod, cy-oy, a-ox+1, (oy<<1)+hod); h = (oy<<1)+hod;
y = cy-oy;
this.mkDiv(cx-a, y, w, h);
this.mkDiv(cx+ox+wod-1, y, w, h);
} }
function mkOv2D(left, top, width, height) function mkOv2D(left, top, width, height)
{ {
var s = this.stroke; var s = this.stroke;
width += s-1; width += s+1;
height += s-1; height += s+1;
var a = width>>1, b = height>>1, var a = width>>1, b = height>>1,
wod = width&1, hod = (height&1)+1, wod = width&1, hod = height&1,
cx = left+a, cy = top+b, cx = left+a, cy = top+b,
x = 0, y = b, x = 0, y = b,
aa = (a*a)<<1, bb = (b*b)<<1, aa2 = (a*a)<<1, aa4 = aa2<<1, bb2 = (b*b)<<1, bb4 = bb2<<1,
st = (aa>>1)*(1-(b<<1)) + bb, st = (aa2>>1)*(1-(b<<1)) + bb2,
tt = (bb>>1) - aa*((b<<1)-1); tt = (bb2>>1) - aa2*((b<<1)-1);
if(s-4 < 0 && (!(s-2) || width-51 > 0 && height-51 > 0)) if(s-4 < 0 && (!(s-2) || width-51 > 0 && height-51 > 0))
{ {
var ox = 0, oy = b, var ox = 0, oy = b,
w, h, w, h,
pxl, pxr, pxt, pxb, pxw; pxw;
while(y > 0) while(y > 0)
{ {
if(st < 0) if(st < 0)
{ {
st += bb*((x<<1)+3); st += bb2*((x<<1)+3);
tt += (bb<<1)*(++x); tt += bb4*(++x);
} }
else if(tt < 0) else if(tt < 0)
{ {
st += bb*((x<<1)+3) - (aa<<1)*(y-1); st += bb2*((x<<1)+3) - aa4*(y-1);
tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3); tt += bb4*(++x) - aa2*(((y--)<<1)-3);
w = x-ox; w = x-ox;
h = oy-y; h = oy-y;
@ -485,28 +453,28 @@ function mkOv2D(left, top, width, height)
h += 1+(s&1); h += 1+(s&1);
} }
else pxw = h = s; else pxw = h = s;
this.mkOvQds(cx, cy, -x+1, ox-pxw+w+wod, -oy, -h+oy+hod, pxw, h); this.mkOvQds(cx, cy, x-1, oy, pxw, h, wod, hod);
ox = x; ox = x;
oy = y; oy = y;
} }
else else
{ {
tt -= aa*((y<<1)-3); tt -= aa2*((y<<1)-3);
st -= (aa<<1)*(--y); st -= aa4*(--y);
} }
} }
this.mkDiv(cx-a, cy-oy, s, (oy<<1)+hod); this.mkDiv(cx-a, cy-oy, s, (oy<<1)+hod);
this.mkDiv(cx+a+wod-s+1, cy-oy, s, (oy<<1)+hod); this.mkDiv(cx+a+wod-s, cy-oy, s, (oy<<1)+hod);
} }
else else
{ {
var _a = (width-((s-1)<<1))>>1, var _a = (width-(s<<1))>>1,
_b = (height-((s-1)<<1))>>1, _b = (height-(s<<1))>>1,
_x = 0, _y = _b, _x = 0, _y = _b,
_aa = (_a*_a)<<1, _bb = (_b*_b)<<1, _aa2 = (_a*_a)<<1, _aa4 = _aa2<<1, _bb2 = (_b*_b)<<1, _bb4 = _bb2<<1,
_st = (_aa>>1)*(1-(_b<<1)) + _bb, _st = (_aa2>>1)*(1-(_b<<1)) + _bb2,
_tt = (_bb>>1) - _aa*((_b<<1)-1), _tt = (_bb2>>1) - _aa2*((_b<<1)-1),
pxl = new Array(), pxl = new Array(),
pxt = new Array(), pxt = new Array(),
@ -518,48 +486,48 @@ function mkOv2D(left, top, width, height)
{ {
if(st < 0) if(st < 0)
{ {
st += bb*((x<<1)+3);
tt += (bb<<1)*(++x);
pxl[pxl.length] = x; pxl[pxl.length] = x;
pxt[pxt.length] = y; pxt[pxt.length] = y;
st += bb2*((x<<1)+3);
tt += bb4*(++x);
} }
else if(tt < 0) else if(tt < 0)
{ {
st += bb*((x<<1)+3) - (aa<<1)*(y-1);
tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);
pxl[pxl.length] = x; pxl[pxl.length] = x;
st += bb2*((x<<1)+3) - aa4*(y-1);
tt += bb4*(++x) - aa2*(((y--)<<1)-3);
pxt[pxt.length] = y; pxt[pxt.length] = y;
} }
else else
{ {
tt -= aa*((y<<1)-3); tt -= aa2*((y<<1)-3);
st -= (aa<<1)*(--y); st -= aa4*(--y);
} }
if(_y > 0) if(_y > 0)
{ {
if(_st < 0) if(_st < 0)
{ {
_st += _bb*((_x<<1)+3); _st += _bb2*((_x<<1)+3);
_tt += (_bb<<1)*(++_x); _tt += _bb4*(++_x);
_pxb[_pxb.length] = _y-1; _pxb[_pxb.length] = _y-1;
} }
else if(_tt < 0) else if(_tt < 0)
{ {
_st += _bb*((_x<<1)+3) - (_aa<<1)*(_y-1); _st += _bb2*((_x<<1)+3) - _aa4*(_y-1);
_tt += (_bb<<1)*(++_x) - _aa*(((_y--)<<1)-3); _tt += _bb4*(++_x) - _aa2*(((_y--)<<1)-3);
_pxb[_pxb.length] = _y-1; _pxb[_pxb.length] = _y-1;
} }
else else
{ {
_tt -= _aa*((_y<<1)-3); _tt -= _aa2*((_y<<1)-3);
_st -= (_aa<<1)*(--_y); _st -= _aa4*(--_y);
_pxb[_pxb.length-1]--; _pxb[_pxb.length-1]--;
} }
} }
} }
var ox = 0, oy = b, var ox = -wod, oy = b,
_oy = _pxb[0], _oy = _pxb[0],
l = pxl.length, l = pxl.length,
w, h; w, h;
@ -570,7 +538,7 @@ function mkOv2D(left, top, width, height)
if(_pxb[i] < _oy || pxt[i] < oy) if(_pxb[i] < _oy || pxt[i] < oy)
{ {
x = pxl[i]; x = pxl[i];
this.mkOvQds(cx, cy, -x+1, ox+wod, -oy, _oy+hod, x-ox, oy-_oy); this.mkOvQds(cx, cy, x, oy, x-ox, oy-_oy, wod, hod);
ox = x; ox = x;
oy = pxt[i]; oy = pxt[i];
_oy = _pxb[i]; _oy = _pxb[i];
@ -579,7 +547,7 @@ function mkOv2D(left, top, width, height)
else else
{ {
x = pxl[i]; x = pxl[i];
this.mkDiv(cx-x+1, cy-oy, 1, (oy<<1)+hod); this.mkDiv(cx-x, cy-oy, 1, (oy<<1)+hod);
this.mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod); this.mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod);
ox = x; ox = x;
oy = pxt[i]; oy = pxt[i];
@ -590,40 +558,38 @@ function mkOv2D(left, top, width, height)
} }
} }
function mkOvDott(left, top, width, height) function mkOvDott(left, top, width, height)
{ {
var a = width>>1, b = height>>1, var a = (++width)>>1, b = (++height)>>1,
wod = width&1, hod = height&1, wod = width&1, hod = height&1, hodu = hod^1,
cx = left+a, cy = top+b, cx = left+a, cy = top+b,
x = 0, y = b, x = 0, y = b,
aa2 = (a*a)<<1, aa4 = aa2<<1, bb = (b*b)<<1, aa2 = (a*a)<<1, aa4 = aa2<<1, bb2 = (b*b)<<1, bb4 = bb2<<1,
st = (aa2>>1)*(1-(b<<1)) + bb, st = (aa2>>1)*(1-(b<<1)) + bb2,
tt = (bb>>1) - aa2*((b<<1)-1), tt = (bb2>>1) - aa2*((b<<1)-1),
drw = true; drw = true;
while(y > 0) while(y > 0)
{ {
if(st < 0) if(st < 0)
{ {
st += bb*((x<<1)+3); st += bb2*((x<<1)+3);
tt += (bb<<1)*(++x); tt += bb4*(++x);
} }
else if(tt < 0) else if(tt < 0)
{ {
st += bb*((x<<1)+3) - aa4*(y-1); st += bb2*((x<<1)+3) - aa4*(y-1);
tt += (bb<<1)*(++x) - aa2*(((y--)<<1)-3); tt += bb4*(++x) - aa2*(((y--)<<1)-3);
} }
else else
{ {
tt -= aa2*((y<<1)-3); tt -= aa2*((y<<1)-3);
st -= aa4*(--y); st -= aa4*(--y);
} }
if (drw) this.mkOvQds(cx, cy, -x, x+wod, -y, y+hod, 1, 1); if(drw && y >= hodu) this.mkOvQds(cx, cy, x, y, 1, 1, wod, hod);
drw = !drw; drw = !drw;
} }
} }
function mkRect(x, y, w, h) function mkRect(x, y, w, h)
{ {
var s = this.stroke; var s = this.stroke;
@ -633,7 +599,6 @@ function mkRect(x, y, w, h)
this.mkDiv(x, y+s, s, h-s); this.mkDiv(x, y+s, s, h-s);
} }
function mkRectDott(x, y, w, h) function mkRectDott(x, y, w, h)
{ {
this.drawLine(x, y, x+w, y); this.drawLine(x, y, x+w, y);
@ -642,7 +607,6 @@ function mkRectDott(x, y, w, h)
this.drawLine(x, y, x, y+h); this.drawLine(x, y, x, y+h);
} }
function jsgFont() function jsgFont()
{ {
this.PLAIN = 'font-weight:normal;'; this.PLAIN = 'font-weight:normal;';
@ -653,15 +617,13 @@ function jsgFont()
} }
var Font = new jsgFont(); var Font = new jsgFont();
function jsgStroke() function jsgStroke()
{ {
this.DOTTED = -1; this.DOTTED = -1;
} }
var Stroke = new jsgStroke(); var Stroke = new jsgStroke();
function jsGraphics(cnv, wnd)
function jsGraphics(id, wnd)
{ {
this.setColor = new Function('arg', 'this.color = arg.toLowerCase();'); this.setColor = new Function('arg', 'this.color = arg.toLowerCase();');
@ -688,7 +650,6 @@ function jsGraphics(id, wnd)
} }
}; };
this.setPrintable = function(arg) this.setPrintable = function(arg)
{ {
this.printable = arg; this.printable = arg;
@ -697,10 +658,9 @@ function jsGraphics(id, wnd)
this.mkDiv = mkDivIe; this.mkDiv = mkDivIe;
this.htmRpc = arg? htmPrtRpc : htmRpc; this.htmRpc = arg? htmPrtRpc : htmRpc;
} }
else this.mkDiv = jg_n4? mkLyr : arg? mkDivPrt : mkDiv; else this.mkDiv = arg? mkDivPrt : mkDiv;
}; };
this.setFont = function(fam, sz, sty) this.setFont = function(fam, sz, sty)
{ {
this.ftFam = fam; this.ftFam = fam;
@ -708,61 +668,56 @@ function jsGraphics(id, wnd)
this.ftSty = sty || Font.PLAIN; this.ftSty = sty || Font.PLAIN;
}; };
this.drawPolyline = this.drawPolyLine = function(x, y)
this.drawPolyline = this.drawPolyLine = function(x, y, s)
{ {
for (var i=0 ; i<x.length-1 ; i++ ) for (var i=x.length - 1; i;)
{--i;
this.drawLine(x[i], y[i], x[i+1], y[i+1]); this.drawLine(x[i], y[i], x[i+1], y[i+1]);
}
}; };
this.fillRect = function(x, y, w, h) this.fillRect = function(x, y, w, h)
{ {
this.mkDiv(x, y, w, h); this.mkDiv(x, y, w, h);
}; };
this.drawPolygon = function(x, y) this.drawPolygon = function(x, y)
{ {
this.drawPolyline(x, y); this.drawPolyline(x, y);
this.drawLine(x[x.length-1], y[x.length-1], x[0], y[0]); this.drawLine(x[x.length-1], y[x.length-1], x[0], y[0]);
}; };
this.drawEllipse = this.drawOval = function(x, y, w, h) this.drawEllipse = this.drawOval = function(x, y, w, h)
{ {
this.mkOv(x, y, w, h); this.mkOv(x, y, w, h);
}; };
this.fillEllipse = this.fillOval = function(left, top, w, h) this.fillEllipse = this.fillOval = function(left, top, w, h)
{ {
var a = (w -= 1)>>1, b = (h -= 1)>>1, var a = w>>1, b = h>>1,
wod = (w&1)+1, hod = (h&1)+1, wod = w&1, hod = h&1,
cx = left+a, cy = top+b, cx = left+a, cy = top+b,
x = 0, y = b, x = 0, y = b, oy = b,
ox = 0, oy = b, aa2 = (a*a)<<1, aa4 = aa2<<1, bb2 = (b*b)<<1, bb4 = bb2<<1,
aa2 = (a*a)<<1, aa4 = aa2<<1, bb = (b*b)<<1, st = (aa2>>1)*(1-(b<<1)) + bb2,
st = (aa2>>1)*(1-(b<<1)) + bb, tt = (bb2>>1) - aa2*((b<<1)-1),
tt = (bb>>1) - aa2*((b<<1)-1), xl, dw, dh;
pxl, dw, dh; if(w) while(y > 0)
if (w+1) while (y > 0)
{ {
if(st < 0) if(st < 0)
{ {
st += bb*((x<<1)+3); st += bb2*((x<<1)+3);
tt += (bb<<1)*(++x); tt += bb4*(++x);
} }
else if(tt < 0) else if(tt < 0)
{ {
st += bb*((x<<1)+3) - aa4*(y-1); st += bb2*((x<<1)+3) - aa4*(y-1);
pxl = cx-x; xl = cx-x;
dw = (x<<1)+wod; dw = (x<<1)+wod;
tt += (bb<<1)*(++x) - aa2*(((y--)<<1)-3); tt += bb4*(++x) - aa2*(((y--)<<1)-3);
dh = oy-y; dh = oy-y;
this.mkDiv(pxl, cy-oy, dw, dh); this.mkDiv(xl, cy-oy, dw, dh);
this.mkDiv(pxl, cy+y+hod, dw, dh); this.mkDiv(xl, cy+y+hod, dw, dh);
ox = x;
oy = y; oy = y;
} }
else else
@ -771,9 +726,74 @@ function jsGraphics(id, wnd)
st -= aa4*(--y); st -= aa4*(--y);
} }
} }
this.mkDiv(cx-a, cy-oy, w+1, (oy<<1)+hod); this.mkDiv(cx-a, cy-oy, w, (oy<<1)+hod);
}; };
this.fillArc = function(iL, iT, iW, iH, fAngA, fAngZ)
{
var a = iW>>1, b = iH>>1,
iOdds = (iW&1) | ((iH&1) << 16),
cx = iL+a, cy = iT+b,
x = 0, y = b, ox = x, oy = y,
aa2 = (a*a)<<1, aa4 = aa2<<1, bb2 = (b*b)<<1, bb4 = bb2<<1,
st = (aa2>>1)*(1-(b<<1)) + bb2,
tt = (bb2>>1) - aa2*((b<<1)-1),
// Vars for radial boundary lines
xEndA, yEndA, xEndZ, yEndZ,
iSects = (1 << (Math.floor((fAngA %= 360.0)/180.0) << 3))
| (2 << (Math.floor((fAngZ %= 360.0)/180.0) << 3))
| ((fAngA >= fAngZ) << 16),
aBndA = new Array(b+1), aBndZ = new Array(b+1);
// Set up radial boundary lines
fAngA *= Math.PI/180.0;
fAngZ *= Math.PI/180.0;
xEndA = cx+Math.round(a*Math.cos(fAngA));
yEndA = cy+Math.round(-b*Math.sin(fAngA));
aBndA.mkLinVirt(cx, cy, xEndA, yEndA);
xEndZ = cx+Math.round(a*Math.cos(fAngZ));
yEndZ = cy+Math.round(-b*Math.sin(fAngZ));
aBndZ.mkLinVirt(cx, cy, xEndZ, yEndZ);
while(y > 0)
{
if(st < 0) // Advance x
{
st += bb2*((x<<1)+3);
tt += bb4*(++x);
}
else if(tt < 0) // Advance x and y
{
st += bb2*((x<<1)+3) - aa4*(y-1);
ox = x;
tt += bb4*(++x) - aa2*(((y--)<<1)-3);
this.mkArcDiv(ox, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects);
oy = y;
}
else // Advance y
{
tt -= aa2*((y<<1)-3);
st -= aa4*(--y);
if(y && (aBndA[y] != aBndA[y-1] || aBndZ[y] != aBndZ[y-1]))
{
this.mkArcDiv(x, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects);
ox = x;
oy = y;
}
}
}
this.mkArcDiv(x, 0, oy, cx, cy, iOdds, aBndA, aBndZ, iSects);
if(iOdds >> 16) // Odd height
{
if(iSects >> 16) // Start-angle > end-angle
{
var xl = (yEndA <= cy || yEndZ > cy)? (cx - x) : cx;
this.mkDiv(xl, cy, x + cx - xl + (iOdds & 0xffff), 1);
}
else if((iSects & 0x01) && yEndZ > cy)
this.mkDiv(cx - x, cy, x, 1);
}
};
/* fillPolygon method, implemented by Matthieu Haller. /* fillPolygon method, implemented by Matthieu Haller.
This javascript function is an adaptation of the gdImageFilledPolygon for Walter Zorn lib. This javascript function is an adaptation of the gdImageFilledPolygon for Walter Zorn lib.
@ -796,10 +816,8 @@ interior_extrema. */
var ints; var ints;
var n = array_x.length; var n = array_x.length;
if(!n) return; if(!n) return;
miny = array_y[0]; miny = array_y[0];
maxy = array_y[0]; maxy = array_y[0];
for(i = 1; i < n; i++) for(i = 1; i < n; i++)
@ -842,20 +860,19 @@ interior_extrema. */
} }
else continue; else continue;
// modified 11. 2. 2004 Walter Zorn // Modified 11. 2. 2004 Walter Zorn
if((y >= y1) && (y < y2)) if((y >= y1) && (y < y2))
polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1); polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);
else if((y == maxy) && (y > y1) && (y <= y2)) else if((y == maxy) && (y > y1) && (y <= y2))
polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1); polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);
} }
polyInts.sort(integer_compare); polyInts.sort(CompInt);
for(i = 0; i < ints; i+=2) for(i = 0; i < ints; i+=2)
this.mkDiv(polyInts[i], y, polyInts[i+1]-polyInts[i]+1, 1); this.mkDiv(polyInts[i], y, polyInts[i+1]-polyInts[i]+1, 1);
} }
}; };
this.drawString = function(txt, x, y) this.drawString = function(txt, x, y)
{ {
this.htm += '<div style="position:absolute;white-space:nowrap;'+ this.htm += '<div style="position:absolute;white-space:nowrap;'+
@ -868,7 +885,6 @@ interior_extrema. */
'<\/div>'; '<\/div>';
}; };
/* drawStringRect() added by Rick Blommers. /* drawStringRect() added by Rick Blommers.
Allows to specify the size of the text rectangle and to align the Allows to specify the size of the text rectangle and to align the
text both horizontally (e.g. right) and vertically within that rectangle */ text both horizontally (e.g. right) and vertically within that rectangle */
@ -886,7 +902,6 @@ text both horizontally (e.g. right) and vertically within that rectangle */
'<\/div>'; '<\/div>';
}; };
this.drawImage = function(imgSrc, x, y, w, h, a) this.drawImage = function(imgSrc, x, y, w, h, a)
{ {
this.htm += '<div style="position:absolute;'+ this.htm += '<div style="position:absolute;'+
@ -898,46 +913,189 @@ text both horizontally (e.g. right) and vertically within that rectangle */
'<\/div>'; '<\/div>';
}; };
this.clear = function() this.clear = function()
{ {
this.htm = ""; this.htm = "";
if (this.cnv) this.cnv.innerHTML = this.defhtm; if(this.cnv) this.cnv.innerHTML = "";
}; };
this.mkOvQds = function(cx, cy, x, y, w, h, wod, hod)
this.mkOvQds = function(cx, cy, xl, xr, yt, yb, w, h)
{ {
this.mkDiv(xr+cx, yt+cy, w, h); var xl = cx - x, xr = cx + x + wod - w, yt = cy - y, yb = cy + y + hod - h;
this.mkDiv(xr+cx, yb+cy, w, h); if(xr > xl+w)
this.mkDiv(xl+cx, yb+cy, w, h); {
this.mkDiv(xl+cx, yt+cy, w, h); this.mkDiv(xr, yt, w, h);
this.mkDiv(xr, yb, w, h);
}
else
w = xr - xl + w;
this.mkDiv(xl, yt, w, h);
this.mkDiv(xl, yb, w, h);
};
this.mkArcDiv = function(x, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects)
{
var xrDef = cx + x + (iOdds & 0xffff), y2, h = oy - y, xl, xr, w;
if(!h) h = 1;
x = cx - x;
if(iSects & 0xff0000) // Start-angle > end-angle
{
y2 = cy - y - h;
if(iSects & 0x00ff)
{
if(iSects & 0x02)
{
xl = Math.max(x, aBndZ[y]);
w = xrDef - xl;
if(w > 0) this.mkDiv(xl, y2, w, h);
}
if(iSects & 0x01)
{
xr = Math.min(xrDef, aBndA[y]);
w = xr - x;
if(w > 0) this.mkDiv(x, y2, w, h);
}
}
else
this.mkDiv(x, y2, xrDef - x, h);
y2 = cy + y + (iOdds >> 16);
if(iSects & 0xff00)
{
if(iSects & 0x0100)
{
xl = Math.max(x, aBndA[y]);
w = xrDef - xl;
if(w > 0) this.mkDiv(xl, y2, w, h);
}
if(iSects & 0x0200)
{
xr = Math.min(xrDef, aBndZ[y]);
w = xr - x;
if(w > 0) this.mkDiv(x, y2, w, h);
}
}
else
this.mkDiv(x, y2, xrDef - x, h);
}
else
{
if(iSects & 0x00ff)
{
if(iSects & 0x02)
xl = Math.max(x, aBndZ[y]);
else
xl = x;
if(iSects & 0x01)
xr = Math.min(xrDef, aBndA[y]);
else
xr = xrDef;
y2 = cy - y - h;
w = xr - xl;
if(w > 0) this.mkDiv(xl, y2, w, h);
}
if(iSects & 0xff00)
{
if(iSects & 0x0100)
xl = Math.max(x, aBndA[y]);
else
xl = x;
if(iSects & 0x0200)
xr = Math.min(xrDef, aBndZ[y]);
else
xr = xrDef;
y2 = cy + y + (iOdds >> 16);
w = xr - xl;
if(w > 0) this.mkDiv(xl, y2, w, h);
}
}
}; };
this.setStroke(1); this.setStroke(1);
this.setFont('verdana,geneva,helvetica,sans-serif', String.fromCharCode(0x31, 0x32, 0x70, 0x78), Font.PLAIN); this.setFont("verdana,geneva,helvetica,sans-serif", "12px", Font.PLAIN);
this.color = '#000000'; this.color = "#000000";
this.htm = ''; this.htm = "";
this.wnd = wnd || window; this.wnd = wnd || window;
if (!(jg_ie || jg_dom || jg_ihtm)) chkDHTM(); if(!jg_ok) chkDHTM();
if (typeof id != 'string' || !id) this.paint = pntDoc; if(jg_ok)
else
{ {
this.cnv = document.all? (this.wnd.document.all[id] || null) if(cnv)
: document.getElementById? (this.wnd.document.getElementById(id) || null) {
if(typeof(cnv) == "string")
this.cont = document.all? (this.wnd.document.all[cnv] || null)
: document.getElementById? (this.wnd.document.getElementById(cnv) || null)
: null; : null;
this.defhtm = (this.cnv && this.cnv.innerHTML)? this.cnv.innerHTML : ''; else if(cnv == window.document)
this.paint = jg_dom? pntCnvDom : jg_ie? pntCnvIe : jg_ihtm? pntCnvIhtm : pntCnv; this.cont = document.getElementsByTagName("body")[0];
// If cnv is a direct reference to a canvas DOM node
// (option suggested by Andreas Luleich)
else this.cont = cnv;
// Create new canvas inside container DIV. Thus the drawing and clearing
// methods won't interfere with the container's inner html.
// Solution suggested by Vladimir.
this.cnv = document.createElement("div");
this.cont.appendChild(this.cnv);
this.paint = jg_dom? pntCnvDom : pntCnvIe;
} }
else
this.paint = pntDoc;
}
else
this.paint = pntN;
this.setPrintable(false); this.setPrintable(false);
} }
Array.prototype.mkLinVirt = function(x1, y1, x2, y2)
function integer_compare(x,y)
{ {
return (x < y) ? -1 : ((x > y)*1); var dx = Math.abs(x2-x1), dy = Math.abs(y2-y1),
x = x1, y = y1,
xIncr = (x1 > x2)? -1 : 1,
yIncr = (y1 > y2)? -1 : 1,
p,
i = 0;
if(dx >= dy)
{
var pr = dy<<1,
pru = pr - (dx<<1);
p = pr-dx;
while(dx > 0)
{--dx;
if(p > 0) // Increment y
{
this[i++] = x;
y += yIncr;
p += pru;
}
else p += pr;
x += xIncr;
}
}
else
{
var pr = dx<<1,
pru = pr - (dy<<1);
p = pr-dy;
while(dy > 0)
{--dy;
y += yIncr;
this[i++] = x;
if(p > 0) // Increment x
{
x += xIncr;
p += pru;
}
else p += pr;
}
}
for(var len = this.length, i = len-i; i;)
this[len-(i--)] = x;
};
function CompInt(x, y)
{
return(x - y);
} }

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
/* x_event.js compiled from X 4.0 with XC 0.27b. Distributed by GNU LGPL. For copyrights, license, documentation and more visit Cross-Browser.com */
function xAddEventListener(e,eT,eL,cap){if(!(e=xGetElementById(e))) return;eT=eT.toLowerCase();if((!xIE4Up && !xOp7Up) && e==window) {if(eT=='resize') { window.xPCW=xClientWidth(); window.xPCH=xClientHeight(); window.xREL=eL; xResizeEvent(); return; }if(eT=='scroll') { window.xPSL=xScrollLeft(); window.xPST=xScrollTop(); window.xSEL=eL; xScrollEvent(); return; }}var eh='e.on'+eT+'=eL';if(e.addEventListener) e.addEventListener(eT,eL,cap);else if(e.attachEvent) e.attachEvent('on'+eT,eL);else eval(eh);}function xResizeEvent(){if (window.xREL) setTimeout('xResizeEvent()', 250);var cw = xClientWidth(), ch = xClientHeight();if (window.xPCW != cw || window.xPCH != ch) { window.xPCW = cw; window.xPCH = ch; if (window.xREL) window.xREL(); }}function xScrollEvent(){if (window.xSEL) setTimeout('xScrollEvent()', 250);var sl = xScrollLeft(), st = xScrollTop();if (window.xPSL != sl || window.xPST != st) { window.xPSL = sl; window.xPST = st; if (window.xSEL) window.xSEL(); }}function xEvent(evt) {var e = evt || window.event;if(!e) return;if(e.type) this.type = e.type;if(e.target) this.target = e.target;else if(e.srcElement) this.target = e.srcElement;if (e.relatedTarget) this.relatedTarget = e.relatedTarget;else if (e.type == 'mouseover' && e.fromElement) this.relatedTarget = e.fromElement;else if (e.type == 'mouseout') this.relatedTarget = e.toElement;if(xOp6Dn) { this.pageX = e.clientX; this.pageY = e.clientY; }else if(xDef(e.pageX,e.pageY)) { this.pageX = e.pageX; this.pageY = e.pageY; }else if(xDef(e.clientX,e.clientY)) { this.pageX = e.clientX + xScrollLeft(); this.pageY = e.clientY + xScrollTop(); }if (xDef(e.offsetX,e.offsetY)) {this.offsetX = e.offsetX;this.offsetY = e.offsetY;}else if (xDef(e.layerX,e.layerY)) {this.offsetX = e.layerX;this.offsetY = e.layerY;}else {this.offsetX = this.pageX - xPageX(this.target);this.offsetY = this.pageY - xPageY(this.target);}if (e.keyCode) { this.keyCode = e.keyCode; } else if (xDef(e.which) && e.type.indexOf('key')!=-1) { this.keyCode = e.which; }this.shiftKey = e.shiftKey;this.ctrlKey = e.ctrlKey;this.altKey = e.altKey;}function xPreventDefault(e){if (e && e.preventDefault) e.preventDefault();else if (window.event) window.event.returnValue = false;}function xRemoveEventListener(e,eT,eL,cap){if(!(e=xGetElementById(e))) return;eT=eT.toLowerCase();if((!xIE4Up && !xOp7Up) && e==window) {if(eT=='resize') { window.xREL=null; return; }if(eT=='scroll') { window.xSEL=null; return; }}var eh='e.on'+eT+'=null';if(e.removeEventListener) e.removeEventListener(eT,eL,cap);else if(e.detachEvent) e.detachEvent('on'+eT,eL);else eval(eh);}function xStopPropagation(evt){if (evt && evt.stopPropagation) evt.stopPropagation();else if (window.event) window.event.cancelBubble = true;}

View File

@ -0,0 +1,2 @@
/* x_slide.js compiled from X 4.0 with XC 0.27b. Distributed by GNU LGPL. For copyrights, license, documentation and more visit Cross-Browser.com */
function xSlideTo(e, x, y, uTime){if (!(e=xGetElementById(e))) return;if (!e.timeout) e.timeout = 25;e.xTarget = x; e.yTarget = y; e.slideTime = uTime; e.stop = false;e.yA = e.yTarget - xTop(e); e.xA = e.xTarget - xLeft(e); if (e.slideLinear) e.B = 1/e.slideTime;else e.B = Math.PI / (2 * e.slideTime); e.yD = xTop(e); e.xD = xLeft(e); var d = new Date(); e.C = d.getTime();if (!e.moving) _xSlideTo(e);}function _xSlideTo(e){if (!(e=xGetElementById(e))) return;var now, s, t, newY, newX;now = new Date();t = now.getTime() - e.C;if (e.stop) { e.moving = false; }else if (t < e.slideTime) {setTimeout("_xSlideTo('"+e.id+"')", e.timeout);if (e.slideLinear) s = e.B * t;else s = Math.sin(e.B * t);newX = Math.round(e.xA * s + e.xD);newY = Math.round(e.yA * s + e.yD);xMoveTo(e, newX, newY);e.moving = true;} else {xMoveTo(e, e.xTarget, e.yTarget);e.moving = false;} }

View File

@ -5,10 +5,8 @@
// Main PHP/SQL code development and project architecture and management // Main PHP/SQL code development and project architecture and management
// Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com // Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com
// CSS and some PHP additions // CSS and some PHP additions
// Copyright (c) 2006-2007 Jonathan Barajas, jonathan.barajas[AT]gmail[DOT]com
// Javascript Active Console code.
// Copyright (c) 2006 Jose Navarro <contacto@indiseg.net> // Copyright (c) 2006 Jose Navarro <contacto@indiseg.net>
// Additions to Pandora FMS 1.2 graph code and new XML reporting template management // Additions to Pandora FMS 1.2 graph code
// Copyright (c) 2005-2007 Artica Soluciones Tecnologicas, info@artica.es // Copyright (c) 2005-2007 Artica Soluciones Tecnologicas, info@artica.es
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
@ -21,6 +19,7 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software // along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
$lang_label["view_agents"]="View Agents"; $lang_label["view_agents"]="View Agents";
$lang_label["manage_incidents"]="Manage Incidents"; $lang_label["manage_incidents"]="Manage Incidents";
$lang_label["view_users"]= "View Users"; $lang_label["view_users"]= "View Users";
@ -660,7 +659,6 @@ $lang_label["no_monitors_g"]="This group doesn't have any monitor";
$lang_label["reporting"]="Reporting"; $lang_label["reporting"]="Reporting";
$lang_label["agent_general_reporting"]="Agent overview"; $lang_label["agent_general_reporting"]="Agent overview";
$lang_label["active_console"]="Active console";
$lang_label["validate_event_failed"]="Event validation failed"; $lang_label["validate_event_failed"]="Event validation failed";
$lang_label["load"]="Load"; $lang_label["load"]="Load";
$lang_label["information"]="General information"; $lang_label["information"]="General information";
@ -783,6 +781,16 @@ $lang_label["friday"]="Friday";
$lang_label["saturday"]="Saturday"; $lang_label["saturday"]="Saturday";
$lang_label["hr"]="Hr"; $lang_label["hr"]="Hr";
$lang_label["get_file"]="Download file"; $lang_label["get_file"]="Download file";
// 19 May
$lang_label["visual_console"]="Visual console";
$lang_label["elements"]="Elements";
$lang_label["minutes"]="minutes";
$lang_label["avg_only"]="Avg.Only";
$lang_label["avg_value"]="Avg. Value";
$lang_label["auto_refresh_time"]="Autorefresh time";
$lang_label["refresh"]="Refresh";
global $lang_label; global $lang_label;
global $help_label; global $help_label;
?> ?>

View File

@ -313,7 +313,7 @@ td.datos_jus, td.datos2_jus {
text-align: center; text-align: center;
} }
.f9, .f9i, .f9b, td.f9, td.f9i, td.datosf9, td.datos2f9 { .f9, .f9i, .f9b, td.f9, td.f9i, td.datosf9, td.datos2f9 {
font-size: 9px; font-size: 8px;
} }
.f9i, .redi { .f9i, .redi {
font-style: italic; font-style: italic;
@ -548,6 +548,7 @@ span.master, span.snmp, span.binary, span.recon {
} }
.databox_color { .databox_color {
border-left: 4px solid #778855; border-left: 4px solid #778855;
} }
#head_l { #head_l {
float: left; float: left;

View File

@ -70,15 +70,20 @@ require "include/functions_db.php";
<head> <head>
<?php <?php
// Refresh page // Refresh page
if (isset ($_GET["refr"])){ if ( (isset ($_GET["refr"])) || (isset($_POST["refr"])) ){
if (isset ($_GET["refr"]))
$intervalo = entrada_limpia ($_GET["refr"]); $intervalo = entrada_limpia ($_GET["refr"]);
if (isset ($_POST["refr"]))
$intervalo = entrada_limpia ($_POST["refr"]);
if ($intervalo > 0){
// Agent selection filters and refresh // Agent selection filters and refresh
$query = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . '&refr=' . $intervalo;
if (isset ($_POST["ag_group"])) { if (isset ($_POST["ag_group"])) {
$ag_group = $_POST["ag_group"]; $ag_group = $_POST["ag_group"];
$query = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . '&ag_group_refresh=' . $ag_group; $query = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . '&ag_group_refresh=' . $ag_group;
echo '<meta http-equiv="refresh" content="' . $intervalo . '; URL=' . $query . '">';
} else } else
echo '<meta http-equiv="refresh" content="' . $intervalo . '">'; echo '<meta http-equiv="refresh" content="' . $intervalo . '; URL=' . $query . '">';
}
} }
?> ?>
<title>Pandora FMS - <?php echo $lang_label["header_title"]; ?></title> <title>Pandora FMS - <?php echo $lang_label["header_title"]; ?></title>
@ -92,7 +97,8 @@ if (isset ($_GET["refr"])){
<meta name="robots" content="index, follow"> <meta name="robots" content="index, follow">
<link rel="icon" href="images/pandora.ico" type="image/ico"> <link rel="icon" href="images/pandora.ico" type="image/ico">
<link rel="stylesheet" href="include/styles/pandora.css" type="text/css"> <link rel="stylesheet" href="include/styles/pandora.css" type="text/css">
<script type='text/JavaScript' src='include/calendar.js'></script> <script type='text/JavaScript' src='include/javascript/calendar.js'></script>
<script type="text/javascript" src="include/javascript/wz_jsgraphics.js"></script>
</head> </head>
<?php <?php
@ -136,9 +142,6 @@ if (isset ($_GET["refr"])){
$pass = $primera . "****" . $ultima; $pass = $primera . "****" . $ultima;
audit_db ($nick, $REMOTE_ADDR, "Logon Failed", audit_db ($nick, $REMOTE_ADDR, "Logon Failed",
"Incorrect password: " . $nick . " / " . $pass); "Incorrect password: " . $nick . " / " . $pass);
echo '<div id="foot">';
include "general/footer.php";
echo '</div>';
exit; exit;
} }
} }
@ -151,9 +154,6 @@ if (isset ($_GET["refr"])){
$pass = $primera . "****" . $ultima; $pass = $primera . "****" . $ultima;
audit_db ($nick, $REMOTE_ADDR, "Logon Failed", audit_db ($nick, $REMOTE_ADDR, "Logon Failed",
"Invalid username: " . $nick . " / " . $pass); "Invalid username: " . $nick . " / " . $pass);
echo '<div id="foot">';
include "general/footer.php";
echo '</div>';
exit; exit;
} }
} elseif (! isset ($_SESSION['id_usuario'])) { } elseif (! isset ($_SESSION['id_usuario'])) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Some files were not shown because too many files have changed in this diff Show More