Persönliche Werkzeuge

Vorlage:SH

Aus BogenWiki

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
 
(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 ...