@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
|
@@ -1,309 +1,300 @@
|
|
|
1
1
|
define(['jquery', 'lodash', 'i18n', 'ui/report', 'ui/feedback', 'layout/loading-bar', 'handlebars', 'lib/dompurify/purify', 'css!ui/taskQueueButton/css/taskable.css'], function ($$1, _, __, reportFactory, feedback, loadingBar, Handlebars, DOMPurify, taskable_css) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
+
reportFactory = reportFactory && Object.prototype.hasOwnProperty.call(reportFactory, 'default') ? reportFactory['default'] : reportFactory;
|
|
7
|
+
feedback = feedback && Object.prototype.hasOwnProperty.call(feedback, 'default') ? feedback['default'] : feedback;
|
|
8
|
+
loadingBar = loadingBar && Object.prototype.hasOwnProperty.call(loadingBar, 'default') ? loadingBar['default'] : loadingBar;
|
|
9
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
10
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
11
|
+
|
|
12
|
+
function _typeof(obj) {
|
|
13
|
+
"@babel/helpers - typeof";
|
|
14
|
+
|
|
15
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
16
|
+
return typeof obj;
|
|
17
|
+
} : function (obj) {
|
|
18
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
19
|
+
}, _typeof(obj);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function Helpers0 (hb) {
|
|
23
|
+
//register a i18n helper
|
|
24
|
+
hb.registerHelper('__', function (key) {
|
|
25
|
+
return __(key);
|
|
26
|
+
});
|
|
12
27
|
/**
|
|
13
|
-
*
|
|
14
|
-
* modify it under the terms of the GNU General Public License
|
|
15
|
-
* as published by the Free Software Foundation; under version 2
|
|
16
|
-
* of the License (non-upgradable).
|
|
17
|
-
*
|
|
18
|
-
* This program is distributed in the hope that it will be useful,
|
|
19
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
21
|
-
* GNU General Public License for more details.
|
|
22
|
-
*
|
|
23
|
-
* You should have received a copy of the GNU General Public License
|
|
24
|
-
* along with this program; if not, write to the Free Software
|
|
25
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
26
|
-
*
|
|
27
|
-
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
28
|
-
*
|
|
28
|
+
* Register dompurify helper
|
|
29
29
|
*
|
|
30
|
+
* https://github.com/cure53/DOMPurify
|
|
31
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
32
|
+
* to make output safe for template systems
|
|
30
33
|
*/
|
|
31
|
-
function Helpers0 (hb) {
|
|
32
|
-
//register a i18n helper
|
|
33
|
-
hb.registerHelper('__', function (key) {
|
|
34
|
-
return __(key);
|
|
35
|
-
});
|
|
36
|
-
/**
|
|
37
|
-
* Register dompurify helper
|
|
38
|
-
*
|
|
39
|
-
* https://github.com/cure53/DOMPurify
|
|
40
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
41
|
-
* to make output safe for template systems
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
hb.registerHelper('dompurify', function (context) {
|
|
45
|
-
return DOMPurify.sanitize(context);
|
|
46
|
-
});
|
|
47
|
-
/**
|
|
48
|
-
* Register join helper
|
|
49
|
-
*
|
|
50
|
-
* Example :
|
|
51
|
-
* var values = {a:v1, b:v2, c:v3};
|
|
52
|
-
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
53
|
-
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
54
|
-
*/
|
|
55
|
-
|
|
56
|
-
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
57
|
-
var fragments = [];
|
|
58
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
59
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
60
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
61
|
-
|
|
62
|
-
_.forIn(arr, function (value, key) {
|
|
63
|
-
var fragment = '';
|
|
64
|
-
|
|
65
|
-
if (value !== null || value !== undefined) {
|
|
66
|
-
if (typeof value === 'boolean') {
|
|
67
|
-
value = value ? 'true' : 'false';
|
|
68
|
-
} else if (typeof value === 'object') {
|
|
69
|
-
value = _.values(value).join(' ');
|
|
70
|
-
}
|
|
71
|
-
} else {
|
|
72
|
-
value = '';
|
|
73
|
-
}
|
|
74
34
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
35
|
+
hb.registerHelper('dompurify', function (context) {
|
|
36
|
+
return DOMPurify.sanitize(context);
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* Register join helper
|
|
40
|
+
*
|
|
41
|
+
* Example :
|
|
42
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
43
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
44
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
45
|
+
*/
|
|
78
46
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
47
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
48
|
+
var fragments = [];
|
|
49
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
50
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
51
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
82
52
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
//it also adds a local variable "i" as the index in each iteration loop
|
|
53
|
+
_.forIn(arr, function (value, key) {
|
|
54
|
+
var fragment = '';
|
|
86
55
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
56
|
+
if (value !== null || value !== undefined) {
|
|
57
|
+
if (typeof value === 'boolean') {
|
|
58
|
+
value = value ? 'true' : 'false';
|
|
59
|
+
} else if (_typeof(value) === 'object') {
|
|
60
|
+
value = _.values(value).join(' ');
|
|
61
|
+
}
|
|
62
|
+
} else {
|
|
63
|
+
value = '';
|
|
64
|
+
}
|
|
92
65
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
i: i
|
|
96
|
-
}));
|
|
66
|
+
if (keyValueGlue !== undefined) {
|
|
67
|
+
fragment += key + keyValueGlue;
|
|
97
68
|
}
|
|
98
69
|
|
|
99
|
-
|
|
70
|
+
fragment += wrapper + value + wrapper;
|
|
71
|
+
fragments.push(fragment);
|
|
100
72
|
});
|
|
101
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
102
|
-
if (var1 == var2) {
|
|
103
|
-
return options.fn(this);
|
|
104
|
-
} else {
|
|
105
|
-
return options.inverse(this);
|
|
106
|
-
}
|
|
107
|
-
}); // register a "get property" helper
|
|
108
|
-
// it gets the named property from the provided context
|
|
109
73
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
// it checks if value is in array
|
|
74
|
+
return fragments.join(fragmentGlue);
|
|
75
|
+
}); //register a classic "for loop" helper
|
|
76
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
114
77
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
78
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
79
|
+
var ret = '';
|
|
80
|
+
startIndex = parseInt(startIndex);
|
|
81
|
+
stopIndex = parseInt(stopIndex);
|
|
82
|
+
increment = parseInt(increment);
|
|
121
83
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
function
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
84
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
85
|
+
ret += options.fn(_.extend({}, this, {
|
|
86
|
+
i: i
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return ret;
|
|
91
|
+
});
|
|
92
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
93
|
+
if (var1 == var2) {
|
|
94
|
+
return options.fn(this);
|
|
95
|
+
} else {
|
|
96
|
+
return options.inverse(this);
|
|
97
|
+
}
|
|
98
|
+
}); // register a "get property" helper
|
|
99
|
+
// it gets the named property from the provided context
|
|
100
|
+
|
|
101
|
+
hb.registerHelper('property', function (name, context) {
|
|
102
|
+
return context[name] || '';
|
|
103
|
+
}); // register an 'includes' helper
|
|
104
|
+
// it checks if value is in array
|
|
143
105
|
|
|
106
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
107
|
+
if (_.contains(haystack, needle)) {
|
|
108
|
+
return options.fn(this);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (!Helpers0.__initialized) {
|
|
114
|
+
Helpers0(Handlebars);
|
|
115
|
+
Helpers0.__initialized = true;
|
|
116
|
+
}
|
|
117
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
118
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
119
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
120
|
+
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression;
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
buffer += "<div class=\"task-report-container\">\n <div class=\"section-header flex-container-full\">\n <h2>";
|
|
124
|
+
if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
125
|
+
else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
126
|
+
buffer += escapeExpression(stack1)
|
|
127
|
+
+ "</h2>\n </div>\n <div class=\"main-container flex-container-full report\"></div>\n</div>";
|
|
128
|
+
return buffer;
|
|
129
|
+
});
|
|
130
|
+
function reportTpl(data, options, asString) {
|
|
131
|
+
var html = Template(data, options);
|
|
132
|
+
return (asString || true) ? html : $(html);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* This program is free software; you can redistribute it and/or
|
|
137
|
+
* modify it under the terms of the GNU General Public License
|
|
138
|
+
* as published by the Free Software Foundation; under version 2
|
|
139
|
+
* of the License (non-upgradable).
|
|
140
|
+
*
|
|
141
|
+
* This program is distributed in the hope that it will be useful,
|
|
142
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
143
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
144
|
+
* GNU General Public License for more details.
|
|
145
|
+
*
|
|
146
|
+
* You should have received a copy of the GNU General Public License
|
|
147
|
+
* along with this program; if not, write to the Free Software
|
|
148
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
149
|
+
*
|
|
150
|
+
* Copyright (c) 2017 (original work) Open Assessment Technologies SA;
|
|
151
|
+
*/
|
|
152
|
+
var defaultConfig = {};
|
|
153
|
+
var taskableComponent = {
|
|
144
154
|
/**
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
* of the License (non-upgradable).
|
|
149
|
-
*
|
|
150
|
-
* This program is distributed in the hope that it will be useful,
|
|
151
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
152
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
153
|
-
* GNU General Public License for more details.
|
|
154
|
-
*
|
|
155
|
-
* You should have received a copy of the GNU General Public License
|
|
156
|
-
* along with this program; if not, write to the Free Software
|
|
157
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
158
|
-
*
|
|
159
|
-
* Copyright (c) 2017 (original work) Open Assessment Technologies SA;
|
|
155
|
+
* Set configuration for task creation
|
|
156
|
+
* @param config
|
|
157
|
+
* @returns {taskableComponent}
|
|
160
158
|
*/
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Set configuration for task creation
|
|
165
|
-
* @param config
|
|
166
|
-
* @returns {taskableComponent}
|
|
167
|
-
*/
|
|
168
|
-
setTaskConfig: function setTaskConfig(config) {
|
|
169
|
-
_.assign(this.config, config);
|
|
170
|
-
|
|
171
|
-
return this;
|
|
172
|
-
},
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Create a task
|
|
176
|
-
* @param requestUrl
|
|
177
|
-
* @param requestData
|
|
178
|
-
*/
|
|
179
|
-
createTask: function createTask() {
|
|
180
|
-
var self = this;
|
|
181
|
-
var taskQueue,
|
|
182
|
-
requestUrl,
|
|
183
|
-
requestData = {}; //prepare the request parameter if applicable
|
|
184
|
-
|
|
185
|
-
if (_.isFunction(this.config.taskCreationData)) {
|
|
186
|
-
requestData = this.config.taskCreationData.call(this);
|
|
187
|
-
} else if (_.isPlainObject(this.config.taskCreationData)) {
|
|
188
|
-
requestData = this.config.taskCreationData;
|
|
189
|
-
}
|
|
159
|
+
setTaskConfig: function setTaskConfig(config) {
|
|
160
|
+
_.assign(this.config, config);
|
|
190
161
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
162
|
+
return this;
|
|
163
|
+
},
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Create a task
|
|
167
|
+
* @param requestUrl
|
|
168
|
+
* @param requestData
|
|
169
|
+
*/
|
|
170
|
+
createTask: function createTask() {
|
|
171
|
+
var self = this;
|
|
172
|
+
var taskQueue,
|
|
173
|
+
requestUrl,
|
|
174
|
+
requestData = {}; //prepare the request parameter if applicable
|
|
175
|
+
|
|
176
|
+
if (_.isFunction(this.config.taskCreationData)) {
|
|
177
|
+
requestData = this.config.taskCreationData.call(this);
|
|
178
|
+
} else if (_.isPlainObject(this.config.taskCreationData)) {
|
|
179
|
+
requestData = this.config.taskCreationData;
|
|
180
|
+
}
|
|
194
181
|
|
|
195
|
-
|
|
182
|
+
if (!this.config.taskCreationUrl) {
|
|
183
|
+
return this.trigger('error', 'the request url is required to create a task');
|
|
184
|
+
}
|
|
196
185
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
186
|
+
requestUrl = this.config.taskCreationUrl;
|
|
187
|
+
|
|
188
|
+
if (!this.config.taskQueue) {
|
|
189
|
+
return this.trigger('error', 'the taskQueue model is required to create a task');
|
|
190
|
+
}
|
|
200
191
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
//immediately archive the finished task as there is no need to display this task in the queue list
|
|
214
|
-
return taskQueue.archive(task.id);
|
|
215
|
-
}).then(function () {
|
|
216
|
-
self.trigger('finished', result);
|
|
217
|
-
taskQueue.pollAll();
|
|
218
|
-
}).catch(function (err) {
|
|
219
|
-
self.trigger('error', err);
|
|
220
|
-
taskQueue.pollAll();
|
|
221
|
-
});
|
|
222
|
-
} else {
|
|
192
|
+
taskQueue = this.config.taskQueue;
|
|
193
|
+
loadingBar.start();
|
|
194
|
+
taskQueue.pollAllStop();
|
|
195
|
+
taskQueue.create(requestUrl, requestData).then(function (result) {
|
|
196
|
+
var infoBox,
|
|
197
|
+
message,
|
|
198
|
+
task = result.task;
|
|
199
|
+
|
|
200
|
+
if (result.finished) {
|
|
201
|
+
if (task.hasFile) {
|
|
202
|
+
//download if its is a export-typed task
|
|
203
|
+
taskQueue.download(task.id).then(function () {
|
|
223
204
|
//immediately archive the finished task as there is no need to display this task in the queue list
|
|
224
|
-
taskQueue.archive(task.id)
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
205
|
+
return taskQueue.archive(task.id);
|
|
206
|
+
}).then(function () {
|
|
207
|
+
self.trigger('finished', result);
|
|
208
|
+
taskQueue.pollAll();
|
|
209
|
+
}).catch(function (err) {
|
|
210
|
+
self.trigger('error', err);
|
|
211
|
+
taskQueue.pollAll();
|
|
212
|
+
});
|
|
232
213
|
} else {
|
|
233
|
-
//
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
}).info(message);
|
|
241
|
-
taskQueue.trigger('taskcreated', {
|
|
242
|
-
task: task,
|
|
243
|
-
sourceDom: infoBox.getElement()
|
|
214
|
+
//immediately archive the finished task as there is no need to display this task in the queue list
|
|
215
|
+
taskQueue.archive(task.id).then(function () {
|
|
216
|
+
self.trigger('finished', result);
|
|
217
|
+
taskQueue.pollAll();
|
|
218
|
+
}).catch(function (err) {
|
|
219
|
+
self.trigger('error', err);
|
|
220
|
+
taskQueue.pollAll();
|
|
244
221
|
});
|
|
245
|
-
self.trigger('enqueued', result);
|
|
246
222
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
* @param {String} result - raw result data from the task creation action
|
|
262
|
-
*/
|
|
263
|
-
displayReport: function displayReport(report, title, result) {
|
|
264
|
-
var self = this,
|
|
265
|
-
$reportContainer;
|
|
266
|
-
|
|
267
|
-
if (this.config.taskReportContainer instanceof $$1) {
|
|
268
|
-
$reportContainer = $$1(reportTpl({
|
|
269
|
-
title: title
|
|
270
|
-
}));
|
|
271
|
-
this.config.taskReportContainer.html($reportContainer);
|
|
272
|
-
return reportFactory({
|
|
273
|
-
actions: [{
|
|
274
|
-
id: 'continue',
|
|
275
|
-
icon: 'right',
|
|
276
|
-
title: 'continue',
|
|
277
|
-
label: __('Continue')
|
|
278
|
-
}]
|
|
279
|
-
}, report).on('action-continue', function () {
|
|
280
|
-
self.trigger('continue', result);
|
|
281
|
-
}).render($reportContainer.find('.report'));
|
|
223
|
+
} else {
|
|
224
|
+
//enqueuing process:
|
|
225
|
+
message = __('<strong> %s </strong> has been moved to the background.', task.taskLabel);
|
|
226
|
+
infoBox = feedback(null, {
|
|
227
|
+
encodeHtml: false,
|
|
228
|
+
timeout: {
|
|
229
|
+
info: 8000
|
|
230
|
+
}
|
|
231
|
+
}).info(message);
|
|
232
|
+
taskQueue.trigger('taskcreated', {
|
|
233
|
+
task: task,
|
|
234
|
+
sourceDom: infoBox.getElement()
|
|
235
|
+
});
|
|
236
|
+
self.trigger('enqueued', result);
|
|
282
237
|
}
|
|
238
|
+
|
|
239
|
+
loadingBar.stop();
|
|
240
|
+
}).catch(function (err) {
|
|
241
|
+
//in case of error display it and continue task queue activity
|
|
242
|
+
taskQueue.pollAll();
|
|
243
|
+
loadingBar.stop();
|
|
244
|
+
self.trigger('error', err);
|
|
245
|
+
});
|
|
246
|
+
},
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* prepare the given container to display the final report
|
|
250
|
+
* @param {Object} report - the standard report object
|
|
251
|
+
* @param {String} title - the report title
|
|
252
|
+
* @param {String} result - raw result data from the task creation action
|
|
253
|
+
*/
|
|
254
|
+
displayReport: function displayReport(report, title, result) {
|
|
255
|
+
var self = this,
|
|
256
|
+
$reportContainer;
|
|
257
|
+
|
|
258
|
+
if (this.config.taskReportContainer instanceof $$1) {
|
|
259
|
+
$reportContainer = $$1(reportTpl({
|
|
260
|
+
title: title
|
|
261
|
+
}));
|
|
262
|
+
this.config.taskReportContainer.html($reportContainer);
|
|
263
|
+
return reportFactory({
|
|
264
|
+
actions: [{
|
|
265
|
+
id: 'continue',
|
|
266
|
+
icon: 'right',
|
|
267
|
+
title: 'continue',
|
|
268
|
+
label: __('Continue')
|
|
269
|
+
}]
|
|
270
|
+
}, report).on('action-continue', function () {
|
|
271
|
+
self.trigger('continue', result);
|
|
272
|
+
}).render($reportContainer.find('.report'));
|
|
283
273
|
}
|
|
284
|
-
}
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
/**
|
|
277
|
+
* @param {Component} component - an instance of ui/component
|
|
278
|
+
* @param {Object} config - task queue creation specific config
|
|
279
|
+
* @param {Object} config.taskQueue - the task queue model to be used
|
|
280
|
+
* @param {String} config.taskCreationUrl - endpoint to create a task
|
|
281
|
+
* @param {Object|Function} [config.taskCreationData] - the parameters that will be send to the task creation request
|
|
282
|
+
* @param {JQuery} [config.taskReportContainer] - the container where the inline report can be printed to
|
|
283
|
+
* @return {taskableComponent}
|
|
284
|
+
*/
|
|
285
|
+
|
|
286
|
+
function makeTaskable(component, config) {
|
|
287
|
+
_.assign(component, taskableComponent);
|
|
285
288
|
/**
|
|
286
|
-
* @
|
|
287
|
-
* @param {Object} config - task queue creation specific config
|
|
288
|
-
* @param {Object} config.taskQueue - the task queue model to be used
|
|
289
|
-
* @param {String} config.taskCreationUrl - endpoint to create a task
|
|
290
|
-
* @param {Object|Function} [config.taskCreationData] - the parameters that will be send to the task creation request
|
|
291
|
-
* @param {JQuery} [config.taskReportContainer] - the container where the inline report can be printed to
|
|
292
|
-
* @return {taskableComponent}
|
|
289
|
+
* @typedef {ui/component} taskableComponent
|
|
293
290
|
*/
|
|
294
291
|
|
|
295
|
-
function makeTaskable(component, config) {
|
|
296
|
-
_.assign(component, taskableComponent);
|
|
297
|
-
/**
|
|
298
|
-
* @typedef {ui/component} taskableComponent
|
|
299
|
-
*/
|
|
300
292
|
|
|
293
|
+
return component.off('.taskable').on('init.taskable', function () {
|
|
294
|
+
_.defaults(this.config, config || {}, defaultConfig);
|
|
295
|
+
});
|
|
296
|
+
}
|
|
301
297
|
|
|
302
|
-
|
|
303
|
-
_.defaults(this.config, config || {}, defaultConfig);
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
return makeTaskable;
|
|
298
|
+
return makeTaskable;
|
|
308
299
|
|
|
309
300
|
});
|