Browse Source

Bugfix Dashboard Makro Felder in Tabelle #7

viz_worldmap
Daniel Quathamer 3 months ago
parent
commit
1dadb01b8f
  1. 2
      src-modules/module/viz/conf/viz.xml
  2. 1
      src-modules/module/viz/schluesseltabellen/viz_property.unl
  3. 1
      src-modules/module/viz/schluesseltabellen/viz_property_renderer.unl
  4. 113
      superx/xml/js/viz/viz_functions.js
  5. 251
      superx/xml/tabelle_html_viz.xsl
  6. 17
      superx/xml/viz_tableComponents.xsl

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

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE module SYSTEM "../../../conf/superx-module.dtd"> -->
<module name="viz" version="0.2b" sachgebiet_id="320"
<module name="viz" version="0.3b" sachgebiet_id="320"
sachgebiet="Visualisierungen" systeminfo_id="320"
system="Visualisierungen" thema="Visualisierungen" thema_parent="Abfragen">
<database name="superx" system="superx">

1
src-modules/module/viz/schluesseltabellen/viz_property.unl

@ -53,3 +53,4 @@ @@ -53,3 +53,4 @@
96^Dimension 2^dimension2^^ ^0^ ^0^1^5^ ^608^^^string^
97^Leerzeilen-Maskierung^null_value_mask^ ^ ^0^ ^0^1^10^Text, der ersetzt wird, wenn eine Dimension leer ist, z.B. *Andere Hochschule* bei BA-MA-Übergang^700^^^string^
98^Y-Wertebereich^domain^ ^ ^1^ ^0^1^21^Bittte Wertebereich mit [] eingeben, z.B. [0,100] für 0-100^1000^^^js^
99^X: Skala^scale_x^band^ ^1^linear|identity|point|band|time^0^2^18^ ^1000^^^string^

1
src-modules/module/viz/schluesseltabellen/viz_property_renderer.unl

@ -27,3 +27,4 @@ @@ -27,3 +27,4 @@
29^2^94^line^
30^1^97^null_value_mask^
31^2^98^domain^
32^2^99^type^

113
superx/xml/js/viz/viz_functions.js

