Browse Source

Eigene Javascript Handler in VIZ einbinden #13

master
Daniel Quathamer 1 week ago
parent
commit
c6a4b3a2a5
  1. 10
      src-modules/module/viz/conf/viz.xml
  2. 2
      src-modules/module/viz/masken/44130_maskeninfo.unl
  3. 2
      src-modules/module/viz/masken/44220_maskeninfo.unl
  4. 2
      src-modules/module/viz/masken/44250_maskeninfo.unl
  5. 2
      src-modules/module/viz/masken/44280_maskeninfo.unl
  6. 2
      src-modules/module/viz/masken/44310_maskeninfo.unl
  7. 2
      src-modules/module/viz/masken/44340_maskeninfo.unl
  8. 2
      src-modules/module/viz/masken/44510_maskeninfo.unl
  9. 25
      src-modules/module/viz/masken/44570_felderinfo.unl
  10. 1
      src-modules/module/viz/masken/44570_masken_felder_bez.unl
  11. 2
      src-modules/module/viz/masken/44600_maskeninfo.unl
  12. 44
      src-modules/module/viz/masken/44630_maskeninfo.unl
  13. 16
      src-modules/module/viz/masken/44720_felderinfo.unl
  14. 4
      src-modules/module/viz/masken/44720_maskeninfo.unl
  15. 4
      src-modules/module/viz/schluesseltabellen/customxmladd.sql
  16. 45
      src-modules/module/viz/schluesseltabellen/rpta_column_layout_sos_stud_zeitreihe_jahr_dashboard_fuellen.sql
  17. 2
      src-modules/module/viz/schluesseltabellen/studierende_datenblatt_dashboard.sql
  18. 109
      src-modules/module/viz/schluesseltabellen/sx_captions_fuellen.sql
  19. 4
      src-modules/module/viz/schluesseltabellen/sx_repository_customxmladd.unl
  20. 230
      src-modules/module/viz/schluesseltabellen/viz_chart.unl
  21. 1
      src-modules/module/viz/schluesseltabellen/viz_chart_fuellen.sql
  22. 3
      src-modules/module/viz/schluesseltabellen/viz_chart_unload.x
  23. 3
      src-modules/module/viz/schluesseltabellen/viz_chart_upload.x
  24. 43
      src-modules/module/viz/schluesseltabellen/viz_properties_echarts_sankey_fuellen.sql
  25. 11
      superx/style/sx_viz_muster.css
  26. 243
      superx/xml/js/viz/viz_viewer.js
  27. 50
      superx/xml/viz_components.xsl

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

@ -139,6 +139,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" /> @@ -139,6 +139,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" />
<comment>1=ja, d.h. von der Hochschule angepaßt, 0=nein, d.h.
Auslieferung der Software</comment>
</column>
<column name="js_handler" type="VARCHAR" size="255" default="" notnull="" description="JS-Handler" ><comment>JS-Datei für optionale Methode zum Aufruf</comment></column>
</columns>
<primaryKeys><rs>
<row>
@ -985,6 +986,7 @@ booklet_stylesheet VARCHAR(255) @@ -985,6 +986,7 @@ booklet_stylesheet VARCHAR(255)
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/sachgebiete_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/viz_colorscheme_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/sx_captions_fuellen.sql" database=""/>
@ -1142,7 +1144,8 @@ chart_width INTEGER default 600 , @@ -1142,7 +1144,8 @@ chart_width INTEGER default 600 ,
chart_height INTEGER default 400 ,
chart_miniature_width INTEGER default 200 ,
chart_miniature_height INTEGER default 100 ,
is_custom SMALLINT
is_custom SMALLINT,
js_handler varchar(255)
)
;" scriptfile="" database=""/>
@ -1196,6 +1199,7 @@ booklet_stylesheet VARCHAR(255) @@ -1196,6 +1199,7 @@ booklet_stylesheet VARCHAR(255)
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/viz_dashboard_tab_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/viz_colorscheme_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/viz_chart_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/sx_captions_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/konstanten_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/sachgebiete_fuellen.sql" database=""/>
@ -1239,6 +1243,9 @@ booklet_stylesheet VARCHAR(255) @@ -1239,6 +1243,9 @@ booklet_stylesheet VARCHAR(255)
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_geschl_dashboard_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_zeitreihe_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_zeitreihe_dashboard_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_zeitreihe_jahr_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_zeitreihe_jahr_dashboard_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_fak_dashboard_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_abgrp_dashboard_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_la_fuellen.sql" database=""/>
@ -1318,6 +1325,7 @@ mode="full"> @@ -1318,6 +1325,7 @@ mode="full">
<customfield name="chart_height" visibleSize="10" nullFieldValue="" />
<customfield name="chart_miniature_width" visibleSize="10" nullFieldValue="" />
<customfield name="chart_miniature_height" visibleSize="10" nullFieldValue="" />
<customfield name="js_handler" visibleSize="50" nullFieldValue="" />
<customfield name="chart_active" nullFieldValue="" visibleSize="30" />
<customfield name="is_custom" nullFieldValue="" visibleSize="30" />

2
src-modules/module/viz/masken/44130_maskeninfo.unl

@ -1 +1 @@ @@ -1 +1 @@
44130^Studierende nach Alter (Boxplot)^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Datenblatt Studierendenstatistik^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where tid=<<Spaltenlayout>>;^
44130^Studierende nach Alter (Boxplot)^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Datenblatt Studierendenstatistik^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where uniquename=<<Spaltenlayout>>;^

2
src-modules/module/viz/masken/44220_maskeninfo.unl

@ -1 +1 @@ @@ -1 +1 @@
44220^Studierende nach Geschlecht^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Geschlecht in verschiedenen Visualisierungen (z.B. Tortendiagramm)^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where tid=<<Spaltenlayout>>;^
44220^Studierende nach Geschlecht^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Geschlecht in verschiedenen Visualisierungen (z.B. Tortendiagramm)^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where uniquename=<<Spaltenlayout>>;^

2
src-modules/module/viz/masken/44250_maskeninfo.unl

@ -1 +1 @@ @@ -1 +1 @@
44250^Studierende nach Staaten^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Staat (Staatsangehörigkeit, Staat der Hochschulzugangsberechtigung) als Datenblatt oder Weltkarte^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where tid=<<Spaltenlayout>>;^
44250^Studierende nach Staaten^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Staat (Staatsangehörigkeit, Staat der Hochschulzugangsberechtigung) als Datenblatt oder Weltkarte^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where uniquename=<<Spaltenlayout>>;^

