<?php
//include_once(_DIR_EXT."/frames/c_fra_tree.php");
include_once(_DIR_TO_CLASS.'/c_page.php');
//class c_fra_tree extends c_page
class c_page_cab_personals_org_editor_tree extends c_page
{
  public $h1='Редактор структуры организации - дерево' ;
  public $tree_item_on_click_script='/cab/personals/editor/viewer/' ;

  function body($options=array())
  {  $rec_org=PERSONAL()->get_org_by_id(_CUR_ID) ;
     ?><div id="panel_logo">
       <ul id="panel_main_menu" class="sky-mega-menu sky-mega-menu-pos-left  _sky-mega-menu-fixed  sky-mega-menu-anim-scale"><?
              if ($this->menu_show_logo_item)
              {?><li class="logo"><img class=v2 cmd=reboot src="<?echo _LOGO_CAB?>" width="130"></li>
                <?
              }
      ?></ul></div>
      <h1>Подразделения</h1>
      <div id="panel_search">Поиск: <input type="text" id="plugins4_q" value="" class="input"></div>

      <script src="/AddOns/jstree/dist/jstree.min.js"></script>
              <link rel="stylesheet" href="/AddOns/jstree/dist/themes/default/style.css"/>
              <div id="tree"></div>
              <script type="text/javascript">
                  $j('div#tree').jstree({
                            'core': {
                                'data': {
                                    'url': '/services/personals/tree/',
                                    'data': function (node)
                                     {
                                        return {
                                            'id': node.id,
                                            'type': node.type,
                                            'cmd': 'get_structure',
                                            'org_id': <?echo _CUR_ID?>,
                                        };
                                     }
                                },check_callback: false
                            },
                            "types": {"#":    {max_children: 1,"max_depth": 4,"valid_children": ["default"]},
                                      "root": {icon: "/class_v.202002134761.work/ext/desktop/images/clss/1.png","valid_children": ["default"]},
                                      "default": {icon: "fas fa-folder-open",valid_children: ["default","clss_207","clss_208"]},
                                      "clss_207": {icon: "fas fa-home",valid_children: ["clss_208"]},
                                      "clss_208": {icon: "fas fas fa-folder",valid_children: ["clss_208"]}
                                      },

                                "dnd" :
                                 {	"drop_finish" : function ()
                                    {
                          				alert("DROP");
                          			},
                          			"drag_check" : function (data) {
                          				/*if(data.r.attr("id") == "phtml_1")
                          				{
                          					return false;
                          				}*/
                          				return {
                          					after : true,
                          					before : true,
                          					inside : true
                          				};
                          			},
                          			"drag_finish" : function (data) {
                          				alert("DRAG OK");
                          			}
                          		},


                          "plugins": [/*"checkbox",*/"dnd","search","state","types","changed","themes"],
                          "themes" : {
                                 "theme" : "default",
                                 "dots" : false,
                                 "icons" : false
                             },
                          // Configuring the search plugin
                          /*"search" :
                          {   // As this has been a common question - async search
                              // Same as above - the `ajax` config option is actually jQuery's AJAX object
                              "ajax" : {
                                  "url" : "/services/personals/tree/",
                                  // You get the search string as a parameter
                                  "data" : function (str)
                                  {
                                      return {
                                          "operation" : "search",
                                          "search_str" : str,
                                          'cmd': 'search',
                                      };
                                  }
                              }
                          },*/



                          /*"checkbox": {
                          checkbox: false, // сохраняет все значения по умолчанию для плагина флажка
                          visible: true, //  //  логическое указание, если флажки должны быть видимыми (их можно изменить позже, используя show_checkboxes () и hide_checkboxes). Значение по умолчанию равно true.
                          three_state: true,  // логическое значение, указывающее, следует ли каскадировать флажки и иметь неопределенное состояние. По умолчанию true
                          whole_node: false,// логическое указание, если щелчок в любом месте узла должен действовать как щелчок на флажке. Значение по умолчанию равно true.
                          keep_selected_style: true,  // boolean, указывающий, следует ли сохранить или удалить выбранный стиль узла. Значение по умолчанию равно true.
                          cascade: '',  // Этот параметр определяет, как применяются каскадные и неопределенные узлы.
                                        //  Если в строке находится «вверх», то включен режим «каскадирование», если «вниз» находится в строке - каскадное нажатие включено, если «неопределенный» находится в строке - будут использоваться неопределенные узлы.
                          // Если для параметра three_state установлено значение true, этот параметр автоматически устанавливается на «вверх + вниз + неопределенный». По умолчанию используется значение ''.
                          tie_selection: false,  // Этот параметр управляет, если флажок привязан к общему дереву или внутреннему массиву, поддерживаемому плагином. По умолчанию значение true, только значение false, если вы точно знаете, что делаете.
                          cascade_to_disabled: false, // Этот параметр управляет, если каскадное нажатие влияет на отключенные флажки
                          cascade_to_hidden: false  // Этот параметр управляет, если каскадирование вниз влияет на скрытые флажки
                      }*/
                                        })  // для работы требуется
                      // tie_selection:false
                      .on('changed.jstree',function(e,data)
                      {
                          console.log('changed.jstree') ;
                          console.log(data) ;
                          switch(data.action)
                          { case 'deselect_all':parent.fra_view.location='/frame/personals/editor/viewer/<?echo $rec_org['_reffer']?>/' ;
                                                break ;
                            case 'select_node': console.log(data.node.type) ;
                                                var reffer=data.node.original.reffer ;
                                                console.log('reffer='+reffer) ;
                                                switch(data.node.type)
                                                { case 'default': parent.fra_view.location='/frame/personals/editor/viewer/'+reffer+'/' ; break ;
                                                  case 'clss_207': parent.fra_view.location='/frame/personals/editor/viewer/'+reffer+'/' ; break ;
                                                  case 'clss_208': parent.fra_view.location='/frame/personals/editor/viewer/'+reffer+'/' ; break ;

                                                }


                              break ;
                          }
                      })
                      /*.on("check_node.jstree uncheck_node.jstree",function (e,data) {
                          $j('#tree_check_result').html('');
                          $j('#test222').next('div').find('li.false').remove();
                          var parent_id = <?echo $this->rec_theme['pkey']?>;
                          var parent_node = null;
                          var node_path = '';
                          var selectedElms = $j('#tree').jstree("get_checked",true);

                          $j.each(selectedElms,function () { //selectedElmsIds.push(this.id);
                              //console.log(this) ;
                              node_path = $j('#tree').jstree("get_path",this,' / ');
                              parent_id = this.parent;
                              parent_node = $j('#tree').jstree('get_node',parent_id);
                              //console.log(parent_node) ;
                              console.log(parent_node.state.checked);
                              if (!parent_node.state.checked) $j('#tree_check_result').append('<div id="tree_el_view_"'+this.id+'><input type="hidden" name="filter[themes_ids][]" value='+this.id+'>'+node_path+'</div>');
                          });


                      })*/

                  var to = false;
                  $j('#plugins4_q').keyup(function ()
                  { if(to) { clearTimeout(to); }
                    to = setTimeout(function ()
                    { var v = $j('#plugins4_q').val();
                      $j('#tree').jstree(true).search(v);
                    }, 250);
                  });

              </script>
              <style type="text/css">
                  div#panel_logo{width:200px}
                  body{background-color:#ebf7f4;}
                  body h1{margin:5px 10px;font-size:16px;border-bottom:none;}
                  ul.sky-mega-menu{box-shadow:none;background-color:#ebf7f4;}
                  ul.sky-mega-menu li:hover{background-color:#ebf7f4;}
                  ul.sky-mega-menu :hover{background-color:#ebf7f4;}
                  ul.sky-mega-menu li:hover > a,
                  ul.sky-mega-menu li.current > a {background-color:#ebf7f4;color:#272727;}
                  .jstree-icon.fas.fa-folder-open{color: #ffc42d;font-size: 15px;}
                  .jstree-icon.fas.fa-folder{color: #ffc42d;font-size: 15px;}
                  .jstree-icon.fas.fa-home{color: #115e09;font-size: 15px;}
                  .jstree-icon.fas.fa-sitemap{color: #115e09;font-size: 15px;}
                  .jstree-icon.fas.fa-users{color: #115e09;font-size: 15px;}
                  .jstree-icon.far.fa-bookmark{color: #115e09;font-size: 15px;}
                  .jstree-icon.far.fa-question-circle{color: #0050aa;font-size: 15px;}
              </style><?
  }


}



?>
