vtenext/include/js/KanbanView.js
2021-04-28 20:10:26 +02:00

146 lines
5.3 KiB
JavaScript

/*************************************
* SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. <info@vtenext.com>
* SPDX-License-Identifier: AGPL-3.0-only
************************************/
/* crmv@OPER6288 */
if (typeof(KanbanView) == 'undefined') {
KanbanView = {
previewRecord: false,
loading: false, // crmv@176022
height: function() {
return eval(jQuery(window).height()-jQuery('#vte_menu').height()-jQuery('#vte_footer').height()-jQuery('#kanban_grid_h').height()-jQuery('#Buttons_List_HomeMod').height()-jQuery('#Buttons_List_Kanban').height()-10);
},
init: function(module,viewid) {
var me = this;
jQuery('ul.kanbanSortableList').sortable({
connectWith: 'ul.kanbanSortableList',
forceHelperSize: true,
forcePlaceholderSize: true,
placeholder: 'kanbanPlaceholder',
receive: function(event,ui){
var record = ui.item.attr("id");
var column = this;
jQuery.ajax({
url: 'index.php?module='+module+'&action='+module+'Ajax&file=KanbanAjax&ajxaction=SAVE&viewid='+viewid+'&column='+column.id+'&record='+record,
type: 'POST',
success: function(data) {
if(data.indexOf(":#:FAILURE")>-1) {
var res = data.split(':');
alert(res[3]);
jQuery('ul.kanbanSortableList').sortable("cancel");
//crmv@121672
} else if(data.indexOf(":#:CONFIRM")>-1) {
var res = data.split(':');
vteconfirm(res[3], function(yes) {
if (yes) {
jQuery.ajax({
url: 'index.php?module='+module+'&action='+module+'Ajax&file=KanbanAjax&ajxaction=SAVE_WITHOUT_PRESAVE&viewid='+viewid+'&column='+column.id+'&record='+record,
type: 'POST',
success: function(data) {
if(data.indexOf(":#:FAILURE")>-1) {
var res = data.split(':');
alert(res[3]);
jQuery('ul.kanbanSortableList').sortable("cancel");
} else {
me.getList(module,viewid,column.id);
jQuery(column).attr('lastpageapppended','0'); // reset page number
if (me.previewRecord != false && record == me.previewRecord) me.showPreView(module,me.previewRecord);
jQuery('ul.kanbanSortableList').sortable("destroy");
me.init(module,viewid);
}
}
});
} else {
jQuery('ul.kanbanSortableList').sortable("cancel");
}
});
} else {
me.getList(module,viewid,column.id);
jQuery(column).attr('lastpageapppended','0'); // reset page number
if (me.previewRecord != false && record == me.previewRecord) me.showPreView(module,me.previewRecord);
jQuery('ul.kanbanSortableList').sortable("destroy");
me.init(module,viewid);
}
//crmv@121672e
}
});
}
});
jQuery('ul.kanbanSortableList').each(function(){
var obj = jQuery(this);
var column = obj.attr('id');
obj.slimScroll({
wheelStep: 10,
height: me.height() + 'px',
overflowHidden: false
}).bind('slimscroll', function(e, pos){
if (pos == 'bottom') {
//TODO gestire quando bloccare lo scroll (es. metto lastpageapppended a false se l'ultima richiesta mi da vuoto o un segnale specifico)
obj.css('opacity',0.3);
var page = parseInt(obj.attr('lastpageapppended'))+1; // increment page number
me.getList(module,viewid,column,page,true,function(){
obj.attr('lastpageapppended',page);
obj.css('opacity',1);
obj.slimScroll(); // reload scrool
});
}
});
});
},
showPreView: function(module,record) {
var me = this;
var destination = 'previewContainer';
var extraParams = {
'show_details_button' : 'false',
'show_related_buttons' : 'false',
'show_kanban_buttons' : 'true',
'DETAILVIEW_AJAX_EDIT' : 'false',
'destination' : destination,
}
loadDetailViewBlocks(module,record,'summary',destination+'_Summary_scroll',extraParams,'status');
jQuery('#'+destination+'_Summary').show();
jQuery('#'+destination+'_Summary_h').show();
me.previewRecord = record;
jQuery('#'+destination+'_Summary_scroll').slimScroll({
wheelStep: 10,
height: me.height() + 'px',
scrollTo: '0px',
});
},
closePreView: function(module,record) {
var me = this;
jQuery('#previewContainer_Summary').hide();
jQuery('#previewContainer_Summary_h').hide();
me.previewRecord = false;
},
// crmv@176022
getList: function(module,viewid,column,page,append,callback) {
var me = this;
if (me.loading) return;
if (typeof(page) == 'undefined') var page = 0;
if (typeof(append) == 'undefined') var page = false;
me.loading = true;
jQuery.ajax({
url: 'index.php?module='+module+'&action='+module+'Ajax&file=KanbanAjax&ajxaction=LOADCOLUMN&viewid='+viewid+'&column='+column+'&page='+page,
type: 'POST',
success: function(data) {
me.loading = false;
if (append) jQuery('#'+column).append(data); else jQuery('#'+column).html(data);
if (typeof(callback) != 'undefined') callback();
}
});
}
// crmv@176022e
}
}