Browse Source

Sichten Button soll Pfad anzeigen, wenn in tiefer Verschachtelung etwas ausgewählt wurde #18

master
Daniel Quathamer 1 week ago
parent
commit
ff1ce451d4
  1. 10
      superx/WEB-INF/conf/edustore/db/bin/SQL_ENV.sam
  2. 2
      superx/WEB-INF/conf/edustore/db/install/conf/builddatum.txt
  3. 2
      superx/WEB-INF/conf/edustore/db/install/conf/kern.rtf
  4. 2
      superx/WEB-INF/conf/edustore/db/install/version_hash
  5. 2
      superx/WEB-INF/conf/version.properties
  6. 129
      superx/edit/kern/maske_sicht_laden.jsp
  7. 21
      superx/xml/js/memtext/nd_functions.js
  8. 6
      superx/xml/nd_templates.xsl

10
superx/WEB-INF/conf/edustore/db/bin/SQL_ENV.sam

@ -16,8 +16,8 @@
# JAVA_HOME fehlte # JAVA_HOME fehlte
umask 066 umask 066
#In SuperX-FUll-Release: #In SuperX-FUll-Release:
SUPERX_DIR=/home/superx SUPERX_DIR=/var/lib/tomcat10/webapps/superx/WEB-INF/conf/edustore
WEBAPP=$SUPERX_DIR/webserver/tomcat/webapps/superx WEBAPP=/var/lib/tomcat10/webapps/superx
#In SuperX-Webapp-Release: #In SuperX-Webapp-Release:
#SUPERX_DIR=/home/superx/webserver/tomcat/webapps/superx/WEB-INF/conf/edustore #SUPERX_DIR=/home/superx/webserver/tomcat/webapps/superx/WEB-INF/conf/edustore
#WEBAPP=$SUPERX_DIR/../../.. #WEBAPP=$SUPERX_DIR/../../..
@ -70,8 +70,8 @@ SX_CLIENT=psql; export SX_CLIENT
#sytsemweit definiert sein muss. LANG ist bereits beim Entpacken #sytsemweit definiert sein muss. LANG ist bereits beim Entpacken
#den Kernmoduls massgeblich. #den Kernmoduls massgeblich.
#LANG=de_DE@euro #LANG=de_DE@euro
#LANG=de_DE.utf8 LANG=de_DE.utf8
#export LANG export LANG
case $SX_CLIENT in case $SX_CLIENT in
@ -87,6 +87,8 @@ psql)
#Sonst versucht er eine Socket Connection #Sonst versucht er eine Socket Connection
PGHOST=localhost PGHOST=localhost
export PGHOST export PGHOST
PGUSER=superx
export PGUSER
#Prüfen ob der PATH erweitert werden muss #Prüfen ob der PATH erweitert werden muss
#Standard-Installationsverz. von Postgres ist #Standard-Installationsverz. von Postgres ist
PGPATH=/usr/local/pgsql PGPATH=/usr/local/pgsql

2
superx/WEB-INF/conf/edustore/db/install/conf/builddatum.txt

@ -1 +1 @@
26.10.2026 01.11.2026

2
superx/WEB-INF/conf/edustore/db/install/conf/kern.rtf

File diff suppressed because one or more lines are too long

2
superx/WEB-INF/conf/edustore/db/install/version_hash

@ -1 +1 @@
5fd4ce93944f413f6a41dba9cf2f17a19196dc1182030bd5ddaeb758aa16206ef2a599c6f192b133bcde7713042749b3a5e343d01d4108229bfc148fb7f78990 773b6e023072220f72db41673420720e3f2aa815433dcc87c032473d182b0b4c3dedf989cd7c66dc22623138515223c9fe31a716e8bea151facaa4006570ed94

2
superx/WEB-INF/conf/version.properties

@ -1,2 +1,2 @@
git.branch=HEAD git.branch=HEAD
git.commit.hash=eb163ec837e1a674401a5e5354484d5b644c5f8f git.commit.hash=aefd4a5c2cf50e0ff91a3b4cecf1b3df09cc4b5d

129
superx/edit/kern/maske_sicht_laden.jsp

