Skip to content

Commit

Permalink
add day numbers to portfolio
Browse files Browse the repository at this point in the history
  • Loading branch information
howeyc committed Mar 15, 2017
1 parent 3c51b5f commit 28ff7fe
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 21 deletions.
4 changes: 2 additions & 2 deletions cmd/lweb/bindata.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 14 additions & 2 deletions cmd/lweb/handler_portfolio.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,25 +28,37 @@ func portfolioHandler(w http.ResponseWriter, r *http.Request) {
for _, stock := range stockConfigData.Stocks {
quote, _ := yquotes.GetPrice(stock.Ticker)
var sprice float64
var sclose float64
var cprice float64
if quote != nil {
sprice = quote.Last
sclose = quote.PreviousClose
}
si := stockInfo{Name: stock.Name, Ticker: stock.Ticker, Price: sprice, Shares: stock.Shares}
for _, bal := range balances {
if stock.Account == bal.Name {
si.Cost, _ = bal.Balance.Float64()
}
}
cprice = si.Cost / si.Shares
si.MarketValue = si.Shares * si.Price
si.GainLoss = si.MarketValue - si.Cost
si.GainLossOverall = si.MarketValue - si.Cost
si.PriceChangeDay = sprice - sclose
si.PriceChangePctDay = (si.PriceChangeDay / sclose) * 100.0
si.PriceChangeOverall = sprice - cprice
si.PriceChangePctOverall = (si.PriceChangeOverall / cprice) * 100.0
si.GainLossDay = si.Shares * si.PriceChangeDay
pData.Stocks = append(pData.Stocks, si)
}
stotal := stockInfo{Name: "Total"}
for _, si := range pData.Stocks {
stotal.Cost += si.Cost
stotal.MarketValue += si.MarketValue
stotal.GainLoss += si.GainLoss
stotal.GainLossOverall += si.GainLossOverall
stotal.GainLossDay += si.GainLossDay
}
stotal.PriceChangePctDay = (stotal.GainLossDay / stotal.Cost) * 100.0
stotal.PriceChangePctOverall = (stotal.GainLossOverall / stotal.Cost) * 100.0
pData.Stocks = append(pData.Stocks, stotal)

err = t.Execute(w, pData)
Expand Down
21 changes: 13 additions & 8 deletions cmd/lweb/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,19 @@ type stockConfig struct {
}

type stockInfo struct {
Name string
Ticker string
Account string
Shares float64
Price float64
Cost float64
MarketValue float64
GainLoss float64
Name string
Ticker string
Account string
Shares float64
Price float64
PriceChangeDay float64
PriceChangePctDay float64
PriceChangeOverall float64
PriceChangePctOverall float64
Cost float64
MarketValue float64
GainLossDay float64
GainLossOverall float64
}

type stockConfigStruct struct {
Expand Down
40 changes: 31 additions & 9 deletions cmd/lweb/templates/template.portfolio.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@
<div class="container">
<div class="content-header">
<div class="row">
<div class="col-md-10">
<h1>Portfolio</h1>
<div class="col-xs-8">
<h1>Portfolio<span id="info" class="visible-xs-inline"> - Overall</span></h1>
</div>
<div class="col-md-2"></div>
<div class="col-xs-4"><a class="btn btn-default visible-xs-block" href="#" onclick="toggleInfo();">Toggle</a></div>
</div>
</div>
<div class="page-content inset">
Expand All @@ -62,18 +62,26 @@ <h1>Portfolio</h1>
<thead>
<tr>
<th>Name</th>
<th>Cost</th>
<th>Market Value</th>
<th>Gain/Loss</th>
<th class="info-overall">Cost</th>
<th class="hidden-xs">Market Value</th>
<th class="info-day hidden-xs">Price</th>
<th class="info-day hidden-xs">Percent</th>
<th class="info-day hidden-xs">Gain/Loss</th>
<th class="info-overall">Percent</th>
<th class="info-overall">Gain/Loss</th>
</tr>
</thead>
<tbody>
{{range .Stocks}}
<tr {{if eq .Name "Total"}}class="active"{{end}}>
<td>{{.Name}}</td>
<td>{{printf "%.2f" .Cost}}</td>
<td>{{printf "%.2f" .MarketValue}}</td>
<td><p {{if gt .GainLoss 0.0}}class="text-success"{{end}}{{if lt .GainLoss 0.0}}class="text-danger"{{end}}>{{printf "%.2f" .GainLoss}}</p></td>
<td class="info-overall">{{printf "%.2f" .Cost}}</td>
<td class="hidden-xs">{{printf "%.2f" .MarketValue}}</td>
<td class="info-day hidden-xs">{{printf "%.2f" .Price}}</td>
<td class="info-day hidden-xs"><p {{if gt .PriceChangePctDay 0.0}}class="text-success"{{end}}{{if lt .PriceChangePctDay 0.0}}class="text-danger"{{end}}>{{printf "%.2f" .PriceChangePctDay}}</p></td>
<td class="info-day hidden-xs"><p {{if gt .GainLossDay 0.0}}class="text-success"{{end}}{{if lt .GainLossDay 0.0}}class="text-danger"{{end}}>{{printf "%.2f" .GainLossDay}}</p></td>
<td class="info-overall"><p {{if gt .PriceChangePctOverall 0.0}}class="text-success"{{end}}{{if lt .PriceChangePctOverall 0.0}}class="text-danger"{{end}}>{{printf "%.2f" .PriceChangePctOverall}}</p></td>
<td class="info-overall"><p {{if gt .GainLossOverall 0.0}}class="text-success"{{end}}{{if lt .GainLossOverall 0.0}}class="text-danger"{{end}}>{{printf "%.2f" .GainLossOverall}}</p></td>
</tr>
{{end}}
</tbody>
Expand All @@ -90,12 +98,26 @@ <h1>Portfolio</h1>
<script src="/jquery.min.js"></script>
<script src="/bootstrap-3.3.0/dist/js/bootstrap.min.js"></script>
<script>
var overallOn = true;
$(document).ready(function() {
$('.popover-dismiss').popover({
trigger: 'focus',
animation: false
});
});
function toggleInfo() {
if (overallOn) {
$( ".info-overall" ).addClass("hidden-xs")
$( ".info-day" ).removeClass("hidden-xs")
$( "#info" ).text(' - Day');
overallOn = false;
} else {
$( ".info-day" ).addClass("hidden-xs")
$( ".info-overall" ).removeClass("hidden-xs")
$( "#info" ).text(' - Overall');
overallOn = true;
}
}
</script>

</body>
Expand Down

0 comments on commit 28ff7fe

Please sign in to comment.