@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/listbox.js
CHANGED
|
@@ -1,529 +1,520 @@
|
|
|
1
1
|
define(['lodash', 'i18n', 'ui/component', 'handlebars', 'lib/dompurify/purify', 'css!ui/listbox/css/listbox.css'], function (_, __, component, Handlebars, DOMPurify, listbox_css) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
4
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
5
|
+
component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
|
|
6
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
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
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
124
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
125
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
126
|
-
var buffer = "", stack1, helper, self=this, functionType="function", escapeExpression=this.escapeExpression;
|
|
127
|
-
|
|
128
|
-
function program1(depth0,data) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return "class=\"hidden\"";
|
|
81
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
82
|
+
ret += options.fn(_.extend({}, this, {
|
|
83
|
+
i: i
|
|
84
|
+
}));
|
|
132
85
|
}
|
|
133
86
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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);
|
|
138
94
|
}
|
|
95
|
+
}); // register a "get property" helper
|
|
96
|
+
// it gets the named property from the provided context
|
|
139
97
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
if (helper = helpers.textLoading) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
166
|
-
else { helper = (depth0 && depth0.textLoading); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
167
|
-
buffer += escapeExpression(stack1)
|
|
168
|
-
+ "</span>...</span>\n </h2>\n <div class=\"list\"></div>\n</div>\n";
|
|
169
|
-
return buffer;
|
|
170
|
-
});
|
|
171
|
-
function mainTpl(data, options, asString) {
|
|
172
|
-
var html = Template(data, options);
|
|
173
|
-
return (asString || true) ? html : $(html);
|
|
98
|
+
hb.registerHelper('property', function (name, context) {
|
|
99
|
+
return context[name] || '';
|
|
100
|
+
}); // register an 'includes' helper
|
|
101
|
+
// it checks if value is in array
|
|
102
|
+
|
|
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, self=this, functionType="function", escapeExpression=this.escapeExpression;
|
|
118
|
+
|
|
119
|
+
function program1(depth0,data) {
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
return "class=\"hidden\"";
|
|
174
123
|
}
|
|
175
124
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
125
|
+
function program3(depth0,data) {
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
return " hidden";
|
|
179
129
|
}
|
|
180
|
-
var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
181
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
182
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
183
|
-
var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
184
|
-
|
|
185
|
-
function program1(depth0,data,depth1) {
|
|
186
|
-
|
|
187
|
-
var buffer = "", stack1, helper;
|
|
188
|
-
buffer += "\n <li class=\"entry flex-col-";
|
|
189
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.width), {hash:{},inverse:self.programWithDepth(4, program4, data, depth1),fn:self.program(2, program2, data),data:data});
|
|
190
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
191
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.cls), {hash:{},inverse:self.noop,fn:self.program(9, program9, data),data:data});
|
|
192
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
193
|
-
buffer += "\">\n <a class=\"block box\" href=\"";
|
|
194
|
-
if (helper = helpers.url) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
195
|
-
else { helper = (depth0 && depth0.url); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
196
|
-
buffer += escapeExpression(stack1)
|
|
197
|
-
+ "\">\n <h3 class=\"title\">";
|
|
198
|
-
if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
199
|
-
else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
200
|
-
buffer += escapeExpression(stack1)
|
|
201
|
-
+ "</h3>\n ";
|
|
202
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.content), {hash:{},inverse:self.noop,fn:self.program(11, program11, data),data:data});
|
|
203
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
204
|
-
buffer += "\n <div class=\"bottom clearfix\">\n ";
|
|
205
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.html), {hash:{},inverse:self.noop,fn:self.program(13, program13, data),data:data});
|
|
206
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
207
|
-
buffer += "\n ";
|
|
208
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.text), {hash:{},inverse:self.noop,fn:self.program(15, program15, data),data:data});
|
|
209
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
210
|
-
buffer += "\n </div>\n </a>\n </li>\n ";
|
|
211
|
-
return buffer;
|
|
212
|
-
}
|
|
213
|
-
function program2(depth0,data) {
|
|
214
|
-
|
|
215
|
-
var stack1, helper;
|
|
216
|
-
if (helper = helpers.width) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
217
|
-
else { helper = (depth0 && depth0.width); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
218
|
-
return escapeExpression(stack1);
|
|
219
|
-
}
|
|
220
130
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
131
|
+
buffer += "<div class=\"listbox\">\n <h1 ";
|
|
132
|
+
stack1 = helpers.unless.call(depth0, (depth0 && depth0.title), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
133
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
134
|
+
buffer += ">";
|
|
135
|
+
if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
136
|
+
else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
137
|
+
buffer += escapeExpression(stack1)
|
|
138
|
+
+ "</h1>\n <h2>\n <span class=\"empty-list";
|
|
139
|
+
stack1 = helpers.unless.call(depth0, (depth0 && depth0.textEmpty), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
|
|
140
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
141
|
+
buffer += "\">";
|
|
142
|
+
if (helper = helpers.textEmpty) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
143
|
+
else { helper = (depth0 && depth0.textEmpty); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
144
|
+
buffer += escapeExpression(stack1)
|
|
145
|
+
+ "</span>\n <span class=\"available-list";
|
|
146
|
+
stack1 = helpers.unless.call(depth0, (depth0 && depth0.textNumber), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
|
|
147
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
148
|
+
buffer += "\"><span class=\"label\">";
|
|
149
|
+
if (helper = helpers.textNumber) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
150
|
+
else { helper = (depth0 && depth0.textNumber); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
151
|
+
buffer += escapeExpression(stack1)
|
|
152
|
+
+ "</span>: <span class=\"count\"></span></span>\n <span class=\"loading";
|
|
153
|
+
stack1 = helpers.unless.call(depth0, (depth0 && depth0.textLoading), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
|
|
154
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
155
|
+
buffer += "\"><span>";
|
|
156
|
+
if (helper = helpers.textLoading) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
157
|
+
else { helper = (depth0 && depth0.textLoading); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
158
|
+
buffer += escapeExpression(stack1)
|
|
159
|
+
+ "</span>...</span>\n </h2>\n <div class=\"list\"></div>\n</div>\n";
|
|
160
|
+
return buffer;
|
|
161
|
+
});
|
|
162
|
+
function mainTpl(data, options, asString) {
|
|
163
|
+
var html = Template(data, options);
|
|
164
|
+
return (asString || true) ? html : $(html);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (!Helpers0.__initialized) {
|
|
168
|
+
Helpers0(Handlebars);
|
|
169
|
+
Helpers0.__initialized = true;
|
|
170
|
+
}
|
|
171
|
+
var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
172
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
173
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
174
|
+
var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
175
|
+
|
|
176
|
+
function program1(depth0,data,depth1) {
|
|
177
|
+
|
|
178
|
+
var buffer = "", stack1, helper;
|
|
179
|
+
buffer += "\n <li class=\"entry flex-col-";
|
|
180
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.width), {hash:{},inverse:self.programWithDepth(4, program4, data, depth1),fn:self.program(2, program2, data),data:data});
|
|
181
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
182
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.cls), {hash:{},inverse:self.noop,fn:self.program(9, program9, data),data:data});
|
|
183
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
184
|
+
buffer += "\">\n <a class=\"block box\" href=\"";
|
|
185
|
+
if (helper = helpers.url) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
186
|
+
else { helper = (depth0 && depth0.url); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
187
|
+
buffer += escapeExpression(stack1)
|
|
188
|
+
+ "\">\n <h3 class=\"title\">";
|
|
189
|
+
if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
190
|
+
else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
191
|
+
buffer += escapeExpression(stack1)
|
|
192
|
+
+ "</h3>\n ";
|
|
193
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.content), {hash:{},inverse:self.noop,fn:self.program(11, program11, data),data:data});
|
|
194
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
195
|
+
buffer += "\n <div class=\"bottom clearfix\">\n ";
|
|
196
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.html), {hash:{},inverse:self.noop,fn:self.program(13, program13, data),data:data});
|
|
197
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
198
|
+
buffer += "\n ";
|
|
199
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.text), {hash:{},inverse:self.noop,fn:self.program(15, program15, data),data:data});
|
|
200
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
201
|
+
buffer += "\n </div>\n </a>\n </li>\n ";
|
|
202
|
+
return buffer;
|
|
203
|
+
}
|
|
204
|
+
function program2(depth0,data) {
|
|
205
|
+
|
|
206
|
+
var stack1, helper;
|
|
207
|
+
if (helper = helpers.width) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
208
|
+
else { helper = (depth0 && depth0.width); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
209
|
+
return escapeExpression(stack1);
|
|
210
|
+
}
|
|
233
211
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
212
|
+
function program4(depth0,data,depth2) {
|
|
213
|
+
|
|
214
|
+
var stack1;
|
|
215
|
+
stack1 = helpers['if'].call(depth0, (depth2 && depth2.width), {hash:{},inverse:self.program(7, program7, data),fn:self.programWithDepth(5, program5, data, depth2),data:data});
|
|
216
|
+
if(stack1 || stack1 === 0) { return stack1; }
|
|
217
|
+
else { return ''; }
|
|
218
|
+
}
|
|
219
|
+
function program5(depth0,data,depth3) {
|
|
220
|
+
|
|
221
|
+
var stack1;
|
|
222
|
+
return escapeExpression(((stack1 = (depth3 && depth3.width)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1));
|
|
223
|
+
}
|
|
239
224
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
else { helper = (depth0 && depth0.cls); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
246
|
-
buffer += escapeExpression(stack1);
|
|
247
|
-
return buffer;
|
|
248
|
-
}
|
|
225
|
+
function program7(depth0,data) {
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
return "12";
|
|
229
|
+
}
|
|
249
230
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
}
|
|
231
|
+
function program9(depth0,data) {
|
|
232
|
+
|
|
233
|
+
var buffer = "", stack1, helper;
|
|
234
|
+
buffer += " ";
|
|
235
|
+
if (helper = helpers.cls) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
236
|
+
else { helper = (depth0 && depth0.cls); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
237
|
+
buffer += escapeExpression(stack1);
|
|
238
|
+
return buffer;
|
|
239
|
+
}
|
|
260
240
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
241
|
+
function program11(depth0,data) {
|
|
242
|
+
|
|
243
|
+
var buffer = "", stack1, helper;
|
|
244
|
+
buffer += "<div class=\"content clearfix\">";
|
|
245
|
+
if (helper = helpers.content) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
246
|
+
else { helper = (depth0 && depth0.content); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
247
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
248
|
+
buffer += "</div>";
|
|
249
|
+
return buffer;
|
|
250
|
+
}
|
|
271
251
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
252
|
+
function program13(depth0,data) {
|
|
253
|
+
|
|
254
|
+
var buffer = "", stack1, helper;
|
|
255
|
+
buffer += "<span class=\"text-html\">";
|
|
256
|
+
if (helper = helpers.html) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
257
|
+
else { helper = (depth0 && depth0.html); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
258
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
259
|
+
buffer += "</span>";
|
|
260
|
+
return buffer;
|
|
261
|
+
}
|
|
282
262
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
263
|
+
function program15(depth0,data) {
|
|
264
|
+
|
|
265
|
+
var buffer = "", stack1, helper;
|
|
266
|
+
buffer += "<span class=\"text-link\"><span class=\"icon-play\"></span>";
|
|
267
|
+
if (helper = helpers.text) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
268
|
+
else { helper = (depth0 && depth0.text); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
269
|
+
buffer += escapeExpression(stack1)
|
|
270
|
+
+ "</span>";
|
|
271
|
+
return buffer;
|
|
292
272
|
}
|
|
293
273
|
|
|
274
|
+
buffer += "<ul class=\"list-box flex-grid plain\">\n ";
|
|
275
|
+
stack1 = helpers.each.call(depth0, (depth0 && depth0.list), {hash:{},inverse:self.noop,fn:self.programWithDepth(1, program1, data, depth0),data:data});
|
|
276
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
277
|
+
buffer += "\n</ul>\n";
|
|
278
|
+
return buffer;
|
|
279
|
+
});
|
|
280
|
+
function listTpl(data, options, asString) {
|
|
281
|
+
var html = Template$1(data, options);
|
|
282
|
+
return (asString || true) ? html : $(html);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* This program is free software; you can redistribute it and/or
|
|
287
|
+
* modify it under the terms of the GNU General Public License
|
|
288
|
+
* as published by the Free Software Foundation; under version 2
|
|
289
|
+
* of the License (non-upgradable).
|
|
290
|
+
*
|
|
291
|
+
* This program is distributed in the hope that it will be useful,
|
|
292
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
293
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
294
|
+
* GNU General Public License for more details.
|
|
295
|
+
*
|
|
296
|
+
* You should have received a copy of the GNU General Public License
|
|
297
|
+
* along with this program; if not, write to the Free Software
|
|
298
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
299
|
+
*
|
|
300
|
+
* Copyright (c) 2015 (original work) Open Assessment Technologies SA ;
|
|
301
|
+
*/
|
|
302
|
+
/**
|
|
303
|
+
* Some default values
|
|
304
|
+
* @type {Object}
|
|
305
|
+
* @private
|
|
306
|
+
*/
|
|
307
|
+
|
|
308
|
+
var _defaults = {
|
|
309
|
+
title: false,
|
|
310
|
+
textNumber: __('Available'),
|
|
311
|
+
textEmpty: __('There is nothing to list!'),
|
|
312
|
+
textLoading: __('Loading'),
|
|
313
|
+
flex: 12
|
|
314
|
+
};
|
|
315
|
+
/**
|
|
316
|
+
* Defines a list of boxes
|
|
317
|
+
* @type {Object}
|
|
318
|
+
*/
|
|
319
|
+
|
|
320
|
+
var listBox = {
|
|
294
321
|
/**
|
|
295
|
-
*
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
*
|
|
299
|
-
*
|
|
300
|
-
*
|
|
301
|
-
*
|
|
302
|
-
*
|
|
303
|
-
*
|
|
304
|
-
*
|
|
305
|
-
* You should have received a copy of the GNU General Public License
|
|
306
|
-
* along with this program; if not, write to the Free Software
|
|
307
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
308
|
-
*
|
|
309
|
-
* Copyright (c) 2015 (original work) Open Assessment Technologies SA ;
|
|
310
|
-
*/
|
|
311
|
-
/**
|
|
312
|
-
* Some default values
|
|
313
|
-
* @type {Object}
|
|
314
|
-
* @private
|
|
322
|
+
* Updates the list of boxes
|
|
323
|
+
* @param {Array} list
|
|
324
|
+
* @param {String} [list.url] - The URL of the entry point
|
|
325
|
+
* @param {String} [list.label] - The displayed label
|
|
326
|
+
* @param {String} [list.content] - An optional content displayed in the middle
|
|
327
|
+
* @param {String} [list.text] - A bottom text
|
|
328
|
+
* @param {String} [list.html] - A bottom html
|
|
329
|
+
* @param {Number} [list.width] - The width of the entry related to flex-grid (default: 6)
|
|
330
|
+
* @param {String} [list.cls] - An optional CSS class to add
|
|
331
|
+
* @returns {listBox}
|
|
315
332
|
*/
|
|
333
|
+
update: function update(list) {
|
|
334
|
+
var $list = this.controls && this.controls.$list;
|
|
335
|
+
var $numberValue = this.controls && this.controls.$numberValue;
|
|
336
|
+
var count;
|
|
337
|
+
this.setLoading(true);
|
|
338
|
+
|
|
339
|
+
if ($list) {
|
|
340
|
+
$list.empty();
|
|
341
|
+
|
|
342
|
+
if (list && list.length) {
|
|
343
|
+
$list.append(listTpl({
|
|
344
|
+
list: list,
|
|
345
|
+
width: this.config.flex
|
|
346
|
+
}));
|
|
316
347
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
textNumber: __('Available'),
|
|
320
|
-
textEmpty: __('There is nothing to list!'),
|
|
321
|
-
textLoading: __('Loading'),
|
|
322
|
-
flex: 12
|
|
323
|
-
};
|
|
324
|
-
/**
|
|
325
|
-
* Defines a list of boxes
|
|
326
|
-
* @type {Object}
|
|
327
|
-
*/
|
|
348
|
+
if ($numberValue) {
|
|
349
|
+
count = list.length;
|
|
328
350
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
* Updates the list of boxes
|
|
332
|
-
* @param {Array} list
|
|
333
|
-
* @param {String} [list.url] - The URL of the entry point
|
|
334
|
-
* @param {String} [list.label] - The displayed label
|
|
335
|
-
* @param {String} [list.content] - An optional content displayed in the middle
|
|
336
|
-
* @param {String} [list.text] - A bottom text
|
|
337
|
-
* @param {String} [list.html] - A bottom html
|
|
338
|
-
* @param {Number} [list.width] - The width of the entry related to flex-grid (default: 6)
|
|
339
|
-
* @param {String} [list.cls] - An optional CSS class to add
|
|
340
|
-
* @returns {listBox}
|
|
341
|
-
*/
|
|
342
|
-
update: function update(list) {
|
|
343
|
-
var $list = this.controls && this.controls.$list;
|
|
344
|
-
var $numberValue = this.controls && this.controls.$numberValue;
|
|
345
|
-
var count;
|
|
346
|
-
this.setLoading(true);
|
|
347
|
-
|
|
348
|
-
if ($list) {
|
|
349
|
-
$list.empty();
|
|
350
|
-
|
|
351
|
-
if (list && list.length) {
|
|
352
|
-
$list.append(listTpl({
|
|
353
|
-
list: list,
|
|
354
|
-
width: this.config.flex
|
|
355
|
-
}));
|
|
356
|
-
|
|
357
|
-
if ($numberValue) {
|
|
358
|
-
count = list.length;
|
|
359
|
-
|
|
360
|
-
if (_.isFunction(this.config.countRenderer)) {
|
|
361
|
-
count = this.config.countRenderer(count);
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
$numberValue.text(count);
|
|
351
|
+
if (_.isFunction(this.config.countRenderer)) {
|
|
352
|
+
count = this.config.countRenderer(count);
|
|
365
353
|
}
|
|
366
354
|
|
|
367
|
-
|
|
368
|
-
this.setState('loaded', true);
|
|
369
|
-
} else {
|
|
370
|
-
this.setState('empty', true);
|
|
371
|
-
this.setState('loaded', false);
|
|
355
|
+
$numberValue.text(count);
|
|
372
356
|
}
|
|
373
|
-
}
|
|
374
357
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
/**
|
|
380
|
-
* Sets the loading state
|
|
381
|
-
* @param {Boolean} flag
|
|
382
|
-
* @returns {listBox}
|
|
383
|
-
*/
|
|
384
|
-
setLoading: function setLoading(flag) {
|
|
385
|
-
if (flag) {
|
|
358
|
+
this.setState('empty', false);
|
|
359
|
+
this.setState('loaded', true);
|
|
360
|
+
} else {
|
|
361
|
+
this.setState('empty', true);
|
|
386
362
|
this.setState('loaded', false);
|
|
387
363
|
}
|
|
364
|
+
}
|
|
388
365
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
/**
|
|
393
|
-
* Sets the title of the list.
|
|
394
|
-
* @param {String|Boolean} title - The text to set. If the value is false no title is displayed
|
|
395
|
-
* @returns {listBox}
|
|
396
|
-
*/
|
|
397
|
-
setTitle: function setTitle(title) {
|
|
398
|
-
var $title = this.controls && this.controls.$title;
|
|
399
|
-
this.config.title = title;
|
|
400
|
-
|
|
401
|
-
if ($title) {
|
|
402
|
-
if (false === title) {
|
|
403
|
-
$title.addClass('hidden');
|
|
404
|
-
} else {
|
|
405
|
-
$title.html(title).removeClass('hidden');
|
|
406
|
-
}
|
|
407
|
-
}
|
|
366
|
+
this.setLoading(false);
|
|
367
|
+
return this;
|
|
368
|
+
},
|
|
408
369
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
var $numberLabel = this.controls && this.controls.$numberLabel;
|
|
419
|
-
var $textAvailable = this.controls && this.controls.$textAvailable;
|
|
420
|
-
this.config.textNumber = text;
|
|
421
|
-
|
|
422
|
-
if ($numberLabel) {
|
|
423
|
-
if (text !== false) {
|
|
424
|
-
$numberLabel.html(text).removeClass('hidden');
|
|
425
|
-
} else if ($textAvailable) {
|
|
426
|
-
$textAvailable.addClass('hidden');
|
|
427
|
-
}
|
|
428
|
-
}
|
|
370
|
+
/**
|
|
371
|
+
* Sets the loading state
|
|
372
|
+
* @param {Boolean} flag
|
|
373
|
+
* @returns {listBox}
|
|
374
|
+
*/
|
|
375
|
+
setLoading: function setLoading(flag) {
|
|
376
|
+
if (flag) {
|
|
377
|
+
this.setState('loaded', false);
|
|
378
|
+
}
|
|
429
379
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
}
|
|
380
|
+
return this.setState('loading', flag);
|
|
381
|
+
},
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Sets the title of the list.
|
|
385
|
+
* @param {String|Boolean} title - The text to set. If the value is false no title is displayed
|
|
386
|
+
* @returns {listBox}
|
|
387
|
+
*/
|
|
388
|
+
setTitle: function setTitle(title) {
|
|
389
|
+
var $title = this.controls && this.controls.$title;
|
|
390
|
+
this.config.title = title;
|
|
391
|
+
|
|
392
|
+
if ($title) {
|
|
393
|
+
if (false === title) {
|
|
394
|
+
$title.addClass('hidden');
|
|
395
|
+
} else {
|
|
396
|
+
$title.html(title).removeClass('hidden');
|
|
448
397
|
}
|
|
398
|
+
}
|
|
449
399
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
400
|
+
return this;
|
|
401
|
+
},
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Sets the label of the number of boxes.
|
|
405
|
+
* @param {String|Boolean} text - The text to set. If the value is false no label is displayed
|
|
406
|
+
* @returns {listBox}
|
|
407
|
+
*/
|
|
408
|
+
setTextNumber: function setTextNumber(text) {
|
|
409
|
+
var $numberLabel = this.controls && this.controls.$numberLabel;
|
|
410
|
+
var $textAvailable = this.controls && this.controls.$textAvailable;
|
|
411
|
+
this.config.textNumber = text;
|
|
412
|
+
|
|
413
|
+
if ($numberLabel) {
|
|
414
|
+
if (text !== false) {
|
|
415
|
+
$numberLabel.html(text).removeClass('hidden');
|
|
416
|
+
} else if ($textAvailable) {
|
|
417
|
+
$textAvailable.addClass('hidden');
|
|
468
418
|
}
|
|
419
|
+
}
|
|
469
420
|
|
|
470
|
-
|
|
471
|
-
|
|
421
|
+
return this;
|
|
422
|
+
},
|
|
472
423
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
424
|
+
/**
|
|
425
|
+
* Sets the label displayed when there no boxes available.
|
|
426
|
+
* @param {String|Boolean} text - The text to set. If the value is false no label is displayed
|
|
427
|
+
* @returns {listBox}
|
|
428
|
+
*/
|
|
429
|
+
setTextEmpty: function setTextEmpty(text) {
|
|
430
|
+
var $textEmpty = this.controls && this.controls.$textEmpty;
|
|
431
|
+
this.config.textEmpty = text;
|
|
432
|
+
|
|
433
|
+
if ($textEmpty) {
|
|
434
|
+
if (false === text) {
|
|
435
|
+
$textEmpty.addClass('hidden');
|
|
436
|
+
} else {
|
|
437
|
+
$textEmpty.html(text).removeClass('hidden');
|
|
438
|
+
}
|
|
480
439
|
}
|
|
481
|
-
|
|
440
|
+
|
|
441
|
+
return this;
|
|
442
|
+
},
|
|
443
|
+
|
|
482
444
|
/**
|
|
483
|
-
*
|
|
484
|
-
* @param {
|
|
485
|
-
* @param {String|Boolean} [config.title] - Sets the title of the list. If the value is false no title is displayed (default: false)
|
|
486
|
-
* @param {String|Boolean} [config.textNumber] - Sets the label of the number of boxes. If the value is false no label is displayed (default: 'Available')
|
|
487
|
-
* @param {String|Boolean} [config.textEmpty] - Sets the label displayed when there no boxes available. If the value is false no label is displayed (default: 'There is nothing to list!')
|
|
488
|
-
* @param {String|Boolean} [config.textLoading] - Sets the label displayed when the list is loading. If the value is false no label is displayed (default: 'Loading')
|
|
489
|
-
* @param {Number} [config.width] - Sets the default flex width of all boxes, unless they define their own value. (default: 12)
|
|
490
|
-
* @param {Array} [config.list] - The list of boxes to display
|
|
491
|
-
* @param {jQuery|HTMLElement|String} [config.renderTo] - An optional container in which renders the component
|
|
492
|
-
* @param {Boolean} [config.replace] - When the component is appended to its container, clears the place before
|
|
493
|
-
* @param {Function} [config.countRenderer] - An optional callback applied on the list count before display
|
|
445
|
+
* Sets the label displayed when the list is loading.
|
|
446
|
+
* @param {String|Boolean} text - The text to set. If the value is false no label is displayed
|
|
494
447
|
* @returns {listBox}
|
|
495
448
|
*/
|
|
449
|
+
setTextLoading: function setTextLoading(text) {
|
|
450
|
+
var $textLoading = this.controls && this.controls.$textLoading;
|
|
451
|
+
this.config.textLoading = text;
|
|
496
452
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
// Please also note the main size handling brought by the base component is not used here, and has been disabled.
|
|
501
|
-
|
|
502
|
-
initConfig.flex = initConfig.width;
|
|
503
|
-
return component(listBox, _defaults).setTemplate(mainTpl) // uninstalls the component
|
|
504
|
-
.on('destroy', function () {
|
|
505
|
-
this.controls = null;
|
|
506
|
-
}) // renders the component
|
|
507
|
-
.on('render', function () {
|
|
508
|
-
this.controls = {
|
|
509
|
-
$title: this.$component.find('h1'),
|
|
510
|
-
$textEmpty: this.$component.find('.empty-list'),
|
|
511
|
-
$textAvailable: this.$component.find('.available-list'),
|
|
512
|
-
$textLoading: this.$component.find('.loading span'),
|
|
513
|
-
$numberLabel: this.$component.find('.available-list .label'),
|
|
514
|
-
$numberValue: this.$component.find('.available-list .count'),
|
|
515
|
-
$list: this.$component.find('.list')
|
|
516
|
-
};
|
|
517
|
-
|
|
518
|
-
if (this.config.list) {
|
|
519
|
-
this.update(this.config.list);
|
|
453
|
+
if ($textLoading) {
|
|
454
|
+
if (false === text) {
|
|
455
|
+
$textLoading.addClass('hidden');
|
|
520
456
|
} else {
|
|
521
|
-
|
|
522
|
-
this.setState('loaded', false);
|
|
457
|
+
$textLoading.html(text).removeClass('hidden');
|
|
523
458
|
}
|
|
524
|
-
}
|
|
525
|
-
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
return this;
|
|
462
|
+
},
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* Just override the base method to prevent unwanted resizing: the width must be handled by CSS flex box
|
|
466
|
+
* @returns {listBox}
|
|
467
|
+
*/
|
|
468
|
+
setSize: function setSize() {
|
|
469
|
+
console.warn('The setSize() method has been disabled in the listbox component as its size is handled by CSS flex box');
|
|
470
|
+
return this;
|
|
471
|
+
}
|
|
472
|
+
};
|
|
473
|
+
/**
|
|
474
|
+
* Builds an instance of the listBox manager
|
|
475
|
+
* @param {Object} config
|
|
476
|
+
* @param {String|Boolean} [config.title] - Sets the title of the list. If the value is false no title is displayed (default: false)
|
|
477
|
+
* @param {String|Boolean} [config.textNumber] - Sets the label of the number of boxes. If the value is false no label is displayed (default: 'Available')
|
|
478
|
+
* @param {String|Boolean} [config.textEmpty] - Sets the label displayed when there no boxes available. If the value is false no label is displayed (default: 'There is nothing to list!')
|
|
479
|
+
* @param {String|Boolean} [config.textLoading] - Sets the label displayed when the list is loading. If the value is false no label is displayed (default: 'Loading')
|
|
480
|
+
* @param {Number} [config.width] - Sets the default flex width of all boxes, unless they define their own value. (default: 12)
|
|
481
|
+
* @param {Array} [config.list] - The list of boxes to display
|
|
482
|
+
* @param {jQuery|HTMLElement|String} [config.renderTo] - An optional container in which renders the component
|
|
483
|
+
* @param {Boolean} [config.replace] - When the component is appended to its container, clears the place before
|
|
484
|
+
* @param {Function} [config.countRenderer] - An optional callback applied on the list count before display
|
|
485
|
+
* @returns {listBox}
|
|
486
|
+
*/
|
|
487
|
+
|
|
488
|
+
var listBoxFactory = function listBoxFactory(config) {
|
|
489
|
+
var initConfig = config || {}; // The width is managed by CSS flex box. So we need to remap the flex width to another attribute,
|
|
490
|
+
// as the width is used to size the base component using pixels units.
|
|
491
|
+
// Please also note the main size handling brought by the base component is not used here, and has been disabled.
|
|
492
|
+
|
|
493
|
+
initConfig.flex = initConfig.width;
|
|
494
|
+
return component(listBox, _defaults).setTemplate(mainTpl) // uninstalls the component
|
|
495
|
+
.on('destroy', function () {
|
|
496
|
+
this.controls = null;
|
|
497
|
+
}) // renders the component
|
|
498
|
+
.on('render', function () {
|
|
499
|
+
this.controls = {
|
|
500
|
+
$title: this.$component.find('h1'),
|
|
501
|
+
$textEmpty: this.$component.find('.empty-list'),
|
|
502
|
+
$textAvailable: this.$component.find('.available-list'),
|
|
503
|
+
$textLoading: this.$component.find('.loading span'),
|
|
504
|
+
$numberLabel: this.$component.find('.available-list .label'),
|
|
505
|
+
$numberValue: this.$component.find('.available-list .count'),
|
|
506
|
+
$list: this.$component.find('.list')
|
|
507
|
+
};
|
|
508
|
+
|
|
509
|
+
if (this.config.list) {
|
|
510
|
+
this.update(this.config.list);
|
|
511
|
+
} else {
|
|
512
|
+
this.setState('empty', true);
|
|
513
|
+
this.setState('loaded', false);
|
|
514
|
+
}
|
|
515
|
+
}).init(_.omit(initConfig, 'width'));
|
|
516
|
+
};
|
|
526
517
|
|
|
527
|
-
|
|
518
|
+
return listBoxFactory;
|
|
528
519
|
|
|
529
520
|
});
|