@ -2395,6 +2395,8 @@ for (let i = 1; i < 4; i++) { @@ -2395,6 +2395,8 @@ for (let i = 1; i < 4; i++) {
}
}
function makeSankeyD3(myCommonChartProperties,mySvg,data,metaData,chartElem)
{
// load the data
@ -2407,6 +2409,7 @@ renderSankey(myCommonChartProperties,mySvg,sNodes,sLinks); @@ -2407,6 +2409,7 @@ renderSankey(myCommonChartProperties,mySvg,sNodes,sLinks);
//var myChartSVG = SankeyChart(sNodes,sLinks);
}
function getSankeyNodes(data,captionEmptyTarget)
{
var myNodes=[];
@ -2674,115 +2677,5 @@ function closeModalCardDetail(ergebniselementOrdnr) @@ -2674,115 +2677,5 @@ function closeModalCardDetail(ergebniselementOrdnr)
myModalCard.classList.remove('is-active');
}
function tabelleComboLaden(maskentid,fname, caption,fnameEscaped) {
Feldname = fname;
var callurl = '/superx/servlet/SuperXmlMaske';
callurl += "?tid=" + maskentid + "&getJSON_" + getEncoded(Feldname) +
'=xxxxxx-xxxxxx@';
var params = "";
var e=document.forms["Weiterverarbeitung"].elements[fname];
if (e) {
var t = e.type;
var name = fname;
//todo bei startsWith select_ label_ auch überspringen
if (e.value != '') //leere Felder müssen auch übergeben werden MB!!
params += "&" + getEncoded(fname) + "=" + getEncoded(e.value);
else
params += "&" + getEncoded(fname) + "=--leer--";
}
//alert(params);
//return false;
if (!caption || caption == '') caption = Feldname;
document.getElementById("comboElementName").innerHTML = 'Auswahl ' + caption;
document.getElementById("comboload").style.display = "";
document.getElementById("comboselect").style.display = "none";
var currentFieldValue=document.forms['Weiterverarbeitung'].elements[Feldname].value;
var splitchar=",";
if(currentFieldValue.indexOf("|")>-1)
splitchar="\|";
var currentFieldValueArray = currentFieldValue.split(splitchar);
var currentFieldValueCount=currentFieldValueArray.length;
var combodlg = dojo.widget.byId("combodlg");
combodlg._onKey = null;
//alert(callurl + params);
combodlg.show();
//return false;
dojo.io.bind({
url: callurl + params,
encoding: "UTF-8",
method: "get",
handler: function(type, data, evt) {
var da = purgeval(data);
if (type == 'error' || da.error) {
//<!-- eigentlich sollte immer type gleich error geliefert werden, aber bug in dojo -->
if (da.error) msg = da.error;
else msg = data.message;
document.getElementById('progressbar').style.display = "none";
alert('Fehler beim Lesen der Daten!\n' + msg);
combodlg.hide();
} else {
nodes = da.nodes;
document.forms['comboform'].comboselect.options.length = 0;
if (nodes.length == 0) {
document.forms['comboform'].comboselect.options[0] = new Option(
"keine Auswahl möglich", "");
} else {
if (da.zeilenanzahl > 1 && nodes.length > 1) {
document.forms['comboform'].comboselect.size = 10;
document.forms['comboform'].comboselect.multiple = true;
document.getElementById("multiselecthint").style.display = "";
document.getElementById("suchselect").multiple = true;
} else {
document.forms['comboform'].comboselect.size = 1;
document.forms['comboform'].comboselect.multiple = false;
document.getElementById("multiselecthint").style.display = "none";
document.getElementById("suchselect").multiple = false;
}
for (i = 0; i < nodes.length; i++)
{
sel = false;
if (nodes[i].isSelected && nodes[i].objectId !="") sel = true;
if(currentFieldValue
&& nodes[i].objectId !=""
&& currentFieldValueArray.includes(nodes[i].objectId)
)
sel=true;
//-------------------HIER IST DER ANGEPASSTE CODE------------------------------------------------------------------------
title = nodes[i].title;
var o = new Option(title, nodes[i].objectId, sel, sel);
document.forms['comboform'].comboselect.options[i] = o;
if (nodes[i].nodeattrib && nodes[i].nodeattrib == 3) o.innerHTML =
"&nbsp;&nbsp;" + title;
//---------------------------------------- BIS HIER -------------------------------------------------------------
}
document.getElementById("comboload").style.display = "none";
document.getElementById("comboselect").style.display = "";
}
document.getElementById('progressbar').style.display = "none";
}
}
});
}
function tabelleComboHide()
{
var combodlg = dojo.widget.byId("combodlg");
combodlg.hide();
}

251
superx/xml/tabelle_html_viz.xsl