2
src-modules/module/viz/masken/44280_maskeninfo.unl

@ -1 +1 @@ @@ -1 +1 @@
44280^Studierende nach Fakultät^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Fakultät mit verschiedenen Visualisierungen (z.B. Tortendiagramm)^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where tid=<<Spaltenlayout>>;^
44280^Studierende nach Fakultät^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Fakultät mit verschiedenen Visualisierungen (z.B. Tortendiagramm)^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where uniquename=<<Spaltenlayout>>;^

2
src-modules/module/viz/masken/44310_maskeninfo.unl

@ -1 +1 @@ @@ -1 +1 @@
44310^Studierende nach Abschluss^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Fakultät mit verschiedenen Visualisierungen (z.B. Tortendiagramm)^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where tid=<<Spaltenlayout>>;^
44310^Studierende nach Abschluss^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Fakultät mit verschiedenen Visualisierungen (z.B. Tortendiagramm)^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where uniquename=<<Spaltenlayout>>;^

2
src-modules/module/viz/masken/44340_maskeninfo.unl

@ -1 +1 @@ @@ -1 +1 @@
44340^Studierende nach Bildungstyp^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Bildungsinländer / -ausländer^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where tid=<<Spaltenlayout>>;^
44340^Studierende nach Bildungstyp^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Bildungsinländer / -ausländer^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where uniquename=<<Spaltenlayout>>;^

2
src-modules/module/viz/masken/44510_maskeninfo.unl

@ -1 +1 @@ @@ -1 +1 @@
44510^Studierende nach Jahr^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Geschlecht in verschiedenen Visualisierungen (z.B. Tortendiagramm)^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where tid=<<Spaltenlayout>>;^
44510^Studierende nach Jahr^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Geschlecht in verschiedenen Visualisierungen (z.B. Tortendiagramm)^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where uniquename=<<Spaltenlayout>>;^

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

@ -1,17 +1,18 @@ @@ -1,17 +1,18 @@
44570^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';^
44571^Seit Semester^3^0^0^140^80^1^integer^30^0^1^<<SQL>> --freemarker template \
44570^Köpfe oder Fälle ?^1^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';^
44571^Seit Semester^23^0^0^140^80^1^integer^30^0^1^<<SQL>> --freemarker template \
select tid, eintrag from semester \
<#if K_VIZ_ZEITR_SEM_ANZ?exists>\
where sem_beginn >= today()-(182*${K_VIZ_ZEITR_SEM_ANZ} )\
</#if>\
and sem_beginn <=today()\
order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^
44572^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';^
44572^Stichtag^21^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';^
44573^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^^
44574^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.';^
44575^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';^
44574^Status^60^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.';^
44575^Hörerstatus^65^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';^
44576^viz_label_Status^50^350^-1^150^180^1^char^200^0^8^^{InputCheck:matrikelnummern}^^
44577^bis Fachsemester^35^350^-1^140^100^1^integer^30^0^13^^^^
44579^Bis Semester^4^350^-1^140^80^1^integer^30^0^1^<<SQL>> --freemarker template \
44579^Bis Semester^24^350^-1^140^80^1^integer^30^0^1^<<SQL>> --freemarker template \
select tid, eintrag from semester \
<#if K_VIZ_ZEITR_SEM_ANZ?exists>\
where sem_beginn >= today()-(182*${K_VIZ_ZEITR_SEM_ANZ} )\
@ -20,7 +21,7 @@ and sem_beginn <=today()\ @@ -20,7 +21,7 @@ and sem_beginn <=today()\
order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^
44580^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;^^^
44581^Geschlecht^37^0^0^140^80^1^integer^30^0^999^<<SQL>> SELECT apnr,druck FROM cif where key = 9003 and apnr between 1 and 4 order by 1;^^^
44583^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;^^^
44583^Studiengang^30^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;^^^
44584^Jahr^110^0^0^140^80^1^integer^30^0^13^ ^ ^ ^
44585^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=44570 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=44570 order by ord limit 1^
44586^Grafiktitel^1010^0^0^100^100^1^char^255^0^0^ ^{InputCheck:disabled}^ ^
@ -37,8 +38,8 @@ order by sortnr, caption\ @@ -37,8 +38,8 @@ order by sortnr, caption\
FROM rpta_column_layout \
where resultset_id in (select R.tid from rpta_resultset R where R.uniquename='sos_stud_astat_dashboard'\
and R.systeminfo_id=7) and uniquename='sos_stud_sem_dashboard';^
44589^Semestertyp^5^350^-1^140^80^1^integer^255^0^1^<<SQL>> select 1,'nur Sommersemester' from xdummy union select 2,'nur Wintersemester' from xdummy^Eintrag^<<SQL>> select 2,'nur Wintersemester' from xdummy^
44590^##line##^30^0^0^100^100^1^char^5000^0^8^^^1^
44591^Abschluss^7^0^0^100^200^3^char^1500^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Abschluss-Sicht' order by 3,2;^ ^ ^
44592^Matrikel-Nr.^20^350^-1^150^180^1^char^200^0^13^^{InputCheck:matrikelnummern}^^
44593^##line##^40^0^0^100^100^1^char^5000^0^8^^^1^
44589^Semestertyp^25^350^-1^140^80^1^integer^255^0^1^<<SQL>> select 1,'nur Sommersemester' from xdummy union select 2,'nur Wintersemester' from xdummy^Eintrag^<<SQL>> select 2,'nur Wintersemester' from xdummy^
44590^viz_label_Zeitraum^20^350^-1^150^180^1^char^200^0^8^^{InputCheck:matrikelnummern}^^
44591^Abschluss^35^0^0^100^200^3^char^1500^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Abschluss-Sicht' order by 3,2;^ ^ ^
44592^viz_label_Studiengang^29^350^-1^150^180^1^char^200^0^8^^{InputCheck:matrikelnummern}^^
44593^viz_label_koepfe_faelle^0^350^-1^150^180^1^char^200^0^8^^{InputCheck:matrikelnummern}^^

1
src-modules/module/viz/masken/44570_masken_felder_bez.unl

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
44570^44573^
44570^44574^
44570^44575^
44570^44576^
44570^44577^
44570^44579^
44570^44580^

