Persönliche Werkzeuge

Vorlage:SH

Aus BogenWiki

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
 
(Der Versionsvergleich bezieht 10 dazwischenliegende Versionen mit ein.)
Zeile 26: Zeile 26:
   function CountSHBD(sSHID)
   function CountSHBD(sSHID)
   {
   {
 +
    // Count the rows in a BD table:
 +
    // - Amount of rows that are shown (visible in UI, display=table-row and and Bg!=-)
 +
    // - Amount of rows that contain an abject (Bg!=. and Bg!=-)
 +
    // - Total amount of rows (Bg!=-)
     console.log('CountSHBD('+sSHID+')');
     console.log('CountSHBD('+sSHID+')');
     let nRowsShown = 0;
     let nRowsShown = 0;
-
     let nRowsHidden = 0;
+
     let nRowsAvail = 0;
 +
    let nRowsTotal = 0;
     // count display state of rows with objects
     // count display state of rows with objects
     let sNodeSel = 'tr[id^=SH-objrow-'+sSHID+']';
     let sNodeSel = 'tr[id^=SH-objrow-'+sSHID+']';
-
    console.log('[CountSHBD()]: NodeSel="'+sNodeSel+'"');
 
     let aNodes = document.querySelectorAll(sNodeSel);
     let aNodes = document.querySelectorAll(sNodeSel);
-
     console.log('[CountSHBD()]: Nodes[].length='+aNodes.length);
+
     nRowsAvail = aNodes.length;
-
     for (var i = 0; i < aNodes.length; i++) {
+
    nRowsTotal = aNodes.length;
 +
     for (var i = 0; i < aNodes.length; i++)
       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()]: nRowsShown='+nRowsShown+', nRowsHidden='+nRowsHidden);
 
     // count display state of empty rows
     // count display state of empty rows
     sNodeSel = 'tr[id^=SH-emptyrow-'+sSHID+']';
     sNodeSel = 'tr[id^=SH-emptyrow-'+sSHID+']';
-
    console.log('[CountSHBD()]: NodeSel="'+sNodeSel+'"');
 
     aNodes = document.querySelectorAll(sNodeSel);
     aNodes = document.querySelectorAll(sNodeSel);
-
     console.log('[CountSHBD()]: Nodes[].length='+aNodes.length);
+
     nRowsTotal += aNodes.length;
-
     for (var i = 0; i < aNodes.length; i++) {
+
     for (var i = 0; i < aNodes.length; i++)
       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];
-
     console.log('[CountSHBD()]: nRowsShown='+nRowsShown+', nRowsHidden='+nRowsHidden);
+
-
     return [nRowsShown, nRowsHidden];
+
   }
   }
   function AddNodesSHBD(sSel,aNodes=[])
   function AddNodesSHBD(sSel,aNodes=[])
Zeile 65: Zeile 64:
     let sNewTitle = '???';
     let sNewTitle = '???';
     switch (sState) {
     switch (sState) {
-
     case 'showall':     sNewImage = 'HideT';     sNewTitle = 'Alle verbergen'; break;
+
     case 'hideall':   sNewImage = 'HideT';       sNewTitle = 'Alle verbergen'; break;
-
     case 'showallavail': sNewImage = 'ShowT';     sNewTitle = 'Alle anzeigen'; break;
+
     case 'showall':   sNewImage = 'ShowT';       sNewTitle = 'Alle anzeigen'; break;
-
     case 'hideall':     sNewImage = 'ShowMixedT'; sNewTitle = 'Alle vorhandenen anzeigen'; break;
+
     case 'showavail': sNewImage = 'ShowMixedTa'; sNewTitle = 'Alle vorhandenen anzeigen'; break;
     }
     }
     console.log('[SetBtnStateSHBD()]: sNewImage='+sNewImage+', sNewTitle="'+sNewTitle+'"');
     console.log('[SetBtnStateSHBD()]: sNewImage='+sNewImage+', sNewTitle="'+sNewTitle+'"');
