Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: chrome/browser/resources/options/managed_user_import.js

Issue 23533047: Add spinner to the 'managed user import' overlay (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@choose_avatar_one_overlay
Patch Set: sergiu@ Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/resources/options/managed_user_import.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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('options', function() { 5 cr.define('options', function() {
6 var OptionsPage = options.OptionsPage; 6 var OptionsPage = options.OptionsPage;
7 var ArrayDataModel = cr.ui.ArrayDataModel; 7 var ArrayDataModel = cr.ui.ArrayDataModel;
8 8
9 /** 9 /**
10 * ManagedUserImportOverlay class. 10 * ManagedUserImportOverlay class.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 managedUserList.addEventListener('change', function(event) { 47 managedUserList.addEventListener('change', function(event) {
48 var managedUser = managedUserList.selectedItem; 48 var managedUser = managedUserList.selectedItem;
49 if (!managedUser) 49 if (!managedUser)
50 return; 50 return;
51 51
52 $('managed-user-import-ok').disabled = 52 $('managed-user-import-ok').disabled =
53 managedUserList.selectedItem.onCurrentDevice; 53 managedUserList.selectedItem.onCurrentDevice;
54 }); 54 });
55 55
56 var self = this;
56 $('managed-user-import-cancel').onclick = function(event) { 57 $('managed-user-import-cancel').onclick = function(event) {
57 OptionsPage.closeOverlay(); 58 OptionsPage.closeOverlay();
59 self.updateImportInProgress_(false);
60
58 // 'cancelCreateProfile' is handled by BrowserOptionsHandler. 61 // 'cancelCreateProfile' is handled by BrowserOptionsHandler.
59 chrome.send('cancelCreateProfile'); 62 chrome.send('cancelCreateProfile');
60 }; 63 };
61 64
62 $('managed-user-import-ok').onclick = 65 $('managed-user-import-ok').onclick =
63 this.showAvatarGridOrSubmit_.bind(this); 66 this.showAvatarGridOrSubmit_.bind(this);
64 67
65 $('create-new-user-link').onclick = function(event) { 68 $('create-new-user-link').onclick = function(event) {
66 OptionsPage.closeOverlay(); 69 OptionsPage.closeOverlay();
67 OptionsPage.navigateToPage('createProfile'); 70 OptionsPage.navigateToPage('createProfile');
68 }; 71 };
69 }, 72 },
70 73
71 /** 74 /**
72 * @override 75 * @override
73 */ 76 */
74 didShowPage: function() { 77 didShowPage: function() {
75 chrome.send('requestExistingManagedUsers'); 78 chrome.send('requestExistingManagedUsers');
79
80 this.updateImportInProgress_(false);
76 $('managed-user-import-error-bubble').hidden = true; 81 $('managed-user-import-error-bubble').hidden = true;
77 $('managed-user-import-ok').disabled = true; 82 $('managed-user-import-ok').disabled = true;
78 $('select-avatar-grid').hidden = true; 83 $('select-avatar-grid').hidden = true;
79 $('managed-user-list').hidden = false; 84 $('managed-user-list').hidden = false;
80 85
81 $('managed-user-import-ok').textContent = 86 $('managed-user-import-ok').textContent =
82 loadTimeData.getString('managedUserImportOk'); 87 loadTimeData.getString('managedUserImportOk');
83 $('managed-user-import-text').textContent = 88 $('managed-user-import-text').textContent =
84 loadTimeData.getString('managedUserImportText'); 89 loadTimeData.getString('managedUserImportText');
85 $('managed-user-import-title').textContent = 90 $('managed-user-import-title').textContent =
(...skipping 13 matching lines...) Expand all
99 if (!managedUser) 104 if (!managedUser)
100 return; 105 return;
101 106
102 $('managed-user-import-error-bubble').hidden = true; 107 $('managed-user-import-error-bubble').hidden = true;
103 108
104 if ($('select-avatar-grid').hidden && managedUser.needAvatar) { 109 if ($('select-avatar-grid').hidden && managedUser.needAvatar) {
105 this.showAvatarGridHelper_(); 110 this.showAvatarGridHelper_();
106 return; 111 return;
107 } 112 }
108 113
109 $('managed-user-import-ok').disabled = true;
110 var avatarUrl = managedUser.needAvatar ? 114 var avatarUrl = managedUser.needAvatar ?
111 $('select-avatar-grid').selectedItem : managedUser.iconURL; 115 $('select-avatar-grid').selectedItem : managedUser.iconURL;
112 116
117 this.updateImportInProgress_(true);
118
113 // 'createProfile' is handled by BrowserOptionsHandler. 119 // 'createProfile' is handled by BrowserOptionsHandler.
114 chrome.send('createProfile', [managedUser.name, avatarUrl, 120 chrome.send('createProfile', [managedUser.name, avatarUrl,
115 false, true, managedUser.id]); 121 false, true, managedUser.id]);
116 }, 122 },
117 123
118 /** 124 /**
119 * Hides the 'managed user list' and shows the avatar grid instead. 125 * Hides the 'managed user list' and shows the avatar grid instead.
120 * It also updates the overlay text and title to instruct the user 126 * It also updates the overlay text and title to instruct the user
121 * to choose an avatar for the supervised user. 127 * to choose an avatar for the supervised user.
122 * @private 128 * @private
123 */ 129 */
124 showAvatarGridHelper_: function() { 130 showAvatarGridHelper_: function() {
125 $('managed-user-list').hidden = true; 131 $('managed-user-list').hidden = true;
126 $('select-avatar-grid').hidden = false; 132 $('select-avatar-grid').hidden = false;
127 $('select-avatar-grid').redraw(); 133 $('select-avatar-grid').redraw();
128 $('select-avatar-grid').selectedItem = 134 $('select-avatar-grid').selectedItem =
129 loadTimeData.getValue('avatarIcons')[0]; 135 loadTimeData.getValue('avatarIcons')[0];
130 136
131 $('managed-user-import-ok').textContent = 137 $('managed-user-import-ok').textContent =
132 loadTimeData.getString('managedUserSelectAvatarOk'); 138 loadTimeData.getString('managedUserSelectAvatarOk');
133 $('managed-user-import-text').textContent = 139 $('managed-user-import-text').textContent =
134 loadTimeData.getString('managedUserSelectAvatarText'); 140 loadTimeData.getString('managedUserSelectAvatarText');
135 $('managed-user-import-title').textContent = 141 $('managed-user-import-title').textContent =
136 loadTimeData.getString('managedUserSelectAvatarTitle'); 142 loadTimeData.getString('managedUserSelectAvatarTitle');
137 }, 143 },
138 144
139 /** 145 /**
146 * Updates the UI according to the importing state.
147 * @param {boolean} inProgress True to indicate that
148 * importing is in progress and false otherwise.
149 * @private
150 */
151 updateImportInProgress_: function(inProgress) {
152 $('managed-user-import-ok').disabled = inProgress;
153 $('managed-user-list').disabled = inProgress;
154 $('select-avatar-grid').disabled = inProgress;
155 $('create-new-user-link').disabled = inProgress;
156 $('managed-user-import-throbber').hidden = !inProgress;
157 },
158
159 /**
140 * Adds all the existing |managedUsers| to the list. 160 * Adds all the existing |managedUsers| to the list.
141 * @param {Array.<Object>} managedUsers An array of managed user objects. 161 * @param {Array.<Object>} managedUsers An array of managed user objects.
142 * Each object is of the form: 162 * Each object is of the form:
143 * managedUser = { 163 * managedUser = {
144 * id: "Managed User ID", 164 * id: "Managed User ID",
145 * name: "Managed User Name", 165 * name: "Managed User Name",
146 * iconURL: "chrome://path/to/icon/image", 166 * iconURL: "chrome://path/to/icon/image",
147 * onCurrentDevice: true or false, 167 * onCurrentDevice: true or false,
148 * needAvatar: true or false 168 * needAvatar: true or false
149 * } 169 * }
(...skipping 13 matching lines...) Expand all
163 * Displays an error message if an error occurs while 183 * Displays an error message if an error occurs while
164 * importing a managed user. 184 * importing a managed user.
165 * Called by BrowserOptions via the BrowserOptionsHandler. 185 * Called by BrowserOptions via the BrowserOptionsHandler.
166 * @param {string} error The error message to display. 186 * @param {string} error The error message to display.
167 * @private 187 * @private
168 */ 188 */
169 onError_: function(error) { 189 onError_: function(error) {
170 var errorBubble = $('managed-user-import-error-bubble'); 190 var errorBubble = $('managed-user-import-error-bubble');
171 errorBubble.hidden = false; 191 errorBubble.hidden = false;
172 errorBubble.textContent = error; 192 errorBubble.textContent = error;
193 this.updateImportInProgress_(false);
173 }, 194 },
174 195
175 /** 196 /**
176 * Closes the overlay if importing the managed user was successful. 197 * Closes the overlay if importing the managed user was successful.
177 * @private 198 * @private
178 */ 199 */
179 onSuccess_: function() { 200 onSuccess_: function() {
201 this.updateImportInProgress_(false);
180 OptionsPage.closeOverlay(); 202 OptionsPage.closeOverlay();
181 }, 203 },
182 }; 204 };
183 205
184 // Forward public APIs to private implementations. 206 // Forward public APIs to private implementations.
185 [ 207 [
186 'onError', 208 'onError',
187 'onSuccess', 209 'onSuccess',
188 'receiveExistingManagedUsers', 210 'receiveExistingManagedUsers',
189 ].forEach(function(name) { 211 ].forEach(function(name) {
190 ManagedUserImportOverlay[name] = function() { 212 ManagedUserImportOverlay[name] = function() {
191 var instance = ManagedUserImportOverlay.getInstance(); 213 var instance = ManagedUserImportOverlay.getInstance();
192 return instance[name + '_'].apply(instance, arguments); 214 return instance[name + '_'].apply(instance, arguments);
193 }; 215 };
194 }); 216 });
195 217
196 // Export 218 // Export
197 return { 219 return {
198 ManagedUserImportOverlay: ManagedUserImportOverlay, 220 ManagedUserImportOverlay: ManagedUserImportOverlay,
199 }; 221 };
200 }); 222 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/options/managed_user_import.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698