@ -81,7 +81,20 @@ var previousValuesArray=ndMaskDialogPreviousValueToArray(previousValue);
var previousValuesCount=0; var previousValuesCount=0;
if(previousValuesArray) if(previousValuesArray)
previousValuesCount=previousValuesArray.length; previousValuesCount=previousValuesArray.length;
var indeterminateValues="";
if(referrerForm.elements[fname+"-IndeterminateValues"])
{
indeterminateValues=referrerForm.elements[fname+"-IndeterminateValues"].value;
}
var indeterminateValuesArray=ndMaskDialogPreviousValueToArray(indeterminateValues);
var indeterminateValuesCount=0;
if(indeterminateValuesArray)
indeterminateValuesCount=indeterminateValuesArray.length;
//previousValuesCount=0; //TODO: wenn previousValue, dann klappt Aufklappen nicht immer //previousValuesCount=0; //TODO: wenn previousValue, dann klappt Aufklappen nicht immer
var treeNodes=new Array();
function initDialog(url,searchstring) function initDialog(url,searchstring)
{ {
var ret; var ret;
@ -193,21 +206,24 @@ if(content && content.nodes && content.nodes.length >0)
for(var j=0;j < content.nodes.length;j++) for(var j=0;j < content.nodes.length;j++)
{ {
var node=content.nodes[j]; var node=content.nodes[j];
zs +=renderNode(node,true,searchstring,previousValuesCount,previousValuesArray,zeilenanzahl); zs +=renderNode(node,null,//parent
true,searchstring,previousValuesCount,previousValuesArray,zeilenanzahl);
} }
} }
zs +="</ul>"; zs +="</ul>";
targetDiv.innerHTML=zs; targetDiv.innerHTML=zs;
checkIndeterminates();
} }
function renderNode(node,isRoot,searchstring,previousValuesCount,previousValuesArray,zeilenanzahl) function renderNode(node,parentId,isRoot,searchstring,previousValuesCount,previousValuesArray,zeilenanzahl)
{ {
var zs=""; var zs="";
if(searchstring=="" || node.title.indexOf(searchstring)>-1) if(searchstring=="" || node.title.indexOf(searchstring)>-1)
{ {
if(node.objectId !="") if(node.objectId !="")
{ {
console.log("RenderNode"+node.objectId);
var checkedString=""; var checkedString="";
for(var i=0;i < previousValuesCount;i++) for(var i=0;i < previousValuesCount;i++)
{ {
@ -215,7 +231,6 @@ if(searchstring=="" || node.title.indexOf(searchstring)>-1)
checkedString="checked "; checkedString="checked ";
} }
var fldName="inp"+node.objectId; var fldName="inp"+node.objectId;
var fldId="inp"+node.objectId; var fldId="inp"+node.objectId;
var fldType="checkbox"; var fldType="checkbox";
@ -224,6 +239,13 @@ if(searchstring=="" || node.title.indexOf(searchstring)>-1)
fldName=fname; fldName=fname;
fldType="radio"; fldType="radio";
} }
if (node.nodeattrib && node.nodeattrib == 3)
{ //nicht sichtbar, kommt aber in Auswertung raus:
zs +="";//<span>"+node.title+"</span>";
}
else
{
zs += "<li class='sichtentreeLI'>"; zs += "<li class='sichtentreeLI'>";
if(isRoot) if(isRoot)
{ {
@ -246,8 +268,9 @@ if(searchstring=="" || node.title.indexOf(searchstring)>-1)
zs +="<span style='margin-left:10px' class='is-unselectable'>&nbsp;</span>"; zs +="<span style='margin-left:10px' class='is-unselectable'>&nbsp;</span>";
zs +="<span>"+node.title+"</span>\n"; zs +="<span>"+node.title+"</span>\n";
} }
else { else {
zs+="<input type='"+fldType+"' "+checkedString+ " name='"+fldName+ "' id='"+fldId+ "' value='"+node.objectId +"' />&nbsp;"; zs+="<input type='"+fldType+"' "+checkedString+ " name='"+fldName+ "' id='"+fldId+ "' value='"+node.objectId +"' onChange='uncheckParents(this)' class='regularCheckbox' />&nbsp;";
zs +="<label for='"+fldId+"' id='label"+node.objectId +"'>"+node.title+"</label>\n"; zs +="<label for='"+fldId+"' id='label"+node.objectId +"'>"+node.title+"</label>\n";
} }
if(node.children && node.children.length >0 ) if(node.children && node.children.length >0 )
@ -255,18 +278,68 @@ if(searchstring=="" || node.title.indexOf(searchstring)>-1)
for(var i=0;i < node.children.length;i++) for(var i=0;i < node.children.length;i++)
{ {
zs+="<ul style='margin-left:10px'>"; zs+="<ul style='margin-left:10px'>";
zs += renderNode(node.children[i],false,searchstring,previousValuesCount,previousValuesArray,zeilenanzahl); zs += renderNode(node.children[i],node.objectId,//parent
false,searchstring,previousValuesCount,previousValuesArray,zeilenanzahl);
zs +="</ul>"; zs +="</ul>";
} }
} }
zs+="</li>";
} zs+="</li>";
//register Node in treeNodes:
var myNode=new treeNode(node.title , //name
node.objectId, //apnr
parentId ,//parent,
0, //level,
node.nodeattrib,
"",//linkUrl,
"",//linkTarget,
"",//onClickHandler,
node.isFolder);
treeNodes.push(myNode);
}
} // wenn nodeattrib !=3
} //Ende wenn suchstring } //Ende wenn suchstring
return zs; return zs;
} }
function uncheckParents(inpElem)
{
if(inpElem.checked || inpElem.indeterminate)
{
//parents unchecked:
currentNodeId=inpElem.value;
parentNodeId=getParentNode(currentNodeId);
for(var j=0;j < document.forms['selection'].elements.length;j++)
{
var el=document.forms['selection'].elements[j];
if(el.type=="checkbox" && el.value==parentNodeId)
{
console.log("INPUT found:"+el.id);
el.indeterminate=true;
el.checked=false;
uncheckParents(el);
}
}
}
return true;
}
function getParentNode(targetNodeId)
{
var parent;
for(var i=0;i < treeNodes.length;i++)
{
var node=treeNodes[i];
if(node.apnr==targetNodeId)
{
parent=node.parent;
}
}
return parent;
}
function getChildNodes(nodeId,spanElem) function getChildNodes(nodeId,spanElem)
{ {
//spanElem.parentElement.querySelector(".sichtentreeNested").classList.toggle("sichtentreeActive"); //spanElem.parentElement.querySelector(".sichtentreeNested").classList.toggle("sichtentreeActive");
@ -301,11 +374,13 @@ var xhttp = new XMLHttpRequest();
for(var j=0;j < childrenJSON.length;j++) for(var j=0;j < childrenJSON.length;j++)
{ {
var node=childrenJSON[j]; var node=childrenJSON[j];
childrenHTML +=renderNode(node,false,"",previousValuesCount,previousValuesArray,zeilenanzahl); childrenHTML +=renderNode(node,nodeId,//parent
false,"",previousValuesCount,previousValuesArray,zeilenanzahl);
} }
} }
childUL.innerHTML=childrenHTML; childUL.innerHTML=childrenHTML;
//alert(JSON.stringify(childrenJSON)); //alert(JSON.stringify(childrenJSON));
checkIndeterminates();
} }
}; };
xhttp.open("GET", suburl, true); xhttp.open("GET", suburl, true);
@ -314,6 +389,23 @@ var xhttp = new XMLHttpRequest();
} }
function checkIndeterminates()
{
if(indeterminateValuesCount>0)
{
for(var i=0;i < indeterminateValuesCount;i++)
{
for(var j=0;j < document.forms["selection"].elements.length;j++)
{
if(indeterminateValuesArray[i]==document.forms["selection"].elements[j].value)
{
document.forms["selection"].elements[j].indeterminate=true;
}
}
}
}
}
function ndSichtEintraegeSuchen(was) { function ndSichtEintraegeSuchen(was) {
var callurl = '/superx/servlet/SuperXmlMaske'; var callurl = '/superx/servlet/SuperXmlMaske';
callurl += '?tid=' + maskentid + '&getJSON_' + fname + callurl += '?tid=' + maskentid + '&getJSON_' + fname +
@ -330,7 +422,8 @@ function ndSichtEintraegeSuchen(was) {
for(var j=0;j < searchResultJSON.length;j++) for(var j=0;j < searchResultJSON.length;j++)
{ {
var node=searchResultJSON[j]; var node=searchResultJSON[j];
searchResultHTML += renderNode(node,true,"",previousValuesCount,previousValuesArray,zeilenanzahl); searchResultHTML += renderNode(node,null,//parent
true,"",previousValuesCount,previousValuesArray,zeilenanzahl);
} }
} }
document.getElementById("sichtDiv").innerHTML=searchResultHTML+"</ul>"; document.getElementById("sichtDiv").innerHTML=searchResultHTML+"</ul>";
@ -343,6 +436,24 @@ function ndSichtEintraegeSuchen(was) {
</script> </script>
<style type="text/css">
input.regularCheckbox
{
width: 1em;
height: 1em;
accent-color: green;
}
input.parentCheckbox
{
accent-color: gray;
}
input.parentCheckbox::before
{
background-color:blue;
}
</style>
<body class="has-navbar-fixed-top" onload="initDialog('<%=callurl %>','')"> <body class="has-navbar-fixed-top" onload="initDialog('<%=callurl %>','')">
<div id="nd_navi_top" > <!-- 202606 entfernt style="margin-top:-55px"--> <div id="nd_navi_top" > <!-- 202606 entfernt style="margin-top:-55px"-->
<nav class="navbar-dialogue is-fixed-top" role="navigation" aria-label="navigation"> <nav class="navbar-dialogue is-fixed-top" role="navigation" aria-label="navigation">

21
superx/xml/js/memtext/nd_functions.js

@ -194,6 +194,7 @@ function ndMaskSichtDialogUebernehmen(dialogFrm, referrerFrm)
if(dialogFrm.elements["Standdatum"]) if(dialogFrm.elements["Standdatum"])
referrerFrm.elements[fname+"-Stand"].value= dateUSToDateGerman(dialogFrm.elements["Standdatum"].value); referrerFrm.elements[fname+"-Stand"].value= dateUSToDateGerman(dialogFrm.elements["Standdatum"].value);
ndMaskDialogUebernehmen(dialogFrm,referrerFrm); ndMaskDialogUebernehmen(dialogFrm,referrerFrm);
} }
function ndMaskDialogUebernehmen(dialogFrm, referrerFrm) function ndMaskDialogUebernehmen(dialogFrm, referrerFrm)
@ -202,6 +203,7 @@ function ndMaskDialogUebernehmen(dialogFrm, referrerFrm)
var isFirst = true; var isFirst = true;
var val = ""; var val = "";
var label = ""; var label = "";
var indeterminate="";
for(var j=0;j < dialogFrm.elements.length;j++) for(var j=0;j < dialogFrm.elements.length;j++)
{ {
@ -216,6 +218,16 @@ var label = "";
val +=dialogFrm.elements[j].value; val +=dialogFrm.elements[j].value;
//console.log("FF"+dialogFrm.elements[j].value); //console.log("FF"+dialogFrm.elements[j].value);
label+= document.getElementById("label"+dialogFrm.elements[j].value).innerHTML; label+= document.getElementById("label"+dialogFrm.elements[j].value).innerHTML;
}
if((inputType=="checkbox" || inputType=="radio") && dialogFrm.elements[j].indeterminate)
{
indeterminate+=dialogFrm.elements[j].value+",";
console.log("indeterminate: "+dialogFrm.elements[j].value);
}
else
{
console.log("nicht indeterminate: "+dialogFrm.elements[j].value);
} }
} }
console.log("selected:"+val); console.log("selected:"+val);
@ -228,7 +240,10 @@ var label = "";
{ {
referrerFrm.elements[labelField].value =removeHtmlEntities(label); referrerFrm.elements[labelField].value =removeHtmlEntities(label);
} }
if(referrerFrm.elements[fname+"-IndeterminateValues"] && indeterminate !="")
{
referrerFrm.elements[fname+"-IndeterminateValues"].value=indeterminate;
}
} else { } else {
referrerFrm.elements[fname].value = ''; referrerFrm.elements[fname].value = '';
if(referrerFrm.elements[labelField]) if(referrerFrm.elements[labelField])
@ -236,6 +251,10 @@ var label = "";
referrerFrm.elements[labelField].value = referrerFrm.elements[labelField].value =
"nichts gewaehlt"; "nichts gewaehlt";
} }
if(referrerFrm.elements[fname+"-IndeterminateValues"])
{
referrerFrm.elements[fname+"-IndeterminateValues"].value="";
}
} }
window.close(); window.close();
return false; return false;

6
superx/xml/nd_templates.xsl

@ -2229,6 +2229,11 @@ Seite 1 von 1
</xsl:attribute> </xsl:attribute>
</input> </input>
<input type="hidden">
<xsl:attribute name="name">
<xsl:value-of select="concat(name,'-IndeterminateValues')"/>
</xsl:attribute>
</input>
<!--<xsl:if test="string-length(sichten/sicht [ @selected='true' ]/@stand) &gt; 1 ">--> <!--<xsl:if test="string-length(sichten/sicht [ @selected='true' ]/@stand) &gt; 1 ">-->
<div id="{concat(name,'-Stand','-div')}" style="display:none"> <div id="{concat(name,'-Stand','-div')}" style="display:none">
Stand:&#160;<input type="text" size="10" class="sichtText"> Stand:&#160;<input type="text" size="10" class="sichtText">
@ -2271,6 +2276,7 @@ Seite 1 von 1
<xsl:value-of select="."/></option> <xsl:value-of select="."/></option>
</xsl:for-each> </xsl:for-each>
</select> </select>
</div> </div>
</xsl:if> </xsl:if>
</xsl:template> </xsl:template>

Loading…
Cancel
Save