UIZE JavaScript Framework

TO DO - UizeSite.Delve

This is a TO DO document for the UizeSite.Delve module.

1. Stay in Sync

1.1. Detect Reload

Poll to watch the window and detect when the window has been reloaded, and then auto-refresh view.

1.2. Keep in Sync

Poll (or use some other mechanism) to keep DELVE in sync with changing contents in the page being inspected

When rebuilding the tree list, ideally retain the expanded state of nodes in the tree.

2. Bugs / Issues

2.1. Improve Page Widget Detection

currently breaks on some pages because of presence of global variable named page that is not page widget
eg. http://www.webreference.com/js/column5/methods.html

2.2. iPad Issue

DELVE fails during launch on iPad.

3. State Tab

to be an inspector UI, with form elements for viewing and modifying values of state properties
to be wired to observe object's Changed.* event in order to keep values synchronized
yellow fade effect (or equivalent) for highlighting state properties that have recently changed value
link to documentation for every state property (link to class that introduces property)
count of the number of times the value has changed since being watched (good for judging volume of activity)
property name linked to get summary (as with current behavior with state properties table in summary tab)

4. Miscellaneous

wire up a menu for the UIZE logo, as a spillover for more features
for tree list, show total number of items somewhere in UI
write reference documentation

5. Uber Report Improvements

possibly provide percentage results (e.g. % of widgets that are missing all DOM nodes)
possible conclusions section

6. Events Log Improvements

serialize the other properties of the event object
for the source property, make it a linked object (this may mean having to make the log message generator configurable in Uize.Widget.Log.InstanceEvents, and providing some custom handling in DELVE)

7. Features Tab

maintain sort state across rewirings (i.e. sort should be a property)
ability to filter the data in the table (say I only care about instance methods, for example)
link to documentation for every feature

8. Summary Tab

8.1. - have sections be collapsible, with collapsible state remembered across updates

this possibly argues in favor of not rebuilding the entire contents, but only rebuilding the contents for sections, and then showing / hiding sections relevant to the object inspected)
this might be an acceptable vehicle for an animated expand/collapse widget

8.2. - for widgets...

8.2.1. - unaccessed DOM nodes table

DOM nodes whose IDs suggest the nodes belong to the widget, but the node is not in the node cache

9. - issue with serializing children property of widget, because of circular references

add handling for instances of Uize classes to Uize.Json
add handling of DOM objects to Uize.Json

10. History Feature

For object entry, implement history feature...

back
forward
up arrow / down arrow
history droplist
note: in FF, undo and redo provide a kind of history

11. - select widget by clicking on node in page being inspected

11.1. - mouseover nodes of widgets to show info tooltip about node and owner widget

would require wiring mouseover, mouseout, and click events for all nodes of all widgets

12. - ability to spawn multiple DELVE tools inspecting the same document

good for watching events on multiple different objects at the same time, or seeing different tree list contents
automatic expanding of tree list to reveal current widget or module, when tree list is showing all widgets or all modules as a tree
idea (from Jason Li of Zazzle) - ability to e-mail the state of DELVE to someone else, as a way of showing another person what you were seeing. This could involve creating a bookmarklet URL that captures the state of DELVE, such as the object inspected, the active tab, the URL of the page being inspected, etc.

13. New Contents for Tree List

13.1. New Widget Instance Queries

widgets that don't appear to have any HTML (for them, directly, or their children)
only widgets that are wired
widgets that were adopted
widgets for which DOM events have fired?
widgets of a specific class?
widgets whose class inherits from a specific class?

13.2. Module Queries

widget classes that have no subclasses and of which no instances have been created (i.e. they're not abstract / base classes, so it's expected that they might be instantiated at some point)

13.3. DOM node queries

13.3.1. - DOM nodes that have ids, but that don't appear to belong to widget instances

DOM nodes that have not been accessed by any widget, and whose id structure does not appear to fit with any widget on the page
DOM nodes that appear to belong to widgets, but that haven't been accessed by those widgets
DOM nodes that are missing according to a widget's node cache, but are actually present

13.4. Localized String Queries

all localized strings

13.5. Stuff That's Already Interspersed in the Summary Tab Info

children of a specific widget
parent chain for a specific widget
siblings of a specific widget
all subclasses of a specific class