0f280d55e1714373a5d04aceed22e5702b400b94
[moodle.git] / lib / form / amd / src / defaultcustom.js
1 // This file is part of Moodle - http://moodle.org/
2 //
3 // Moodle is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, either version 3 of the License, or
6 // (at your option) any later version.
7 //
8 // Moodle is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16 /**
17  * Functionality for the form element defaultcustom
18  *
19  * @module     core_form/defaultcustom
20  * @package    core_form
21  * @class      defaultcustom
22  * @copyright  2017 Marina Glancy
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  * @since      3.3
25  */
26 define(['jquery'], function($) {
27     var onChangeSelect = function(event) {
28         var element = $(event.target),
29             defaultvalue = JSON.parse(element.attr('data-defaultvalue')),
30             customvalue = JSON.parse(element.attr('data-customvalue')),
31             type = element.attr('data-type'),
32             form = element.closest('form'),
33             elementName = element.attr('name').replace(/\[customize\]$/, '[value]'),
34             newvalue = element.prop('checked') ? customvalue : defaultvalue;
36         if (type === 'text') {
37             form.find('[name="' + elementName + '"]').val(newvalue);
38         } else if (type === 'date_selector') {
39             form.find('[name="' + elementName + '[day]"]').val(newvalue.day);
40             form.find('[name="' + elementName + '[month]"]').val(newvalue.month);
41             form.find('[name="' + elementName + '[year]"]').val(newvalue.year);
42         }
43     };
45     var selector = 'input[data-defaultcustom=true]';
46     $('body').on('change', selector, onChangeSelect);
47 });