Compare commits

..

24 Commits

Author SHA1 Message Date
Daniel Quathamer 9520aa9a85 Obsolete files #5 3 months ago
Daniel Quathamer 8812dc9ce5 Worldmap erster Entwurf im Diagrammassistent #8 5 months ago
Daniel Quathamer 1dadb01b8f Bugfix Dashboard Makro Felder in Tabelle #7 5 months ago
Daniel Quathamer ca7fe77e23 Neue Spalte viz_chart.miniature #1 10 months ago
Daniel Quathamer 34db5db154 VIZ Sparklines und -bars #7 12 months ago
Daniel Quathamer 4f8524b7df Viz Dashboard Layout #7 12 months ago
Daniel Quathamer af3c264e66 New Column viz_chart.chartmodel_miniature 12 months ago
Daniel Quathamer d1608e602c Remove obsolete code 1 year ago
Daniel Quathamer d548e7ae38 Farbschema erweitert, Dashboard Beschreibungstexte #7 1 year ago
Daniel Quathamer dc300677cd Beispiel Dashboard Studierenden Entwicklung #7 1 year ago
Daniel Quathamer 8540d1b652 Viewer-XSL, Makroberichte #4 1 year ago
Daniel Quathamer 155c5e4fc7 Viewer-XSL, Makroberichte #4 1 year ago
Daniel Quathamer c4355fa476 Viewer-XSL, Makroberichte #4 1 year ago
Daniel Quathamer 45e73ec4fa Formatierung Schrift Sankey Charts #6 2 years ago
Daniel Quathamer 280d1f67f8 Bugfix Flächendiagramm #3 2 years ago
Daniel Quathamer ec3b2811a5 Embedding in H1 #5 2 years ago
Daniel Quathamer 2675724827 Exclude unused Properties when using renderer d3js #6 2 years ago
Daniel Quathamer 908c18aaad Bugfixes Serienfarbe, FontSize #3 2 years ago
Daniel Quathamer f9483e2da1 Sankey Charts mit D3 V7.8 License file #6 2 years ago
Daniel Quathamer 520e622902 Sankey Charts mit D3 V7.8 #6 2 years ago
Daniel Quathamer 3963c0c7d7 Gruppierung Properties, CopyPaste ChartModel #5 2 years ago
Daniel Quathamer 66ede59762 Sankey Chart #6 2 years ago
Daniel Quathamer f75010b5b5 Refactoring chartProperties für D3 #6 2 years ago
Daniel Quathamer 732a3b84ea Erster Entwurf Sankey Chart #6 2 years ago
  1. 21
      .gitignore
  2. 12
      src-modules/module/viz/conf/includes.txt
  3. 103
      src-modules/module/viz/conf/viz.xml
  4. 2
      src-modules/module/viz/masken/44000_felderinfo.unl
  5. 2
      src-modules/module/viz/masken/44000_masken_felder_bez.unl
  6. 90
      src-modules/module/viz/masken/44000_maskeninfo.unl
  7. 2
      src-modules/module/viz/masken/44000_sachgeb_maske_bez.unl
  8. 37
      src-modules/module/viz/masken/44020_felderinfo.unl
  9. 1
      src-modules/module/viz/masken/44020_maske_system_bez.unl
  10. 23
      src-modules/module/viz/masken/44020_masken_felder_bez.unl
  11. 1
      src-modules/module/viz/masken/44020_maskeninfo.unl
  12. 1
      src-modules/module/viz/masken/44020_sachgeb_maske_bez.unl
  13. 25
      src-modules/module/viz/masken/44070_felderinfo.unl
  14. 1
      src-modules/module/viz/masken/44070_maske_system_bez.unl
  15. 21
      src-modules/module/viz/masken/44070_masken_felder_bez.unl
  16. 457
      src-modules/module/viz/masken/44070_maskeninfo.unl
  17. 1
      src-modules/module/viz/masken/44070_sachgeb_maske_bez.unl
  18. 185
      src-modules/module/viz/schluesseltabellen/customxmladd.sql
  19. 215
      src-modules/module/viz/schluesseltabellen/macro_masken_bez_fuellen.sql
  20. 7
      src-modules/module/viz/schluesseltabellen/sachgebiete_fuellen.sql
  21. 32
      src-modules/module/viz/schluesseltabellen/sx_stylesheets_einfuegen.sql
  22. 182
      src-modules/module/viz/schluesseltabellen/sx_stylesheets_einfuegen_ba_ma_sankey.sql
  23. 9
      src-modules/module/viz/schluesseltabellen/viz_chart.unl
  24. 105
      src-modules/module/viz/schluesseltabellen/viz_property.unl
  25. 21
      src-modules/module/viz/schluesseltabellen/viz_property_group.unl
  26. 2
      src-modules/module/viz/schluesseltabellen/viz_property_group_renderer.unl
  27. 7
      src-modules/module/viz/schluesseltabellen/viz_property_renderer.unl
  28. 2
      src-modules/module/viz/schluesseltabellen/viz_renderer.unl
  29. 21
      src-modules/module/viz/schluesseltabellen/viz_type.unl
  30. 421
      src-modules/module/viz/schluesseltabellen/viz_type_property.unl
  31. 21
      superx/style/LICENSE_bulma_tooltip_1.2.0.txt
  32. 2
      superx/style/bulma-tooltip.min.css
  33. 38
      superx/style/sx_viz_muster.css
  34. 128
      superx/xml/30190_html_chart_sankey.xsl
  35. 124
      superx/xml/30220_html_chart_sankey.xsl
  36. 27
      superx/xml/js/viz/d3-sankey-license.txt
  37. 425
      superx/xml/js/viz/d3-sankey.js
  38. 1552
      superx/xml/js/viz/viz_functions.js
  39. 251
      superx/xml/pageComponents_html_final_viz.xsl.sam
  40. 1310
      superx/xml/tabelle_html_viz.xsl
  41. 1115
      superx/xml/tabelle_html_viz_cockpit.xsl
  42. 536
      superx/xml/viz_components.xsl
  43. 1219
      superx/xml/viz_demo.html
  44. 1934
      superx/xml/viz_html_chart.xsl
  45. 34
      superx/xml/viz_html_chart_sankey.xsl
  46. 304
      superx/xml/viz_html_chart_viewer.xsl
  47. 1314
      superx/xml/viz_tableComponents.xsl

21
.gitignore vendored

@ -1 +1,20 @@ @@ -1 +1,20 @@
/build/
superx/WEB-INF/conf/edustore/db/module/viz/
# module generation artifacts for module viz
src/edustore/edustore_viz.xml
superx/WEB-INF/viz_dbforms-config_ids.xml
superx/WEB-INF/viz_dbforms-config_pg.xml
# Use wildcards as well
*~
*.swp
*ENV
*.old*
*tmp*
*.log
*.log.*
*.err
*.class
*.zip
*.tar*
*.tgz
*.jasper

12
src-modules/module/viz/conf/includes.txt

@ -5,13 +5,21 @@ images/information_grey_liberation.svg @@ -5,13 +5,21 @@ images/information_grey_liberation.svg
images/plus-circled.svg
images/minus-circled.svg
style/sx_viz_muster.css
style/bulma.css
style/bulma-tooltip.min.css
style/LICENSE_bulma_tooltip_1.2.0.txt
WEB-INF/conf/edustore/db/bin/SQL_ENV_viz.sam
xml/js/viz/viz_functions.js
xml/js/viz/d3.min.js
xml/js/viz/d3-7.8.0-license.txt
xml/js/viz/plot.js
xml/js/viz/plot-0.6.1-license.txt
xml/js/viz/d3-sankey.js
xml/js/viz/d3-sankey-license.txt
xml/js/viz/viz_functions.js
xml/pageComponents_html_final_viz.xsl.sam
xml/viz_html_chart.xsl
xml/viz_html_chart_sankey.xsl
xml/viz_html_chart_viewer.xsl
xml/tabelle_html_viz.xsl
xml/viz_components.xsl
xml/viz_tableComponents.xsl

103
src-modules/module/viz/conf/viz.xml

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE module SYSTEM "../../../conf/superx-module.dtd"> -->
<module name="viz" version="0.2b" sachgebiet_id="320"
<module name="viz" version="0.3b" sachgebiet_id="320"
sachgebiet="Visualisierungen" systeminfo_id="320"
system="Visualisierungen" thema="Visualisierungen" thema_parent="Abfragen">
<database name="superx" system="superx">
@ -19,6 +19,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" /> @@ -19,6 +19,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" />
<column name="renderer_id" type="INTEGER" size="4" default="" notnull="false" description="Renderer" isKey="false"/>
<column name="srcpath" type="VARCHAR" size="255" default="" notnull="false" description="Pfad zum Quellcode" isKey="false"/>
<column name="method" type="VARCHAR" size="255" default="" notnull="false" description="Methode" isKey="false"/>
<column name="orientation" type="CHAR" size="1" default="" notnull="false" description="Orientierung" isKey="false"><comment>Grafik horizontal (H) oder vertikal (V)</comment></column>
</columns>
<primaryKeys><rs>
@ -107,15 +108,25 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" /> @@ -107,15 +108,25 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" />
</indexes>
</table>
<table name="viz_chart" thema="Visualisierungen" typ="Datentabelle"
releaseUnload="empty">
releaseUnload="demo">
<description>Diagrammentwürfe</description>
<columns>
<column name="tid" type="SERIAL" size="" default="" notnull="true" description="tid" isKey="true"/>
<column name="uniquename" type="VARCHAR" size="255" default="" notnull="true" description="Unique Name" />
<column name="caption" type="VARCHAR" size="255" default="" notnull="" description="Bezeichnung" />
<column name="viz_type_id" type="INTEGER" size="255" default="" notnull="" description="Art des Diagramms" />
<column name="preview_svg" type="TEXT" size="255" default="" notnull="" description="Vorschau (SVG)" />
<column name="tid" type="SERIAL" size="" default="" notnull="true" description="tid" isKey="true"/>
<column name="uniquename" type="VARCHAR" size="255" default="" notnull="true" description="Unique Name" />
<column name="caption" type="VARCHAR" size="255" default="" notnull="" description="Bezeichnung" />
<column name="description" type="TEXT" size="255" default="" notnull="" description="Beschreibung" />
<column name="chartmodel" type="TEXT" size="255" default="" notnull="" description="Quellcode des Diagramms" />
<column name="preview_svg" type="TEXT" size="255" default="" notnull="" description="Vorschau (SVG)" />
<column name="userinfo_id" type="INTEGER" size="255" default="" notnull="" description="Angelegt von" />
<column name="creation_date" type="DATE" size="255" default="today()" notnull="" description="Angelegt (Datum)" />
<column name="update_date" type="DATE" size="255" default="today()" notnull="" description="Letzte Änderung (Datum)" />
<column name="maskeninfo_id" type="INTEGER" size="255" default="" notnull="" description="Maske" />
<column name="mask_params" type="TEXT" size="255" default="" notnull="" description="Maskenparameter" />
<column name="renderer_id" type="INTEGER" size="" default="" notnull="false" description="Renderer" isKey="true"/>
<column name="chartmodel_miniature" type="TEXT" size="255" default="" notnull="" description="Quellcode des Diagramms (Miniatur)" />
<column name="chart_position" type="CHAR" size="10" default="" notnull="" description="Position des Diagramms"><comment>CENTER,TOP,BOTTOM,LEFT,RIGHT,INLINE</comment></column>
</columns>
<primaryKeys><rs>
<row>
@ -132,7 +143,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" /> @@ -132,7 +143,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" />
</indexes>
</table>
<table name="viz_chart_property" thema="Visualisierungen" typ="Datentabelle"
<!--<table name="viz_chart_property" thema="Visualisierungen" typ="Datentabelle"
releaseUnload="empty">
<description>Eigenschaften für Diagrammentwürfe</description>
<columns>
@ -156,7 +167,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" /> @@ -156,7 +167,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" />
<indexes>
</indexes>
</table>
</table>-->
<table name="viz_property" thema="Administration" typ="Schlüsseltabelle"
releaseUnload="empty">
<description>Schlüsseltabelle für Eigenschaften von Visualisieren</description>
@ -202,6 +213,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" /> @@ -202,6 +213,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" />
<column name="viz_type_id" type="INTEGER" size="" default="" notnull="false" description="Diagrammtyp" isKey="true"/>
<column name="viz_property_id" type="INTEGER" size="255" default="" notnull="" description="Eigenschaft der Visualisierung" isKey="true"/>
<column name="is_mandatory" type="SMALLINT" size="255" default="0" notnull="false" description="Pflichteingabe" ><comment>1=ja, 0=nein</comment></column>
<column name="sortnr" type="SMALLINT" size="255" default="0" notnull="false" description="Sortiernr." sortable="true" ><comment></comment></column>
</columns>
<primaryKeys><rs>
@ -313,7 +325,7 @@ and G.uniquename in ('CATEGORY','MEASURE') @@ -313,7 +325,7 @@ and G.uniquename in ('CATEGORY','MEASURE')
</functions>
<themen>
<thema name="Administration Visualisierungen"
parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </thema>
parent="Visualisierungen">Abfragen zur Administration von Visualisierungen </thema>
</themen>
<masken>
@ -323,7 +335,19 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the @@ -323,7 +335,19 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the
<path>$VIZ_PFAD/masken</path>
</src>
</maske>
<maske tid="44020" name="Studierende Datenblatt (Teiltabelle)" thema="Visualisierungen">
<description>Teiltabelle für Makrobericht Studierende gesamt / 1. FS / 1.HS </description>
<src>
<path>$VIZ_PFAD/masken</path>
</src>
</maske>
<maske tid="44070" name="Studierenden-Entwicklung" thema="Visualisierungen">
<description>Makrobericht Studierende gesamt / 1. FS / 1.HS </description>
<src>
<path>$VIZ_PFAD/masken</path>
</src>
</maske>
</masken>
<data-integrity>
@ -337,11 +361,20 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the @@ -337,11 +361,20 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the
<relation-column from="tid" to="viz_property_id" />
</relation>
<!--viz_chart-->
<relation from="viz_type" to="viz_chart" delete="FALSE"
<relation from="viz_renderer" to="viz_chart" delete="FALSE"
displayType="select" visibleFields="caption" format="%s">
<relation-column from="tid" to="viz_type_id" />
<relation-column from="tid" to="renderer_id" />
</relation>
<relation from="userinfo" to="viz_chart" delete="FALSE"
displayType="select" visibleFields="name" format="%s">
<relation-column from="tid" to="userinfo_id" />
</relation>
<!--viz_chart_property-->
<relation from="maskeninfo" to="viz_chart" delete="FALSE"
displayType="select" visibleFields="name" format="%s">
<relation-column from="tid" to="maskeninfo_id" />
</relation>
<!--viz_chart_property
<relation from="viz_chart" to="viz_chart_property" delete="FALSE"
displayType="select" visibleFields="caption" format="%s">
<relation-column from="tid" to="viz_chart_id" />
@ -349,7 +382,7 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the @@ -349,7 +382,7 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the
<relation from="viz_property" to="viz_chart_property" delete="FALSE"
displayType="select" visibleFields="caption" format="%s">
<relation-column from="tid" to="viz_property_id" />
</relation>
</relation>-->
<!--viz_property-->
<relation from="viz_property_input_type" to="viz_property" delete="FALSE"
displayType="select" visibleFields="caption" format="%s">
@ -410,6 +443,10 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the @@ -410,6 +443,10 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_property_input_type"><file path="$VIZ_PFAD/schluesseltabellen/viz_property_input_type.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_property_group"><file path="$VIZ_PFAD/schluesseltabellen/viz_property_group.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_renderer"><file path="$VIZ_PFAD/schluesseltabellen/viz_renderer.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_property_renderer"><file path="$VIZ_PFAD/schluesseltabellen/viz_property_renderer.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_property_group_renderer"><file path="$VIZ_PFAD/schluesseltabellen/viz_property_group_renderer.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_type_property"><file path="$VIZ_PFAD/schluesseltabellen/viz_type_property.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_chart"><file path="$VIZ_PFAD/schluesseltabellen/viz_chart.unl"/></loadtable>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/sachgebiete_fuellen.sql" database=""/>
<!--
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_type_type"><file path="$VIZ_PFAD/schluesseltabellen/viz_type_type.unl"/></loadtable>
@ -418,6 +455,7 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the @@ -418,6 +455,7 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the
-->
<!--<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/sx_jobs_fuellen.sql" database=""/>-->
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/sx_stylesheets_einfuegen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/macro_masken_bez_fuellen.sql" database=""/>
</action>
@ -429,10 +467,19 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the @@ -429,10 +467,19 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the
<upgrade-step>
<action error="stop">
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_type"><file path="$VIZ_PFAD/schluesseltabellen/viz_type.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_property"><file path="$VIZ_PFAD/schluesseltabellen/viz_property.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_property_input_type"><file path="$VIZ_PFAD/schluesseltabellen/viz_property_input_type.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_property_group"><file path="$VIZ_PFAD/schluesseltabellen/viz_property_group.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_renderer"><file path="$VIZ_PFAD/schluesseltabellen/viz_renderer.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_property_renderer"><file path="$VIZ_PFAD/schluesseltabellen/viz_property_renderer.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_property_group_renderer"><file path="$VIZ_PFAD/schluesseltabellen/viz_property_group_renderer.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="viz_type_property"><file path="$VIZ_PFAD/schluesseltabellen/viz_type_property.unl"/></loadtable>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/sachgebiete_fuellen.sql" database=""/>
</action>
<action error="stop">
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/sx_stylesheets_einfuegen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/macro_masken_bez_fuellen.sql" database=""/>
</action>
<action>
@ -459,7 +506,7 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the @@ -459,7 +506,7 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the
table="viz_chart"
path="/edit/viz/viz_chart_list.jsp"
followUp=""
caption="Diagramme verwalten"
caption="Diagrammentwürfe verwalten"
orderBy="caption"
gotoHt=""
helpfile=""
@ -478,7 +525,7 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the @@ -478,7 +525,7 @@ parent="Masken verwalten">Abfragen zur Administration von Visualisierungen </the
table="viz_chart"
path="/edit/viz/viz_chart_edit.jsp"
followUp=""
caption="Diagramme bearbeiten"
caption="Diagrammenwürfe bearbeiten"
orderBy="caption"
gotoHt=""
helpfile=""
@ -487,14 +534,21 @@ maxRows="1" @@ -487,14 +534,21 @@ maxRows="1"
mode="full">
<description>In diesem Formular können Sie Diagramme verwalten.</description>
<filters>
<filter mandatory="true" type="equals">tid</filter>
<filter mandatory="false" type="equals">tid</filter>
<filter mandatory="false" type="equals">created_by</filter>
</filters>
<field-selection complete="false" />
<customfield name="tid" />
<customfield name="caption" visibleSize="50" nullFieldValue="" />
<customfield name="uniquename" visibleSize="50" nullFieldValue="" />
<customfield name="viz_type_id" visibleSize="10" nullFieldValue="" />
<customfield name="description" visibleSize="50" nullFieldValue="" />
<customfield name="maskeninfo_id" visibleSize="10" nullFieldValue="" />
<customfield name="mask_params" visibleSize="10" nullFieldValue="" />
<customfield name="renderer_id" visibleSize="10" nullFieldValue="" />
<customfield name="chartmodel" visibleSize="10" nullFieldValue="" />
<customfield name="chartmodel_miniature" visibleSize="10" nullFieldValue="" />
<customfield name="preview_svg" visibleSize="80" nullFieldValue="" />
<customfield name="chart_position" visibleSize="10" nullFieldValue="" />
</form>
@ -507,6 +561,7 @@ mode="full"> @@ -507,6 +561,7 @@ mode="full">
gotoHt=""
helpfile=""
maxRows="*"
javascriptFieldsArray="true"
mode="full">
<description>In diesem Formular können Sie Diagrammtypen verwalten. Im Details-Formular können Sie Eigenschaften zuordnen.</description>
<filters>
@ -526,10 +581,10 @@ mode="full"> @@ -526,10 +581,10 @@ mode="full">
orderBy="caption"
gotoHt=""
helpfile=""
javascriptFieldsArray="true"
maxRows="1"
mode="full">
<description>In diesem Formular können Sie Diagramme verwalten.</description>
<description>In diesem Formular können Sie Diagrammelemente verwalten.</description>
<filters>
<filter mandatory="true" type="equals">tid</filter>
</filters>
@ -538,15 +593,17 @@ mode="full"> @@ -538,15 +593,17 @@ mode="full">
<customfield name="caption" visibleSize="50" nullFieldValue="" />
<customfield name="uniquename" visibleSize="10" nullFieldValue="" />
<customfield name="renderer_id" nullFieldValue="" visibleSize="30" />
<customfield name="orientation" nullFieldValue="" visibleSize="30" />
<customfield name="Dimensionen und Maße" type="subform" multipart="false" autoUpdate="false"
maxRows="*" table="viz_type_property" parentField="tid" childField="viz_type_id"
orderBy="viz_property_id" allowNew="true"
orderBy="sortnr" allowNew="true"
mode="full">
<field-selection complete="false" />
<customfield name="tid" nullFieldValue="" />
<customfield name="viz_type_id" type="hidden" overrideValue="tid" />
<customfield name="viz_property_id" nullFieldValue="" visibleSize="30" />
<customfield name="is_mandatory" visibleSize="10" nullFieldValue="" />
<customfield name="sortnr" visibleSize="10" nullFieldValue="" />
</customfield>
</form>

2
src-modules/module/viz/masken/44000_felderinfo.unl

@ -1,8 +1,6 @@ @@ -1,8 +1,6 @@
44000^Benutzer/in^50^0^0^150^200^1^integer^200^0^1^<<SQL>> select tid,nvl(name,benutzer) from userinfo order by 2;^hidden^^
44001^Ausgabetabelle^10^0^0^150^80^1^integer^200^0^13^<<SQL>> select tid,name from qa_resultset where 1=1 /* and systeminfo_id=<<Komponente>> */ order by 2;^^^
44002^Eigenschaften verwalten^100^0^0^150^300^1^char^30^0^18^^^<<SQL>> select '../edit/viz/viz_property_list.jsp' from xdummy;^
44003^Name^20^0^0^150^150^1^sql^50^0^0^^^^
44004^Komponente^1^0^0^150^200^1^integer^200^0^13^<<SQL>> select tid,name from systeminfo order by 2;^ ^^
44005^Eigenschaftsgruppen verwalten^200^0^0^150^300^1^char^30^0^18^^^<<SQL>> select '../edit/viz/viz_property_group_list.jsp' from xdummy;^
44006^Projekt^5^0^0^150^200^1^integer^200^0^13^<<SQL>> select tid,name from qa_project where active=1 /* and systeminfo_id=<<Komponente>> */ order by 2;^^^
44007^Diagrammtypen verwalten^220^0^0^150^200^1^char^200^0^18^ ^^<<SQL>> select '../edit/viz/viz_type_list.jsp' from xdummy;^

2
src-modules/module/viz/masken/44000_masken_felder_bez.unl

@ -1,8 +1,6 @@ @@ -1,8 +1,6 @@
44000^44000^
44000^44001^
44000^44002^
44000^44003^
44000^44004^
44000^44005^
44000^44006^
44000^44007^

90
src-modules/module/viz/masken/44000_maskeninfo.unl

@ -1,12 +1,85 @@ @@ -1,12 +1,85 @@
44000^Visualisierungen verwalten^--Autor: D. Quathamer\
--Datum: 2.8.2019\
--freemarker template\
create temp table tmp_ergebnis (\
ord smallint,\
tid integer, \
userinfo_id integer,\
benutzer varchar(255),\
caption varchar(255),\
uniquename varchar(255),\
maskeninfo_id integer,\
maskeninfo_name varchar(255),\
nextedit varchar(255)\
);\
insert into tmp_ergebnis (ord,\
tid,\
userinfo_id, \
benutzer,\
caption,\
uniquename,\
maskeninfo_id,\
maskeninfo_name,\
nextedit) \
select 1 as ord,\
C.tid,\
C.userinfo_id,\
nvl(U.name,U.benutzer),\
C.caption,\
C.uniquename,\
C.maskeninfo_id,\
M.name,\
('../edit/viz/viz_chart_edit.jsp|tid=' || C.tid)::varchar(255)\
FROM maskeninfo M, viz_chart C left outer join userinfo U\
on (U.tid=C.userinfo_id)\
where M.tid=C.maskeninfo_id\
/* and C.userinfo_id=<<Benutzer/in>> */\
/* and C.caption ilike '%<<Name>>%' */\
/* and C.uniquename ilike '%<<Schlüssel>>%' */\
/* and C.maskeninfo_id=<<Maske>> */\
\
;\
\
\
insert into tmp_ergebnis (ord,\
--tid,userinfo_id, benutzer,\
caption, --maskeninfo_id,\
--maskeninfo_name,\
-- is_active,\
-- stylesheet_id,\
-- contenttype,\
-- output_filename,\
-- letzter_lauf,\
nextedit) \
select 10, --ord\
'Neuer Eintrag',\
nvl(('../edit/viz/viz_chart_edit.jsp|tid=' || max(tid)+1)::varchar(255),'../edit/viz/viz_chart_edit.jsp'::varchar(255))\
from viz_chart\
--where 0=(select count(*) from qa_mask_execution)\
;\
\
<@selectintotmp \
select="caption,\
uniquename,\
maskeninfo_name,\
benutzer,\
nextedit,\
ord"\
source="tmp_ergebnis"\
target="tmp_ergebnis2">\
order by ord,caption ,uniquename,maskeninfo_name\
</@selectintotmp>\
<@informixnolog/>;\
\
drop table tmp_ergebnis;\
\
select \
caption,\
uniquename\
from viz_chart\
order by 1\
uniquename,\
maskeninfo_name,\
benutzer,\
nextedit \
from tmp_ergebnis2\
;^XIL List\
drop_and_delete movable_columns sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=2\
@ -17,4 +90,13 @@ Column CID=0 heading_text="Name" center_heading\ @@ -17,4 +90,13 @@ Column CID=0 heading_text="Name" center_heading\
Column CID=0 heading_text="Schlüssel" center_heading\
row_selectable col_selectable heading_platform readonly\
width=50 text_size=100\
@@@^^^Diagrammtypen und Eigenschaften verwalten^ ^^1^440^360^0^1^^
Column CID=1 heading_text="Maske" center_heading\
row_selectable col_selectable heading_platform readonly\
width=150 text_size=200\
Column CID=1 heading_text="Benutzer/in " center_heading\
row_selectable col_selectable heading_platform readonly\
width=30 text_size=200\
Column CID=1 heading_text="Bearbeiten" center_heading\
row_selectable col_selectable heading_platform readonly\
width=5 text_size=200\
@@@^^^Diagrammtypen und Eigenschaften verwalten^drop table tmp_ergebnis2;^^1^440^360^0^1^^

2
src-modules/module/viz/masken/44000_sachgeb_maske_bez.unl

@ -1 +1 @@ @@ -1 +1 @@
320^44000^
321^44000^

37
src-modules/module/viz/masken/44020_felderinfo.unl

@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
44020^Köpfe oder Fälle ?^0^0^0^140^150^1^sql^70^0^1^<<SQL>> select apnr, eintrag from koepfe_oder_faelle order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from koepfe_oder_faelle where eintrag='Köpfe';^
44021^Seit Semester^3^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^
44022^Stichtag^1^350^-1^140^100^1^sql^30^0^1^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende';^^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende' and appl_key='0';^
44023^Staatsangehörigkeit^36^0^0^130^150^10^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^^^
44024^Status^14^350^-1^140^180^1^sql^30^0^1^<<SQL>> select apnr,eintrag from sos_status order by 2^^<<SQL>> select apnr,eintrag from sos_status where eintrag='Alle ohne Beurl.';^
44025^Hörerstatus^33^0^0^140^170^1^sql^30^0^1^<<SQL>> select apnr, eintrag from hoererstatus order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from hoererstatus where eintrag='alle';^
44026^Weitere Tabellen^123^0^0^140^140^10^char^30^0^1^<<SQL>> select name,string_not_null(caption) || ' - ' || name from sx_tables where name in ('dim_studiengang','dim_staat')\
order by 2^^^
44027^bis Fachsemester^35^350^-1^140^100^1^integer^30^0^0^^^^
44029^Bis Semester^4^350^-1^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^
44030^Filter Studierende^119^0^0^140^150^1^sql^20^0^1^<<SQL>> SELECT id,caption from sx_repository where aktiv =1 and today() between gueltig_seit and gueltig_bis and art='SOS_STUD_FILTER' order by 2;^^^
44031^Geschlecht^37^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT apnr,druck FROM cif where key = 9003 and apnr between 1 and 4 order by 1;^^^
44032^Felder^125^0^0^150^190^10^char^30^0^1^<<SQL>>\
--freemarker template\
select trim(F.table_name) || '.' || F.name,trim(T.caption) || ':' || trim(F.caption) || ' - ' || trim(F.name) from sx_fields F,\
sx_tables T where F.table_name=T.name and F.currentlyused=1\
--Pseudonyme eingeschaltet:\
and (F.name != 'matrikel_nr' or 0=(select \
count(*) from konstanten where beschreibung='SOS_MTKNR_EXT'\
and apnr=1)) \
and F.table_name in ('sos_stg_aggr','dim_staat','dim_studiengang') \
order by 2;^^^
44033^Studiengang^6^0^0^140^150^50^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Kostenstellen-Sicht', 'SOS-Studiengang-Sicht') order by 3,2;^^^
44034^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^^<<SQL>> select 1,'Ja' from xdummy^
44035^tablestylesheet^121^0^0^100^200^1^char^200^1^1^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=44070 order by ord^^<<SQL>> select distinct filename,X.caption from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=44070 and S.ord=1^
44036^Ausgabeformat^2001^0^0^100^150^1^char^200^1^1^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and nature::smallint<100 order by nature::smallint^^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and description='HTML'^
44037^Grafik^1000^300^-1^170^150^1^integer^30^0^1^<<SQL>> select tid, caption from viz_chart order by 2;^^ ^
44038^Jahrgang^42^350^-1^140^180^1^sql^30^0^13^<<SQL>> select attributevalue from personattribute_value_list where personattributetype_id = (select personattributetype_id from personattributetype where attributevalue = 'Jahrgang');^^^
44039^Name der Hochschule^15^350^-1^140^80^1^char^255^0^13^<<SQL>> select name from hochschulinfo;^Eintrag^<<SQL>> select name from hochschulinfo;^
44040^Spaltenanzahl^300^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT 1,'1-spaltig' from xdummy \
union SELECT 2,'2-spaltig' from xdummy \
union SELECT 3,'3-spaltig' from xdummy \
union SELECT 4,'4-spaltig' from xdummy \
order by 1;^^<<SQL>> SELECT 1,'1-spaltig' from xdummy^
44041^Abschluss^7^0^0^140^170^5^char^30^0^1^<<SQL>> select abint,dtxt from k_abint order by 2;^^^
44042^Matrikel-Nr.^20^350^-1^150^180^1^char^200^0^0^^{InputCheck:matrikelnummern}^^
44043^##line##^40^0^0^100^100^1^char^5000^0^8^^^1^

1
src-modules/module/viz/masken/44020_maske_system_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
44020^7^

23
src-modules/module/viz/masken/44020_masken_felder_bez.unl

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
44020^44020^
44020^44021^
44020^44022^
44020^44023^
44020^44024^
44020^44025^
44020^44026^
44020^44027^
44020^44029^
44020^44030^
44020^44031^
44020^44032^
44020^44033^
44020^44034^
44020^44035^
44020^44036^
44020^44037^
44020^44038^
44020^44039^
44020^44040^
44020^44041^
44020^44042^
44020^44043^

1
src-modules/module/viz/masken/44020_maskeninfo.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
44020^Studierende Datenblatt (Teiltabelle)^<sximport>select select_stmt from maskeninfo where tid=160440</sximport>^<sximport>select xil_proplist from maskeninfo where tid=160440</sximport>^Altersgruppe^Anzahl^Flexible Ausgabe der Studierendenstatistik, Studiengänge und Lehreinheiten^<sximport>select cleanup_stmt from maskeninfo where tid=160440</sximport>^^3^700^360^0^1^ ^

1
src-modules/module/viz/masken/44020_sachgeb_maske_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
16^44020^

25
src-modules/module/viz/masken/44070_felderinfo.unl

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
44070^Köpfe oder Fälle ?^0^0^0^140^150^1^sql^70^0^1^<<SQL>> select apnr, eintrag from koepfe_oder_faelle order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from koepfe_oder_faelle where eintrag='Köpfe';^
44071^Seit Semester^3^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^
44072^Stichtag^1^350^-1^140^100^1^sql^30^0^1^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende';^^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende' and appl_key='0';^
44073^Staatsangehörigkeit^36^0^0^130^150^10^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^hidden^^
44074^Status^14^350^-1^140^180^1^sql^30^0^1^<<SQL>> select apnr,eintrag from sos_status order by 2^^<<SQL>> select apnr,eintrag from sos_status where eintrag='Alle ohne Beurl.';^
44075^Hörerstatus^33^0^0^140^170^1^sql^30^0^1^<<SQL>> select apnr, eintrag from hoererstatus order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from hoererstatus where eintrag='alle';^
44076^Spaltenanzahl^300^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT 1,'1-spaltig' from xdummy \
union SELECT 2,'2-spaltig' from xdummy \
union SELECT 3,'3-spaltig' from xdummy \
union SELECT 4,'4-spaltig' from xdummy \
order by 1;^^<<SQL>> SELECT 3,'3-spaltig' from xdummy^
44077^bis Fachsemester^35^350^-1^140^100^1^integer^30^0^13^^^^
44079^Bis Semester^4^350^-1^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^
44080^Filter Studierende^119^0^0^140^150^1^sql^20^0^13^<<SQL>> SELECT id,caption from sx_repository where aktiv =1 and today() between gueltig_seit and gueltig_bis and art='SOS_STUD_FILTER' order by 2;^^^
44081^Geschlecht^37^0^0^140^80^1^integer^30^0^13^<<SQL>> SELECT apnr,druck FROM cif where key = 9003 and apnr between 1 and 4 order by 1;^^^
44083^Studiengang^6^0^0^140^150^50^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Kostenstellen-Sicht', 'SOS-Studiengang-Sicht') order by 3,2;^^^
44084^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^hidden^<<SQL>> select 1,'Ja' from xdummy^
44085^tablestylesheet^150^0^0^100^100^1^char^255^1^1^<<SQL>> select filename,caption from sx_stylesheets S, sx_mask_style M where S.tid=M.stylesheet_id and M.maskeninfo_id=44070 order by ord^ ^<<SQL>> select filename,caption from sx_stylesheets S, sx_mask_style M where S.tid=M.stylesheet_id and M.maskeninfo_id=44070 and ord =1^
44087^Grafik^1000^300^-1^170^150^1^integer^30^0^1^<<SQL>> select tid, caption from viz_chart order by 2;^hidden^ ^
44088^Jahrgang^42^350^-1^140^180^1^sql^30^0^13^<<SQL>> select attributevalue from personattribute_value_list where personattributetype_id = (select personattributetype_id from personattributetype where attributevalue = 'Jahrgang');^^^
44089^Name der Hochschule^15^350^-1^140^80^1^char^255^0^13^<<SQL>> select name from hochschulinfo;^Eintrag^<<SQL>> select name from hochschulinfo;^
44090^##line##^30^0^0^100^100^1^char^5000^0^8^^^1^
44091^Abschluss^7^0^0^140^170^5^char^30^0^1^<<SQL>> select abint,dtxt from k_abint order by 2;^^^
44092^Matrikel-Nr.^20^350^-1^150^180^1^char^200^0^13^^{InputCheck:matrikelnummern}^^
44093^##line##^40^0^0^100^100^1^char^5000^0^8^^^1^

1
src-modules/module/viz/masken/44070_maske_system_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
44070^7^

21
src-modules/module/viz/masken/44070_masken_felder_bez.unl

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
44070^44070^
44070^44071^
44070^44072^
44070^44073^
44070^44074^
44070^44075^
44070^44076^
44070^44077^
44070^44079^
44070^44080^
44070^44081^
44070^44083^
44070^44084^
44070^44085^
44070^44087^
44070^44088^
44070^44089^
44070^44090^
44070^44091^
44070^44092^
44070^44093^

457
src-modules/module/viz/masken/44070_maskeninfo.unl

@ -0,0 +1,457 @@ @@ -0,0 +1,457 @@
44070^Studierenden-Entwicklung^--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
<#include "SQL_multitable_output"/>\
\
--ram excelexport\
\
<sqlvars>\
<sqlvar name="basetable"><![CDATA[<#if "<<Köpfe oder Fälle ?>>"?index_of("S.gewichtung_id=")==-1>select 'sos_stg_aggr' from xdummy<#else>select 'sos_stud_gewichtung' from xdummy</#if>]]></sqlvar>\
<sqlvar name="restriction"><![CDATA[<#if basetable='sos_stg_aggr'>\
<#assign restrict=DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)/>;\
<#else>\
<#assign restrict=DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)?replace('sos_stg_aggr',basetable)?replace("'dim_studiengang'","'dim_studiengang_gew'")/>;\
</#if>\
select '${restrict?replace("\\x0027","\\x0027\\x0027")}' from xdummy;]]>\
</sqlvar>\
<sqlvar name="get_joins" type="hashsequence"><![CDATA[\
SELECT foreignkey_tab,min(table_name) as table_name,\
min(name) as name,\
min(foreignkey_col) as foreignkey_col,\
min(foreignkey_cond) as foreignkey_cond,\
min(foreignkey_func) as foreignkey_func\
from sx_fields\
where table_name in ('${basetable}'/* ,<<Weitere Tabellen>> */ ${restriction})\
and foreignkey_tab in ('${basetable}'/* ,<<Weitere Tabellen>> */ ${restriction})\
group by 1\
order by 1,2,3;\
]]>\
</sqlvar>\
<sqlvar name="semester"><![CDATA[\
select tid, eintrag from semester where 1=1\
/* and tid >= <<Seit Semester>> */\
/* and tid <= <<Bis Semester>>*/\
;]]>\
</sqlvar>\
<sqlvar name="get_felder_fk" type="hashsequence"><![CDATA[\
SELECT name,\
caption,\
table_name,\
foreignkey_tab,\
foreignkey_col,\
foreignkey_cap,\
foreignkey_cond,\
foreignkey_func,\
case when foreignkey_uniquename!='' then foreignkey_uniquename else foreignkey_col end as foreignkey_uniquename\
\
from sx_fields\
where table_name in ('${basetable}' /* ,<<Weitere Tabellen>> */ ${restriction}\
)\
and currentlyused=1\
--Pseudonyme eingeschaltet:\
and (name != 'matrikel_nr' or 0=(select \
count(*) from konstanten where beschreibung='SOS_MTKNR_EXT'\
and apnr=1))\
<#if basetable='sos_stg_aggr'>\
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>",FelderObject.allKeys)}\
<#else>\
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>"?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."),\
FelderObject.allKeys?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."))}\
</#if>\
and table_name !='dim_person_attribute_aggr'\
--hier Personattribute wg. Sortierung\
union\
SELECT F.name,\
P.attributevalue ,--caption,\
table_name,\
foreignkey_tab,\
foreignkey_col,\
foreignkey_cap,\
foreignkey_cond,\
foreignkey_func,\
case when foreignkey_uniquename!='' then foreignkey_uniquename else foreignkey_col end as foreignkey_uniquename\
\
from sx_fields F, personattributetype P\
where table_name in ('${basetable}' /* ,<<Weitere Tabellen>> */ ${restriction}\
)\
and currentlyused=1\
--Pseudonyme eingeschaltet:\
and (name != 'matrikel_nr' or 0=(select \
count(*) from konstanten where beschreibung='SOS_MTKNR_EXT'\
and apnr=1))\
<#if basetable='sos_stg_aggr'>\
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>",FelderObject.allKeys)}\
<#else>\
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>"?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."),\
FelderObject.allKeys?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."))}\
</#if>\
and table_name ='dim_person_attribute_aggr'\
and F.name='attribute' || P.personattributetype_id\
\
order by 2,3;\
]]>\
</sqlvar>\
</sqlvars>\
\
<#assign lehr_stg_ab="lehr_stg_ab"/>\
<#if "<<Köpfe oder Fälle ?>>"?index_of("S.gewichtung_id=")!=-1>\
<#assign lehr_stg_ab="lehr_stg_ab_gew"/>\
</#if>\
\
delete from dim_person_attribute_aggr;\
\
<#foreach einSemester in semester>\
insert into dim_person_attribute_aggr \
select dim_person_attribute.matrikel_nr, \
max(attribute1),max(attribute2),max(attribute3),max(attribute4),max(attribute5),max(attribute6)\
,max(attribute7),max(attribute8),max(attribute9),max(attribute10), semester.tid\
from dim_person_attribute, semester\
where (${einSemester.key} between semester_von and semester_bis and semester.tid = ${einSemester.key}) \
\
group by dim_person_attribute.matrikel_nr, semester.tid;\
</#foreach>\
\
\
--zum testen der sqlvars\
--select * from sx_fields\
-- <#if <<tablestylesheet>>='tabelle_html.xsl'>\
-- /*,<<Weitere Tabellen>> */\
-- <#else>\
-- , ${.vars["Weitere TabellenObject"].allKeys?replace("'","")}\
--</#if>\
--where 1=1 \
-- <#if <<tablestylesheet>>='tabelle_html.xsl'>\
-- /* and trim(table_name) || '.' || name in ( <<Felder>> )*/\
-- <#else>\
-- and trim(table_name) || '.' || name in (${FelderObject.allKeys})\
-- </#if>;\
\
--drop table if exists tmp_tabelle ;\
\
\
<#assign filter="\
/* and <<Hörerstatus>> */\
/* and sem_rueck_beur_ein >= <<Seit Semester>> */\
/* and sem_rueck_beur_ein <= <<Bis Semester>> */\
/* AND fach_sem_zahl <= <<bis Fachsemester>> */\
/* and "+basetable+".stichtag = <<Stichtag>> */\
/* and kz_rueck_beur_ein in(<<Status>>) */\
/* and geschlecht=<<Geschlecht>> */\
/* and ${<<Filter Studierende>>} */\
/* and L.abschluss in (<<Abschluss>>) */\
" />\
\
\
<#if "<<Matrikel-Nr.>>"!="">\
<#assign filter=filter+" and " + basetable + ".matrikel_nr in (<<Matrikel-Nr.>>)"?replace("'","")/>\
</#if>\
<#if "<<Köpfe oder Fälle ?>>"?index_of("S.gewichtung_id=")!=-1>\
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]?replace('S.','sos_stud_gewichtung.')/>\
<#if "<<Weitere Tabellen>>"?index_of("dim_studiengang_gew")&gt;-1>\
<#assign filter=filter+" and (dim_studiengang_gew.gewichtid is null or "+.vars["Köpfe oder Fälle ?"]?replace('S.','dim_studiengang_gew.')?replace("gewichtung_id","gewichtid")+")"/>\
</#if>\
<#elseif "<<Köpfe oder Fälle ?>>"!="">\
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]/>\
</#if>\
\
\
<#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> \
\
<#assign semester_von_filter="19000" />\
/* <#assign semester_von_filter="<<Seit Semester>>" /> */\
<#assign semester_bis_filter="30000" />\
/* <#assign semester_bis_filter="<<Bis Semester>>" /> */\
\
/*<#assign filter = filter + " and 0 < (select count(*) from personattribute PA, personattributetype TY\
where TY.personattributetype_id=PA.personattributetype_id\
and TY.attributevalue='Jahrgang'\
and PA.matrikel_nr="+basetable+".matrikel_nr\
and (${semester_von_filter} between PA.semester_von and PA.semester_bis\
or ${semester_bis_filter} between PA.semester_von and PA.semester_bis)\
and PA.attributevalue='<<Jahrgang>>') "/>*/\
\
/* <#assign filter = filter + " and 0 < (select count(*) from personattribute PA, personattributetype TY\
where TY.personattributetype_id=PA.personattributetype_id\
and TY.attributevalue='Status'\
and PA.matrikel_nr="+basetable+".matrikel_nr\
and (${semester_von_filter} between PA.semester_von and PA.semester_bis\
or ${semester_bis_filter} between PA.semester_von and PA.semester_bis)\
and PA.attributevalue='<<Zivilstatus>>') "/>*/\
\
\
/* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<<Staatsangehörigkeit>> */\
\
\
-- /*<#assign filter = filter + " and dim_person_attribute.attribute9 = '<<StatusZ>>'"/> */\
--/*<#assign jahrgang_filter = " and dim_person_attribute.attribute10 = '<<Jahrgang>>'"/>*/\
--<#assign filter = filter + jahrgang_filter />\
\
--first denormalize basetable:\
\
--get field_list_select\
<#assign field_list_select="''::char(250) as _meldung" />\
<#foreach feld in get_felder_fk>\
\
<#if feld.name="summe">\
<#assign field_list_select=field_list_select+", sum(summe) as "+basetable+"_summe" />\
<#else>\
<#assign field_list_select=field_list_select+", "+feld.table_name +"."+feld.name +" as "+feld.table_name +"_"+feld.name />\
</#if>\
<#if feld.foreignkey_uniquename != "">\
<#assign field_list_select=field_list_select+",''::char(255) as " + feld.table_name +"_"+feld.name + "_uniquename" />\
<#assign field_list_select=field_list_select+",''::char(255) as " + feld.table_name +"_"+feld.name + "_str" />\
</#if>\
</#foreach>\
\
--get fromclause\
\
<#assign fromclause=lehr_stg_ab+" L,"+basetable />\
<#foreach join in get_joins>\
<#assign fromclause=fromclause+" left outer join "+join.foreignkey_tab +" on (" />\
<#if join.foreignkey_tab ="dim_person_attribute_aggr" >\
<#assign fromclause=fromclause+ basetable+".matrikel_nr=dim_person_attribute_aggr.matrikel_nr and dim_person_attribute_aggr.semester = "+basetable+".sem_rueck_beur_ein " />\
<#else>\
<#assign fromclause=fromclause+ basetable+"."+ join.name+"=" />\
<#if join.foreignkey_func != "">\
<#assign fromclause=fromclause+join.foreignkey_func+"(" />\
</#if>\
<#assign fromclause=fromclause+join.foreignkey_tab+"." +join.foreignkey_col />\
<#if join.foreignkey_func != "">\
<#assign fromclause=fromclause+")" />\
</#if>\
<#if join.foreignkey_cond != "">\
<#if join.foreignkey_cond[0..0] = "1" || \
join.foreignkey_cond[0..0] = "2" ||\
join.foreignkey_cond[0..0] = "3" ||\
join.foreignkey_cond[0..0] = "4" ||\
join.foreignkey_cond[0..0] = "5" ||\
join.foreignkey_cond[0..0] = "6" ||\
join.foreignkey_cond[0..0] = "7" ||\
join.foreignkey_cond[0..0] = "8" ||\
join.foreignkey_cond[0..0] = "9" ||\
join.foreignkey_cond[0..0] = "0" ||\
join.foreignkey_cond[0..0] = "'" >\
<#assign fromclause=fromclause+" and "+join.foreignkey_cond />\
<#else>\
<#assign fromclause=fromclause+" and tmp_tabelle."+join.table_name+"_"+join.foreignkey_cond />\
</#if>\
</#if>\
\
</#if> --wenn nicht dim_person_attritubte_aggr\
<#assign fromclause=fromclause+") " />\
</#foreach>\
<#if ("<<Weitere Tabellen>>"+restriction)?index_of("dim_person_attribute_aggr") !=-1>\
<#assign fromclause=fromclause+" left outer join dim_person_attribute_aggr on ("+basetable+".matrikel_nr=dim_person_attribute_aggr.matrikel_nr and "+basetable+".sem_rueck_beur_ein=dim_person_attribute_aggr.semester)" />\
</#if>\
\
--whereclause\
<#assign whereclause=" L.tid="+basetable+".tid_stg " />\
\
--get groupbyclause\
<#assign groupbyclause="group by 1" />\
<#foreach feld in get_felder_fk>\
<#if feld.name!="summe">\
<#assign groupbyclause=groupbyclause+", "+feld.table_name +"_"+feld.name />\
</#if>\
</#foreach>\
\
<@selectintotmp\
select=field_list_select\
source=fromclause\
target="tmp_tabelle">\
where ${whereclause}\
${filter}\
${groupbyclause}\
</@selectintotmp>\
<@informixnolog/> ;\
\
create temp table tmp_rows(anz integer,max_anz integer) \
<@informixnolog/> \
;\
insert into tmp_rows(anz) select count(*) from tmp_tabelle;\
update tmp_rows set max_anz=(select apnr from konstanten where beschreibung='Datenblatt max.Zeilenzahl');\
\
delete from tmp_tabelle where 0 < (select count(*) from tmp_rows\
where anz > max_anz);\
\
select 'Warnung: die Abfrage kann nicht ausgeführt werden, denn ' || anz || ' Zeilen liegen über max. Grenze von ' || max_anz as _runtimeMessage\
from tmp_rows\
where anz > max_anz;\
\
drop table tmp_rows;\
\
--denormalize:\
\
\
<#foreach feld in get_felder_fk>\
<#if feld.foreignkey_tab != "" >\
<#if SQLdialect="Postgres">\
update tmp_tabelle set\
(${feld.table_name}_${feld.name}_uniquename, ${feld.table_name}_${feld.name}_str)=\
(select ${feld.foreignkey_uniquename},${feld.foreignkey_cap}\
from ${feld.foreignkey_tab}\
where tmp_tabelle.${feld.table_name}_${feld.name}=\
<#if feld.foreignkey_func != "">\
${feld.foreignkey_func}(\
</#if>\
${feld.foreignkey_tab}.${feld.foreignkey_col}\
<#if feld.foreignkey_func != "">\
)\
</#if>\
<#if feld.foreignkey_cond != "">\
<#if feld.foreignkey_cond[0..0] = "1" || \
feld.foreignkey_cond[0..0] = "2" ||\
feld.foreignkey_cond[0..0] = "3" ||\
feld.foreignkey_cond[0..0] = "4" ||\
feld.foreignkey_cond[0..0] = "5" ||\
feld.foreignkey_cond[0..0] = "6" ||\
feld.foreignkey_cond[0..0] = "7" ||\
feld.foreignkey_cond[0..0] = "8" ||\
feld.foreignkey_cond[0..0] = "9" ||\
feld.foreignkey_cond[0..0] = "0" ||\
feld.foreignkey_cond[0..0] = "'" >\
and ${feld.foreignkey_cond}\
<#else>\
and tmp_tabelle.${feld.table_name}_${feld.foreignkey_cond}\
</#if>\
</#if>\
);\
<#else> --Wenn Informix:\
\
update tmp_tabelle set (${feld.table_name}_${feld.name}_uniquename,${feld.table_name}_${feld.name}_str)\
=(( select ${feld.foreignkey_uniquename},${feld.foreignkey_cap}\
from ${feld.foreignkey_tab}\
where tmp_tabelle.${feld.table_name}_${feld.name}=\
<#if feld.foreignkey_func != "">\
${feld.foreignkey_func}(\
</#if>\
${feld.foreignkey_tab}.${feld.foreignkey_col}\
<#if feld.foreignkey_func != "">\
)\
</#if>\
<#if feld.foreignkey_cond != "">\
<#if feld.foreignkey_cond[0..0] = "1" || \
feld.foreignkey_cond[0..0] = "2" ||\
feld.foreignkey_cond[0..0] = "3" ||\
feld.foreignkey_cond[0..0] = "4" ||\
feld.foreignkey_cond[0..0] = "5" ||\
feld.foreignkey_cond[0..0] = "6" ||\
feld.foreignkey_cond[0..0] = "7" ||\
feld.foreignkey_cond[0..0] = "8" ||\
feld.foreignkey_cond[0..0] = "9" ||\
feld.foreignkey_cond[0..0] = "0" ||\
feld.foreignkey_cond[0..0] = "'" >\
and ${feld.foreignkey_cond}\
<#else>\
and tmp_tabelle.${feld.table_name}_${feld.foreignkey_cond}\
</#if>\
</#if>\
))\
where tmp_tabelle.${feld.table_name}_${feld.name} is not null\
;\
\
</#if> --Wenn Postgres/Informix\
</#if> --wenn foreign_key\
</#foreach>\
\
\
<#if get_felder_fk?has_content >\
select \
\
<#assign rownum=1 />\
<#foreach feld in get_felder_fk>\
<#if feld.foreignkey_tab != "">\
\
${feld.table_name}_${feld.name}_str\
<#if <<Schlüssel anzeigen>>=1>\
<#if feld.foreignkey_col=feld.foreignkey_uniquename>\
,${feld.table_name}_${feld.name}\
<#else>\
,${feld.table_name}_${feld.name}_uniquename\
</#if>\
</#if>\
\
<#else>\
${feld.table_name}_${feld.name}\
</#if>\
<#if rownum &lt; get_felder_fk?size>\
,\
</#if>\
<#assign rownum= rownum+1 />\
</#foreach>\
from tmp_tabelle\
;\
</#if>^--Freemarker Template \
<sqlvars>\
<sqlvar name="basetable"><![CDATA[<#if "<<Köpfe oder Fälle ?>>"?index_of("S.gewichtung_id=")==-1>select 'sos_stg_aggr' from xdummy<#else>select 'sos_stud_gewichtung' from xdummy</#if>]]></sqlvar>\
<sqlvar name="restriction"><![CDATA[<#if basetable='sos_stg_aggr'>\
<#assign restrict=DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)/>;\
<#else>\
<#assign restrict=DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)?replace('sos_stg_aggr',basetable)?replace("'dim_studiengang'","'dim_studiengang_gew'")/>;\
</#if>\
select '${restrict?replace("\\x0027","\\x0027\\x0027")}' from xdummy;]]>\
</sqlvar>\
<sqlvar name="get_felder"><![CDATA[\
SELECT caption,\
foreignkey_tab,\
description as strukturStr\
from sx_fields\
where table_name in ('${basetable}'\
${restriction}\
)\
and currentlyused=1\
--Pseudonyme eingeschaltet:\
and (name != 'matrikel_nr' or 0=(select \
count(*) from konstanten where beschreibung='SOS_MTKNR_EXT'\
and apnr=1))\
<#if basetable='sos_stg_aggr'>\
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>",FelderObject.allKeys)}\
<#else>\
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>"?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."),\
FelderObject.allKeys?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."))}\
</#if>\
and table_name !='dim_person_attribute_aggr'\
--hier personattribute:\
union SELECT P.attributevalue , -- F.caption,\
F.foreignkey_tab,\
F.description as strukturStr\
from sx_fields F, personattributetype P\
where F.table_name in ('${basetable}'\
${restriction}\
)\
and currentlyused=1\
--Pseudonyme eingeschaltet:\
and (name != 'matrikel_nr' or 0=(select \
count(*) from konstanten where beschreibung='SOS_MTKNR_EXT'\
and apnr=1))\
<#if basetable='sos_stg_aggr'>\
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>",FelderObject.allKeys)}\
<#else>\
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>"?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew.")\
,FelderObject.allKeys?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."))}\
</#if>\
and table_name ='dim_person_attribute_aggr'\
and F.name='attribute' || P.personattributetype_id\
order by 1;]]>\
</sqlvar>\
</sqlvars>\
XIL List\
sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=0\
min_heading_height=35\
<#assign i=1 />\
<#if get_felder?has_content >\
<#foreach myfield in get_felder>\
<#assign i=i+1 />\
Column CID=${i} heading_text="${myfield.key}" explanation="${myfield.strukturStr}" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
<#if myfield.name != '' && <<Schlüssel anzeigen>>==1>\
<#assign i=i+1 />\
Column CID=${i} heading_text="${myfield.key}\\n(Schlüssel)" explanation="Schlüssel des Feldes ${myfield.key}" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
</#if>\
</#foreach>\
</#if>\
@@@^Altersgruppe^Anzahl^Flexible Ausgabe der Studierendenstatistik, Studiengänge und Lehreinheiten^drop table tmp_tabelle;^^3^700^360^0^1^^