@ -80,7 +80,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sx="http://memtext.de"> @@ -80,7 +80,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sx="http://memtext.de">
</script>
]]></xsl:text>
<xsl:call-template name="tableJavascript"></xsl:call-template>
<!--<xsl:call-template name="tableJavascript"></xsl:call-template>TODO Dialoge klappen nicht-->
<xsl:call-template name="buildVizMetadata" />
<xsl:call-template name="initVizChartsJS" />
@ -238,6 +238,10 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sx="http://memtext.de"> @@ -238,6 +238,10 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sx="http://memtext.de">
<xsl:if test="/ergebnisse/@isMakro!='true' and /ergebnisse/ergebnis/ergebniselement/sqlerg/@istreetable!='true' and /ergebnisse/ergebnis/ergebniselement/sqlerg/@max &gt; 19">
<xsl:call-template name="navigationsmenue" />
</xsl:if>
<div class="columns features is-mobile is-left"> <!--Beginn columns -->
<div class="column is-three-fifths">
<div class="table-container">
<p class="maskentitel"><xsl:value-of select="../maskenname" /></p>
@ -250,6 +254,16 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sx="http://memtext.de"> @@ -250,6 +254,16 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sx="http://memtext.de">
</tbody>
</table>
</div>
</div><!--Ende Column für die Tabelle-->
<div class="column">
<xsl:if test="count(/ergebnisse/ergebnis[@ordnr='0']/completefields/feld[@art='1']) &gt; 0">
<xsl:call-template name="renderSpecialDialogs" />
</xsl:if>
</div>
</div><!--Ende columns-->
</xsl:template>
<xsl:template name="tableheader">
<!--Spaltenüberschriften: zunächst wird geprüft, ob Spaltenüberschriften verknüpft werden sollen
@ -932,6 +946,8 @@ function closeModalSparkImage(chartUniquename) @@ -932,6 +946,8 @@ function closeModalSparkImage(chartUniquename)
</xsl:for-each>
<xsl:call-template name="tabelleCombo" />
<xsl:call-template name="tabelleSicht" />
</xsl:template>
<xsl:template name="legendeModalContent">
<xsl:param name="ergebniselement_ordnr" select="0" />
@ -1057,5 +1073,238 @@ Stand: <xsl:value-of select="../stand" /> @@ -1057,5 +1073,238 @@ Stand: <xsl:value-of select="../stand" />
</div>
<!-- end suchdlg -->
</xsl:template>
<xsl:template name="tabelleSicht">
<div dojoType="dialog" id="sichtdlg" bgColor="darkgray" bgOpacity="0.7" toggle="fade" toggleDuration="100"
closeNode="ok" style="z-index:1012;display:none">
<form name="treedlgform" onsubmit="return false;">
<center>
<table align="center" cellpadding="0">
<tr><td colspan="2" class="header" id="sichtElementName" align="center">Auswahl</td></tr>
<tr>
<td id="sicht" class="sichtstand" align="center"><b>Sicht:</b> ausgewählte Sicht</td><td id="sichtbutton" class="sichtstand"><input class="submit_pencil" id="Sichtauswahl" type="button" value="Sichtauswahl" onclick="sichtauswahl.show()"></input></td>
</tr>
<tr><td id="stand" class="sichtstand" align="center"><b>Stand:</b> 1.1.2007</td><td id="standbutton" class="sichtstand"><input class="submit_pencil" id="Standauswahl" type="button" value="ändern" onclick="dojo.widget.byId('Standeingabedlg').show();"></input></td>
</tr>
</table>
</center>
<div
dojoType="TreeSelectorV3"
widgetId="treeSelector"
allowedMulti="false"
id="treeSelector" eventNames="select:nodeSelected">
<xsl:text> </xsl:text>
</div>
<div dojoType="TreeEmphasizeOnSelect" selector="treeSelector"></div>
<div dojoType="memtext:TreeLoadingControllerSx" id="treeLoadingController" widgetId="treeLoadingController">
<xsl:attribute name="RPCUrl">/superx/servlet/SuperXmlMaske?tid=<xsl:value-of select="/ergebnisse/ergebnis[@ordnr='0']/maskenname/@id"/></xsl:attribute>
</div>
<div style="height:325px;overflow:scroll"><!-- IE needs non-dojo div vor scrolling-->
<div dojoType="memtext:MemTree" widgetId="selTree" id="selTree" listeners="treeLoadingController;treeSelector">
<div dojoType="TreeNodeV3" title="keine Auswahl möglich" ></div>
</div>
</div>
<br/>
<center>
<label id="sichthintmulti">Sie können einen oder mehrere Einträge auswählen (<a href="javascript:alert('Halten Sie beim Anklicken Strg gedrückt, um mehrere Einträge auszuwählen.');">Hinweis</a>)</label>
<p align="center">
<input type="button" class="submit"
onclick="document.getElementById('suchok').style.display='';document.getElementById('suchselect').style.display='none';document.getElementById('suchuebernehmen').style.display='none';dojo.widget.byId('suchdlg').show();"
value="Suchen"></input>&#160;
</p>
<p align="center">
<input type="button" id="abbrechen" class="submit" onclick="sichtdlg.hide();zeigeCombosIE6();" value="Abbrechen"></input>&#160;
<input type="button" id="ok" class="submit" onclick="maskeSichtauswahlUebernehmen();" value="OK"></input>&#160;&#160;&#160;&#160;&#160;
<input type="button" id="leeren" class="submit" onclick="dojo.widget.byId('treeSelector').deselectAll();maskeSichtauswahlUebernehmen();sichtdlg.hide();" value="Leeren"></input>
</p>
</center>
</form>
</div>
<div dojoType="dialog" id="sichtauswahl" bgColor="darkgray" bgOpacity="0.7" toggle="fade" toggleDuration="100" closeNode="ok"
style="z-index:1014;display:none">
<h3 align="center">Sicht auswählen</h3>
<form name="sichtauswahlform">
<p align="center">
<select name="sichtselect">
<option value="-999">keine Auswahl möglich</option>
</select>
</p>
<p align="center">
<input type="button" class="clsButtonStyle" id="abbrechen2" onclick="sichtauswahl.hide()" value="Abbrechen">&#160;</input>
<input type="button" id="ok2" class="clsButtonStyle" onclick="maskeSichtAendern()" value="OK"></input>
</p>
</form>
</div>
<!-- end sicht -->
<!-- start suchdlg -->
<div dojoType="dialog" id="suchdlg" bgColor="darkgray" bgOpacity="0.7" toggle="fade" toggleDuration="100" style="z-index:1015;display:none">
<h3 align="center">Suche</h3>
<form name="suchform" onsubmit="return false;"> <!-- theoretisch könnte man form sogar weglassen, weil gar nicht gepostet werden soll -->
<p align="center">
<input type="text" id="suchtext" onkeypress="enterClicksButton('suchok',event)"></input>
</p>
<p align="center">
<select id="suchselect" size="10">
</select>
</p>
<p align="center">
<input type="button" class="clsButtonStyle" id="abbrechen" onclick="dojo.widget.byId('suchdlg').hide();" value="Abbrechen">&#160;</input>
<input type="button" id="suchok" class="clsButtonStyle" onclick="sichtEintraegeSuchen(document.getElementById('suchtext').value);" value="OK"></input>
<input type="button" id="suchuebernehmen" class="clsButtonStyle" onclick="dojo.widget.byId('suchdlg').hide();combodlg.hide();sichtdlg.hide();suchauswahlUebernehmen();" value="Übernehmen"></input>
</p>
</form>
</div>
<!-- end suchdlg -->
</xsl:template>
<xsl:template name="tabellenFeldCombo">
<xsl:param name="maskeninfo_id" />
<xsl:param name="Feldname" />
<xsl:param name="FeldnameEscaped" />
<xsl:variable name="jsCall"><xsl:text>tabelleComboLaden(</xsl:text>
<xsl:value-of select="$maskeninfo_id" />
<xsl:text>,'</xsl:text>
<xsl:value-of select="$Feldname"/>
<xsl:text>','</xsl:text>
<xsl:value-of select="$Feldname"/>
<xsl:text>','</xsl:text>
<xsl:value-of select="$FeldnameEscaped"/>
<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">
<xsl:attribute name="onclick"><xsl:value-of select="$jsCall"/>
</xsl:attribute>
<xsl:value-of select="$Feldname"/></a>
</p>
</div>
<span class="separator">&#160;</span>
<span class="separator">&#160;</span>
<div class="field-body">
<p class="control-new ">
<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)}">
<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>
</input>
</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>
</div>
</xsl:template>
<xsl:template name="tabellenFeldSicht">
<xsl:param name="maskeninfo_id" />
<xsl:param name="Feldname" />
<xsl:param name="FeldnameEscaped" />
<xsl:variable name="jsCall"><xsl:text>tabelleSichtLaden(</xsl:text>
<xsl:value-of select="$maskeninfo_id" />
<xsl:text>,'</xsl:text>
<xsl:value-of select="$Feldname"/>
<xsl:text>','</xsl:text>
<xsl:value-of select="$Feldname"/><!--TODO: caption-->
<xsl:text>','</xsl:text>
<xsl:value-of select="$FeldnameEscaped"/>
<xsl:text>','</xsl:text>
<xsl:value-of select="''"/><!--TODO: params1-->
<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">
<xsl:attribute name="onclick"><xsl:value-of select="$jsCall"/>
</xsl:attribute>
<xsl:value-of select="$Feldname"/></a>
</p>
</div>
<span class="separator">&#160;</span>
<span class="separator">&#160;</span>
<div class="field-body">
<p class="control-new ">
<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)}">
<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>
</input>
</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>
</div>
</xsl:template>
<xsl:template name="renderSpecialDialogs" >
<div class="card has-background-light" style="margin-top:5em;">
<div class="card-content">
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr='0']/completefields/feld[@art='1']">
<xsl:variable name="feldname"><xsl:value-of select="@varname" /></xsl:variable>
<xsl:variable name="feldnameEscaped"><xsl:call-template name="create_varname"><xsl:with-param name="string"><xsl:value-of select="@varname"/></xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="feldart">
<xsl:call-template name="getFeldArt">
<xsl:with-param name="feldname" select="$feldname"/>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$feldart='1'">
<xsl:call-template name="tabellenFeldCombo">
<xsl:with-param name="maskeninfo_id" select="/ergebnisse/ergebnis[@ordnr='0']/maskenname/@id"/>
<xsl:with-param name="Feldname" select="$feldname"/>
<xsl:with-param name="FeldnameEscaped" select="$feldnameEscaped"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$feldart='12'">
<xsl:call-template name="tabellenFeldSicht">
<xsl:with-param name="maskeninfo_id" select="/ergebnisse/ergebnis[@ordnr='0']/maskenname/@id"/>
<xsl:with-param name="Feldname" select="$feldname"/>
<xsl:with-param name="FeldnameEscaped" select="feldnameEscaped"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-of select="concat('Feld ',$feldname,' ist nicht geinget für Ajax Aufrufe')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</div>
<div class="field">
<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>
</xsl:template>
<xsl:template name="getFeldArt">
<xsl:param name="feldname" />
<xsl:value-of select="/ergebnisse/ergebnis[@ordnr='0']/completefields/feld[@varname=$feldname]/@art"/>
</xsl:template>
</xsl:stylesheet>