2
src-modules/module/viz/masken/44600_maskeninfo.unl

@ -1 +1 @@ @@ -1 +1 @@
44600^Studierende nach Region^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Landkreis/Bundesland^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where tid=<<Spaltenlayout>>;^
44600^Studierende nach Region^<sximport>select select_stmt from maskeninfo where tid=48000</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48000</sximport>^Studienfach^Anzahl bzw. Anteil^Ausgabe der Studierenden nach Landkreis/Bundesland^<sximport>select cleanup_stmt from maskeninfo where tid=48000</sximport>^^2^850^540^^1^<<SQL>>SELECT description FROM rpta_column_layout where uniquename=<<Spaltenlayout>>;^

44
src-modules/module/viz/masken/44630_maskeninfo.unl

@ -57,42 +57,6 @@ FROM viz_dashboard_tab T, viz_dashboard D\ @@ -57,42 +57,6 @@ FROM viz_dashboard_tab T, viz_dashboard D\
\
<#assign stg_filter = " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> \
\
<#assign kennzahlen = [\
{"name":"Studierende", \
"selectClause":"sum(summe) as summe", \
"factTable":"sos_stg_aggr",\
"whereClause":"studiengang_nr=1\
and fach_nr=1\
and stichtag=(select I.tid from sos_stichtag I where I.appl_key='0')",\
"optionalFilterName":"",\
"optionalFilterValue":"",\
"linkMaskeninfoTID":"44190",\
"booklet_stylesheet":"viz_report_44190_xmlsource.jrxml"\
},\
{"name":"Studienanfänger*innen im 1. HS", \
"selectClause":"sum(summe) as summe", \
"factTable":"sos_stg_aggr",\
"whereClause":"studiengang_nr=1\
and fach_nr=1\
and stichtag=(select I.tid from sos_stichtag I where I.appl_key='0') and "+SOS_HSSEM_1,\
"optionalFilterName":"Filter Studierende",\
"optionalFilterValue":"SOS_HSSEM_1",\
"linkMaskeninfoTID":"44190",\
"booklet_stylesheet":"viz_report_44190_xmlsource.jrxml"\
},\
{"name":"Studienanfänger*innen im 1. FS", \
"selectClause":"sum(summe) as summe", \
"factTable":"sos_stg_aggr",\
"whereClause":"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",\
"optionalFilterName":"bis Fachsemester",\
"optionalFilterValue":"1",\
"linkMaskeninfoTID":"44190",\
"booklet_stylesheet":"viz_report_44190_xmlsource.jrxml"\
}\
\
] />\
\
create temp table tmp_erg(\
ord integer,\
@ -118,7 +82,11 @@ gridtitle_felderinfo_id\ @@ -118,7 +82,11 @@ gridtitle_felderinfo_id\
)\
select 1,\
'${VIZ_HS_KUERZEL} ${dashboard.caption}' ,\
<#if dashboard.maskeninfo_id?exists>\
${dashboard.maskeninfo_id},\
<#else>\
null::integer,\
</#if>\
'${dashboard.booklet_stylesheet}',\
val('${dashboard.gridtitle_felderinfo_id}')\
from xdummy;\
@ -138,7 +106,11 @@ hidden_booklet_stylesheet\ @@ -138,7 +106,11 @@ hidden_booklet_stylesheet\
)\
select ${ord},'${kennzahl.name}',\
${kennzahl.select_clause},\
<#if kennzahl.maskeninfo_id?exists && kennzahl.maskeninfo_id?string !="" >\
${kennzahl.maskeninfo_id},\
<#else>\
null::integer,\
</#if>\
'${kennzahl.optional_filter_name}',\
'${kennzahl.optional_filter_value}',\
'${kennzahl.booklet_stylesheet}'\

16
src-modules/module/viz/masken/44720_felderinfo.unl

@ -1,24 +1,24 @@ @@ -1,24 +1,24 @@
44720^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^ ^<<SQL>> select apnr, eintrag from koepfe_oder_faelle where eintrag='Fälle';^
44721^Seit Semester^3^0^0^140^80^1^integer^30^0^1^<<SQL>> --freemarker template \
44720^Köpfe oder Fälle ?^4^0^0^140^150^1^sql^70^0^1^<<SQL>> select apnr, eintrag from koepfe_oder_faelle order by 2^ ^<<SQL>> select apnr, eintrag from koepfe_oder_faelle where eintrag='Fälle';^
44721^Seit Semester^23^0^0^140^80^1^integer^30^0^1^<<SQL>> --freemarker template \
select tid, eintrag from semester \
<#if K_VIZ_ZEITR_SEM_ANZ?exists>\
where sem_beginn >= today()-(182*${K_VIZ_ZEITR_SEM_ANZ} )\
</#if>\
and sem_beginn <=today()\
order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today()-(4*365) between sem_beginn and sem_ende;^
44722^Stichtag^1^350^-1^140^100^1^sql^30^0^13^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Prüfungen';^^<<SQL>> 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^13^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Prüfungen';^^<<SQL>> 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^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^hidden^^
44724^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.';^
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^<<SQL>> select apnr, eintrag from hoererstatus order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from hoererstatus where eintrag='alle';^
44727^bis Fachsemester^35^350^-1^140^100^1^integer^30^0^13^^^^
44729^Bis Semester^4^350^-1^140^80^1^integer^30^0^1^<<SQL>> --freemarker template \
44729^Bis Semester^24^350^-1^140^80^1^integer^30^0^1^<<SQL>> --freemarker template \
select tid, eintrag from semester \
<#if K_VIZ_ZEITR_SEM_ANZ?exists>\
where sem_beginn >= today()-(182*${K_VIZ_ZEITR_SEM_ANZ} )\
</#if>\
and sem_beginn <=today()\
order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^
44730^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;^hidden^^
44730^viz_label_koepfe_faelle^1^350^-1^150^180^1^char^200^0^8^^{InputCheck:matrikelnummern}^^
44731^Geschlecht^37^0^0^140^80^1^integer^30^0^999^<<SQL>> SELECT apnr,druck FROM cif where key = 9003 and apnr between 1 and 4 order by 1;^^^
44733^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;^^^
44734^Jahr^110^0^0^140^80^1^integer^30^0^13^ ^ ^ ^
@ -36,8 +36,8 @@ order by sortnr, caption\ @@ -36,8 +36,8 @@ order by sortnr, caption\
FROM rpta_column_layout \
where resultset_id in (select R.tid from rpta_resultset R where R.uniquename='rpta_sos_lab_aggr'\
and R.systeminfo_id=7) and uniquename='rpta_sos_lab_aggr_sem';^
44739^Semestertyp^5^350^-1^140^80^1^integer^255^0^1^<<SQL>> select 1,'nur Sommersemester' from xdummy union select 2,'nur Wintersemester' from xdummy^Eintrag^ ^
44739^Semestertyp^25^350^-1^140^80^1^integer^255^0^1^<<SQL>> select 1,'nur Sommersemester' from xdummy union select 2,'nur Wintersemester' from xdummy^Eintrag^ ^
44740^##line##^30^0^0^100^100^1^char^5000^0^8^^^1^
44741^Abschluss^7^0^0^100^200^3^char^1500^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Abschluss-Sicht' order by 3,2;^ ^ ^
44742^Matrikel-Nr.^20^350^-1^150^180^1^char^200^0^13^^{InputCheck:matrikelnummern}^^
44742^viz_label_Zeitraum^20^350^-1^150^180^1^char^200^0^8^^{InputCheck:matrikelnummern}^^
44743^##line##^40^0^0^100^100^1^char^5000^0^8^^^1^

