OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 cr.define('print_preview', function() { | 5 cr.define('print_preview', function() { |
6 'use strict'; | 6 'use strict'; |
7 | 7 |
8 /** | 8 /** |
9 * Component that renders a destination item in a destination list. | 9 * Component that renders a destination item in a destination list. |
10 * @param {!cr.EventTarget} eventTarget Event target to dispatch selection | 10 * @param {!cr.EventTarget} eventTarget Event target to dispatch selection |
(...skipping 29 matching lines...) Expand all Loading... |
40 | 40 |
41 /** | 41 /** |
42 * Value selected by user. {@code null}, if user has not changed the default | 42 * Value selected by user. {@code null}, if user has not changed the default |
43 * value yet (still, the value can be the default one, if it is what user | 43 * value yet (still, the value can be the default one, if it is what user |
44 * selected). | 44 * selected). |
45 * @private {?string} | 45 * @private {?string} |
46 */ | 46 */ |
47 this.selectedValue_ = null; | 47 this.selectedValue_ = null; |
48 | 48 |
49 /** | 49 /** |
50 * Active filter query text. | 50 * Active filter query. |
51 * @private {RegExp} | 51 * @private {RegExp} |
52 */ | 52 */ |
53 this.query_ = null; | 53 this.query_ = null; |
54 | 54 |
| 55 /** |
| 56 * Search hint for the control. |
| 57 * @private {print_preview.SearchBubble} |
| 58 */ |
| 59 this.searchBubble_ = null; |
| 60 |
55 /** @private {!EventTracker} */ | 61 /** @private {!EventTracker} */ |
56 this.tracker_ = new EventTracker(); | 62 this.tracker_ = new EventTracker(); |
57 }; | 63 }; |
58 | 64 |
59 AdvancedSettingsItem.prototype = { | 65 AdvancedSettingsItem.prototype = { |
60 __proto__: print_preview.Component.prototype, | 66 __proto__: print_preview.Component.prototype, |
61 | 67 |
62 /** @override */ | 68 /** @override */ |
63 createDom: function() { | 69 createDom: function() { |
64 this.setElementInternal(this.cloneTemplateInternal( | 70 this.setElementInternal(this.cloneTemplateInternal( |
65 'advanced-settings-item-template')); | 71 'advanced-settings-item-template')); |
66 | 72 |
67 var nameEl = this.getChildElement('.advanced-settings-item-label'); | |
68 var textContent = this.capability_.display_name; | |
69 if (this.query_) | |
70 this.addTextWithHighlight_(nameEl, textContent); | |
71 else | |
72 nameEl.textContent = textContent; | |
73 nameEl.title = textContent; | |
74 | |
75 this.tracker_.add( | 73 this.tracker_.add( |
76 this.select_, 'change', this.onSelectChange_.bind(this)); | 74 this.select_, 'change', this.onSelectChange_.bind(this)); |
77 this.tracker_.add(this.text_, 'input', this.onTextInput_.bind(this)); | 75 this.tracker_.add(this.text_, 'input', this.onTextInput_.bind(this)); |
78 | 76 |
79 this.initializeValue_(); | 77 this.initializeValue_(); |
| 78 |
| 79 this.renderCapability_(); |
80 }, | 80 }, |
81 | 81 |
82 /** | 82 /** |
83 * ID of the corresponding vendor capability. | 83 * ID of the corresponding vendor capability. |
84 * @return {string} | 84 * @return {string} |
85 */ | 85 */ |
86 get id() { | 86 get id() { |
87 return this.capability_.id; | 87 return this.capability_.id; |
88 }, | 88 }, |
89 | 89 |
90 /** | 90 /** |
91 * Currently selected value. | 91 * Currently selected value. |
92 * @return {string} | 92 * @return {string} |
93 */ | 93 */ |
94 get selectedValue() { | 94 get selectedValue() { |
95 return this.selectedValue_ || ''; | 95 return this.selectedValue_ || ''; |
96 }, | 96 }, |
97 | 97 |
98 /** | 98 /** |
99 * Whether the corresponding ticket item was changed or not. | 99 * Whether the corresponding ticket item was changed or not. |
100 * @return {boolean} | 100 * @return {boolean} |
101 */ | 101 */ |
102 isModified: function() { | 102 isModified: function() { |
103 return !!this.selectedValue_; | 103 return !!this.selectedValue_; |
104 }, | 104 }, |
105 | 105 |
| 106 /** @param {RegExp} query Query to update the filter with. */ |
| 107 updateSearchQuery: function(query) { |
| 108 this.query_ = query; |
| 109 this.renderCapability_(); |
| 110 }, |
| 111 |
106 /** | 112 /** |
107 * @return {HTMLSelectElement} Select element. | 113 * @return {HTMLSelectElement} Select element. |
108 * @private | 114 * @private |
109 */ | 115 */ |
110 get select_() { | 116 get select_() { |
111 return this.getChildElement( | 117 return this.getChildElement( |
112 '.advanced-settings-item-value-select-control'); | 118 '.advanced-settings-item-value-select-control'); |
113 }, | 119 }, |
114 | 120 |
115 /** | 121 /** |
(...skipping 19 matching lines...) Expand all Loading... |
135 | 141 |
136 /** | 142 /** |
137 * Called when the text element value is changed. | 143 * Called when the text element value is changed. |
138 * @private | 144 * @private |
139 */ | 145 */ |
140 onTextInput_: function() { | 146 onTextInput_: function() { |
141 this.selectedValue_ = this.text_.value || null; | 147 this.selectedValue_ = this.text_.value || null; |
142 }, | 148 }, |
143 | 149 |
144 /** | 150 /** |
| 151 * Renders capability properties according to the current state. |
| 152 * @private |
| 153 */ |
| 154 renderCapability_: function() { |
| 155 var textContent = this.capability_.display_name; |
| 156 var nameMatches = this.query_ ? !!textContent.match(this.query_) : true; |
| 157 var optionMatches = null; |
| 158 if (false && this.query_) { |
| 159 if (this.capability_.type == 'SELECT') { |
| 160 this.capability_.select_cap.option.some(function(option) { |
| 161 optionMatches = (option.display_name || '').match(this.query_); |
| 162 return !!optionMatches; |
| 163 }.bind(this)); |
| 164 } else { |
| 165 optionMatches = (this.text_.value || '').match(this.query_); |
| 166 } |
| 167 } |
| 168 var matches = nameMatches || optionMatches; |
| 169 |
| 170 if ((!matches || !optionMatches) && this.searchBubble_) { |
| 171 this.searchBubble_.dispose(); |
| 172 this.searchBubble_ = null; |
| 173 } |
| 174 |
| 175 setIsVisible(this.getElement(), matches); |
| 176 if (!matches) |
| 177 return; |
| 178 |
| 179 var nameEl = this.getChildElement('.advanced-settings-item-label'); |
| 180 if (this.query_) { |
| 181 nameEl.textContent = ''; |
| 182 this.addTextWithHighlight_(nameEl, textContent); |
| 183 } else { |
| 184 nameEl.textContent = textContent; |
| 185 } |
| 186 nameEl.title = textContent; |
| 187 |
| 188 if (optionMatches) { |
| 189 window.console.log(optionMatches[0]); |
| 190 var element = |
| 191 this.capability_.type == 'SELECT' ? this.select_ : this.text_; |
| 192 if (!this.searchBubble_) { |
| 193 this.searchBubble_ = new print_preview.SearchBubble(optionMatches[0]); |
| 194 this.searchBubble_.attachTo(element); |
| 195 } else { |
| 196 this.searchBubble_.content = optionMatches[0]; |
| 197 } |
| 198 } |
| 199 }, |
| 200 |
| 201 /** |
145 * Initializes the element's value control. | 202 * Initializes the element's value control. |
146 * @private | 203 * @private |
147 */ | 204 */ |
148 initializeValue_: function() { | 205 initializeValue_: function() { |
149 this.selectedValue_ = | 206 this.selectedValue_ = |
150 this.printTicketStore_.vendorItems.ticketItems[this.id] || null; | 207 this.printTicketStore_.vendorItems.ticketItems[this.id] || null; |
151 | 208 |
152 if (this.capability_.type == 'SELECT') | 209 if (this.capability_.type == 'SELECT') |
153 this.initializeSelectValue_(); | 210 this.initializeSelectValue_(); |
154 else | 211 else |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 } | 267 } |
211 }); | 268 }); |
212 } | 269 } |
213 }; | 270 }; |
214 | 271 |
215 // Export | 272 // Export |
216 return { | 273 return { |
217 AdvancedSettingsItem: AdvancedSettingsItem | 274 AdvancedSettingsItem: AdvancedSettingsItem |
218 }; | 275 }; |
219 }); | 276 }); |
OLD | NEW |