1
src-modules/module/viz/masken/44070_sachgeb_maske_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
16^44070^

185
src-modules/module/viz/schluesseltabellen/customxmladd.sql

@ -0,0 +1,185 @@ @@ -0,0 +1,185 @@
<#include "MAN_MAKROS"/><sqlvars> <sqlvar name="entries" type="hash">select R.catalogue_id,K.shortname,timeunit,sqlchunk,calcratio,decimalplaces,linksub,linktimeline,R.report_id,R.sortnr, R.sortnr2,R.grouping1,G.caption as group_caption from man_catalogue K,man_catalogue_rpt R left outer join man_grouping G on (G.id=R.grouping1) where K.id=R.catalogue_id and R.active=1 and K.id not in ('Bewerber') order by R.sortnr, R.sortnr2 </sqlvar>
<sqlvar name="commonChartProperties" type="hash">
SELECT tid,
caption,
prop_uniquename,
prop_default,
prop_unit
FROM viz_property
where is_generic=1
;
</sqlvar>
<sqlvar name="commonChartProperties" type="hash">
SELECT
P.tid,
P.caption,
P.prop_uniquename,
P.prop_default,
P.prop_unit,
P.is_generic,
P.static_values,
P.is_mandatory,
P.explanation,
P.sortnr,
P.range_from,
P.range_to,
T.caption as input_type_caption,
T.uniquename as input_type_uniquename,
G.caption as group_caption,
G.sortnr as group_sortnr,
G.uniquename as group_uniquename,
R.uniquename as renderer_uniquename,
GR.variable_name as group_variable_name,
PR.variable_name,
P.prop_value_type,
P.is_generic
FROM viz_property_input_type T, viz_property P left outer join viz_property_group G
on (P.property_group_id=G.tid)
left outer join viz_property_group_renderer GR on (GR.property_group_id=G.tid)
left outer join viz_renderer R on (R.tid=GR.renderer_id)
left outer join viz_property_renderer PR on (P.tid=PR.property_id)
where T.tid=P.input_type_id
--and P.is_generic=1
order by G.sortnr,G.uniquename,P.sortnr,P.caption
;
</sqlvar>
<sqlvar name="vizRenderer" type="hash">
SELECT
R.uniquename,
R.caption
FROM viz_renderer R
order by 2 desc
;
</sqlvar>
<sqlvar name="vizTypes" type="hash">
SELECT T.tid,
T.uniquename,
T.caption,
R.uniquename as renderer_uniquename,
R.caption as renderer_caption,
T.srcpath,
T.method,
T.orientation
FROM viz_type T, viz_renderer R
where R.tid=T.renderer_id
order by 3
;
</sqlvar>
<sqlvar name="viz_type_properties" type="hash">
SELECT T.tid,
T.uniquename as viz_type_uniquename,
P.prop_uniquename,
P.caption,
G.uniquename as viz_property_group_uniquename,
TP.is_mandatory,
TP.sortnr
FROM viz_type T, viz_type_property TP, viz_property P, viz_property_group G
where T.tid=TP.viz_type_id
and P.tid=TP.viz_property_id
and G.tid=P.property_group_id
order by 2,TP.sortnr,P.caption
;
</sqlvar>
<sqlvar name="viz_chart" type="hashsequence">
SELECT V.tid,
V.uniquename,
V.caption,
V.userinfo_id,
replace(V.chartmodel,'"','§') as chartmodel_escaped,
replace(V.chartmodel_miniature,'"','§') as chartmodel_miniature_escaped,
V.description,
V.chart_position
FROM viz_chart V
order by 3
;
</sqlvar>
</sqlvars>
<#if !Semester?exists><#assign Semester=""></#if> <#if !Bezugssemester?exists><#assign Bezugssemester=""/></#if> <#if !Jahr?exists><#assign Jahr=""></#if> <#if !faecherkeys?exists><#assign faecherkeys=""></#if> <#if !Fächer?exists><#assign Fächer={"selectedKey":""}></#if> <#if !Kostenstelle?exists><#assign Kostenstelle={"selectedKey":""}></#if> <#if !(.vars["Datum (Personal)"]?exists)><#assign "Datum (Personal)"=""></#if> <#if !(.vars["Beschäftigungsstelle (Person)"]?exists)><#assign "Beschäftigungsstelle (Person)"=""></#if>
<navigation><item><href><![CDATA[888880190&maxoffset=100000&Jahr=${Jahr}&Semester=${Semester}&Datum%20(Personal)=${.vars["Datum (Personal)"]}]]></href><caption>Start</caption></item>
<#if entries?is_sequence><#foreach e in entries>
<#assign linktimeline=e.linktimeline?interpret/>
<#assign linkt><@linktimeline/></#assign> <#assign linksub=e.linksub?interpret/>
<#assign links><@linksub/></#assign> <doubleitem id="${e.catalogue_id}" timeunit="${e.timeunit}" report_id="${e.report_id}" group_id="${e.grouping1}" group_caption="${e.group_caption}">
<aktuell><![CDATA[${links?replace('Fakultäten|','')}]]></aktuell>
<zeitreihe><![CDATA[${linkt?replace('Zeitreihe|','')}]]></zeitreihe>
<caption><![CDATA[${e.shortname}]]></caption> </doubleitem> </#foreach>
</#if></navigation>
<chartProperties>
<#if commonChartProperties?is_sequence><#foreach cp in commonChartProperties>
<commonChartProperty tid="${cp.tid}"
caption="${cp.caption}"
prop_uniquename="${cp.prop_uniquename}"
prop_default="${cp.prop_default}"
static_values="${cp.static_values}"
input_type_uniquename="${cp.input_type_uniquename}"
group_caption="${cp.group_caption}"
group_uniquename="${cp.group_uniquename}"
prop_unit="${cp.prop_unit}"
prop_range_from="${cp.range_from}"
prop_range_to="${cp.range_to}"
renderer_uniquename="${cp.renderer_uniquename}"
group_variable_name="${cp.group_variable_name}"
variable_name="${cp.variable_name}"
propValueType="${cp.prop_value_type}"
explanation="${cp.explanation}"
isGeneric="${cp.is_generic}"
/>
</#foreach>
</#if>
</chartProperties>
<vizRenderers>
<#if vizRenderer?is_sequence>
<#foreach vr in vizRenderer>
<vizRenderer
caption="${vr.caption}"
uniquename="${vr.uniquename}"
/>
</#foreach>
</#if>
</vizRenderers>
<vizTypes>
<#if vizTypes?is_sequence>
<#foreach vt in vizTypes>
<vizType tid="${vt.tid}"
caption="${vt.caption}"
uniquename="${vt.uniquename}"
srcpath="${vt.srcpath}"
method="${vt.method}"
orientation="${vt.orientation}"
renderer_uniquename="${vt.renderer_uniquename}"
renderer_caption="${vt.renderer_caption}"
/>
</#foreach>
</#if>
</vizTypes>
<viz_type_properties>
<#if viz_type_properties?is_sequence>
<#foreach tp in viz_type_properties>
<viz_type_property tid="${tp.tid}"
caption="${tp.caption}"
uniquename="${tp.prop_uniquename}"
viz_type_uniquename="${tp.viz_type_uniquename}"
viz_property_group_uniquename="${tp.viz_property_group_uniquename}"
is_mandatory="${tp.is_mandatory}"
sortnr="${tp.sortnr}"
/>
</#foreach>
</#if>
</viz_type_properties>
<viz_charts>
<#if viz_chart?is_sequence>
<#foreach ch in viz_chart>
<viz_chart tid="${ch.tid}"
caption="${ch.caption}"
uniquename="${ch.uniquename}"
userinfo_id="${ch.userinfo_id}"
description="${ch.description}"
chartmodel="${ch.chartmodel_escaped}"
chartmodel_miniature="${ch.chartmodel_miniature_escaped}"
chart_position="${ch.chart_position}"
/>
</#foreach>
</#if>
</viz_charts>

215
src-modules/module/viz/schluesseltabellen/macro_masken_bez_fuellen.sql

@ -0,0 +1,215 @@ @@ -0,0 +1,215 @@
--freemarker template
<#assign makros = [
{"tid":"44070"}
] />
<#assign masken = [
{"makro":"44070", "tid":"44020", "sortnr":"1"},
{"makro":"44070", "tid":"44020", "sortnr":"10"},
{"makro":"44070", "tid":"44020", "sortnr":"20"},
{"makro":"44070", "tid":"44020", "sortnr":"30"},
{"makro":"44070", "tid":"44020", "sortnr":"40"},
{"makro":"44070", "tid":"44020", "sortnr":"50"},
{"makro":"44070", "tid":"44020", "sortnr":"60"},
{"makro":"44070", "tid":"44020", "sortnr":"70"},
{"makro":"44070", "tid":"44020", "sortnr":"80"}
] />
<#assign felder = [
{"makro":"44070", "sortnr":"1", "feldname":"Köpfe oder Fälle ?", "value":"studiengang_nr = 1 and fach_nr = 1"},
{"makro":"44070", "sortnr":"1", "feldname":"Felder", "value":"sos_stg_aggr.geschlecht|sos_stg_aggr.sem_rueck_beur_ein|sos_stg_aggr.summe"},
{"makro":"44070", "sortnr":"1", "feldname":"Grafik", "value":"1"},
{"makro":"44070", "sortnr":"1", "feldname":"Weitere Tabellen", "value":"dim_studiengang"},
{"makro":"44070", "sortnr":"1", "feldname":"tablestylesheet", "value":"tabelle_html_datenblatt.xsl"},
{"makro":"44070", "sortnr":"10", "feldname":"Köpfe oder Fälle ?", "value":"studiengang_nr = 1 and fach_nr = 1"},
{"makro":"44070", "sortnr":"10", "feldname":"Felder", "value":"dim_staat.inl_ausl_lang|sos_stg_aggr.sem_rueck_beur_ein|sos_stg_aggr.summe"},
{"makro":"44070", "sortnr":"10", "feldname":"Grafik", "value":"2"},
{"makro":"44070", "sortnr":"10", "feldname":"Weitere Tabellen", "value":"dim_staat"},
{"makro":"44070", "sortnr":"10", "feldname":"tablestylesheet", "value":"tabelle_html_datenblatt.xsl"},
{"makro":"44070", "sortnr":"20", "feldname":"Köpfe oder Fälle ?", "value":"studiengang_nr = 1 and fach_nr = 1"},
{"makro":"44070", "sortnr":"20", "feldname":"Felder", "value":"dim_studiengang.abschlussart_str|sos_stg_aggr.sem_rueck_beur_ein|sos_stg_aggr.summe"},
{"makro":"44070", "sortnr":"20", "feldname":"Grafik", "value":"3"},
{"makro":"44070", "sortnr":"20", "feldname":"Weitere Tabellen", "value":"dim_studiengang"},
{"makro":"44070", "sortnr":"20", "feldname":"tablestylesheet", "value":"tabelle_html_datenblatt.xsl"},
{"makro":"44070", "sortnr":"30", "feldname":"Köpfe oder Fälle ?", "value":"studiengang_nr = 1 and fach_nr = 1"},
{"makro":"44070", "sortnr":"30", "feldname":"Felder", "value":"sos_stg_aggr.geschlecht|sos_stg_aggr.sem_rueck_beur_ein|sos_stg_aggr.summe"},
{"makro":"44070", "sortnr":"30", "feldname":"Grafik", "value":"4"},
{"makro":"44070", "sortnr":"30", "feldname":"Weitere Tabellen", "value":"dim_studiengang"},
{"makro":"44070", "sortnr":"30", "feldname":"bis Fachsemester", "value":"1"},
{"makro":"44070", "sortnr":"30", "feldname":"tablestylesheet", "value":"tabelle_html_datenblatt.xsl"},
{"makro":"44070", "sortnr":"40", "feldname":"Köpfe oder Fälle ?", "value":"studiengang_nr = 1 and fach_nr = 1"},
{"makro":"44070", "sortnr":"40", "feldname":"Felder", "value":"dim_staat.inl_ausl_lang|sos_stg_aggr.sem_rueck_beur_ein|sos_stg_aggr.summe"},
{"makro":"44070", "sortnr":"40", "feldname":"Grafik", "value":"5"},
{"makro":"44070", "sortnr":"40", "feldname":"Weitere Tabellen", "value":"dim_staat"},
{"makro":"44070", "sortnr":"40", "feldname":"bis Fachsemester", "value":"1"},
{"makro":"44070", "sortnr":"40", "feldname":"tablestylesheet", "value":"tabelle_html_datenblatt.xsl"},
{"makro":"44070", "sortnr":"50", "feldname":"Köpfe oder Fälle ?", "value":"studiengang_nr = 1 and fach_nr = 1"},
{"makro":"44070", "sortnr":"50", "feldname":"Felder", "value":"dim_studiengang.abschlussart_str|sos_stg_aggr.sem_rueck_beur_ein|sos_stg_aggr.summe"},
{"makro":"44070", "sortnr":"50", "feldname":"Grafik", "value":"6"},
{"makro":"44070", "sortnr":"50", "feldname":"Weitere Tabellen", "value":"dim_studiengang"},
{"makro":"44070", "sortnr":"50", "feldname":"bis Fachsemester", "value":"1"},
{"makro":"44070", "sortnr":"50", "feldname":"tablestylesheet", "value":"tabelle_html_datenblatt.xsl"},
{"makro":"44070", "sortnr":"60", "feldname":"Köpfe oder Fälle ?", "value":"studiengang_nr = 1 and fach_nr = 1"},
{"makro":"44070", "sortnr":"60", "feldname":"Felder", "value":"sos_stg_aggr.geschlecht|sos_stg_aggr.sem_rueck_beur_ein|sos_stg_aggr.summe"},
{"makro":"44070", "sortnr":"60", "feldname":"Grafik", "value":"7"},
{"makro":"44070", "sortnr":"60", "feldname":"Weitere Tabellen", "value":"dim_studiengang"},
{"makro":"44070", "sortnr":"60", "feldname":"Filter Studierende", "value":"SOS_HSSEM_1"},
{"makro":"44070", "sortnr":"60", "feldname":"tablestylesheet", "value":"tabelle_html_datenblatt.xsl"},
{"makro":"44070", "sortnr":"70", "feldname":"Köpfe oder Fälle ?", "value":"studiengang_nr = 1 and fach_nr = 1"},
{"makro":"44070", "sortnr":"70", "feldname":"Felder", "value":"dim_staat.inl_ausl_lang|sos_stg_aggr.sem_rueck_beur_ein|sos_stg_aggr.summe"},
{"makro":"44070", "sortnr":"70", "feldname":"Grafik", "value":"8"},
{"makro":"44070", "sortnr":"70", "feldname":"Weitere Tabellen", "value":"dim_staat"},
{"makro":"44070", "sortnr":"70", "feldname":"Filter Studierende", "value":"SOS_HSSEM_1"},
{"makro":"44070", "sortnr":"70", "feldname":"tablestylesheet", "value":"tabelle_html_datenblatt.xsl"},
{"makro":"44070", "sortnr":"80", "feldname":"Köpfe oder Fälle ?", "value":"studiengang_nr = 1 and fach_nr = 1"},
{"makro":"44070", "sortnr":"80", "feldname":"Felder", "value":"dim_studiengang.abschlussart_str|sos_stg_aggr.sem_rueck_beur_ein|sos_stg_aggr.summe"},
{"makro":"44070", "sortnr":"80", "feldname":"Grafik", "value":"9"},
{"makro":"44070", "sortnr":"80", "feldname":"Weitere Tabellen", "value":"dim_studiengang"},
{"makro":"44070", "sortnr":"80", "feldname":"Filter Studierende", "value":"SOS_HSSEM_1"},
{"makro":"44070", "sortnr":"80", "feldname":"tablestylesheet", "value":"tabelle_html_datenblatt.xsl"}
] />
-- ab hier nicht mehr ändern:
CREATE TEMP TABLE tmp_macro_masken_bez (
maskeninfo_id1 integer NOT NULL,
maskeninfo_id2 integer NOT NULL,
active integer DEFAULT 1 NOT NULL,
sortnr smallint NOT NULL,
schleifenrelation character(255),
schleifenfeldname character(255),
alias character(255),
schleifenfstand character(255),
schleifenfsicht character(255),
aktion character(255)
);
CREATE TEMP TABLE tmp_macro_feld_wert (
macro integer NOT NULL,
sortnr integer NOT NULL,
feldname character(255) NOT NULL,
alias character(255) NOT NULL,
value character(255),
value_caption character(255),
feldstand character(255),
feldsicht character(255),
active integer DEFAULT 1 NOT NULL
);
<#foreach makro in makros>
<#foreach maske in masken>
<#if maske.makro==makro.tid>
insert into tmp_macro_masken_bez(maskeninfo_id1,
maskeninfo_id2,
active,
sortnr)
select ${makro.tid},--maskeninfo_id1,
${maske.tid},--maskeninfo_id2,
1,--active,
${maske.sortnr} --sortnr
from xdummy;
<#foreach feld in felder>
<#if feld.makro==makro.tid && feld.sortnr==maske.sortnr>
--Tab.12: alle ohne Exmatr
insert into tmp_macro_feld_wert
( macro,
sortnr,
feldname,
alias,
value,
value_caption,
feldstand,
feldsicht,
active)
SELECT ${makro.tid}, --macro
${maske.sortnr},--sortnr
'${feld.feldname}',--feldname,
'',--alias,
'${feld.value}', --value,
'',--value_caption,
'', --feldstand,
'',--feldsicht,
1 --active
FROM xdummy;
</#if>
</#foreach>
</#if>
</#foreach>
</#foreach>
delete from macro_masken_bez where maskeninfo_id1 in (select maskeninfo_id1 from tmp_macro_masken_bez)
;
insert into macro_masken_bez
(maskeninfo_id1,
maskeninfo_id2,
active,
sortnr,
schleifenrelation,
schleifenfeldname,
alias,
schleifenfstand,
schleifenfsicht,
aktion)
select maskeninfo_id1,
maskeninfo_id2,
active,
sortnr,
schleifenrelation,
schleifenfeldname,
alias,
schleifenfstand,
schleifenfsicht,
aktion
FROM tmp_macro_masken_bez
;
delete from macro_feld_wert where macro in (select macro from tmp_macro_feld_wert);
insert into macro_feld_wert
( macro,
sortnr,
feldname,
alias,
value,
value_caption,
feldstand,
feldsicht,
active)
SELECT macro,
sortnr,
feldname,
alias,
value,
value_caption,
feldstand,
feldsicht,
active
FROM tmp_macro_feld_wert;
drop table tmp_macro_masken_bez;
drop table tmp_macro_feld_wert;

7
src-modules/module/viz/schluesseltabellen/sachgebiete_fuellen.sql

@ -1,10 +1,15 @@ @@ -1,10 +1,15 @@
--Das Sachgebiet 320 wird installiert
delete from sachgebiete where tid in (321);
insert into sachgebiete(tid,name,rightname) values (321,'Visualisierungen Administr.','CS_BIA_STANDARDREPORTS_ADMIN[VIZ]');
delete from group_sachgeb_bez where sachgebiete_id in (320)
delete from group_sachgeb_bez where sachgebiete_id in (320,321)
and groupinfo_id in (select G.tid from groupinfo G where G.name='Administratoren' or G.name='superx') ;
insert into group_sachgeb_bez
select G.tid,320 from groupinfo G where G.name='Administratoren' or G.name='superx';
insert into group_sachgeb_bez
select G.tid,321 from groupinfo G where G.name='Administratoren' or G.name='superx';

32
src-modules/module/viz/schluesseltabellen/sx_stylesheets_einfuegen.sql

