mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-18 07:01:58 +08:00
119 lines
3.8 KiB
Text
119 lines
3.8 KiB
Text
//= require Sortable.min
|
|
|
|
(function(global) {
|
|
'use strict';
|
|
|
|
// Creates handsontable where needed
|
|
function initHandsOnTable(root) {
|
|
root.find("[data-role='hot-table']").each(function() {
|
|
var $container = $(this).find("[data-role='step-hot-table']");
|
|
var contents = $(this).find('.hot-contents');
|
|
|
|
$container.handsontable({
|
|
startRows: <%= Constants::HANDSONTABLE_INIT_ROWS_CNT %>,
|
|
startCols: <%= Constants::HANDSONTABLE_INIT_COLS_CNT %>,
|
|
rowHeaders: true,
|
|
colHeaders: true,
|
|
fillHandle: false,
|
|
formulas: true,
|
|
cells: function (row, col, prop) {
|
|
var cellProperties = {};
|
|
|
|
if (col >= 0)
|
|
cellProperties.readOnly = true;
|
|
else
|
|
cellProperties.readOnly = false;
|
|
|
|
return cellProperties;
|
|
}
|
|
});
|
|
var hot = $container.handsontable('getInstance');
|
|
|
|
if (contents.attr("value")) {
|
|
var data = JSON.parse(contents.attr("value"));
|
|
if (Array.isArray(data.data)) hot.loadData(data.data);
|
|
setTimeout(() => {
|
|
hot.render()
|
|
}, 0)
|
|
}
|
|
});
|
|
}
|
|
|
|
// On init
|
|
|
|
initHandsOnTable($(document));
|
|
|
|
SmartAnnotation.preventPropagation('.atwho-user-popover');
|
|
|
|
$(function () {
|
|
$("[data-action='collapse-steps']").click(function () {
|
|
$('.step .panel-collapse').collapse('hide');
|
|
});
|
|
});
|
|
|
|
global.initHandsOnTable = initHandsOnTable;
|
|
})(window);
|
|
|
|
(function() {
|
|
// Reorder attachments
|
|
function reorderAttachmentsInit() {
|
|
$('#steps').on('click', '.attachments-actions .change-order', function(e){
|
|
var orderDropdown = $(this).closest('.dropdown-menu');
|
|
var assetsContainer = $(`.attachments[data-step-id=${orderDropdown.data('step-id')}]`)
|
|
var order = $(this).data('order');
|
|
e.preventDefault();
|
|
assetsContainer.data('order', order);
|
|
orderDropdown.find('.change-order').removeClass('selected');
|
|
$(this).addClass('selected');
|
|
assetsContainer.trigger('reorder');
|
|
$.post(orderDropdown.data('state-save-url'), {
|
|
assets: { order: order }
|
|
});
|
|
})
|
|
|
|
$('#steps').on('reorder', '.attachments', function() {
|
|
var assets = $(`.attachments[data-step-id=${$(this).data('step-id')}] .asset`);
|
|
var order = $(this).data('order');
|
|
var sortedAssets = assets.sort(function(a, b) {
|
|
if (a.dataset.assetOrder == b.dataset.assetOrder) {
|
|
if (order == 'new') {
|
|
return b.dataset.assetUpdatedAt - a.dataset.assetUpdatedAt;
|
|
} if (order == 'old') {
|
|
return a.dataset.assetUpdatedAt - b.dataset.assetUpdatedAt;
|
|
} if (order == 'atoz') {
|
|
return a.dataset.assetFileName.toLowerCase() > b.dataset.assetFileName.toLowerCase() ? 1 : -1;
|
|
} if (order == 'ztoa') {
|
|
return b.dataset.assetFileName.toLowerCase() > a.dataset.assetFileName.toLowerCase() ? 1 : -1;
|
|
}
|
|
}
|
|
|
|
return a.dataset.assetOrder > b.dataset.assetOrder ? 1 : -1
|
|
})
|
|
|
|
$.each(sortedAssets, function(i, element){
|
|
element.style.order = i
|
|
})
|
|
})
|
|
.on('DOMSubtreeModified', '.attachments', function() {
|
|
$(this).trigger('reorder');
|
|
})
|
|
$('.attachments').trigger('reorder');
|
|
}
|
|
|
|
function initAssetViewModeToggle(){
|
|
$('#steps').on('click', '.attachments-actions .attachments-view-mode', function () {
|
|
var viewModeBtn = $(this);
|
|
$.post(viewModeBtn.closest('.dropdown-menu').data('view-mode-url'), {
|
|
assets_view_mode: viewModeBtn.data('assets-view-mode')
|
|
}, function(result) {
|
|
viewModeBtn.closest('.dropdown-menu').find('.attachments-view-mode').removeClass('selected');
|
|
viewModeBtn.addClass('selected');
|
|
viewModeBtn.closest('.step').find('.attachments').html(result.html);
|
|
PdfPreview.initCanvas();
|
|
})
|
|
})
|
|
}
|
|
|
|
reorderAttachmentsInit();
|
|
initAssetViewModeToggle();
|
|
});
|