Vorlage:SH
Aus BogenWiki
(Unterschied zwischen Versionen)
Nugman (Diskussion | Beiträge) |
Nugman (Diskussion | Beiträge) |
||
| (Der Versionsvergleich bezieht 25 dazwischenliegende Versionen mit ein.) | |||
| Zeile 22: | Zeile 22: | ||
eSHElem.style.display = 'none'; | eSHElem.style.display = 'none'; | ||
eSHButton.src = '/bogenwiki/images/Symbol_'+sFNShowImg+'.png'; | eSHButton.src = '/bogenwiki/images/Symbol_'+sFNShowImg+'.png'; | ||
| + | } | ||
| + | } | ||
| + | function CountSHBD(sSHID) | ||
| + | { | ||
| + | console.log('CountSHBD('+sSHID+')'); | ||
| + | let nRowsShown = 0; | ||
| + | let nRowsHidden = 0; | ||
| + | // count display state of rows with objects | ||
| + | let sNodeSel = 'tr[id^=SH-objrow-'+sSHID+']'; | ||
| + | console.log('[CountSHBD()]: NodeSel="'+sNodeSel+'"'); | ||
| + | let aNodes = document.querySelectorAll(sNodeSel); | ||
| + | console.log('[CountSHBD()]: Nodes[].length='+aNodes.length); | ||
| + | for (var i = 0; i < aNodes.length; i++) { | ||
| + | nRowsShown = (aNodes[i].style.display=='table-row' ? nRowsShown+1 : nRowsShown); | ||
| + | nRowsHidden = (aNodes[i].style.display=='none' ? nRowsHidden+1 : nRowsHidden); | ||
| + | } | ||
| + | console.log('[CountSHBD()]: nRowsShown='+nRowsShown+', nRowsHidden='+nRowsHidden); | ||
| + | // count display state of empty rows | ||
| + | sNodeSel = 'tr[id^=SH-emptyrow-'+sSHID+']'; | ||
| + | console.log('[CountSHBD()]: NodeSel="'+sNodeSel+'"'); | ||
| + | aNodes = document.querySelectorAll(sNodeSel); | ||
| + | console.log('[CountSHBD()]: Nodes[].length='+aNodes.length); | ||
| + | for (var i = 0; i < aNodes.length; i++) { | ||
| + | nRowsShown = (aNodes[i].style.display=='table-row' ? nRowsShown+1 : nRowsShown); | ||
| + | nRowsHidden = (aNodes[i].style.display=='none' ? nRowsHidden+1 : nRowsHidden); | ||
| + | } | ||
| + | console.log('[CountSHBD()]: nRowsShown='+nRowsShown+', nRowsHidden='+nRowsHidden); | ||
| + | return [nRowsShown, nRowsHidden]; | ||
| + | } | ||
| + | function AddNodesSHBD(sSel,aNodes=[]) | ||
| + | { | ||
| + | console.log('AddNodesSHBD("'+sSel+'",'+aNodes.length+')'); | ||
| + | let aAddNodes = document.querySelectorAll(sSel); | ||
| + | for (var i = 0; i < aAddNodes.length; i++) { aNodes.push(aAddNodes[i]); } | ||
| + | console.log('[AddNodesSHBD()]: aNodes[].length='+aNodes.length); | ||
| + | return aNodes; | ||
| + | } | ||
| + | function SetBtnStateSHBD(sBtnID,sState) | ||
| + | { | ||
| + | console.log('SetBtnStateSHBD('+sBtnID+','+sState+')'); | ||
| + | let sNewImage = '???'; | ||
| + | let sNewTitle = '???'; | ||
| + | switch (sState) { | ||
| + | case 'showall': sNewImage = 'HideT'; sNewTitle = 'Alle verbergen'; break; | ||
| + | case 'showallavail': sNewImage = 'ShowT'; sNewTitle = 'Alle anzeigen'; break; | ||
| + | case 'hideall': sNewImage = 'ShowMixedT'; sNewTitle = 'Alle vorhandenen anzeigen'; break; | ||
| + | } | ||
| + | console.log('[SetBtnStateSHBD()]: sNewImage='+sNewImage+', sNewTitle="'+sNewTitle+'"'); | ||
| + | let eHeaderBtn = document.getElementById(sBtnID); | ||
| + | eHeaderBtn.src = '/bogenwiki/images/Symbol_'+sNewImage+'.png'; | ||
| + | eHeaderBtn.title = sNewTitle; | ||
| + | } | ||
| + | function SetRowStateSHBD(sRowID,sState) | ||
| + | { | ||
| + | console.log('SetRowStateSHBD('+sRowID+','+sState+')'); | ||
| + | sNewDisplayState = '???'; | ||
| + | switch (sState) { | ||
| + | case 'showall': sNewDisplayState = 'table-row'; break; | ||
| + | case 'showallavail': sNewDisplayState = (sRowID.split('-')[1] == 'objrow' ? 'table-row' : 'none'); break; | ||
| + | case 'hideall': sNewDisplayState = 'none'; break; | ||
| + | } | ||
| + | eRow = document.getElementById(sRowID); | ||
| + | console.log('[SetRowStateSHBD()]: sRowID='+sRowID+', '+eRow.style.display+' => '+sNewDisplayState); | ||
| + | eRow.style.display = sNewDisplayState; | ||
| + | } | ||
| + | function GetActAndNewStateSHBD(nRowsShown,nRowsHidden) | ||
| + | { | ||
| + | console.log('GetActAndNewStateSHBD(): nRowsShown='+nRowsShown+', nRowsHidden="'+nRowsHidden+'"'); | ||
| + | // ActState NewState | ||
| + | // nRowsShown == 0, nRowsHidden > 0: hideall => showallavail | ||
| + | // nRowsShown > 0, nRowsHidden > 0: showallavail => showall | ||
| + | // nRowsShown > 0, nRowsHidden == 0: showall => hideall | ||
| + | let sActState = ''; | ||
| + | let sNewState = ''; | ||
| + | switch ((nRowsShown==0 ? '0' : 'N')+(nRowsHidden==0 ? '0' : 'N')) { | ||
| + | case '0N': sActState = 'hideall'; sNewState = 'showallavail'; break; | ||
| + | case 'NN': sActState = 'showallavail'; sNewState = 'showall'; break; | ||
| + | case 'N0': sActState = 'showall'; sNewState = 'hideall'; break; | ||
| + | } | ||
| + | console.log('[GetActAndNewStateSHBD()]: sActState='+sActState+', sNewState="'+sNewState+'"'); | ||
| + | return [sActState,sNewState]; | ||
| + | } | ||
| + | function ShowHideBD(sSHID,sCmd) | ||
| + | { | ||
| + | console.log('ShowHideBD('+sSHID+','+sCmd+')'); | ||
| + | let aNodesAll = []; | ||
| + | let nRowsShown = -1; | ||
| + | let nRowsHidden = -1; | ||
| + | let sActState = ''; | ||
| + | let sNewState = ''; | ||
| + | switch (sCmd) { | ||
| + | case 'init': | ||
| + | break; | ||
| + | case 'showall': | ||
| + | break; | ||
| + | case 'showallavail': | ||
| + | break; | ||
| + | case 'hideall': | ||
| + | break; | ||
| + | case 'showgroup': | ||
| + | break; | ||
| + | case 'showgroupavail': | ||
| + | break; | ||
| + | case 'hidegroup': | ||
| + | break; | ||
| + | case 'toggleall': | ||
| + | // determine current state and new state | ||
| + | [nRowsShown,nRowsHidden] = CountSHBD(sSHID); | ||
| + | [sActState,sNewState] = GetActAndNewStateSHBD(nRowsShown,nRowsHidden) | ||
| + | // show/hide rows | ||
| + | aNodesAll = AddNodesSHBD('tr[id^=SH-objrow-'+sSHID+']') | ||
| + | aNodesAll = AddNodesSHBD('tr[id^=SH-emptyrow-'+sSHID+']',aNodesAll) | ||
| + | // update display state of the rows | ||
| + | for (let i = 0; i < aNodesAll.length; i++) { | ||
| + | SetRowStateSHBD(aNodesAll[i].id,sNewState); | ||
| + | } | ||
| + | // update header button | ||
| + | SetBtnStateSHBD('SH-headbtn-'+sSHID,sNewState); | ||
| + | // update group buttons | ||
| + | let aNodesGroup = AddNodesSHBD('tr[id^=SH-divrow-'+sSHID+']'); | ||
| + | for (var i = 0; i < aNodesGroup.length; i++) { | ||
| + | let sSHGroupID = aNodesGroup[i].id.split('-')[2]; | ||
| + | let [nGroupRowsShown, nGroupRowsHidden] = CountSHBD(sSHGroupID); | ||
| + | let [sGroupActState,sGroupNewState] = GetActAndNewStateSHBD(nGroupRowsShown,nGroupRowsHidden) | ||
| + | SetBtnStateSHBD('SH-divbtn-'+sSHGroupID,sGroupNewState); | ||
| + | } | ||
| + | break; | ||
| + | case 'togglegroup': | ||
| + | [nRowsShown,nRowsHidden] = CountSHBD(sSHID); | ||
| + | [sActState,sNewState] = GetActAndNewStateSHBD(nRowsShown,nRowsHidden) | ||
| + | // show/hide rows | ||
| + | aNodesAll = AddNodesSHBD('tr[id^=SH-objrow-'+sSHID+']') | ||
| + | aNodesAll = AddNodesSHBD('tr[id^=SH-emptyrow-'+sSHID+']',aNodesAll) | ||
| + | // update display state of the rows | ||
| + | for (let i = 0; i < aNodesAll.length; i++) { | ||
| + | SetRowStateSHBD(aNodesAll[i].id,sNewState); | ||
| + | } | ||
| + | SetBtnStateSHBD('SH-divbtn-'+sSHID,sNewState); | ||
| + | |||
| + | break; | ||
} | } | ||
} | } | ||
Aktuelle Version vom 17:39, 2. Okt. 2026
Zeigen/Verbergen:
dies ist ein Test ...
dies ist ein Test ...
dies ist ein Test ...
dies ist ein Test ...
