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

Unified Diff: chrome/browser/resources/options/autofill_edit_address_overlay.js

Issue 6484022: Autofill i18n: Set postal code and state field labels based on the selected country. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: I see you, ICU Created 9 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/options/autofill_edit_address_overlay.js
diff --git a/chrome/browser/resources/options/autofill_edit_address_overlay.js b/chrome/browser/resources/options/autofill_edit_address_overlay.js
index fe461f3e7ad4599586909eae97d3f8f4cb34aee6..243a30b7c6858b816a7f36275b02eb668d803eef 100644
--- a/chrome/browser/resources/options/autofill_edit_address_overlay.js
+++ b/chrome/browser/resources/options/autofill_edit_address_overlay.js
@@ -40,6 +40,7 @@ cr.define('options', function() {
}
self.guid = '';
+ self.populateCountryList_();
self.clearInputFields_();
self.connectInputEvents_();
},
@@ -69,7 +70,7 @@ cr.define('options', function() {
address[4] = $('addrLine2').value;
address[5] = $('city').value;
address[6] = $('state').value;
- address[7] = $('zipCode').value;
+ address[7] = $('postalCode').value;
address[8] = $('country').value;
address[9] = $('phone').value;
address[10] = $('fax').value;
@@ -88,11 +89,15 @@ cr.define('options', function() {
var self = this;
$('fullName').oninput = $('companyName').oninput =
$('addrLine1').oninput = $('addrLine2').oninput = $('city').oninput =
- $('state').oninput = $('country').oninput = $('zipCode').oninput =
+ $('state').oninput = $('country').oninput = $('postalCode').oninput =
$('phone').oninput = $('fax').oninput =
$('email').oninput = function(event) {
self.inputFieldChanged_();
}
+
+ $('country').onchange = function(event) {
+ self.countryChanged_(event);
+ }
},
/**
@@ -104,12 +109,77 @@ cr.define('options', function() {
var disabled =
!$('fullName').value && !$('companyName').value &&
!$('addrLine1').value && !$('addrLine2').value && !$('city').value &&
- !$('state').value && !$('zipCode').value && !('country').value &&
+ !$('state').value && !$('postalCode').value && !('country').value &&
!$('phone').value && !$('fax').value && !$('email').value;
$('autoFillEditAddressApplyButton').disabled = disabled;
},
/**
+ * Updates the postal code and state field labels appropriately for the
+ * selected country.
+ * @private
+ */
+ countryChanged_: function(event) {
James Hawkins 2011/02/12 20:32:45 Document parameter.
Ilya Sherman 2011/02/16 10:27:18 Removed.
+ var countryCode = $('country').value;
+ if (countryCode == '')
James Hawkins 2011/02/12 20:32:45 if (!countryCode)
Ilya Sherman 2011/02/16 10:27:18 Done.
+ countryCode = templateData.defaultCountryCode;
+
+ var details = templateData.autofillCountryData[countryCode];
+ var postal = $('postalCodeLabel');
+ postal.textContent = details['postalCodeLabel'];
arv (Not doing code reviews) 2011/02/14 18:36:41 Use i18n-content attribute instead
Ilya Sherman 2011/02/16 10:27:18 As discussed on irc, can't use i18n-content becaus
+ $('stateLabel').textContent = details['stateLabel'];
arv (Not doing code reviews) 2011/02/14 18:36:41 same here
+
+ // Also update the 'Ok' button as needed.
+ this.inputFieldChanged_();
+ },
+
+ /**
+ * Populates the country <select> list.
+ * @private
+ */
+ populateCountryList_: function() {
+ var countryData = templateData.autofillCountryData;
James Hawkins 2011/02/12 20:32:45 localStrings.getString('autofillCountryData');
Ilya Sherman 2011/02/16 10:27:18 It's not actually a string, so getString() doesn't
+ var defaultCountryCode = templateData.defaultCountryCode;
+
+ // Build an array of the country names and their corresponding country
+ // codes, so that we can sort and insert them in order.
+ var countries = new Array();
arv (Not doing code reviews) 2011/02/14 18:36:41 Use literals where possible. var countries = [];
Ilya Sherman 2011/02/16 10:27:18 Done.
+ for (var countryCode in countryData) {
+ // We always want the default country to be at the top of the list, so
+ // we handle it separately.
+ if (countryCode == defaultCountryCode)
+ continue;
+
+ var country = {
+ 'countryCode': countryCode,
arv (Not doing code reviews) 2011/02/14 18:36:41 Skip the quotes? The Google3 style rule is to use
Ilya Sherman 2011/02/16 10:27:18 Done.
+ 'name': countryData[countryCode]['name']
+ };
+ countries[countries.length] = country;
arv (Not doing code reviews) 2011/02/14 18:36:41 countries.push(country)
Ilya Sherman 2011/02/16 10:27:18 Done.
+ }
+
+ // Sort the countries in alphabetical order by name.
+ countries = countries.sort(function(a, b) {
+ return a['name'] < b['name']? -1 : 1;
arv (Not doing code reviews) 2011/02/14 18:36:41 ws around ?
arv (Not doing code reviews) 2011/02/14 18:36:41 a.name < b.name ? -1 : 1
Ilya Sherman 2011/02/16 10:27:18 Done.
Ilya Sherman 2011/02/16 10:27:18 Done.
+ });
+
+ // Insert the default country at the beginning of the array.
+ var defaultCountry = {
+ 'countryCode': defaultCountryCode,
+ 'name': countryData[defaultCountryCode]['name']
+ };
+ countries.unshift(defaultCountry);
+
+ // Add the countries to the country <select> list.
+ var countryList = $('country');
+ for (var i = 0; i < countries.length; ++i) {
arv (Not doing code reviews) 2011/02/14 18:36:41 i++ is the norm in js
Ilya Sherman 2011/02/16 10:27:18 Done.
+ var option = document.createElement('option');
arv (Not doing code reviews) 2011/02/14 18:36:41 or var option = new Option(text, value);
Ilya Sherman 2011/02/16 10:27:18 Done.
+ option.value = countries[i]['countryCode'];
+ option.textContent = countries[i]['name'];
+ countryList.appendChild(option)
+ }
+ },
+
+ /**
* Clears the value of each input field.
* @private
*/
@@ -120,11 +190,13 @@ cr.define('options', function() {
$('addrLine2').value = '';
$('city').value = '';
$('state').value = '';
- $('zipCode').value = '';
+ $('postalCode').value = '';
$('country').value = '';
$('phone').value = '';
$('fax').value = '';
$('email').value = '';
+
+ this.countryChanged_();
},
/**
@@ -149,11 +221,13 @@ cr.define('options', function() {
$('addrLine2').value = address['addrLine2'];
$('city').value = address['city'];
$('state').value = address['state'];
- $('zipCode').value = address['zipCode'];
+ $('postalCode').value = address['postalCode'];
$('country').value = address['country'];
$('phone').value = address['phone'];
$('fax').value = address['fax'];
$('email').value = address['email'];
+
+ this.countryChanged_();
},
};

Powered by Google App Engine
This is Rietveld 408576698