Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sdkjs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boris Kocherov
sdkjs
Commits
6027d075
Commit
6027d075
authored
Feb 18, 2017
by
Ilya Kirillov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added test variant of text form fields.
parent
85ec90f5
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
209 additions
and
10 deletions
+209
-10
common/HistoryCommon.js
common/HistoryCommon.js
+3
-2
word/Editor/Document.js
word/Editor/Document.js
+37
-0
word/Editor/Field.js
word/Editor/Field.js
+123
-0
word/Editor/FieldChanges.js
word/Editor/FieldChanges.js
+20
-4
word/Editor/Paragraph.js
word/Editor/Paragraph.js
+4
-4
word/api.js
word/api.js
+22
-0
No files found.
common/HistoryCommon.js
View file @
6027d075
...
@@ -1628,8 +1628,9 @@
...
@@ -1628,8 +1628,9 @@
//------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе ParaField
// Типы изменений в классе ParaField
//------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------
window
[
'
AscDFH
'
].
historyitem_Field_AddItem
=
window
[
'
AscDFH
'
].
historyitem_type_Field
|
1
;
window
[
'
AscDFH
'
].
historyitem_Field_AddItem
=
window
[
'
AscDFH
'
].
historyitem_type_Field
|
1
;
window
[
'
AscDFH
'
].
historyitem_Field_RemoveItem
=
window
[
'
AscDFH
'
].
historyitem_type_Field
|
2
;
window
[
'
AscDFH
'
].
historyitem_Field_RemoveItem
=
window
[
'
AscDFH
'
].
historyitem_type_Field
|
2
;
window
[
'
AscDFH
'
].
historyitem_Field_FormFieldName
=
window
[
'
AscDFH
'
].
historyitem_type_Field
|
3
;
//------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе Footnotes
// Типы изменений в классе Footnotes
//------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------
...
...
word/Editor/Document.js
View file @
6027d075
...
@@ -1205,6 +1205,19 @@ CDocumentFieldsManager.prototype.Restore_MailMergeTemplate = function()
...
@@ -1205,6 +1205,19 @@ CDocumentFieldsManager.prototype.Restore_MailMergeTemplate = function()
}
}
}
}
};
};
CDocumentFieldsManager
.
prototype
.
GetAllFieldsByType
=
function
(
nType
)
{
var
arrFields
=
[];
for
(
var
nIndex
=
0
,
nCount
=
this
.
m_aFields
.
length
;
nIndex
<
nCount
;
++
nIndex
)
{
var
oField
=
this
.
m_aFields
[
nIndex
];
if
(
nType
===
oField
.
Get_FieldType
()
&&
oField
.
Is_UseInDocument
())
{
arrFields
.
push
(
oField
);
}
}
return
arrFields
;
};
var
selected_None
=
-
1
;
var
selected_None
=
-
1
;
var
selected_DrawingObject
=
0
;
var
selected_DrawingObject
=
0
;
...
@@ -15991,6 +16004,30 @@ CDocument.prototype.RemoveTextSelection = function()
...
@@ -15991,6 +16004,30 @@ CDocument.prototype.RemoveTextSelection = function()
{
{
this
.
Controller
.
RemoveTextSelection
();
this
.
Controller
.
RemoveTextSelection
();
};
};
CDocument
.
prototype
.
AddFormTextField
=
function
(
sName
,
sDefaultText
)
{
if
(
false
===
this
.
Document_Is_SelectionLocked
(
AscCommon
.
changestype_Paragraph_Content
))
{
this
.
Create_NewHistoryPoint
(
AscDFH
.
historydescription_Document_AddMailMergeField
);
var
oField
=
new
ParaField
(
fieldtype_FORMTEXT
);
var
oRun
=
new
ParaRun
();
oField
.
SetFormFieldName
(
sName
);
for
(
var
nIndex
=
0
,
nLen
=
sDefaultText
.
length
;
nIndex
<
nLen
;
++
nIndex
)
{
oRun
.
Add_ToContent
(
nIndex
,
new
ParaText
(
sDefaultText
.
charAt
(
nIndex
)));
}
oField
.
Add_ToContent
(
0
,
oRun
);
this
.
Register_Field
(
oField
);
this
.
Paragraph_Add
(
oField
);
this
.
Document_UpdateInterfaceState
();
}
};
CDocument
.
prototype
.
GetAllFormTextFields
=
function
()
{
return
this
.
FieldsManager
.
GetAllFieldsByType
(
fieldtype_FORMTEXT
);
};
function
CDocumentSelectionState
()
function
CDocumentSelectionState
()
...
...
word/Editor/Field.js
View file @
6027d075
...
@@ -39,6 +39,7 @@ var fieldtype_UNKNOWN = 0x0000;
...
@@ -39,6 +39,7 @@ var fieldtype_UNKNOWN = 0x0000;
var
fieldtype_MERGEFIELD
=
0x0001
;
var
fieldtype_MERGEFIELD
=
0x0001
;
var
fieldtype_PAGENUM
=
0x0002
;
var
fieldtype_PAGENUM
=
0x0002
;
var
fieldtype_PAGECOUNT
=
0x0003
;
var
fieldtype_PAGECOUNT
=
0x0003
;
var
fieldtype_FORMTEXT
=
0x0004
;
/**
/**
*
*
...
@@ -64,6 +65,8 @@ function ParaField(FieldType, Arguments, Switches)
...
@@ -64,6 +65,8 @@ function ParaField(FieldType, Arguments, Switches)
this
.
Bounds
=
{};
this
.
Bounds
=
{};
this
.
FormFieldName
=
""
;
// Добавляем данный класс в таблицу Id (обязательно в конце конструктора)
// Добавляем данный класс в таблицу Id (обязательно в конце конструктора)
AscCommon
.
g_oTableId
.
Add
(
this
,
this
.
Id
);
AscCommon
.
g_oTableId
.
Add
(
this
,
this
.
Id
);
}
}
...
@@ -246,6 +249,107 @@ ParaField.prototype.Draw_HighLights = function(PDSH)
...
@@ -246,6 +249,107 @@ ParaField.prototype.Draw_HighLights = function(PDSH)
PDSH
.
MMFields
.
Add
(
Y0
,
Y1
,
X0
,
X1
,
0
,
0
,
0
,
0
);
PDSH
.
MMFields
.
Add
(
Y0
,
Y1
,
X0
,
X1
,
0
,
0
,
0
,
0
);
}
}
};
};
ParaField
.
prototype
.
Is_UseInDocument
=
function
()
{
return
(
this
.
Paragraph
&&
true
===
this
.
Paragraph
.
Is_UseInDocument
()
&&
true
===
this
.
Is_UseInParagraph
()
?
true
:
false
);
};
ParaField
.
prototype
.
Is_UseInParagraph
=
function
()
{
if
(
!
this
.
Paragraph
)
return
false
;
var
ContentPos
=
this
.
Paragraph
.
Get_PosByElement
(
this
);
if
(
!
ContentPos
)
return
false
;
return
true
;
};
ParaField
.
prototype
.
Get_LeftPos
=
function
(
SearchPos
,
ContentPos
,
Depth
,
UseContentPos
)
{
if
(
false
===
UseContentPos
&&
this
.
Content
.
length
>
0
)
{
// При переходе в новый контент встаем в его конец
var
CurPos
=
this
.
Content
.
length
-
1
;
this
.
Content
[
CurPos
].
Get_EndPos
(
false
,
SearchPos
.
Pos
,
Depth
+
1
);
SearchPos
.
Pos
.
Update
(
CurPos
,
Depth
);
SearchPos
.
Found
=
true
;
return
true
;
}
ParaField
.
superclass
.
Get_LeftPos
.
call
(
this
,
SearchPos
,
ContentPos
,
Depth
,
UseContentPos
);
};
ParaField
.
prototype
.
Get_RightPos
=
function
(
SearchPos
,
ContentPos
,
Depth
,
UseContentPos
,
StepEnd
)
{
if
(
false
===
UseContentPos
&&
this
.
Content
.
length
>
0
)
{
// При переходе в новый контент встаем в его начало
this
.
Content
[
0
].
Get_StartPos
(
SearchPos
.
Pos
,
Depth
+
1
);
SearchPos
.
Pos
.
Update
(
0
,
Depth
);
SearchPos
.
Found
=
true
;
return
true
;
}
ParaField
.
superclass
.
Get_RightPos
.
call
(
this
,
SearchPos
,
ContentPos
,
Depth
,
UseContentPos
,
StepEnd
);
};
CParagraphContentWithParagraphLikeContent
.
prototype
.
Get_LeftPos
=
function
(
SearchPos
,
ContentPos
,
Depth
,
UseContentPos
)
{
if
(
this
.
Content
.
length
<=
0
)
return
false
;
var
CurPos
=
(
true
===
UseContentPos
?
ContentPos
.
Get
(
Depth
)
:
this
.
Content
.
length
-
1
);
this
.
Content
[
CurPos
].
Get_LeftPos
(
SearchPos
,
ContentPos
,
Depth
+
1
,
UseContentPos
);
SearchPos
.
Pos
.
Update
(
CurPos
,
Depth
);
if
(
true
===
SearchPos
.
Found
)
return
true
;
CurPos
--
;
while
(
CurPos
>=
0
)
{
this
.
Content
[
CurPos
].
Get_LeftPos
(
SearchPos
,
ContentPos
,
Depth
+
1
,
false
);
SearchPos
.
Pos
.
Update
(
CurPos
,
Depth
);
if
(
true
===
SearchPos
.
Found
)
return
true
;
CurPos
--
;
}
return
false
;
};
CParagraphContentWithParagraphLikeContent
.
prototype
.
Get_RightPos
=
function
(
SearchPos
,
ContentPos
,
Depth
,
UseContentPos
,
StepEnd
)
{
if
(
this
.
Content
.
length
<=
0
)
return
false
;
var
CurPos
=
(
true
===
UseContentPos
?
ContentPos
.
Get
(
Depth
)
:
0
);
this
.
Content
[
CurPos
].
Get_RightPos
(
SearchPos
,
ContentPos
,
Depth
+
1
,
UseContentPos
,
StepEnd
);
SearchPos
.
Pos
.
Update
(
CurPos
,
Depth
);
if
(
true
===
SearchPos
.
Found
)
return
true
;
CurPos
++
;
var
Count
=
this
.
Content
.
length
;
while
(
CurPos
<
this
.
Content
.
length
)
{
this
.
Content
[
CurPos
].
Get_RightPos
(
SearchPos
,
ContentPos
,
Depth
+
1
,
false
,
StepEnd
);
SearchPos
.
Pos
.
Update
(
CurPos
,
Depth
);
if
(
true
===
SearchPos
.
Found
)
return
true
;
CurPos
++
;
}
return
false
;
};
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
// Работа с данными поля
// Работа с данными поля
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
...
@@ -375,6 +479,25 @@ ParaField.prototype.private_GetMappedRun = function(Value)
...
@@ -375,6 +479,25 @@ ParaField.prototype.private_GetMappedRun = function(Value)
return
oRun
;
return
oRun
;
};
};
ParaField
.
prototype
.
SetFormFieldName
=
function
(
sName
)
{
History
.
Add
(
new
CChangesParaFieldFormFieldName
(
this
,
this
.
FormFieldName
,
sName
));
this
.
FormFieldName
=
sName
;
};
ParaField
.
prototype
.
GetFormFieldName
=
function
()
{
return
this
.
FormFieldName
;
};
ParaField
.
prototype
.
GetValue
=
function
()
{
var
oText
=
new
CParagraphGetText
();
oText
.
SetBreakOnNonText
(
false
);
oText
.
SetParaEndToSpace
(
true
);
this
.
Get_Text
(
oText
);
return
oText
.
Text
;
};
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
// Функции совместного редактирования
// Функции совместного редактирования
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
...
...
word/Editor/FieldChanges.js
View file @
6027d075
...
@@ -37,14 +37,16 @@
...
@@ -37,14 +37,16 @@
* Time: 18:59
* Time: 18:59
*/
*/
AscDFH
.
changesFactory
[
AscDFH
.
historyitem_Field_AddItem
]
=
CChangesParaFieldAddItem
;
AscDFH
.
changesFactory
[
AscDFH
.
historyitem_Field_AddItem
]
=
CChangesParaFieldAddItem
;
AscDFH
.
changesFactory
[
AscDFH
.
historyitem_Field_RemoveItem
]
=
CChangesParaFieldRemoveItem
;
AscDFH
.
changesFactory
[
AscDFH
.
historyitem_Field_RemoveItem
]
=
CChangesParaFieldRemoveItem
;
AscDFH
.
changesFactory
[
AscDFH
.
historyitem_Field_FormFieldName
]
=
CChangesParaFieldFormFieldName
;
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
// Карта зависимости изменений
// Карта зависимости изменений
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
AscDFH
.
changesRelationMap
[
AscDFH
.
historyitem_Field_AddItem
]
=
[
AscDFH
.
historyitem_Field_AddItem
,
AscDFH
.
historyitem_Field_RemoveItem
];
AscDFH
.
changesRelationMap
[
AscDFH
.
historyitem_Field_AddItem
]
=
[
AscDFH
.
historyitem_Field_AddItem
,
AscDFH
.
historyitem_Field_RemoveItem
];
AscDFH
.
changesRelationMap
[
AscDFH
.
historyitem_Field_RemoveItem
]
=
[
AscDFH
.
historyitem_Field_AddItem
,
AscDFH
.
historyitem_Field_RemoveItem
];
AscDFH
.
changesRelationMap
[
AscDFH
.
historyitem_Field_RemoveItem
]
=
[
AscDFH
.
historyitem_Field_AddItem
,
AscDFH
.
historyitem_Field_RemoveItem
];
AscDFH
.
changesRelationMap
[
AscDFH
.
historyitem_Field_FormFieldName
]
=
[
AscDFH
.
historyitem_Field_FormFieldName
];
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
/**
/**
...
@@ -174,4 +176,18 @@ CChangesParaFieldRemoveItem.prototype.IsRelated = function(oChanges)
...
@@ -174,4 +176,18 @@ CChangesParaFieldRemoveItem.prototype.IsRelated = function(oChanges)
CChangesParaFieldRemoveItem
.
prototype
.
CreateReverseChange
=
function
()
CChangesParaFieldRemoveItem
.
prototype
.
CreateReverseChange
=
function
()
{
{
return
this
.
private_CreateReverseChange
(
CChangesParaFieldAddItem
);
return
this
.
private_CreateReverseChange
(
CChangesParaFieldAddItem
);
};
/**
* @constructor
* @extends {AscDFH.CChangesBaseStringProperty}
*/
function
CChangesParaFieldFormFieldName
(
Class
,
Old
,
New
)
{
CChangesParaFieldFormFieldName
.
superclass
.
constructor
.
call
(
this
,
Class
,
Old
,
New
);
}
AscCommon
.
extendClass
(
CChangesParaFieldFormFieldName
,
AscDFH
.
CChangesBaseStringProperty
);
CChangesParaFieldFormFieldName
.
prototype
.
Type
=
AscDFH
.
historyitem_Field_FormFieldName
;
CChangesParaFieldFormFieldName
.
prototype
.
private_SetValue
=
function
(
Value
)
{
this
.
Class
.
FormFieldName
=
Value
;
};
};
\ No newline at end of file
word/Editor/Paragraph.js
View file @
6027d075
...
@@ -3714,7 +3714,7 @@ Paragraph.prototype =
...
@@ -3714,7 +3714,7 @@ Paragraph.prototype =
}
}
// Если курсор находится в начале или конце гиперссылки, тогда выводим его из гиперссылки
// Если курсор находится в начале или конце гиперссылки, тогда выводим его из гиперссылки
while
(
CurPos
>
0
&&
para_Run
!==
this
.
Content
[
CurPos
].
Type
&&
para_Math
!==
this
.
Content
[
CurPos
].
Type
&&
true
===
this
.
Content
[
CurPos
].
Cursor_Is_Start
()
)
while
(
CurPos
>
0
&&
para_Run
!==
this
.
Content
[
CurPos
].
Type
&&
para_Math
!==
this
.
Content
[
CurPos
].
Type
&&
para_Field
!==
this
.
Content
[
CurPos
].
Type
&&
true
===
this
.
Content
[
CurPos
].
Cursor_Is_Start
()
)
{
{
if
(
false
===
this
.
Content
[
CurPos
-
1
].
Is_CursorPlaceable
()
)
if
(
false
===
this
.
Content
[
CurPos
-
1
].
Is_CursorPlaceable
()
)
break
;
break
;
...
@@ -3723,7 +3723,7 @@ Paragraph.prototype =
...
@@ -3723,7 +3723,7 @@ Paragraph.prototype =
this
.
Content
[
CurPos
].
Cursor_MoveToEndPos
();
this
.
Content
[
CurPos
].
Cursor_MoveToEndPos
();
}
}
while
(
CurPos
<
Count
&&
para_Run
!==
this
.
Content
[
CurPos
].
Type
&&
para_Math
!==
this
.
Content
[
CurPos
].
Type
&&
true
===
this
.
Content
[
CurPos
].
Cursor_Is_End
()
)
while
(
CurPos
<
Count
&&
para_Run
!==
this
.
Content
[
CurPos
].
Type
&&
para_Math
!==
this
.
Content
[
CurPos
].
Type
&&
para_Field
!==
this
.
Content
[
CurPos
].
Type
&&
true
===
this
.
Content
[
CurPos
].
Cursor_Is_End
()
)
{
{
if
(
false
===
this
.
Content
[
CurPos
+
1
].
Is_CursorPlaceable
()
)
if
(
false
===
this
.
Content
[
CurPos
+
1
].
Is_CursorPlaceable
()
)
break
;
break
;
...
@@ -4406,7 +4406,7 @@ Paragraph.prototype =
...
@@ -4406,7 +4406,7 @@ Paragraph.prototype =
CurPos
--
;
CurPos
--
;
if
(
CurPos
>=
0
&&
para_Math
===
this
.
Content
[
CurPos
+
1
].
Type
)
if
(
CurPos
>=
0
&&
(
para_Math
===
this
.
Content
[
CurPos
+
1
].
Type
||
para_Field
===
this
.
Content
[
CurPos
+
1
].
Type
)
)
{
{
// При выходе из формулы встаем в конец рана
// При выходе из формулы встаем в конец рана
this
.
Content
[
CurPos
].
Get_EndPos
(
false
,
SearchPos
.
Pos
,
Depth
+
1
);
this
.
Content
[
CurPos
].
Get_EndPos
(
false
,
SearchPos
.
Pos
,
Depth
+
1
);
...
@@ -4443,7 +4443,7 @@ Paragraph.prototype =
...
@@ -4443,7 +4443,7 @@ Paragraph.prototype =
CurPos
++
;
CurPos
++
;
var
Count
=
this
.
Content
.
length
;
var
Count
=
this
.
Content
.
length
;
if
(
CurPos
<
Count
&&
para_Math
===
this
.
Content
[
CurPos
-
1
].
Type
)
if
(
CurPos
<
Count
&&
(
para_Math
===
this
.
Content
[
CurPos
-
1
].
Type
||
para_Field
===
this
.
Content
[
CurPos
-
1
].
Type
)
)
{
{
// При выходе из формулы встаем в конец рана
// При выходе из формулы встаем в конец рана
this
.
Content
[
CurPos
].
Get_StartPos
(
SearchPos
.
Pos
,
Depth
+
1
);
this
.
Content
[
CurPos
].
Get_StartPos
(
SearchPos
.
Pos
,
Depth
+
1
);
...
...
word/api.js
View file @
6027d075
...
@@ -6880,6 +6880,28 @@ background-repeat: no-repeat;\
...
@@ -6880,6 +6880,28 @@ background-repeat: no-repeat;\
this
.
WordControl
.
m_oLogicDocument
.
Create_NewHistoryPoint
(
AscDFH
.
historydescription_Document_AddSectionBreak
);
this
.
WordControl
.
m_oLogicDocument
.
Create_NewHistoryPoint
(
AscDFH
.
historydescription_Document_AddSectionBreak
);
return
true
;
return
true
;
};
};
//----------------------------------------------------------------------------------------------------------------------
// Работаем с полями
//----------------------------------------------------------------------------------------------------------------------
asc_docs_api
.
prototype
.
asc_GetAllFormTextFieldsContent
=
function
()
{
var
oLogicDocument
=
this
.
WordControl
.
m_oLogicDocument
;
if
(
!
oLogicDocument
)
return
[];
var
arrFields
=
oLogicDocument
.
GetAllFormTextFields
();
var
arrResult
=
[];
for
(
var
nIndex
=
0
,
nCount
=
arrFields
.
length
;
nIndex
<
nCount
;
++
nIndex
)
{
var
oField
=
arrFields
[
nIndex
];
var
sName
=
oField
.
GetFormFieldName
();
var
sText
=
oField
.
GetValue
();
arrResult
.
push
({
Name
:
sName
,
Text
:
sText
});
}
return
arrResult
;
};
// input
// input
asc_docs_api
.
prototype
.
Begin_CompositeInput
=
function
()
asc_docs_api
.
prototype
.
Begin_CompositeInput
=
function
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment