Files
DocumentServer-v-9.2.0/sdkjs/word/Editor/PresentationField.js
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

430 lines
16 KiB
JavaScript

/*
* (c) Copyright Ascensio System SIA 2010-2024
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(function(window, undefined){
var oMonths = {};
oMonths[0] = "January";
oMonths[1] = "February";
oMonths[2] = "March";
oMonths[3] = "April";
oMonths[4] = "May";
oMonths[5] = "June";
oMonths[6] = "July";
oMonths[7] = "August";
oMonths[8] = "September";
oMonths[9] = "October";
oMonths[10] = "November";
oMonths[11] = "December";
var oDays = {};
oDays[0] = "Sunday";
oDays[1] = "Monday";
oDays[2] = "Tuesday";
oDays[3] = "Wednesday";
oDays[4] = "Thursday";
oDays[5] = "Friday";
oDays[6] = "Saturday";
var oDateTimeFormats = {};
oDateTimeFormats["datetime1"] = "MM/DD/YYYY";
oDateTimeFormats["datetimeFigureOut"] = oDateTimeFormats["datetime1"];
oDateTimeFormats["datetime2"] = "dddd\\,\\ mmmm\\ dd\\,\\ yyyy";
oDateTimeFormats["datetime3"] = "DD\\ MMMM\\ YYYY";
oDateTimeFormats["datetime4"] = "MMMM\\ DD\\,\\ YYYY";
oDateTimeFormats["datetime5"] = "DD-MMM-YY";
oDateTimeFormats["datetime6"] = "MMMM\\ YY";
oDateTimeFormats["datetime7"] = "MMM-YY";
oDateTimeFormats["datetime8"] = "MM/DD/YYYY\\ hh:mm\\ AM/PM";
oDateTimeFormats["datetime9"] = "MM/DD/YYYY\\ hh:mm:ss\\ AM/PM";
oDateTimeFormats["datetime10"] = "hh:mm";
oDateTimeFormats["datetime11"] = "hh:mm:ss";
oDateTimeFormats["datetime12"] = "hh:mm\\ AM/PM";
oDateTimeFormats["datetime13"] = "hh:mm:ss:\\ AM/PM";
function CPresentationField(Paragraph)
{
ParaRun.call(this, Paragraph, false);
this.Guid = null;
this.FieldType = null;
this.PPr = null;
this.Slide = null;
this.SlideNum = null;
this.CanAddToContent = false;
}
CPresentationField.prototype = Object.create(ParaRun.prototype);
CPresentationField.prototype.constructor = CPresentationField;
CPresentationField.prototype.Copy = function(Selected, oPr)
{
if(oPr && oPr.Paragraph && oPr.Paragraph.bFromDocument)
{
return ParaRun.prototype.Copy.call(this, Selected, oPr);
}
var Field = new CPresentationField(this.Paragraph);
Field.Set_Pr( this.Pr.Copy() );
Field.SetGuid(AscCommon.CreateGUID());
Field.SetFieldType( this.FieldType );
if(this.PPr)
{
Field.SetPPr(this.PPr.Copy());
}
return Field;
};
CPresentationField.prototype.Copy2 = function()
{
this.Copy();
};
CPresentationField.prototype.SetGuid = function(sGuid)
{
History.Add(new AscDFH.CChangesDrawingsString(this, AscDFH.historyitem_PresentationField_Guid, this.Guid, sGuid));
this.Guid = sGuid;
};
CPresentationField.prototype.SetFieldType = function(Type)
{
History.Add(new AscDFH.CChangesDrawingsString(this, AscDFH.historyitem_PresentationField_FieldType, this.FieldType, Type));
this.FieldType = Type;
};
CPresentationField.prototype.SetPPr = function(Pr)
{
History.Add(new AscDFH.CChangesDrawingsObjectNoId(this, AscDFH.historyitem_PresentationField_PPr, this.PPr, Pr));
this.PPr = Pr;
};
CPresentationField.prototype.Add_ToContent = function(Pos, Item, UpdatePosition)
{
if(AscCommon.History.Is_On() && !this.CanAddToContent)
{
return;
}
ParaRun.prototype.Add_ToContent.call(this, Pos, Item, UpdatePosition);
};
CPresentationField.prototype.Remove_FromContent = function(Pos, Count, UpdatePosition)
{
if(AscCommon.History.Is_On())
{
return;
}
ParaRun.prototype.Remove_FromContent.call(this, Pos, Count, UpdatePosition);
};
CPresentationField.prototype.Is_Empty = function()
{
return false;
};
CPresentationField.prototype.private_CalculateContent = function()
{
AscFormat.ExecuteNoHistory(function(){
var sStr = this.private_GetString();
if(typeof sStr === 'string')
{
const bSelectionUse = this.IsSelectionUse();
const oSelection = this.State.Selection;
const nDirection = oSelection.EndPos - oSelection.StartPos;
this.Content.length = 0;
this.AddText(sStr, -1);
if(bSelectionUse)
{
this.SelectAll(nDirection);
}
}
}, this, []);
};
CPresentationField.prototype.GetFieldType = function(){
if(typeof this.FieldType === 'string') {
return this.FieldType.toLowerCase();
}
return "";
};
CPresentationField.prototype.private_GetString = function()
{
var sStr = null;
var oStylesObject;
var oCultureInfo = AscCommon.g_aCultureInfos[this.Get_CompiledPr().Lang.Val];
if(!oCultureInfo)
{
oCultureInfo = AscCommon.g_aCultureInfos[1033];
}
var oDateTime, oFormat;
if(typeof this.FieldType === 'string')
{
var sFieldType = this.FieldType.toLowerCase();
sStr = null;
if("slidenum" === sFieldType)
{
if(this.Paragraph && this.Paragraph.Parent)
{
oStylesObject = this.Paragraph.Parent.Get_Styles(0);
var nFirstSlideNum = 1;
if(oStylesObject.presentation)
{
nFirstSlideNum = oStylesObject.presentation.getFirstSlideNumber();
}
if(oStylesObject.slide)
{
this.Slide = oStylesObject.slide;
if(AscFormat.isRealNumber(this.Slide.num))
{
this.SlideNum = this.Slide.num;
sStr = '' + (this.Slide.num + nFirstSlideNum);
}
}
else if(oStylesObject.notes)
{
if(oStylesObject.notes.slide)
{
this.Slide = oStylesObject.notes.slide;
if(AscFormat.isRealNumber(this.Slide.num))
{
this.SlideNum = this.Slide.num;
sStr = '' + (this.Slide.num + nFirstSlideNum);
}
}
}
else if(oStylesObject.layout || oStylesObject.master)
{
let oParent = (oStylesObject.layout || oStylesObject.master);
if(AscFormat.isRealNumber(oParent.lastRecalcSlideIndex) && oParent.lastRecalcSlideIndex > -1)
{
this.SlideNum = oParent.lastRecalcSlideIndex;
sStr = '' + (this.SlideNum + nFirstSlideNum);
}
else
{
sStr = '<#>';
}
}
}
}
else if("value" === sFieldType)
{
if(this.Paragraph && this.Paragraph.Parent)
{
oStylesObject = this.Paragraph.Parent.Get_Styles();
if(oStylesObject.shape && oStylesObject.shape.getValueString && oStylesObject.shape.getValueString())
{
sStr = oStylesObject.shape.getValueString();
}
}
}
else if("categoryname" === sFieldType)
{
if(this.Paragraph && this.Paragraph.Parent)
{
oStylesObject = this.Paragraph.Parent.Get_Styles();
if(oStylesObject.shape && oStylesObject.shape.getCategoryName && oStylesObject.shape.getCategoryName())
{
sStr = oStylesObject.shape.getCategoryName();
}
}
}
else if("percentage" === sFieldType)
{
if(this.Paragraph && this.Paragraph.Parent)
{
oStylesObject = this.Paragraph.Parent.Get_Styles();
if(oStylesObject.shape && oStylesObject.shape.getPercentageString())
{
sStr = oStylesObject.shape.getPercentageString();
}
}
}
else if(sFieldType.indexOf("datetime") === 0)
{
oFormat = this.private_GetDateTimeFormat(sFieldType);
if(oFormat)
{
oDateTime = new Asc.cDate();
sStr = oFormat.formatToWord(oDateTime.getExcelDate(true) + (oDateTime.getHours() * 60 * 60 + oDateTime.getMinutes() * 60 + oDateTime.getSeconds()) / AscCommonExcel.c_sPerDay, 15, oCultureInfo);
}
else
{
sStr = sFieldType.toUpperCase();
}
}
else
{
sStr = sFieldType.toUpperCase();
}
}
return sStr;
};
CPresentationField.prototype.private_GetDateTimeFormat = function(sFieldType)
{
let sResultFiledType = sFieldType;
let oFormat = null;
const nLang = this.Get_CompiledPr().Lang.Val;
let sFormat = oDateTimeFormats[sResultFiledType] || AscCommonWord.oDefaultDateTimeFormat[nLang];
if(!sFormat)
{
sResultFiledType = "datetime1";
sFormat = oDateTimeFormats[sResultFiledType]
}
if(sFormat)
{
let aFormat = Asc.c_oAscDateTimeFormat[nLang];
if(!Array.isArray(aFormat))
{
aFormat = Asc.c_oAscDateTimeFormat[lcid_enUS];
}
if(Array.isArray(aFormat))
{
let nIdx = 0;
//match field type to index in Asc.c_oAscDateTimeFormat[nLang]
switch (sResultFiledType)
{
case "datetimeFigureOut": nIdx = 0; break;//"MM/DD/YYYY";
case "datetime1": nIdx = 0; break;//"MM/DD/YYYY";
case "datetime2": nIdx = 1; break;//"dddd\\,\\ mmmm\\ dd\\,\\ yyyy";
case "datetime3": nIdx = 8; break;//"DD\\ MMMM\\ YYYY";
case "datetime4": nIdx = 2; break;//"MMMM\\ DD\\,\\ YYYY";
case "datetime5": nIdx = 5; break;//"DD-MMM-YY";
case "datetime6": nIdx = 9; break;//"MMMM\\ YY";
case "datetime7": nIdx = 10; break;//"MMM-YY";
case "datetime8": nIdx = 11; break;//"MM/DD/YYYY\\ hh:mm\\ AM/PM";
case "datetime9": nIdx = 12; break;//"MM/DD/YYYY\\ hh:mm:ss\\ AM/PM";
case "datetime10": nIdx = 15; break;//"hh:mm";
case "datetime11": nIdx = 16; break;//"hh:mm:ss";
case "datetime12": nIdx = 13; break;//"hh:mm\\ AM/PM";
case "datetime13": nIdx = 14; break;//"hh:mm:ss:\\ AM/PM";
}
if(aFormat[nIdx])
{
sFormat = aFormat[nIdx]
}
}
oFormat = AscCommon.oNumFormatCache.get(sFormat, AscCommon.NumFormatType.WordFieldDate);
}
return oFormat;
};
CPresentationField.prototype.Recalculate_MeasureContent = function()
{
if (!this.RecalcInfo.IsMeasureNeed())
return;
this.private_CalculateContent();
ParaRun.prototype.Recalculate_MeasureContent.call(this);
};
CPresentationField.prototype.Recalculate_MeasureContent = function()
{
if (!this.RecalcInfo.IsMeasureNeed())
return;
this.private_CalculateContent();
ParaRun.prototype.Recalculate_MeasureContent.call(this);
};
CPresentationField.prototype.Write_ToBinary2 = function(Writer)
{
var StartPos = Writer.GetCurPosition();
ParaRun.prototype.Write_ToBinary2.call(this, Writer);
var EndPos = Writer.GetCurPosition();
Writer.Seek(StartPos);
Writer.WriteLong( AscDFH.historyitem_type_PresentationField);
Writer.Seek(EndPos);
};
CPresentationField.prototype.GetSelectedElementsInfo = function(oInfo)
{
oInfo.SetPresentationField(this);
ParaRun.prototype.GetSelectedElementsInfo.apply(this, arguments);
};
CPresentationField.prototype.Set_SelectionContentPos = function(StartContentPos, EndContentPos, Depth, StartFlag, EndFlag)
{
if (this.Paragraph && this.Paragraph.GetSelectDirection() > 0)
this.SelectAll(1);
else
this.SelectAll(-1);
};
CPresentationField.prototype.Get_LeftPos = function(SearchPos, ContentPos, Depth, UseContentPos)
{
if (false === UseContentPos && this.Content.length > 0)
{
SearchPos.Found = true;
SearchPos.Pos.Update(0, Depth);
return true;
}
return false;
};
CPresentationField.prototype.Get_RightPos = function(SearchPos, ContentPos, Depth, UseContentPos, StepEnd)
{
if (false === UseContentPos && this.Content.length > 0)
{
SearchPos.Found = true;
SearchPos.Pos.Update(this.Content.length, Depth);
return true;
}
return false;
};
CPresentationField.prototype.Get_WordStartPos = function(SearchPos, ContentPos, Depth, UseContentPos)
{
};
CPresentationField.prototype.Get_WordEndPos = function(SearchPos, ContentPos, Depth, UseContentPos, StepEnd)
{
};
CPresentationField.prototype.IsSolid = function()
{
return true;
};
CPresentationField.prototype.IsStopCursorOnEntryExit = function()
{
return true;
};
CPresentationField.prototype.Cursor_Is_NeededCorrectPos = function()
{
return false;
};
var drawingsChangesMap = window['AscDFH'].drawingsChangesMap;
drawingsChangesMap[AscDFH.historyitem_PresentationField_FieldType] = function(oClass, value){oClass.FieldType = value;};
drawingsChangesMap[AscDFH.historyitem_PresentationField_Guid] = function(oClass, value){oClass.Guid = value;};
drawingsChangesMap[AscDFH.historyitem_PresentationField_PPr] = function(oClass, value){oClass.PPr = value;};
AscDFH.changesFactory[AscDFH.historyitem_PresentationField_FieldType] = window['AscDFH'].CChangesDrawingsString;
AscDFH.changesFactory[AscDFH.historyitem_PresentationField_Guid] = window['AscDFH'].CChangesDrawingsString;
AscDFH.changesFactory[AscDFH.historyitem_PresentationField_PPr] = window['AscDFH'].CChangesDrawingsObjectNoId;
//--------------------------------------------------------export----------------------------------------------------
window['AscCommonWord'] = window['AscCommonWord'] || {};
window['AscCommonWord'].CPresentationField = CPresentationField;
window['AscCommonWord'].oDefaultDateTimeFormat = {};
})(window);