⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dtree.js

📁 尚洋仓库管理系统,对仓库
💻 JS
📖 第 1 页 / 共 4 页
字号:
{
  if (typeof(paths)=='string') return paths ? ((dt_canPrefix(paths) ? prefix : '') + paths) : '';
  else
  {
      var p=[];
      for (var i=0; i<paths.ln(); i++)
          if (paths[i]) p[i] = (dt_canPrefix(paths[i]) ? prefix : '') + paths[i];
          else p[i] = '';

      return p;
  }
}


//##############################################################################
// PARAMETERS & INDIVIDUAL STYLES FUNCTIONS
//##############################################################################

function dt_getParam (param, defParam) {
  return (typeof(param)!="undefined" && param)?param:defParam;
}


function dt_getStyleParam(pName, sInd, sType, defValue)
// Returns an individual style value from a styles array for item/submenu
{
  if (sInd==-1 || ''+sInd+''=='') return defValue;
  var sp = (sType==1)?tstyles[sInd]:tXPStyles[sInd];   // get submenu or item style

  // Search for parameter name
  var f=0;
  for (var i=0; i<sp.ln(); i++)
      if (typeof(sp[i])==tuf) return defValue;
      else
          if (sp[i].io(pName)>=0)
          {
              f=1;
              break;
          }
          
  if (!f) return defValue;

  var val = sp[i].split('=')[1];                                // get parameters' value
  if (val.io(',')>=0) val = val.split(',');                     // if values is array -> create the array of values

  return val;
}


function dt_setStandardXPStyle()
{
  var standardXPStyle =
  {
      xpBtn            : dt_setPathPrefix(tXPExpandBtn, tpathPrefix_img),
      xpTitleBackColor : tXPTitleBackColor,
      xpTitleLeft      : dt_setPathPrefix(tXPTitleLeft, tpathPrefix_img),
      xpTitleLeftW     : tXPTitleLeftWidth,
      xpTitleBackImage : dt_setPathPrefix(tXPTitleBackImg, tpathPrefix_img)
  }
  return standardXPStyle;
}


function dt_setStandardItStyle()
{
  var standardItStyle =
  {
      backColor  : titemBackColor,
      backImage  : dt_setPathPrefix(titemBackImage,  tpathPrefix_img),
      // Font
      fntColor   : tfontColor,
      fntStyle   : tfontStyle,
      fntDecor   : tfontDecoration
  }

  return standardItStyle;
}


function dt_getXPStyle(menu, sInd)
{
  var st = menu.standardXPStyle;
  if (typeof(sInd)==tuf) return st;

  var btnI = dt_getStyleParam('tXPExpandBtn', sInd, 0, '');
  var lI   = dt_getStyleParam('tXPTitleLeft', sInd, 0, '');
  var bI   = dt_getStyleParam('tXPTitleBackImg', sInd, 0, '');

  var style =
  {
      xpBtn            : btnI ? dt_setPathPrefix(btnI, tpathPrefix_img) : st.xpBtn,
      xpTitleBackColor : dt_getStyleParam('tXPTitleBackColor', sInd, 0, st.xpTitleBackColor),
      xpTitleLeft      : lI ? dt_setPathPrefix(lI, tpathPrefix_img) : st.xpTitleLeft,
      xpTitleLeftW     : dt_getStyleParam('tXPTitleLeftWidth', sInd, 0, st.xpTitleLeftW),
      xpTitleBackImage : bI ? dt_setPathPrefix(bI, tpathPrefix_img) : st.xpTitleBackImage
  };
  return style;
}


function dt_getItemStyle(menu, sInd)
{
  var st = menu.standardItStyle;
  if (typeof(sInd)==tuf) return st;

  var bI = dt_getStyleParam("titemBackImage",  sInd, 1, '');

  var style =
  {
      backColor  : dt_getStyleParam('titemBackColor',    sInd, 1, st.backColor),
      backImage  : bI ? dt_setPathPrefix(bI, tpathPrefix_img) : st.backImage,
      // Font
      fntColor   : dt_getStyleParam("tfontColor",        sInd, 1, st.fntColor),
      fntStyle   : dt_getStyleParam("tfontStyle",        sInd, 1, st.fntStyle),
      fntDecor   : dt_getStyleParam("tfontDecoration",   sInd, 1, st.fntDecor)
  };

  return style;
}

//##############################################################################
// BASIC FUNCTIONS
//##############################################################################

