@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,459 +1,450 @@
|
|
|
1
1
|
define(['lodash', 'i18n', 'moment', 'ui/component', 'ui/datetime/picker', 'handlebars', 'lib/dompurify/purify', 'css!ui/dateRange/css/dateRange.css'], function (_, __, moment, component, dateTimePicker, Handlebars, DOMPurify, dateRange_css) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
4
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
5
|
+
moment = moment && Object.prototype.hasOwnProperty.call(moment, 'default') ? moment['default'] : moment;
|
|
6
|
+
component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
|
|
7
|
+
dateTimePicker = dateTimePicker && Object.prototype.hasOwnProperty.call(dateTimePicker, 'default') ? dateTimePicker['default'] : dateTimePicker;
|
|
8
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
9
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
10
|
+
|
|
11
|
+
function _typeof(obj) {
|
|
12
|
+
"@babel/helpers - typeof";
|
|
13
|
+
|
|
14
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
15
|
+
return typeof obj;
|
|
16
|
+
} : function (obj) {
|
|
17
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
18
|
+
}, _typeof(obj);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function Helpers0 (hb) {
|
|
22
|
+
//register a i18n helper
|
|
23
|
+
hb.registerHelper('__', function (key) {
|
|
24
|
+
return __(key);
|
|
25
|
+
});
|
|
11
26
|
/**
|
|
12
|
-
*
|
|
13
|
-
* modify it under the terms of the GNU General Public License
|
|
14
|
-
* as published by the Free Software Foundation; under version 2
|
|
15
|
-
* of the License (non-upgradable).
|
|
16
|
-
*
|
|
17
|
-
* This program is distributed in the hope that it will be useful,
|
|
18
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
20
|
-
* GNU General Public License for more details.
|
|
21
|
-
*
|
|
22
|
-
* You should have received a copy of the GNU General Public License
|
|
23
|
-
* along with this program; if not, write to the Free Software
|
|
24
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
25
|
-
*
|
|
26
|
-
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
27
|
-
*
|
|
27
|
+
* Register dompurify helper
|
|
28
28
|
*
|
|
29
|
+
* https://github.com/cure53/DOMPurify
|
|
30
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
31
|
+
* to make output safe for template systems
|
|
29
32
|
*/
|
|
30
|
-
function Helpers0 (hb) {
|
|
31
|
-
//register a i18n helper
|
|
32
|
-
hb.registerHelper('__', function (key) {
|
|
33
|
-
return __(key);
|
|
34
|
-
});
|
|
35
|
-
/**
|
|
36
|
-
* Register dompurify helper
|
|
37
|
-
*
|
|
38
|
-
* https://github.com/cure53/DOMPurify
|
|
39
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
40
|
-
* to make output safe for template systems
|
|
41
|
-
*/
|
|
42
33
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
34
|
+
hb.registerHelper('dompurify', function (context) {
|
|
35
|
+
return DOMPurify.sanitize(context);
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* Register join helper
|
|
39
|
+
*
|
|
40
|
+
* Example :
|
|
41
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
42
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
43
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
44
|
+
*/
|
|
54
45
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
46
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
47
|
+
var fragments = [];
|
|
48
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
49
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
50
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
60
51
|
|
|
61
|
-
|
|
62
|
-
|
|
52
|
+
_.forIn(arr, function (value, key) {
|
|
53
|
+
var fragment = '';
|
|
63
54
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
} else {
|
|
71
|
-
value = '';
|
|
55
|
+
if (value !== null || value !== undefined) {
|
|
56
|
+
if (typeof value === 'boolean') {
|
|
57
|
+
value = value ? 'true' : 'false';
|
|
58
|
+
} else if (_typeof(value) === 'object') {
|
|
59
|
+
value = _.values(value).join(' ');
|
|
72
60
|
}
|
|
61
|
+
} else {
|
|
62
|
+
value = '';
|
|
63
|
+
}
|
|
73
64
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
fragment += wrapper + value + wrapper;
|
|
79
|
-
fragments.push(fragment);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
return fragments.join(fragmentGlue);
|
|
83
|
-
}); //register a classic "for loop" helper
|
|
84
|
-
//it also adds a local variable "i" as the index in each iteration loop
|
|
85
|
-
|
|
86
|
-
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
87
|
-
var ret = '';
|
|
88
|
-
startIndex = parseInt(startIndex);
|
|
89
|
-
stopIndex = parseInt(stopIndex);
|
|
90
|
-
increment = parseInt(increment);
|
|
91
|
-
|
|
92
|
-
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
93
|
-
ret += options.fn(_.extend({}, this, {
|
|
94
|
-
i: i
|
|
95
|
-
}));
|
|
65
|
+
if (keyValueGlue !== undefined) {
|
|
66
|
+
fragment += key + keyValueGlue;
|
|
96
67
|
}
|
|
97
68
|
|
|
98
|
-
|
|
69
|
+
fragment += wrapper + value + wrapper;
|
|
70
|
+
fragments.push(fragment);
|
|
99
71
|
});
|
|
100
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
101
|
-
if (var1 == var2) {
|
|
102
|
-
return options.fn(this);
|
|
103
|
-
} else {
|
|
104
|
-
return options.inverse(this);
|
|
105
|
-
}
|
|
106
|
-
}); // register a "get property" helper
|
|
107
|
-
// it gets the named property from the provided context
|
|
108
72
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
// it checks if value is in array
|
|
73
|
+
return fragments.join(fragmentGlue);
|
|
74
|
+
}); //register a classic "for loop" helper
|
|
75
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
113
76
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
77
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
78
|
+
var ret = '';
|
|
79
|
+
startIndex = parseInt(startIndex);
|
|
80
|
+
stopIndex = parseInt(stopIndex);
|
|
81
|
+
increment = parseInt(increment);
|
|
120
82
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
126
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
127
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
128
|
-
var buffer = "", stack1, helper, options, functionType="function", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
|
|
129
|
-
|
|
130
|
-
function program1(depth0,data) {
|
|
131
|
-
|
|
132
|
-
var buffer = "", stack1;
|
|
133
|
-
buffer += "\n <button class=\"small btn-info\" data-control=\"filter\" title=\""
|
|
134
|
-
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.applyButton)),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
135
|
-
+ "\">\n <span class=\"icon icon-"
|
|
136
|
-
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.applyButton)),stack1 == null || stack1 === false ? stack1 : stack1.icon)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
137
|
-
+ "\"></span> "
|
|
138
|
-
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.applyButton)),stack1 == null || stack1 === false ? stack1 : stack1.label)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
139
|
-
+ "\n </button>\n ";
|
|
140
|
-
return buffer;
|
|
83
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
84
|
+
ret += options.fn(_.extend({}, this, {
|
|
85
|
+
i: i
|
|
86
|
+
}));
|
|
141
87
|
}
|
|
142
88
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
+ "\"></span> "
|
|
151
|
-
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.resetButton)),stack1 == null || stack1 === false ? stack1 : stack1.label)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
152
|
-
+ "\n </button>\n ";
|
|
153
|
-
return buffer;
|
|
89
|
+
return ret;
|
|
90
|
+
});
|
|
91
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
92
|
+
if (var1 == var2) {
|
|
93
|
+
return options.fn(this);
|
|
94
|
+
} else {
|
|
95
|
+
return options.inverse(this);
|
|
154
96
|
}
|
|
97
|
+
}); // register a "get property" helper
|
|
98
|
+
// it gets the named property from the provided context
|
|
155
99
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
if(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
100
|
+
hb.registerHelper('property', function (name, context) {
|
|
101
|
+
return context[name] || '';
|
|
102
|
+
}); // register an 'includes' helper
|
|
103
|
+
// it checks if value is in array
|
|
104
|
+
|
|
105
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
106
|
+
if (_.contains(haystack, needle)) {
|
|
107
|
+
return options.fn(this);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (!Helpers0.__initialized) {
|
|
113
|
+
Helpers0(Handlebars);
|
|
114
|
+
Helpers0.__initialized = true;
|
|
115
|
+
}
|
|
116
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
117
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
118
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
119
|
+
var buffer = "", stack1, helper, options, functionType="function", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
|
|
120
|
+
|
|
121
|
+
function program1(depth0,data) {
|
|
122
|
+
|
|
123
|
+
var buffer = "", stack1;
|
|
124
|
+
buffer += "\n <button class=\"small btn-info\" data-control=\"filter\" title=\""
|
|
125
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.applyButton)),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
126
|
+
+ "\">\n <span class=\"icon icon-"
|
|
127
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.applyButton)),stack1 == null || stack1 === false ? stack1 : stack1.icon)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
128
|
+
+ "\"></span> "
|
|
129
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.applyButton)),stack1 == null || stack1 === false ? stack1 : stack1.label)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
130
|
+
+ "\n </button>\n ";
|
|
131
|
+
return buffer;
|
|
172
132
|
}
|
|
173
133
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
* along with this program; if not, write to the Free Software
|
|
187
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
188
|
-
*
|
|
189
|
-
* Copyright (c) 2016-2019 (original work) Open Assessment Technologies SA ;
|
|
190
|
-
*
|
|
191
|
-
*/
|
|
192
|
-
/**
|
|
193
|
-
* Default configuration
|
|
194
|
-
* @type {Object}
|
|
195
|
-
*/
|
|
134
|
+
function program3(depth0,data) {
|
|
135
|
+
|
|
136
|
+
var buffer = "", stack1;
|
|
137
|
+
buffer += "\n <button class=\"small btn-info btn-secondary\" data-control=\"reset\" title=\""
|
|
138
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.resetButton)),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
139
|
+
+ "\">\n <span class=\"icon icon-"
|
|
140
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.resetButton)),stack1 == null || stack1 === false ? stack1 : stack1.icon)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
141
|
+
+ "\"></span> "
|
|
142
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.resetButton)),stack1 == null || stack1 === false ? stack1 : stack1.label)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
143
|
+
+ "\n </button>\n ";
|
|
144
|
+
return buffer;
|
|
145
|
+
}
|
|
196
146
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
147
|
+
buffer += "<div class=\"daterange\">\n <span class=\"start\">\n <label for=\"periodStart\">"
|
|
148
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "From", options) : helperMissing.call(depth0, "__", "From", options)))
|
|
149
|
+
+ "</label>\n </span>\n <span class=\"end\">\n <label for=\"periodEnd\">"
|
|
150
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "to", options) : helperMissing.call(depth0, "__", "to", options)))
|
|
151
|
+
+ "</label>\n </span>\n ";
|
|
152
|
+
stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 && depth0.applyButton)),stack1 == null || stack1 === false ? stack1 : stack1.enable), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
153
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
154
|
+
buffer += "\n ";
|
|
155
|
+
stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 && depth0.resetButton)),stack1 == null || stack1 === false ? stack1 : stack1.enable), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
|
|
156
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
157
|
+
buffer += "\n</div>\n";
|
|
158
|
+
return buffer;
|
|
159
|
+
});
|
|
160
|
+
function formTpl(data, options, asString) {
|
|
161
|
+
var html = Template(data, options);
|
|
162
|
+
return (asString || true) ? html : $(html);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* This program is free software; you can redistribute it and/or
|
|
167
|
+
* modify it under the terms of the GNU General Public License
|
|
168
|
+
* as published by the Free Software Foundation; under version 2
|
|
169
|
+
* of the License (non-upgradable).
|
|
170
|
+
*
|
|
171
|
+
* This program is distributed in the hope that it will be useful,
|
|
172
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
173
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
174
|
+
* GNU General Public License for more details.
|
|
175
|
+
*
|
|
176
|
+
* You should have received a copy of the GNU General Public License
|
|
177
|
+
* along with this program; if not, write to the Free Software
|
|
178
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
179
|
+
*
|
|
180
|
+
* Copyright (c) 2016-2019 (original work) Open Assessment Technologies SA ;
|
|
181
|
+
*
|
|
182
|
+
*/
|
|
183
|
+
/**
|
|
184
|
+
* Default configuration
|
|
185
|
+
* @type {Object}
|
|
186
|
+
*/
|
|
187
|
+
|
|
188
|
+
var defaults = {
|
|
189
|
+
maxRangeDays: false,
|
|
190
|
+
resetButton: {
|
|
191
|
+
enable: true,
|
|
192
|
+
label: __('Reset'),
|
|
193
|
+
title: __('Reset the range values'),
|
|
194
|
+
icon: 'reset'
|
|
195
|
+
},
|
|
196
|
+
applyButton: {
|
|
197
|
+
enable: true,
|
|
198
|
+
label: __('Apply'),
|
|
199
|
+
title: __('Apply date range'),
|
|
200
|
+
icon: 'filter'
|
|
201
|
+
},
|
|
202
|
+
startPicker: {
|
|
203
|
+
setup: 'datetime',
|
|
204
|
+
format: 'YYYY-MM-DD HH:mm:SS',
|
|
205
|
+
field: {
|
|
206
|
+
name: 'periodStart'
|
|
224
207
|
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
208
|
+
},
|
|
209
|
+
endPicker: {
|
|
210
|
+
setup: 'datetime',
|
|
211
|
+
format: 'YYYY-MM-DD HH:mm:SS',
|
|
212
|
+
field: {
|
|
213
|
+
name: 'periodEnd'
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
/**
|
|
218
|
+
* Setup a datetime picker on an element
|
|
219
|
+
* @param {HTMLElement|jQuery} element - the element to append to the picker to
|
|
220
|
+
* @param {Object} [config] - the picker configuration
|
|
221
|
+
* @returns {Promise<dateTimePicker>} resolves when the picker is "ready"
|
|
222
|
+
*/
|
|
223
|
+
|
|
224
|
+
var setupDateTimePicker = function setupDateTimePicker(element, config) {
|
|
225
|
+
return new Promise(function (resolve) {
|
|
226
|
+
dateTimePicker(element, config).on('ready', function () {
|
|
227
|
+
resolve(this);
|
|
238
228
|
});
|
|
239
|
-
};
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* Creates a dates range with date pickers
|
|
233
|
+
*
|
|
234
|
+
* @param {HTMLElement|jQuery} container - where to append the component
|
|
235
|
+
* @param {Object} [config]
|
|
236
|
+
* @param {Object} [config.resetButton]
|
|
237
|
+
* @param {Boolean} [config.resetButton.enable] - enable or not the reset button
|
|
238
|
+
* @param {String} [config.resetButton.label] - the reset button label
|
|
239
|
+
* @param {String} [config.resetButton.title] - the reset button title (HTML title)
|
|
240
|
+
* @param {Boolean} [config.applyButton.enable] - enable or not the apply button
|
|
241
|
+
* @param {String} [config.applyButton.label] - the apply button label
|
|
242
|
+
* @param {String} [config.applyButton.title] - the apply button title (HTML title)
|
|
243
|
+
* @param {Object} [config.startPicker] - the configuration sent to the start picker, see ui/datetime/picker
|
|
244
|
+
* @param {Object} [config.startPicker] - the configuration sent to the end picker ,s see ui/datetime/picker
|
|
245
|
+
* @param {Number} [config.maxRangeDays] - if > 0 limits the max number of days in the range
|
|
246
|
+
* @fires dateRange#ready the picker is ready
|
|
247
|
+
* @fires dateRange#change when any date is changed
|
|
248
|
+
* @fires dateRange#close when a picker is closed
|
|
249
|
+
* @fires dateRange#submit when the submit button is clicked
|
|
250
|
+
*/
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
function dateRangeFactory(container, config) {
|
|
254
|
+
// if the picker replace fields we don't use the component template
|
|
255
|
+
// NOTE this is used for backward compatibility only...
|
|
256
|
+
var preConfig = _.defaults(config || {}, defaults);
|
|
257
|
+
|
|
258
|
+
var useTemplate = preConfig.startPicker && !preConfig.startPicker.replaceField && preConfig.endPicker && !preConfig.endPicker.replaceField;
|
|
240
259
|
/**
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
* @param {HTMLElement|jQuery} container - where to append the component
|
|
244
|
-
* @param {Object} [config]
|
|
245
|
-
* @param {Object} [config.resetButton]
|
|
246
|
-
* @param {Boolean} [config.resetButton.enable] - enable or not the reset button
|
|
247
|
-
* @param {String} [config.resetButton.label] - the reset button label
|
|
248
|
-
* @param {String} [config.resetButton.title] - the reset button title (HTML title)
|
|
249
|
-
* @param {Boolean} [config.applyButton.enable] - enable or not the apply button
|
|
250
|
-
* @param {String} [config.applyButton.label] - the apply button label
|
|
251
|
-
* @param {String} [config.applyButton.title] - the apply button title (HTML title)
|
|
252
|
-
* @param {Object} [config.startPicker] - the configuration sent to the start picker, see ui/datetime/picker
|
|
253
|
-
* @param {Object} [config.startPicker] - the configuration sent to the end picker ,s see ui/datetime/picker
|
|
254
|
-
* @param {Number} [config.maxRangeDays] - if > 0 limits the max number of days in the range
|
|
255
|
-
* @fires dateRange#ready the picker is ready
|
|
256
|
-
* @fires dateRange#change when any date is changed
|
|
257
|
-
* @fires dateRange#close when a picker is closed
|
|
258
|
-
* @fires dateRange#submit when the submit button is clicked
|
|
260
|
+
* The date range component
|
|
261
|
+
* @typedef {Object} dateRange
|
|
259
262
|
*/
|
|
260
263
|
|
|
264
|
+
var dateRange = component({
|
|
265
|
+
/**
|
|
266
|
+
* Gets the start date of the range
|
|
267
|
+
* @returns {String} the start date value
|
|
268
|
+
*/
|
|
269
|
+
getStart: function getStart() {
|
|
270
|
+
if (this.is('ready')) {
|
|
271
|
+
return this.startPicker.getValue();
|
|
272
|
+
}
|
|
273
|
+
},
|
|
261
274
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
275
|
+
/**
|
|
276
|
+
* Gets the end date of the range
|
|
277
|
+
* @returns {String} the end date value
|
|
278
|
+
*/
|
|
279
|
+
getEnd: function getEnd() {
|
|
280
|
+
if (this.is('ready')) {
|
|
281
|
+
return this.endPicker.getValue();
|
|
282
|
+
}
|
|
283
|
+
},
|
|
266
284
|
|
|
267
|
-
var useTemplate = preConfig.startPicker && !preConfig.startPicker.replaceField && preConfig.endPicker && !preConfig.endPicker.replaceField;
|
|
268
285
|
/**
|
|
269
|
-
*
|
|
270
|
-
* @
|
|
286
|
+
* Reset the values
|
|
287
|
+
* @returns {dateRange} chains
|
|
288
|
+
* @fires dateRange#reset
|
|
271
289
|
*/
|
|
290
|
+
reset: function reset() {
|
|
291
|
+
if (this.is('ready')) {
|
|
292
|
+
this.startPicker.updateConstraints('maxDate', null).clear();
|
|
293
|
+
this.endPicker.updateConstraints('minDate', null).clear();
|
|
294
|
+
/**
|
|
295
|
+
* The values get cleared out
|
|
296
|
+
* @event dateRange#reset
|
|
297
|
+
*/
|
|
272
298
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
* Gets the start date of the range
|
|
276
|
-
* @returns {String} the start date value
|
|
277
|
-
*/
|
|
278
|
-
getStart: function getStart() {
|
|
279
|
-
if (this.is('ready')) {
|
|
280
|
-
return this.startPicker.getValue();
|
|
281
|
-
}
|
|
282
|
-
},
|
|
299
|
+
this.trigger('reset');
|
|
300
|
+
}
|
|
283
301
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
* @returns {String} the end date value
|
|
287
|
-
*/
|
|
288
|
-
getEnd: function getEnd() {
|
|
289
|
-
if (this.is('ready')) {
|
|
290
|
-
return this.endPicker.getValue();
|
|
291
|
-
}
|
|
292
|
-
},
|
|
302
|
+
return this;
|
|
303
|
+
},
|
|
293
304
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
305
|
+
/**
|
|
306
|
+
* Apply and submit the values
|
|
307
|
+
* @returns {dateRange} chains
|
|
308
|
+
* @fires dateRange#submit
|
|
309
|
+
*/
|
|
310
|
+
submit: function submit() {
|
|
311
|
+
if (this.is('ready')) {
|
|
312
|
+
/**
|
|
313
|
+
* The values get submitted
|
|
314
|
+
* @event dateRange#submit
|
|
315
|
+
* @param {String} start - the start/from date
|
|
316
|
+
* @param {String} end - the end/to date
|
|
317
|
+
*/
|
|
318
|
+
this.trigger('submit', this.getStart(), this.getEnd());
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}, defaults);
|
|
310
322
|
|
|
311
|
-
|
|
312
|
-
|
|
323
|
+
if (useTemplate) {
|
|
324
|
+
dateRange.setTemplate(formTpl);
|
|
325
|
+
}
|
|
313
326
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
* @event dateRange#submit
|
|
324
|
-
* @param {String} start - the start/from date
|
|
325
|
-
* @param {String} end - the end/to date
|
|
326
|
-
*/
|
|
327
|
-
this.trigger('submit', this.getStart(), this.getEnd());
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
}, defaults);
|
|
327
|
+
dateRange.on('init', function () {
|
|
328
|
+
if (container) {
|
|
329
|
+
this.render(container);
|
|
330
|
+
}
|
|
331
|
+
}).on('render', function () {
|
|
332
|
+
var self = this;
|
|
333
|
+
var startElement;
|
|
334
|
+
var endElement;
|
|
335
|
+
var element = this.getElement()[0];
|
|
331
336
|
|
|
332
337
|
if (useTemplate) {
|
|
333
|
-
|
|
338
|
+
this.controls = {
|
|
339
|
+
filter: element.querySelector('[data-control="filter"]'),
|
|
340
|
+
reset: element.querySelector('[data-control="reset"]'),
|
|
341
|
+
start: element.querySelector('.start'),
|
|
342
|
+
end: element.querySelector('.end')
|
|
343
|
+
};
|
|
344
|
+
startElement = this.controls.start;
|
|
345
|
+
endElement = this.controls.end;
|
|
346
|
+
} else {
|
|
347
|
+
startElement = element;
|
|
348
|
+
endElement = element;
|
|
334
349
|
}
|
|
335
350
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
var startElement;
|
|
343
|
-
var endElement;
|
|
344
|
-
var element = this.getElement()[0];
|
|
345
|
-
|
|
346
|
-
if (useTemplate) {
|
|
347
|
-
this.controls = {
|
|
348
|
-
filter: element.querySelector('[data-control="filter"]'),
|
|
349
|
-
reset: element.querySelector('[data-control="reset"]'),
|
|
350
|
-
start: element.querySelector('.start'),
|
|
351
|
-
end: element.querySelector('.end')
|
|
352
|
-
};
|
|
353
|
-
startElement = this.controls.start;
|
|
354
|
-
endElement = this.controls.end;
|
|
355
|
-
} else {
|
|
356
|
-
startElement = element;
|
|
357
|
-
endElement = element;
|
|
358
|
-
}
|
|
351
|
+
Promise.all([setupDateTimePicker(startElement, this.config.startPicker), setupDateTimePicker(endElement, this.config.endPicker)]).then(function (pickers) {
|
|
352
|
+
self.startPicker = pickers[0];
|
|
353
|
+
self.endPicker = pickers[1];
|
|
354
|
+
self.startPicker.on('change', function (value) {
|
|
355
|
+
if (value && self.endPicker && self.endPicker.is('ready')) {
|
|
356
|
+
self.endPicker.updateConstraints('minDate', value);
|
|
359
357
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
self.endPicker = pickers[1];
|
|
363
|
-
self.startPicker.on('change', function (value) {
|
|
364
|
-
if (value && self.endPicker && self.endPicker.is('ready')) {
|
|
365
|
-
self.endPicker.updateConstraints('minDate', value);
|
|
366
|
-
|
|
367
|
-
if (self.config.maxRangeDays > 0) {
|
|
368
|
-
self.endPicker.updateConstraints('maxDate', moment(value).add(self.config.maxRangeDays, 'd').toDate());
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
/**
|
|
372
|
-
* The values get changed
|
|
373
|
-
* @event dateRange#change
|
|
374
|
-
* @param {String} target - start or end
|
|
375
|
-
* @param {String} value - the changed value
|
|
376
|
-
*/
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
self.trigger('change', 'start', value);
|
|
380
|
-
}).on('clear', function () {
|
|
381
|
-
if (self.endPicker && self.endPicker.is('ready')) {
|
|
382
|
-
self.endPicker.updateConstraints('minDate', '');
|
|
383
|
-
self.endPicker.updateConstraints('maxDate', '');
|
|
384
|
-
}
|
|
385
|
-
}).on('close', function () {
|
|
386
|
-
/**
|
|
387
|
-
* The picker get closed
|
|
388
|
-
* @event dateRange#close
|
|
389
|
-
* @param {String} target - start or end
|
|
390
|
-
* @param {String} value - the changed value
|
|
391
|
-
*/
|
|
392
|
-
self.trigger('close', 'start', this.getValue());
|
|
393
|
-
}).spread('error', self);
|
|
394
|
-
self.endPicker.on('change', function (value) {
|
|
395
|
-
if (value && self.startPicker && self.startPicker.is('ready')) {
|
|
396
|
-
self.startPicker.updateConstraints('maxDate', value);
|
|
358
|
+
if (self.config.maxRangeDays > 0) {
|
|
359
|
+
self.endPicker.updateConstraints('maxDate', moment(value).add(self.config.maxRangeDays, 'd').toDate());
|
|
397
360
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* The values get changed
|
|
364
|
+
* @event dateRange#change
|
|
365
|
+
* @param {String} target - start or end
|
|
366
|
+
* @param {String} value - the changed value
|
|
367
|
+
*/
|
|
401
368
|
|
|
402
369
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
/**
|
|
411
|
-
* @see dateRange#close
|
|
412
|
-
*/
|
|
413
|
-
self.trigger('close', 'end', this.getValue());
|
|
414
|
-
}).spread('error', self);
|
|
415
|
-
}).then(function () {
|
|
416
|
-
self.setState('ready', true);
|
|
370
|
+
self.trigger('change', 'start', value);
|
|
371
|
+
}).on('clear', function () {
|
|
372
|
+
if (self.endPicker && self.endPicker.is('ready')) {
|
|
373
|
+
self.endPicker.updateConstraints('minDate', '');
|
|
374
|
+
self.endPicker.updateConstraints('maxDate', '');
|
|
375
|
+
}
|
|
376
|
+
}).on('close', function () {
|
|
417
377
|
/**
|
|
418
|
-
* The
|
|
419
|
-
* @event dateRange#
|
|
378
|
+
* The picker get closed
|
|
379
|
+
* @event dateRange#close
|
|
380
|
+
* @param {String} target - start or end
|
|
381
|
+
* @param {String} value - the changed value
|
|
382
|
+
*/
|
|
383
|
+
self.trigger('close', 'start', this.getValue());
|
|
384
|
+
}).spread('error', self);
|
|
385
|
+
self.endPicker.on('change', function (value) {
|
|
386
|
+
if (value && self.startPicker && self.startPicker.is('ready')) {
|
|
387
|
+
self.startPicker.updateConstraints('maxDate', value);
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* @see dateRange#change
|
|
420
391
|
*/
|
|
421
392
|
|
|
422
|
-
self.trigger('ready');
|
|
423
|
-
}).catch(function (err) {
|
|
424
|
-
self.trigger('error', err);
|
|
425
|
-
});
|
|
426
|
-
|
|
427
|
-
if (useTemplate && this.controls.filter) {
|
|
428
|
-
this.controls.filter.addEventListener('click', function (e) {
|
|
429
|
-
e.preventDefault();
|
|
430
|
-
self.submit();
|
|
431
|
-
});
|
|
432
|
-
}
|
|
433
393
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
self.
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
394
|
+
self.trigger('change', 'end', value);
|
|
395
|
+
}).on('clear', function () {
|
|
396
|
+
if (self.startPicker && self.startPicker.is('ready')) {
|
|
397
|
+
self.startPicker.updateConstraints('minDate', '');
|
|
398
|
+
self.startPicker.updateConstraints('maxDate', '');
|
|
399
|
+
}
|
|
400
|
+
}).on('close', function () {
|
|
401
|
+
/**
|
|
402
|
+
* @see dateRange#close
|
|
403
|
+
*/
|
|
404
|
+
self.trigger('close', 'end', this.getValue());
|
|
405
|
+
}).spread('error', self);
|
|
406
|
+
}).then(function () {
|
|
407
|
+
self.setState('ready', true);
|
|
408
|
+
/**
|
|
409
|
+
* The component is fully ready to get used
|
|
410
|
+
* @event dateRange#ready
|
|
411
|
+
*/
|
|
444
412
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
413
|
+
self.trigger('ready');
|
|
414
|
+
}).catch(function (err) {
|
|
415
|
+
self.trigger('error', err);
|
|
448
416
|
});
|
|
449
417
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
418
|
+
if (useTemplate && this.controls.filter) {
|
|
419
|
+
this.controls.filter.addEventListener('click', function (e) {
|
|
420
|
+
e.preventDefault();
|
|
421
|
+
self.submit();
|
|
422
|
+
});
|
|
423
|
+
}
|
|
453
424
|
|
|
454
|
-
|
|
455
|
-
|
|
425
|
+
if (useTemplate && this.controls.reset) {
|
|
426
|
+
this.controls.reset.addEventListener('click', function (e) {
|
|
427
|
+
e.preventDefault();
|
|
428
|
+
self.reset();
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
}).on('destroy', function () {
|
|
432
|
+
if (this.startPicker) {
|
|
433
|
+
this.startPicker.destroy();
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
if (this.endPicker) {
|
|
437
|
+
this.endPicker.destroy();
|
|
438
|
+
}
|
|
439
|
+
});
|
|
440
|
+
|
|
441
|
+
_.defer(function () {
|
|
442
|
+
dateRange.init(config);
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
return dateRange;
|
|
446
|
+
}
|
|
456
447
|
|
|
457
|
-
|
|
448
|
+
return dateRangeFactory;
|
|
458
449
|
|
|
459
450
|
});
|