@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/liststyler.js
CHANGED
|
@@ -36,18 +36,18 @@ define(['jquery', 'lodash', 'core/pluginifier', 'util/capitalize'], function ($,
|
|
|
36
36
|
|
|
37
37
|
var listStyles = {
|
|
38
38
|
none: '',
|
|
39
|
-
disc:
|
|
40
|
-
circle:
|
|
41
|
-
square:
|
|
39
|
+
disc: "\u25CF",
|
|
40
|
+
circle: "\u25CB",
|
|
41
|
+
square: "\u25FD",
|
|
42
42
|
decimal: '1',
|
|
43
43
|
'decimal-leading-zero': '01',
|
|
44
44
|
'lower-alpha': 'a',
|
|
45
45
|
'upper-alpha': 'A',
|
|
46
46
|
'lower-roman': 'i',
|
|
47
47
|
'upper-roman': 'I',
|
|
48
|
-
'lower-greek':
|
|
49
|
-
armenian:
|
|
50
|
-
georgian:
|
|
48
|
+
'lower-greek': "\u03B1",
|
|
49
|
+
armenian: "\u0531",
|
|
50
|
+
georgian: "\u10D0"
|
|
51
51
|
};
|
|
52
52
|
/**
|
|
53
53
|
* Populate selectBox with options
|
|
@@ -95,7 +95,7 @@ define(['jquery', 'lodash', 'core/pluginifier', 'util/capitalize'], function ($,
|
|
|
95
95
|
* @param options
|
|
96
96
|
* @returns {*}
|
|
97
97
|
*/
|
|
98
|
-
init: function (options) {
|
|
98
|
+
init: function init(options) {
|
|
99
99
|
return this.each(function () {
|
|
100
100
|
var $elt = $(this); //get options using default
|
|
101
101
|
|
|
@@ -130,7 +130,7 @@ define(['jquery', 'lodash', 'core/pluginifier', 'util/capitalize'], function ($,
|
|
|
130
130
|
* @example $('selector').toggler('destroy');
|
|
131
131
|
* @public
|
|
132
132
|
*/
|
|
133
|
-
destroy: function () {
|
|
133
|
+
destroy: function destroy() {
|
|
134
134
|
this.each(function () {
|
|
135
135
|
var $elt = $(this);
|
|
136
136
|
/**
|
|
@@ -1,246 +1,237 @@
|
|
|
1
1
|
define(['lodash', 'ui/component', 'handlebars', 'i18n', 'lib/dompurify/purify', 'css!ui/loadingButton/css/button.css'], function (_, component, Handlebars, __, DOMPurify, button_css) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
4
|
+
component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
|
|
5
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
6
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
7
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
8
|
+
|
|
9
|
+
function _typeof(obj) {
|
|
10
|
+
"@babel/helpers - typeof";
|
|
11
|
+
|
|
12
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
13
|
+
return typeof obj;
|
|
14
|
+
} : function (obj) {
|
|
15
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
16
|
+
}, _typeof(obj);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function Helpers0 (hb) {
|
|
20
|
+
//register a i18n helper
|
|
21
|
+
hb.registerHelper('__', function (key) {
|
|
22
|
+
return __(key);
|
|
23
|
+
});
|
|
9
24
|
/**
|
|
10
|
-
*
|
|
11
|
-
* modify it under the terms of the GNU General Public License
|
|
12
|
-
* as published by the Free Software Foundation; under version 2
|
|
13
|
-
* of the License (non-upgradable).
|
|
14
|
-
*
|
|
15
|
-
* This program is distributed in the hope that it will be useful,
|
|
16
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
17
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
18
|
-
* GNU General Public License for more details.
|
|
19
|
-
*
|
|
20
|
-
* You should have received a copy of the GNU General Public License
|
|
21
|
-
* along with this program; if not, write to the Free Software
|
|
22
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
23
|
-
*
|
|
24
|
-
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
25
|
-
*
|
|
25
|
+
* Register dompurify helper
|
|
26
26
|
*
|
|
27
|
+
* https://github.com/cure53/DOMPurify
|
|
28
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
29
|
+
* to make output safe for template systems
|
|
27
30
|
*/
|
|
28
|
-
function Helpers0 (hb) {
|
|
29
|
-
//register a i18n helper
|
|
30
|
-
hb.registerHelper('__', function (key) {
|
|
31
|
-
return __(key);
|
|
32
|
-
});
|
|
33
|
-
/**
|
|
34
|
-
* Register dompurify helper
|
|
35
|
-
*
|
|
36
|
-
* https://github.com/cure53/DOMPurify
|
|
37
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
38
|
-
* to make output safe for template systems
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
hb.registerHelper('dompurify', function (context) {
|
|
42
|
-
return DOMPurify.sanitize(context);
|
|
43
|
-
});
|
|
44
|
-
/**
|
|
45
|
-
* Register join helper
|
|
46
|
-
*
|
|
47
|
-
* Example :
|
|
48
|
-
* var values = {a:v1, b:v2, c:v3};
|
|
49
|
-
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
50
|
-
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
51
|
-
*/
|
|
52
|
-
|
|
53
|
-
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
54
|
-
var fragments = [];
|
|
55
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
56
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
57
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
58
|
-
|
|
59
|
-
_.forIn(arr, function (value, key) {
|
|
60
|
-
var fragment = '';
|
|
61
|
-
|
|
62
|
-
if (value !== null || value !== undefined) {
|
|
63
|
-
if (typeof value === 'boolean') {
|
|
64
|
-
value = value ? 'true' : 'false';
|
|
65
|
-
} else if (typeof value === 'object') {
|
|
66
|
-
value = _.values(value).join(' ');
|
|
67
|
-
}
|
|
68
|
-
} else {
|
|
69
|
-
value = '';
|
|
70
|
-
}
|
|
71
31
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
32
|
+
hb.registerHelper('dompurify', function (context) {
|
|
33
|
+
return DOMPurify.sanitize(context);
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Register join helper
|
|
37
|
+
*
|
|
38
|
+
* Example :
|
|
39
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
40
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
41
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
42
|
+
*/
|
|
75
43
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
44
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
45
|
+
var fragments = [];
|
|
46
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
47
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
48
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
79
49
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
//it also adds a local variable "i" as the index in each iteration loop
|
|
50
|
+
_.forIn(arr, function (value, key) {
|
|
51
|
+
var fragment = '';
|
|
83
52
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
53
|
+
if (value !== null || value !== undefined) {
|
|
54
|
+
if (typeof value === 'boolean') {
|
|
55
|
+
value = value ? 'true' : 'false';
|
|
56
|
+
} else if (_typeof(value) === 'object') {
|
|
57
|
+
value = _.values(value).join(' ');
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
value = '';
|
|
61
|
+
}
|
|
89
62
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
i: i
|
|
93
|
-
}));
|
|
63
|
+
if (keyValueGlue !== undefined) {
|
|
64
|
+
fragment += key + keyValueGlue;
|
|
94
65
|
}
|
|
95
66
|
|
|
96
|
-
|
|
67
|
+
fragment += wrapper + value + wrapper;
|
|
68
|
+
fragments.push(fragment);
|
|
97
69
|
});
|
|
98
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
99
|
-
if (var1 == var2) {
|
|
100
|
-
return options.fn(this);
|
|
101
|
-
} else {
|
|
102
|
-
return options.inverse(this);
|
|
103
|
-
}
|
|
104
|
-
}); // register a "get property" helper
|
|
105
|
-
// it gets the named property from the provided context
|
|
106
70
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
// it checks if value is in array
|
|
71
|
+
return fragments.join(fragmentGlue);
|
|
72
|
+
}); //register a classic "for loop" helper
|
|
73
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
111
74
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
75
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
76
|
+
var ret = '';
|
|
77
|
+
startIndex = parseInt(startIndex);
|
|
78
|
+
stopIndex = parseInt(stopIndex);
|
|
79
|
+
increment = parseInt(increment);
|
|
118
80
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
125
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
126
|
-
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
buffer += "<button class=\"loading-button btn-";
|
|
130
|
-
if (helper = helpers.type) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
131
|
-
else { helper = (depth0 && depth0.type); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
132
|
-
buffer += escapeExpression(stack1)
|
|
133
|
-
+ " small\" type=\"button\" title=\"";
|
|
134
|
-
if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
135
|
-
else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
136
|
-
buffer += escapeExpression(stack1)
|
|
137
|
-
+ "\">\n <span class=\"spinner-icon icon-loop spinning\"></span>\n <span class=\"start-icon icon-";
|
|
138
|
-
if (helper = helpers.icon) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
139
|
-
else { helper = (depth0 && depth0.icon); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
140
|
-
buffer += escapeExpression(stack1)
|
|
141
|
-
+ "\"></span>\n <span class=\"action-label\">";
|
|
142
|
-
if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
143
|
-
else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
144
|
-
buffer += escapeExpression(stack1)
|
|
145
|
-
+ "</span>\n <span class=\"terminated-label\">";
|
|
146
|
-
if (helper = helpers.terminatedLabel) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
147
|
-
else { helper = (depth0 && depth0.terminatedLabel); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
148
|
-
buffer += escapeExpression(stack1)
|
|
149
|
-
+ "</span>\n</button>";
|
|
150
|
-
return buffer;
|
|
151
|
-
});
|
|
152
|
-
function buttonTpl(data, options, asString) {
|
|
153
|
-
var html = Template(data, options);
|
|
154
|
-
return (asString || true) ? html : $(html);
|
|
155
|
-
}
|
|
81
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
82
|
+
ret += options.fn(_.extend({}, this, {
|
|
83
|
+
i: i
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
156
86
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
*
|
|
168
|
-
* You should have received a copy of the GNU General Public License
|
|
169
|
-
* along with this program; if not, write to the Free Software
|
|
170
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
171
|
-
*
|
|
172
|
-
* Copyright (c) 2017 (original work) Open Assessment Technologies SA ;
|
|
173
|
-
*/
|
|
174
|
-
var _defaults = {
|
|
175
|
-
type: 'info',
|
|
176
|
-
icon: 'property-advanced',
|
|
177
|
-
title: '',
|
|
178
|
-
label: 'OK',
|
|
179
|
-
terminatedLabel: 'FINISHED'
|
|
180
|
-
};
|
|
181
|
-
var buttonApi = {
|
|
182
|
-
start: function start() {
|
|
183
|
-
this.setState('started', true);
|
|
184
|
-
this.trigger('started');
|
|
185
|
-
},
|
|
186
|
-
terminate: function terminate() {
|
|
187
|
-
if (this.is('started')) {
|
|
188
|
-
this.setState('started', false);
|
|
189
|
-
this.setState('terminated', true);
|
|
190
|
-
this.disable();
|
|
191
|
-
this.trigger('terminated');
|
|
192
|
-
}
|
|
87
|
+
return ret;
|
|
88
|
+
});
|
|
89
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
90
|
+
if (var1 == var2) {
|
|
91
|
+
return options.fn(this);
|
|
92
|
+
} else {
|
|
93
|
+
return options.inverse(this);
|
|
94
|
+
}
|
|
95
|
+
}); // register a "get property" helper
|
|
96
|
+
// it gets the named property from the provided context
|
|
193
97
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
this.setState('terminated', false);
|
|
199
|
-
this.enable();
|
|
200
|
-
this.trigger('reset');
|
|
201
|
-
}
|
|
98
|
+
hb.registerHelper('property', function (name, context) {
|
|
99
|
+
return context[name] || '';
|
|
100
|
+
}); // register an 'includes' helper
|
|
101
|
+
// it checks if value is in array
|
|
202
102
|
|
|
203
|
-
|
|
103
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
104
|
+
if (_.contains(haystack, needle)) {
|
|
105
|
+
return options.fn(this);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (!Helpers0.__initialized) {
|
|
111
|
+
Helpers0(Handlebars);
|
|
112
|
+
Helpers0.__initialized = true;
|
|
113
|
+
}
|
|
114
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
115
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
116
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
117
|
+
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression;
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
buffer += "<button class=\"loading-button btn-";
|
|
121
|
+
if (helper = helpers.type) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
122
|
+
else { helper = (depth0 && depth0.type); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
123
|
+
buffer += escapeExpression(stack1)
|
|
124
|
+
+ " small\" type=\"button\" title=\"";
|
|
125
|
+
if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
126
|
+
else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
127
|
+
buffer += escapeExpression(stack1)
|
|
128
|
+
+ "\">\n <span class=\"spinner-icon icon-loop spinning\"></span>\n <span class=\"start-icon icon-";
|
|
129
|
+
if (helper = helpers.icon) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
130
|
+
else { helper = (depth0 && depth0.icon); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
131
|
+
buffer += escapeExpression(stack1)
|
|
132
|
+
+ "\"></span>\n <span class=\"action-label\">";
|
|
133
|
+
if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
134
|
+
else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
135
|
+
buffer += escapeExpression(stack1)
|
|
136
|
+
+ "</span>\n <span class=\"terminated-label\">";
|
|
137
|
+
if (helper = helpers.terminatedLabel) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
138
|
+
else { helper = (depth0 && depth0.terminatedLabel); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
139
|
+
buffer += escapeExpression(stack1)
|
|
140
|
+
+ "</span>\n</button>";
|
|
141
|
+
return buffer;
|
|
142
|
+
});
|
|
143
|
+
function buttonTpl(data, options, asString) {
|
|
144
|
+
var html = Template(data, options);
|
|
145
|
+
return (asString || true) ? html : $(html);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* This program is free software; you can redistribute it and/or
|
|
150
|
+
* modify it under the terms of the GNU General Public License
|
|
151
|
+
* as published by the Free Software Foundation; under version 2
|
|
152
|
+
* of the License (non-upgradable).
|
|
153
|
+
*
|
|
154
|
+
* This program is distributed in the hope that it will be useful,
|
|
155
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
156
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
157
|
+
* GNU General Public License for more details.
|
|
158
|
+
*
|
|
159
|
+
* You should have received a copy of the GNU General Public License
|
|
160
|
+
* along with this program; if not, write to the Free Software
|
|
161
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
162
|
+
*
|
|
163
|
+
* Copyright (c) 2017 (original work) Open Assessment Technologies SA ;
|
|
164
|
+
*/
|
|
165
|
+
var _defaults = {
|
|
166
|
+
type: 'info',
|
|
167
|
+
icon: 'property-advanced',
|
|
168
|
+
title: '',
|
|
169
|
+
label: 'OK',
|
|
170
|
+
terminatedLabel: 'FINISHED'
|
|
171
|
+
};
|
|
172
|
+
var buttonApi = {
|
|
173
|
+
start: function start() {
|
|
174
|
+
this.setState('started', true);
|
|
175
|
+
this.trigger('started');
|
|
176
|
+
},
|
|
177
|
+
terminate: function terminate() {
|
|
178
|
+
if (this.is('started')) {
|
|
179
|
+
this.setState('started', false);
|
|
180
|
+
this.setState('terminated', true);
|
|
181
|
+
this.disable();
|
|
182
|
+
this.trigger('terminated');
|
|
204
183
|
}
|
|
205
|
-
|
|
184
|
+
|
|
185
|
+
return this;
|
|
186
|
+
},
|
|
187
|
+
reset: function reset() {
|
|
188
|
+
if (this.is('terminated')) {
|
|
189
|
+
this.setState('terminated', false);
|
|
190
|
+
this.enable();
|
|
191
|
+
this.trigger('reset');
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return this;
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* Create a button with the lifecycle : render -> started -> terminated [-> reset]
|
|
199
|
+
* @param {Object} config - the component config
|
|
200
|
+
* @param {String} config.type - the icon type (info, success, error)
|
|
201
|
+
* @param {String} config.icon - the button icon
|
|
202
|
+
* @param {String} config.label - the button's label
|
|
203
|
+
* @param {String} [config.title] - the button's title
|
|
204
|
+
* @param {String} [config.terminatedLabel] - the button's label when terminated
|
|
205
|
+
* @return {loadingButton} the component
|
|
206
|
+
*
|
|
207
|
+
* @event started - Emitted when the button is clicked and the triggered action supposed to be started
|
|
208
|
+
* @event terminated - Emitted when the button action is stopped, interrupted
|
|
209
|
+
* @event reset - Emitted when the button revert from the terminated stated to the initial one
|
|
210
|
+
*/
|
|
211
|
+
|
|
212
|
+
function loadingButtonFactory(config) {
|
|
213
|
+
var initConfig = _.defaults(config || {}, _defaults);
|
|
206
214
|
/**
|
|
207
|
-
*
|
|
208
|
-
* @param {Object} config - the component config
|
|
209
|
-
* @param {String} config.type - the icon type (info, success, error)
|
|
210
|
-
* @param {String} config.icon - the button icon
|
|
211
|
-
* @param {String} config.label - the button's label
|
|
212
|
-
* @param {String} [config.title] - the button's title
|
|
213
|
-
* @param {String} [config.terminatedLabel] - the button's label when terminated
|
|
214
|
-
* @return {loadingButton} the component
|
|
215
|
-
*
|
|
216
|
-
* @event started - Emitted when the button is clicked and the triggered action supposed to be started
|
|
217
|
-
* @event terminated - Emitted when the button action is stopped, interrupted
|
|
218
|
-
* @event reset - Emitted when the button revert from the terminated stated to the initial one
|
|
215
|
+
* @typedef {loadingButton} the component
|
|
219
216
|
*/
|
|
220
217
|
|
|
221
|
-
function loadingButtonFactory(config) {
|
|
222
|
-
var initConfig = _.defaults(config || {}, _defaults);
|
|
223
|
-
/**
|
|
224
|
-
* @typedef {loadingButton} the component
|
|
225
|
-
*/
|
|
226
218
|
|
|
219
|
+
return component(buttonApi).setTemplate(buttonTpl).on('enable', function () {
|
|
220
|
+
this.getElement().removeProp('disabled');
|
|
221
|
+
}).on('disable', function () {
|
|
222
|
+
this.getElement().prop('disabled', true);
|
|
223
|
+
}).on('render', function () {
|
|
224
|
+
var self = this;
|
|
225
|
+
this.getElement().on('click', function (e) {
|
|
226
|
+
e.preventDefault();
|
|
227
227
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
this.getElement().on('click', function (e) {
|
|
235
|
-
e.preventDefault();
|
|
236
|
-
|
|
237
|
-
if (!self.is('disabled') && !self.is('started') && !self.is('terminated')) {
|
|
238
|
-
self.start();
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
}).init(initConfig);
|
|
242
|
-
}
|
|
228
|
+
if (!self.is('disabled') && !self.is('started') && !self.is('terminated')) {
|
|
229
|
+
self.start();
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
}).init(initConfig);
|
|
233
|
+
}
|
|
243
234
|
|
|
244
|
-
|
|
235
|
+
return loadingButtonFactory;
|
|
245
236
|
|
|
246
237
|
});
|