Merge pull request #762 from jlujan/master

Add type definitions for Backgrid.js
This commit is contained in:
Boris Yankov
2013-07-10 06:46:22 -07:00
2 changed files with 163 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
/// <reference path="backgrid.d.ts" />
/// <reference path="../backbone/backbone.d.ts" />
/// <reference path="../jquery/jquery.d.ts" />
/*
Uses getters and setters and requires ES >= 5
$ tsc --target ES5 backgrid-tests.ts
*/
class TestModel extends Backbone.Model {
get Id(): number { return this.get('id'); }
set Id(value: number) { this.set('id', value); }
get FirstName(): string { return this.get('FirstName'); }
set FirstName(value: string) { this.set('FirstName', value); }
set LastName(value: string) { this.set('LastName', value); }
get LastName(): string { return this.get('LastName'); }
set EMail(value: string) { this.set('EMail', value); }
get EMail(): string { return this.get('EMail'); }
}
class TestCollection extends Backbone.Collection {
constructor(models?: any, options?: any) {
this.model = TestModel;
super(models, options);
}
initialize() {
this.on("change", this.modelChanged, this)
}
modelChanged(model: Backbone.Model, val: any, options: any){
model.save();
}
}
class TestView extends Backbone.View {
gridView: Backgrid.Grid;
testCollection: TestCollection;
constructor(viewOptions?: Backbone.ViewOptions) {
this.testCollection = new TestCollection();
this.gridView = new Backgrid.Grid({
columns: [new Backgrid.Column({name: "FirstName", cell: "string", label: "First Name"}),
new Backgrid.Column({name: "LastName", cell: "string", label: "Last Name"}),
new Backgrid.Column({name: "EMail", cell: "string", label: "E-Mail"})],
collection:this.testCollection,
});
super(viewOptions);
}
initialize() {
}
render() {
this.$el.empty();
this.$el.append(this.gridView.render().$el);
//this.testCollection.fetch();
return this;
}
}
function test_grid() {
var view = new TestView();
view.render();
}
+85
View File
@@ -0,0 +1,85 @@
// Type definitions for Backgrid 0.2.6
// Project: http://backgridjs.com/
// Definitions by: Jeremy Lujan <https://github.com/jlujan/>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../backbone/backbone.d.ts" />
declare module Backgrid {
interface GridOptions {
columns: Column[];
collection: Backbone.Collection;
header: Header;
body: Body;
row: Row;
footer: Footer;
}
class Header extends Backbone.View {
}
class Footer extends Backbone.View {
}
class Row extends Backbone.View {
}
class Command {
cancel();
moveDown();
moveLeft();
moveRight();
moveUp();
passThru();
save();
}
interface ColumnAttr {
name: string;
cell: string;
headerCell: string;
label: string;
sortable: bool;
editable: bool;
renderable: bool;
formater: string;
}
class Column extends Backbone.Model {
initialize(options?: any);
}
class Body extends Backbone.View {
tagName: string;
initialize(options?: any);
insertRow(model: Backbone.Model, collection: Backbone.Collection, options: any);
moveToNextCell(model: Backbone.Model, cell: Column, command: Command);
refresh(): Body;
remove(): Body;
removeRow(model: Backbone.Model, collection: Backbone.Collection, options: any);
render(): Body;
}
class Grid extends Backbone.View {
body: Backgrid.Body;
className: string;
footer: any;
header: any;
tagName: string;
initialize(options: any);
getSelectedModels(): Backbone.Model[];
insertColumn(...options: any[]): Grid;
insertRow(model: Backbone.Model, collection: Backbone.Collection, options: any);
remove():Grid;
removeColumn(...options: any[]): Grid;
removeRow(model: Backbone.Model, collection: Backbone.Collection, options: any);
render():Grid;
}
}