From 537076577984a515df2aee3edc5ed8de483fd51f Mon Sep 17 00:00:00 2001
From: Daniel Quathamer
Date: Tue, 26 May 2026 12:21:29 +0200
Subject: [PATCH] Visualisierung mit Kreuztabellen #16
---
src-modules/module/viz/conf/viz.xml | 72 +++--
.../module/viz/masken/44720_felderinfo.unl | 2 +-
.../module/viz/masken/44750_felderinfo.unl | 1 +
.../viz/masken/44750_maske_system_bez.unl | 1 +
.../viz/masken/44750_masken_felder_bez.unl | 1 +
.../module/viz/masken/44750_maskeninfo.unl | 46 ++++
.../viz/masken/44750_sachgeb_maske_bez.unl | 1 +
.../viz/schluesseltabellen/fm_templates.unl | 161 ++++++++++-
.../macro_masken_bez_fuellen.sql | 4 +
.../sx_stylesheets_einfuegen.sql | 12 +
.../viz/schluesseltabellen/viz_chart.unl | 67 ++++-
.../viz_colorscheme_fuellen.sql | 11 +-
.../viz_dashboard_STUDABSOLV_fuellen.sql | 131 +++++++++
.../viz_dashboard_STUD_fuellen.sql | 106 ++++++++
.../viz_dashboard_element_fuellen.sql | 250 ++++++++++++++++++
.../viz_properties_basistools_fuellen.sql | 250 ++++++++++++++++++
...erties_viz_basistools_crosstab_fuellen.sql | 58 ++++
...es_viz_basistools_simple_table_fuellen.sql | 54 ++++
.../viz/schluesseltabellen/viz_renderer.unl | 1 +
superx/xml/js/viz/viz_viewer.js | 231 +++++++++++++++-
superx/xml/viz_components.xsl | 28 +-
superx/xml/viz_html_chart.xsl | 2 +-
.../viz_html_chart_viewer_mask_and_table.xsl | 7 +-
23 files changed, 1441 insertions(+), 56 deletions(-)
create mode 100644 src-modules/module/viz/masken/44750_felderinfo.unl
create mode 100644 src-modules/module/viz/masken/44750_maske_system_bez.unl
create mode 100644 src-modules/module/viz/masken/44750_masken_felder_bez.unl
create mode 100644 src-modules/module/viz/masken/44750_maskeninfo.unl
create mode 100644 src-modules/module/viz/masken/44750_sachgeb_maske_bez.unl
create mode 100644 src-modules/module/viz/schluesseltabellen/viz_dashboard_STUDABSOLV_fuellen.sql
create mode 100644 src-modules/module/viz/schluesseltabellen/viz_dashboard_STUD_fuellen.sql
create mode 100644 src-modules/module/viz/schluesseltabellen/viz_dashboard_element_fuellen.sql
create mode 100644 src-modules/module/viz/schluesseltabellen/viz_properties_basistools_fuellen.sql
create mode 100644 src-modules/module/viz/schluesseltabellen/viz_properties_viz_basistools_crosstab_fuellen.sql
create mode 100644 src-modules/module/viz/schluesseltabellen/viz_properties_viz_basistools_simple_table_fuellen.sql
diff --git a/src-modules/module/viz/conf/viz.xml b/src-modules/module/viz/conf/viz.xml
index 80732ff..6b09dc3 100644
--- a/src-modules/module/viz/conf/viz.xml
+++ b/src-modules/module/viz/conf/viz.xml
@@ -127,6 +127,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" />
+
CENTER,TOP,BOTTOM,LEFT,RIGHT,INLINE
@@ -628,6 +629,41 @@ caption="Staaten (Geocodes)" releaseUnload="demo">
+
+
+
+ Dashboard-Elemente
+
+
+
+ 1=Makrobericht
+ Bei Makroberichten die Ergebniselement-Nr., perspektivisch bei REST API der REST-Aufruf
+
+
+ JS-Hander, wenn auf das Element geklickt wird
+
+
+
+
+
+
+
+
+
+
+superx
+superx
+viz_dashboard_element
+tid
+1
+viz_dashboard_element_pk
+
+
+
+
+
@@ -803,6 +839,12 @@ parent="Visualisierungen">Abfragen zur Administration von Visualisierungen $VIZ_PFAD/masken
+
+
+
+ $VIZ_PFAD/masken
+
+
@@ -936,30 +978,6 @@ gueltig_bis DATE
version integer default 1
) ;"
scriptfile="" database=""/>
-
-
-
@@ -982,7 +1000,7 @@ booklet_stylesheet VARCHAR(255)
-
+
@@ -1185,8 +1203,6 @@ booklet_stylesheet VARCHAR(255)
-
-
@@ -1199,9 +1215,9 @@ booklet_stylesheet VARCHAR(255)
-
+
diff --git a/src-modules/module/viz/masken/44720_felderinfo.unl b/src-modules/module/viz/masken/44720_felderinfo.unl
index b4f8b14..c25e571 100644
--- a/src-modules/module/viz/masken/44720_felderinfo.unl
+++ b/src-modules/module/viz/masken/44720_felderinfo.unl
@@ -6,7 +6,7 @@ where sem_beginn >= today()-(182*${K_VIZ_ZEITR_SEM_ANZ} )\
#if>\
and sem_beginn <=today()\
order by tid DESC;^Eintrag^<> select tid,eintrag from semester where today()-(4*365) between sem_beginn and sem_ende;^
-44722^Stichtag Prüfungen^21^350^-1^140^100^1^sql^30^0^13^<> select tid, name from sos_stichtag where stichtagsart='Prüfungen';^^<> select tid, name from sos_stichtag where stichtagsart='Prüfungen' and appl_key='2';^
+44722^Stichtag Prüfungen^21^350^-1^140^100^1^sql^30^0^1^<> select tid, name from sos_stichtag where stichtagsart='Prüfungen';^^<> select tid, name from sos_stichtag where stichtagsart='Prüfungen' and appl_key='2';^
44723^Staatsangehörigkeit^36^0^0^130^150^10^char^30^0^12^<> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^hidden^^
44724^viz_label_Studiengang^5^350^-1^150^180^1^char^200^0^8^^{InputCheck:matrikelnummern}^^
44725^Hörerstatus^33^0^0^140^170^1^sql^255^0^13^<> select apnr, eintrag from hoererstatus order by 2^apnr, eintrag^<> select apnr, eintrag from hoererstatus where eintrag='alle';^
diff --git a/src-modules/module/viz/masken/44750_felderinfo.unl b/src-modules/module/viz/masken/44750_felderinfo.unl
new file mode 100644
index 0000000..f8ddb39
--- /dev/null
+++ b/src-modules/module/viz/masken/44750_felderinfo.unl
@@ -0,0 +1 @@
+44757^Dashboard^1000^300^-1^170^150^1^char^30^1^1^<> select uniquename,uniquename from viz_dashboard order by 2;^ ^ ^
diff --git a/src-modules/module/viz/masken/44750_maske_system_bez.unl b/src-modules/module/viz/masken/44750_maske_system_bez.unl
new file mode 100644
index 0000000..b59b646
--- /dev/null
+++ b/src-modules/module/viz/masken/44750_maske_system_bez.unl
@@ -0,0 +1 @@
+44750^320^
diff --git a/src-modules/module/viz/masken/44750_masken_felder_bez.unl b/src-modules/module/viz/masken/44750_masken_felder_bez.unl
new file mode 100644
index 0000000..6c9c409
--- /dev/null
+++ b/src-modules/module/viz/masken/44750_masken_felder_bez.unl
@@ -0,0 +1 @@
+44750^44757^
diff --git a/src-modules/module/viz/masken/44750_maskeninfo.unl b/src-modules/module/viz/masken/44750_maskeninfo.unl
new file mode 100644
index 0000000..400f108
--- /dev/null
+++ b/src-modules/module/viz/masken/44750_maskeninfo.unl
@@ -0,0 +1,46 @@
+44750^Dashboard-Elemente^select E.sortnr,\
+C.caption as chart_caption,\
+E.caption, \
+ D.uniquename as hiddendashboard_uniquename,\
+ E.datasource as hiddendatasource,\
+ C.uniquename as hiddenchart_uniquename,\
+ E.onclick_event as hiddenonclick_event,\
+ E.open_modal_card_detail as hiddenopen_modal_card_detail,\
+ link_maskennummer as hiddenlink_maskennummer,\
+ link_chart_uniquename as hiddenlink_chart_uniquename,\
+ link_tablestylesheet as hiddenlink_tablestylesheet\
+FROM viz_dashboard_element E, viz_dashboard D, viz_chart C\
+where E.dashboard_id=D.tid\
+and E.chart_id=C.tid\
+and D.uniquename=<>\
+and E.datasource_type=1 --Makrobericht\
+and E.active=1\
+order by E.sortnr;\
+ \
+ ;^XIL List\
+ sizable_columns horizontal_scrolling\
+ white_space_color=COLOR_WHITE fixed_columns=1\
+ drop_and_delete movable_columns\
+ min_heading_height=55\
+Column CID=0 heading_text="Nr." explanation="" center_heading\
+ row_selectable heading_platform readonly\
+ width=3\
+Column CID=0 heading_text="Element" explanation="" center_heading\
+ row_selectable heading_platform readonly\
+ width=15\
+Column CID=0 heading_text="Beschreibung" explanation="" center_heading\
+ row_selectable heading_platform readonly\
+ width=20\
+Column CID=0 heading_text="Dashboard" explanation="" center_heading\
+ row_selectable heading_platform readonly\
+ width=40\
+Column CID=0 heading_text="Datenquelle" explanation="" center_heading\
+ row_selectable heading_platform readonly\
+ width=10\
+Column CID=0 heading_text="Grafik" explanation="" center_heading\
+ row_selectable heading_platform readonly\
+ width=10\
+Column CID=0 heading_text="Onclick Event" explanation="" center_heading\
+ row_selectable heading_platform readonly\
+ width=30\
+@@@^ ^ ^Liste der im Dashboard genutzten Elemente^ ^^3^700^360^0^1^ ^
diff --git a/src-modules/module/viz/masken/44750_sachgeb_maske_bez.unl b/src-modules/module/viz/masken/44750_sachgeb_maske_bez.unl
new file mode 100644
index 0000000..c514c51
--- /dev/null
+++ b/src-modules/module/viz/masken/44750_sachgeb_maske_bez.unl
@@ -0,0 +1 @@
+320^44750^
diff --git a/src-modules/module/viz/schluesseltabellen/fm_templates.unl b/src-modules/module/viz/schluesseltabellen/fm_templates.unl
index 12ddf95..5d60619 100644
--- a/src-modules/module/viz/schluesseltabellen/fm_templates.unl
+++ b/src-modules/module/viz/schluesseltabellen/fm_templates.unl
@@ -1,4 +1,4 @@
-97^VIZ-Makros^<#macro create_temp_tables>\
+171^VIZ-Makros^<#macro create_temp_tables>\
\
CREATE temp TABLE tmp_viz_property_renderer\
(\
@@ -343,4 +343,163 @@ and P.prop_uniquename='${viz_prop.viz_property_uniquename}'\
;\
#foreach>\
\
+#macro>\
+\
+\
+<#macro viz_dashboard_fuellen>\
+insert into tmp_dashboard ( uniquename,\
+ caption,\
+ maskeninfo_id,\
+ booklet_stylesheet,\
+ gridtitle_felderinfo_id)\
+ select '${viz_dashboard.uniquename}',\
+ '${viz_dashboard.caption}',\
+ ${viz_dashboard.maskeninfo_id},\
+ '${viz_dashboard.booklet_stylesheet}',\
+ ${viz_dashboard.gridtitle_felderinfo_id}\
+ from xdummy;\
+ \
+update tmp_dashboard T set tid=(select D.tid\
+from viz_dashboard D\
+where D.uniquename=T.uniquename);\
+\
+update viz_dashboard D set caption=T.caption,\
+ maskeninfo_id=T.maskeninfo_id,\
+ booklet_stylesheet=T.booklet_stylesheet,\
+ gridtitle_felderinfo_id=T.gridtitle_felderinfo_id\
+ from tmp_dashboard T\
+ where T.tid=D.tid;\
+insert into viz_dashboard ( uniquename,\
+ caption,\
+ maskeninfo_id,\
+ booklet_stylesheet,\
+ gridtitle_felderinfo_id)\
+ select uniquename,\
+ caption,\
+ maskeninfo_id,\
+ booklet_stylesheet,\
+ gridtitle_felderinfo_id\
+ from tmp_dashboard T\
+ where T.tid is null;\
+update tmp_dashboard T set tid=(select D.tid\
+from viz_dashboard D\
+where D.uniquename=T.uniquename)\
+where T.tid is null;\
+\
+delete from viz_dashboard_tab\
+where dashboard_id in (select T.tid\
+from tmp_dashboard T);\
+delete from viz_dashboard_element\
+where dashboard_id in (select T.tid\
+from tmp_dashboard T);\
+\
+\
+<#foreach tab in viz_dashboard_tabs>\
+insert into viz_dashboard_tab(dashboard_id,\
+ caption,\
+ maskeninfo_id,\
+ sortnr,\
+ select_clause,\
+ fact_table,\
+ where_clause,\
+ optional_filter_name,\
+ optional_filter_value,\
+ booklet_stylesheet)\
+ select\
+ T.tid as dashboard_id,\
+ '${tab.caption}' as caption,\
+ ${tab.maskeninfo_id},\
+ ${tab.sortnr},\
+ '${tab.select_clause}',\
+ '${tab.fact_table}',\
+ '${tab.where_clause}',\
+ '${tab.optional_filter_name}',\
+ '${tab.optional_filter_value}',\
+ '${tab.booklet_stylesheet}'\
+ from tmp_dashboard T;\
+ \
+#foreach>\
+<#foreach elem in viz_dashboard_elements>\
+insert into viz_dashboard_element(dashboard_id,\
+ datasource_type,\
+ datasource,\
+ chart_id,\
+ onclick_event,\
+ sortnr,\
+ caption,\
+ open_modal_card_detail,\
+ link_maskennummer,\
+ link_chart_uniquename,\
+ link_tablestylesheet, \
+ active)\
+ select\
+ T.tid as dashboard_id,\
+ ${elem.datasource_type},\
+ '${elem.datasource}',\
+ V.tid as chart_id,\
+ '${elem.onclick_event}',\
+ ${elem.sortnr},\
+ '${elem.caption}',\
+ ${open_modal_card_detail},\
+ V.maskeninfo_id as link_maskennummer,\
+ V.uniquename as link_chart_uniquename,\
+ '${link_tablestylesheet}',\
+ ${elem.active}\
+ from tmp_dashboard T, viz_chart V\
+ where V.uniquename='${elem.chart_uniquename}';\
+ \
+#foreach>\
+#macro>\
+\
+<#macro create_temp_tables_dashboard>\
+\
+create temp table tmp_dashboard(\
+ tid integer, \
+uniquename VARCHAR(255) not null, \
+caption VARCHAR(255) , \
+maskeninfo_id INTEGER , \
+booklet_stylesheet VARCHAR(255) , \
+gridtitle_felderinfo_id INTEGER \
+\
+) \
+;\
+create temp table tmp_dashboard_tab(\
+ \
+dashboard_id INTEGER not null, \
+caption VARCHAR(255) , \
+maskeninfo_id INTEGER , \
+sortnr SMALLINT default 0 , \
+select_clause VARCHAR(255) , \
+fact_table VARCHAR(255) , \
+where_clause TEXT , \
+optional_filter_name VARCHAR(255) , \
+optional_filter_value VARCHAR(255) , \
+booklet_stylesheet VARCHAR(255) \
+\
+) \
+;\
+\
+create temp table tmp_dashboard_element(\
+dashboard_id INTEGER not null, \
+datasource_type INTEGER default 1 , \
+datasource VARCHAR(255) , \
+chart_id INTEGER , \
+onclick_event VARCHAR(255) , \
+sortnr SMALLINT default 0 , \
+caption VARCHAR(255) , \
+open_modal_card_detail SMALLINT default 1 , \
+link_maskennummer INTEGER , \
+link_chart_uniquename VARCHAR(255) , \
+link_tablestylesheet VARCHAR(255) , \
+active SMALLINT default 1 not null\
+) \
+;\
+\
+#macro>\
+\
+<#macro drop_temp_tables_dashboard>\
+drop table if exists tmp_dashboard;\
+drop table if exists tmp_dashboard_tab;\
+drop table if exists tmp_dashboard_element;\
+\
#macro>^Makros zum Umgang mit Visualisierungen^ ^1^
diff --git a/src-modules/module/viz/schluesseltabellen/macro_masken_bez_fuellen.sql b/src-modules/module/viz/schluesseltabellen/macro_masken_bez_fuellen.sql
index 4aca374..f1e38f1 100644
--- a/src-modules/module/viz/schluesseltabellen/macro_masken_bez_fuellen.sql
+++ b/src-modules/module/viz/schluesseltabellen/macro_masken_bez_fuellen.sql
@@ -45,11 +45,13 @@ select tid from sos_stichtag where appl_key='4';
{"makro":"44190", "tid":"44600", "sortnr":"60"},
{"makro":"44660", "tid":"44630", "sortnr":"0"},
+{"makro":"44660", "tid":"44750", "sortnr":"5"},
{"makro":"44660", "tid":"44570", "sortnr":"10"},
{"makro":"44660", "tid":"44570", "sortnr":"20"},
{"makro":"44660", "tid":"44570", "sortnr":"30"},
{"makro":"44690", "tid":"44630", "sortnr":"0"},
+{"makro":"44690", "tid":"44750", "sortnr":"5"},
{"makro":"44690", "tid":"44570", "sortnr":"10"},
{"makro":"44690", "tid":"44570", "sortnr":"20"},
{"makro":"44690", "tid":"44570", "sortnr":"30"},
@@ -165,6 +167,7 @@ select tid from sos_stichtag where appl_key='4';
{"makro":"44190", "sortnr":"60", "feldname":"Nur Endsemester", "value":"1"},
{"makro":"44660", "sortnr":"0", "feldname":"Dashboard", "value":"STUD"},
+{"makro":"44660", "sortnr":"5", "feldname":"Dashboard", "value":"STUDABSOLV"},
{"makro":"44660", "sortnr":"10", "feldname":"Köpfe oder Fälle ?", "value":"studiengang_nr = 1 and fach_nr = 1"},
{"makro":"44660", "sortnr":"10", "feldname":"Spaltenlayout", "value":"sos_stud_sem_dashboard"},
@@ -186,6 +189,7 @@ select tid from sos_stichtag where appl_key='4';
{"makro":"44660", "sortnr":"30", "feldname":"tablestylesheet", "value":"tabelle_html_datenblatt.xsl"},
{"makro":"44690", "sortnr":"0", "feldname":"Dashboard", "value":"STUDABSOLV"},
+{"makro":"44690", "sortnr":"5", "feldname":"Dashboard", "value":"STUDABSOLV"},
{"makro":"44690", "sortnr":"10", "feldname":"Köpfe oder Fälle ?", "value":"studiengang_nr = 1 and fach_nr = 1"},
{"makro":"44690", "sortnr":"10", "feldname":"Spaltenlayout", "value":"sos_stud_sem_dashboard"},
diff --git a/src-modules/module/viz/schluesseltabellen/sx_stylesheets_einfuegen.sql b/src-modules/module/viz/schluesseltabellen/sx_stylesheets_einfuegen.sql
index 0e8409c..6117b4b 100755
--- a/src-modules/module/viz/schluesseltabellen/sx_stylesheets_einfuegen.sql
+++ b/src-modules/module/viz/schluesseltabellen/sx_stylesheets_einfuegen.sql
@@ -43,6 +43,7 @@
{"mask":"44570", "filename":"viz_html_chart_viewer.xsl", "ord":"1"},
{"mask":"44570", "filename":"viz_html_chart_viewer_mask.xsl", "ord":"30"},
{"mask":"44570", "filename":"viz_html_chart_viewer_mask_and_table.xsl", "ord":"40"},
+{"mask":"44570", "filename":"viz_html_chart_viewer_mask_and_tablechart.xsl", "ord":"50"},
{"mask":"44600", "filename":"tabelle_html_datenblatt.xsl", "ord":"10"},
{"mask":"44600", "filename":"viz_html_chart_viewer.xsl", "ord":"1"},
@@ -138,6 +139,17 @@
"stylesheet_type":"XSL",
"jr_datasource":""
},
+{"filename":"viz_html_chart_viewer_mask_and_tablechart.xsl",
+"caption":"Diagramm, dynamische Tabelle + Maskenfelder",
+"description":"Viewer-Stylesheet für VIZ Charts mit dynamischer Tabelle und Maskenfeldern",
+"relation":"table",
+"contenttype":"text/html",
+"is_generic":"0",
+"toolbar_icon_filepath":"",
+"usage_resultset_data":"T",
+"stylesheet_type":"XSL",
+"jr_datasource":""
+},
{"filename":"viz_report_44660_xmlsource.jrxml",
"caption":"Campus Dashboard Druckversion",
"description":"Ausgabe pro Reiter",
diff --git a/src-modules/module/viz/schluesseltabellen/viz_chart.unl b/src-modules/module/viz/schluesseltabellen/viz_chart.unl
index 8759944..978b043 100644
--- a/src-modules/module/viz/schluesseltabellen/viz_chart.unl
+++ b/src-modules/module/viz/schluesseltabellen/viz_chart.unl
@@ -46,10 +46,13 @@ title: {\
}\
},\
xAxis: [\
- { type: 'category', axisLabel:{rotate:30}}\
+ { type: 'category', axisLabel:{rotate:30, \
+ fontSize: 20\
+}}\
],\
yAxis: [{name:'', nameLocation:'middle', nameGap:40,id:0, \
axisLabel: {\
+ fontSize: 20,\
formatter: (value) => value.toLocaleString()\
}\
}],\
@@ -61,6 +64,7 @@ title: {\
},\
label: {\
show: false,\
+ fontSize: 20,\
formatter: function (params) {\
return params.value[params.dimensionNames[params.encode.y[0]]].toLocaleString()\
}\
@@ -72,6 +76,7 @@ title: {\
},\
label: {\
show: false,\
+ fontSize: 20,\
formatter: function (params) {\
return params.value[params.dimensionNames[params.encode.y[0]]].toLocaleString()\
}\
@@ -83,6 +88,7 @@ title: {\
},\
label: {\
show: false,\
+ fontSize: 20,\
formatter: function (params) {\
return params.value[params.dimensionNames[params.encode.y[0]]].toLocaleString()\
}\
@@ -306,17 +312,21 @@ title: {\
tooltip: {},\
\
xAxis: [\
- { type: 'category', axisLabel:{rotate:30}}\
+ { type: 'category', axisLabel:{rotate:30,fontSize: 20}}\
],\
yAxis: [{name:'', nameLocation:'middle', nameGap:40,id:0,axisLabel: {\
+ fontSize: 20,\
formatter: (value) => value.toLocaleString()\
- }\
+ \
+ },\
+ \
}],\
\
series: [\
{ name:'Absolv. in der Regelstudienzeit',type: 'bar', encode:{x:'jahr',y:'absolv_in_rsz'},stack:'summe', color:'#004a93',\
label: {\
show: true,\
+ fontSize: 20,\
formatter: function (params) {\
return params.value[params.dimensionNames[params.encode.y[0]]].toLocaleString()\
}\
@@ -324,6 +334,7 @@ title: {\
{ name:'Absolv. über der Regelstudienzeit',type: 'bar',encode:{x:'jahr',y:'absolv_ueber_rsz'},stack:'summe', color:'#afcde4',\
label: {\
show: true,\
+ fontSize: 20,\
formatter: function (params) {\
return params.value[params.dimensionNames[params.encode.y[0]]].toLocaleString()\
}\
@@ -594,6 +605,56 @@ title: {\
{"name":"y","vizPropertyVariablename":"y","propertyValue":"summe","propUnit":""},\
{"name":"text","vizPropertyVariablename":"text","propertyValue":"summe","propUnit":""}],\
"dataTransformation":[]}^ ^1^600^400^200^100^0^^^^^^^^
+324^echarts_line_y_sxc_stud_anteilfs1^Anteil der Studienanfänger_innen (Hochschulvergleich)^ ^{"version":"0.2b","id":1,"name":"","renderer":"echarts","dataSources":[{"value":"0","nr":1,"name":"Tab. 1","isDefault":true}],\
+"targetDiv":"","chartElements":[{"elemID":1,"vizTypeUniquename":"echarts_line_y","caption":"echarts_line_y","datasource":"0","elementTypeProperties":[{"nr":1,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sem_rueck_beur_ein_str","propertyType":"string"},\
+{"nr":1,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"anteil","propertyType":"string"}]},\
+{"elemID":2,"vizTypeUniquename":"echarts_line_y","caption":"echarts_line_y","datasource":"0","elementTypeProperties":[{"nr":2,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sem_rueck_beur_ein_str","propertyType":"string"},\
+{"nr":2,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"sxc_stud_anteil_anf_vergleich1","propertyType":"string"}]},\
+{"elemID":3,"vizTypeUniquename":"echarts_line_y","caption":"echarts_line_y","datasource":"0","elementTypeProperties":[{"nr":3,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sem_rueck_beur_ein_str","propertyType":"string"},\
+{"nr":3,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"sxc_stud_anteil_anf_vergleich2","propertyType":"string"}]}],\
+"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Anteil der Studienanfänger_innen (Hochschulvergleich)"},\
+{"name":"x","vizPropertyVariablename":"x","propertyValue":"sem_rueck_beur_ein_str","propUnit":""},\
+{"name":"x","vizPropertyVariablename":"x","propertyValue":"sem_rueck_beur_ein_str","propUnit":""},\
+{"name":"y","vizPropertyVariablename":"y","propertyValue":"anteil","propUnit":""},\
+{"name":"y","vizPropertyVariablename":"y","propertyValue":"anteil","propUnit":""},\
+{"name":"title.left","vizPropertyVariablename":"title.left","propertyValue":"left","propUnit":""},\
+{"name":"title.top","vizPropertyVariablename":"title.top","propertyValue":"top","propUnit":""},\
+{"name":"legendShow","vizPropertyVariablename":"legendShow","propertyValue":"true","propUnit":""},\
+{"name":"legend.top","vizPropertyVariablename":"legend.top","propertyValue":"bottom","propUnit":""},\
+{"name":"legend.left","vizPropertyVariablename":"legend.left","propertyValue":"left","propUnit":""},\
+{"name":"legend.scroll","vizPropertyVariablename":"legend.scroll","propertyValue":"false","propUnit":""},\
+{"name":"margin.left","vizPropertyVariablename":"margin.left","propertyValue":"20","propUnit":"%"},\
+{"name":"margin.right","vizPropertyVariablename":"margin.right","propertyValue":"0","propUnit":"%"},\
+{"name":"margin.top","vizPropertyVariablename":"margin.top","propertyValue":"16","propUnit":"%"},\
+{"name":"margin.bottom","vizPropertyVariablename":"margin.bottom","propertyValue":"20","propUnit":"%"},\
+{"name":"xAxisNameLocation","vizPropertyVariablename":"xAxisNameLocation","propertyValue":"end","propUnit":""},\
+{"name":"tickRotate_x","vizPropertyVariablename":"tickRotate_x","propertyValue":"30","propUnit":""},\
+{"name":"width_x","vizPropertyVariablename":"width_x","propertyValue":"100","propUnit":"px"},\
+{"name":"padding_x","vizPropertyVariablename":"padding_x","propertyValue":"5","propUnit":""},\
+{"name":"padding_y","vizPropertyVariablename":"padding_y","propertyValue":"5","propUnit":""},\
+{"name":"width_y","vizPropertyVariablename":"width_y","propertyValue":"50","propUnit":"px"},\
+{"name":"position_y","vizPropertyVariablename":"position_y","propertyValue":"center","propUnit":""},\
+{"name":"valueLabelShow","vizPropertyVariablename":"valueLabelShow","propertyValue":"false","propUnit":""},\
+{"name":"distance_valueLabel","vizPropertyVariablename":"distance_valueLabel","propertyValue":"10","propUnit":""},\
+{"name":"position_valueLabel","vizPropertyVariablename":"position_valueLabel","propertyValue":"inside","propUnit":""},\
+{"name":"schemeArray","vizPropertyVariablename":"schemeArray","propertyValue":"D3_Tableau10","propUnit":""},\
+{"name":"seriesColorBy","vizPropertyVariablename":"seriesColorBy","propertyValue":"series","propUnit":""},\
+{"name":"barStacked","vizPropertyVariablename":"barStacked","propertyValue":"false","propUnit":""}],\
+"dataTransformation":[]}^^^29.04.2026^29.04.2026^47140^^3^ ^^1^800^600^100^60^0^^^^^^^^
+323^echarts_line_y_sxc_stud_sh1^Studienanfänger_innen 1. HS (Hochschulvergleich)^ ^{"version":"0.2b","id":1,"name":"","renderer":"echarts","dataSources":[{"value":"0","nr":1,"name":"Tab. 1","isDefault":true}],\
+"targetDiv":"","chartElements":[{"elemID":1,"vizTypeUniquename":"echarts_line_y","caption":"echarts_line_y","datasource":"0","elementTypeProperties":[{"nr":1,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sem_rueck_beur_ein_str","propertyType":"string"},\
+{"nr":1,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"summe_hs1","propertyType":"string"}]}],\
+"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Studienanfänger_innen 1. HS (Hochschulvergleich)"},\
+{"name":"x","vizPropertyVariablename":"x","propertyValue":"sem_rueck_beur_ein_str","propUnit":""},\
+{"name":"x","vizPropertyVariablename":"x","propertyValue":"sem_rueck_beur_ein_str","propUnit":""},\
+{"name":"y","vizPropertyVariablename":"y","propertyValue":"summe_hs1","propUnit":""},\
+{"name":"y","vizPropertyVariablename":"y","propertyValue":"summe_hs1","propUnit":""}],\
+"dataTransformation":[]}^^^29.04.2026^29.04.2026^47140^^3^ ^^1^800^600^100^60^0^^^^^^^^
+322^echarts_line_y_sxc_vergleich1^Studierende (Hochschulvergleich)^ ^{"version":"0.2b","id":1,"name":"","renderer":"echarts","dataSources":[{"value":"0","nr":1,"name":"Tab. 1","isDefault":true}],\
+"targetDiv":"","chartElements":[{"elemID":1,"vizTypeUniquename":"echarts_line_y","caption":"echarts_line_y","datasource":"0","elementTypeProperties":[{"nr":1,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"sem_rueck_beur_ein_str","propertyType":"string"},\
+{"nr":1,"vizTypePropertyUniquename":"y","caption":"Y-Achse","propertyValue":"summe","propertyType":"string"}]}],\
+"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Studierende / Studienanfänger_innen (Hochschulvergleich)"}],\
+"dataTransformation":[]}^^^29.04.2026^29.04.2026^47140^^3^ ^^1^800^600^100^60^0^^^^^^^^
280^ERFOLG_BA_MA_SANKEY^Bachelor-Master Übergang Sankey Diagramm^ ^{"version":"0.2b","id":1,"name":"","renderer":"d3js","dataSources":[{"value":"0","nr":1,"name":"Tab. 1","isDefault":true}],"targetDiv":"","chartElements":[{"elemID":1,"vizTypeUniquename":"sankey","caption":"sankey","datasource":"0","elementTypeProperties":[{"nr":1,"vizTypePropertyUniquename":"dimension1","caption":"Dimension 1","propertyValue":"erfolg_ba_ma_uebergang_abschluss_vorher_abschluss_str","propertyType":"string"},{"nr":1,"vizTypePropertyUniquename":"dimension2","caption":"Dimension 2","propertyValue":"erfolg_ba_ma_uebergang_einschr_nachher_abschluss_str","propertyType":"string"},{"nr":1,"vizTypePropertyUniquename":"measure1","caption":"Maß 1","propertyValue":"erfolg_ba_ma_uebergang_summe","propertyType":"string"}]}],"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Übergang Bachelor/Master (Flussdiagramm)"},{"name":"height","vizPropertyVariablename":"height","propertyValue":"450","propUnit":""},{"name":"width","vizPropertyVariablename":"width","propertyValue":"650","propUnit":""},{"name":"marginLeft","vizPropertyVariablename":"marginLeft","propertyValue":"100","propUnit":""},{"name":"null_value_mask","vizPropertyVariablename":"null_value_mask","propertyValue":"Kein Master","propUnit":""},{"name":"backgroundColor","vizPropertyVariablename":"backgroundColor","propertyValue":"#ffffff","propUnit":""},{"name":"color","vizPropertyVariablename":"color","propertyValue":"#000000","propUnit":""},{"name":"stroke_static","vizPropertyVariablename":"stroke_static","propertyValue":"#000000","propUnit":""},{"name":"fill_static","vizPropertyVariablename":"fill","propertyValue":"#000000","propUnit":""},{"name":"line_y","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"line_x","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"scale_x","vizPropertyVariablename":"type","propertyValue":"band","propUnit":""}],"dataTransformation":[]}^ ^^25.08.2024^25.08.2024^44160^ ^1^{"version":"0.2b","id":1,"name":"","renderer":"d3js","dataSources":[{"value":"0","nr":1,"name":"Tab. 1","isDefault":true}],"targetDiv":"","chartElements":[{"elemID":1,"vizTypeUniquename":"sankey","caption":"sankey","datasource":"0","elementTypeProperties":[{"nr":1,"vizTypePropertyUniquename":"dimension1","caption":"Dimension 1","propertyValue":"erfolg_ba_ma_uebergang_abschluss_vorher_abschluss_str","propertyType":"string"},{"nr":1,"vizTypePropertyUniquename":"dimension2","caption":"Dimension 2","propertyValue":"erfolg_ba_ma_uebergang_einschr_nachher_abschluss_str","propertyType":"string"},{"nr":1,"vizTypePropertyUniquename":"measure1","caption":"Maß 1","propertyValue":"erfolg_ba_ma_uebergang_summe","propertyType":"string"}]}],"chartPropertiesUsed":[{"name":"caption","vizPropertyVariablename":"caption","propertyValue":"Übergang Bachelor/Master (Flussdiagramm)"},{"name":"height","vizPropertyVariablename":"height","propertyValue":"450","propUnit":""},{"name":"width","vizPropertyVariablename":"width","propertyValue":"650","propUnit":""},{"name":"marginLeft","vizPropertyVariablename":"marginLeft","propertyValue":"100","propUnit":""},{"name":"null_value_mask","vizPropertyVariablename":"null_value_mask","propertyValue":"Kein Master","propUnit":""},{"name":"backgroundColor","vizPropertyVariablename":"backgroundColor","propertyValue":"#ffffff","propUnit":""},{"name":"color","vizPropertyVariablename":"color","propertyValue":"#000000","propUnit":""},{"name":"stroke_static","vizPropertyVariablename":"stroke_static","propertyValue":"#000000","propUnit":""},{"name":"fill_static","vizPropertyVariablename":"fill","propertyValue":"#000000","propUnit":""},{"name":"line_y","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"line_x","vizPropertyVariablename":"line","propertyValue":"true","propUnit":""},{"name":"scale_x","vizPropertyVariablename":"type","propertyValue":"band","propUnit":""}],"dataTransformation":[]}^ ^1^600^400^200^100^0^^^^^^^^
281^STUD_ALTER_BOXPLOT_H^Studierende nach Alter Boxplot horizontal^ ^{"version":"0.2b","id":1,"name":"","renderer":"plot","dataSources":[{"value":"0","nr":1,"name":"Tab. 1","isDefault":true}],\
"targetDiv":"","chartElements":[{"elemID":1,"vizTypeUniquename":"box_x","caption":"box_x","datasource":"0","elementTypeProperties":[{"nr":1,"vizTypePropertyUniquename":"x","caption":"X-Achse","propertyValue":"alter","propertyType":"string"},\
diff --git a/src-modules/module/viz/schluesseltabellen/viz_colorscheme_fuellen.sql b/src-modules/module/viz/schluesseltabellen/viz_colorscheme_fuellen.sql
index 69a8a65..cd563b4 100644
--- a/src-modules/module/viz/schluesseltabellen/viz_colorscheme_fuellen.sql
+++ b/src-modules/module/viz/schluesseltabellen/viz_colorscheme_fuellen.sql
@@ -21,7 +21,9 @@
{"uniquename":"fak", "caption":"Fakultäten"},
{"uniquename":"quadroColor", "caption":"Vier Farben"},
{"uniquename":"blandLocalized", "caption":"Bundesland (eigenes)"},
-{"uniquename":"colorGrades", "caption":"Blautöne"}
+{"uniquename":"colorGrades", "caption":"Blautöne"},
+{"uniquename":"in_rsz", "caption":"In oder über Regelstudienzeit"}
+
]
/>
@@ -128,6 +130,13 @@
{"colorscheme":"colorGrades",
"colorcode":"#f6f7fc"}
+,
+{"colorscheme":"in_rsz",
+"colorcode":"#004a93"},
+{"colorscheme":"in_rsz",
+"colorcode":"#afcde4"},
+{"colorscheme":"in_rsz",
+"colorcode":"##ccffff"}
]
diff --git a/src-modules/module/viz/schluesseltabellen/viz_dashboard_STUDABSOLV_fuellen.sql b/src-modules/module/viz/schluesseltabellen/viz_dashboard_STUDABSOLV_fuellen.sql
new file mode 100644
index 0000000..92319b0
--- /dev/null
+++ b/src-modules/module/viz/schluesseltabellen/viz_dashboard_STUDABSOLV_fuellen.sql
@@ -0,0 +1,131 @@
+--Freemarker Template
+<#include "SQL_lingua_franca"/>
+<#include "SuperX_general"/>
+<#include "VIZ-Makros"/>
+
+
+
+
+
+
+<#assign viz_dashboard =
+{ "caption":"im Überblick",
+"uniquename":"STUDABSOLV",
+"maskeninfo_id":44690,
+"booklet_stylesheet":"viz_report_44690_xmlsource.jrxml",
+"gridtitle_felderinfo_id":"null" }
+ />
+
+<#assign link_tablestylesheet="viz_html_chart_viewer_mask_and_table.xsl" />
+<#assign open_modal_card_detail="0" />
+
+
+<#assign viz_dashboard_tabs = [
+{
+"caption":"Studierende",
+"maskeninfo_id":"44190",
+"sortnr":10,
+"select_clause":"sum(summe) as summe",
+"fact_table":"sos_stg_aggr",
+"where_clause":"studiengang_nr=1
+and fach_nr=1
+and stichtag=(select I.tid from sos_stichtag I where I.appl_key=''0'')",
+"optional_filter_name":"",
+"optional_filter_value":"",
+"booklet_stylesheet":"viz_report_44190_xmlsource.jrxml"
+},
+{
+"caption":"Studienanfänger*innen im 1. HS",
+"maskeninfo_id":"44190",
+"sortnr":20,
+"select_clause":"sum(summe) as summe",
+"fact_table":"sos_stg_aggr",
+"where_clause":"studiengang_nr=1
+and fach_nr=1
+and stichtag=(select I.tid from sos_stichtag I where I.appl_key=''0'')
+and hssem=1",
+"optional_filter_name":"",
+"optional_filter_value":"",
+"booklet_stylesheet":"viz_report_44190_xmlsource.jrxml"
+},
+{
+"caption":"Studienanfänger*innen im 1. FS",
+"maskeninfo_id":"44190",
+"sortnr":30,
+"select_clause":"sum(summe) as summe",
+"fact_table":"sos_stg_aggr",
+"where_clause":"studiengang_nr=1
+and fach_nr=1
+and stichtag=(select I.tid from sos_stichtag I where I.appl_key=''0'')
+and fach_sem_zahl=1",
+"optional_filter_name":"",
+"optional_filter_value":"",
+"booklet_stylesheet":"viz_report_44190_xmlsource.jrxml"
+}
+]
+/>
+<#assign viz_dashboard_elements = [
+{
+"datasource_type":1,
+"datasource":"2",
+"sortnr":10,
+"chart_uniquename":"STUD_SEM_LINE",
+"caption":"Studierende gesamt",
+"onclick_event":"",
+"active":"1"
+},
+{
+"datasource_type":1,
+"datasource":"3",
+"sortnr":20,
+"chart_uniquename":"STUD_SEM_LINE",
+"caption":"Studierende 1. Hochschulsemester",
+"onclick_event":"",
+"active":"1"
+},
+{
+"datasource_type":1,
+"datasource":"4",
+"sortnr":30,
+"chart_uniquename":"STUD_SEM_LINE",
+"caption":"Studierende 1. Fachsemester",
+"onclick_event":"",
+"active":"1"
+},
+{
+"datasource_type":1,
+"datasource":"5",
+"sortnr":40,
+"chart_uniquename":"ABSOLV_SEM_LINE",
+"caption":"Absolvent*innen (Zeitreihe)",
+"onclick_event":"",
+"active":"1"
+},
+{
+"datasource_type":1,
+"datasource":"6",
+"sortnr":50,
+"chart_uniquename":"ABSOLV_RSZ_SEM_BAR",
+"caption":"Absolvent*innen in der Regelstudienzeit (Zeitreihe)",
+"onclick_event":"",
+"active":"1"
+},
+{
+"datasource_type":1,
+"datasource":"7",
+"sortnr":60,
+"chart_uniquename":"ABSOLV_ABGRP_SEM_AREA",
+"caption":"Absolvent*innen nach Abschlussgruppe (Zeitreihe)",
+"onclick_event":"",
+"active":"1"
+}
+] />
+
+<@create_temp_tables_dashboard />
+
+
+<@viz_dashboard_fuellen />
+
+
+<@drop_temp_tables_dashboard />
+
diff --git a/src-modules/module/viz/schluesseltabellen/viz_dashboard_STUD_fuellen.sql b/src-modules/module/viz/schluesseltabellen/viz_dashboard_STUD_fuellen.sql
new file mode 100644
index 0000000..3ea68d7
--- /dev/null
+++ b/src-modules/module/viz/schluesseltabellen/viz_dashboard_STUD_fuellen.sql
@@ -0,0 +1,106 @@
+--Freemarker Template
+<#include "SQL_lingua_franca"/>
+<#include "SuperX_general"/>
+<#include "VIZ-Makros"/>
+
+
+
+
+
+
+<#assign viz_dashboard =
+{ "caption":"im Überblick",
+"uniquename":"STUD",
+"maskeninfo_id":44660,
+"booklet_stylesheet":"viz_report_44660_xmlsource.jrxml",
+"gridtitle_felderinfo_id":"null" }
+ />
+
+<#assign link_tablestylesheet="viz_html_chart_viewer_mask_and_table.xsl" />
+<#assign open_modal_card_detail="0" />
+
+
+<#assign viz_dashboard_tabs = [
+{
+"caption":"Studierende",
+"maskeninfo_id":"44190",
+"sortnr":10,
+"select_clause":"sum(summe) as summe",
+"fact_table":"sos_stg_aggr",
+"where_clause":"studiengang_nr=1
+and fach_nr=1
+and stichtag=(select I.tid from sos_stichtag I where I.appl_key=''0'')",
+"optional_filter_name":"",
+"optional_filter_value":"",
+"booklet_stylesheet":"viz_report_44190_xmlsource.jrxml"
+},
+{
+"caption":"Studienanfänger*innen im 1. HS",
+"maskeninfo_id":"44190",
+"sortnr":20,
+"select_clause":"sum(summe) as summe",
+"fact_table":"sos_stg_aggr",
+"where_clause":"studiengang_nr=1
+and fach_nr=1
+and stichtag=(select I.tid from sos_stichtag I where I.appl_key=''0'')
+and hssem=1",
+"optional_filter_name":"",
+"optional_filter_value":"",
+"booklet_stylesheet":"viz_report_44190_xmlsource.jrxml"
+},
+{
+"caption":"Studienanfänger*innen im 1. FS",
+"maskeninfo_id":"44190",
+"sortnr":30,
+"select_clause":"sum(summe) as summe",
+"fact_table":"sos_stg_aggr",
+"where_clause":"studiengang_nr=1
+and fach_nr=1
+and stichtag=(select I.tid from sos_stichtag I where I.appl_key=''0'')
+and fach_sem_zahl=1",
+"optional_filter_name":"",
+"optional_filter_value":"",
+"booklet_stylesheet":"viz_report_44190_xmlsource.jrxml"
+}
+]
+/>
+<#assign viz_dashboard_elements = [
+{
+"datasource_type":1,
+"datasource":"2",
+"sortnr":10,
+"chart_uniquename":"STUD_SEM_LINE",
+"caption":"Studierende gesamt",
+"onclick_event":"",
+"active":"1"
+},
+{
+"datasource_type":1,
+"datasource":"3",
+"sortnr":20,
+"chart_uniquename":"STUD_SEM_LINE",
+"caption":"Studierende 1. Hochschulsemester",
+"onclick_event":"",
+"active":"1"
+},
+{
+"datasource_type":1,
+"datasource":"4",
+"sortnr":30,
+"chart_uniquename":"STUD_SEM_LINE",
+"caption":"Studierende 1. Fachsemester",
+"onclick_event":"",
+"active":"1"
+}
+] />
+
+<@create_temp_tables_dashboard />
+
+
+<@viz_dashboard_fuellen />
+
+
+<@drop_temp_tables_dashboard />
+
+
+
diff --git a/src-modules/module/viz/schluesseltabellen/viz_dashboard_element_fuellen.sql b/src-modules/module/viz/schluesseltabellen/viz_dashboard_element_fuellen.sql
new file mode 100644
index 0000000..0637466
--- /dev/null
+++ b/src-modules/module/viz/schluesseltabellen/viz_dashboard_element_fuellen.sql
@@ -0,0 +1,250 @@
+--Freemarker Template
+<#include "SQL_lingua_franca"/>
+<#include "SuperX_general"/>
+<#include "VIZ-Makros"/>
+
+
+
+ select tid from viz_renderer where uniquename='viz';
+
+
+
+<#assign viz_properties = [
+{ "caption":"Dimensionen",
+"prop_uniquename":"dimensionsNode",
+"explanation":"Dimensionen",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"0",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"NODE",
+"sortnr":"1",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"NODE",
+"parent_property_uniquename":"",
+"variableName":"encode"
+},
+{ "caption":"Zeilendimension 1",
+"prop_uniquename":"rowdim1",
+"explanation":"Zeilendimension oberste Ebene für Kreuztabellen",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"0",
+"static_values":"",
+"is_mandatory":"1",
+"input_type_uniquename":"SELECT",
+"property_group_uniquename":"CATEGORY",
+"sortnr":"608",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"string",
+"parent_property_uniquename":"dimensionsNode"
+},
+{ "caption":"Spaltendimension 1",
+"prop_uniquename":"coldim1",
+"explanation":"Spaltendimension obersete Ebene für Kreuztabellen",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"0",
+"static_values":"",
+"is_mandatory":"1",
+"input_type_uniquename":"SELECT",
+"property_group_uniquename":"CATEGORY",
+"sortnr":"610",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"string",
+"parent_property_uniquename":"dimensionsNode"
+},
+{ "caption":"Dimension 1",
+"prop_uniquename":"dimension1",
+"explanation":"Dimension 1",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"0",
+"static_values":"",
+"is_mandatory":"1",
+"input_type_uniquename":"SELECT",
+"property_group_uniquename":"CATEGORY",
+"sortnr":"608",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"string",
+"parent_property_uniquename":"dimensionsNode"
+},
+{ "caption":"Maß 1",
+"prop_uniquename":"measure1",
+"explanation":"Maß 1",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"0",
+"static_values":"",
+"is_mandatory":"1",
+"input_type_uniquename":"SELECT",
+"property_group_uniquename":"MEASURE",
+"sortnr":"610",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"string",
+"parent_property_uniquename":"dimensionsNode"
+},
+{ "caption":"Titel",
+"prop_uniquename":"titleNode",
+"explanation":"Titel-Element",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"NODE",
+"sortnr":"1",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"NODE",
+"parent_property_uniquename":"",
+"variableName":"subtitle"
+},
+{ "caption":"Untertitel-Text",
+"prop_uniquename":"subtitle",
+"explanation":"Text",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"titleNode"
+},
+{ "caption":"Untertitel CSS-Klasse",
+"prop_uniquename":"subtitleCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"titleNode"
+},
+{ "caption":"CSS-Klassen",
+"prop_uniquename":"CssClassesNode",
+"explanation":"",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"NODE",
+"property_group_uniquename":"",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"NODE",
+"parent_property_uniquename":"",
+"variableName":"CssClassesNode"
+},
+{ "caption":"Tabelle CSS-Klasse",
+"prop_uniquename":"tableCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"table",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"CssClassesNode"
+},
+{ "caption":"Tabellenheader CSS-Klasse",
+"prop_uniquename":"theadCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"CssClassesNode"
+},
+{ "caption":"Spaltenüberschrift CSS-Klasse",
+"prop_uniquename":"thCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"CssClassesNode"
+},
+{ "caption":"Daten-Zellen CSS-Klasse",
+"prop_uniquename":"tdDataCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"CssClassesNode"
+},
+{ "caption":"Tabellenfooter CSS-Klasse",
+"prop_uniquename":"tfootCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"CssClassesNode"
+}
+]
+/>
+
+
+
+<@create_temp_tables />
+
+
+<@fill_viz_properties />
+
+
+<@drop_temp_tables />
+
diff --git a/src-modules/module/viz/schluesseltabellen/viz_properties_basistools_fuellen.sql b/src-modules/module/viz/schluesseltabellen/viz_properties_basistools_fuellen.sql
new file mode 100644
index 0000000..0637466
--- /dev/null
+++ b/src-modules/module/viz/schluesseltabellen/viz_properties_basistools_fuellen.sql
@@ -0,0 +1,250 @@
+--Freemarker Template
+<#include "SQL_lingua_franca"/>
+<#include "SuperX_general"/>
+<#include "VIZ-Makros"/>
+
+
+
+ select tid from viz_renderer where uniquename='viz';
+
+
+
+<#assign viz_properties = [
+{ "caption":"Dimensionen",
+"prop_uniquename":"dimensionsNode",
+"explanation":"Dimensionen",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"0",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"NODE",
+"sortnr":"1",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"NODE",
+"parent_property_uniquename":"",
+"variableName":"encode"
+},
+{ "caption":"Zeilendimension 1",
+"prop_uniquename":"rowdim1",
+"explanation":"Zeilendimension oberste Ebene für Kreuztabellen",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"0",
+"static_values":"",
+"is_mandatory":"1",
+"input_type_uniquename":"SELECT",
+"property_group_uniquename":"CATEGORY",
+"sortnr":"608",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"string",
+"parent_property_uniquename":"dimensionsNode"
+},
+{ "caption":"Spaltendimension 1",
+"prop_uniquename":"coldim1",
+"explanation":"Spaltendimension obersete Ebene für Kreuztabellen",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"0",
+"static_values":"",
+"is_mandatory":"1",
+"input_type_uniquename":"SELECT",
+"property_group_uniquename":"CATEGORY",
+"sortnr":"610",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"string",
+"parent_property_uniquename":"dimensionsNode"
+},
+{ "caption":"Dimension 1",
+"prop_uniquename":"dimension1",
+"explanation":"Dimension 1",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"0",
+"static_values":"",
+"is_mandatory":"1",
+"input_type_uniquename":"SELECT",
+"property_group_uniquename":"CATEGORY",
+"sortnr":"608",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"string",
+"parent_property_uniquename":"dimensionsNode"
+},
+{ "caption":"Maß 1",
+"prop_uniquename":"measure1",
+"explanation":"Maß 1",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"0",
+"static_values":"",
+"is_mandatory":"1",
+"input_type_uniquename":"SELECT",
+"property_group_uniquename":"MEASURE",
+"sortnr":"610",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"string",
+"parent_property_uniquename":"dimensionsNode"
+},
+{ "caption":"Titel",
+"prop_uniquename":"titleNode",
+"explanation":"Titel-Element",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"NODE",
+"sortnr":"1",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"NODE",
+"parent_property_uniquename":"",
+"variableName":"subtitle"
+},
+{ "caption":"Untertitel-Text",
+"prop_uniquename":"subtitle",
+"explanation":"Text",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"titleNode"
+},
+{ "caption":"Untertitel CSS-Klasse",
+"prop_uniquename":"subtitleCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"titleNode"
+},
+{ "caption":"CSS-Klassen",
+"prop_uniquename":"CssClassesNode",
+"explanation":"",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"NODE",
+"property_group_uniquename":"",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"NODE",
+"parent_property_uniquename":"",
+"variableName":"CssClassesNode"
+},
+{ "caption":"Tabelle CSS-Klasse",
+"prop_uniquename":"tableCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"table",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"CssClassesNode"
+},
+{ "caption":"Tabellenheader CSS-Klasse",
+"prop_uniquename":"theadCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"CssClassesNode"
+},
+{ "caption":"Spaltenüberschrift CSS-Klasse",
+"prop_uniquename":"thCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"CssClassesNode"
+},
+{ "caption":"Daten-Zellen CSS-Klasse",
+"prop_uniquename":"tdDataCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"CssClassesNode"
+},
+{ "caption":"Tabellenfooter CSS-Klasse",
+"prop_uniquename":"tfootCssClass",
+"explanation":"Formatierung mit CSS-Klasse",
+"prop_default":"",
+"prop_unit":"",
+"is_generic":"1",
+"static_values":"",
+"is_mandatory":"0",
+"input_type_uniquename":"TEXT",
+"property_group_uniquename":"STYLE",
+"sortnr":"10",
+"range_from":"",
+"range_to":"",
+"prop_value_type":"STRING",
+"parent_property_uniquename":"CssClassesNode"
+}
+]
+/>
+
+
+
+<@create_temp_tables />
+
+
+<@fill_viz_properties />
+
+
+<@drop_temp_tables />
+
diff --git a/src-modules/module/viz/schluesseltabellen/viz_properties_viz_basistools_crosstab_fuellen.sql b/src-modules/module/viz/schluesseltabellen/viz_properties_viz_basistools_crosstab_fuellen.sql
new file mode 100644
index 0000000..e06e0da
--- /dev/null
+++ b/src-modules/module/viz/schluesseltabellen/viz_properties_viz_basistools_crosstab_fuellen.sql
@@ -0,0 +1,58 @@
+--Freemarker Template
+<#include "SQL_lingua_franca"/>
+<#include "SuperX_general"/>
+<#include "VIZ-Makros"/>
+
+
+ select tid from viz_renderer where uniquename='viz';
+
+
+<#assign viz_types = [
+{"uniquename":"simplePivotTable", "caption":"Einfache pivotierte Tabelle",
+"orientation":"Z",
+"description":"Einfache pivotierte Datentabelle",
+"explanation":""}
+
+]
+/>
+
+
+<#assign viz_type_properties = [
+{"viz_property_uniquename":"rowdim1",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"coldim1",
+"is_mandatory":"1"},
+{"viz_property_uniquename":"measure1",
+"is_mandatory":"1"},
+{"viz_property_uniquename":"subtitle",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"subtitleCssClass",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"tableCssClass",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"theadCssClass",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"thCssClass",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"tdDataCssClass",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"tfootCssClass",
+"is_mandatory":"0"}
+]
+/>
+
+
+<@create_temp_tables />
+
+
+<#foreach viz_type in viz_types>
+
+<@fill_viz_types viz_type_p=viz_type />
+
+<@fill_viz_type_properties viz_type_p=viz_type />
+
+#foreach>
+
+<@drop_temp_tables />
+
+
diff --git a/src-modules/module/viz/schluesseltabellen/viz_properties_viz_basistools_simple_table_fuellen.sql b/src-modules/module/viz/schluesseltabellen/viz_properties_viz_basistools_simple_table_fuellen.sql
new file mode 100644
index 0000000..d7d0bed
--- /dev/null
+++ b/src-modules/module/viz/schluesseltabellen/viz_properties_viz_basistools_simple_table_fuellen.sql
@@ -0,0 +1,54 @@
+--Freemarker Template
+<#include "SQL_lingua_franca"/>
+<#include "SuperX_general"/>
+<#include "VIZ-Makros"/>
+
+
+ select tid from viz_renderer where uniquename='viz';
+
+
+<#assign viz_types = [
+{"uniquename":"simpleTable", "caption":"Einfache Datentabelle",
+"orientation":"Z",
+"description":"Einfache Kopie der Datentabelle",
+"explanation":""}
+
+]
+/>
+
+
+<#assign viz_type_properties = [
+{"viz_property_uniquename":"subtitle",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"subtitleCssClass",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"tableCssClass",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"theadCssClass",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"thCssClass",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"tdDataCssClass",
+"is_mandatory":"0"},
+{"viz_property_uniquename":"tfootCssClass",
+"is_mandatory":"0"}
+
+
+]
+/>
+
+
+<@create_temp_tables />
+
+
+<#foreach viz_type in viz_types>
+
+<@fill_viz_types viz_type_p=viz_type />
+
+<@fill_viz_type_properties viz_type_p=viz_type />
+
+#foreach>
+
+<@drop_temp_tables />
+
+
diff --git a/src-modules/module/viz/schluesseltabellen/viz_renderer.unl b/src-modules/module/viz/schluesseltabellen/viz_renderer.unl
index 3f3bb02..59603a4 100644
--- a/src-modules/module/viz/schluesseltabellen/viz_renderer.unl
+++ b/src-modules/module/viz/schluesseltabellen/viz_renderer.unl
@@ -1,3 +1,4 @@
1^d3js^D3JS (V7)^
2^plot^Observable Plot^
3^echarts^Apache Echarts^
+4^viz^VIZ Basistools^
diff --git a/superx/xml/js/viz/viz_viewer.js b/superx/xml/js/viz/viz_viewer.js
index d87b682..8d64a06 100644
--- a/superx/xml/js/viz/viz_viewer.js
+++ b/superx/xml/js/viz/viz_viewer.js
@@ -486,6 +486,9 @@ function renderChartSVGFromModel(currentChartModel,targetDiv,ergebniselementOrdn
case "echarts":
renderEChart2(currentChartModel,targetDiv,ergebniselementOrdnr,title);
break;
+ case "viz":
+ renderVizBaseTools(currentChartModel,targetDiv,ergebniselementOrdnr,title);
+ break;
default:
alert("No renderer");
break;
@@ -1622,6 +1625,141 @@ function renderEChart2(currentChartModel,chartDiv,ergebniselementOrdnr,chartTitl
}
}
+
+ function renderVizBaseTools(currentChartModel,chartDiv,ergebniselementOrdnr,chartTitle)
+{
+ var chartType=currentChartModel.chartElements[0].vizTypeUniquename;
+ var titleText=chartTitle;
+ if(chartTitle=="")
+ titleText=getChartPropertyValue(currentChartModel.chartPropertiesUsed,"caption");
+
+ //first empty the element, if necessary:
+ var chartDivElem=document.getElementById(chartDiv);
+ while (chartDivElem.firstChild) {
+ chartDivElem.removeChild(chartDivElem.firstChild);
+ }
+ switch (chartType)
+ {
+ case "simpleTable":
+ var zs=vizBaseToolSimpleTable(currentChartModel,rs[ergebniselementOrdnr],rsColumnMetaData[ergebniselementOrdnr],rs[ergebniselementOrdnr].length,titleText);
+ break;
+ case "simplePivotTable":
+
+
+ var rowdim1Prop=currentChartModel.chartElements[0].elementTypeProperties.find(o => o.vizTypePropertyUniquename == "rowdim1");
+ var rowdim1 =rowdim1Prop?rowdim1Prop.propertyValue:null;
+ var coldim1Prop=currentChartModel.chartElements[0].elementTypeProperties.find(o => o.vizTypePropertyUniquename == "coldim1");
+ var coldim1 =coldim1Prop?coldim1Prop.propertyValue:null;
+ var measure1Prop=currentChartModel.chartElements[0].elementTypeProperties.find(o => o.vizTypePropertyUniquename == "measure1");
+ var measure1 =measure1Prop?measure1Prop.propertyValue:null;
+ //TODO: rowdim2, coldim2 etc.
+ var tableArray=generateCrosstab(rs[ergebniselementOrdnr],rsColumnMetaData[ergebniselementOrdnr],rowdim1,coldim1,measure1);
+ zs=vizBaseToolArray2Table(currentChartModel,tableArray,tableArray.length,titleText)
+ //zs=JSON.stringify(tableArray);
+ break;
+ default:
+ zs="Unknown VIZ type";
+ break;
+ }
+ chartDivElem.innerHTML=zs;
+ }
+ function vizBaseToolSimpleTable(currentChartModel,mydata,metadata,rowcount,titleText)
+ {
+ var tableClass=getCssClassAttr(currentChartModel,"tableCssClass");
+ var theadCssClass=getCssClassAttr(currentChartModel,"theadCssClass");
+ var thCssClass=getCssClassAttr(currentChartModel,"thCssClass");
+ var tdDataCssClass=getCssClassAttr(currentChartModel,"tdDataCssClass");
+ var tfootCssClass=getCssClassAttr(currentChartModel,"tfootCssClass");
+
+ zs=vizBaseToolTableHead(titleText,tableClass,theadCssClass);
+ zs+="";
+ for(var col=0;col < metadata.length;col++)
+ {
+ if(metadata[col].nr)
+ {
+ zs+=""+metadata[col].colcaption+" ";
+
+ }
+
+ }
+ zs +=" ";
+ for(row=0;row";
+ for(var col=0;col < metadata.length;col++)
+ {
+ if(metadata[col].nr)
+ {
+ zs+=""+mydata[row][metadata[col].colname]+" ";
+
+ }
+ }
+ zs+="";
+ }
+ }
+ zs+=" ";
+ //TODO:tfoot wenn Summenzeile da ist
+ zs+="";
+ return zs;
+ }
+ function vizBaseToolTableHead(titleText,tableClass,theadCssClass)
+ {
+ var zs="";
+ zs+=""+titleText+" ";
+ zs+="";
+ return zs;
+ }
+ function vizBaseToolArray2Table(currentChartModel,mydata,rowcount,titleText)
+ {
+ var tableClass=getCssClassAttr(currentChartModel,"tableCssClass");
+ var theadCssClass=getCssClassAttr(currentChartModel,"theadCssClass");
+ var thCssClass=getCssClassAttr(currentChartModel,"thCssClass");
+ var tdDataCssClass=getCssClassAttr(currentChartModel,"tdDataCssClass");
+ var tfootCssClass=getCssClassAttr(currentChartModel,"tfootCssClass");
+
+ zs=vizBaseToolTableHead(titleText,tableClass,theadCssClass);
+ zs+="";
+ for(var col=0;col < mydata[0].length;col++)
+ {
+ if(mydata[0][col])
+ {
+ zs+=""+mydata[0][col]+" ";
+
+ }
+
+ }
+ zs +=" ";
+ for(row=1;row";
+ for(var col=0;col < mydata[row].length;col++)
+ {
+ if(mydata[row][col])
+ {
+ zs+=""+mydata[row][col]+" ";
+
+ }
+ }
+ zs+="";
+ }
+ }
+ zs+="
";
+ return zs;
+ }
+ function getCssClassAttr(currentChartModel,cssClassName)
+ {
+ var ret="";
+ var propval=getChartPropertyValue(currentChartModel.chartPropertiesUsed,cssClassName);
+ if(propval!="")
+ {
+ ret=" class=\""+propval+"\"";
+ }
+ return ret;
+ }
/*
function determineChartSkeleton(datasourceDef,ergebniselementOrdnr)
{
@@ -1758,7 +1896,7 @@ var seriesArray=getEchartSeriesArray(currentChartModel,chartType,orientation,dim
axisLabel: {
inside: false,
margin: getChartPropertyValue(currentChartModel.chartPropertiesUsed,"padding_x"),
- fontSize: 12,
+ fontSize: "1.5em",
width:getChartPropertyValue(currentChartModel.chartPropertiesUsed,"width_x"),
rotate: getChartPropertyValue(currentChartModel.chartPropertiesUsed,"tickRotate_x"),
/*formatter: function (value, index) {
@@ -1774,7 +1912,7 @@ var seriesArray=getEchartSeriesArray(currentChartModel,chartType,orientation,dim
axisLabel: {
inside: false,
margin: getChartPropertyValue(currentChartModel.chartPropertiesUsed,"padding_y"),
- fontSize: 12,
+ fontSize: "2em",
width:getChartPropertyValue(currentChartModel.chartPropertiesUsed,"width_y"),
rotate: getChartPropertyValue(currentChartModel.chartPropertiesUsed,"tickRotate_y"),
distance:getChartPropertyValue(currentChartModel.chartPropertiesUsed,"distance_y"),
@@ -1815,7 +1953,7 @@ function getEchartSeriesArray(currentChartModel,chartType,orientation,dimension1
color: '#dfe4f2'
},
margin: 50,
- fontSize: 14,
+ fontSize: "2em",
colorBy: getChartPropertyValue(currentChartModel.chartPropertiesUsed,"seriesColorBy"),//'series',// 'data',
//color: myPalette,
lineStyle: {
@@ -1824,7 +1962,7 @@ function getEchartSeriesArray(currentChartModel,chartType,orientation,dimension1
label: {
show: (getChartPropertyValue(currentChartModel.chartPropertiesUsed,"valueLabelShow")=="false")?false:true, //true
fontWeight:'bolder',
- fontSize: 14,
+ fontSize: "2em",
distance:30,
//offset:[30, 40],
// position:"bottom",
@@ -1953,7 +2091,7 @@ var option = {
axisLabel: {
inside: false,
margin: getChartPropertyValue(currentChartModel.chartPropertiesUsed,"padding_x"),
- fontSize: 12,
+ fontSize: "1.5em",
width:getChartPropertyValue(currentChartModel.chartPropertiesUsed,"width_x"),
rotate: getChartPropertyValue(currentChartModel.chartPropertiesUsed,"tickRotate_x"),
/*formatter: function (value, index) {
@@ -1970,7 +2108,7 @@ var option = {
axisLabel: {
inside: false,
margin: getChartPropertyValue(currentChartModel.chartPropertiesUsed,"padding_y"),
- fontSize: 12,
+ fontSize: "1.5em",
width:getChartPropertyValue(currentChartModel.chartPropertiesUsed,"width_y"),
rotate: getChartPropertyValue(currentChartModel.chartPropertiesUsed,"tickRotate_y"),
distance:getChartPropertyValue(currentChartModel.chartPropertiesUsed,"distance_y"),
@@ -3005,6 +3143,87 @@ function pivotTable(rsData,rsMetaData,srcColNrStart)
console.log(rsDataPivot);
*/
+return rsDataPivot;
+}
+
+function generateCrosstab(rsData,rsMetaData,rowdim1,coldim1,measure1)
+{
+ /*erzeugt einen Array als Kreuztabelle
+ TODO: rowdim1 auswerten, derzeit noch nicht impl.*/
+ var rsDataPivot=new Array();
+ var nrSourceRows=rsData.length;
+ var nrSouceCols=rsMetaData.length;
+ var rsRow=new Array();
+ var zs="";
+ var targetRownr=0;
+ var rowdim1Prop=rsMetaData.find(obj => obj.colname == rowdim1);
+ var rowdim1Nr =rowdim1Prop?rowdim1Prop.nr:null;
+ var coldim1Prop=rsMetaData.find(obj => obj.colname == coldim1);
+ var coldim1Nr =coldim1Prop?coldim1Prop.nr:null;
+ var measure1Prop=rsMetaData.find(obj => obj.colname == measure1);
+ var measure1Nr =measure1Prop?measure1Prop.nr:null;
+
+
+ var coldim1Caption=rsMetaData.find(obj => obj.colname == coldim1).colcaption;
+ //first line will have headers:
+ var rownr=0;
+ //Variable zs ist nur zum Debuggen
+ zs+=coldim1Caption+"|";
+ rsRow[rownr]=coldim1Caption; //TODO: rowdim1
+ rownr++;
+ rsData.forEach((row) => {
+ var colnr=0;
+ for (var col in row) {
+
+ if(colnr==coldim1Nr)
+ {
+ zs+=row[col]+"|";
+ rsRow[rownr]=row[col];
+ }
+ colnr++;
+ }
+ rownr++;
+ }
+ );
+ zs +="\n";
+ targetRownr++;
+ rsDataPivot.push(rsRow);
+ //now the data:
+ var metaDataColnr=0;
+
+ rsMetaData.forEach((col) => {
+ if(metaDataColnr==measure1Nr && col.colcaption.trim()!="")
+ {
+ //start a new row:
+ var rsRow=new Array();
+ var colname=col.colname;
+ zs+=col.colcaption +"|";
+ rsRow[0]=col.colcaption;
+ var targetColnr=1;
+ var rownr=0;
+ rsData.forEach((row) => {
+ var colnr=0;
+ for (var col in row) {
+ if(colnr==metaDataColnr)
+ {
+ zs+=row[col]+"|";
+ rsRow[targetColnr]=row[col];
+ targetColnr++;
+ }
+ colnr++;
+ };
+ rownr++;
+ });
+ zs+="\n";
+ rsDataPivot.push(rsRow);
+
+
+ }
+ metaDataColnr++;
+ });
+
+
+
return rsDataPivot;
}
/* color schemes from d3js */
diff --git a/superx/xml/viz_components.xsl b/superx/xml/viz_components.xsl
index 1a1950d..af17665 100644
--- a/superx/xml/viz_components.xsl
+++ b/superx/xml/viz_components.xsl
@@ -721,6 +721,10 @@ if(myRenderer=="echarts")
{
renderEChart2(chartModel,chartDiv,rsNr,chartTitle);
}
+else if(myRenderer=="viz")
+ {
+ renderVizBaseTools(chartModel,chartDiv,rsNr,chartTitle);
+ }
else
{
//d3js or plot:
@@ -1227,11 +1231,15 @@ Stand:
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -1245,16 +1253,16 @@ Stand:
-
+
-
-
-
-
+
+
+
+
diff --git a/superx/xml/viz_html_chart.xsl b/superx/xml/viz_html_chart.xsl
index 52556b7..acd45d3 100644
--- a/superx/xml/viz_html_chart.xsl
+++ b/superx/xml/viz_html_chart.xsl
@@ -224,7 +224,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
Datentabelle
-
+ EXPORT
diff --git a/superx/xml/viz_html_chart_viewer_mask_and_table.xsl b/superx/xml/viz_html_chart_viewer_mask_and_table.xsl
index 0daf43d..cb5322a 100644
--- a/superx/xml/viz_html_chart_viewer_mask_and_table.xsl
+++ b/superx/xml/viz_html_chart_viewer_mask_and_table.xsl
@@ -40,11 +40,8 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
-
-
-
-
-
+
+