Persönliche Werkzeuge

Vorlage:SH

Aus BogenWiki

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
 
(Der Versionsvergleich bezieht 28 dazwischenliegende Versionen mit ein.)
Zeile 26: Zeile 26:
   function CountSHBD(sSHID)
   function CountSHBD(sSHID)
   {
   {
-
     console.log('CountSHBD('+SHID+')');
+
     console.log('CountSHBD('+sSHID+')');
-
     sNodeSel = 'tr[id^=SH-objrow-'+SHID+']';
+
     let nRowsShown = 0;
-
     console.log('[CountSHBD()]: NodeSel="'+sNodeSel+'"');
+
    let nRowsAvail = 0;
 +
    let nRowsTotal = 0;
 +
    // count display state of rows with objects
 +
    let sNodeSel = 'tr[id^=SH-objrow-'+sSHID+']';
 +
     let aNodes = document.querySelectorAll(sNodeSel);
 +
    nRowsAvail = aNodes.length;
 +
    nRowsTotal = aNodes.length;
 +
    for (var i = 0; i < aNodes.length; i++)
 +
      nRowsShown = (aNodes[i].style.display=='table-row' ? nRowsShown+1 : nRowsShown);
 +
    // count display state of empty rows
 +
    sNodeSel = 'tr[id^=SH-emptyrow-'+sSHID+']';
     aNodes = document.querySelectorAll(sNodeSel);
     aNodes = document.querySelectorAll(sNodeSel);
-
     console.log('[CountSHBD()]: Nodes[].length='+aNodes.length);
+
     nRowsTotal += aNodes.length;
-
    nRowsShown = 0;
+
     for (var i = 0; i < aNodes.length; i++)
-
    nRowsHidden = 0;
+
-
     for (var i = 0; i < aNodes.length; i++) {
+
-
      console.log('[CountSHBD()]: Node='+aNodes[i].id+', '+aNodes[i].style.display);
+
       nRowsShown = (aNodes[i].style.display=='table-row' ? nRowsShown+1 : nRowsShown);
       nRowsShown = (aNodes[i].style.display=='table-row' ? nRowsShown+1 : nRowsShown);
-
      nRowsHidden = (aNodes[i].style.display=='none' ? nRowsHidden+1 : nRowsHidden);
+
    console.log('[CountSHBD()]: Shown='+nRowsShown+', Avail='+nRowsAvail+', Total='+nRowsTotal);
 +
    return [nRowsShown,nRowsAvail,nRowsTotal];
 +
  }
 +
  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 'hideall':  sNewImage = 'HideT';      sNewTitle = 'Alle verbergen'; break;
 +
    case 'showall':  sNewImage = 'ShowT';      sNewTitle = 'Alle anzeigen'; break;
 +
    case 'showavail': sNewImage = 'ShowMixedT'; sNewTitle = 'Alle vorhandenen anzeigen'; break;
     }
     }
-
     return [nRowsShown, nRowsHidden];
