Related links
Front-End Scripting
CMS - Content Management & Web API services
Task, Project, Quality
Task & Task pattern
System Management (part of framework)
HR - Human Resources
Mobile & Web Application
- clientprogramming_fevaldataobject
- userinterface-objectstructure
- cliplink
- npmlibraries
- fclip
- drag-drop
- AyMINE Application
- objectdefinition_inlineedit
- npmlibraries_stringlibrary
- clientprogramming
- mobileapplication
- languagesupport
- objectdefinition_multiupdate
- clientprogramming_fevalglobal
- clientprogramming_fevallanguage
- clientprogramming_fevaluser
- objectdefinition_viewdefinition
- offlineobjects
- System console
- Runtime debugging
- objectdefinition_detailview
Framework Core functionality
- prices
- managementfaq
- prices_private-installation
- clientdefinedattributes
- phplibraries
- servermethods
- io_export
- AyMINE Framework Server
- The AyMINE licence model
- System Rights
- servermethods_frmfrm
- io_import
- multiclient-architecture
- servermethods_stringsandtranslations
- frmevent
- System messaging
- usersessions
- User defined fields
Libraries & Lincences
Module - support for management
FI - Finance Management
Sales & Asset management
Sales related services
Description of a part of the AM module - sales partUser-defined fields
User defined fields have information stored in the object / table sysObjCustomAttrDef.
Each client has its own definition and there is not implemented way how to transfer fields between clients. However, export/import of data from this table is sufficient, it has no dependencies to anything else
Support by object
Object that supports user-defined fields, should has is set in the jsonc file and created column for them
Database
userAttributes json null comment 'optional user attributes in the json format'
A field of the json type should be defined:
Currently no other name is supported (for speed and simplicity). In theory it is possible, but currently not implemented.
json
about→groups
"groups":[ "sysUAttrs", "sysUAttrLink" ]
- sysUAttrs – mark that objects supports user-defined fields
- sysUAttrLink – mark that object can be referenced by user-defined fields. The referenced object may but don’t have to support user-defined fields itself. The options are independent
Attributes
"userAttributes":{ "type":"userAttributes" }
There should a single attribute of the json type that is used to store user-defined fields. Currently only the name “userAttributes” is supported and that name cannot be used for anything else.
However, when needed it can support field of any name, but client application should be adapted for that
List views
"userAttributes":{}
List view should read userAttributes field to allow showing user fields
Field is automatically made invisible and values are loaded from that.
Server list load does not directly supports reading this attribute. Always is transported complete content and the client loads custom fields from json itself
Detail
"userAttrs":{ "type":"userAttributes"}
Detail should have block for user attributes. It can be only single block for all of them. By default the block is called userAttrs but the name is arbitrary; block should have type defined. Block should be placed to the tab in regular way. When block is placed, all user attributes are placed to it.
Other views – calendar, clips
There is currently no support for user-defined fields in theses views
Technical implementation
Field definition
Field definition is 100% common AyMINE object without any special modifications
Fields management by server
Definition of objects supporting the user-defined fields is processed during the object load – it stores group settings and information that object supports user fields – so that new object should be loaded.
Obviously, New user field definition does not require that module reload. However field definition is loaded by client during login / restart so that field changes are propagated after the restart.
Field management by client
Client application loads definition of the clients user field with application data (part of the object definition). They are placed to the viewAttrs by the fObjectManager (see function prepareView_manageUserAttr). It is placed every time when view is opened; they are never part of the object attributes.
Name of the fields is uA_fieldID – so they are currently not usable in any ts checks. If necessary they should get internal name field that could be used instead of ID.
Field operation in list
- Hide/Show – manage totally by client and does not influence that all data are loaded
- Right management – managed from the definition in the same way as ordinary fields
- Filter – supported client that creates special filter for column – text format is used, date or datetime fields are not yet supported,
- Sorting – supported using the json_value function – sorting is without index
- Link – supported both by client and server, client creates request to get uA_IDDesc field with linked object descriprion (field of the group: 'fieldUALink') and server creates requested field