@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/report.js
CHANGED
|
@@ -1,404 +1,395 @@
|
|
|
1
1
|
define(['jquery', 'lodash', 'ui/component', 'handlebars', 'i18n', 'lib/dompurify/purify'], function ($$1, _, component, Handlebars, __, DOMPurify) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
$$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
|
|
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
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
8
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
9
|
+
|
|
10
|
+
function _typeof(obj) {
|
|
11
|
+
"@babel/helpers - typeof";
|
|
12
|
+
|
|
13
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
14
|
+
return typeof obj;
|
|
15
|
+
} : function (obj) {
|
|
16
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
17
|
+
}, _typeof(obj);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function Helpers0 (hb) {
|
|
21
|
+
//register a i18n helper
|
|
22
|
+
hb.registerHelper('__', function (key) {
|
|
23
|
+
return __(key);
|
|
24
|
+
});
|
|
10
25
|
/**
|
|
11
|
-
*
|
|
12
|
-
* modify it under the terms of the GNU General Public License
|
|
13
|
-
* as published by the Free Software Foundation; under version 2
|
|
14
|
-
* of the License (non-upgradable).
|
|
15
|
-
*
|
|
16
|
-
* This program is distributed in the hope that it will be useful,
|
|
17
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
-
* GNU General Public License for more details.
|
|
20
|
-
*
|
|
21
|
-
* You should have received a copy of the GNU General Public License
|
|
22
|
-
* along with this program; if not, write to the Free Software
|
|
23
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
24
|
-
*
|
|
25
|
-
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
26
|
-
*
|
|
26
|
+
* Register dompurify helper
|
|
27
27
|
*
|
|
28
|
+
* https://github.com/cure53/DOMPurify
|
|
29
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
30
|
+
* to make output safe for template systems
|
|
28
31
|
*/
|
|
29
|
-
function Helpers0 (hb) {
|
|
30
|
-
//register a i18n helper
|
|
31
|
-
hb.registerHelper('__', function (key) {
|
|
32
|
-
return __(key);
|
|
33
|
-
});
|
|
34
|
-
/**
|
|
35
|
-
* Register dompurify helper
|
|
36
|
-
*
|
|
37
|
-
* https://github.com/cure53/DOMPurify
|
|
38
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
39
|
-
* to make output safe for template systems
|
|
40
|
-
*/
|
|
41
|
-
|
|
42
|
-
hb.registerHelper('dompurify', function (context) {
|
|
43
|
-
return DOMPurify.sanitize(context);
|
|
44
|
-
});
|
|
45
|
-
/**
|
|
46
|
-
* Register join helper
|
|
47
|
-
*
|
|
48
|
-
* Example :
|
|
49
|
-
* var values = {a:v1, b:v2, c:v3};
|
|
50
|
-
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
51
|
-
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
|
-
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
55
|
-
var fragments = [];
|
|
56
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
57
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
58
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
59
|
-
|
|
60
|
-
_.forIn(arr, function (value, key) {
|
|
61
|
-
var fragment = '';
|
|
62
|
-
|
|
63
|
-
if (value !== null || value !== undefined) {
|
|
64
|
-
if (typeof value === 'boolean') {
|
|
65
|
-
value = value ? 'true' : 'false';
|
|
66
|
-
} else if (typeof value === 'object') {
|
|
67
|
-
value = _.values(value).join(' ');
|
|
68
|
-
}
|
|
69
|
-
} else {
|
|
70
|
-
value = '';
|
|
71
|
-
}
|
|
72
32
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
33
|
+
hb.registerHelper('dompurify', function (context) {
|
|
34
|
+
return DOMPurify.sanitize(context);
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Register join helper
|
|
38
|
+
*
|
|
39
|
+
* Example :
|
|
40
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
41
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
42
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
43
|
+
*/
|
|
76
44
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
45
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
46
|
+
var fragments = [];
|
|
47
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
48
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
49
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
80
50
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
//it also adds a local variable "i" as the index in each iteration loop
|
|
51
|
+
_.forIn(arr, function (value, key) {
|
|
52
|
+
var fragment = '';
|
|
84
53
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
54
|
+
if (value !== null || value !== undefined) {
|
|
55
|
+
if (typeof value === 'boolean') {
|
|
56
|
+
value = value ? 'true' : 'false';
|
|
57
|
+
} else if (_typeof(value) === 'object') {
|
|
58
|
+
value = _.values(value).join(' ');
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
value = '';
|
|
62
|
+
}
|
|
90
63
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
i: i
|
|
94
|
-
}));
|
|
64
|
+
if (keyValueGlue !== undefined) {
|
|
65
|
+
fragment += key + keyValueGlue;
|
|
95
66
|
}
|
|
96
67
|
|
|
97
|
-
|
|
68
|
+
fragment += wrapper + value + wrapper;
|
|
69
|
+
fragments.push(fragment);
|
|
98
70
|
});
|
|
99
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
100
|
-
if (var1 == var2) {
|
|
101
|
-
return options.fn(this);
|
|
102
|
-
} else {
|
|
103
|
-
return options.inverse(this);
|
|
104
|
-
}
|
|
105
|
-
}); // register a "get property" helper
|
|
106
|
-
// it gets the named property from the provided context
|
|
107
71
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
// it checks if value is in array
|
|
72
|
+
return fragments.join(fragmentGlue);
|
|
73
|
+
}); //register a classic "for loop" helper
|
|
74
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
112
75
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
76
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
77
|
+
var ret = '';
|
|
78
|
+
startIndex = parseInt(startIndex);
|
|
79
|
+
stopIndex = parseInt(stopIndex);
|
|
80
|
+
increment = parseInt(increment);
|
|
119
81
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
125
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
126
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
127
|
-
var buffer = "", stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this, functionType="function";
|
|
128
|
-
|
|
129
|
-
function program1(depth0,data) {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return " no-border";
|
|
82
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
83
|
+
ret += options.fn(_.extend({}, this, {
|
|
84
|
+
i: i
|
|
85
|
+
}));
|
|
133
86
|
}
|
|
134
87
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
+ "</span>\n <input type=\"checkbox\"/>\n <span class=\"icon-checkbox\"></span>\n </label>\n ";
|
|
143
|
-
return buffer;
|
|
88
|
+
return ret;
|
|
89
|
+
});
|
|
90
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
91
|
+
if (var1 == var2) {
|
|
92
|
+
return options.fn(this);
|
|
93
|
+
} else {
|
|
94
|
+
return options.inverse(this);
|
|
144
95
|
}
|
|
96
|
+
}); // register a "get property" helper
|
|
97
|
+
// it gets the named property from the provided context
|
|
145
98
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
99
|
+
hb.registerHelper('property', function (name, context) {
|
|
100
|
+
return context[name] || '';
|
|
101
|
+
}); // register an 'includes' helper
|
|
102
|
+
// it checks if value is in array
|
|
103
|
+
|
|
104
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
105
|
+
if (_.contains(haystack, needle)) {
|
|
106
|
+
return options.fn(this);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (!Helpers0.__initialized) {
|
|
112
|
+
Helpers0(Handlebars);
|
|
113
|
+
Helpers0.__initialized = true;
|
|
114
|
+
}
|
|
115
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
116
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
117
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
118
|
+
var buffer = "", stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this, functionType="function";
|
|
119
|
+
|
|
120
|
+
function program1(depth0,data) {
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
return " no-border";
|
|
162
124
|
}
|
|
163
125
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
126
|
+
function program3(depth0,data) {
|
|
127
|
+
|
|
128
|
+
var buffer = "", helper, options;
|
|
129
|
+
buffer += "\n <label class=\"fold pseudo-label-box\">\n <span class=\"check-txt hide\">"
|
|
130
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Hide detailed report", options) : helperMissing.call(depth0, "__", "Hide detailed report", options)))
|
|
131
|
+
+ "</span>\n <span class=\"check-txt show\">"
|
|
132
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Show detailed report", options) : helperMissing.call(depth0, "__", "Show detailed report", options)))
|
|
133
|
+
+ "</span>\n <input type=\"checkbox\"/>\n <span class=\"icon-checkbox\"></span>\n </label>\n ";
|
|
134
|
+
return buffer;
|
|
167
135
|
}
|
|
168
|
-
var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
169
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
170
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
171
|
-
var buffer = "", stack1, helper, options, functionType="function", escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
|
|
172
|
-
|
|
173
|
-
function program1(depth0,data) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
return "hierarchical";
|
|
177
|
-
}
|
|
178
136
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
137
|
+
buffer += "<div class=\"component-report";
|
|
138
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.noBorder), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
139
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
140
|
+
buffer += "\">\n ";
|
|
141
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.detailsButtonVisible), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
|
|
142
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
143
|
+
buffer += "\n <div class=\"content\">";
|
|
144
|
+
if (helper = helpers.content) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
145
|
+
else { helper = (depth0 && depth0.content); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
146
|
+
buffer += escapeExpression(stack1)
|
|
147
|
+
+ "</div>\n</div>";
|
|
148
|
+
return buffer;
|
|
149
|
+
});
|
|
150
|
+
function layoutTpl(data, options, asString) {
|
|
151
|
+
var html = Template(data, options);
|
|
152
|
+
return (asString || true) ? html : $(html);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (!Helpers0.__initialized) {
|
|
156
|
+
Helpers0(Handlebars);
|
|
157
|
+
Helpers0.__initialized = true;
|
|
158
|
+
}
|
|
159
|
+
var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
160
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
161
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
162
|
+
var buffer = "", stack1, helper, options, functionType="function", escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
|
|
163
|
+
|
|
164
|
+
function program1(depth0,data) {
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
return "hierarchical";
|
|
168
|
+
}
|
|
184
169
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
170
|
+
function program3(depth0,data) {
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
return "leaf";
|
|
174
|
+
}
|
|
190
175
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
197
|
-
buffer += "\n ";
|
|
198
|
-
return buffer;
|
|
199
|
-
}
|
|
176
|
+
function program5(depth0,data) {
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
return " hierarchical-icon";
|
|
180
|
+
}
|
|
200
181
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
182
|
+
function program7(depth0,data) {
|
|
183
|
+
|
|
184
|
+
var buffer = "", stack1;
|
|
185
|
+
buffer += "\n ";
|
|
186
|
+
stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
|
|
187
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
188
|
+
buffer += "\n ";
|
|
189
|
+
return buffer;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function program9(depth0,data) {
|
|
193
|
+
|
|
194
|
+
var buffer = "", stack1, helper;
|
|
195
|
+
buffer += "\n <button data-trigger=\"";
|
|
196
|
+
if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
197
|
+
else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
198
|
+
buffer += escapeExpression(stack1)
|
|
199
|
+
+ "\" class=\"action btn-info\" title=\"";
|
|
200
|
+
if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
201
|
+
else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
202
|
+
buffer += escapeExpression(stack1)
|
|
203
|
+
+ "\"><span class=\"icon-";
|
|
204
|
+
if (helper = helpers.icon) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
205
|
+
else { helper = (depth0 && depth0.icon); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
206
|
+
buffer += escapeExpression(stack1)
|
|
207
|
+
+ "\"></span>";
|
|
208
|
+
if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
209
|
+
else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
210
|
+
buffer += escapeExpression(stack1)
|
|
211
|
+
+ "</button>\n ";
|
|
212
|
+
return buffer;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
buffer += "<div class=\"feedback-";
|
|
216
|
+
if (helper = helpers.type) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
217
|
+
else { helper = (depth0 && depth0.type); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
218
|
+
buffer += escapeExpression(stack1)
|
|
219
|
+
+ " ";
|
|
220
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.hasChildren), {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});
|
|
221
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
222
|
+
buffer += "\">\n <span class=\"icon-";
|
|
223
|
+
if (helper = helpers.type) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
224
|
+
else { helper = (depth0 && depth0.type); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
225
|
+
buffer += escapeExpression(stack1);
|
|
226
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.hasChildren), {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
|
|
227
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
228
|
+
buffer += "\"></span>\n <div class=\"message\">";
|
|
229
|
+
stack1 = (helper = helpers.dompurify || (depth0 && depth0.dompurify),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.message), options) : helperMissing.call(depth0, "dompurify", (depth0 && depth0.message), options));
|
|
230
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
231
|
+
buffer += "</div>\n ";
|
|
232
|
+
stack1 = helpers.each.call(depth0, (depth0 && depth0.children), {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
|
|
233
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
234
|
+
buffer += "\n <div class=\"actions\">\n ";
|
|
235
|
+
stack1 = helpers.each.call(depth0, (depth0 && depth0.actions), {hash:{},inverse:self.noop,fn:self.program(9, program9, data),data:data});
|
|
236
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
237
|
+
buffer += "\n </div>\n</div>";
|
|
238
|
+
return buffer;
|
|
239
|
+
});
|
|
240
|
+
function feedbackTpl(data, options, asString) {
|
|
241
|
+
var html = Template$1(data, options);
|
|
242
|
+
return (asString || true) ? html : $(html);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* This program is free software; you can redistribute it and/or
|
|
247
|
+
* modify it under the terms of the GNU General Public License
|
|
248
|
+
* as published by the Free Software Foundation; under version 2
|
|
249
|
+
* of the License (non-upgradable).
|
|
250
|
+
*
|
|
251
|
+
* This program is distributed in the hope that it will be useful,
|
|
252
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
253
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
254
|
+
* GNU General Public License for more details.
|
|
255
|
+
*
|
|
256
|
+
* You should have received a copy of the GNU General Public License
|
|
257
|
+
* along with this program; if not, write to the Free Software
|
|
258
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
259
|
+
*
|
|
260
|
+
* Copyright (c) 2017 (original work) Open Assessment Technologies SA ;
|
|
261
|
+
*/
|
|
262
|
+
var _defaults = {
|
|
263
|
+
showDetailsButton: true,
|
|
264
|
+
actions: []
|
|
265
|
+
};
|
|
266
|
+
/**
|
|
267
|
+
* Array of authorized report types
|
|
268
|
+
* @type {Array}
|
|
269
|
+
*/
|
|
270
|
+
|
|
271
|
+
var authorizedTypes = ['success', 'info', 'warning', 'error'];
|
|
272
|
+
/**
|
|
273
|
+
* Recursive function to render report messages
|
|
274
|
+
*
|
|
275
|
+
* @private
|
|
276
|
+
* @param {Object} data - a standard report object sent by the backend
|
|
277
|
+
* @param {String} data.type - the error type
|
|
278
|
+
* @param {String} data.message - the feedback message
|
|
279
|
+
* @param {Array} [data.children] - children report object
|
|
280
|
+
* @param {Array} [actions] - the actions buttons to be added, only for the first level of the hierarchy
|
|
281
|
+
* @returns {*}
|
|
282
|
+
*/
|
|
283
|
+
|
|
284
|
+
var _renderFeebacks = function _renderFeebacks(data, actions) {
|
|
285
|
+
var children = [];
|
|
286
|
+
|
|
287
|
+
if (!data.type || authorizedTypes.indexOf(data.type) === -1) {
|
|
288
|
+
throw new TypeError('Unkown report type: ' + data.type);
|
|
289
|
+
}
|
|
223
290
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
buffer += escapeExpression(stack1)
|
|
228
|
-
+ " ";
|
|
229
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.hasChildren), {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});
|
|
230
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
231
|
-
buffer += "\">\n <span class=\"icon-";
|
|
232
|
-
if (helper = helpers.type) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
233
|
-
else { helper = (depth0 && depth0.type); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
234
|
-
buffer += escapeExpression(stack1);
|
|
235
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.hasChildren), {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
|
|
236
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
237
|
-
buffer += "\"></span>\n <div class=\"message\">";
|
|
238
|
-
stack1 = (helper = helpers.dompurify || (depth0 && depth0.dompurify),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.message), options) : helperMissing.call(depth0, "dompurify", (depth0 && depth0.message), options));
|
|
239
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
240
|
-
buffer += "</div>\n ";
|
|
241
|
-
stack1 = helpers.each.call(depth0, (depth0 && depth0.children), {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
|
|
242
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
243
|
-
buffer += "\n <div class=\"actions\">\n ";
|
|
244
|
-
stack1 = helpers.each.call(depth0, (depth0 && depth0.actions), {hash:{},inverse:self.noop,fn:self.program(9, program9, data),data:data});
|
|
245
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
246
|
-
buffer += "\n </div>\n</div>";
|
|
247
|
-
return buffer;
|
|
291
|
+
if (_.isArray(data.children) && data.children.length) {
|
|
292
|
+
_.each(data.children, function (child) {
|
|
293
|
+
children.push(_renderFeebacks(child));
|
|
248
294
|
});
|
|
249
|
-
function feedbackTpl(data, options, asString) {
|
|
250
|
-
var html = Template$1(data, options);
|
|
251
|
-
return (asString || true) ? html : $(html);
|
|
252
295
|
}
|
|
253
296
|
|
|
297
|
+
data.hasChildren = children.length > 0;
|
|
298
|
+
data.children = children;
|
|
299
|
+
data.actions = actions;
|
|
300
|
+
return feedbackTpl(data);
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
var report = {
|
|
254
304
|
/**
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
-
* as published by the Free Software Foundation; under version 2
|
|
258
|
-
* of the License (non-upgradable).
|
|
259
|
-
*
|
|
260
|
-
* This program is distributed in the hope that it will be useful,
|
|
261
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
262
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
263
|
-
* GNU General Public License for more details.
|
|
264
|
-
*
|
|
265
|
-
* You should have received a copy of the GNU General Public License
|
|
266
|
-
* along with this program; if not, write to the Free Software
|
|
267
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
268
|
-
*
|
|
269
|
-
* Copyright (c) 2017 (original work) Open Assessment Technologies SA ;
|
|
270
|
-
*/
|
|
271
|
-
var _defaults = {
|
|
272
|
-
showDetailsButton: true,
|
|
273
|
-
actions: []
|
|
274
|
-
};
|
|
275
|
-
/**
|
|
276
|
-
* Array of authorized report types
|
|
277
|
-
* @type {Array}
|
|
305
|
+
* Check if the details of the report are currently visible
|
|
306
|
+
* @returns {Boolean}
|
|
278
307
|
*/
|
|
308
|
+
isDetailed: function isDetailed() {
|
|
309
|
+
return this.is('detailed');
|
|
310
|
+
},
|
|
279
311
|
|
|
280
|
-
var authorizedTypes = ['success', 'info', 'warning', 'error'];
|
|
281
312
|
/**
|
|
282
|
-
*
|
|
313
|
+
* Show the report details
|
|
283
314
|
*
|
|
284
|
-
* @
|
|
285
|
-
* @
|
|
286
|
-
* @param {String} data.type - the error type
|
|
287
|
-
* @param {String} data.message - the feedback message
|
|
288
|
-
* @param {Array} [data.children] - children report object
|
|
289
|
-
* @param {Array} [actions] - the actions buttons to be added, only for the first level of the hierarchy
|
|
290
|
-
* @returns {*}
|
|
315
|
+
* @returns {this}
|
|
316
|
+
* @fires reportComponent#showDetails
|
|
291
317
|
*/
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
throw new TypeError('Unkown report type: ' + data.type);
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
if (_.isArray(data.children) && data.children.length) {
|
|
301
|
-
_.each(data.children, function (child) {
|
|
302
|
-
children.push(_renderFeebacks(child));
|
|
303
|
-
});
|
|
318
|
+
showDetails: function showDetails() {
|
|
319
|
+
if (this.is('rendered')) {
|
|
320
|
+
this.setState('detailed', true);
|
|
321
|
+
this.getElement().find('.fold input').prop('checked', true);
|
|
322
|
+
this.trigger('showDetails');
|
|
304
323
|
}
|
|
305
324
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
data.actions = actions;
|
|
309
|
-
return feedbackTpl(data);
|
|
310
|
-
};
|
|
311
|
-
|
|
312
|
-
var report = {
|
|
313
|
-
/**
|
|
314
|
-
* Check if the details of the report are currently visible
|
|
315
|
-
* @returns {Boolean}
|
|
316
|
-
*/
|
|
317
|
-
isDetailed: function isDetailed() {
|
|
318
|
-
return this.is('detailed');
|
|
319
|
-
},
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* Show the report details
|
|
323
|
-
*
|
|
324
|
-
* @returns {this}
|
|
325
|
-
* @fires reportComponent#showDetails
|
|
326
|
-
*/
|
|
327
|
-
showDetails: function showDetails() {
|
|
328
|
-
if (this.is('rendered')) {
|
|
329
|
-
this.setState('detailed', true);
|
|
330
|
-
this.getElement().find('.fold input').prop('checked', true);
|
|
331
|
-
this.trigger('showDetails');
|
|
332
|
-
}
|
|
325
|
+
return this;
|
|
326
|
+
},
|
|
333
327
|
|
|
334
|
-
return this;
|
|
335
|
-
},
|
|
336
|
-
|
|
337
|
-
/**
|
|
338
|
-
* Hide the report details
|
|
339
|
-
*
|
|
340
|
-
* @returns {this}
|
|
341
|
-
* @fires reportComponent#hideDetails
|
|
342
|
-
*/
|
|
343
|
-
hideDetails: function hideDetails() {
|
|
344
|
-
if (this.is('rendered')) {
|
|
345
|
-
this.setState('detailed');
|
|
346
|
-
this.getElement().find('.fold input').prop('checked', false);
|
|
347
|
-
this.trigger('hideDetails');
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
return this;
|
|
351
|
-
}
|
|
352
|
-
};
|
|
353
328
|
/**
|
|
354
|
-
*
|
|
329
|
+
* Hide the report details
|
|
355
330
|
*
|
|
356
|
-
* @
|
|
357
|
-
* @
|
|
358
|
-
* @param {Array} [config.actions] - possibility to add more button controls
|
|
359
|
-
* @param {Object} data - a standard report object
|
|
360
|
-
* @param {String} data.type - the type of the report
|
|
361
|
-
* @param {String} data.message - the message to be included in the report body (html allowed)
|
|
362
|
-
* @param {Array} [data.children] - children report object
|
|
363
|
-
* @returns {reportComponent}
|
|
331
|
+
* @returns {this}
|
|
332
|
+
* @fires reportComponent#hideDetails
|
|
364
333
|
*/
|
|
334
|
+
hideDetails: function hideDetails() {
|
|
335
|
+
if (this.is('rendered')) {
|
|
336
|
+
this.setState('detailed');
|
|
337
|
+
this.getElement().find('.fold input').prop('checked', false);
|
|
338
|
+
this.trigger('hideDetails');
|
|
339
|
+
}
|
|
365
340
|
|
|
366
|
-
|
|
367
|
-
|
|
341
|
+
return this;
|
|
342
|
+
}
|
|
343
|
+
};
|
|
344
|
+
/**
|
|
345
|
+
* Create a simple report component
|
|
346
|
+
*
|
|
347
|
+
* @param {Object} config
|
|
348
|
+
* @param {Boolean} [config.showDetailsButton=true] - display the show/hide details toggle
|
|
349
|
+
* @param {Array} [config.actions] - possibility to add more button controls
|
|
350
|
+
* @param {Object} data - a standard report object
|
|
351
|
+
* @param {String} data.type - the type of the report
|
|
352
|
+
* @param {String} data.message - the message to be included in the report body (html allowed)
|
|
353
|
+
* @param {Array} [data.children] - children report object
|
|
354
|
+
* @returns {reportComponent}
|
|
355
|
+
*/
|
|
356
|
+
|
|
357
|
+
var reportComponentFactory = function reportComponentFactory(config, data) {
|
|
358
|
+
var initConfig = _.defaults(config || {}, _defaults);
|
|
359
|
+
|
|
360
|
+
if (data && _.isArray(data.children) && data.children.length) {
|
|
361
|
+
initConfig.detailsButtonVisible = initConfig.showDetailsButton;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* THe report component
|
|
365
|
+
* @typedef reportComponent
|
|
366
|
+
* @fires reportComponent#action
|
|
367
|
+
* @fires reportComponent#action-{custom action name}
|
|
368
|
+
*/
|
|
368
369
|
|
|
369
|
-
if (data && _.isArray(data.children) && data.children.length) {
|
|
370
|
-
initConfig.detailsButtonVisible = initConfig.showDetailsButton;
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* THe report component
|
|
374
|
-
* @typedef reportComponent
|
|
375
|
-
* @fires reportComponent#action
|
|
376
|
-
* @fires reportComponent#action-{custom action name}
|
|
377
|
-
*/
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
return component(report).setTemplate(layoutTpl).on('render', function () {
|
|
381
|
-
var self = this;
|
|
382
|
-
var $content = this.getElement().find('.content');
|
|
383
|
-
var $checkbox = this.getElement().find('.fold input');
|
|
384
|
-
$content.append(_renderFeebacks(_.cloneDeep(data), this.config.actions)); //init actions:
|
|
385
|
-
|
|
386
|
-
$content.on('click', '.action', function () {
|
|
387
|
-
var actionId = $$1(this).data('trigger');
|
|
388
|
-
self.trigger('action-' + actionId);
|
|
389
|
-
self.trigger('action', actionId);
|
|
390
|
-
}); //ensure multiple fast clicks only activate the toggle once
|
|
391
|
-
|
|
392
|
-
$checkbox.on('change', _.throttle(function () {
|
|
393
|
-
if (self.isDetailed()) {
|
|
394
|
-
self.hideDetails();
|
|
395
|
-
} else {
|
|
396
|
-
self.showDetails();
|
|
397
|
-
}
|
|
398
|
-
}, 100));
|
|
399
|
-
}).init(initConfig);
|
|
400
|
-
};
|
|
401
370
|
|
|
402
|
-
return
|
|
371
|
+
return component(report).setTemplate(layoutTpl).on('render', function () {
|
|
372
|
+
var self = this;
|
|
373
|
+
var $content = this.getElement().find('.content');
|
|
374
|
+
var $checkbox = this.getElement().find('.fold input');
|
|
375
|
+
$content.append(_renderFeebacks(_.cloneDeep(data), this.config.actions)); //init actions:
|
|
376
|
+
|
|
377
|
+
$content.on('click', '.action', function () {
|
|
378
|
+
var actionId = $$1(this).data('trigger');
|
|
379
|
+
self.trigger('action-' + actionId);
|
|
380
|
+
self.trigger('action', actionId);
|
|
381
|
+
}); //ensure multiple fast clicks only activate the toggle once
|
|
382
|
+
|
|
383
|
+
$checkbox.on('change', _.throttle(function () {
|
|
384
|
+
if (self.isDetailed()) {
|
|
385
|
+
self.hideDetails();
|
|
386
|
+
} else {
|
|
387
|
+
self.showDetails();
|
|
388
|
+
}
|
|
389
|
+
}, 100));
|
|
390
|
+
}).init(initConfig);
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
return reportComponentFactory;
|
|
403
394
|
|
|
404
395
|
});
|