1
1
var ctx = document . getElementById ( 'myChart' ) . getContext ( '2d' ) ;
2
2
3
3
var colors = [
4
- 'rgb(222, 130, 50)' ,
5
- 'rgb(0, 180, 175)' ,
6
- 'rgb(0, 172, 252)' ,
7
- 'rgb(35, 99, 132)' ,
8
- 'rgb(35, 9, 132)' ,
9
- 'rgb(114, 0, 0)' ,
10
- 'rgb(0, 53, 0)' ,
11
- 'rgb(35, 200, 0)' ,
12
- 'rgb(0, 211, 186)' ,
13
- 'rgb(230, 124, 255)' ,
14
- 'rgb(255, 44, 162)' ,
15
- 'rgb(200, 200, 0)' ,
16
- 'rgb(0, 223, 121)' ,
17
- 'rgb(91, 191, 255)' ,
18
- 'rgb(255, 136, 255)'
4
+ 'rgb(128,0,0)' ,
5
+ 'rgb(139,0,0)' ,
6
+ 'rgb(165,42,42)' ,
7
+ 'rgb(178,34,34)' ,
8
+ 'rgb(220,20,60)' ,
9
+ 'rgb(255,0,0)' ,
10
+ 'rgb(255,99,71)' ,
11
+ 'rgb(255,127,80)' ,
12
+ 'rgb(205,92,92)' ,
13
+ 'rgb(240,128,128)' ,
14
+ 'rgb(233,150,122)' ,
15
+ 'rgb(250,128,114)' ,
16
+ 'rgb(255,160,122)' ,
17
+ 'rgb(255,69,0)' ,
18
+ 'rgb(255,140,0)' ,
19
+ 'rgb(255,165,0)' ,
20
+ 'rgb(255,215,0)' ,
21
+ 'rgb(184,134,11)' ,
22
+ 'rgb(218,165,32)' ,
23
+ 'rgb(238,232,170)' ,
24
+ 'rgb(189,183,107)' ,
25
+ 'rgb(240,230,140)' ,
26
+ 'rgb(128,128,0)' ,
27
+ 'rgb(255,255,0)' ,
28
+ 'rgb(154,205,50)' ,
29
+ 'rgb(85,107,47)' ,
30
+ 'rgb(107,142,35)' ,
31
+ 'rgb(124,252,0)' ,
32
+ 'rgb(127,255,0)' ,
33
+ 'rgb(173,255,47)' ,
34
+ 'rgb(0,100,0)' ,
35
+ 'rgb(0,128,0)' ,
36
+ 'rgb(34,139,34)' ,
37
+ 'rgb(0,255,0)' ,
38
+ 'rgb(50,205,50)' ,
39
+ 'rgb(144,238,144)' ,
40
+ 'rgb(152,251,152)' ,
41
+ 'rgb(143,188,143)' ,
42
+ 'rgb(0,250,154)' ,
43
+ 'rgb(0,255,127)' ,
44
+ 'rgb(46,139,87)' ,
45
+ 'rgb(102,205,170)' ,
46
+ 'rgb(60,179,113)' ,
47
+ 'rgb(32,178,170)' ,
48
+ 'rgb(47,79,79)' ,
49
+ 'rgb(0,128,128)' ,
50
+ 'rgb(0,139,139)' ,
51
+ 'rgb(0,255,255)' ,
52
+ 'rgb(0,255,255)' ,
53
+ 'rgb(224,255,255)' ,
54
+ 'rgb(0,206,209)' ,
55
+ 'rgb(64,224,208)' ,
56
+ 'rgb(72,209,204)' ,
57
+ 'rgb(175,238,238)' ,
58
+ 'rgb(127,255,212)' ,
59
+ 'rgb(176,224,230)' ,
60
+ 'rgb(95,158,160)' ,
61
+ 'rgb(70,130,180)' ,
62
+ 'rgb(100,149,237)' ,
63
+ 'rgb(0,191,255)' ,
64
+ 'rgb(30,144,255)' ,
65
+ 'rgb(173,216,230)' ,
66
+ 'rgb(135,206,235)' ,
67
+ 'rgb(135,206,250)' ,
68
+ 'rgb(25,25,112)' ,
69
+ 'rgb(0,0,128)' ,
70
+ 'rgb(0,0,139)' ,
71
+ 'rgb(0,0,205)' ,
72
+ 'rgb(0,0,255)' ,
73
+ 'rgb(65,105,225)' ,
74
+ 'rgb(138,43,226)' ,
75
+ 'rgb(75,0,130)' ,
76
+ 'rgb(72,61,139)' ,
77
+ 'rgb(106,90,205)' ,
78
+ 'rgb(123,104,238)' ,
79
+ 'rgb(147,112,219)' ,
80
+ 'rgb(139,0,139)' ,
81
+ 'rgb(148,0,211)' ,
82
+ 'rgb(153,50,204)' ,
83
+ 'rgb(186,85,211)' ,
84
+ 'rgb(128,0,128)' ,
85
+ 'rgb(216,191,216)' ,
86
+ 'rgb(221,160,221)' ,
87
+ 'rgb(238,130,238)' ,
88
+ 'rgb(255,0,255)' ,
89
+ 'rgb(218,112,214)' ,
90
+ 'rgb(199,21,133)' ,
91
+ 'rgb(219,112,147)' ,
92
+ 'rgb(255,20,147)' ,
93
+ 'rgb(255,105,180)' ,
94
+ 'rgb(255,182,193)' ,
95
+ 'rgb(255,192,203)' ,
96
+ 'rgb(250,235,215)' ,
97
+ 'rgb(245,245,220)' ,
98
+ 'rgb(255,228,196)' ,
99
+ 'rgb(255,235,205)' ,
100
+ 'rgb(245,222,179)' ,
101
+ 'rgb(255,248,220)' ,
102
+ 'rgb(255,250,205)' ,
103
+ 'rgb(250,250,210)' ,
104
+ 'rgb(255,255,224)' ,
105
+ 'rgb(139,69,19)' ,
106
+ 'rgb(160,82,45)' ,
107
+ 'rgb(210,105,30)' ,
108
+ 'rgb(205,133,63)' ,
109
+ 'rgb(244,164,96)' ,
110
+ 'rgb(222,184,135)' ,
111
+ 'rgb(210,180,140)' ,
112
+ 'rgb(188,143,143)' ,
113
+ 'rgb(255,228,181)' ,
114
+ 'rgb(255,222,173)' ,
115
+ 'rgb(255,218,185)' ,
116
+ 'rgb(255,228,225)'
19
117
]
20
118
21
119
var sAndP = [
@@ -143,6 +241,9 @@ var sAndPPrices = sAndP.map(x => x[1]);
143
241
var bondYields = bonds . map ( x => x [ 1 ] ) ;
144
242
var startIndex = 0
145
243
var endIndex = - 1
244
+ var startingAmount = 100
245
+ var addAmount = 0
246
+ var percentStocks = 100
146
247
147
248
var config = {
148
249
// The type of chart we want to create
@@ -154,7 +255,7 @@ var config = {
154
255
datasets : [ {
155
256
label : "100% S&P" ,
156
257
borderColor : 'rgb(255, 99, 132)' ,
157
- data : getNewLine ( 100 , 0 , - 1 ) ,
258
+ data : getNewLine ( percentStocks , 0 , - 1 ) ,
158
259
percentStocks : 100 ,
159
260
fill : false
160
261
} ]
@@ -176,8 +277,24 @@ var config = {
176
277
}
177
278
}
178
279
280
+ document . getElementById ( 'startingAmountButton' ) . addEventListener ( 'click' , function ( ) {
281
+ startingAmount = parseFloat ( document . getElementById ( 'startingAmount' ) . value )
282
+ config . data . datasets . forEach ( function ( dataset ) {
283
+ dataset . data = getNewLine ( dataset . percentStocks , startIndex , endIndex )
284
+ } ) ;
285
+ chart . update ( )
286
+ } ) ;
287
+
288
+ document . getElementById ( 'addAmountButton' ) . addEventListener ( 'click' , function ( ) {
289
+ addAmount = parseFloat ( document . getElementById ( 'addAmount' ) . value )
290
+ config . data . datasets . forEach ( function ( dataset ) {
291
+ dataset . data = getNewLine ( dataset . percentStocks , startIndex , endIndex )
292
+ } ) ;
293
+ chart . update ( )
294
+ } ) ;
295
+
179
296
document . getElementById ( 'addLine' ) . addEventListener ( 'click' , function ( ) {
180
- var percentStocks = document . getElementById ( 'percentStocks' ) . value
297
+ percentStocks = parseFloat ( document . getElementById ( 'percentStocks' ) . value )
181
298
addLine ( percentStocks )
182
299
} ) ;
183
300
@@ -239,15 +356,16 @@ function getNewLine(percentStocks, startIndex, endIndex) {
239
356
var bondReference = bondYields . slice ( startIndex , endIndex )
240
357
var stockValue
241
358
var bondValue
242
- var total = 100
243
- var newLine = [ total ]
359
+ var total = startingAmount
360
+ var newLine = [ total + addAmount ]
244
361
245
362
var iters = stockReference . length
246
363
for ( iter = 0 ; iter < iters ; iter ++ ) {
247
364
if ( iter + 1 == iters ) {
248
365
break
249
366
}
250
367
368
+ total = total + addAmount
251
369
stockValue = total * decimalStocks
252
370
bondValue = total * decimalBonds
253
371
@@ -265,5 +383,4 @@ function getNewLine(percentStocks, startIndex, endIndex) {
265
383
return newLine
266
384
}
267
385
268
-
269
386
var chart = new Chart ( ctx , config ) ;
0 commit comments