Ferreteria/v2/usage/forms: Difference between revisions

From Woozle Writes Code
< Ferreteria‎ | v2‎ | usage
Jump to navigation Jump to search
(the other file's classes; better layout)
(significant functions; version 2 imminent)
Line 3: Line 3:
* '''control''' classes render editable (and eventually non-editable) data fields
* '''control''' classes render editable (and eventually non-editable) data fields
* '''field''' classes handle translating values between internal storage and on-disk storage (database)
* '''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==
==Rules==
* Every '''control''' (clsCtrl) belongs to a '''control row''' (clsCtrls).
* Every '''control''' (clsCtrl) belongs to a '''control row''' (clsCtrls).
Line 59: Line 61:
*** '''clsCtrlHTML_Rating''': HTML control for entering a rating (integer with fixed range and intervals)
*** '''clsCtrlHTML_Rating''': HTML control for entering a rating (integer with fixed range and intervals)
|}
|}
==Significant Functions==
* clsCtrls (abstract)
** function '''Ctrl({{arg|name}})''' &rarr; clsCtrl
** function '''FieldsObject()''' &rarr; clsForm_recs_indexed
* clsCtrl (abstract)
** function '''Field()''' &rarr; clsField
** function '''RowObject()''' &rarr; clsCtrls
* clsFields
** function '''DefaultValues()''' &rarr; array of mixed
* clsField
** function '''ValStore()''' &rarr; mixed
** function '''ValShow()''' &rarr; string
* clsCtrls &rarr; clsCtrl array
* clsCtrl &rarr;

Revision as of 01:44, 30 March 2015

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
        • clsFieldBool_Int
    • clsCtrls (abstract)
    • clsCtrl (abstract)
      • clsCtrlHTML
        • clsCtrlHTML_CheckBox
        • clsCtrlHTML_DropDown
        • clsCtrlHTML_Hidden
        • clsCtrlHTML_Fixed
        • clsCtrlHTML_ReadOnly
        • clsCtrlHTML_Rating
  • Template:Ferreteria/code
    • clsCtrls
      • clsForm_recs
        • clsForm_recs_indexed

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 →