Compare commits

...

12 Commits

10 changed files with 121 additions and 27 deletions

2
api.js
View File

@ -456,7 +456,7 @@ window["AscOForm"] = window.AscOForm = AscOForm;
if (!form || !formPr)
return;
form.SetFormPr(formPr);
form.SetFormPr(formPr.Copy());
if (formPr.GetFixed())
{

View File

@ -62,33 +62,33 @@
*/
/**
* Specific text form properties.
* Specific text field properties.
* @typedef {Object} TextFormPrBase
* @property {boolean} comb - Specifies if the text form should be a comb of characters with the same cell width. The maximum number of characters must be set to a positive value.
* @property {number} maxCharacters - The maximum number of characters in the text form.
* @property {boolean} comb - Specifies if the text field should be a comb of characters with the same cell width. The maximum number of characters must be set to a positive value.
* @property {number} maxCharacters - The maximum number of characters in the text field.
* @property {number} cellWidth - The cell width for each character measured in millimeters. If this parameter is not specified or equal to 0 or less, then the width will be set automatically.
* @property {boolean} multiLine - Specifies if the current fixed size text form is multiline or not.
* @property {boolean} autoFit - Specifies if the text form content should be autofit, i.e. whether the font size adjusts to the size of the fixed size form.
* @property {boolean} multiLine - Specifies if the current fixed size text field is multiline or not.
* @property {boolean} autoFit - Specifies if the text field content should be autofit, i.e. whether the font size adjusts to the size of the fixed size form.
*/
/**
* Text form properties.
* Text field properties.
* @typedef {FormPrBase | TextFormPrBase} TextFormPr
*/
/**
* Specific checkbox properties.
* Specific checkbox / radio button properties.
* @typedef {Object} CheckBoxFormPrBase
* @property {boolean} radio - Specifies if the current checkbox is a radio button. In this case, the key parameter is considered as an identifier for the group of radio buttons.
*/
/**
* Checkbox form properties.
* Checkbox / radio button properties.
* @typedef {FormPrBase | CheckBoxFormPrBase} CheckBoxFormPr
*/
/**
* Specific combo box properties.
* Specific combo box / dropdown list properties.
* @typedef {Object} ComboBoxFormPrBase
* @property {boolean} editable - Specifies if the combo box text can be edited.
* @property {boolean} autoFit - Specifies if the combo box form content should be autofit, i.e. whether the font size adjusts to the size of the fixed size form.
@ -100,7 +100,7 @@
*/
/**
* Combo box form properties.
* Combo box / dropdown list properties.
* @typedef {FormPrBase | ComboBoxFormPrBase} ComboBoxFormPr
*/
@ -136,9 +136,9 @@
*/
/**
* Creates a text form with the specified text form properties.
* Creates a text field with the specified text field properties.
* @memberof Api
* @param {TextFormPr} oFormPr - Text form properties.
* @param {TextFormPr} oFormPr - Text field properties.
* @returns {ApiTextForm}
*/
Api.prototype.CreateTextForm = function(oFormPr)
@ -160,9 +160,9 @@
return new AscBuilder.ApiTextForm(oCC);
};
/**
* Creates a checkbox/radio button form with the specified checkbox/radio button form properties.
* Creates a checkbox / radio button with the specified checkbox / radio button properties.
* @memberof Api
* @param {CheckBoxFormPr} oFormPr - Checkbox/radio button form properties.
* @param {CheckBoxFormPr} oFormPr - Checkbox / radio button properties.
* @returns {ApiCheckBoxForm}
*/
Api.prototype.CreateCheckBoxForm = function(oFormPr)
@ -230,9 +230,9 @@
return new AscBuilder.ApiCheckBoxForm(oCC);
};
/**
* Creates a combo box/dropdown form with the specified combo box/dropdown form properties.
* Creates a combo box / dropdown list with the specified combo box / dropdown list properties.
* @memberof Api
* @param {ComboBoxFormPr} oFormPr - Combo box/dropdown form properties.
* @param {ComboBoxFormPr} oFormPr - Combo box / dropdown list properties.
* @returns {ApiComboBoxForm}
*/
Api.prototype.CreateComboBoxForm = function(oFormPr)

View File

@ -10,6 +10,7 @@
"oform/Role.js",
"oform/xml/XmlPackage.js",
"oform/xml/XmlContext.js",
"oform/format/BaseFormatObject.js",
"oform/format/Document.js",
"oform/format/FieldGroup.js",
"oform/format/FieldMaster.js",

View File

