[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 YUI.add('moodle-tool_capability-search', function (Y, NAME) { 2 3 /** 4 * This file contains the capability overview search functionality. 5 * 6 * @module moodle-tool_capability-search 7 */ 8 9 /** 10 * Constructs a new capability search manager. 11 * 12 * @namespace M.tool_capability 13 * @class Search 14 * @constructor 15 * @extends Base 16 */ 17 var SEARCH = function() { 18 SEARCH.superclass.constructor.apply(this, arguments); 19 }; 20 SEARCH.prototype = { 21 /** 22 * The search form. 23 * @property form 24 * @type Node 25 * @protected 26 */ 27 form: null, 28 /** 29 * The capability select node. 30 * @property select 31 * @type Node 32 * @protected 33 */ 34 select: null, 35 /** 36 * An associative array of search option. Populated from the select node above during initialisation. 37 * @property selectoptions 38 * @type Object 39 * @protected 40 */ 41 selectoptions: {}, 42 /** 43 * The search input field. 44 * @property input 45 * @type Node 46 * @protected 47 */ 48 input: null, 49 /** 50 * The submit button for the form. 51 * @property button 52 * @type Node 53 * @protected 54 */ 55 button: null, 56 /** 57 * The last search node if there is one. 58 * If there is a last search node then the last search term will be persisted between requests. 59 * @property lastsearch 60 * @type Node 61 * @protected 62 */ 63 lastsearch: null, 64 /** 65 * Constructs the search manager. 66 * @method initializer 67 */ 68 initializer: function() { 69 this.form = Y.one('#capability-overview-form'); 70 this.select = this.form.one('select[data-search=capability]'); 71 this.select.setStyle('minWidth', this.select.get('offsetWidth')); 72 this.select.get('options').each(function(option) { 73 var capability = option.get('value'); 74 this.selectoptions[capability] = option; 75 }, this); 76 this.button = this.form.all('input[type=submit]'); 77 this.lastsearch = this.form.one('input[name=search]'); 78 79 var div = Y.Node.create('<div id="capabilitysearchui"></div>'), 80 label = Y.Node.create('<label for="capabilitysearch">' + this.get('strsearch') + '</label>'); 81 this.input = Y.Node.create('<input type="text" id="capabilitysearch" />'); 82 83 div.append(label).append(this.input); 84 85 this.select.insert(div, 'before'); 86 87 this.input.on('keyup', this.typed, this); 88 this.select.on('change', this.validate, this); 89 90 if (this.lastsearch) { 91 this.input.set('value', this.lastsearch.get('value')); 92 this.typed(); 93 if (this.select.one('option[selected]')) { 94 this.select.set('scrollTop', this.select.one('option[selected]').get('getX')); 95 } 96 } 97 98 this.validate(); 99 }, 100 /** 101 * Disables the submit button if there are no capabilities selected. 102 * @method validate 103 */ 104 validate: function() { 105 this.button.set('disabled', (this.select.get('value') === '')); 106 }, 107 /** 108 * Called when ever the user types into the search field. 109 * This method hides any capabilities that don't match the search term. 110 * @method typed 111 */ 112 typed: function() { 113 var search = this.input.get('value'), 114 matching = 0, 115 last = null, 116 capability; 117 if (this.lastsearch) { 118 this.lastsearch.set('value', search); 119 } 120 this.select.all('option').remove(); 121 for (capability in this.selectoptions) { 122 if (capability.indexOf(search) >= 0) { 123 matching++; 124 last = this.selectoptions[capability]; 125 this.select.append(this.selectoptions[capability]); 126 } 127 } 128 if (matching === 0) { 129 this.input.addClass("error"); 130 } else { 131 this.input.removeClass("error"); 132 if (matching === 1) { 133 last.set('selected', true); 134 } 135 } 136 this.validate(); 137 } 138 }; 139 Y.extend(SEARCH, Y.Base, SEARCH.prototype, { 140 NAME: 'tool_capability-search', 141 ATTRS: { 142 strsearch: {} 143 } 144 }); 145 146 M.tool_capability = M.tool_capability || {}; 147 148 /** 149 * Initialises capability search functionality. 150 * @static 151 * @method M.tool_capability.init_capability_search 152 * @param {Object} options 153 */ 154 M.tool_capability.init_capability_search = function(options) { 155 new SEARCH(options); 156 }; 157 158 159 }, '@VERSION@', {"requires": ["base", "node"]});
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |