@oat-sa/tao-core-ui 1.58.1 → 1.58.2
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/dist/actionbar.js +386 -395
- package/dist/adder.js +21 -19
- package/dist/animable/absorbable/absorbable.js +204 -213
- package/dist/animable/absorbable/css/absorb.css +1 -0
- package/dist/animable/absorbable/css/absorb.css.map +1 -1
- package/dist/animable/pulsable/pulsable.js +168 -177
- package/dist/autocomplete/css/autocomplete.css +1 -0
- package/dist/autocomplete/css/autocomplete.css.map +1 -1
- package/dist/autocomplete.js +68 -66
- package/dist/badge/badge.js +188 -197
- package/dist/badge/css/badge.css +1 -0
- package/dist/badge/css/badge.css.map +1 -1
- package/dist/breadcrumbs.js +275 -284
- package/dist/btngrouper.js +5 -5
- package/dist/bulkActionPopup.js +490 -495
- package/dist/button.js +283 -291
- package/dist/cascadingComboBox.js +249 -258
- package/dist/ckeditor/ckConfigurator.js +26 -19
- package/dist/ckeditor/dtdHandler.js +11 -9
- package/dist/class/selector.js +441 -450
- package/dist/component/resizable.js +1 -1
- package/dist/component/windowed.js +285 -294
- package/dist/component.js +419 -428
- package/dist/contextualPopup.js +417 -426
- package/dist/dashboard.js +300 -309
- package/dist/datalist.js +753 -762
- package/dist/datatable/filterStrategy/multiple.js +1 -1
- package/dist/datatable/filterStrategy/single.js +1 -1
- package/dist/datatable.js +1527 -1550
- package/dist/dateRange/dateRange.js +393 -402
- package/dist/datetime/picker.js +665 -672
- package/dist/deleter.js +368 -377
- package/dist/destination/selector.js +286 -295
- package/dist/dialog/alert.js +3 -3
- package/dist/dialog/confirm.js +1 -1
- package/dist/dialog/confirmDelete.js +216 -225
- package/dist/dialog.js +650 -654
- package/dist/disabler.js +8 -8
- package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +166 -175
- package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +518 -527
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +380 -389
- package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +539 -548
- package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +369 -378
- package/dist/documentViewer/providers/pdfViewer.js +184 -193
- package/dist/documentViewer.js +292 -301
- package/dist/dropdown.js +383 -392
- package/dist/durationer.js +5 -5
- package/dist/dynamicComponent.js +597 -598
- package/dist/feedback.js +356 -362
- package/dist/figure/FigureStateActive.js +117 -108
- package/dist/filesender.js +2 -2
- package/dist/filter.js +230 -239
- package/dist/form/dropdownForm.js +355 -357
- package/dist/form/form.js +919 -690
- package/dist/form/simpleForm.js +1 -1
- package/dist/form/validator/renderer.js +233 -235
- package/dist/form/validator/validator.js +257 -189
- package/dist/form/widget/definitions.js +1 -1
- package/dist/form/widget/providers/checkBox.js +254 -259
- package/dist/form/widget/providers/comboBox.js +187 -192
- package/dist/form/widget/providers/default.js +8 -9
- package/dist/form/widget/providers/hidden.js +170 -179
- package/dist/form/widget/providers/hiddenBox.js +262 -267
- package/dist/form/widget/providers/radioBox.js +216 -225
- package/dist/form/widget/providers/textArea.js +187 -196
- package/dist/form/widget/providers/textBox.js +2 -3
- package/dist/form/widget/widget.js +473 -475
- package/dist/formValidator/formValidator.js +1 -1
- package/dist/formValidator/highlighters/message.js +1 -1
- package/dist/generis/form/form.js +314 -323
- package/dist/generis/validator/validator.js +209 -218
- package/dist/generis/widget/checkBox/checkBox.js +218 -227
- package/dist/generis/widget/comboBox/comboBox.js +179 -188
- package/dist/generis/widget/hiddenBox/hiddenBox.js +220 -229
- package/dist/generis/widget/textBox/textBox.js +169 -178
- package/dist/generis/widget/widget.js +246 -255
- package/dist/groupedComboBox.js +222 -231
- package/dist/groupvalidator.js +2 -2
- package/dist/highlighter.js +967 -958
- package/dist/image/ImgStateActive/helper.js +7 -5
- package/dist/image/ImgStateActive/initHelper.js +49 -43
- package/dist/image/ImgStateActive/initMediaEditor.js +24 -20
- package/dist/image/ImgStateActive/mediaSizer.js +14 -12
- package/dist/image/ImgStateActive.js +72 -70
- package/dist/incrementer.js +6 -6
- package/dist/inplacer.js +6 -6
- package/dist/itemButtonList/css/item-button-list.css +1 -0
- package/dist/itemButtonList/css/item-button-list.css.map +1 -1
- package/dist/itemButtonList.js +439 -435
- package/dist/keyNavigation/navigableDomElement.js +51 -38
- package/dist/keyNavigation/navigator.js +85 -70
- package/dist/listbox.js +460 -469
- package/dist/liststyler.js +8 -8
- package/dist/loadingButton/loadingButton.js +209 -218
- package/dist/lock.js +476 -485
- package/dist/login/login.js +475 -484
- package/dist/maths/calculator/basicCalculator.js +235 -244
- package/dist/maths/calculator/calculatorComponent.js +3 -3
- package/dist/maths/calculator/core/board.js +772 -781
- package/dist/maths/calculator/core/expression.js +476 -485
- package/dist/maths/calculator/core/labels.js +228 -237
- package/dist/maths/calculator/core/tokenizer.js +1 -1
- package/dist/maths/calculator/core/tokens.js +163 -170
- package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +244 -253
- package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +279 -288
- package/dist/maths/calculator/scientificCalculator.js +327 -336
- package/dist/mediaEditor/mediaEditorComponent.js +238 -245
- package/dist/mediaEditor/plugins/mediaAlignment/helper.js +7 -7
- package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +229 -235
- package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +580 -589
- package/dist/mediaplayer/players/html5.js +666 -675
- package/dist/mediaplayer/players/youtube.js +419 -424
- package/dist/mediaplayer/support.js +11 -10
- package/dist/mediaplayer/utils/reminder.js +14 -13
- package/dist/mediaplayer/utils/timeObserver.js +10 -11
- package/dist/mediaplayer/youtubeManager.js +164 -145
- package/dist/mediaplayer.js +1565 -1520
- package/dist/mediasizer.js +669 -678
- package/dist/modal.js +10 -17
- package/dist/pageSizeSelector.js +219 -228
- package/dist/pagination/providers/pages.js +280 -289
- package/dist/pagination/providers/simple.js +192 -201
- package/dist/previewer.js +30 -30
- package/dist/progressbar.js +4 -4
- package/dist/report.js +347 -356
- package/dist/resource/filters.js +271 -280
- package/dist/resource/list.js +1264 -1273
- package/dist/resource/selector.js +865 -874
- package/dist/resource/tree.js +1483 -1492
- package/dist/resourcemgr/fileBrowser.js +564 -569
- package/dist/resourcemgr/filePreview.js +16 -16
- package/dist/resourcemgr/fileSelector.js +515 -524
- package/dist/resourcemgr/util/updatePermissions.js +2 -2
- package/dist/resourcemgr.js +306 -315
- package/dist/searchModal/advancedSearch.js +796 -767
- package/dist/searchModal.js +114 -91
- package/dist/switch/switch.js +298 -307
- package/dist/tabs.js +598 -575
- package/dist/taskQueue/status.js +312 -321
- package/dist/taskQueue/table.js +375 -384
- package/dist/taskQueue/taskQueueModel.js +488 -472
- package/dist/taskQueueButton/taskable.js +264 -273
- package/dist/taskQueueButton/treeButton.js +189 -198
- package/dist/themeLoader.js +24 -23
- package/dist/themes.js +1 -1
- package/dist/toggler.js +3 -3
- package/dist/tooltip.js +295 -304
- package/dist/transformer.js +2 -2
- package/dist/tristateCheckboxGroup.js +311 -320
- package/dist/uploader.js +687 -696
- package/dist/validator/Report.js +1 -1
- package/dist/validator/Validator.js +3 -3
- package/dist/validator/validators.js +9 -9
- package/dist/validator.js +240 -230
- package/dist/waitForMedia.js +1 -1
- package/package.json +3 -3
- package/src/animable/absorbable/css/absorb.css +1 -0
- package/src/animable/absorbable/css/absorb.css.map +1 -1
- package/src/autocomplete/css/autocomplete.css +1 -0
- package/src/autocomplete/css/autocomplete.css.map +1 -1
- package/src/badge/css/badge.css +1 -0
- package/src/badge/css/badge.css.map +1 -1
- package/src/ckeditor/ckConfigurator.js +4 -0
- package/src/itemButtonList/css/item-button-list.css +1 -0
- package/src/itemButtonList/css/item-button-list.css.map +1 -1
- package/src/.DS_Store +0 -0
- package/src/css/basic.css +0 -7826
- package/src/css/basic.css.map +0 -1
- package/src/css/ckeditor/skins/tao/css/dialog.css +0 -950
- package/src/css/ckeditor/skins/tao/css/dialog.css.map +0 -1
- package/src/css/ckeditor/skins/tao/css/editor.css +0 -1850
- package/src/css/ckeditor/skins/tao/css/editor.css.map +0 -1
- package/src/scss/.DS_Store +0 -0
- package/src/scss/basic.scss +0 -16
- package/src/scss/ckeditor/skins/tao/scss/dialog.scss +0 -763
- package/src/scss/ckeditor/skins/tao/scss/editor.scss +0 -111
- package/src/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +0 -59
- package/src/scss/ckeditor/skins/tao/scss/inc/_colorpanel.scss +0 -118
- package/src/scss/ckeditor/skins/tao/scss/inc/_elementspath.scss +0 -69
- package/src/scss/ckeditor/skins/tao/scss/inc/_mainui.scss +0 -194
- package/src/scss/ckeditor/skins/tao/scss/inc/_menu.scss +0 -181
- package/src/scss/ckeditor/skins/tao/scss/inc/_panel.scss +0 -200
- package/src/scss/ckeditor/skins/tao/scss/inc/_presets.scss +0 -32
- package/src/scss/ckeditor/skins/tao/scss/inc/_reset.scss +0 -101
- package/src/scss/ckeditor/skins/tao/scss/inc/_richcombo.scss +0 -213
- package/src/scss/ckeditor/skins/tao/scss/inc/_tao.scss +0 -59
- package/src/scss/ckeditor/skins/tao/scss/inc/_toolbar.scss +0 -301
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff.b64 +0 -1
- package/src/scss/font/tao/tao.eot +0 -0
- package/src/scss/font/tao/tao.svg +0 -235
- package/src/scss/font/tao/tao.ttf +0 -0
- package/src/scss/font/tao/tao.woff +0 -0
- package/src/scss/inc/_base.scss +0 -496
- package/src/scss/inc/_bootstrap.scss +0 -6
- package/src/scss/inc/_buttons.scss +0 -114
- package/src/scss/inc/_colors.scss +0 -88
- package/src/scss/inc/_feedback.scss +0 -150
- package/src/scss/inc/_flex-grid.scss +0 -15
- package/src/scss/inc/_fonts.scss +0 -4
- package/src/scss/inc/_forms.scss +0 -827
- package/src/scss/inc/_functions.scss +0 -283
- package/src/scss/inc/_grid.scss +0 -66
- package/src/scss/inc/_jquery.nouislider.scss +0 -254
- package/src/scss/inc/_normalize.scss +0 -528
- package/src/scss/inc/_report.scss +0 -68
- package/src/scss/inc/_secondary-properties.scss +0 -89
- package/src/scss/inc/_select2.scss +0 -634
- package/src/scss/inc/_toolbars.scss +0 -155
- package/src/scss/inc/_tooltip.scss +0 -312
- package/src/scss/inc/_variables.scss +0 -21
- package/src/scss/inc/base/_highlight.scss +0 -5
- package/src/scss/inc/base/_list-style.scss +0 -59
- package/src/scss/inc/base/_svg.scss +0 -3
- package/src/scss/inc/base/_table.scss +0 -63
- package/src/scss/inc/fonts/_source-sans-pro.scss +0 -29
- package/src/scss/inc/fonts/_tao-icon-classes.scss +0 -226
- package/src/scss/inc/fonts/_tao-icon-def.scss +0 -12
- package/src/scss/inc/fonts/_tao-icon-vars.scss +0 -240
package/dist/searchModal.js
CHANGED
|
@@ -40,6 +40,16 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
40
40
|
return target;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
function _typeof(obj) {
|
|
44
|
+
"@babel/helpers - typeof";
|
|
45
|
+
|
|
46
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
47
|
+
return typeof obj;
|
|
48
|
+
} : function (obj) {
|
|
49
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
50
|
+
}, _typeof(obj);
|
|
51
|
+
}
|
|
52
|
+
|
|
43
53
|
function _defineProperty(obj, key, value) {
|
|
44
54
|
if (key in obj) {
|
|
45
55
|
Object.defineProperty(obj, key, {
|
|
@@ -55,25 +65,6 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
55
65
|
return obj;
|
|
56
66
|
}
|
|
57
67
|
|
|
58
|
-
/**
|
|
59
|
-
* This program is free software; you can redistribute it and/or
|
|
60
|
-
* modify it under the terms of the GNU General Public License
|
|
61
|
-
* as published by the Free Software Foundation; under version 2
|
|
62
|
-
* of the License (non-upgradable).
|
|
63
|
-
*
|
|
64
|
-
* This program is distributed in the hope that it will be useful,
|
|
65
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
66
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
67
|
-
* GNU General Public License for more details.
|
|
68
|
-
*
|
|
69
|
-
* You should have received a copy of the GNU General Public License
|
|
70
|
-
* along with this program; if not, write to the Free Software
|
|
71
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
72
|
-
*
|
|
73
|
-
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*/
|
|
77
68
|
function Helpers0 (hb) {
|
|
78
69
|
//register a i18n helper
|
|
79
70
|
hb.registerHelper('__', function (key) {
|
|
@@ -111,7 +102,7 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
111
102
|
if (value !== null || value !== undefined) {
|
|
112
103
|
if (typeof value === 'boolean') {
|
|
113
104
|
value = value ? 'true' : 'false';
|
|
114
|
-
} else if (
|
|
105
|
+
} else if (_typeof(value) === 'object') {
|
|
115
106
|
value = _.values(value).join(' ');
|
|
116
107
|
}
|
|
117
108
|
} else {
|
|
@@ -232,34 +223,34 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
232
223
|
*/
|
|
233
224
|
|
|
234
225
|
function searchModalFactory(config) {
|
|
235
|
-
|
|
226
|
+
var defaults = {
|
|
236
227
|
renderTo: 'body',
|
|
237
228
|
criterias: {},
|
|
238
229
|
searchOnInit: true,
|
|
239
230
|
maxListSize: 5
|
|
240
231
|
}; // Private properties to be easily accessible by instance methods
|
|
241
232
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
233
|
+
var $container = null;
|
|
234
|
+
var $searchInput = null;
|
|
235
|
+
var $searchButton = null;
|
|
236
|
+
var $clearButton = null;
|
|
237
|
+
var running = false;
|
|
238
|
+
var searchStore = null;
|
|
239
|
+
var resourceSelector = null;
|
|
240
|
+
var $classFilterContainer = null;
|
|
241
|
+
var $classFilterInput = null;
|
|
242
|
+
var $classTreeContainer = null;
|
|
243
|
+
var advancedSearch = null; // resorce selector
|
|
244
|
+
|
|
245
|
+
var isResourceSelector = !config.hideResourceSelector;
|
|
246
|
+
var rootClassUri = config.rootClassUri;
|
|
256
247
|
/**
|
|
257
248
|
* Creates search modal, inits template selectors, inits search store, and once is created triggers initial search
|
|
258
249
|
* rootClassUri is sent to advancedSearch factory for disabling in whitelisted sections
|
|
259
250
|
*/
|
|
260
251
|
|
|
261
252
|
function renderModal() {
|
|
262
|
-
|
|
253
|
+
var promises = [];
|
|
263
254
|
initModal();
|
|
264
255
|
initUiSelectors();
|
|
265
256
|
advancedSearch = advancedSearchFactory({
|
|
@@ -269,10 +260,12 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
269
260
|
});
|
|
270
261
|
promises.push(initClassFilter());
|
|
271
262
|
promises.push(initSearchStore());
|
|
272
|
-
Promise.all(promises).then(()
|
|
263
|
+
Promise.all(promises).then(function () {
|
|
273
264
|
instance.trigger('ready');
|
|
274
265
|
$searchButton.trigger('click');
|
|
275
|
-
}).catch(
|
|
266
|
+
}).catch(function (e) {
|
|
267
|
+
return instance.trigger('error', e);
|
|
268
|
+
});
|
|
276
269
|
}
|
|
277
270
|
/**
|
|
278
271
|
* Removes search modal
|
|
@@ -285,14 +278,16 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
285
278
|
} // Creates new component
|
|
286
279
|
|
|
287
280
|
|
|
288
|
-
|
|
281
|
+
var instance = component({}, defaults).setTemplate(layoutTpl).on('render', renderModal).on('destroy', destroyModal);
|
|
289
282
|
/**
|
|
290
283
|
* Creates search modal
|
|
291
284
|
*/
|
|
292
285
|
|
|
293
286
|
function initModal() {
|
|
294
287
|
$container = instance.getElement();
|
|
295
|
-
$container.addClass('modal').on('closed.modal', ()
|
|
288
|
+
$container.addClass('modal').on('closed.modal', function () {
|
|
289
|
+
return instance.destroy();
|
|
290
|
+
}).modal({
|
|
296
291
|
disableEscape: false,
|
|
297
292
|
width: $$1(window).width(),
|
|
298
293
|
modalCloseClass: 'modal-close-left'
|
|
@@ -304,13 +299,13 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
304
299
|
|
|
305
300
|
|
|
306
301
|
function initClassFilter() {
|
|
307
|
-
return new Promise(resolve
|
|
302
|
+
return new Promise(function (resolve) {
|
|
308
303
|
if (!isResourceSelector) {
|
|
309
304
|
$classFilterContainer.hide();
|
|
310
305
|
return resolve();
|
|
311
306
|
}
|
|
312
307
|
|
|
313
|
-
|
|
308
|
+
var initialClassUri = instance.config.criterias && instance.config.criterias.class ? instance.config.criterias.class : rootClassUri;
|
|
314
309
|
resourceSelector = resourceSelectorFactory($$1('.class-tree', $container), {
|
|
315
310
|
//set up the inner resource selector
|
|
316
311
|
selectionMode: 'single',
|
|
@@ -320,32 +315,34 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
320
315
|
showSelection: false
|
|
321
316
|
}); // when a class query is triggered, update selector options with received resources
|
|
322
317
|
|
|
323
|
-
resourceSelector.on('query', params
|
|
324
|
-
|
|
318
|
+
resourceSelector.on('query', function (params) {
|
|
319
|
+
var classOnlyParams = _objectSpread2(_objectSpread2({}, params), {}, {
|
|
325
320
|
classOnly: true
|
|
326
321
|
});
|
|
327
322
|
|
|
328
|
-
|
|
329
|
-
request(route, classOnlyParams).then(response
|
|
323
|
+
var route = urlUtil.route('getAll', 'RestResource', 'tao');
|
|
324
|
+
request(route, classOnlyParams).then(function (response) {
|
|
330
325
|
if (response.permissions && response.permissions.data && response.permissions.supportedRights && response.permissions.supportedRights.length > 0) {
|
|
331
326
|
manageClassTreePermissions(response);
|
|
332
327
|
}
|
|
333
328
|
|
|
334
329
|
resourceSelector.update(response.resources, classOnlyParams);
|
|
335
|
-
}).catch(
|
|
330
|
+
}).catch(function (e) {
|
|
331
|
+
return instance.trigger('error', e);
|
|
332
|
+
});
|
|
336
333
|
});
|
|
337
334
|
/*
|
|
338
335
|
* the first time selector opions are updated the root class is selected. Promise is
|
|
339
336
|
* resolved so init process continues only when class input value has been set
|
|
340
337
|
*/
|
|
341
338
|
|
|
342
|
-
resourceSelector.on('update', ()
|
|
339
|
+
resourceSelector.on('update', function () {
|
|
343
340
|
resourceSelector.off('update');
|
|
344
341
|
resourceSelector.select(initialClassUri);
|
|
345
342
|
resolve();
|
|
346
343
|
}); // then new class is selected, set its label into class filter input and hide filter container, then request class properties
|
|
347
344
|
|
|
348
|
-
resourceSelector.on('change', selectedValue
|
|
345
|
+
resourceSelector.on('change', function (selectedValue) {
|
|
349
346
|
/*
|
|
350
347
|
* on searchModal init we set manually the selector to the provided config.rootClassUri. When a selector
|
|
351
348
|
* is set manually Selector component execs @clearSelection which triggers a change event
|
|
@@ -355,20 +352,24 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
355
352
|
return;
|
|
356
353
|
}
|
|
357
354
|
|
|
358
|
-
|
|
355
|
+
var classUri = _.map(selectedValue, 'classUri')[0];
|
|
359
356
|
|
|
360
|
-
|
|
357
|
+
var label = _.map(selectedValue, 'label')[0];
|
|
361
358
|
|
|
362
|
-
|
|
359
|
+
var uri = _.map(selectedValue, 'uri')[0];
|
|
363
360
|
|
|
364
|
-
|
|
365
|
-
classUri,
|
|
361
|
+
var route = urlUtil.route('getWithMapping', 'ClassMetadata', 'tao', {
|
|
362
|
+
classUri: classUri,
|
|
366
363
|
maxListSize: instance.config.maxListSize
|
|
367
364
|
});
|
|
368
365
|
$classFilterInput.html(label);
|
|
369
366
|
$classFilterInput.data('uri', uri);
|
|
370
367
|
$classTreeContainer.hide();
|
|
371
|
-
advancedSearch.updateCriteria(route).then(
|
|
368
|
+
advancedSearch.updateCriteria(route).then(function () {
|
|
369
|
+
return instance.trigger('criteriaListUpdated');
|
|
370
|
+
}).catch(function (e) {
|
|
371
|
+
return instance.trigger('error', e);
|
|
372
|
+
});
|
|
372
373
|
});
|
|
373
374
|
setResourceSelectorUIBehaviour();
|
|
374
375
|
});
|
|
@@ -381,9 +382,11 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
381
382
|
|
|
382
383
|
|
|
383
384
|
function manageClassTreePermissions(classTree) {
|
|
384
|
-
|
|
385
|
-
_.forEach(resources, (resource, index, array)
|
|
386
|
-
if (classTree.permissions.data[resource.uri] && classTree.permissions.data[resource.uri].find(
|
|
385
|
+
var disableBlockedClasses = function disableBlockedClasses(resources) {
|
|
386
|
+
_.forEach(resources, function (resource, index, array) {
|
|
387
|
+
if (classTree.permissions.data[resource.uri] && classTree.permissions.data[resource.uri].find(function (permission) {
|
|
388
|
+
return permission === 'READ';
|
|
389
|
+
})) {
|
|
387
390
|
if (resource.children) {
|
|
388
391
|
disableBlockedClasses(resource.children);
|
|
389
392
|
}
|
|
@@ -410,7 +413,7 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
410
413
|
$classFilterContainer = $$1('.class-filter-container', $container);
|
|
411
414
|
$searchButton.on('click', search);
|
|
412
415
|
$clearButton.on('click', clear);
|
|
413
|
-
|
|
416
|
+
var shortcuts = shortcutRegistry($searchInput);
|
|
414
417
|
shortcuts.clear().add('enter', search);
|
|
415
418
|
$searchInput.val(instance.config.criterias && instance.config.criterias.search ? instance.config.criterias.search : '');
|
|
416
419
|
}
|
|
@@ -420,7 +423,7 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
420
423
|
|
|
421
424
|
|
|
422
425
|
function setResourceSelectorUIBehaviour() {
|
|
423
|
-
$container.on('mousedown', ()
|
|
426
|
+
$container.on('mousedown', function () {
|
|
424
427
|
$classTreeContainer.hide();
|
|
425
428
|
});
|
|
426
429
|
/**
|
|
@@ -428,18 +431,26 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
428
431
|
* on class filter input will toggle resource selector
|
|
429
432
|
*/
|
|
430
433
|
|
|
431
|
-
|
|
432
|
-
shortcuts.add('enter', ()
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
shortcuts.add('
|
|
434
|
+
var shortcuts = shortcutRegistry($classFilterInput);
|
|
435
|
+
shortcuts.add('enter', function () {
|
|
436
|
+
return $classTreeContainer.show();
|
|
437
|
+
});
|
|
438
|
+
shortcuts.add('space', function () {
|
|
439
|
+
return $classTreeContainer.show();
|
|
440
|
+
});
|
|
441
|
+
shortcuts.add('backspace', function () {
|
|
442
|
+
return $classTreeContainer.hide();
|
|
443
|
+
});
|
|
444
|
+
shortcuts.add('escape', function () {
|
|
445
|
+
return $classTreeContainer.hide();
|
|
446
|
+
}, {
|
|
436
447
|
propagate: false
|
|
437
448
|
});
|
|
438
449
|
/**
|
|
439
450
|
* clicking on class filter container will toggle resource selector
|
|
440
451
|
*/
|
|
441
452
|
|
|
442
|
-
$classFilterContainer.on('click', e
|
|
453
|
+
$classFilterContainer.on('click', function (e) {
|
|
443
454
|
$classTreeContainer.toggle();
|
|
444
455
|
});
|
|
445
456
|
/**
|
|
@@ -448,11 +459,11 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
448
459
|
* by searchModal.mouseDown listener
|
|
449
460
|
*/
|
|
450
461
|
|
|
451
|
-
$classFilterContainer.on('mousedown', e
|
|
462
|
+
$classFilterContainer.on('mousedown', function (e) {
|
|
452
463
|
e.stopPropagation();
|
|
453
464
|
}); // clicking on resource selector will stopPropagation to prevent be closed by searchModal.mouseDown listener
|
|
454
465
|
|
|
455
|
-
$classTreeContainer.on('mousedown', e
|
|
466
|
+
$classTreeContainer.on('mousedown', function (e) {
|
|
456
467
|
e.stopPropagation();
|
|
457
468
|
});
|
|
458
469
|
}
|
|
@@ -465,7 +476,9 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
465
476
|
function initSearchStore() {
|
|
466
477
|
return store('search').then(function (store) {
|
|
467
478
|
searchStore = store;
|
|
468
|
-
}).catch(
|
|
479
|
+
}).catch(function (e) {
|
|
480
|
+
return instance.trigger('error', e);
|
|
481
|
+
});
|
|
469
482
|
}
|
|
470
483
|
/**
|
|
471
484
|
* Request search results and manages its results
|
|
@@ -473,10 +486,10 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
473
486
|
|
|
474
487
|
|
|
475
488
|
function search() {
|
|
476
|
-
|
|
477
|
-
|
|
489
|
+
var query = buildComplexQuery();
|
|
490
|
+
var classFilterUri = isResourceSelector ? $classFilterInput.data('uri').trim() : rootClassUri; //throttle and control to prevent sending too many requests
|
|
478
491
|
|
|
479
|
-
|
|
492
|
+
var searchHandler = _.throttle(function (query) {
|
|
480
493
|
if (running === false) {
|
|
481
494
|
running = true;
|
|
482
495
|
$$1.ajax({
|
|
@@ -488,9 +501,15 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
488
501
|
structure: context.shownStructure
|
|
489
502
|
},
|
|
490
503
|
dataType: 'json'
|
|
491
|
-
}).done(data
|
|
492
|
-
appendDefaultDatasetToDatatable(data.data).then(
|
|
493
|
-
|
|
504
|
+
}).done(function (data) {
|
|
505
|
+
appendDefaultDatasetToDatatable(data.data).then(function () {
|
|
506
|
+
return buildSearchResultsDatatable(data.data);
|
|
507
|
+
}).catch(function (e) {
|
|
508
|
+
return instance.trigger('error', e);
|
|
509
|
+
});
|
|
510
|
+
}).always(function () {
|
|
511
|
+
return running = false;
|
|
512
|
+
});
|
|
494
513
|
}
|
|
495
514
|
}, 100);
|
|
496
515
|
|
|
@@ -502,8 +521,8 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
502
521
|
|
|
503
522
|
|
|
504
523
|
function buildComplexQuery() {
|
|
505
|
-
|
|
506
|
-
|
|
524
|
+
var $searchInputValue = $searchInput.val().trim();
|
|
525
|
+
var query = $searchInputValue;
|
|
507
526
|
query += advancedSearch.getAdvancedCriteriaQuery(query !== '');
|
|
508
527
|
return query;
|
|
509
528
|
}
|
|
@@ -518,11 +537,11 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
518
537
|
return new Promise(function (resolve, reject) {
|
|
519
538
|
// If no search on init, get dataset from searchStore
|
|
520
539
|
if (instance.config.searchOnInit === false) {
|
|
521
|
-
searchStore.getItem('results').then(storedSearchResults
|
|
540
|
+
searchStore.getItem('results').then(function (storedSearchResults) {
|
|
522
541
|
instance.config.searchOnInit = true;
|
|
523
542
|
data.storedSearchResults = storedSearchResults;
|
|
524
543
|
resolve();
|
|
525
|
-
}).catch(e
|
|
544
|
+
}).catch(function (e) {
|
|
526
545
|
instance.trigger('error', e);
|
|
527
546
|
reject(new Error('Error appending default dataset from searchStore to datatable'));
|
|
528
547
|
});
|
|
@@ -539,8 +558,8 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
539
558
|
|
|
540
559
|
function buildSearchResultsDatatable(data) {
|
|
541
560
|
//update the section container
|
|
542
|
-
|
|
543
|
-
|
|
561
|
+
var $tableContainer = $$1('<div class="flex-container-full"></div>');
|
|
562
|
+
var section = $$1('.content-container', $container);
|
|
544
563
|
section.empty();
|
|
545
564
|
section.append($tableContainer);
|
|
546
565
|
$tableContainer.on('load.datatable', searchResultsLoaded); //create datatable
|
|
@@ -578,10 +597,10 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
578
597
|
replaceSearchResultsDatatableWithMessage('no-matches');
|
|
579
598
|
}
|
|
580
599
|
|
|
581
|
-
instance.trigger(
|
|
600
|
+
instance.trigger("datatable-loaded");
|
|
582
601
|
updateSearchStore({
|
|
583
602
|
action: 'update',
|
|
584
|
-
dataset,
|
|
603
|
+
dataset: dataset,
|
|
585
604
|
context: context.shownStructure,
|
|
586
605
|
criterias: {
|
|
587
606
|
search: $searchInput.val(),
|
|
@@ -599,7 +618,7 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
599
618
|
|
|
600
619
|
|
|
601
620
|
function updateSearchStore(data) {
|
|
602
|
-
|
|
621
|
+
var promises = [];
|
|
603
622
|
|
|
604
623
|
if (data.action === 'clear') {
|
|
605
624
|
promises.push(searchStore.clear());
|
|
@@ -609,7 +628,11 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
609
628
|
promises.push(data.dataset.records === 0 ? searchStore.removeItem('results') : searchStore.setItem('results', data.dataset));
|
|
610
629
|
}
|
|
611
630
|
|
|
612
|
-
Promise.all(promises).then(
|
|
631
|
+
Promise.all(promises).then(function () {
|
|
632
|
+
return instance.trigger("store-updated");
|
|
633
|
+
}).catch(function (e) {
|
|
634
|
+
return instance.trigger('error', e);
|
|
635
|
+
});
|
|
613
636
|
}
|
|
614
637
|
/**
|
|
615
638
|
* Clear search input, criteria and results from both, view and store.
|
|
@@ -634,10 +657,10 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
634
657
|
|
|
635
658
|
|
|
636
659
|
function replaceSearchResultsDatatableWithMessage(reason) {
|
|
637
|
-
|
|
660
|
+
var section = $$1('.content-container', $container);
|
|
638
661
|
section.empty();
|
|
639
|
-
|
|
640
|
-
|
|
662
|
+
var message = '';
|
|
663
|
+
var icon = '';
|
|
641
664
|
|
|
642
665
|
if (reason === 'no-query') {
|
|
643
666
|
message = __('Please define your search in the search panel.');
|
|
@@ -647,9 +670,9 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
|
|
|
647
670
|
icon = 'icon-info';
|
|
648
671
|
}
|
|
649
672
|
|
|
650
|
-
|
|
651
|
-
message,
|
|
652
|
-
icon
|
|
673
|
+
var infoMessage = infoMessageTpl({
|
|
674
|
+
message: message,
|
|
675
|
+
icon: icon
|
|
653
676
|
});
|
|
654
677
|
section.append(infoMessage);
|
|
655
678
|
} // return initialized instance of searchModal
|