@ -557,6 +557,10 @@
this.updateRoles();
this.checkRedraw();
};
OForm.prototype.onEndLoadChanges = function()
{
this.onUndoRedo();
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Private area
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,76 @@
/*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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)
{
/**
* Базовый класс для всех форматных классов в oform
* @constructor
*/
function CBaseFormatObject()
{
this.Id = null;
if (!AscCommon.g_oIdCounter.m_bLoad && !AscCommon.History.CanAddChanges())
return;
this.Id = AscCommon.g_oIdCounter.GetNewIdForOForm();
AscCommon.g_oTableId.Add(this, this.Id);
}
CBaseFormatObject.prototype.GetId = function()
{
return this.Id;
};
CBaseFormatObject.prototype.Get_Id = function()
{
return this.Id;
};
CBaseFormatObject.prototype.Write_ToBinary2 = function(writer)
{
writer.WriteLong(this.classType);
writer.WriteString2(this.GetId());
};
CBaseFormatObject.prototype.Read_FromBinary2 = function(reader)
{
this.Id = reader.GetString2();
};
CBaseFormatObject.prototype.Refresh_RecalcData = function(change)
{
};
//--------------------------------------------------------export----------------------------------------------------
AscOForm.CBaseFormatObject = CBaseFormatObject;
})(window);

View File

@ -38,10 +38,11 @@
* Основной класс для работы с форматом oform
* @param oform {AscOForm.OForm}
* @constructor
* @extends AscOForm.CBaseFormatObject
*/
function CDocument(oform)
{
AscFormat.CBaseFormatObject.call(this);
AscOForm.CBaseFormatObject.call(this);
this.OForm = oform;
@ -63,7 +64,7 @@
this.UserMasters = [];
this.FieldMasters = [];
}
AscFormat.InitClass(CDocument, AscFormat.CBaseFormatObject, AscDFH.historyitem_type_OForm_Document);
AscFormat.InitClass(CDocument, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_Document);
CDocument.prototype.clear = function()
{
// TODO: fields?

View File

@ -36,10 +36,11 @@
{
/**
* @constructor
* @extends AscOForm.CBaseFormatObject
*/
function CFieldGroup()
{
AscFormat.CBaseFormatObject.call(this);
AscOForm.CBaseFormatObject.call(this);
this.Weight = null;
this.Fields = [];
@ -47,10 +48,14 @@
this.Parent = null;
}
AscFormat.InitClass(CFieldGroup, AscFormat.CBaseFormatObject, AscDFH.historyitem_type_OForm_FieldGroup);
AscFormat.InitClass(CFieldGroup, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_FieldGroup);
CFieldGroup.prototype.setParent = function(parent)
{
if (this.Parent === parent)
return;
this.Parent = parent;
this.onChange();
};
CFieldGroup.prototype.setWeight = function(value)
{

View File

@ -37,10 +37,11 @@
/**
* @param {boolean} [generateId=false]
* @constructor
* @extends AscOForm.CBaseFormatObject
*/
function CFieldMaster(generateId)
{
AscFormat.CBaseFormatObject.call(this);
AscOForm.CBaseFormatObject.call(this);
this.FieldId = null;
this.Field = null;
@ -50,7 +51,7 @@
if (true === generateId)
this.setFieldId(AscCommon.CreateGUID());
}
AscFormat.InitClass(CFieldMaster, AscFormat.CBaseFormatObject, AscDFH.historyitem_type_OForm_FieldMaster);
AscFormat.InitClass(CFieldMaster, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_FieldMaster);
CFieldMaster.prototype.setLogicField = function(logicField)
{
this.Field = logicField;

View File

@ -37,10 +37,11 @@
/**
* @param {AscOForm.CUserMaster} userMaster
* @constructor
* @extends AscOForm.CBaseFormatObject
*/
function CUser(userMaster)
{
AscFormat.CBaseFormatObject.call(this);
AscOForm.CBaseFormatObject.call(this);
this.Email = undefined;
this.Telephone = undefined;
@ -49,7 +50,7 @@
if (userMaster)
this.setUserMaster(userMaster);
}
AscFormat.InitClass(CUser, AscFormat.CBaseFormatObject, AscDFH.historyitem_type_OForm_User);
AscFormat.InitClass(CUser, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_User);
CUser.prototype.setUserMaster = function(userMaster)
{
if (this.UserMaster === userMaster)

View File

@ -37,10 +37,11 @@
/**
* @param {boolean} [generateId=false]
* @constructor
* @extends AscOForm.CBaseFormatObject
*/
function CUserMaster(generateId)
{
AscFormat.CBaseFormatObject.call(this);
AscOForm.CBaseFormatObject.call(this);
this.UserId = undefined;
this.Role = undefined;
@ -51,10 +52,14 @@
this.Parent = null;
}
AscFormat.InitClass(CUserMaster, AscFormat.CBaseFormatObject, AscDFH.historyitem_type_OForm_UserMaster);
AscFormat.InitClass(CUserMaster, AscOForm.CBaseFormatObject, AscDFH.historyitem_type_OForm_UserMaster);
CUserMaster.prototype.setParent = function(parent)
{
if (this.Parent === parent)
return;
this.Parent = parent;
this.onChange();
};
CUserMaster.prototype.setUserId = function(userId)
{