+
     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 'showavail': 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(sSHID)
 +
  {
 +
    console.log('GetActAndNewStateSHBD(): sSHID="'+sSHID+'"');
 +
    // count shown rows, rows with available objects and total rows
 +
    let [nRowsShown,nRowsAvail,nRowsTotal] = CountSHBD(sSHID);
 +
    // State-/display-order: hideall => showavail => showall
 +
    // State showavail is skipped if all rows contain available objects
 +
    //                                            ActState    NewState
 +
    // nRowsShown == 0, nRowsAvail > 0 && < nRowsTotal: hideall  => showavail
 +
    // nRowsShown == 0, nRowsAvail ==      nRowsTotal: hideall  => showall
 +
    // nRowsShown ==    nRowsAvail > 0 && < nRowsTotal: showavail => showall
 +
    // nRowsShown ==    nRowsAvail ==      nRowsTotal: showall  => hideall
 +
    let sActState = '';
 +
    let sNewState = '';
 +
    if (nRowsShown == 0) {
 +
      sActState = 'hideall';
 +
      sNewState = (nRowsAvail > 0 ? (nRowsAvail < nRowsTotal ? 'showavail' : 'showall') : 'showall');
 +
    } else {
 +
      sActState = (nRowsAvail > 0 ? (nRowsAvail < nRowsTotal ? 'showavail' : 'showall') : 'showall');
 +
      sNewState = (nRowsShown < nRowsTotal ? 'showall' : 'hideall');
 +
    }
 +
    console.log('[GetActAndNewStateSHBD()]: sActState='+sActState+', sNewState="'+sNewState+'"');
 +
    return [sActState,sNewState];
   }
   }
   function ShowHideBD(sSHID,sCmd)
   function ShowHideBD(sSHID,sCmd)
   {
   {
     console.log('ShowHideBD('+sSHID+','+sCmd+')');
     console.log('ShowHideBD('+sSHID+','+sCmd+')');
 +
    let aNodesAll = [];
 +
    let sActState = '';
 +
    let sNewState = '';
     switch (sCmd) {
     switch (sCmd) {
       case 'init':
       case 'init':
Zeile 49: Zeile 118:
         break;
         break;
       case 'showallavail':
       case 'showallavail':
 +
        break;
 +
      case 'hideall':
         break;
         break;
       case 'showgroup':
       case 'showgroup':
         break;
         break;
       case 'showgroupavail':
       case 'showgroupavail':
-
        break;
 
-
      case 'hideall':
 
         break;
         break;
       case 'hidegroup':
       case 'hidegroup':
Zeile 60: Zeile 129:
       case 'toggleall':
       case 'toggleall':
         // determine current state and new state
         // determine current state and new state
-
         [nRowsShown, nRowsHidden] = CountSHBD(sSHID);
+
         [sActState,sNewState] = GetActAndNewStateSHBD(sSHID)
-
        // nRowsShown == 0, nRowsHidden >  0: hideall => showallavail
+
-
        // nRowsShown >  0, nRowsHidden >  0: showallavail => showall
+
-
        // nRowsShown >  0, nRowsHidden == 0: showall => hideall
+
-
        sToggleTo = 'showallavail';
+
-
        if (nRowsShown > 0)
+
-
          if (nRowsHidden > 0)
+
-
            sToggleTo ='showall'
+
-
          else
+
-
            sToggleTo ='hideall';
+
-
        }
+
         // show/hide rows
         // show/hide rows
-
         sNodeSel = 'tr[id^=SH-objrow-'+SHID+']';
+
         aNodesAll = AddNodesSHBD('tr[id^=SH-objrow-'+sSHID+']')
-
         aNodes = document.querySelectorAll(sNodeSel);
+
         aNodesAll = AddNodesSHBD('tr[id^=SH-emptyrow-'+sSHID+']',aNodesAll)
-
        console.log('[ShowHideBD()]: Nodes[].length='+aNodes.length);
+
        // update display state of the rows
-
         for (var i = 0; i < aNodes.length; i++) {
+
         for (let i = 0; i < aNodesAll.length; i++)
-
           console.log('[ShowHideBD()]: Node='+aNodes[i].id+', '+aNodes[i].style.display);
+
           SetRowStateSHBD(aNodesAll[i].id,sNewState);
-
          switch (sToggleTo) {
+
        // update header button
-
          case 'showall':      aNodes[i].style.display = 'tablew-row'; break;
+
        [sActState,sNewState] = GetActAndNewStateSHBD(sSHID)
-
          case 'showallavail': aNodes[i].style.display = (aNodes[i].id.split('-')[1] == 'objrow' ? 'tablew-row' : 'none'); break;
+
        SetBtnStateSHBD('SH-headbtn-'+sSHID,sNewState);
-
           case 'hideall':      aNodes[i].style.display = 'none'; break;
+
        // 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 [sGroupActState,sGroupNewState] = GetActAndNewStateSHBD(sSHGroupID)
 +
          SetBtnStateSHBD('SH-divbtn-'+sSHGroupID,sGroupNewState);
         }
         }
-
        // update button
 
-
        sNewImage = '???';
 
-
        sNewTitle = '???';
 
-
        switch (sToggleTo) {
 
-
        case 'showall':      sNewImage = 'ShowMixedT'; sNewTitle = 'Alle vorhandenen anzeigen'; break;
 
-
        case 'showallavail': sNewImage = 'HideT';      sNewTitle = 'Alle verbergen'; break;
 
-
        case 'hideall':      sNewImage = 'ShowT';      sNewTitle = 'Alle anzeigen'; break;
 
-
        }
 
-
        console.log('[ShowHideBD()]: sNewImage='+sNewImage+', sNewTitle="'+sNewTitle+'"');
 
-
        eHeaderBtn = document.getElementById('SH-headrbtn-'+sSHID);
 
-
        eHeaderBtn.src = '/bogenwiki/images/Symbol_'+sNewImage+'.png';
 
-
        eHeaderBtn.title = sNewTitle;
 
         break;
         break;
       case 'togglegroup':
       case 'togglegroup':
-
         [nRowsShown, nRowsHidden] = CountSHBD(sSHID);
+
         [sActState,sNewState] = GetActAndNewStateSHBD(sSHID)
 +
        // 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;
         break;
     }
     }

Aktuelle Version vom 22:26, 2. Okt. 2026


Zeigen/Verbergen:

dies ist ein Test ...
dies ist ein Test ...
dies ist ein Test ...
dies ist ein Test ...