Zeile 79: Zeile 78:
     sNewDisplayState = '???';
     sNewDisplayState = '???';
     switch (sState) {
     switch (sState) {
-
     case 'showall':     sNewDisplayState = 'table-row'; break;
+
     case 'showall':   sNewDisplayState = 'table-row'; break;
-
     case 'showallavail': sNewDisplayState = (sRowID.split('-')[1] == 'objrow' ? 'table-row' : 'none'); break;
+
     case 'showavail': sNewDisplayState = (sRowID.split('-')[1] == 'objrow' ? 'table-row' : 'none'); break;
-
     case 'hideall':     sNewDisplayState = 'none'; break;
+
     case 'hideall':   sNewDisplayState = 'none'; break;
     }
     }
     eRow = document.getElementById(sRowID);
     eRow = document.getElementById(sRowID);
Zeile 87: Zeile 86:
     eRow.style.display = sNewDisplayState;
     eRow.style.display = sNewDisplayState;
   }
   }
-
   function GetActAndNewStateSHBD(nRowsShown,nRowsHidden)
+
   function GetActAndNewStateSHBD(sSHID)
   {
   {
-
     console.log('GetActAndNewStateSHBD(): nRowsShown='+nRowsShown+', nRowsHidden="'+nRowsHidden+'"');
+
     console.log('GetActAndNewStateSHBD(): sSHID="'+sSHID+'"');
-
     //                                   ActState       NewState
+
     // count shown rows, rows with available objects and total rows
-
     // nRowsShown == 0, nRowsHidden > 0: hideall     => showallavail
+
    let [nRowsShown,nRowsAvail,nRowsTotal] = CountSHBD(sSHID);
-
     // nRowsShown >  0, nRowsHidden >  0: showallavail => showall
+
    // State-/display-order: hideall => showavail => showall
-
     // nRowsShown > 0, nRowsHidden == 0: showall     => hideall
+
    // 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 sActState = '';
     let sNewState = '';
     let sNewState = '';
-
     switch ((nRowsShown==0 ? '0' : 'N')+(nRowsHidden==0 ? '0' : 'N')) {
+
     if (nRowsShown == 0) {
-
    case '0N': sActState = 'hideall';     sNewState = 'showallavail'; break;
+
      sActState = 'hideall';
-
    case 'NN': sActState = 'showallavail'; sNewState = 'showall'; break;
+
      sNewState = (nRowsAvail > 0 ? (nRowsAvail < nRowsTotal ? 'showavail' : 'showall') : 'showall');
-
     case 'N0': sActState = 'showall';     sNewState = 'hideall'; break;
+
     } else {
 +
      sActState = (nRowsAvail > 0 ? (nRowsAvail < nRowsTotal ? 'showavail' : 'showall') : 'showall');
 +
      sNewState = (nRowsShown < nRowsTotal ? 'showall' : 'hideall');
     }
     }
     console.log('[GetActAndNewStateSHBD()]: sActState='+sActState+', sNewState="'+sNewState+'"');
     console.log('[GetActAndNewStateSHBD()]: sActState='+sActState+', sNewState="'+sNewState+'"');
Zeile 107: Zeile 113:
   {
   {
     console.log('ShowHideBD('+sSHID+','+sCmd+')');
     console.log('ShowHideBD('+sSHID+','+sCmd+')');
-
     let nRowsShown = -1;
+
     let aNodesAll = [];
-
     let nRowsHidden = -1;
+
     let aNodesGroup = [];
     let sActState = '';
     let sActState = '';
-
     let sNewState] = '';
+
     let sNewState = '';
     switch (sCmd) {
     switch (sCmd) {
       case 'init':
       case 'init':
         break;
         break;
       case 'showall':
       case 'showall':
-
        break;
+
       case 'showavail':
-
       case 'showallavail':
+
-
        break;
+
       case 'hideall':
       case 'hideall':
 +
        // update rows to the desired state
 +
        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,sCmd);
 +
        // update header button
 +
        [sActState,sNewState] = GetActAndNewStateSHBD(sSHID)
 +
        SetBtnStateSHBD('SH-headbtn-'+sSHID,sNewState);
 +
        // update group buttons
 +
        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);
 +
        }
         break;
         break;
       case 'showgroup':
       case 'showgroup':
-
        break;
 
       case 'showgroupavail':
       case 'showgroupavail':
-
        break;
 
       case 'hidegroup':
       case 'hidegroup':
 +
        // update rows to the desired state
 +
        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,(sCmd=='showgroup' ? 'show' : (sCmd=='showgroupavail' ? 'showavail' : 'hide')));
 +
        }
 +
        [sActState,sNewState] = GetActAndNewStateSHBD(sSHID)
 +
        SetBtnStateSHBD('SH-divbtn-'+sSHID,sNewState);
         break;
         break;
       case 'toggleall':
       case 'toggleall':
         // determine current state and new state
         // determine current state and new state
