[SSE mobile] process locked/disconnected state
This commit is contained in:
parent
abd400c9d3
commit
8194d6fbf8
|
@ -75,17 +75,19 @@ define([
|
||||||
this.sheets = this.getApplication().getCollection('Sheets');
|
this.sheets = this.getApplication().getCollection('Sheets');
|
||||||
this.sheets.bind({
|
this.sheets.bind({
|
||||||
add: function (model, collection, opts) {
|
add: function (model, collection, opts) {
|
||||||
console.log('add in collection');
|
var $item = me.statusbar.addSheet(model);
|
||||||
|
model.set('el', $item, {silent:true});
|
||||||
},
|
},
|
||||||
change: function (model) {
|
change: function (model) {
|
||||||
console.log('change in collection');
|
if ( model.changed ) {
|
||||||
|
if ( model.changed.locked != undefined ) {
|
||||||
|
model.get('el').toggleClass('locked', model.changed.locked);
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
reset: function (collection, opts) {
|
reset: function (collection, opts) {
|
||||||
me.statusbar.clearTabs();
|
me.statusbar.clearTabs();
|
||||||
collection.each(function(model) {
|
me.statusbar.addSheets(collection);
|
||||||
var $item = me.statusbar.addSheet(model);
|
|
||||||
model.set('el', $item);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -97,21 +99,22 @@ define([
|
||||||
|
|
||||||
setApi: function(api) {
|
setApi: function(api) {
|
||||||
this.api = api;
|
this.api = api;
|
||||||
// this.api.asc_registerCallback('asc_onCoAuthoringDisconnect', _.bind(this.onApiDisconnect, this));
|
this.api.asc_registerCallback('asc_onCoAuthoringDisconnect', _.bind(this.onApiDisconnect, this));
|
||||||
// Common.NotificationCenter.on('api:disconnect', _.bind(this.onApiDisconnect, this));
|
// Common.NotificationCenter.on('api:disconnect', _.bind(this.onApiDisconnect, this));
|
||||||
// this.api.asc_registerCallback('asc_onUpdateTabColor', _.bind(this.onApiUpdateTabColor, this));
|
// this.api.asc_registerCallback('asc_onUpdateTabColor', _.bind(this.onApiUpdateTabColor, this));
|
||||||
// this.api.asc_registerCallback('asc_onEditCell', _.bind(this.onApiEditCell, this));
|
// this.api.asc_registerCallback('asc_onEditCell', _.bind(this.onApiEditCell, this));
|
||||||
/** coauthoring begin **/
|
this.api.asc_registerCallback('asc_onWorkbookLocked', _.bind(this.onWorkbookLocked, this));
|
||||||
// this.api.asc_registerCallback('asc_onWorkbookLocked', _.bind(this.onWorkbookLocked, this));
|
this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this));
|
||||||
// this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this));
|
|
||||||
/** coauthoring end **/
|
|
||||||
// this.api.asc_registerCallback('asc_onError', _.bind(this.onError, this));
|
// this.api.asc_registerCallback('asc_onError', _.bind(this.onError, this));
|
||||||
|
|
||||||
// this.statusbar.setApi(api);
|
|
||||||
|
|
||||||
this.api.asc_registerCallback('asc_onSheetsChanged', this.onApiSheetsChanged.bind(this));
|
this.api.asc_registerCallback('asc_onSheetsChanged', this.onApiSheetsChanged.bind(this));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setMode: function(mode) {
|
||||||
|
this.statusbar.setMode(mode);
|
||||||
|
this.isEdit = mode == 'edit';
|
||||||
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* api events
|
* api events
|
||||||
* */
|
* */
|
||||||
|
@ -129,8 +132,9 @@ define([
|
||||||
index : i,
|
index : i,
|
||||||
active : active_index == i,
|
active : active_index == i,
|
||||||
name : me.api.asc_getWorksheetName(i),
|
name : me.api.asc_getWorksheetName(i),
|
||||||
cls : locked ? 'coauth-locked':'',
|
// cls : locked ? 'coauth-locked':'',
|
||||||
draglocked : locked
|
locked : locked,
|
||||||
|
color : me.api.asc_getWorksheetTabColor(i)
|
||||||
};
|
};
|
||||||
|
|
||||||
(this.api.asc_isWorksheetHidden(i) ? hiddentems : items).push(new SSE.Models.Sheet(tab));
|
(this.api.asc_isWorksheetHidden(i) ? hiddentems : items).push(new SSE.Models.Sheet(tab));
|
||||||
|
@ -151,12 +155,14 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
onApiDisconnect: function() {
|
onApiDisconnect: function() {
|
||||||
this.statusbar.setMode({isDisconnected: true});
|
this.statusbar.setMode('disconnect');
|
||||||
this.statusbar.update();
|
this.isDisconnected = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
/** coauthoring begin **/
|
|
||||||
onWorkbookLocked: function(locked) {
|
onWorkbookLocked: function(locked) {
|
||||||
|
this.statusbar.$btnAddTab.toggleClass('disabled', locked);
|
||||||
|
return;
|
||||||
|
|
||||||
this.statusbar.tabbar[locked?'addClass':'removeClass']('coauth-locked');
|
this.statusbar.tabbar[locked?'addClass':'removeClass']('coauth-locked');
|
||||||
this.statusbar.btnAddWorksheet.setDisabled(locked || this.statusbar.rangeSelectionMode==Asc.c_oAscSelectionDialogType.Chart ||
|
this.statusbar.btnAddWorksheet.setDisabled(locked || this.statusbar.rangeSelectionMode==Asc.c_oAscSelectionDialogType.Chart ||
|
||||||
this.statusbar.rangeSelectionMode==Asc.c_oAscSelectionDialogType.FormatTable);
|
this.statusbar.rangeSelectionMode==Asc.c_oAscSelectionDialogType.FormatTable);
|
||||||
|
@ -172,18 +178,11 @@ define([
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onWorksheetLocked: function(index,locked) {
|
onWorksheetLocked: function(index, locked) {
|
||||||
var count = this.statusbar.tabbar.getCount(), tab;
|
var model = this.sheets.findWhere({index: index});
|
||||||
for (var i = count; i-- > 0; ) {
|
if ( model && model.get('locked') != locked )
|
||||||
tab = this.statusbar.tabbar.getAt(i);
|
model.set('locked', locked);
|
||||||
if (index == tab.sheetindex) {
|
|
||||||
tab[locked?'addClass':'removeClass']('coauth-locked');
|
|
||||||
tab.isLockTheDrag = locked || (this.statusbar.rangeSelectionMode==Asc.c_oAscSelectionDialogType.FormatTable);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
/** coauthoring end **/
|
|
||||||
|
|
||||||
onApiEditCell: function(state) {
|
onApiEditCell: function(state) {
|
||||||
var disableAdd = (state == Asc.c_oAscCellEditorState.editFormula),
|
var disableAdd = (state == Asc.c_oAscCellEditorState.editFormula),
|
||||||
|
@ -410,13 +409,6 @@ define([
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onZoomShow: function(e){
|
|
||||||
if (e.target.classList.contains('disabled')) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
onError: function(id, level, errData) {
|
onError: function(id, level, errData) {
|
||||||
if (id == Asc.c_oAscError.ID.LockedWorksheetRename)
|
if (id == Asc.c_oAscError.ID.LockedWorksheetRename)
|
||||||
this.statusbar.update();
|
this.statusbar.update();
|
||||||
|
@ -428,8 +420,13 @@ define([
|
||||||
|
|
||||||
var sdkindex = model.get('index');
|
var sdkindex = model.get('index');
|
||||||
if ( sdkindex == this.api.asc_getActiveWorksheetIndex () ) {
|
if ( sdkindex == this.api.asc_getActiveWorksheetIndex () ) {
|
||||||
if ( !opened )
|
if ( !opened ) {
|
||||||
this.statusbar.showTabContextMenu(this._getTabMenuItems(), model);
|
if ( this.isEdit && !this.isDisconnected ) {
|
||||||
|
this.api.asc_closeCellEditor();
|
||||||
|
|
||||||
|
this.statusbar.showTabContextMenu(this._getTabMenuItems(model), model);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.api.asc_showWorksheet( sdkindex );
|
this.api.asc_showWorksheet( sdkindex );
|
||||||
this.statusbar.setActiveTab(index);
|
this.statusbar.setActiveTab(index);
|
||||||
|
@ -475,23 +472,26 @@ define([
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_getTabMenuItems: function() {
|
_getTabMenuItems: function(model) {
|
||||||
var items = [
|
var wbLocked = this.api.asc_isWorkbookLocked();
|
||||||
{
|
var shLocked = this.api.asc_isWorksheetLockedOrDeleted(model.get('index'));
|
||||||
caption: this.menuDuplicate,
|
|
||||||
event: 'copy'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
caption: this.menuDelete,
|
|
||||||
event: 'del'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
caption: this.menuHide,
|
|
||||||
event: 'hide'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
if ( this.hiddensheets.length ) {
|
var items = [{
|
||||||
|
caption: this.menuDuplicate,
|
||||||
|
event: 'copy',
|
||||||
|
locked: wbLocked || shLocked
|
||||||
|
},{
|
||||||
|
caption: this.menuDelete,
|
||||||
|
event: 'del',
|
||||||
|
locked: wbLocked || shLocked
|
||||||
|
},{
|
||||||
|
caption: this.menuHide,
|
||||||
|
event: 'hide',
|
||||||
|
locked: wbLocked || shLocked
|
||||||
|
}];
|
||||||
|
|
||||||
|
|
||||||
|
if ( !wbLocked && !shLocked && this.hiddensheets.length ) {
|
||||||
items.push({
|
items.push({
|
||||||
caption: this.menuUnhide,
|
caption: this.menuUnhide,
|
||||||
event: 'unhide'
|
event: 'unhide'
|
||||||
|
|
|
@ -49,16 +49,18 @@ define([
|
||||||
el: '.pages > .page',
|
el: '.pages > .page',
|
||||||
template: '<div class="statusbar">' +
|
template: '<div class="statusbar">' +
|
||||||
'<div id="box-addtab" class="status-group">' +
|
'<div id="box-addtab" class="status-group">' +
|
||||||
'<a href="#" id="btn-addtab" class="button"><i class="icon icon-plus"></i></a>' +
|
'<a href="#" id="btn-addtab" class="button" style="display:none"><i class="icon icon-plus"></i></a>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="box-tabs">' +
|
'<div class="box-tabs">' +
|
||||||
'<ul class="sheet-tabs bottom"></ul>' +
|
'<ul class="sheet-tabs bottom"></ul>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>',
|
'</div>',
|
||||||
tabtemplate: _.template('<li class="tab"><a><%= label %></a></li>'),
|
tabtemplate: _.template('<li class="tab<% if (locked) print(" locked"); %>"><a><%= label %></a></li>'),
|
||||||
menutemplate: _.template(
|
menutemplate: _.template(
|
||||||
'<% _.each(menuItems, function(item) { %>' +
|
'<% _.each(menuItems, function(item) { %>' +
|
||||||
'<li data-event="<%= item.event %>"><a href="#" class="item-link list-button"><%= item.caption %></li>' +
|
'<li data-event="<%= item.event %>" class="<% if (item.locked===true) print("disabled") %>">' +
|
||||||
|
'<a href="#" class="item-link list-button"><%= item.caption %>' +
|
||||||
|
'</li>' +
|
||||||
'<% }); %>'),
|
'<% }); %>'),
|
||||||
|
|
||||||
events: {},
|
events: {},
|
||||||
|
@ -79,30 +81,16 @@ define([
|
||||||
});
|
});
|
||||||
|
|
||||||
// this.editMode = false;
|
// this.editMode = false;
|
||||||
|
|
||||||
// this.btnAddWorksheet = new Common.UI.Button({
|
|
||||||
// el: $('#status-btn-addtab',this.el),
|
|
||||||
// hint: this.tipAddTab,
|
|
||||||
// disabled: true,
|
|
||||||
// hintAnchor: 'top'
|
|
||||||
// });
|
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
// setApi: function(api) {
|
|
||||||
// this.api = api;
|
|
||||||
// this.api.asc_registerCallback('asc_onSheetsChanged', _.bind(this.update, this));
|
|
||||||
// return this;
|
|
||||||
// },
|
|
||||||
|
|
||||||
setMode: function(mode) {
|
setMode: function(mode) {
|
||||||
this.mode = _.extend({}, this.mode, mode);
|
if ('edit' == mode) {
|
||||||
// this.$el.find('.el-edit')[mode.isEdit?'show':'hide']();
|
this.$btnAddTab.show();
|
||||||
this.btnAddWorksheet.setVisible(this.mode.isEdit);
|
} else
|
||||||
this.btnAddWorksheet.setDisabled(this.mode.isDisconnected);
|
if ('disconnect' == mode) {
|
||||||
this.lblChangeRights[(!this.mode.isOffline && this.mode.sharingSettingsUrl&&this.mode.sharingSettingsUrl.length)?'show':'hide']();
|
this.$btnAddTab.toggleClass('disabled', true);
|
||||||
// this.updateTabbarBorders();
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
setVisible: function(visible) {
|
setVisible: function(visible) {
|
||||||
|
@ -112,7 +100,8 @@ define([
|
||||||
addSheet: function(model) {
|
addSheet: function(model) {
|
||||||
var index = this.$boxTabs.children().length;
|
var index = this.$boxTabs.children().length;
|
||||||
var $item = $(this.tabtemplate({
|
var $item = $(this.tabtemplate({
|
||||||
'label': model.get('name')
|
label: model.get('name'),
|
||||||
|
locked: model.get('locked')
|
||||||
})).appendTo(this.$boxTabs);
|
})).appendTo(this.$boxTabs);
|
||||||
|
|
||||||
$item.on('click', this.onSheetClick.bind(this, index, model));
|
$item.on('click', this.onSheetClick.bind(this, index, model));
|
||||||
|
@ -120,7 +109,12 @@ define([
|
||||||
return $item;
|
return $item;
|
||||||
},
|
},
|
||||||
|
|
||||||
addSheets: function () {
|
addSheets: function (collection) {
|
||||||
|
var me = this;
|
||||||
|
collection.each(function(model) {
|
||||||
|
var $item = me.addSheet(model);
|
||||||
|
model.set('el', $item, {silent:true});
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
clearTabs: function () {
|
clearTabs: function () {
|
||||||
|
@ -213,22 +207,6 @@ define([
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
updateTabbarBorders: function() {
|
|
||||||
var right = parseInt(this.boxZoom.css('width')), visible = false;
|
|
||||||
if (this.boxMath.is(':visible')) {
|
|
||||||
right += parseInt(this.boxMath.css('width'));
|
|
||||||
visible = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.panelUsers.is(':visible')) {
|
|
||||||
right += parseInt(this.panelUsers.css('width'));
|
|
||||||
visible = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.boxZoom.find('.separator').css('border-left-color',visible?'':'transparent');
|
|
||||||
this.tabBarBox.css('right', right + 'px');
|
|
||||||
},
|
|
||||||
|
|
||||||
changeViewMode: function (edit) {
|
changeViewMode: function (edit) {
|
||||||
if (edit) {
|
if (edit) {
|
||||||
this.tabBarBox.css('left', '152px');
|
this.tabBarBox.css('left', '152px');
|
||||||
|
|
|
@ -70,4 +70,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.locked {
|
||||||
|
a {
|
||||||
|
box-shadow: inset 0 2px #f00;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue