Compare commits

...

2 Commits

  1. 47
      src-modules/module/viz/conf/viz.xml
  2. 43
      src-modules/module/viz/schluesseltabellen/customxmladd.sql
  3. 10
      src-modules/module/viz/schluesseltabellen/rpta_column_layout_rpta_sos_lab_aggr_abgrp_zeitreihe_fuellen.sql
  4. 56
      src-modules/module/viz/schluesseltabellen/sx_repository.unl
  5. 359
      src-modules/module/viz/schluesseltabellen/sx_repository_customxmladd.unl
  6. 27
      src-modules/module/viz/schluesseltabellen/sx_repository_customxmladd_unload.sql
  7. 9
      src-modules/module/viz/schluesseltabellen/sx_repository_fuellen.sql
  8. 40
      src-modules/module/viz/schluesseltabellen/sx_repository_fuellen.x
  9. 1419
      src-modules/module/viz/schluesseltabellen/viz_chart.unl
  10. 59
      src-modules/module/viz/schluesseltabellen/viz_chart_fuellen.sql
  11. 46
      src-modules/module/viz/schluesseltabellen/viz_chart_unload.x
  12. 9
      src-modules/module/viz/schluesseltabellen/viz_chart_upload.x
  13. 2
      src-modules/module/viz/schluesseltabellen/viz_properties_echarts_line_bar_fuellen.sql
  14. 6
      src-modules/module/viz/upgrade/viz_upgrade_man.sql
  15. 374
      superx/style/sx_viz_muster.css
  16. 39
      superx/xml/js/viz/viz_assistent.js
  17. 37
      superx/xml/js/viz/viz_viewer.js
  18. 428
      superx/xml/viz_components.xsl
  19. 13
      superx/xml/viz_html_chart_viewer_grid.xsl

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

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE module SYSTEM "../../../conf/superx-module.dtd"> --> <!--<!DOCTYPE module SYSTEM "../../../conf/superx-module.dtd"> -->
<module name="viz" version="0.3b" sachgebiet_id="320" <module name="viz" version="0.3" sachgebiet_id="320"
sachgebiet="Visualisierungen" systeminfo_id="320" sachgebiet="Visualisierungen" systeminfo_id="320"
system="Visualisierungen" thema="Visualisierungen" thema_parent="Abfragen"> system="Visualisierungen" thema="Visualisierungen" thema_parent="Abfragen">
<database name="superx" system="superx"> <database name="superx" system="superx">
@ -134,8 +134,11 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" />
<column name="chart_height" type="INTEGER" size="10" default="400" notnull="" description="Höhe des Diagramms"><comment>in px</comment></column> <column name="chart_height" type="INTEGER" size="10" default="400" notnull="" description="Höhe des Diagramms"><comment>in px</comment></column>
<column name="chart_miniature_width" type="INTEGER" size="10" default="200" notnull="" description="Breite der Diagramm-Miniatur"><comment>in px</comment></column> <column name="chart_miniature_width" type="INTEGER" size="10" default="200" notnull="" description="Breite der Diagramm-Miniatur"><comment>in px</comment></column>
<column name="chart_miniature_height" type="INTEGER" size="10" default="100" notnull="" description="Höhe der Diagramm-Miniatur"><comment>in px</comment></column> <column name="chart_miniature_height" type="INTEGER" size="10" default="100" notnull="" description="Höhe der Diagramm-Miniatur"><comment>in px</comment></column>
<column name="is_custom" type="SMALLINT" size="255"
default="1" notnull="false" description="Grafik der Hochschule">
<comment>1=ja, d.h. von der Hochschule angepaßt, 0=nein, d.h.
Auslieferung der Software</comment>
</column>
</columns> </columns>
<primaryKeys><rs> <primaryKeys><rs>
<row> <row>
@ -180,6 +183,32 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[VIZ]" />
</indexes> </indexes>
</table>--> </table>-->
<table name="viz_type_property" thema="Visualisierungen" typ="Datentabelle"
releaseUnload="dist">
<columns><column name="tid" type ="SERIAL" size ="10" default ="" notnull ="true" ><comment>tid</comment></column>
<column name="viz_type_id" type ="INTEGER" size ="10" default ="" notnull ="false" ><comment>Diagrammtyp</comment></column>
<column name="viz_property_id" type ="INTEGER" size ="10" default ="" notnull ="false" ><comment>Eigenschaft der Visualisierung</comment></column>
<column name="is_mandatory" type ="SMALLINT" size ="5" default ="0" notnull ="false" ><comment>Pflichteingabe</comment></column>
<column name="sortnr" type ="SMALLINT" size ="5" default ="0" notnull ="false" ><comment>Sortiernr.</comment></column>
</columns>
<indexes></indexes>
<primaryKeys><rs>
<row>
<fld name='table_cat'></fld>
<fld name='table_schem'>public</fld>
<fld name='table_name'>viz_type_property</fld>
<fld name='column_name'>tid</fld>
<fld name='key_seq'>1</fld>
<fld name='pk_name'>viz_type_property_pkey</fld>
</row>
</rs></primaryKeys>
<foreignKeys><rs>
</rs></foreignKeys>
<importedKeys><rs>
</rs></importedKeys>
<privileges><rs>
</rs></privileges>
</table>
<table name="viz_property" thema="Administration" typ="Schlüsseltabelle" <table name="viz_property" thema="Administration" typ="Schlüsseltabelle"
releaseUnload="empty"> releaseUnload="empty">
<description>Schlüsseltabelle für Eigenschaften von Visualisieren</description> <description>Schlüsseltabelle für Eigenschaften von Visualisieren</description>
@ -655,13 +684,13 @@ parent="Visualisierungen">Abfragen zur Administration von Visualisierungen </the
<path>$VIZ_PFAD/masken</path> <path>$VIZ_PFAD/masken</path>
</src> </src>
</maske> </maske>
<maske tid="44020" name="Studierende Datenblatt (Teiltabelle)" thema="Visualisierungen"> <maske tid="44020" name="Studierende Datenblatt (Teiltabelle)" thema="">
<description>Teiltabelle für Makrobericht Studierende gesamt / 1. FS / 1.HS </description> <description>Teiltabelle für Makrobericht Studierende gesamt / 1. FS / 1.HS </description>
<src> <src>
<path>$VIZ_PFAD/masken</path> <path>$VIZ_PFAD/masken</path>
</src> </src>
</maske> </maske>
<maske tid="44070" name="Studierenden-Entwicklung" thema="Visualisierungen"> <maske tid="44070" name="Studierenden-Entwicklung" thema="">
<description>Makrobericht Studierende gesamt / 1. FS / 1.HS </description> <description>Makrobericht Studierende gesamt / 1. FS / 1.HS </description>
<src> <src>
<path>$VIZ_PFAD/masken</path> <path>$VIZ_PFAD/masken</path>
@ -757,7 +786,7 @@ parent="Visualisierungen">Abfragen zur Administration von Visualisierungen </the
<path>$VIZ_PFAD/masken</path> <path>$VIZ_PFAD/masken</path>
</src> </src>
</maske> </maske>
<maske tid="44690" name="Studierende, Absolvierende und Personal Dashboard" thema="Visualisierungen"> <maske tid="44690" name="Studierende, Absolvierende Dashboard" thema="Visualisierungen">
<description> </description> <description> </description>
<src> <src>
<path>$VIZ_PFAD/masken</path> <path>$VIZ_PFAD/masken</path>
@ -930,6 +959,7 @@ booklet_stylesheet VARCHAR(255)
</action> </action>
<action error="stop"> <action error="stop">
<loadtable refresh="true" delimiter="^" header="false" tabname="tmp_repository"><file path="$VIZ_PFAD/schluesseltabellen/sx_repository.unl"/></loadtable> <loadtable refresh="true" delimiter="^" header="false" tabname="tmp_repository"><file path="$VIZ_PFAD/schluesseltabellen/sx_repository.unl"/></loadtable>
<loadtable refresh="false" delimiter="^" header="false" tabname="tmp_repository"><file path="$VIZ_PFAD/schluesseltabellen/sx_repository_customxmladd.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="tmp_templates"><file path="$VIZ_PFAD/schluesseltabellen/fm_templates.unl"/></loadtable> <loadtable refresh="true" delimiter="^" header="false" tabname="tmp_templates"><file path="$VIZ_PFAD/schluesseltabellen/fm_templates.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="tmp_viz_dashboard"><file path="$VIZ_PFAD/schluesseltabellen/viz_dashboard.unl"/></loadtable> <loadtable refresh="true" delimiter="^" header="false" tabname="tmp_viz_dashboard"><file path="$VIZ_PFAD/schluesseltabellen/viz_dashboard.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="tmp_viz_dashboard_tab"><file path="$VIZ_PFAD/schluesseltabellen/viz_dashboard_tab.unl"/></loadtable> <loadtable refresh="true" delimiter="^" header="false" tabname="tmp_viz_dashboard_tab"><file path="$VIZ_PFAD/schluesseltabellen/viz_dashboard_tab.unl"/></loadtable>
@ -1107,7 +1137,8 @@ chart_active SMALLINT default 1 ,
chart_width INTEGER default 600 , chart_width INTEGER default 600 ,
chart_height INTEGER default 400 , chart_height INTEGER default 400 ,
chart_miniature_width INTEGER default 200 , chart_miniature_width INTEGER default 200 ,
chart_miniature_height INTEGER default 100 chart_miniature_height INTEGER default 100 ,
is_custom SMALLINT
) )
;" scriptfile="" database=""/> ;" scriptfile="" database=""/>
@ -1138,6 +1169,7 @@ booklet_stylesheet VARCHAR(255)
</action> </action>
<action error="stop"> <action error="stop">
<loadtable refresh="true" delimiter="^" header="false" tabname="tmp_repository"><file path="$VIZ_PFAD/schluesseltabellen/sx_repository.unl"/></loadtable> <loadtable refresh="true" delimiter="^" header="false" tabname="tmp_repository"><file path="$VIZ_PFAD/schluesseltabellen/sx_repository.unl"/></loadtable>
<loadtable refresh="false" delimiter="^" header="false" tabname="tmp_repository"><file path="$VIZ_PFAD/schluesseltabellen/sx_repository_customxmladd.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="tmp_templates"><file path="$VIZ_PFAD/schluesseltabellen/fm_templates.unl"/></loadtable> <loadtable refresh="true" delimiter="^" header="false" tabname="tmp_templates"><file path="$VIZ_PFAD/schluesseltabellen/fm_templates.unl"/></loadtable>
<loadtable refresh="true" delimiter="^" header="false" tabname="tmp_viz_chart"><file path="$VIZ_PFAD/schluesseltabellen/viz_chart.unl"/></loadtable> <loadtable refresh="true" delimiter="^" header="false" tabname="tmp_viz_chart"><file path="$VIZ_PFAD/schluesseltabellen/viz_chart.unl"/></loadtable>
<!--<loadtable refresh="true" delimiter="^" header="false" tabname="viz_type"><file path="$VIZ_PFAD/schluesseltabellen/viz_type.unl"/></loadtable> <!--<loadtable refresh="true" delimiter="^" header="false" tabname="viz_type"><file path="$VIZ_PFAD/schluesseltabellen/viz_type.unl"/></loadtable>
@ -1283,6 +1315,7 @@ mode="full">
<customfield name="chart_miniature_width" visibleSize="10" nullFieldValue="" /> <customfield name="chart_miniature_width" visibleSize="10" nullFieldValue="" />
<customfield name="chart_miniature_height" visibleSize="10" nullFieldValue="" /> <customfield name="chart_miniature_height" visibleSize="10" nullFieldValue="" />
<customfield name="chart_active" nullFieldValue="" visibleSize="30" /> <customfield name="chart_active" nullFieldValue="" visibleSize="30" />
<customfield name="is_custom" nullFieldValue="" visibleSize="30" />
</form> </form>

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

