[infraChart]
Die Sektion ist nur für Container-Objekte zulässig. Der Container wird dadurch komplett mit einem Chart bestehend aus ein oder mehreren Diagrammen gefüllt. Die zu visualisierenden Daten werden aus einer SQL-Datenbank gelesen.
Beispielhaft werden über den Menüpunkt „Charts“ im infra-Explorer und über ein Dashboard im Hauptfenster (siehe INI-Eintrag Navigation=DASHMAIN,DASHMAIN in der Sektion [Layout] der Datei CHARTS.INI) Charts mit Auswertungen auf Basis der replizierten infra:NET SQL-Datenbank zur Verfügung gestellt.
Voraussetzung für die Chart-Integration ist die Aktivierung des Plugins „infraChart“ in der INI-Sektion [PLUGIN].
Siehe auch Beschreibung der Chartsektion in der INI-Datei.
Grundsätzlich können Charts an jeder beliebigen Stelle in infra:NET eingebaut werden, auch in bereits vorhandene Dialoge.
Alle infra:NET Charts können über das Kontextmenü gedruckt werden.
ConnectionString = Verbindungszeichenfolge
Hier kann die Verbindungszeichenfolge für den Aufbau der Datenverbindung zur SQL-Datenbank, die die zu visualisierenden Daten enthält, angegeben werden. Statt der Verbindungszeichenfolge kann auch ein infra-Makroausdruck z.B. zum Verweis auf einen INI-Eintrag angegeben werden. Dadurch kann die Verbindung flexibel angepasst werden, ohne CGW- oder SDF-Änderung.
Fehlt diese Angabe, wird in der INI-Sektion [infraChart] nach einem Eintrag „ConnectionString=…“ gesucht.
Ist auch der nicht vorhanden, wird die universelle Verbindungsangabe StdClientConnectionString des infra:NET Servers für die Verbindung zur SQL-Datenbank verwendet. Dies ist die empfohlene Vorgehensweise.
Series = INI-Sektion, INI-Schlüssel
Durch diese Angabe wird auf einen INI-Eintrag verwiesen, der die Serienauflistung der darzustellenden Diagramme enthält:
|
[INI-Sektion]
INI-Schlüssel=Serie1,Serie2,…
Serie1=Serienbeschreibung
Serie2=Serienbeschreibung
…
|
Alternativ können die zu zeichnenden Diagrammserien auch direkt angegeben werden (siehe folgender Eintrag „Series.x“).
Series.x = Serienbeschreibung
Mit „x“ als beliebige Zeichenfolge oder laufende Nummer können beliebig viele Diagrammserien direkt im CGW angegeben werden. Ein Verweis auf eine Serienauflistung in der INI-Datei (siehe oben) ist allerdings flexibler und erlaubt die Anpassung der Diagrammdarstellung ohne CGW- oder SDF-Änderung.
Um eine Serienbeschreibung mit all ihren Parametern in der INI-Datei übersichtlicher zu gestalten, kann auch eine mehrzeilige Notation verwendet werden. Dazu muss die Serienbeschreibung mit geschweiften Klammern umschlossen werden. Innerhalb der Klammern kann dann nach jedem Komma eine neue Zeile begonnen werden (siehe Beispiel in der Charts.ini im INI-Verzeichnis).
Aufbau einer Serienbeschreibung:
|
”Title”,Area,Legend,Type,SQL-Query,Settings…
|
|
Title
|
Angezeigter Titel der Datenserie (wird zum Beispiel in der Legende angezeigt).
|
|
Area
|
Eine frei definierbare ID für einen gemeinsamen Grafikbereich (Area).
In einer Area können mehrere Serien miteinander kombiniert werden.
Dazu muss in jeder Serienbeschreibung, die miteinander in einer Grafik kombiniert werden sollen, die gleiche Area angegeben werden.
Sollen Serien nicht in einer Grafik kombiniert werden, sondern neben und untereinander getrennt voneinander dargestellt werden,
müssen in den Serien unterschiedliche IDs als Area angegeben werden.
Die Angabe kann auch entfallen, wenn alle Serien in einer Area kombiniert werden sollen.
|
|
Legend
|
Eine frei wählbare ID für eine gemeinsame Legende. Serienbeschreibungen (insbesondere Farbzuordnungen)
können in gemeinsamen Legenden oder getrennt voneinander in unterschiedlichen Legenden angezeigt werden.
Für alle Serien, deren Beschreibung in einer gemeinsamen Legende angezeigt werden sollen, muss die gleiche ID angegeben werden.
Die Angabe kann auch entfallen, wenn alle Serien in einer gemeinsamen Legende aufgeführt werden sollen.
|
|
Type
|
Bestimmt in welcher Form (Charttyp) eine Datenserie angezeigt werden soll. Folgende Charttypen stehen zur Verfügung:
Point, FastPoint, Bubble, Line, Spline, StepLine, FastLine, Bar, StackedBar, StackedBar100, Column, StackedColumn,
StackedColumn100, Area, SplineArea, StackedArea, StackedArea100, Pie, Doughnut, Stock, Candlestick, Range, SplineRange,
RangeBar, RangeColumn, Radar, Polar, ErrorBar, BoxPlot, Renko, ThreeLineBreak, Kagi, PointAndFigure, Funnel, Pyramid
|
|
SQL-Query
|
Verweis auf die SQL-Abfrage, die die Daten für die anzuzeigende Datenserie liefert.
Der Verweis besteht entweder nur aus einem Schlüsselwort, dann wird dieser Schlüssel in der Sektion [infraChart] vermutet,
oder aus einem Sektionsnamen und einem Schlüsselwort in runden Klammern.
Die bei dem angegebenen Schlüsselwort hinterlegte SQL-Abfrage muss eine Sammlung von X/Y-Paaren liefern. X-Werte (horizontale Achse)
müssen mit dem Spaltennamen „XValue“ und zugehörige Y-Werte (vertikale Achse) mit dem Spaltennamen „YValue“ geliefert werden.
Für Range-Charttypen wie z.B. „Range“, „SplineRange“, „RangeBar“, „RangeColumn“, die beispielsweise für
Termin- und Belegungsdiagramme genutzt werden können, muss ein zweiter Y-Wert als Spalte „YValue2“ geliefert werden.
Innerhalb der SQL-Abfrage kann mit $Macros[…] auf infra-Makros und somit auf Puffer und Globalvariablen zugegriffen werden.
|
|
Settings
|
Hier können weitere Einstellungen für die darzustellende Datenserie folgen.
Jede Einstellung muss durch Kommata von der nächsten Einstellung getrennt werden.
Die derzeit unterstützten Einstellungsmöglichkeiten werden im Folgenden beschrieben.
|
Hinweis:
Durch die Vielzahl von Einstellungsmöglichkeiten (Settings) ergibt sich recht schnell eine unübersichtliche Sammlung von Parametern, die sich unter Umständen mit jeder neu erstellten Grafik wiederholt. Das lässt sich vereinfachen, indem mit Hilfe des Makros „INI(…)“ alle Einstellungen, die Sie standardmäßig für einen bestimmten Chart-Typ verwenden, aus einem gemeinsamen INI-Eintrag (und/oder einer eigenen INI-Sektion) gelesen werden und nur die im jeweiligen speziellen Anwendungsfall abweichenden Einstellungen übersteuern. Beispiele dazu finden Sie in der Datei Charts.ini, die im INI-Verzeichnis mitgeliefert wird.
Einstellungsmöglichkeiten (Settings)
Für die Darstellung einer Datenserie können weitere Einstellungen vorgenommen werden. Bei der Kombination mehrerer Datenserien in einer Area, „gewinnen“ die Einstellungen der letzten Datenserie, wenn widersprüchliche Angaben bei den einzelnen Datenserien gemacht wurden.
|
Interval=x
|
Legt die Schrittweite der Datenpunkte bezüglich der X-Achse fest. „1“ bedeutet, jeder X-Wert entspricht einer Angabe auf der X-Achse.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
IntervalType=Typ
|
Basis für die bei Interval angegebene Schrittweite der X-Achse (Default „Auto“):
Days, Hours, Milliseconds, Minutes, Months, Number, Seconds, Weeks, Years
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
CenterMark
|
Die Mitte der Grafik soll durch einen grünen Balken markiert werden.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Color=Farbname
|
Farbe der Datenpunkte/ der Linie/ des Segmentes abhängig vom Diagrammtyp (siehe „vordefinierte Farbnamen“). “).
Durch Voranstellen eines „*“ wird die Farbe transparent gezeichnet.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
BorderWidth=x
|
Strichstärke einer Liniengrafik bzw. Randstärke bei anderen Diagrammtypen.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
BorderColor=Farbname
|
Rahmenfarbe abhängig vom Diagrammtyp (siehe „vordefinierte Farbnamen“).
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
BorderDashStyle=Typ
|
Art der zu zeichnenden Linie zum Beispiel im Liniendiagramm:
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Legend.Docking=Typ
|
Seite, auf der die Legende zur Serie angezeigt werden soll:
Top, Bottom, Left, Right
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Legend.Style=Typ
|
Darstellung der Legende als
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Legend.Alignment=Typ
|
Anordnung der Legende in Bezug auf die Grafik:
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Legend.Title=Text
|
Legendenüberschrift
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Legend.TitleFont=Font
|
Schriftart und Größe der Legendenüberschrift.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Legend.TitleColor=Farbe
|
Farbe der Legendenüberschrift (siehe unten)
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
XAxis.Format=Format
|
Anzeigeformat für die Labels der X-Achse:
Bei Zahlen gilt:
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
XAxis2
|
Zusätzliche X-Achse für diese Serie anzeigen (i.d.R. an der oberen Seite).
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
XAxis2.Format=Format
|
Anzeigeformat für die Labels der zweiten X-Achse (siehe XAxis.Format).
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
XGrid=Typ
|
Gibt den Rastertyp für die X-Achse an:
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
YAxis.Format=Format
|
Anzeigeformat für die Labels der X-Achse (siehe XAxis.Format)
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
YAxis2
|
Zusätzliche Y-Achse für diese Serie anzeigen (i.d.R. auf der rechten Seite).
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
YAxis2.Format=Format
|
Anzeigeformat für die Labels der zweiten Y-Achse (siehe XAxis.Format).
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
YGrid=Typ
|
Gibt den Rastertyp für die Y-Achse an (siehe XGrid).
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Value.Format=Format
|
Anzeigeformat für die Beschriftung der Datenpunkte innerhalb des Diagramms (siehe XAxis.Format).
Wirkt nur in Verbindung mit „ShowValues“.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Value.Color=Farbname
|
Farbe der Beschriftung der Datenpunkte innerhalb des Diagramms (Farbnamen siehe unten). Wirkt nur in Verbindung mit „ShowValues“.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Value.Percent
|
Die Beschriftung der Datenpunkte soll als Prozentangabe erfolgen (z.B. bei Torten oder Donuts). Der Legendentext zeigt dann standardmäßig den zugehörigen absoluten Wert an. Wirkt nur in Verbindung mit „ShowValues“.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
ShowValues
|
Schaltet die Beschriftung der Datenpunkte im Diagramm ein.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Refresh=Sekunden
|
Automatische Aktualisierung der Grafik im angegebenen Zeitintervall.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Transparency=x
|
Durchsichtigkeit der angezeigten Flächen/Segmente (0-255) – je niedriger der Wert desto durchsichtiger.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
StripLine
|
Bereiche auf der X-Achse sollen durch zusätzliche Streifen hervorgehoben oder voneinander abgesetzt werden.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
StripLine.Width=x
|
Gibt die Breite eines Markierungs-Streifens in Intervallen auf der X-Achse an. „1“ bedeutet dabei, der Streifen soll die Breite genau eines Intervalls haben.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
StripLine.Offset=x
|
Gibt den Abstand des ersten Markierungs-Streifens in Intervallen ausgehend vom Startintervall an.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
StripLine.Interval=x
|
Bestimmt, jedes wievielte Intervall durch einen Streifen hervorgehoben werden soll.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Area.3D
|
Aktiviert die 3D-Darstellung für die Area, in der die aktuelle Serie angezeigt werden soll.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Area.Inclination=x
|
Gibt den Neigungswinkel der Grafik gegenüber dem Horizont an (bei 3D-Darstellung)
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Area.Rotation=x
|
Bestimmt den Rotationswinkel der Grafik um den vertikalen Mittelpunkt (bei 3D-Darstellung)
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Area.Light=x
|
Bestimmt die Art des Licht-Effekts bei 3D-Darstellung:
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Area.Perspective=x
|
Gibt den Grad der perspektivischen Verzerrung der Grafik an (bei 3D-Darstellung)
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Area.X=x
|
Position des Diagramms innerhalb des gesamten Chartcontrols in Prozent ausgehend vom linken Rand. Bei 0 wird ggf. die linke Umrandung des Chartcontrols überschrieben.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Area.Y=x
|
Position des Diagramms innerhalb des gesamten Chartcontrols in Prozent ausgehend vom oberen Rand.
Bei 0 wird ggf. die obere Umrandung des Chartcontrols überschrieben.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Area.Width=x
|
Breite des Diagramms (ohne Legende) innerhalb des gesamten Chartcontrols in Prozent bezogen auf die gesamte Breite des Chartcontrols.
Bei zu großen Werten wird ggf. die rechte Umrandung des Chartcontrols überschrieben.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Area.Height=x
|
Höhe des Diagramms (ohne Legende) innerhalb des gesamten Chartcontrols in Prozent bezogen auf die gesamte Höhe des Charcontrols.
Bei zu großen Werten wird ggf. die untere Umrandung des Chartcontrols überschrieben.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
ChartBorder.Width=x
|
Strichstärke der Umrandung des gesamten Chartcontrols.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
ChartBorder.Color=x
|
Farbe des Umrandungsstrichs (Farbnamen siehe unten).
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
ChartBorder.Color1=x
|
1.Farbe des Umrandungsbereichs.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
ChartBorder.Color2=x
|
2.Farbe des Umrandungsbereichs (bei Farbverläufen).
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
ChartBorder.Gradient=x
|
Farbverlauf des Umrandungsbereichs:
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
ChartBorder.PageColor
|
Hintergrundfarbe außerhalb der Umrandung. „infralightblue“ liefert die Hintergrundfarbe des infra Hauptdialogs – ansonsten Farbname siehe unten.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
ChartBorder.Skin=x
|
Umrandungsstil:
Emboss, Raised, Sunken, FrameThin1, FrameThin2, FrameThin3, FrameThin4, FrameThin5, FrameThin6, FrameTitle1, FrameTitle2, FrameTitle3, FrameTitle4, FrameTitle5, FrameTitle6, FrameTitle7, FrameTitle8
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Chart.Title=Text
|
Titel des gesamten Chartbereichs.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Chart.TitleFont=Font
|
Schriftart und Größe des Chart-Titels.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Chart.TitleColor=Farbe
|
Farbname der Farbe des Chart-Titels.
| ||||||||||||||||||||||||||||||||||||||||||||||||||
Angaben für Torten und Donuts (Diagrammtyp Pie und Doughnut):
|
PieDrawingStyle=Typ
|
Darstellungsart (nur 2D-Darstellung):
| ||||||
|
PieLabelStyle=Typ
|
Beschriftung der Segmente:
| ||||||
|
DoughnutRadius=x
|
Radius des Doughnut-Rings in Prozent (0-99) – je größer der Wert, desto kleiner das Loch in der Mitte.
| ||||||
|
Exploded=Wert
|
Hebt ein Segment der Grafik hervor. Wert gibt dabei entweder die Position innerhalb der angezeigten Ergebnisliste (=Legende) gezählt ab 0 oder in Anführungszeichen einen Text an, der innerhalb des XValues des hervorzuhebenden Datensegments vorkommen muss.
|
Vordefinierte Farbnamen
|
AliceBlue
AntiqueWhite
Aqua
Aquamarine
Azure
Beige
Bisque
Black
BlanchedAlmond
Blue
BlueViolet
Brown
BurlyWood
CadetBlue
Chartreuse
Chocolate
Coral
CornflowerBlue
Cornsilk
Crimson
Cyan
DarkBlue
DarkCyan
DarkGoldenrod
DarkGray
DarkGreen
DarkKhaki
DarkMagenta
DarkOliveGreen
DarkOrange
DarkOrchid
DarkRed
DarkSalmon
DarkSeaGreen
DarkSlateBlue
|
DarkSlateGray
DarkTurquoise
DarkViolet
DeepPink
DeepSkyBlue
DimGray
DodgerBlue
Firebrick
FloralWhite
ForestGreen
Fuchsia
Gainsboro
GhostWhite
Gold
Goldenrod
Gray
Green
GreenYellow
Honeydew
HotPink
IndianRed
Indigo
Ivory
Khaki
Lavender
LavenderBlush
LawnGreen
LemonChiffon
LightBlue
LightCoral
LightCyan
LightGoldenrodYellow
LightGray
LightGreen
|
LightPink
LightSalmon
LightSeaGreen
LightSkyBlue
LightSlateGray
LightSteelBlue
LightYellow
Lime
LimeGreen
Linen
Magenta
Maroon
MediumAquamarine
MediumBlue
MediumOrchid
MediumPurple
MediumSeaGreen
MediumSlateBlue
MediumSpringGreen
MediumTurquoise
MediumVioletRed
MidnightBlue
MintCream
MistyRose
Moccasin
NavajoWhite
Navy
OldLace
Olive
OliveDrab
Orange
OrangeRed
Orchid
PaleGoldenrod
PaleGreen
|
PaleTurquoise
PaleVioletRed
PapayaWhip
PeachPuff
Peru
Pink
Plum
PowderBlue
Purple
Red
RosyBrown
RoyalBlue
SaddleBrown
Salmon
SandyBrown
SeaGreen
SeaShell
Sienna
Silver
SkyBlue
SlateBlue
SlateGray
Snow
SpringGreen
SteelBlue
Tan
Teal
Thistle
Tomato
Turquoise
Violet
Wheat
White
WhiteSmoke
Yellow
YellowGreen
|
Beispiel:
Das folgende Beispiel kombiniert 2 Balkendiagramme jeweils über Zu- und Abgänge eines Teils und ein Tortendiagramm der anteiligen Lagerbestände über alle Lager des Teils (jeweils in 3D-Darstellung).
In einem leeren Container innerhalb eines Dialogs im CGW wird mit folgenden SibDef-Angaben (Create-Event) ein Chart-Control eingebaut. Für die Serienbeschreibungen wird auf die INI-Sektion [infraChart] und den Schlüssel „MeinChart“ verwiesen:
[infraChart]
Series=infraChart,MeinChart
In der INI-Datei wird in der Sektion laut obigem CGW-Eintrag beim Schlüssel „MeinChart“ hinterlegt, aus welchen weiteren Einträgen die darzustellenden Serienbeschreibungen gelesen werden sollen. Die „ConnectionString“-Angabe kann entfallen, wenn für die Datenquelle eine universelle Verbindungsangabe beim infra:NET Server hinterlegt ist:
[infraChart]
ConnectionString="Data Source=(local);Initial Catalog=INFRA_ECHT;Integrated Security=True"
MeinChart=Serie1,Serie2,Serie3
Serie1="Summe AR",Area1,Legend1,Column,SummeAR,Interval=1,Area.3D
Serie2="Summe ZB",Area1,Legend1,Column,SummeZB,Interval=1
Serie3="Lagerbestand",Area2,Legend2,Pie,LagerBestand,Area.3D
SummeAR={
Select ISNULL(SUM(MngEff),0) As YValue, MONTH(BuchTerm) As XValue
From BEWEGUNG
Where Teil='$Macros[LBUF2(6,3)]'
AND BuchArt='AR'
AND YEAR(BuchTerm)>2011
Group by MONTH(BuchTerm)
}
SummeZB={
Select ISNULL(SUM(MngEff),0) As YValue, MONTH(BuchTerm) As XValue
From BEWEGUNG
Where Teil='$Macros[LBUF2(6,3)]'
AND BuchArt='ZB'
AND YEAR(BuchTerm)>2011
Group by MONTH(BuchTerm)
}
Lagerbestand={
Select LagBst As YValue, Lag As XValue
From LAGER
Where Teil='$Macros[LBUF2(6,3)]'
AND LagBst>0
}
Hinweis: Da in den Serienbeschreibungen auch mit Makros gearbeitet werden kann, wäre auch denkbar, einzelne Einstellungen (Settings) oder den Charttyp zum Beispiel per „GV(…)“ oder „ReadDlgField“ variabel aus einem Dialogfeld oder einer Auswahlliste im Dialog zu lesen. Um ein Chart-Control nach der Änderung einer solchen Einstellung neu aufzubauen, steht die infra:NET Prozedur „CBgCHARTAction“ zur Verfügung. Ein Beispiel für diese Anwendung steht mit dem Beispiel-Chart „Top Teile“ basierend auf dem Dialog „TOPTEILE“ im Charts.CGW und der Serienbeschreibung „TopTeileSingle“ der Charts.INI zur Verfügung. Hier werden in einer Auswahlliste alle verfügbaren Chart-Typen zum Ausprobieren angeboten.
