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) [supports multi-view for pages and reports]
=suppress by key value == '_OMIT_'
-more complete/uniform page-registry mechanism (map ids 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/delete)
insert
serial
batch
edit/update
serial
batch
=delete
??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 (Full ISO--Latin-1 support 1.8.0beta_2b)
??consider serving (an app-specific version of) synapp2.js from php
=compatibility
#mysql 3.23.58
-mysql 4
-mysql 5
#php 4
-php 4.1
-php 5
testing
unit
regression
distributable test scripts/suite
diagnostics
#js wrapper function getContainerById(id) -> present diagnostic message if id not found
bug/feature tracking database
issues
=input form with only textarea and/or select element(s) does not capture container focus or keyboard [arrow] events properly (2010-10-05), fixed (2010-10-07)
-multiple keyboard (submit) events cause AJAX request collisions (i.e. more than 1 request gets generated), probably fixed (0.1.7)
=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 did not 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 does not 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), Fixed (1.8.0beta_2b)
=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), Fixed (1.8.0beta_2b)
=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 does not map to the id registered for the qid arg (2009-09-14), probably fixed (0.1.7)
=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)