$(document).ready(function() { function saveOrders(orders) { $.post(createLink('doc','sortBookOrder'), {sort:orders}, function(data) { if(data.result != "success") { bootbox.alert(data.message); } },'json'); } function updateOrders(ele, parentOrder, orders) { var root = false; if(typeof ele === 'undefined') { ele = $('.books > dl, .books > .catalog > dl'); root = true; orders = {}; } if(typeof parentOrder === 'undefined') { parentOrder = ''; var $parent = ele.closest('.catalog:not(".catalog-empty, .drag-shadow")'); if($parent.length) { parentOrder = $parent.children('strong').find('.order').text(); } } var index = 1; ele.children('.catalog:not(".catalog-empty, .drag-shadow")').each(function() { var $this = $(this); var order = (parentOrder === '' ? '' : (parentOrder + '.')) + (index++); orders[$this.data('id')] = order; $this.children('strong').find('.order').text(order); var $dl = $this.children('dl'); if($dl.length) { updateOrders($dl, order, orders); } }); if(root) { saveOrders(orders); } }; $('.books dl').append('
 
'); $('.books > .catalog .catalog, .books > dl .catalog').not('.catalog-empty').droppable( { trigger: function($e){return $e.children('.actions').find('.sort-handle')}, target: function($e){return $e.siblings('.catalog');}, container: '.books', nested: true, flex: true, sensorOffsetY: -10, start: function() { $('.books').addClass('show-empty-catalog'); }, drag: function(e) { if(e.target) { $('.drop-area').removeClass('drop-area'); e.target.closest('dl').addClass('drop-area'); } }, drop: function(e) { e.target.before(e.element); updateOrders(); }, finish: function() { $('.drop-area').removeClass('drop-area'); $('.books').removeClass('show-empty-catalog'); } }); 'use strict'; var NAME = 'zui.splitRow'; // model name // File input list // The SplitRow model class var SplitRow = function(element, options) { var that = this; that.name = NAME; var $element = that.$ = $(element); options = that.options = $.extend({}, SplitRow.DEFAULTS, this.$.data(), options); var id = options.id || $element.attr('id') || $.zui.uuid(); var $cols = $element.children('.side-col,.main-col'); var $firstCol = $cols.first(); var $secondCol = $cols.eq(1); var $spliter = $firstCol.next('.col-spliter'); if (!$spliter.length) { $spliter = $(options.spliter); if (!$spliter.parent().length) { $spliter.insertAfter($firstCol); } } var spliterWidth = $spliter.width(); var minFirstColWidth = $firstCol.data('minWidth'); var minSecondColWidth = $secondCol.data('minWidth'); var setFirstColWidth = function(width) { var rowWidth = $element.width(); var maxFirstWidth = rowWidth - minSecondColWidth - spliterWidth; width = Math.max(minFirstColWidth, Math.min(width, maxFirstWidth)); $firstCol.width(width); $.zui.store.set('splitRowFirstSize:' + id, width); }; var defaultWidth = $.zui.store.get('splitRowFirstSize:' + id); if(typeof(defaultWidth) == 'undefined') { defaultWidth = 0; $firstCol.find('.tabs ul.nav-tabs li').each(function(){defaultWidth += $(this).outerWidth()}); defaultWidth += ($firstCol.find('.tabs ul.nav-tabs li').length - 1) * 10; defaultWidth += 30; } setFirstColWidth(defaultWidth); var documentEventName = '.' + id; var mouseDownX, isMouseDown, startFirstWidth; $spliter.on('mousedown', function(e) { startFirstWidth = $firstCol.width(); mouseDownX = e.pageX; isMouseDown = true; $element.addClass('row-spliting'); e.preventDefault(); $(document).on('mousemove' + documentEventName, function(e) { if (isMouseDown) { var deltaX = e.pageX - mouseDownX; setFirstColWidth(startFirstWidth + deltaX); e.preventDefault(); } else { $(document).off(documentEventName); $element.removeClass('row-spliting'); } }).on('mouseup' + documentEventName + ' mouseleave' + documentEventName, function(e) { isMouseDown = false; $(document).off(documentEventName); $element.removeClass('row-spliting'); }); }); var fixColClass = function($col) { if (options.smallSize) $col.toggleClass('col-sm-size', $col.width() < options.smallSize); if (options.middleSize) $col.toggleClass('col-md-size', $col.width() < options.middleSize); }; var resizeCols = function() { var cellHeight = $(window).height() - $('#footer').outerHeight() - $('#header').outerHeight() - 42; $cols.children('.panel').height(cellHeight).css('maxHeight', cellHeight).find('.panel-body').css('position', 'absolute'); var sideHeight = cellHeight - $cols.find('.nav-tabs').height() - $cols.find('.side-footer').height() - 35; $cols.find('.tab-content').height(sideHeight).css('maxHeight', sideHeight).css('overflow-y', 'auto'); }; $(window).on('resize', resizeCols); $firstCol.on('resize', function(e) {fixColClass($firstCol);}); $secondCol.on('resize', function(e) {fixColClass($secondCol);}); fixColClass($firstCol); fixColClass($secondCol); resizeCols(); }; // default options SplitRow.DEFAULTS = { spliter: '
', smallSize: 700, middleSize: 850 }; // Extense jquery element $.fn.splitRow = function(option) { return this.each(function() { var $this = $(this); var data = $this.data(NAME); var options = typeof option == 'object' && option; if(!data) $this.data(NAME, (data = new SplitRow(this, options))); }); }; SplitRow.NAME = NAME; $.fn.splitRow.Constructor = SplitRow; // Auto call splitRow after document load complete $(function() { $('.split-row').splitRow(); }); var $pageSetting = $('#pageSetting'); if($pageSetting.length) { $pageSetting.on('click', '.close-dropdown', function() { $pageSetting.parent().removeClass('open'); }).on('click', function(e){e.stopPropagation()}); } $('.ajaxCollect').mousedown(function (event) { var obj = $(this); var url = obj.data('url'); $.get(url, function(response) { if(response.status == 'yes') { obj.children('i').removeClass().addClass('icon icon-star text-yellow'); obj.parent().prev().children('.file-name').children('i').remove('.icon'); obj.parent().prev().children('.file-name').prepend(' '); } else { obj.children('i').removeClass().addClass('icon icon-star-empty'); obj.parent().prev().children('.file-name').children('i').remove(".icon"); } }, 'json'); return false; }); $('dd.catalog[data-id="' + articleID + '"]').addClass('active'); });