// 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.internet', function() { /** * Creates a new network list div. * @param {Object=} opt_propertyBag Optional properties. * @constructor * @extends {HTMLDivElement} */ var CellularPlanElement = cr.ui.define('div'); CellularPlanElement.prototype = { __proto__: HTMLDivElement.prototype, /** @inheritDoc */ decorate: function() { }, /** * Loads given network list. * @param {Array} networks An array of network object. */ load: function(plans) { this.textContent = ''; if (!plans || !plans.length) { var noplansDiv = this.ownerDocument.createElement('div'); noplansDiv.textContent = localStrings.getString('noPlansFound'); this.appendChild(detailsTable); } else { for (var i = 0; i < plans.length; ++i) { this.appendChild(new CellularPlanItem(i, plans[i])); } } } }; /** * Creates a new network item. * @param {Object} network The network this represents. * @constructor * @extends {HTMLDivElement} */ function CellularPlanItem(idx, plan) { var el = cr.doc.createElement('div'); el.data = { idx: idx, planType: plan.planType, name: plan.name, planSummary: plan.planSummary, dataRemaining: plan.dataRemaining, planExpires: plan.planExpires, warning: plan.warning }; CellularPlanItem.decorate(el); return el; } /** * Decorates an element as a network item. * @param {!HTMLElement} el The element to decorate. */ CellularPlanItem.decorate = function(el) { el.__proto__ = CellularPlanItem.prototype; el.decorate(); }; CellularPlanItem.prototype = { __proto__: HTMLDivElement.prototype, /** @inheritDoc */ decorate: function() { this.className = 'cellular-plan'; var detailsTable = this.createTable_('details-plan-table', 'option-control-table'); this.addRow_(detailsTable, 'plan-details-info', 'option-name', 'planSummary', this.data.planSummary); this.addRow_(detailsTable, 'plan-details-info', 'option-name', null, localStrings.getString('planName'), 'option-value', 'planName', this.data.name); this.addRow_(detailsTable, 'plan-details-info', 'option-name', null, localStrings.getString('dataRemaining'), 'option-value', 'dataRemaining', this.data.dataRemaining); this.addRow_(detailsTable, 'plan-details-info', 'option-name', null, localStrings.getString('planExpires'), 'option-value', 'dataRemaining', this.data.planExpires); if (this.data.warning && this.data.warning != "") { this.addRow_(detailsTable, 'plan-details-info', 'option-name', 'planWarning', this.data.warning); } this.appendChild(detailsTable); this.appendChild(this.ownerDocument.createElement('hr')); }, createTable_: function(tableId, tableClass) { var table = this.ownerDocument.createElement('table'); table.id = tableId; table.className = tableClass; return table; }, addRow_: function(table, rowClass, col1Class, col1Id, col1Value, col2Class, col2Id, col2Value) { var row = this.ownerDocument.createElement('tr'); if (rowClass) row.className = rowClass; var col1 = this.ownerDocument.createElement('td'); col1.className = col1Class; if (col1Id) col1.id = col1Id; col1.textContent = col1Value; if (!col2Class) col1.setAttribute('colspan','2'); row.appendChild(col1); if (col2Class) { var col2 = this.ownerDocument.createElement('td'); col2.className = col2Class; if (col2Id) col2.id = col2Id; col2.textContent = col2Value; row.appendChild(col2); } table.appendChild(row); } }; return { CellularPlanElement: CellularPlanElement }; });