-
Notifications
You must be signed in to change notification settings - Fork 941
Expand file tree
/
Copy pathposition.ts
More file actions
76 lines (67 loc) · 2.52 KB
/
position.ts
File metadata and controls
76 lines (67 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/// <reference path="../common/models.ts" />
/// <reference path="../common/messaging.ts" />
/// <amd-dependency path="ui.bootstrap"/>
/// <reference path="shared_directives.ts"/>
/// <reference path="pair.ts"/>
import angular = require("angular");
import Models = require("../common/models");
import io = require("socket.io-client");
import moment = require("moment");
import Messaging = require("../common/messaging");
import Pair = require("./pair");
import Shared = require("./shared_directives");
interface PositionScope extends ng.IScope {
baseCurrency : string;
basePosition : number;
quoteCurrency : string;
quotePosition : number;
baseHeldPosition : number;
quoteHeldPosition : number;
value : number;
quoteValue : number;
}
var PositionController = ($scope : PositionScope, $log : ng.ILogService, subscriberFactory : Shared.SubscriberFactory) => {
var clearPosition = () => {
$scope.baseCurrency = null;
$scope.quoteCurrency = null;
$scope.basePosition = null;
$scope.quotePosition = null;
$scope.baseHeldPosition = null;
$scope.quoteHeldPosition = null;
$scope.value = null;
$scope.quoteValue = null;
};
var updatePosition = (position : Models.PositionReport) => {
$scope.baseCurrency = Models.Currency[position.pair.base];
$scope.quoteCurrency = Models.Currency[position.pair.quote];
$scope.basePosition = position.baseAmount;
$scope.quotePosition = position.quoteAmount;
$scope.baseHeldPosition = position.baseHeldAmount;
$scope.quoteHeldPosition = position.quoteHeldAmount;
$scope.value = position.value;
$scope.quoteValue = position.quoteValue;
};
var positionSubscriber = subscriberFactory.getSubscriber($scope, Messaging.Topics.Position)
.registerDisconnectedHandler(clearPosition)
.registerSubscriber(updatePosition, us => us.forEach(updatePosition));
$scope.$on('$destroy', () => {
positionSubscriber.disconnect();
$log.info("destroy position grid");
});
$log.info("started position grid");
};
export var positionDirective = "positionDirective";
angular
.module(positionDirective, ['ui.bootstrap', 'sharedDirectives'])
.directive("positionGrid", () => {
return {
restrict: 'E',
replace: true,
transclude: false,
templateUrl: "positions.html",
controller: PositionController,
scope: {
exch: '='
}
}
});