4
src-modules/module/viz/masken/44720_maskeninfo.unl

@ -106,7 +106,7 @@ and substring('' || tid from 5 for 1)='<<Semestertyp>>'\ @@ -106,7 +106,7 @@ and substring('' || tid from 5 for 1)='<<Semestertyp>>'\
\
<#assign filter="<<Köpfe oder Fälle ?>>\
/* and sem_der_pruefung = <<Semester>> */\
/* and stichtag = <<Stichtag>> */\
/* and stichtag = <<Stichtag Prüfungen>> */\
/* and geschlecht = <<Geschlecht>> */\
/* and fach_sem_zahl <= <<bis Fachsemester>> */\
/* and substring('' || sem_der_pruefung from 5 for 1)='<<Semestertyp>>' */\
@ -254,4 +254,4 @@ Column CID=0 heading_text="${column.caption}" center_heading explanation="${colu @@ -254,4 +254,4 @@ Column CID=0 heading_text="${column.caption}" center_heading explanation="${colu
width=${column.visible_width} text_size=60\
</#if>\
</#foreach>\
@@@^Altersgruppe^Anzahl^Studienanfänger_innen als Zeitreihe, nach Gesschlecht und Fakultät in verschiedenen Visualisierungen^drop table if exists tmp_stud2; drop table if exists tmp_stud3;^^3^700^360^0^1^^
@@@^Altersgruppe^Anzahl^Studienanfänger_innen als Zeitreihe, nach Gesschlecht und Fakultät in verschiedenen Visualisierungen^drop table if exists tmp_stud2; drop table if exists tmp_stud3;^^3^700^360^0^1^<<SQL>>SELECT description FROM rpta_column_layout where uniquename=<<Spaltenlayout>>;^

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

@ -128,7 +128,8 @@ V.chart_width, @@ -128,7 +128,8 @@ V.chart_width,
V.chart_height,
V.chart_miniature_width,
V.chart_miniature_height,
V.maskeninfo_id
V.maskeninfo_id,
V.js_handler
FROM viz_chart V, viz_renderer R
where R.tid=V.renderer_id
and chart_active=1
@ -312,6 +313,7 @@ order by 2,5,3 @@ -312,6 +313,7 @@ order by 2,5,3
chart_miniature_width="${ch.chart_width}"
chart_miniature_height="${ch.chart_height}"
maskeninfo_id="${ch.maskeninfo_id}"
js_handler="${ch.js_handler}"
/>
</#foreach>
</#if>

45
src-modules/module/viz/schluesseltabellen/rpta_column_layout_sos_stud_zeitreihe_jahr_dashboard_fuellen.sql

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
--freemarker template
<#include "RPTA-Makros"/>
<sqlvars>
<sqlvar name="rpta_installed">
select count(*) from systeminfo where tid=330;
</sqlvar>
</sqlvars>
<#assign rpta_column_layout =
{"uniquename":"sos_stud_dashboard_jahr",
"caption":"Studierende nach Studienjahr",
"rpta_resultset":"sos_stud_astat_dashboard",
"whereclause":"",
"description":"Studierende nach Studienjahr"
}
/>
<#assign rpta_columns = [
{"uniquename":"jahr",
"caption":"Jahr",
"srcfieldname":"sem_rueck_beur_ein",
"targetfieldname":"jahr",
"column_type":"logicalColumn",
"col_function":"get_akad_jahr(sem_rueck_beur_ein,''A'')",
"is_visible":"1",
"format_code":"",
"visible_size":"5",
"is_aggregate":"0",
"description":"(WS + darauffolgendes SS)"
},
{"uniquename":"summe",
"caption":"Anzahl der Studierenden",
"srcfieldname":"summe",
"column_type":"physicalColumn",
"col_function":"sum",
"is_visible":"1",
"visible_size":"5",
"is_aggregate":"1",
"description":"Summe der Studierenden"
}
]
/>
<#if rpta_installed==1>
<@rpta_column_layout_fuellen />
</#if>

2
src-modules/module/viz/schluesseltabellen/studierende_datenblatt_dashboard.sql

@ -385,7 +385,7 @@ left outer join ${logical_field.join_field} @@ -385,7 +385,7 @@ left outer join ${logical_field.join_field}
';
--whereclause erstmal primitiv
update tmp_rpta_resultset set whereclause = 'and stichtag in (select tid from sos_stichtag where appl_key=''0'') and hrst in (select apnr from sos_k_hrst HRST where HRST.astat in (''1'',''2'')) and kz_rueck_beur_ein in (1,2,3)';
update tmp_rpta_resultset set whereclause = 'and stichtag in (select tid from sos_stichtag where appl_key in (''0'',''1'')) and hrst in (select apnr from sos_k_hrst HRST where HRST.astat in (''1'',''2'')) and kz_rueck_beur_ein in (1,2,3)';
select * into temp tmp_rs1
from rpta_resultset
;

109
src-modules/module/viz/schluesseltabellen/sx_captions_fuellen.sql

