mirror of
https://github.com/wassname/DefinitelyTyped.git
synced 2026-09-09 11:13:57 +08:00
Merge pull request #4676 from craigbrett17/master
Added d.ts files for Backbone-Associations
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
/// <reference path="../backbone/backbone.d.ts" />
|
||||
/// <reference path="backbone-associations.d.ts" />
|
||||
|
||||
// borrowed from the Backbone.Associations tutorials
|
||||
// separated out into modules to avoid namespace clashes
|
||||
module Backbone.Associations.Tests {
|
||||
module OneToOne {
|
||||
class EmployeeWithManager extends Backbone.AssociatedModel {
|
||||
constructor(options?) {
|
||||
this.relations = [
|
||||
{
|
||||
type: Backbone.One, //nature of the relationship
|
||||
key: 'manager', // attribute of Employee
|
||||
relatedModel: 'Employee' //AssociatedModel for attribute key
|
||||
}
|
||||
];
|
||||
super(options);
|
||||
}
|
||||
|
||||
defaults() {
|
||||
return {
|
||||
age: 0,
|
||||
fname: "",
|
||||
lname: "",
|
||||
manager: null
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module OneToMany {
|
||||
class Location extends Backbone.AssociatedModel {
|
||||
defaults() {
|
||||
return {
|
||||
add1: "",
|
||||
add2: null,
|
||||
zip: "",
|
||||
state: ""
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
class Locations extends Backbone.Collection<Location> {
|
||||
comparator(c: Backbone.Model) {
|
||||
return c.get("Number");
|
||||
}
|
||||
}
|
||||
|
||||
class Project extends Backbone.AssociatedModel {
|
||||
constructor(options?) {
|
||||
this.relations = [
|
||||
{
|
||||
type: Backbone.Many, //nature of the relation
|
||||
key: 'locations', //attribute of Project
|
||||
collectionType: Locations, //Collection to be used.
|
||||
relatedModel: Location //Optional
|
||||
}
|
||||
];
|
||||
super(options);
|
||||
}
|
||||
|
||||
defaults() {
|
||||
return {
|
||||
name: "",
|
||||
number: 0,
|
||||
locations: []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function reverseAssociationTest() {
|
||||
var local = new Location({ state: "Hertfordshire" });
|
||||
var project = new Project({ name: "The Old Pond Project" });
|
||||
local.set("oddRelationTo", project);
|
||||
var parents = project.parents;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
// Type definitions for Backbone-associations 0.6.4
|
||||
// Project: https://github.com/dhruvaray/backbone-associations/
|
||||
// Definitions by: Craig Brett <https://github.com/craigbrett17/>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../backbone/backbone.d.ts" />
|
||||
|
||||
declare module Backbone {
|
||||
export module Associations {
|
||||
/** Defines a 1:Many relationship type */
|
||||
export var Many: string;
|
||||
/** Defines a 1:1 relationship type */
|
||||
export var One: string;
|
||||
/** Defines a special relationship to itself */
|
||||
export var Self: string;
|
||||
|
||||
// these seem to be used internally, but can't see a reason not to include them just in case
|
||||
export var SEPARATOR: string;
|
||||
export function getSeparator(): any;
|
||||
export function setSeparator(value: any): void;
|
||||
export var EVENTS_BUBBLE: boolean;
|
||||
export var EVENTS_WILDCARD: boolean;
|
||||
export var EVENTS_NC: boolean;
|
||||
|
||||
interface IRelation {
|
||||
/** The type of model for this relationship */
|
||||
relatedModel: string|typeof Backbone.Associations.AssociatedModel;
|
||||
/** The key for this relationship on this model */
|
||||
key: string;
|
||||
// meh, no string enums in TS. Just have to trust the user not to be a fool
|
||||
/** The cardinality of this relationship. */
|
||||
type: string;
|
||||
/** Determines the type of collection used. If used, the relatedModel property is ignored */
|
||||
collectionType?: typeof Backbone.Collection|string;
|
||||
/** If set to true, then the attribute will not be serialized in toJSON() calls. Defaults to false */
|
||||
isTransient?: boolean;
|
||||
/** Specify remoteKey to serialize the key to a different key name in toJSON() calls. Useful in ROR nested-attributes like scenarios. */
|
||||
remoteKey?: string;
|
||||
/** the attributes to serialize when calling toJSON */
|
||||
serialize?: string[];
|
||||
/** A transformation function to convert the value before it is assigned to the key on the relatedModel */
|
||||
map?: (...args: any[]) => any;
|
||||
}
|
||||
|
||||
/** A Backbone model with special provision for handling relations to other models */
|
||||
export class AssociatedModel extends Backbone.Model {
|
||||
/** Relations with their associated model */
|
||||
relations: IRelation[];
|
||||
_proxyCalls: any;
|
||||
/** Reverse association lookup for objects that contain this object */
|
||||
parents: any[];
|
||||
/** Cleans up any parent relations on other AssociatedModels */
|
||||
cleanup(): void;
|
||||
}
|
||||
}
|
||||
// copies of properties also put onto the Backbone scope
|
||||
/** Defines a 1:Many relationship type */
|
||||
export var Many: string;
|
||||
/** Defines a 1:1 relationship type */
|
||||
export var One: string;
|
||||
/** Defines a special relationship to itself */
|
||||
export var Self: string;
|
||||
|
||||
// I'm sure this should be doable with imports or type aliases, but doesn't seem to work
|
||||
/** A Backbone model with special provision for handling relations to other models */
|
||||
export class AssociatedModel extends Backbone.Model {
|
||||
/** Relations with their associated model */
|
||||
relations: Associations.IRelation[];
|
||||
_proxyCalls: any;
|
||||
/** Reverse association lookup for objects that contain this object */
|
||||
parents: any[];
|
||||
/** Cleans up any parent relations on other AssociatedModels */
|
||||
cleanup(): void;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
Reference in New Issue
Block a user