/** * @fileOverview * * 移动端分享页面转换视图按钮 * * @author: zhangbobell * @copyright: Baidu FEX, 2014 */ KityMinder.registerUI('topbar/switch-view', function(minder) { var $switch = $('转换').appendTo('#panel'); $('
').appendTo('#m-logo'); var treeData; var $curView=$('
'); var $preView=$('
'); minder.on('uiready', function() { var shareView = minder.getUI('menu/share/m-share'); shareView.ready.then(function(){ treeData = addParentPointer(minder); renderNodeData(treeData, minder, $curView); renderNodeData(treeData, minder, $preView); $('#km-list-view').append($curView); $('#km-list-view').append($preView); $preView.css('x', '100%'); $('#km-list-view').css('display', 'none'); }); }); var isListView = false; // mutex : 当前是否是列表视图 $switch.on('click', function(){ if (!isListView ){ $('#kityminder').css('display', 'none'); $('#km-list-view').css('display', 'block'); isListView = true; } else { $('#km-list-view').css('display', 'none'); $('#kityminder').css('display', 'block'); isListView = false; } }); $('#km-list-view').delegate('li', 'click', function(){ var preViewData = $(this).data(); if (preViewData.children) { renderNodeData(preViewData, minder, $preView); // $curView.css('x'); // console.log($preView.css('x')); $preView.css('x', parseInt($curView.css('x')) + 100 + '%'); // console.log($preView.css('x')); // $('#km-list-view').css('x', '0'); $('#km-list-view').transition({ x: parseInt($('#km-list-view').css('x')) - 100 + '%', duration: 200, easing: 'ease', complete: function(){ var $temp = $curView; $curView = $preView; $preView = $temp; } }); if (preViewData.parent){ $('.back').css('display', 'block'); $('#km-cat').css('display', 'none'); } } }); $('.back').on('click', function(){ var parentViewData = $('.cur-root', $curView).data(); renderNodeData(parentViewData, minder, $preView); $preView.css('x', parseInt($curView.css('x')) - 100 + '%'); // $curView.css('x'); // $('#km-list-view').css('x', '-100%'); $('#km-list-view').transition({ x: parseInt($('#km-list-view').css('x')) + 100 + '%', duration: 200, easing: 'ease', complete: function(){ var $temp = $curView; $curView = $preView; $preView = $temp; } }); if (!parentViewData.parent){ $('.back').css('display', 'none'); $('#km-cat').css('display', 'block'); } }) return $switch; }); /** * addParentPointer - 给 minder 的 json 数据增加 parent 指针 * @param minder - kityminder 实例 * @returns {*} - 增加了 parent 指针之后的 json 结构 */ function addParentPointer(minder){ var root = minder.exportJson(); return AddParent(root); } /** * AddParent - 递归的增加 parent 指针 * @param root - 传入的根节点 * @returns {*} */ function AddParent(root){ if (root.children){ $.each(root.children, function(idx, ele){ ele.parent = root; AddParent(ele); }); } return root; } /** * creadNodeData - 根据 json 结构创建好视图的 jQuery 对象 * @param node * @param minder * @returns {*} - 创建好的 jQuery 对象 */ function renderNodeData(node, minder, $target){ var $curRoot = createRootNode(node, minder); var $curList = $('