SynApp2 - To Do List
documentation
-introduction
-requirements
-installation
-usage
html/css/js/action/notification/forms/ovl
request/response
schema
customization
limitations
deployment
examples
user guide
reference guide
api reference
wiki
-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
??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
=_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
-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
change tab order
synapp2 tab for nav customization
forms customization
drag drop positions persistence
image background (order form, etc.)
field exclude override
field width override
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
-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
=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
-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?)
float
int
cdata
-text areas
-forms
table
-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
headings
width
expressions
-sort/group/breaks/stats
unique columns (sort/group)
data export
crv
??excel
-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)
processes
setup/customization
implementation
invocation
-customizable page flow
-synapp2 pagegen page improvements
-customizable key naming conventions
-keymap page improvements
drag-n-drop record insert
hotlink image support
??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 textarea field didn't fetch/copy from parent to child (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
Can select/edit row when tform is empty (2008-09-09)
=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 if table has fkey (field) defined for a non-existent table
Pagegen page - poor feedback if template file does not exist (2008-09-22)
=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
=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)
(legend: '=' complete, '-' partial, '*' priority, '??' requirement TBD, '#' no longer applicable or required)