@ -3,8 +3,11 @@ @@ -3,8 +3,11 @@
--Bitte nur Freemarker Variablen füllen
<#assign masken = [
{"mask":"16000", "filename":"tabelle_html_datenblatt.xsl", "ord":"1"},
{"mask":"16000", "filename":"viz_html_chart.xsl", "ord":"100"}
{"mask":"30220", "filename":"viz_html_chart_sankey.xsl", "ord":"120"},
{"mask":"30220", "filename":"30220_html_chart_sankey.xsl", "ord":"130"},
{"mask":"44070", "filename":"tabelle_html_datenblatt.xsl", "ord":"20"},
{"mask":"44070", "filename":"viz_html_chart_viewer.xsl", "ord":"1"}
] />
<#assign stylesheet = [
@ -14,16 +17,35 @@ @@ -14,16 +17,35 @@
"relation":"table",
"contenttype":"text/html",
"is_generic":"1"
}
] />
},
{"filename":"viz_html_chart_sankey.xsl", "caption":"Übergangsdiagramm (Sankey-Diagramm)", "description":"Kreuztabelle Studienanfänger MA und vorheriger BA", "relation":"table", "contenttype":"text/html","is_generic":"0"},
{"filename":"30220_html_chart_sankey.xsl", "caption":"Übergangsdiagramm-Viewer(Sankey-Diagramm)", "description":"Kreuztabelle Studienanfänger MA und vorheriger BA", "relation":"table", "contenttype":"text/html","is_generic":"0"},
{"filename":"viz_html_chart_viewer.xsl", "caption":"Dashboard", "description":"Viewer-Stylesheet für VIZ Charts", "relation":"table", "contenttype":"text/html","is_generic":"1"},
{"filename":"tabelle_html_viz.xsl", "caption":"Tabelle + Visualisierung", "description":"Viewer-Stylesheet für Tabellen und VIZ Charts", "relation":"table", "contenttype":"text/html","is_generic":"1"}
] />
<#assign stylesheet_field = [
{"filename":"viz_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"abschluss_vorher_abschluss"},
{"filename":"viz_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"abschluss_vorher_abschlussart"},
{"filename":"viz_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"abschluss_vorher_abschlusstyp"},
{"filename":"viz_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"einschr_nachher_abschlussart"},
{"filename":"viz_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"einschr_nachher_abschluss"},
{"filename":"viz_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"einschr_nachher_abschlusstyp"},
{"filename":"viz_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"summe"},
{"filename":"30220_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"abschluss_vorher_abschluss"},
{"filename":"30220_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"abschluss_vorher_abschlussart"},
{"filename":"30220_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"abschluss_vorher_abschlusstyp"},
{"filename":"30220_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"einschr_nachher_abschlussart"},
{"filename":"30220_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"einschr_nachher_abschluss"},
{"filename":"30220_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"einschr_nachher_abschlusstyp"},
{"filename":"30220_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"summe"}
] />
--Hier eventuell notwendige delete's auf die Tabellen sx_mask_style, sx_stylesheets oder stylesheet_field einfügen.
delete from sx_mask_style where maskeninfo_id=44070;
--Achtung: ab hier nicht ändern, Mutterdatei ist $SUPERX_DIR/db/module/sos/schluesseltabellen/sx_stylesheets_fuellen.sql
<@sx_stylesheets_insert
m_masken=masken

182
src-modules/module/viz/schluesseltabellen/sx_stylesheets_einfuegen_ba_ma_sankey.sql

@ -0,0 +1,182 @@ @@ -0,0 +1,182 @@
--Freemarker Template
--Achtung: Macro fügt Inhalte ein
--Bitte nur Freemarker Variablen füllen
<sqlvars>
<sqlvar name="viz_installed">
select count(*) from db_version where his_system ='viz';
</sqlvar>
</sqlvars>
<#assign masken = [
{"mask":"30190", "filename":"30190_html_chart_sankey.xsl", "ord":"130"}
] />
<#assign stylesheet = [
{"filename":"30190_html_chart_sankey.xsl",
"caption":"BA-MA Übergang Diagramm erzeugen",
"description":"Sankey-Diagramm",
"relation":"table",
"contenttype":"text/html",
"is_generic":"0"
}
] />
<#assign stylesheet_field = [
{"filename":"30190_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"abschluss_vorher_abschluss"},
{"filename":"30190_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"einschr_nachher_abschluss"},
{"filename":"30190_html_chart_sankey.xsl", "tablename":"erfolg_ba_ma_uebergang", "fieldname":"summe"}
] />
<#if viz_installed==1>
--Hier eventuell notwendige delete's auf die Tabellen sx_mask_style, sx_stylesheets oder stylesheet_field einfügen.
--Achtung: ab hier nicht ändern, Mutterdatei ist $SUPERX_DIR/db/module/sos/schluesseltabellen/sx_stylesheets_fuellen.sql
<@sx_stylesheets_insert
m_masken=masken
m_stylesheet=stylesheet
m_stylesheet_field=stylesheet_field
/>
</#if>
<#macro sx_stylesheets_insert m_masken m_stylesheet m_stylesheet_field>
--Sicherstellen, dass keine Duplikate vorkommen:
--####################################################################################################
<#foreach column in m_masken>
delete from sx_mask_style where maskeninfo_id=${column.mask} and stylesheet_id in (select tid from sx_stylesheets where filename ='${column.filename}') and ord=${column.ord};
</#foreach>
<#foreach column in m_stylesheet_field>
delete from stylesheet_field where stylesheet_id in (select tid from sx_stylesheets where filename ='${column.filename}');
</#foreach>
-- Stylesheets füllen
--####################################################################################################
create temp table tmp_stylesheets (
tid serial not null,
filename CHAR(255) ,
caption CHAR(255) ,
description CHAR(255) ,
relation CHAR(10) ,
useragent CHAR(255) ,
contenttype CHAR(200) ,
is_generic smallint
);
create temp table tmp_hilf (tid integer);
insert into tmp_hilf select max(tid) from sx_stylesheets;
update tmp_hilf set tid=1 where tid is null;
<#assign counter_tid = 1 />
<#foreach column in m_stylesheet>
insert into tmp_stylesheets (tid,filename,caption,description,relation,contenttype,is_generic)
select max(tid)+${counter_tid},'${column.filename}',
'${column.caption}',
'${column.description}',
'${column.relation}',
'${column.contenttype}',
${column.is_generic}
from tmp_hilf;
<#assign counter_tid = counter_tid + 1 />
</#foreach>
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
update sx_stylesheets set is_generic=1
where filename in (select T.filename from tmp_stylesheets T where T.is_generic=1);
</#if>
--delete für tml_stylesheets hinzugefügt #ak 06.03.2013
delete from tmp_stylesheets where filename in (select filename from sx_stylesheets);
insert into sx_stylesheets (tid,
filename, caption, description, relation, useragent, contenttype
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
,is_generic
</#if>
)
SELECT tid, filename, caption, description, relation, useragent, contenttype
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
,is_generic
</#if>
FROM tmp_stylesheets;
drop table tmp_stylesheets;
-- Mask Style füllen
--####################################################################################################
create temp table tmp_mask_style (
tid serial not null,
maskeninfo_id INTEGER ,
stylesheet_id INTEGER ,
ord SMALLINT,
filename char(255)
);
delete from tmp_hilf;
insert into tmp_hilf select max(tid) from sx_mask_style;
update tmp_hilf set tid=1 where tid is null;
<#assign counter_tid = 1 />
<#foreach column in m_masken>
insert into tmp_mask_style (tid,maskeninfo_id,ord,filename)
select max(tid)+${counter_tid},${column.mask},${column.ord},'${column.filename}' from tmp_hilf;
update tmp_mask_style set stylesheet_id=(select max(tid) from sx_stylesheets where filename='${column.filename}')
where filename='${column.filename}';
<#assign counter_tid = counter_tid + 1 />
</#foreach>
insert into sx_mask_style ( tid, maskeninfo_id, stylesheet_id, ord)
SELECT tid, maskeninfo_id, stylesheet_id, ord
FROM tmp_mask_style;
drop table tmp_mask_style;
--Field zu Stylesheet Zuordnungen:
--####################################################################################################
CREATE temp TABLE tmp_stylesheet_field
(
tid serial NOT NULL,
stylesheet_id INTEGER,
tablename char(255),
fieldname char(255),
filename char(255)
);
delete from tmp_hilf;
insert into tmp_hilf select max(tid) from stylesheet_field;
update tmp_hilf set tid=1 where tid is null;
<#assign counter_tid = 1 />
<#foreach column in m_stylesheet_field>
INSERT INTO tmp_stylesheet_field (tid, filename, tablename, fieldname)
select max(tid)+${counter_tid}, '${column.filename}', '${column.tablename}', '${column.fieldname}' from tmp_hilf;
update tmp_stylesheet_field set stylesheet_id=(select max(tid) from sx_stylesheets where filename='${column.filename}')
where filename='${column.filename}';
<#assign counter_tid = counter_tid + 1 />
</#foreach>
insert into stylesheet_field ( tid, stylesheet_id, tablename, fieldname)
SELECT tid, stylesheet_id, tablename, fieldname
FROM tmp_stylesheet_field;
drop table tmp_stylesheet_field;
drop table tmp_hilf;
<#if SQLdialect='Postgres'>
select sp_update_sequence('sx_stylesheets');
select sp_update_sequence('sx_mask_style');
select sp_update_sequence('stylesheet_field');
</#if>
</#macro>

9
src-modules/module/viz/schluesseltabellen/viz_chart.unl

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
2^STUD_ENTW_SEM_STAAT_LINE^Studierende nach Nationalität^ ^{"version":"0.2b","id":1,"name":"","renderer":"plot","dataSources":[{"value":"1","nr":2,"name":"Tab. 2","isDefault":true}],"targetDiv":"","chartElements":[{"nr":0,"vizTypeUniquename":"line","caption":"line","datasource":"1","elementTypeProperties":[{"nr":0,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sos_stg_aggr_sem_rueck_beur_ein_str"},{"nr":0,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"sos_stg_aggr_summe"},{"nr":0,"vizTypePropertyUniquename":"stroke","caption":"Serien-Dimension","propertyValue":"dim_staat_inl_ausl_lang"}]}],"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Studierende nach Nationalität"},{"name":"height","vizPropertyVariablename":"height","propertyValue":"450","propUnit":""},{"name":"width","vizPropertyVariablename":"width","propertyValue":"650","propUnit":""},{"name":"marginLeft","vizPropertyVariablename":"marginLeft","propertyValue":"100","propUnit":""},{"name":"marginTop","vizPropertyVariablename":"marginTop","propertyValue":"35","propUnit":""},{"name":"marginBottom","vizPropertyVariablename":"marginBottom","propertyValue":"96","propUnit":""},{"name":"backgroundColor","vizPropertyVariablename":"backgroundColor","propertyValue":"#ffffff","propUnit":""},{"name":"color","vizPropertyVariablename":"color","propertyValue":"#000000","propUnit":""},{"name":"fontFamily","vizPropertyVariablename":"fontFamily","propertyValue":"system_ui","propUnit":""},{"name":"fontSize","vizPropertyVariablename":"fontSize","propertyValue":"12","propUnit":"px"},{"name":"fill_static","vizPropertyVariablename":"fill","propertyValue":"#000000","propUnit":""},{"name":"label_y","vizPropertyVariablename":"label","propertyValue":"Anzahl Studierende","propUnit":""},{"name":"line_y","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"label_x","vizPropertyVariablename":"label","propertyValue":"Semester","propUnit":""},{"name":"line_x","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"tickRotate_x","vizPropertyVariablename":"tickRotate","propertyValue":"-30","propUnit":""},{"name":"scheme","vizPropertyVariablename":"scheme","propertyValue":"tableau10","propUnit":""},{"name":"legend","vizPropertyVariablename":"legend","propertyValue":"true","propUnit":""}],"dataTransformation":[{"tableId":1,"colname":"sos_stg_aggr_sem_rueck_beur_ein_str","colfunction":"switchWord1and2ff"}]}^ ^1^^^44070^ ^2^^^
4^STUD_ENTW_SEM_GESCHL_LINE_1^Studienanfänger_innen nach Geschlecht^ ^{"version":"0.2b","id":1,"name":"","renderer":"plot","dataSources":[{"value":"3","nr":4,"name":"Tab. 4","isDefault":true}],"targetDiv":"","chartElements":[{"nr":0,"vizTypeUniquename":"line","caption":"line","datasource":"3","elementTypeProperties":[{"nr":0,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sos_stg_aggr_sem_rueck_beur_ein_str"},{"nr":0,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"sos_stg_aggr_summe"},{"nr":0,"vizTypePropertyUniquename":"stroke","caption":"Serien-Dimension","propertyValue":"sos_stg_aggr_geschlecht_str"}]}],"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Studienanfänger_innen nach Geschlecht"},{"name":"height","vizPropertyVariablename":"height","propertyValue":"450","propUnit":""},{"name":"width","vizPropertyVariablename":"width","propertyValue":"650","propUnit":""},{"name":"marginLeft","vizPropertyVariablename":"marginLeft","propertyValue":"100","propUnit":""},{"name":"marginTop","vizPropertyVariablename":"marginTop","propertyValue":"35","propUnit":""},{"name":"marginBottom","vizPropertyVariablename":"marginBottom","propertyValue":"100","propUnit":""},{"name":"backgroundColor","vizPropertyVariablename":"backgroundColor","propertyValue":"#ffffff","propUnit":""},{"name":"color","vizPropertyVariablename":"color","propertyValue":"#000000","propUnit":""},{"name":"fontFamily","vizPropertyVariablename":"fontFamily","propertyValue":"system_ui","propUnit":""},{"name":"fontSize","vizPropertyVariablename":"fontSize","propertyValue":"12","propUnit":"px"},{"name":"fill_static","vizPropertyVariablename":"fill","propertyValue":"#000000","propUnit":""},{"name":"label_y","vizPropertyVariablename":"label","propertyValue":"Anzahl Studierende","propUnit":""},{"name":"line_y","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"label_x","vizPropertyVariablename":"label","propertyValue":"Semester","propUnit":""},{"name":"line_x","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"tickRotate_x","vizPropertyVariablename":"tickRotate","propertyValue":"-30","propUnit":""},{"name":"scheme","vizPropertyVariablename":"scheme","propertyValue":"tableau10","propUnit":""},{"name":"legend","vizPropertyVariablename":"legend","propertyValue":"true","propUnit":""}],"dataTransformation":[{"tableId":3,"colname":"sos_stg_aggr_sem_rueck_beur_ein_str","colfunction":"switchWord1and2ff"}]}^ ^1^^^44070^ ^2^^^
5^STUD_ENTW_SEM_STAAT_LINE_1^Studienanfänger_innen nach Nationalität^ ^{"version":"0.2b","id":1,"name":"","renderer":"plot","dataSources":[{"value":"4","nr":5,"name":"Tab. 5","isDefault":true}],"targetDiv":"","chartElements":[{"nr":0,"vizTypeUniquename":"line","caption":"line","datasource":"4","elementTypeProperties":[{"nr":0,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sos_stg_aggr_sem_rueck_beur_ein_str"},{"nr":0,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"sos_stg_aggr_summe"},{"nr":0,"vizTypePropertyUniquename":"stroke","caption":"Serien-Dimension","propertyValue":"dim_staat_inl_ausl_lang"}]}],"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Studienanfänger_innen nach Nationalität"},{"name":"height","vizPropertyVariablename":"height","propertyValue":"450","propUnit":""},{"name":"width","vizPropertyVariablename":"width","propertyValue":"650","propUnit":""},{"name":"marginLeft","vizPropertyVariablename":"marginLeft","propertyValue":"100","propUnit":""},{"name":"marginTop","vizPropertyVariablename":"marginTop","propertyValue":"35","propUnit":""},{"name":"marginBottom","vizPropertyVariablename":"marginBottom","propertyValue":"96","propUnit":""},{"name":"backgroundColor","vizPropertyVariablename":"backgroundColor","propertyValue":"#ffffff","propUnit":""},{"name":"color","vizPropertyVariablename":"color","propertyValue":"#000000","propUnit":""},{"name":"fontFamily","vizPropertyVariablename":"fontFamily","propertyValue":"system_ui","propUnit":""},{"name":"fontSize","vizPropertyVariablename":"fontSize","propertyValue":"12","propUnit":"px"},{"name":"fill_static","vizPropertyVariablename":"fill","propertyValue":"#000000","propUnit":""},{"name":"label_y","vizPropertyVariablename":"label","propertyValue":"Anzahl Studierende","propUnit":""},{"name":"line_y","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"label_x","vizPropertyVariablename":"label","propertyValue":"Semester","propUnit":""},{"name":"line_x","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"tickRotate_x","vizPropertyVariablename":"tickRotate","propertyValue":"-30","propUnit":""},{"name":"scheme","vizPropertyVariablename":"scheme","propertyValue":"tableau10","propUnit":""},{"name":"legend","vizPropertyVariablename":"legend","propertyValue":"true","propUnit":""}],"dataTransformation":[{"tableId":4,"colname":"sos_stg_aggr_sem_rueck_beur_ein_str","colfunction":"switchWord1and2ff"}]}^ ^1^^^44070^ ^2^^^
3^STUD_ENTW_SEM_ABSCHLUSS_LINE^Studierende nach Abschlussart^ ^{"version":"0.2b","id":1,"name":"","renderer":"plot","dataSources":[{"value":"2","nr":3,"name":"Tab. 3","isDefault":true}],"targetDiv":"","chartElements":[{"nr":0,"vizTypeUniquename":"line","caption":"line","datasource":"2","elementTypeProperties":[{"nr":0,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sos_stg_aggr_sem_rueck_beur_ein_str"},{"nr":0,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"sos_stg_aggr_summe"},{"nr":0,"vizTypePropertyUniquename":"stroke","caption":"Serien-Dimension","propertyValue":"dim_studiengang_abschlussart_str"}]}],"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Studierende nach Abschlussart"},{"name":"height","vizPropertyVariablename":"height","propertyValue":"450","propUnit":""},{"name":"width","vizPropertyVariablename":"width","propertyValue":"650","propUnit":""},{"name":"marginLeft","vizPropertyVariablename":"marginLeft","propertyValue":"100","propUnit":""},{"name":"marginTop","vizPropertyVariablename":"marginTop","propertyValue":"35","propUnit":""},{"name":"marginBottom","vizPropertyVariablename":"marginBottom","propertyValue":"96","propUnit":""},{"name":"backgroundColor","vizPropertyVariablename":"backgroundColor","propertyValue":"#ffffff","propUnit":""},{"name":"color","vizPropertyVariablename":"color","propertyValue":"#000000","propUnit":""},{"name":"fontFamily","vizPropertyVariablename":"fontFamily","propertyValue":"system_ui","propUnit":""},{"name":"fontSize","vizPropertyVariablename":"fontSize","propertyValue":"12","propUnit":"px"},{"name":"fill_static","vizPropertyVariablename":"fill","propertyValue":"#000000","propUnit":""},{"name":"label_y","vizPropertyVariablename":"label","propertyValue":"Anzahl Studierende","propUnit":""},{"name":"line_y","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"label_x","vizPropertyVariablename":"label","propertyValue":"Semester","propUnit":""},{"name":"line_x","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"tickRotate_x","vizPropertyVariablename":"tickRotate","propertyValue":"-30","propUnit":""},{"name":"scheme","vizPropertyVariablename":"scheme","propertyValue":"tableau10","propUnit":""},{"name":"legend","vizPropertyVariablename":"legend","propertyValue":"true","propUnit":""}],"dataTransformation":[{"tableId":2,"colname":"sos_stg_aggr_sem_rueck_beur_ein_str","colfunction":"switchWord1and2ff"}]}^ ^1^^^44070^ ^2^^^
6^STUD_ENTW_SEM_ABSCHLUSS_LINE_1^Studienanfänger_innen nach Abschlussart^ ^{"version":"0.2b","id":1,"name":"","renderer":"plot","dataSources":[{"value":"5","nr":6,"name":"Tab. 6","isDefault":true}],"targetDiv":"","chartElements":[{"nr":0,"vizTypeUniquename":"line","caption":"line","datasource":"5","elementTypeProperties":[{"nr":0,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sos_stg_aggr_sem_rueck_beur_ein_str"},{"nr":0,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"sos_stg_aggr_summe"},{"nr":0,"vizTypePropertyUniquename":"stroke","caption":"Serien-Dimension","propertyValue":"dim_studiengang_abschlussart_str"}]}],"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Studienanfänger_innen nach Abschlussart"},{"name":"height","vizPropertyVariablename":"height","propertyValue":"450","propUnit":""},{"name":"width","vizPropertyVariablename":"width","propertyValue":"650","propUnit":""},{"name":"marginLeft","vizPropertyVariablename":"marginLeft","propertyValue":"100","propUnit":""},{"name":"marginTop","vizPropertyVariablename":"marginTop","propertyValue":"35","propUnit":""},{"name":"marginBottom","vizPropertyVariablename":"marginBottom","propertyValue":"96","propUnit":""},{"name":"backgroundColor","vizPropertyVariablename":"backgroundColor","propertyValue":"#ffffff","propUnit":""},{"name":"color","vizPropertyVariablename":"color","propertyValue":"#000000","propUnit":""},{"name":"fontFamily","vizPropertyVariablename":"fontFamily","propertyValue":"system_ui","propUnit":""},{"name":"fontSize","vizPropertyVariablename":"fontSize","propertyValue":"12","propUnit":"px"},{"name":"fill_static","vizPropertyVariablename":"fill","propertyValue":"#000000","propUnit":""},{"name":"label_y","vizPropertyVariablename":"label","propertyValue":"Anzahl Studierende","propUnit":""},{"name":"line_y","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"label_x","vizPropertyVariablename":"label","propertyValue":"Semester","propUnit":""},{"name":"line_x","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"tickRotate_x","vizPropertyVariablename":"tickRotate","propertyValue":"-30","propUnit":""},{"name":"scheme","vizPropertyVariablename":"scheme","propertyValue":"tableau10","propUnit":""},{"name":"legend","vizPropertyVariablename":"legend","propertyValue":"true","propUnit":""}],"dataTransformation":[{"tableId":5,"colname":"sos_stg_aggr_sem_rueck_beur_ein_str","colfunction":"switchWord1and2ff"}]}^ ^1^^^44070^ ^2^^^
1^STUD_ENTW_SEM_GESCHL_LINE^Studierende nach Geschlecht^TEST^{"version":"0.2b","id":1,"name":"","renderer":"plot","dataSources":[{"value":"0","nr":1,"name":"Tab. 1","isDefault":true}],"targetDiv":"","chartElements":[{"nr":0,"vizTypeUniquename":"line","caption":"line","datasource":"0","elementTypeProperties":[{"nr":0,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sos_stg_aggr_sem_rueck_beur_ein_str"},{"nr":0,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"sos_stg_aggr_summe"},{"nr":0,"vizTypePropertyUniquename":"stroke","caption":"Serien-Dimension","propertyValue":"sos_stg_aggr_geschlecht_str"}]}],"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Studierende nach Geschlecht"},{"name":"height","vizPropertyVariablename":"height","propertyValue":"450","propUnit":""},{"name":"width","vizPropertyVariablename":"width","propertyValue":"650","propUnit":""},{"name":"marginLeft","vizPropertyVariablename":"marginLeft","propertyValue":"100","propUnit":""},{"name":"marginTop","vizPropertyVariablename":"marginTop","propertyValue":"35","propUnit":""},{"name":"marginBottom","vizPropertyVariablename":"marginBottom","propertyValue":"100","propUnit":""},{"name":"backgroundColor","vizPropertyVariablename":"backgroundColor","propertyValue":"#ffffff","propUnit":""},{"name":"color","vizPropertyVariablename":"color","propertyValue":"#000000","propUnit":""},{"name":"fontFamily","vizPropertyVariablename":"fontFamily","propertyValue":"system_ui","propUnit":""},{"name":"fontSize","vizPropertyVariablename":"fontSize","propertyValue":"12","propUnit":"px"},{"name":"fill_static","vizPropertyVariablename":"fill","propertyValue":"#000000","propUnit":""},{"name":"label_y","vizPropertyVariablename":"label","propertyValue":"Anzahl Studierende","propUnit":""},{"name":"line_y","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"label_x","vizPropertyVariablename":"label","propertyValue":"Semester","propUnit":""},{"name":"line_x","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"tickRotate_x","vizPropertyVariablename":"tickRotate","propertyValue":"-30","propUnit":""},{"name":"scheme","vizPropertyVariablename":"scheme","propertyValue":"tableau10","propUnit":""},{"name":"legend","vizPropertyVariablename":"legend","propertyValue":"true","propUnit":""}],"dataTransformation":[{"tableId":0,"colname":"sos_stg_aggr_sem_rueck_beur_ein_str","colfunction":"switchWord1and2ff"}]}^ ^1^^^44070^ ^2^^^
8^STUD_ENTW_SEM_STAAT_LINE_1HS^Studienanfänger_innen 1. HS nach Nationalität^ ^{"version":"0.2b","id":1,"name":"","renderer":"plot","dataSources":[{"value":"7","nr":8,"name":"Tab. 8","isDefault":true}],"targetDiv":"","chartElements":[{"nr":0,"vizTypeUniquename":"line","caption":"line","datasource":"7","elementTypeProperties":[{"nr":0,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sos_stg_aggr_sem_rueck_beur_ein_str"},{"nr":0,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"sos_stg_aggr_summe"},{"nr":0,"vizTypePropertyUniquename":"stroke","caption":"Serien-Dimension","propertyValue":"dim_staat_inl_ausl_lang"}]}],"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Studienanfänger_innen 1. HS nach Nationalität"},{"name":"height","vizPropertyVariablename":"height","propertyValue":"450","propUnit":""},{"name":"width","vizPropertyVariablename":"width","propertyValue":"650","propUnit":""},{"name":"marginLeft","vizPropertyVariablename":"marginLeft","propertyValue":"100","propUnit":""},{"name":"marginTop","vizPropertyVariablename":"marginTop","propertyValue":"35","propUnit":""},{"name":"marginBottom","vizPropertyVariablename":"marginBottom","propertyValue":"96","propUnit":""},{"name":"backgroundColor","vizPropertyVariablename":"backgroundColor","propertyValue":"#ffffff","propUnit":""},{"name":"color","vizPropertyVariablename":"color","propertyValue":"#000000","propUnit":""},{"name":"fontFamily","vizPropertyVariablename":"fontFamily","propertyValue":"system_ui","propUnit":""},{"name":"fontSize","vizPropertyVariablename":"fontSize","propertyValue":"12","propUnit":"px"},{"name":"fill_static","vizPropertyVariablename":"fill","propertyValue":"#000000","propUnit":""},{"name":"label_y","vizPropertyVariablename":"label","propertyValue":"Anzahl Studierende","propUnit":""},{"name":"line_y","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"label_x","vizPropertyVariablename":"label","propertyValue":"Semester","propUnit":""},{"name":"line_x","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"tickRotate_x","vizPropertyVariablename":"tickRotate","propertyValue":"-30","propUnit":""},{"name":"scheme","vizPropertyVariablename":"scheme","propertyValue":"tableau10","propUnit":""},{"name":"legend","vizPropertyVariablename":"legend","propertyValue":"true","propUnit":""}],"dataTransformation":[{"tableId":7,"colname":"sos_stg_aggr_sem_rueck_beur_ein_str","colfunction":"switchWord1and2ff"}]}^ ^1^^^44070^ ^2^^^
7^STUD_ENTW_SEM_GESCHL_LINE_1HS^Studienanfänger_innen 1. HS nach Geschlecht^ ^{"version":"0.2b","id":1,"name":"","renderer":"plot","dataSources":[{"value":"6","nr":7,"name":"Tab. 7","isDefault":true}],"targetDiv":"","chartElements":[{"nr":0,"vizTypeUniquename":"line","caption":"line","datasource":"6","elementTypeProperties":[{"nr":0,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sos_stg_aggr_sem_rueck_beur_ein_str"},{"nr":0,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"sos_stg_aggr_summe"},{"nr":0,"vizTypePropertyUniquename":"stroke","caption":"Serien-Dimension","propertyValue":"sos_stg_aggr_geschlecht_str"}]}],"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Studienanfänger_innen 1. HS nach Geschlecht"},{"name":"height","vizPropertyVariablename":"height","propertyValue":"450","propUnit":""},{"name":"width","vizPropertyVariablename":"width","propertyValue":"650","propUnit":""},{"name":"marginLeft","vizPropertyVariablename":"marginLeft","propertyValue":"100","propUnit":""},{"name":"marginTop","vizPropertyVariablename":"marginTop","propertyValue":"35","propUnit":""},{"name":"marginBottom","vizPropertyVariablename":"marginBottom","propertyValue":"100","propUnit":""},{"name":"backgroundColor","vizPropertyVariablename":"backgroundColor","propertyValue":"#ffffff","propUnit":""},{"name":"color","vizPropertyVariablename":"color","propertyValue":"#000000","propUnit":""},{"name":"fontFamily","vizPropertyVariablename":"fontFamily","propertyValue":"system_ui","propUnit":""},{"name":"fontSize","vizPropertyVariablename":"fontSize","propertyValue":"12","propUnit":"px"},{"name":"fill_static","vizPropertyVariablename":"fill","propertyValue":"#000000","propUnit":""},{"name":"label_y","vizPropertyVariablename":"label","propertyValue":"Anzahl Studierende","propUnit":""},{"name":"line_y","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"label_x","vizPropertyVariablename":"label","propertyValue":"Semester","propUnit":""},{"name":"line_x","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"tickRotate_x","vizPropertyVariablename":"tickRotate","propertyValue":"-30","propUnit":""},{"name":"scheme","vizPropertyVariablename":"scheme","propertyValue":"tableau10","propUnit":""},{"name":"legend","vizPropertyVariablename":"legend","propertyValue":"true","propUnit":""}],"dataTransformation":[{"tableId":6,"colname":"sos_stg_aggr_sem_rueck_beur_ein_str","colfunction":"switchWord1and2ff"}]}^ ^1^^^44070^ ^2^^^
9^STUD_ENTW_SEM_ABSCHLUSS_LINE_1HS^Studienanfänger_innen 1. HS nach Abschlussart^ ^{"version":"0.2b","id":1,"name":"","renderer":"plot","dataSources":[{"value":"8","nr":9,"name":"Tab. 9","isDefault":true}],"targetDiv":"","chartElements":[{"nr":0,"vizTypeUniquename":"line","caption":"line","datasource":"8","elementTypeProperties":[{"nr":0,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sos_stg_aggr_sem_rueck_beur_ein_str"},{"nr":0,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"sos_stg_aggr_summe"},{"nr":0,"vizTypePropertyUniquename":"stroke","caption":"Serien-Dimension","propertyValue":"dim_studiengang_abschlussart_str"}]}],"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Studienanfänger_innen 1. HS nach Abschlussart"},{"name":"height","vizPropertyVariablename":"height","propertyValue":"450","propUnit":""},{"name":"width","vizPropertyVariablename":"width","propertyValue":"650","propUnit":""},{"name":"marginLeft","vizPropertyVariablename":"marginLeft","propertyValue":"100","propUnit":""},{"name":"marginTop","vizPropertyVariablename":"marginTop","propertyValue":"35","propUnit":""},{"name":"marginBottom","vizPropertyVariablename":"marginBottom","propertyValue":"96","propUnit":""},{"name":"backgroundColor","vizPropertyVariablename":"backgroundColor","propertyValue":"#ffffff","propUnit":""},{"name":"color","vizPropertyVariablename":"color","propertyValue":"#000000","propUnit":""},{"name":"fontFamily","vizPropertyVariablename":"fontFamily","propertyValue":"system_ui","propUnit":""},{"name":"fontSize","vizPropertyVariablename":"fontSize","propertyValue":"12","propUnit":"px"},{"name":"fill_static","vizPropertyVariablename":"fill","propertyValue":"#000000","propUnit":""},{"name":"label_y","vizPropertyVariablename":"label","propertyValue":"Anzahl Studierende","propUnit":""},{"name":"line_y","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"label_x","vizPropertyVariablename":"label","propertyValue":"Semester","propUnit":""},{"name":"line_x","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"tickRotate_x","vizPropertyVariablename":"tickRotate","propertyValue":"-30","propUnit":""},{"name":"scheme","vizPropertyVariablename":"scheme","propertyValue":"tableau10","propUnit":""},{"name":"legend","vizPropertyVariablename":"legend","propertyValue":"true","propUnit":""}],"dataTransformation":[{"tableId":8,"colname":"sos_stg_aggr_sem_rueck_beur_ein_str","colfunction":"switchWord1and2ff"}]}^ ^1^^^44070^ ^2^^^

105
src-modules/module/viz/schluesseltabellen/viz_property.unl

@ -1,49 +1,56 @@ @@ -1,49 +1,56 @@
1^Diagramm-Höhe^height^^px^1^ ^0^4^10^Diagrammhöhe (exkl. Skalenbeschriftung). Wird nur ausgewertet wenn es keine Y-Achse gibt!^101^^^integer^
2^Diagramm-Breite^width^^px^1^ ^0^4^10^Diagrammsbreite (exkl.Skalenbeschriftung)^102^100^2000^integer^
3^Werte-Label-Breite^valueLabelWidth^^px^1^^0^1^18^^^^^integer^
4^Hintergrundfarbe^backgroundColor^#ffffff^ ^1^#ffffeb^0^3^11^Hintergrundfarbe der Grafik^201^^^string^
5^Vordergrundfarbe^color^^ ^1^black^0^3^11^Farbe von Text- und Diagrammelementen^202^^^string^
6^Schriftgröße^fontSize^^px^1^ ^0^4^11^Schriftgröße der Skalenbeschriftung^204^^^integer^
7^Schriftfamilie^fontFamily^^ ^1^serif|sans-serif|monospace|system_ui^0^2^11^Schriftfamlilie der Skalenbeschriftung^203^^^string^
8^Flächenfarbe^fill_static^^ ^1^ ^0^3^10^Füllfarbe (nur) von Diagrammelementen (Flächen, Balken, Säulen, Streifen, Punkte)^305^^^string^
11^X: Schriftneigung^tickRotate_x^^ ^1^ ^0^1^18^Neigungswinkel der Achsenwerte^604^^^integer^
12^X: Skalierung^ticks_x^^ ^1^ ^0^1^18^Feinheit der Wertegliederung^605^^^integer^
13^X: Schriftgröße^tickSize_x^^ ^1^ ^0^1^18^Größe der Achsenwerte^603^^^integer^
15^X: Label-Ausrichtung^labelAnchor_x^^ ^1^left|center|right^0^2^18^Label-Position^601^^^string^
16^Außenrand links^marginLeft^100^px^1^ ^0^4^10^Abstand links neben der Grafik (inkl. Skala)^103^^^integer^
17^Außenrand rechts^marginRight^^px^1^ ^0^4^10^Abstand rechts neben der Grafik (inkl. Skala)^104^^^integer^
18^Außenrand oben^marginTop^^px^1^ ^0^4^10^Abstand oberhalb der Grafik^105^^^integer^
19^Außenrand unten^marginBottom^^px^1^ ^0^4^10^ ^106^^^integer^
20^Innenrand oben^insetTop^^px^1^ ^0^4^10^Oberer Abstand zwischen Diagramm und Grafik^107^^^integer^
21^Innenrand unten^insetBottom^^px^1^ ^0^4^10^Unterer Abstand zwischen Diagramm und Grafik^108^^^integer^
22^Innenrand links^insetLeft^^px^1^ ^0^4^10^Linker Abstand zwischen Diagramm und Grafik^109^^^integer^
23^Innenrand rechts^insetRight^^px^1^ ^0^4^10^Rechter Abstand zwischen Diagramm und Grafik^110^^^integer^
24^Farbschema^scheme^^ ^1^blues|greens|greys|oranges|purples|reds^0^2^20^Farbschema von Diagrammelemente^303^^^string^
25^Farbtyp^type^^ ^1^einfarbig|mehrfarbig|zyklisch^0^2^12^Ein-/Mehrfarbigkeit von Diagrammelementen^302^^^string^
43^Farbsättigung^fillOpacity^^ ^1^ ^0^4^12^Deckkraft der Füllfarbe von Diagrammelementen^306^^^string^
45^Strichdicke^strokeWidth^^ ^1^ ^0^1^12^Strichdicke von Diagrammelementen (relevant für Plot.dot, Plot.tickX/Y)^308^^^string^
56^Fortlaufende Skala^continous scales^^ ^1^identity|linear|log|pow|sqrt|symlog^0^2^15^Art der Skalen-Gliederung^401^^^string^
57^Kategorie-Skala^categorical scales^^ ^1^point|band^0^2^15^Art der Skalen-Gliederung^402^^^string^
58^Datums-Skala^date scales^^ ^1^time|utc^0^2^15^Art der Skalen-Gliederung^403^^^string^
60^Farbschema-Typ^schemetype^^ ^1^linear|sqrt|pow|log|symlog|sequential|cyclical|quantile^0^2^12^Art der Farbverteilung in Diagrammelementen^304^^^string^
61^Elementtyp^marks^^ ^1^Plot.line|Plot.dot|Plot.areaX|Plot.areaY.|Plot.barX|Plot.barY|Plot.rectX|Plot.rectY|Plot.ruleX|Plot.ruleY|Plot.tickX|Plot.tickY|Plot.arrow|Plot.cell|Plot.text|Plot.link|Plot.image^0^2^12^Ausrichtung und Form der Dialgrammelemente^301^^^string^
63^X: Label-Abstand^labelOffset_x^^px^1^ ^0^1^18^Label-Abstand von Achse^602^^^integer^
68^Maß: Chart-Abstand^gridChartOffset^^ ^1^ ^0^1^18^ ^607^^^string^
69^Maß: Label-Höhe^gridLabelHeight^^px^1^ ^0^1^18^ ^608^^^integer^
70^X-Achse^x^^ ^1^ ^0^1^5^ ^608^^^string^
71^Kategorie-Dimension 2^viz_dimension2^^ ^1^ ^0^1^5^ ^608^^^string^
72^Y-Achse^y^^ ^1^ ^0^1^6^ ^608^^^string^
73^Maß 2^viz_measure2^^ ^1^ ^0^1^6^ ^608^^^string^
76^Serien-Dimension^stroke^^ ^1^ ^0^1^5^ ^608^^^string^
78^Legende^legend^^ ^1^true|false^0^2^20^ ^303^^^boolean^
79^Textbeschriftung^text^^ ^1^ ^0^1^5^ ^608^^^string^
80^Serienfarbe^fill^^ ^1^ ^0^1^5^Füllfarbe (nur) von Diagrammelementen (Flächen, Balken, Säulen, Streifen, Punkte)^305^^^string^
81^Y: Label-Abstand^labelOffset_y^^px^1^ ^0^1^21^Label-Abstand von Achse^602^^^integer^
82^Y: Label-Ausrichtung^labelAnchor_y^^ ^1^left|center|right^0^2^21^Label-Position^601^^^string^
83^Y: Schriftgröße^tickSize_y^^ ^1^ ^0^1^21^Größe der Achsenwerte^603^^^integer^
84^Y: Schriftneigung^tickRotate_y^^ ^1^ ^0^1^21^Neigungswinkel der Achsenwerte^604^^^integer^
85^Y: Skalierung^ticks_y^^ ^1^ ^0^1^21^Feinheit der Wertegliederung^605^^^integer^
86^X: Label^label_x^^ ^1^ ^0^1^18^Label X-Achse^602^^^string^
87^Y: Label^label_y^^ ^1^ ^0^1^21^Label Y-Achse^602^^^string^
88^Punktdicke^r^^ ^1^ ^0^1^5^Punktdicke von Diagrammelementen (relevant für Plot.dot, Plot.tickX/Y)^308^^^string^
89^Sortierung^sort^^ ^1^ ^0^1^5^ ^608^^^string^
1^Grafik-Höhe^height^450^ ^1^ ^0^4^10^Diagrammhöhe (exkl. Skalenbeschriftung). Wird nur ausgewertet wenn es keine Y-Achse gibt!^101^^^integer^
2^Grafik-Breite^width^650^ ^1^ ^0^4^10^Diagrammsbreite (exkl.Skalenbeschriftung)^102^100^2000^integer^
3^Werte-Label-Breite^valueLabelWidth^^^0^^0^1^18^^^^^integer^
4^Hintergrundfarbe^backgroundColor^#ffffff^ ^0^#ffffeb^0^3^11^Hintergrundfarbe der Grafik^201^^^string^
5^Schriftfarbe^color^ ^ ^0^black^0^3^11^Farbe von Text- und Diagrammelementen^202^^^string^
6^Schriftgröße^fontSize^^px^0^ ^0^4^11^Schriftgröße der Skalenbeschriftung^204^^^integer^
7^Schriftfamilie^fontFamily^^ ^0^serif|sans-serif|monospace|system_ui^0^2^11^Schriftfamlilie der Skalenbeschriftung^203^^^string^
8^Flächenfarbe^fill_static^ ^ ^0^ ^0^3^11^Nur für Grafikelemente Flächen und Balken. Füllfarbe.^305^^^string^
11^X: Schriftneigung^tickRotate_x^^ ^0^ ^0^1^18^Neigungswinkel der Achsenwerte^604^^^integer^
12^X: Skalierung^ticks_x^^ ^0^ ^0^1^18^Feinheit der Wertegliederung^605^^^integer^
13^X: Schriftgröße^tickSize_x^^ ^0^ ^0^1^18^Größe der Achsenwerte^603^^^integer^
15^X: Label-Ausrichtung^labelAnchor_x^^ ^0^left|center|right^0^2^18^Label-Position^601^^^string^
16^Außenrand links^marginLeft^100^^0^ ^0^4^10^Abstand zwischen Grafik und linkem Hintergrundrand^103^^^integer^
17^Außenrand rechts^marginRight^ ^^0^ ^0^4^10^Abstand zwischen Grafik und rechtem Hintergrundrand^104^^^integer^
18^Außenrand oben^marginTop^ ^^0^ ^0^4^10^Abstand zwischen Grafik und oberem Hintergrundrand^105^^^integer^
19^Außenrand unten^marginBottom^ ^^0^ ^0^4^10^Abstand zwischen Grafik und unterem Hintergrundrand^106^^^integer^
20^Innenrand oben^insetTop^ ^^0^ ^0^4^10^Abstand zwischen Grafik und Achsenbeschriftung oben^107^^^integer^
21^Innenrand unten^insetBottom^ ^^0^ ^0^4^10^Abstand zwischen Grafik und Achsenbeschriftung unten^108^^^integer^
22^Innenrand links^insetLeft^ ^^0^ ^0^4^10^Abstand zwischen Grafik und Achsenbeschriftung links^109^^^integer^
23^Innenrand rechts^insetRight^ ^^0^ ^0^4^10^Abstand zwischen Grafik und Achsenbeschriftung rechts^110^^^integer^
24^Farbschema^scheme^ ^ ^0^blues|greens|greys|oranges|purples|reds|paired|set1|pastel1|pastel2|tableau10|category10|accent|dark2^0^2^22^Nur für Grafikelemente Balken und Linien: Farbtonschema für Serien.^303^^^string^
25^Farbtyp^type^^ ^0^einfarbig|mehrfarbig|zyklisch^0^2^20^Ein-/Mehrfarbigkeit von Diagrammelementen^302^^^string^
43^Farbsättigung^fillOpacity^^ ^0^ ^0^4^20^Deckkraft der Füllfarbe von Diagrammelementen^306^^^string^
45^Strichdicke^strokeWidth^^ ^0^ ^0^1^12^Strichdicke von Diagrammelementen (relevant für Plot.dot, Plot.tickX/Y)^308^^^string^
56^Fortlaufende Skala^continous scales^^ ^0^identity|linear|log|pow|sqrt|symlog^0^2^15^Art der Skalen-Gliederung^401^^^string^
57^Kategorie-Skala^categorical scales^^ ^0^point|band^0^2^15^Art der Skalen-Gliederung^402^^^string^
58^Datums-Skala^date scales^^ ^0^time|utc^0^2^15^Art der Skalen-Gliederung^403^^^string^
60^Farbschema-Typ^schemetype^^ ^0^linear|sqrt|pow|log|symlog|sequential|cyclical|quantile^0^2^20^Art der Farbverteilung in Diagrammelementen^304^^^string^
61^Grafik-Elementtyp^marks^ ^ ^0^Plot.line|Plot.dot|Plot.areaX|Plot.areaY.|Plot.barX|Plot.barY|Plot.rectX|Plot.rectY|Plot.ruleX|Plot.ruleY|Plot.tickX|Plot.tickY|Plot.arrow|Plot.cell|Plot.text|Plot.link|Plot.image^0^2^12^Ausrichtung und Form der grafischen Elemente^301^^^string^
63^X: Label-Abstand^labelOffset_x^^^0^ ^0^1^18^Label-Abstand von Achse^602^^^integer^
68^Maß: Chart-Abstand^gridChartOffset^^ ^0^ ^0^1^18^ ^607^^^string^
69^Maß: Label-Höhe^gridLabelHeight^^^0^ ^0^1^18^ ^608^^^integer^
70^X-Achse^x^^ ^0^ ^0^1^5^ ^608^^^string^
72^Y-Achse^y^^ ^0^ ^0^1^6^ ^608^^^string^
73^Maß 1^measure1^^ ^0^ ^0^1^6^ ^608^^^string^
76^Serien-Dimension^stroke^^ ^0^ ^0^1^5^ ^608^^^string^
78^Legende^legend^ ^ ^0^true|false^0^2^22^ ^303^^^boolean^
79^Beschriftung^text^ ^ ^0^ ^0^1^5^ ^608^^^string^
80^Serienfarbe^fill^ ^ ^0^ ^0^1^22^Nur für Grafikelemente Balken und Linien: Merkmal der Serien-Dimension^305^^^string^
81^Y: Label-Abstand^labelOffset_y^^^0^ ^0^1^21^Label-Abstand von Achse^602^^^integer^
82^Y: Label-Ausrichtung^labelAnchor_y^^ ^0^left|center|right^0^2^21^Label-Position^601^^^string^
83^Y: Schriftgröße^tickSize_y^^ ^0^ ^0^1^21^Größe der Achsenwerte^603^^^integer^
84^Y: Schriftneigung^tickRotate_y^^ ^0^ ^0^1^21^Neigungswinkel der Achsenwerte^604^^^integer^
85^Y: Skalierung^ticks_y^^ ^0^ ^0^1^21^Feinheit der Wertegliederung^605^^^integer^
86^X: Label^label_x^^ ^0^ ^0^1^18^Label X-Achse^602^^^string^
87^Y: Label^label_y^^ ^0^ ^0^1^21^Label Y-Achse^602^^^string^
88^Punktdicke^r^^ ^0^ ^0^1^5^Punktdicke von Diagrammelementen (relevant für Plot.dot, Plot.tickX/Y)^308^^^string^
91^Quell-Dimension^viz_source^^ ^0^ ^0^1^5^ ^608^^^string^
92^Ziel-Dimension 1^viz_target1^^ ^0^ ^0^1^5^ ^608^^^string^
93^X: Linie^line_x^true^ ^0^true|false^0^2^18^Linie X-Achse^602^^^boolean^
94^Y: Linie^line_y^true^ ^0^true|false^0^2^21^Linie Y-Achse^602^^^boolean^
95^Dimension 1^dimension1^^ ^0^ ^0^1^5^ ^608^^^string^
96^Dimension 2^dimension2^^ ^0^ ^0^1^5^ ^608^^^string^
97^Leerzeilen-Maskierung^null_value_mask^ ^ ^0^ ^0^1^10^Text, der ersetzt wird, wenn eine Dimension leer ist, z.B. *Andere Hochschule* bei BA-MA-Übergang^700^^^string^
98^Y-Wertebereich^domain^ ^ ^1^ ^0^1^21^Bittte Wertebereich mit [] eingeben, z.B. [0,100] für 0-100^1000^^^js^
99^X: Skala^scale_x^band^ ^1^linear|identity|point|band|time^0^2^18^ ^1000^^^string^

21
src-modules/module/viz/schluesseltabellen/viz_property_group.unl

@ -1,11 +1,10 @@ @@ -1,11 +1,10 @@
5^CATEGORY^Kategorie-Achse^60^
6^MEASURE^Maß-Achse^70^
10^LAYOUT^Layout^10^
11^STYLE^Style^20^
12^MARKS^Diagramm-Elemente^30^
15^SCALES^Skalen-Typen^40^
17^AXIS^Achsen-Customizing^50^
18^TICKS_LABELS_X^X Achsen-Beschriftung^^
19^TICKFORMATTING^Zahlen-, Datumsformat^80^
20^COLOR^Farben^90^
21^TICKS_LABELS_Y^Y Achsen-Beschriftung^^
5^CATEGORY^Kategorie-Achse^70^
6^MEASURE^Maß-Achse^80^
10^LAYOUT^Größe und Ränder^20^
11^STYLE^Formatierung^30^
12^MARKS^Grafik-Elemente^10^
15^SCALES^Skalen-Typen^100^
18^TICKS_LABELS_X^X-Achse^60^
19^TICKFORMATTING^Zahlen-, Datumsformat^90^
21^TICKS_LABELS_Y^Y-Achse^50^
22^SERIES^Seriendimension^65^

2
src-modules/module/viz/schluesseltabellen/viz_property_group_renderer.unl

@ -3,3 +3,5 @@ @@ -3,3 +3,5 @@
3^2^18^x^
4^2^20^color^
5^2^21^y^
6^2^22^color^
7^1^19^values^

7
src-modules/module/viz/schluesseltabellen/viz_property_renderer.unl

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
1^2^2^width^
2^2^4^background^
2^2^4^backgroundColor^
3^2^5^color^
4^2^7^fontFamily^
5^2^6^fontSize^
@ -23,3 +23,8 @@ @@ -23,3 +23,8 @@
25^2^87^label^
26^2^84^tickRotate^
27^2^79^text^
28^2^93^line^
29^2^94^line^
30^1^97^null_value_mask^
31^2^98^domain^
32^2^99^type^

2
src-modules/module/viz/schluesseltabellen/viz_renderer.unl

@ -1,2 +1,2 @@ @@ -1,2 +1,2 @@
1^d3js^D3JS^
1^d3js^D3JS (V7)^
2^plot^Observable Plot^

21
src-modules/module/viz/schluesseltabellen/viz_type.unl

@ -1,9 +1,12 @@ @@ -1,9 +1,12 @@
1^bar_x^Balken (horizontal)^2^/superx/xml/js/viz/viz_functions.js^makeBarX^
2^bar_y^Balken (vertikal)^2^/superx/xml/js/viz/viz_functions.js^makeBarY^
3^line^Linien (vertikal)^2^/superx/xml/js/viz/viz_functions.js^makeLine^
5^area_y^Flächen (vertikal)^2^^^
6^dot^Punkte (vertikal)^2^^^
7^box_x^Boxplot (horizontal)^2^ ^ ^
8^area_x^Flächen (horizontal)^2^^^
9^box_y^Boxplot (vertikal)^2^ ^ ^
10^text^Wertelabel^2^ ^ ^
1^bar_x^Balken (horizontal)^2^ ^ ^H^
2^bar_y^Balken (vertikal)^2^ ^ ^V^
3^line^Linien (vertikal)^2^ ^ ^V^
5^area_y^Flächen (vertikal)^2^^^V^
6^dot^Punkte (vertikal)^2^^^V^
7^box_x^Boxplot (horizontal)^2^ ^ ^H^
8^area_x^Flächen (horizontal)^2^^^H^
9^box_y^Boxplot (vertikal)^2^ ^ ^V^
10^text^Wertelabel^2^ ^ ^^
11^bar_x_d3^Balken (horizontal)^1^^^H^
12^sankey^Sankey^1^ ^^H^
13^worldmap^Weltkarte^1^ ^^H^

421
src-modules/module/viz/schluesseltabellen/viz_type_property.unl

@ -1,33 +1,388 @@ @@ -1,33 +1,388 @@
1^1^70^1^
3^1^72^1^
8^2^70^1^
9^2^72^1^
10^3^70^1^
12^5^70^1^
13^3^72^1^
15^5^72^1^
16^6^70^1^
17^6^72^1^
20^1^76^0^
21^1^80^0^
22^2^76^0^
23^2^80^0^
24^5^8^0^
26^3^76^0^
27^6^88^0^
28^3^89^0^
29^6^89^0^
30^5^89^0^
31^2^89^0^
32^1^89^0^
33^7^70^1^
34^7^72^0^
35^9^70^0^
36^9^72^1^
37^8^8^0^
38^8^72^1^
39^8^70^1^
40^8^89^0^
41^10^70^1^
42^10^72^1^
43^10^79^1^
1^1^70^1^1^
3^1^72^1^10^
8^2^70^1^0^
9^2^72^1^10^
10^3^70^1^0^
12^5^70^1^0^
13^3^72^1^10^
15^5^72^1^10^
16^6^70^1^0^
17^6^72^1^10^
20^1^76^0^20^
22^2^76^0^20^
24^5^76^0^20^
26^3^76^0^20^
27^6^76^0^20^
33^7^70^1^0^
34^7^72^0^0^
35^9^70^0^0^
36^9^72^1^0^
37^8^76^0^20^
38^8^72^1^10^
39^8^70^1^0^
41^10^70^0^0^
42^10^72^0^10^
43^10^76^0^20^
44^11^95^1^0^
45^11^73^1^0^
46^12^73^1^20^
47^12^95^1^1^
48^12^96^1^10^
49^1^3^0^^
50^1^4^0^201^
51^1^5^0^202^
52^1^6^0^204^
53^1^7^0^203^
54^1^8^0^305^
55^1^11^0^604^
56^1^12^0^605^
57^1^13^0^603^
58^1^15^0^601^
59^1^16^0^103^
60^1^17^0^104^
61^1^18^0^105^
62^1^19^0^106^
63^1^20^0^107^
64^1^21^0^108^
65^1^22^0^109^
66^1^23^0^110^
67^1^25^0^302^
68^1^43^0^306^
69^1^45^0^308^
70^1^56^0^401^
71^1^57^0^402^
72^1^58^0^403^
73^1^60^0^304^
74^1^61^0^301^
75^1^63^0^602^
76^1^68^0^607^
77^1^69^0^608^
78^1^81^0^602^
79^1^82^0^601^
80^1^83^0^603^
81^1^84^0^604^
82^1^85^0^605^
83^1^86^0^602^
84^1^87^0^602^
85^1^93^0^602^
86^1^94^0^602^
87^2^3^0^^
88^2^4^0^201^
89^2^5^0^202^
90^2^6^0^204^
91^2^7^0^203^
92^2^8^0^305^
93^2^11^0^604^
94^2^12^0^605^
95^2^13^0^603^
96^2^15^0^601^
97^2^16^0^103^
98^2^17^0^104^
99^2^18^0^105^
100^2^19^0^106^
101^2^20^0^107^
102^2^21^0^108^
103^2^22^0^109^
104^2^23^0^110^
105^2^25^0^302^
106^2^43^0^306^
107^2^45^0^308^
108^2^56^0^401^
109^2^57^0^402^
110^2^58^0^403^
111^2^60^0^304^
112^2^61^0^301^
113^2^63^0^602^
114^2^68^0^607^
115^2^69^0^608^
116^2^81^0^602^
117^2^82^0^601^
118^2^83^0^603^
119^2^84^0^604^
120^2^85^0^605^
121^2^86^0^602^
122^2^87^0^602^
123^2^93^0^602^
124^2^94^0^602^
125^3^3^0^^
126^3^4^0^201^
127^3^5^0^202^
128^3^6^0^204^
129^3^7^0^203^
130^3^8^0^305^
131^3^11^0^604^
132^3^12^0^605^
133^3^13^0^603^
134^3^15^0^601^
135^3^16^0^103^
136^3^17^0^104^
137^3^18^0^105^
138^3^19^0^106^
139^3^20^0^107^
140^3^21^0^108^
141^3^22^0^109^
142^3^23^0^110^
143^3^25^0^302^
144^3^43^0^306^
145^3^45^0^308^
146^3^56^0^401^
147^3^57^0^402^
148^3^58^0^403^
149^3^60^0^304^
150^3^61^0^301^
151^3^63^0^602^
152^3^68^0^607^
153^3^69^0^608^
154^3^81^0^602^
155^3^82^0^601^
156^3^83^0^603^
157^3^84^0^604^
158^3^85^0^605^
159^3^86^0^602^
160^3^87^0^602^
161^3^93^0^602^
162^3^94^0^602^
163^5^3^0^^
164^5^4^0^201^
165^5^5^0^202^
166^5^6^0^204^
167^5^7^0^203^
168^5^8^0^305^
169^5^11^0^604^
170^5^12^0^605^
171^5^13^0^603^
172^5^15^0^601^
173^5^16^0^103^
174^5^17^0^104^
175^5^18^0^105^
176^5^19^0^106^
177^5^20^0^107^
178^5^21^0^108^
179^5^22^0^109^
180^5^23^0^110^
181^5^25^0^302^
182^5^43^0^306^
183^5^45^0^308^
184^5^56^0^401^
185^5^57^0^402^
186^5^58^0^403^
187^5^60^0^304^
188^5^61^0^301^
189^5^63^0^602^
190^5^68^0^607^
191^5^69^0^608^
192^5^81^0^602^
193^5^82^0^601^
194^5^83^0^603^
195^5^84^0^604^
196^5^85^0^605^
197^5^86^0^602^
198^5^87^0^602^
199^5^93^0^602^
200^5^94^0^602^
201^6^3^0^^
202^6^4^0^201^
203^6^5^0^202^
204^6^6^0^204^
205^6^7^0^203^
206^6^8^0^305^
207^6^11^0^604^
208^6^12^0^605^
209^6^13^0^603^
210^6^15^0^601^
211^6^16^0^103^
212^6^17^0^104^
213^6^18^0^105^
214^6^19^0^106^
215^6^20^0^107^
216^6^21^0^108^
217^6^22^0^109^
218^6^23^0^110^
219^6^25^0^302^
220^6^43^0^306^
221^6^45^0^308^
222^6^56^0^401^
223^6^57^0^402^
224^6^58^0^403^
225^6^60^0^304^
226^6^61^0^301^
227^6^63^0^602^
228^6^68^0^607^
229^6^69^0^608^
230^6^81^0^602^
231^6^82^0^601^
232^6^83^0^603^
233^6^84^0^604^
234^6^85^0^605^
235^6^86^0^602^
236^6^87^0^602^
237^6^93^0^602^
238^6^94^0^602^
239^7^3^0^^
240^7^4^0^201^
241^7^5^0^202^
242^7^6^0^204^
243^7^7^0^203^
245^7^11^0^604^
246^7^12^0^605^
247^7^13^0^603^
248^7^15^0^601^
249^7^16^0^103^
250^7^17^0^104^
251^7^18^0^105^
252^7^19^0^106^
253^7^20^0^107^
254^7^21^0^108^
255^7^22^0^109^
256^7^23^0^110^
257^7^25^0^302^
258^7^43^0^306^
259^7^45^0^308^
260^7^56^0^401^
261^7^57^0^402^
262^7^58^0^403^
263^7^60^0^304^
264^7^61^0^301^
265^7^63^0^602^
266^7^68^0^607^
267^7^69^0^608^
268^7^81^0^602^
269^7^82^0^601^
270^7^83^0^603^
271^7^84^0^604^
272^7^85^0^605^
273^7^86^0^602^
274^7^87^0^602^
275^7^93^0^602^
276^7^94^0^602^
277^8^3^0^^
278^8^4^0^201^
279^8^5^0^202^
280^8^6^0^204^
281^8^7^0^203^
282^8^8^0^305^
283^8^11^0^604^
284^8^12^0^605^
285^8^13^0^603^
286^8^15^0^601^
287^8^16^0^103^
288^8^17^0^104^
289^8^18^0^105^
290^8^19^0^106^
291^8^20^0^107^
292^8^21^0^108^
293^8^22^0^109^
294^8^23^0^110^
295^8^25^0^302^
296^8^43^0^306^
297^8^45^0^308^
298^8^56^0^401^
299^8^57^0^402^
300^8^58^0^403^
301^8^60^0^304^
302^8^61^0^301^
303^8^63^0^602^
304^8^68^0^607^
305^8^69^0^608^
306^8^81^0^602^
307^8^82^0^601^
308^8^83^0^603^
309^8^84^0^604^
310^8^85^0^605^
311^8^86^0^602^
312^8^87^0^602^
313^8^93^0^602^
314^8^94^0^602^
315^9^3^0^^
316^9^4^0^201^
317^9^5^0^202^
318^9^6^0^204^
319^9^7^0^203^
321^9^11^0^604^
322^9^12^0^605^
323^9^13^0^603^
324^9^15^0^601^
325^9^16^0^103^
326^9^17^0^104^
327^9^18^0^105^
328^9^19^0^106^
329^9^20^0^107^
330^9^21^0^108^
331^9^22^0^109^
332^9^23^0^110^
333^9^25^0^302^
334^9^43^0^306^
335^9^45^0^308^
336^9^56^0^401^
337^9^57^0^402^
338^9^58^0^403^
339^9^60^0^304^
340^9^61^0^301^
341^9^63^0^602^
342^9^68^0^607^
343^9^69^0^608^
344^9^81^0^602^
345^9^82^0^601^
346^9^83^0^603^
347^9^84^0^604^
348^9^85^0^605^
349^9^86^0^602^
350^9^87^0^602^
351^9^93^0^602^
352^9^94^0^602^
353^10^3^0^^
354^10^4^0^201^
355^10^5^0^202^
356^10^6^0^204^
357^10^7^0^203^
358^10^8^0^305^
359^10^11^0^604^
360^10^12^0^605^
361^10^13^0^603^
362^10^15^0^601^
363^10^16^0^103^
364^10^17^0^104^
365^10^18^0^105^
366^10^19^0^106^
367^10^20^0^107^
368^10^21^0^108^
369^10^22^0^109^
370^10^23^0^110^
371^10^25^0^302^
372^10^43^0^306^
373^10^45^0^308^
374^10^56^0^401^
375^10^79^0^40^
376^10^58^0^403^
377^10^60^0^304^
378^10^61^0^301^
379^10^63^0^602^
380^10^68^0^607^
381^10^69^0^608^
382^10^81^0^602^
383^10^82^0^601^
384^10^83^0^603^
385^10^84^0^604^
386^10^85^0^605^
387^10^86^0^602^
388^10^87^0^602^
389^10^93^0^602^
390^10^94^0^602^
391^2^78^0^300^
392^2^24^0^400^
393^1^78^0^400^
394^1^24^0^410^
395^8^78^0^400^
396^8^24^0^410^
397^5^78^0^400^
398^5^24^0^410^
399^3^78^0^400^
400^3^24^0^410^
401^6^78^0^400^
402^6^24^0^410^
403^12^97^0^100^
404^12^6^10^0^
405^12^7^0^0^
406^12^5^20^0^
407^13^73^1^10^
408^13^95^1^1^

21
superx/style/LICENSE_bulma_tooltip_1.2.0.txt

@ -1,21 +0,0 @@ @@ -1,21 +0,0 @@
MIT License
Copyright (c) 2020 CreativeBulma
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

2
superx/style/bulma-tooltip.min.css vendored

File diff suppressed because one or more lines are too long

38
superx/style/sx_viz_muster.css

@ -17,9 +17,6 @@ @@ -17,9 +17,6 @@
margin-left: 0.15em;
padding: 0.4rem 0.4rem 0.4rem 0.4rem; } /*für Padding: ob re un li*/
.feldname {
color: hsl(0, 0%, 29%); }
/*Tabs, Selektionsfelder-Formular*/
.label-container { /*für Responsibility der Eingabefelder*/
display: flex;
@ -34,12 +31,6 @@ @@ -34,12 +31,6 @@
margin-left: 1.0em;
margin-top: 0.4em; }
.select { /*für SELECT Elemente*/
font-family: sans-serif;
font-weight: normal;
width:75px;
}
.control-new { /*für einheitliche Controlbreite*/
width: 17.0em;
}
@ -49,15 +40,30 @@ @@ -49,15 +40,30 @@
font-weight: normal; }
.tabs { /*für Tab-Namen*/
font-size: 2rem; }
font-size: 2rem; }
.input::-moz-placeholder, .textarea::-moz-placeholder, .select select::-moz-placeholder {
/*font-family: sans-serif;*/
font-size: 0.8rem;
color: black /*rgba(54, 54, 54, 0.3)*/; }
color: black; }
.input:-ms-input-placeholder, .textarea:-ms-input-placeholder, .select select:-ms-input-placeholder {
/*font-family: sans-serif;*/
font-size: 0.8rem;
color: black /*(54, 54, 54, 0.3);*/; }
color: hsl(0, 0%, 29%); }
.input::-webkit-input-placeholder, .textarea::-webkit-input-placeholder, .select select::-webkit-input-placeholder, .select select::-webkit-input-selected {
font-size: 0.8rem;
color: hsl(0, 0%, 29%); }
.vizTooltip {
position: absolute;
text-align: center;
width: 60px;
height: 28px;
padding: 2px;
font: 12px sans-serif;
background: lightsteelblue;
border: 0px;
border-radius: 8px;
pointer-events: none;
}

128
superx/xml/30190_html_chart_sankey.xsl

@ -0,0 +1,128 @@ @@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util.HtmlUtils">
<xsl:import href="xsl_functions.xsl" />
<xsl:import href="resultset_html.xsl" />
<xsl:import href="interLinks_html.xsl" />
<xsl:import href="pageComponents_html.xsl" />
<xsl:import href="pageComponents_html_final.xsl" />
<xsl:import href="viz_html_chart.xsl" />
<xsl:import href="menue_html_dojo.xsl" />
<!--In diesem Stylesheet können Sie individuelle templates unterbringen,
die in ihrer Präzedenz das normale Stylesheet
pageComponents_html.xsl überragt. -->
<xsl:import href="pageComponents_html_final.xsl" />
<xsl:decimal-format name="German" grouping-separator="." NaN="" zero-digit ="0" decimal-separator="," />
<!-- wichtig für DOJO!-->
<xsl:output method="xml" media-type="text/html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="DTD/xhtml1-strict.dtd" cdata-section-elements="script style" indent="yes" encoding="UTF-8"/>
<xsl:variable name="defaultRenderer" select="'d3js'" />
<xsl:variable name="availableRendererPlot" select="'false'" />
<xsl:variable name="availableRendererD3" select="'true'" />
<xsl:template match="/">
<xsl:call-template name="table"/>
</xsl:template>
<!-- start table main-->
<xsl:template name="table">
<html>
<xsl:choose>
<xsl:when test="/ergebnisse/@hisinone_active='true'">
<xsl:call-template name="head_hisinone" ><xsl:with-param name="title" select="concat('Ergebnis ',/ergebnisse/ergebnis[ position()=1]/maskenname)" /></xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="head_superx_viz" ><xsl:with-param name="title" select="concat('Ergebnis ',/ergebnisse/ergebnis[ position()=1]/maskenname)" /></xsl:call-template>
</xsl:otherwise>
</xsl:choose>
<xsl:call-template name="tableJavascript_viz"></xsl:call-template>
<!-- start Body-->
<body onload="document.getElementById('progressbar').style.display='none';createViewer();"> <!-- tableonload definiert in pageComponents.pccustomize position table_post_javascript -->
<div id="progressbar" style="position:absolute; width:150px; height:150px; left:200px; top:200px; background:#AAAAAA">
<p>&#160;<b>Laden...</b><br/><img src="../images/progress_bar.gif"></img><br/></p></div>
<xsl:if test="/ergebnisse/@showNavigation='true'">
<xsl:for-each select="/ergebnisse/menue">
<xsl:call-template name="menuFrame" />
</xsl:for-each>
</xsl:if>
<div>
<xsl:if test="/ergebnisse/@showNavigation='true'">
<xsl:attribute name="class"><xsl:text>page-wrap</xsl:text></xsl:attribute>
<xsl:for-each select="/ergebnisse/menue">
<xsl:call-template name="topbar_menue" />
</xsl:for-each>
</xsl:if>
<div>
<xsl:if test="/ergebnisse/@showNavigation='true'">
<xsl:attribute name="id"><xsl:text>wrapper</xsl:text></xsl:attribute>
</xsl:if>
<xsl:call-template name="viz_canvas"/>
<xsl:call-template name="bottombar" />
<xsl:comment>customfooter</xsl:comment>
</div>
</div>
<xsl:call-template name="footer" />
</body>
<!-- end body -->
</html>
</xsl:template>
<!-- end main -->
<xsl:template name="importVizJavascriptLibs">
<script language="Javascript" type="text/javascript" src="../xml/js/viz/d3.min.js" />
<script language="Javascript" type="text/javascript" src="../xml/js/viz/plot.js" />
<script language="Javascript" type="text/javascript" src="../xml/js/viz/viz_functions.js" />
<script language="Javascript" type="module" src="../xml/js/viz/d3-sankey.js" />
<script language="Javascript" type="text/javascript">
<xsl:text><![CDATA[
function createViewer()
{
var myChartModelStr="{\"version\":\"0.2b\",\"id\":1,\"name\":\"\",\"renderer\":\"d3js\",\"dataSources\":[{\"value\":\"0\",\"nr\":1,\"name\":\"Tab. 1\",\"isDefault\":true}],\"targetDiv\":\"\",\"chartElements\":[{\"nr\":0,\"vizTypeUniquename\":\"sankey\",\"caption\":\"sankey\",\"datasource\":\"0\",\"elementTypeProperties\":[{\"nr\":0,\"vizTypePropertyUniquename\":\"dimension1\",\"caption\":\"Dimension 1\",\"propertyValue\":\"erfolg_ba_ma_uebergang_abschluss_vorher_abschluss_str\"},{\"nr\":0,\"vizTypePropertyUniquename\":\"dimension2\",\"caption\":\"Dimension 2\",\"propertyValue\":\"erfolg_ba_ma_uebergang_einschr_nachher_abschluss_str\"},{\"nr\":0,\"vizTypePropertyUniquename\":\"measure1\",\"caption\":\"Maß 1\",\"propertyValue\":\"erfolg_ba_ma_uebergang_summe\"}]}],\"chartPropertiesUsed\":[{\"name\":\"caption\",\"vizPropertyVariablename\":\"caption\",\"propertyValue\":\"Übergang BA-MA Datenblatt\"},{\"name\":\"height\",\"vizPropertyVariablename\":\"height\",\"propertyValue\":\"850\",\"propUnit\":\"\"},{\"name\":\"width\",\"vizPropertyVariablename\":\"width\",\"propertyValue\":\"950\",\"propUnit\":\"\"},{\"name\":\"marginLeft\",\"vizPropertyVariablename\":\"marginLeft\",\"propertyValue\":\"100\",\"propUnit\":\"\"},{\"name\":\"backgroundColor\",\"vizPropertyVariablename\":\"backgroundColor\",\"propertyValue\":\"#ffffff\",\"propUnit\":\"\"},{\"name\":\"line_y\",\"vizPropertyVariablename\":\"line\",\"propertyValue\":\"true\",\"propUnit\":\"\"},{\"name\":\"line_x\",\"vizPropertyVariablename\":\"line\",\"propertyValue\":\"true\",\"propUnit\":\"\"}],\"dataTransformation\":[]}";
myChartModel=JSON.parse(myChartModelStr);
renderChart('chartDiv2',myChartModel);
}
]]></xsl:text>
</script>
</xsl:template>
<xsl:template name="viz_canvas">
<xsl:if test="/ergebnisse/@isMakro='true'">
<h1><xsl:value-of select="/ergebnisse/makro/name" /></h1>
</xsl:if>
<p></p>
<xsl:call-template name="buildVizMetadata" />
<!-- end Kopf-->
<!-- start Grafik-->
<xsl:for-each select="ergebnisse">
<xsl:for-each select="ergebnis/ergebniselement">
<p class="title is-5"><xsl:value-of select="../maskenname" /></p>
<xsl:call-template name="legende" />
</xsl:for-each>
<span class="separator">&#160;</span>
<!--Beginn Selektions-Card-->
<!--Beginn Berichtstitel, Pfad, Knopfleiste-->
<section class="hero-body has-background-light">
<div class="columns is-mobile is-left">
<div class="card has-background-light">
<div class="card-content">
<div class="tab-content">
<div id="chartDiv2">
<a onclick="createViewer();"><span>Diagramm anzeigen</span></a>
</div>
</div><!--tab-content -->
</div> <!-- card-content -->
</div><!--card -->
</div> <!-- column -->
</section>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

124
superx/xml/30220_html_chart_sankey.xsl

@ -0,0 +1,124 @@ @@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util.HtmlUtils">
<xsl:import href="xsl_functions.xsl" />
<xsl:import href="resultset_html.xsl" />
<xsl:import href="interLinks_html.xsl" />
<xsl:import href="pageComponents_html.xsl" />
<xsl:import href="pageComponents_html_final.xsl" />
<xsl:import href="viz_html_chart.xsl" />
<xsl:import href="menue_html_dojo.xsl" />
<!--In diesem Stylesheet können Sie individuelle templates unterbringen,
die in ihrer Präzedenz das normale Stylesheet
pageComponents_html.xsl überragt. -->
<xsl:import href="pageComponents_html_final.xsl" />
<xsl:decimal-format name="German" grouping-separator="." NaN="" zero-digit ="0" decimal-separator="," />
<!-- wichtig für DOJO!-->
<xsl:output method="xml" media-type="text/html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="DTD/xhtml1-strict.dtd" cdata-section-elements="script style" indent="yes" encoding="UTF-8"/>
<xsl:variable name="defaultRenderer" select="'d3jsv3'" />
<xsl:variable name="availableRendererPlot" select="'false'" />
<xsl:variable name="availableRendererD3" select="'false'" />
<xsl:variable name="availableRendererD3V3" select="'true'" />
<xsl:template match="/">
<xsl:call-template name="table"/>
</xsl:template>
<!-- start table main-->
<xsl:template name="table">
<html>
<xsl:choose>
<xsl:when test="/ergebnisse/@hisinone_active='true'">
<xsl:call-template name="head_hisinone" ><xsl:with-param name="title" select="concat('Ergebnis ',/ergebnisse/ergebnis[ position()=1]/maskenname)" /></xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="head_superx_viz" ><xsl:with-param name="title" select="concat('Ergebnis ',/ergebnisse/ergebnis[ position()=1]/maskenname)" /></xsl:call-template>
</xsl:otherwise>
</xsl:choose>
<xsl:call-template name="tableJavascript_viz"></xsl:call-template>
<!-- start Body-->
<body onload="document.getElementById('progressbar').style.display='none';createViewer();"> <!-- tableonload definiert in pageComponents.pccustomize position table_post_javascript -->
<div id="progressbar" style="position:absolute; width:150px; height:150px; left:200px; top:200px; background:#AAAAAA">
<p>&#160;<b>Laden...</b><br/><img src="../images/progress_bar.gif"></img><br/></p></div>
<xsl:if test="/ergebnisse/@showNavigation='true'">
<xsl:for-each select="/ergebnisse/menue">
<xsl:call-template name="menuFrame" />
</xsl:for-each>
</xsl:if>
<div>
<xsl:if test="/ergebnisse/@showNavigation='true'">
<xsl:attribute name="class"><xsl:text>page-wrap</xsl:text></xsl:attribute>
<xsl:for-each select="/ergebnisse/menue">
<xsl:call-template name="topbar_menue" />
</xsl:for-each>
</xsl:if>
<div>
<xsl:if test="/ergebnisse/@showNavigation='true'">
<xsl:attribute name="id"><xsl:text>wrapper</xsl:text></xsl:attribute>
</xsl:if>
<xsl:call-template name="viz_canvas"/>
<xsl:call-template name="bottombar" />
<xsl:comment>customfooter</xsl:comment>
</div>
</div>
<xsl:call-template name="footer" />
</body>
<!-- end body -->
</html>
</xsl:template>
<!-- end main -->
<xsl:template name="importVizJavascriptLibs">
<script language="Javascript" type="text/javascript" src="../xml/js/viz/d3.v3.min.js" />
<script language="Javascript" type="text/javascript" src="../xml/js/viz/viz_functions.js" />
<script language="Javascript" type="text/javascript" src="../xml/js/viz/sankey_v3.js" />
<script language="Javascript" type="text/javascript">
<xsl:text><![CDATA[
function createViewer()
{
var myChartModelStr="{\"id\":1,\"name\":\"\",\"renderer\":\"d3jsv3\",\"dataSources\":[{\"value\":\"0\",\"nr\":1,\"name\":\"Tab. 1\",\"isDefault\":true}],\"targetDiv\":\"chartDiv\",\"chartElements\":[{\"nr\":0,\"vizTypeUniquename\":\"sankey\",\"caption\":\"sankey\",\"datasource\":\"0\",\"elementTypeProperties\":[{\"nr\":0,\"vizTypePropertyUniquename\":\"viz_dimension1\",\"caption\":\"Kategorie-Dimension 1\",\"propertyValue\":\"erfolg_ba_ma_uebergang_abschluss_vorher_abschluss_str\"},{\"nr\":0,\"vizTypePropertyUniquename\":\"viz_dimension2\",\"caption\":\"Kategorie-Dimension 2\",\"propertyValue\":\"erfolg_ba_ma_uebergang_einschr_nachher_abschluss_str\"},{\"nr\":0,\"vizTypePropertyUniquename\":\"viz_measure1\",\"caption\":\"Maß 1\",\"propertyValue\":\"erfolg_ba_ma_uebergang_summe\"}]}],\"chartPropertiesUsed\":[{\"name\":\"caption\",\"vizPropertyVariablename\":\"caption\",\"propertyValue\":\"Übergang BA-MA Datenblatt (Neu)\"}]}";
myChartModel=JSON.parse(myChartModelStr);
renderChart('chartDiv2',myChartModel);
}
]]></xsl:text>
</script>
</xsl:template>
<xsl:template name="viz_canvas">
<xsl:if test="/ergebnisse/@isMakro='true'">
<h1><xsl:value-of select="/ergebnisse/makro/name" /></h1>
</xsl:if>
<p></p>
<xsl:call-template name="buildVizMetadata" />
<!-- end Kopf-->
<!-- start Grafik-->
<xsl:for-each select="ergebnisse">
<!--Beginn Selektions-Card-->
<!--Beginn Berichtstitel, Pfad, Knopfleiste-->
<section class="hero-body has-background-light">
<div class="columns is-mobile is-left">
<div class="card has-background-light">
<div class="card-content">
<div class="tab-content">
<div id="chartDiv2">
<a onclick="createViewer();"><span>Diagramm anzeigen</span></a>
</div>
</div><!--tab-content -->
</div> <!-- card-content -->
</div><!--card -->
</div> <!-- column -->
</section>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

27
superx/xml/js/viz/d3-sankey-license.txt

@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
Copyright 2015, Mike Bostock
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the author nor the names of contributors may be used to
endorse or promote products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

425
superx/xml/js/viz/d3-sankey.js vendored

@ -0,0 +1,425 @@ @@ -0,0 +1,425 @@
// https://github.com/d3/d3-sankey v0.12.3 Copyright 2019 Mike Bostock
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array'), require('d3-shape')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-array', 'd3-shape'], factory) :
(global = global || self, factory(global.d3 = global.d3 || {}, global.d3, global.d3));
}(this, function (exports, d3Array, d3Shape) { 'use strict';
function targetDepth(d) {
return d.target.depth;
}
function left(node) {
return node.depth;
}
function right(node, n) {
return n - 1 - node.height;
}
function justify(node, n) {
return node.sourceLinks.length ? node.depth : n - 1;
}
function center(node) {
return node.targetLinks.length ? node.depth
: node.sourceLinks.length ? d3Array.min(node.sourceLinks, targetDepth) - 1
: 0;
}
function constant(x) {
return function() {
return x;
};
}
function ascendingSourceBreadth(a, b) {
return ascendingBreadth(a.source, b.source) || a.index - b.index;
}
function ascendingTargetBreadth(a, b) {
return ascendingBreadth(a.target, b.target) || a.index - b.index;
}
function ascendingBreadth(a, b) {
return a.y0 - b.y0;
}
function value(d) {
return d.value;
}
function defaultId(d) {
return d.index;
}
function defaultNodes(graph) {
return graph.nodes;
}
function defaultLinks(graph) {
return graph.links;
}
function find(nodeById, id) {
const node = nodeById.get(id);
if (!node) throw new Error("missing: " + id);
return node;
}
function computeLinkBreadths({nodes}) {
for (const node of nodes) {
let y0 = node.y0;
let y1 = y0;
for (const link of node.sourceLinks) {
link.y0 = y0 + link.width / 2;
y0 += link.width;
}
for (const link of node.targetLinks) {
link.y1 = y1 + link.width / 2;
y1 += link.width;
}
}
}
function Sankey() {
let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent
let dx = 24; // nodeWidth
let dy = 8, py; // nodePadding
let id = defaultId;
let align = justify;
let sort;
let linkSort;
let nodes = defaultNodes;
let links = defaultLinks;
let iterations = 6;
function sankey() {
const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};
computeNodeLinks(graph);
computeNodeValues(graph);
computeNodeDepths(graph);
computeNodeHeights(graph);
computeNodeBreadths(graph);
computeLinkBreadths(graph);
return graph;
}
sankey.update = function(graph) {
computeLinkBreadths(graph);
return graph;
};
sankey.nodeId = function(_) {
return arguments.length ? (id = typeof _ === "function" ? _ : constant(_), sankey) : id;
};
sankey.nodeAlign = function(_) {
return arguments.length ? (align = typeof _ === "function" ? _ : constant(_), sankey) : align;
};
sankey.nodeSort = function(_) {
return arguments.length ? (sort = _, sankey) : sort;
};
sankey.nodeWidth = function(_) {
return arguments.length ? (dx = +_, sankey) : dx;
};
sankey.nodePadding = function(_) {
return arguments.length ? (dy = py = +_, sankey) : dy;
};
sankey.nodes = function(_) {
return arguments.length ? (nodes = typeof _ === "function" ? _ : constant(_), sankey) : nodes;
};
sankey.links = function(_) {
return arguments.length ? (links = typeof _ === "function" ? _ : constant(_), sankey) : links;
};
sankey.linkSort = function(_) {
return arguments.length ? (linkSort = _, sankey) : linkSort;
};
sankey.size = function(_) {
return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];
};
sankey.extent = function(_) {
return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];
};
sankey.iterations = function(_) {
return arguments.length ? (iterations = +_, sankey) : iterations;
};
function computeNodeLinks({nodes, links}) {
for (const [i, node] of nodes.entries()) {
node.index = i;
node.sourceLinks = [];
node.targetLinks = [];
}
const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));
for (const [i, link] of links.entries()) {
link.index = i;
let {source, target} = link;
if (typeof source !== "object") source = link.source = find(nodeById, source);
if (typeof target !== "object") target = link.target = find(nodeById, target);
source.sourceLinks.push(link);
target.targetLinks.push(link);
}
if (linkSort != null) {
for (const {sourceLinks, targetLinks} of nodes) {
sourceLinks.sort(linkSort);
targetLinks.sort(linkSort);
}
}
}
function computeNodeValues({nodes}) {
for (const node of nodes) {
node.value = node.fixedValue === undefined
? Math.max(d3Array.sum(node.sourceLinks, value), d3Array.sum(node.targetLinks, value))
: node.fixedValue;
}
}
function computeNodeDepths({nodes}) {
const n = nodes.length;
let current = new Set(nodes);
let next = new Set;
let x = 0;
while (current.size) {
for (const node of current) {
node.depth = x;
for (const {target} of node.sourceLinks) {
next.add(target);
}
}
if (++x > n) throw new Error("circular link");
current = next;
next = new Set;
}
}
function computeNodeHeights({nodes}) {
const n = nodes.length;
let current = new Set(nodes);
let next = new Set;
let x = 0;
while (current.size) {
for (const node of current) {
node.height = x;
for (const {source} of node.targetLinks) {
next.add(source);
}
}
if (++x > n) throw new Error("circular link");
current = next;
next = new Set;
}
}
function computeNodeLayers({nodes}) {
const x = d3Array.max(nodes, d => d.depth) + 1;
const kx = (x1 - x0 - dx) / (x - 1);
const columns = new Array(x);
for (const node of nodes) {
const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));
node.layer = i;
node.x0 = x0 + i * kx;
node.x1 = node.x0 + dx;
if (columns[i]) columns[i].push(node);
else columns[i] = [node];
}
if (sort) for (const column of columns) {
column.sort(sort);
}
return columns;
}
function initializeNodeBreadths(columns) {
const ky = d3Array.min(columns, c => (y1 - y0 - (c.length - 1) * py) / d3Array.sum(c, value));
for (const nodes of columns) {
let y = y0;
for (const node of nodes) {
node.y0 = y;
node.y1 = y + node.value * ky;
y = node.y1 + py;
for (const link of node.sourceLinks) {
link.width = link.value * ky;
}
}
y = (y1 - y + py) / (nodes.length + 1);
for (let i = 0; i < nodes.length; ++i) {
const node = nodes[i];
node.y0 += y * (i + 1);
node.y1 += y * (i + 1);
}
reorderLinks(nodes);
}
}
function computeNodeBreadths(graph) {
const columns = computeNodeLayers(graph);
py = Math.min(dy, (y1 - y0) / (d3Array.max(columns, c => c.length) - 1));
initializeNodeBreadths(columns);
for (let i = 0; i < iterations; ++i) {
const alpha = Math.pow(0.99, i);
const beta = Math.max(1 - alpha, (i + 1) / iterations);
relaxRightToLeft(columns, alpha, beta);
relaxLeftToRight(columns, alpha, beta);
}
}
// Reposition each node based on its incoming (target) links.
function relaxLeftToRight(columns, alpha, beta) {
for (let i = 1, n = columns.length; i < n; ++i) {
const column = columns[i];
for (const target of column) {
let y = 0;
let w = 0;
for (const {source, value} of target.targetLinks) {
let v = value * (target.layer - source.layer);
y += targetTop(source, target) * v;
w += v;
}
if (!(w > 0)) continue;
let dy = (y / w - target.y0) * alpha;
target.y0 += dy;
target.y1 += dy;
reorderNodeLinks(target);
}
if (sort === undefined) column.sort(ascendingBreadth);
resolveCollisions(column, beta);
}
}
// Reposition each node based on its outgoing (source) links.
function relaxRightToLeft(columns, alpha, beta) {
for (let n = columns.length, i = n - 2; i >= 0; --i) {
const column = columns[i];
for (const source of column) {
let y = 0;
let w = 0;
for (const {target, value} of source.sourceLinks) {
let v = value * (target.layer - source.layer);
y += sourceTop(source, target) * v;
w += v;
}
if (!(w > 0)) continue;
let dy = (y / w - source.y0) * alpha;
source.y0 += dy;
source.y1 += dy;
reorderNodeLinks(source);
}
if (sort === undefined) column.sort(ascendingBreadth);
resolveCollisions(column, beta);
}
}
function resolveCollisions(nodes, alpha) {
const i = nodes.length >> 1;
const subject = nodes[i];
resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);
resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);
resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);
resolveCollisionsTopToBottom(nodes, y0, 0, alpha);
}
// Push any overlapping nodes down.
function resolveCollisionsTopToBottom(nodes, y, i, alpha) {
for (; i < nodes.length; ++i) {
const node = nodes[i];
const dy = (y - node.y0) * alpha;
if (dy > 1e-6) node.y0 += dy, node.y1 += dy;
y = node.y1 + py;
}
}
// Push any overlapping nodes up.
function resolveCollisionsBottomToTop(nodes, y, i, alpha) {
for (; i >= 0; --i) {
const node = nodes[i];
const dy = (node.y1 - y) * alpha;
if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;
y = node.y0 - py;
}
}
function reorderNodeLinks({sourceLinks, targetLinks}) {
if (linkSort === undefined) {
for (const {source: {sourceLinks}} of targetLinks) {
sourceLinks.sort(ascendingTargetBreadth);
}
for (const {target: {targetLinks}} of sourceLinks) {
targetLinks.sort(ascendingSourceBreadth);
}
}
}
function reorderLinks(nodes) {
if (linkSort === undefined) {
for (const {sourceLinks, targetLinks} of nodes) {
sourceLinks.sort(ascendingTargetBreadth);
targetLinks.sort(ascendingSourceBreadth);
}
}
}
// Returns the target.y0 that would produce an ideal link from source to target.
function targetTop(source, target) {
let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;
for (const {target: node, width} of source.sourceLinks) {
if (node === target) break;
y += width + py;
}
for (const {source: node, width} of target.targetLinks) {
if (node === source) break;
y -= width;
}
return y;
}
// Returns the source.y0 that would produce an ideal link from source to target.
function sourceTop(source, target) {
let y = target.y0 - (target.targetLinks.length - 1) * py / 2;
for (const {source: node, width} of target.targetLinks) {
if (node === source) break;
y += width + py;
}
for (const {target: node, width} of source.sourceLinks) {
if (node === target) break;
y -= width;
}
return y;
}
return sankey;
}
function horizontalSource(d) {
return [d.source.x1, d.y0];
}
function horizontalTarget(d) {
return [d.target.x0, d.y1];
}
function sankeyLinkHorizontal() {
return d3Shape.linkHorizontal()
.source(horizontalSource)
.target(horizontalTarget);
}
exports.sankey = Sankey;
exports.sankeyCenter = center;
exports.sankeyJustify = justify;
exports.sankeyLeft = left;
exports.sankeyLinkHorizontal = sankeyLinkHorizontal;
exports.sankeyRight = right;
Object.defineProperty(exports, '__esModule', { value: true });
}));

1552
superx/xml/js/viz/viz_functions.js

File diff suppressed because it is too large Load Diff

251
superx/xml/pageComponents_html_final_viz.xsl.sam

@ -280,4 +280,255 @@ and not(ends-with(filename,'.jrxml'))"> @@ -280,4 +280,255 @@ and not(ends-with(filename,'.jrxml'))">
</tr>
</table>
</xsl:template>
<xsl:template name="pccustomize_hisinone">
<xsl:param name="position" />
<xsl:if test="$position='mask_post_javascript'">
<script language="javascript">
<xsl:text>
function maskonload() {
parent.document.title="</xsl:text>
<xsl:value-of select="/maske/@name" />
<xsl:text> - HISinOne ist ein Produkt der HIS eG";
}</xsl:text>
</script>
</xsl:if>
<xsl:if test="$position='submenu_post_javascript'">
<script language="javascript">
<xsl:text>
function submenuonload() {
parent.document.title="</xsl:text>
<xsl:for-each select="/*/menupos/eintraege/eintrag">
<xsl:if test="position()=last()">
<xsl:value-of select="titel" />
</xsl:if>
</xsl:for-each>
<xsl:text> - HISinOne ist ein Produkt der HIS eG";
}</xsl:text>
</script>
</xsl:if>
<xsl:if test="$position='table_post_javascript'">
<script language="javascript">
function tableonload() {}
</script>
<script language="Javascript">
function prepareExportChart()
{
document.forms[0].stylesheet.value = 'viz_html_chart.xsl';
document.forms[0].contenttype.value = 'text/html';
document.forms[0].target = '_blank';
document.forms[0].offset.value='0';
document.forms[0].maxoffset.value = '1000000';
document.forms[0].reuseresult.value = 'true';
document.forms[0].usetreetable.value = 'false';
startExport();
}
</script>
</xsl:if>
<xsl:if test="$position='table_pre_title' and (/ergebnisse/@isMakro!='true' or @ordnr='0')">
<!--nun die Buttonleiste -->
<div class="iconsTopAbove">
<a onMouseOver="window.status='Export starten';return true"
onFocus="window.status='Download starten';return true" onMouseOut="window.status='Download starten';return true"
class="linkLookImage">
<xsl:attribute name="href"><xsl:text>javascript:prepareExport('druckversion')</xsl:text>
</xsl:attribute>
<img title="Ausgabe in HTML" alt="Ausgabe in HTML"
src="../xml/his1/images/icons/html.svg" class="svg_icon" border="0" />
</a>
<span class="separator">&#160;</span>
<!-- druckversion übergibt maxoffset 10000000 damit alle Sätze angezeigt werden -->
<a onMouseOver="window.status='Export starten';return true" onFocus="window.status='Download starten';return true"
onMouseOut="window.status='Download starten';return true"
class="linkLookImage"><xsl:attribute name="href"><xsl:text>javascript:prepareExportChart()</xsl:text>
</xsl:attribute>
<!-- <xsl:attribute name="title"><xsl:text>Druckversion</xsl:text></xsl:attribute>
<xsl:text>Druckversion</xsl:text> -->
<input type="hidden" name="usetreetable" />
<img title="Ausgabe als Diagramm" alt="Ausgabe in Grafik"
src="../images/icons/no_image_large_mono.svg" border="0" width="16px" height="16px" class="svg_icon"/><!--chart-bar.svg-->
</a>
<span class="separator">&#160;</span>
<a onMouseOver="window.status='Export starten';return true"
onFocus="window.status='Download starten';return true" onMouseOut="window.status='DowcheckTrenload starten';return true"
class="linkLookImage">
<xsl:attribute name="href"><xsl:text>javascript:prepareExport('excel')</xsl:text>
</xsl:attribute>
<img title="Ausgabe in Excel" alt="Ausgabe in Excel"
src="../xml/his1/images/icons/page_white_excel.svg" class="svg_icon" border="0" />
</a>
<span class="separator">&#160;</span>
<!-- <a onMouseOver="window.status='Export starten';return true" onFocus="window.status='Download
starten';return true" onMouseOut="window.status='Download starten';return
true" class="linkLookImage"><xsl:attribute name="href"><xsl:text>javascript:prepareExport('xml');</xsl:text>
</xsl:attribute><img title="Ausgabe in XML" alt="Ausgabe in XML" src="../xml/his1/images/icons/page_white_code.gif"
border="0" /></a> <span class="separator">&#160;</span> -->
<a onMouseOver="window.status='Export starten';return true"
onFocus="window.status='Download starten';return true" onMouseOut="window.status='Download starten';return true"
class="linkLookImage">
<xsl:attribute name="href"><xsl:call-template
name="create_url"><xsl:with-param name="stylesheet">tabelle_xml.xsl</xsl:with-param></xsl:call-template><xsl:text>&amp;contenttype=text/xml&amp;reuseresult=true</xsl:text>
</xsl:attribute>
<img title="Ausgabe in XML" alt="Ausgabe in XML"
src="../xml/his1/images/icons/page_white_code.svg" class="svg_icon" border="0" />
</a>
<span class="separator">&#160;</span>
<a onMouseOver="window.status='Export starten';return true"
onFocus="window.status='Download starten';return true" onMouseOut="window.status='Download starten';return true"
class="linkLookImage">
<xsl:attribute name="href"><xsl:text>javascript: prepareExport('pdf')</xsl:text>
</xsl:attribute>
<img title="Ausgabe im PDF-Querformat" alt="Ausgabe im PDF-Querformat"
src="../xml/his1/images/icons/page_white_width_acrobat.svg" class="svg_icon"
border="0" />
</a>
<span class="separator">&#160;</span>
<!--MB neu CSV-export-->
<a onMouseOver="window.status='Export starten';return true"
onFocus="window.status='Download starten';return true" onMouseOut="window.status='Download starten';return true"
class="linkLookImage">
<xsl:attribute name="href"><xsl:text>javascript:document.forms[0].contenttype.value='text/csv';document.forms[0].reuseresult.value='true';document.forms[0].submit();</xsl:text>
</xsl:attribute>
<img title="Ausgabe als CSV" alt="Ausgabe als CSV"
src="../xml/his1/images/icons/page_white_csv.svg" class="svg_icon" border="0" />
</a>
<span class="separator">&#160;</span>
<!-- bis hier-->
<script language="JavaScript" type="text/javascript">
function copyText()
{
var ergtabelle=document.getElementById('table1');
const selection = window.getSelection();
const range = document.createRange();
range.selectNodeContents(ergtabelle);
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
selection.removeAllRanges();
} catch(e) {
const errorMsg = document.querySelector('.error-msg');
errorMsg.classList.add('show');
setTimeout(() => {
errorMsg.classList.remove('show');
}, 1200);
}
//alert("Angezeigte Tabelle wurde in die Zwischenablage kopiert.");
}
</script>
<a class="linkLookImage" href="" onClick="copyText();return false;" onMouseOver="window.status='Export starten';return true" onFocus="window.status='Download starten';return true" onMouseOut="window.status='Download starten';return true">
<img title="Kopie in die Zwischenablage als CSV" alt="Kopie in die Zwischenablage als CSV" src="../images/copy.svg" class="svg_icon" border="0" />
</a>
<span class="separator">&#160;</span>
<!-- <span dojoType="tooltip" connectId="btnKonfig" style="display:none">Spaltensortierung-
und Reihenfolge festlegen<br />, Spalten entfernen</span> -->
<a title="Erläuterung" class="linkLookImage">
<xsl:attribute name="href"><xsl:value-of
select="concat('javascript:showErlaeuterung',../maskenname/@id,'()')" /></xsl:attribute>
<img title="Erläuterung" alt="Erläuterung"
src="../xml/his1/images/icons/information.svg" class="svg_icon" border="0" />
</a>
<span class="separator">&#160;</span>
<a href="/{/ergebnisse/ergebnis/maskenname/@helpcontext}" title="Hilfe"
target="_blank" class="linkLookImage">
<img title="Handbuch" alt="Handbuch" src="../xml/his1/images/icons/book.svg" class="svg_icon"
border="0" />
</a>
<xsl:if test="/ergebnisse/@isMakro!='true'">
<xsl:call-template name="bookmark_deepLink" />
<span class="separator">&#160;</span>
<a href="javascript:showConfig();" id="btnKonfig" class="linkLookImage">
<img title="Tabelle editieren" alt="Tabelle editieren"
src="../xml/his1/images/icons/table_pencil.svg" class="svg_icon" border="0" />
</a>
</xsl:if>
<xsl:call-template name="AdminMenuBtn" />
<xsl:call-template name="JasperExportBtn" />
</div>
<!--klappt nicht wg. Umbruch bei p.maskentitel: <xsl:text disable-output-escaping="yes"><![CDATA[<h2
class="table_caption"><img src="../xml/his1/images/icons/bullet_star.gif"
alt=" " />]]></xsl:text> -->
</xsl:if>
</xsl:template>
<xsl:template name="head_hisinone">
<xsl:param name="css" />
<xsl:param name="title" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</meta>
<link rel="stylesheet" type="text/css"
href="../style/bulma.css" />
<link rel="stylesheet" type="text/css"
href="../style/bulma-tooltip.min" />
<link rel="stylesheet" type="text/css" href="../xml/maske_html.css" />
<link rel="stylesheet" type="text/css"
href="../xml/his1/css/superx_menue_html.css" />
<link rel="stylesheet" type="text/css" href="../xml/maske_html.css" />
<!--<LINK REL="stylesheet" type="text/css" href="../style/superx.css"
></LINK> <LINK REL="stylesheet" type="text/css" href="../xml/superxml_html.css"
></LINK> -->
<xsl:choose>
<xsl:when test="$title != ''">
<xsl:choose>
<xsl:when test="starts-with($title,'Mask') ">
<link rel="stylesheet" type="text/css" href="../xml/maske_html.css" />
</xsl:when>
<xsl:otherwise>
<!-- Styles für HIS1 sind in xml/his1/css/superx_menue_html.css definiert
<LINK REL="stylesheet" type="text/css" href="../xml/tabelle_html.css" ></LINK> -->
</xsl:otherwise>
</xsl:choose>
<title>
<xsl:value-of select="$title" />
</title>
</xsl:when>
<xsl:otherwise>
<title>
<xsl:text>HISinOne-BI</xsl:text>
</title>
</xsl:otherwise>
</xsl:choose>
<link rel="stylesheet" type="text/css" href="../xml/his1/css/HISinOne.css" />
<script src="../xml/js/jquery/jquery.mobile-1.4.2.min.js"></script>
<link rel="stylesheet" href="../xml/js/jquery/jquery.mobile.structure-1.4.2.dw.css" />
<link rel="stylesheet" href="../xml/js/jquery/jqm-demos.dw.css" /> -->
<xsl:if test="$css != ''">
<link rel="stylesheet" type="text/css" href="$css" />
</xsl:if>
</head>
</xsl:template>
</xsl:stylesheet>

1310
superx/xml/tabelle_html_viz.xsl

File diff suppressed because it is too large Load Diff

1115
superx/xml/tabelle_html_viz_cockpit.xsl

File diff suppressed because it is too large Load Diff

536
superx/xml/viz_components.xsl

@ -0,0 +1,536 @@ @@ -0,0 +1,536 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sx="http://memtext.de">
<xsl:template name="head_superx_viz">
<xsl:param name="css" />
<xsl:param name="title" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</meta><!-- <link rel="stylesheet" type="text/css" href="../xml/his1/css.._menue_html.css" /> -->
<link rel="stylesheet" type="text/css" href="../style/superx.css"/>
<link rel="stylesheet" type="text/css" href="../xml/menue_html.css"/>
<link rel="stylesheet" type="text/css" href="../xml/superxml_html.css"/>
<link rel="stylesheet" type="text/css" href="../xml/maske_html.css" />
<link rel="stylesheet" type="text/css" href="../xml/tabelle_html.css" />
<link rel="stylesheet" type="text/css" href="../xml/superx_standalone.css"/>
<link rel="stylesheet" type="text/css" href="../xml/css/fontello-codes.css" />
<link rel="stylesheet" type="text/css" href="../xml/css/start_portlet.css" />
<link rel="stylesheet" type="text/css" href="../style/bulma.css" />
<link rel="stylesheet" type="text/css" href="../style/bulma-tooltip.min.css" />
<link rel="stylesheet" type="text/css" href="../style/sx_viz_muster.css" />
</head>
</xsl:template>
<xsl:template name="head_hisinone_viz">
<xsl:param name="css" />
<xsl:param name="title" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</meta>
<link rel="stylesheet" type="text/css"
href="../xml/his1/css/superx_menue_html.css" />
<link rel="stylesheet" type="text/css" href="../xml/maske_html.css" />
<!--<LINK REL="stylesheet" type="text/css" href="../style/superx.css"
></LINK> <LINK REL="stylesheet" type="text/css" href="../xml/superxml_html.css"
></LINK> -->
<xsl:choose>
<xsl:when test="$title != ''">
<xsl:choose>
<xsl:when test="starts-with($title,'Mask') ">
<link rel="stylesheet" type="text/css" href="../xml/maske_html.css" />
</xsl:when>
<xsl:otherwise>
<!-- Styles für HIS1 sind in xml/his1/css/superx_menue_html.css definiert
<LINK REL="stylesheet" type="text/css" href="../xml/tabelle_html.css" ></LINK> -->
</xsl:otherwise>
</xsl:choose>
<title>
<xsl:value-of select="$title" />
</title>
</xsl:when>
<xsl:otherwise>
<title>
<xsl:text>HISinOne-BI</xsl:text>
</title>
</xsl:otherwise>
</xsl:choose>
<link rel="stylesheet" type="text/css" href="../xml/his1/css/HISinOne.css" />
<!--<script src="../xml/js/jquery/jquery.mobile-1.4.2.min.js"></script>
<link rel="stylesheet" href="../xml/js/jquery/jquery.mobile.structure-1.4.2.dw.css" />
<link rel="stylesheet" href="../xml/js/jquery/jqm-demos.dw.css" /> -->
<link rel="stylesheet" type="text/css" href="../xml/css/fontello-codes.css" />
<link rel="stylesheet" type="text/css" href="../xml/css/start_portlet.css" />
<link rel="stylesheet" type="text/css" href="../style/bulma.css" />
<link rel="stylesheet" type="text/css" href="../style/bulma-tooltip.min.css" />
<link rel="stylesheet" type="text/css" href="../style/sx_viz_muster.css" />
<xsl:if test="$css != ''">
<link rel="stylesheet" type="text/css" href="$css" />
</xsl:if>
</head>
</xsl:template>
<xsl:template name="tableJavascript_viz">
<script language="Javascript" type="text/javascript" src="../xml/js/jquery-2.1.1.min.js" />
<script language="JavaScript" type="text/javascript" src="../xml/js/memtext/sx_functions.js"></script>
<xsl:call-template name="importVizJavascriptLibs" />
<script><xsl:text><![CDATA[
//document.body.append(Plot.plot(options));
function commonChartProperty(name,
caption,
isMandatory,
inputType,
staticValues,
range_from,
range_to,
defaultValue,
propUnit,
explanation,
groupCaption,
groupUniquename,
rendererUniquename,
groupVariableName,
variableName,
propValueType,
isGeneric
)
{
this.name=name;
this.caption=caption;
this.staticValues=staticValues;
this.range_from=range_from;
this.range_to=range_from;
this.isMandatory=isMandatory;
this.inputType=inputType;
this.defaultValue=defaultValue;
this.propUnit=propUnit;
this.explanation=explanation;
this.groupCaption=groupCaption;
this.groupUniquename=groupUniquename;
this.rendererUniquename=rendererUniquename;
this.groupVariableName=groupVariableName;
this.variableName=variableName;
this.propValueType=propValueType;
this.isGeneric=isGeneric;
this.getValueResultset = function () {
var valueOptions=[];
var optionCounter=0;
var staticValueArray = staticValues.split(/\|/);
for(var j=0;j < staticValueArray.length;j++)
{
var isDefault=false;
if(staticValueArray[j])
{
if(staticValueArray[j]==this.defaultValue)
isDefault=true;
var o=new selectionPropertyValue(optionCounter,staticValueArray[j],staticValueArray[j],isDefault);
valueOptions[optionCounter]=o;
optionCounter++;
}
}
return valueOptions;
}
}
function commonChartPropertyGroup(caption,groupUniquename,groupVariableName)
{
this.caption=caption;
this.groupUniquename=groupUniquename;
this.groupVariableName=groupVariableName;
}
var commonChartProperties=[];
]]></xsl:text>
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr='0']/ergebniselement/chartProperties/commonChartProperty">
<xsl:text>
var newCommonChartProperty = new commonChartProperty("</xsl:text>
<xsl:value-of select="@prop_uniquename" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@caption" />
<xsl:text>",</xsl:text><xsl:choose>
<xsl:when test="@is_mandatory=1"><xsl:text>true</xsl:text>
</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
<xsl:text>,"</xsl:text>
<xsl:value-of select="@input_type_uniquename" />
<xsl:text>"
,"</xsl:text>
<xsl:value-of select="@static_values" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@prop_range_from" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@prop_range_to" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@prop_default" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@prop_unit" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@explanation" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@group_caption" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@group_uniquename" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@renderer_uniquename" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@group_variable_name" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@variable_name" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@propValueType" />
<xsl:text>",</xsl:text>
<xsl:value-of select="@isGeneric" />
<xsl:text>);
commonChartProperties.push(newCommonChartProperty);
</xsl:text>
</xsl:for-each>
<!--<xsl:text>
var newCommonChartProperty = new commonChartProperty("caption",
"Titel des Diagramms",
false,
"TEXTAREA",
"",
"",
"",
"</xsl:text>
<xsl:value-of select="/ergebnisse/ergebnis[@ordnr='0']/maskenname" /><xsl:text>",
"wird unter dem Diagramm angezeigt",
"Diagrammkopf",
"",
"plot",
"layout",
"caption",
"string");
commonChartProperties.push(newCommonChartProperty);
</xsl:text>-->
<xsl:text>
function vizRenderer(uniquename,caption)
{
this.caption=caption;
this.uniquename=uniquename;
}
var vizRenderers=[];
</xsl:text>
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr='0']/ergebniselement/vizRenderers/vizRenderer">
<xsl:text>
var newVizRenderer = new vizRenderer("</xsl:text>
<xsl:value-of select="@uniquename" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@caption" />
<xsl:text>");
vizRenderers.push(newVizRenderer);
</xsl:text>
</xsl:for-each>
<xsl:text>
function vizType(uniquename,caption,rendererUniquename,orientation)
{
this.caption=caption;
this.uniquename=uniquename;
this.rendererUniquename=rendererUniquename,
this.orientation=orientation;
}
var vizTypes=[];
</xsl:text>
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr='0']/ergebniselement/vizTypes/vizType">
<xsl:text>
var newVizType = new vizType("</xsl:text>
<xsl:value-of select="@uniquename" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@caption" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@renderer_uniquename" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@orientation" />
<xsl:text>");
vizTypes.push(newVizType);
</xsl:text>
</xsl:for-each>
<xsl:text>
function vizTypeProperty(propUniquename,caption,typeUniquename,groupUniquename,isMandatory,explanation)
{
this.propUniquename=propUniquename;
this.caption=caption;
this.groupUniquename=groupUniquename;
this.typeUniquename=typeUniquename;
this.isMandatory=isMandatory;
this.explanation=explanation;
}
var vizTypeProperties=[];
</xsl:text>
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr='0']/ergebniselement/viz_type_properties/viz_type_property">
<xsl:text>
var newVizTypeProperty = new vizTypeProperty("</xsl:text>
<xsl:value-of select="@uniquename" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@caption" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@viz_type_uniquename" />
<xsl:text>","</xsl:text>
<xsl:value-of select="@viz_property_group_uniquename" />
<xsl:text>",</xsl:text>
<xsl:choose>
<xsl:when test="@is_mandatory='1'">
<xsl:text>true</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>false</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text>,""
);
vizTypeProperties.push(newVizTypeProperty);
</xsl:text>
</xsl:for-each>
</script>
<script language="Javascript" type="text/javascript" src="../xml/js/viz/viz_functions.js" />
<style type="text/css">
.node rect {
cursor: move;
fill-opacity: .9;
shape-rendering: crispEdges;
}
.node text {
pointer-events: none;
text-shadow: 0 1px 0 #fff;
}
.link {
fill: none;
stroke: #000;
stroke-opacity: .2;
}
.link:hover {
stroke-opacity: .5;
}
</style>
</xsl:template>
<xsl:template name="buildVizMetadata">
<xsl:variable name="vizInitialName">
<xsl:choose>
<xsl:when test="/ergebnisse/@isMakro='true'">
<xsl:value-of select="/ergebnisse/makro/name"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/ergebnisse/ergebnis/maskenname" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!--<xsl:call-template name="navigationsmenue" />-->
<script language="Javascript">
<xsl:text>
var vizInitialName='</xsl:text><xsl:value-of select="$vizInitialName"/><xsl:text>';
function dataRowMetaData(tableId,nr,colname,colcaption,coltype,colfunction)
{
this.tableId=tableId;
this.nr=nr;
this.colname=colname;
this.colcaption=colcaption;
this.coltype=coltype;
this.colfunction=colfunction;
}
function tableMetaData(nr,value,name,isDefault)
{
this.value=value;
this.nr=nr;
this.name=name
this.isDefault=isDefault;
}
var rsTableMetaData=new Array();
var rsColumnMetaData=new Array();
var rs=new Array();
</xsl:text>
</script>
<xsl:for-each select="/ergebnisse/ergebnis/ergebniselement">
<xsl:call-template name="buildVizData" >
<xsl:with-param name="tableId" select="@ordnr" />
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="buildVizData">
<xsl:param name="tableId" />
<script language="Javascript">
<xsl:text>
rsTableMetaData.push(new tableMetaData(
</xsl:text>
<xsl:value-of select="position()"/>
<xsl:text>,'</xsl:text>
<xsl:value-of select="$tableId"/>
<xsl:text>','</xsl:text>
<xsl:value-of select="concat('Tab. ',$tableId+1)"/>
<xsl:text>',
</xsl:text>
<xsl:choose>
<xsl:when test="position()=1">
<xsl:text>true</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>false</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text>
));
rs[</xsl:text><xsl:value-of select="$tableId"/><xsl:text>]=new Array();
var myChartModel=new chartModel(1,"","",rsTableMetaData);
function dataRow_</xsl:text><xsl:value-of select="$tableId"/><xsl:text>(rownr</xsl:text>
<xsl:for-each select="sqlerg/complete_headers/header">
<xsl:text>,</xsl:text>
<xsl:call-template name="getColumnNameJS">
<xsl:with-param name="columnNameFromDB" select="f_name"/>
</xsl:call-template>
</xsl:for-each>
<xsl:text>
)
{
this.rownr=rownr;
</xsl:text>
<xsl:for-each select="sqlerg/complete_headers/header">
<xsl:text>this.</xsl:text><xsl:call-template name="getColumnNameJS">
<xsl:with-param name="columnNameFromDB" select="f_name"/>
</xsl:call-template><xsl:text>=</xsl:text>
<xsl:call-template name="getColumnNameJS">
<xsl:with-param name="columnNameFromDB" select="f_name"/>
</xsl:call-template><xsl:text>;
</xsl:text>
</xsl:for-each><xsl:text>
}
rsColumnMetaData[</xsl:text><xsl:value-of select="$tableId"/><xsl:text>]=new Array();
rsColumnMetaData[</xsl:text><xsl:value-of select="$tableId"/><xsl:text>].push(new dataRowMetaData('</xsl:text>
<xsl:value-of select="$tableId"/><xsl:text>',</xsl:text>
<xsl:value-of select="0"/>
<xsl:text>,'rownr','Zeilennr.',0,4));
</xsl:text>
<xsl:for-each select="sqlerg/complete_headers/header">
<xsl:variable name="rownr">
<xsl:value-of select="position()"/>
</xsl:variable>
<xsl:text>
rsColumnMetaData[</xsl:text><xsl:value-of select="$tableId"/><xsl:text>].push(new dataRowMetaData('</xsl:text>
<xsl:value-of select="$tableId"/><xsl:text>',</xsl:text>
<xsl:value-of select="$rownr"/>
<xsl:text>,'</xsl:text>
<xsl:call-template name="getColumnNameJS">
<xsl:with-param name="columnNameFromDB" select="f_name"/>
</xsl:call-template>
<xsl:text>','</xsl:text>
<xsl:call-template name="remove_linebreaksAndQuot">
<xsl:with-param name="volltext" select="wert" />
</xsl:call-template>
<xsl:text>',0,null));</xsl:text> <!--coltype noch unbekannt, colfunction unnötig-->
</xsl:for-each>
<xsl:for-each select="sqlerg/row">
<xsl:variable name="rownr">
<xsl:value-of select="position()"/>
</xsl:variable>
<xsl:if test="$rownr=1">
<!-- first metadata -->
<xsl:for-each select="col">
<xsl:variable name="colnr">
<xsl:value-of select="position()"/>
</xsl:variable>
<xsl:text>
rsColumnMetaData[</xsl:text><xsl:value-of select="$tableId"/><xsl:text>][</xsl:text><xsl:value-of select="number($colnr)"/><xsl:text>].coltype=</xsl:text><xsl:value-of select="@typ"/>
<xsl:text>;
</xsl:text>
</xsl:for-each>
</xsl:if>
<!--now resultset-->
<xsl:text>
//rs[</xsl:text><xsl:value-of select="$tableId"/><xsl:text>]= new Array();
rs[</xsl:text><xsl:value-of select="$tableId"/><xsl:text>].push(new dataRow_</xsl:text><xsl:value-of select="$tableId"/><xsl:text>(</xsl:text><xsl:value-of select="$rownr"/>
<xsl:for-each select="col">
<xsl:text>,</xsl:text>
<xsl:choose>
<xsl:when test="@typ='1'"><xsl:text>'</xsl:text>
<xsl:call-template name="remove_linebreaksAndQuot">
<xsl:with-param name="volltext" select="wert" />
</xsl:call-template>
<xsl:text>'</xsl:text></xsl:when>
<!--todo:Typ Datum -->
<xsl:when test="string-length(wert)=0"><xsl:text>null</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="wert"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:text>));
</xsl:text>
</xsl:for-each>
</script>
</xsl:template>
<xsl:template name="getColumnNameJS">
<xsl:param name="columnNameFromDB" />
<xsl:choose>
<xsl:when test="contains($columnNameFromDB,'?')">
<xsl:value-of select="concat('column_',@id+1)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$columnNameFromDB"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- start Javascript-->
<xsl:template name="importVizJavascriptLibs">
<script language="Javascript" type="text/javascript" src="../xml/js/viz/d3.min.js" />
<script language="Javascript" type="text/javascript" src="../xml/js/viz/plot.js" />
<script language="Javascript" type="module" src="../xml/js/viz/d3-sankey.js" />
<xsl:for-each select="/ergebnisse/ergebnis/ergebniselement/vizTypes/vizType[@srcpath !='/superx/xml/js/viz/d3.min.js'
and @srcpath != '/superx/xml/js/viz/plot.js'
and @srcpath != '/superx/xml/js/viz/d3-sankey.js'
and @srcpath != ''
and (@renderer_uniquename='plot' or @renderer_uniquename='d3js') ]">
<script language="Javascript" type="text/javascript" src="{@srcpath}" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

1219
superx/xml/viz_demo.html

File diff suppressed because one or more lines are too long

1934
superx/xml/viz_html_chart.xsl

File diff suppressed because it is too large Load Diff

34
superx/xml/viz_html_chart_sankey.xsl

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util.HtmlUtils">
<xsl:import href="xsl_functions.xsl" />
<xsl:import href="resultset_html.xsl" />
<xsl:import href="interLinks_html.xsl" />
<xsl:import href="pageComponents_html.xsl" />
<xsl:import href="viz_html_chart.xsl" />
<xsl:import href="viz_components.xsl" />
<xsl:import href="menue_html_dojo.xsl" />
<!--In diesem Stylesheet können Sie individuelle templates unterbringen,
die in ihrer Präzedenz das normale Stylesheet
pageComponents_html.xsl überragt. -->
<xsl:import href="pageComponents_html_final.xsl" />
<xsl:decimal-format name="German" grouping-separator="." NaN="" zero-digit ="0" decimal-separator="," />
<!-- wichtig für DOJO!-->
<xsl:output method="xml" media-type="text/html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="DTD/xhtml1-strict.dtd" cdata-section-elements="script style" indent="yes" encoding="UTF-8"/>
<xsl:variable name="defaultRenderer" select="'d3jsv3'" />
<xsl:variable name="availableRendererPlot" select="'false'" />
<xsl:variable name="availableRendererD3" select="'false'" />
<xsl:variable name="availableRendererD3V3" select="'true'" />
<xsl:template match="/">
<xsl:call-template name="table"/>
</xsl:template>
<xsl:template name="importVizJavascriptLibs">
<script language="Javascript" type="text/javascript" src="../xml/js/viz/d3.v3.min.js" />
<script language="Javascript" type="text/javascript" src="../xml/js/viz/viz_functions.js" />
<script language="Javascript" type="text/javascript" src="../xml/js/viz/sankey_v3.js" />
</xsl:template>
</xsl:stylesheet>

304
superx/xml/viz_html_chart_viewer.xsl

@ -0,0 +1,304 @@ @@ -0,0 +1,304 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util.HtmlUtils">
<xsl:import href="xsl_functions.xsl" />
<xsl:import href="resultset_html.xsl" />
<xsl:import href="interLinks_html.xsl" />
<xsl:import href="pageComponents_html.xsl" />
<xsl:import href="viz_html_chart.xsl" />
<xsl:import href="viz_components.xsl" />
<xsl:import href="menue_html_dojo.xsl" />
<!--In diesem Stylesheet können Sie individuelle templates unterbringen,
die in ihrer Präzedenz das normale Stylesheet
pageComponents_html.xsl überragt. -->
<xsl:import href="pageComponents_html_final.xsl" />
<xsl:decimal-format name="German" grouping-separator="." NaN="" zero-digit ="0" decimal-separator="," />
<!-- wichtig für DOJO!-->
<xsl:output method="xml" media-type="text/html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="DTD/xhtml1-strict.dtd" cdata-section-elements="script style" indent="yes" encoding="UTF-8"/>
<xsl:variable name="defaultRenderer" select="'d3js'" />
<xsl:variable name="availableRendererPlot" select="'false'" />
<xsl:variable name="availableRendererD3" select="'true'" />
<xsl:template match="/">
<xsl:call-template name="table"/>
</xsl:template>
<!-- start table main-->
<xsl:template name="table">
<html>
<xsl:choose>
<xsl:when test="/ergebnisse/@hisinone_active='true'">
<xsl:call-template name="head_hisinone" ><xsl:with-param name="title" select="concat('Ergebnis ',/ergebnisse/ergebnis[ position()=1]/maskenname)" /></xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="head_superx_viz" ><xsl:with-param name="title" select="concat('Ergebnis ',/ergebnisse/ergebnis[ position()=1]/maskenname)" /></xsl:call-template>
</xsl:otherwise>
</xsl:choose>
<xsl:call-template name="tableJavascript_viz"></xsl:call-template>
<!-- start Body-->
<body onload="document.getElementById('progressbar').style.display='none';initPage();"> <!-- tableonload definiert in pageComponents.pccustomize position table_post_javascript -->
<div id="progressbar" style="position:absolute; width:150px; height:150px; left:200px; top:200px; background:#AAAAAA">
<p>&#160;<b>Laden...</b><br/><img src="../images/progress_bar.gif"></img><br/></p></div>
<xsl:if test="/ergebnisse/@showNavigation='true'">
<xsl:for-each select="/ergebnisse/menue">
<xsl:call-template name="menuFrame" />
</xsl:for-each>
</xsl:if>
<div>
<xsl:if test="/ergebnisse/@showNavigation='true'">
<xsl:attribute name="class"><xsl:text>page-wrap</xsl:text></xsl:attribute>
<xsl:for-each select="/ergebnisse/menue">
<xsl:call-template name="topbar_menue" />
</xsl:for-each>
</xsl:if>
<div>
<xsl:if test="/ergebnisse/@showNavigation='true'">
<xsl:attribute name="id"><xsl:text>wrapper</xsl:text></xsl:attribute>
</xsl:if>
<xsl:call-template name="viz_canvas"/>
<xsl:call-template name="bottombar" />
<xsl:comment>customfooter</xsl:comment>
</div>
</div>
<xsl:call-template name="footer" />
<xsl:call-template name="modalCards" />
</body>
<!-- end body -->
</html>
</xsl:template>
<!-- end main -->
<xsl:template name="importVizJavascriptLibs">
<script language="Javascript" type="text/javascript" src="../xml/js/viz/d3.min.js" />
<script language="Javascript" type="text/javascript" src="../xml/js/viz/plot.js" />
<script language="Javascript" type="text/javascript" src="../xml/js/viz/viz_functions.js" />
<script language="Javascript" type="module" src="../xml/js/viz/d3-sankey.js" />
<script language="Javascript" type="text/javascript">
<xsl:variable name="quote"><xsl:text>"</xsl:text></xsl:variable>
<xsl:text><![CDATA[
function initPage()
{
var myChartModelStr="";
var myDiv="";
]]></xsl:text>
<xsl:for-each select="ergebnisse">
<xsl:for-each select="ergebnis/ergebniselement">
<xsl:variable name="chart_id"><xsl:value-of select="../felder/feld[@varname='Grafik']/value" /></xsl:variable>
<xsl:variable name="ergebniselement_ordnr"><xsl:value-of select="@ordnr" /></xsl:variable>
<xsl:if test="$chart_id != ''">
<xsl:text><![CDATA[
myChartModelStr=']]></xsl:text>
<xsl:value-of select="translate(viz_charts/viz_chart[@tid=$chart_id]/@chartmodel,'§',$quote)" />
<xsl:text><![CDATA[';
myDiv="]]></xsl:text>
<xsl:value-of select="concat('chartDiv',$ergebniselement_ordnr)" />
<xsl:text><![CDATA[";
createViewer(myChartModelStr,myDiv);
myDiv="]]></xsl:text>
<xsl:value-of select="concat('modalCardImage',$ergebniselement_ordnr)" />
<xsl:text><![CDATA[";
createViewer(myChartModelStr,myDiv);
myDiv="]]></xsl:text>
<xsl:value-of select="concat('modalCardDetailImage',$ergebniselement_ordnr)" />
<xsl:text><![CDATA[";
createViewer(myChartModelStr,myDiv);
]]></xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
<xsl:text><![CDATA[
}
function createViewer(myChartModelStr,chartDiv)
{
myChartModel=JSON.parse(myChartModelStr);
renderChart(chartDiv,myChartModel);
}
function toggleLegendeDisplay(legendeDiv)
{
var myDiv=document.getElementById(legendeDiv);
if(myDiv.style.display=="block")
myDiv.style.display="none";
else
myDiv.style.display="block";
}
]]></xsl:text>
</script>
</xsl:template>
<xsl:template name="viz_canvas">
<xsl:if test="/ergebnisse/@isMakro='true'">
<h1><xsl:value-of select="/ergebnisse/makro/name" /></h1>
</xsl:if>
<p></p>
<xsl:call-template name="buildVizMetadata" />
<!-- end Kopf-->
<!-- start Grafiken-->
<!-- Berechne den Umbruch der Spalten für die Kacheln
z.B. 6 Grafiken ergibt einen Umbruch nach der 3. Teiltabelle
Formel: ANZ / 2 kaufm. gerundet
-->
<xsl:variable name="spalten_anz">
<xsl:value-of select="max(number(/ergebnisse/ergebnis/felder/feld[@varname='Spaltenanzahl']/value))"/>
</xsl:variable>
<xsl:variable name="colwidth">
<xsl:value-of select="12 div $spalten_anz"/>
</xsl:variable>
<xsl:variable name="ergebniselemente_anz">
<xsl:value-of select="count(/ergebnisse/ergebnis[felder/feld[@varname='Grafik']])"/>
</xsl:variable>
<xsl:variable name="ergebniselemente_umbruch">
<xsl:value-of select="round($ergebniselemente_anz div max(number(/ergebnisse/ergebnis/felder/feld[@varname='Spaltenanzahl']/value)))"/>
</xsl:variable>
<!--<p>plan: <xsl:value-of select="/ergebnisse/ergebnis/felder/feld[@varname='Spaltenanzahl']/value"/>
</p>-->
<span class="separator">&#160;</span>
<!--Beginn Selektions-Card-->
<!--Beginn Berichtstitel, Pfad, Knopfleiste-->
<section class="hero-body has-background-light">
<section class="container"> <!--Beginn Kartenreihe -->
<div class="columns features is-mobile is-left"> <!--Beginn columns Kartenreihe -->
<xsl:for-each select="ergebnisse/ergebnis[felder/feld[@varname='Grafik']/value!='']/ergebniselement">
<xsl:variable name="ergebniselement_counter" select="position()" />
<xsl:variable name="chart_id"><xsl:value-of select="../felder/feld[@varname='Grafik']/value" /></xsl:variable>
<xsl:variable name="ergebniselement_ordnr"><xsl:value-of select="@ordnr" /></xsl:variable>
<!--<p><xsl:value-of select="concat('Zähler: ',$ergebniselement_counter)"/></p>-->
<div>
<xsl:attribute name="class"><xsl:text>column is-</xsl:text><xsl:value-of select="$colwidth"/></xsl:attribute>
<xsl:call-template name="viewer_kachel">
<xsl:with-param name="caption" select="viz_charts/viz_chart[@tid=$chart_id]/@caption"/>
<xsl:with-param name="ergebniselement_ordnr" select="$ergebniselement_ordnr" />
</xsl:call-template>
<!--<p><xsl:value-of select="concat($spalten_anz,'-',$ergebniselement_counter,':',$ergebniselement_counter mod $spalten_anz)"/></p>-->
</div>
<!-- neue Zeile wenn counter mod Spaltenanz. =0 -->
<xsl:if test="$ergebniselement_counter &gt;= $spalten_anz and ($ergebniselement_counter mod $spalten_anz) =0">
<xsl:text disable-output-escaping="yes"><![CDATA[
</div>
</section>
<section class="container">
<div class="columns features is-mobile is-left">
]]></xsl:text>
</xsl:if>
</xsl:for-each>
</div><!-- der columns -->
</section><!-- der letzten Kartenreihe -->
</section><!-- des Portals -->
</xsl:template>
<xsl:template name="modalCards" >
<xsl:for-each select="/ergebnisse">
<xsl:for-each select="ergebnis/ergebniselement">
<xsl:variable name="chart_id"><xsl:value-of select="../felder/feld[@varname='Grafik']/value" /></xsl:variable>
<xsl:variable name="ergebniselement_ordnr"><xsl:value-of select="@ordnr" /></xsl:variable>
<xsl:if test="$chart_id != ''">
<div class="modal modal-fx-3dSlit" id="{concat('modalCard',$ergebniselement_ordnr)}">
<div class="modal-background"></div>
<div class="modal-content is-huge is-image">
<!-- content -->
<div class="modal-content">
<div class="box" style="text-align:right">
<a href="{concat('javascript:closeModalImage(',$ergebniselement_ordnr,');')}">
<span class="button is-black is-outlined"> X </span>
</a>
</div>
<div class="box">
<div id="{concat('modalCardImage',$ergebniselement_ordnr)}">
Picture placeholder
</div>
</div>
</div>
</div>
</div>
<div class="modal modal-fx-3dSlit" id="{concat('modalCardDetail',$ergebniselement_ordnr)}">
<div class="modal-background"></div>
<div class="modal-content is-tiny">
<div class="box" style="text-align:right">
<h4><xsl:value-of select="viz_charts/viz_chart[@tid=$chart_id]/@caption"/></h4>
<a href="{concat('javascript:closeModalCardDetail(',$ergebniselement_ordnr,');')}">
<span class="button is-black is-outlined"> X </span>
</a>
</div>
<!-- content -->
<div class="card">
<div class="card-image">
<div id="{concat('modalCardDetailImage',$ergebniselement_ordnr)}">
Picture placeholder
</div>
</div>
<div class="card-content">
<div class="media">
<div class="media-content">
<p><xsl:value-of select="viz_charts/viz_chart[@tid=$chart_id]/@description"/></p>
<p class="legende">
<xsl:for-each select="../felder/feld">
<xsl:if test="(value !='' or sicht/@isFirstInGroup='false' or @isstandtoday='false') and @varname != 'sort' and @varname != 'maxoffset' and value_caption != ''">
<span class="feldname">
<xsl:choose>
<xsl:when test="string-length(caption_short) &gt; 0 and caption_short != 'null'" >
<![CDATA[]]><xsl:value-of select="caption_short" /><![CDATA[]]>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@varname" />
</xsl:otherwise>
</xsl:choose></span>:&#160;
<xsl:if test="string-length(value_caption) &lt; 50">
<span class="feldwert"><xsl:value-of select="value_caption" /><![CDATA[]]></span>
</xsl:if>
<xsl:if test="string-length(value_caption) &gt; 49">
<span class="feldwert"><![CDATA[]]><xsl:value-of select="substring(value_caption,0,50)" /><![CDATA[]]>...</span>
</xsl:if>
<xsl:if test="sicht!=''">
<span><![CDATA[ (]]><xsl:value-of select="sicht" />
<xsl:if test="@stand!=''"><xsl:text> - Stand:</xsl:text><xsl:value-of select="@stand"/></xsl:if>
<xsl:text><![CDATA[)]]> </xsl:text></span>
</xsl:if>
;
</xsl:if>
</xsl:for-each>
User: <xsl:value-of select="/ergebnisse/user"/>&#160;
Stand: <xsl:value-of select="../stand" /></p>
<xsl:if test="../hinweis != ''">
<xsl:call-template name="newline_to_br">
<xsl:with-param name="string" select="../hinweis" />
</xsl:call-template>
</xsl:if>
</div>
<p align="right"><a href="{concat('javascript:closeModalCardDetail(',$ergebniselement_ordnr,');')}">
<span class="button is-black is-outlined"> X </span>
</a></p>
</div>
</div>
</div>
</div>
</div>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

1314
superx/xml/viz_tableComponents.xsl

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save