@ -0,0 +1,109 @@ @@ -0,0 +1,109 @@
--freemarker template
<#if SQLdialect='Postgres'>
select setval('sx_captions_tid_seq',(select max(tid) from sx_captions));
</#if>
<#assign sachgebiete_id="16" />
<#assign table_name="felderinfo" />
<#assign locale="de" />
<#assign sx_captions = [
{"field_name":"viz_label_koepfe_faelle",
"contents_short":"Studierendenzählung",
"contents_long":"Dient zur Einschränkung Köpfe, Fälle etc.",
"doku_link":"",
"export_to_glossar":"1"} ,
{"field_name":"viz_label_Zeitraum",
"contents_short":"Zeitraum",
"contents_long":"Dient zur Einschränkung Semester, Jahr etc.",
"doku_link":"",
"export_to_glossar":"1"} ,
{"field_name":"viz_label_Studiengang",
"contents_short":"Studiengang",
"contents_long":"Dient zur Einschränkung Studiengang etc.",
"doku_link":"",
"export_to_glossar":"1"} ,
{"field_name":"viz_label_Status",
"contents_short":"Filter nach Status",
"contents_long":"Dient zur Einschränkung Status",
"doku_link":"",
"export_to_glossar":"1"}
] />
--Ab hier braucht man nichts ändern:
CREATE TEMP TABLE tmp_sx_captions
(
id char(200),
table_name char(200),
field_name char(200),
record_no integer,
locale char(10),
contents_short char(255),
contents_long text,
equalitystatus smallint,
sachgebiete_id integer,
doku_link varchar(255),
export_to_glossar integer
);
<#foreach caption in sx_captions>
insert into tmp_sx_captions
(
id,
table_name,
field_name,
record_no,
locale,
contents_short,
contents_long,
equalitystatus,
doku_link,
export_to_glossar,
sachgebiete_id
)
select
null,
'${table_name}',
'${caption.field_name}',
null,
'${locale}',
'${caption.contents_short}',
'${caption.contents_long}',
null,
'${caption.doku_link}',
${caption.export_to_glossar},
${sachgebiete_id}
from xdummy;
</#foreach>
delete from tmp_sx_captions where table_name = '${table_name}' and (field_name in (select field_name from sx_captions));
insert into sx_captions
(
id,
table_name,
field_name,
record_no,
locale,
contents_short,
contents_long,
equalitystatus,
doku_link,
export_to_glossar,
sachgebiete_id
)
select
id,
table_name,
field_name,
record_no,
locale,
contents_short,
contents_long,
equalitystatus,
doku_link,
export_to_glossar::integer,
sachgebiete_id
from tmp_sx_captions;

4
src-modules/module/viz/schluesseltabellen/sx_repository_customxmladd.unl

@ -128,7 +128,8 @@ V.chart_width,\ @@ -128,7 +128,8 @@ V.chart_width,\
V.chart_height,\
V.chart_miniature_width,\
V.chart_miniature_height,\
V.maskeninfo_id\
V.maskeninfo_id,\
replace(V.js_handler,'"','§') as js_handler_escaped\
FROM viz_chart V, viz_renderer R\
where R.tid=V.renderer_id\
and chart_active=1\
@ -312,6 +313,7 @@ order by 2,5,3\ @@ -312,6 +313,7 @@ order by 2,5,3\
chart_miniature_width="${ch.chart_width}"\
chart_miniature_height="${ch.chart_height}"\
maskeninfo_id="${ch.maskeninfo_id}"\
js_handler="${ch.js_handler_escaped}" \
/>\
</#foreach>\
</#if>\

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

File diff suppressed because one or more lines are too long

1
src-modules/module/viz/schluesseltabellen/viz_chart_fuellen.sql

@ -16,6 +16,7 @@ where uniquename in ( @@ -16,6 +16,7 @@ where uniquename in (
'STUDANF_GESCHL_PIE',
'STUDANF_HZB_LAND_BAR',
'STUDANF_JAHR_BAR',
'STUDANF_JAHR_LINE',
'STUDANF_KOHORTEN_BAR_Y_ECHART',
'STUDANF_KOHORTEN_BAR_Y_ECHART_INVERTED',
'STUDANF_SEM_LINE_TEXT',

3
src-modules/module/viz/schluesseltabellen/viz_chart_unload.x

@ -20,6 +20,7 @@ DOQUERY "select tid, @@ -20,6 +20,7 @@ DOQUERY "select tid,
chart_height,
chart_miniature_width,
chart_miniature_height,
is_custom from viz_chart where is_custom=0 order by uniquename" false ^ viz_chart.unl txt
is_custom,
js_handler from viz_chart where is_custom=0 order by uniquename" false ^ viz_chart.unl txt

3
src-modules/module/viz/schluesseltabellen/viz_chart_upload.x

@ -22,7 +22,8 @@ chart_width INTEGER default 600 , @@ -22,7 +22,8 @@ chart_width INTEGER default 600 ,
chart_height INTEGER default 400 ,
chart_miniature_width INTEGER default 200 ,
chart_miniature_height INTEGER default 100 ,
is_custom SMALLINT
is_custom SMALLINT,
js_handler TEXT
)
;"

43
src-modules/module/viz/schluesseltabellen/viz_properties_echarts_sankey_fuellen.sql

@ -0,0 +1,43 @@ @@ -0,0 +1,43 @@
--Freemarker Template
<#include "SQL_lingua_franca"/>
<#include "SuperX_general"/>
<#include "VIZ-Makros"/>
<sqlvars>
<sqlvar name="renderer">
select tid from viz_renderer where uniquename='echarts';
</sqlvar>
</sqlvars>
<#assign viz_types = [
{"uniquename":"echarts_sankey", "caption":"Sankey-Diagramm",
"orientation":"Z",
"description":"Flussiagramm",
"explanation":""}
]
/>
<#assign viz_type_properties = [
{"viz_property_uniquename":"dimension1",
"is_mandatory":"1"},
{"viz_property_uniquename":"dimension2",
"is_mandatory":"1"},
{"viz_property_uniquename":"measure1",
"is_mandatory":"1"},
{"viz_property_uniquename":"nodeGap"}
]
/>
<@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>

11
superx/style/sx_viz_muster.css