17
superx/xml/viz_tableComponents.xsl

@ -58,9 +58,22 @@ function jsDisableInput(datei) { @@ -58,9 +58,22 @@ function jsDisableInput(datei) {
dojo.require("dojo.widget.Dialog");
dojo.require("dojo.widget.Button");
dojo.require("dojo.event.*");
dojo.require("dojo.dnd.*");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.*");
dojo.require("dojo.html.selection");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.widget.TreeV3");
dojo.require("dojo.widget.TreeNodeV3");
dojo.require("dojo.widget.TreeBasicController");
dojo.require("dojo.widget.TreeSelectorV3");
dojo.require("dojo.widget.TreeEmphasizeOnSelect");
dojo.require("dojo.widget.Tooltip");
dojo.require("dojo.widget.DropdownDatePicker");
dojo.registerModulePath("memtext", "../memtext");
dojo.require("memtext.widget.MemTree");
dojo.require("memtext.widget.TreeLoadingControllerSx");
dojo.hostenv.writeIncludes();
dojo.hostenv.writeIncludes();
var configdlg;
var spaltenliste,spaltentrash;
@ -607,7 +620,7 @@ function deeplink_dialog() @@ -607,7 +620,7 @@ function deeplink_dialog()
<input type="hidden" name="contenttype" value="text/xsl" />
<!-- MB 5/2011 fuer Export nur sichtbarer Tabellenzeilen nach Excel/PDF -->
<input type="hidden" name="irowno" value="" />
<xsl:for-each-group select="/*/*/felder/feld" group-by=".">
<xsl:for-each-group select="/*/*/felder/feld[@art !='1']" group-by=".">
<!--<xsl:for-each select="distinct-values(//ergebnisse/ergebnis/felder/feld [@varname !='Lehreinheit' and @varname != 'Fakultät' and @varname != 'Studiengang'])">-->
<!-- #198418 Problem bei Feldart 1 Typ SQL Beispiel Zeitraum in COB Maske Kosten und Erlöse (Primär und Sekundär) Attribut value aus default/wert key wird nicht richtig escaped
vergl. https://stackoverflow.com/questions/8944513/disable-output-escaping-yes-no-not-working-amp-outputted-twice-in-sharepoint-

Loading…
Cancel
Save