Benutzer-Werkzeuge

Webseiten-Werkzeuge


addons:reports

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
addons:reports [2016/12/06 19:06]
oesi
addons:reports [2019/08/13 13:48] (aktuell)
Zeile 1: Zeile 1:
 +[[:start| zurück zum Hauptmenü]]\\
 +
 ====== Reports ====== ====== Reports ======
  
 Mit dem Addon Reports können Auswertungen,​ Charts und Reports erstellt und in verschiedenen Formaten exportiert werden. Mit dem Addon Reports können Auswertungen,​ Charts und Reports erstellt und in verschiedenen Formaten exportiert werden.
- 
-===== Ablauf ===== 
-{{:​addons:​reportingablauf.png|}} 
  
 ===== Installation ===== ===== Installation =====
-==== Schritt 1 ====+==== Report Generierung ​==== 
 +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-german</​code>​ 
 +<​code>​apt-get install dblatex</​code>​ 
 +<​code>​apt-get install asciidoc</​code>​ 
 + 
 +==== PhantonJS - Bildexport ==== 
 Zum Exportieren von Charts und somit auch zum Erstellen von Reports wird [[http://​phantomjs.org/​|PhantomJS]] benötigt. Dieser kann auf einem eigenen Server laufen und ist bei vielen Distributionen enthalten.\\ Zum Exportieren von Charts und somit auch zum Erstellen von Reports wird [[http://​phantomjs.org/​|PhantomJS]] benötigt. Dieser kann auf einem eigenen Server laufen und ist bei vielen Distributionen enthalten.\\
 Debian:<​code>​apt-get install phantomjs</​code>​ Debian:<​code>​apt-get install phantomjs</​code>​
Zeile 16: 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 |}}
  
-ACHTUNGzum 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 |}}
-==== Schritt 2 ==== + 
-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 ===
 Achtung: Ubuntu verwendet erst ab Version 14.10 Systemd!\\ Achtung: Ubuntu verwendet erst ab Version 14.10 Systemd!\\
Zeile 39: 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 52: 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 60: Zeile 73:
 Username muss ersetzt werden! Username muss ersetzt werden!
  
 +\\
 == D - Status des Dienstes == == D - Status des Dienstes ==
  
Zeile 66: 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 74: 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ürzenoder 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.
  
-==== Schritt 3 ==== +===== Ablauf ===== 
-Nachdem ​die Chart-Exportierung funtioniert,​ müssen ​für die Generierung von Reports noch zusätzliche Pakete auf dem System installiert ​werden:\\+{{:​addons:​reportingablauf.png|}} 
 + 
 +===== Aufbau der Statistik ===== 
 +Statistiken bilden ​die Grundlage ​für Charts. 
 +Diese stellen ​die Daten bereit, die dann in Charts angezeigt ​werden
 +Der Aufbau der Statistik muss einem bestimmten Format folgen damit diese in Charts verwendet werden können. 
 +\\
 \\ \\
-<​code>​apt-get install texlive-lang-cyrillic</​code>​ + 
-<​code>​apt-get install texlive-lang-german</​code>​ +=== Normale Charts:​=== 
-<​code>​apt-get install dblatex</​code>​ +1. Spalte = Kategorie = X Unterteilungen / Gruppen\\ 
-<​code>​apt-get install asciidoc</​code>​+2. - x. Spalte = Serien\\ 
 +Value = Punkt\\ 
 +\\ 
 +<​code>​ 
 +  Y-Achse 
 +
 + | Val2 
 + | Val1 
 + | Val3 
 +
 +
 + ------------------------------------------------ X-Achse 
 + Kategorie1 Kategorie2 Kategorie3 Kategorie4 
 +  
 + Serie1 Serie2 Serie3 
 + 
 +</​code>​ 
 + 
 +Hier ein Beispiel für den Aufbau der Statistik mit den Studiensemestern als Kategorie und 3 Serien für die Studierendenanzahl:​ 
 +<​code>​ 
 + Anzahl Studierende M W 
 +WS2016 50 50 0 
 +WS2017 70 50 20 
 +WS2018 80 50 30 
 +</​code>​ 
 + 
 +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: 
 + 
 +<​code>​ 
 +Kategorie Serie ​                  ​Value 
 +  |            ​| ​                    | 
 +  V    ​V ​                    V 
 +  
 +as "​xAxis"​ as "​Serie" ​     as "​y" ​      as "​z"​ 
 +WS2016 '​Anzahl Studenten'​ 50 1 
 +WS2017 '​Anzahl Studenten'​ 70 1 
 +WS2018 '​Anzahl Studenten'​ 80 1 
 +WS2016 '​M'​ 50 1 
 +WS2017 '​M'​ 50 1 
 +WS2018 '​M'​ 50 1 
 +WS2016 '​W'​ 00 1 
 +WS2017 '​W'​ 20 1 
 +WS2018 '​W'​ 30 1 
 +</​code>​ 
 +//"​z"//​ muss hierbei angegeben werden, hat jedoch derzeit keine Auswirkung
  
 ===== Charts ===== ===== Charts =====
Zeile 94: Zeile 159:
 === Allgemein === === Allgemein ===
 Preferences werden im JSON-Format angegeben und müssen dem Aufbau der [[http://​api.highcharts.com/​highcharts|Highcharts]] entsprechen. Preferences werden im JSON-Format angegeben und müssen dem Aufbau der [[http://​api.highcharts.com/​highcharts|Highcharts]] entsprechen.
-Kommentare können pro Zeile mit<​code>//​ Ich bin ein Kommentar</​code>​oder mit<​code>/​* Ich bin ein Kommentar */</​code>​Zeilenübergreifend angegeben werden. 
  
 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.\\ 
-ACHTUNGWenn 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 141: 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 165: 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 188: Zeile 256:
 } }
 </​code>​ </​code>​
 +
 +\\
 +
 ===== Pivot ===== ===== Pivot =====
 ==== Preferences ==== ==== Preferences ====
Zeile 202: 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 232: Zeile 303:
 } }
 </​code>​ </​code>​
-AchtungWie man hier sieht, ​müssen ​Umlaute mit ihrem HTML-Code ​eingegeben ​werden. ​Auch bei jedem mal neu Speichernmü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ührendaher empfiehlt es sichden 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 |}}
/var/www/wiki/data/attic/addons/reports.1481047606.txt.gz · Zuletzt geändert: 2019/08/13 13:49 (Externe Bearbeitung)