hierarchical inheritance listing

edited September 2013 in Enyo 2
To get a better understanding of the many kind definitions in enyo and onyx I generated this hierarchical inheritance listing for the Enyo 2.2 version. (Not sure this listing is really complete and correct). The onyx kind definitions are prefixed with "onyx." and all other kind definitions are from "enyo".

Layout
Layout -> Arranger
Layout -> Arranger -> CardArranger
Layout -> Arranger -> CarouselArranger
Layout -> Arranger -> CarouselArranger -> CollapsingArranger
Layout -> Arranger -> DockRightArranger
Layout -> Arranger -> GridArranger
Layout -> Arranger -> LeftRightArranger
Layout -> Arranger -> LeftRightArranger -> TopBottomArranger
Layout -> Arranger -> SpiralArranger
Layout -> BaseLayout
Layout -> FittableLayout
Layout -> FittableLayout -> FittableColumnsLayout
Layout -> FittableLayout -> FittableRowsLayout

Object
Object -> Async
Object -> Async -> Ajax
Object -> Async -> JsonpRequest
Object -> Component
Object -> Component -> Animator
Object -> Component -> DragAvatar
Object -> Component -> ScrollMath
Object -> Component -> Selection
Object -> Component -> Signals
Object -> Component -> UiComponent
Object -> Component -> UiComponent -> Control
Object -> Component -> UiComponent -> Control -> FittableColumns
Object -> Component -> UiComponent -> Control -> FittableRows
Object -> Component -> UiComponent -> Control -> FloatingLayer
Object -> Component -> UiComponent -> Control -> FlyweightRepeater
Object -> Component -> UiComponent -> Control -> Group
Object -> Component -> UiComponent -> Control -> Group -> onyx.RadioGroup
Object -> Component -> UiComponent -> Control -> GroupItem
Object -> Component -> UiComponent -> Control -> GroupItem -> ToolDecorator
Object -> Component -> UiComponent -> Control -> GroupItem -> ToolDecorator -> Button
Object -> Component -> UiComponent -> Control -> GroupItem -> ToolDecorator -> Button -> onyx.Button
Object -> Component -> UiComponent -> Control -> GroupItem -> ToolDecorator -> Button -> onyx.Button -> onyx.PickerButton
Object -> Component -> UiComponent -> Control -> GroupItem -> ToolDecorator -> Button -> onyx.MenuItem
Object -> Component -> UiComponent -> Control -> GroupItem -> ToolDecorator -> Button -> onyx.RadioButton
Object -> Component -> UiComponent -> Control -> GroupItem -> ToolDecorator -> onyx.InputDecorator
Object -> Component -> UiComponent -> Control -> Image
Object -> Component -> UiComponent -> Control -> ImageViewPin
Object -> Component -> UiComponent -> Control -> Input
Object -> Component -> UiComponent -> Control -> Input -> Checkbox
Object -> Component -> UiComponent -> Control -> Input -> Checkbox -> onyx.Checkbox
Object -> Component -> UiComponent -> Control -> Input -> RichText
Object -> Component -> UiComponent -> Control -> Input -> RichText -> onyx.RichText
Object -> Component -> UiComponent -> Control -> Input -> TextArea
Object -> Component -> UiComponent -> Control -> Input -> TextArea -> onyx.TextArea
Object -> Component -> UiComponent -> Control -> Input -> onyx.Input
Object -> Component -> UiComponent -> Control -> Node
Object -> Component -> UiComponent -> Control -> Option
Object -> Component -> UiComponent -> Control -> OptionGroup
Object -> Component -> UiComponent -> Control -> OwnerProxy
Object -> Component -> UiComponent -> Control -> Panels
Object -> Component -> UiComponent -> Control -> Panels -> ImageCarousel
Object -> Component -> UiComponent -> Control -> Popup
Object -> Component -> UiComponent -> Control -> Popup -> onyx.ContextualPopup
Object -> Component -> UiComponent -> Control -> Popup -> onyx.Popup
Object -> Component -> UiComponent -> Control -> Popup -> onyx.Popup -> onyx.Menu
Object -> Component -> UiComponent -> Control -> Popup -> onyx.Popup -> onyx.Menu -> onyx.Picker
Object -> Component -> UiComponent -> Control -> Popup -> onyx.Popup -> onyx.Menu -> onyx.Picker -> onyx.FlyweightPicker
Object -> Component -> UiComponent -> Control -> Popup -> onyx.Popup -> onyx.Menu -> onyx.Picker -> onyx.IntegerPicker
Object -> Component -> UiComponent -> Control -> Popup -> onyx.Popup -> onyx.Tooltip
Object -> Component -> UiComponent -> Control -> Puller
Object -> Component -> UiComponent -> Control -> Repeater
Object -> Component -> UiComponent -> Control -> ScrollStrategy
Object -> Component -> UiComponent -> Control -> ScrollStrategy -> TouchScrollStrategy
Object -> Component -> UiComponent -> Control -> ScrollStrategy -> TouchScrollStrategy -> TransitionScrollStrategy
Object -> Component -> UiComponent -> Control -> ScrollStrategy -> TouchScrollStrategy -> TranslateScrollStrategy
Object -> Component -> UiComponent -> Control -> ScrollThumb
Object -> Component -> UiComponent -> Control -> Scroller
Object -> Component -> UiComponent -> Control -> Scroller -> ImageView
Object -> Component -> UiComponent -> Control -> Scroller -> List
Object -> Component -> UiComponent -> Control -> Scroller -> List -> AroundList
Object -> Component -> UiComponent -> Control -> Scroller -> List -> PulldownList
Object -> Component -> UiComponent -> Control -> Select
Object -> Component -> UiComponent -> Control -> Slideable
Object -> Component -> UiComponent -> Control -> onyx.DatePicker
Object -> Component -> UiComponent -> Control -> onyx.Drawer
Object -> Component -> UiComponent -> Control -> onyx.Grabber
Object -> Component -> UiComponent -> Control -> onyx.Groupbox
Object -> Component -> UiComponent -> Control -> onyx.GroupboxHeader
Object -> Component -> UiComponent -> Control -> onyx.Icon
Object -> Component -> UiComponent -> Control -> onyx.Icon -> onyx.IconButton
Object -> Component -> UiComponent -> Control -> onyx.Icon -> onyx.ToggleIconButton
Object -> Component -> UiComponent -> Control -> onyx.Item
Object -> Component -> UiComponent -> Control -> onyx.MoreToolbar
Object -> Component -> UiComponent -> Control -> onyx.ProgressBar
Object -> Component -> UiComponent -> Control -> onyx.ProgressBar -> onyx.ProgressButton
Object -> Component -> UiComponent -> Control -> onyx.ProgressBar -> onyx.RangeSlider
Object -> Component -> UiComponent -> Control -> onyx.ProgressBar -> onyx.Slider
Object -> Component -> UiComponent -> Control -> onyx.RangeSliderKnobLabel
Object -> Component -> UiComponent -> Control -> onyx.Scrim
Object -> Component -> UiComponent -> Control -> onyx.Spinner
Object -> Component -> UiComponent -> Control -> onyx.TimePicker
Object -> Component -> UiComponent -> Control -> onyx.ToggleButton
Object -> Component -> UiComponent -> Control -> onyx.Toolbar
Object -> Component -> UiComponent -> Control -> onyx.TooltipDecorator
Object -> Component -> UiComponent -> Control -> onyx.TooltipDecorator -> onyx.MenuDecorator
Object -> Component -> UiComponent -> Control -> onyx.TooltipDecorator -> onyx.MenuDecorator -> onyx.PickerDecorator
Object -> Component -> _AjaxComponent -> WebService
Some kind definitions are derived from enyo.Layout and all other are derived from enyo.Object.
Majority of the kind definitions are derived from enyo.Control kind which is a kind of enyo.UiComponent.

Comments

  • Meanwhile I have build this small Enyo app
    http://jsfiddle.net/martinh_hp_open/mbGAW/
    to show the inheritance hierarchy tree of Enyo kinds.
    Use Enyo 2.2.0 or the nightly (Enyo 2.3) build to list all kinds in an inheritance tree.
    Expanding to specific level does not work yet. Improvements are welcome.

    Just reading Enyo source files and documentation makes it difficult to understand the inheritance hierarchy of all kinds. With the nightly build this kinds tree provides you a quick overview of the new hierarchy in the coming Enyo 2.3.

    These are some dirty hacks to find all kinds. Also not sure if all kinds are found.
    Each kind provides direct links to it's latest released API and to the API as documented in the nightly.
    Feel free to add any correction and improvement to my fiddle.
    For the future I'd like to see some kind inheritance tree in the API tool itself.
  • These are some very useful tools. Mind if we borrow this work for the documentation pages for our upcoming 2.3 release?
  • Sure - go ahead and use whatever helps. :)

    But let me warn you that my fiddle code contains some ugly hacks to find the inheritance of the Enyo/Onxy kinds (it uses eval() several times and sure it could be done better).
    I just have no good understanding how inheritance is implemented and stored in this Javascript implementation. From my background this was much clearer to me when I coded in Smalltalk.
    And e.g. in the nightly 2.3 Enyo my code does not list all the canvas kinds.
    As of today it only list 28 kinds in total. For Enyo 2.2.0 it lists 105 kinds.
  • We probably have better info in the analyzer used in the doc tool. I'd want to use that as the data source, then put that on display in one of the api tools' tabs.
Sign In or Register to comment.