206 lines
4.8 KiB
JavaScript
206 lines
4.8 KiB
JavaScript
import {int} from 'angular2/src/facade/lang';
|
|
import {Math} from 'angular2/src/facade/math';
|
|
|
|
import {PromiseWrapper} from 'angular2/src/facade/async';
|
|
import {ListWrapper, MapWrapper} from 'angular2/src/facade/collection';
|
|
|
|
export var ITEMS = 1000;
|
|
export var ITEM_HEIGHT = 40;
|
|
export var VISIBLE_ITEMS = 17;
|
|
|
|
export var HEIGHT = ITEMS * ITEM_HEIGHT;
|
|
export var VIEW_PORT_HEIGHT = ITEM_HEIGHT * VISIBLE_ITEMS;
|
|
|
|
export var COMPANY_NAME_WIDTH = 100;
|
|
export var OPPORTUNITY_NAME_WIDTH = 100;
|
|
export var OFFERING_NAME_WIDTH = 100;
|
|
export var ACCOUNT_CELL_WIDTH = 50;
|
|
export var BASE_POINTS_WIDTH = 50;
|
|
export var KICKER_POINTS_WIDTH = 50;
|
|
export var STAGE_BUTTONS_WIDTH = 220;
|
|
export var BUNDLES_WIDTH = 120;
|
|
export var DUE_DATE_WIDTH = 100;
|
|
export var END_DATE_WIDTH = 100;
|
|
export var AAT_STATUS_WIDTH = 100;
|
|
export var ROW_WIDTH = COMPANY_NAME_WIDTH +
|
|
OPPORTUNITY_NAME_WIDTH +
|
|
OFFERING_NAME_WIDTH +
|
|
ACCOUNT_CELL_WIDTH +
|
|
BASE_POINTS_WIDTH +
|
|
KICKER_POINTS_WIDTH +
|
|
STAGE_BUTTONS_WIDTH +
|
|
BUNDLES_WIDTH +
|
|
DUE_DATE_WIDTH +
|
|
END_DATE_WIDTH +
|
|
AAT_STATUS_WIDTH;
|
|
|
|
export var STATUS_LIST = [
|
|
'Planned', 'Pitched', 'Won', 'Lost'
|
|
];
|
|
|
|
export var AAT_STATUS_LIST = [
|
|
'Active', 'Passive', 'Abandoned'
|
|
];
|
|
|
|
// Imitate Streamy entities.
|
|
|
|
// Just a non-trivial object. Nothing fancy or correct.
|
|
export class CustomDate {
|
|
year: int;
|
|
month: int;
|
|
day: int;
|
|
|
|
constructor(y:int, m:int, d:int) {
|
|
this.year = y;
|
|
this.month = m;
|
|
this.day = d;
|
|
}
|
|
|
|
addDays(days:int):CustomDate {
|
|
var newDay = this.day + days;
|
|
var newMonth = this.month + Math.floor(newDay / 30);
|
|
newDay = newDay % 30;
|
|
var newYear = this.year + Math.floor(newMonth / 12);
|
|
return new CustomDate(newYear, newMonth, newDay);
|
|
}
|
|
|
|
static now():CustomDate {
|
|
return new CustomDate(2014, 1, 28);
|
|
}
|
|
}
|
|
|
|
export class RawEntity {
|
|
|
|
_data:Map;
|
|
|
|
constructor() {
|
|
this._data = MapWrapper.create();
|
|
}
|
|
|
|
get(key:string) {
|
|
if (key.indexOf('.') == -1) {
|
|
return this._data[key];
|
|
}
|
|
var pieces = key.split('.');
|
|
var last = ListWrapper.last(pieces);
|
|
pieces.length = pieces.length - 1;
|
|
var target = _resolve(pieces, this);
|
|
if (target == null) {
|
|
return null;
|
|
}
|
|
return target[last];
|
|
}
|
|
|
|
set(key:string, value) {
|
|
if (key.indexOf('.') == -1) {
|
|
this._data[key] = value;
|
|
return;
|
|
}
|
|
var pieces = key.split('.');
|
|
var last = ListWrapper.last(pieces);
|
|
pieces.length = pieces.length - 1;
|
|
var target = _resolve(pieces, this);
|
|
target[last] = value;
|
|
}
|
|
|
|
remove(key:string) {
|
|
if (!key.contains('.')) {
|
|
return this._data.remove(key);
|
|
}
|
|
var pieces = key.split('.');
|
|
var last = ListWrapper.last(pieces);
|
|
pieces.length = pieces.length - 1;
|
|
var target = _resolve(pieces, this);
|
|
return target.remove(last);
|
|
}
|
|
|
|
_resolve(pieces, start) {
|
|
var cur = start;
|
|
for (var i = 0; i < pieces.length; i++) {
|
|
cur = cur[pieces[i]];
|
|
if (cur == null) {
|
|
return null;
|
|
}
|
|
}
|
|
return cur;
|
|
}
|
|
}
|
|
|
|
export class Company extends RawEntity {
|
|
get name():string { return this.get('name'); }
|
|
set name(val:string) {
|
|
this.set('name', val);
|
|
}
|
|
}
|
|
|
|
export class Offering extends RawEntity {
|
|
get name():string { return this.get('name'); }
|
|
set name(val:string) {
|
|
this.set('name', val);
|
|
}
|
|
|
|
get company():Company { return this.get('company'); }
|
|
set company(val:Company) {
|
|
this.set('company', val);
|
|
}
|
|
|
|
get opportunity():Opportunity { return this.get('opportunity'); }
|
|
set opportunity(val:Opportunity) {
|
|
this.set('opportunity', val);
|
|
}
|
|
|
|
get account():Account { return this.get('account'); }
|
|
set account(val:Account) {
|
|
this.set('account', val);
|
|
}
|
|
|
|
get basePoints():int { return this.get('basePoints'); }
|
|
set basePoints(val:int) {
|
|
this.set('basePoints', val);
|
|
}
|
|
|
|
get kickerPoints():int { return this.get('kickerPoints'); }
|
|
set kickerPoints(val:int) {
|
|
this.set('kickerPoints', val);
|
|
}
|
|
|
|
get status():string { return this.get('status'); }
|
|
set status(val:string) {
|
|
this.set('status', val);
|
|
}
|
|
|
|
get bundles():string { return this.get('bundles'); }
|
|
set bundles(val:string) {
|
|
this.set('bundles', val);
|
|
}
|
|
|
|
get dueDate():CustomDate { return this.get('dueDate'); }
|
|
set dueDate(val:CustomDate) {
|
|
this.set('dueDate', val);
|
|
}
|
|
|
|
get endDate():CustomDate { return this.get('endDate'); }
|
|
set endDate(val:CustomDate) {
|
|
this.set('endDate', val);
|
|
}
|
|
|
|
get aatStatus():string { return this.get('aatStatus'); }
|
|
set aatStatus(val:string) {
|
|
this.set('aatStatus', val);
|
|
}
|
|
}
|
|
|
|
export class Opportunity extends RawEntity {
|
|
get name():string { return this.get('name'); }
|
|
set name(val:string) {
|
|
this.set('name', val);
|
|
}
|
|
}
|
|
|
|
export class Account extends RawEntity {
|
|
get accountId():int { return this.get('accountId'); }
|
|
set accountId(val:int) {
|
|
this.set('accountId', val);
|
|
}
|
|
}
|