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

Unified Diff: chrome/browser/resources/options2/autofill_edit_creditcard_overlay.js

Issue 8895023: Options2: Pull the trigger. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: DIAF. Created 9 years 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/options2/autofill_edit_creditcard_overlay.js
diff --git a/chrome/browser/resources/options2/autofill_edit_creditcard_overlay.js b/chrome/browser/resources/options2/autofill_edit_creditcard_overlay.js
new file mode 100644
index 0000000000000000000000000000000000000000..8402a10ea019d24a55e04d68f65987cd7c33e7d3
--- /dev/null
+++ b/chrome/browser/resources/options2/autofill_edit_creditcard_overlay.js
@@ -0,0 +1,205 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+cr.define('options', function() {
+ const OptionsPage = options.OptionsPage;
+
+ // The GUID of the loaded credit card.
+ var guid_;
+
+ /**
+ * AutofillEditCreditCardOverlay class
+ * Encapsulated handling of the 'Add Page' overlay page.
+ * @class
+ */
+ function AutofillEditCreditCardOverlay() {
+ OptionsPage.call(this, 'autofillEditCreditCard',
+ templateData.autofillEditCreditCardTitle,
+ 'autofill-edit-credit-card-overlay');
+ }
+
+ cr.addSingletonGetter(AutofillEditCreditCardOverlay);
+
+ AutofillEditCreditCardOverlay.prototype = {
+ __proto__: OptionsPage.prototype,
+
+ /**
+ * Initializes the page.
+ */
+ initializePage: function() {
+ OptionsPage.prototype.initializePage.call(this);
+
+ var self = this;
+ $('autofill-edit-credit-card-cancel-button').onclick = function(event) {
+ self.dismissOverlay_();
+ }
+ $('autofill-edit-credit-card-apply-button').onclick = function(event) {
+ self.saveCreditCard_();
+ self.dismissOverlay_();
+ }
+
+ self.guid_ = '';
+ self.hasEditedNumber_ = false;
+ self.clearInputFields_();
+ self.connectInputEvents_();
+ self.setDefaultSelectOptions_();
+ },
+
+ /**
+ * Clears any uncommitted input, and dismisses the overlay.
+ * @private
+ */
+ dismissOverlay_: function() {
+ this.clearInputFields_();
+ this.guid_ = '';
+ this.hasEditedNumber_ = false;
+ OptionsPage.closeOverlay();
+ },
+
+ /**
+ * Aggregates the values in the input fields into an array and sends the
+ * array to the Autofill handler.
+ * @private
+ */
+ saveCreditCard_: function() {
+ var creditCard = new Array(5);
+ creditCard[0] = this.guid_;
+ creditCard[1] = $('name-on-card').value;
+ creditCard[2] = $('credit-card-number').value;
+ creditCard[3] = $('expiration-month').value;
+ creditCard[4] = $('expiration-year').value;
+ chrome.send('setCreditCard', creditCard);
+ },
+
+ /**
+ * Connects each input field to the inputFieldChanged_() method that enables
+ * or disables the 'Ok' button based on whether all the fields are empty or
+ * not.
+ * @private
+ */
+ connectInputEvents_: function() {
+ var ccNumber = $('credit-card-number');
+ $('name-on-card').oninput = ccNumber.oninput =
+ $('expiration-month').onchange = $('expiration-year').onchange =
+ this.inputFieldChanged_.bind(this);
+ },
+
+ /**
+ * Checks the values of each of the input fields and disables the 'Ok'
+ * button if all of the fields are empty.
+ * @param {Event} opt_event Optional data for the 'input' event.
+ * @private
+ */
+ inputFieldChanged_: function(opt_event) {
+ var disabled = !$('name-on-card').value && !$('credit-card-number').value;
+ $('autofill-edit-credit-card-apply-button').disabled = disabled;
+ },
+
+ /**
+ * Sets the default values of the options in the 'Expiration date' select
+ * controls.
+ * @private
+ */
+ setDefaultSelectOptions_: function() {
+ // Set the 'Expiration month' default options.
+ var expirationMonth = $('expiration-month');
+ expirationMonth.options.length = 0;
+ for (var i = 1; i <= 12; ++i) {
+ var text;
+ if (i < 10)
+ text = '0' + i;
+ else
+ text = i;
+
+ var option = document.createElement('option');
+ option.text = text;
+ option.value = text;
+ expirationMonth.add(option, null);
+ }
+
+ // Set the 'Expiration year' default options.
+ var expirationYear = $('expiration-year');
+ expirationYear.options.length = 0;
+
+ var date = new Date();
+ var year = parseInt(date.getFullYear());
+ for (var i = 0; i < 10; ++i) {
+ var text = year + i;
+ var option = document.createElement('option');
+ option.text = text;
+ option.value = text;
+ expirationYear.add(option, null);
+ }
+ },
+
+ /**
+ * Clears the value of each input field.
+ * @private
+ */
+ clearInputFields_: function() {
+ $('name-on-card').value = '';
+ $('credit-card-number').value = '';
+ $('expiration-month').selectedIndex = 0;
+ $('expiration-year').selectedIndex = 0;
+
+ // Reset the enabled status of the 'Ok' button.
+ this.inputFieldChanged_();
+ },
+
+ /**
+ * Sets the value of each input field according to |creditCard|
+ * @private
+ */
+ setInputFields_: function(creditCard) {
+ $('name-on-card').value = creditCard['nameOnCard'];
+ $('credit-card-number').value = creditCard['creditCardNumber'];
+
+ // The options for the year select control may be out-dated at this point,
+ // e.g. the user opened the options page before midnight on New Year's Eve
+ // and then loaded a credit card profile to edit in the new year, so
+ // reload the select options just to be safe.
+ this.setDefaultSelectOptions_();
+
+ var idx = parseInt(creditCard['expirationMonth'], 10);
+ $('expiration-month').selectedIndex = idx - 1;
+
+ expYear = creditCard['expirationYear'];
+ var date = new Date();
+ var year = parseInt(date.getFullYear());
+ for (var i = 0; i < 10; ++i) {
+ var text = year + i;
+ if (expYear == String(text))
+ $('expiration-year').selectedIndex = i;
+ }
+ },
+
+ /**
+ * Loads the credit card data from |creditCard|, sets the input fields based
+ * on this data and stores the GUID of the credit card.
+ * @private
+ */
+ loadCreditCard_: function(creditCard) {
+ this.setInputFields_(creditCard);
+ this.inputFieldChanged_();
+ this.guid_ = creditCard['guid'];
+ },
+ };
+
+ AutofillEditCreditCardOverlay.clearInputFields = function(title) {
+ AutofillEditCreditCardOverlay.getInstance().clearInputFields_();
+ };
+
+ AutofillEditCreditCardOverlay.loadCreditCard = function(creditCard) {
+ AutofillEditCreditCardOverlay.getInstance().loadCreditCard_(creditCard);
+ };
+
+ AutofillEditCreditCardOverlay.setTitle = function(title) {
+ $('autofill-credit-card-title').textContent = title;
+ };
+
+ // Export
+ return {
+ AutofillEditCreditCardOverlay: AutofillEditCreditCardOverlay
+ };
+});

Powered by Google App Engine
This is Rietveld 408576698