Commit 8bec310c authored by Oleg.Korshul's avatar Oleg.Korshul Committed by Alexander Trofimov

git-svn-id:...

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@53300 954022d7-b5bf-4e40-9824-e11837661b57
parent b9e44e9d
......@@ -125,18 +125,43 @@ native_canvas.prototype =
addEventListener : function()
{
}
},
attr : function()
{
}
};
window["Asc"] = new Object();
var _null_object = new Object();
_null_object.length = 0;
_null_object.nodeType = 1;
_null_object.offsetWidth = 1;
_null_object.offsetHeight = 1;
_null_object.clientWidth = 1;
_null_object.clientHeight = 1;
_null_object.scrollWidth = 1;
_null_object.scrollHeight = 1;
_null_object.style = new Object();
_null_object.documentElement = _null_object;
_null_object.body = _null_object;
_null_object.addEventListener = function(){};
_null_object.setAttribute = function(){};
_null_object.getElementsByTagName = function() { return []; };
_null_object.appendChild = function() {};
_null_object.removeChild = function() {};
_null_object.insertBefore = function() {};
_null_object.childNodes = [];
_null_object.parent = _null_object;
_null_object.parentNode = _null_object;
_null_object.find = function() { return this; };
_null_object.appendTo = function() { return this; };
_null_object.css = function() { return this; };
_null_object.width = function() { return 0; };
_null_object.height = function() { return 0; };
_null_object.attr = function() { return this; };
_null_object.remove = function() {};
document.createElement = function(type)
{
......@@ -152,8 +177,15 @@ document.createElement = function(type)
function _return_empty_html_element() { return _null_object; };
document.createDocumentFragment = _return_empty_html_element;
document.getElementsByTagName = function() { return []; };
document.getElementsByTagName = function(tag) {
var ret = [];
if ("head" == tag)
ret.push(_null_object);
return ret;
};
document.insertBefore = function() {};
document.appendChild = function() {};
document.removeChild = function() {};
document.getElementById = function() { return undefined; };
document.createComment = function() { return undefined; };
......@@ -190,11 +222,16 @@ function NativeOpenFile()
_api = new spreadsheet_api("", "");
_api.DocumentUrl = "TeamlabNative";
window.asc_wb = new Workbook(_api.DocumentUrl, _api.handlers, _api);
Asc["editor"] = _api;
_api.User = new Asc["asc_CUser"];
_api.User.asc_setId("TM");
_api.User.asc_setUserName("native");
window.asc_wb = new Workbook(_api.DocumentUrl, _api.handlers, _api);
_api.initGlobalObjects(window.asc_wb);
_api.wbModel = window.asc_wb;
var oBinaryFileReader = new BinaryFileReader(_api.DocumentUrl);
var oBinaryFileReader = new BinaryFileReader(_api.DocumentUrl);
var doc_bin = window.native.GetFileString(g_file_path);
oBinaryFileReader.Read(doc_bin, window.asc_wb);
}
......@@ -209,8 +246,19 @@ function NativeCalculateFile()
}
else
{
window.adjustPrint = new asc_CAdjustPrint();
window.printPagesData = window.asc_wb.calcPagesPrint(window.adjustPrint);
_api.wb = new Asc["WorkbookView"](
_api.wbModel,
_api.controller,
_api.handlers,
_null_object,
_null_object,
_api,
_api.collaborativeEditing,
_api.fontRenderingMode,
_api.options);
window.adjustPrint = new asc_CAdjustPrint();
window.printPagesData = _api.wb.calcPagesPrint(window.adjustPrint);
}
}
......@@ -285,10 +333,21 @@ function GetNativePageBase64(pageIndex)
else
{
// TODO:
var pdf_writer = new CPdfPrinter(_api.wbModel.sUrlPath);
var isEndPrint = window.asc_wb.printSheet(pdf_writer, window.printPagesData);
return pdf_writer.DocumentRenderer.Memory.GetBase64Memory();
if (native_renderer == null)
{
native_renderer = new CPdfPrinter(_api.wbModel.sUrlPath);
native_renderer.DocumentRenderer.Memory = CreateNativeMemoryStream();
native_renderer.DocumentRenderer.VectorMemoryForPrint = CreateNativeMemoryStream();
}
else
{
native_renderer.DocumentRenderer.Memory.ClearNoAttack();
native_renderer.DocumentRenderer.VectorMemoryForPrint.ClearNoAttack();
}
var isEndPrint = _api.wb.printSheet(native_renderer, window.printPagesData);
return native_renderer.DocumentRenderer.Memory;
}
//return native_renderer.Memory.GetBase64Memory();
......@@ -300,9 +359,12 @@ function GetNativeId()
return window.native.GetFileId();
}
function clearTimeout()
{
}
function setTimeout()
{
}
\ No newline at end of file
function clearTimeout() {};
function setTimeout() {};
function clearInterval() {};
function setInterval() {};
window.clearTimeout = clearTimeout;
window.setTimeout = setTimeout;
window.clearInterval = clearInterval;
window.setInterval = setInterval;
\ No newline at end of file
......@@ -35,4 +35,89 @@ function CCacheManager()
{
}
var NATIVE_DOCUMENT_TYPE = "spreadsheet";
\ No newline at end of file
var NATIVE_DOCUMENT_TYPE = "spreadsheet";
var Asc = window["Asc"];
var spreadsheet_api = Asc["spreadsheet_api"];
var asc_CAdjustPrint = Asc["asc_CAdjustPrint"];
$.ready();
$.prototype.clone = function(_clone) { return _clone; };
$.prototype.clean = function() { return []; };
$.prototype.buildFragment = _return_empty_html_element;
$.prototype.init = function(selector, context, rootjQuery)
{
// Handle $(""), $(null), or $(undefined)
if ( !selector ) {
return this;
}
// Handle $(DOMElement)
if ( selector.nodeType ) {
this.context = this[0] = selector;
this.length = 1;
return this;
}
return _null_object;
};
Asc["DrawingContext"].prototype.setCanvas = function (_canvas) {
if (!_canvas)
return;
this.canvas = new Array();
this.canvas.push(_canvas);
this.ctx = this.canvas[0].getContext("2d");
if (this.ctx.mozImageSmoothingEnabled) {
this.ctx.mozImageSmoothingEnabled = false;
}
};
Asc["WorkbookView"].prototype.init = function (fontRenderingMode) {
var self = this;
var asc_DC = Asc["DrawingContext"];
var asc_CE = Asc["CellEditor"];
var asc_SR = Asc["StringRender"];
// Init font managers rendering
// c_oAscFontRenderingModeType.hintingAndSubpixeling
this.setFontRenderingMode(fontRenderingMode, /*isInit*/true);
this.canvas = new Array(); this.canvas.push(document.createElement("canvas"));
this.canvasOverlay = new Array(); this.canvasOverlay.push(document.createElement("canvas"));
this.buffers.main = asc_DC({canvas: this.canvas[0], units: 1/*pt*/,
fmgrGraphics: this.fmgrGraphics, font: this.m_oFont});
this.buffers.overlay = asc_DC({canvas: this.canvasOverlay[0], units: 1/*pt*/,
fmgrGraphics: this.fmgrGraphics, font: this.m_oFont});
this.buffers.overlay.ctx.isOverlay = true; // _activateOverlayCtx / _deactivateOverlayCtx
this.drawingCtx = this.buffers.main;
this.overlayCtx = this.buffers.overlay;
// Shapes
this.buffers.shapeCtx = new CGraphics();
this.buffers.shapeCtx.init(this.drawingCtx.ctx, this.drawingCtx.getWidth(0), this.drawingCtx.getHeight(0), this.drawingCtx.getWidth(3), this.drawingCtx.getHeight(3));
this.buffers.shapeCtx.m_oFontManager = this.fmgrGraphics[2];
this.buffers.shapeOverlayCtx = new CGraphics();
this.buffers.shapeOverlayCtx.init(this.overlayCtx.ctx, this.overlayCtx.getWidth(0), this.overlayCtx.getHeight(0), this.overlayCtx.getWidth(3), this.overlayCtx.getHeight(3));
this.buffers.shapeOverlayCtx.m_oFontManager = this.fmgrGraphics[2];
this.drawingCtxCharts = asc_DC({units: 1/*pt*/, fmgrGraphics: this.fmgrGraphics, font: this.m_oFont});
this.stringRender = asc_SR(this.buffers.main);
this.stringRender.setDefaultFont(this.defaultFont);
// 100%
this._calcMaxDigitWidth();
this.cellEditor = null;
this.clipboard.Api = this.Api;
this.clipboard.init();
return this;
};
\ No newline at end of file
......@@ -200,7 +200,7 @@
<Tool
Name="VCPostBuildEventTool"
Description="Performing registration"
CommandLine="regsvr32 /s /c &quot;$(TargetPath)&quot;&#x0D;&#x0A;copy $(TargetPath) ..\Redist\DoctRenderer.dll"
CommandLine="regsvr32 /s /c &quot;$(TargetPath)&quot;&#x0D;&#x0A;copy $(TargetPath) ..\Redist\DoctRenderer.dll&#x0D;&#x0A;"
/>
</Configuration>
</Configurations>
......
......@@ -125,18 +125,43 @@ native_canvas.prototype =
addEventListener : function()
{
}
},
attr : function()
{
}
};
window["Asc"] = new Object();
var _null_object = new Object();
_null_object.length = 0;
_null_object.nodeType = 1;
_null_object.offsetWidth = 1;
_null_object.offsetHeight = 1;
_null_object.clientWidth = 1;
_null_object.clientHeight = 1;
_null_object.scrollWidth = 1;
_null_object.scrollHeight = 1;
_null_object.style = new Object();
_null_object.documentElement = _null_object;
_null_object.body = _null_object;
_null_object.addEventListener = function(){};
_null_object.setAttribute = function(){};
_null_object.getElementsByTagName = function() { return []; };
_null_object.appendChild = function() {};
_null_object.removeChild = function() {};
_null_object.insertBefore = function() {};
_null_object.childNodes = [];
_null_object.parent = _null_object;
_null_object.parentNode = _null_object;
_null_object.find = function() { return this; };
_null_object.appendTo = function() { return this; };
_null_object.css = function() { return this; };
_null_object.width = function() { return 0; };
_null_object.height = function() { return 0; };
_null_object.attr = function() { return this; };
_null_object.remove = function() {};
document.createElement = function(type)
{
......@@ -152,8 +177,15 @@ document.createElement = function(type)
function _return_empty_html_element() { return _null_object; };
document.createDocumentFragment = _return_empty_html_element;
document.getElementsByTagName = function() { return []; };
document.getElementsByTagName = function(tag) {
var ret = [];
if ("head" == tag)
ret.push(_null_object);
return ret;
};
document.insertBefore = function() {};
document.appendChild = function() {};
document.removeChild = function() {};
document.getElementById = function() { return undefined; };
document.createComment = function() { return undefined; };
......@@ -190,11 +222,16 @@ function NativeOpenFile()
_api = new spreadsheet_api("", "");
_api.DocumentUrl = "TeamlabNative";
window.asc_wb = new Workbook(_api.DocumentUrl, _api.handlers, _api);
Asc["editor"] = _api;
_api.User = new Asc["asc_CUser"];
_api.User.asc_setId("TM");
_api.User.asc_setUserName("native");
window.asc_wb = new Workbook(_api.DocumentUrl, _api.handlers, _api);
_api.initGlobalObjects(window.asc_wb);
_api.wbModel = window.asc_wb;
var oBinaryFileReader = new BinaryFileReader(_api.DocumentUrl);
var oBinaryFileReader = new BinaryFileReader(_api.DocumentUrl);
var doc_bin = window.native.GetFileString(g_file_path);
oBinaryFileReader.Read(doc_bin, window.asc_wb);
}
......@@ -209,8 +246,19 @@ function NativeCalculateFile()
}
else
{
window.adjustPrint = new asc_CAdjustPrint();
window.printPagesData = window.asc_wb.calcPagesPrint(window.adjustPrint);
_api.wb = new Asc["WorkbookView"](
_api.wbModel,
_api.controller,
_api.handlers,
_null_object,
_null_object,
_api,
_api.collaborativeEditing,
_api.fontRenderingMode,
_api.options);
window.adjustPrint = new asc_CAdjustPrint();
window.printPagesData = _api.wb.calcPagesPrint(window.adjustPrint);
}
}
......@@ -285,10 +333,21 @@ function GetNativePageBase64(pageIndex)
else
{
// TODO: �������� �� ���������� ������
var pdf_writer = new CPdfPrinter(_api.wbModel.sUrlPath);
var isEndPrint = window.asc_wb.printSheet(pdf_writer, window.printPagesData);
return pdf_writer.DocumentRenderer.Memory.GetBase64Memory();
if (native_renderer == null)
{
native_renderer = new CPdfPrinter(_api.wbModel.sUrlPath);
native_renderer.DocumentRenderer.Memory = CreateNativeMemoryStream();
native_renderer.DocumentRenderer.VectorMemoryForPrint = CreateNativeMemoryStream();
}
else
{
native_renderer.DocumentRenderer.Memory.ClearNoAttack();
native_renderer.DocumentRenderer.VectorMemoryForPrint.ClearNoAttack();
}
var isEndPrint = _api.wb.printSheet(native_renderer, window.printPagesData);
return native_renderer.DocumentRenderer.Memory;
}
//return native_renderer.Memory.GetBase64Memory();
......@@ -300,12 +359,15 @@ function GetNativeId()
return window.native.GetFileId();
}
function clearTimeout()
{
}
function setTimeout()
{
}
function clearTimeout() {};
function setTimeout() {};
function clearInterval() {};
function setInterval() {};
window.clearTimeout = clearTimeout;
window.setTimeout = setTimeout;
window.clearInterval = clearInterval;
window.setInterval = setInterval;
var AscBrowser = {
userAgent : "",
......@@ -73102,6 +73164,10 @@ var FONT_THUMBNAIL_HEIGHT = parseInt(7 * 96.0 / 25.4);
/** @const */
var kArrayL = "array";
function applyFunction(callback) {
if (kFunctionL === typeof callback)
callback.apply(null, Array.prototype.slice.call(arguments, 1));
}
function typeOf(obj) {
if (obj === undefined) {return kUndefinedL;}
......@@ -74169,6 +74235,7 @@ var FONT_THUMBNAIL_HEIGHT = parseInt(7 * 96.0 / 25.4);
* Export
* -----------------------------------------------------------------------------
*/
window["Asc"].applyFunction = applyFunction;
window["Asc"].typeOf = typeOf;
window["Asc"].getProperty = getProperty;
window["Asc"].lastIndexOf = lastIndexOf;
......@@ -79686,7 +79753,7 @@ var gUndoInsDelCellsFlag = true;
//if (bIsActiveSheet)
//данные фунцкии не занимаются отрисовкой, а заполняют необходимые массивы. нужно для совместного редактировния в случае неактивного листа.
this._addButtonAF(newRes, bIsOpenFilter);
this.drawAutoF(true);
//this.drawAutoF(true);
}
else if(!this.allButtonAF)
this.allButtonAF = [];
......@@ -79742,20 +79809,122 @@ var gUndoInsDelCellsFlag = true;
}
}
},
drawAutoF2: function (visibleRange, offsetX, offsetY) {
var buttons = this.allButtonAF;
var ws = this.worksheet;
//проверяем, затрагивают ли данные кнопки визуальную область
if (buttons) {
for (var i = 0; i < buttons.length; i++) {
if (!this._isNeedDrawButton(buttons[i], visibleRange))
continue;
var range = ws.model.getCell(new CellAddress(buttons[i].id)).getCells();
var col = range[0].oId.col - 1;
var row = range[0].oId.row - 1;
//считаем сдвиг для скролла
var width = 13;
var height = 13;
var rowHeight = ws.rows[row].height;
if (rowHeight < height) {
width = width*(rowHeight/height);
height = rowHeight;
}
var x1 = ws.cols[col].left + ws.cols[col].width - width - offsetX - 0.5;
var y1 = ws.rows[row].top + ws.rows[row].height - height - offsetY - 0.5;
buttons[i].x = x1;
buttons[i].y = y1;
buttons[i].x1 = ws.cols[col].left - offsetX;
buttons[i].y1 = ws.rows[row].top - offsetY;
buttons[i].width = ws.cols[col].width;
buttons[i].height = ws.rows[row].height;
var isSetFilter = false;
//проверяем , применен ли фильтр
var activeCells = this._idToRange(buttons[i].id);
var indexFilter = this._findArrayFromAllFilter3(activeCells,buttons[i].id);
if (indexFilter != undefined && indexFilter.toString().search(":") > -1) {
var aWs = this._getCurrentWS();
var filtersOp = indexFilter.split(':');
var currentFilter;
var curFilForSort;
if (filtersOp[0] == 'all') {
currentFilter = aWs.AutoFilter;
curFilForSort = aWs.AutoFilter;
} else {
currentFilter = aWs.TableParts[filtersOp[0]].AutoFilter;
curFilForSort = aWs.TableParts[filtersOp[0]];
}
var filters;
if (currentFilter && currentFilter.FilterColumns) {
filters = currentFilter.FilterColumns;
for (var k = 0; k < filters.length; k++) {
//для мерженных головных ячеек
var colId = filters[k].ColId;
if (filters[k].ShowButton == false && currentFilter.result) {
for (var sb = filters[k].ColId; sb < currentFilter.result.length; sb++) {
if (currentFilter.result[sb].showButton != false) {
colId = sb;
break;
}
}
}
if (colId == filtersOp[1] && (filters[k].Filters != null || filters[k].CustomFiltersObj != null)) {
isSetFilter = true;
filters = filters[k];
break;
}
}
}
else
isSetFilter = false;
//добавляем какие именно строки скрыты этим фильтром
//применяем к заданному диапазону фильтр и смотрим какие строки им скрыты
var hiddenRowsObj = this._getHiddenRows(buttons[i].id,buttons[i].idNext,filters);
buttons[i].hiddenRows = hiddenRowsObj;
//изменяем result у объекта автофильтра
if (curFilForSort.result) {
for (var n = 0; n < curFilForSort.result.length; n++) {
if(curFilForSort.result[n].id == buttons[i].id) {
curFilForSort.result[n].hiddenRows = hiddenRowsObj;
}
}
}
var sortState = undefined;
if(curFilForSort.SortState) {
if(curFilForSort.SortState.SortConditions && curFilForSort.SortState.SortConditions.length != 0 && curFilForSort.SortState.SortConditions[0].Ref.split(':')[0] == buttons[i].id)
sortState = !curFilForSort.SortState.SortConditions[0].ConditionDescending;
}
var filOptions = {
sortState: sortState,
isSetFilter: isSetFilter,
row: row,
col: col
};
if (buttons[i].x1 >= ws.cols[0].left && buttons[i].y1 >= ws.rows[0].top)
this._drawButton(x1,y1,filOptions);
}
}
}
},
//перерисовка и отрисовка кнопок(draw:)
drawAutoF: function(isNotDraw){
var buttons = this.allButtonAF;
var ws = this.worksheet;
//проверяем, затрагивают ли данные кнопки визуальную область
if(buttons && this._isNeedDrawButton())
if(buttons)
{
var activeButtonFilter = [];
var passiveButtonFilter = [];
var newButtons = [];
var l = 0;
for(var i = 0; i < buttons.length; i++)
{
if (!this._isNeedDrawButton(buttons[i], ws.visibleRange))
continue;
var range = ws.model.getCell(new CellAddress(buttons[i].id)).getCells();
var col = range[0].oId.col - 1;
var row = range[0].oId.row - 1;
......@@ -79786,8 +79955,6 @@ var gUndoInsDelCellsFlag = true;
var indexFilter = this._findArrayFromAllFilter3(activeCells,buttons[i].id);
if(indexFilter != undefined && indexFilter.toString().search(":") > -1)
{
newButtons[l] = buttons[i];
l++;
var aWs = this._getCurrentWS();
var filtersOp = indexFilter.split(':');
var currentFilter;
......@@ -79875,7 +80042,6 @@ var gUndoInsDelCellsFlag = true;
this._drawButton(x1,y1,filOptions)
}
}
this.allButtonAF = newButtons;
//фильтры ставим в порядок добавления
for(k = 0; k < passiveButtonFilter.length + activeButtonFilter.length; k++)
{
......@@ -81131,7 +81297,7 @@ var gUndoInsDelCellsFlag = true;
ws.isChanged = true;
this._reDrawFilters();
//ws.changeWorksheet("update");
this.drawAutoF();
//this.drawAutoF();
},
_getAutoFilterArray: function(cell) {
......@@ -81458,7 +81624,7 @@ var gUndoInsDelCellsFlag = true;
ws._trigger("setAutoFiltersDialog", autoFilterObject);
},
//отрисовка кнопки фильтра
_drawButton: function(x1,y1,options)
_drawButton: function(x1, y1, options)
{
var ws = this.worksheet;
var isSet = options.isSetFilter;
......@@ -81502,9 +81668,6 @@ var gUndoInsDelCellsFlag = true;
height = rowHeight;
}
//квадрат кнопки рисуем
var zoom = ws.getZoom();
var x1 = x1/zoom;
var y1 = y1/zoom;
ws.drawingCtx
.setFillStyle(ws.settings.cells.defaultState.background)
.setLineWidth(1)
......@@ -84397,7 +84560,7 @@ var gUndoInsDelCellsFlag = true;
this._addHistoryObj(oCurFilter, historyitem_AutoFilter_Move, {worksheet: ws, arnTo: arnTo, arnFrom: arnFrom, activeCells: ws.activeRange})
}
this._reDrawFilters();
this.drawAutoF();
//this.drawAutoF();
}
else
{
......@@ -84886,19 +85049,9 @@ var gUndoInsDelCellsFlag = true;
return true;
},
_isNeedDrawButton: function()
{
var ws = this.worksheet;
var buttons = this.allButtonAF;
var visibleRange = ws.visibleRange;
var buttonCell;
for(var i = 0; i < buttons.length; i++)
{
buttonRange = this._idToRange(buttons[i].id);
if(buttonRange.r1 >= visibleRange.r1 && buttonRange.r1 <= visibleRange.r2 && buttonRange.c1 >= visibleRange.c1 && buttonRange.c1 <= visibleRange.c2)
return true;
}
return false;
_isNeedDrawButton: function(button, visibleRange) {
var buttonRange = this._idToRange(button.id);
return (buttonRange.r1 >= visibleRange.r1 && buttonRange.r1 <= visibleRange.r2 && buttonRange.c1 >= visibleRange.c1 && buttonRange.c1 <= visibleRange.c2)
},
_clearFormatTableStyle: function(range)
......@@ -85391,8 +85544,8 @@ function DrawingContext(settings) {
var ppiTest =
$('<div style="position: absolute; width: 10in; height:10in; visibility:hidden; padding:0;"/>')
.appendTo("body");
this.ppiX = asc_round(ppiTest[0].offsetWidth * 0.1);
this.ppiY = asc_round(ppiTest[0].offsetHeight * 0.1);
this.ppiX = asc_round(ppiTest[0] ? (ppiTest[0].offsetWidth * 0.1) : 96);
this.ppiY = asc_round(ppiTest[0] ? (ppiTest[0].offsetHeight * 0.1) : 96);
ppiTest.remove();
this._mct = new Matrix(); // units transform
......@@ -86217,8 +86370,8 @@ function CPdfPrinter(sUrlPath)
$('<div style="position: absolute; width: 10in; height:10in; ' +
'visibility:hidden; padding:0;"/>')
.appendTo("body");
this.dpiX = this.asc_round(ppiTest[0].offsetWidth * 0.1);
this.dpiY = this.asc_round(ppiTest[0].offsetHeight * 0.1);
this.dpiX = this.asc_round(ppiTest[0] ? (ppiTest[0].offsetWidth * 0.1) : 96);
this.dpiY = this.asc_round(ppiTest[0] ? (ppiTest[0].offsetHeight * 0.1) : 96);
ppiTest.remove();
this.bIsSimpleCommands = false;
......@@ -86914,9 +87067,10 @@ function getEmptyWorkbook() {
* Import
* -----------------------------------------------------------------------------
*/
var asc = window["Asc"];
var asc_lockInfo = asc.asc_CLockInfo;
var asc_Range = asc.Range;
var asc = window["Asc"];
var asc_applyFunction = asc.applyFunction;
var asc_lockInfo = asc.asc_CLockInfo;
var asc_Range = asc.Range;
/**
* Отвечает за совместное редактирование
......@@ -87026,7 +87180,7 @@ function getEmptyWorkbook() {
}
}
else {
if ($.isFunction(callback)) {callback(true);}
asc_applyFunction(callback, true);
// Снимаем глобальный лок (для редактирования ячейки)
this.m_bGlobalLockEditCell = false;
......@@ -87052,9 +87206,9 @@ function getEmptyWorkbook() {
}
}
if ($.isFunction(callback)) { callback(true); }
asc_applyFunction(callback, true);
} else if (result["error"]) {
if ($.isFunction(callback)) { callback(false); }
asc_applyFunction(callback, false);
}
},
addUnlock: function (LockClass) {
......@@ -90188,6 +90342,7 @@ function parserFormula( formula, _cellId, _ws ) {
this.error = [];
this.Formula = formula;
this.undoParser = {formula:null,outStack:[]};
this.isParsed = false;
}
parserFormula.prototype = {
......@@ -105000,7 +105155,7 @@ function asc_CCellCommentator(currentSheet) {
var _this = this;
var asc = window["Asc"];
var asc_Range = asc.Range;
var asc_applyFunction = asc.applyFunction;
var asc_CCollaborativeRange = asc.asc_CCollaborativeRange;
var isViewerMode = function() { return _this.worksheet._trigger("getViewerMode"); };
......@@ -105039,7 +105194,7 @@ function asc_CCellCommentator(currentSheet) {
if (false === _this.worksheet.collaborativeEditing.isCoAuthoringExcellEnable()) {
// Запрещено совместное редактирование
if ($.isFunction(callbackFunc)) { callbackFunc(true); }
asc_applyFunction(callbackFunc, true);
return;
}
......@@ -105068,17 +105223,17 @@ function asc_CCellCommentator(currentSheet) {
if (false === _this.worksheet.collaborativeEditing.getCollaborativeEditing()) {
// Пользователь редактирует один: не ждем ответа, а сразу продолжаем редактирование
if ($.isFunction(callbackFunc)) { callbackFunc(true); }
asc_applyFunction(callbackFunc, true);
callbackFunc = undefined;
}
if (false !== _this.worksheet.collaborativeEditing.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeMine, /*bCheckOnlyLockAll*/false)) {
// Редактируем сами
if ($.isFunction(callbackFunc)) { callbackFunc(true); }
asc_applyFunction(callbackFunc, true);
return;
}
else if (false !== _this.worksheet.collaborativeEditing.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeOther, /*bCheckOnlyLockAll*/false)) {
// Уже ячейку кто-то редактирует
if ($.isFunction(callbackFunc)) { callbackFunc(false); }
asc_applyFunction(callbackFunc, false);
return;
}
......@@ -105087,7 +105242,8 @@ function asc_CCellCommentator(currentSheet) {
_this.worksheet.collaborativeEditing.addCheckLock(lockInfo);
_this.worksheet.collaborativeEditing.onEndCheckLock(callbackFunc);
}
else if ($.isFunction(callbackFunc)) { callbackFunc(true); }
else
asc_applyFunction(callbackFunc, true);
}
};
......@@ -120744,12 +120900,11 @@ function TablePart() {
this.TableColumns = null;
this.TableStyleInfo = null;
}
TablePart.prototype.clone = function() {
TablePart.prototype.clone = function(ws) {
var i, res = new TablePart();
res.Ref = this.Ref;
res.HeaderRowCount = this.HeaderRowCount;
res.TotalsRowCount = this.TotalsRowCount;
res.DisplayName = this.DisplayName;
if (this.AutoFilter)
res.AutoFilter = this.AutoFilter.clone();
if (this.SortState)
......@@ -120761,8 +120916,13 @@ TablePart.prototype.clone = function() {
}
if (this.TableStyleInfo)
res.TableStyleInfo = this.TableStyleInfo.clone();
res.recalc(ws);
return res;
};
TablePart.prototype.recalc = function(ws) {
this.DisplayName = ws.workbook.oNameGenerator.getNextTableName(ws, this.Ref);
};
/** @constructor */
function AutoFilter() {
this.Ref = null;
......@@ -123348,7 +123508,7 @@ Woorksheet.prototype.clone=function(sNewId, bFromRedo){
oNewWs.nRowsCount = this.nRowsCount;
oNewWs.nColsCount = this.nColsCount;
for (i = 0; i < this.TableParts.length; ++i)
oNewWs.TableParts.push(this.TableParts[i].clone());
oNewWs.TableParts.push(this.TableParts[i].clone(oNewWs));
if(this.AutoFilter)
oNewWs.AutoFilter = this.AutoFilter.clone();
for(i in this.aCols)
......@@ -125229,6 +125389,7 @@ function Cell(worksheet){
this.oId = null;
this.oFormulaExt = null;
this.sFormula = null;
this.sFormulaCA = null;
this.formulaParsed = null;
}
Cell.prototype.getStyle=function(){
......@@ -125813,7 +125974,7 @@ Cell.prototype.setValueData = function(Val){
}
Cell.prototype.setFormulaCA = function(ca){
if(ca) this.sFormulaCA = true;
else if( this.sFormulaCA ) delete this.sFormulaCA;
else if( this.sFormulaCA ) this.sFormulaCA = null;
}
//-------------------------------------------------------------------------------------------------
......@@ -138907,6 +139068,7 @@ ScrollObject.prototype = {
* -----------------------------------------------------------------------------
*/
var asc = window["Asc"];
var asc_applyFunction = asc.applyFunction;
var asc_calcnpt = asc.calcNearestPt;
var asc_getcvt = asc.getCvtRatio;
var asc_getprop = asc.getProperty;
......@@ -139197,7 +139359,9 @@ ScrollObject.prototype = {
// Флаг, сигнализирует о том, что мы сменили zoom, но это не активный лист (поэтому как только будем показывать, нужно перерисовать и пересчитать кеш)
this.updateZoom = false;
var cnv = $('<canvas width="2" height="2"/>')[0];
var cnv = document.createElement("canvas");
cnv.width = 2;
cnv.height = 2;
var ctx = cnv.getContext("2d");
ctx.clearRect(0, 0, 2, 2);
ctx.fillStyle = "#000";
......@@ -139456,6 +139620,22 @@ ScrollObject.prototype = {
return this.model.getSheetViewSettings();
},
getFrozenPaneOffset: function (noX, noY) {
var offsetX = 0, offsetY = 0,
c = this.cols, r = this.rows;
if (this.topLeftFrozenCell) {
if (!noX) {
var cFrozen = this.topLeftFrozenCell.getCol0();
offsetX = c[cFrozen].left - c[0].left;
}
if (!noY) {
var rFrozen = this.topLeftFrozenCell.getRow0();
offsetY = r[rFrozen].top - r[0].top;
}
}
return {offsetX: offsetX, offsetY: offsetY};
},
// mouseX - это разница стартовых координат от мыши при нажатии и границы
changeColumnWidth: function (col, x2, mouseX) {
......@@ -139466,10 +139646,8 @@ ScrollObject.prototype = {
x2 += mouseX;
var offsetX = t.cols[t.visibleRange.c1].left - t.cellsLeft;
if (t.topLeftFrozenCell) {
var cFrozen = t.topLeftFrozenCell.getCol0();
offsetX -= t.cols[cFrozen].left - t.cols[0].left;
}
var offsetFrozen = t.getFrozenPaneOffset(false, true);
offsetX -= offsetFrozen.offsetX;
var x1 = t.cols[col].left - offsetX - this.width_1px;
var w = Math.max(x2 - x1, 0);
......@@ -139497,10 +139675,8 @@ ScrollObject.prototype = {
y2 += mouseY;
var offsetY = t.rows[t.visibleRange.r1].top - t.cellsTop;
if (t.topLeftFrozenCell) {
var rFrozen = t.topLeftFrozenCell.getRow0();
offsetY -= t.rows[rFrozen].top - t.rows[0].top;
}
var offsetFrozen = t.getFrozenPaneOffset(true, false);
offsetY -= offsetFrozen.offsetY;
var y1 = t.rows[row].top - offsetY - this.height_1px;
......@@ -139725,7 +139901,7 @@ ScrollObject.prototype = {
History.SetSelectionRedo(arCopy.clone());
History.StartTransaction();
if ($.isFunction(functionAction)) {functionAction();}
asc_applyFunction(functionAction);
History.EndTransaction();
};
......@@ -140289,12 +140465,9 @@ ScrollObject.prototype = {
var vh = r[vr.r2].top + r[vr.r2].height - r[vr.r1].top;
var i;
if (this.topLeftFrozenCell) {
var cFrozen = this.topLeftFrozenCell.getCol0();
var rFrozen = this.topLeftFrozenCell.getRow0();
vw += c[cFrozen].left - c[0].left;
vh += r[rFrozen].top - r[0].top;
}
var offsetFrozen = t.getFrozenPaneOffset();
vw += offsetFrozen.offsetX;
vh += offsetFrozen.offsetY;
if (vw < w) {
for (i = vr.c1 - 1; i >= 0; --i) {
......@@ -141745,24 +141918,25 @@ ScrollObject.prototype = {
},
/** Рисует закрепление областей */
_drawFrozenPaneLines: function (notDrawCol, notDrawRow) {
_drawFrozenPaneLines: function () {
if (this.topLeftFrozenCell) {
var ctx = this.drawingCtx;
var row = this.topLeftFrozenCell.getRow0();
var col = this.topLeftFrozenCell.getCol0();
ctx.setLineWidth(1).setStrokeStyle(this.settings.frozenColor).beginPath();
if (0 < row && !notDrawRow) {
if (0 < row) {
ctx.lineHor(0, this.rows[row].top - this.height_1px, ctx.getWidth());
}
if (0 < col && !notDrawCol) {
if (0 < col) {
ctx.lineVer(this.cols[col].left - this.width_1px, 0, ctx.getHeight());
}
ctx.stroke();
}
},
_drawSelectionElement: function (range, visibleRange, offsetX, offsetY, isDashLine,
lineWidth, strokeColor, fillColor, isAllRange) {
_drawSelectionElement: function (visibleRange, offsetX, offsetY, args) {
var range = args[0], isDashLine = args[1], lineWidth = args[2], strokeColor = args[3],
fillColor = args[4], isAllRange = args[5];
var ctx = this.overlayCtx, c = this.cols, r = this.rows;
var oIntersection = range.intersectionSimple(visibleRange);
if (!oIntersection)
......@@ -141818,18 +141992,9 @@ ScrollObject.prototype = {
ctx.closePath().stroke();
},
/**
* Отрисовывает диапазон с заданными параметрами
* @param range
* @param isDashLine
* @param lineWidth
* @param strokeColor
* @param fillColor
* @param isAllRange
* @private
*/
_drawSelectionElements: function (range, isDashLine, lineWidth, strokeColor, fillColor, isAllRange) {
var cFrozen = 0, rFrozen = 0,
/**Отрисовывает диапазон с заданными параметрами*/
_drawElements: function (thisArg, drawFunction) {
var cFrozen = 0, rFrozen = 0, args = Array.prototype.slice.call(arguments, 2),
c = this.cols, r = this.rows,
offsetX = c[this.visibleRange.c1].left - this.cellsLeft,
offsetY = r[this.visibleRange.r1].top - this.cellsTop;
......@@ -141843,23 +142008,20 @@ ScrollObject.prototype = {
cFrozen -= 1; rFrozen -= 1;
if (0 <= cFrozen && 0 <= rFrozen) {
oFrozenRange = new asc_Range(0, 0, cFrozen, rFrozen);
this._drawSelectionElement(range, oFrozenRange, c[0].left - this.cellsLeft,
r[0].top - this.cellsTop, isDashLine, lineWidth, strokeColor, fillColor, isAllRange);
drawFunction.call(thisArg, oFrozenRange, c[0].left - this.cellsLeft, r[0].top - this.cellsTop, args);
}
if (0 <= cFrozen) {
oFrozenRange = new asc_Range(0, this.visibleRange.r1, cFrozen, this.visibleRange.r2);
this._drawSelectionElement(range, oFrozenRange, c[0].left - this.cellsLeft, offsetY,
isDashLine, lineWidth, strokeColor, fillColor, isAllRange);
drawFunction.call(thisArg, oFrozenRange, c[0].left - this.cellsLeft, offsetY, args);
}
if (0 <= rFrozen) {
oFrozenRange = new asc_Range(this.visibleRange.c1, 0, this.visibleRange.c2, rFrozen);
this._drawSelectionElement(range, oFrozenRange, offsetX, r[0].top - this.cellsTop,
isDashLine, lineWidth, strokeColor, fillColor, isAllRange);
drawFunction.call(thisArg, oFrozenRange, offsetX, r[0].top - this.cellsTop, args);
}
}
this._drawSelectionElement(range, this.visibleRange, offsetX, offsetY, isDashLine,
lineWidth, strokeColor, fillColor, isAllRange);
// Можно вместо call попользовать apply, но тогда нужно каждый раз соединять массив аргументов и 3 объекта
drawFunction.call(thisArg, this.visibleRange, offsetX, offsetY, args);
},
/**
......@@ -142203,13 +142365,14 @@ ScrollObject.prototype = {
continue;
var oFormulaRange = arrRanges[i].clone(true);
strokeColor = fillColor = opt.formulaRangeBorderColor[i%lengthColors];
this._drawSelectionElements(oFormulaRange, isDashLine, lineWidth, strokeColor, fillColor);
this._drawElements(this, this._drawSelectionElement, oFormulaRange, isDashLine, lineWidth,
strokeColor, fillColor);
}
},
_drawSelectRange: function (oSelectRange) {
var lineWidth = 1, isDashLine = true, strokeColor = c_oAscCoAuthoringOtherBorderColor;
this._drawSelectionElements(oSelectRange, isDashLine, lineWidth, strokeColor);
this._drawElements(this, this._drawSelectionElement, oSelectRange, isDashLine, lineWidth, strokeColor);
},
_drawCollaborativeElements: function (bIsDrawObjects) {
......@@ -142228,7 +142391,7 @@ ScrollObject.prototype = {
strokeColor = (c_oAscMouseMoveLockedObjectType.TableProperties === nLockAllType) ?
c_oAscCoAuthoringLockTablePropertiesBorderColor : c_oAscCoAuthoringOtherBorderColor,
oAllRange = asc_Range (0, 0, gc_nMaxCol0, gc_nMaxRow0);
this._drawSelectionElements(oAllRange, isDashLine, lineWidth, strokeColor, null, isAllRange);
this._drawElements(this, this._drawSelectionElement, oAllRange, isDashLine, lineWidth, strokeColor, null, isAllRange);
}
},
......@@ -142257,12 +142420,12 @@ ScrollObject.prototype = {
for (i = 0; i < arrayCells.length; ++i) {
oCellTmp = asc_Range (arrayCells[i].c1, arrayCells[i].r1, arrayCells[i].c2, arrayCells[i].r2);
this._drawSelectionElements(oCellTmp, isDashLine, lineWidth, strokeColor);
this._drawElements(this, this._drawSelectionElement, oCellTmp, isDashLine, lineWidth, strokeColor);
}
},
_drawGraphic: function() {
this.autoFilters.drawAutoF();
this._drawElements(this.autoFilters, this.autoFilters.drawAutoF2);
this.cellCommentator.drawCommentCells();
},
......@@ -142506,10 +142669,8 @@ ScrollObject.prototype = {
var ctx = t.overlayCtx;
var offsetX = t.cols[t.visibleRange.c1].left - t.cellsLeft;
if (t.topLeftFrozenCell) {
var cFrozen = t.topLeftFrozenCell.getCol0();
offsetX -= t.cols[cFrozen].left - t.cols[0].left;
}
var offsetFrozen = t.getFrozenPaneOffset(false, true);
offsetX -= offsetFrozen.offsetX;
var x1 = t.cols[col].left - offsetX - this.width_1px;
var h = ctx.getHeight();
......@@ -142535,10 +142696,8 @@ ScrollObject.prototype = {
var ctx = t.overlayCtx;
var offsetY = t.rows[t.visibleRange.r1].top - t.cellsTop;
if (t.topLeftFrozenCell) {
var rFrozen = t.topLeftFrozenCell.getRow0();
offsetY -= t.rows[rFrozen].top - t.rows[0].top;
}
var offsetFrozen = t.getFrozenPaneOffset(true, false);
offsetY -= offsetFrozen.offsetY;
var y1 = t.rows[row].top - offsetY - this.height_1px;
var w = ctx.getWidth();
......@@ -143761,10 +143920,8 @@ ScrollObject.prototype = {
var vr = this.visibleRange;
var c = this.cols;
var x = c[vr.c2].left + c[vr.c2].width;
if (this.topLeftFrozenCell) {
var cFrozen = this.topLeftFrozenCell.getCol0();
x += c[cFrozen].left - c[0].left;
}
var offsetFrozen = this.getFrozenPaneOffset(false, true);
x += offsetFrozen.offsetX;
return x - c[vr.c1].left + this.cellsLeft < this.drawingCtx.getWidth();
},
......@@ -143772,10 +143929,8 @@ ScrollObject.prototype = {
var vr = this.visibleRange;
var r = this.rows;
var y = r[vr.r2].top + r[vr.r2].height;
if (this.topLeftFrozenCell) {
var rFrozen = this.topLeftFrozenCell.getRow0();
y += r[rFrozen].top - r[0].top;
}
var offsetFrozen = this.getFrozenPaneOffset(true, false);
y += offsetFrozen.offsetY;
return y - r[vr.r1].top + this.cellsTop < this.drawingCtx.getHeight();
},
......@@ -143876,12 +144031,14 @@ ScrollObject.prototype = {
.fillRect(this.headersLeft, y + (dy > 0 && oldH > 0 ? oldH - dy : 0),
ctxW, ctxH - this.cellsTop - (oldH > 0 ? oldH : 0));
var rangeGraphic = null;
if ( !(dy > 0 && vr.r2 === oldEnd && !oldVRE_isPartial && dx === 0) ) {
var c1 = vr.c1;
var r1 = dy > 0 && oldH > 0 ? oldEnd + (oldVRE_isPartial ? 0 : 1) : vr.r1;
var c2 = vr.c2;
var r2 = dy > 0 || oldH <= 0 ? vr.r2 : vr.r1 - 1 - delta; /* delta < 0 here */
var range = asc_Range(c1, r1, c2, r2);
rangeGraphic = range.clone();
// Это необходимо для того, чтобы строки, у которых высота по тексту рассчитались (баг http://bugzserver/show_bug.cgi?id=21552)
this._prepareCellTextMetricsCache(range);
if (dx === 0) {
......@@ -143912,7 +144069,8 @@ ScrollObject.prototype = {
this._drawCells(/*drawingCtx*/undefined, range, offsetX);
this._drawCellsBorders(/*drawingCtx*/undefined, range, offsetX);
}
this._drawFrozenPaneLines(false, true);
// Отрисовывать нужно всегда, вдруг бордеры
this._drawFrozenPaneLines();
this._fixSelectionOfMergedCells();
this._drawSelection();
......@@ -143925,7 +144083,7 @@ ScrollObject.prototype = {
this.cellCommentator.updateCommentPosition();
//ToDo this.drawDepCells();
this._drawGraphic();
this.objectRender.showDrawingObjects(false, new GraphicOption(this, c_oAscGraphicOption.ScrollVertical, delta));
this.objectRender.showDrawingObjects(false, new GraphicOption(this, c_oAscGraphicOption.ScrollVertical, rangeGraphic));
return this;
},
......@@ -143980,12 +144138,14 @@ ScrollObject.prototype = {
.fillRect(x + (dx > 0 && oldW > 0 ? oldW - dx : 0), y,
ctxW - this.cellsLeft - (oldW > 0 ? oldW : 0), ctxH);
var rangeGraphic = null;
if ( !(dx > 0 && vr.c2 === oldEnd && !oldVCE_isPartial) ) {
var c1 = dx > 0 && oldW > 0 ? oldEnd + (oldVCE_isPartial ? 0 : 1) : vr.c1;
var r1 = vr.r1;
var c2 = dx > 0 || oldW <= 0 ? vr.c2 : vr.c1 - 1 - delta; /* delta < 0 here */
var r2 = vr.r2;
var range = asc_Range(c1, r1, c2, r2);
rangeGraphic = range.clone();
this._drawColumnHeaders(/*drawingCtx*/ undefined, c1, c2);
this._drawGrid(/*drawingCtx*/ undefined, range);
this._drawCells(/*drawingCtx*/undefined, range);
......@@ -143998,7 +144158,8 @@ ScrollObject.prototype = {
this._drawCells(/*drawingCtx*/undefined, range, undefined, offsetY);
this._drawCellsBorders(/*drawingCtx*/undefined, range, undefined, offsetY);
}
this._drawFrozenPaneLines(true, false);
// Отрисовывать нужно всегда, вдруг бордеры
this._drawFrozenPaneLines();
this._fixSelectionOfMergedCells();
this._drawSelection();
}
......@@ -144009,7 +144170,7 @@ ScrollObject.prototype = {
this.cellCommentator.updateCommentPosition();
//ToDo this.drawDepCells();
this._drawGraphic();
this.objectRender.showDrawingObjects(false, new GraphicOption(this, c_oAscGraphicOption.ScrollHorizontal, delta));
this.objectRender.showDrawingObjects(false, new GraphicOption(this, c_oAscGraphicOption.ScrollHorizontal, rangeGraphic));
return this;
},
......@@ -144238,9 +144399,9 @@ ScrollObject.prototype = {
var rFrozen = this.topLeftFrozenCell.getRow0();
widthDiff = this.cols[cFrozen].left - this.cols[0].left;
heightDiff = this.rows[rFrozen].top - this.rows[0].top;
if (x < this.cellsLeft + widthDiff && 0 !== widthDiff)
if (x < this.cellsLeft + widthDiff)
widthDiff = 0;
if (y < this.cellsTop + heightDiff && 0 !== heightDiff)
if (y < this.cellsTop + heightDiff)
heightDiff = 0;
offsetX -= widthDiff;
offsetY -= heightDiff;
......@@ -145196,12 +145357,9 @@ ScrollObject.prototype = {
var isInSelection = false;
var offsetX = this.cols[this.visibleRange.c1].left - this.cellsLeft,
offsetY = this.rows[this.visibleRange.r1].top - this.cellsTop;
if (this.topLeftFrozenCell) {
var cFrozen = this.topLeftFrozenCell.getCol0();
var rFrozen = this.topLeftFrozenCell.getRow0();
offsetX -= this.cols[cFrozen].left - this.cols[0].left;
offsetY -= this.rows[rFrozen].top - this.rows[0].top;
}
var offsetFrozen = this.getFrozenPaneOffset();
offsetX -= offsetFrozen.offsetX;
offsetY -= offsetFrozen.offsetY;
// Проверяем попали ли мы в выделение
if ((_x < this.cellsLeft || _y < this.cellsTop) && c_oAscSelectionType.RangeMax === ar.type) {
......@@ -147463,7 +147621,7 @@ ScrollObject.prototype = {
_isLockedAll: function (callback) {
if (false === this.collaborativeEditing.isCoAuthoringExcellEnable()) {
// Запрещено совместное редактирование
if ($.isFunction(callback)) {callback(true);}
asc_applyFunction(callback, true);
return;
}
var sheetId = this.model.getId();
......@@ -147475,18 +147633,18 @@ ScrollObject.prototype = {
if (false === this.collaborativeEditing.getCollaborativeEditing()) {
// Пользователь редактирует один: не ждем ответа, а сразу продолжаем редактирование
if ($.isFunction(callback)) {callback(true);}
asc_applyFunction(callback, true);
callback = undefined;
}
if (false !== this.collaborativeEditing.getLockIntersection(lockInfo,
c_oAscLockTypes.kLockTypeMine, /*bCheckOnlyLockAll*/true)) {
// Редактируем сами
if ($.isFunction(callback)) {callback(true);}
asc_applyFunction(callback, true);
return;
} else if (false !== this.collaborativeEditing.getLockIntersection(lockInfo,
c_oAscLockTypes.kLockTypeOther, /*bCheckOnlyLockAll*/true)) {
// Уже ячейку кто-то редактирует
if ($.isFunction(callback)) {callback(false);}
asc_applyFunction(callback, false);
return;
}
......@@ -147541,7 +147699,7 @@ ScrollObject.prototype = {
_isLockedCells: function (range, subType, callback) {
if (false === this.collaborativeEditing.isCoAuthoringExcellEnable()) {
// Запрещено совместное редактирование
if ($.isFunction(callback)) {callback(true);}
asc_applyFunction(callback, true);
return true;
}
var sheetId = this.model.getId();
......@@ -147568,7 +147726,7 @@ ScrollObject.prototype = {
if (false !== this.collaborativeEditing.getLockIntersection(lockInfo,
c_oAscLockTypes.kLockTypeOther, /*bCheckOnlyLockAll*/false)) {
// Уже ячейку кто-то редактирует
if ($.isFunction(callback)) {callback(false);}
asc_applyFunction(callback, false);
return false;
} else {
if (c_oAscLockTypeElemSubType.InsertColumns === subType) {
......@@ -147663,7 +147821,7 @@ ScrollObject.prototype = {
if (false === isSuccess)
return;
if ($.isFunction(functionModelAction)) {functionModelAction();}
asc_applyFunction(functionModelAction);
t._initCellsArea(fullRecalc);
if (fullRecalc) {
......@@ -148669,14 +148827,8 @@ ScrollObject.prototype = {
openCellEditor: function (editor, x, y, isCoord, fragments, cursorPos, isFocus, isClearCell,
isHideCursor, activeRange) {
var t = this, vr = t.visibleRange, tc = t.cols, tr = t.rows, col, row, c, fl, mc, bg,
cFrozen, rFrozen, widthDiff = 0, heightDiff = 0;
if (this.topLeftFrozenCell) {
cFrozen = this.topLeftFrozenCell.getCol0();
rFrozen = this.topLeftFrozenCell.getRow0();
widthDiff += tc[cFrozen].left - tc[0].left;
heightDiff += tr[rFrozen].top - tr[0].top;
}
var t = this, vr = t.visibleRange, tc = t.cols, tr = t.rows, col, row, c, fl, mc, bg;
var offsetFrozen = t.getFrozenPaneOffset();
var ar = t.activeRange;
if (activeRange)
t.activeRange = activeRange.clone();
......@@ -148685,7 +148837,7 @@ ScrollObject.prototype = {
return false;
function getLeftSide(col) {
var i, res = [], offs = t.cols[vr.c1].left - t.cols[0].left - widthDiff;
var i, res = [], offs = t.cols[vr.c1].left - t.cols[0].left - offsetFrozen.offsetX;
for (i = col; i >= vr.c1; --i) {
res.push(t.cols[i].left - offs);
}
......@@ -148693,7 +148845,7 @@ ScrollObject.prototype = {
}
function getRightSide(col) {
var i, w, res = [], offs = t.cols[vr.c1].left - t.cols[0].left - widthDiff;
var i, w, res = [], offs = t.cols[vr.c1].left - t.cols[0].left - offsetFrozen.offsetX;
// Для замерженных ячеек, можем уйти за границу
if (fl.isMerged && col > vr.c2)
......@@ -148710,7 +148862,7 @@ ScrollObject.prototype = {
}
function getBottomSide(row) {
var i, h, res = [], offs = t.rows[vr.r1].top - t.rows[0].top - heightDiff;
var i, h, res = [], offs = t.rows[vr.r1].top - t.rows[0].top - offsetFrozen.offsetY;
// Для замерженных ячеек, можем уйти за границу
if (fl.isMerged && row > vr.r2)
......@@ -148795,8 +148947,8 @@ ScrollObject.prototype = {
}
editor.open({
cellX: t.cellsLeft + tc[!fl.isMerged ? col : mc.c1].left - tc[vr.c1].left + widthDiff,
cellY: t.cellsTop + tr[!fl.isMerged ? row : mc.r1].top - tr[vr.r1].top + heightDiff,
cellX: t.cellsLeft + tc[!fl.isMerged ? col : mc.c1].left - tc[vr.c1].left + offsetFrozen.offsetX,
cellY: t.cellsTop + tr[!fl.isMerged ? row : mc.r1].top - tr[vr.r1].top + offsetFrozen.offsetY,
leftSide: getLeftSide(!fl.isMerged ? col : mc.c1),
rightSide: getRightSide(!fl.isMerged ? col : mc.c2),
bottomSide: getBottomSide(!fl.isMerged ? row : mc.r2),
......@@ -149174,6 +149326,7 @@ ScrollObject.prototype = {
function ($, window, undefined) {
var asc = window["Asc"] ? window["Asc"] : (window["Asc"] = {});
var asc_applyFunction = asc.applyFunction;
var namespace = "ASC_Spreadsheet";
......@@ -149203,7 +149356,6 @@ ScrollObject.prototype = {
this.moveRangeTimerId = undefined;
this.moveResizeRangeTimerId = undefined;
this.fillHandleModeTimerId = undefined;
this.moveRangeId = undefined;
this.enableKeyEvents = true;
this.isSelectMode = false;
this.hasCursor = false;
......@@ -149225,7 +149377,6 @@ ScrollObject.prototype = {
this.isSelectionDialogMode = false;
// Режим формулы
this.isFormulaEditMode = false;
this.endWasPressed = false;
// Обработчик кликов для граф.объектов
this.clickCounter = new ClickCounter();
......@@ -149560,7 +149711,7 @@ ScrollObject.prototype = {
if (!t.handlers.trigger("stopCellEditing")) {return;}
}
if ($.isFunction(callback)) {callback();}
asc_applyFunction(callback);
});
},
......@@ -149667,7 +149818,7 @@ ScrollObject.prototype = {
if (d.deltaY) {
t.scrollVertical(d.deltaY);
}
if ($.isFunction(callback)) {callback();}
asc_applyFunction(callback);
});
},
......@@ -149714,9 +149865,7 @@ ScrollObject.prototype = {
if (d.deltaY) {
t.scrollVertical(d.deltaY);
}
if ($.isFunction(callback)) {
callback();
}
asc_applyFunction(callback);
},
event.ctrlKey);
},
......@@ -149735,9 +149884,7 @@ ScrollObject.prototype = {
if (d.deltaY) {
t.scrollVertical(d.deltaY);
}
if ($.isFunction(callback)) {
callback();
}
asc_applyFunction(callback);
});
},
......@@ -149971,9 +150118,6 @@ ScrollObject.prototype = {
if (event.ctrlKey) {
dr = 2.5;
}
/* else {
t.endWasPressed = true;
} */
break;
case 53: // make strikethrough Ctrl + 5
......@@ -150590,7 +150734,6 @@ ScrollObject.prototype = {
/** @param event {jQuery.Event} */
_onMouseDblClick: function (event) {
var t = this;
var coord = t._getCoordinates(event);
if (this.handlers.trigger("isGlobalLockEditCell"))
return false;
......@@ -150646,6 +150789,7 @@ ScrollObject.prototype = {
* -----------------------------------------------------------------------------
*/
var asc = window["Asc"];
var asc_applyFunction = asc.applyFunction;
var asc_round = asc.round;
var asc_typeof = asc.typeOf;
var asc_FP = asc.FontProperties;
......@@ -151093,7 +151237,7 @@ ScrollObject.prototype = {
var ws = this.getWorksheet(),
vsize = !whichSB || whichSB === 1 ? ws.getVerticalScrollRange() : undefined,
hsize = !whichSB || whichSB === 2 ? ws.getHorizontalScrollRange() : undefined;
if ($.isFunction(callback)) {callback(vsize, hsize);}
asc_applyFunction(callback, vsize, hsize);
},
_onScrollY: function (pos) {
......@@ -151157,7 +151301,7 @@ ScrollObject.prototype = {
// Выделение с зажатым shift
this.canUpdateAfterShiftUp = true;
}
if ($.isFunction(callback)) {callback(d);}
asc_applyFunction(callback, d);
},
// Окончание выделения
......@@ -151216,7 +151360,7 @@ ScrollObject.prototype = {
_onSelectionActivePointChanged: function (dc, dr, callback) {
var ws = this.getWorksheet();
var d = ws.changeSelectionActivePoint(dc, dr);
if ($.isFunction(callback)) {callback(d);}
asc_applyFunction(callback, d);
},
_onUpdateWorksheet: function (canvasElem, x, y, ctrlKey, callback) {
......@@ -151291,7 +151435,7 @@ ScrollObject.prototype = {
ws.cleanHighlightedHeaders();
}
}
if ($.isFunction(callback)) {callback(ct);}
asc_applyFunction(callback, ct);
},
_onResizeElement: function (target, x, y) {
......@@ -151321,7 +151465,7 @@ ScrollObject.prototype = {
_onChangeFillHandle: function (x, y, callback) {
var ws = this.getWorksheet();
var d = ws.changeSelectionFillHandle(x, y);
if ($.isFunction(callback)) {callback(d);}
asc_applyFunction(callback, d);
},
// Обработка окончания автозаполнения
......@@ -151334,7 +151478,7 @@ ScrollObject.prototype = {
_onMoveRangeHandle: function (x, y, callback,ctrlKey) {
var ws = this.getWorksheet();
var d = ws.changeSelectionMoveRangeHandle(x, y,ctrlKey);
if ($.isFunction(callback)) {callback(d);}
asc_applyFunction(callback, d);
},
// Обработка окончания перемещения диапазона
......@@ -151349,7 +151493,7 @@ ScrollObject.prototype = {
if(res){
if(0 == target.targetArr)
ws.changeCellRange(this.cellEditor,res.ar);
if ($.isFunction(callback)) {callback(res.d);}
asc_applyFunction(callback, res.d);
}
},
......@@ -151433,7 +151577,7 @@ ScrollObject.prototype = {
if (ct.target === "colresize" || ct.target === "rowresize") {
res = true;
ct.target === "colresize" ? ws.optimizeColWidth(ct.col) : ws.optimizeRowHeight(ct.row);
if ($.isFunction(callback)) {callback(res);}
asc_applyFunction(callback, res);
} else {
if (ct.col >=0 && ct.row >= 0) {
this.controller.setStrictClose( !ws._isCellEmpty(ct.col, ct.row) );
......@@ -151441,19 +151585,21 @@ ScrollObject.prototype = {
// Для нажатия на колонку/строку/all обрабатывать dblClick не нужно
if ("colheader" === ct.target || "rowheader" === ct.target || "corner" === ct.target) {
res = true;
if ($.isFunction(callback)) {callback(res);}
asc_applyFunction(callback, res);
return;
}
if ( isCoord && (ws.objectRender.checkCursorDrawingObject(x, y)) ) {
res = true;
if ($.isFunction(callback)) {callback(res);}
asc_applyFunction(callback, res);
return;
}
// При dbl клике фокус выставляем в зависимости от наличия текста в ячейке
this._onEditCell (x, y, /*isCoord*/isCoord,/*isFocus*/undefined, /*isClearCell*/undefined,
/*isHideCursor*/isHideCursor, /*callback*/ function (val) {if ($.isFunction(callback)) {callback(!val);}});
/*isHideCursor*/isHideCursor, /*callback*/ function (val) {
asc_applyFunction(callback, !val);
});
}
},
......@@ -151480,7 +151626,7 @@ ScrollObject.prototype = {
ws.setCellEditMode(false);
ws.setFormulaEditMode(false);
t.input.prop("disabled", true);
if ($.isFunction(callback)) {callback(false);}
asc_applyFunction(callback, false);
return;
}
......@@ -151488,7 +151634,7 @@ ScrollObject.prototype = {
t.handlers.trigger("asc_onEditCell", c_oAscCellEditorState.editStart);
// Эвент на обновление состояния редактора
t.cellEditor._updateEditorState();
if ($.isFunction(callback)) {callback(true);}
asc_applyFunction(callback, true);
};
var editLockCallback = function (res) {
......@@ -152298,6 +152444,7 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
var asc = window["Asc"];
var asc_applyFunction = asc.applyFunction;
var asc_CCollaborativeEditing = asc.CCollaborativeEditing;
var asc_CAdjustPrint = asc.asc_CAdjustPrint;
var asc_user = asc.asc_CUser;
......@@ -154133,22 +154280,22 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
_getIsLockObjectSheet: function (lockInfo, callback) {
if (false === this.collaborativeEditing.isCoAuthoringExcellEnable()) {
// Запрещено совместное редактирование
if ($.isFunction(callback)) {callback(true);}
asc_applyFunction(callback, true);
return;
}
if (false === this.collaborativeEditing.getCollaborativeEditing()) {
// Пользователь редактирует один: не ждем ответа, а сразу продолжаем редактирование
if ($.isFunction(callback)) {callback(true);}
asc_applyFunction(callback, true);
callback = undefined;
}
if (false !== this.collaborativeEditing.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeMine, /*bCheckOnlyLockAll*/false)) {
// Редактируем сами
if ($.isFunction(callback)) {callback(true);}
asc_applyFunction(callback, true);
return;
} else if (false !== this.collaborativeEditing.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeOther, /*bCheckOnlyLockAll*/false)) {
// Уже ячейку кто-то редактирует
if ($.isFunction(callback)) {callback(false);}
asc_applyFunction(callback, false);
return;
}
......@@ -213088,7 +213235,7 @@ function NullState(drawingObjectsController, drawingObjects)
{
History.Create_NewPoint();
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText));
text_object.updateSelectionState(drawingObjects.drawingDocument);
drawingObjects.controller.changeCurrentState(new TextAddState(drawingObjects.controller, drawingObjects, text_object));
}
......@@ -213492,7 +213639,7 @@ function ChartState(drawingObjectsController, drawingObjects, chart)
History.Create_NewPoint();
drawingObjects.controller.changeCurrentState(new ChartTextAdd(drawingObjects.controller, drawingObjects, chart, text_object));
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText));
drawingObjects.controller.updateSelectionState(drawingObjects.drawingDocument);
drawingObjects.OnUpdateOverlay();
}
......@@ -213721,7 +213868,7 @@ function ChartTextAdd(drawingObjectsController, drawingObjects, chart, textObjec
{
History.Create_NewPoint();
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText));
text_object.updateSelectionState(drawingObjects.drawingDocument);
}
};
......@@ -213972,7 +214119,7 @@ function TextAddState(drawingObjectsController, drawingObjects, textObject)
{
History.Create_NewPoint();
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText));
text_object.updateSelectionState(drawingObjects.drawingDocument);
}
};
......@@ -215184,7 +215331,7 @@ function ChartGroupState(drawingObjectsController, drawingObjects, group, chart)
History.Create_NewPoint();
drawingObjects.controller.changeCurrentState(new ChartTextAddGroup(drawingObjects.controller, drawingObjects, group, chart, selected_title));
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText));
drawingObjects.controller.updateSelectionState(drawingObjects.drawingDocument);
drawingObjects.OnUpdateOverlay();
}
......@@ -215255,7 +215402,7 @@ function ChartTextAddGroup(drawingObjectsController, drawingObjects, group, char
{
History.Create_NewPoint();
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText));
text_object.updateSelectionState(drawingObjects.drawingDocument);
}
};
......@@ -215626,7 +215773,7 @@ function TextAddInGroup(drawingObjectsController, drawingObjects, group, textObj
{
History.Create_NewPoint();
text_object.paragraphAdd(new ParaText(String.fromCharCode(e.charCode)));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText, 0));
drawingObjects.showDrawingObjects(false, new GraphicOption(_this.drawingObjects.getWorksheet(), c_oAscGraphicOption.AddText));
text_object.updateSelectionState(drawingObjects.drawingDocument);
}
};
......@@ -223998,19 +224145,7 @@ CImageShape.prototype =
this.recalculateBrush(aImagesSync);
this.recalcInfo.recalculateBrush = false;
}
try
{
var boundsChecker = new CSlideBoundsChecker();
this.draw(boundsChecker);
boundsChecker.CorrectBounds();
this.bounds.x = boundsChecker.Bounds.min_x;
this.bounds.y = boundsChecker.Bounds.min_y;
this.bounds.w = boundsChecker.Bounds.max_x - boundsChecker.Bounds.min_x;
this.bounds.h = boundsChecker.Bounds.max_y - boundsChecker.Bounds.min_y;
}
catch(e)
{}
this.recalculateBounds();
},
recalculateBrush: function(aImagesSync)
......@@ -224092,20 +224227,7 @@ CImageShape.prototype =
global_MatrixTransformer.MultiplyAppend(this.transform, this.group.getTransform());
}
this.invertTransform = global_MatrixTransformer.Invert(this.transform);
try
{
var boundsChecker = new CSlideBoundsChecker();
this.draw(boundsChecker);
boundsChecker.CorrectBounds();
this.bounds.x = boundsChecker.Bounds.min_x;
this.bounds.y = boundsChecker.Bounds.min_y;
this.bounds.w = boundsChecker.Bounds.max_x - boundsChecker.Bounds.min_x;
this.bounds.h = boundsChecker.Bounds.max_y - boundsChecker.Bounds.min_y;
}
catch(e)
{}
this.recalculateBounds();
},
calculateTransformTextMatrix: function()
......@@ -224562,6 +224684,22 @@ CImageShape.prototype =
return false;
},
recalculateBounds: function()
{
try
{
var boundsChecker = new CSlideBoundsChecker();
this.draw(boundsChecker);
boundsChecker.CorrectBounds();
this.bounds.x = boundsChecker.Bounds.min_x;
this.bounds.y = boundsChecker.Bounds.min_y;
this.bounds.w = boundsChecker.Bounds.max_x - boundsChecker.Bounds.min_x;
this.bounds.h = boundsChecker.Bounds.max_y - boundsChecker.Bounds.min_y;
}
catch(e)
{}
},
hitInTextRect: function(x, y)
{
......@@ -226392,6 +226530,14 @@ CShape.prototype =
}
}
this.calculateContent();
this.calculateTransformTextMatrix();
this.recalculateBounds();
},
recalculateBounds: function()
{
try
{
var boundsChecker = new CSlideBoundsChecker();
......@@ -226404,8 +226550,6 @@ CShape.prototype =
}
catch(e)
{}
this.calculateContent();
this.calculateTransformTextMatrix();
},
setDrawingDocument: function(drawingDocument)
......@@ -227283,18 +227427,7 @@ CShape.prototype =
}
this.invertTransform = global_MatrixTransformer.Invert(this.transform);
try
{
var boundsChecker = new CSlideBoundsChecker();
this.draw(boundsChecker);
boundsChecker.CorrectBounds();
this.bounds.x = boundsChecker.Bounds.min_x;
this.bounds.y = boundsChecker.Bounds.min_y;
this.bounds.w = boundsChecker.Bounds.max_x - boundsChecker.Bounds.min_x;
this.bounds.h = boundsChecker.Bounds.max_y - boundsChecker.Bounds.min_y;
}
catch(e)
{}
this.recalculateBounds();
},
normalize: function()
......@@ -290202,5 +290335,90 @@ function CCacheManager()
{
}
var NATIVE_DOCUMENT_TYPE = "spreadsheet";
var NATIVE_DOCUMENT_TYPE = "spreadsheet";
var Asc = window["Asc"];
var spreadsheet_api = Asc["spreadsheet_api"];
var asc_CAdjustPrint = Asc["asc_CAdjustPrint"];
$.ready();
$.prototype.clone = function(_clone) { return _clone; };
$.prototype.clean = function() { return []; };
$.prototype.buildFragment = _return_empty_html_element;
$.prototype.init = function(selector, context, rootjQuery)
{
// Handle $(""), $(null), or $(undefined)
if ( !selector ) {
return this;
}
// Handle $(DOMElement)
if ( selector.nodeType ) {
this.context = this[0] = selector;
this.length = 1;
return this;
}
return _null_object;
};
Asc["DrawingContext"].prototype.setCanvas = function (_canvas) {
if (!_canvas)
return;
this.canvas = new Array();
this.canvas.push(_canvas);
this.ctx = this.canvas[0].getContext("2d");
if (this.ctx.mozImageSmoothingEnabled) {
this.ctx.mozImageSmoothingEnabled = false;
}
};
Asc["WorkbookView"].prototype.init = function (fontRenderingMode) {
var self = this;
var asc_DC = Asc["DrawingContext"];
var asc_CE = Asc["CellEditor"];
var asc_SR = Asc["StringRender"];
// Init font managers rendering
// ���������� �� �������������� c_oAscFontRenderingModeType.hintingAndSubpixeling
this.setFontRenderingMode(fontRenderingMode, /*isInit*/true);
this.canvas = new Array(); this.canvas.push(document.createElement("canvas"));
this.canvasOverlay = new Array(); this.canvasOverlay.push(document.createElement("canvas"));
this.buffers.main = asc_DC({canvas: this.canvas[0], units: 1/*pt*/,
fmgrGraphics: this.fmgrGraphics, font: this.m_oFont});
this.buffers.overlay = asc_DC({canvas: this.canvasOverlay[0], units: 1/*pt*/,
fmgrGraphics: this.fmgrGraphics, font: this.m_oFont});
this.buffers.overlay.ctx.isOverlay = true; // ��� ������������ _activateOverlayCtx / _deactivateOverlayCtx
this.drawingCtx = this.buffers.main;
this.overlayCtx = this.buffers.overlay;
// Shapes
this.buffers.shapeCtx = new CGraphics();
this.buffers.shapeCtx.init(this.drawingCtx.ctx, this.drawingCtx.getWidth(0), this.drawingCtx.getHeight(0), this.drawingCtx.getWidth(3), this.drawingCtx.getHeight(3));
this.buffers.shapeCtx.m_oFontManager = this.fmgrGraphics[2];
this.buffers.shapeOverlayCtx = new CGraphics();
this.buffers.shapeOverlayCtx.init(this.overlayCtx.ctx, this.overlayCtx.getWidth(0), this.overlayCtx.getHeight(0), this.overlayCtx.getWidth(3), this.overlayCtx.getHeight(3));
this.buffers.shapeOverlayCtx.m_oFontManager = this.fmgrGraphics[2];
this.drawingCtxCharts = asc_DC({units: 1/*pt*/, fmgrGraphics: this.fmgrGraphics, font: this.m_oFont});
this.stringRender = asc_SR(this.buffers.main);
this.stringRender.setDefaultFont(this.defaultFont);
// ������ ����� ������ �� 100% � ���� ��� ��� ����� ���������
this._calcMaxDigitWidth();
this.cellEditor = null;
this.clipboard.Api = this.Api;
this.clipboard.init();
return this;
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment