gridx-rails 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/LICENSE +2 -0
- data/README.md +18 -0
- data/Rakefile +36 -0
- data/app/assets/images/gridx/mobile/themes/iphone/images/ajax-loader.gif +0 -0
- data/app/assets/images/gridx/mobile/themes/iphone/images/arrow.png +0 -0
- data/app/assets/images/gridx/resources/images/checkboxpartial.png +0 -0
- data/app/assets/images/gridx/resources/images/checkboxpartialdisabled.png +0 -0
- data/app/assets/images/gridx/resources/images/claro-grid-header-onepixel.bmp +0 -0
- data/app/assets/images/gridx/resources/images/dndCopy.png +0 -0
- data/app/assets/images/gridx/resources/images/dndMove.png +0 -0
- data/app/assets/images/gridx/resources/images/dndNoCopy.png +0 -0
- data/app/assets/images/gridx/resources/images/dndNoMove.png +0 -0
- data/app/assets/images/gridx/resources/images/gridxCellChanged.png +0 -0
- data/app/assets/images/gridx/resources/images/header.png +0 -0
- data/app/assets/images/gridx/resources/images/header_shadow.png +0 -0
- data/app/assets/images/gridx/resources/images/loadingAnimation.gif +0 -0
- data/app/assets/images/gridx/resources/images/row_back.png +0 -0
- data/app/assets/images/gridx/resources/images/row_back_changed.png +0 -0
- data/app/assets/images/gridx/resources/images/sprite_icons.png +0 -0
- data/app/assets/images/gridx/resources/images/treeExpandImages.png +0 -0
- data/app/assets/images/gridx/resources/images/treeExpand_loading.gif +0 -0
- data/app/assets/javascripts/gridx/Grid.js +224 -0
- data/app/assets/javascripts/gridx/GridCommon.js +52 -0
- data/app/assets/javascripts/gridx/allModules.js +105 -0
- data/app/assets/javascripts/gridx/core/Cell.js +86 -0
- data/app/assets/javascripts/gridx/core/Column.js +183 -0
- data/app/assets/javascripts/gridx/core/Core.js +447 -0
- data/app/assets/javascripts/gridx/core/Row.js +174 -0
- data/app/assets/javascripts/gridx/core/_Module.js +285 -0
- data/app/assets/javascripts/gridx/core/model/Model.js +495 -0
- data/app/assets/javascripts/gridx/core/model/_Extension.js +84 -0
- data/app/assets/javascripts/gridx/core/model/cache/Async.js +469 -0
- data/app/assets/javascripts/gridx/core/model/cache/Sync.js +59 -0
- data/app/assets/javascripts/gridx/core/model/cache/_Cache.js +386 -0
- data/app/assets/javascripts/gridx/core/model/extensions/ClientFilter.js +303 -0
- data/app/assets/javascripts/gridx/core/model/extensions/FormatSort.js +103 -0
- data/app/assets/javascripts/gridx/core/model/extensions/Mark.js +370 -0
- data/app/assets/javascripts/gridx/core/model/extensions/Modify.js +418 -0
- data/app/assets/javascripts/gridx/core/model/extensions/Move.js +429 -0
- data/app/assets/javascripts/gridx/core/model/extensions/Query.js +50 -0
- data/app/assets/javascripts/gridx/core/model/extensions/Sort.js +81 -0
- data/app/assets/javascripts/gridx/core/util.js +13 -0
- data/app/assets/javascripts/gridx/mobile/Grid.js +300 -0
- data/app/assets/javascripts/gridx/mobile/LazyLoad.js +88 -0
- data/app/assets/javascripts/gridx/mobile/PullRefresh.js +117 -0
- data/app/assets/javascripts/gridx/mobile/Sort.js +66 -0
- data/app/assets/javascripts/gridx/mobile/nls/LazyLoad.js +38 -0
- data/app/assets/javascripts/gridx/mobile/nls/PullRefresh.js +39 -0
- data/app/assets/javascripts/gridx/mobile/nls/ar/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/ar/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/ar/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/bg/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/bg/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/bg/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/ca/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/ca/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/ca/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/common.js +37 -0
- data/app/assets/javascripts/gridx/mobile/nls/cs/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/cs/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/cs/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/da/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/da/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/da/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/de/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/de/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/de/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/el/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/el/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/el/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/es/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/es/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/es/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/fi/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/fi/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/fi/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/fr/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/fr/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/fr/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/he/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/he/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/he/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/hr/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/hr/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/hr/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/hu/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/hu/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/hu/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/it/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/it/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/it/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/ja/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/ja/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/ja/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/kk/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/kk/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/kk/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/ko/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/ko/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/ko/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/nb/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/nb/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/nb/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/nl/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/nl/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/nl/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/pl/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/pl/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/pl/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/pt/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/pt/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/pt/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/pt-pt/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/pt-pt/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/pt-pt/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/ro/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/ro/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/ro/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/ru/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/ru/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/ru/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/sk/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/sk/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/sk/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/sl/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/sl/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/sl/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/sv/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/sv/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/sv/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/th/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/th/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/th/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/tr/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/tr/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/tr/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/uk/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/uk/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/uk/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/zh/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/zh/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/zh/common.js +5 -0
- data/app/assets/javascripts/gridx/mobile/nls/zh-tw/LazyLoad.js +6 -0
- data/app/assets/javascripts/gridx/mobile/nls/zh-tw/PullRefresh.js +7 -0
- data/app/assets/javascripts/gridx/mobile/nls/zh-tw/common.js +5 -0
- data/app/assets/javascripts/gridx/modules/AutoScroll.js +100 -0
- data/app/assets/javascripts/gridx/modules/Bar.js +322 -0
- data/app/assets/javascripts/gridx/modules/Body.js +1059 -0
- data/app/assets/javascripts/gridx/modules/CellWidget.js +538 -0
- data/app/assets/javascripts/gridx/modules/ColumnLock.js +254 -0
- data/app/assets/javascripts/gridx/modules/ColumnResizer.js +278 -0
- data/app/assets/javascripts/gridx/modules/ColumnWidth.js +320 -0
- data/app/assets/javascripts/gridx/modules/Dod.js +368 -0
- data/app/assets/javascripts/gridx/modules/Edit.js +1024 -0
- data/app/assets/javascripts/gridx/modules/Filter.js +482 -0
- data/app/assets/javascripts/gridx/modules/Focus.js +439 -0
- data/app/assets/javascripts/gridx/modules/GroupHeader.js +437 -0
- data/app/assets/javascripts/gridx/modules/HLayout.js +139 -0
- data/app/assets/javascripts/gridx/modules/HScroller.js +172 -0
- data/app/assets/javascripts/gridx/modules/Header.js +289 -0
- data/app/assets/javascripts/gridx/modules/HeaderMenu.js +63 -0
- data/app/assets/javascripts/gridx/modules/HeaderRegions.js +201 -0
- data/app/assets/javascripts/gridx/modules/HiddenColumns.js +274 -0
- data/app/assets/javascripts/gridx/modules/IndirectSelect.js +287 -0
- data/app/assets/javascripts/gridx/modules/IndirectSelectColumn.js +277 -0
- data/app/assets/javascripts/gridx/modules/Menu.js +167 -0
- data/app/assets/javascripts/gridx/modules/NavigableCell.js +170 -0
- data/app/assets/javascripts/gridx/modules/NestedSort.js +280 -0
- data/app/assets/javascripts/gridx/modules/PagedBody.js +409 -0
- data/app/assets/javascripts/gridx/modules/Pagination.js +293 -0
- data/app/assets/javascripts/gridx/modules/Persist.js +266 -0
- data/app/assets/javascripts/gridx/modules/Printer.js +49 -0
- data/app/assets/javascripts/gridx/modules/RowHeader.js +412 -0
- data/app/assets/javascripts/gridx/modules/RowLock.js +143 -0
- data/app/assets/javascripts/gridx/modules/SingleSort.js +276 -0
- data/app/assets/javascripts/gridx/modules/SummaryBar.js +33 -0
- data/app/assets/javascripts/gridx/modules/TitleBar.js +51 -0
- data/app/assets/javascripts/gridx/modules/ToolBar.js +55 -0
- data/app/assets/javascripts/gridx/modules/TouchScroll.js +103 -0
- data/app/assets/javascripts/gridx/modules/TouchVScroller.js +89 -0
- data/app/assets/javascripts/gridx/modules/Traverse.js +159 -0
- data/app/assets/javascripts/gridx/modules/Tree.js +646 -0
- data/app/assets/javascripts/gridx/modules/VLayout.js +152 -0
- data/app/assets/javascripts/gridx/modules/VScroller.js +342 -0
- data/app/assets/javascripts/gridx/modules/View.js +540 -0
- data/app/assets/javascripts/gridx/modules/VirtualVScroller.js +445 -0
- data/app/assets/javascripts/gridx/modules/barPlugins/DropDownPager.js +16 -0
- data/app/assets/javascripts/gridx/modules/barPlugins/DropDownSizer.js +16 -0
- data/app/assets/javascripts/gridx/modules/barPlugins/GotoPageButton.js +16 -0
- data/app/assets/javascripts/gridx/modules/barPlugins/LinkPager.js +16 -0
- data/app/assets/javascripts/gridx/modules/barPlugins/LinkSizer.js +16 -0
- data/app/assets/javascripts/gridx/modules/barPlugins/Summary.js +16 -0
- data/app/assets/javascripts/gridx/modules/dnd/Avatar.js +45 -0
- data/app/assets/javascripts/gridx/modules/dnd/Column.js +210 -0
- data/app/assets/javascripts/gridx/modules/dnd/Row.js +286 -0
- data/app/assets/javascripts/gridx/modules/dnd/_Base.js +60 -0
- data/app/assets/javascripts/gridx/modules/dnd/_Dnd.js +371 -0
- data/app/assets/javascripts/gridx/modules/exporter/CSV.js +43 -0
- data/app/assets/javascripts/gridx/modules/exporter/Exporter.js +34 -0
- data/app/assets/javascripts/gridx/modules/exporter/Table.js +42 -0
- data/app/assets/javascripts/gridx/modules/extendedSelect/Cell.js +491 -0
- data/app/assets/javascripts/gridx/modules/extendedSelect/Column.js +290 -0
- data/app/assets/javascripts/gridx/modules/extendedSelect/Row.js +458 -0
- data/app/assets/javascripts/gridx/modules/extendedSelect/_Base.js +244 -0
- data/app/assets/javascripts/gridx/modules/extendedSelect/_RowCellBase.js +35 -0
- data/app/assets/javascripts/gridx/modules/filter/DistinctComboBoxMenu.js +22 -0
- data/app/assets/javascripts/gridx/modules/filter/Filter.js +16 -0
- data/app/assets/javascripts/gridx/modules/filter/FilterBar.js +649 -0
- data/app/assets/javascripts/gridx/modules/filter/FilterConfirmDialog.js +33 -0
- data/app/assets/javascripts/gridx/modules/filter/FilterDialog.js +179 -0
- data/app/assets/javascripts/gridx/modules/filter/FilterPane.js +340 -0
- data/app/assets/javascripts/gridx/modules/filter/FilterTooltip.js +103 -0
- data/app/assets/javascripts/gridx/modules/filter/QuickFilter.js +33 -0
- data/app/assets/javascripts/gridx/modules/move/Column.js +223 -0
- data/app/assets/javascripts/gridx/modules/move/Row.js +154 -0
- data/app/assets/javascripts/gridx/modules/pagination/Pagination.js +16 -0
- data/app/assets/javascripts/gridx/modules/pagination/PaginationBar.js +68 -0
- data/app/assets/javascripts/gridx/modules/pagination/PaginationBarDD.js +40 -0
- data/app/assets/javascripts/gridx/modules/pagination/_PaginationBarBase.js +105 -0
- data/app/assets/javascripts/gridx/modules/select/Cell.js +229 -0
- data/app/assets/javascripts/gridx/modules/select/Column.js +209 -0
- data/app/assets/javascripts/gridx/modules/select/Row.js +302 -0
- data/app/assets/javascripts/gridx/modules/select/_Base.js +99 -0
- data/app/assets/javascripts/gridx/modules/select/_RowCellBase.js +51 -0
- data/app/assets/javascripts/gridx/nls/Body.js +47 -0
- data/app/assets/javascripts/gridx/nls/FilterBar.js +133 -0
- data/app/assets/javascripts/gridx/nls/NestedSort.js +45 -0
- data/app/assets/javascripts/gridx/nls/PaginationBar.js +68 -0
- data/app/assets/javascripts/gridx/nls/QuickFilter.js +40 -0
- data/app/assets/javascripts/gridx/nls/SummaryBar.js +38 -0
- data/app/assets/javascripts/gridx/nls/ar/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/ar/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/ar/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/ar/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/ar/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/ar/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/bg/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/bg/FilterBar.js +88 -0
- data/app/assets/javascripts/gridx/nls/bg/NestedSort.js +12 -0
- data/app/assets/javascripts/gridx/nls/bg/PaginationBar.js +28 -0
- data/app/assets/javascripts/gridx/nls/bg/QuickFilter.js +8 -0
- data/app/assets/javascripts/gridx/nls/bg/SummaryBar.js +6 -0
- data/app/assets/javascripts/gridx/nls/ca/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/ca/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/ca/NestedSort.js +13 -0
- data/app/assets/javascripts/gridx/nls/ca/PaginationBar.js +30 -0
- data/app/assets/javascripts/gridx/nls/ca/QuickFilter.js +9 -0
- data/app/assets/javascripts/gridx/nls/ca/SummaryBar.js +7 -0
- data/app/assets/javascripts/gridx/nls/cs/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/cs/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/cs/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/cs/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/cs/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/cs/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/da/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/da/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/da/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/da/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/da/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/da/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/de/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/de/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/de/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/de/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/de/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/de/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/el/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/el/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/el/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/el/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/el/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/el/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/es/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/es/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/es/NestedSort.js +13 -0
- data/app/assets/javascripts/gridx/nls/es/PaginationBar.js +30 -0
- data/app/assets/javascripts/gridx/nls/es/QuickFilter.js +9 -0
- data/app/assets/javascripts/gridx/nls/es/SummaryBar.js +7 -0
- data/app/assets/javascripts/gridx/nls/fi/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/fi/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/fi/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/fi/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/fi/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/fi/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/fr/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/fr/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/fr/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/fr/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/fr/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/fr/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/he/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/he/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/he/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/he/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/he/QuickFilter.js +6 -0
- data/app/assets/javascripts/gridx/nls/he/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/hr/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/hr/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/hr/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/hr/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/hr/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/hr/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/hu/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/hu/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/hu/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/hu/PaginationBar.js +33 -0
- data/app/assets/javascripts/gridx/nls/hu/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/hu/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/it/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/it/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/it/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/it/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/it/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/it/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/ja/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/ja/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/ja/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/ja/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/ja/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/ja/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/kk/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/kk/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/kk/NestedSort.js +13 -0
- data/app/assets/javascripts/gridx/nls/kk/PaginationBar.js +30 -0
- data/app/assets/javascripts/gridx/nls/kk/QuickFilter.js +9 -0
- data/app/assets/javascripts/gridx/nls/kk/SummaryBar.js +7 -0
- data/app/assets/javascripts/gridx/nls/ko/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/ko/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/ko/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/ko/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/ko/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/ko/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/nb/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/nb/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/nb/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/nb/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/nb/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/nb/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/nl/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/nl/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/nl/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/nl/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/nl/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/nl/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/pl/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/pl/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/pl/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/pl/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/pl/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/pl/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/pt/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/pt/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/pt/NestedSort.js +13 -0
- data/app/assets/javascripts/gridx/nls/pt/PaginationBar.js +30 -0
- data/app/assets/javascripts/gridx/nls/pt/QuickFilter.js +9 -0
- data/app/assets/javascripts/gridx/nls/pt/SummaryBar.js +7 -0
- data/app/assets/javascripts/gridx/nls/pt-br/Body.js +6 -0
- data/app/assets/javascripts/gridx/nls/pt-br/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/pt-br/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/pt-br/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/pt-br/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/pt-br/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/pt-pt/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/pt-pt/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/pt-pt/NestedSort.js +13 -0
- data/app/assets/javascripts/gridx/nls/pt-pt/PaginationBar.js +30 -0
- data/app/assets/javascripts/gridx/nls/pt-pt/QuickFilter.js +9 -0
- data/app/assets/javascripts/gridx/nls/pt-pt/SummaryBar.js +7 -0
- data/app/assets/javascripts/gridx/nls/ro/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/ro/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/ro/NestedSort.js +13 -0
- data/app/assets/javascripts/gridx/nls/ro/PaginationBar.js +30 -0
- data/app/assets/javascripts/gridx/nls/ro/QuickFilter.js +9 -0
- data/app/assets/javascripts/gridx/nls/ro/SummaryBar.js +7 -0
- data/app/assets/javascripts/gridx/nls/ru/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/ru/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/ru/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/ru/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/ru/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/ru/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/sk/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/sk/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/sk/NestedSort.js +13 -0
- data/app/assets/javascripts/gridx/nls/sk/PaginationBar.js +30 -0
- data/app/assets/javascripts/gridx/nls/sk/QuickFilter.js +9 -0
- data/app/assets/javascripts/gridx/nls/sk/SummaryBar.js +7 -0
- data/app/assets/javascripts/gridx/nls/sl/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/sl/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/sl/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/sl/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/sl/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/sl/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/sv/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/sv/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/sv/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/sv/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/sv/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/sv/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/th/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/th/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/th/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/th/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/th/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/th/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/tr/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/tr/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/tr/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/tr/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/tr/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/tr/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/uk/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/uk/FilterBar.js +88 -0
- data/app/assets/javascripts/gridx/nls/uk/NestedSort.js +12 -0
- data/app/assets/javascripts/gridx/nls/uk/PaginationBar.js +28 -0
- data/app/assets/javascripts/gridx/nls/uk/QuickFilter.js +8 -0
- data/app/assets/javascripts/gridx/nls/uk/SummaryBar.js +6 -0
- data/app/assets/javascripts/gridx/nls/zh/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/zh/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/zh/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/zh/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/zh/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/zh/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/nls/zh-tw/Body.js +11 -0
- data/app/assets/javascripts/gridx/nls/zh-tw/FilterBar.js +89 -0
- data/app/assets/javascripts/gridx/nls/zh-tw/NestedSort.js +11 -0
- data/app/assets/javascripts/gridx/nls/zh-tw/PaginationBar.js +34 -0
- data/app/assets/javascripts/gridx/nls/zh-tw/QuickFilter.js +7 -0
- data/app/assets/javascripts/gridx/nls/zh-tw/SummaryBar.js +5 -0
- data/app/assets/javascripts/gridx/support/DropDownPager.js +111 -0
- data/app/assets/javascripts/gridx/support/DropDownSizer.js +112 -0
- data/app/assets/javascripts/gridx/support/GotoPageButton.js +92 -0
- data/app/assets/javascripts/gridx/support/GotoPagePane.js +61 -0
- data/app/assets/javascripts/gridx/support/LinkPager.js +180 -0
- data/app/assets/javascripts/gridx/support/LinkSizer.js +138 -0
- data/app/assets/javascripts/gridx/support/QuickFilter.js +138 -0
- data/app/assets/javascripts/gridx/support/Summary.js +49 -0
- data/app/assets/javascripts/gridx/support/_LinkPageBase.js +92 -0
- data/app/assets/javascripts/gridx/support/exporter/exporter.js +350 -0
- data/app/assets/javascripts/gridx/support/exporter/toCSV.js +75 -0
- data/app/assets/javascripts/gridx/support/exporter/toTable.js +92 -0
- data/app/assets/javascripts/gridx/support/menu/AZFilterMenu.js +57 -0
- data/app/assets/javascripts/gridx/support/menu/NumberFilterMenu.js +87 -0
- data/app/assets/javascripts/gridx/support/menu/_FilterMenuBase.js +83 -0
- data/app/assets/javascripts/gridx/support/printer.js +157 -0
- data/app/assets/javascripts/gridx/templates/FilterBar.html +8 -0
- data/app/assets/javascripts/gridx/templates/FilterConfirmDialog.html +5 -0
- data/app/assets/javascripts/gridx/templates/FilterDialog.html +19 -0
- data/app/assets/javascripts/gridx/templates/FilterPane.html +64 -0
- data/app/assets/javascripts/gridx/templates/GotoPagePane.html +28 -0
- data/app/assets/javascripts/gridx/templates/Grid.html +19 -0
- data/app/assets/javascripts/gridx/templates/LinkPager.html +24 -0
- data/app/assets/javascripts/gridx/templates/PaginationBar.html +60 -0
- data/app/assets/javascripts/gridx/templates/PaginationBarDD.html +23 -0
- data/app/assets/javascripts/gridx/templates/QuickFilter.html +38 -0
- data/app/assets/stylesheets/gridx/mobile/themes/iphone/Grid.css +107 -0
- data/app/assets/stylesheets/gridx/resources/Dod.css +39 -0
- data/app/assets/stylesheets/gridx/resources/Gridx.css +10 -0
- data/app/assets/stylesheets/gridx/resources/Gridx_rtl.css +5 -0
- data/app/assets/stylesheets/gridx/resources/Tree.css +46 -0
- data/app/assets/stylesheets/gridx/resources/Tree_rtl.css +4 -0
- data/app/assets/stylesheets/gridx/resources/bar.css +24 -0
- data/app/assets/stylesheets/gridx/resources/basic.css +482 -0
- data/app/assets/stylesheets/gridx/resources/basic_rtl.css +37 -0
- data/app/assets/stylesheets/gridx/resources/claro/Gridx.css +16 -0
- data/app/assets/stylesheets/gridx/resources/claro/Gridx_rtl.css +7 -0
- data/app/assets/stylesheets/gridx/resources/claro/basic.css +109 -0
- data/app/assets/stylesheets/gridx/resources/claro/basic_rtl.css +21 -0
- data/app/assets/stylesheets/gridx/resources/claro/filter.css +47 -0
- data/app/assets/stylesheets/gridx/resources/claro/lock.css +19 -0
- data/app/assets/stylesheets/gridx/resources/claro/pagination.css +33 -0
- data/app/assets/stylesheets/gridx/resources/claro/select.css +20 -0
- data/app/assets/stylesheets/gridx/resources/dnd.css +108 -0
- data/app/assets/stylesheets/gridx/resources/filter.css +321 -0
- data/app/assets/stylesheets/gridx/resources/filter_rtl.css +38 -0
- data/app/assets/stylesheets/gridx/resources/lock.css +20 -0
- data/app/assets/stylesheets/gridx/resources/pagination.css +142 -0
- data/app/assets/stylesheets/gridx/resources/pagination_rtl.css +54 -0
- data/app/assets/stylesheets/gridx/resources/select.css +39 -0
- data/app/assets/stylesheets/gridx/resources/sort.css +154 -0
- data/app/assets/stylesheets/gridx/resources/sort_rtl.css +51 -0
- data/lib/gridx-rails/engine.rb +8 -0
- data/lib/gridx-rails/version.rb +3 -0
- data/lib/gridx-rails.rb +4 -0
- data/lib/tasks/gridx-rails_tasks.rake +52 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +78 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/gridx-rails_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- metadata +621 -0
|
@@ -0,0 +1,646 @@
|
|
|
1
|
+
define([
|
|
2
|
+
"dojo/_base/kernel",
|
|
3
|
+
"dojo/_base/declare",
|
|
4
|
+
"dojo/_base/array",
|
|
5
|
+
"dojo/dom-class",
|
|
6
|
+
"dojo/dom-geometry",
|
|
7
|
+
"dojo/_base/lang",
|
|
8
|
+
"dojo/_base/Deferred",
|
|
9
|
+
"dojo/DeferredList",
|
|
10
|
+
"dojo/query",
|
|
11
|
+
"dojo/keys",
|
|
12
|
+
"../core/_Module"
|
|
13
|
+
// "dojo/NodeList-dom",
|
|
14
|
+
// "dojo/NodeList-traverse"
|
|
15
|
+
], function(kernel, declare, array, domClass, domGeometry, lang, Deferred, DeferredList, query, keys, _Module){
|
|
16
|
+
kernel.experimental('gridx/modules/Tree');
|
|
17
|
+
|
|
18
|
+
/*=====
|
|
19
|
+
Row.canExpand = function(){
|
|
20
|
+
// summary:
|
|
21
|
+
// Whether this row can be expanded.
|
|
22
|
+
// returns:
|
|
23
|
+
// True if can, false if can not.
|
|
24
|
+
};
|
|
25
|
+
Row.isExpanded = function(){
|
|
26
|
+
// summary:
|
|
27
|
+
// Whether this row is expanded.
|
|
28
|
+
// returns:
|
|
29
|
+
// True if expanded. False if not.
|
|
30
|
+
};
|
|
31
|
+
Row.expand = function(){
|
|
32
|
+
// summary:
|
|
33
|
+
// Expand this row.
|
|
34
|
+
// returns:
|
|
35
|
+
// A Deferred object
|
|
36
|
+
};
|
|
37
|
+
Row.collapse = function(){
|
|
38
|
+
// summary:
|
|
39
|
+
// Collapse this row.
|
|
40
|
+
// returns:
|
|
41
|
+
// A Deferred object
|
|
42
|
+
};
|
|
43
|
+
Row.expandRecursive = function(){
|
|
44
|
+
// summary:
|
|
45
|
+
// Recursively expand this row.
|
|
46
|
+
// returns:
|
|
47
|
+
// A Deferred object
|
|
48
|
+
};
|
|
49
|
+
Row.collapseRecursive = function(){
|
|
50
|
+
// summary:
|
|
51
|
+
// Recursively collapse this row.
|
|
52
|
+
// returns:
|
|
53
|
+
// A Deferred object
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
var Tree = declare(_Module, {
|
|
57
|
+
// summary:
|
|
58
|
+
// This module manages row expansion/collapsing in tree grid.
|
|
59
|
+
// description:
|
|
60
|
+
// To use tree grid, the store must have 2 extra methods: hasChildren and getChildren.
|
|
61
|
+
// Please refer to Tree.__TreeStoreMixin for more details on these 2 methods.
|
|
62
|
+
//
|
|
63
|
+
// In tree grid, an expando appears on a row that has child rows. By clicking the expando,
|
|
64
|
+
// the row is expanded to show its child rows below it, and the expando becomes expanded status.
|
|
65
|
+
// By clicking the expanded expando, the expanded row is then collapsed and all its child rows
|
|
66
|
+
// are hidden. If a descentant row of a collapsed row is expanded, it will appear expanded when that
|
|
67
|
+
// collapsed row is expanded (that means the child row expansion status is maintained).
|
|
68
|
+
//
|
|
69
|
+
// Different levels of expandos can either appear in one column or in several different columns.
|
|
70
|
+
// If different expandos appear in different columns, it is called "nested". This can be set using
|
|
71
|
+
// the "nested" Boolean parameter.
|
|
72
|
+
//
|
|
73
|
+
// The default position of the expando is in the first column, but this position can also be changed
|
|
74
|
+
// by setting the "expandLevel" parameter in column definition. If "nested" is false, the expandos will
|
|
75
|
+
// appear in the first column with truthy "expandLevel" parameter. If "nested" is true, the expando
|
|
76
|
+
// of any 1st level row will be shown in the column with "expandLevel" equal to 1, and the expando of
|
|
77
|
+
// any 2nd level row will be shown in the column width "expandLevel" equal to 2, and so on.
|
|
78
|
+
//
|
|
79
|
+
// The expansion/collapsing of a row can also be controlled by keyboard when the focus is on the cell
|
|
80
|
+
// with the expando. CTRL+RIGHT_ARROW to expand and CTRL+LEFT_ARROW to collapse. If in RTL mode, the ARROW
|
|
81
|
+
// keys are reversed.
|
|
82
|
+
// example:
|
|
83
|
+
// Define the hasChildren and getChildren methods for store (suppose the "children" field contains the child rows):
|
|
84
|
+
// If the store is ItemFileReadStore:
|
|
85
|
+
// | store.hasChildren = function(id, item){
|
|
86
|
+
// | return item && store.getValues(item, 'children').length;
|
|
87
|
+
// | };
|
|
88
|
+
// | store.getChildren = function(item){
|
|
89
|
+
// | return store.getValues(item, 'children');
|
|
90
|
+
// | };
|
|
91
|
+
// If the store is Memory store:
|
|
92
|
+
// | store.hasChildren = function(id, item){
|
|
93
|
+
// | return item && item.children && item.children.length;
|
|
94
|
+
// | };
|
|
95
|
+
// | store.getChildren = function(item){
|
|
96
|
+
// | return item.children;
|
|
97
|
+
// | };
|
|
98
|
+
// If the child rows need to be fetched from server side:
|
|
99
|
+
// | store.hasChildren = function(id, item){
|
|
100
|
+
// | return item&& item.children; //This children field only indicates whether the row has children.
|
|
101
|
+
// | };
|
|
102
|
+
// | store.getChildren = function(item){
|
|
103
|
+
// | var d = new Deferred();
|
|
104
|
+
// | var children = [];
|
|
105
|
+
// | dojo.request(...).then(function(){
|
|
106
|
+
// | //get the child rows here and populate them into an array.
|
|
107
|
+
// | d.callback(children);
|
|
108
|
+
// | });
|
|
109
|
+
// | return d;
|
|
110
|
+
// | };
|
|
111
|
+
|
|
112
|
+
// nested: Boolean
|
|
113
|
+
// If set to true, the tree nodes can be shown in nested mode.
|
|
114
|
+
nested: false,
|
|
115
|
+
|
|
116
|
+
// expandoPadding: Integer
|
|
117
|
+
// The padding added for each level of expando. Unit is pixel. Default to 18.
|
|
118
|
+
expandoPadding: 18,
|
|
119
|
+
|
|
120
|
+
// expandLevel: Integer
|
|
121
|
+
// The maximum allowed expand level of this tree grid.
|
|
122
|
+
// If less than 1, then this is not a tree grid at all.
|
|
123
|
+
expandLevel: 1 / 0,
|
|
124
|
+
|
|
125
|
+
// clearOnSetStore: Boolean
|
|
126
|
+
// Whether to clear all the recorded expansion info after setStore.
|
|
127
|
+
clearOnSetStore: true,
|
|
128
|
+
|
|
129
|
+
onExpand: function(id){
|
|
130
|
+
// summary:
|
|
131
|
+
// Fired when a row is expanded.
|
|
132
|
+
// tags:
|
|
133
|
+
// callback
|
|
134
|
+
// id: String
|
|
135
|
+
// The ID of the expanded row
|
|
136
|
+
},
|
|
137
|
+
|
|
138
|
+
onCollapse: function(id){
|
|
139
|
+
// summary:
|
|
140
|
+
// Fired when a row is collapsed.
|
|
141
|
+
// tags:
|
|
142
|
+
// callback
|
|
143
|
+
// id: String
|
|
144
|
+
// The ID of the collapsed row.
|
|
145
|
+
},
|
|
146
|
+
|
|
147
|
+
canExpand: function(id){
|
|
148
|
+
// summary:
|
|
149
|
+
// Check whether a row can be expanded.
|
|
150
|
+
// id: String
|
|
151
|
+
// The row ID
|
|
152
|
+
// returns:
|
|
153
|
+
// Whether the row can be expanded.
|
|
154
|
+
},
|
|
155
|
+
|
|
156
|
+
isExpanded: function(id){
|
|
157
|
+
// summary:
|
|
158
|
+
// Check whether a row is already expanded.
|
|
159
|
+
// id: String
|
|
160
|
+
// The row ID
|
|
161
|
+
// returns:
|
|
162
|
+
// Whether the row is expanded.
|
|
163
|
+
},
|
|
164
|
+
|
|
165
|
+
isPaddingCell: function(rowId, columnId){
|
|
166
|
+
// summary:
|
|
167
|
+
// Check wheter a cell is padding cell. Only meaningful in "nested" tree grid.
|
|
168
|
+
// By default, in "nested" tree grid, the cells before the current expando cell are all padding cells.
|
|
169
|
+
// A padding cell is an empty cell, nothing is shown in the cell, decorator and formatter functions
|
|
170
|
+
// are not called on it either.
|
|
171
|
+
// rowId: String|Number
|
|
172
|
+
// The row ID of the cell
|
|
173
|
+
// columnId: String|Number
|
|
174
|
+
// The column ID of the cell
|
|
175
|
+
},
|
|
176
|
+
|
|
177
|
+
expand: function(id, skipUpdateBody){
|
|
178
|
+
// summary:
|
|
179
|
+
// Expand the row.
|
|
180
|
+
// id: String
|
|
181
|
+
// The row ID
|
|
182
|
+
// skipUpdateBody: Boolean
|
|
183
|
+
// If set to true the grid will not automatically refresh itself after this method,
|
|
184
|
+
// so that several grid operations can be executed altogether.
|
|
185
|
+
// returns:
|
|
186
|
+
// A deferred object indicating whether this expanding process has completed.
|
|
187
|
+
},
|
|
188
|
+
|
|
189
|
+
collapse: function(id, skipUpdateBody){
|
|
190
|
+
// summary:
|
|
191
|
+
// Collapse a row.
|
|
192
|
+
// id: String
|
|
193
|
+
// The row ID
|
|
194
|
+
// skipUpdateBody: Boolean
|
|
195
|
+
// If set to true the grid will not automatically refresh itself after this method,
|
|
196
|
+
// so that several grid operations can be executed altogether.
|
|
197
|
+
// returns:
|
|
198
|
+
// A deferred object indicating whether this collapsing process has completed.
|
|
199
|
+
},
|
|
200
|
+
|
|
201
|
+
expandRecursive: function(id, skipUpdateBody){
|
|
202
|
+
// summary:
|
|
203
|
+
// Recursively expand a row and all its descendants.
|
|
204
|
+
// id: String
|
|
205
|
+
// The row ID
|
|
206
|
+
// skipUpdateBody: Boolean
|
|
207
|
+
// If set to true the grid will not automatically refresh itself after this method,
|
|
208
|
+
// so that several grid operations can be executed altogether.
|
|
209
|
+
// returns:
|
|
210
|
+
// A deferred object indicating whether this expanding process has completed.
|
|
211
|
+
},
|
|
212
|
+
|
|
213
|
+
collapseRecursive: function(id, skipUpdateBody){
|
|
214
|
+
// summary:
|
|
215
|
+
// Recursively collapse a row recursively and all its descendants.
|
|
216
|
+
// id: String
|
|
217
|
+
// The row ID
|
|
218
|
+
// skipUpdateBody: Boolean
|
|
219
|
+
// If set to true the grid will not automatically refresh itself after this method,
|
|
220
|
+
// so that several grid operations can be executed altogether.
|
|
221
|
+
// returns:
|
|
222
|
+
// A deferred object indicating whether this collapsing process has completed.
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
Tree.__ColumnDefinition = declare(Column.__ColumnDefinition, {
|
|
227
|
+
// expandLevel: Number
|
|
228
|
+
// If tree grid is "nested", the expando will be shown in the column whose "expandLevel" equals the
|
|
229
|
+
// level of the row. For example, the expando of a root row will be shown in the column whose "expandLevel"
|
|
230
|
+
// equals 1. And the child rows of the root row will show their expando in the column with "expandLevel" equals 2,
|
|
231
|
+
// and so on.
|
|
232
|
+
// If no "expandLevel" is provided for a "nested" tree grid, the first column has "expandLevel" 1, second 2, and so on.
|
|
233
|
+
// If tree grid is not "nested", all the expandos will be shown in the first column with truthy "expandLevel".
|
|
234
|
+
// If no "expandLevel" is provided for a non-nested tree grid, the first column has all the expandos by default.
|
|
235
|
+
expandLevel: 0,
|
|
236
|
+
|
|
237
|
+
// padding: Boolean
|
|
238
|
+
// By default, in "nested" tree grid, the cells before the current expando cell are all padding cells.
|
|
239
|
+
// But if some cell matching this condition should not be padding, then this parameter should be
|
|
240
|
+
// explicitly set to false for the column of this cell.
|
|
241
|
+
padding: undefined
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
Tree.__TreeStoreMixin = declare([], {
|
|
245
|
+
// summary:
|
|
246
|
+
// The extra methods for tree store.
|
|
247
|
+
// description:
|
|
248
|
+
// Since the dojo store does not support tree structure by default, some extra methods should be defined to
|
|
249
|
+
// help grid retrieve the child level items.
|
|
250
|
+
|
|
251
|
+
hasChildren: function(id, item){
|
|
252
|
+
// summary:
|
|
253
|
+
// Check whether a row has child rows. This function should not throw any error.
|
|
254
|
+
// id: String|Number
|
|
255
|
+
// The row ID
|
|
256
|
+
// item: Object
|
|
257
|
+
// The store item
|
|
258
|
+
// returns:
|
|
259
|
+
// True if the given row has children, false otherwise.
|
|
260
|
+
},
|
|
261
|
+
|
|
262
|
+
getChildren: function(item){
|
|
263
|
+
// summary:
|
|
264
|
+
// Get an array of the child items of the given row item.
|
|
265
|
+
// item: Object
|
|
266
|
+
// The store item
|
|
267
|
+
// returns:
|
|
268
|
+
// An array of the child items of the given row item.
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
return Tree;
|
|
273
|
+
=====*/
|
|
274
|
+
|
|
275
|
+
function isExpando(cellNode){
|
|
276
|
+
var n = cellNode.firstChild;
|
|
277
|
+
return n && n.className && domClass.contains(n, 'gridxTreeExpandoCell') &&
|
|
278
|
+
!domClass.contains(n, 'gridxTreeExpandoLoading');
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
return declare(_Module, {
|
|
282
|
+
name: "tree",
|
|
283
|
+
|
|
284
|
+
forced: ['view'],
|
|
285
|
+
|
|
286
|
+
preload: function(){
|
|
287
|
+
var t = this,
|
|
288
|
+
g = t.grid;
|
|
289
|
+
g.domNode.setAttribute('role', 'treegrid');
|
|
290
|
+
t.aspect(g.body, 'collectCellWrapper', '_createCellWrapper');
|
|
291
|
+
t.aspect(g.body, 'onAfterRow', '_onAfterRow');
|
|
292
|
+
t.aspect(g.body, 'onCheckCustomRow', function(row, output){
|
|
293
|
+
if(!t.nested && t.mergedParentRow){
|
|
294
|
+
output[row.id] = row.canExpand();
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
t.aspect(g.body, 'onBuildCustomRow', function(row, output){
|
|
298
|
+
output[row.id] = row.id;
|
|
299
|
+
});
|
|
300
|
+
t.aspect(g, 'onCellClick', '_onCellClick');
|
|
301
|
+
t.aspect(g, 'onRowClick', function(e){
|
|
302
|
+
if(!t.nested && t.mergedParentRow){
|
|
303
|
+
if(t.canExpand(e.rowId)){
|
|
304
|
+
if(t.isExpanded(e.rowId)){
|
|
305
|
+
t.collapse(e.rowId);
|
|
306
|
+
}else{
|
|
307
|
+
t.expand(e.rowId);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
t._initExpandLevel();
|
|
313
|
+
t._initFocus();
|
|
314
|
+
},
|
|
315
|
+
|
|
316
|
+
rowMixin: {
|
|
317
|
+
canExpand: function(){
|
|
318
|
+
return this.grid.tree.canExpand(this.id);
|
|
319
|
+
},
|
|
320
|
+
isExpanded: function(){
|
|
321
|
+
return this.grid.tree.isExpanded(this.id);
|
|
322
|
+
},
|
|
323
|
+
expand: function(){
|
|
324
|
+
return this.grid.tree.expand(this.id);
|
|
325
|
+
},
|
|
326
|
+
collapse: function(){
|
|
327
|
+
return this.grid.tree.collapse(this.id);
|
|
328
|
+
},
|
|
329
|
+
expandRecursive: function(){
|
|
330
|
+
return this.grid.tree.expandRecursive(this.id);
|
|
331
|
+
},
|
|
332
|
+
collapseRecursive: function(){
|
|
333
|
+
return this.grid.tree.collapseRecursive(this.id);
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
|
|
337
|
+
nested: false,
|
|
338
|
+
|
|
339
|
+
expandoWidth: 16,
|
|
340
|
+
|
|
341
|
+
expandoPadding: 18,
|
|
342
|
+
|
|
343
|
+
expandLevel: 1 / 0,
|
|
344
|
+
|
|
345
|
+
clearOnSetStore: true,
|
|
346
|
+
|
|
347
|
+
mergedParentRow: false,
|
|
348
|
+
|
|
349
|
+
onExpand: function(id){},
|
|
350
|
+
|
|
351
|
+
onCollapse: function(id){},
|
|
352
|
+
|
|
353
|
+
canExpand: function(id){
|
|
354
|
+
var t = this,
|
|
355
|
+
m = t.model,
|
|
356
|
+
level = m.treePath(id).length,
|
|
357
|
+
expandLevel = t.arg('expandLevel');
|
|
358
|
+
return m.hasChildren(id) && (!(expandLevel > 0) || level <= expandLevel);
|
|
359
|
+
},
|
|
360
|
+
|
|
361
|
+
isExpanded: function(id){
|
|
362
|
+
return !!this.grid.view._openInfo[id];
|
|
363
|
+
},
|
|
364
|
+
|
|
365
|
+
isPaddingCell: function(rowId, colId){
|
|
366
|
+
var t = this,
|
|
367
|
+
level = t.model.treePath(rowId).length,
|
|
368
|
+
c = t.grid._columnsById[colId];
|
|
369
|
+
if(t.arg('nested') && level > 1 && c.padding !== false){
|
|
370
|
+
for(var i = 0; i < t.grid._columns.length; ++i){
|
|
371
|
+
var col = t.grid._columns[i];
|
|
372
|
+
if(col.expandLevel == level){
|
|
373
|
+
return c.index < col.index;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
return false;
|
|
378
|
+
},
|
|
379
|
+
|
|
380
|
+
expand: function(id, skipUpdateBody){
|
|
381
|
+
var d = new Deferred(),
|
|
382
|
+
t = this;
|
|
383
|
+
if(id && !t.isExpanded(id) && t.canExpand(id)){
|
|
384
|
+
t._beginLoading(id);
|
|
385
|
+
t.grid.view.logicExpand(id).then(function(){
|
|
386
|
+
Deferred.when(t._updateBody(id, skipUpdateBody, true), function(){
|
|
387
|
+
t._endLoading(id);
|
|
388
|
+
d.callback();
|
|
389
|
+
t.onExpand(id);
|
|
390
|
+
});
|
|
391
|
+
});
|
|
392
|
+
}else{
|
|
393
|
+
d.callback();
|
|
394
|
+
}
|
|
395
|
+
return d;
|
|
396
|
+
},
|
|
397
|
+
|
|
398
|
+
collapse: function(id, skipUpdateBody){
|
|
399
|
+
var d = new Deferred(),
|
|
400
|
+
t = this;
|
|
401
|
+
if(id && t.isExpanded(id)){
|
|
402
|
+
t.grid.view.logicCollapse(id);
|
|
403
|
+
Deferred.when(t._updateBody(id, skipUpdateBody), function(){
|
|
404
|
+
d.callback();
|
|
405
|
+
t.onCollapse(id);
|
|
406
|
+
});
|
|
407
|
+
}else{
|
|
408
|
+
d.callback();
|
|
409
|
+
}
|
|
410
|
+
return d;
|
|
411
|
+
},
|
|
412
|
+
|
|
413
|
+
expandRecursive: function(id, skipUpdateBody){
|
|
414
|
+
var t = this,
|
|
415
|
+
m = t.model,
|
|
416
|
+
d = new Deferred();
|
|
417
|
+
t._beginLoading(id);
|
|
418
|
+
t.expand(id, 1).then(function(){
|
|
419
|
+
var i, dl = [], size = m.size(id);
|
|
420
|
+
m.when({start: 0, parentId: id}, function(){
|
|
421
|
+
for(i = 0; i < size; ++i){
|
|
422
|
+
var childId = m.indexToId(i, id);
|
|
423
|
+
dl.push(t.expandRecursive(childId, 1));
|
|
424
|
+
}
|
|
425
|
+
}).then(function(){
|
|
426
|
+
new DeferredList(dl).then(function(){
|
|
427
|
+
Deferred.when(t._updateBody(id, skipUpdateBody), function(){
|
|
428
|
+
t._endLoading(id);
|
|
429
|
+
d.callback();
|
|
430
|
+
});
|
|
431
|
+
});
|
|
432
|
+
});
|
|
433
|
+
});
|
|
434
|
+
return d;
|
|
435
|
+
},
|
|
436
|
+
|
|
437
|
+
collapseRecursive: function(id, skipUpdateBody){
|
|
438
|
+
var d = new Deferred(),
|
|
439
|
+
success = lang.hitch(d, d.callback),
|
|
440
|
+
fail = lang.hitch(d, d.errback),
|
|
441
|
+
t = this,
|
|
442
|
+
view = t.grid.view,
|
|
443
|
+
info = view._openInfo[id || ''],
|
|
444
|
+
i, dl = [];
|
|
445
|
+
if(info){
|
|
446
|
+
for(i = info.openned.length - 1; i >= 0; --i){
|
|
447
|
+
dl.push(t.collapseRecursive(info.openned[i], 1));
|
|
448
|
+
}
|
|
449
|
+
new DeferredList(dl).then(function(){
|
|
450
|
+
if(id){
|
|
451
|
+
t.collapse(id, skipUpdateBody).then(success, fail);
|
|
452
|
+
}else{
|
|
453
|
+
Deferred.when(t._updateBody('', skipUpdateBody), success, fail);
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
}else{
|
|
457
|
+
success();
|
|
458
|
+
}
|
|
459
|
+
return d;
|
|
460
|
+
},
|
|
461
|
+
|
|
462
|
+
//Private-------------------------------------------------------------------------------
|
|
463
|
+
_initExpandLevel: function(){
|
|
464
|
+
var cols = array.filter(this.grid._columns, function(col){
|
|
465
|
+
return !col.ignore;
|
|
466
|
+
});
|
|
467
|
+
if(!array.some(cols, function(col){
|
|
468
|
+
return col.expandLevel;
|
|
469
|
+
})){
|
|
470
|
+
if(this.arg('nested')){
|
|
471
|
+
array.forEach(cols, function(col, i){
|
|
472
|
+
col.expandLevel = i + 1;
|
|
473
|
+
});
|
|
474
|
+
}else if(cols.length){
|
|
475
|
+
cols[0].expandLevel = 1;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
|
|
480
|
+
_createCellWrapper: function(wrappers, rowId, colId){
|
|
481
|
+
var t = this,
|
|
482
|
+
col = t.grid._columnsById[colId];
|
|
483
|
+
if(!col || col.expandLevel){
|
|
484
|
+
var isNested = t.arg('nested'),
|
|
485
|
+
level = t.model.treePath(rowId).length,
|
|
486
|
+
expandLevel = t.arg('expandLevel');
|
|
487
|
+
if((!isNested || (col && col.expandLevel == level)) &&
|
|
488
|
+
(!(expandLevel > 0) || level <= expandLevel + 1)){
|
|
489
|
+
var hasChildren = t.model.hasChildren(rowId),
|
|
490
|
+
isOpen = t.isExpanded(rowId),
|
|
491
|
+
pad = 0,
|
|
492
|
+
expandoWidth = t.arg('expandoWidth'),
|
|
493
|
+
singlePad = t.arg('expandoPadding'),
|
|
494
|
+
ltr = t.grid.isLeftToRight();
|
|
495
|
+
if(!isNested){
|
|
496
|
+
pad = (level - 1) * singlePad;
|
|
497
|
+
}
|
|
498
|
+
if(level == expandLevel + 1){
|
|
499
|
+
//This is one level beyond the last level, there should not be expando
|
|
500
|
+
if(isNested){
|
|
501
|
+
//If nested, no indent needed
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
//If not nested, this level still needs indent
|
|
505
|
+
hasChildren = false;
|
|
506
|
+
}
|
|
507
|
+
wrappers.push({
|
|
508
|
+
priority: 0,
|
|
509
|
+
wrap: function(cellData){
|
|
510
|
+
return ["<div class='gridxTreeExpandoCell ",
|
|
511
|
+
isOpen ? "gridxTreeExpandoCellOpen" : "",
|
|
512
|
+
"' style='padding-", ltr ? 'left' : 'right', ": ", pad + expandoWidth, "px;'>",
|
|
513
|
+
"<div class='gridxTreeExpandoIcon ",
|
|
514
|
+
hasChildren ? '' : 'gridxTreeExpandoIconNoChildren',
|
|
515
|
+
"' ",
|
|
516
|
+
"style='margin-", ltr ? 'left' : 'right', ": ", pad, "px;'>",
|
|
517
|
+
"<div class='gridxTreeExpandoInner'>",
|
|
518
|
+
isOpen ? "-" : "+",
|
|
519
|
+
"</div></div><div class='gridxTreeExpandoContent gridxCellContent'>",
|
|
520
|
+
cellData,
|
|
521
|
+
"</div></div>"
|
|
522
|
+
].join('');
|
|
523
|
+
}
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
},
|
|
528
|
+
|
|
529
|
+
_onCellClick: function(e){
|
|
530
|
+
if(isExpando(e.cellNode)){
|
|
531
|
+
var t = this,
|
|
532
|
+
pos = domGeometry.position(query('.gridxTreeExpandoIcon', e.cellNode)[0]);
|
|
533
|
+
if(e.clientX >= pos.x && e.clientX <= pos.x + pos.w && e.clientY >= pos.y && e.clientY <= pos.y + pos.h){
|
|
534
|
+
if(t.isExpanded(e.rowId)){
|
|
535
|
+
t.collapse(e.rowId);
|
|
536
|
+
}else{
|
|
537
|
+
t.expand(e.rowId);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
},
|
|
542
|
+
|
|
543
|
+
_beginLoading: function(id){
|
|
544
|
+
var rowNode = this.grid.body.getRowNode({rowId: id});
|
|
545
|
+
if(rowNode){
|
|
546
|
+
query('.gridxTreeExpandoCell', rowNode).addClass('gridxTreeExpandoLoading');
|
|
547
|
+
query('.gridxTreeExpandoIcon', rowNode).forEach(function(node){
|
|
548
|
+
node.firstChild.innerHTML = 'o';
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
|
|
553
|
+
_endLoading: function(id){
|
|
554
|
+
var rowNode = this.grid.body.getRowNode({rowId: id}),
|
|
555
|
+
isOpen = this.isExpanded(id);
|
|
556
|
+
if(rowNode){
|
|
557
|
+
var nls = this.grid.body._nls;
|
|
558
|
+
query('.gridxTreeExpandoCell', rowNode).
|
|
559
|
+
removeClass('gridxTreeExpandoLoading').
|
|
560
|
+
toggleClass('gridxTreeExpandoCellOpen', isOpen).
|
|
561
|
+
closest('.gridxCell').
|
|
562
|
+
attr('aria-expanded', String(isOpen)).
|
|
563
|
+
attr('aria-label', isOpen ? nls.treeExpanded : nls.treeCollapsed);
|
|
564
|
+
query('.gridxTreeExpandoIcon', rowNode).forEach(function(node){
|
|
565
|
+
node.firstChild.innerHTML = isOpen ? '-' : '+';
|
|
566
|
+
});
|
|
567
|
+
rowNode.setAttribute('aria-expanded', String(isOpen));
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
|
|
571
|
+
_updateBody: function(id, skip, refreshPartial){
|
|
572
|
+
var t = this,
|
|
573
|
+
view = t.grid.view,
|
|
574
|
+
body = t.grid.body;
|
|
575
|
+
if(!skip){
|
|
576
|
+
var visualIndex = refreshPartial && id ?
|
|
577
|
+
view.getRowInfo({
|
|
578
|
+
rowIndex: t.model.idToIndex(id),
|
|
579
|
+
parentId: t.model.parentId(id)
|
|
580
|
+
}).visualIndex : -1;
|
|
581
|
+
//When collapsing, the row count in current view decrease, if only render partially,
|
|
582
|
+
//it is possible that the vertical scroll bar disappear, then the upper unrendered rows will be lost.
|
|
583
|
+
//So refresh the whole body here to make the upper row also visible.
|
|
584
|
+
//FIXME: need better solution here.
|
|
585
|
+
return body.refresh(refreshPartial && visualIndex + 1);
|
|
586
|
+
}
|
|
587
|
+
return null;
|
|
588
|
+
},
|
|
589
|
+
|
|
590
|
+
_onAfterRow: function(row){
|
|
591
|
+
var hasChildren = this.model.hasChildren(row.id);
|
|
592
|
+
if(hasChildren){
|
|
593
|
+
var rowNode = row.node(),
|
|
594
|
+
expanded = this.isExpanded();
|
|
595
|
+
rowNode.setAttribute('aria-expanded', expanded);
|
|
596
|
+
//This is only to make JAWS readk
|
|
597
|
+
var nls = this.grid.body._nls;
|
|
598
|
+
query('.gridxTreeExpandoCell', rowNode).closest('.gridxCell').
|
|
599
|
+
attr('aria-expanded', String(expanded)).
|
|
600
|
+
attr('aria-label', expanded ? nls.treeExpanded : nls.treeCollapsed);
|
|
601
|
+
}
|
|
602
|
+
},
|
|
603
|
+
|
|
604
|
+
//Focus------------------------------------------------------------------
|
|
605
|
+
_initFocus: function(){
|
|
606
|
+
this.connect(this.grid, 'onCellKeyDown', '_onKey');
|
|
607
|
+
},
|
|
608
|
+
|
|
609
|
+
_onKey: function(e){
|
|
610
|
+
var t = this;
|
|
611
|
+
if(e.keyCode == keys.ESCAPE){
|
|
612
|
+
var m = t.model,
|
|
613
|
+
treePath = m.treePath(e.rowId),
|
|
614
|
+
parentId = treePath.pop(),
|
|
615
|
+
parentLevel = treePath.length,
|
|
616
|
+
grid = t.grid;
|
|
617
|
+
if(parentId){
|
|
618
|
+
var i, col, visualIndex;
|
|
619
|
+
for(i = grid._columns.length - 1; i >= 0; --i){
|
|
620
|
+
col = grid._columns[i];
|
|
621
|
+
if(col.expandLevel && (!t.arg('nested') || col.expandLevel == parentLevel)){
|
|
622
|
+
break;
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
m.when({id: parentId}, function(){
|
|
626
|
+
visualIndex = grid.view.getRowInfo({
|
|
627
|
+
parentId: treePath.pop(),
|
|
628
|
+
rowIndex: m.idToIndex(parentId)
|
|
629
|
+
}).visualIndex;
|
|
630
|
+
}).then(function(){
|
|
631
|
+
grid.vScroller.scrollToRow(visualIndex).then(function(){
|
|
632
|
+
grid.body._focusCell(null, visualIndex, col.index);
|
|
633
|
+
});
|
|
634
|
+
});
|
|
635
|
+
}
|
|
636
|
+
}else if(e.ctrlKey && isExpando(e.cellNode)){
|
|
637
|
+
var ltr = t.grid.isLeftToRight();
|
|
638
|
+
if(e.keyCode == (ltr ? keys.LEFT_ARROW : keys.RIGHT_ARROW) && t.isExpanded(e.rowId)){
|
|
639
|
+
t.collapse(e.rowId);
|
|
640
|
+
}else if(e.keyCode == (ltr ? keys.RIGHT_ARROW : keys.LEFT_ARROW) && !t.isExpanded(e.rowId)){
|
|
641
|
+
t.expand(e.rowId);
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
});
|
|
646
|
+
});
|