HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.52.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 15 06:39:08 EDT 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: /home/barbeatleanalyti/public_html/manage.beatleanalytics.com/theme/black/js/jTreeView.js
/**
    Project: jTreeView jQuery Plugin
    Version: 0.1
    Project Website: http://code.google.com/p/jquery-treeview/
    Author: Jack.Qiu    
    License:
        The jTreeView jQuery plugin is currently available for use in all personal or 
        commercial projects under both MIT and GPL licenses. This means that you can choose 
        the license that best suits your project, and use it accordingly.
*/
(function(jQuery) {

jQuery.fn.jTreeView = function(settings) {

    settings = jQuery.extend({
        /* Callbacks
            The callbacks should be functions that take one argument. The checkbox tree
            will return the jQuery wrapped LI element of the item that was checked/expanded.
        */
        onExpand: null,
        onCollapse: null,
        onCheck: null,
        onUnCheck: null,
        onHalfCheck: null,
        onLabelHoverOver: null,
        onLabelHoverOut: null,
        onLabelClick: null,
        
        /* Valid choices: 'expand', 'check' */
        labelAction: "expand",
        
        CascadeCheckChildren : true,
        CascadeCheckParent : true,
        CascadeUnCheckChildren : true,
        CascadeUnCheckParent : true,
        
        imgPath: "img/",
        // Debug (currently does nothing)
        debug: false
    }, settings);

    var $tree = this;
		$tree
			.click(
				function(e){
					onclickTree($(e.target));
				}
			)
			.mouseover(
				function(e){
      		var $sender = $(e.target);
      		if($sender.attr("tagName").toUpperCase()=="LABEL")
      		{
      			$sender.addClass("hover");
          	if (settings.onLabelHoverOver) settings.onLabelHoverOver($sender.parent());
          }
				}
			)
			.mouseout(
				function(e){
      		var $sender = $(e.target);
      		if($sender.attr("tagName").toUpperCase()=="LABEL")
      		{
      			$sender.removeClass("hover");
      			if (settings.onLabelHoverOut) settings.onLabelHoverOut($sender.parent());
      		}
				}
			)
			.mousedown(
				function(ev){
      		var $sender = $(ev.target);
      		if($sender.attr("tagName").toUpperCase()=="LABEL")
      		{
      			//alert($sender.attr("tagName"));
          }
				}
			);
		$tree.checkNode = CheckedNode;
		$tree.uncheckNode = UnCheckedNode;
		$tree.checkAllNodes = CheckedAllNode;
		$tree.uncheckAllNodes = UnCheckedAllNode;
		$tree.addNode = AddNode;
		$tree.deleteNode = DeleteNode;
		
		function CheckedNode(pSender)
		{
			_CheckedNode($(pSender).children("div.checkbox"));
		}
		
		function UnCheckedNode(pSender)
		{
			_UnCheckedNode($(pSender).children("div.checkbox"));
		}

		function AddNode(pParentNode,pChildNode)
		{
			var $ul=pParentNode.children("ul")
			if($ul.length == 0)
			{
				$ul = $('<ul></ul>');
			}
			//$ul.add(pChildNode);
			pChildNode.appendTo($ul);
		}
		
		function DeleteNode(pNode)
		{
			pNode.remove();
		}

    function CheckedAllNode()
    {
    	$tree.children("li").each(
    		function(){
    			_CheckedNode($(this).children("div.checkbox"));
    		}
    	);
    }
    
    function UnCheckedAllNode()
    {
    	$tree.children("li").each(
    		function(){
    			_UnCheckedNode($(this).children("div.checkbox"));
    		}
    	);
    }
    
    function _CheckedNode(pCurrentNode)
    {
    	var $currentNode = pCurrentNode;
			
			//�Ƚ��Լ���Ϊ��ȫ��ѡ��
			$currentNode
				.removeClass("half_checked")
				.addClass("checked")
			;
			if (settings.onCheck) settings.onCheck($currentNode.parent());
				
			//���ӽڵ�ȫ����Ϊ����ѡ��
			$currentNode.siblings("ul").find(".checkbox").not(".checked")
			  .removeClass("half_checked")
			 // .addClass("checked")
			  .each(function() {
			      if (settings.onCheck) settings.onCheck($(this).parent());
			  })
			;
    }
    
    function _UnCheckedNode(pCurrentNode)
    {
    	var $currentNode = pCurrentNode;
			if (settings.onUnCheck) settings.onUnCheck($currentNode.parent());
			
			//�Ƚ��Լ���Ϊδѡ��
			$currentNode
				.removeClass("checked")
			;								
			//���ӽڵ�ȫ����Ϊ��δѡ��
			$currentNode.siblings("ul").find(".checkbox")
			  .removeClass("checked")
			  .each(function() {
			      if (settings.onCheck) settings.onCheck($(this).parent());
			  })
			;
    }
    
    //�ݹ鴦�����Ƚڵ�
    function changedParent(pCurrentNodeCheckbox)
    {
    	var $currentNodeCheckbox = pCurrentNodeCheckbox;
    	var $currentNodeLI = $currentNodeCheckbox.parent();
    	var $currentNodeUL = $currentNodeLI.parent();
    	
    	if($currentNodeUL.hasClass("tree"))	//���ڵ�
    	{
    		return false;
    	}

 			var $parentNodeCheckbox = $currentNodeUL.siblings("div.checkbox");
    	if($currentNodeCheckbox.hasClass("checked"))
    	{
    		var siblingsAllChecked = true;
    		$currentNodeLI.siblings("li").each(
    			function(){
    				var $childBox=$(this).children("div.checkbox");
    				if(!$childBox.hasClass("checked"))
    				{
    					siblingsAllChecked = false;
    					return false;
    				}
    			}
    		);

    		if(siblingsAllChecked)
    		{
    			$parentNodeCheckbox
    				.removeClass("half_checked")
    				.addClass("checked")
    			;
    		}
    		else
    		{
    			$parentNodeCheckbox
    				.removeClass("checked")
    				.addClass("half_checked")
    			;
    		}
    	}
    	else if($currentNodeCheckbox.hasClass("half_checked"))
    	{
  			$parentNodeCheckbox
  				.removeClass("checked")
  				.addClass("half_checked")
  			;
  		}
    	else
    	{
    		var siblingsAllUnChecked = true;
    		$currentNodeLI.siblings("li").each(
    			function(){
    				var $childBox=$(this).children("div.checkbox");
    				if($childBox.hasClass("checked") || $childBox.hasClass("half_checked"))
    				{
    					siblingsAllUnChecked = false;
    					return false;
    				}
    			}
    		);

    		if(siblingsAllUnChecked)
    		{
    			$parentNodeCheckbox
    				.removeClass("half_checked")
    				.removeClass("checked")
    			;
    		}
    		else
    		{
    			$parentNodeCheckbox
    				.removeClass("checked")
    				.addClass("half_checked")
    			;
    		}
  		}
   		changedParent($parentNodeCheckbox);
    }
    
    function expandNode(pSender){
			pSender
				.removeClass("collapsed")
				.addClass("expanded")
				.siblings("ul").show()
				;								
			if (settings.onExpand) settings.onExpand(pSender.parent());
    }
    
    function collapseNode(pSender)
    {
			pSender
				.removeClass("expanded")
				.addClass("collapsed")
				.siblings("ul").hide()
				;
			if (settings.onCollapse) settings.onCollapse(pSender.parent());
    }
    
    function onclickTree(pSender)
    {
    	var $sender = pSender;	//���������¼��Ķ���
			var senderTagName = $sender.attr("tagName").toUpperCase();
			
			switch(senderTagName)
			{
		  	case "DIV":	//��չ���������ѡ��
		  		if($sender.hasClass("arrow"))	//��չ�������
		  		{
		  			if($sender.hasClass("collapsed"))	//��ǰ״̬������������л�Ϊ��չ����
		  			{
		  				expandNode($sender);
		  			}
		  			else if($sender.hasClass("expanded"))	//��ǰ״̬����չ�������л�Ϊ�������
		  			{
		  				collapseNode($sender)
		  			}
		  			else		//��ǰ״̬�������ӽڵ㡱��������
	  				{
	  				}
		  		}
		  		else if($sender.hasClass("checkbox"))	//��ѡ�񡱰�ť
		  		{
		  			if($sender.hasClass("half_checked"))	//��ǰ״̬��������ѡ�񡱣��л�Ϊ��ȫ��ѡ��
		  			{
		  				_CheckedNode($sender);
		  			}
		  			else if($sender.hasClass("checked"))	//��ǰ״̬����ȫ��ѡ�񡱣��л�Ϊ��δѡ��
		  			{
		  				_UnCheckedNode($sender);
		  			}
		  			else		//��ǰ״̬����δѡ�񡱣��л�Ϊ��ȫ��ѡ��
		  			{
		  				_CheckedNode($sender);
		  			}
		  			
		  			changedParent($sender);	//�ݹ鴦�����Ƚڵ�
		  		}			  		
		     	break
		   case "LABEL":	//��ʾ������
					var action = settings.labelAction;
					switch(settings.labelAction) {
					    case 'expand':
					        onclickTree($sender.siblings(".arrow"));
					        break;
					    case 'check':
					        $sender.siblings(".checkbox").trigger('onclick',$sender.siblings(".arrow"));
					        break;
					}
					if (settings.onLabelClick) settings.onLabelClick($sender.parent());
					break
		   default:
		     //��n������1Ҳ����2����ִ�д˴���
		  }
    }

    return $tree;
};

})(jQuery);