@oat-sa/tao-core-ui 1.58.1 → 1.58.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actionbar.js +386 -395
- package/dist/adder.js +21 -19
- package/dist/animable/absorbable/absorbable.js +204 -213
- package/dist/animable/absorbable/css/absorb.css +1 -0
- package/dist/animable/absorbable/css/absorb.css.map +1 -1
- package/dist/animable/pulsable/pulsable.js +168 -177
- package/dist/autocomplete/css/autocomplete.css +1 -0
- package/dist/autocomplete/css/autocomplete.css.map +1 -1
- package/dist/autocomplete.js +68 -66
- package/dist/badge/badge.js +188 -197
- package/dist/badge/css/badge.css +1 -0
- package/dist/badge/css/badge.css.map +1 -1
- package/dist/breadcrumbs.js +275 -284
- package/dist/btngrouper.js +5 -5
- package/dist/bulkActionPopup.js +490 -495
- package/dist/button.js +283 -291
- package/dist/cascadingComboBox.js +249 -258
- package/dist/ckeditor/ckConfigurator.js +26 -19
- package/dist/ckeditor/dtdHandler.js +11 -9
- package/dist/class/selector.js +441 -450
- package/dist/component/resizable.js +1 -1
- package/dist/component/windowed.js +285 -294
- package/dist/component.js +419 -428
- package/dist/contextualPopup.js +417 -426
- package/dist/dashboard.js +300 -309
- package/dist/datalist.js +753 -762
- package/dist/datatable/filterStrategy/multiple.js +1 -1
- package/dist/datatable/filterStrategy/single.js +1 -1
- package/dist/datatable.js +1527 -1550
- package/dist/dateRange/dateRange.js +393 -402
- package/dist/datetime/picker.js +665 -672
- package/dist/deleter.js +368 -377
- package/dist/destination/selector.js +286 -295
- package/dist/dialog/alert.js +3 -3
- package/dist/dialog/confirm.js +1 -1
- package/dist/dialog/confirmDelete.js +216 -225
- package/dist/dialog.js +650 -654
- package/dist/disabler.js +8 -8
- package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +166 -175
- package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +518 -527
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +380 -389
- package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +539 -548
- package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +369 -378
- package/dist/documentViewer/providers/pdfViewer.js +184 -193
- package/dist/documentViewer.js +292 -301
- package/dist/dropdown.js +383 -392
- package/dist/durationer.js +5 -5
- package/dist/dynamicComponent.js +597 -598
- package/dist/feedback.js +356 -362
- package/dist/figure/FigureStateActive.js +117 -108
- package/dist/filesender.js +2 -2
- package/dist/filter.js +230 -239
- package/dist/form/dropdownForm.js +355 -357
- package/dist/form/form.js +919 -690
- package/dist/form/simpleForm.js +1 -1
- package/dist/form/validator/renderer.js +233 -235
- package/dist/form/validator/validator.js +257 -189
- package/dist/form/widget/definitions.js +1 -1
- package/dist/form/widget/providers/checkBox.js +254 -259
- package/dist/form/widget/providers/comboBox.js +187 -192
- package/dist/form/widget/providers/default.js +8 -9
- package/dist/form/widget/providers/hidden.js +170 -179
- package/dist/form/widget/providers/hiddenBox.js +262 -267
- package/dist/form/widget/providers/radioBox.js +216 -225
- package/dist/form/widget/providers/textArea.js +187 -196
- package/dist/form/widget/providers/textBox.js +2 -3
- package/dist/form/widget/widget.js +473 -475
- package/dist/formValidator/formValidator.js +1 -1
- package/dist/formValidator/highlighters/message.js +1 -1
- package/dist/generis/form/form.js +314 -323
- package/dist/generis/validator/validator.js +209 -218
- package/dist/generis/widget/checkBox/checkBox.js +218 -227
- package/dist/generis/widget/comboBox/comboBox.js +179 -188
- package/dist/generis/widget/hiddenBox/hiddenBox.js +220 -229
- package/dist/generis/widget/textBox/textBox.js +169 -178
- package/dist/generis/widget/widget.js +246 -255
- package/dist/groupedComboBox.js +222 -231
- package/dist/groupvalidator.js +2 -2
- package/dist/highlighter.js +967 -958
- package/dist/image/ImgStateActive/helper.js +7 -5
- package/dist/image/ImgStateActive/initHelper.js +49 -43
- package/dist/image/ImgStateActive/initMediaEditor.js +24 -20
- package/dist/image/ImgStateActive/mediaSizer.js +14 -12
- package/dist/image/ImgStateActive.js +72 -70
- package/dist/incrementer.js +6 -6
- package/dist/inplacer.js +6 -6
- package/dist/itemButtonList/css/item-button-list.css +1 -0
- package/dist/itemButtonList/css/item-button-list.css.map +1 -1
- package/dist/itemButtonList.js +439 -435
- package/dist/keyNavigation/navigableDomElement.js +51 -38
- package/dist/keyNavigation/navigator.js +85 -70
- package/dist/listbox.js +460 -469
- package/dist/liststyler.js +8 -8
- package/dist/loadingButton/loadingButton.js +209 -218
- package/dist/lock.js +476 -485
- package/dist/login/login.js +475 -484
- package/dist/maths/calculator/basicCalculator.js +235 -244
- package/dist/maths/calculator/calculatorComponent.js +3 -3
- package/dist/maths/calculator/core/board.js +772 -781
- package/dist/maths/calculator/core/expression.js +476 -485
- package/dist/maths/calculator/core/labels.js +228 -237
- package/dist/maths/calculator/core/tokenizer.js +1 -1
- package/dist/maths/calculator/core/tokens.js +163 -170
- package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +244 -253
- package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +279 -288
- package/dist/maths/calculator/scientificCalculator.js +327 -336
- package/dist/mediaEditor/mediaEditorComponent.js +238 -245
- package/dist/mediaEditor/plugins/mediaAlignment/helper.js +7 -7
- package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +229 -235
- package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +580 -589
- package/dist/mediaplayer/players/html5.js +666 -675
- package/dist/mediaplayer/players/youtube.js +419 -424
- package/dist/mediaplayer/support.js +11 -10
- package/dist/mediaplayer/utils/reminder.js +14 -13
- package/dist/mediaplayer/utils/timeObserver.js +10 -11
- package/dist/mediaplayer/youtubeManager.js +164 -145
- package/dist/mediaplayer.js +1565 -1520
- package/dist/mediasizer.js +669 -678
- package/dist/modal.js +10 -17
- package/dist/pageSizeSelector.js +219 -228
- package/dist/pagination/providers/pages.js +280 -289
- package/dist/pagination/providers/simple.js +192 -201
- package/dist/previewer.js +30 -30
- package/dist/progressbar.js +4 -4
- package/dist/report.js +347 -356
- package/dist/resource/filters.js +271 -280
- package/dist/resource/list.js +1264 -1273
- package/dist/resource/selector.js +865 -874
- package/dist/resource/tree.js +1483 -1492
- package/dist/resourcemgr/fileBrowser.js +564 -569
- package/dist/resourcemgr/filePreview.js +16 -16
- package/dist/resourcemgr/fileSelector.js +515 -524
- package/dist/resourcemgr/util/updatePermissions.js +2 -2
- package/dist/resourcemgr.js +306 -315
- package/dist/searchModal/advancedSearch.js +796 -767
- package/dist/searchModal.js +114 -91
- package/dist/switch/switch.js +298 -307
- package/dist/tabs.js +598 -575
- package/dist/taskQueue/status.js +312 -321
- package/dist/taskQueue/table.js +375 -384
- package/dist/taskQueue/taskQueueModel.js +488 -472
- package/dist/taskQueueButton/taskable.js +264 -273
- package/dist/taskQueueButton/treeButton.js +189 -198
- package/dist/themeLoader.js +24 -23
- package/dist/themes.js +1 -1
- package/dist/toggler.js +3 -3
- package/dist/tooltip.js +295 -304
- package/dist/transformer.js +2 -2
- package/dist/tristateCheckboxGroup.js +311 -320
- package/dist/uploader.js +687 -696
- package/dist/validator/Report.js +1 -1
- package/dist/validator/Validator.js +3 -3
- package/dist/validator/validators.js +9 -9
- package/dist/validator.js +240 -230
- package/dist/waitForMedia.js +1 -1
- package/package.json +3 -3
- package/src/animable/absorbable/css/absorb.css +1 -0
- package/src/animable/absorbable/css/absorb.css.map +1 -1
- package/src/autocomplete/css/autocomplete.css +1 -0
- package/src/autocomplete/css/autocomplete.css.map +1 -1
- package/src/badge/css/badge.css +1 -0
- package/src/badge/css/badge.css.map +1 -1
- package/src/ckeditor/ckConfigurator.js +4 -0
- package/src/itemButtonList/css/item-button-list.css +1 -0
- package/src/itemButtonList/css/item-button-list.css.map +1 -1
- package/src/.DS_Store +0 -0
- package/src/css/basic.css +0 -7826
- package/src/css/basic.css.map +0 -1
- package/src/css/ckeditor/skins/tao/css/dialog.css +0 -950
- package/src/css/ckeditor/skins/tao/css/dialog.css.map +0 -1
- package/src/css/ckeditor/skins/tao/css/editor.css +0 -1850
- package/src/css/ckeditor/skins/tao/css/editor.css.map +0 -1
- package/src/scss/.DS_Store +0 -0
- package/src/scss/basic.scss +0 -16
- package/src/scss/ckeditor/skins/tao/scss/dialog.scss +0 -763
- package/src/scss/ckeditor/skins/tao/scss/editor.scss +0 -111
- package/src/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +0 -59
- package/src/scss/ckeditor/skins/tao/scss/inc/_colorpanel.scss +0 -118
- package/src/scss/ckeditor/skins/tao/scss/inc/_elementspath.scss +0 -69
- package/src/scss/ckeditor/skins/tao/scss/inc/_mainui.scss +0 -194
- package/src/scss/ckeditor/skins/tao/scss/inc/_menu.scss +0 -181
- package/src/scss/ckeditor/skins/tao/scss/inc/_panel.scss +0 -200
- package/src/scss/ckeditor/skins/tao/scss/inc/_presets.scss +0 -32
- package/src/scss/ckeditor/skins/tao/scss/inc/_reset.scss +0 -101
- package/src/scss/ckeditor/skins/tao/scss/inc/_richcombo.scss +0 -213
- package/src/scss/ckeditor/skins/tao/scss/inc/_tao.scss +0 -59
- package/src/scss/ckeditor/skins/tao/scss/inc/_toolbar.scss +0 -301
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff.b64 +0 -1
- package/src/scss/font/tao/tao.eot +0 -0
- package/src/scss/font/tao/tao.svg +0 -235
- package/src/scss/font/tao/tao.ttf +0 -0
- package/src/scss/font/tao/tao.woff +0 -0
- package/src/scss/inc/_base.scss +0 -496
- package/src/scss/inc/_bootstrap.scss +0 -6
- package/src/scss/inc/_buttons.scss +0 -114
- package/src/scss/inc/_colors.scss +0 -88
- package/src/scss/inc/_feedback.scss +0 -150
- package/src/scss/inc/_flex-grid.scss +0 -15
- package/src/scss/inc/_fonts.scss +0 -4
- package/src/scss/inc/_forms.scss +0 -827
- package/src/scss/inc/_functions.scss +0 -283
- package/src/scss/inc/_grid.scss +0 -66
- package/src/scss/inc/_jquery.nouislider.scss +0 -254
- package/src/scss/inc/_normalize.scss +0 -528
- package/src/scss/inc/_report.scss +0 -68
- package/src/scss/inc/_secondary-properties.scss +0 -89
- package/src/scss/inc/_select2.scss +0 -634
- package/src/scss/inc/_toolbars.scss +0 -155
- package/src/scss/inc/_tooltip.scss +0 -312
- package/src/scss/inc/_variables.scss +0 -21
- package/src/scss/inc/base/_highlight.scss +0 -5
- package/src/scss/inc/base/_list-style.scss +0 -59
- package/src/scss/inc/base/_svg.scss +0 -3
- package/src/scss/inc/base/_table.scss +0 -63
- package/src/scss/inc/fonts/_source-sans-pro.scss +0 -29
- package/src/scss/inc/fonts/_tao-icon-classes.scss +0 -226
- package/src/scss/inc/fonts/_tao-icon-def.scss +0 -12
- package/src/scss/inc/fonts/_tao-icon-vars.scss +0 -240
|
@@ -1,330 +1,321 @@
|
|
|
1
1
|
define(['jquery', 'lodash', 'i18n', 'util/namespace', 'ui/scroller', 'ui/maths/calculator/core/terms', 'ui/maths/calculator/core/expression', 'ui/maths/calculator/core/plugin', 'handlebars', 'lib/dompurify/purify'], function ($$1, _, __, nsHelper, scrollHelper, registeredTerms, expressionHelper, pluginFactory, Handlebars, DOMPurify) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
3
|
+
$$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
|
|
4
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
5
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
6
|
+
nsHelper = nsHelper && Object.prototype.hasOwnProperty.call(nsHelper, 'default') ? nsHelper['default'] : nsHelper;
|
|
7
|
+
scrollHelper = scrollHelper && Object.prototype.hasOwnProperty.call(scrollHelper, 'default') ? scrollHelper['default'] : scrollHelper;
|
|
8
|
+
registeredTerms = registeredTerms && Object.prototype.hasOwnProperty.call(registeredTerms, 'default') ? registeredTerms['default'] : registeredTerms;
|
|
9
|
+
expressionHelper = expressionHelper && Object.prototype.hasOwnProperty.call(expressionHelper, 'default') ? expressionHelper['default'] : expressionHelper;
|
|
10
|
+
pluginFactory = pluginFactory && Object.prototype.hasOwnProperty.call(pluginFactory, 'default') ? pluginFactory['default'] : pluginFactory;
|
|
11
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
12
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
13
|
+
|
|
14
|
+
function _typeof(obj) {
|
|
15
|
+
"@babel/helpers - typeof";
|
|
16
|
+
|
|
17
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
18
|
+
return typeof obj;
|
|
19
|
+
} : function (obj) {
|
|
20
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
21
|
+
}, _typeof(obj);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function Helpers0 (hb) {
|
|
25
|
+
//register a i18n helper
|
|
26
|
+
hb.registerHelper('__', function (key) {
|
|
27
|
+
return __(key);
|
|
28
|
+
});
|
|
14
29
|
/**
|
|
15
|
-
*
|
|
16
|
-
* modify it under the terms of the GNU General Public License
|
|
17
|
-
* as published by the Free Software Foundation; under version 2
|
|
18
|
-
* of the License (non-upgradable).
|
|
19
|
-
*
|
|
20
|
-
* This program is distributed in the hope that it will be useful,
|
|
21
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
22
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
23
|
-
* GNU General Public License for more details.
|
|
24
|
-
*
|
|
25
|
-
* You should have received a copy of the GNU General Public License
|
|
26
|
-
* along with this program; if not, write to the Free Software
|
|
27
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
28
|
-
*
|
|
29
|
-
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
30
|
+
* Register dompurify helper
|
|
30
31
|
*
|
|
32
|
+
* https://github.com/cure53/DOMPurify
|
|
33
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
34
|
+
* to make output safe for template systems
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
hb.registerHelper('dompurify', function (context) {
|
|
38
|
+
return DOMPurify.sanitize(context);
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* Register join helper
|
|
31
42
|
*
|
|
43
|
+
* Example :
|
|
44
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
45
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
46
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
32
47
|
*/
|
|
33
|
-
function Helpers0 (hb) {
|
|
34
|
-
//register a i18n helper
|
|
35
|
-
hb.registerHelper('__', function (key) {
|
|
36
|
-
return __(key);
|
|
37
|
-
});
|
|
38
|
-
/**
|
|
39
|
-
* Register dompurify helper
|
|
40
|
-
*
|
|
41
|
-
* https://github.com/cure53/DOMPurify
|
|
42
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
43
|
-
* to make output safe for template systems
|
|
44
|
-
*/
|
|
45
48
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
*
|
|
52
|
-
* Example :
|
|
53
|
-
* var values = {a:v1, b:v2, c:v3};
|
|
54
|
-
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
55
|
-
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
56
|
-
*/
|
|
49
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
50
|
+
var fragments = [];
|
|
51
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
52
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
53
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
57
54
|
|
|
58
|
-
|
|
59
|
-
var
|
|
60
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
61
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
62
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
63
|
-
|
|
64
|
-
_.forIn(arr, function (value, key) {
|
|
65
|
-
var fragment = '';
|
|
66
|
-
|
|
67
|
-
if (value !== null || value !== undefined) {
|
|
68
|
-
if (typeof value === 'boolean') {
|
|
69
|
-
value = value ? 'true' : 'false';
|
|
70
|
-
} else if (typeof value === 'object') {
|
|
71
|
-
value = _.values(value).join(' ');
|
|
72
|
-
}
|
|
73
|
-
} else {
|
|
74
|
-
value = '';
|
|
75
|
-
}
|
|
55
|
+
_.forIn(arr, function (value, key) {
|
|
56
|
+
var fragment = '';
|
|
76
57
|
|
|
77
|
-
|
|
78
|
-
|
|
58
|
+
if (value !== null || value !== undefined) {
|
|
59
|
+
if (typeof value === 'boolean') {
|
|
60
|
+
value = value ? 'true' : 'false';
|
|
61
|
+
} else if (_typeof(value) === 'object') {
|
|
62
|
+
value = _.values(value).join(' ');
|
|
79
63
|
}
|
|
64
|
+
} else {
|
|
65
|
+
value = '';
|
|
66
|
+
}
|
|
80
67
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
return fragments.join(fragmentGlue);
|
|
86
|
-
}); //register a classic "for loop" helper
|
|
87
|
-
//it also adds a local variable "i" as the index in each iteration loop
|
|
88
|
-
|
|
89
|
-
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
90
|
-
var ret = '';
|
|
91
|
-
startIndex = parseInt(startIndex);
|
|
92
|
-
stopIndex = parseInt(stopIndex);
|
|
93
|
-
increment = parseInt(increment);
|
|
94
|
-
|
|
95
|
-
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
96
|
-
ret += options.fn(_.extend({}, this, {
|
|
97
|
-
i: i
|
|
98
|
-
}));
|
|
68
|
+
if (keyValueGlue !== undefined) {
|
|
69
|
+
fragment += key + keyValueGlue;
|
|
99
70
|
}
|
|
100
71
|
|
|
101
|
-
|
|
72
|
+
fragment += wrapper + value + wrapper;
|
|
73
|
+
fragments.push(fragment);
|
|
102
74
|
});
|
|
103
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
104
|
-
if (var1 == var2) {
|
|
105
|
-
return options.fn(this);
|
|
106
|
-
} else {
|
|
107
|
-
return options.inverse(this);
|
|
108
|
-
}
|
|
109
|
-
}); // register a "get property" helper
|
|
110
|
-
// it gets the named property from the provided context
|
|
111
75
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
// it checks if value is in array
|
|
76
|
+
return fragments.join(fragmentGlue);
|
|
77
|
+
}); //register a classic "for loop" helper
|
|
78
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
116
79
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
80
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
81
|
+
var ret = '';
|
|
82
|
+
startIndex = parseInt(startIndex);
|
|
83
|
+
stopIndex = parseInt(stopIndex);
|
|
84
|
+
increment = parseInt(increment);
|
|
123
85
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
130
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
131
|
-
var buffer = "", stack1, helper, functionType="function";
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
buffer += "<div class=\"history-line\">\n <div class=\"history-expression\">";
|
|
135
|
-
if (helper = helpers.expression) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
136
|
-
else { helper = (depth0 && depth0.expression); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
137
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
138
|
-
buffer += "</div>\n <div class=\"history-result\">";
|
|
139
|
-
if (helper = helpers.result) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
140
|
-
else { helper = (depth0 && depth0.result); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
141
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
142
|
-
buffer += "</div>\n</div>";
|
|
143
|
-
return buffer;
|
|
144
|
-
});
|
|
145
|
-
function historyTpl(data, options, asString) {
|
|
146
|
-
var html = Template(data, options);
|
|
147
|
-
return (asString || true) ? html : $(html);
|
|
148
|
-
}
|
|
86
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
87
|
+
ret += options.fn(_.extend({}, this, {
|
|
88
|
+
i: i
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
149
91
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
if(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
92
|
+
return ret;
|
|
93
|
+
});
|
|
94
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
95
|
+
if (var1 == var2) {
|
|
96
|
+
return options.fn(this);
|
|
97
|
+
} else {
|
|
98
|
+
return options.inverse(this);
|
|
99
|
+
}
|
|
100
|
+
}); // register a "get property" helper
|
|
101
|
+
// it gets the named property from the provided context
|
|
102
|
+
|
|
103
|
+
hb.registerHelper('property', function (name, context) {
|
|
104
|
+
return context[name] || '';
|
|
105
|
+
}); // register an 'includes' helper
|
|
106
|
+
// it checks if value is in array
|
|
107
|
+
|
|
108
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
109
|
+
if (_.contains(haystack, needle)) {
|
|
110
|
+
return options.fn(this);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (!Helpers0.__initialized) {
|
|
116
|
+
Helpers0(Handlebars);
|
|
117
|
+
Helpers0.__initialized = true;
|
|
118
|
+
}
|
|
119
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
120
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
121
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
122
|
+
var buffer = "", stack1, helper, functionType="function";
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
buffer += "<div class=\"history-line\">\n <div class=\"history-expression\">";
|
|
126
|
+
if (helper = helpers.expression) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
127
|
+
else { helper = (depth0 && depth0.expression); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
128
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
129
|
+
buffer += "</div>\n <div class=\"history-result\">";
|
|
130
|
+
if (helper = helpers.result) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
131
|
+
else { helper = (depth0 && depth0.result); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
132
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
133
|
+
buffer += "</div>\n</div>";
|
|
134
|
+
return buffer;
|
|
135
|
+
});
|
|
136
|
+
function historyTpl(data, options, asString) {
|
|
137
|
+
var html = Template(data, options);
|
|
138
|
+
return (asString || true) ? html : $(html);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (!Helpers0.__initialized) {
|
|
142
|
+
Helpers0(Handlebars);
|
|
143
|
+
Helpers0.__initialized = true;
|
|
144
|
+
}
|
|
145
|
+
var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
146
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
147
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
148
|
+
var buffer = "", stack1, helper, functionType="function";
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
buffer += "<div class=\"calculator-screen simple-screen\">\n <div class=\"screen-panel history\">";
|
|
152
|
+
if (helper = helpers.history) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
153
|
+
else { helper = (depth0 && depth0.history); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
154
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
155
|
+
buffer += "</div>\n <div class=\"screen-panel expression\">";
|
|
156
|
+
if (helper = helpers.expression) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
157
|
+
else { helper = (depth0 && depth0.expression); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
158
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
159
|
+
buffer += "</div>\n</div>";
|
|
160
|
+
return buffer;
|
|
161
|
+
});
|
|
162
|
+
function defaultScreenTpl(data, options, asString) {
|
|
163
|
+
var html = Template$1(data, options);
|
|
164
|
+
return (asString || true) ? html : $(html);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* This program is free software; you can redistribute it and/or
|
|
169
|
+
* modify it under the terms of the GNU General Public License
|
|
170
|
+
* as published by the Free Software Foundation; under version 2
|
|
171
|
+
* of the License (non-upgradable).
|
|
172
|
+
*
|
|
173
|
+
* This program is distributed in the hope that it will be useful,
|
|
174
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
175
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
176
|
+
* GNU General Public License for more details.
|
|
177
|
+
*
|
|
178
|
+
* You should have received a copy of the GNU General Public License
|
|
179
|
+
* along with this program; if not, write to the Free Software
|
|
180
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
181
|
+
*
|
|
182
|
+
* Copyright (c) 2018 Open Assessment Technologies SA ;
|
|
183
|
+
*/
|
|
184
|
+
var pluginName = 'simpleScreen';
|
|
185
|
+
/**
|
|
186
|
+
* Default displayed value
|
|
187
|
+
* @type {String}
|
|
188
|
+
*/
|
|
189
|
+
|
|
190
|
+
var defaultExpression = '0';
|
|
191
|
+
/**
|
|
192
|
+
* Default plugin config
|
|
193
|
+
* @type {Object}
|
|
194
|
+
*/
|
|
195
|
+
|
|
196
|
+
var defaultConfig = {
|
|
197
|
+
// the layout of the screen
|
|
198
|
+
layout: defaultScreenTpl,
|
|
199
|
+
// number of decimal digits shown for decimal numbers
|
|
200
|
+
decimalDigits: 5
|
|
201
|
+
};
|
|
202
|
+
var simpleScreen = pluginFactory({
|
|
203
|
+
name: pluginName,
|
|
175
204
|
|
|
176
205
|
/**
|
|
177
|
-
*
|
|
178
|
-
* modify it under the terms of the GNU General Public License
|
|
179
|
-
* as published by the Free Software Foundation; under version 2
|
|
180
|
-
* of the License (non-upgradable).
|
|
181
|
-
*
|
|
182
|
-
* This program is distributed in the hope that it will be useful,
|
|
183
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
184
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
185
|
-
* GNU General Public License for more details.
|
|
186
|
-
*
|
|
187
|
-
* You should have received a copy of the GNU General Public License
|
|
188
|
-
* along with this program; if not, write to the Free Software
|
|
189
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
190
|
-
*
|
|
191
|
-
* Copyright (c) 2018 Open Assessment Technologies SA ;
|
|
192
|
-
*/
|
|
193
|
-
var pluginName = 'simpleScreen';
|
|
194
|
-
/**
|
|
195
|
-
* Default displayed value
|
|
196
|
-
* @type {String}
|
|
206
|
+
* Called when the plugin should be initialized.
|
|
197
207
|
*/
|
|
208
|
+
init: function init() {
|
|
209
|
+
var calculator = this.getCalculator();
|
|
210
|
+
/**
|
|
211
|
+
* Reset the current expression
|
|
212
|
+
*/
|
|
213
|
+
|
|
214
|
+
function reset() {
|
|
215
|
+
calculator.replace(calculator.getConfig().expression || defaultExpression);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
reset();
|
|
219
|
+
calculator.after(nsHelper.namespaceAll('expressionchange', pluginName), function (expression) {
|
|
220
|
+
// ensure the displayed expression is at least a 0 (never be an empty string)
|
|
221
|
+
if (!expression.trim()) {
|
|
222
|
+
_.defer(reset);
|
|
223
|
+
}
|
|
224
|
+
}).after(nsHelper.namespaceAll('evaluate', pluginName), function () {
|
|
225
|
+
// when the expression is computed, replace it with the result as a variable
|
|
226
|
+
calculator.replace(registeredTerms.ANS.value);
|
|
227
|
+
}).on(nsHelper.namespaceAll('clear', pluginName), reset);
|
|
228
|
+
},
|
|
198
229
|
|
|
199
|
-
var defaultExpression = '0';
|
|
200
230
|
/**
|
|
201
|
-
*
|
|
202
|
-
* @type {Object}
|
|
231
|
+
* Called when the plugin should be rendered.
|
|
203
232
|
*/
|
|
233
|
+
render: function render() {
|
|
234
|
+
var self = this;
|
|
235
|
+
var calculator = this.getCalculator();
|
|
236
|
+
var areaBroker = calculator.getAreaBroker();
|
|
237
|
+
var pluginConfig = this.getConfig();
|
|
238
|
+
var tokenizer = calculator.getTokenizer();
|
|
239
|
+
/**
|
|
240
|
+
* Auto scroll to the last child of a container
|
|
241
|
+
* @param {jQuery} $container
|
|
242
|
+
* @param {String} [sel]
|
|
243
|
+
*/
|
|
204
244
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
// number of decimal digits shown for decimal numbers
|
|
209
|
-
decimalDigits: 5
|
|
210
|
-
};
|
|
211
|
-
var simpleScreen = pluginFactory({
|
|
212
|
-
name: pluginName,
|
|
213
|
-
|
|
245
|
+
function autoScroll($container, sel) {
|
|
246
|
+
scrollHelper.scrollTo($container.find(':last-child ' + (sel || '')), $container);
|
|
247
|
+
}
|
|
214
248
|
/**
|
|
215
|
-
*
|
|
249
|
+
* Renders the expression into a string
|
|
250
|
+
* @param {String|Object|token[]} expression
|
|
251
|
+
* @returns {String}
|
|
216
252
|
*/
|
|
217
|
-
init: function init() {
|
|
218
|
-
var calculator = this.getCalculator();
|
|
219
|
-
/**
|
|
220
|
-
* Reset the current expression
|
|
221
|
-
*/
|
|
222
|
-
|
|
223
|
-
function reset() {
|
|
224
|
-
calculator.replace(calculator.getConfig().expression || defaultExpression);
|
|
225
|
-
}
|
|
226
253
|
|
|
227
|
-
reset();
|
|
228
|
-
calculator.after(nsHelper.namespaceAll('expressionchange', pluginName), function (expression) {
|
|
229
|
-
// ensure the displayed expression is at least a 0 (never be an empty string)
|
|
230
|
-
if (!expression.trim()) {
|
|
231
|
-
_.defer(reset);
|
|
232
|
-
}
|
|
233
|
-
}).after(nsHelper.namespaceAll('evaluate', pluginName), function () {
|
|
234
|
-
// when the expression is computed, replace it with the result as a variable
|
|
235
|
-
calculator.replace(registeredTerms.ANS.value);
|
|
236
|
-
}).on(nsHelper.namespaceAll('clear', pluginName), reset);
|
|
237
|
-
},
|
|
238
254
|
|
|
255
|
+
function renderExpression(expression) {
|
|
256
|
+
var variables = expressionHelper.roundLastResultVariable(calculator.getVariables(), pluginConfig.decimalDigits);
|
|
257
|
+
return expressionHelper.render(expression, variables, tokenizer);
|
|
258
|
+
}
|
|
239
259
|
/**
|
|
240
|
-
*
|
|
260
|
+
* Updates the expression area
|
|
261
|
+
* @param {String|Object|token[]} tokens
|
|
241
262
|
*/
|
|
242
|
-
render: function render() {
|
|
243
|
-
var self = this;
|
|
244
|
-
var calculator = this.getCalculator();
|
|
245
|
-
var areaBroker = calculator.getAreaBroker();
|
|
246
|
-
var pluginConfig = this.getConfig();
|
|
247
|
-
var tokenizer = calculator.getTokenizer();
|
|
248
|
-
/**
|
|
249
|
-
* Auto scroll to the last child of a container
|
|
250
|
-
* @param {jQuery} $container
|
|
251
|
-
* @param {String} [sel]
|
|
252
|
-
*/
|
|
253
|
-
|
|
254
|
-
function autoScroll($container, sel) {
|
|
255
|
-
scrollHelper.scrollTo($container.find(':last-child ' + (sel || '')), $container);
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Renders the expression into a string
|
|
259
|
-
* @param {String|Object|token[]} expression
|
|
260
|
-
* @returns {String}
|
|
261
|
-
*/
|
|
262
|
-
|
|
263
263
|
|
|
264
|
-
function renderExpression(expression) {
|
|
265
|
-
var variables = expressionHelper.roundLastResultVariable(calculator.getVariables(), pluginConfig.decimalDigits);
|
|
266
|
-
return expressionHelper.render(expression, variables, tokenizer);
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Updates the expression area
|
|
270
|
-
* @param {String|Object|token[]} tokens
|
|
271
|
-
*/
|
|
272
264
|
|
|
265
|
+
function showExpression(tokens) {
|
|
266
|
+
self.controls.$expression.html(renderExpression(tokens));
|
|
267
|
+
autoScroll(self.controls.$expression);
|
|
268
|
+
}
|
|
273
269
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
}
|
|
270
|
+
if (!_.isFunction(pluginConfig.layout)) {
|
|
271
|
+
throw new TypeError('The screen plugin requires a template to render!');
|
|
272
|
+
}
|
|
278
273
|
|
|
279
|
-
|
|
280
|
-
|
|
274
|
+
this.$layout = $$1(pluginConfig.layout(_.defaults({
|
|
275
|
+
expression: renderExpression(calculator.getTokens())
|
|
276
|
+
}, pluginConfig)));
|
|
277
|
+
this.controls = {
|
|
278
|
+
$history: this.$layout.find('.history'),
|
|
279
|
+
$expression: this.$layout.find('.expression')
|
|
280
|
+
};
|
|
281
|
+
calculator.on(nsHelper.namespaceAll('command-clearAll', pluginName), function () {
|
|
282
|
+
self.controls.$history.empty();
|
|
283
|
+
}).on(nsHelper.namespaceAll('expressionchange', pluginName), function () {
|
|
284
|
+
calculator.setState('error', false);
|
|
285
|
+
showExpression(calculator.getTokens());
|
|
286
|
+
}).on(nsHelper.namespaceAll('evaluate', pluginName), function (result) {
|
|
287
|
+
self.controls.$history.html(historyTpl({
|
|
288
|
+
expression: renderExpression(calculator.getTokens()),
|
|
289
|
+
result: renderExpression(result)
|
|
290
|
+
}));
|
|
291
|
+
autoScroll(self.controls.$history, '.history-result');
|
|
292
|
+
}).after(nsHelper.namespaceAll('evaluate', pluginName), function (result) {
|
|
293
|
+
if (expressionHelper.containsError(result.value)) {
|
|
294
|
+
showExpression(result);
|
|
281
295
|
}
|
|
296
|
+
}).on(nsHelper.namespaceAll('syntaxerror', pluginName), function () {
|
|
297
|
+
calculator.setState('error', true);
|
|
298
|
+
showExpression(calculator.getExpression() + registeredTerms.ERROR.value);
|
|
299
|
+
});
|
|
300
|
+
areaBroker.getScreenArea().append(this.$layout);
|
|
301
|
+
},
|
|
282
302
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
$expression: this.$layout.find('.expression')
|
|
289
|
-
};
|
|
290
|
-
calculator.on(nsHelper.namespaceAll('command-clearAll', pluginName), function () {
|
|
291
|
-
self.controls.$history.empty();
|
|
292
|
-
}).on(nsHelper.namespaceAll('expressionchange', pluginName), function () {
|
|
293
|
-
calculator.setState('error', false);
|
|
294
|
-
showExpression(calculator.getTokens());
|
|
295
|
-
}).on(nsHelper.namespaceAll('evaluate', pluginName), function (result) {
|
|
296
|
-
self.controls.$history.html(historyTpl({
|
|
297
|
-
expression: renderExpression(calculator.getTokens()),
|
|
298
|
-
result: renderExpression(result)
|
|
299
|
-
}));
|
|
300
|
-
autoScroll(self.controls.$history, '.history-result');
|
|
301
|
-
}).after(nsHelper.namespaceAll('evaluate', pluginName), function (result) {
|
|
302
|
-
if (expressionHelper.containsError(result.value)) {
|
|
303
|
-
showExpression(result);
|
|
304
|
-
}
|
|
305
|
-
}).on(nsHelper.namespaceAll('syntaxerror', pluginName), function () {
|
|
306
|
-
calculator.setState('error', true);
|
|
307
|
-
showExpression(calculator.getExpression() + registeredTerms.ERROR.value);
|
|
308
|
-
});
|
|
309
|
-
areaBroker.getScreenArea().append(this.$layout);
|
|
310
|
-
},
|
|
311
|
-
|
|
312
|
-
/**
|
|
313
|
-
* Called when the plugin is destroyed. Mostly when the host is destroyed itself.
|
|
314
|
-
*/
|
|
315
|
-
destroy: function destroy() {
|
|
316
|
-
var calculator = this.getCalculator();
|
|
317
|
-
|
|
318
|
-
if (this.$layout) {
|
|
319
|
-
this.$layout.off('.' + pluginName).remove();
|
|
320
|
-
this.$layout = null;
|
|
321
|
-
}
|
|
303
|
+
/**
|
|
304
|
+
* Called when the plugin is destroyed. Mostly when the host is destroyed itself.
|
|
305
|
+
*/
|
|
306
|
+
destroy: function destroy() {
|
|
307
|
+
var calculator = this.getCalculator();
|
|
322
308
|
|
|
323
|
-
|
|
324
|
-
|
|
309
|
+
if (this.$layout) {
|
|
310
|
+
this.$layout.off('.' + pluginName).remove();
|
|
311
|
+
this.$layout = null;
|
|
325
312
|
}
|
|
326
|
-
}, defaultConfig);
|
|
327
313
|
|
|
328
|
-
|
|
314
|
+
this.controls = null;
|
|
315
|
+
calculator.off('.' + pluginName);
|
|
316
|
+
}
|
|
317
|
+
}, defaultConfig);
|
|
318
|
+
|
|
319
|
+
return simpleScreen;
|
|
329
320
|
|
|
330
321
|
});
|