/src/column.js
JavaScript | 85 lines | 24 code | 8 blank | 53 comment | 1 complexity | 53c0b25d4d3c220df90c99889d3bb4f8 MD5 | raw file
Possible License(s): MIT
- /*
- backgrid
- http://github.com/wyuenho/backgrid
- Copyright (c) 2013 Jimmy Yuen Ho Wong and contributors
- Licensed under the MIT @license.
- */
- /**
- A Column is a placeholder for column metadata.
- You usually don't need to create an instance of this class yourself as a
- collection of column instances will be created for you from a list of column
- attributes in the Backgrid.js view class constructors.
- @class Backgrid.Column
- @extends Backbone.Model
- */
- var Column = Backgrid.Column = Backbone.Model.extend({
- defaults: {
- name: undefined,
- label: undefined,
- sortable: true,
- editable: true,
- renderable: true,
- formatter: undefined,
- cell: undefined,
- headerCell: undefined
- },
- /**
- Initializes this Column instance.
- @param {Object} attrs Column attributes.
- @param {string} attrs.name The name of the model attribute.
- @param {string|Backgrid.Cell} attrs.cell The cell type.
- If this is a string, the capitalized form will be used to look up a
- cell class in Backbone, i.e.: string => StringCell. If a Cell subclass
- is supplied, it is initialized with a hash of parameters. If a Cell
- instance is supplied, it is used directly.
- @param {string|Backgrid.HeaderCell} [attrs.headerCell] The header cell type.
- @param {string} [attrs.label] The label to show in the header.
- @param {boolean} [attrs.sortable=true]
- @param {boolean} [attrs.editable=true]
- @param {boolean} [attrs.renderable=true]
- @param {Backgrid.CellFormatter|Object|string} [attrs.formatter] The
- formatter to use to convert between raw model values and user input.
- @throws {TypeError} If attrs.cell or attrs.options are not supplied.
- @throws {ReferenceError} If attrs.cell is a string but a cell class of
- said name cannot be found in the Backgrid module.
- See:
- - Backgrid.Cell
- - Backgrid.CellFormatter
- */
- initialize: function (attrs) {
- Backgrid.requireOptions(attrs, ["cell", "name"]);
- if (!this.has("label")) {
- this.set({ label: this.get("name") }, { silent: true });
- }
- var headerCell = Backgrid.resolveNameToClass(this.get("headerCell"), "HeaderCell");
- var cell = Backgrid.resolveNameToClass(this.get("cell"), "Cell");
- this.set({ cell: cell, headerCell: headerCell }, { silent: true });
- }
- });
- /**
- A Backbone collection of Column instances.
- @class Backgrid.Columns
- @extends Backbone.Collection
- */
- var Columns = Backgrid.Columns = Backbone.Collection.extend({
- /**
- @property {Backgrid.Column} model
- */
- model: Column
- });