Browse Source

Dashboard beschleunigen mit RPTA-Technik #7

master
Daniel Quathamer 2 weeks 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 @@ -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/macro_masken_bez_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_geschl_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 @@ @@ -1,14 +1,14 @@
44220^Spaltenlayout^3000^350^-1^140^180^1^char^30^1^1^<<SQL>>SELECT uniquename,\
caption\
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 uniquename in ('sos_stud_geschl_dashboard')\
order by sortnr, caption\
;^^<<SQL>>SELECT uniquename,\
caption\
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 uniquename in ('sos_stud_geschl_dashboard')\
order by sortnr, caption limit 1\

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

@ -1 +1 @@ @@ -1 +1 @@
44220^Studierende nach Geschlecht^<sximport>select select_stmt from maskeninfo where tid=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 @@ @@ -16,14 +16,14 @@
44588^Spaltenlayout^3000^350^-1^140^180^1^char^30^1^1^<<SQL>>SELECT uniquename,\
caption\
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)\
order by sortnr, caption\
;^^<<SQL>>SELECT uniquename,\
caption\
FROM rpta_column_layout \
where resultset_id in (select R.tid from rpta_resultset R where R.uniquename='sos_stud_astat'\
and R.systeminfo_id=7) and uniquename='sos_stud_sem';^
where resultset_id in (select R.tid from rpta_resultset R where R.uniquename='sos_stud_astat_dashboard'\
and R.systeminfo_id=7) and uniquename='sos_stud_sem_dashboard';^
44589^Semestertyp^5^350^-1^140^80^1^integer^255^0^1^<<SQL>> select 1,'nur Sommersemester' from xdummy union select 2,'nur Wintersemester' from xdummy^Eintrag^<<SQL>> select 2,'nur Wintersemester' from xdummy^
44590^##line##^30^0^0^100^100^1^char^5000^0^8^^^1^
44591^Abschluss^7^0^0^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; @@ -8,10 +8,10 @@ select count(*) from systeminfo where tid=330;
<#assign rpta_column_layout =
{"uniquename":"sos_stud_geschl_dashboard",
"caption":"Studierende nach Geschlecht",
"rpta_resultset":"sos_stud_astat",
"whereclause":"stichtag=(select I.tid from sos_stichtag I where I.appl_key=''0'')",
"rpta_resultset":"sos_stud_astat_dashboard",
"whereclause":"",
"description":"Studierende nach Geschlecht für Dashboard",
"is_virtual":0
"is_virtual":1
}
/>
@ -53,18 +53,6 @@ select count(*) from systeminfo where tid=330; @@ -53,18 +53,6 @@ select count(*) from systeminfo where tid=330;
"is_aggregate":"0",
"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",
"caption":"Anzahl der Studierenden",
"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; @@ -10,7 +10,8 @@ select count(*) from systeminfo where tid=330;
"caption":"Studierende nach Semester",
"rpta_resultset":"sos_stud_astat_dashboard",
"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, @@ -46,6 +46,14 @@ caption,
from sx_tables where name in ('sos_k_hrst')*/
order by 1
</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[
<#if fact_table_source?exists>
select tid, table_name,
@ -53,7 +61,7 @@ select tid, table_name, @@ -53,7 +61,7 @@ select tid, table_name,
name as targetname
from sx_fields where table_name ='${fact_table_source}'
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>
union
select tid,table_name,
@ -61,7 +69,7 @@ select tid, table_name, @@ -61,7 +69,7 @@ select tid, table_name,
'${added_table.prefix}' || name as targetname
from sx_fields where table_name ='${added_table.name}'
and currentlyused=1
and name in ('fb', 'abschluss_grp', 'abschluss_grp_str', 'fb_str','abschluss_astat_bund')
and name in ${added_table_fields}
</#foreach>
order by 1
</#if>
@ -215,6 +223,7 @@ select '${fact_table_target.name}' as table_name, @@ -215,6 +223,7 @@ select '${fact_table_target.name}' as table_name,
is_sum,
foreignkey_uniquename
from sx_fields where table_name ='${fact_table_source}'
and name in ${fact_table_fields}
and currentlyused=1;
<#foreach added_table in added_tables>
insert into tmp_fields (table_name,
@ -254,6 +263,7 @@ select '${fact_table_target.name}' as table_name, @@ -254,6 +263,7 @@ select '${fact_table_target.name}' as table_name,
is_sum,
foreignkey_uniquename
from sx_fields where table_name ='${added_table.name}'
and name in ${added_table_fields}
and currentlyused=1;
</#foreach>
@ -264,15 +274,18 @@ CREATE temp TABLE tmp_rpta_resultset @@ -264,15 +274,18 @@ CREATE temp TABLE tmp_rpta_resultset
fieldclause text,
joinclause text,
whereclause text,
systeminfo_id integer
systeminfo_id integer,
is_virtual smallint default 1
);
insert into tmp_rpta_resultset(caption,
uniquename,
systeminfo_id)
systeminfo_id,
is_virtual)
select '${fact_table_target.caption}',
'${fact_table_target.name}',
7
7,
0
;
@ -287,7 +300,7 @@ left outer join ${added_table.name} on (${added_table.joinclause}) @@ -287,7 +300,7 @@ left outer join ${added_table.name} on (${added_table.joinclause})
</#foreach>';
--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
from rpta_resultset
;
@ -295,7 +308,8 @@ from rpta_resultset @@ -295,7 +308,8 @@ from rpta_resultset
update rpta_resultset set caption=T.caption,
fieldclause=T.fieldclause,
joinclause=T.joinclause,
whereclause=T.whereclause
whereclause=T.whereclause,
is_virtual=T.is_virtual
from tmp_rpta_resultset T
where T.systeminfo_id=rpta_resultset.systeminfo_id
and T.uniquename=rpta_resultset.uniquename
@ -306,13 +320,15 @@ insert into rpta_resultset(caption, @@ -306,13 +320,15 @@ insert into rpta_resultset(caption,
fieldclause,
joinclause,
whereclause,
systeminfo_id)
systeminfo_id,
is_virtual)
select caption,
uniquename,
fieldclause,
joinclause,
whereclause,
systeminfo_id
systeminfo_id,
is_virtual
from tmp_rpta_resultset
where 0=(select count(*)
from tmp_rs1 T

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

@ -2169,3 +2169,28 @@ var myModalCard=document.getElementById(elemId); @@ -2169,3 +2169,28 @@ var myModalCard=document.getElementById(elemId);
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 @@ -1092,9 +1092,7 @@ Platzhalter
</xsl:otherwise>
</xsl:choose>
</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">
<div class="card-content">
<input name="navi" type="hidden" value="{/ergebnisse/@showNavigation}" />
<input type="hidden" name="tid" value="{$maskentid}">
@ -1164,9 +1162,9 @@ Platzhalter @@ -1164,9 +1162,9 @@ Platzhalter
</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;" />-->
</div>
</div>
<!--</div>-->
</form>
</div>
<!--</div>-->
</xsl:template>
<xsl:template name="tabelleSicht">
@ -1768,9 +1766,18 @@ td.integer { @@ -1768,9 +1766,18 @@ td.integer {
border-radius: 0.3rem !important;
padding-right:20%
}
div.sidebar{
padding-right:50px;
min-width: 30rem;
.sidebar {
position: fixed;
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 {
display: flex;
@ -1781,24 +1788,7 @@ min-width: 30rem; @@ -1781,24 +1788,7 @@ min-width: 30rem;
</style>
<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 id="mySidebarMaske" class="sidebar" style="display:none;">
@ -1816,8 +1806,7 @@ min-width: 30rem; @@ -1816,8 +1806,7 @@ min-width: 30rem;
<xsl:template name="erlaeuterung">
<xsl:param name="ergebniselementOrdnr" select="0" />
<div class="card" style="font-size:1em;">
<div class="card-content">
<div class="media">
<div class="media-content">
<p><xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselementOrdnr]/explanation" /></p>
@ -1833,8 +1822,6 @@ min-width: 30rem; @@ -1833,8 +1822,6 @@ min-width: 30rem;
<xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselementOrdnr]/hinweis" />
</p>-->
</div>
</div>
</div>
</div>
</xsl:template>
@ -2135,9 +2122,9 @@ vertical-align:center; @@ -2135,9 +2122,9 @@ vertical-align:center;
<xsl:template name="vizSideBarButtons" >
<div class="buttons fixed-right-buttons">
<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">
<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>
</xsl:template>
<xsl:template name="showFieldValueInLegend">

Loading…
Cancel
Save