About
Forms in Ferreteria consist of several sets of classes that work together:
- control classes render editable (and eventually non-editable) data fields
- field classes handle translating values between internal storage and on-disk storage (database)
Forms are in the process of being rewritten (version 2). The rest of this page applies to version 1.
Rules
- Every control (clsCtrl) belongs to a control row (clsCtrls).
- Control rows can be indexed in order to allow for multi-row editing.
- clsCtrls should eventually be renamed clsCtrlRow.
- I haven't decided if there needs to be a clsForm class for containing multiple control rows.
- Indexing is optional if you're only editing one row at a time.
Pages
Files
- Template:Ferreteria/code
- clsFields
- clsField
- clsFieldTime
- clsFieldNum
- clsFieldBool
- clsCtrls (abstract)
- clsCtrl (abstract)
- clsCtrlHTML
- clsCtrlHTML_CheckBox
- clsCtrlHTML_DropDown
- clsCtrlHTML_Hidden
- clsCtrlHTML_Fixed
- clsCtrlHTML_ReadOnly
- clsCtrlHTML_Rating
- Template:Ferreteria/code
|
Classes
The way this is organized is a little messed up; the descendants of clsCtrls handle database interaction -- but shouldn't it be the descendants of clsFields? It works reasonably well as is, but some rethinking might be a good idea, once everything is all mapped out.
collections
- clsCtrls (abstract): a collection of clsCtrl form controls -- often referred to in code as a "form object"
- clsForm_recs: form object that knows how to interact with a database table
- clsForm_recs_indexed: form object that knows how to interact with a keyed database table (allowing for additional functionality)
- clsFields: a collection of clsField objects
unitary objects
- clsField: a generic (unspecialized) field, suitable for plain text
- clsFieldTime: field for storing date/time
- clsFieldNum: field for storing numeric (int or float) data
- clsFieldBool: field for storing a BIT-type boolean field (which, oddly, is returned as a single character instead of numeric)
- should be renamed clsFieldBool_bit, or maybe this class should be abstract and clsFieldBool_bit should descend from it
- clsFieldBool_Int: field for storing a boolean value stored as an integer
- clsCtrl (abstract): a generic UI control
- clsCtrlHTML: a control for an HTML form, suitable for single-line text entry
- clsCtrlHTML_TextArea: HTML multiline text entry control
- clsCtrlHTML_CheckBox: HTML checkbox control
- clsCtrlHTML_DropDown: HTML single-choice drop-down control
- clsCtrlHTML_Hidden: HTML invisible control, for returning calculated data
- clsCtrlHTML_Fixed: HTML control for displaying pre-set data; useful for creating new records
- clsCtrlHTML_ReadOnly: HTML control for non-editable data
- clsCtrlHTML_Rating: HTML control for entering a rating (integer with fixed range and intervals)
|
Significant Functions
- clsCtrls (abstract)
- function Ctrl(<name>) → clsCtrl
- function FieldsObject() → clsForm_recs_indexed
- clsCtrl (abstract)
- function Field() → clsField
- function RowObject() → clsCtrls
- clsFields
- function DefaultValues() → array of mixed
- clsField
- function ValStore() → mixed
- function ValShow() → string
- clsCtrls → clsCtrl array
- clsCtrl →