openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

jquery-plugin-orTree.min.js (2204B)


      1 import $ from "../jquery-global.min.js";
      2 import Workbench from "../openrat/workbench.min.js";
      3 import Notice    from "../openrat/notice.min.js";
      4 export default function(options)
      5 {
      6 let settings = $.extend( {
      7 'openAction' : function(name,action,id) {
      8 }
      9 }, options);
     10 let registerTreeBranchEvents = function (viewEl)
     11 {
     12 Workbench.getInstance().registerDraggable(viewEl);
     13 }
     14 $(this).each(function (idxx, treeEl)
     15 {
     16 $(treeEl).children('.or-navtree-node-control').click( function ()
     17 {
     18 let $node = $(this).parent('.or-navtree-node');
     19 if ($node.is('.or-navtree-node--is-open')) {
     20 $node.children('ul').remove();
     21 $node.removeClass('navtree-node--is-open').addClass('navtree-node--is-closed').find('.or-navtree-tree-icon').removeClass('image-icon--node-open').addClass('image-icon--node-closed');
     22 }
     23 else {
     24 Workbench.getInstance().startSpinner();
     25 let $link   = $node.find('a');
     26 let id      = $link.data('id');
     27 let extraId = Workbench.htmlDecode($link.data('extra'));
     28 let loadBranchUrl = './?action=tree&subaction=branch&id=' + id + '';
     29 if (typeof extraId === 'string')
     30 extraId = JSON.parse(extraId);
     31 if (typeof extraId === 'object') {
     32 Object.keys(extraId).forEach( (name)=> {
     33 loadBranchUrl = loadBranchUrl + '&' + name + '=' + extraId[name];
     34 });
     35 }
     36 else {
     37 ;
     38 }
     39 console.debug( { url:loadBranchUrl } );
     40 fetch( loadBranchUrl,{
     41 method: 'GET',
     42 headers: {
     43 'Accept': 'text/html',
     44 }
     45 } )
     46 .then( response => { if (!response.ok) throw "Failed to load tree"; return response } )
     47 .then( response => response.text() )
     48 .then( html => {
     49 let $ul = $.create('ul' ).addClass('navtree-list');
     50 $(treeEl).append($ul);
     51 $ul.html( html );
     52 $ul.find('li').orTree(settings); 
     53 registerTreeBranchEvents($ul);
     54 $ul.find('.or-act-clickable').orLinkify( {
     55 'openAction':settings.openAction
     56 } );
     57 //$ul.slideDown('fast'); 
     58 }).catch( cause => {
     59 console.error( {message:'Failed to load subtree',url:loadBranchUrl,cause:cause});
     60 let notice = new Notice();
     61 notice.setStatus( 'error' );
     62 notice.msg = cause;
     63 }).finally( () => {
     64 Workbench.getInstance().stopSpinner();
     65 });
     66 $node.addClass('navtree-node--is-open').removeClass('navtree-node--is-closed').find('.or-navtree-tree-icon').addClass('image-icon--node-open').removeClass('image-icon--node-closed');
     67 }
     68 });
     69 });
     70 };