Browse Source

Dashboard beschleunigen mit RPTA-Technik #7

master
Daniel Quathamer 3 months ago
parent
commit
9b442e0b3b
  1. 2
      src-modules/module/viz/conf/viz.xml
  2. 4
      src-modules/module/viz/masken/44220_felderinfo.unl
  3. 2
      src-modules/module/viz/masken/44220_maskeninfo.unl
  4. 6
      src-modules/module/viz/masken/44570_felderinfo.unl
  5. 18
      src-modules/module/viz/schluesseltabellen/rpta_column_layout_sos_stud_geschl_fuellen.sql
  6. 3
      src-modules/module/viz/schluesseltabellen/rpta_column_layout_sos_stud_zeitreihe_fuellen.sql
  7. 34
      src-modules/module/viz/schluesseltabellen/studierende_datenblatt_dashboard.sql
  8. 25
      superx/xml/js/viz/viz_viewer.js
  9. 47
      superx/xml/viz_components.xsl

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

@ -660,6 +660,8 @@ parent="Visualisierungen">Abfragen zur Administration von Visualisierungen </the
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/sx_stylesheets_einfuegen.sql" database=""/> <nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/sx_stylesheets_einfuegen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/macro_masken_bez_fuellen.sql" database=""/> <nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/macro_masken_bez_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/viz_type_plot_fuellen.sql" database=""/> <nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/viz_type_plot_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/studierende_datenblatt_dashboard.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_fak_fuellen.sql" database=""/> <nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_fak_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_geschl_fuellen.sql" database=""/> <nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_geschl_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_hzbstaat_fuellen.sql" database=""/> <nativeaction sql="" scriptfile="$VIZ_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_hzbstaat_fuellen.sql" database=""/>

4
src-modules/module/viz/masken/44220_felderinfo.unl

@ -1,14 +1,14 @@
44220^Spaltenlayout^3000^350^-1^140^180^1^char^30^1^1^<<SQL>>SELECT uniquename,\ 44220^Spaltenlayout^3000^350^-1^140^180^1^char^30^1^1^<<SQL>>SELECT uniquename,\
caption\ caption\
FROM rpta_column_layout \ FROM rpta_column_layout \
where resultset_id in (select R.tid from rpta_resultset R where R.uniquename in ('sos_stud_astat')\ where resultset_id in (select R.tid from rpta_resultset R where R.uniquename in ('sos_stud_astat_dashboard')\
and R.systeminfo_id=7)\ and R.systeminfo_id=7)\
and uniquename in ('sos_stud_geschl_dashboard')\ and uniquename in ('sos_stud_geschl_dashboard')\
order by sortnr, caption\ order by sortnr, caption\
;^^<<SQL>>SELECT uniquename,\ ;^^<<SQL>>SELECT uniquename,\
caption\ caption\
FROM rpta_column_layout \ FROM rpta_column_layout \
where resultset_id in (select R.tid from rpta_resultset R where R.uniquename in ('sos_stud_astat')\ where resultset_id in (select R.tid from rpta_resultset R where R.uniquename in ('sos_stud_astat_dashboard')\
and R.systeminfo_id=7)\ and R.systeminfo_id=7)\
and uniquename in ('sos_stud_geschl_dashboard')\ and uniquename in ('sos_stud_geschl_dashboard')\
order by sortnr, caption limit 1\ order by sortnr, caption limit 1\

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

@ -1 +1 @@
44220^Studierende nach Geschlecht^<sximport>select select_stmt from maskeninfo where tid=48180</sximport>^<sximport>select xil_proplist from maskeninfo where tid=48180</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 tid=<<Spaltenlayout>>;^

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

