New feature in chart:
average lines git-svn-id: file:///home/jan/tmp/wetterstation/trunk@205 dd492736-c11a-0410-ad51-8c26713eaf7f
This commit is contained in:
parent
8e6d8a5f0b
commit
af3d7d51a5
|
|
@ -41,6 +41,7 @@
|
||||||
#define DEFAULT_LABEL_SUM "no"
|
#define DEFAULT_LABEL_SUM "no"
|
||||||
#define DEFAULT_ZERO_MIN "no"
|
#define DEFAULT_ZERO_MIN "no"
|
||||||
#define DEFAULT_AS_BARS "no"
|
#define DEFAULT_AS_BARS "no"
|
||||||
|
#define DEFAULT_SHOW_AVERAGE "yes"
|
||||||
#define DEFAULT_WIDTH "800"
|
#define DEFAULT_WIDTH "800"
|
||||||
#define DEFAULT_HEIGHT "300"
|
#define DEFAULT_HEIGHT "300"
|
||||||
#define DEFAULT_SENS_ID "1"
|
#define DEFAULT_SENS_ID "1"
|
||||||
|
|
@ -56,6 +57,7 @@
|
||||||
#define DEFAULT_DIA_BG_COLOR "F0:A0:D0:D0"
|
#define DEFAULT_DIA_BG_COLOR "F0:A0:D0:D0"
|
||||||
#define DEFAULT_ZERO_LINE_COLOR "BF:80:80:40"
|
#define DEFAULT_ZERO_LINE_COLOR "BF:80:80:40"
|
||||||
#define DEFAULT_DIA_LINE_COLOR "60:30:50:30"
|
#define DEFAULT_DIA_LINE_COLOR "60:30:50:30"
|
||||||
|
#define DEFAULT_DIA_AV_LINE_COLOR "30:60:50:30"
|
||||||
#define DEFAULT_DIA_GRID_X_COLOR "60:60:60:EF"
|
#define DEFAULT_DIA_GRID_X_COLOR "60:60:60:EF"
|
||||||
#define DEFAULT_DIA_GRID_Y_COLOR "60:60:60:EF"
|
#define DEFAULT_DIA_GRID_Y_COLOR "60:60:60:EF"
|
||||||
#define DEFAULT_DIA_BORDER_COLOR "a0:a0:a0:af"
|
#define DEFAULT_DIA_BORDER_COLOR "a0:a0:a0:af"
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,10 @@ y_axis_desc Temparatur (
|
||||||
x_format %d.%m.%y # 'Normale' Labels
|
x_format %d.%m.%y # 'Normale' Labels
|
||||||
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
||||||
|
|
||||||
|
# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll
|
||||||
|
# Funktioniert NICHT in Verbindung mit Balkendiagrammen
|
||||||
|
show_average yes
|
||||||
|
|
||||||
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
||||||
# Sonst sollten sie imer auf no stehen!
|
# Sonst sollten sie imer auf no stehen!
|
||||||
zero_min no # Die Nullinie auf jeden Fall anzeigen
|
zero_min no # Die Nullinie auf jeden Fall anzeigen
|
||||||
|
|
@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames
|
||||||
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
||||||
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
||||||
dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie
|
dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie
|
||||||
|
dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie
|
||||||
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
||||||
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
||||||
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,10 @@ y_axis_desc Luftfeuchte (%)
|
||||||
x_format %d.%m.%y # 'Normale' Labels
|
x_format %d.%m.%y # 'Normale' Labels
|
||||||
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
||||||
|
|
||||||
|
# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll
|
||||||
|
# Funktioniert NICHT in Verbindung mit Balkendiagrammen
|
||||||
|
show_average yes
|
||||||
|
|
||||||
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
||||||
# Sonst sollten sie imer auf no stehen!
|
# Sonst sollten sie imer auf no stehen!
|
||||||
zero_min no # Die Nullinie auf jeden Fall anzeigen
|
zero_min no # Die Nullinie auf jeden Fall anzeigen
|
||||||
|
|
@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames
|
||||||
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
||||||
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
||||||
dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie
|
dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie
|
||||||
|
dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie
|
||||||
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
||||||
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
||||||
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,10 @@ y_axis_desc Luftdruck (hpa)
|
||||||
x_format %d.%m.%y # 'Normale' Labels
|
x_format %d.%m.%y # 'Normale' Labels
|
||||||
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
||||||
|
|
||||||
|
# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll
|
||||||
|
# Funktioniert NICHT in Verbindung mit Balkendiagrammen
|
||||||
|
show_average yes
|
||||||
|
|
||||||
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
||||||
# Sonst sollten sie imer auf no stehen!
|
# Sonst sollten sie imer auf no stehen!
|
||||||
zero_min no # Die Nullinie auf jeden Fall anzeigen
|
zero_min no # Die Nullinie auf jeden Fall anzeigen
|
||||||
|
|
@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames
|
||||||
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
||||||
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
||||||
dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie
|
dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie
|
||||||
|
dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie
|
||||||
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
||||||
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
||||||
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,10 @@ y_axis_desc Niederschlag (Liter)
|
||||||
x_format %d.%m.%y # 'Normale' Labels
|
x_format %d.%m.%y # 'Normale' Labels
|
||||||
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
||||||
|
|
||||||
|
# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll
|
||||||
|
# Funktioniert NICHT in Verbindung mit Balkendiagrammen
|
||||||
|
show_average no
|
||||||
|
|
||||||
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
||||||
# Sonst sollten sie imer auf no stehen!
|
# Sonst sollten sie imer auf no stehen!
|
||||||
zero_min yes # Die Nullinie auf jeden Fall anzeigen
|
zero_min yes # Die Nullinie auf jeden Fall anzeigen
|
||||||
|
|
@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames
|
||||||
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
||||||
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
||||||
dia_line_color 30:30:80:50 # Farbe der Balken oder der Linie
|
dia_line_color 30:30:80:50 # Farbe der Balken oder der Linie
|
||||||
|
dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie
|
||||||
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
||||||
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
||||||
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,10 @@ y_axis_desc Temparatur (
|
||||||
x_format %d.%m.%y # 'Normale' Labels
|
x_format %d.%m.%y # 'Normale' Labels
|
||||||
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
||||||
|
|
||||||
|
# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll
|
||||||
|
# Funktioniert NICHT in Verbindung mit Balkendiagrammen
|
||||||
|
show_average yes
|
||||||
|
|
||||||
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
||||||
# Sonst sollten sie imer auf no stehen!
|
# Sonst sollten sie imer auf no stehen!
|
||||||
zero_min no # Die Nullinie auf jeden Fall anzeigen
|
zero_min no # Die Nullinie auf jeden Fall anzeigen
|
||||||
|
|
@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames
|
||||||
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
||||||
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
||||||
dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie
|
dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie
|
||||||
|
dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie
|
||||||
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
||||||
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
||||||
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,14 @@ manual_table no
|
||||||
manual_table_name auss2_data
|
manual_table_name auss2_data
|
||||||
table_field temp
|
table_field temp
|
||||||
#table_field press
|
#table_field press
|
||||||
gen_interval 10
|
gen_interval 1
|
||||||
show_interval 10d
|
show_interval 1y
|
||||||
label_interval 1d
|
label_interval 30d
|
||||||
fixed_timepoint yes
|
fixed_timepoint no
|
||||||
timepoint 2006-12-17-13-00
|
timepoint 2006-12-17-13-00
|
||||||
width 800
|
width 800
|
||||||
height 300
|
height 300
|
||||||
ensor_id 1
|
sensor_id 4
|
||||||
value_koeffizient 0.1
|
value_koeffizient 0.1
|
||||||
#value_koeffizient 1.0
|
#value_koeffizient 1.0
|
||||||
unit °C
|
unit °C
|
||||||
|
|
@ -23,6 +23,7 @@ x_format_extra %d.%m.%y| %H:%M
|
||||||
zero_min no
|
zero_min no
|
||||||
as_bars no
|
as_bars no
|
||||||
label_sum no
|
label_sum no
|
||||||
|
show_average yes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -30,6 +31,7 @@ bg_color DF:DF:EF:00
|
||||||
dia_bg_color F0:A0:D0:D0
|
dia_bg_color F0:A0:D0:D0
|
||||||
zero_line_color BF:80:80:40
|
zero_line_color BF:80:80:40
|
||||||
dia_line_color 60:30:50:30
|
dia_line_color 60:30:50:30
|
||||||
|
dia_av_line_color 50:60:30:D0
|
||||||
dia_grid_x_color 60:60:60:EF
|
dia_grid_x_color 60:60:60:EF
|
||||||
dia_grid_y_color 60:60:60:EF
|
dia_grid_y_color 60:60:60:EF
|
||||||
dia_border_color a0:a0:a0:af
|
dia_border_color a0:a0:a0:af
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,10 @@ y_axis_desc Windgeschwindigkeit (km/h)
|
||||||
x_format %d.%m.%y # 'Normale' Labels
|
x_format %d.%m.%y # 'Normale' Labels
|
||||||
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
x_format_extra %d.%m.%y| %H:%M # Das ersre und das letzte Label
|
||||||
|
|
||||||
|
# Gibt an, ob eine Linie mit den Durchschnittswerten gezeichnet werden soll
|
||||||
|
# Funktioniert NICHT in Verbindung mit Balkendiagrammen
|
||||||
|
show_average yes
|
||||||
|
|
||||||
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
# Folgende Angaben sind vor allem fuer die Balkendiagramme wichtig.
|
||||||
# Sonst sollten sie imer auf no stehen!
|
# Sonst sollten sie imer auf no stehen!
|
||||||
zero_min no # Die Nullinie auf jeden Fall anzeigen
|
zero_min no # Die Nullinie auf jeden Fall anzeigen
|
||||||
|
|
@ -82,6 +86,7 @@ bg_color FF:FA:F5:00 # Gesamthintergrund des Diagrames
|
||||||
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
dia_bg_color F0:D0:A0:D0 # Hintergrund des Bereiches mit den Daten
|
||||||
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
zero_line_color DF:80:80:40 # Farbe der 'Nulllinie'
|
||||||
dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie
|
dia_line_color 80:30:30:30 # Farbe der Balken oder der Linie
|
||||||
|
dia_av_line_color 50:A0:50:D0 # Farbe der Durchschnittswert-Linie
|
||||||
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
dia_grid_x_color 60:60:60:EF # Farbe der Senkrechten Striche
|
||||||
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
dia_grid_y_color 60:60:60:EF # Farbe der Waagerechten Striche
|
||||||
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
dia_border_color a0:a0:a0:a0 # Farbe des Diagramrahmens (rahmen um den Datenbereich)
|
||||||
|
|
|
||||||
|
|
@ -54,12 +54,14 @@ typedef struct image_cfg {
|
||||||
char *x_fmt; /* Formatstring fuer die restlichen Labels */
|
char *x_fmt; /* Formatstring fuer die restlichen Labels */
|
||||||
int zero_min; /* Nullinie auf jeden Fall anzeigen */
|
int zero_min; /* Nullinie auf jeden Fall anzeigen */
|
||||||
int bars; /* Balken malen statt einer Linie */
|
int bars; /* Balken malen statt einer Linie */
|
||||||
|
int show_average; /* Durchschnittslinie zeichnen */
|
||||||
int dflt_dir; /* Standart - Verzeichnis fuer die Bilder */
|
int dflt_dir; /* Standart - Verzeichnis fuer die Bilder */
|
||||||
|
|
||||||
/* Farben */
|
/* Farben */
|
||||||
img_color_ptr bg_color;
|
img_color_ptr bg_color;
|
||||||
img_color_ptr dia_bg_color;
|
img_color_ptr dia_bg_color;
|
||||||
img_color_ptr dia_line_color;
|
img_color_ptr dia_line_color;
|
||||||
|
img_color_ptr dia_av_line_color;
|
||||||
img_color_ptr dia_grid_x_color;
|
img_color_ptr dia_grid_x_color;
|
||||||
img_color_ptr dia_grid_y_color;
|
img_color_ptr dia_grid_y_color;
|
||||||
img_color_ptr dia_border_color;
|
img_color_ptr dia_border_color;
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,7 @@ static const config_keyword keywords[] = {
|
||||||
{"sensor_id", read_int, &(img_cfg.sens_id), DEFAULT_SENS_ID},
|
{"sensor_id", read_int, &(img_cfg.sens_id), DEFAULT_SENS_ID},
|
||||||
{"zero_min", read_yn, &(img_cfg.zero_min), DEFAULT_ZERO_MIN},
|
{"zero_min", read_yn, &(img_cfg.zero_min), DEFAULT_ZERO_MIN},
|
||||||
{"as_bars", read_yn, &(img_cfg.bars), DEFAULT_AS_BARS},
|
{"as_bars", read_yn, &(img_cfg.bars), DEFAULT_AS_BARS},
|
||||||
|
{"show_average", read_yn, &(img_cfg.show_average), DEFAULT_SHOW_AVERAGE},
|
||||||
{"x_axis_desc", read_str, &(img_cfg.x_desc), DEFAULT_X_AX_DESC},
|
{"x_axis_desc", read_str, &(img_cfg.x_desc), DEFAULT_X_AX_DESC},
|
||||||
{"y_axis_desc", read_str, &(img_cfg.y_desc), DEFAULT_Y_AX_DESC},
|
{"y_axis_desc", read_str, &(img_cfg.y_desc), DEFAULT_Y_AX_DESC},
|
||||||
{"x_format", read_fmt_str, &(img_cfg.x_fmt), DEFAULT_X_FORMAT},
|
{"x_format", read_fmt_str, &(img_cfg.x_fmt), DEFAULT_X_FORMAT},
|
||||||
|
|
@ -71,6 +72,7 @@ static const config_keyword keywords[] = {
|
||||||
{"bg_color", read_color, &(img_cfg.bg_color), DEFAULT_BG_COLOR},
|
{"bg_color", read_color, &(img_cfg.bg_color), DEFAULT_BG_COLOR},
|
||||||
{"dia_bg_color", read_color, &(img_cfg.dia_bg_color), DEFAULT_DIA_BG_COLOR},
|
{"dia_bg_color", read_color, &(img_cfg.dia_bg_color), DEFAULT_DIA_BG_COLOR},
|
||||||
{"dia_line_color", read_color, &(img_cfg.dia_line_color), DEFAULT_DIA_LINE_COLOR},
|
{"dia_line_color", read_color, &(img_cfg.dia_line_color), DEFAULT_DIA_LINE_COLOR},
|
||||||
|
{"dia_av_line_color", read_color, &(img_cfg.dia_av_line_color), DEFAULT_DIA_AV_LINE_COLOR},
|
||||||
{"dia_grid_x_color", read_color, &(img_cfg.dia_grid_x_color), DEFAULT_DIA_GRID_X_COLOR},
|
{"dia_grid_x_color", read_color, &(img_cfg.dia_grid_x_color), DEFAULT_DIA_GRID_X_COLOR},
|
||||||
{"dia_grid_y_color", read_color, &(img_cfg.dia_grid_y_color), DEFAULT_DIA_GRID_Y_COLOR},
|
{"dia_grid_y_color", read_color, &(img_cfg.dia_grid_y_color), DEFAULT_DIA_GRID_Y_COLOR},
|
||||||
{"dia_border_color", read_color, &(img_cfg.dia_border_color), DEFAULT_DIA_BORDER_COLOR},
|
{"dia_border_color", read_color, &(img_cfg.dia_border_color), DEFAULT_DIA_BORDER_COLOR},
|
||||||
|
|
|
||||||
|
|
@ -40,10 +40,11 @@ static pix_list_ptr max = NULL; /* Pointer auf Max - Element */
|
||||||
double real_min = 0; /* Realer Max - Wert */
|
double real_min = 0; /* Realer Max - Wert */
|
||||||
double real_max = 0; /* Realer Min - Wert */
|
double real_max = 0; /* Realer Min - Wert */
|
||||||
static long base_time; /* Zeit an der 0-Koordinate (lt. Datenbank!) */
|
static long base_time; /* Zeit an der 0-Koordinate (lt. Datenbank!) */
|
||||||
|
int max_diff = 0; /* Maximaler Abstand, den 2 Werte haben duerfen, ohne das die Linie unterbrochen wird */
|
||||||
|
|
||||||
|
|
||||||
/* Funktionsdefinitionen */
|
/* Funktionsdefinitionen */
|
||||||
static pix_list_ptr add_pix_value(pix_list_ptr , long, int , int, int );
|
static pix_list_ptr add_pix_value(pix_list_ptr , int , int, int );
|
||||||
static char *get_conn_string();
|
static char *get_conn_string();
|
||||||
static PGconn *pg_check_connect(char *);
|
static PGconn *pg_check_connect(char *);
|
||||||
static PGresult *pg_check_exec(PGconn *, char *);
|
static PGresult *pg_check_exec(PGconn *, char *);
|
||||||
|
|
@ -297,7 +298,6 @@ pix_list_ptr get_pix_list(int c_width){
|
||||||
int pix_coord; /* x - Koordinate, an die der Wert gehoert */
|
int pix_coord; /* x - Koordinate, an die der Wert gehoert */
|
||||||
int i, s, t, u; /* Laufvariable zum durchlaufen des Datenbank-resuls */
|
int i, s, t, u; /* Laufvariable zum durchlaufen des Datenbank-resuls */
|
||||||
long timestamp;
|
long timestamp;
|
||||||
int max_diff;
|
|
||||||
pix_list_ptr list_ptr = NULL; /* Zeiger auf den Anfang der Wertliste */
|
pix_list_ptr list_ptr = NULL; /* Zeiger auf den Anfang der Wertliste */
|
||||||
pix_list_ptr temp_ptr = NULL; /* Zeiger zum durchlaufen der Wertliste */
|
pix_list_ptr temp_ptr = NULL; /* Zeiger zum durchlaufen der Wertliste */
|
||||||
|
|
||||||
|
|
@ -347,7 +347,7 @@ pix_list_ptr get_pix_list(int c_width){
|
||||||
pix_coord = floor( ((double)time_temp) * seconds_per_pix) ;
|
pix_coord = floor( ((double)time_temp) * seconds_per_pix) ;
|
||||||
|
|
||||||
/* Listenelement generieren */
|
/* Listenelement generieren */
|
||||||
temp_ptr = add_pix_value(temp_ptr, timestamp, pix_coord, atoi( PQgetvalue(res, i, val_field) ) , max_diff);
|
temp_ptr = add_pix_value(temp_ptr, pix_coord, atoi( PQgetvalue(res, i, val_field) ) , max_diff);
|
||||||
|
|
||||||
/* Rueckgabe- und Max/Min-pointer zuweisen */
|
/* Rueckgabe- und Max/Min-pointer zuweisen */
|
||||||
if (list_ptr == NULL){
|
if (list_ptr == NULL){
|
||||||
|
|
@ -371,7 +371,7 @@ pix_list_ptr get_pix_list(int c_width){
|
||||||
time_temp = timestamp;
|
time_temp = timestamp;
|
||||||
}
|
}
|
||||||
pix_coord = floor( ((double)time_temp) * seconds_per_pix) ;
|
pix_coord = floor( ((double)time_temp) * seconds_per_pix) ;
|
||||||
temp_ptr = add_pix_value(temp_ptr, timestamp, pix_coord, 0 , max_diff);
|
temp_ptr = add_pix_value(temp_ptr, pix_coord, 0 , max_diff);
|
||||||
list_ptr = temp_ptr;
|
list_ptr = temp_ptr;
|
||||||
min = temp_ptr;
|
min = temp_ptr;
|
||||||
max = temp_ptr;
|
max = temp_ptr;
|
||||||
|
|
@ -419,7 +419,7 @@ pix_list_ptr get_pix_list(int c_width){
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Speichert einen geholten Wert ab */
|
/* Speichert einen geholten Wert ab */
|
||||||
static pix_list_ptr add_pix_value(pix_list_ptr ptr, long timestamp, int coord, int value, int max_diff){
|
static pix_list_ptr add_pix_value(pix_list_ptr ptr, int coord, int value, int max_diff){
|
||||||
int old_coord;
|
int old_coord;
|
||||||
|
|
||||||
/* Erstes Element */
|
/* Erstes Element */
|
||||||
|
|
@ -464,6 +464,84 @@ static pix_list_ptr add_pix_value(pix_list_ptr ptr, long timestamp, int coord, i
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Durchschnittslinie
|
||||||
|
* reale Werte, eff. Zeichenbreite */
|
||||||
|
pix_list_ptr build_average_line(pix_list_ptr real_list, int c_width){
|
||||||
|
|
||||||
|
int list_count = 0;
|
||||||
|
int list_offset = 0;
|
||||||
|
int field_size = c_width;
|
||||||
|
int i,j,m;
|
||||||
|
double sum = 0;
|
||||||
|
double koeff = 0;
|
||||||
|
double count = 0;
|
||||||
|
|
||||||
|
pix_list_ptr old_temp = real_list;
|
||||||
|
pix_list_ptr *old_ptr_field = malloc(sizeof(pix_list_ptr) * (field_size));
|
||||||
|
pix_list_ptr new_list = NULL;
|
||||||
|
pix_list_ptr new_list_temp = NULL;
|
||||||
|
|
||||||
|
list_offset = old_temp->x_pix_coord;
|
||||||
|
|
||||||
|
DEBUGOUT2("list_offset %d\n", list_offset);
|
||||||
|
|
||||||
|
for(; old_temp; old_temp = old_temp->next){
|
||||||
|
if(list_count >= field_size){
|
||||||
|
field_size += c_width;
|
||||||
|
realloc(old_ptr_field, sizeof(pix_list_ptr) * (field_size));
|
||||||
|
}
|
||||||
|
|
||||||
|
DEBUGOUT2("list_count: %d -- ", list_count);
|
||||||
|
DEBUGOUT2("old_temp->x_pix_coord: %d -- ",old_temp->x_pix_coord);
|
||||||
|
|
||||||
|
while( (list_count + list_offset) > old_temp->x_pix_coord){
|
||||||
|
old_ptr_field[list_count] = NULL;
|
||||||
|
list_count++;
|
||||||
|
DEBUGOUT1("Fuege Null hinzu\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
old_ptr_field[list_count] = old_temp;
|
||||||
|
DEBUGOUT1("Fuege Wert hinzu\n");
|
||||||
|
|
||||||
|
list_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < list_count; i++){
|
||||||
|
if(old_ptr_field[i] != NULL){
|
||||||
|
sum = ((double)old_ptr_field[i]->value_sum) / ((double)old_ptr_field[i]->value_count);
|
||||||
|
count = 1;
|
||||||
|
for(j = 1; j < 30; j++){
|
||||||
|
koeff = 0.9 - (0.01 * (3*j));
|
||||||
|
m = 0;
|
||||||
|
if( (i - j) >= 0){
|
||||||
|
if(old_ptr_field[i-j] != NULL){
|
||||||
|
sum += (((double)old_ptr_field[i-j]->value_sum) / ((double)old_ptr_field[i-j]->value_count)) * koeff;
|
||||||
|
m++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( (i + j) < list_count){
|
||||||
|
if(old_ptr_field[i+j] != NULL){
|
||||||
|
sum += (((double)old_ptr_field[i+j]->value_sum) / ((double)old_ptr_field[i+j]->value_count)) * koeff;
|
||||||
|
m++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
count += m * koeff;
|
||||||
|
|
||||||
|
}
|
||||||
|
new_list_temp = add_pix_value(new_list_temp, old_ptr_field[i]->x_pix_coord, floor(sum / count), max_diff);
|
||||||
|
|
||||||
|
if(new_list == NULL){
|
||||||
|
new_list = new_list_temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
free(old_ptr_field);
|
||||||
|
|
||||||
|
return new_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* baut den String fuer die Postgres-Verbindung zusammen */
|
/* baut den String fuer die Postgres-Verbindung zusammen */
|
||||||
static char *get_conn_string(){
|
static char *get_conn_string(){
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,13 @@ typedef struct label_list {
|
||||||
*/
|
*/
|
||||||
pix_list_ptr get_pix_list(int );
|
pix_list_ptr get_pix_list(int );
|
||||||
|
|
||||||
|
/* Baut die Durchschnittslinie.
|
||||||
|
* 1. Argument: Die Daten der Linie mit den 'realen' Werten
|
||||||
|
* 2. Argument: die effektive Breite des Bereiches in dem gezeichnet werden soll
|
||||||
|
* Rueckgabe: die liste mit den Werten
|
||||||
|
*/
|
||||||
|
pix_list_ptr build_average_line(pix_list_ptr real_list, int c_width);
|
||||||
|
|
||||||
|
|
||||||
/* Max. Wert */
|
/* Max. Wert */
|
||||||
pix_list_ptr get_min_val();
|
pix_list_ptr get_min_val();
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ static gdImagePtr draw_image(gdImagePtr img){
|
||||||
|
|
||||||
/* Werte und Labels */
|
/* Werte und Labels */
|
||||||
pix_list_ptr pix_list = NULL;
|
pix_list_ptr pix_list = NULL;
|
||||||
|
pix_list_ptr average_pix_list = NULL;
|
||||||
label_list_ptr x_labels = NULL;
|
label_list_ptr x_labels = NULL;
|
||||||
label_list_ptr y_labels = NULL;
|
label_list_ptr y_labels = NULL;
|
||||||
|
|
||||||
|
|
@ -117,6 +118,7 @@ static gdImagePtr draw_image(gdImagePtr img){
|
||||||
|
|
||||||
/* Farben */
|
/* Farben */
|
||||||
color val_line_c = alloc_alpha_color(img, img_cfg.dia_line_color);
|
color val_line_c = alloc_alpha_color(img, img_cfg.dia_line_color);
|
||||||
|
color av_line_c = alloc_alpha_color(img, img_cfg.dia_av_line_color);
|
||||||
color zero_line_c = alloc_alpha_color(img, img_cfg.zero_line_color);
|
color zero_line_c = alloc_alpha_color(img, img_cfg.zero_line_color);
|
||||||
color dia_bg_c = alloc_alpha_color(img, img_cfg.dia_bg_color);
|
color dia_bg_c = alloc_alpha_color(img, img_cfg.dia_bg_color);
|
||||||
color diag_grid_x_c = alloc_alpha_color(img, img_cfg.dia_grid_x_color);
|
color diag_grid_x_c = alloc_alpha_color(img, img_cfg.dia_grid_x_color);
|
||||||
|
|
@ -166,6 +168,9 @@ static gdImagePtr draw_image(gdImagePtr img){
|
||||||
|
|
||||||
/* Werte holen */
|
/* Werte holen */
|
||||||
pix_list = get_pix_list(dia_width);
|
pix_list = get_pix_list(dia_width);
|
||||||
|
if(!img_cfg.bars && img_cfg.show_average){
|
||||||
|
average_pix_list = build_average_line(pix_list, dia_width);
|
||||||
|
}
|
||||||
|
|
||||||
/* Diagramhintergrund */
|
/* Diagramhintergrund */
|
||||||
gdImageFilledRectangle(img, offset_x_left, offset_y_top, img_cfg.width - offset_x_right, img_cfg.height - offset_y_bottom, dia_bg_c);
|
gdImageFilledRectangle(img, offset_x_left, offset_y_top, img_cfg.width - offset_x_right, img_cfg.height - offset_y_bottom, dia_bg_c);
|
||||||
|
|
@ -181,6 +186,9 @@ static gdImagePtr draw_image(gdImagePtr img){
|
||||||
|
|
||||||
/* y-Werte skalieren */
|
/* y-Werte skalieren */
|
||||||
zero_line = scale_y_coords(pix_list, dia_height);
|
zero_line = scale_y_coords(pix_list, dia_height);
|
||||||
|
if(!img_cfg.bars && img_cfg.show_average){
|
||||||
|
scale_y_coords(average_pix_list, dia_height);
|
||||||
|
}
|
||||||
|
|
||||||
/* Vertikale linien + x - Labels*/
|
/* Vertikale linien + x - Labels*/
|
||||||
x_labels = get_x_label_list(dia_width);
|
x_labels = get_x_label_list(dia_width);
|
||||||
|
|
@ -199,6 +207,15 @@ static gdImagePtr draw_image(gdImagePtr img){
|
||||||
gdImageLine(img, offset_x_left, zero_line + offset_y_top, img_cfg.width - offset_x_right, zero_line + offset_y_top, zero_line_c);
|
gdImageLine(img, offset_x_left, zero_line + offset_y_top, img_cfg.width - offset_x_right, zero_line + offset_y_top, zero_line_c);
|
||||||
|
|
||||||
|
|
||||||
|
/* Durchschnitts-Werte Zeichnen */
|
||||||
|
if(!img_cfg.bars && img_cfg.show_average){
|
||||||
|
for (; average_pix_list->next; average_pix_list = average_pix_list->next){
|
||||||
|
if(!average_pix_list->next->no_line){
|
||||||
|
gdImageLine(img, (offset_x_left + average_pix_list->x_pix_coord), (offset_y_top + average_pix_list->y_pix_coord), (offset_x_left + average_pix_list->next->x_pix_coord), (offset_y_top + average_pix_list->next->y_pix_coord), av_line_c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Werte Zeichnen */
|
/* Werte Zeichnen */
|
||||||
if(!img_cfg.bars){
|
if(!img_cfg.bars){
|
||||||
for (; pix_list->next; pix_list = pix_list->next){
|
for (; pix_list->next; pix_list = pix_list->next){
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,9 @@
|
||||||
|
weatherstation (1.0.6-1) stable; urgency=low
|
||||||
|
|
||||||
|
* New feature added in chart-program: Now it can draw a average.line
|
||||||
|
|
||||||
|
-- Jan Losinski <losinski@wh2.tu-dresden.de> Tue, 2 Jan 2007 06:54:55 +0100
|
||||||
|
|
||||||
weatherstation (1.0.5-2) stable; urgency=low
|
weatherstation (1.0.5-2) stable; urgency=low
|
||||||
|
|
||||||
* chart-example-configs updated
|
* chart-example-configs updated
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue