Browse Source

Dashboard beschleunigen mit RPTA-Technik #7

master
Daniel Quathamer 2 months ago
parent
commit
22f443ee0a
  1. 4
      src-modules/module/viz/masken/44220_felderinfo.unl
  2. 2
      src-modules/module/viz/masken/44220_maskeninfo.unl
  3. 35
      src-modules/module/viz/schluesseltabellen/rpta_column_layout_sos_stud_geschl_fuellen.sql
  4. 18
      superx/xml/js/viz/viz_assistent.js
  5. 182
      superx/xml/js/viz/viz_viewer.js
  6. 657
      superx/xml/viz_components.xsl
  7. 2
      superx/xml/viz_html_chart.xsl
  8. 16
      superx/xml/viz_html_chart_viewer_grid.xsl
  9. 7
      superx/xml/viz_html_chart_viewer_mask_and_table.xsl

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

@ -3,14 +3,14 @@ @@ -3,14 +3,14 @@
FROM rpta_column_layout \
where resultset_id in (select R.tid from rpta_resultset R where R.uniquename in ('sos_stud_astat')\
and R.systeminfo_id=7)\
and uniquename in ('sos_stud_geschl')\
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')\
and R.systeminfo_id=7)\
and uniquename in ('sos_stud_geschl')\
and uniquename in ('sos_stud_geschl_dashboard')\
order by sortnr, caption limit 1\
;^
44221^Seit Semester^10^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by tid DESC;^ ^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^

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

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

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