@ -465,3 +465,14 @@ html, body { @@ -465,3 +465,14 @@ html, body {
overflow-y: auto;
z-index: 700; /*für Anzeige über Content*/
}
.subheaderMaskDialogs
{background-color:#cccccc;
font-weight:bolder;
font-size:1.2rem;
/* margin-left:0;*/
margin-top:0.2em;
margin-bottom:0.2em;
margin-right:0px;
padding-left:0.5em;
}

243
superx/xml/js/viz/viz_viewer.js

@ -163,7 +163,8 @@ function openModalCardDetail(ergebniselementOrdnr) @@ -163,7 +163,8 @@ function openModalCardDetail(ergebniselementOrdnr)
function fillEchartsDataSet(myRs,myRsMetaData,currentChartModel)
{
var dataset =new Array();
var chartType=currentChartModel.chartElements[0].vizTypeUniquename;
var chartType=(currentChartModel!=null)?currentChartModel.chartElements[0].vizTypeUniquename : "echarts_generic";
//Identify dimensions and measures:
switch (chartType) {
case "echarts_pie":
@ -179,7 +180,9 @@ function fillEchartsDataSet(myRs,myRsMetaData,currentChartModel) @@ -179,7 +180,9 @@ function fillEchartsDataSet(myRs,myRsMetaData,currentChartModel)
var seriesSelectionColumn=getChartPropertyValue(currentChartModel.chartPropertiesUsed,"series_selection_column");
dataset=fillEchartsDataSetSeries(myRs,myRsMetaData,dimension1Fldname,seriesSelectionLine,seriesSelectionColumn);
break;
default:
case "echarts_generic":
dataset=fillEchartsDataSetSimpleCopy(myRs,myRsMetaData);
break; default:
dataset=fillEchartsDataSetSimpleCopy(myRs,myRsMetaData);
break;
}
@ -1594,7 +1597,11 @@ function renderEChart2(currentChartModel,chartDiv,ergebniselementOrdnr,chartTitl @@ -1594,7 +1597,11 @@ function renderEChart2(currentChartModel,chartDiv,ergebniselementOrdnr,chartTitl
break;
case "echarts_pie":
option=getEchartOptionsPie(currentChartModel,myDataset,titleText);
option=getEchartOptionsPie(currentChartModel,myDataset);
break;
case "echarts_sankey":
option=getEchartOptionsSankey(currentChartModel,myDataset);
break;
case "echarts_native":
@ -2108,6 +2115,234 @@ return option; @@ -2108,6 +2115,234 @@ return option;
}
function getEchartOptionsSankey(currentChartModel,myDataset)
{
var measure1Fldname=getChartElementPropertyValueFromModel(currentChartModel,"1","measure1");
var dimension1Fldname=getChartElementPropertyValueFromModel(currentChartModel,"1","dimension1");
var dimension2Fldname=getChartElementPropertyValueFromModel(currentChartModel,"1","dimension2");
var titleText=getChartPropertyValue(currentChartModel.chartPropertiesUsed,"caption");
var subtitleText=getChartPropertyValue(currentChartModel.chartPropertiesUsed,"subtitle");
var scheme = getChartPropertyValue(currentChartModel.chartPropertiesUsed,"schemeArray");
var myPalette=getPaletteArray(scheme,"");
/*const sourceData = [
{"rownr":1,"pj_ba_str":"2023","pj_ba_sem_von_str":"WiSe 2022/2023","pj_ba_sem_bis_str":"SoSe 2023","ba_abschluss_grp_str":"Bachelor","ba_abschluesse_summe":1964,"ma_sem_von_str":"WiSe 2022/2023","ma_sem_bis_str":"WiSe 2024/2025","ma_abschluss_grp_str":"LA Master","ma_anfaenger_summe":2,"ba_ma_ueberg_quote":0},
{"rownr":2,"pj_ba_str":"2023","pj_ba_sem_von_str":"WiSe 2022/2023","pj_ba_sem_bis_str":"SoSe 2023","ba_abschluss_grp_str":"Bachelor","ba_abschluesse_summe":1964,"ma_sem_von_str":"WiSe 2022/2023","ma_sem_bis_str":"WiSe 2024/2025","ma_abschluss_grp_str":"Master","ma_anfaenger_summe":706,"ba_ma_ueberg_quote":0.36},
{"rownr":3,"pj_ba_str":"2023","pj_ba_sem_von_str":"WiSe 2022/2023","pj_ba_sem_bis_str":"SoSe 2023","ba_abschluss_grp_str":"Bachelor","ba_abschluesse_summe":1964,"ma_sem_von_str":"WiSe 2022/2023","ma_sem_bis_str":"WiSe 2024/2025","ma_abschluss_grp_str":"kein Master","ma_anfaenger_summe":1256,"ba_ma_ueberg_quote":0.64},
{"rownr":4,"pj_ba_str":"2023","pj_ba_sem_von_str":"WiSe 2022/2023","pj_ba_sem_bis_str":"SoSe 2023","ba_abschluss_grp_str":"LA Bachelor","ba_abschluesse_summe":1392,"ma_sem_von_str":"WiSe 2022/2023","ma_sem_bis_str":"WiSe 2024/2025","ma_abschluss_grp_str":"LA Master","ma_anfaenger_summe":1258,"ba_ma_ueberg_quote":0.9},
{"rownr":5,"pj_ba_str":"2023","pj_ba_sem_von_str":"WiSe 2022/2023","pj_ba_sem_bis_str":"SoSe 2023","ba_abschluss_grp_str":"LA Bachelor","ba_abschluesse_summe":1392,"ma_sem_von_str":"WiSe 2022/2023","ma_sem_bis_str":"WiSe 2024/2025","ma_abschluss_grp_str":"Master","ma_anfaenger_summe":21,"ba_ma_ueberg_quote":0.02},
{"rownr":6,"pj_ba_str":"2023","pj_ba_sem_von_str":"WiSe 2022/2023","pj_ba_sem_bis_str":"SoSe 2023","ba_abschluss_grp_str":"LA Bachelor","ba_abschluesse_summe":1392,"ma_sem_von_str":"WiSe 2022/2023","ma_sem_bis_str":"WiSe 2024/2025","ma_abschluss_grp_str":"kein Master","ma_anfaenger_summe":113,"ba_ma_ueberg_quote":0.08}
];*/
const sourceData =myDataset.source;
// DEBUG: Zeige die Rohdaten an
console.log('DATEN:', sourceData);
// Farbzuordnung (intensivere Töne für besseren Kontrast)
const colorMap = {
'Bachelor': '#3a5a2c',
'LA Bachelor': '#8a9e7a',
'Master': '#001e30',
'LA Master': '#5a7a90',
'kein Master': '#c0c8d0'
};
// ✅ Erstelle ein Map für die Gesamtwerte der Quellknoten (ba_abschluesse_summe)
const sourceTotalMap = new Map();
sourceData.forEach(row => {
const sourceName = row.ba_abschluss_grp_str;
const total = row.ba_abschluesse_summe;
if (!sourceTotalMap.has(sourceName)) {
sourceTotalMap.set(sourceName, total);
} else if (sourceTotalMap.get(sourceName) !== total) {
console.warn(` Inkonsequenter Gesamtwert für Quellknoten "${sourceName}": ${total} vs ${sourceTotalMap.get(sourceName)}`);
}
});
// DEBUG: Zeige die Quellgesamtwerte an
console.log('Gesamtwerte der Quellknoten (ba_abschluesse_summe):', Object.fromEntries(sourceTotalMap));
// ✅ Generiere die Links mit Farbverlauf (Gradienten)
const links = sourceData.map(row => {
const source = row.ba_abschluss_grp_str;
const target = row.ma_abschluss_grp_str;
const value = row.ma_anfaenger_summe;
const sourceColor = colorMap[source];
const targetColor = colorMap[target];
return {
source,
target,
value,
lineStyle: {
width: 2,
color: echartsSankeyCreateGradientColor(sourceColor, targetColor),
opacity: 0.3
}
};
});
// DEBUG: Zeige die generierten Links an
console.log('GENERIERTE LINKS mit Gradienten:', links);
// ECharts Option
var option = {
title: {
text: 'Übergang von Bachelor zu Master',
left: 'center',
textStyle: { fontSize: 16 }
},
tooltip: {
trigger: 'item',
triggerOn: 'mousemove',
formatter: function (params) {
if (params.dataType === 'node') {
const nodeName = params.name;
// Knotenfarbe als Tooltip-Farbe
const color = colorMap[nodeName] || '#ccc';
// Prüfe, ob der Knoten als Quelle oder Ziel vorkommt
const isSource = links.some(link => link.source === nodeName);
const isTarget = links.some(link => link.target === nodeName);
if (isSource && !isTarget) {
// Nur Quelle (links): Name + ba_abschluesse_summe
const total = sourceTotalMap.get(nodeName);
return `<span style="color:${color}; font-weight:bold">${nodeName}-Abschlüsse: ${total}`;
} else if (isTarget) {
// Ziel (rechts): Name + summierte ankommende Werte
const incomingValue = links
.filter(link => link.target === nodeName)
.reduce((sum, link) => sum + link.value, 0);
return `<span style="color:${color}; font-weight:bold">${nodeName}-Studiengänge: ${incomingValue}`;
} else {
return nodeName;
}
} else {
// Link-Tooltip
return params.data.source + ' --> ' + params.data.target + ': ' + params.data.value;
}
}
},
series: {
name: 'Bachelor-Master Übergänge',
type: 'sankey',
layout: 'none',
nodeGap: 25, // ← Erhöhter vertikaler Abstand
nodeWidth: 60, // ← Breite der Knoten
emphasis: {
focus: 'adjacency'
},
data: [
{
name: 'Bachelor',
itemStyle: { color: colorMap['Bachelor'] },
label: { position: 'left', show: true, fontSize: 12, color: '#333' }
},
{
name: 'LA Bachelor',
itemStyle: { color: colorMap['LA Bachelor'] },
label: { position: 'left', show: true, fontSize: 12, color: '#333' }
},
{
name: 'Master',
itemStyle: { color: colorMap['Master'] },
label: { position: 'right', show: true, fontSize: 12, color: '#333' }
},
{
name: 'LA Master',
itemStyle: { color: colorMap['LA Master'] },
label: { position: 'right', show: true, fontSize: 12, color: '#333' }
},
{
name: 'kein Master',
itemStyle: { color: colorMap['kein Master'] },
label: { position: 'right', show: true, fontSize: 12, color: '#333' }
}
],
links: links,
label: {
show: true,
fontSize: 12,
color: '#333'
},
lineStyle: {
width: 2,
color: 'source'
// , opacity: 0.9,
// curveness: 0.3
}
}
};
var option2 = {
dataset: {
source: myDataset
},
title: {
text: titleText,
subtext: subtitleText,
left: getChartPropertyValue(currentChartModel.chartPropertiesUsed,"title.left"), //"center",
top: getChartPropertyValue(currentChartModel.chartPropertiesUsed,"title.top"), //"top",
textStyle: {
fontSize: 20
},
subtextStyle: {
fontSize: 15
}
},
series: [
{
type: 'pie',// sunburst
/*encode: {
value: measure1Fldname,
name: dimension1Fldname
},*/
tooltip: {
trigger: "item"
},
stillShowZeroSum: false,
label: {
show: (getChartPropertyValue(currentChartModel.chartPropertiesUsed,"valueLabelShow")=="true")?true:false, //true
fontWeight:'bolder',
formatter: '{c}'
} ,
fontSize: 12,
radius: [getChartPropertyValue(currentChartModel.chartPropertiesUsed,"innerRadius"),getChartPropertyValue(currentChartModel.chartPropertiesUsed,"outerRadius")],// ['30%', '80%'], //1. Parameter inside radius, macht ihn zum Donut. 2.Parameter definiert den Anteil des Kreises am ganzen Viewport"
color: myPalette,
itemStyle: {
borderRadius: (getChartPropertyValue(currentChartModel.chartPropertiesUsed,"cornerRadiusRounded")=="true" ? [20, 5, 5, 10] :[]),
borderColor: '#fff',
borderWidth: 2
}
}
]
};
return option;
}
// ✅ Funktion: Erzeugt einen Farbverlauf von sourceColor zu targetColor
function echartsSankeyCreateGradientColor(sourceColor, targetColor) {
return {
type: 'linear',
x: 0, y: 0, x2: 1, y2: 0,
colorStops: [
{ offset: 0, color: sourceColor },
{ offset: 1, color: targetColor }
]
};
}
function getChartPropertyValue(propArray,propName)
{
var propertyValue="";
@ -2603,7 +2838,7 @@ function openKachelDetails(ergebniselementOrdnr,formName,maskeninfoTID,grafikUni @@ -2603,7 +2838,7 @@ function openKachelDetails(ergebniselementOrdnr,formName,maskeninfoTID,grafikUni
function exportVizBooklet(contenttype,stylesheet)
{
document.forms['Weiterverarbeitung'].stylesheet.value = stylesheet;
//document.forms['Weiterverarbeitung'].tablestylesheet.value = stylesheet;
document.forms['Weiterverarbeitung'].tablestylesheet.value = stylesheet;
document.forms['Weiterverarbeitung'].contenttype.value = contenttype;
document.forms['Weiterverarbeitung'].target = '_blank';
document.forms['Weiterverarbeitung'].submit();

50
superx/xml/viz_components.xsl

@ -333,6 +333,9 @@ vizTypeProperties.push(newVizTypeProperty); @@ -333,6 +333,9 @@ vizTypeProperties.push(newVizTypeProperty);
<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="importRendererLibs" />
<xsl:for-each select="/ergebnisse/ergebnis/ergebniselement/viz_charts/viz_chart[@js_handler !='']">
<script language="Javascript" type="text/javascript" src="{ @js_handler }" />
</xsl:for-each>
<!--<script language="JavaScript" type="text/javascript" src="../xml/js/viz/echarts.min.js"></script>-->
<script language="JavaScript" type="text/javascript" src="../xml/js/viz/viz_viewer.js"></script>
@ -670,13 +673,7 @@ var rsNr=0; @@ -670,13 +673,7 @@ var rsNr=0;
var myRenderer='</xsl:text>
<xsl:value-of select="viz_charts/viz_chart[@uniquename=$chart_uniquename]/@renderer" />
<xsl:text>';
</xsl:text>
<xsl:text><![CDATA[
var myChartModel=]]></xsl:text>
<xsl:value-of select="translate(viz_charts/viz_chart[@uniquename=$chart_uniquename]/@chartmodel,'§',$quote)" />
<xsl:text><![CDATA[;
myDiv="]]></xsl:text>
myDiv="</xsl:text>
<xsl:value-of select="concat('chartDiv',$ergebniselement_ordnr)" />
<xsl:text><![CDATA[";
rsNr=]]></xsl:text>
@ -684,23 +681,34 @@ rsNr=]]></xsl:text> @@ -684,23 +681,34 @@ rsNr=]]></xsl:text>
<xsl:text><![CDATA[;
chartTitle="]]></xsl:text>
<xsl:value-of select="$chart_title" />
<xsl:text><![CDATA[";
<xsl:text>";
</xsl:text>
<xsl:choose>
<xsl:when test="viz_charts/viz_chart[@uniquename=$chart_uniquename]/@js_handler !=''">
<xsl:text>
render_</xsl:text><xsl:value-of select="$chart_uniquename" /><xsl:text>("</xsl:text>
<xsl:value-of select="concat('chartDiv',$ergebniselement_ordnr)" />
<xsl:text>",rsNr,chartTitle);
</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text><![CDATA[
var myChartModel=]]></xsl:text>
<xsl:value-of select="translate(viz_charts/viz_chart[@uniquename=$chart_uniquename]/@chartmodel,'§',$quote)" />
<xsl:text>;
createChartsViewer(myChartModel,myDiv,rsNr,myRenderer,chartTitle);
</xsl:text>
<xsl:text><![CDATA[
myDiv="]]></xsl:text>
<!--<xsl:value-of select="concat('modalCardImage',$ergebniselement_ordnr)" />
<xsl:text>";
//Detailseite mit Legende:
myChartModelStr='Platzhalter d';
createEchartsViewer(myChartModel,myDiv,rsNr);
myDiv="</xsl:text>
-->
<xsl:value-of select="concat('modalCardDetailImage',$ergebniselement_ordnr)" />
<xsl:text>";
myChartModelStr='Platzhalter_dl';
createChartsViewer(myChartModel,myDiv,rsNr,myRenderer,chartTitle);
</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
@ -1430,6 +1438,10 @@ Platzhalter @@ -1430,6 +1438,10 @@ Platzhalter
<xsl:with-param name="feldart" select="$feldart"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$feldart='8'">
<p class="subheaderMaskDialogs"><xsl:value-of select="$feldcaption"/></p>
</xsl:when>
<xsl:otherwise><xsl:value-of select="concat('Feld ',$feldname,' ist nicht geeignet für Tabellenaufrufe')"/>
<br />
</xsl:otherwise>
@ -1587,7 +1599,7 @@ Platzhalter @@ -1587,7 +1599,7 @@ Platzhalter
<xsl:attribute name="value"><xsl:value-of select="/*/*/felder/feld [@varname = $Feldname]/value"/></xsl:attribute>
</input>
<div class="control is-expanded">
<input class="input is-small is-link is-fullwidth" style="font-size:1.1rem;font-weight:normal" type="label" readonly="true" name="{concat('label_',$FeldnameEscaped)}" id="{concat('label_',$FeldnameEscaped)}">
<input class="input is-small is-link is-fullwidth" type="label" readonly="true" name="{concat('label_',$FeldnameEscaped)}" id="{concat('label_',$FeldnameEscaped)}">
<xsl:attribute name="onclick"><xsl:value-of select="$jsCall"/>
</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="/*/*/felder/feld [@varname = $Feldname]/value_caption"/></xsl:attribute>
@ -1814,8 +1826,7 @@ Platzhalter @@ -1814,8 +1826,7 @@ Platzhalter
<xsl:variable name="currentTabNr" select="/ergebnisse/ergebnis[@ordnr='0']/felder/feld[@varname='Tabnr.']/value" />
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr='0']/ergebniselement/sqlerg/row">
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr='0']/ergebniselement/sqlerg/row[col[f_name='hidden_link_maskeninfo_id']/wert !='']">
<xsl:call-template name="tabBox">
<xsl:with-param name="tabNr" select="col[f_name='ord']/wert"/>
<xsl:with-param name="currentTabNr" select="$currentTabNr"/>
@ -1824,7 +1835,6 @@ Platzhalter @@ -1824,7 +1835,6 @@ Platzhalter
<xsl:with-param name="optional_filter_name" select="col[f_name='hidden_optional_filter_name']/wert" />
<xsl:with-param name="optional_filter_value" select="col[f_name='hidden_optional_filter_value']/wert" />
</xsl:call-template>
</xsl:for-each>
</ul>
<xsl:call-template name="vizGridTitle" >

Loading…
Cancel
Save