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 };