@ -16,14 +16,14 @@
44588^Spaltenlayout^3000^350^-1^140^180^1^char^30^1^1^<<SQL>>SELECT uniquename,\ 44588^Spaltenlayout^3000^350^-1^140^180^1^char^30^1^1^<<SQL>>SELECT uniquename,\
caption\ caption\
FROM rpta_column_layout \ FROM rpta_column_layout \
where resultset_id in (select R.tid from rpta_resultset R where R.uniquename='sos_stud_astat'\ where resultset_id in (select R.tid from rpta_resultset R where R.uniquename='sos_stud_astat_dashboard'\
and R.systeminfo_id=7)\ and R.systeminfo_id=7)\
order by sortnr, caption\ order by sortnr, caption\
;^^<<SQL>>SELECT uniquename,\ ;^^<<SQL>>SELECT uniquename,\
caption\ caption\
FROM rpta_column_layout \ FROM rpta_column_layout \
where resultset_id in (select R.tid from rpta_resultset R where R.uniquename='sos_stud_astat'\ 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';^ 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^ 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^ 44590^##line##^30^0^0^100^100^1^char^5000^0^8^^^1^
44591^Abschluss^7^0^0^140^170^5^char^30^0^1^<<SQL>> select abint,dtxt from k_abint order by 2;^^^ 44591^Abschluss^7^0^0^140^170^5^char^30^0^1^<<SQL>> select abint,dtxt from k_abint order by 2;^^^

18
src-modules/module/viz/schluesseltabellen/rpta_column_layout_sos_stud_geschl_fuellen.sql

@ -8,10 +8,10 @@ select count(*) from systeminfo where tid=330;
<#assign rpta_column_layout = <#assign rpta_column_layout =
{"uniquename":"sos_stud_geschl_dashboard", {"uniquename":"sos_stud_geschl_dashboard",
"caption":"Studierende nach Geschlecht", "caption":"Studierende nach Geschlecht",
"rpta_resultset":"sos_stud_astat", "rpta_resultset":"sos_stud_astat_dashboard",
"whereclause":"stichtag=(select I.tid from sos_stichtag I where I.appl_key=''0'')", "whereclause":"",
"description":"Studierende nach Geschlecht für Dashboard", "description":"Studierende nach Geschlecht für Dashboard",
"is_virtual":0 "is_virtual":1
} }
/> />
@ -53,18 +53,6 @@ select count(*) from systeminfo where tid=330;
"is_aggregate":"0", "is_aggregate":"0",
"description":"Semester" "description":"Semester"
}, },
{"uniquename":"tid_stg",
"caption":"Studiengang",
"srcfieldname":"tid_stg",
"targetfieldname":"",
"column_type":"physicalColumn",
"col_function":"",
"is_visible":"0",
"format_code":"",
"visible_size":"5",
"is_aggregate":"0",
"description":"Studiengang"
},
{"uniquename":"summe", {"uniquename":"summe",
"caption":"Anzahl der Studierenden", "caption":"Anzahl der Studierenden",
"srcfieldname":"summe", "srcfieldname":"summe",

3
src-modules/module/viz/schluesseltabellen/rpta_column_layout_sos_stud_zeitreihe_fuellen.sql

@ -10,7 +10,8 @@ select count(*) from systeminfo where tid=330;
"caption":"Studierende nach Semester", "caption":"Studierende nach Semester",
"rpta_resultset":"sos_stud_astat_dashboard", "rpta_resultset":"sos_stud_astat_dashboard",
"whereclause":"", "whereclause":"",
"description":"Studierende nach Semester" "description":"Studierende nach Semester",
"is_virtual":1
} }
/> />

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

