1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen/** 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @fileoverview This is a table column representation 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsencr.define('cr.ui.table', function() { 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const EventTarget = cr.EventTarget; 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const Event = cr.Event; 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen /** 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * A table column that wraps column ids and settings. 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @param {!Array} columnIds Array of column ids. 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @constructor 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @extends {EventTarget} 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen function TableColumn(id, name, width) { 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen this.id_ = id; 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen this.name_ = name; 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen this.width_ = width; 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TableColumn.prototype = { 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen __proto__: EventTarget.prototype, 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen id_: null, 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen name_: null, 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen width_: null, 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen renderFunction_: null, 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen /** 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * Clones column. 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @return {cr.ui.table.TableColumn} Clone of the given column. 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen clone: function() { 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen var tableColumn = new TableColumn(this.id_, this.name_, this.width_); 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen tableColumn.renderFunction = this.renderFunction_; 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return tableColumn; 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen }, 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen /** 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * Renders table cell. This is the default render function. 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @param {*} dataItem The data item to be rendered. 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @param {string} columnId The column id. 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @param {cr.ui.Table} table The table. 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @return {HTMLElement} Rendered element. 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen renderFunction_: function(dataItem, columnId, table) { 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen var div = table.ownerDocument.createElement('div'); 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen div.textContent = dataItem[columnId]; 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return div; 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen }, 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen }; 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen /** 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * The column id. 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @type {string} 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen cr.defineProperty(TableColumn, 'id'); 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen /** 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * The column name 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @type {string} 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen cr.defineProperty(TableColumn, 'name'); 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen /** 73ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * The column width. 74ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @type {number} 75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen cr.defineProperty(TableColumn, 'width'); 77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen /** 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * The column render function. 80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @type {Function(*, string, cr.ui.Table): HTMLElement} 81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen cr.defineProperty(TableColumn, 'renderFunction'); 83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return { 85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TableColumn: TableColumn 86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen }; 87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}); 88