* we need to be able to notify other frames in the system.
frame_register
). Each piece is called a frame.* Most common use case is for defining UI hierarchy and embedding apps so that each app can be inserted/removed from the hierarchy independent of the others.
* Also used for Machine Experience builder content generationmatches (serialized version from the url)
params (environment info such as fullPath, path, currentUrlMatchedAgainst, etc.)* nested and heierachial definition of URI schemes to frame components (calcNav, etc)
* Communication between these frames (frame_notify, etc.)* info/itemId/children will not work without this
modnav
concept* the old system uses framegetnavparams / framegetparams / framegetstate
* the return modtask.params* framegetkey also sets modtask._matches ({"list"","tagselection
1,"offset":0,"limit":50})
* instead we will just use frame_getkey, 'framestate' and will have
fullPath: '/dashboard/list/542147/list'
path: '/tagselection/./offset/./limit/.',params: '',
currentUrlMatchedAgainst: '',matches: { "list"","tagselection
1,"offset":0,"limit":50 },
previous: {},
current: {},next: {},
all: [],currentIndex: 0
* choose names that are easier to use* instead of referencing the modtask.modnav, make the thing available as keys
* this is important for the editor mode because we may recreate or renew the module but not neccessarily recreate the frame.* have something for 'iteration' so that next/last implementations are super easy (check the info/adjust/view)
* Update the state
* Update the URL* notify state change to the correct handler
different between '.' and '.*/' to allow handling children for 'info/
* This is needed to make sure that interactive design is possible. Otherwise when people edit the frame it will get reset and all will be reuined.
* this will make the code simpler and more readable
* With this, we can do a 1 liner pass thru to the upper level
['frame_notify', 'outcome', '..']
* At the lower level we can do
['frame_notify', { succeess: true, ... }]
isolateNav
to have the ability to enable/disable url mode at each level.var modnav = modtask.ldmod('ui/w/shell/navmulti/multi');
modnav.setup(modtask);modnav.enableUrlMode();
which is global. The issues are when someone does 'frame_register', they get put into a hierarchy and from that point on all the url changes will run through them. Need to be able to isolate a frame when we do frame register.