Commit c0a82df2 authored by GoshaZotov's avatar GoshaZotov

add asc_SpecialPaste function into api

+ add c_oSpecialPasteProps into apiDefines
parent f599a97a
......@@ -368,6 +368,16 @@ var editor;
}
return false;
};
spreadsheet_api.prototype.asc_SpecialPaste = function(props) {
return AscCommon.g_clipboardBase.Special_Paste(props);
};
spreadsheet_api.prototype.asc_SpecialPasteData = function(preSpecialPasteData, specialPasteData, props) {
if (!this.getViewMode()) {
this.wb.specialPasteData(preSpecialPasteData, specialPasteData, props);
}
};
spreadsheet_api.prototype.asc_Cut = function() {
if (window["AscDesktopEditor"])
......
......@@ -365,7 +365,22 @@ var c_oAscPopUpSelectorType = {
Group: 1,
Custom: 2
};
var c_oSpecialPasteProps = {
formulas: 0,
formulasNumberFormating: 1,
keepSourceFormating: 2,
noBorders: 3,
keepSourceColumnWidths: 4,
transpose: 5,
values: 6,
valuesNumberFormating: 7,
formating: 8,
pasteLink: 9,
picture: 10,
linkedPicture: 11
};
var c_kMaxPrintPages = 1500;
//----------------------------------------------------------export----------------------------------------------------
......@@ -556,4 +571,18 @@ var c_oAscPopUpSelectorType = {
prot['Individual'] = prot.Individual;
prot['Group'] = prot.Group;
prot['Custom'] = prot.Custom;
window['Asc']['c_oSpecialPasteProps'] = window['Asc'].c_oSpecialPasteProps = c_oSpecialPasteProps;
prot = c_oSpecialPasteProps;
prot['formulas'] = prot.formulas;
prot['formulasNumberFormating'] = prot.formulasNumberFormating;
prot['keepSourceFormating'] = prot.keepSourceFormating;
prot['noBorders'] = prot.noBorders;
prot['keepSourceColumnWidths'] = prot.keepSourceColumnWidths;
prot['transpose'] = prot.transpose;
prot['values'] = prot.values;
prot['valuesNumberFormating'] = prot.valuesNumberFormating;
prot['formating'] = prot.formating;
prot['pasteLink'] = prot.pasteLink;
prot['picture'] = prot.picture;
prot['linkedPicture'] = prot.linkedPicture;
})(window);
......@@ -49,6 +49,8 @@
var copyPasteUseBinary = true;
var CopyPasteCorrectString = AscCommon.CopyPasteCorrectString;
var c_oSpecialPasteProps = Asc.c_oSpecialPasteProps
function number2color(n) {
if( typeof(n)=="string" && n.indexOf("rgb")>-1)
......@@ -119,7 +121,7 @@
{
switch(props)
{
case "formulas":
case c_oSpecialPasteProps.formulas:
{
//только формулы(или значения)
this.revert();
......@@ -128,7 +130,7 @@
break;
}
case "formulasNumberFormating":
case c_oSpecialPasteProps.formulasNumberFormating:
{
//только формулы(или значения) и числовой формат
this.revert();
......@@ -138,62 +140,62 @@
break;
}
case "keepSourceFormating":
case c_oSpecialPasteProps.keepSourceFormating:
{
//формулы и формат
break;
}
case "noBorders":
case c_oSpecialPasteProps.noBorders:
{
//всё кроме бордеров
this.borders = null;
break;
}
case "keepSourceColumnWidths":
case c_oSpecialPasteProps.keepSourceColumnWidths:
{
break;
}
case "transpose":
case c_oSpecialPasteProps.transpose:
{
break;
}
case "values":
case c_oSpecialPasteProps.values:
{
//только значения(вместо формул также вставляются значения)
this.revert();
this.val = true;
}
case "valuesNumberFormating":
case c_oSpecialPasteProps.valuesNumberFormating:
{
this.revert();
this.val = true;
this.numFormat = true;
break;
}
case "valuesSourceFormating":
case c_oSpecialPasteProps.valuesSourceFormating:
{
//все кроме формул
this.formula = null;
break;
}
case "formating":
case c_oSpecialPasteProps.formating:
{
this.formula = null;
break;
}
case "pasteLink":
case c_oSpecialPasteProps.pasteLink:
{
this.revert();
break;
}
case "picture":
case c_oSpecialPasteProps.picture:
{
break;
}
case "linkedPicture":
case c_oSpecialPasteProps.linkedPicture:
{
break;
}
......
......@@ -2054,6 +2054,12 @@
ws = t.getWorksheet();
t.clipboard.pasteData(ws, _format, data1, data2, text_data);
};
WorkbookView.prototype.specialPasteData = function(preSpecialPasteData, specialPasteData, props) {
if (!this.getCellEditMode()) {
this.getWorksheet().specialPaste(preSpecialPasteData, specialPasteData, props);
}
};
WorkbookView.prototype.selectionCut = function() {
if (this.getCellEditMode()) {
......
......@@ -8759,27 +8759,27 @@
}
};
WorksheetView.prototype.specialPaste = function (props) {
WorksheetView.prototype.specialPaste = function (preSpecialPasteData, specialPasteData, props) {
var api = window["Asc"]["editor"];
var g_clipboardBase = window['AscCommon'].g_clipboardBase;
//откатываемся до того, что было до вставки
if(g_clipboardBase.specialPasteUndoData.data)
if(preSpecialPasteData && preSpecialPasteData.data)
{
var tempProps = new AscCommonExcel.SpecialPasteProps();
api.wb.clipboard.specialPasteProps = tempProps;
//меняем activeRange
if(g_clipboardBase.specialPasteData && g_clipboardBase.specialPasteData.activeRange)
if(specialPasteData && specialPasteData.activeRange)
{
this.model.selectionRange = g_clipboardBase.specialPasteData.activeRange.clone(this.model);
this.model.selectionRange = specialPasteData.activeRange.clone(this.model);
}
//откатываем данные в ячейках
api.wb.clipboard.pasteProcessor.pasteFromBinary(this, g_clipboardBase.specialPasteUndoData.data);
api.wb.clipboard.pasteProcessor.pasteFromBinary(this, preSpecialPasteData.data);
//удаляем вставленные изображения
if(g_clipboardBase.specialPasteUndoData.images)
if(preSpecialPasteData.images)
{
var images = g_clipboardBase.specialPasteUndoData.images;
var images = preSpecialPasteData.images;
for(var i = 0; i < images.length; i++)
{
var id = images[i];
......@@ -8791,13 +8791,9 @@
}
//далее специальная вставка
if(window['AscCommon'].g_clipboardBase.specialPasteData)
if(specialPasteData)
{
var tempProps = new AscCommonExcel.SpecialPasteProps();
tempProps.setProps(props);
api.wb.clipboard.specialPasteProps = tempProps;
var specialPasteData = window['AscCommon'].g_clipboardBase.specialPasteData;
api.wb.clipboard.specialPasteProps = props;
api.wb.clipboard.pasteData(this, specialPasteData._format, specialPasteData.data1, specialPasteData.data2, specialPasteData.text_data, true);
}
};
......
......@@ -925,6 +925,18 @@
this.Api.asc_PasteData(this.LastCopyBinary[0].type, this.LastCopyBinary[0].data);
}
return _ret;
},
Special_Paste : function(props)
{
this.Api.asc_SpecialPasteData(this.specialPasteUndoData, this.specialPasteData, props);
return true;
},
Clean_SpecialPasteObj : function()
{
this.specialPasteData = {};
this.specialPasteUndoData = {};
}
};
......
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