Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
addons:reports [2016/12/19 14:05] oesi |
addons:reports [2019/08/13 13:48] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | [[:start| zurück zum Hauptmenü]]\\ | ||
+ | |||
====== Reports ====== | ====== Reports ====== | ||
Zeile 5: | Zeile 7: | ||
===== Installation ===== | ===== Installation ===== | ||
==== Report Generierung ==== | ==== Report Generierung ==== | ||
- | Damit die Generierung von Reports funktioniert, müssen folgende Pakete auf dem System installiert werden:\\ | + | Damit das Generieren von Reports funktioniert, müssen folgende Pakete auf dem System installiert sein:\\ |
\\ | \\ | ||
<code>apt-get install texlive-lang-cyrillic</code> | <code>apt-get install texlive-lang-cyrillic</code> | ||
Zeile 22: | Zeile 24: | ||
Zusätzlich wird die Datei [[https://github.com/FH-Complete/FHC-AddOn-Reports/blob/master/vendor/FHC-vendor/highcharts/exporting-server/phantomjs/highcharts-convert.js|highcharts-convert.js]] benötigt, welche auf dem Zielgerät vorhanden sein muss.\\ | Zusätzlich wird die Datei [[https://github.com/FH-Complete/FHC-AddOn-Reports/blob/master/vendor/FHC-vendor/highcharts/exporting-server/phantomjs/highcharts-convert.js|highcharts-convert.js]] benötigt, welche auf dem Zielgerät vorhanden sein muss.\\ | ||
\\ | \\ | ||
- | Sollten alle Voraussetzungen erfüllt sein, kann der Prozess mittels <code>phantomjs /pfad/zur/highcharts-convert.js -host 0.0.0.0 -port 3003</code>gestartet werden, wobei der Pfad, die IP Adresse und optional der Port angepasst werden müssen. Als IP MUSS die Eigene Adresse angegeben werden, andernfalls wird der Export nicht funktionieren!\\ | + | Sollten alle Voraussetzungen erfüllt sein, kann der Prozess mittels <code>phantomjs /pfad/zur/highcharts-convert.js -host 0.0.0.0 -port 3003</code>gestartet werden, wobei der Pfad, die IP-Adresse und optional der Port angepasst werden müssen. Als IP-Adresse **muss** die Eigene IP-Adresse angegeben werden, andernfalls wird der Export nicht funktionieren!\\ |
In der Datei "FHC/addons/reports/reports.config.inc.php" muss die Konstante "PHANTOM_SERVER" mit der selben Adresse(IP oder DNS) und dem selben Port eingetragen werden.\\ | In der Datei "FHC/addons/reports/reports.config.inc.php" muss die Konstante "PHANTOM_SERVER" mit der selben Adresse(IP oder DNS) und dem selben Port eingetragen werden.\\ | ||
- | Sollte der Prozess korrekt laufen, kann nun ein Chart Exportiert werden: | + | Sollte der Prozess korrekt laufen, kann nun ein Chart exportiert werden: |
{{ :addons:hc_export.png?direct |}} | {{ :addons:hc_export.png?direct |}} | ||
- | ACHTUNG: zum Testen sollte entweder PNG oder JPEG verwendet weren, da bei SVG der PhantomJS NICHT verwendet wird und bei PDF der Dokumentenexport involviert ist und somit unoconv benötigt wird!\\ | + | {{:icon_achtung.png?25 |}} Zum Testen sollte entweder PNG oder JPEG verwendet weren, da bei SVG der PhantomJS **nicht** verwendet wird und bei PDF der Dokumentenexport involviert ist und somit unoconv benötigt wird!\\ |
- | Sollte nun ein Bild heruntergeladen worden seien, funktioniert der Export. | + | |
+ | Sollte nun ein Bild heruntergeladen worden sein, funktioniert der Export. | ||
{{ :addons:hc_export_generated_picture.png?direct |}} | {{ :addons:hc_export_generated_picture.png?direct |}} | ||
- | Sollte der erste Export Funktionieren, gibt es nun 2 Möglichkeiten, um den Phantomjs prozess Dauerhaft laufen zu lassen | + | |
+ | Sollte der erste Export funktionieren, gibt es nun 2 Möglichkeiten, um den Phantomjs prozess dauerhaft laufen zu lassen: | ||
=== Systemd === | === Systemd === | ||
Zeile 46: | Zeile 50: | ||
[Service] | [Service] | ||
- | ExecStart=/usr/bin/phantomjs /pfad/zur/highcharts-convert.js -host 0.0.0.0 -port 3003 | + | Environment="QT_QPA_FONTDIR=/usr/share/fonts/truetype/dejavu" |
+ | ExecStart=/usr/bin/phantomjs /pfad/zur/highcharts-convert.js -host 0.0.0.0 -port 3003 -platform offscreen | ||
KillMode=process | KillMode=process | ||
Restart=on-failure on-abort | Restart=on-failure on-abort | ||
Zeile 59: | Zeile 64: | ||
<code>systemctl daemon-reload</code> | <code>systemctl daemon-reload</code> | ||
- | ACHTUNG: dieser Befehl muss nach jeder Änderung der Datei erneut ausgeführt werden! | ||
+ | {{:icon_achtung.png?25 |}} Dieser Befehl muss nach jeder Änderung der Datei erneut ausgeführt werden! | ||
+ | \\ | ||
== C - Dienst starten == | == C - Dienst starten == | ||
Zeile 67: | Zeile 73: | ||
Username muss ersetzt werden! | Username muss ersetzt werden! | ||
+ | \\ | ||
== D - Status des Dienstes == | == D - Status des Dienstes == | ||
Zeile 73: | Zeile 79: | ||
Im Idealfall sollte hier nun "active (running)" ausgegeben werden.\\ | Im Idealfall sollte hier nun "active (running)" ausgegeben werden.\\ | ||
{{ :addons:systemd_active_output.png?direct&300 |}} | {{ :addons:systemd_active_output.png?direct&300 |}} | ||
- | Sollte der Dienst nun NICHT aktiv sein, fehlen dem Benutzer/der Gruppe wahrscheinlich diverse Rechte. Um dieses Problem testweise zu umgehen, kann die Gruppe und/oder der User in der Service-Datei auf root geändert werden(Schritt B nicht vergessen!) und der Dienst mittels <code>systemctl restart phantomjs@[USERNAME]</code> neu gestartet werden. | + | Sollte der Dienst nun **nicht** aktiv sein, fehlen dem Benutzer/der Gruppe wahrscheinlich diverse Rechte. Um dieses Problem testweise zu umgehen, kann die Gruppe und/oder der Benutzer in der Service-Datei auf //root// geändert (Schritt B nicht vergessen!) und der Dienst mittels <code>systemctl restart phantomjs@[USERNAME]</code> neu gestartet werden. |
+ | \\ | ||
== E - Dauerhaft einstellen == | == E - Dauerhaft einstellen == | ||
Um den Dienst automatisch zu starten, muss | Um den Dienst automatisch zu starten, muss | ||
Zeile 81: | Zeile 87: | ||
ausgeführt werden. | ausgeführt werden. | ||
+ | \\ | ||
== Mehr Info == | == Mehr Info == | ||
[[:systemd|SystemD - Wiki]] | [[:systemd|SystemD - Wiki]] | ||
+ | \\ | ||
=== Fork === | === Fork === | ||
- | Die einfache variante wäre, den Prozess mittels <code>phantomjs /pfad/zur/highcharts-convert.js -host 0.0.0.0 -port 3003 &</code> zu forken. Dollte der Prozess jedoch abstürzen, oder der Server rebooten, muss er jedes mal von Hand neu gestartet werden. | + | Die einfache Variante wäre, den Prozess mittels <code>phantomjs /pfad/zur/highcharts-convert.js -host 0.0.0.0 -port 3003 &</code> zu forken. Sollte der Prozess jedoch abstürzen oder ein Server-Reboot erforderlich sein, muss er jedes mal manuell neu gestartet werden. |
===== Ablauf ===== | ===== Ablauf ===== | ||
Zeile 98: | Zeile 105: | ||
\\ | \\ | ||
\\ | \\ | ||
- | Normale Charts:\\ | + | |
- | \\ | + | === Normale Charts:=== |
1. Spalte = Kategorie = X Unterteilungen / Gruppen\\ | 1. Spalte = Kategorie = X Unterteilungen / Gruppen\\ | ||
- | 2-x. Spalte = Serien\\ | + | 2. - x. Spalte = Serien\\ |
Value = Punkt\\ | Value = Punkt\\ | ||
\\ | \\ | ||
Zeile 121: | Zeile 128: | ||
Hier ein Beispiel für den Aufbau der Statistik mit den Studiensemestern als Kategorie und 3 Serien für die Studierendenanzahl: | Hier ein Beispiel für den Aufbau der Statistik mit den Studiensemestern als Kategorie und 3 Serien für die Studierendenanzahl: | ||
<code> | <code> | ||
- | Anzahl Studenten M W | + | Anzahl Studierende M W |
WS2016 50 50 0 | WS2016 50 50 0 | ||
WS2017 70 50 20 | WS2017 70 50 20 | ||
Zeile 127: | Zeile 134: | ||
</code> | </code> | ||
- | Bei dieser Art von Statistik muss die Bezeichnung der Serien fixiert sein. Wenn die Serien dynamisch auf Grund des Inhalts erstellt werden sollen, dann muss die Option FHCSeriesType (yz) verwendet werden. | + | Bei dieser Art von Statistik muss die Bezeichnung der Serien fixiert sein. Wenn die Serien dynamisch aufgrund des Inhalts erstellt werden sollen, muss die Option FHCSeriesType (yz) verwendet werden. |
Statistiken von Charts mit dieser Option benötigen folgenden Aufbau: | Statistiken von Charts mit dieser Option benötigen folgenden Aufbau: | ||
Zeile 146: | Zeile 153: | ||
WS2018 'W' 30 1 | WS2018 'W' 30 1 | ||
</code> | </code> | ||
- | z muss hierbei angegeben werden, hat jedoch derzeit keine Auswirkung | + | //"z"// muss hierbei angegeben werden, hat jedoch derzeit keine Auswirkung |
===== Charts ===== | ===== Charts ===== | ||
Zeile 155: | Zeile 162: | ||
In diesem Beispiel wird die Rotation der Labels an der X-Achse auf 90° geändert. | In diesem Beispiel wird die Rotation der Labels an der X-Achse auf 90° geändert. | ||
In "series" wird die Anzeige des Datensatzes "Gesamt" auf ein Balkendiagramm geändert und "Inland" auf ein Tortendiagramm. | In "series" wird die Anzeige des Datensatzes "Gesamt" auf ein Balkendiagramm geändert und "Inland" auf ein Tortendiagramm. | ||
- | Mit "center" und "size" kann das Zentrum und die Größe manipuliert werden. Hier werden Prozentwerte angegeben, jedoch kann man, mit dem weglassen des "%" Zeichens auch Pixelwerte verwenden. | + | Mit "center" und "size" kann das Zentrum und die Größe manipuliert werden. Hier werden Prozentwerte angegeben, durch Weglassen des "%"-Zeichens können jedoch ebenso Pixelwerte verwendet werden. |
- | Mit der Einstellung "zIndex" kann manipuliert werden, ob der entsprechende Chart weiter in den Vordergrund oder in den Hintergrund gerückt werden soll.\\ | + | Mit der Einstellung "zIndex" lässt sich manipulierrn, ob der entsprechende Chart weiter in den Vordergrund oder in den Hintergrund gerückt werden soll.\\ |
- | Mehrere Achsen können mit dem Array "yAxis" angegeben werden. Hier kann per '"opposite": true' angegeben werden, dass sie auf der rechten Seite gezeichnet wird. Später kann bei "series" eine Serie per z.B.: "yAxis":0 auf die erste Achse gehängt werden.\\ | + | Mehrere Achsen können mithilfe des Arrays "yAxis" angegeben werden. Hier kann per '"opposite": true' angegeben werden, dass sie auf der rechten Seite gezeichnet wird. Später kann bei "series" eine Serie per z.B.: "yAxis":0 auf die erste Achse gehängt werden.\\ |
- | ACHTUNG: Wenn eine Serie auf eine nicht existente Achse gehängt wird, funktioniert der Chart nicht! -> in der JS-Konsole wird der Highcharts-Fehler #18 ausgegeben.\\ | + | |
- | Sollte keine yAchse definiert werden, wird automatisch eine ohne Namen hinzugefügt.\\ | + | |
- | Standardmäßig werden Serien auf die Achse #0 gehängt.\\ | + | {{:icon_achtung.png?25 |}} Wird eine Serie auf eine nicht existente Achse gehängt, funktioniert der Chart nicht!\\ (-> in der JS-Konsole wird der Highcharts-Fehler #18 ausgegeben) |
+ | \\ | ||
+ | |||
+ | Sollte keine yAchse definiert werden, wird automatisch eine ohne Namen hinzugefügt. Standardmäßig werden Serien auf die Achse #0 gehängt.\\ | ||
<code Javascript> | <code Javascript> | ||
Zeile 198: | Zeile 208: | ||
</code> | </code> | ||
- | Im Folgenden Beispiel wird das Zoomen verhindert und der generelle Typ des Charts auf ein Tortendiagramm verändert. Der generelle Typ sollte NUR bei Drilldown Charts manipuliert werden. Bei allen anderen kann dieser über "Vilesci -> Addons -> Reports -> Chart -> (gewünschter Chart) -> Type" geändert werden. | + | Im Folgenden Beispiel wird das Zoomen verhindert und der generelle Typ des Charts auf ein Tortendiagramm verändert. Der generelle Typ sollte **nur bei Drilldown-Charts** manipuliert werden. Bei allen anderen kann dieser über //VileSci -> Addons -> Reports -> Chart -> (gewünschter Chart) -> Type// geändert werden. |
<code Javascript> | <code Javascript> | ||
Zeile 222: | Zeile 232: | ||
</code> | </code> | ||
wird. | wird. | ||
+ | |||
=== Boxplot === | === Boxplot === | ||
Bei Boxplots muss darauf geachtet werden, dass 5 Spalten übergeben werden. Diese repräsentieren der Reihe nach unsere Boxplots: unterer Strich -> Anfang der Box -> Strich in der Box -> Ende der Box -> oberer Strich.\\ | Bei Boxplots muss darauf geachtet werden, dass 5 Spalten übergeben werden. Diese repräsentieren der Reihe nach unsere Boxplots: unterer Strich -> Anfang der Box -> Strich in der Box -> Ende der Box -> oberer Strich.\\ | ||
- | Anschließend muss in den Preferences der Typ "boxplot", wie im Beispiel gesetzt werden.\\ | + | |
- | Mit der Option "FHCBoxplotType" kann die Matritze der Boxplots gedreht werden.\\ | + | Anschließend muss in den Preferences der Typ "boxplot", wie im Beispiel gesetzt werden. Mit der Option "FHCBoxplotType" kann die Matritze der Boxplots gedreht werden. Bei einem "Tick" handelt es sich um eine Hilfslinie im Chart |
- | Bei einem "Tick" handelt es sich um eine Hilfslinie im Chart | + | |
<code javascript> | <code javascript> | ||
{ | { | ||
Zeile 245: | Zeile 256: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
===== Pivot ===== | ===== Pivot ===== | ||
==== Preferences ==== | ==== Preferences ==== | ||
Zeile 259: | Zeile 273: | ||
Mit dem String ''rendererName'' kann der Standard-Renderer angepasst werden.\\ | Mit dem String ''rendererName'' kann der Standard-Renderer angepasst werden.\\ | ||
Mit dem String ''aggregatorName'' kann der Standard-Aggregator angepasst werden.\\ | Mit dem String ''aggregatorName'' kann der Standard-Aggregator angepasst werden.\\ | ||
- | Mit dem Array ''vals'' kann der Standard-Wert angepasst werden(ist handelt sich zwar um einen Array, jedoch wird immer nur der Erste benutzt!).\\ | + | Mit dem Array ''vals'' kann der Standard-Wert angepasst werden(handelt sich zwar um einen Array, jedoch wird immer nur der Erste benutzt!).\\ |
Mit dem Array ''hiddenAttributes'' können Attribute versteckt werden.\\ | Mit dem Array ''hiddenAttributes'' können Attribute versteckt werden.\\ | ||
- | Mit dem Objekt ''aggregators'' können neue Aggregatoren hinzugefügt werden(Alte werden dabei überschrieben!).\\ | + | Mit dem Objekt ''aggregators'' können neue Aggregatoren hinzugefügt werden (bisherige werden dabei überschrieben!).\\ |
- | Mit ''deFormat'' wird das Deutsche Format erzwungen(z.B.: Komma statt Punkt)\\ | + | Mit ''deFormat'' wird das deutsche Format erzwungen(z.B.: Komma statt Punkt)\\ |
- | Mit ''deFormatInt'' wird das Deutsche Ganzzahlen-Format erzwungen\\ | + | Mit ''deFormatInt'' wird das deutsche Ganzzahlen-Format erzwungen\\ |
<code javascript> | <code javascript> | ||
Zeile 289: | Zeile 303: | ||
} | } | ||
</code> | </code> | ||
- | Achtung: Wie man hier sieht, müssen Umlaute mit ihrem HTML-Code eingegeben werden. Auch bei jedem mal neu Speichern, müssen die Umlaute erneut geändert werden! Es bietet sich an den Code in einem Editior zu schreiben und jedes mal neu in die Preferences hinein zu kopieren. | + | |
+ | {{:icon_achtung.png?25 |}} Umlaute müssen in ihrem HTML-Code angegeben werden. Dies ist bei jedem Speichervorgang erneut durchzuführen, daher empfiehlt es sich, den Code zuerst in einem Editior zu schreiben und anschließend jedes Mal neu in die Preferences zu kopieren. | ||
{{ :addons:pivot_all_preferences.png?direct |}} | {{ :addons:pivot_all_preferences.png?direct |}} |