@ -8,12 +8,14 @@ select count(*) from systeminfo where tid=330; @@ -8,12 +8,14 @@ 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_dashboard",
"whereclause":"",
"description":"Studierende nach Geschlecht für Dashboard"
"rpta_resultset":"sos_stud_astat",
"whereclause":"stichtag=(select I.tid from sos_stichtag I where I.appl_key=''0'')",
"description":"Studierende nach Geschlecht für Dashboard",
"is_virtual":0
}
/>
<#assign rpta_columns = [
{"uniquename":"geschlecht",
"caption":"Geschlecht (Schlüssel)",
@ -26,7 +28,8 @@ select count(*) from systeminfo where tid=330; @@ -26,7 +28,8 @@ select count(*) from systeminfo where tid=330;
"visible_size":"5",
"is_aggregate":"0",
"description":"Geschlecht"
},{"uniquename":"geschlecht_str",
},
{"uniquename":"geschlecht_str",
"caption":"Geschlecht",
"srcfieldname":"",
"targetfieldname":"geschlecht_str",
@ -38,6 +41,30 @@ select count(*) from systeminfo where tid=330; @@ -38,6 +41,30 @@ select count(*) from systeminfo where tid=330;
"is_aggregate":"0",
"description":"Geschlecht"
},
{"uniquename":"sem_rueck_beur_ein",
"caption":"Semester",
"srcfieldname":"sem_rueck_beur_ein",
"targetfieldname":"",
"column_type":"physicalColumn",
"col_function":"",
"is_visible":"1",
"format_code":"",
"visible_size":"5",
"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",

18
superx/xml/js/viz/viz_assistent.js

@ -447,7 +447,7 @@ function createChartElementsConfig2Form(renderer,elemID) @@ -447,7 +447,7 @@ function createChartElementsConfig2Form(renderer,elemID)
//chartElement-specific properties:
//without Dimensions and measures:
for(var k=0;k < vizTypeProperties.length;k++)
/*for(var k=0;k < vizTypeProperties.length;k++)
{
if(vizType==vizTypeProperties[k].typeUniquename
&& vizTypeProperties[k].groupUniquename!="CATEGORY"
@ -469,7 +469,7 @@ function createChartElementsConfig2Form(renderer,elemID) @@ -469,7 +469,7 @@ function createChartElementsConfig2Form(renderer,elemID)
}
}
}
}*/
const saveBtnDiv = document.createElement("div");
@ -689,7 +689,7 @@ function showChartPropertiesFormDiv(formDiv,formElementsDiv,renderer) @@ -689,7 +689,7 @@ function showChartPropertiesFormDiv(formDiv,formElementsDiv,renderer)
switch (formDiv)
{
case "generalChartPropertiesFormDiv":
renderGeneralChartPropertiesForm(formElementsDiv,commonChartProperties,myChartModel.renderer);
renderGeneralChartPropertiesForm(formElementsDiv,commonChartProperties,myChartModel);
break;
case "ChartElementsDiv":
createChartElementConfig1Form(myChartModel.renderer,null);
@ -902,7 +902,7 @@ function renderDimensionFieldAlt(vizTypeProperty,datasource,selectedValue) @@ -902,7 +902,7 @@ function renderDimensionFieldAlt(vizTypeProperty,datasource,selectedValue)
}
function renderGeneralChartPropertiesForm(formDiv,myCommonChartProperties,renderer)
function renderGeneralChartPropertiesForm(formDiv,myCommonChartProperties,currentChartModel)
{
//first empty form:
var myForm=document.getElementById(formDiv);
@ -914,7 +914,7 @@ function renderGeneralChartPropertiesForm(formDiv,myCommonChartProperties,render @@ -914,7 +914,7 @@ function renderGeneralChartPropertiesForm(formDiv,myCommonChartProperties,render
var previousGroup="";
for(var k=0;k < myCommonChartProperties.length;k++)
{
if(myCommonChartProperties[k].rendererUniquename==renderer || myCommonChartProperties[k].isGeneric==1)
if(myCommonChartProperties[k].rendererUniquename==currentChartModel.renderer || myCommonChartProperties[k].isGeneric==1)
{
var groupUniquename=myCommonChartProperties[k].groupUniquename;
if(groupUniquename!=""
@ -966,10 +966,10 @@ function renderGeneralChartPropertiesForm(formDiv,myCommonChartProperties,render @@ -966,10 +966,10 @@ function renderGeneralChartPropertiesForm(formDiv,myCommonChartProperties,render
{
if(myCommonChartProperties[k].groupUniquename==commonChartPropertyGroups[i].groupUniquename
&& myCommonChartProperties[k].variableName!=""
//&& isChartPropertyValidForChartelements(myCommonChartProperties[k])
&& !isChartPropertyValidForChartelements(myCommonChartProperties[k])
&& (myCommonChartProperties[k].rendererUniquename==renderer
|| myCommonChartProperties[k].isGeneric==1)
//&& !isChartPropertyValidForChartelements(myCommonChartProperties[k],currentChartModel)
&& (myCommonChartProperties[k].rendererUniquename==currentChartModel.renderer
//|| myCommonChartProperties[k].isGeneric==1
)
)
{
columnGroupBodyDiv.appendChild(renderChartPropertyField(null,myCommonChartProperties[k],true));

182
superx/xml/js/viz/viz_viewer.js

@ -508,7 +508,7 @@ switch (chartType) @@ -508,7 +508,7 @@ switch (chartType)
.attr("transform",
"translate(" + margin.left + "," + margin.top + ")")
;
mySvg=makeSunburstD3(currentChartModel.chartPropertiesUsed,mySvg,data,rsColumnMetaData[chartElem.datasource],chartElem);
mySvg=makeSunburstD3(currentChartModel.chartPropertiesUsed,mySvg,rs[0],rsColumnMetaData[chartElem.datasource],chartElem);
break;
@ -520,6 +520,180 @@ switch (chartType) @@ -520,6 +520,180 @@ switch (chartType)
return mySvg;
}
function makeSunburstD3(myCommonChartProperties,svg,data,metaData,chartElem)
{
var sorted = d3.sort(data, d => d.dim_studiengang_fb_str,d => d.dim_studiengang_abschluss_grp_str, d => d.dim_studiengang_stg_str, d => d.summe);
var group = d3.group(sorted, d => d.dim_studiengang_fb_str,d => d.dim_studiengang_abschluss_grp_str, d => d.dim_studiengang_stg_str , d => d.summe );
//var sorted = d3.sort(data, d => d.dim_studiengang_fb_str,d => d.dim_studiengang_abschluss_grp_str, d => d.measure1);
//var group = d3.group(sorted, d => d.sos_stg_aggr_sem_rueck_beur_ein_str);
//console.log(group);
//var group = d3.group(sorted, d => d.dim_studiengang_fb_str,d => d.dim_studiengang_abschluss_grp_str, d => d.measure1 );
var hierarchy = d3.hierarchy(group);
var level1count=hierarchy.children.length;
console.log("level1count:"+level1count);
var data_str = "{\"name\":\"root\",\"children\":[";
for(var i=0; i < level1count ; i++){
console.log("Zeile "+i+ ":" + hierarchy.children[i].data[0]);
data_str+="{\"name\":\""+hierarchy.children[i].data[0]+"\",\"children\":[";
var level2count=hierarchy.children[i].children.length;
for(var j=0; j < level2count ; j++){
console.log("unterZeile "+j+ ":" + hierarchy.children[i].children[j].data[0]);
data_str+="{\"name\":\""+hierarchy.children[i].children[j].data[0]+"\",\"children\":[";
/*var level3count=hierarchy.children[i].children[j].children.length;
console.log("level3count: "+level3count);
for(var k=0; k < level3count ; k++){
console.log("unterUnterZeile "+k+ ":" + hierarchy.children[i].children[j].children[k].data[0]);
data_str+="{\"name\":\""+hierarchy.children[i].children[j].children[k].data[0]+"\",\"value\":"+hierarchy.children[i].children[j].children[k].children[0].data[0] +"}";
if(k < level3count -1)
data_str+=",";
}
*/
data_str+="]}";
if(j < level2count -1)
data_str+=",";
}
data_str+="]}";
if(i < level1count -1)
data_str+=",";
//console.log("Zeile "+i+ ":" + hierarchy.children[i].children[0].data);
}
data_str+="]}"
console.log(data_str);
var dataHierarchy=JSON.parse(data_str);
return renderSunburst(dataHierarchy,svg);
}
function renderSunburst(data,svg) {
// Specify the chart’s dimensions.
const width = 928;
const height = width;
const radius = width / 6;
// Create the color scale.
const color = d3.scaleOrdinal(d3.quantize(d3.interpolateRainbow, data.children.length + 1));
// Compute the layout.
const hierarchy = d3.hierarchy(data)
.sum(d => d.value)
.sort((a, b) => b.value - a.value);
const root = d3.partition()
.size([2 * Math.PI, hierarchy.height + 1])
(hierarchy);
root.each(d => d.current = d);
// Create the arc generator.
const arc = d3.arc()
.startAngle(d => d.x0)
.endAngle(d => d.x1)
.padAngle(d => Math.min((d.x1 - d.x0) / 2, 0.005))
.padRadius(radius * 1.5)
.innerRadius(d => d.y0 * radius)
.outerRadius(d => Math.max(d.y0 * radius, d.y1 * radius - 1))
// Create the SVG container.
// Append the arcs.
const path = svg.append("g")
.selectAll("path")
.data(root.descendants().slice(1))
.join("path")
.attr("fill", d => { while (d.depth > 1) d = d.parent; return color(d.data.name); })
.attr("fill-opacity", d => arcVisible(d.current) ? (d.children ? 0.6 : 0.4) : 0)
.attr("pointer-events", d => arcVisible(d.current) ? "auto" : "none")
.attr("d", d => arc(d.current));
// Make them clickable if they have children.
path.filter(d => d.children)
.style("cursor", "pointer")
.on("click", clicked);
const format = d3.format(",d");
path.append("title")
.text(d => `${d.ancestors().map(d => d.data.name).reverse().join("/")}\n${format(d.value)}`);
const label = svg.append("g")
.attr("pointer-events", "none")
.attr("text-anchor", "middle")
.style("user-select", "none")
.selectAll("text")
.data(root.descendants().slice(1))
.join("text")
.attr("dy", "0.35em")
.attr("fill-opacity", d => +labelVisible(d.current))
.attr("transform", d => labelTransform(d.current))
.text(d => d.data.name);
const parent = svg.append("circle")
.datum(root)
.attr("r", radius)
.attr("fill", "none")
.attr("pointer-events", "all")
.on("click", clicked);
// Handle zoom on click.
function clicked(event, p) {
parent.datum(p.parent || root);
root.each(d => d.target = {
x0: Math.max(0, Math.min(1, (d.x0 - p.x0) / (p.x1 - p.x0))) * 2 * Math.PI,
x1: Math.max(0, Math.min(1, (d.x1 - p.x0) / (p.x1 - p.x0))) * 2 * Math.PI,
y0: Math.max(0, d.y0 - p.depth),
y1: Math.max(0, d.y1 - p.depth)
});
const t = svg.transition().duration(750);
// Transition the data on all arcs, even the ones that aren’t visible,
// so that if this transition is interrupted, entering arcs will start
// the next transition from the desired position.
path.transition(t)
.tween("data", d => {
const i = d3.interpolate(d.current, d.target);
return t => d.current = i(t);
})
.filter(function(d) {
return +this.getAttribute("fill-opacity") || arcVisible(d.target);
})
.attr("fill-opacity", d => arcVisible(d.target) ? (d.children ? 0.6 : 0.4) : 0)
.attr("pointer-events", d => arcVisible(d.target) ? "auto" : "none")
.attrTween("d", d => () => arc(d.current));
label.filter(function(d) {
return +this.getAttribute("fill-opacity") || labelVisible(d.target);
}).transition(t)
.attr("fill-opacity", d => +labelVisible(d.target))
.attrTween("transform", d => () => labelTransform(d.current));
}
function arcVisible(d) {
return d.y1 <= 3 && d.y0 >= 1 && d.x1 > d.x0;
}
function labelVisible(d) {
return d.y1 <= 3 && d.y0 >= 1 && (d.y1 - d.y0) * (d.x1 - d.x0) > 0.03;
}
function labelTransform(d) {
const x = (d.x0 + d.x1) / 2 * 180 / Math.PI;
const y = (d.y0 + d.y1) / 2 * radius;
return `rotate(${x - 90}) translate(${y},0) rotate(${x < 180 ? 0 : 180})`;
}
return svg.node();
}
function makePie_d3(myCommonChartProperties,svg,data,chartElem,width,height)
{
//const width = 928;
@ -1989,3 +2163,9 @@ function numberFormatter(value,axisType,digits,usedLocale) @@ -1989,3 +2163,9 @@ function numberFormatter(value,axisType,digits,usedLocale)
else
return value ;
}
function closeModalCard(elemId)
{
var myModalCard=document.getElementById(elemId);
myModalCard.classList.remove('is-active');
}

657
superx/xml/viz_components.xsl

@ -494,13 +494,6 @@ var myRenderer='</xsl:text> @@ -494,13 +494,6 @@ var myRenderer='</xsl:text>
<xsl:text><![CDATA[
var myChartModel=]]></xsl:text>
<xsl:value-of select="translate(viz_charts/viz_chart[@uniquename=$chart_uniquename]/@chartmodel,'§',$quote)" />
<!--<xsl:text><![CDATA[
var myChartCode=]]></xsl:text>
<xsl:value-of select="translate(viz_charts/viz_chart[@uniquename=$chart_uniquename]/@chartcode,'§',$quote)" />
<xsl:text><![CDATA[;
var myDatasourceDef=]]></xsl:text>
<xsl:value-of select="translate(viz_charts/viz_chart[@uniquename=$chart_uniquename]/@datasource_def,'§',$quote)" />
-->
<xsl:text><![CDATA[;
myDiv="]]></xsl:text>
@ -876,105 +869,10 @@ Stand: <xsl:value-of select="../stand" /></p> @@ -876,105 +869,10 @@ Stand: <xsl:value-of select="../stand" /></p>
</xsl:for-each>
</xsl:template>
<xsl:template name="modalCards_neu" >
<xsl:for-each select="/ergebnisse">
<xsl:for-each select="ergebnis/ergebniselement">
<xsl:variable name="chart_uniquename"><xsl:value-of select="../felder/feld[@varname='Grafik']/value" /></xsl:variable>
<xsl:variable name="ergebniselement_ordnr"><xsl:value-of select="@ordnr" /></xsl:variable>
<xsl:if test="$chart_uniquename != ''">
<div class="modal" id="{concat('modalCard',$ergebniselement_ordnr)}">
<div class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<div class="box" style="text-align:right">
<a href="{concat('javascript:closeModalImage(',$ergebniselement_ordnr,');')}">
<span class="button is-black is-outlined"> X </span>
</a>
</div>
</header>
<section class="modal-card-body">
<div id="{concat('modalCardImage',$ergebniselement_ordnr)}">
</div>
</section>
<footer class="modal-card-foot"></footer>
</div>
</div>
<div class="modal" id="{concat('modalCardDetail',$ergebniselement_ordnr)}">
<div class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<div class="box" style="text-align:right">
<h4><xsl:value-of select="viz_charts/viz_chart[@chart_uniquename=$chart_uniquename]/@caption"/></h4>
<a href="{concat('javascript:closeModalCardDetail(',$ergebniselement_ordnr,');')}">
<span class="button is-black is-outlined"> X </span>
</a>
</div></header>
<section class="modal-card-body">
<!-- content -->
<div id="{concat('modalCardDetailImage',$ergebniselement_ordnr)}">
</div>
</section>
<footer class="modal-card-foot">
<p><xsl:value-of select="viz_charts/viz_chart[@uniquename=$chart_uniquename]/@description"/></p>
<p class="legende">
<xsl:for-each select="../felder/feld">
<xsl:if test="(value !='' or sicht/@isFirstInGroup='false' or @isstandtoday='false') and @varname != 'sort' and @varname != 'maxoffset' and value_caption != ''">
<span class="feldname">
<xsl:choose>
<xsl:when test="string-length(caption_short) &gt; 0 and caption_short != 'null'" >
<![CDATA[]]><xsl:value-of select="caption_short" /><![CDATA[]]>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@varname" />
</xsl:otherwise>
</xsl:choose></span>:&#160;
<xsl:if test="string-length(value_caption) &lt; 50">
<span class="feldwert"><xsl:value-of select="value_caption" /><![CDATA[]]></span>
</xsl:if>
<xsl:if test="string-length(value_caption) &gt; 49">
<span class="feldwert"><![CDATA[]]><xsl:value-of select="substring(value_caption,0,50)" /><![CDATA[]]>...</span>
</xsl:if>
<xsl:if test="sicht!=''">
<span><![CDATA[ (]]><xsl:value-of select="sicht" />
<xsl:if test="@stand!=''"><xsl:text> - Stand:</xsl:text><xsl:value-of select="@stand"/></xsl:if>
<xsl:text><![CDATA[)]]> </xsl:text></span>
</xsl:if>
;
</xsl:if>
</xsl:for-each>
User: <xsl:value-of select="/ergebnisse/user"/>&#160;
Stand: <xsl:value-of select="../stand" /></p>
<xsl:if test="../hinweis != ''">
<xsl:call-template name="newline_to_br">
<xsl:with-param name="string" select="../hinweis" />
</xsl:call-template>
</xsl:if>
<p align="right"><a href="{concat('javascript:closeModalCardDetail(',$ergebniselement_ordnr,');')}">
<span class="button is-black is-outlined"> X </span>
</a></p>
</footer>
</div>
</div>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template name="viz_viewer_grid">
<xsl:param name="openModalCardDetail" select="'true'" />
<!-- Variableninitialisierung fürs Dashboard:
-->
<xsl:variable name="spalten_anz">
@ -1016,6 +914,7 @@ Stand: <xsl:value-of select="../stand" /></p> @@ -1016,6 +914,7 @@ Stand: <xsl:value-of select="../stand" /></p>
<xsl:call-template name="viz_viewer_grid_cells" >
<xsl:with-param name="kachelbreite" select="$kachelbreite"/>
<xsl:with-param name="kachelhoehe" select="$kachelhoehe"/>
<xsl:with-param name="openModalCardDetail" select="$openModalCardDetail" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise><!--nicht dynamisch-->
@ -1025,6 +924,7 @@ Stand: <xsl:value-of select="../stand" /></p> @@ -1025,6 +924,7 @@ Stand: <xsl:value-of select="../stand" /></p>
<xsl:call-template name="viz_viewer_grid_cells" >
<xsl:with-param name="kachelbreite" select="$kachelbreite"/>
<xsl:with-param name="kachelhoehe" select="$kachelhoehe"/>
<xsl:with-param name="openModalCardDetail" select="$openModalCardDetail" />
</xsl:call-template>
</div>
</xsl:otherwise>
@ -1043,6 +943,7 @@ Stand: <xsl:value-of select="../stand" /></p> @@ -1043,6 +943,7 @@ Stand: <xsl:value-of select="../stand" /></p>
<xsl:template name="viz_viewer_grid_cells">
<xsl:param name="kachelbreite" select="800"/>
<xsl:param name="kachelhoehe" select="600"/>
<xsl:param name="openModalCardDetail" select="'true'" />
<xsl:for-each select="ergebnisse/ergebnis[felder/feld[@varname='Grafik']/value!='']/ergebniselement">
<xsl:variable name="ergebniselement_counter" select="position()" />
@ -1071,7 +972,7 @@ Stand: <xsl:value-of select="../stand" /></p> @@ -1071,7 +972,7 @@ Stand: <xsl:value-of select="../stand" /></p>
<xsl:with-param name="link_maskennummer" select="$maskennummer"/>
<xsl:with-param name="link_chart_uniquename" select="$chart_uniquename" />
<xsl:with-param name="link_tablestylesheet" select="'viz_html_chart_viewer_mask_and_table.xsl'"/>
<xsl:with-param name="openModalCardDetail" select="$openModalCardDetail" />
</xsl:call-template>
<!--<p><xsl:value-of select="concat($spalten_anz,'-',$ergebniselement_counter,':',$ergebniselement_counter mod $spalten_anz)"/></p>-->
</div>
@ -1088,11 +989,15 @@ Stand: <xsl:value-of select="../stand" /></p> @@ -1088,11 +989,15 @@ Stand: <xsl:value-of select="../stand" /></p>
<xsl:param name="chart_tid" />
<xsl:param name="link_tablestylesheet" select="'viz_html_chart_viewer_mask_and_table.xsl'"/>
<xsl:param name="showEdit" select="'false'" />
<xsl:param name="openModalCardDetail" select="'true'" />
<div class="card is-shady">
<div class="card-image">
<!--zum Debuggen: <a onClick="initPage()">Anzeigen</a><br />-->
<xsl:choose>
<xsl:when test="$openModalCardDetail='true'">
<a onClick="{concat('javascript:openModalCardDetail(',$ergebniselement_ordnr,');')}">
<div id="{concat('chartDiv',$ergebniselement_ordnr)}" style="{concat('width: ',$kachelbreite,'px;height:',$kachelhoehe,'px;')}"></div>
</a>
<xsl:if test="$link_maskennummer!=''">
@ -1114,6 +1019,25 @@ Stand: <xsl:value-of select="../stand" /></p> @@ -1114,6 +1019,25 @@ Stand: <xsl:value-of select="../stand" /></p>
Details...
</a>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<a>
<xsl:attribute name="onclick">
<xsl:text>openKachelDetails(</xsl:text><xsl:value-of select="$ergebniselement_ordnr"/>
<xsl:text>,'</xsl:text>
<xsl:value-of select="concat('frmTab',$ergebniselement_ordnr)" />
<xsl:text>',</xsl:text>
<xsl:value-of select="$link_maskennummer" />
<xsl:text>,'</xsl:text>
<xsl:value-of select="$link_chart_uniquename" />
<xsl:text>','</xsl:text>
<xsl:value-of select="$link_tablestylesheet" />
<xsl:text>',false);</xsl:text>
</xsl:attribute>
<div id="{concat('chartDiv',$ergebniselement_ordnr)}" style="{concat('width: ',$kachelbreite,'px;height:',$kachelhoehe,'px;')}"></div>
</a>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$showEdit='true' and $chart_tid!=''">
<span class="separator">&#160;|&#160; </span>
@ -1194,8 +1118,8 @@ Platzhalter @@ -1194,8 +1118,8 @@ Platzhalter
<xsl:with-param name="feldname" select="$feldname"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="feldHidden">
<xsl:call-template name="getFeldHidden">
<xsl:variable name="showFieldValueInLegend">
<xsl:call-template name="showFieldValueInLegend">
<xsl:with-param name="feldname" select="$feldname"/>
</xsl:call-template>
</xsl:variable>
@ -1210,7 +1134,7 @@ Platzhalter @@ -1210,7 +1134,7 @@ Platzhalter
<xsl:when test="$feldname='##line##'">
<!-- do nothing-->
</xsl:when>
<xsl:when test="$feldHidden='true' or $feldname='tablestylesheet' or $feldart='0' or $feldart='13'">
<xsl:when test="$showFieldValueInLegend='false' or $feldname='tablestylesheet' or $feldart='0' or $feldart='13'">
<!--verstecktesFeld oder Eingabefeld-->
<xsl:text disable-output-escaping="yes"><![CDATA[<input type="hidden" name="]]></xsl:text><xsl:value-of disable-output-escaping="no" select="@varname"/><xsl:text>" value="</xsl:text>
<xsl:value-of disable-output-escaping="no" select="value"/><xsl:text>"</xsl:text>
@ -1218,6 +1142,7 @@ Platzhalter @@ -1218,6 +1142,7 @@ Platzhalter
]]></xsl:text>
</xsl:when>
<xsl:when test="$feldart='1' or $feldart='12'">
<xsl:call-template name="tabellenFeldComboOderSicht">
<xsl:with-param name="maskeninfo_id" select="$maskentid"/>
<xsl:with-param name="Feldname" select="$feldname"/>
@ -1234,7 +1159,7 @@ Platzhalter @@ -1234,7 +1159,7 @@ Platzhalter
</xsl:for-each>
<div class="field">
<button class="button is-primary is-outlined" type="submit" onclick="document.forms[0].elements['reuseresult'].value='false';return true;">
<button class="button is-light" type="submit" onclick="document.forms[0].elements['reuseresult'].value='false';return true;">
Neu laden...
</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;" />-->
@ -1352,26 +1277,25 @@ Platzhalter @@ -1352,26 +1277,25 @@ Platzhalter
<xsl:text>');</xsl:text>
</xsl:variable>
<div class="field is-grouped">
<div class="label-container">
<p class="button-label">
<a class="button is-link is-outlined is-small is-fullwidth">
<div class="vizLabel-container" lang="de">
<label class="label is-small trennung">
<span class="button is-link is-link is-outlined is-hovered" >
<!--<a class="button is-link is-outlined is-small is-fullwidth">-->
<xsl:attribute name="onClick">
<xsl:value-of select="$jsCall"/>
</xsl:attribute>
<xsl:value-of select="$Feldname"/></a>
</p>
<xsl:value-of select="$Feldname"/></span>
</label>
</div>
<span class="separator">&#160;</span>
<span class="separator">&#160;</span>
<div class="field-body">
<p class="control-new ">
<!--<div class="control-new">-->
<div class="field">
<input class="schluesselfeld" type="text" size="15" style="display:none" id="{$FeldnameEscaped}" name="{$Feldname}" tabindex="511">
<xsl:attribute name="value"><xsl:value-of select="/*/*/felder/feld [@varname = $Feldname]/value"/></xsl:attribute>
</input>
<input class="input is-small is-fullwidth" type="label" readonly="true" name="{concat('label_',$FeldnameEscaped)}" id="{concat('label_',$FeldnameEscaped)}">
<div class="control is-expanded">
<input class="input is-small is-link is-fullwidth" type="label" readonly="true" name="{concat('label_',$FeldnameEscaped)}" id="{concat('label_',$FeldnameEscaped)}">
<xsl:attribute name="onclick"><xsl:value-of select="$jsCall"/>
</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="/*/*/felder/feld [@varname = $Feldname]/value_caption"/></xsl:attribute>
@ -1406,19 +1330,10 @@ Platzhalter @@ -1406,19 +1330,10 @@ Platzhalter
</xsl:attribute>
</input>
</xsl:if>
</p>
<span class="separator">&#160;</span>
<span class="separator">&#160;</span>
<span class="separator">&#160;</span>
<span class="separator">&#160;</span>
<!--<span class="info" onclick="window.open('https://super-ics.de/superx/doku/kern_modul/admin/f_Patcheinspielen.htm','_blank','directories=no,location=no,menubar=no,scrollbars=yes,resizable=yes,toolbar=no,width=800,height=660'); ">
<figure class="image is-24x24">
<img src="../images/information_grey_liberation.svg" />
</figure>
</span>-->
</div><!--Ende control is-expanded -->
</div>
<!--</div>-->
</div>
</xsl:template>
@ -1454,12 +1369,7 @@ Platzhalter @@ -1454,12 +1369,7 @@ Platzhalter
<xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselement_ordnr]/felder/feld[@varname=$feldname]/sicht/@name_intern"/>
</xsl:template>
<xsl:template name="getFeldHidden">
<xsl:param name="ergebniselement_ordnr" select="0" />
<xsl:param name="feldname" />
<xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselement_ordnr]/completefields/feld[@varname=$feldname]/@hidden"/>
</xsl:template>
<xsl:template name="getFeldZeilenanzahl">
<xsl:param name="ergebniselement_ordnr" select="0" />
<xsl:param name="feldname" />
@ -1495,18 +1405,44 @@ Platzhalter @@ -1495,18 +1405,44 @@ Platzhalter
</xsl:variable>
<xsl:value-of select="translate($chartModel,'§',$quote)"/>
</xsl:template>
<xsl:template name="viz_navi_top">
<!-- kann überlagert werden -->
<xsl:call-template name="nd_navi_top" />
<xsl:param name="ergebniselement_ordnr" select="0" />
<nav class="navbar is-fixed-top" >
<div class="navbar-brand">
<div class="navbar-item" >
<div class="pagetitle">
<p style="font-weight:bolder;font-size:2em;">
<xsl:choose>
<xsl:when test="/ergebnisse/@isMakro='true'"><xsl:value-of select="/ergebnisse/makro/name"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselement_ordnr]/maskenname"/>
</xsl:otherwise>
</xsl:choose>
</p>
<!--<p><xsl:call-template name="nd_legendeHeaderContent" /></p>-->
</div>
</div>
</div>
<div class="navbar-end">
<a class="navbar-item" target="_self" href="{/*/generalinfo/REPORT_HEADING_URL }">
<img src="{/*/generalinfo/REPORT_LOGO_FILE}" alt="Zur Startseite der Institution" title="Zur Startseite" height="30px" style="height:30px"/>
</a>
</div>
</nav>
</xsl:template>
<xsl:template name="viz_header_dashboard">
<xsl:variable name="tabnr" select="/ergebnisse/ergebnis[@ordnr='0']/felder/feld[@varname='Tabnr.']/value" />
<xsl:variable name="bookletStylesheet" select="/ergebnisse/ergebnis[@ordnr='0']/ergebniselement/sqlerg/row[col[f_name='ord']/wert=$tabnr]/col[f_name='hidden_booklet_stylesheet']/wert" />
<header style="padding-top:0rem;">
<div class="hs_header" style="padding-bottom:0px;margin-bottom:0px;">
<header style="padding-top:2rem;">
<div class="hs_header" style="padding-bottom:0px;margin-bottom:0px">
<div style="padding-bottom:0px;margin-bottom:0px;border-bottom:none;">
<div class="columns" style="margin-left:15px;margin-bottom:0px;"> <!--20250220 style eingefügt-->
<div class="columns" style="margin-left:15px;margin-bottom:0px;background-color:#f3ebeb;"> <!--20250220 style eingefügt-->
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr='0']/ergebniselement/sqlerg/row [col[f_name='wert']/wert !='']">
<div class="column">
<span style="font-size:2rem;font-weight:bolder"><xsl:value-of select="col[f_name='wert']/wert"/></span><br />
@ -1553,7 +1489,7 @@ Platzhalter @@ -1553,7 +1489,7 @@ Platzhalter
</xsl:text>
</xsl:for-each>
</script>
<ul>
<ul style="border-bottom:thin solid black;">
<xsl:variable name="currentTabNr" select="/ergebnisse/ergebnis[@ordnr='0']/felder/feld[@varname='Tabnr.']/value" />
@ -1591,7 +1527,7 @@ Platzhalter @@ -1591,7 +1527,7 @@ Platzhalter
<xsl:choose>
<xsl:when test="$currentTabNr=$tabNr">
<li data-target="{concat('pane-',$tabNr)}" id="{concat('tab-',$tabNr)}" style="" ><!--background-color:white-->
<li data-target="{concat('pane-',$tabNr)}" id="{concat('tab-',$tabNr)}" style="" ><!---->
<xsl:call-template name="tabHeaderSpan">
<xsl:with-param name="textcontent" select="$textcontent"/>
@ -1682,10 +1618,31 @@ Platzhalter @@ -1682,10 +1618,31 @@ Platzhalter
</xsl:template>
<xsl:template name="displayTables">
<!-- jetzt Tabelle-->
<div style="margin-left:50px">
<div>
<xsl:for-each select="/ergebnisse/ergebnis/ergebniselement">
<p class="teiltabelle_titel">
<xsl:text>Tabelle </xsl:text><a onclick="{concat('toggleTableVisibility(',$colon,'toggleBtnTable',@ordnr+1, $colon,',',$colon, 'table',@ordnr+1,$colon,');')}"> <img id="{concat('toggleBtnTable',@ordnr+1)}" src="../images/minus-circled.svg" height="10px" border="0" /></a></p>
<p class="teiltabelle_titel" style="font-size:3em;">
<xsl:text>Datentabelle </xsl:text><a onclick="{concat('toggleTableVisibility(',$colon,'toggleBtnTable',@ordnr+1, $colon,',',$colon, 'table',@ordnr+1,$colon,');')}"> <img id="{concat('toggleBtnTable',@ordnr+1)}" src="../images/minus-circled.svg" height="20px" style="height:20px" border="0" /></a></p>
<style>
table.ergtabelle th {
background-color: #b8c3ef;
color: black;
border: 1px solid black;
border-collapse: separate;
font-size:2em;
}
td.integer {
color: black;
border: 1px solid black;
border-collapse: separate;
font-size:1.5em;
}
table td.ergfeld {
empty-cells: show;
vertical-align: top;
border: thin solid gray;
font-size:1.5em;
}
</style>
<xsl:call-template name="nd_singleTable">
<xsl:with-param name="ergebniselement_ordnr" select="@ordnr" />
@ -1789,5 +1746,413 @@ Platzhalter @@ -1789,5 +1746,413 @@ Platzhalter
</xsl:if>
</xsl:for-each>
</form>
</xsl:template>
<xsl:template name="vizSidebar" >
<style>
.fixed-right-buttons {
position: fixed;
right: 0.1%; /* Abstand vom rechten Bildschirmrand */
top: 50%; /* Zentriert den Button-Block vertikal */
transform: translateY(-50%); /* Zentrierung anpassen */
display: flex;
flex-direction: column; /* Buttons vertikal anordnen */
gap: 10px; /* Abstand zwischen den Buttons */
z-index: 1000; /* Sicherstellen, dass die Buttons immer sichtbar sind */
padding: 0.7% 0% 0.7% 0%;
}
.card-content {
border: thin solid hsl(0, 0%, 71%);
border-radius: 0.3rem !important;
padding-right:20%
}
div.sidebar{
padding-right:50px;
min-width: 30rem;
}
.vizLabel-container {
display: flex;
background: inherit;
min-width: 7.5rem;
}
</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;">
<xsl:call-template name="renderTableDialogs" >
<xsl:with-param name="stylesheet" select="'viz_html_chart_viewer_grid.xsl'" />
</xsl:call-template>
</div>
<div id="mySidebarInfo" class="sidebar" style="display:none;">
<xsl:call-template name="erlaeuterung">
<xsl:with-param name="ergebniselementOrdnr" select="0" />
</xsl:call-template>
</div>
</div>
</xsl:template>
<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>
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr=$ergebniselementOrdnr]/ergebniselement">
<xsl:call-template name="nd_legendeContent" >
<xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="isDisplayedInModal" select="'true'" />
</xsl:call-template>
</xsl:for-each>
<!--<p>
<xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselementOrdnr]/hinweis" />
</p>-->
</div>
</div>
</div>
</div>
</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;}
}
/*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 {
padding-top: 15.0em; /* Weniger Platz auf kleinen Geräten */
}
}
.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;
}
/*Buttons mit is-link=UDE-Blau
.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; }
*/
.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%;
}
.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;
}
/* 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:param name="ergebniselement_ordnr" select="0" />
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr=$ergebniselement_ordnr]/felder/feld">
<xsl:if test="(value !='' or sicht/@isFirstInGroup='false' or @isstandtoday='false') and value_caption != ''">
<xsl:variable name="showFieldValueInLegend">
<xsl:call-template name="showFieldValueInLegend">
<xsl:with-param name="ergebniselementOrdnr" select="$ergebniselement_ordnr" />
<xsl:with-param name="feldname" select="@varname"/>
</xsl:call-template>
</xsl:variable>
<xsl:if test="$showFieldValueInLegend='true'" >
<span class="feldname">
<xsl:choose>
<xsl:when test="string-length(caption_short) &gt; 0 and caption_short != 'null'" >
<![CDATA[]]><xsl:value-of select="caption_short" /><![CDATA[]]>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@varname" />
</xsl:otherwise>
</xsl:choose></span>:&#160;
<xsl:if test="string-length(value_caption) &lt; 50">
<span class="feldwert"><xsl:value-of select="value_caption" /><![CDATA[]]></span>
</xsl:if>
<xsl:if test="string-length(value_caption) &gt; 49">
<span class="feldwert"><![CDATA[]]><xsl:value-of select="substring(value_caption,0,50)" /><![CDATA[]]>...</span>
</xsl:if>
<xsl:if test="sicht!=''">
<span><![CDATA[ (]]><xsl:value-of select="sicht" />
<xsl:if test="@stand!=''"><xsl:text> - Stand:</xsl:text><xsl:value-of select="@stand"/></xsl:if>
<xsl:text><![CDATA[)]]> </xsl:text></span>
</xsl:if>
<xsl:text>; </xsl:text>
</xsl:if>
</xsl:if>
<span class="separator">&#160;</span>
</xsl:for-each>
</xsl:template>
<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>
<a href="javascript:toggleSideBarDiv('mySidebarMaske');" title="Maske">
<img src="../images/viz_sidebarbuttonMaske.svg" alt="Maske" width="30px" border="0" /></a>
</div>
</xsl:template>
<xsl:template name="showFieldValueInLegend">
<xsl:param name="ergebniselement_ordnr" select="0" />
<xsl:param name="feldname" />
<xsl:variable name="isHidden"><xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselement_ordnr]/completefields/feld[@varname=$feldname]/@hidden"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="$isHidden='true' or $feldname = 'sort' or $feldname = 'maxoffset' or $feldname ='##line##'">
<xsl:text>false</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>true</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

2
superx/xml/viz_html_chart.xsl

@ -734,7 +734,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util @@ -734,7 +734,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
</xsl:template>
<xsl:template name="Infobutton">
<xsl:param name="targetUrl" select="'https://super-ics.de/superx/doku/kern_modul/admin/f_Patcheinspielen.htm'" />
<xsl:param name="targetUrl" select="'http://www.superx-projekt.de/doku/viz_modul/nutzung/f_Grafiklayout.htm'" />
<span class="separator">&#160;</span>
<span class="separator">&#160;</span>

16
superx/xml/viz_html_chart_viewer_grid.xsl

@ -48,12 +48,13 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util @@ -48,12 +48,13 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
<xsl:call-template name="nd_htmlscript" />
<xsl:call-template name="nd_tableJavascript" />
<xsl:call-template name="nd_tableCSS" />
<xsl:call-template name="vizTableCSS" />
<xsl:call-template name="importVizViewer"></xsl:call-template>
<body class="has-navbar-fixed-top" onload="document.getElementById('progressbar').style.display='none';initPage();">
<!--#Template Beginn Top-Navigation-->
<xsl:call-template name="viz_navi_top" />
<xsl:call-template name="viz_header_dashboard" />
@ -71,7 +72,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util @@ -71,7 +72,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
<xsl:call-template name="nd_progressbar" />
<div id="content" style="padding-left:1rem">
<div id="content" style="padding-left:1rem;padding-top:6rem">
<!--#Template Beginn Seitentitel-->
<xsl:variable name="masken_tid"><xsl:value-of select="/ergebnisse/ergebnis[@ordnr='0']/maskenname/@id"/></xsl:variable>
<xsl:call-template name="nd_pagetitle" >
@ -87,8 +88,17 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util @@ -87,8 +88,17 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
<xsl:call-template name="buildVizMetadata" />
<xsl:call-template name="viz_viewer_grid" />
<div class="columns features is-mobile is-left">
<div class="column">
<xsl:call-template name="viz_viewer_grid" >
<xsl:with-param name="openModalCardDetail" select="'false'" />
</xsl:call-template>
</div>
<xsl:if test="/ergebnisse/ergebnis[@ordnr='0']/felder/feld[@varname='Spaltenanzahl']/value!=0">
<xsl:call-template name="vizSidebar" />
</xsl:if>
</div>
</div><!--content-->

7
superx/xml/viz_html_chart_viewer_mask_and_table.xsl

@ -134,6 +134,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util @@ -134,6 +134,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
<xsl:with-param name="kachelhoehe" select="viz_charts/viz_chart[@uniquename=$chart_uniquename]/@chart_height"/>
<xsl:with-param name="chart_tid" select="viz_charts/viz_chart[@uniquename=$chart_uniquename]/@tid"/>
<xsl:with-param name="showEdit" select="/ergebnisse/user/@admin" />
<xsl:with-param name="openModalCardDetail" select="'false'" />
</xsl:call-template>
<!--<p><xsl:value-of select="concat($spalten_anz,'-',$ergebniselement_counter,':',$ergebniselement_counter mod $spalten_anz)"/></p>-->
@ -141,11 +142,13 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util @@ -141,11 +142,13 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:HtmlUtils="de.superx.util
<xsl:call-template name="displayTables" />
</div>
<div class="column">
<xsl:call-template name="vizSidebar" />
<!--<div class="column">
<xsl:if test="count(/ergebnisse/ergebnis[@ordnr='0']/completefields/feld[@art='1']) &gt; 0">
<xsl:call-template name="renderTableDialogs" />
</xsl:if>
</div><!--Ende column-->
</div>--><!--Ende column-->
</div> <!--Ende hero-columns-->

Loading…
Cancel
Save