-
        [nRowsShown,nRowsHidden] = CountSHBD(sSHID);
+
         [sActState,sNewState] = GetActAndNewStateSHBD(sSHID)
-
         [sActState,sNewState] = GetActAndNewStateSHBD(nRowsShown,nRowsHidden)
+
         // show/hide rows
         // show/hide rows
-
         let aNodesAll = AddNodesSHBD('tr[id^=SH-objrow-'+sSHID+']')
+
         aNodesAll = AddNodesSHBD('tr[id^=SH-objrow-'+sSHID+']')
         aNodesAll = AddNodesSHBD('tr[id^=SH-emptyrow-'+sSHID+']',aNodesAll)
         aNodesAll = AddNodesSHBD('tr[id^=SH-emptyrow-'+sSHID+']',aNodesAll)
         // update display state of the rows
         // update display state of the rows
-
         for (let i = 0; i < aNodesAll.length; i++) {
+
         for (let i = 0; i < aNodesAll.length; i++)
           SetRowStateSHBD(aNodesAll[i].id,sNewState);
           SetRowStateSHBD(aNodesAll[i].id,sNewState);
-
        }
 
         // update header button
         // update header button
 +
        [sActState,sNewState] = GetActAndNewStateSHBD(sSHID)
         SetBtnStateSHBD('SH-headbtn-'+sSHID,sNewState);
         SetBtnStateSHBD('SH-headbtn-'+sSHID,sNewState);
         // update group buttons
         // update group buttons
-
         let aNodesGroup = AddNodesSHBD('tr[id^=SH-divrow-'+sSHID+']');
+
         aNodesGroup = AddNodesSHBD('tr[id^=SH-divrow-'+sSHID+']');
         for (var i = 0; i < aNodesGroup.length; i++) {
         for (var i = 0; i < aNodesGroup.length; i++) {
           let sSHGroupID = aNodesGroup[i].id.split('-')[2];
           let sSHGroupID = aNodesGroup[i].id.split('-')[2];
-
          let [nGroupRowsShown, nGroupRowsHidden] = CountSHBD(sSHGroupID);
+
           let [sGroupActState,sGroupNewState] = GetActAndNewStateSHBD(sSHGroupID)
-
           let [sGroupActState,sGroupNewState] = GetActAndNewStateSHBD(nGroupRowsShown,nGroupRowsHidden)
+
           SetBtnStateSHBD('SH-divbtn-'+sSHGroupID,sGroupNewState);
           SetBtnStateSHBD('SH-divbtn-'+sSHGroupID,sGroupNewState);
         }
         }
         break;
         break;
       case 'togglegroup':
       case 'togglegroup':
-
        [nRowsShown,nRowsHidden] = CountSHBD(sSHID);
+
         [sActState,sNewState] = GetActAndNewStateSHBD(sSHID)
-
         [sActState,sNewState] = GetActAndNewStateSHBD(nRowsShown,nRowsHidden)
+
         // show/hide rows
         // show/hide rows
-
         let aNodesAll = AddNodesSHBD('tr[id^=SH-objrow-'+sSHID+']')
+
         aNodesAll = AddNodesSHBD('tr[id^=SH-objrow-'+sSHID+']')
         aNodesAll = AddNodesSHBD('tr[id^=SH-emptyrow-'+sSHID+']',aNodesAll)
         aNodesAll = AddNodesSHBD('tr[id^=SH-emptyrow-'+sSHID+']',aNodesAll)
         // update display state of the rows
         // update display state of the rows
Zeile 158: Zeile 182:
           SetRowStateSHBD(aNodesAll[i].id,sNewState);
           SetRowStateSHBD(aNodesAll[i].id,sNewState);
         }
         }
 +
        [sActState,sNewState] = GetActAndNewStateSHBD(sSHID)
         SetBtnStateSHBD('SH-divbtn-'+sSHID,sNewState);
         SetBtnStateSHBD('SH-divbtn-'+sSHID,sNewState);
-
       
 
         break;
         break;
     }
     }

Aktuelle Version vom 10:39, 5. Okt. 2026


Zeigen/Verbergen:

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