function dt_createMenuParams(curInd)
// Creates menu parameters
{
  dt_menu[curInd] =
  {
      i            : [],                     // root items array
      ind          : curInd,                 // index of the menu
      id           : 'dt_'+curInd,         // HTML id
      parentIt       : null,                 // do not erase
      maxLevel     : 0,                      // max items level
      itCount      : 0,                      // current items count
      idCount      : 0,                      // number of items that were created, used for id of new items
      absPos       : tabsolute,
      left         : tleft,
      top          : ttop,
      width        : tmenuWidth,
      height       : tmenuHeight,
      itemH        : titemHeight,
      nowrap       : tnoWrap?'nowrap':'',
      dx           : tlevelDX,
      // Expand/collapse vars
      expandClick    : texpandItemClick,
      closeExpanded  : tcloseExpanded,
      closeExpandedXP: tcloseExpandedXP,
      // Floatable Menu
      floating     : tfloatable,
      floatingX    : tfloatableX,
      floatingY    : tfloatableY,
      iterations   : tfloatIterations,
      // Moveable Menu
      moving       : tmoveable,
      moveClr      : tmoveColor,
      moveImage    : tmoveImage,
      moveHeight   : tmoveImageHeight,
      // Appearance
      brdWidth     : tmenuBorderWidth,                           // border width
      brdStyle     : tmenuBorderStyle,
      brdColor     : tmenuBorderColor,
      backColor    : tmenuBackColor,                                      // menu background color
      backImage    : dt_setPathPrefix(tmenuBackImage, tpathPrefix_img), // menu background image
      fntColorDisabled : tfontColorDisabled,
      // Common 	
      btns         : dt_setPathPrefix(texpandBtn, tpathPrefix_img),
      btnW         : texpandBtnW,
      btnH         : texpandBtnH,
      btnAlign     : texpandBtnAlign,
      iconAlign    : ticonAlign,
      hasPoints    : tpoints,
      pointsImg    : dt_setPathPrefix(tpointsImage, tpathPrefix_img),
      pointsVImg   : dt_setPathPrefix(tpointsVImage, tpathPrefix_img),
      pointsCImg   : dt_setPathPrefix(tpointsCImage, tpathPrefix_img),
      // XP-style
      isXPStyle    : tXPStyle,
      xpBtnW       : tXPBtnWidth,
      xpBtnH       : tXPBtnHeight,
      xpIconW      : tXPIconWidth,
      xpIconH      : tXPIconHeight,
      xpIterations : tXPIterations,
      xpFilter     : tXPFilter,
      xpBrdWidth   : tXPBorderWidth,
      xpBrdColor   : tXPBorderColor,
      isBusy       : 0,
      // Toggle mode
      toggleMode   : ttoggleMode,
     	pressedItemID: '',
      pressedFontColor : tpressedFontColor,
     	// Standard styles
     	standardItStyle : dt_setStandardItStyle(),
     	standardXPStyle : dt_setStandardXPStyle(),
     	
       // Items states
     	saveState   : tsaveState,
     	savePrefix  : tsavePrefix,
     	stateLoaded : 0,
     	states      : []
  }
  
  tcurMenu.mVar = dt_menu[curInd];
}



function dt_getItemLink(linkVal) {                // Returns item link
  return dt_setPathPrefix(dt_getParam(linkVal, ''), tpathPrefix_link);
}


function dt_getItemTarget(targetVal) {            // Returns item target
  if (!targetVal && titemTarget) targetVal = titemTarget;  // if individual target is empty and a common target has a value -> assign a common target
  return targetVal;
}


function dt_delFlag(s) {
  return s.sb(1, s.ln());
}


function dt_getItemIcons(iParams)
// Returns icons names for item
{
  var ic0 = dt_getParam(iParams[2], '');
  var ic1 = dt_getParam(iParams[3], ic0);
  var ic2 = dt_getParam(iParams[4], ic1);
  return [ic0, ic1, ic2];
}