@ -1,4 +1,29 @@
<#include "MAN_MAKROS"/><sqlvars> <sqlvar name="entries" type="hash">select R.catalogue_id,K.shortname,timeunit,sqlchunk,calcratio,decimalplaces,linksub,linktimeline,R.report_id,R.sortnr, R.sortnr2,R.grouping1,G.caption as group_caption from man_catalogue K,man_catalogue_rpt R left outer join man_grouping G on (G.id=R.grouping1) where K.id=R.catalogue_id and R.active=1 and K.id not in ('Bewerber') order by R.sortnr, R.sortnr2 </sqlvar> <sqlvars>
<sqlvar name="man_catalogue_exists">
select sp_table_exists('man_catalogue') from xdummy;
</sqlvar>
<sqlvar name="entries" type="hash"><![CDATA[
<#if man_catalogue_exists==10 >
select R.catalogue_id,
K.shortname,
timeunit,
sqlchunk,
calcratio,
decimalplaces,
linksub,
linktimeline,
R.report_id,
R.sortnr,
R.sortnr2,
R.grouping1,
G.caption as group_caption from man_catalogue K,
man_catalogue_rpt R left outer join man_grouping G on (G.id=R.grouping1)
where K.id=R.catalogue_id and R.active=1
and K.id not in ('Bewerber')
order by R.sortnr, R.sortnr2
</#if> ]]>
</sqlvar>
<sqlvar name="commonChartProperties" type="hashsequence"> <sqlvar name="commonChartProperties" type="hashsequence">
SELECT SELECT
P.tid, P.tid,
@ -200,7 +225,7 @@ order by 2,5,3
<caption><![CDATA[${e.shortname}]]></caption> </doubleitem> </#foreach> <caption><![CDATA[${e.shortname}]]></caption> </doubleitem> </#foreach>
</#if></navigation> </#if></navigation>
<chartProperties> <chartProperties>
<#if commonChartProperties?is_sequence><#foreach cp in commonChartProperties> <#if commonChartProperties?has_content && commonChartProperties?is_sequence><#foreach cp in commonChartProperties>
<commonChartProperty tid="${cp.tid}" <commonChartProperty tid="${cp.tid}"
caption="${cp.caption}" caption="${cp.caption}"
prop_uniquename="${cp.prop_uniquename}" prop_uniquename="${cp.prop_uniquename}"
@ -223,7 +248,7 @@ order by 2,5,3
</#if> </#if>
</chartProperties> </chartProperties>
<vizRenderers> <vizRenderers>
<#if vizRenderer?is_sequence> <#if vizRenderer?has_content && vizRenderer?is_sequence>
<#foreach vr in vizRenderer> <#foreach vr in vizRenderer>
<vizRenderer <vizRenderer
caption="${vr.caption}" caption="${vr.caption}"
@ -233,7 +258,7 @@ order by 2,5,3
</#if> </#if>
</vizRenderers> </vizRenderers>
<vizTypes> <vizTypes>
<#if vizTypes?is_sequence> <#if vizTypes?has_content && vizTypes?is_sequence>
<#foreach vt in vizTypes> <#foreach vt in vizTypes>
<vizType tid="${vt.tid}" <vizType tid="${vt.tid}"
caption="${vt.caption}" caption="${vt.caption}"
@ -248,7 +273,7 @@ order by 2,5,3
</#if> </#if>
</vizTypes> </vizTypes>
<viz_type_properties> <viz_type_properties>
<#if viz_type_properties?is_sequence> <#if viz_type_properties?has_content && viz_type_properties?is_sequence>
<#foreach tp in viz_type_properties> <#foreach tp in viz_type_properties>
<viz_type_property tid="${tp.tid}" <viz_type_property tid="${tp.tid}"
caption="${tp.caption}" caption="${tp.caption}"
@ -270,7 +295,7 @@ order by 2,5,3
</#if> </#if>
</viz_type_properties> </viz_type_properties>
<viz_charts> <viz_charts>
<#if viz_chart?is_sequence> <#if viz_chart?has_content && viz_chart?is_sequence>
<#foreach ch in viz_chart> <#foreach ch in viz_chart>
<viz_chart tid="${ch.tid}" <viz_chart tid="${ch.tid}"
caption="${ch.caption}" caption="${ch.caption}"
@ -292,7 +317,7 @@ order by 2,5,3
</#if> </#if>
</viz_charts> </viz_charts>
<viz_property_trees> <viz_property_trees>
<#if viz_property_tree?is_sequence> <#if viz_property_tree?has_content && viz_property_tree?is_sequence>
<#foreach tree in viz_property_tree> <#foreach tree in viz_property_tree>
<viz_property_tree renderer="${tree.renderer_uniquename}" <viz_property_tree renderer="${tree.renderer_uniquename}"
viz_type_uniquename="${tree.viz_type_uniquename}" viz_type_uniquename="${tree.viz_type_uniquename}"
@ -307,7 +332,7 @@ order by 2,5,3
</#if> </#if>
</viz_property_trees> </viz_property_trees>
<vizColorSchemes> <vizColorSchemes>
<#if viz_colorscheme?is_sequence> <#if viz_colorscheme?has_content && viz_colorscheme?is_sequence>
<#foreach sc in viz_colorscheme> <#foreach sc in viz_colorscheme>
<vizColorscheme tid="${sc.tid}" <vizColorscheme tid="${sc.tid}"
caption="${sc.caption}" caption="${sc.caption}"
@ -320,7 +345,7 @@ order by 2,5,3
</#if> </#if>
</vizColorSchemes> </vizColorSchemes>
<vizColorSchemeElements> <vizColorSchemeElements>
<#if viz_colorscheme_element?is_sequence> <#if viz_colorscheme_element?has_content && viz_colorscheme_element?is_sequence>
<#foreach el in viz_colorscheme_element> <#foreach el in viz_colorscheme_element>
<vizColorschemeElem colorscheme_id="${el.colorscheme_id}" <vizColorschemeElem colorscheme_id="${el.colorscheme_id}"
colorscheme_uniquename="${el.colorscheme_uniquename}" colorscheme_uniquename="${el.colorscheme_uniquename}"

10
src-modules/module/viz/schluesseltabellen/rpta_column_layout_rpta_sos_lab_aggr_abgrp_zeitreihe_fuellen.sql

@ -15,6 +15,7 @@ select count(*) from systeminfo where tid=330;
} }
/> />
<#assign rpta_columns = [ <#assign rpta_columns = [
{"uniquename":"sem_der_pruefung", {"uniquename":"sem_der_pruefung",
"caption":"Semester (Schlüssel)", "caption":"Semester (Schlüssel)",
@ -49,7 +50,7 @@ else '''' end)",
"srcfieldname":"", "srcfieldname":"",
"targetfieldname":"absolv_ba", "targetfieldname":"absolv_ba",
"column_type":"logicalColumn", "column_type":"logicalColumn",
"col_function":"(case when dim_studiengang_abschlussart=''A24'' and dim_studiengang_ist_lehramt =0 then summe "col_function":"(case when dim_studiengang_abschlussart=''A24'' and dim_studiengang_abschluss_astat_bund in (select K.abschluss_astat_bund from k_astat_abschl_grp K where ist_lehramt=0) then summe
else 0 end)", else 0 end)",
"is_visible":"1", "is_visible":"1",
"visible_size":"10", "visible_size":"10",
@ -62,7 +63,7 @@ else '''' end)",
"srcfieldname":"", "srcfieldname":"",
"targetfieldname":"absolv_ba_la", "targetfieldname":"absolv_ba_la",
"column_type":"logicalColumn", "column_type":"logicalColumn",
"col_function":"(case when dim_studiengang_abschlussart=''A24'' and dim_studiengang_ist_lehramt =1 then summe "col_function":"(case when dim_studiengang_abschlussart=''A24'' and dim_studiengang_abschluss_astat_bund in (select K.abschluss_astat_bund from k_astat_abschl_grp K where ist_lehramt=1) then summe
else 0 end)", else 0 end)",
"is_visible":"1", "is_visible":"1",
"visible_size":"10", "visible_size":"10",
@ -75,7 +76,7 @@ else '''' end)",
"srcfieldname":"", "srcfieldname":"",
"targetfieldname":"absolv_ma", "targetfieldname":"absolv_ma",
"column_type":"logicalColumn", "column_type":"logicalColumn",
"col_function":"(case when dim_studiengang_abschlussart=''A37'' and dim_studiengang_ist_lehramt =0 then summe "col_function":"(case when dim_studiengang_abschlussart=''A37'' and dim_studiengang_abschluss_astat_bund in (select K.abschluss_astat_bund from k_astat_abschl_grp K where ist_lehramt=0) then summe
else 0 end)", else 0 end)",
"is_visible":"1", "is_visible":"1",
"visible_size":"10", "visible_size":"10",
@ -88,7 +89,7 @@ else '''' end)",
"srcfieldname":"", "srcfieldname":"",
"targetfieldname":"absolv_ma_la", "targetfieldname":"absolv_ma_la",
"column_type":"logicalColumn", "column_type":"logicalColumn",
"col_function":"(case when dim_studiengang_abschlussart=''A37'' and dim_studiengang_ist_lehramt =1 then summe "col_function":"(case when dim_studiengang_abschlussart=''A37'' and dim_studiengang_abschluss_astat_bund in (select K.abschluss_astat_bund from k_astat_abschl_grp K where ist_lehramt=1) then summe
else 0 end)", else 0 end)",
"is_visible":"1", "is_visible":"1",
"visible_size":"10", "visible_size":"10",
@ -112,5 +113,6 @@ else '''' end)",
/> />
<#if rpta_installed==1> <#if rpta_installed==1>
<@rpta_column_layout_fuellen /> <@rpta_column_layout_fuellen />
</#if> </#if>

56
src-modules/module/viz/schluesseltabellen/sx_repository.unl

@ -1,57 +1 @@
1^CUSTOMXMLADD^<sqlvars> <sqlvar name="commonChartProperties" type="hash">\
\
SELECT \
P.tid,\
P.caption,\
P.prop_uniquename,\
P.prop_default,\
P.prop_unit,\
P.is_generic,\
P.static_values,\
P.is_mandatory,\
P.explanation,\
P.sortnr,\
P.range_from,\
P.range_to,\
T.caption as input_type_caption,\
T.uniquename as input_type_uniquename,\
G.caption as group_caption,\
G.sortnr as group_sortnr,\
G.uniquename as group_uniquename,\
R.uniquename as renderer_uniquename,\
GR.variable_name as group_variable_name,\
PR.variable_name \
\
FROM viz_property_input_type T, viz_property P left outer join viz_property_group G\
on (P.property_group_id=G.tid)\
left outer join viz_property_group_renderer GR on (GR.property_group_id=G.tid)\
left outer join viz_property_renderer PR on (P.tid=PR.property_id)\
left outer join viz_renderer R on (R.tid=PR.renderer_id)\
where T.tid=P.input_type_id\
and P.is_generic=1\
order by G.sortnr,G.uniquename,P.sortnr,P.caption\
;\
</sqlvar> </sqlvars>\
<chartProperties>\
<\if commonChartProperties?is_sequence><\foreach cp in commonChartProperties>\
<commonChartProperty tid="${cp.tid}" \
caption="${cp.caption}" \
prop_uniquename="${cp.prop_uniquename}" \
prop_default="${cp.prop_default}" \
static_values="${cp.static_values}" \
input_type_uniquename="${cp.input_type_uniquename}" \
group_caption="${cp.group_caption}" \
group_uniquename="${cp.group_uniquename}" \
prop_unit="${cp.prop_unit}" \
prop_range_from="${cp.range_from}" \
prop_range_to="${cp.range_to}" \
renderer_uniquename="${cp.renderer_uniquename}" \
group_variable_name="${cp.group_variable_name}" \
variable_name="${cp.variable_name}" \
\
\
/>\
</\foreach>\
</\if>\
</chartProperties>^Chart-Eigenschaften^Hier werden Chart-Eigenschaften gefiltert^^VIZ_PROPERTIES^^^320^1^0^0^^1^01.01.1900^31.12.3000^
2^VIZ_HS_KUERZEL^Uni X^Institutions-Kürzel^Hier wird ein Kürzel für die Hochschule eingetragen^^VIZ_PROPERTIES^^^320^1^0^0^^1^01.01.1900^31.12.3000^ 2^VIZ_HS_KUERZEL^Uni X^Institutions-Kürzel^Hier wird ein Kürzel für die Hochschule eingetragen^^VIZ_PROPERTIES^^^320^1^0^0^^1^01.01.1900^31.12.3000^

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

@ -0,0 +1,359 @@
804^CUSTOMXMLADD^<sqlvars> \
<sqlvar name="man_catalogue_exists">\
select sp_table_exists('man_catalogue') from xdummy;\
</sqlvar>\
<sqlvar name="entries" type="hash"><![CDATA[\
<#if man_catalogue_exists==10 >\
select R.catalogue_id,\
K.shortname,\
timeunit,\
sqlchunk,\
calcratio,\
decimalplaces,\
linksub,\
linktimeline,\
R.report_id,\
R.sortnr,\
R.sortnr2,\
R.grouping1,\
G.caption as group_caption from man_catalogue K,\
man_catalogue_rpt R left outer join man_grouping G on (G.id=R.grouping1) \
where K.id=R.catalogue_id and R.active=1 \
and K.id not in ('Bewerber') \
order by R.sortnr, R.sortnr2 \
\
</#if> ]]>\
</sqlvar>\
<sqlvar name="commonChartProperties" type="hashsequence">\
SELECT \
P.tid,\
P.caption,\
P.prop_uniquename,\
P.prop_default,\
P.prop_unit,\
P.is_generic,\
P.static_values,\
P.is_mandatory,\
P.explanation,\
P.sortnr,\
P.range_from,\
P.range_to,\
I.caption as input_type_caption,\
I.uniquename as input_type_uniquename,\
G.caption as group_caption,\
G.sortnr as group_sortnr,\
G.uniquename as group_uniquename,\
R.uniquename as renderer_uniquename,\
GR.variable_name as group_variable_name,\
coalesce((select PR.variable_name from viz_property_renderer PR\
where PR.property_id=P.tid\
and PR.renderer_id=R.tid),P.prop_uniquename) as variable_name,\
P.prop_value_type,\
P.is_generic \
\
FROM viz_property_input_type I, viz_property P left outer join viz_property_group G\
on (P.property_group_id=G.tid)\
left outer join viz_property_group_renderer GR on (GR.property_group_id=G.tid)\
left outer join viz_renderer R on (R.tid=GR.renderer_id)\
left outer join viz_property_renderer PR on (P.tid=PR.property_id)\
where I.tid=P.input_type_id \
order by G.sortnr,G.uniquename,P.sortnr,P.caption\
;\
</sqlvar>\
<sqlvar name="vizRenderer" type="hash">\
SELECT \
R.uniquename,\
R.caption\
FROM viz_renderer R\
order by 2 asc\
;\
</sqlvar>\
<sqlvar name="vizTypes" type="hash">\
SELECT T.tid,\
T.uniquename,\
T.caption,\
R.uniquename as renderer_uniquename,\
R.caption as renderer_caption,\
T.srcpath,\
T.method,\
T.orientation\
FROM viz_type T, viz_renderer R\
where R.tid=T.renderer_id\
order by 3\
;\
</sqlvar>\
<sqlvar name="viz_type_properties" type="hash">\
SELECT T.tid,\
T.uniquename as viz_type_uniquename,\
P.caption,\
P.prop_uniquename,\
P.prop_default,\
P.prop_unit,\
P.is_generic,\
P.static_values,\
--P.is_mandatory,\
P.explanation,\
P.sortnr,\
P.range_from,\
P.range_to,\
I.caption as input_type_caption,\
I.uniquename as input_type_uniquename,\
G.uniquename as viz_property_group_uniquename,\
TP.is_mandatory,\
TP.sortnr,\
P.prop_value_type,\
P.is_generic\
FROM viz_type T, viz_type_property TP, viz_property_input_type I, viz_property P\
left outer join viz_property_group G on (G.tid=P.property_group_id)\
where T.tid=TP.viz_type_id\
and P.tid=TP.viz_property_id\
and I.tid=P.input_type_id\
order by 2,TP.sortnr,P.caption\
;\
</sqlvar>\
<sqlvar name="viz_chart" type="hashsequence">\
SELECT V.tid,\
V.uniquename,\
V.caption,\
V.userinfo_id,\
replace(V.chartmodel,'"','§') as chartmodel_escaped,\
replace(V.chartmodel_miniature,'"','§') as chartmodel_miniature_escaped,\
V.description,\
V.chart_position,\
--replace(V.chartcode,'"','§') as chartcode_escaped,\
--replace(V.datasource_def,'"','§') as datasource_def_escaped\
R.uniquename as renderer_uniquename,\
R.tid as renderer_id,\
V.chart_width,\
V.chart_height,\
V.chart_miniature_width,\
V.chart_miniature_height,\
V.maskeninfo_id\
FROM viz_chart V, viz_renderer R\
where R.tid=V.renderer_id\
and chart_active=1\
order by 3\
;\
</sqlvar>\
<sqlvar name="viz_property_tree" type="hashsequence">\
with recursive tree_rec (renderer_uniquename,\
renderer_id,\
prop_tid,\
prop_uniquename,\
parent_prop_uniquename,\
sortnr,\
is_mandatory)\
\
as (select R.uniquename as renderer_uniquename,\
R.tid as renderer_id,\
P.tid as prop_tid,\
P.prop_uniquename,\
null::varchar as parent_prop_uniquename,\
N.sortnr,\
N.is_mandatory\
from viz_property_tree_node N, viz_renderer R, viz_property P\
where N.renderer_id=R.tid\
and N.property_id=P.tid\
and N.parent_property_id is null\
union all (select \
R.uniquename as renderer_uniquename,\
R.tid as renderer_id,\
P.tid as prop_tid,\
P.prop_uniquename,\
(select P2.prop_uniquename from viz_property P2\
where P2.tid=N.parent_property_id) as parent_property_uniquename,\
N.sortnr,\
N.is_mandatory\
from viz_property_tree_node N, viz_renderer R, viz_property P,tree_rec T\
where N.renderer_id=R.tid\
and N.property_id=P.tid\
and T.prop_tid=N.parent_property_id\
)\
)\
--search depth first by name set sort1\
select distinct R.renderer_uniquename,\
T.uniquename as viz_type_uniquename,\
R.prop_tid,\
R.prop_uniquename,\
R.parent_prop_uniquename,\
P.caption as property_caption,\
P.is_generic,\
R.sortnr,\
(case when P.is_generic =0 then TP.is_mandatory else R.is_mandatory end) as is_mandatory,\
T.orientation\
from tree_rec R,viz_property P,viz_type_property TP, viz_type T\
where P.tid=R.prop_tid\
and TP.viz_type_id=T.tid\
and T.renderer_id=R.renderer_id\
and (P.is_generic=1 or TP.viz_property_id=P.tid)\
--and T.uniquename='echarts_bar_y_series'\
order by 1,2,R.sortnr;\
\
</sqlvar>\
<sqlvar name="viz_colorscheme" type="hashsequence">\
SELECT tid,\
uniquename , \
caption , \
is_custom,\
specifier,\
sortnr\
from viz_colorscheme\
where colorscheme_active=1\
order by sortnr,caption\
;\
</sqlvar>\
<sqlvar name="viz_colorscheme_element" type="hashsequence">\
SELECT E.colorscheme_id ,\
C.uniquename as colorscheme_uniquename,\
E.colorcode, \
E.target_uniquename , \
E.sortnr\
from viz_colorscheme_element E, viz_colorscheme C\
where C.tid=E.colorscheme_id\
order by 2,5,3\
;\
</sqlvar>\
</sqlvars>\
<#if !Semester?exists><#assign Semester=""></#if> <#if !Bezugssemester?exists><#assign Bezugssemester=""/></#if> <#if !Jahr?exists><#assign Jahr=""></#if> <#if !faecherkeys?exists><#assign faecherkeys=""></#if> <#if !Fächer?exists><#assign Fächer={"selectedKey":""}></#if> <#if !Kostenstelle?exists><#assign Kostenstelle={"selectedKey":""}></#if> <#if !(.vars["Datum (Personal)"]?exists)><#assign "Datum (Personal)"=""></#if> <#if !(.vars["Beschäftigungsstelle (Person)"]?exists)><#assign "Beschäftigungsstelle (Person)"=""></#if>\
<navigation><item><href><![CDATA[888880190&maxoffset=100000&Jahr=${Jahr}&Semester=${Semester}&Datum%20(Personal)=${.vars["Datum (Personal)"]}]]></href><caption>Start</caption></item>\
<#if entries?is_sequence><#foreach e in entries>\
<#assign linktimeline=e.linktimeline?interpret/>\
<#assign linkt><@linktimeline/></#assign> <#assign linksub=e.linksub?interpret/>\
<#assign links><@linksub/></#assign> <doubleitem id="${e.catalogue_id}" timeunit="${e.timeunit}" report_id="${e.report_id}" group_id="${e.grouping1}" group_caption="${e.group_caption}">\
<aktuell><![CDATA[${links?replace('Fakultäten|','')}]]></aktuell>\
<zeitreihe><![CDATA[${linkt?replace('Zeitreihe|','')}]]></zeitreihe>\
<caption><![CDATA[${e.shortname}]]></caption> </doubleitem> </#foreach>\
</#if></navigation>\
<chartProperties>\
<#if commonChartProperties?has_content && commonChartProperties?is_sequence><#foreach cp in commonChartProperties>\
<commonChartProperty tid="${cp.tid}" \
caption="${cp.caption}" \
prop_uniquename="${cp.prop_uniquename}" \
prop_default="${cp.prop_default}" \
static_values="${cp.static_values}" \
input_type_uniquename="${cp.input_type_uniquename}" \
group_caption="${cp.group_caption}" \
group_uniquename="${cp.group_uniquename}" \
prop_unit="${cp.prop_unit}" \
prop_range_from="${cp.range_from}" \
prop_range_to="${cp.range_to}" \
renderer_uniquename="${cp.renderer_uniquename}" \
group_variable_name="${cp.group_variable_name}" \
variable_name="${cp.variable_name}" \
propValueType="${cp.prop_value_type}"\
explanation="${cp.explanation}"\
isGeneric="${cp.is_generic}"\
/>\
</#foreach>\
</#if>\
</chartProperties>\
<vizRenderers>\
<#if vizRenderer?has_content && vizRenderer?is_sequence>\
<#foreach vr in vizRenderer>\
<vizRenderer \
caption="${vr.caption}" \
uniquename="${vr.uniquename}" \
/>\
</#foreach>\
</#if>\
</vizRenderers>\
<vizTypes>\
<#if vizTypes?has_content && vizTypes?is_sequence>\
<#foreach vt in vizTypes>\
<vizType tid="${vt.tid}" \
caption="${vt.caption}" \
uniquename="${vt.uniquename}" \
srcpath="${vt.srcpath}" \
method="${vt.method}" \
orientation="${vt.orientation}"\
renderer_uniquename="${vt.renderer_uniquename}" \
renderer_caption="${vt.renderer_caption}" \
/>\
</#foreach>\
</#if>\
</vizTypes>\
<viz_type_properties>\
<#if viz_type_properties?has_content && viz_type_properties?is_sequence>\
<#foreach tp in viz_type_properties>\
<viz_type_property tid="${tp.tid}" \
caption="${tp.caption}" \
uniquename="${tp.prop_uniquename}" \
viz_type_uniquename="${tp.viz_type_uniquename}" \
viz_property_group_uniquename="${tp.viz_property_group_uniquename}" \
is_mandatory="${tp.is_mandatory}"\
prop_default="${tp.prop_default}" \
static_values="${tp.static_values}" \
input_type_uniquename="${tp.input_type_uniquename}" \
prop_unit="${tp.prop_unit}" \
prop_range_from="${tp.range_from}" \
prop_range_to="${tp.range_to}" \
propValueType="${tp.prop_value_type}"\
explanation="${tp.explanation}"\
isGeneric="${tp.is_generic}"\
/>\
</#foreach>\
</#if>\
</viz_type_properties>\
<viz_charts>\
<#if viz_chart?has_content && viz_chart?is_sequence>\
<#foreach ch in viz_chart>\
<viz_chart tid="${ch.tid}" \
caption="${ch.caption}" \
uniquename="${ch.uniquename}" \
userinfo_id="${ch.userinfo_id}"\
description="${ch.description}"\
chartmodel="${ch.chartmodel_escaped}" \
chartmodel_miniature="${ch.chartmodel_miniature_escaped}" \
chart_position="${ch.chart_position}" \
renderer="${ch.renderer_uniquename}"\
renderer_id="${ch.renderer_id}"\
chart_width="${ch.chart_width}"\
chart_height="${ch.chart_height}"\
chart_miniature_width="${ch.chart_width}"\
chart_miniature_height="${ch.chart_height}"\
maskeninfo_id="${ch.maskeninfo_id}"\
/>\
</#foreach>\
</#if>\
</viz_charts>\
<viz_property_trees>\
<#if viz_property_tree?has_content && viz_property_tree?is_sequence>\
<#foreach tree in viz_property_tree>\
<viz_property_tree renderer="${tree.renderer_uniquename}" \
viz_type_uniquename="${tree.viz_type_uniquename}" \
orientation="${tree.orientation}" \
prop_uniquename="${tree.prop_uniquename}"\
property_caption="${tree.property_caption}"\
parent_property_uniquename="${tree.parent_prop_uniquename}" \
sortnr="${tree.sortnr}" \
is_mandatory="${tree.is_mandatory}" \
/>\
</#foreach>\
</#if>\
</viz_property_trees>\
<vizColorSchemes>\
<#if viz_colorscheme?has_content && viz_colorscheme?is_sequence>\
<#foreach sc in viz_colorscheme>\
<vizColorscheme tid="${sc.tid}" \
caption="${sc.caption}" \
uniquename="${sc.uniquename}" \
is_custom="${sc.is_custom}"\
specifier="${sc.specifier}" \
\
/>\
</#foreach>\
</#if>\
</vizColorSchemes>\
<vizColorSchemeElements>\
<#if viz_colorscheme_element?has_content && viz_colorscheme_element?is_sequence>\
<#foreach el in viz_colorscheme_element>\
<vizColorschemeElem colorscheme_id="${el.colorscheme_id}" \
colorscheme_uniquename="${el.colorscheme_uniquename}" \
colorcode="${el.colorcode}" \
target_uniquename="${el.target_uniquename}" \
sortnr="${el.sortnr}" \
\
/>\
</#foreach>\
</#if>\
</vizColorSchemeElements>^Navigationsxml fuer MAN-modul hinterlegen^^^^^^200^^^^^1^01.01.1900^01.01.3000^

27
src-modules/module/viz/schluesseltabellen/sx_repository_customxmladd_unload.sql

@ -0,0 +1,27 @@
--shortcut for unloading customxmladd VIZ
select tid,
id,
content,
caption,
comment,
version,
art,
art2,
art3,
sachgebiete_id,
sort1,
sort2,
sort3,
geaendert_am,
aktiv,
gueltig_seit,
gueltig_bis
into tmp_repo
from sx_repository
where id in ('CUSTOMXMLADD');
\! sx_unload_table.x tmp_repo ./sx_repository_customxmladd.unl
drop table tmp_repo;

9
src-modules/module/viz/schluesseltabellen/sx_repository_fuellen.sql

@ -1,12 +1,19 @@
--freemarker template --freemarker template
<#if SQLdialect='Postgres'> <#if SQLdialect='Postgres'>
select sp_update_sequence('sx_repository'); select sp_update_sequence('sx_repository');
</#if> </#if>
--Sonderfall CUSTOMXMLADD:
--Variable ist noch nicht befüllt:
update sx_repository set content=(select T.content from tmp_repository T
where T.id='CUSTOMXMLADD')
where id='CUSTOMXMLADD';
delete from tmp_repository where id in (select id from sx_repository); delete from tmp_repository where id in (select id from sx_repository);
insert into sx_repository insert into sx_repository

40
src-modules/module/viz/schluesseltabellen/sx_repository_fuellen.x

@ -1,28 +1,28 @@
#!/bin/bash #!/bin/bash
#shortcut for uploading cumonxmladd:
DOQUERY "create table tmp_repository( DOQUERY "create table tmp_repository(
tid SERIAL not null, tid SERIAL not null,
id CHAR(200) not null, id CHAR(200) not null,
content TEXT , content TEXT ,
caption CHAR(200) , caption CHAR(200) ,
comment TEXT , comment TEXT ,
version SMALLINT , version SMALLINT ,
art CHAR(200) , art CHAR(200) ,
art2 CHAR(200) , art2 CHAR(200) ,
art3 CHAR(200) , art3 CHAR(200) ,
sachgebiete_id INTEGER , sachgebiete_id INTEGER ,
sort1 INTEGER , sort1 INTEGER ,
sort2 INTEGER , sort2 INTEGER ,
sort3 INTEGER , sort3 INTEGER ,
geaendert_am DATE , geaendert_am DATE ,
aktiv smallint , aktiv smallint ,
gueltig_seit DATE , gueltig_seit DATE ,
gueltig_bis DATE gueltig_bis DATE
);" );"
sx_auto_upload_table.x tmp_repository sx_repository.unl sx_auto_upload_table.x tmp_repository sx_repository.unl
sx_upload_records.x tmp_repository sx_repository_customxmladd.unl
DOSQL sx_repository_fuellen.sql DOSQL ./sx_repository_fuellen.sql

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

File diff suppressed because one or more lines are too long

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

@ -1,4 +1,52 @@
delete from viz_chart where uniquename in (select uniquename from tmp_viz_chart); --Grafiken in VIZ 0.2 nachträglich auf is_custom=0 setzen
--vorher gab es die Spalte nicht
update viz_chart set is_custom=0
where uniquename in (
'ABSOLV_ABGRP_SEM_AREA',
'ABSOLV_RSZ_SEM_BAR',
'ABSOLV_SEM_LINE',
'ERFOLG_BA_MA_SANKEY',
'STUD_ALTER_BOXPLOT_H',
'STUDANF_ABGRP_BAR_Y_ECHART',
'STUDANF_FAK_BAR',
'STUDANF_FAK_BAR_X_ECHART',
'STUDANF_FAK_BAR_Y_ECHART',
'STUDANF_FAK_KURZ_DONUT_JB',
'STUDANF_FAK_PIE',
'STUDANF_GESCHL_PIE',
'STUDANF_HZB_LAND_BAR',
'STUDANF_JAHR_BAR',
'STUDANF_KOHORTEN_BAR_Y_ECHART',
'STUDANF_KOHORTEN_BAR_Y_ECHART_INVERTED',
'STUDANF_SEM_LINE_TEXT',
'STUD_BILDUNGSTYP_DONUT',
'STUD_ENTW_SEM_ABSCHLUSS_LINE',
'STUD_ENTW_SEM_ABSCHLUSS_LINE_1',
'STUD_ENTW_SEM_ABSCHLUSS_LINE_1HS',
'STUD_ENTW_SEM_GESCHL_LINE',
'STUD_ENTW_SEM_GESCHL_LINE_1',
'STUD_ENTW_SEM_GESCHL_LINE_1HS',
'STUD_ENTW_SEM_STAAT_LINE',
'STUD_ENTW_SEM_STAAT_LINE_1',
'STUD_ENTW_SEM_STAAT_LINE_1HS',
'STUD_FAK_ABGRP_STG_SUNBURST',
'STUD_FAK_KURZ_DONUT',
'STUD_FAK_KURZ_DONUT_JB',
'STUD_FAK_KURZ_PIE',
'STUD_GESCHL_W_DONUT',
'STUD_GESCHL_W_DONUT_JB',
'STUD_GESCHL_W_PIE',
'STUD_LEHRAMT_DONUT',
'STUD_SEM_LINE',
'STUD_SJAHR_JB',
'STUD_STAAT',
'STUD_ZEITR_BAR',
'STUD_ZEITR_BAR_LINE',
'STUD_ZEITR_BAR_LINE_DOT',
'STUD_ZEITR_BAR_LINE_DOT_TEXT');
delete from viz_chart where uniquename in (select uniquename from tmp_viz_chart)
and is_custom=0;
select sp_update_sequence('viz_chart'); select sp_update_sequence('viz_chart');
@ -20,7 +68,8 @@ uniquename,
chart_width, chart_width,
chart_height, chart_height,
chart_miniature_width, chart_miniature_width,
chart_miniature_height) chart_miniature_height,
is_custom)
select select
uniquename, uniquename,
@ -40,8 +89,10 @@ uniquename,
chart_width, chart_width,
chart_height, chart_height,
chart_miniature_width, chart_miniature_width,
chart_miniature_height chart_miniature_height,
FROM tmp_viz_chart; is_custom
FROM tmp_viz_chart
where is_custom=0;
drop table tmp_viz_chart; drop table tmp_viz_chart;

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

@ -1,31 +1,25 @@
#!/bin/bash #!/bin/bash
#entlädt nur die charts, die Teil der Auslieferung sind: #entlädt nur die charts, die Teil der Auslieferung sind:
DOQUERY "create table tmp_viz_chart(
tid SERIAL not null,
uniquename VARCHAR(255) not null,
caption VARCHAR(255) ,
description TEXT ,
chartmodel TEXT ,
preview_svg TEXT ,
userinfo_id INTEGER ,
creation_date DATE default today(),
update_date DATE default today(),
maskeninfo_id INTEGER ,
mask_params TEXT ,
renderer_id INTEGER not null,
chartmodel_miniature TEXT ,
chart_position CHAR(10) ,
chart_active SMALLINT default 1 ,
chart_width INTEGER default 600 ,
chart_height INTEGER default 400 ,
chart_miniature_width INTEGER default 200 ,
chart_miniature_height INTEGER default 100
) DOQUERY "select tid,
;" uniquename,
caption,
description,
chartmodel,
preview_svg,
userinfo_id,
creation_date,
update_date,
maskeninfo_id,
mask_params,
renderer_id,
chartmodel_miniature,
chart_position,
chart_active,
chart_width,
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
sx_auto_upload_table.x tmp_viz_chart viz_chart.unl
DOQUERY "select * from viz_chart where uniquename in (select T.uniquename from tmp_viz_chart T)" false ^ viz_chart.unl txt
DOQUERY "drop table tmp_viz_chart;"

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

@ -1,7 +1,9 @@
#!/bin/bash #!/bin/bash
#lädt nur die charts, die Teil der Auslieferung sind: #lädt nur die charts, die Teil der Auslieferung sind:
DOQUERY "drop table if exists tmp_viz_chart ;"
DOQUERY "create table tmp_viz_chart( DOQUERY "create table tmp_viz_chart(
tid SERIAL not null, tid SERIAL not null,
uniquename VARCHAR(255) not null, uniquename VARCHAR(255) not null,
caption VARCHAR(255) , caption VARCHAR(255) ,
description TEXT , description TEXT ,
@ -12,14 +14,15 @@ creation_date DATE default today(),
update_date DATE default today(), update_date DATE default today(),
maskeninfo_id INTEGER , maskeninfo_id INTEGER ,
mask_params TEXT , mask_params TEXT ,
renderer_id INTEGER not null, renderer_id INTEGER ,
chartmodel_miniature TEXT , chartmodel_miniature TEXT ,
chart_position CHAR(10) , chart_position CHAR(10) ,
chart_active SMALLINT default 1 , chart_active SMALLINT default 1 ,
chart_width INTEGER default 600 , chart_width INTEGER default 600 ,
chart_height INTEGER default 400 , chart_height INTEGER default 400 ,
chart_miniature_width INTEGER default 200 , chart_miniature_width INTEGER default 200 ,
chart_miniature_height INTEGER default 100 chart_miniature_height INTEGER default 100 ,
is_custom SMALLINT
) )
;" ;"

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

@ -31,7 +31,7 @@
] ]
/> />
--TODO klappt noch nicht: {"viz_property_uniquename":"stroke","is_mandatory":"0"}
<#assign viz_type_properties = [ <#assign viz_type_properties = [
{"viz_property_uniquename":"x", {"viz_property_uniquename":"x",
"is_mandatory":"1"}, "is_mandatory":"1"},

6
src-modules/module/viz/upgrade/viz_upgrade_man.sql

@ -35,4 +35,10 @@ ist_lehramt SMALLINT default 0 ,
) )
; ;
</#if> </#if>
<#if TableFieldExists?exists && TableFieldExists('dim_studiengang','ist_lehramt')>
<#else>
alter table dim_studiengang add column ist_lehramt smallint default 0;
</#if>

374
superx/style/sx_viz_muster.css

@ -1,17 +1,28 @@
/*dateispezifische Basics*/ /*dateispezifische Basics*/
html, body {
height: auto;
min-height: 100vh;
overflow-x: auto;
overflow-y: auto;
}
.hero-body { margin-left: 1.5em; } /*Abstand zum Burger-Button*/ .hero-body { margin-left: 1.5em; } /*Abstand zum Burger-Button*/
.title, .subtitle { /*für Seitentitel*/ .title, .subtitle { /*für Seitentitel*/
margin-left: 0.4em; margin-left: 0.4em;
margin-top: 0%; } margin-top: 0%; }
.columns {
display: flex;
flex-wrap: wrap; }
.card { /*für Cardposition, -style*/ .card { /*für Cardposition, -style*/
display: flex; display: flex;
flex-flow: column; flex-flow: column;
margin-left: 0em; /*1.5em bei farbigem Hintergrund*/ margin-left: 0em; /*1.5em bei farbigem Hintergrund*/
margin-top: 0em; /*-1.2em bei farbigem Hintergrund*/ margin-top: 0em; /*-1.2em bei farbigem Hintergrund*/
box-shadow: none; } box-shadow: none; }
/*Buttonleiste, Legende*/ /*Buttonleiste, Legende*/
.legende { /*für Berichtslegende*/ .legende { /*für Berichtslegende*/
margin-left: 0.15em; margin-left: 0.15em;
@ -32,8 +43,7 @@
margin-top: 0.4em; } margin-top: 0.4em; }
.control-new { /*für einheitliche Controlbreite*/ .control-new { /*für einheitliche Controlbreite*/
width: 17.0em; width: 17.0em; }
}
.tabs { .tabs {
font-family: sans-serif; font-family: sans-serif;
@ -42,6 +52,42 @@
.tabs { /*für Tab-Namen*/ .tabs { /*für Tab-Namen*/
font-size: 2rem; } font-size: 2rem; }
.grid { /*20250917 eingefügt*/
display: flex;
flex-wrap: wrap; } /*erlaubt Umbruch'*/
/*20251007 eingefügt*/
.fullwidth-grid {
width: 100vw; /* gesamte Viewport-Breite */
padding-right: 2em; }
.dashboard-tabs { /*20250917 eingefügt*/
display: flex;
flex-wrap: wrap; /* erlaubt Umbruch */
list-style: none;
margin: 1rem;
padding: 0;
cursor: pointer; }
.dashboard-tabs li { /*20250917 eingefügt*/
flex: 1 1 auto; /* alle Tabs gleich breit, aber flexibel */
text-align: center;
border: 1px solid #ccc;
background: #f9f9f9; }
.dashboard-tabs li a { /*20250917 eingefügt*/
display: block;
text-decoration: none;
font-weight: bold;
color: #333; }
.dashboard-tabs li a:hover, .dashboard-tabs li a:focus { /*20250917 eingefügt*/
background: #e0e0e0; }
.dashboard-tabs li.is-active { /*20251007 eingefügt*/
background: #ebf1f3;
color: midnightblue; }
.input::-moz-placeholder, .textarea::-moz-placeholder, .select select::-moz-placeholder { .input::-moz-placeholder, .textarea::-moz-placeholder, .select select::-moz-placeholder {
font-size: 0.8rem; font-size: 0.8rem;
color: black; } color: black; }
@ -66,4 +112,322 @@
border-radius: 8px; border-radius: 8px;
pointer-events: none; pointer-events: none;
} }
.dojoDialog {background : #eee; border : 1px solid #999;-moz-border-radius : 5px;padding : 4px;width:650;height:420px;overflow:scroll}
.treebutton {
border:none;
margin: 0 4px 0 0;
}
/*Cockpit-Header*/
.hs_header {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 20; /*positioniert sich im flow am nähesten zum Betrachter*/
background-color:white;
padding-top: 3rem; }
.hs_header_box1 { /*für Balken-Box über/unter Cockpittitel*/
background: white;
height: 1.0rem;
color: black; }
.hs_header_box2 { /*für Logo-/Cockpittitel-Box*/
display: flex;
/* height: 4.0rem;*/
padding: 0.3rem 17.0rem 0rem 9.0rem; /*für Padding: ob re un li*/
align-items: left; /*für vertikale Ausrichtung d Elemente*/
/*justify-content: space-between;*/ /*für gleichm. Leerraum zw. Elementen*/
background-color: #004c93; }
.cockpit_title {
color: white;
font-size: 2rem;
font-weight: 800;
background-color: #004c93;
padding-left:20px; }
.vizTitle {
margin-left: 0.8em;
margin-right: 0.8em;
white-space: normal;
word-wrap: normal;
overflow-wrap: break-word;
hyphens: auto;
text-align: center;
font-size:1.2em;
font-weight:bolder;
color: midnightblue;
background: #ebf1f3; }
.navbar {background-color: white;} /*20250221 eingefügt*/
.navbar-item img, .navbar-item svg { /*20250221 eingefügt*/
max-height: unset !important; } /*var(--bulma-navbar-item-img-max-height);*/
/*Media-queries**/
@media print{
.dontprint {display:none;}
}
/* 20250919 eingefügt: bis 769px: mobile; ab 769px: tablet and up; ab 1024px: desctop an up */
@media (max-width: 403px) {
.columns { padding-top: 2.5rem; }
.grid { padding-top: 18.5rem; }
}
@media (min-width: 404px) and (max-width: 468px) {
.grid { padding-top: 17rem; }
}
@media (min-width: 469px) and (max-width: 473px) {
.grid { padding-top: 15.5rem; }
}
@media (min-width: 474px) and (max-width: 549px) {
.grid { padding-top: 14rem; }
}
@media (min-width: 550px) and (max-width: 552px) {
.grid { padding-top: 12rem; }
}
@media (min-width: 553px) and (max-width: 576px) {
.grid { padding-top: 10.5rem; }
}
@media (min-width: 577px) and (max-width: 636px) {
.grid { padding-top: 7.5rem; }
}
@media (min-width: 637px) and (max-width: 917px) {
.grid { padding-top: 6rem; }
}
@media (min-width: 918px) and (max-width: 927px) {
.grid { padding-top: 5rem; }
}
@media (min-width: 928px) and (max-width: 1644px) {
.grid { padding-top: 3rem; }
}
@media (min-width: 1645px) {
.grid { padding-top: 1.5rem; }
}
.buttons-container { /* 300425BF eingefügt*/
display: flex;
justify-content: flex-end; /* rechts ausrichten */
align-items: center; /* vertikal zentrieren */
flex-wrap: wrap; /* für kleine Viewports */
padding-top: 1.0rem;
}
.button.is-link {
background-color: white; /*link-Blau:#3273dc; UDE-Blau:#004C93*/
border-color: transparent;
color: #004C93; }
.button.is-link:hover, .button.is-link.is-hovered {
background-color: #276cda;
border-color: transparent;
color: #004C93; }
.button.is-link:focus, .button.is-link.is-focused {
border-color: transparent;
color: #004C93; }
.button.is-link:focus:not(:active), .button.is-link.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }
.button.is-link:active, .button.is-link.is-active {
background-color: white;
border-color: transparent;
color: #004C93; }
.button.is-link[disabled],
fieldset[disabled] .button.is-link {
background-color: #004C93;
border-color: transparent;
box-shadow: none; }
.button.is-link.is-inverted {
background-color: #fff;
color: #004C93; }
.button.is-link.is-inverted:hover, .button.is-link.is-inverted.is-hovered {
background-color: #f2f2f2; }
.button.is-link.is-inverted[disabled],
fieldset[disabled] .button.is-link.is-inverted {
background-color: #fff;
border-color: transparent;
box-shadow: none;
color: #004C93; }
.button.is-link.is-loading::after {
border-color: transparent transparent #fff #fff !important; }
.button.is-link.is-outlined {
background-color: white;
border-color: #004C93;
color: #004C93; }
.button.is-link.is-outlined:hover, .button.is-link.is-outlined.is-hovered, .button.is-link.is-outlined:focus, .button.is-link.is-outlined.is-focused {
background-color: #004C93;
border-color: #004C93;
color: #fff; }
.button.is-link.is-outlined.is-loading::after {
border-color: transparent transparent #004C93; #004C93; !important; }
.button.is-link.is-outlined.is-loading:hover::after, .button.is-link.is-outlined.is-loading.is-hovered::after, .button.is-link.is-outlined.is-loading:focus::after, .button.is-link.is-outlined.is-loading.is-focused::after {
border-color: transparent transparent #fff #fff !important; }
.button.is-link.is-outlined[disabled],
fieldset[disabled] .button.is-link.is-outlined {
background-color: transparent;
border-color: #004C93;
box-shadow: none;
color: #004C93; }
.button.is-link.is-inverted.is-outlined {
background-color: transparent;
border-color: #fff;
color: #fff; }
.button.is-link.is-inverted.is-outlined:hover,
.button.is-link.is-inverted.is-outlined.is-hovered,
.button.is-link.is-inverted.is-outlined:focus,
.button.is-link.is-inverted.is-outlined.is-focused {
background-color: #fff;
color: #004C93; }
.button.is-link.is-inverted.is-outlined.is-loading:hover::after,
.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,
.button.is-link.is-inverted.is-outlined.is-loading:focus::after, .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after {
border-color: transparent transparent #004C93; #004C93; !important; }
.button.is-link.is-inverted.is-outlined {
background-color: transparent;
border-color: #fff;
color: #fff; }
.button.is-link.is-inverted.is-outlined:hover,
.button.is-link.is-inverted.is-outlined.is-hovered,
.button.is-link.is-inverted.is-outlined:focus,
.button.is-link.is-inverted.is-outlined.is-focused {
background-color: #fff;
color: #004C93; }
.button.is-small.is-rounded.is-link.has-tooltip-bottom { background-color: #004C93; /*UDE-Blau*/ } /*20250711 eingefügt*/
.exportoptions {
margin-top: 2.0em;
}
.buttonlist{ /*für resposive Buttonleiste*/
display: flex;
flex-flow: no wrap;
justify-content: flex-start;
padding: 0.3rem 0rem 0.3rem 0rem; /*für Padding: ob re un li*/
}
.buttonlist img { /*für Icongröße in Buttonleiste*/
height: 2.5rem;
width: auto;
margin-top: 0em; }
/*Auswahlfelder*/
.card { /*für Auswahlfeldercard-Position*/
display: flex;
flex-flow: column;
margin-left: 0em;
margin-top: 8em;
min-width: 10.0em;
width: 100%;
}
.card.is-shady { border: unset !important; } /*20250709 eingefügt */
.label-container, .button-label { /*für einh.responsive Feldbezeichner*/
display: flex;
justify-content: left;
background: ;
min-width: 10.0em; /*für kleine Viewports*/
width: 10%; } /*für kleine Viewports*/
.control-new { /*für einheitliche Controls*/
min-width: 10.0em; /*für kleine Viewports*/
width: 10%; /*für große Viewports*/
}
.button { /*für Button-Bezeichner-Ausrichtung*/
display: flex;
justify-content: left; }
/*Erläuterungen/Legende*/
.box-new { /*für Kopfzeile mit Close-Button*/
display: flex;
justify-content: space-between;
font-weight: bold;
}
.leg_erl {
background-color: whitesmoke; /*für Abschnitthintergrund, Schrift*/
font-size: 0.8em;
}
.dl_title { /*für Texthervorhebungen*/
display: flex;
justify-content: center;
background: inherit;
font-size: 1.2em;
font-weight: 400;
}
/*Datentabellen*/
.table-container {
z-index: 10; /*positioniert sich im flow hinter dem hs_header*/
}
table.ergtabelle tr.listRowOdd td.leer
{
border:thin solid white;
background-color:white;
}
table.ergtabelle tr.listRowEven td.leer
{
border:thin solid white;
background-color:white;
}
table.ergtabelle tr td.leer
{
border:thin solid white;
background-color:white;
}
table.ergtabelle tr th.leer
{
border:thin solid white;
background-color:white;
}
table.ergtabelle tr th.header
{
vertical-align:center;
text-align:center;
}
table.ergtabelle
{
border:thin solid white;
font-size:1.5rem;
}
/* Zahlen rechtsbündig:*/
table.ergtabelle tbody tr.listRowEven td.integer
{
text-align:right;
empty-cells:show
vertical-align:center;
}
table.ergtabelle tbody tr.listRowOdd td.integer
{
text-align:right;
empty-cells:show
vertical-align:center;
}
table.ergtabelle tbody tr.listRowEven td.decimal
{
text-align:right;
empty-cells:show
vertical-align:center;
}
table.ergtabelle tbody tr.listRowOdd td.decimal
{
text-align:right;
empty-cells:show
vertical-align:center;
}

39
superx/xml/js/viz/viz_assistent.js

@ -1710,21 +1710,42 @@ function showLoadMenu()
function loadVizChartDef() function loadVizChartDef()
{ {
loadVizChartSrcCode(document.getElementById('viz_chart_id_load').value,document.getElementById('viz_chart_variant_load').value); try {
loadChartModelCode('chartModelSrcCode','chartDiv'); loadVizChartSrcCode(document.getElementById('viz_chart_id_load').value,document.getElementById('viz_chart_variant_load').value);
loadChartModelCode('chartModelSrcCode','chartDiv');
}
catch(err) {
console.log("Error when loading chart definition: "+err);
}
} }
function loadVizChartSrcCode(vizChartTid,chartVariant) function loadVizChartSrcCode(vizChartTid,chartVariant)
{ {
zs="Kein quellcode verfügbar"; var zs="Kein quellcode verfügbar";
var caption=document.getElementById("chartName").value;
var newRenderer=document.getElementById("fldVizRenderer").value;
for(var i=0; i < vizCharts.length ; i++){ for(var i=0; i < vizCharts.length ; i++){
if(vizCharts[i].tid==vizChartTid) if(vizCharts[i].tid==vizChartTid)
{ {
zs=vizCharts[i].chartmodel.replace(/§/g,"\""); zs=vizCharts[i].chartmodel.replace(/§/g,"\"");
if(zs.indexOf("echarts_native")!=-1)
{
alert("Dies ist ein natives Diagramm und kann nicht im Assistenten bearbeitet werden.");
zs="";
}
else
{
caption=vizCharts[i].caption;
newRenderer=vizCharts[i].renderer;
}
} }
} }
var myCodeDiv= document.getElementById("chartModelSrcCode"); var myCodeDiv= document.getElementById("chartModelSrcCode");
document.getElementById("chartName").innerHTML=caption;
document.getElementById("chartName").value=caption;
document.getElementById("fldVizRenderer").value=newRenderer;
myCodeDiv.innerHTML=zs; myCodeDiv.innerHTML=zs;
myCodeDiv.value=zs; myCodeDiv.value=zs;
} }
@ -1813,17 +1834,23 @@ var myLoadSaveDialog= document.getElementById(myDiv);
else else
myLoadSaveDialog.style.display="block"; myLoadSaveDialog.style.display="block";
mySelect=document.getElementById("viz_chart_id"); mySelect=document.getElementById("viz_chart_id");
fillVizChartSelectOptions(mySelect); var currentSelection=document.getElementById("viz_chart_id_load").value;
fillVizChartSelectOptions(mySelect,currentSelection);
} }
function fillVizChartSelectOptions(mySelect) function fillVizChartSelectOptions(mySelect,currentSelection)
{ {
var zs=""; var zs="";
for(var i=0; i < vizCharts.length ; i++){ for(var i=0; i < vizCharts.length ; i++){
if(vizCharts[i].maskeninfo_id==currentMaskeninfoId if(vizCharts[i].maskeninfo_id==currentMaskeninfoId
&& document.getElementById("fldVizRenderer").value==vizCharts[i].renderer) && document.getElementById("fldVizRenderer").value==vizCharts[i].renderer)
{ {
zs+="<option value=\""+vizCharts[i].tid+"\">"+vizCharts[i].caption +"</option>"; zs+="<option value=\""+vizCharts[i].tid+"\"";
if(currentSelection==vizCharts[i].tid)
{
zs+=" selected=\"selected\"";
}
zs+=">"+vizCharts[i].caption +"</option>";
} }
} }
zs+="<option value=\"\">Neue Grafik</option>"; zs+="<option value=\"\">Neue Grafik</option>";

37
superx/xml/js/viz/viz_viewer.js

@ -270,7 +270,7 @@ function getLineOrColumnNumberArray(elementcount,selectionString)
// find digit after ">": // find digit after ">":
var p1=selectionString.split(">"); var p1=selectionString.split(">");
var p2=p1[1].split(" "); var p2=p1[1].split(" ");
minElement=parseInt(p2[0])-1; //e.g. 2 minElement=parseInt(p2[0])+2; //e.g. 2
} }
var maxElement=elementcount; var maxElement=elementcount;
if(selectionString && selectionString.indexOf("<")!=-1) if(selectionString && selectionString.indexOf("<")!=-1)
@ -1855,18 +1855,36 @@ var yAxisType="value";
var orientation=chartTypes[2]; var orientation=chartTypes[2];
var seriesFldname=getChartElementPropertyValueFromModel(currentChartModel,1,"stroke"); var seriesFldname=getChartElementPropertyValueFromModel(currentChartModel,1,"stroke");
var seriesArray= new Array(); var seriesArray= new Array();
var i=0;
myDataset.source.forEach((row) => { myDataset.source.forEach((row) => {
//}
//for (var i=0;i<5;i++) if(i>0)
//{ {
//Das erste Element ist immer die Serien-Dimension, wird daher übersprungen
var mySeriesObj={ var mySeriesObj={
type: chartTypes[1], //bar,line, type: chartTypes[1], //bar,line,
smooth: true, smooth: true,
seriesLayoutBy: 'row', seriesLayoutBy: 'row',
emphasis: { focus: 'series' }, emphasis: { focus: 'series' },
stack:"myStack" stack:"myStack",
name:row[0],
label: {
show: (getChartPropertyValue(currentChartModel.chartPropertiesUsed,"valueLabelShow")=="false")?false:true, //true
fontWeight:'bolder',
fontSize: 14,
distance:30,
//offset:[30, 40],
// position:"bottom",
/*labelLayout:{}*/
position:getChartPropertyValue(currentChartModel.chartPropertiesUsed,"position_valueLabel"), //"bottom",
offset: getOffsetValuelabelArray(getChartPropertyValue(currentChartModel.chartPropertiesUsed,"offset_x_valueLabel"),
getChartPropertyValue(currentChartModel.chartPropertiesUsed,"offset_y_valueLabel")),
}
}; };
seriesArray.push(mySeriesObj); seriesArray.push(mySeriesObj);
}
i++;
}); });
/* /*
var mySeriesObj2={ var mySeriesObj2={
@ -1886,7 +1904,12 @@ var option = {
config: { dimension: "dim_studiengang_fb", order: 'asc' } config: { dimension: "dim_studiengang_fb", order: 'asc' }
} }
,*/ ,*/
legend: {top:"10%"}, legend: {
show: (getChartPropertyValue(currentChartModel.chartPropertiesUsed,"legendShow")=="false")?false:true, //true
type: (getChartPropertyValue(currentChartModel.chartPropertiesUsed,"legend.scroll")=="false")?"plain":"scroll",
top:getChartPropertyValue(currentChartModel.chartPropertiesUsed,"legend.top"),
left:getChartPropertyValue(currentChartModel.chartPropertiesUsed,"legend.left")
},
title: { title: {
text: titleText, text: titleText,
subtext: subtitleText, subtext: subtitleText,
@ -2138,6 +2161,8 @@ function getChartElementPropertyValueFromModel(myChartModel,elemID,propUniquenam
return retVal; return retVal;
} }
function getChartPropertyFromModel(myChartProperties,name,isCommon) function getChartPropertyFromModel(myChartProperties,name,isCommon)
{ {
var propertyValue=""; var propertyValue="";

428
superx/xml/viz_components.xsl

@ -6,31 +6,30 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sx="http://memtext.de">
<xsl:template name="head_superx_viz"> <xsl:template name="head_superx_viz">
<xsl:param name="css" /> <xsl:param name="css" />
<xsl:param name="title" /> <xsl:param name="title" />
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</meta><!-- <link rel="stylesheet" type="text/css" href="../xml/his1/css.._menue_html.css" /> --> </meta><!-- <link rel="stylesheet" type="text/css" href="../xml/his1/css.._menue_html.css" /> -->
<link rel="stylesheet" type="text/css" href="../style/superx.css"/> <link rel="stylesheet" type="text/css" href="../style/superx.css"/>
<link rel="stylesheet" type="text/css" href="../xml/menue_html.css"/> <link rel="stylesheet" type="text/css" href="../xml/menue_html.css"/>
<link rel="stylesheet" type="text/css" href="../xml/superxml_html.css"/> <link rel="stylesheet" type="text/css" href="../xml/superxml_html.css"/>
<link rel="stylesheet" type="text/css" href="../xml/maske_html.css" /> <link rel="stylesheet" type="text/css" href="../xml/maske_html.css" />
<link rel="stylesheet" type="text/css" href="../xml/tabelle_html.css" /> <link rel="stylesheet" type="text/css" href="../xml/tabelle_html.css" />
<link rel="stylesheet" type="text/css" href="../xml/superx_standalone.css"/> <link rel="stylesheet" type="text/css" href="../xml/superx_standalone.css"/>
<link rel="stylesheet" type="text/css" href="../xml/css/fontello-codes.css" /> <link rel="stylesheet" type="text/css" href="../xml/css/fontello-codes.css" />
<link rel="stylesheet" type="text/css" href="../xml/css/start_portlet.css" /> <link rel="stylesheet" type="text/css" href="../xml/css/start_portlet.css" />
<link rel="stylesheet" type="text/css" href="../style/bulma.css" /> <link rel="stylesheet" type="text/css" href="../style/bulma.css" />
<link rel="stylesheet" type="text/css" href="../style/bulma-tooltip.min.css" /> <link rel="stylesheet" type="text/css" href="../style/bulma-tooltip.min.css" />
<link rel="stylesheet" type="text/css" href="../style/sx_viz_muster.css" /> <link rel="stylesheet" type="text/css" href="../style/sx_viz_muster.css" />
</head>
</head>
</xsl:template> </xsl:template>
<xsl:template name="head_hisinone_viz"> <xsl:template name="head_hisinone_viz">
<xsl:param name="css" /> <xsl:param name="css" />
<xsl:param name="title" /> <xsl:param name="title" />
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</meta> </meta>
@ -61,13 +60,13 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sx="http://memtext.de">
</title> </title>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
<link rel="stylesheet" type="text/css" href="../xml/his1/css/HISinOne.css" /> <link rel="stylesheet" type="text/css" href="../xml/his1/css/HISinOne.css" />
<!--<script src="../xml/js/jquery/jquery.mobile-1.4.2.min.js"></script> <!--<script src="../xml/js/jquery/jquery.mobile-1.4.2.min.js"></script>
<link rel="stylesheet" href="../xml/js/jquery/jquery.mobile.structure-1.4.2.dw.css" /> <link rel="stylesheet" href="../xml/js/jquery/jquery.mobile.structure-1.4.2.dw.css" />
<link rel="stylesheet" href="../xml/js/jquery/jqm-demos.dw.css" /> --> <link rel="stylesheet" href="../xml/js/jquery/jqm-demos.dw.css" /> -->
<link rel="stylesheet" type="text/css" href="../xml/css/fontello-codes.css" /> <link rel="stylesheet" type="text/css" href="../xml/css/fontello-codes.css" />
<link rel="stylesheet" type="text/css" href="../xml/css/start_portlet.css" /> <link rel="stylesheet" type="text/css" href="../xml/css/start_portlet.css" />
<link rel="stylesheet" type="text/css" href="../style/bulma.css" /> <link rel="stylesheet" type="text/css" href="../style/bulma.css" />
<link rel="stylesheet" type="text/css" href="../style/bulma-tooltip.min.css" /> <link rel="stylesheet" type="text/css" href="../style/bulma-tooltip.min.css" />
@ -77,13 +76,27 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sx="http://memtext.de">
<xsl:if test="$css != ''"> <xsl:if test="$css != ''">
<link rel="stylesheet" type="text/css" href="$css" /> <link rel="stylesheet" type="text/css" href="$css" />
</xsl:if> </xsl:if>
</head>
</head>
</xsl:template> </xsl:template>
<xsl:template name="tableJavascript_viz_alt"> <xsl:template name="tableJavascript_viz_alt">
<script language="Javascript" type="text/javascript" src="../xml/js/jquery-2.1.1.min.js" /> <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> <script language="JavaScript" type="text/javascript" src="../xml/js/memtext/sx_functions.js"></script>
<script language="JavaScript" type="text/javascript"> <!--20251011 eingefügt-->
document.addEventListener('DOMContentLoaded', () => {
const tabs = document.querySelectorAll('.dashboard-tabs li');
tabs.forEach(tab => {
tab.addEventListener('click', () => {
// Alle Tabs deaktivieren
tabs.forEach(t => t.classList.remove('is-active', 'active'));
// Geklickten Tab aktivieren
tab.classList.add('is-active');
});
});
});
</script>
<xsl:call-template name="importVizJavascriptLibs" /> <xsl:call-template name="importVizJavascriptLibs" />
@ -1153,9 +1166,9 @@ Stand: <xsl:value-of select="../stand" /></p>
</xsl:call-template> </xsl:call-template>
</xsl:when> </xsl:when>
<xsl:otherwise><!--nicht dynamisch--> <xsl:otherwise><!--nicht dynamisch-->
<xsl:attribute name="class"><xsl:value-of select="concat('fixed-grid has-',$spalten_anz,'-cols')" /> <xsl:attribute name="class"><xsl:value-of select="concat('fixed-grid has-',$spalten_anz,'-cols fullwidth-grid')" />
</xsl:attribute> </xsl:attribute>
<div class="grid"> <div class="grid" style="margin-top: 1rem;">
<xsl:call-template name="viz_viewer_grid_cells" > <xsl:call-template name="viz_viewer_grid_cells" >
<xsl:with-param name="kachelbreite" select="$kachelbreite"/> <xsl:with-param name="kachelbreite" select="$kachelbreite"/>
<xsl:with-param name="kachelhoehe" select="$kachelhoehe"/> <xsl:with-param name="kachelhoehe" select="$kachelhoehe"/>
@ -1710,8 +1723,8 @@ Platzhalter
<header style="padding-top:2rem;"> <header style="padding-top:2rem;">
<div class="hs_header" style="padding-bottom:0px;margin-bottom:0px"> <div class="hs_header" style="padding-bottom:0px;margin-bottom:0px">
<div style="padding-bottom:0px;margin-bottom:0px;border-bottom:none;"> <div style="padding-bottom:0px;margin-bottom:0px;border-bottom:none;">
<div class="columns" style="margin-left:15px;margin-bottom:0px;background-color:#f3ebeb;"> <!--20250220 style eingefügt--> <div class="columns" style="margin-left:15px; margin-right:15px; margin-bottom:0px;background-color:#ebf1f3;">
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr='0']/ergebniselement/sqlerg/row [col[f_name='wert']/wert !='']"> <xsl:for-each select="/ergebnisse/ergebnis[@ordnr='0']/ergebniselement/sqlerg/row [col[f_name='wert']/wert !='']">
<div class="column"> <div class="column">
<span style="font-size:2rem;font-weight:bolder"><xsl:value-of select="col[f_name='wert']/wert"/></span><br /> <span style="font-size:2rem;font-weight:bolder"><xsl:value-of select="col[f_name='wert']/wert"/></span><br />
@ -1719,33 +1732,40 @@ Platzhalter
<span style="font-size:1rem;font-weight:bolder;color:#C00000;"><xsl:value-of select="col[f_name='kennz']/wert"/><xsl:text> (</xsl:text><xsl:value-of select="../../../felder/feld [@varname='Bis Semester']/value_caption"/><xsl:text>)</xsl:text></span> <span style="font-size:1rem;font-weight:bolder;color:#C00000;"><xsl:value-of select="col[f_name='kennz']/wert"/><xsl:text> (</xsl:text><xsl:value-of select="../../../felder/feld [@varname='Bis Semester']/value_caption"/><xsl:text>)</xsl:text></span>
</div> </div>
</xsl:for-each> </xsl:for-each>
<div class="column"><p align="right"> <div class="column">
<p align="right">
<xsl:if test="$bookletStylesheet!=''"> <xsl:if test="$bookletStylesheet!=''">
<a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true;" > <a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true;" >
<xsl:attribute name="href"><xsl:text>javascript:exportVizBooklet('application/pdf','</xsl:text><xsl:value-of select="$bookletStylesheet"/><xsl:text>');</xsl:text> <xsl:attribute name="href"><xsl:text>javascript:exportVizBooklet('application/pdf','</xsl:text><xsl:value-of select="$bookletStylesheet"/><xsl:text>');</xsl:text>
</xsl:attribute> </xsl:attribute>
<img title="Ausgabe im PDF-Querformat" alt="Ausgabe im PDF-Querformat" src="../images/icons/into_pdf.svg" style="width:30px;height:40px" border="0" /></a> <img title="Ausgabe im PDF-Querformat" alt="Ausgabe im PDF-Querformat" src="../images/icons/into_pdf.svg" style="width:30px;height:40px" border="0" /></a>
<span class="separator">&#160;</span> <!--20251001 entfernt:<span class="separator">&#160;</span>-->
<a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true"> <a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true">
<xsl:attribute name="href"><xsl:text>javascript:exportVizBooklet('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','</xsl:text><xsl:value-of select="$bookletStylesheet"/><xsl:text>');</xsl:text> <xsl:attribute name="href"><xsl:text>javascript:exportVizBooklet('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','</xsl:text><xsl:value-of select="$bookletStylesheet"/><xsl:text>');</xsl:text>
</xsl:attribute> </xsl:attribute>
<img title="Ausgabe in Excel" alt="Ausgabe in Excel" src="../images/icons/into_excel_normal.svg" style="width:30px;height:40px" border="0" /></a> <img title="Ausgabe in Excel" alt="Ausgabe in Excel" src="../images/icons/into_excel_normal.svg" style="width:30px;height:40px" border="0" /></a>
<span class="separator">&#160;</span> <!--20251001 entfernt:<span class="separator">&#160;</span>-->
<a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true"> <a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true">
<xsl:attribute name="href"><xsl:text>javascript:exportVizBooklet('application/vnd.openxmlformats-officedocument.wordprocessingml.document','</xsl:text><xsl:value-of select="$bookletStylesheet"/><xsl:text>');</xsl:text> <xsl:attribute name="href"><xsl:text>javascript:exportVizBooklet('application/vnd.openxmlformats-officedocument.wordprocessingml.document','</xsl:text><xsl:value-of select="$bookletStylesheet"/><xsl:text>');</xsl:text>
</xsl:attribute> </xsl:attribute>
<img title="Ausgabe in Word" alt="Ausgabe in Word" width="25px" height="25px" src="../images/icons/into_word.svg" style="width:30px;height:40px" border="0" /></a> <!--20251001 entfernt wg Einheitlichkeit::width="25px" height="25px"-->
</xsl:if><!-- wenn JR Stylesheet --> <img title="Ausgabe in Word" alt="Ausgabe in Word" src="../images/icons/into_word.svg" style="width:30px;height:40px" border="0" /></a>
</p>
</xsl:if><!-- wenn JR Stylesheet -->
<xsl:call-template name="weiterverarbeitungHiddenInputs" > </p>
<xsl:with-param name="formName" select="'Weiterverarbeitung'" />
<xsl:with-param name="ergebniselement_ordnr" select="0" /> <xsl:call-template name="weiterverarbeitungHiddenInputs" >
</xsl:call-template> <xsl:with-param name="formName" select="'Weiterverarbeitung'" />
</div> <xsl:with-param name="ergebniselement_ordnr" select="0" />
</div> </xsl:call-template>
</div>
</div>
</div> </div>
<div class="tabs is-boxed is-centered is-toggle is-toggle-rounded is-fullwidth" id="nav"> <!--20251001 tabs geändert in dashboard-tabs <div class="tabs is-boxed is-centered is-toggle is-toggle-rounded is-fullwidth" id="nav">-->
<!--20251001 tabs geändert in dashboard-tabs-->
<!--<div class="dashboard-tabs is-boxed is-centered is-toggle is-toggle-rounded is-fullwidth" id="nav">-->
<div class="tab-container" id="nav">
<script language="Javascript"> <script language="Javascript">
<xsl:text> <xsl:text>
var optionalFilters = new Array(); var optionalFilters = new Array();
@ -1759,7 +1779,7 @@ Platzhalter
</xsl:text> </xsl:text>
</xsl:for-each> </xsl:for-each>
</script> </script>
<ul style="border-bottom:thin solid black;"> <ul class="dashboard-tabs">
<xsl:variable name="currentTabNr" select="/ergebnisse/ergebnis[@ordnr='0']/felder/feld[@varname='Tabnr.']/value" /> <xsl:variable name="currentTabNr" select="/ergebnisse/ergebnis[@ordnr='0']/felder/feld[@varname='Tabnr.']/value" />
@ -1776,13 +1796,11 @@ Platzhalter
</xsl:for-each> </xsl:for-each>
</ul> </ul>
<xsl:call-template name="vizGridTitle" >
</div><!--Ende grauer Hintergrund der tabs--> </xsl:call-template>
</div><!--Ende grauer Hintergrund der tabs-->
</div> </div>
</header> </header>
@ -2156,285 +2174,7 @@ td.integer {
</div> </div>
</div> </div>
</xsl:template> </xsl:template>
<xsl:template name="vizTableCSS">
<!-- aus 800000280_datencockpit.xsl -->
<style type="text/css">
.dojoDialog {background : #eee; border : 1px solid #999;-moz-border-radius : 5px;padding : 4px;width:650;height:420px;overflow:scroll}
.treebutton {
border:none;
margin: 0 4px 0 0;
}
@media print{
.dontprint{display:none;}
}
html, body {
height: auto;
min-height: 100vh;
overflow-x: hidden;
overflow-y: auto;
}
/*Cockpit-Header*/
.hs_header {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 20; /*positioniert sich im flow am nähesten zum Betrachter*/
background-color:white;
padding-top: 3rem;
}
.cockpit_title {
color: white;
font-size: 2rem;
font-weight: 800;
background-color: #004c93;
padding-left:20px;
}
.navbar {background-color: white;} /*20250221 eingefügt*/
.navbar-item img, .navbar-item svg { /*20250221 eingefügt*/
max-height: unset !important; /*var(--bulma-navbar-item-img-max-height);*/
}
.hs_header_box1 { /*für Balken-Box über/unter Cockpittitel*/
background: white;
height: 1.0rem;
color: black;
}
.hs_header_box2 { /*für Logo-/Cockpittitel-Box*/
display: flex;
/* height: 4.0rem;*/
padding: 0.3rem 17.0rem 0rem 9.0rem; /*für Padding: ob re un li*/
align-items: left; /*für vertikale Ausrichtung d Elemente*/
/*justify-content: space-between;*/ /*für gleichm. Leerraum zw. Elementen*/
background-color: #004c93;
}
@media screen and (max-width: 768px) { /* 300425BF eingefügt*/
.hs_header {
background: red;
padding: 10em;
}
}
.buttons-container { /* 300425BF eingefügt*/
display: flex;
justify-content: flex-end; /* rechts ausrichten */
align-items: center; /* vertikal zentrieren */
flex-wrap: wrap; /* für kleine Viewports */
padding-top: 1.0rem;
}
.button.is-link {
background-color: white; /*link-Blau:#3273dc; UDE-Blau:#004C93*/
border-color: transparent;
color: #004C93; }
.button.is-link:hover, .button.is-link.is-hovered {
background-color: #276cda;
border-color: transparent;
color: #004C93; }
.button.is-link:focus, .button.is-link.is-focused {
border-color: transparent;
color: #004C93; }
.button.is-link:focus:not(:active), .button.is-link.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }
.button.is-link:active, .button.is-link.is-active {
background-color: white;
border-color: transparent;
color: #004C93; }
.button.is-link[disabled],
fieldset[disabled] .button.is-link {
background-color: #004C93;
border-color: transparent;
box-shadow: none; }
.button.is-link.is-inverted {
background-color: #fff;
color: #004C93; }
.button.is-link.is-inverted:hover, .button.is-link.is-inverted.is-hovered {
background-color: #f2f2f2; }
.button.is-link.is-inverted[disabled],
fieldset[disabled] .button.is-link.is-inverted {
background-color: #fff;
border-color: transparent;
box-shadow: none;
color: #004C93; }
.button.is-link.is-loading::after {
border-color: transparent transparent #fff #fff !important; }
.button.is-link.is-outlined {
background-color: white;
border-color: #004C93;
color: #004C93; }
.button.is-link.is-outlined:hover, .button.is-link.is-outlined.is-hovered, .button.is-link.is-outlined:focus, .button.is-link.is-outlined.is-focused {
background-color: #004C93;
border-color: #004C93;
color: #fff; }
.button.is-link.is-outlined.is-loading::after {
border-color: transparent transparent #004C93; #004C93; !important; }
.button.is-link.is-outlined.is-loading:hover::after, .button.is-link.is-outlined.is-loading.is-hovered::after, .button.is-link.is-outlined.is-loading:focus::after, .button.is-link.is-outlined.is-loading.is-focused::after {
border-color: transparent transparent #fff #fff !important; }
.button.is-link.is-outlined[disabled],
fieldset[disabled] .button.is-link.is-outlined {
background-color: transparent;
border-color: #004C93;
box-shadow: none;
color: #004C93; }
.button.is-link.is-inverted.is-outlined {
background-color: transparent;
border-color: #fff;
color: #fff; }
.button.is-link.is-inverted.is-outlined:hover,
.button.is-link.is-inverted.is-outlined.is-hovered,
.button.is-link.is-inverted.is-outlined:focus,
.button.is-link.is-inverted.is-outlined.is-focused {
background-color: #fff;
color: #004C93; }
.button.is-link.is-inverted.is-outlined.is-loading:hover::after,
.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,
.button.is-link.is-inverted.is-outlined.is-loading:focus::after, .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after {
border-color: transparent transparent #004C93; #004C93; !important; }
.button.is-link.is-inverted.is-outlined {
background-color: transparent;
border-color: #fff;
color: #fff; }
.button.is-link.is-inverted.is-outlined:hover,
.button.is-link.is-inverted.is-outlined.is-hovered,
.button.is-link.is-inverted.is-outlined:focus,
.button.is-link.is-inverted.is-outlined.is-focused {
background-color: #fff;
color: #004C93; }
.button.is-small.is-rounded.is-link.has-tooltip-bottom { background-color: #004C93; /*UDE-Blau*/ } /*20250711 eingefügt*/
.exportoptions {
margin-top: 2.0em;
}
.buttonlist{ /*für resposive Buttonleiste*/
display: flex;
flex-flow: no wrap;
justify-content: flex-start;
padding: 0.3rem 0rem 0.3rem 0rem; /*für Padding: ob re un li*/
}
.buttonlist img { /*für Icongröße in Buttonleiste*/
height: 2.5rem;
width: auto;
margin-top: 0em; }
/*Auswahlfelder*/
.card { /*für Auswahlfeldercard-Position*/
display: flex;
flex-flow: column;
margin-left: 0em;
margin-top: 8em;
min-width: 10.0em;
width: 100%;
}
.card.is-shady { border: unset !important; } /*20250709 eingefügt */
.label-container, .button-label { /*für einh.responsive Feldbezeichner*/
display: flex;
justify-content: left;
background: ;
min-width: 10.0em; /*für kleine Viewports*/
width: 10%; } /*für kleine Viewports*/
.control-new { /*für einheitliche Controls*/
min-width: 10.0em; /*für kleine Viewports*/
width: 10%; /*für große Viewports*/
}
.button { /*für Button-Bezeichner-Ausrichtung*/
display: flex;
justify-content: left; }
/*Erläuterungen/Legende*/
.box-new { /*für Kopfzeile mit Close-Button*/
display: flex;
justify-content: space-between;
font-weight: bold;
}
.leg_erl {
background-color: whitesmoke; /*für Abschnitthintergrund, Schrift*/
font-size: 0.8em;
}
.dl_title { /*für Texthervorhebungen*/
display: flex;
justify-content: center;
background: inherit;
font-size: 1.2em;
font-weight: 400;
}
/*Datentabellen*/
.table-container {
z-index: 10; /*positioniert sich im flow hinter dem hs_header*/
}
table.ergtabelle tr.listRowOdd td.leer
{
border:thin solid white;
background-color:white;
}
table.ergtabelle tr.listRowEven td.leer
{
border:thin solid white;
background-color:white;
}
table.ergtabelle tr td.leer
{
border:thin solid white;
background-color:white;
}
table.ergtabelle tr th.leer
{
border:thin solid white;
background-color:white;
}
table.ergtabelle tr th.header
{
vertical-align:center;
text-align:center;
}
table.ergtabelle
{
border:thin solid white;
font-size:1.5rem;
}
/* Zahlen rechtsbündig:*/
table.ergtabelle tbody tr.listRowEven td.integer
{
text-align:right;
empty-cells:show
vertical-align:center;
}
table.ergtabelle tbody tr.listRowOdd td.integer
{
text-align:right;
empty-cells:show
vertical-align:center;
}
table.ergtabelle tbody tr.listRowEven td.decimal
{
text-align:right;
empty-cells:show
vertical-align:center;
}
table.ergtabelle tbody tr.listRowOdd td.decimal
{
text-align:right;
empty-cells:show
vertical-align:center;
}
</style>
</xsl:template>
<xsl:template name="nd_legendeHeaderContent"> <xsl:template name="nd_legendeHeaderContent">
<xsl:param name="ergebniselement_ordnr" select="0" /> <xsl:param name="ergebniselement_ordnr" select="0" />
@ -2531,11 +2271,11 @@ vertical-align:center;
<xsl:value-of select="/ergebnisse/ergebnis[@ordnr=0]/felder/feld[@tid=$gridtitle_felderinfo_id]/value_caption" /> <xsl:value-of select="/ergebnisse/ergebnis[@ordnr=0]/felder/feld[@tid=$gridtitle_felderinfo_id]/value_caption" />
</xsl:variable> </xsl:variable>
<div id="nd_pagetitle"> <div id="nd_pagetitle">
<p class="title is-4"> <p class="vizTitle">
<xsl:call-template name="renderIconIfExists"> <!--<xsl:call-template name="renderIconIfExists">
<xsl:with-param name="classname" select="$icon_classname" /> <xsl:with-param name="classname" select="$icon_classname" />
<xsl:with-param name="context" select="'normal'" /> <xsl:with-param name="context" select="'normal'" />
</xsl:call-template> </xsl:call-template>-->
<xsl:choose> <xsl:choose>
<xsl:when test="$selectedName='keine Einschränkung' or $selectedName=''"> <xsl:when test="$selectedName='keine Einschränkung' or $selectedName=''">
<xsl:value-of select="/ergebnisse/generalinfo/REPORT_HEADING_INSTITUTION"/> <xsl:value-of select="/ergebnisse/generalinfo/REPORT_HEADING_INSTITUTION"/>

13
superx/xml/viz_html_chart_viewer_grid.xsl

@ -42,13 +42,13 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
</xsl:call-template> </xsl:call-template>
<link rel="stylesheet" href="../style/sx_tabelle.css" /> <link rel="stylesheet" href="../style/sx_tabelle.css" />
<link rel="stylesheet" type="text/css" href="../style/sx_viz_muster.css" />
<!--<link rel="stylesheet" href="../style/superx.css" />--> <!--<link rel="stylesheet" href="../style/superx.css" />-->
</head> </head>
<xsl:call-template name="nd_htmlscript" /> <xsl:call-template name="nd_htmlscript" />
<xsl:call-template name="nd_tableJavascript" /> <xsl:call-template name="nd_tableJavascript" />
<xsl:call-template name="nd_tableCSS" /> <xsl:call-template name="nd_tableCSS" />
<xsl:call-template name="vizTableCSS" />
<xsl:call-template name="importVizViewer"></xsl:call-template> <xsl:call-template name="importVizViewer"></xsl:call-template>
<body class="has-navbar-fixed-top" onload="document.getElementById('progressbar').style.display='none';initPage();"> <body class="has-navbar-fixed-top" onload="document.getElementById('progressbar').style.display='none';initPage();">
@ -75,9 +75,6 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
<div id="content" style="padding-left:1rem;padding-top:6rem"> <div id="content" style="padding-left:1rem;padding-top:6rem">
<!--#Template Beginn Seitentitel--> <!--#Template Beginn Seitentitel-->
<xsl:variable name="masken_tid"><xsl:value-of select="/ergebnisse/ergebnis[@ordnr='0']/maskenname/@id"/></xsl:variable> <xsl:variable name="masken_tid"><xsl:value-of select="/ergebnisse/ergebnis[@ordnr='0']/maskenname/@id"/></xsl:variable>
<xsl:call-template name="vizGridTitle" >
<xsl:with-param name="icon_classname" select="/ergebnisse/menue/eintraege/eintrag[@isMaske='true' and tid=$masken_tid]/css_class" />
</xsl:call-template>
<!--#Template Krümelpfad--> <!--#Template Krümelpfad-->
<!--<xsl:call-template name="nd_breadcrumb" />--> <!--<xsl:call-template name="nd_breadcrumb" />-->
@ -85,7 +82,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
<xsl:call-template name="buildVizMetadata" /> <xsl:call-template name="buildVizMetadata" />
<div class="columns features is-mobile is-left"> <div class="columns is-mobile is-left">
<div class="column"> <div class="column">
<xsl:call-template name="viz_viewer_grid" > <xsl:call-template name="viz_viewer_grid" >
<xsl:with-param name="openModalCardDetail" select="'false'" /> <xsl:with-param name="openModalCardDetail" select="'false'" />
@ -141,12 +138,12 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
<div class="field"><span class="buttonlist"> <div class="field"><span class="buttonlist">
<a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true" href="javascript:exportBooklet('application/pdf')"> <a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true" href="javascript:exportBooklet('application/pdf')">
<img title="Ausgabe im PDF-Querformat" alt="Ausgabe im PDF-Querformat" src="../images/icons/into_pdf.svg" class="svg_icon" border="0" /></a> <img title="Ausgabe im PDF-Querformat" alt="Ausgabe im PDF-Querformat" src="../images/icons/into_pdf.svg" class="svg_icon" border="0" /></a>
<span class="separator">&#160;</span>
<a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true" href="javascript:exportBooklet('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')"> <a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true" href="javascript:exportBooklet('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')">
<img title="Ausgabe in Excel" alt="Ausgabe in Excel" src="../images/icons/into_excel_normal.svg" class="svg_icon" border="0" /></a> <img title="Ausgabe in Excel" alt="Ausgabe in Excel" src="../images/icons/into_excel_normal.svg" class="svg_icon" border="0" /></a>
<span class="separator">&#160;</span>
<a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true" href="javascript:exportBooklet('application/vnd.openxmlformats-officedocument.wordprocessingml.document')"> <a onmouseover="window.status='Export starten';return true" onfocus="window.status='Download starten';return true" onmouseout="window.status='Download starten';return true" href="javascript:exportBooklet('application/vnd.openxmlformats-officedocument.wordprocessingml.document')">
<img title="Ausgabe in Word" alt="Ausgabe in Word" width="25px" height="25px" src="../images/icons/into_word.svg" class="svg_icon" border="0" /></a> <img title="Ausgabe in Word" alt="Ausgabe in Word" src="../images/icons/into_word.svg" class="svg_icon" border="0" /></a>
</span> </span>

Loading…
Cancel
Save