SynApp2 - To Do List
documentation
-introduction
-requirements
-installation
-usage
-concepts: html/css/js/action/notification/forms/ovl
-concepts: request/response
schema
-customization
limitations
deployment
-examples
user guide
reference guide
api reference
wiki
=forum
-authentication and database selection
-app
-synapp2
-enterprise
-direct (oci)
-login page improvements
=logout
-user sandbox - table/record access control - none, read, read/write
-generation
-one page
-full application (regenerate all)
??wizard UI
??prior version backup
-form preview (and customization - field size, omit fields, show constraint fields, control field copy, LIST_MACRO_FILTER/ORDER)
=default (empty) custom.inc.php in app directory
=directory organization
=_config_
=_shared_
=synapp2
-table navigation framework
-single-path
-multi-path
alternate order/flow when fk order of appearance is sub-optimal
search large basis_table record sets in non-standalone situations
=automatic semi-transparent png/gif screen img switch for IE6
='blind' fields handling for forms
=specifically mapped
=read-only
=skipped as args are gathered for request
=markup
=client js
form specific subquery (2009-09-10)
-code/module cleanup and consolidation
=markup class (php)
response class (php)
=util.php
standardized comments for methods/functions
support key search on prime middle with ripple up to prime tier (search/select order number, display order and then customer record)
db records to support app nav tabs
#initial generate all qid/tables + login/out + reports
-add/edit/delete customization - tab label, title/tooltip, page filename (A_HREF, A_TEXT)
-change tab order (TAB_ORDER - 2009-09-21)
synapp2 tab for nav customization
-forms customization
-drag drop positions persistence
-image background (order form, etc.) (template.htm)
=field exclude override (COL_OMIT_
=field width override (COL_SIZE)
css style sheet element substitution (i.e. support simple color themes)
reference colors /**/
by selector/item
by selector/item relative % lighter/darker than selector/item (colors only) /**/
% red'er
% green'er
% blue'er
-appid-specific customization of background color/image
-database abstraction (MySQL, Oracle)
-schema (MySQL)
-schema (Oracle)
=create/read/update/delete (MySQL)
=create/read/update/delete (Oracle)
=recno computation (MySQL, Oracle)
=insert offset computation (MySQL)
=num result rows computation
=num found rows computation (MySQL)
forms default values
=from database definition
-ukauto
=forms read-only
=auto generated (auto_increment, ON UPDATE CURRENT_TIMESTAMP, default CURRENT_TIMESTAMP) (ie. is_blind)
-specialized field types
-enum (=list or radio)
set (list or checkbox)
boolean (list, radio)
-customizable input validation
=numeric range
-duplicate fk
=date
-email
=blank
=exceed maxlength
-auto generated (auto_increment, ON UPDATE CURRENT_TIMESTAMP, default CURRENT_TIMESTAMP)
=delete validation
=duplicate key violation
=server-side goal driven table navigation
=moving page state management from client js to server php
feedback/error handling
to response
of response
view page
[exchange errors in general - TBD: use serial number for all (goal) exchanges, to allow retry??
prompts
??table navigation
??record navigation
-forms validation
delete confirmation
acknowledgement (e.g. [number of ]records inserted, updated, deleted, etc.)
error recovery
#option list constraint
concurrency control - record/table locking
??debit/credit transaction support
query cache
auto capture
editing
??run-time logging
view
change
query alias (same as qid except...)
override by replacement (i.e. same key)
=suppress by key value == '_OMIT_'
-more complete/uniform page-registry mechanism (map id's to variables and behavior mechanisms)
-map container/form id to everything (no more hidden form variables: qid, _nav_, order)
static definitions within page
??dynamic definitions
-keyboard event management
-form submit
-key_action callback
-caption/toolbar
-sform
-dform
-tform
-iform
-postion at top of form
??position at top and bottom of basis_table tform
??left-hand and right-hand sections
=table column headers
=dynamic table column sorting
-column formatting (tdb - client or server side?)
- custom format function (COL_FORMAT)
#float
#int
cdata
-text areas
-forms
-table (column width control wraps content onto multiple lines)
-page rollup/reset control
-automatic fields like 'order number'
-setup/customize
-implementation
customization GUI
??search basis_table in multi-node nav when large number of detail records
setup/customize
implementation
-multi-record selection
-filter
-interactive
-multi-record (mass add/edit)
insert
serial
batch
edit/update
serial
batch
??support visible/searchable primary key - e.g. order number, account number
??support non-required (fk) foreign key
w/foreign orpans:
allowed
not allowed
-report generation
ASCII text
HTML
-pdf
label printing
batch
1-off
-report
pass app background color
-setup/customizaton
-title
-spec/filter
columns
-row shading
-cell borders on/off
-formatting callbacks
-centering
-headings
-width
-expressions
-sort/group/breaks/stats
-unique columns (sort/group)
data export
crv
-excel (text, tab-delimited) (2009-09-14)
-statistics form
setup/customization
- aform display basic statistics (e.g., found_rows, pageno, nopages, success msg, fail msg)
- stat query trigger management (initial display and after changes)
-fetch
-auto copy of named cols from parent to child
-customizable query (stat)
more clearly define event/trigger vs action
-processes
-setup/customization
-implementation
-invocation
more event/triggers
-authorization vs. username
-setup/customization
-appid, qid, pid ,rid, qid action, process
record sub-sets
-customizable page flow
-synapp2 pagegen page improvements
=tier table persistence
-customizable key naming conventions
-keymap page improvements
drag-n-drop record insert
-hotlink image support (use extra column to format img tag)
??external page links
new location
new tab
popup
inline frame
click recno to edit record
??convert response to JSON format in order to bypass need for well-formed xml
??consider serving (an app-specific version of) synapp2.js from php
=compatibility
#mysql 3.23.58
-mysql 4
-mysql 5
-php 4
-php 5
testing
unit
regression
distributable test scripts/suite
diagnostics
#js wrapper function getContainerById(id) -> present diagnostic message if id not found
issues
multiple keyboard (submit) events cause AJAX request collisions (i.e. more than 1 request gets generated)
=markup.php - erd_gen() fails when database has only one table (i.e. no paths) (2008-09-13), fixed (2008-09-22)
=schema::get_paths() error line 650 if $basis_table has no parent(s), related to markup.php error above (2008-09-13), fixed (2008-09-22)
schema::get_paths() error line 877 if fk conforms to convention 'id_post', but parent table is named 'posts' (2008-09-25)
=MySQL error - 1052 'Column 'body' in field list is ambiguous' when related/joined tables have same col names eg posts.body -> comments.body (2008-09-25), fixed (2008-09-25)
=like named column didn't fetch/copy from parent to child when parent record is_constraint (2008-09-25), fixed (2008-09-25)
=feedback is not applied - no feedback label appears when id ended with and had matching imbedded string (2008-09-30), fixed (2008-09-30) endsWith() was bad
=Nav control states not managed for/during tform rollup (2009-02-11), fixed (2009-02-15) added management to xshow() rollup_select_id block
=Can select/edit row when tform is empty (2008-09-09), fixed (2009-02-15) added detect_pk()
=Focus unmanaged on dynamically generated forms (e.g. database/appid on keymap, pagegen) (2008-09-09), fixed (2009-01-03)
??Form reset does not seem to affect textarea elements (FF)
Default select option for enum-based select elements during Add (get_init) (option value is a string rather than int) (IE)
Alternate sort '_order_' does not get passed to during update transaction, so computed nav offset is wrong
PageGen page - poor feedback (blank page) if table has fkey (field) defined for a non-existent table (2009-09-23 confirmed)
=PageGen page - poor feedback if template file does not exist (2008-09-22), fixed (2009-08-17)
=Keymap page - poor handling of bad database name, fixed (2009-01-02)
=Keymap page - must create _keymap_ table if it doesn't exist, fixed (2008-11-22)
=Keymap page - poor handling of fk selected for one table and onchange of fk options of another table, fixed (2009-06-11) markup.php - test !empty($_jkey_)
=Search query with HAVING clause only works for MySQL - TODO: more generic search query or abstract via dbx
=Safari drag handler breaks select options, disabled idd mechanism for Safari only, HACK: (2009-01-02), fixed (2010-01-07)
=dbx::escape_sql_term() returned a string for 'empty()' numeric term (2009-03-30), fixed (2009-03-30)
=nav control for 'add' not managed for prime constraint (2009-04-27), fixed (2009-04-30) synapp2.js - is_selection_short() now uses find_constraint_select_container()
=args not passed to custom process functions, wrong variable name in action.php - m_process_args (2009-05-28), fixed (2009-05-28)
empty form value when NULL allowed for int type column attempts to insert/update empty string. Note: ON_EMPTY_VALUE_SET_DEFAULT works ok (2009-06-03)
empty form value when NULL allowed for date type column attempts to insert/update empty string. Note: ON_EMPTY_VALUE_SET_DEFAULT works ok (2009-09-10)
=can not enter 0 for int field that allows NULL, fixed (2009-03-06), fixed (2009-06-06) test is_numeric() schema.php - translate_special_col_value()
-circular FK references cause infinite recursion, schema::fetch_table_paths() - (2009-06-11), fixed (2009-06-12) HACK limit depth (but need correct heuristic approach)
-Oracle - FK naming conventions not recognized due to case sensitivity (e.g. 'id_' != 'ID_') (2009-06-12), must use _keymap_ mechanism, (for now)
KeyMap page - allows select list elements that would cause circular FK references (2009-06-12)
'direct' login method unnecessarily tries (and fails) to select synapp2 database (2009-07-15)
value for enum type column appears in sform after iform canceled (2009-09-08)
=invalid (size) markup generated for Report Form date range_elements (2009-09-09), fixed (2009-09-09)
iform 'esc'/ cancel key action broken because 'submit' __form id doesn't map to the id registered for the qid arg (2009-09-14)
=PDF Reports - report.php, report::auto_widths() was broken from 0.1.4 development, fixed (2009-09-16)
PK/PRImary key naming convention may mask/conflict/override the formal primary key of a table (2009-09-22)
??Cannot define/have a self referencing FK (i.e. reference a record in the same table) (2009-09-22)
=reg_lookup() not enabled for FETCH customization where parent/child column names do not match (2009-09-23), fixed (2009-09-24)
PHP 5.3 compatability - failure to initialize parent class by parent name - use base class/constructor name instead, report.php fixed (2009-12-01)
-PHP 5.3 compatability - convert regular exprssion functions from depricated POSIX ereg to Perl preg, fixed (2010-01-08)
PHP 5.3 compatability - convert 1 remaining regular exprssion function from depricated POSIX ereg to Perl preg - schema::get_col_type_detail(), (2010-01-08)
=resize_container() - no action when [response payload is empty] row_size = 0 (2009-12-19), fixed (2009-12-22) clip row_size to 1 - synapp2.js
=custom::get_nav_incl_tabs() - does not handle space(s) between CSV elements, (2010-01-02), fixed (2010-01-02) trim() the CSV elements
=Report filter form (FFORM) submit not triggered by enter key, fixed (2010-01-14)
(legend: '=' complete, '-' partial, '*' priority, '??' requirement TBD, '#' no longer applicable or required)