@ -46,6 +46,14 @@ caption,
from sx_tables where name in ('sos_k_hrst')*/ from sx_tables where name in ('sos_k_hrst')*/
order by 1 order by 1
</sqlvar> </sqlvar>
<sqlvar name="fact_table_fields">
select '(''tid_stg'',''sem_rueck_beur_ein'',''geschlecht'', ''hzbart'',''hzbart_int'', ''hzbkfz'', ''hzbkfzkz'', ''ca12_staat'', ''fach_sem_zahl'',''hs'',''summe'')'
from xdummy;
</sqlvar>
<sqlvar name="added_table_fields">
select '(''fb'', ''abschluss_grp'', ''abschluss_grp_str'', ''fb_str'',''abschluss_astat_bund'')'
from xdummy;
</sqlvar>
<sqlvar name="fields_target" type="hashsequence"><![CDATA[ <sqlvar name="fields_target" type="hashsequence"><![CDATA[
<#if fact_table_source?exists> <#if fact_table_source?exists>
select tid, table_name, select tid, table_name,
@ -53,7 +61,7 @@ select tid, table_name,
name as targetname name as targetname
from sx_fields where table_name ='${fact_table_source}' from sx_fields where table_name ='${fact_table_source}'
and currentlyused=1 and currentlyused=1
and name in ('tid_stg','sem_rueck_beur_ein','geschlecht', 'hzbart','hzbart_int', 'hzbkfz', 'hzbkfzkz', 'ca12_staat', 'fach_sem_zahl','hs','summe') and name in ${fact_table_fields}
<#foreach added_table in added_tables> <#foreach added_table in added_tables>
union union
select tid,table_name, select tid,table_name,
@ -61,7 +69,7 @@ select tid, table_name,
'${added_table.prefix}' || name as targetname '${added_table.prefix}' || name as targetname
from sx_fields where table_name ='${added_table.name}' from sx_fields where table_name ='${added_table.name}'
and currentlyused=1 and currentlyused=1
and name in ('fb', 'abschluss_grp', 'abschluss_grp_str', 'fb_str','abschluss_astat_bund') and name in ${added_table_fields}
</#foreach> </#foreach>
order by 1 order by 1
</#if> </#if>
@ -215,6 +223,7 @@ select '${fact_table_target.name}' as table_name,
is_sum, is_sum,
foreignkey_uniquename foreignkey_uniquename
from sx_fields where table_name ='${fact_table_source}' from sx_fields where table_name ='${fact_table_source}'
and name in ${fact_table_fields}
and currentlyused=1; and currentlyused=1;
<#foreach added_table in added_tables> <#foreach added_table in added_tables>
insert into tmp_fields (table_name, insert into tmp_fields (table_name,
@ -254,6 +263,7 @@ select '${fact_table_target.name}' as table_name,
is_sum, is_sum,
foreignkey_uniquename foreignkey_uniquename
from sx_fields where table_name ='${added_table.name}' from sx_fields where table_name ='${added_table.name}'
and name in ${added_table_fields}
and currentlyused=1; and currentlyused=1;
</#foreach> </#foreach>
@ -264,15 +274,18 @@ CREATE temp TABLE tmp_rpta_resultset
fieldclause text, fieldclause text,
joinclause text, joinclause text,
whereclause text, whereclause text,
systeminfo_id integer systeminfo_id integer,
is_virtual smallint default 1
); );
insert into tmp_rpta_resultset(caption, insert into tmp_rpta_resultset(caption,
uniquename, uniquename,
systeminfo_id) systeminfo_id,
is_virtual)
select '${fact_table_target.caption}', select '${fact_table_target.caption}',
'${fact_table_target.name}', '${fact_table_target.name}',
7 7,
0
; ;
@ -287,7 +300,7 @@ left outer join ${added_table.name} on (${added_table.joinclause})
</#foreach>'; </#foreach>';
--whereclause erstmal primitiv --whereclause erstmal primitiv
update tmp_rpta_resultset set whereclause = 'and stichtag in (select tid from sos_stichtag where appl_key=''0'') and hrst in (''H'',''N'',''0'') 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=''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)';
select * into temp tmp_rs1 select * into temp tmp_rs1
from rpta_resultset from rpta_resultset
; ;
@ -295,7 +308,8 @@ from rpta_resultset
update rpta_resultset set caption=T.caption, update rpta_resultset set caption=T.caption,
fieldclause=T.fieldclause, fieldclause=T.fieldclause,
joinclause=T.joinclause, joinclause=T.joinclause,
whereclause=T.whereclause whereclause=T.whereclause,
is_virtual=T.is_virtual
from tmp_rpta_resultset T from tmp_rpta_resultset T
where T.systeminfo_id=rpta_resultset.systeminfo_id where T.systeminfo_id=rpta_resultset.systeminfo_id
and T.uniquename=rpta_resultset.uniquename and T.uniquename=rpta_resultset.uniquename
@ -306,13 +320,15 @@ insert into rpta_resultset(caption,
fieldclause, fieldclause,
joinclause, joinclause,
whereclause, whereclause,
systeminfo_id) systeminfo_id,
is_virtual)
select caption, select caption,
uniquename, uniquename,
fieldclause, fieldclause,
joinclause, joinclause,
whereclause, whereclause,
systeminfo_id systeminfo_id,
is_virtual
from tmp_rpta_resultset from tmp_rpta_resultset
where 0=(select count(*) where 0=(select count(*)
from tmp_rs1 T from tmp_rs1 T

25
superx/xml/js/viz/viz_viewer.js

@ -2169,3 +2169,28 @@ var myModalCard=document.getElementById(elemId);
myModalCard.classList.remove('is-active'); myModalCard.classList.remove('is-active');
} }
function toggleSideBarDiv(mySidebarDivId)
{
//first cloe all divs in the sidebar except the one seleced:
const allSidebarDivs = document.getElementsByClassName("sidebar");
for (let i = 0; i < allSidebarDivs.length; i++) {
if(allSidebarDivs[i].id!=mySidebarDivId)
allSidebarDivs[i].style.display="none";
}
//now toggle:
var myDiv=document.getElementById(mySidebarDivId);
if(myDiv.style.display=="block")
{
myDiv.style.display="none";
myDiv.classList.remove("sidebar");
}
else
{
myDiv.style.display="block";
myDiv.classList.add("sidebar");
}
}

47
superx/xml/viz_components.xsl

@ -1092,9 +1092,7 @@ Platzhalter
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:variable> </xsl:variable>
<div class="card var(--bulma-card-background-color)" style="margin-top:5em;">
<form name="Weiterverarbeitung" method="post" target="_self" charset="UTF-8" action="SuperXmlTabelle"> <form name="Weiterverarbeitung" method="post" target="_self" charset="UTF-8" action="SuperXmlTabelle">
<div class="card-content">
<input name="navi" type="hidden" value="{/ergebnisse/@showNavigation}" /> <input name="navi" type="hidden" value="{/ergebnisse/@showNavigation}" />
<input type="hidden" name="tid" value="{$maskentid}"> <input type="hidden" name="tid" value="{$maskentid}">
@ -1164,9 +1162,9 @@ Platzhalter
</button> </button>
<!--<input type="submit" class="sx_buttondiv_submit" value="Neu laden..." onclick="document.forms['Weiterverarbeitung'].elements['reuseresult'].value='false';document.forms['Weiterverarbeitung'].elements['stylesheet'].value='tabelle_html_viz.xsl';return true;" />--> <!--<input type="submit" class="sx_buttondiv_submit" value="Neu laden..." onclick="document.forms['Weiterverarbeitung'].elements['reuseresult'].value='false';document.forms['Weiterverarbeitung'].elements['stylesheet'].value='tabelle_html_viz.xsl';return true;" />-->
</div> </div>
</div> <!--</div>-->
</form> </form>
</div> <!--</div>-->
</xsl:template> </xsl:template>
<xsl:template name="tabelleSicht"> <xsl:template name="tabelleSicht">
@ -1768,9 +1766,18 @@ td.integer {
border-radius: 0.3rem !important; border-radius: 0.3rem !important;
padding-right:20% padding-right:20%
} }
div.sidebar{ .sidebar {
padding-right:50px; position: fixed;
min-width: 30rem; top: 120px; /*Abstand zur oberen Leiste*/
padding-top:2em;
padding-left:0.5em;
right: 0;
bottom: 0;
width: 325px; /*Breite nach Bedarf */
background: white;
box-shadow: -2px 0 5px rgba(0,0,0,0.1);
overflow-y: auto;
z-index: 500; /*für Anzeige über Content*/
} }
.vizLabel-container { .vizLabel-container {
display: flex; display: flex;
@ -1781,24 +1788,7 @@ min-width: 30rem;
</style> </style>
<xsl:call-template name="vizSideBarButtons" /> <xsl:call-template name="vizSideBarButtons" />
<script>
function toggleSideBarDiv(mySidebarDivId)
{
var myDiv=document.getElementById(mySidebarDivId);
if(myDiv.style.display=="block")
{
myDiv.style.display="none";
myDiv.classList.remove("sidebar");
}
else
{
myDiv.style.display="block";
myDiv.classList.add("sidebar");
}
}
</script>
<div class="column"> <div class="column">
<div id="mySidebarMaske" class="sidebar" style="display:none;"> <div id="mySidebarMaske" class="sidebar" style="display:none;">
@ -1816,8 +1806,7 @@ min-width: 30rem;
<xsl:template name="erlaeuterung"> <xsl:template name="erlaeuterung">
<xsl:param name="ergebniselementOrdnr" select="0" /> <xsl:param name="ergebniselementOrdnr" select="0" />
<div class="card" style="font-size:1em;">
<div class="card-content">
<div class="media"> <div class="media">
<div class="media-content"> <div class="media-content">
<p><xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselementOrdnr]/explanation" /></p> <p><xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselementOrdnr]/explanation" /></p>
@ -1833,8 +1822,6 @@ min-width: 30rem;
<xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselementOrdnr]/hinweis" /> <xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselementOrdnr]/hinweis" />
</p>--> </p>-->
</div>
</div>
</div> </div>
</div> </div>
</xsl:template> </xsl:template>
@ -2135,9 +2122,9 @@ vertical-align:center;
<xsl:template name="vizSideBarButtons" > <xsl:template name="vizSideBarButtons" >
<div class="buttons fixed-right-buttons"> <div class="buttons fixed-right-buttons">
<a href="javascript:toggleSideBarDiv('mySidebarInfo');" title="Info"> <a href="javascript:toggleSideBarDiv('mySidebarInfo');" title="Info">
<img src="../images/viz_sidebarbuttonInfo.svg" alt="Infos" width="30px" border="0" /></a> <img src="../images/viz_sidebarbuttonInfo.svg" alt="Infos" width="25px" border="0" /></a>
<a href="javascript:toggleSideBarDiv('mySidebarMaske');" title="Maske"> <a href="javascript:toggleSideBarDiv('mySidebarMaske');" title="Maske">
<img src="../images/viz_sidebarbuttonMaske.svg" alt="Maske" width="30px" border="0" /></a> <img src="../images/viz_sidebarbuttonMaske.svg" alt="Maske" width="25px" border="0" /></a>
</div> </div>
</xsl:template> </xsl:template>
<xsl:template name="showFieldValueInLegend"> <xsl:template name="showFieldValueInLegend">

Loading…
Cancel
Save