芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/public_html/cepali/user/amd/src/unified_filter.js
// This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see
. /** * Unified filter page JS module for the course participants page. * * @module core_user/unified_filter * @package core_user * @copyright 2017 Jun Pataleta * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ define(['jquery', 'core/form-autocomplete', 'core/str', 'core/notification'], function($, Autocomplete, Str, Notification) { /** * Selectors. * * @access private * @type {{UNIFIED_FILTERS: string}} */ var SELECTORS = { UNIFIED_FILTERS: '#unified-filters' }; /** * Init function. * * @method init * @private */ var init = function() { var stringkeys = [ { key: 'userfilterplaceholder', component: 'moodle' }, { key: 'nofiltersapplied', component: 'moodle' } ]; M.util.js_pending('unified_filter_datasource'); Str.get_strings(stringkeys).done(function(langstrings) { var placeholder = langstrings[0]; var noSelectionString = langstrings[1]; Autocomplete.enhance(SELECTORS.UNIFIED_FILTERS, true, 'core_user/unified_filter_datasource', placeholder, false, true, noSelectionString, true) .then(function() { M.util.js_complete('unified_filter_datasource'); return; }) .fail(Notification.exception); }).fail(Notification.exception); var last = $(SELECTORS.UNIFIED_FILTERS).val(); $(SELECTORS.UNIFIED_FILTERS).on('change', function() { var current = $(this).val(); var listoffilters = []; var textfilters = []; var updatedselectedfilters = false; $.each(current, function(index, catoption) { var catandoption = catoption.split(':', 2); if (catandoption.length !== 2) { textfilters.push(catoption); return true; // Text search filter. } var category = catandoption[0]; var option = catandoption[1]; // The last option (eg. 'Teacher') out of a category (eg. 'Role') in this loop is the one that was last // selected, so we want to use that if there are multiple options from the same category. Eg. The user // may have chosen to filter by the 'Student' role, then wanted to filter by the 'Teacher' role - the // last option in the category to be selected (in this case 'Teacher') will come last, so will overwrite // 'Student' (after this if). We want to let the JS know that the filters have been updated. if (typeof listoffilters[category] !== 'undefined') { updatedselectedfilters = true; } listoffilters[category] = option; return true; }); // Check if we have something to remove from the list of filters. if (updatedselectedfilters) { // Go through and put the list into something we can use to update the list of filters. var updatefilters = []; for (var category in listoffilters) { updatefilters.push(category + ":" + listoffilters[category]); } updatefilters = updatefilters.concat(textfilters); $(this).val(updatefilters); } // Prevent form from submitting unnecessarily, eg. on blur when no filter is selected. if (last.join(',') != current.join(',')) { this.form.submit(); } }); }; /** * Return the unified user filter form. * * @method getForm * @return {DOMElement} */ var getForm = function() { return $(SELECTORS.UNIFIED_FILTERS).closest('form'); }; return /** @alias module:core/form-autocomplete */ { /** * Initialise the unified user filter. * * @method init */ init: function() { init(); }, /** * Return the unified user filter form. * * @method getForm * @return {DOMElement} */ getForm: function() { return getForm(); } }; });