function dt_createItemParams(parentM, parentItem, iParams, lvl, itInd)
// Creates item parameters
{
  var iText = iParams[0];
  var itID = parentM.id+'i'+parentM.idCount;


  // Detect is item is hidden
  var hid = 0;
  if (iText.charAt(0)=='#')                     // item is hidden
  {
      hid = 1;
      iText = dt_delFlag(iText);              // delete '#' (hidden-flag)
  }


  // Detect expand-state of item
  var expnd = (texpanded || !tdynamicTree);     // item is expanded
  if (iText.charAt(0)=='+')
  {
      iText=dt_delFlag(iText);                // delete '+' (expand-flag)
      expnd = 1;
  }
  expnd = (expnd && !hid);


  // Detect pressed item
  if (iText.charAt(0)=='>')
  {
      iText=dt_delFlag(iText);                // delete '>' (item is pressed)
      parentM.pressedItemID = itID;
  }

  // Link and target
  var iLink   = dt_getItemLink(iParams[1]);
  var iTarget = dt_getItemTarget(dt_getParam(iParams[6], ''));


  if (!parentItem) parentItem = parentM;         // if no parent item => make menu object as parent item
  else
      parentItem.hasChild = 1;


  var indx = (itInd>-1) ? itInd : parentItem.i.ln();


  // Set the item state according to loaded item state from cookies
  with (parentM)
      if (stateLoaded && tdynamicTree)                        // the menu isn't dynamic => don't get a loaded items state from cookies
      {
          var stt = (typeof(states[itCount])==tuf) ? '' : states[itCount]
          switch (stt)
          {
              case 'h': expnd = 0; hid = 1; break;            // item is hidden (user defined the item as unvisible)
              case 'u': expnd = 0; hid = 0; break;            // item is unvisible (parent item is collapsed)
              case '+': expnd = 1; hid = 0; break;            // item is expanded
              case '-': expnd = 0; hid = 0; break;            // item is collapsed
          }
      }

  parentItem.i[indx] =
  {
      i       : [],                          // child items
      mInd    : parentM.ind,
      ind     : indx,
      id      : itID,
      parentIt: parentItem,
      level   : lvl,                         // item's level
      dx      : parentM.dx,                  // x offset for every next level
      ptMask  : '',                          // draw points flag, for example, '00111'
      hasChild: 0,
      expanded: expnd ? 1 : 0,
      // Common
      text    : iText,
      link    : iLink,
      target  : iTarget,
      tip     : dt_getParam(iParams[5], ''),
      align   : titemAlign,
      valign  : 'middle',
      cursor  : titemCursor,
      // Appearance
      itStyle  : dt_getItemStyle(parentM, iParams[7]),
      xpStyle  : dt_getXPStyle(parentM, iParams[8]),
      // Icons & arrows
      icon     : dt_setPathPrefix(dt_getItemIcons(iParams), tpathPrefix_img),
      iconW    : ticonWidth,
      iconH    : ticonHeight,
      // Additional
      isVisible    : 1,
      isHidden     : hid,
      isDisabled   : (iTarget=='_')?1:0,           // target='_' - item is disabled
      isDeleted    : 0,
      timer        : null
  }


  with (parentM)
  {
      if (lvl>maxLevel) maxLevel = lvl;
      itCount++;
      idCount++;
  }

  with (tcurMenu)
  {
      mVar   = parentM;
      itInd  = indx;
      itVar  = parentItem.i[indx];
      pitVar = parentItem;
  }
}


function dt_getItemLevel(itText)
// Returns level of item and removes '|' symbols from item text
{
  var lvl=0;
  while (itText.charAt(lvl)=='|') lvl++;                                        // nesting of item
  return lvl;
}


function dt_detectItemVisibility_Expand(menu, itVar)
// Detects item's visibility and expand-state according to its attributes and attributes of its parent
{
  with (itVar)
  {
      var lowLevel = (menu.isXPStyle) ? 1 : 0;

      if (level>lowLevel) isVisible = (parentIt.expanded && !parentIt.isHidden);
      else
          isVisible = 1;

      expanded  = (hasChild && expanded && isVisible && !isHidden) ? 1 : 0;
  }
}

function dt_parseItemsData()
// Parses menu items: creates item objects
{
    var pl=-1;                                        // previous item level
    var cl=0;                                         // current item level
    var textL;
    var iParams = tmenuItems;

    for (var i=0; (i<iParams.length && typeof(iParams[i])!=tuf); i++)
    {
        cl = dt_getItemLevel(iParams[i][0]);
        iParams[i][0] = iParams[i][0].sb(cl, iParams[i][0].ln());

        with (tcurMenu)
        {
            if (pl<cl) pitVar = itVar;                                            // set new parent
            if (pl>cl) for (var j=0; j<pl-cl; j++) pitVar = pitVar.parentIt;      // get previous level

            dt_createItemParams(mVar, pitVar, iParams[i], cl, -1);
        }
        pl = cl;
        
    }
    
    // Detect items visibility and expand-state
    var itVar = tcurMenu.mVar.i[0];
    do
    {
        dt_detectItemVisibility_Expand(tcurMenu.mVar, itVar);
    }
    while ((itVar=dt_getNextItem(itVar)))
}


//##############################################################################
// HTML FUNCTIONS
//##############################################################################

var pmStyle = 'padding:0px;margin:0px;';

function dt_openDIV(id, styleText, add) {
  return '<DIV id="'+id+'" style="'+pmStyle+styleText+'" '+add+'>';
}

function dt_closeDIV() {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -