[SSE] repaired 'mail merge' mode

This commit is contained in:
Maxim Kadushkin 2017-04-28 16:37:28 +03:00
parent f0e29ea537
commit be7577dd5b
3 changed files with 68 additions and 11 deletions

View file

@ -1307,7 +1307,7 @@ define([
}, },
onDocumentCanSaveChanged: function (isCanSave) { onDocumentCanSaveChanged: function (isCanSave) {
if (this.toolbarView) { if (this.toolbarView && this.toolbarView.btnSave) {
var isSyncButton = $('.btn-icon', this.toolbarView.btnSave.cmpEl).hasClass('btn-synch'), var isSyncButton = $('.btn-icon', this.toolbarView.btnSave.cmpEl).hasClass('btn-synch'),
forcesave = this.appOptions.forcesave; forcesave = this.appOptions.forcesave;
if (this.toolbarView.btnSave.isDisabled() !== (!isCanSave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave)) if (this.toolbarView.btnSave.isDisabled() !== (!isCanSave && !isSyncButton && !forcesave || this._state.isDisconnected || this._state.fastCoauth && this._state.usersCount>1 && !forcesave))

View file

@ -1337,7 +1337,11 @@ define([
this.api.asc_registerCallback('asc_onSheetsChanged', _.bind(this.onApiSheetChanged, this)); this.api.asc_registerCallback('asc_onSheetsChanged', _.bind(this.onApiSheetChanged, this));
this.api.asc_registerCallback('asc_onUpdateSheetViewSettings', _.bind(this.onApiSheetChanged, this)); this.api.asc_registerCallback('asc_onUpdateSheetViewSettings', _.bind(this.onApiSheetChanged, this));
this.api.asc_registerCallback('asc_onEndAddShape', _.bind(this.onApiEndAddShape, this)); this.api.asc_registerCallback('asc_onEndAddShape', _.bind(this.onApiEndAddShape, this));
} else { this.api.asc_registerCallback('asc_onEditorSelectionChanged', _.bind(this.onApiEditorSelectionChanged, this));
}
if ( !this.appConfig.isEditMailMerge ) {
this.applyFormulaSettings();
} }
this.api.asc_registerCallback('asc_onShowChartDialog', _.bind(this.onApiChartDblClick, this)); this.api.asc_registerCallback('asc_onShowChartDialog', _.bind(this.onApiChartDblClick, this));
@ -1394,14 +1398,10 @@ define([
} }
}); });
this.api.asc_registerCallback('asc_onEditorSelectionChanged', _.bind(this.onApiEditorSelectionChanged, this));
this.onApiSelectionChanged(this.api.asc_getCellInfo()); this.onApiSelectionChanged(this.api.asc_getCellInfo());
this.attachToControlEvents(); this.attachToControlEvents();
this.onApiSheetChanged(); this.onApiSheetChanged();
this.applyFormulaSettings();
Common.NotificationCenter.on('cells:range', _.bind(this.onCellsRange, this)); Common.NotificationCenter.on('cells:range', _.bind(this.onCellsRange, this));
}, },
@ -1716,7 +1716,9 @@ define([
onApiSelectionChanged: function(info) { onApiSelectionChanged: function(info) {
if (!this.editMode) return; if (!this.editMode) return;
if ( this.toolbar.mode.isEditDiagram ) if ( this.toolbar.mode.isEditDiagram )
return this.onApiSelectionChanged_DiagramEditor(info); return this.onApiSelectionChanged_DiagramEditor(info); else
if ( this.toolbar.mode.isEditMailMerge )
return this.onApiSelectionChanged_MailMergeEditor(info);
var selectionType = info.asc_getFlags().asc_getSelectionType(), var selectionType = info.asc_getFlags().asc_getSelectionType(),
coauth_disable = (!this.toolbar.mode.isEditMailMerge && !this.toolbar.mode.isEditDiagram) ? (info.asc_getLocked()===true || info.asc_getLockedTable()===true) : false, coauth_disable = (!this.toolbar.mode.isEditMailMerge && !this.toolbar.mode.isEditDiagram) ? (info.asc_getLocked()===true || info.asc_getLockedTable()===true) : false,
@ -2124,6 +2126,64 @@ define([
} }
}, },
onApiSelectionChanged_MailMergeEditor: function(info) {
if ( !this.editMode || this.api.isCellEdited || this.api.isRangeSelection) return;
var me = this;
var _disableEditOptions = function(seltype, coauth_disable) {
var is_chart_text = seltype == Asc.c_oAscSelectionType.RangeChartText,
is_chart = seltype == Asc.c_oAscSelectionType.RangeChart,
is_shape_text = seltype == Asc.c_oAscSelectionType.RangeShapeText,
is_shape = seltype == Asc.c_oAscSelectionType.RangeShape,
is_image = seltype == Asc.c_oAscSelectionType.RangeImage,
is_mode_2 = is_shape_text || is_shape || is_chart_text || is_chart,
is_objLocked = false;
if (!(is_mode_2 || is_image) &&
me._state.selection_type === seltype &&
me._state.coauthdisable === coauth_disable)
return seltype === Asc.c_oAscSelectionType.RangeImage;
if ( is_mode_2 ) {
var selectedObjects = me.api.asc_getGraphicObjectProps();
is_objLocked = selectedObjects.some(function (object) {
return object.asc_getObjectType() == Asc.c_oAscTypeSelectElement.Image && object.asc_getObjectValue().asc_getLocked();
});
}
me.toolbar.lockToolbar(SSE.enumLock.coAuthText, is_objLocked);
return is_image;
};
var selectionType = info.asc_getFlags().asc_getSelectionType(),
coauth_disable = false,
editOptionsDisabled = _disableEditOptions(selectionType, coauth_disable),
val, need_disable = false;
if (editOptionsDisabled) return;
if (selectionType == Asc.c_oAscSelectionType.RangeChart || selectionType == Asc.c_oAscSelectionType.RangeChartText)
return;
if ( !me.toolbar.mode.isEditDiagram ) {
var filterInfo = info.asc_getAutoFilterInfo();
val = filterInfo ? filterInfo.asc_getIsAutoFilter() : null;
if ( this._state.filter !== val ) {
me.toolbar.btnSetAutofilter.toggle(val===true, true);
// toolbar.mnuitemAutoFilter.setChecked(val===true, true);
this._state.filter = val;
}
need_disable = this._state.controlsdisabled.filters || (val===null);
me.toolbar.lockToolbar(SSE.enumLock.ruleFilter, need_disable,
{ array: [me.toolbar.btnSortDown, me.toolbar.btnSortUp, me.toolbar.btnSetAutofilter] });
need_disable = this._state.controlsdisabled.filters || !filterInfo || (filterInfo.asc_getIsApplyAutoFilter()!==true);
me.toolbar.lockToolbar(SSE.enumLock.ruleDelFilter, need_disable, {array:[me.toolbar.btnClearAutofilter]});
}
},
onApiStyleChange: function() { onApiStyleChange: function() {
this.toolbar.btnCopyStyle.toggle(false, true); this.toolbar.btnCopyStyle.toggle(false, true);
this.modeAlwaysSetStyle = false; this.modeAlwaysSetStyle = false;

View file

@ -276,10 +276,7 @@ define([
}); });
} else } else
if ( config.isEditMailMerge ) { if ( config.isEditMailMerge ) {
Common.UI.Mixtbar.prototype.initialize.call(this, { me.$layout = $(_.template(simple)(config));
template: _.template(simple),
tabs: undefined
});
me.btnSearch = new Common.UI.Button({ me.btnSearch = new Common.UI.Button({
id : 'id-toolbar-btn-search', id : 'id-toolbar-btn-search',