FractalPanel
FractalPanel is an extensible dashboard layout system integrated with
FormURLa so the page URL dynamically represents and controls that layout.
Drag and drop operations within and between the panels can create new panels.
Furthermore, a system of knobbies in the corners and around the permitter
of the panes provide per-pane context-sensitive menus and controls. Overall
the system functions as the Tiling Window Manager for the Nooron Collaboratory.
Here is an example of an URL and the resultant layout
/beside(above(a,b),beside(c,d))
+---+---+---+
| a | | |
+---+ c | d |
| b | | |
+---+----+--+
In this example a, b, c and d can be any “FormURLa Function” such as
print(a)
, graph(...)
, chart(...)
, etc where … represents arguments.
Knobbies
Each of the panes is by default provided with ‘knobbies’ around the permitter
such as:
- visualization – offers alternative visualizations for the current data
- voices – provides for selection of discriminators to govern data sourcing
- vantage – provides nameable ‘worldviews’ to govern data display
- action – displays dynamically sourced menu items
- search – searches with the pane
- close – button to close the pane
When clicked each of the knobbies (except the close button) displays a
pluggable panel to act as a visualization to make the choice or perform
the needed action. The visualizations used may themselves be chosen by
the users. This provides for the excitement of (pointless) infinite descent.
Dragging and dropping (Dragon Droppings)
Objects within the visualzations represent semantically addressable entities.
Once dragging of those entities begins then North, South, East and West
‘drop zones’ appear on the edges of all panes which could be split on those
sides to provide new places to display the entity when droppped.
golden_fraction = 61.803
golden_percent = "#{golden_fraction}%"
golden_complement = "#{100 - golden_fraction}%"
direction =
north: 'height'
south: 'height'
east: 'width'
west: 'width'
inside: false
orientation =
north: 'horizontal'
south: 'horizontal'
east: 'vertical'
west: 'vertical'
horizontal: ['north', 'south']
vertical: ['west', 'east']
other =
north: 'south'
south: 'north'
east: 'west'
west: 'east'
div_loc =
north: 'bottom'
south: 'bottom'
east: 'right'
west: 'right'
side_to_seq =
north: 'first'
south: 'second'
east: 'second'
west: 'first'
inside: 'first'
colors = [
"rgba(255, 0, 0, 0.5)"
"rgba(0, 255, 0, 0.5)"
"rgba(0, 0, 255, 0.5)"
"rgba(255, 255, 0, 0.5)"
"rgba(255, 127, 0, 0.5)"
"rgba(127, 0, 127, 0.5)"
]
frac_and_elem_agree = (frac) ->
frac_elem_id = frac.elem.attr('id')
if frac.frac_id isnt frac_elem_id
equality = "#{frac.frac_id} <> #{frac_elem_id}"
console.warn equality
console.warn "frac",frac
debugger