@oat-sa/tao-core-ui 1.60.2 → 1.62.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.
- package/LICENSE +339 -339
- package/README.md +23 -18
- package/dist/actionbar.js +393 -410
- package/dist/adder.js +143 -156
- package/dist/animable/absorbable/absorbable.js +208 -211
- package/dist/animable/absorbable/css/absorb.css +7 -8
- package/dist/animable/absorbable/css/absorb.css.map +1 -1
- package/dist/animable/pulsable/css/pulse.css +7 -7
- package/dist/animable/pulsable/css/pulse.css.map +1 -1
- package/dist/animable/pulsable/pulsable.js +174 -174
- package/dist/areaBroker.js +59 -72
- package/dist/autocomplete/css/autocomplete.css +7 -8
- package/dist/autocomplete/css/autocomplete.css.map +1 -1
- package/dist/autocomplete.js +494 -604
- package/dist/autoscroll.js +23 -25
- package/dist/badge/badge.js +201 -199
- package/dist/badge/css/badge.css +7 -8
- package/dist/badge/css/badge.css.map +1 -1
- package/dist/breadcrumbs/css/breadcrumbs.css +7 -7
- package/dist/breadcrumbs/css/breadcrumbs.css.map +1 -1
- package/dist/breadcrumbs.js +286 -285
- package/dist/btngrouper.js +83 -95
- package/dist/bulkActionPopup/css/bulkActionPopup.css +7 -7
- package/dist/bulkActionPopup/css/bulkActionPopup.css.map +1 -1
- package/dist/bulkActionPopup.js +503 -503
- package/dist/button.js +300 -293
- package/dist/calculator/css/calculator.css +10 -10
- package/dist/calculator/css/calculator.css.map +1 -1
- package/dist/calculator.js +59 -72
- package/dist/cascadingComboBox.js +257 -256
- package/dist/ckeditor/ckConfigurator.js +130 -154
- package/dist/ckeditor/dtdHandler.js +305 -345
- package/dist/class/css/selector.css +7 -7
- package/dist/class/css/selector.css.map +1 -1
- package/dist/class/selector.js +437 -470
- package/dist/component/alignable.js +97 -121
- package/dist/component/containable.js +53 -58
- package/dist/component/css/components.css +7 -7
- package/dist/component/css/components.css.map +1 -1
- package/dist/component/css/windowComponent.css +7 -7
- package/dist/component/css/windowComponent.css.map +1 -1
- package/dist/component/draggable.js +34 -36
- package/dist/component/placeable.js +84 -102
- package/dist/component/resizable.js +79 -89
- package/dist/component/stackable.js +21 -27
- package/dist/component/windowed.js +284 -297
- package/dist/component.js +439 -467
- package/dist/container.js +79 -98
- package/dist/contextualPopup/css/contextualPopup.css +7 -7
- package/dist/contextualPopup/css/contextualPopup.css.map +1 -1
- package/dist/contextualPopup.js +417 -436
- package/dist/dashboard/css/dashboard.css +7 -7
- package/dist/dashboard/css/dashboard.css.map +1 -1
- package/dist/dashboard.js +302 -305
- package/dist/datalist/css/datalist.css +7 -7
- package/dist/datalist/css/datalist.css.map +1 -1
- package/dist/datalist.js +783 -791
- package/dist/datatable/css/datatable.css +11 -7
- package/dist/datatable/css/datatable.css.map +1 -1
- package/dist/datatable/filterStrategy/filterStrategy.js +28 -30
- package/dist/datatable/filterStrategy/multiple.js +26 -45
- package/dist/datatable/filterStrategy/single.js +28 -40
- package/dist/datatable.js +1591 -1616
- package/dist/dateRange/css/dateRange.css +7 -7
- package/dist/dateRange/css/dateRange.css.map +1 -1
- package/dist/dateRange/dateRange.js +398 -412
- package/dist/datetime/css/picker.css +7 -7
- package/dist/datetime/css/picker.css.map +1 -1
- package/dist/datetime/picker.js +670 -703
- package/dist/deleter.js +383 -398
- package/dist/destination/css/selector.css +7 -7
- package/dist/destination/css/selector.css.map +1 -1
- package/dist/destination/selector.js +295 -293
- package/dist/dialog/alert.js +30 -32
- package/dist/dialog/confirm.js +29 -32
- package/dist/dialog/confirmDelete.js +223 -221
- package/dist/dialog.js +651 -695
- package/dist/disabler.js +108 -119
- package/dist/documentViewer/css/documentViewer.css +7 -7
- package/dist/documentViewer/css/documentViewer.css.map +1 -1
- package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +172 -169
- package/dist/documentViewer/providers/pdfViewer/pdfjs/areaBroker.js +32 -29
- package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +523 -564
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +376 -393
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pagesManager.js +53 -68
- package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +517 -567
- package/dist/documentViewer/providers/pdfViewer/pdfjs/textManager.js +73 -96
- package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +381 -392
- package/dist/documentViewer/providers/pdfViewer/pdfjs/wrapper.js +125 -152
- package/dist/documentViewer/providers/pdfViewer.js +189 -191
- package/dist/documentViewer/viewerFactory.js +76 -81
- package/dist/documentViewer.js +303 -311
- package/dist/dropdown/css/dropdown.css +7 -7
- package/dist/dropdown/css/dropdown.css.map +1 -1
- package/dist/dropdown.js +392 -412
- package/dist/durationer.js +77 -85
- package/dist/dynamicComponent/css/dynamicComponent.css +7 -7
- package/dist/dynamicComponent/css/dynamicComponent.css.map +1 -1
- package/dist/dynamicComponent.js +595 -630
- package/dist/feedback.js +365 -375
- package/dist/figure/FigureStateActive.js +246 -296
- package/dist/filesender.js +44 -54
- package/dist/filter.js +244 -240
- package/dist/form/css/dropdownForm.css +7 -7
- package/dist/form/css/dropdownForm.css.map +1 -1
- package/dist/form/css/form.css +7 -7
- package/dist/form/css/form.css.map +1 -1
- package/dist/form/dropdownForm.js +357 -362
- package/dist/form/form.js +703 -984
- package/dist/form/simpleForm.js +74 -77
- package/dist/form/validator/css/validator.css +7 -7
- package/dist/form/validator/css/validator.css.map +1 -1
- package/dist/form/validator/renderer.js +235 -241
- package/dist/form/validator/validator.js +181 -267
- package/dist/form/widget/css/widget.css +7 -7
- package/dist/form/widget/css/widget.css.map +1 -1
- package/dist/form/widget/definitions.js +27 -28
- package/dist/form/widget/loader.js +16 -16
- package/dist/form/widget/providers/checkBox.js +257 -264
- package/dist/form/widget/providers/comboBox.js +194 -193
- package/dist/form/widget/providers/default.js +44 -50
- package/dist/form/widget/providers/hidden.js +179 -176
- package/dist/form/widget/providers/hiddenBox.js +262 -272
- package/dist/form/widget/providers/radioBox.js +222 -223
- package/dist/form/widget/providers/textArea.js +197 -193
- package/dist/form/widget/providers/textBox.js +36 -37
- package/dist/form/widget/widget.js +480 -508
- package/dist/form.js +12 -17
- package/dist/formValidator/formValidator.js +74 -91
- package/dist/formValidator/highlighters/highlighter.js +43 -51
- package/dist/formValidator/highlighters/message.js +31 -32
- package/dist/formValidator/highlighters/tooltip.js +33 -35
- package/dist/generis/form/css/form.css +7 -7
- package/dist/generis/form/css/form.css.map +1 -1
- package/dist/generis/form/form.js +323 -331
- package/dist/generis/validator/css/validator.css +7 -7
- package/dist/generis/validator/css/validator.css.map +1 -1
- package/dist/generis/validator/validator.js +215 -216
- package/dist/generis/widget/checkBox/checkBox.js +227 -225
- package/dist/generis/widget/comboBox/comboBox.js +189 -183
- package/dist/generis/widget/css/widget.css +7 -7
- package/dist/generis/widget/css/widget.css.map +1 -1
- package/dist/generis/widget/hiddenBox/hiddenBox.js +231 -232
- package/dist/generis/widget/loader.js +21 -23
- package/dist/generis/widget/textBox/textBox.js +178 -172
- package/dist/generis/widget/widget.js +255 -266
- package/dist/groupedComboBox.js +231 -226
- package/dist/groupvalidator.js +30 -34
- package/dist/hider.js +43 -50
- package/dist/highlighter.js +946 -1057
- package/dist/image/ImgStateActive/extractLabel.js +20 -21
- package/dist/image/ImgStateActive/helper.js +21 -25
- package/dist/image/ImgStateActive/initHelper.js +133 -162
- package/dist/image/ImgStateActive/initMediaEditor.js +72 -92
- package/dist/image/ImgStateActive/mediaSizer.js +48 -58
- package/dist/image/ImgStateActive.js +185 -215
- package/dist/incrementer.js +91 -110
- package/dist/inplacer.js +108 -132
- package/dist/interactUtils.js +56 -67
- package/dist/itemButtonList/css/item-button-list.css +23 -24
- package/dist/itemButtonList/css/item-button-list.css.map +1 -1
- package/dist/itemButtonList.js +444 -469
- package/dist/keyNavigation/navigableDomElement.js +124 -158
- package/dist/keyNavigation/navigator.js +235 -312
- package/dist/listbox/css/listbox.css +7 -7
- package/dist/listbox/css/listbox.css.map +1 -1
- package/dist/listbox.js +463 -476
- package/dist/liststyler.js +75 -76
- package/dist/loadingButton/css/button.css +7 -7
- package/dist/loadingButton/css/button.css.map +1 -1
- package/dist/loadingButton/loadingButton.js +219 -218
- package/dist/lock.js +484 -509
- package/dist/login/login.js +471 -486
- package/dist/maths/calculator/basicCalculator.js +247 -242
- package/dist/maths/calculator/calculatorComponent.js +34 -36
- package/dist/maths/calculator/core/areaBroker.js +30 -28
- package/dist/maths/calculator/core/board.js +805 -872
- package/dist/maths/calculator/core/expression.js +500 -518
- package/dist/maths/calculator/core/labels.js +240 -235
- package/dist/maths/calculator/core/plugin.js +20 -20
- package/dist/maths/calculator/core/terms.js +27 -27
- package/dist/maths/calculator/core/tokenizer.js +119 -132
- package/dist/maths/calculator/core/tokens.js +157 -168
- package/dist/maths/calculator/css/calculator.css +7 -7
- package/dist/maths/calculator/css/calculator.css.map +1 -1
- package/dist/maths/calculator/defaultCalculator.js +24 -27
- package/dist/maths/calculator/plugins/core/degrad.js +22 -30
- package/dist/maths/calculator/plugins/core/history.js +55 -67
- package/dist/maths/calculator/plugins/core/remind.js +22 -25
- package/dist/maths/calculator/plugins/core/stepNavigation.js +33 -49
- package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +255 -258
- package/dist/maths/calculator/plugins/modifiers/pow10.js +47 -52
- package/dist/maths/calculator/plugins/modifiers/sign.js +103 -130
- package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +288 -293
- package/dist/maths/calculator/pluginsLoader.js +22 -22
- package/dist/maths/calculator/scientificCalculator.js +339 -334
- package/dist/mediaEditor/mediaEditorComponent.js +244 -249
- package/dist/mediaEditor/plugins/mediaAlignment/helper.js +28 -33
- package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +228 -236
- package/dist/mediaEditor/plugins/mediaAlignment/style.css +7 -7
- package/dist/mediaEditor/plugins/mediaDimension/helper.js +81 -106
- package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +597 -635
- package/dist/mediaEditor/plugins/mediaDimension/style.css +141 -141
- package/dist/mediaplayer/css/player.css +7 -7
- package/dist/mediaplayer/css/player.css.map +1 -1
- package/dist/mediaplayer/players/html5.js +646 -706
- package/dist/mediaplayer/players/youtube.js +393 -438
- package/dist/mediaplayer/players.js +19 -19
- package/dist/mediaplayer/support.js +66 -79
- package/dist/mediaplayer/utils/reminder.js +117 -128
- package/dist/mediaplayer/utils/timeObserver.js +106 -109
- package/dist/mediaplayer/youtubeManager.js +142 -170
- package/dist/mediaplayer.js +1484 -1774
- package/dist/mediasizer.js +633 -676
- package/dist/modal.js +137 -153
- package/dist/movableComponent.js +37 -37
- package/dist/pageSizeSelector.js +231 -224
- package/dist/pageStatus.js +43 -46
- package/dist/pagination/css/pagination.css +7 -7
- package/dist/pagination/css/pagination.css.map +1 -1
- package/dist/pagination/paginationStrategy.js +24 -25
- package/dist/pagination/providers/pages.js +281 -291
- package/dist/pagination/providers/simple.js +202 -196
- package/dist/pagination.js +49 -72
- package/dist/previewer.js +113 -138
- package/dist/progressbar.js +70 -80
- package/dist/propertySelector/css/propertySelector.css +74 -0
- package/dist/propertySelector/css/propertySelector.css.map +1 -0
- package/dist/propertySelector/propertySelector.js +489 -0
- package/dist/report.js +356 -359
- package/dist/resource/css/selector.css +7 -7
- package/dist/resource/css/selector.css.map +1 -1
- package/dist/resource/filters.js +275 -289
- package/dist/resource/list.js +1589 -1371
- package/dist/resource/selectable.js +101 -136
- package/dist/resource/selector.js +855 -914
- package/dist/resource/tree.js +1796 -1612
- package/dist/resourcemgr/css/resourcemgr.css +7 -7
- package/dist/resourcemgr/css/resourcemgr.css.map +1 -1
- package/dist/resourcemgr/fileBrowser.js +540 -587
- package/dist/resourcemgr/filePreview.js +16 -25
- package/dist/resourcemgr/fileSelector.js +520 -547
- package/dist/resourcemgr/util/updatePermissions.js +10 -18
- package/dist/resourcemgr.js +325 -332
- package/dist/scroller.js +29 -33
- package/dist/searchModal/advancedSearch.js +949 -833
- package/dist/searchModal/css/advancedSearch.css +7 -14
- package/dist/searchModal/css/advancedSearch.css.map +1 -1
- package/dist/searchModal/css/searchModal.css +28 -8
- package/dist/searchModal/css/searchModal.css.map +1 -1
- package/dist/searchModal.js +616 -335
- package/dist/selecter.js +21 -28
- package/dist/stacker.js +52 -60
- package/dist/switch/css/switch.css +7 -7
- package/dist/switch/css/switch.css.map +1 -1
- package/dist/switch/switch.js +305 -311
- package/dist/tableModel.js +39 -49
- package/dist/tabs/css/tabs.css +12 -12
- package/dist/tabs/css/tabs.css.map +1 -1
- package/dist/tabs.js +588 -639
- package/dist/taskQueue/css/taskQueue.css +7 -7
- package/dist/taskQueue/css/taskQueue.css.map +1 -1
- package/dist/taskQueue/status.js +317 -322
- package/dist/taskQueue/table.js +383 -394
- package/dist/taskQueue/taskQueue.js +19 -19
- package/dist/taskQueue/taskQueueModel.js +459 -538
- package/dist/taskQueue.js +49 -67
- package/dist/taskQueueButton/css/taskable.css +7 -7
- package/dist/taskQueueButton/css/taskable.css.map +1 -1
- package/dist/taskQueueButton/css/treeButton.css +7 -7
- package/dist/taskQueueButton/css/treeButton.css.map +1 -1
- package/dist/taskQueueButton/standardButton.js +45 -43
- package/dist/taskQueueButton/taskable.js +267 -272
- package/dist/taskQueueButton/treeButton.js +200 -198
- package/dist/themeLoader.js +109 -129
- package/dist/themes.js +86 -100
- package/dist/toggler.js +76 -88
- package/dist/tooltip.js +296 -311
- package/dist/tooltipster.js +17 -17
- package/dist/transformer.js +140 -169
- package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css +7 -7
- package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -1
- package/dist/tristateCheckboxGroup.js +319 -325
- package/dist/uploader.js +691 -724
- package/dist/validator/Report.js +1 -2
- package/dist/validator/Validator.js +6 -25
- package/dist/validator/validators.js +66 -80
- package/dist/validator.js +218 -254
- package/dist/waitForMedia.js +45 -51
- package/dist/waitingDialog/css/waitingDialog.css +7 -7
- package/dist/waitingDialog/css/waitingDialog.css.map +1 -1
- package/dist/waitingDialog/waitingDialog.js +59 -77
- package/package.json +109 -107
- package/scss/basic.scss +16 -16
- package/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +59 -59
- package/scss/ckeditor/skins/tao/scss/inc/_tao.scss +59 -59
- package/scss/font/tao/tao.svg +234 -234
- package/scss/inc/_base.scss +495 -495
- package/scss/inc/_bootstrap.scss +6 -6
- package/scss/inc/_buttons.scss +114 -114
- package/scss/inc/_colors.scss +93 -88
- package/scss/inc/_feedback.scss +150 -150
- package/scss/inc/_flex-grid.scss +15 -15
- package/scss/inc/_fonts.scss +4 -4
- package/scss/inc/_forms.scss +832 -832
- package/scss/inc/_functions.scss +283 -283
- package/scss/inc/_jquery.nouislider.scss +254 -254
- package/scss/inc/_normalize.scss +528 -528
- package/scss/inc/_report.scss +67 -67
- package/scss/inc/_secondary-properties.scss +89 -89
- package/scss/inc/_select2.scss +634 -634
- package/scss/inc/_toolbars.scss +155 -155
- package/scss/inc/_tooltip.scss +312 -312
- package/scss/inc/_variables.scss +21 -21
- package/scss/inc/base/_highlight.scss +5 -5
- package/scss/inc/base/_list-style.scss +58 -58
- package/scss/inc/base/_svg.scss +3 -3
- package/scss/inc/base/_table.scss +62 -62
- package/scss/inc/fonts/_source-sans-pro.scss +29 -29
- package/scss/inc/fonts/_tao-icon-classes.scss +226 -226
- package/scss/inc/fonts/_tao-icon-def.scss +12 -12
- package/scss/inc/fonts/_tao-icon-vars.scss +240 -240
- package/src/actionbar/tpl/main.tpl +8 -8
- package/src/actionbar.js +251 -251
- package/src/adder.js +250 -250
- package/src/animable/absorbable/absorbable.js +134 -134
- package/src/animable/absorbable/css/absorb.css +7 -8
- package/src/animable/absorbable/css/absorb.css.map +1 -1
- package/src/animable/absorbable/scss/absorb.scss +37 -37
- package/src/animable/pulsable/css/pulse.css +7 -7
- package/src/animable/pulsable/css/pulse.css.map +1 -1
- package/src/animable/pulsable/pulsable.js +90 -90
- package/src/animable/pulsable/scss/pulse.scss +22 -22
- package/src/areaBroker.js +160 -160
- package/src/autocomplete/css/autocomplete.css +7 -8
- package/src/autocomplete/css/autocomplete.css.map +1 -1
- package/src/autocomplete/scss/autocomplete.scss +37 -37
- package/src/autocomplete.js +1029 -1029
- package/src/autoscroll.js +57 -57
- package/src/badge/badge.js +119 -119
- package/src/badge/css/badge.css +7 -8
- package/src/badge/css/badge.css.map +1 -1
- package/src/badge/scss/badge.scss +92 -92
- package/src/badge/tpl/badge.tpl +4 -4
- package/src/breadcrumbs/css/breadcrumbs.css +7 -7
- package/src/breadcrumbs/css/breadcrumbs.css.map +1 -1
- package/src/breadcrumbs/scss/breadcrumbs.scss +52 -52
- package/src/breadcrumbs/tpl/breadcrumbs.tpl +20 -20
- package/src/breadcrumbs.js +99 -99
- package/src/btngrouper.js +213 -213
- package/src/bulkActionPopup/css/bulkActionPopup.css +7 -7
- package/src/bulkActionPopup/css/bulkActionPopup.css.map +1 -1
- package/src/bulkActionPopup/scss/bulkActionPopup.scss +63 -63
- package/src/bulkActionPopup/tpl/layout.tpl +76 -76
- package/src/bulkActionPopup/tpl/select.tpl +8 -8
- package/src/bulkActionPopup.js +274 -274
- package/src/button/tpl/button.tpl +4 -4
- package/src/button.js +135 -135
- package/src/calculator/css/calculator.css +10 -10
- package/src/calculator/css/calculator.css.map +1 -1
- package/src/calculator/scss/calculator.scss +139 -139
- package/src/calculator.js +188 -188
- package/src/cascadingComboBox.js +126 -126
- package/src/ckeditor/ckConfigurator.js +736 -736
- package/src/ckeditor/dtdHandler.js +1030 -1030
- package/src/class/css/selector.css +7 -7
- package/src/class/css/selector.css.map +1 -1
- package/src/class/scss/selector.scss +101 -101
- package/src/class/selector.js +329 -329
- package/src/class/tpl/listItem.tpl +9 -9
- package/src/class/tpl/selector.tpl +10 -10
- package/src/component/alignable.js +274 -274
- package/src/component/containable.js +122 -122
- package/src/component/css/components.css +7 -7
- package/src/component/css/components.css.map +1 -1
- package/src/component/css/windowComponent.css +7 -7
- package/src/component/css/windowComponent.css.map +1 -1
- package/src/component/draggable.js +104 -104
- package/src/component/placeable.js +233 -233
- package/src/component/resizable.js +195 -195
- package/src/component/scss/components.scss +507 -507
- package/src/component/scss/windowComponent.scss +62 -62
- package/src/component/stackable.js +67 -67
- package/src/component/tpl/window.tpl +7 -7
- package/src/component/windowed.js +206 -206
- package/src/component.js +401 -401
- package/src/container.js +200 -200
- package/src/contextualPopup/css/contextualPopup.css +7 -7
- package/src/contextualPopup/css/contextualPopup.css.map +1 -1
- package/src/contextualPopup/scss/contextualPopup.scss +78 -78
- package/src/contextualPopup/tpl/popup.tpl +10 -10
- package/src/contextualPopup.js +297 -297
- package/src/css/basic.css +103 -106
- package/src/css/basic.css.map +1 -1
- package/src/dashboard/css/dashboard.css +7 -7
- package/src/dashboard/css/dashboard.css.map +1 -1
- package/src/dashboard/scss/dashboard.scss +93 -93
- package/src/dashboard/tpl/dashboard.tpl +16 -16
- package/src/dashboard/tpl/dashboardMetricsList.tpl +15 -15
- package/src/dashboard.js +184 -184
- package/src/datalist/css/datalist.css +7 -7
- package/src/datalist/css/datalist.css.map +1 -1
- package/src/datalist/scss/datalist.scss +116 -116
- package/src/datalist/tpl/list.tpl +24 -24
- package/src/datalist/tpl/main.tpl +44 -44
- package/src/datalist.js +500 -500
- package/src/datatable/css/datatable.css +11 -7
- package/src/datatable/css/datatable.css.map +1 -1
- package/src/datatable/filterStrategy/filterStrategy.js +70 -70
- package/src/datatable/filterStrategy/multiple.js +126 -126
- package/src/datatable/filterStrategy/single.js +108 -108
- package/src/datatable/scss/datatable.scss +149 -146
- package/src/datatable/tpl/button.tpl +6 -6
- package/src/datatable/tpl/layout.tpl +158 -158
- package/src/datatable.js +1056 -1056
- package/src/dateRange/css/dateRange.css +7 -7
- package/src/dateRange/css/dateRange.css.map +1 -1
- package/src/dateRange/dateRange.js +341 -341
- package/src/dateRange/scss/dateRange.scss +7 -7
- package/src/dateRange/tpl/select.tpl +18 -18
- package/src/datetime/css/picker.css +7 -7
- package/src/datetime/css/picker.css.map +1 -1
- package/src/datetime/picker.js +576 -576
- package/src/datetime/scss/picker.scss +192 -192
- package/src/datetime/tpl/picker.tpl +18 -18
- package/src/deleter/undo.tpl +6 -6
- package/src/deleter.js +296 -296
- package/src/destination/css/selector.css +7 -7
- package/src/destination/css/selector.css.map +1 -1
- package/src/destination/scss/selector.scss +36 -36
- package/src/destination/selector.js +195 -195
- package/src/destination/tpl/selector.tpl +13 -13
- package/src/dialog/alert.js +70 -70
- package/src/dialog/confirm.js +85 -85
- package/src/dialog/confirmDelete.js +95 -95
- package/src/dialog/tpl/body.tpl +24 -24
- package/src/dialog/tpl/buttons.tpl +6 -6
- package/src/dialog/tpl/checkbox.tpl +5 -5
- package/src/dialog.js +517 -517
- package/src/disabler.js +230 -230
- package/src/documentViewer/css/documentViewer.css +7 -7
- package/src/documentViewer/css/documentViewer.css.map +1 -1
- package/src/documentViewer/providers/pdfViewer/fallback/viewer.js +69 -69
- package/src/documentViewer/providers/pdfViewer/pdfjs/areaBroker.js +41 -41
- package/src/documentViewer/providers/pdfViewer/pdfjs/findBar.js +475 -475
- package/src/documentViewer/providers/pdfViewer/pdfjs/findBar.tpl +20 -20
- package/src/documentViewer/providers/pdfViewer/pdfjs/match.tpl +1 -1
- package/src/documentViewer/providers/pdfViewer/pdfjs/page.tpl +4 -4
- package/src/documentViewer/providers/pdfViewer/pdfjs/pageView.js +318 -318
- package/src/documentViewer/providers/pdfViewer/pdfjs/pagesManager.js +167 -167
- package/src/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +451 -451
- package/src/documentViewer/providers/pdfViewer/pdfjs/textManager.js +252 -252
- package/src/documentViewer/providers/pdfViewer/pdfjs/viewer.js +299 -299
- package/src/documentViewer/providers/pdfViewer/pdfjs/viewer.tpl +16 -16
- package/src/documentViewer/providers/pdfViewer/pdfjs/wrapper.js +351 -351
- package/src/documentViewer/providers/pdfViewer.js +93 -93
- package/src/documentViewer/scss/documentViewer.scss +184 -184
- package/src/documentViewer/viewerFactory.js +191 -191
- package/src/documentViewer.js +238 -238
- package/src/dropdown/css/dropdown.css +7 -7
- package/src/dropdown/css/dropdown.css.map +1 -1
- package/src/dropdown/scss/dropdown.scss +99 -99
- package/src/dropdown/tpl/dropdown.tpl +8 -8
- package/src/dropdown/tpl/list-item.tpl +4 -4
- package/src/dropdown.js +255 -255
- package/src/durationer.js +222 -222
- package/src/dynamicComponent/css/dynamicComponent.css +7 -7
- package/src/dynamicComponent/css/dynamicComponent.css.map +1 -1
- package/src/dynamicComponent/scss/dynamicComponent.scss +98 -98
- package/src/dynamicComponent/tpl/layout.tpl +17 -17
- package/src/dynamicComponent.js +554 -554
- package/src/feedback/feedback.tpl +7 -7
- package/src/feedback.js +295 -295
- package/src/figure/FigureStateActive.js +174 -174
- package/src/filesender.js +114 -114
- package/src/filter/template.tpl +5 -5
- package/src/filter.js +135 -135
- package/src/form/css/dropdownForm.css +7 -7
- package/src/form/css/dropdownForm.css.map +1 -1
- package/src/form/css/form.css +7 -7
- package/src/form/css/form.css.map +1 -1
- package/src/form/dropdownForm.js +281 -281
- package/src/form/form.js +688 -688
- package/src/form/scss/dropdownForm.scss +60 -60
- package/src/form/scss/form.scss +25 -25
- package/src/form/simpleForm.js +125 -125
- package/src/form/tpl/dropdownForm.tpl +4 -4
- package/src/form/tpl/form.tpl +7 -7
- package/src/form/validator/css/validator.css +7 -7
- package/src/form/validator/css/validator.css.map +1 -1
- package/src/form/validator/renderer.js +118 -118
- package/src/form/validator/scss/validator.scss +14 -14
- package/src/form/validator/tpl/message.tpl +1 -1
- package/src/form/validator/tpl/validator.tpl +1 -1
- package/src/form/validator/validator.js +220 -220
- package/src/form/widget/css/widget.css +7 -7
- package/src/form/widget/css/widget.css.map +1 -1
- package/src/form/widget/definitions.js +51 -51
- package/src/form/widget/loader.js +40 -40
- package/src/form/widget/providers/checkBox.js +138 -138
- package/src/form/widget/providers/comboBox.js +63 -63
- package/src/form/widget/providers/default.js +90 -90
- package/src/form/widget/providers/hidden.js +62 -62
- package/src/form/widget/providers/hiddenBox.js +152 -152
- package/src/form/widget/providers/radioBox.js +99 -99
- package/src/form/widget/providers/textArea.js +52 -52
- package/src/form/widget/providers/textBox.js +48 -48
- package/src/form/widget/scss/widget.scss +55 -55
- package/src/form/widget/tpl/checkBox.tpl +25 -25
- package/src/form/widget/tpl/comboBox.tpl +13 -13
- package/src/form/widget/tpl/hidden.tpl +1 -1
- package/src/form/widget/tpl/hiddenBox.tpl +17 -17
- package/src/form/widget/tpl/label.tpl +6 -6
- package/src/form/widget/tpl/radioBox.tpl +25 -25
- package/src/form/widget/tpl/textArea.tpl +8 -8
- package/src/form/widget/tpl/widget.tpl +8 -8
- package/src/form/widget/widget.js +372 -372
- package/src/form.js +53 -53
- package/src/formValidator/formValidator.js +253 -253
- package/src/formValidator/highlighters/highlighter.js +102 -102
- package/src/formValidator/highlighters/message.js +70 -70
- package/src/formValidator/highlighters/tooltip.js +78 -78
- package/src/generis/form/css/form.css +7 -7
- package/src/generis/form/css/form.css.map +1 -1
- package/src/generis/form/form.js +239 -239
- package/src/generis/form/readme.md +70 -70
- package/src/generis/form/scss/form.scss +23 -23
- package/src/generis/form/tpl/form.tpl +16 -16
- package/src/generis/validator/css/validator.css +7 -7
- package/src/generis/validator/css/validator.css.map +1 -1
- package/src/generis/validator/readme.md +46 -46
- package/src/generis/validator/scss/validator.scss +13 -13
- package/src/generis/validator/validator.js +128 -128
- package/src/generis/widget/checkBox/checkBox.js +112 -112
- package/src/generis/widget/checkBox/checkBox.tpl +18 -18
- package/src/generis/widget/comboBox/comboBox.js +67 -67
- package/src/generis/widget/comboBox/comboBox.tpl +12 -12
- package/src/generis/widget/css/widget.css +7 -7
- package/src/generis/widget/css/widget.css.map +1 -1
- package/src/generis/widget/hiddenBox/hiddenBox.js +132 -132
- package/src/generis/widget/hiddenBox/hiddenBox.tpl +16 -16
- package/src/generis/widget/loader.js +49 -49
- package/src/generis/widget/readme.md +59 -59
- package/src/generis/widget/scss/widget.scss +61 -61
- package/src/generis/widget/textBox/textBox.js +65 -65
- package/src/generis/widget/textBox/textBox.tpl +7 -7
- package/src/generis/widget/widget.js +164 -164
- package/src/generis/widget/widget.tpl +5 -5
- package/src/groupedComboBox.js +99 -99
- package/src/groupvalidator.js +84 -84
- package/src/hider.js +88 -88
- package/src/highlighter.js +1166 -1166
- package/src/image/ImgStateActive/extractLabel.js +29 -29
- package/src/image/ImgStateActive/helper.js +36 -36
- package/src/image/ImgStateActive/initHelper.js +137 -137
- package/src/image/ImgStateActive/initMediaEditor.js +92 -92
- package/src/image/ImgStateActive/mediaSizer.js +63 -63
- package/src/image/ImgStateActive.js +115 -115
- package/src/incrementer.js +319 -319
- package/src/inplacer.js +316 -316
- package/src/interactUtils.js +140 -140
- package/src/itemButtonList/css/item-button-list.css +23 -24
- package/src/itemButtonList/css/item-button-list.css.map +1 -1
- package/src/itemButtonList/scss/item-button-list.scss +236 -236
- package/src/itemButtonList/tpl/itemButtonList.tpl +21 -21
- package/src/itemButtonList.js +274 -274
- package/src/keyNavigation/navigableDomElement.js +282 -282
- package/src/keyNavigation/navigator.js +543 -543
- package/src/listbox/css/listbox.css +7 -7
- package/src/listbox/css/listbox.css.map +1 -1
- package/src/listbox/scss/listbox.scss +116 -116
- package/src/listbox/tpl/list.tpl +14 -14
- package/src/listbox/tpl/main.tpl +9 -9
- package/src/listbox.js +251 -251
- package/src/liststyler.js +155 -155
- package/src/loadingButton/css/button.css +7 -7
- package/src/loadingButton/css/button.css.map +1 -1
- package/src/loadingButton/loadingButton.js +110 -110
- package/src/loadingButton/scss/button.scss +41 -41
- package/src/loadingButton/tpl/button.tpl +5 -5
- package/src/lock/lock.tpl +16 -16
- package/src/lock.js +395 -395
- package/src/login/login.js +322 -322
- package/src/login/tpl/login.tpl +29 -29
- package/src/login/tpl/passwordReveal.tpl +7 -7
- package/src/maths/calculator/basicCalculator.js +55 -55
- package/src/maths/calculator/calculatorComponent.js +128 -128
- package/src/maths/calculator/core/areaBroker.js +38 -38
- package/src/maths/calculator/core/board.js +841 -841
- package/src/maths/calculator/core/expression.js +430 -430
- package/src/maths/calculator/core/labels.js +116 -116
- package/src/maths/calculator/core/plugin.js +40 -40
- package/src/maths/calculator/core/terms.js +459 -459
- package/src/maths/calculator/core/tokenizer.js +245 -245
- package/src/maths/calculator/core/tokens.js +178 -178
- package/src/maths/calculator/core/tpl/board.tpl +4 -4
- package/src/maths/calculator/css/calculator.css +7 -7
- package/src/maths/calculator/css/calculator.css.map +1 -1
- package/src/maths/calculator/defaultCalculator.js +66 -66
- package/src/maths/calculator/plugins/core/degrad.js +90 -90
- package/src/maths/calculator/plugins/core/history.js +166 -166
- package/src/maths/calculator/plugins/core/remind.js +96 -96
- package/src/maths/calculator/plugins/core/stepNavigation.js +175 -175
- package/src/maths/calculator/plugins/keyboard/templateKeyboard/defaultTemplate.tpl +36 -36
- package/src/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +91 -91
- package/src/maths/calculator/plugins/modifiers/pow10.js +143 -143
- package/src/maths/calculator/plugins/modifiers/sign.js +339 -339
- package/src/maths/calculator/plugins/screen/simpleScreen/defaultTemplate.tpl +3 -3
- package/src/maths/calculator/plugins/screen/simpleScreen/history.tpl +3 -3
- package/src/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +191 -191
- package/src/maths/calculator/pluginsLoader.js +46 -46
- package/src/maths/calculator/scientificCalculator.js +74 -74
- package/src/maths/calculator/scss/calculator.scss +396 -396
- package/src/maths/calculator/tpl/basicKeyboard.tpl +37 -37
- package/src/maths/calculator/tpl/basicScreen.tpl +2 -2
- package/src/maths/calculator/tpl/scientificKeyboard.tpl +61 -61
- package/src/maths/calculator/tpl/scientificScreen.tpl +3 -3
- package/src/mediaEditor/mediaEditorComponent.js +141 -141
- package/src/mediaEditor/plugins/mediaAlignment/helper.js +62 -62
- package/src/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +99 -99
- package/src/mediaEditor/plugins/mediaAlignment/style.css +7 -7
- package/src/mediaEditor/plugins/mediaAlignment/tpl/mediaAlignment.tpl +25 -25
- package/src/mediaEditor/plugins/mediaDimension/helper.js +189 -189
- package/src/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +561 -561
- package/src/mediaEditor/plugins/mediaDimension/style.css +141 -141
- package/src/mediaEditor/plugins/mediaDimension/tpl/mediaDimension.tpl +55 -55
- package/src/mediaEditor/tpl/editor.tpl +4 -4
- package/src/mediaplayer/css/player.css +7 -7
- package/src/mediaplayer/css/player.css.map +1 -1
- package/src/mediaplayer/players/html5.js +564 -564
- package/src/mediaplayer/players/youtube.js +323 -323
- package/src/mediaplayer/players.js +29 -29
- package/src/mediaplayer/readme.md +305 -305
- package/src/mediaplayer/scss/player.scss +569 -569
- package/src/mediaplayer/support.js +126 -126
- package/src/mediaplayer/tpl/audio.tpl +6 -6
- package/src/mediaplayer/tpl/player.tpl +37 -37
- package/src/mediaplayer/tpl/source.tpl +1 -1
- package/src/mediaplayer/tpl/video.tpl +6 -6
- package/src/mediaplayer/tpl/youtube.tpl +1 -1
- package/src/mediaplayer/utils/reminder.js +184 -184
- package/src/mediaplayer/utils/timeObserver.js +143 -143
- package/src/mediaplayer/youtubeManager.js +161 -161
- package/src/mediaplayer.js +1606 -1606
- package/src/mediasizer/mediasizer.tpl +55 -55
- package/src/mediasizer.js +635 -635
- package/src/modal.js +365 -365
- package/src/movableComponent.js +78 -78
- package/src/pageSizeSelector/tpl/pageSizeSelector.tpl +9 -9
- package/src/pageSizeSelector.js +107 -107
- package/src/pageStatus.js +147 -147
- package/src/pagination/css/pagination.css +7 -7
- package/src/pagination/css/pagination.css.map +1 -1
- package/src/pagination/paginationStrategy.js +53 -53
- package/src/pagination/providers/pages.js +161 -161
- package/src/pagination/providers/simple.js +74 -74
- package/src/pagination/providers/tpl/pages/page.tpl +1 -1
- package/src/pagination/providers/tpl/pages.tpl +8 -8
- package/src/pagination/providers/tpl/simple.tpl +7 -7
- package/src/pagination/scss/pagination.scss +111 -111
- package/src/pagination.js +237 -237
- package/src/previewer.js +300 -300
- package/src/progressbar.js +165 -165
- package/src/propertySelector/css/propertySelector.css +74 -0
- package/src/propertySelector/css/propertySelector.css.map +1 -0
- package/src/propertySelector/propertySelector.js +286 -0
- package/src/propertySelector/scss/propertySelector.scss +66 -0
- package/src/propertySelector/tpl/highlighted-text.tpl +1 -0
- package/src/propertySelector/tpl/property-description.tpl +13 -0
- package/src/propertySelector/tpl/property-selector.tpl +7 -0
- package/src/report/feedback.tpl +11 -11
- package/src/report/layout.tpl +10 -10
- package/src/report.js +184 -184
- package/src/resource/css/selector.css +7 -7
- package/src/resource/css/selector.css.map +1 -1
- package/src/resource/filters.js +208 -208
- package/src/resource/list.js +200 -200
- package/src/resource/scss/_filters.scss +26 -26
- package/src/resource/scss/_resource-list.scss +107 -107
- package/src/resource/scss/_resource-tree.scss +205 -205
- package/src/resource/scss/selector.scss +187 -187
- package/src/resource/selectable.js +322 -322
- package/src/resource/selector.js +871 -871
- package/src/resource/tpl/filters.tpl +2 -2
- package/src/resource/tpl/list.tpl +7 -7
- package/src/resource/tpl/listNode.tpl +4 -4
- package/src/resource/tpl/selector.tpl +46 -46
- package/src/resource/tpl/tree.tpl +4 -4
- package/src/resource/tpl/treeNode.tpl +30 -30
- package/src/resource/tree.js +400 -400
- package/src/resourcemgr/css/resourcemgr.css +7 -7
- package/src/resourcemgr/css/resourcemgr.css.map +1 -1
- package/src/resourcemgr/fileBrowser.js +381 -381
- package/src/resourcemgr/filePreview.js +73 -73
- package/src/resourcemgr/fileSelector.js +348 -348
- package/src/resourcemgr/scss/resourcemgr.scss +254 -254
- package/src/resourcemgr/tpl/fileSelect.tpl +39 -39
- package/src/resourcemgr/tpl/folder.tpl +11 -11
- package/src/resourcemgr/tpl/layout.tpl +84 -84
- package/src/resourcemgr/tpl/rootFolder.tpl +13 -13
- package/src/resourcemgr/util/updatePermissions.js +53 -53
- package/src/resourcemgr.js +216 -216
- package/src/scroller.js +94 -94
- package/src/scss/basic.scss +16 -16
- package/src/searchModal/advancedSearch.js +638 -601
- package/src/searchModal/css/advancedSearch.css +7 -14
- package/src/searchModal/css/advancedSearch.css.map +1 -1
- package/src/searchModal/css/searchModal.css +28 -8
- package/src/searchModal/css/searchModal.css.map +1 -1
- package/src/searchModal/scss/advancedSearch.scss +171 -177
- package/src/searchModal/scss/searchModal.scss +393 -375
- package/src/searchModal/tpl/advanced-search.tpl +9 -9
- package/src/searchModal/tpl/criteria-alias.tpl +1 -0
- package/src/searchModal/tpl/criteria-class-label.tpl +1 -0
- package/src/searchModal/tpl/criteria-label.tpl +1 -0
- package/src/searchModal/tpl/highlighted-text.tpl +1 -0
- package/src/searchModal/tpl/info-message.tpl +3 -3
- package/src/searchModal/tpl/invalid-criteria-warning.tpl +10 -10
- package/src/searchModal/tpl/layout.tpl +27 -25
- package/src/searchModal/tpl/list-checkbox-criterion.tpl +17 -12
- package/src/searchModal/tpl/list-select-criterion.tpl +12 -6
- package/src/searchModal/tpl/property-select-button.tpl +1 -0
- package/src/searchModal/tpl/results-container.tpl +1 -0
- package/src/searchModal/tpl/text-criterion.tpl +11 -6
- package/src/searchModal.js +761 -496
- package/src/selecter.js +43 -43
- package/src/stacker.js +133 -133
- package/src/switch/css/switch.css +7 -7
- package/src/switch/css/switch.css.map +1 -1
- package/src/switch/scss/switch.scss +83 -83
- package/src/switch/switch.js +195 -195
- package/src/switch/tpl/switch.tpl +7 -7
- package/src/tableModel.js +112 -112
- package/src/tabs/css/tabs.css +12 -12
- package/src/tabs/css/tabs.css.map +1 -1
- package/src/tabs/scss/tabs.scss +50 -50
- package/src/tabs/tpl/panel.tpl +3 -3
- package/src/tabs/tpl/tabs.tpl +10 -10
- package/src/tabs.js +528 -528
- package/src/taskQueue/css/taskQueue.css +7 -7
- package/src/taskQueue/css/taskQueue.css.map +1 -1
- package/src/taskQueue/scss/taskQueue.scss +47 -47
- package/src/taskQueue/status.js +228 -228
- package/src/taskQueue/table.js +350 -350
- package/src/taskQueue/taskQueue.js +33 -33
- package/src/taskQueue/taskQueueModel.js +548 -548
- package/src/taskQueue/tpl/statusMessage.tpl +7 -7
- package/src/taskQueue.js +218 -218
- package/src/taskQueueButton/css/taskable.css +7 -7
- package/src/taskQueueButton/css/taskable.css.map +1 -1
- package/src/taskQueueButton/css/treeButton.css +7 -7
- package/src/taskQueueButton/css/treeButton.css.map +1 -1
- package/src/taskQueueButton/scss/taskable.scss +4 -4
- package/src/taskQueueButton/scss/treeButton.scss +34 -34
- package/src/taskQueueButton/standardButton.js +108 -108
- package/src/taskQueueButton/taskable.js +202 -202
- package/src/taskQueueButton/tpl/report.tpl +5 -5
- package/src/taskQueueButton/tpl/treeButton.tpl +6 -6
- package/src/taskQueueButton/treeButton.js +109 -109
- package/src/themeLoader.js +252 -252
- package/src/themes.js +162 -162
- package/src/toggler.js +200 -200
- package/src/tooltip/default.tpl +3 -3
- package/src/tooltip.js +160 -160
- package/src/tooltipster.js +25 -25
- package/src/transformer.js +327 -327
- package/src/tristateCheckboxGroup/css/tristateCheckboxGroup.css +7 -7
- package/src/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -1
- package/src/tristateCheckboxGroup/scss/tristateCheckboxGroup.scss +15 -15
- package/src/tristateCheckboxGroup/tpl/li.tpl +6 -6
- package/src/tristateCheckboxGroup.js +207 -207
- package/src/uploader/fileEntry.tpl +6 -6
- package/src/uploader/uploader.tpl +32 -32
- package/src/uploader.js +594 -594
- package/src/validator/Report.js +10 -10
- package/src/validator/Validator.js +108 -108
- package/src/validator/validators.js +220 -220
- package/src/validator.js +264 -264
- package/src/waitForMedia.js +82 -82
- package/src/waitingDialog/css/waitingDialog.css +7 -7
- package/src/waitingDialog/css/waitingDialog.css.map +1 -1
- package/src/waitingDialog/scss/waitingDialog.scss +34 -34
- package/src/waitingDialog/waitingDialog.js +240 -240
|
@@ -1,993 +1,934 @@
|
|
|
1
1
|
define(['jquery', 'lodash', 'i18n', 'ui/component', 'ui/hider', 'ui/class/selector', 'ui/resource/tree', 'ui/resource/list', 'ui/resource/filters', 'handlebars', 'lib/dompurify/purify', 'css!ui/resource/css/selector.css'], function ($$1, _, __, component, hider, classesSelectorFactory, treeFactory, listFactory, filtersFactory, Handlebars, DOMPurify, selector_css) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* https://github.com/cure53/DOMPurify
|
|
34
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
35
|
-
* to make output safe for template systems
|
|
3
|
+
$$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
|
|
4
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
5
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
6
|
+
component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
|
|
7
|
+
hider = hider && Object.prototype.hasOwnProperty.call(hider, 'default') ? hider['default'] : hider;
|
|
8
|
+
classesSelectorFactory = classesSelectorFactory && Object.prototype.hasOwnProperty.call(classesSelectorFactory, 'default') ? classesSelectorFactory['default'] : classesSelectorFactory;
|
|
9
|
+
treeFactory = treeFactory && Object.prototype.hasOwnProperty.call(treeFactory, 'default') ? treeFactory['default'] : treeFactory;
|
|
10
|
+
listFactory = listFactory && Object.prototype.hasOwnProperty.call(listFactory, 'default') ? listFactory['default'] : listFactory;
|
|
11
|
+
filtersFactory = filtersFactory && Object.prototype.hasOwnProperty.call(filtersFactory, 'default') ? filtersFactory['default'] : filtersFactory;
|
|
12
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
13
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* This program is free software; you can redistribute it and/or
|
|
17
|
+
* modify it under the terms of the GNU General Public License
|
|
18
|
+
* as published by the Free Software Foundation; under version 2
|
|
19
|
+
* of the License (non-upgradable).
|
|
20
|
+
*
|
|
21
|
+
* This program is distributed in the hope that it will be useful,
|
|
22
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
23
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
24
|
+
* GNU General Public License for more details.
|
|
25
|
+
*
|
|
26
|
+
* You should have received a copy of the GNU General Public License
|
|
27
|
+
* along with this program; if not, write to the Free Software
|
|
28
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
29
|
+
*
|
|
30
|
+
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
31
|
+
*
|
|
32
|
+
*
|
|
36
33
|
*/
|
|
34
|
+
function Helpers0 (hb) {
|
|
35
|
+
//register a i18n helper
|
|
36
|
+
hb.registerHelper('__', function (key) {
|
|
37
|
+
return __(key);
|
|
38
|
+
});
|
|
37
39
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
*/
|
|
49
|
-
|
|
50
|
-
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
51
|
-
var fragments = [];
|
|
52
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
53
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
54
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
55
|
-
|
|
56
|
-
_.forIn(arr, function (value, key) {
|
|
57
|
-
var fragment = '';
|
|
40
|
+
/**
|
|
41
|
+
* Register dompurify helper
|
|
42
|
+
*
|
|
43
|
+
* https://github.com/cure53/DOMPurify
|
|
44
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
45
|
+
* to make output safe for template systems
|
|
46
|
+
*/
|
|
47
|
+
hb.registerHelper('dompurify', function (context) {
|
|
48
|
+
return DOMPurify.sanitize(context);
|
|
49
|
+
});
|
|
58
50
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Register join helper
|
|
53
|
+
*
|
|
54
|
+
* Example :
|
|
55
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
56
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
57
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
58
|
+
*/
|
|
59
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
60
|
+
var fragments = [];
|
|
61
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
62
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
63
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
64
|
+
_.forIn(arr, function (value, key) {
|
|
65
|
+
var fragment = '';
|
|
66
|
+
if (value !== null || value !== undefined) {
|
|
67
|
+
if (typeof value === 'boolean') {
|
|
68
|
+
value = value ? 'true' : 'false';
|
|
69
|
+
} else if (typeof value === 'object') {
|
|
70
|
+
value = _.values(value).join(' ');
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
value = '';
|
|
64
74
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
if (keyValueGlue !== undefined) {
|
|
76
|
+
fragment += key + keyValueGlue;
|
|
77
|
+
}
|
|
78
|
+
fragment += wrapper + value + wrapper;
|
|
79
|
+
fragments.push(fragment);
|
|
80
|
+
});
|
|
81
|
+
return fragments.join(fragmentGlue);
|
|
82
|
+
});
|
|
68
83
|
|
|
69
|
-
|
|
70
|
-
|
|
84
|
+
//register a classic "for loop" helper
|
|
85
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
86
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
87
|
+
var ret = '';
|
|
88
|
+
startIndex = parseInt(startIndex);
|
|
89
|
+
stopIndex = parseInt(stopIndex);
|
|
90
|
+
increment = parseInt(increment);
|
|
91
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
92
|
+
ret += options.fn(_.extend({}, this, {
|
|
93
|
+
i: i
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
96
|
+
return ret;
|
|
97
|
+
});
|
|
98
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
99
|
+
if (var1 == var2) {
|
|
100
|
+
return options.fn(this);
|
|
101
|
+
} else {
|
|
102
|
+
return options.inverse(this);
|
|
71
103
|
}
|
|
72
|
-
|
|
73
|
-
fragment += wrapper + value + wrapper;
|
|
74
|
-
fragments.push(fragment);
|
|
75
104
|
});
|
|
76
105
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
106
|
+
// register a "get property" helper
|
|
107
|
+
// it gets the named property from the provided context
|
|
108
|
+
hb.registerHelper('property', function (name, context) {
|
|
109
|
+
return context[name] || '';
|
|
110
|
+
});
|
|
80
111
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
112
|
+
// register an 'includes' helper
|
|
113
|
+
// it checks if value is in array
|
|
114
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
115
|
+
if (_.contains(haystack, needle)) {
|
|
116
|
+
return options.fn(this);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
86
120
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
121
|
+
if (!Helpers0.__initialized) {
|
|
122
|
+
Helpers0(Handlebars);
|
|
123
|
+
Helpers0.__initialized = true;
|
|
124
|
+
}
|
|
125
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
126
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
127
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
128
|
+
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
|
|
129
|
+
|
|
130
|
+
function program1(depth0,data) {
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
return "multiple";
|
|
91
134
|
}
|
|
92
135
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
136
|
+
function program3(depth0,data) {
|
|
137
|
+
|
|
138
|
+
var buffer = "", stack1;
|
|
139
|
+
buffer += "\n <nav class=\"context\">\n <div class=\"class-context\"></div>\n ";
|
|
140
|
+
stack1 = helpers.each.call(depth0, (depth0 && depth0.formats), {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});
|
|
141
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
142
|
+
buffer += "\n </nav>\n ";
|
|
143
|
+
return buffer;
|
|
100
144
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (
|
|
111
|
-
|
|
145
|
+
function program4(depth0,data) {
|
|
146
|
+
|
|
147
|
+
var buffer = "", stack1, helper;
|
|
148
|
+
buffer += "\n <a href=\"#\" data-view-format=\""
|
|
149
|
+
+ escapeExpression(((stack1 = (data == null || data === false ? data : data.key)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
150
|
+
+ "\" ";
|
|
151
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.active), {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
|
|
152
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
153
|
+
buffer += " ";
|
|
154
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.title), {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
|
|
155
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
156
|
+
buffer += "><span class=\"";
|
|
157
|
+
if (helper = helpers.icon) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
158
|
+
else { helper = (depth0 && depth0.icon); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
159
|
+
buffer += escapeExpression(stack1)
|
|
160
|
+
+ "\"></span></a>\n ";
|
|
161
|
+
return buffer;
|
|
162
|
+
}
|
|
163
|
+
function program5(depth0,data) {
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
return "class=\"active\"";
|
|
112
167
|
}
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
if (!Helpers0.__initialized) {
|
|
117
|
-
Helpers0(Handlebars);
|
|
118
|
-
Helpers0.__initialized = true;
|
|
119
|
-
}
|
|
120
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
121
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
122
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
123
|
-
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
|
|
124
|
-
|
|
125
|
-
function program1(depth0,data) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
return "multiple";
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
function program3(depth0,data) {
|
|
132
|
-
|
|
133
|
-
var buffer = "", stack1;
|
|
134
|
-
buffer += "\r\n <nav class=\"context\">\r\n <div class=\"class-context\"></div>\r\n ";
|
|
135
|
-
stack1 = helpers.each.call(depth0, (depth0 && depth0.formats), {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});
|
|
136
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
137
|
-
buffer += "\r\n </nav>\r\n ";
|
|
138
|
-
return buffer;
|
|
139
|
-
}
|
|
140
|
-
function program4(depth0,data) {
|
|
141
|
-
|
|
142
|
-
var buffer = "", stack1, helper;
|
|
143
|
-
buffer += "\r\n <a href=\"#\" data-view-format=\""
|
|
144
|
-
+ escapeExpression(((stack1 = (data == null || data === false ? data : data.key)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
145
|
-
+ "\" ";
|
|
146
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.active), {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
|
|
147
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
148
|
-
buffer += " ";
|
|
149
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.title), {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
|
|
150
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
151
|
-
buffer += "><span class=\"";
|
|
152
|
-
if (helper = helpers.icon) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
153
|
-
else { helper = (depth0 && depth0.icon); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
154
|
-
buffer += escapeExpression(stack1)
|
|
155
|
-
+ "\"></span></a>\r\n ";
|
|
156
|
-
return buffer;
|
|
157
|
-
}
|
|
158
|
-
function program5(depth0,data) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
return "class=\"active\"";
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
function program7(depth0,data) {
|
|
165
|
-
|
|
166
|
-
var buffer = "", stack1, helper;
|
|
167
|
-
buffer += "title=\"";
|
|
168
|
-
if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
169
|
-
else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
170
|
-
buffer += escapeExpression(stack1)
|
|
171
|
-
+ "\"";
|
|
172
|
-
return buffer;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
function program9(depth0,data) {
|
|
176
|
-
|
|
177
|
-
var buffer = "", stack1, helper, options;
|
|
178
|
-
buffer += "\r\n <nav class=\"selection\">\r\n <div class=\"search\">\r\n <input type=\"text\" placeholder=\"";
|
|
179
|
-
if (helper = helpers.searchPlaceholder) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
180
|
-
else { helper = (depth0 && depth0.searchPlaceholder); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
181
|
-
buffer += escapeExpression(stack1)
|
|
182
|
-
+ "\" />\r\n ";
|
|
183
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.filters), {hash:{},inverse:self.noop,fn:self.program(10, program10, data),data:data});
|
|
184
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
185
|
-
buffer += "\r\n </div>\r\n <div class=\"selection-control\">\r\n <a href=\"#\" class=\"selection-toggle ";
|
|
186
|
-
stack1 = helpers.unless.call(depth0, (depth0 && depth0.switchMode), {hash:{},inverse:self.noop,fn:self.program(12, program12, data),data:data});
|
|
187
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
188
|
-
buffer += "\" title=\""
|
|
189
|
-
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Toggle multiple/single selection", options) : helperMissing.call(depth0, "__", "Toggle multiple/single selection", options)))
|
|
190
|
-
+ "\">\r\n <span class=\"icon-multi-select\"></span>\r\n </a>\r\n <label class=\"selection-indicator ";
|
|
191
|
-
stack1 = helpers.unless.call(depth0, (depth0 && depth0.multiple), {hash:{},inverse:self.noop,fn:self.program(12, program12, data),data:data});
|
|
192
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
193
|
-
buffer += "\">\r\n <input type=\"checkbox\">\r\n <span class=\"icon-checkbox\"></span>\r\n </label>\r\n </div>\r\n ";
|
|
194
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.filters), {hash:{},inverse:self.noop,fn:self.program(14, program14, data),data:data});
|
|
195
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
196
|
-
buffer += "\r\n </nav>\r\n ";
|
|
197
|
-
return buffer;
|
|
198
|
-
}
|
|
199
|
-
function program10(depth0,data) {
|
|
200
|
-
|
|
201
|
-
var buffer = "", helper, options;
|
|
202
|
-
buffer += "\r\n <a href=\"#\" class=\"filters-opener\" title=\""
|
|
203
|
-
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Advanced search, add filters", options) : helperMissing.call(depth0, "__", "Advanced search, add filters", options)))
|
|
204
|
-
+ "\"><span class=\"icon-add\"></span></a>\r\n ";
|
|
205
|
-
return buffer;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
function program12(depth0,data) {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
return "hidden";
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
function program14(depth0,data) {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
return "\r\n <div class=\"filters-container folded\"></div>\r\n ";
|
|
218
|
-
}
|
|
219
168
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
return buffer;
|
|
231
|
-
}
|
|
169
|
+
function program7(depth0,data) {
|
|
170
|
+
|
|
171
|
+
var buffer = "", stack1, helper;
|
|
172
|
+
buffer += "title=\"";
|
|
173
|
+
if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
174
|
+
else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
175
|
+
buffer += escapeExpression(stack1)
|
|
176
|
+
+ "\"";
|
|
177
|
+
return buffer;
|
|
178
|
+
}
|
|
232
179
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* This program is free software; you can redistribute it and/or
|
|
259
|
-
* modify it under the terms of the GNU General Public License
|
|
260
|
-
* as published by the Free Software Foundation; under version 2
|
|
261
|
-
* of the License (non-upgradable).
|
|
262
|
-
*
|
|
263
|
-
* This program is distributed in the hope that it will be useful,
|
|
264
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
265
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
266
|
-
* GNU General Public License for more details.
|
|
267
|
-
*
|
|
268
|
-
* You should have received a copy of the GNU General Public License
|
|
269
|
-
* along with this program; if not, write to the Free Software
|
|
270
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
271
|
-
*
|
|
272
|
-
* Copyright (c) 2017-2019 (original work) Open Assessment Technologies SA ;
|
|
273
|
-
*/
|
|
274
|
-
var labelUri = 'http://www.w3.org/2000/01/rdf-schema#label';
|
|
275
|
-
var nodeTypes = {
|
|
276
|
-
instance: 'instance',
|
|
277
|
-
class: 'class'
|
|
278
|
-
};
|
|
279
|
-
var selectionModes = {
|
|
280
|
-
single: 'single',
|
|
281
|
-
multiple: 'multiple',
|
|
282
|
-
both: 'both'
|
|
283
|
-
};
|
|
284
|
-
var selectAllPolicies = {
|
|
285
|
-
all: 'all',
|
|
286
|
-
// should select 100% of the nodes, but currently not implementable due to lazy loading
|
|
287
|
-
loaded: 'loaded',
|
|
288
|
-
// selects all loaded nodes, whether visible or not
|
|
289
|
-
visible: 'visible' // selects only visible nodes
|
|
290
|
-
|
|
291
|
-
};
|
|
292
|
-
var defaultConfig = {
|
|
293
|
-
type: __('resources'),
|
|
294
|
-
noResultsText: _('No resources found'),
|
|
295
|
-
searchPlaceholder: __('Search'),
|
|
296
|
-
icon: 'item',
|
|
297
|
-
selectionMode: selectionModes.single,
|
|
298
|
-
selectClass: false,
|
|
299
|
-
selectAllPolicy: selectAllPolicies.loaded,
|
|
300
|
-
filters: false,
|
|
301
|
-
showContext: true,
|
|
302
|
-
showSelection: true,
|
|
303
|
-
formats: {
|
|
304
|
-
list: {
|
|
305
|
-
icon: 'icon-ul',
|
|
306
|
-
title: __('View resources as a list'),
|
|
307
|
-
componentFactory: listFactory
|
|
308
|
-
},
|
|
309
|
-
tree: {
|
|
310
|
-
icon: 'icon-tree',
|
|
311
|
-
title: __('View resources as a tree'),
|
|
312
|
-
componentFactory: treeFactory,
|
|
313
|
-
active: true
|
|
180
|
+
function program9(depth0,data) {
|
|
181
|
+
|
|
182
|
+
var buffer = "", stack1, helper, options;
|
|
183
|
+
buffer += "\n <nav class=\"selection\">\n <div class=\"search\">\n <input type=\"text\" placeholder=\"";
|
|
184
|
+
if (helper = helpers.searchPlaceholder) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
185
|
+
else { helper = (depth0 && depth0.searchPlaceholder); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
186
|
+
buffer += escapeExpression(stack1)
|
|
187
|
+
+ "\" />\n ";
|
|
188
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.filters), {hash:{},inverse:self.noop,fn:self.program(10, program10, data),data:data});
|
|
189
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
190
|
+
buffer += "\n </div>\n <div class=\"selection-control\">\n <a href=\"#\" class=\"selection-toggle ";
|
|
191
|
+
stack1 = helpers.unless.call(depth0, (depth0 && depth0.switchMode), {hash:{},inverse:self.noop,fn:self.program(12, program12, data),data:data});
|
|
192
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
193
|
+
buffer += "\" title=\""
|
|
194
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Toggle multiple/single selection", options) : helperMissing.call(depth0, "__", "Toggle multiple/single selection", options)))
|
|
195
|
+
+ "\">\n <span class=\"icon-multi-select\"></span>\n </a>\n <label class=\"selection-indicator ";
|
|
196
|
+
stack1 = helpers.unless.call(depth0, (depth0 && depth0.multiple), {hash:{},inverse:self.noop,fn:self.program(12, program12, data),data:data});
|
|
197
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
198
|
+
buffer += "\">\n <input type=\"checkbox\">\n <span class=\"icon-checkbox\"></span>\n </label>\n </div>\n ";
|
|
199
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.filters), {hash:{},inverse:self.noop,fn:self.program(14, program14, data),data:data});
|
|
200
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
201
|
+
buffer += "\n </nav>\n ";
|
|
202
|
+
return buffer;
|
|
314
203
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
*/
|
|
323
|
-
|
|
324
|
-
var filterClasses = function filterClasses(resources) {
|
|
325
|
-
return _(resources).filter({
|
|
326
|
-
type: nodeTypes.class
|
|
327
|
-
}).map(function (resource) {
|
|
328
|
-
var classNode = _.pick(resource, ['uri', 'label', 'state']);
|
|
329
|
-
|
|
330
|
-
if (resource.children) {
|
|
331
|
-
classNode.children = filterClasses(resource.children);
|
|
204
|
+
function program10(depth0,data) {
|
|
205
|
+
|
|
206
|
+
var buffer = "", helper, options;
|
|
207
|
+
buffer += "\n <a href=\"#\" class=\"filters-opener\" title=\""
|
|
208
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Advanced search, add filters", options) : helperMissing.call(depth0, "__", "Advanced search, add filters", options)))
|
|
209
|
+
+ "\"><span class=\"icon-add\"></span></a>\n ";
|
|
210
|
+
return buffer;
|
|
332
211
|
}
|
|
333
212
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
*
|
|
340
|
-
* @param {jQueryElement} $container - where to append the component
|
|
341
|
-
* @param {Object} config - the component config
|
|
342
|
-
* @param {String} config.classUri - the root Class URI
|
|
343
|
-
* @param {Object|[]} [config.classes] - the classes hierarchy for the class selector
|
|
344
|
-
* @param {Object[]} config.formats - the definition of the supported viewer/selector component
|
|
345
|
-
* @param {Object[]} [config.nodes] - the nodes to preload, the format is up to the formatComponent
|
|
346
|
-
* @param {String} [config.icon] - the icon class that represents a resource
|
|
347
|
-
* @param {String} [config.type] - describes the resource type
|
|
348
|
-
* @param {Boolean} [config.selectionMode] - multiple or single selection mode
|
|
349
|
-
* @param {Number} [config.limit = 30] - the default page size for data paging
|
|
350
|
-
* @param {Object|Boolean} [config.filters = false] - false or filters config, see ui/resource/filters
|
|
351
|
-
* @param {Boolean} [config.showContext = true] - show the context bar (class and format switch)
|
|
352
|
-
* @param {Boolean} [config.showSelection = true] - show the selection bar (search, multi switch and select all)
|
|
353
|
-
* @returns {resourceSelector} the component
|
|
354
|
-
*/
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
var resourceSelectorFactory = function resourceSelectorFactory($container, config) {
|
|
358
|
-
var $classContainer;
|
|
359
|
-
var $resultArea;
|
|
360
|
-
var $noResults;
|
|
361
|
-
var $searchField;
|
|
362
|
-
var $viewFormats;
|
|
363
|
-
var $selectNum;
|
|
364
|
-
var $selectCtrl;
|
|
365
|
-
var $selectCtrlLabel;
|
|
366
|
-
var $filterToggle;
|
|
367
|
-
var $filterContainer;
|
|
368
|
-
var $selectionToggle;
|
|
369
|
-
var resourceSelectorApi = {
|
|
370
|
-
/**
|
|
371
|
-
* Empty the selection component
|
|
372
|
-
* @returns {resourceSelector} chains
|
|
373
|
-
* @fires resourceSelector#empty
|
|
374
|
-
*/
|
|
375
|
-
empty: function empty() {
|
|
376
|
-
if (this.is('rendered')) {
|
|
377
|
-
if (this.selectionComponent) {
|
|
378
|
-
this.selectionComponent.destroy();
|
|
379
|
-
this.selectionComponent = null;
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
return this.trigger('empty');
|
|
384
|
-
},
|
|
385
|
-
|
|
386
|
-
/**
|
|
387
|
-
* Reset the selector
|
|
388
|
-
* @returns {resourceSelector} chains
|
|
389
|
-
* @fires resourceSelector#reset
|
|
390
|
-
*/
|
|
391
|
-
reset: function reset() {
|
|
392
|
-
if (this.is('rendered')) {
|
|
393
|
-
this.empty();
|
|
394
|
-
this.searchQuery = {};
|
|
395
|
-
|
|
396
|
-
if (this.config.filters) {
|
|
397
|
-
if (this.filtersComponent) {
|
|
398
|
-
this.filtersComponent.reset();
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
$searchField.val('').attr('title', null).attr('placeholder', this.config.searchPlaceholder);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
return this.trigger('reset');
|
|
406
|
-
},
|
|
407
|
-
|
|
408
|
-
/**
|
|
409
|
-
* Get the selected nodes
|
|
410
|
-
* @returns {Object?} the selection
|
|
411
|
-
*/
|
|
412
|
-
getSelection: function getSelection() {
|
|
413
|
-
if (this.selectionComponent) {
|
|
414
|
-
return this.selectionComponent.getSelection();
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
return null;
|
|
418
|
-
},
|
|
419
|
-
|
|
420
|
-
/**
|
|
421
|
-
* Clear the current selection
|
|
422
|
-
* @returns {resourceSelector} chains
|
|
423
|
-
*/
|
|
424
|
-
clearSelection: function clearSelection() {
|
|
425
|
-
if (this.selectionComponent) {
|
|
426
|
-
this.selectionComponent.clearSelection();
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
return this;
|
|
430
|
-
},
|
|
213
|
+
function program12(depth0,data) {
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
return "hidden";
|
|
217
|
+
}
|
|
431
218
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
setSearchQuery: function setSearchQuery(query) {
|
|
438
|
-
this.searchQuery = {};
|
|
439
|
-
this.searchQuery[labelUri] = '';
|
|
219
|
+
function program14(depth0,data) {
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
return "\n <div class=\"filters-container folded\"></div>\n ";
|
|
223
|
+
}
|
|
440
224
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
225
|
+
function program16(depth0,data) {
|
|
226
|
+
|
|
227
|
+
var buffer = "", stack1, helper, options;
|
|
228
|
+
buffer += "\n <footer>\n <div class=\"get-selection\">\n <span>"
|
|
229
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Selected", options) : helperMissing.call(depth0, "__", "Selected", options)))
|
|
230
|
+
+ " ";
|
|
231
|
+
if (helper = helpers.type) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
232
|
+
else { helper = (depth0 && depth0.type); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
233
|
+
buffer += escapeExpression(stack1)
|
|
234
|
+
+ " : </span><span class=\"selected-num\">0</span>\n </div>\n </footer>\n ";
|
|
235
|
+
return buffer;
|
|
236
|
+
}
|
|
444
237
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
238
|
+
buffer += "<div class=\"resource-selector ";
|
|
239
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.multiple), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
240
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
241
|
+
buffer += "\">\n\n ";
|
|
242
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.showContext), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
|
|
243
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
244
|
+
buffer += "\n\n ";
|
|
245
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.showSelection), {hash:{},inverse:self.noop,fn:self.program(9, program9, data),data:data});
|
|
246
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
247
|
+
buffer += "\n\n <main>\n <span class=\"hidden no-results\">";
|
|
248
|
+
if (helper = helpers.noResultsText) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
249
|
+
else { helper = (depth0 && depth0.noResultsText); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
250
|
+
buffer += escapeExpression(stack1)
|
|
251
|
+
+ "</span>\n </main>\n\n ";
|
|
252
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.multiple), {hash:{},inverse:self.noop,fn:self.program(16, program16, data),data:data});
|
|
253
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
254
|
+
buffer += "\n</div>\n";
|
|
255
|
+
return buffer;
|
|
256
|
+
});
|
|
257
|
+
function selectorTpl(data, options, asString) {
|
|
258
|
+
var html = Template(data, options);
|
|
259
|
+
return (asString || true) ? html : $(html);
|
|
260
|
+
}
|
|
448
261
|
|
|
449
|
-
|
|
450
|
-
|
|
262
|
+
/**
|
|
263
|
+
* This program is free software; you can redistribute it and/or
|
|
264
|
+
* modify it under the terms of the GNU General Public License
|
|
265
|
+
* as published by the Free Software Foundation; under version 2
|
|
266
|
+
* of the License (non-upgradable).
|
|
267
|
+
*
|
|
268
|
+
* This program is distributed in the hope that it will be useful,
|
|
269
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
270
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
271
|
+
* GNU General Public License for more details.
|
|
272
|
+
*
|
|
273
|
+
* You should have received a copy of the GNU General Public License
|
|
274
|
+
* along with this program; if not, write to the Free Software
|
|
275
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
276
|
+
*
|
|
277
|
+
* Copyright (c) 2017-2019 (original work) Open Assessment Technologies SA ;
|
|
278
|
+
*/
|
|
279
|
+
var labelUri = 'http://www.w3.org/2000/01/rdf-schema#label';
|
|
280
|
+
var nodeTypes = {
|
|
281
|
+
instance: 'instance',
|
|
282
|
+
class: 'class'
|
|
283
|
+
};
|
|
284
|
+
var selectionModes = {
|
|
285
|
+
single: 'single',
|
|
286
|
+
multiple: 'multiple',
|
|
287
|
+
both: 'both'
|
|
288
|
+
};
|
|
289
|
+
var selectAllPolicies = {
|
|
290
|
+
all: 'all',
|
|
291
|
+
// should select 100% of the nodes, but currently not implementable due to lazy loading
|
|
292
|
+
loaded: 'loaded',
|
|
293
|
+
// selects all loaded nodes, whether visible or not
|
|
294
|
+
visible: 'visible' // selects only visible nodes
|
|
295
|
+
};
|
|
451
296
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
297
|
+
var defaultConfig = {
|
|
298
|
+
type: __('resources'),
|
|
299
|
+
noResultsText: _('No resources found'),
|
|
300
|
+
searchPlaceholder: __('Search'),
|
|
301
|
+
icon: 'item',
|
|
302
|
+
selectionMode: selectionModes.single,
|
|
303
|
+
selectClass: false,
|
|
304
|
+
selectAllPolicy: selectAllPolicies.loaded,
|
|
305
|
+
filters: false,
|
|
306
|
+
showContext: true,
|
|
307
|
+
showSelection: true,
|
|
308
|
+
formats: {
|
|
309
|
+
list: {
|
|
310
|
+
icon: 'icon-ul',
|
|
311
|
+
title: __('View resources as a list'),
|
|
312
|
+
componentFactory: listFactory
|
|
313
|
+
},
|
|
314
|
+
tree: {
|
|
315
|
+
icon: 'icon-tree',
|
|
316
|
+
title: __('View resources as a tree'),
|
|
317
|
+
componentFactory: treeFactory,
|
|
318
|
+
active: true
|
|
459
319
|
}
|
|
460
|
-
|
|
461
|
-
return this.searchQuery;
|
|
462
320
|
},
|
|
321
|
+
limit: 30
|
|
322
|
+
};
|
|
463
323
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
var defaultParams;
|
|
477
|
-
var search;
|
|
478
|
-
|
|
479
|
-
if (this.is('rendered') && !this.is('loading')) {
|
|
480
|
-
this.setState('loading', true);
|
|
481
|
-
params = params || {};
|
|
482
|
-
search = this.getSearchQuery();
|
|
483
|
-
defaultParams = {
|
|
484
|
-
classUri: this.classUri,
|
|
485
|
-
format: this.format,
|
|
486
|
-
limit: this.config.limit,
|
|
487
|
-
search: _.isObject(search) ? JSON.stringify(search) : ''
|
|
488
|
-
};
|
|
489
|
-
/**
|
|
490
|
-
* Formulate the query
|
|
491
|
-
* @event resourceSelector#query
|
|
492
|
-
* @param {Object} params - see format above
|
|
493
|
-
*/
|
|
494
|
-
|
|
495
|
-
this.trigger('query', _.defaults(params, defaultParams));
|
|
324
|
+
/**
|
|
325
|
+
* Filter and extract classes from a resource tree
|
|
326
|
+
* @param {Object[]} resources - the resource tree
|
|
327
|
+
* @returns {Object[]} contains only classes with URI and label
|
|
328
|
+
*/
|
|
329
|
+
var filterClasses = function filterClasses(resources) {
|
|
330
|
+
return _(resources).filter({
|
|
331
|
+
type: nodeTypes.class
|
|
332
|
+
}).map(function (resource) {
|
|
333
|
+
var classNode = _.pick(resource, ['uri', 'label', 'state']);
|
|
334
|
+
if (resource.children) {
|
|
335
|
+
classNode.children = filterClasses(resource.children);
|
|
496
336
|
}
|
|
337
|
+
return classNode;
|
|
338
|
+
}).value();
|
|
339
|
+
};
|
|
497
340
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
341
|
+
/**
|
|
342
|
+
* The factory that creates the resource selector component
|
|
343
|
+
*
|
|
344
|
+
* @param {jQueryElement} $container - where to append the component
|
|
345
|
+
* @param {Object} config - the component config
|
|
346
|
+
* @param {String} config.classUri - the root Class URI
|
|
347
|
+
* @param {Object|[]} [config.classes] - the classes hierarchy for the class selector
|
|
348
|
+
* @param {Object[]} config.formats - the definition of the supported viewer/selector component
|
|
349
|
+
* @param {Object[]} [config.nodes] - the nodes to preload, the format is up to the formatComponent
|
|
350
|
+
* @param {String} [config.icon] - the icon class that represents a resource
|
|
351
|
+
* @param {String} [config.type] - describes the resource type
|
|
352
|
+
* @param {Boolean} [config.selectionMode] - multiple or single selection mode
|
|
353
|
+
* @param {Number} [config.limit = 30] - the default page size for data paging
|
|
354
|
+
* @param {Object|Boolean} [config.filters = false] - false or filters config, see ui/resource/filters
|
|
355
|
+
* @param {Boolean} [config.showContext = true] - show the context bar (class and format switch)
|
|
356
|
+
* @param {Boolean} [config.showSelection = true] - show the selection bar (search, multi switch and select all)
|
|
357
|
+
* @returns {resourceSelector} the component
|
|
358
|
+
*/
|
|
359
|
+
var resourceSelectorFactory = function resourceSelectorFactory($container, config) {
|
|
360
|
+
var $classContainer;
|
|
361
|
+
var $resultArea;
|
|
362
|
+
var $noResults;
|
|
363
|
+
var $searchField;
|
|
364
|
+
var $viewFormats;
|
|
365
|
+
var $selectNum;
|
|
366
|
+
var $selectCtrl;
|
|
367
|
+
var $selectCtrlLabel;
|
|
368
|
+
var $filterToggle;
|
|
369
|
+
var $filterContainer;
|
|
370
|
+
var $selectionToggle;
|
|
371
|
+
var resourceSelectorApi = {
|
|
372
|
+
/**
|
|
373
|
+
* Empty the selection component
|
|
374
|
+
* @returns {resourceSelector} chains
|
|
375
|
+
* @fires resourceSelector#empty
|
|
376
|
+
*/
|
|
377
|
+
empty: function empty() {
|
|
378
|
+
if (this.is('rendered')) {
|
|
379
|
+
if (this.selectionComponent) {
|
|
380
|
+
this.selectionComponent.destroy();
|
|
381
|
+
this.selectionComponent = null;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return this.trigger('empty');
|
|
385
|
+
},
|
|
386
|
+
/**
|
|
387
|
+
* Reset the selector
|
|
388
|
+
* @returns {resourceSelector} chains
|
|
389
|
+
* @fires resourceSelector#reset
|
|
390
|
+
*/
|
|
391
|
+
reset: function reset() {
|
|
392
|
+
if (this.is('rendered')) {
|
|
516
393
|
this.empty();
|
|
517
|
-
this.
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
this.trigger('formatchange', format);
|
|
394
|
+
this.searchQuery = {};
|
|
395
|
+
if (this.config.filters) {
|
|
396
|
+
if (this.filtersComponent) {
|
|
397
|
+
this.filtersComponent.reset();
|
|
398
|
+
}
|
|
399
|
+
$searchField.val('').attr('title', null).attr('placeholder', this.config.searchPlaceholder);
|
|
400
|
+
}
|
|
525
401
|
}
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
*/
|
|
536
|
-
changeSelectionMode: function changeSelectionMode(newMode) {
|
|
537
|
-
if (this.is('rendered') && this.config.selectionMode !== newMode && selectionModes[newMode]) {
|
|
538
|
-
if (this.config.multiple) {
|
|
539
|
-
this.clearSelection();
|
|
402
|
+
return this.trigger('reset');
|
|
403
|
+
},
|
|
404
|
+
/**
|
|
405
|
+
* Get the selected nodes
|
|
406
|
+
* @returns {Object?} the selection
|
|
407
|
+
*/
|
|
408
|
+
getSelection: function getSelection() {
|
|
409
|
+
if (this.selectionComponent) {
|
|
410
|
+
return this.selectionComponent.getSelection();
|
|
540
411
|
}
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
412
|
+
return null;
|
|
413
|
+
},
|
|
414
|
+
/**
|
|
415
|
+
* Clear the current selection
|
|
416
|
+
* @returns {resourceSelector} chains
|
|
417
|
+
*/
|
|
418
|
+
clearSelection: function clearSelection() {
|
|
419
|
+
if (this.selectionComponent) {
|
|
420
|
+
this.selectionComponent.clearSelection();
|
|
550
421
|
}
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
/**
|
|
565
|
-
* Update the component with the given resources
|
|
566
|
-
* @param {Object[]} resources - the data, with at least a URI as key and as property
|
|
567
|
-
* @param {Object} params - the query parameters
|
|
568
|
-
* @returns {resourceSelector} chains
|
|
569
|
-
* @fires resourceSelector#update
|
|
570
|
-
* @fires resourceSelector#change
|
|
571
|
-
* @fires resourceSelector#error
|
|
572
|
-
*/
|
|
573
|
-
update: function update(resources, params) {
|
|
574
|
-
var self = this;
|
|
575
|
-
var componentFactory;
|
|
576
|
-
|
|
577
|
-
if (this.is('rendered') && this.format) {
|
|
578
|
-
componentFactory = this.config.formats[this.format] && this.config.formats[this.format].componentFactory;
|
|
579
|
-
|
|
580
|
-
if (!_.isFunction(componentFactory)) {
|
|
581
|
-
return this.trigger('error', new TypeError("Unable to load the component for the format ".concat(this.format)));
|
|
422
|
+
return this;
|
|
423
|
+
},
|
|
424
|
+
/**
|
|
425
|
+
* Set the search query
|
|
426
|
+
* @param {String|Object} query - label query if string or property filters
|
|
427
|
+
* @returns {resourceSelector} chains
|
|
428
|
+
*/
|
|
429
|
+
setSearchQuery: function setSearchQuery(query) {
|
|
430
|
+
this.searchQuery = {};
|
|
431
|
+
this.searchQuery[labelUri] = '';
|
|
432
|
+
if (_.isString(query) && !_.isEmpty(query)) {
|
|
433
|
+
this.searchQuery[labelUri] = query;
|
|
582
434
|
}
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
if (params.updateClasses && this.classSelector) {
|
|
587
|
-
this.classSelector.updateNodes(filterClasses(resources));
|
|
435
|
+
if (_.isPlainObject(query)) {
|
|
436
|
+
this.searchQuery = query;
|
|
588
437
|
}
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
438
|
+
return this;
|
|
439
|
+
},
|
|
440
|
+
/**
|
|
441
|
+
* Clear the search query to submit
|
|
442
|
+
* @returns {Object} the query
|
|
443
|
+
*/
|
|
444
|
+
getSearchQuery: function getSearchQuery() {
|
|
445
|
+
if (_.size(this.searchQuery) === 0) {
|
|
446
|
+
this.searchQuery[labelUri] = '';
|
|
447
|
+
}
|
|
448
|
+
return this.searchQuery;
|
|
449
|
+
},
|
|
450
|
+
/**
|
|
451
|
+
* Ask for a query (forward the event)
|
|
452
|
+
* @param {Object} [params] - the query parameters
|
|
453
|
+
* @param {String} [params.classUri] - the current node class URI
|
|
454
|
+
* @param {String} [params.format] - the selected format
|
|
455
|
+
* @param {String} [params.search] - the search query
|
|
456
|
+
* @param {Number} [params.offset = 0] - for paging
|
|
457
|
+
* @param {Number} [params.limit] - for paging
|
|
458
|
+
* @returns {resourceSelector} chains
|
|
459
|
+
* @fires resourceSelector#query
|
|
460
|
+
*/
|
|
461
|
+
query: function query(params) {
|
|
462
|
+
var defaultParams;
|
|
463
|
+
var search;
|
|
464
|
+
if (this.is('rendered') && !this.is('loading')) {
|
|
465
|
+
this.setState('loading', true);
|
|
466
|
+
params = params || {};
|
|
467
|
+
search = this.getSearchQuery();
|
|
468
|
+
defaultParams = {
|
|
592
469
|
classUri: this.classUri,
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
}
|
|
597
|
-
if (_.size(this.getNodes()) === 0 && $$1('li', $resultArea).length === 0) {
|
|
598
|
-
hider.show($noResults);
|
|
599
|
-
}
|
|
470
|
+
format: this.format,
|
|
471
|
+
limit: this.config.limit,
|
|
472
|
+
search: _.isObject(search) ? JSON.stringify(search) : ''
|
|
473
|
+
};
|
|
600
474
|
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
} else {
|
|
608
|
-
this.selectionComponent.update(resources, params);
|
|
475
|
+
/**
|
|
476
|
+
* Formulate the query
|
|
477
|
+
* @event resourceSelector#query
|
|
478
|
+
* @param {Object} params - see format above
|
|
479
|
+
*/
|
|
480
|
+
this.trigger('query', _.defaults(params, defaultParams));
|
|
609
481
|
}
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
* @returns {resourceSelector} chains
|
|
636
|
-
*/
|
|
637
|
-
removeNode: function removeNode(node) {
|
|
638
|
-
var uri = _.isString(node) ? node : node.uri;
|
|
639
|
-
|
|
640
|
-
if (this.hasNode(uri)) {
|
|
641
|
-
//update the class selector
|
|
642
|
-
if (this.getNodeType(node) === nodeTypes.class && this.classSelector) {
|
|
643
|
-
this.classSelector.removeNode(node);
|
|
482
|
+
return this;
|
|
483
|
+
},
|
|
484
|
+
/**
|
|
485
|
+
* Switch the format, so the viewer/selector component
|
|
486
|
+
* @param {String} format - the new format
|
|
487
|
+
* @returns {resourceSelector} chains
|
|
488
|
+
* @fires resourceSelector#formatchange
|
|
489
|
+
*/
|
|
490
|
+
changeFormat: function changeFormat(format) {
|
|
491
|
+
var $viewFormat;
|
|
492
|
+
if (this.is('rendered') && this.format !== format) {
|
|
493
|
+
$viewFormat = $viewFormats.filter(`[data-view-format="${format}"]`);
|
|
494
|
+
if ($viewFormat.length === 1 && !$viewFormat.hasClass('active')) {
|
|
495
|
+
$viewFormats.removeClass('active');
|
|
496
|
+
$viewFormat.addClass('active');
|
|
497
|
+
this.empty();
|
|
498
|
+
this.format = format;
|
|
499
|
+
|
|
500
|
+
/**
|
|
501
|
+
* The view format has changed
|
|
502
|
+
* @event resourceSelector#formatchange
|
|
503
|
+
* @param {String} format - the new format name
|
|
504
|
+
*/
|
|
505
|
+
this.trigger('formatchange', format);
|
|
506
|
+
}
|
|
644
507
|
}
|
|
508
|
+
return this;
|
|
509
|
+
},
|
|
510
|
+
/**
|
|
511
|
+
* Let's you change the selection mode
|
|
512
|
+
* @param {String} newMode - single or multiple
|
|
513
|
+
* @returns {resourceSelector} chains
|
|
514
|
+
*/
|
|
515
|
+
changeSelectionMode: function changeSelectionMode(newMode) {
|
|
516
|
+
if (this.is('rendered') && this.config.selectionMode !== newMode && selectionModes[newMode]) {
|
|
517
|
+
if (this.config.multiple) {
|
|
518
|
+
this.clearSelection();
|
|
519
|
+
}
|
|
520
|
+
this.config.multiple = newMode === selectionModes.multiple;
|
|
521
|
+
this.selectionComponent.setState('multiple', this.config.multiple);
|
|
522
|
+
this.setState('multiple', this.config.multiple);
|
|
523
|
+
if (this.config.multiple) {
|
|
524
|
+
hider.show($selectCtrlLabel);
|
|
525
|
+
} else {
|
|
526
|
+
hider.hide($selectCtrlLabel);
|
|
527
|
+
}
|
|
645
528
|
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
}
|
|
676
|
-
|
|
529
|
+
/**
|
|
530
|
+
* The selection mode has changed
|
|
531
|
+
* @event resourceSelector#selectionmodechange
|
|
532
|
+
* @param {String} newMode - the new selection mode
|
|
533
|
+
*/
|
|
534
|
+
this.trigger('selectionmodechange', newMode);
|
|
535
|
+
}
|
|
536
|
+
return this;
|
|
537
|
+
},
|
|
538
|
+
/**
|
|
539
|
+
* Update the component with the given resources
|
|
540
|
+
* @param {Object[]} resources - the data, with at least a URI as key and as property
|
|
541
|
+
* @param {Object} params - the query parameters
|
|
542
|
+
* @returns {resourceSelector} chains
|
|
543
|
+
* @fires resourceSelector#update
|
|
544
|
+
* @fires resourceSelector#change
|
|
545
|
+
* @fires resourceSelector#error
|
|
546
|
+
*/
|
|
547
|
+
update: function update(resources, params) {
|
|
548
|
+
var self = this;
|
|
549
|
+
var componentFactory;
|
|
550
|
+
if (this.is('rendered') && this.format) {
|
|
551
|
+
componentFactory = this.config.formats[this.format] && this.config.formats[this.format].componentFactory;
|
|
552
|
+
if (!_.isFunction(componentFactory)) {
|
|
553
|
+
return this.trigger('error', new TypeError(`Unable to load the component for the format ${this.format}`));
|
|
554
|
+
}
|
|
555
|
+
hider.hide($noResults);
|
|
556
|
+
if (params.updateClasses && this.classSelector) {
|
|
557
|
+
this.classSelector.updateNodes(filterClasses(resources));
|
|
558
|
+
}
|
|
559
|
+
if (!this.selectionComponent) {
|
|
560
|
+
this.selectionComponent = componentFactory($resultArea, _.defaults({
|
|
561
|
+
classUri: this.classUri,
|
|
562
|
+
nodes: resources
|
|
563
|
+
}, this.config)).on('query', function (queryParams) {
|
|
564
|
+
self.query(queryParams);
|
|
565
|
+
}).on('update', function () {
|
|
566
|
+
if (_.size(this.getNodes()) === 0 && $$1('li', $resultArea).length === 0) {
|
|
567
|
+
hider.show($noResults);
|
|
568
|
+
}
|
|
569
|
+
self.trigger('update');
|
|
570
|
+
}).on('change', function (selected, onlyVisible) {
|
|
571
|
+
self.trigger('change', selected, onlyVisible);
|
|
572
|
+
}).on('error', function (err) {
|
|
573
|
+
self.trigger('error', err);
|
|
574
|
+
});
|
|
575
|
+
} else {
|
|
576
|
+
this.selectionComponent.update(resources, params);
|
|
577
|
+
}
|
|
578
|
+
this.setState('loading', false);
|
|
579
|
+
}
|
|
580
|
+
return this;
|
|
581
|
+
},
|
|
582
|
+
/**
|
|
583
|
+
* Update the filters component
|
|
584
|
+
* @param {Object?} filterConfig - the new filter configuration
|
|
585
|
+
* @returns {resourceSelector} chains
|
|
586
|
+
*/
|
|
587
|
+
updateFilters: function updateFilters(filterConfig) {
|
|
588
|
+
if (this.is('rendered') && filterConfig !== false && this.filtersComponent) {
|
|
589
|
+
this.filtersComponent.update(filterConfig);
|
|
590
|
+
}
|
|
591
|
+
return this;
|
|
592
|
+
},
|
|
593
|
+
/**
|
|
594
|
+
* Remove a given node, from the selection component and the node list.
|
|
595
|
+
*
|
|
596
|
+
* @param {Object|String} node - the node or the node URI
|
|
597
|
+
* @param {String} [node.uri]
|
|
598
|
+
* @returns {resourceSelector} chains
|
|
599
|
+
*/
|
|
600
|
+
removeNode: function removeNode(node) {
|
|
601
|
+
var uri = _.isString(node) ? node : node.uri;
|
|
602
|
+
if (this.hasNode(uri)) {
|
|
603
|
+
//update the class selector
|
|
677
604
|
if (this.getNodeType(node) === nodeTypes.class && this.classSelector) {
|
|
678
|
-
this.classSelector.
|
|
605
|
+
this.classSelector.removeNode(node);
|
|
679
606
|
}
|
|
607
|
+
this.selectionComponent.removeNode(uri);
|
|
680
608
|
}
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
609
|
+
return this;
|
|
610
|
+
},
|
|
611
|
+
/**
|
|
612
|
+
* Add manually a node.
|
|
613
|
+
*
|
|
614
|
+
* @param {Object} node - the node to add
|
|
615
|
+
* @param {String} node.uri
|
|
616
|
+
* @param {String} node.label
|
|
617
|
+
* @param {String} [node.type=instance] - instance or class
|
|
618
|
+
* @param {String} [parentUri] - where to append the new node
|
|
619
|
+
* @returns {resourceSelector} chains
|
|
620
|
+
*/
|
|
621
|
+
addNode: function addNode(node, parentUri) {
|
|
622
|
+
if (this.is('rendered') && node && node.uri && this.selectionComponent) {
|
|
623
|
+
if (!this.selectionComponent.hasNode(node.uri)) {
|
|
624
|
+
if (!node.type) {
|
|
625
|
+
node.type = nodeTypes.instance;
|
|
626
|
+
}
|
|
685
627
|
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
this.classSelector.addNode(node, parentUri);
|
|
628
|
+
//update the selection component
|
|
629
|
+
this.selectionComponent.update([node], {
|
|
630
|
+
classUri: parentUri || this.classUri,
|
|
631
|
+
format: this.format,
|
|
632
|
+
limit: this.config.limit,
|
|
633
|
+
updateCount: node.type === nodeTypes.instance ? 1 : false
|
|
634
|
+
});
|
|
635
|
+
|
|
636
|
+
//update the class selector
|
|
637
|
+
if (this.getNodeType(node) === nodeTypes.class && this.classSelector) {
|
|
638
|
+
this.classSelector.addNode(node, parentUri);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
700
641
|
}
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
return this.selectionComponent.hasNode(uri);
|
|
719
|
-
}
|
|
720
|
-
|
|
721
|
-
return false;
|
|
722
|
-
},
|
|
723
|
-
|
|
724
|
-
/**
|
|
725
|
-
* Get the type of a node, usually instance or class
|
|
726
|
-
*
|
|
727
|
-
* @param {Object|String} node - the node or directly the URI
|
|
728
|
-
* @param {String} [node.uri]
|
|
729
|
-
* @returns {String|Boolean} one of the nodeTypes or false
|
|
730
|
-
*/
|
|
731
|
-
getNodeType: function getNodeType(node) {
|
|
732
|
-
var uri;
|
|
733
|
-
var foundNode;
|
|
734
|
-
|
|
735
|
-
if (node && this.is('rendered') && this.selectionComponent) {
|
|
736
|
-
uri = _.isString(node) ? node : node.uri;
|
|
737
|
-
foundNode = this.selectionComponent.getNode(uri);
|
|
738
|
-
return foundNode && foundNode.type;
|
|
739
|
-
}
|
|
740
|
-
|
|
741
|
-
return false;
|
|
742
|
-
},
|
|
743
|
-
|
|
744
|
-
/**
|
|
745
|
-
* Select a node manually
|
|
746
|
-
*
|
|
747
|
-
* @param {Object|String} node - the node to select or directly the URI
|
|
748
|
-
* @param {String} [node.uri]
|
|
749
|
-
* @returns {resourceSelector} chains
|
|
750
|
-
*/
|
|
751
|
-
select: function select(node) {
|
|
752
|
-
var uri = _.isString(node) ? node : node.uri;
|
|
753
|
-
|
|
754
|
-
if (this.hasNode(uri)) {
|
|
755
|
-
if (!this.is('multiple')) {
|
|
756
|
-
this.selectionComponent.clearSelection();
|
|
642
|
+
return this;
|
|
643
|
+
},
|
|
644
|
+
/**
|
|
645
|
+
* Add class to classSelector, no update of selectionComponent
|
|
646
|
+
*
|
|
647
|
+
* @param {Object} node - the class node to add
|
|
648
|
+
* @param {String} node.uri
|
|
649
|
+
* @param {String} node.label
|
|
650
|
+
* @param {String} parentUri - where to append the new node
|
|
651
|
+
* @returns {resourceSelector} chains
|
|
652
|
+
*/
|
|
653
|
+
addClassNode: function addClassNode(node, parentUri) {
|
|
654
|
+
if (this.is('rendered') && node && node.uri && this.classSelector) {
|
|
655
|
+
if (!this.classSelector.hasNode(node.uri) && this.classSelector.hasNode(parentUri)) {
|
|
656
|
+
//add node to the class selector
|
|
657
|
+
this.classSelector.addNode(node, parentUri);
|
|
658
|
+
}
|
|
757
659
|
}
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
660
|
+
return this;
|
|
661
|
+
},
|
|
662
|
+
/**
|
|
663
|
+
* Does the given node exists ?
|
|
664
|
+
*
|
|
665
|
+
* @param {Object|String} node - the node or directly the URI
|
|
666
|
+
* @param {String} [node.uri]
|
|
667
|
+
* @returns {Boolean}
|
|
668
|
+
*/
|
|
669
|
+
hasNode: function hasNode(node) {
|
|
670
|
+
var uri;
|
|
671
|
+
if (node && this.is('rendered') && this.selectionComponent) {
|
|
672
|
+
uri = _.isString(node) ? node : node.uri;
|
|
673
|
+
return this.selectionComponent.hasNode(uri);
|
|
674
|
+
}
|
|
675
|
+
return false;
|
|
676
|
+
},
|
|
677
|
+
/**
|
|
678
|
+
* Get the type of a node, usually instance or class
|
|
679
|
+
*
|
|
680
|
+
* @param {Object|String} node - the node or directly the URI
|
|
681
|
+
* @param {String} [node.uri]
|
|
682
|
+
* @returns {String|Boolean} one of the nodeTypes or false
|
|
683
|
+
*/
|
|
684
|
+
getNodeType: function getNodeType(node) {
|
|
685
|
+
var uri;
|
|
686
|
+
var foundNode;
|
|
687
|
+
if (node && this.is('rendered') && this.selectionComponent) {
|
|
688
|
+
uri = _.isString(node) ? node : node.uri;
|
|
689
|
+
foundNode = this.selectionComponent.getNode(uri);
|
|
690
|
+
return foundNode && foundNode.type;
|
|
691
|
+
}
|
|
692
|
+
return false;
|
|
693
|
+
},
|
|
694
|
+
/**
|
|
695
|
+
* Select a node manually
|
|
696
|
+
*
|
|
697
|
+
* @param {Object|String} node - the node to select or directly the URI
|
|
698
|
+
* @param {String} [node.uri]
|
|
699
|
+
* @returns {resourceSelector} chains
|
|
700
|
+
*/
|
|
701
|
+
select: function select(node) {
|
|
702
|
+
var uri = _.isString(node) ? node : node.uri;
|
|
703
|
+
if (this.hasNode(uri)) {
|
|
704
|
+
if (!this.is('multiple')) {
|
|
705
|
+
this.selectionComponent.clearSelection();
|
|
787
706
|
}
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
707
|
+
this.selectionComponent.select(uri);
|
|
708
|
+
$$1(`[data-uri="${uri}"]`, $resultArea)[0].scrollIntoView({
|
|
709
|
+
behavior: 'smooth'
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
return this;
|
|
713
|
+
},
|
|
714
|
+
/**
|
|
715
|
+
* Select the default node, then fallback to 1st instance then 1st class
|
|
716
|
+
*
|
|
717
|
+
* @param {Object|String} node - the node to select or directly the URI
|
|
718
|
+
* @param {String} [node.uri]
|
|
719
|
+
* @param {Boolean} [fallback=true] - apply the fallback ?
|
|
720
|
+
* @returns {resourceSelector} chains
|
|
721
|
+
*/
|
|
722
|
+
selectDefaultNode: function selectDefaultNode(node, fallback) {
|
|
723
|
+
var $resource;
|
|
724
|
+
if (this.is('rendered')) {
|
|
725
|
+
if (this.hasNode(node)) {
|
|
726
|
+
this.select(node);
|
|
727
|
+
} else if (fallback !== false) {
|
|
728
|
+
$resource = this.getElement().find(`.${nodeTypes.instance}`);
|
|
729
|
+
if (!$resource.length) {
|
|
730
|
+
$resource = this.getElement().find(`.${nodeTypes.class}`);
|
|
731
|
+
}
|
|
732
|
+
if ($resource.length) {
|
|
733
|
+
this.select($resource.first().data('uri'));
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
return this;
|
|
738
|
+
},
|
|
739
|
+
/**
|
|
740
|
+
* Refresh and select the given node
|
|
741
|
+
*
|
|
742
|
+
* @param {Object|String} node - the node to select or directly the URI
|
|
743
|
+
* @param {String} [node.uri]
|
|
744
|
+
* @returns {resourceSelector} chains
|
|
745
|
+
*/
|
|
746
|
+
refresh: function refresh(node) {
|
|
747
|
+
var queryParams = {
|
|
748
|
+
updateClasses: true
|
|
749
|
+
};
|
|
750
|
+
if (this.is('rendered')) {
|
|
751
|
+
this.on('update.refresh', function () {
|
|
752
|
+
this.off('update.refresh');
|
|
753
|
+
this.selectDefaultNode(node);
|
|
754
|
+
});
|
|
755
|
+
if (node && node.uri) {
|
|
756
|
+
queryParams.selectedUri = node.uri;
|
|
791
757
|
}
|
|
758
|
+
this.reset().query(queryParams);
|
|
792
759
|
}
|
|
760
|
+
return this;
|
|
793
761
|
}
|
|
762
|
+
};
|
|
794
763
|
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
/**
|
|
799
|
-
* Refresh and select the given node
|
|
800
|
-
*
|
|
801
|
-
* @param {Object|String} node - the node to select or directly the URI
|
|
802
|
-
* @param {String} [node.uri]
|
|
803
|
-
* @returns {resourceSelector} chains
|
|
764
|
+
/**
|
|
765
|
+
* The resource selector component
|
|
766
|
+
* @typedef {ui/component} resourceSelector
|
|
804
767
|
*/
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
768
|
+
var resourceSelector = component(resourceSelectorApi, defaultConfig).setTemplate(selectorTpl).on('init', function () {
|
|
769
|
+
this.searchQuery = {};
|
|
770
|
+
this.classUri = this.config.classUri;
|
|
771
|
+
this.format = this.config.format || _.findKey(this.config.formats, {
|
|
772
|
+
active: true
|
|
773
|
+
});
|
|
774
|
+
this.config.switchMode = this.config.selectionMode === selectionModes.both;
|
|
775
|
+
this.config.multiple = this.config.selectionMode === selectionModes.multiple;
|
|
776
|
+
this.setState('multiple', this.config.multiple);
|
|
777
|
+
this.render($container);
|
|
778
|
+
}).on('render', function () {
|
|
779
|
+
var self = this;
|
|
815
780
|
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
781
|
+
//we ensure the sub-components are rendered
|
|
782
|
+
return new Promise(function (resolve) {
|
|
783
|
+
var $component = self.getElement();
|
|
784
|
+
$classContainer = $$1('.class-context', $component);
|
|
785
|
+
$resultArea = $$1('main', $component);
|
|
786
|
+
$noResults = $$1('.no-results', $resultArea);
|
|
787
|
+
$searchField = $$1('.search input', $component);
|
|
788
|
+
$filterToggle = $$1('.filters-opener', $component);
|
|
789
|
+
$filterContainer = $$1('.filters-container', $component);
|
|
790
|
+
$viewFormats = $$1('.context > a', $component);
|
|
791
|
+
$selectNum = $$1('.selected-num', $component);
|
|
792
|
+
$selectCtrl = $$1('.selection-control input', $component);
|
|
793
|
+
$selectCtrlLabel = $$1('.selection-control label', $component);
|
|
794
|
+
$selectionToggle = $$1('.selection-toggle', $component);
|
|
795
|
+
|
|
796
|
+
//the search field
|
|
797
|
+
$searchField.on('keyup', _.debounce(function (e) {
|
|
798
|
+
var value = $$1(this).val().trim();
|
|
799
|
+
if (value.length > 2 || value.length === 0 || e.which === 13) {
|
|
800
|
+
if (self.config.filters) {
|
|
801
|
+
//reset the placeholder
|
|
802
|
+
$$1(this).attr('title', null).attr('placeholder', self.config.searchPlaceholder);
|
|
803
|
+
}
|
|
804
|
+
self.empty().changeFormat('list').setSearchQuery(value).query();
|
|
805
|
+
}
|
|
806
|
+
}, 300));
|
|
819
807
|
|
|
820
|
-
|
|
821
|
-
|
|
808
|
+
//the format switcher
|
|
809
|
+
$viewFormats.on('click', function (e) {
|
|
810
|
+
var $target = $$1(this);
|
|
811
|
+
var format = $target.data('view-format');
|
|
812
|
+
e.preventDefault();
|
|
813
|
+
self.reset().changeFormat(format).query();
|
|
814
|
+
});
|
|
822
815
|
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
816
|
+
//mode switcher (multiple/single)
|
|
817
|
+
if (self.config.selectionMode === selectionModes.both) {
|
|
818
|
+
//click the toggler
|
|
819
|
+
$selectionToggle.on('click', function (e) {
|
|
820
|
+
e.preventDefault();
|
|
821
|
+
self.changeSelectionMode(self.config.multiple ? selectionModes.single : selectionModes.multiple);
|
|
822
|
+
});
|
|
830
823
|
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
this.config.switchMode = this.config.selectionMode === selectionModes.both;
|
|
838
|
-
this.config.multiple = this.config.selectionMode === selectionModes.multiple;
|
|
839
|
-
this.setState('multiple', this.config.multiple);
|
|
840
|
-
this.render($container);
|
|
841
|
-
}).on('render', function () {
|
|
842
|
-
var self = this; //we ensure the sub-components are rendered
|
|
843
|
-
|
|
844
|
-
return new Promise(function (resolve) {
|
|
845
|
-
var $component = self.getElement();
|
|
846
|
-
$classContainer = $$1('.class-context', $component);
|
|
847
|
-
$resultArea = $$1('main', $component);
|
|
848
|
-
$noResults = $$1('.no-results', $resultArea);
|
|
849
|
-
$searchField = $$1('.search input', $component);
|
|
850
|
-
$filterToggle = $$1('.filters-opener', $component);
|
|
851
|
-
$filterContainer = $$1('.filters-container', $component);
|
|
852
|
-
$viewFormats = $$1('.context > a', $component);
|
|
853
|
-
$selectNum = $$1('.selected-num', $component);
|
|
854
|
-
$selectCtrl = $$1('.selection-control input', $component);
|
|
855
|
-
$selectCtrlLabel = $$1('.selection-control label', $component);
|
|
856
|
-
$selectionToggle = $$1('.selection-toggle', $component); //the search field
|
|
857
|
-
|
|
858
|
-
$searchField.on('keyup', _.debounce(function (e) {
|
|
859
|
-
var value = $$1(this).val().trim();
|
|
860
|
-
|
|
861
|
-
if (value.length > 2 || value.length === 0 || e.which === 13) {
|
|
862
|
-
if (self.config.filters) {
|
|
863
|
-
//reset the placeholder
|
|
864
|
-
$$1(this).attr('title', null).attr('placeholder', self.config.searchPlaceholder);
|
|
865
|
-
}
|
|
824
|
+
//CTRL-Click
|
|
825
|
+
$resultArea.on('mousedown', function (e) {
|
|
826
|
+
if (e.ctrlKey && !self.config.multiple) {
|
|
827
|
+
self.changeSelectionMode(selectionModes.multiple);
|
|
828
|
+
}
|
|
829
|
+
});
|
|
866
830
|
|
|
867
|
-
|
|
831
|
+
//switch back to sinlge
|
|
832
|
+
$resultArea.on('click', function () {
|
|
833
|
+
self.changeSelectionMode(selectionModes.single);
|
|
834
|
+
});
|
|
868
835
|
}
|
|
869
|
-
}, 300)); //the format switcher
|
|
870
|
-
|
|
871
|
-
$viewFormats.on('click', function (e) {
|
|
872
|
-
var $target = $$1(this);
|
|
873
|
-
var format = $target.data('view-format');
|
|
874
|
-
e.preventDefault();
|
|
875
|
-
self.reset().changeFormat(format).query();
|
|
876
|
-
}); //mode switcher (multiple/single)
|
|
877
|
-
|
|
878
|
-
if (self.config.selectionMode === selectionModes.both) {
|
|
879
|
-
//click the toggler
|
|
880
|
-
$selectionToggle.on('click', function (e) {
|
|
881
|
-
e.preventDefault();
|
|
882
|
-
self.changeSelectionMode(self.config.multiple ? selectionModes.single : selectionModes.multiple);
|
|
883
|
-
}); //CTRL-Click
|
|
884
836
|
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
837
|
+
//the select all control
|
|
838
|
+
$selectCtrl.on('change', function () {
|
|
839
|
+
if ($$1(this).prop('checked') === false) {
|
|
840
|
+
self.selectionComponent.clearSelection();
|
|
841
|
+
} else if (self.config.selectAllPolicy === selectAllPolicies.visible) {
|
|
842
|
+
self.selectionComponent.selectVisible();
|
|
843
|
+
} else if (self.config.selectAllPolicy === selectAllPolicies.loaded) {
|
|
844
|
+
self.selectionComponent.selectAll();
|
|
888
845
|
}
|
|
889
|
-
}); //switch back to sinlge
|
|
890
|
-
|
|
891
|
-
$resultArea.on('click', function () {
|
|
892
|
-
self.changeSelectionMode(selectionModes.single);
|
|
893
846
|
});
|
|
894
|
-
} //the select all control
|
|
895
847
|
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
848
|
+
//the advanced filters
|
|
849
|
+
if (self.config.filters !== false) {
|
|
850
|
+
self.filtersComponent = filtersFactory($filterContainer, {
|
|
851
|
+
classUri: self.classUri,
|
|
852
|
+
data: self.config.filters
|
|
853
|
+
}).on('change', function (values) {
|
|
854
|
+
var textualQuery = this.getTextualQuery();
|
|
855
|
+
$searchField.val('').attr('title', textualQuery).attr('placeholder', textualQuery);
|
|
856
|
+
self.empty().changeFormat('list').setSearchQuery(values).query();
|
|
857
|
+
$filterContainer.addClass('folded');
|
|
858
|
+
});
|
|
859
|
+
$filterToggle.on('click', function (e) {
|
|
860
|
+
var searchVal;
|
|
861
|
+
e.preventDefault();
|
|
862
|
+
if ($filterContainer.hasClass('folded')) {
|
|
863
|
+
//if a value is in the search field, we add it to the label
|
|
864
|
+
searchVal = $searchField.val().trim();
|
|
865
|
+
if (!_.isEmpty(searchVal)) {
|
|
866
|
+
self.filtersComponent.setValue(labelUri, searchVal);
|
|
867
|
+
}
|
|
868
|
+
$filterContainer.removeClass('folded');
|
|
869
|
+
} else {
|
|
870
|
+
$filterContainer.addClass('folded');
|
|
871
|
+
}
|
|
872
|
+
});
|
|
904
873
|
}
|
|
905
|
-
}); //the advanced filters
|
|
906
|
-
|
|
907
|
-
if (self.config.filters !== false) {
|
|
908
|
-
self.filtersComponent = filtersFactory($filterContainer, {
|
|
909
|
-
classUri: self.classUri,
|
|
910
|
-
data: self.config.filters
|
|
911
|
-
}).on('change', function (values) {
|
|
912
|
-
var textualQuery = this.getTextualQuery();
|
|
913
|
-
$searchField.val('').attr('title', textualQuery).attr('placeholder', textualQuery);
|
|
914
|
-
self.empty().changeFormat('list').setSearchQuery(values).query();
|
|
915
|
-
$filterContainer.addClass('folded');
|
|
916
|
-
});
|
|
917
|
-
$filterToggle.on('click', function (e) {
|
|
918
|
-
var searchVal;
|
|
919
|
-
e.preventDefault();
|
|
920
874
|
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
875
|
+
//initialize the class selector
|
|
876
|
+
self.classSelector = classesSelectorFactory($classContainer, self.config);
|
|
877
|
+
self.classSelector.on('render', resolve).on('change', function (uri) {
|
|
878
|
+
if (uri && uri !== self.classUri) {
|
|
879
|
+
self.classUri = uri;
|
|
924
880
|
|
|
925
|
-
|
|
926
|
-
|
|
881
|
+
//close the filters
|
|
882
|
+
if ($filterContainer.length) {
|
|
883
|
+
$filterContainer.addClass('folded');
|
|
927
884
|
}
|
|
928
885
|
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
886
|
+
/**
|
|
887
|
+
* When the component's root class URI changes
|
|
888
|
+
* @event resourceSelector#classchange
|
|
889
|
+
* @param {String} classUri - the new class URI
|
|
890
|
+
*/
|
|
891
|
+
self.trigger('classchange', uri);
|
|
892
|
+
self.reset().query();
|
|
932
893
|
}
|
|
933
894
|
});
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
self.classSelector = classesSelectorFactory($classContainer, self.config);
|
|
938
|
-
self.classSelector.on('render', resolve).on('change', function (uri) {
|
|
939
|
-
if (uri && uri !== self.classUri) {
|
|
940
|
-
self.classUri = uri; //close the filters
|
|
941
|
-
|
|
942
|
-
if ($filterContainer.length) {
|
|
943
|
-
$filterContainer.addClass('folded');
|
|
944
|
-
}
|
|
945
|
-
/**
|
|
946
|
-
* When the component's root class URI changes
|
|
947
|
-
* @event resourceSelector#classchange
|
|
948
|
-
* @param {String} classUri - the new class URI
|
|
949
|
-
*/
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
self.trigger('classchange', uri);
|
|
953
|
-
self.reset().query();
|
|
954
|
-
}
|
|
895
|
+
self.query();
|
|
955
896
|
});
|
|
956
|
-
|
|
897
|
+
}).on('change', function (selected, onlyVisible) {
|
|
898
|
+
var selectedCount = _.size(selected);
|
|
899
|
+
var nodesCount = onlyVisible ? selectedCount : _.size(this.selectionComponent.getNodes());
|
|
900
|
+
|
|
901
|
+
//the number selected at the bottom
|
|
902
|
+
$selectNum.text(selectedCount);
|
|
903
|
+
|
|
904
|
+
//update the state of the "Select All" checkbox
|
|
905
|
+
if (selectedCount === 0) {
|
|
906
|
+
$selectCtrlLabel.attr('title', __('Select loaded %s', this.config.type));
|
|
907
|
+
$selectCtrl.prop('checked', false).prop('indeterminate', false);
|
|
908
|
+
// if all of the nodes are selected (or more in the closed subclasses)
|
|
909
|
+
} else if (selectedCount >= nodesCount) {
|
|
910
|
+
$selectCtrlLabel.attr('title', __('Clear selection'));
|
|
911
|
+
$selectCtrl.prop('checked', true).prop('indeterminate', false);
|
|
912
|
+
} else {
|
|
913
|
+
$selectCtrlLabel.attr('title', __('Select loaded %s', this.config.type));
|
|
914
|
+
$selectCtrl.prop('checked', false).prop('indeterminate', true);
|
|
915
|
+
}
|
|
957
916
|
});
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
$selectNum.text(selectedCount); //update the state of the "Select All" checkbox
|
|
964
|
-
|
|
965
|
-
if (selectedCount === 0) {
|
|
966
|
-
$selectCtrlLabel.attr('title', __('Select loaded %s', this.config.type));
|
|
967
|
-
$selectCtrl.prop('checked', false).prop('indeterminate', false); // if all of the nodes are selected (or more in the closed subclasses)
|
|
968
|
-
} else if (selectedCount >= nodesCount) {
|
|
969
|
-
$selectCtrlLabel.attr('title', __('Clear selection'));
|
|
970
|
-
$selectCtrl.prop('checked', true).prop('indeterminate', false);
|
|
971
|
-
} else {
|
|
972
|
-
$selectCtrlLabel.attr('title', __('Select loaded %s', this.config.type));
|
|
973
|
-
$selectCtrl.prop('checked', false).prop('indeterminate', true);
|
|
974
|
-
}
|
|
975
|
-
});
|
|
976
|
-
|
|
977
|
-
_.defer(function () {
|
|
978
|
-
resourceSelector.init(config);
|
|
979
|
-
});
|
|
980
|
-
|
|
981
|
-
return resourceSelector;
|
|
982
|
-
}; //Exposes the selection modes
|
|
983
|
-
|
|
917
|
+
_.defer(function () {
|
|
918
|
+
resourceSelector.init(config);
|
|
919
|
+
});
|
|
920
|
+
return resourceSelector;
|
|
921
|
+
};
|
|
984
922
|
|
|
985
|
-
|
|
923
|
+
//Exposes the selection modes
|
|
924
|
+
resourceSelectorFactory.selectionModes = selectionModes;
|
|
986
925
|
|
|
987
|
-
|
|
926
|
+
//Exposes the selectAllPolicies
|
|
927
|
+
resourceSelectorFactory.selectAllPolicies = selectAllPolicies;
|
|
988
928
|
|
|
989
|
-
|
|
929
|
+
//Exposes the node types
|
|
930
|
+
resourceSelectorFactory.nodeTypes = nodeTypes;
|
|
990
931
|
|
|
991
|
-
|
|
932
|
+
return resourceSelectorFactory;
|
|
992
933
|
|
|
993
934
|
});
|