Commit 0c04b1f8 authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Реализованы формулы внутри гиперссылок (баг 27420).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@59475 954022d7-b5bf-4e40-9824-e11837661b57
parent 77db402d
...@@ -82,9 +82,11 @@ function CSelectedContent() ...@@ -82,9 +82,11 @@ function CSelectedContent()
this.DrawingObjects = []; this.DrawingObjects = [];
this.Comments = []; this.Comments = [];
this.Maths = [];
this.HaveShape = false; this.HaveShape = false;
this.MoveDrawing = false; // Только для переноса автофигур this.MoveDrawing = false; // Только для переноса автофигур
this.HaveMath = false;
} }
CSelectedContent.prototype = CSelectedContent.prototype =
...@@ -119,8 +121,11 @@ CSelectedContent.prototype = ...@@ -119,8 +121,11 @@ CSelectedContent.prototype =
var Element = this.Elements[Pos].Element; var Element = this.Elements[Pos].Element;
Element.Get_AllDrawingObjects(this.DrawingObjects); Element.Get_AllDrawingObjects(this.DrawingObjects);
Element.Get_AllComments(this.Comments); Element.Get_AllComments(this.Comments);
Element.Get_AllMaths(this.Maths);
} }
this.HaveMath = (this.Maths.length > 0 ? true : false);
// Относительно картинок нас интересует только наличие автофигур с текстом. // Относительно картинок нас интересует только наличие автофигур с текстом.
Count = this.DrawingObjects.length; Count = this.DrawingObjects.length;
for (var Pos = 0; Pos < Count; Pos++) for (var Pos = 0; Pos < Count; Pos++)
...@@ -665,6 +670,7 @@ function CSelectedElementsInfo() ...@@ -665,6 +670,7 @@ function CSelectedElementsInfo()
this.m_nDrawing = selected_None; this.m_nDrawing = selected_None;
this.m_pParagraph = null; // Параграф, в котором находится выделение this.m_pParagraph = null; // Параграф, в котором находится выделение
this.m_oMath = null; // Формула, в которой находится выделение this.m_oMath = null; // Формула, в которой находится выделение
this.m_oHyperlink = null; // Гиперссылка, в которой находится выделение
this.Reset = function() this.Reset = function()
{ {
...@@ -684,6 +690,11 @@ function CSelectedElementsInfo() ...@@ -684,6 +690,11 @@ function CSelectedElementsInfo()
this.m_oMath = Math; this.m_oMath = Math;
}; };
this.Set_Hyperlink = function(Hyperlink)
{
this.m_oHyperlink = Hyperlink;
};
this.Get_Paragraph = function() this.Get_Paragraph = function()
{ {
return this.m_pParagraph; return this.m_pParagraph;
...@@ -694,6 +705,11 @@ function CSelectedElementsInfo() ...@@ -694,6 +705,11 @@ function CSelectedElementsInfo()
return this.m_oMath; return this.m_oMath;
}; };
this.Get_Hyperlink = function()
{
return this.m_oHyperlink;
};
this.Set_Table = function() this.Set_Table = function()
{ {
this.m_bTable = true; this.m_bTable = true;
......
...@@ -1236,6 +1236,21 @@ CDocumentContent.prototype = ...@@ -1236,6 +1236,21 @@ CDocumentContent.prototype =
return AllComments; return AllComments;
}, },
Get_AllMaths : function(AllMaths)
{
if ( undefined === AllMaths )
AllMaths = [];
var Count = this.Content.length;
for ( var Pos = 0; Pos < Count; Pos++ )
{
var Item = this.Content[Pos];
Item.Get_AllMaths( AllMaths );
}
return AllMaths;
},
Get_AllFloatElements : function(FloatObjs) Get_AllFloatElements : function(FloatObjs)
{ {
......
...@@ -152,6 +152,18 @@ ParaHyperlink.prototype.Is_StartFromNewLine = function() ...@@ -152,6 +152,18 @@ ParaHyperlink.prototype.Is_StartFromNewLine = function()
return this.Content[0].Is_StartFromNewLine(); return this.Content[0].Is_StartFromNewLine();
}; };
ParaHyperlink.prototype.Get_SelectedElementsInfo = function(Info)
{
Info.Set_Hyperlink(this);
var Selection = this.State.Selection;
if (true === Selection.Use && Selection.StartPos === Selection.EndPos && this.Content[Selection.EndPos].Get_SelectedElementsInfo)
this.Content[Selection.EndPos].Get_SelectedElementsInfo(Info);
else if (false === Selection.Use && this.Content[this.State.ContentPos].Get_SelectedElementsInfo)
this.Content[this.State.ContentPos].Get_SelectedElementsInfo(Info);
};
ParaHyperlink.prototype.Get_SelectedText = function(bAll, bClearText) ParaHyperlink.prototype.Get_SelectedText = function(bAll, bClearText)
{ {
var Str = ""; var Str = "";
...@@ -242,6 +254,17 @@ ParaHyperlink.prototype.Check_Content = function() ...@@ -242,6 +254,17 @@ ParaHyperlink.prototype.Check_Content = function()
ParaHyperlink.prototype.Add_ToContent = function(Pos, Item, UpdatePosition) ParaHyperlink.prototype.Add_ToContent = function(Pos, Item, UpdatePosition)
{ {
if (para_Hyperlink === Item.Type)
{
// При добавлении гиперссылки в гиперссылку мы добавляем контент гиперссылки, а не ее целиком
for (var ItemPos = 0, Count = Item.Content.length; ItemPos < Count; ItemPos++)
{
this.Add_ToContent(Pos + ItemPos, Item.Content[ItemPos], UpdatePosition);
}
return;
}
History.Add( this, { Type : historyitem_Hyperlink_AddItem, Pos : Pos, EndPos : Pos, Items : [ Item ] } ); History.Add( this, { Type : historyitem_Hyperlink_AddItem, Pos : Pos, EndPos : Pos, Items : [ Item ] } );
this.Content.splice( Pos, 0, Item ); this.Content.splice( Pos, 0, Item );
...@@ -442,6 +465,35 @@ ParaHyperlink.prototype.Add = function(Item) ...@@ -442,6 +465,35 @@ ParaHyperlink.prototype.Add = function(Item)
break; break;
} }
case para_Math :
{
var ContentPos = new CParagraphContentPos();
this.Get_ParaContentPos(false, false, ContentPos);
var CurPos = ContentPos.Get(0);
if ( para_Math !== this.Content[CurPos].Type )
{
// Разделяем текущий элемент (возвращается правая часть)
var NewElement = this.Content[CurPos].Split(ContentPos, 1);
if (null !== NewElement)
this.Add_ToContent(CurPos + 1, NewElement, true);
var Elem = new ParaMath();
Elem.Root.Load_FromMenu(Item.Menu, this);
Elem.Root.Correct_Content(true);
this.Add_ToContent(CurPos + 1, Elem, true);
// Перемещаем кусор в конец формулы
this.State.ContentPos = CurPos + 1;
this.Content[this.State.ContentPos].Cursor_MoveToEndPos(false);
}
else
this.Content[CurPos].Add(Item);
break;
}
default : default :
{ {
this.Content[this.State.ContentPos].Add( Item ); this.Content[this.State.ContentPos].Add( Item );
...@@ -1008,6 +1060,9 @@ ParaHyperlink.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1008,6 +1060,9 @@ ParaHyperlink.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
var Item = this.Content[Pos]; var Item = this.Content[Pos];
if (para_Math === Item.Type)
Item.Set_Inline(true);
if ( ( 0 === Pos && 0 === CurLine && 0 === CurRange ) || Pos !== RangeStartPos ) if ( ( 0 === Pos && 0 === CurLine && 0 === CurRange ) || Pos !== RangeStartPos )
{ {
Item.Recalculate_Reset( PRS.Range, PRS.Line ); Item.Recalculate_Reset( PRS.Range, PRS.Line );
...@@ -1145,33 +1200,8 @@ ParaHyperlink.prototype.Check_Range_OnlyMath = function(Checker, _CurRange, _Cur ...@@ -1145,33 +1200,8 @@ ParaHyperlink.prototype.Check_Range_OnlyMath = function(Checker, _CurRange, _Cur
ParaHyperlink.prototype.Check_MathPara = function(Checker) ParaHyperlink.prototype.Check_MathPara = function(Checker)
{ {
var Count = this.Content.length; Checker.Result = false;
if ( Checker.Direction > 0 ) Checker.Found = true;
{
for ( var CurPos = 0; CurPos < Count; CurPos++ )
{
if ( this.Content[CurPos].Check_MathPara )
{
this.Content[CurPos].Check_MathPara( MathParaChecker );
if ( false !== MathParaChecker.Found )
break;
}
}
}
else
{
for ( var CurPos = Count - 1; CurPos >= 0; CurPos-- )
{
if ( this.Content[CurPos].Check_MathPara )
{
this.Content[CurPos].Check_MathPara( MathParaChecker );
if ( false !== MathParaChecker.Found )
break;
}
}
}
}; };
ParaHyperlink.prototype.Check_PageBreak = function() ParaHyperlink.prototype.Check_PageBreak = function()
......
...@@ -106,6 +106,11 @@ ParaMath.prototype.Set_Paragraph = function(Paragraph) ...@@ -106,6 +106,11 @@ ParaMath.prototype.Set_Paragraph = function(Paragraph)
this.Paragraph = Paragraph; this.Paragraph = Paragraph;
}; };
ParaMath.prototype.Get_Text = function(Text)
{
Text.Text = null;
};
ParaMath.prototype.Is_Empty = function() ParaMath.prototype.Is_Empty = function()
{ {
if (this.Root.Content.length <= 0) if (this.Root.Content.length <= 0)
...@@ -495,6 +500,11 @@ ParaMath.prototype.Get_AllFontNames = function(AllFonts) ...@@ -495,6 +500,11 @@ ParaMath.prototype.Get_AllFontNames = function(AllFonts)
this.Root.Get_AllFontNames(AllFonts); this.Root.Get_AllFontNames(AllFonts);
}; };
ParaMath.prototype.Get_SelectedElementsInfo = function(Info)
{
Info.Set_Math(this);
};
ParaMath.prototype.Get_SelectedText = function(bAll, bClearText) ParaMath.prototype.Get_SelectedText = function(bAll, bClearText)
{ {
if ( true === bAll || true === this.Selection_IsUse() ) if ( true === bAll || true === this.Selection_IsUse() )
......
...@@ -344,6 +344,22 @@ Paragraph.prototype = ...@@ -344,6 +344,22 @@ Paragraph.prototype =
return List; return List;
}, },
Get_AllMaths : function(List)
{
if (undefined === List)
List = [];
var Len = this.Content.length;
for (var Pos = 0; Pos < Len; Pos++)
{
var Item = this.Content[Pos];
if (para_Math === Item.Type)
List.push({Math : Item, Paragraph : this});
}
return List;
},
Get_AllParagraphs_ByNumbering : function(NumPr, ParaArray) Get_AllParagraphs_ByNumbering : function(NumPr, ParaArray)
{ {
var _NumPr = this.Numbering_Get(); var _NumPr = this.Numbering_Get();
...@@ -2763,7 +2779,7 @@ Paragraph.prototype = ...@@ -2763,7 +2779,7 @@ Paragraph.prototype =
var ContentPos = this.Get_ParaContentPos(false, false); var ContentPos = this.Get_ParaContentPos(false, false);
var CurPos = ContentPos.Get(0); var CurPos = ContentPos.Get(0);
if ( para_Math !== this.Content[CurPos].Type ) if ( para_Math !== this.Content[CurPos].Type && para_Hyperlink !== this.Content[CurPos].Type )
{ {
// Разделяем текущий элемент (возвращается правая часть) // Разделяем текущий элемент (возвращается правая часть)
var NewElement = this.Content[CurPos].Split( ContentPos, 1 ); var NewElement = this.Content[CurPos].Split( ContentPos, 1 );
...@@ -6335,12 +6351,12 @@ Paragraph.prototype = ...@@ -6335,12 +6351,12 @@ Paragraph.prototype =
Get_SelectedElementsInfo : function(Info) Get_SelectedElementsInfo : function(Info)
{ {
Info.Set_Paragraph( this ); Info.Set_Paragraph(this);
if (true === this.Selection.Use && this.Selection.StartPos === this.Selection.EndPos && para_Math === this.Content[this.Selection.EndPos].Type) if (true === this.Selection.Use && this.Selection.StartPos === this.Selection.EndPos && this.Content[this.Selection.EndPos].Get_SelectedElementsInfo)
Info.Set_Math(this.Content[this.Selection.EndPos]); this.Content[this.Selection.EndPos].Get_SelectedElementsInfo(Info);
else if (false === this.Selection.Use && para_Math === this.Content[this.CurPos.ContentPos].Type) else if (false === this.Selection.Use && this.Content[this.CurPos.ContentPos].Get_SelectedElementsInfo)
Info.Set_Math(this.Content[this.CurPos.ContentPos]); this.Content[this.CurPos.ContentPos].Get_SelectedElementsInfo(Info);
}, },
Get_SelectedContent : function(DocContent) Get_SelectedContent : function(DocContent)
......
...@@ -2437,6 +2437,26 @@ CTable.prototype = ...@@ -2437,6 +2437,26 @@ CTable.prototype =
return AllComments; return AllComments;
}, },
Get_AllMaths : function(AllMaths)
{
if ( undefined === AllMaths )
AllMaths = [];
var Rows_Count = this.Content.length;
for ( var CurRow = 0; CurRow < Rows_Count; CurRow++ )
{
var Row = this.Content[CurRow];
var Cells_Count = Row.Get_CellsCount();
for ( var CurCell = 0; CurCell < Cells_Count; CurCell++ )
{
var Cell = Row.Get_Cell( CurCell );
Cell.Content.Get_AllMaths( AllMaths );
}
}
return AllMaths;
},
Get_AllFloatElements : function(FloatObjs) Get_AllFloatElements : function(FloatObjs)
{ {
if ( undefined === FloatObjs ) if ( undefined === FloatObjs )
......
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