blob: a0ef8bcf2978336886a45e8e7dad96ecee0d345f [file] [log] [blame]
Adam Barthdf9d48a2015-03-17 15:08:53 -07001// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Adam Barth9d9d2d52015-03-19 11:17:48 -07005import 'package:sky/framework/components/ink_well.dart';
Adam Barthdf9d48a2015-03-17 15:08:53 -07006import 'package:sky/framework/fn.dart';
Hixie4c15a962015-05-15 15:16:25 -07007import 'package:sky/framework/layout.dart';
Adam Barthdf9d48a2015-03-17 15:08:53 -07008import 'package:sky/framework/theme/typography.dart' as typography;
9import 'stock_arrow.dart';
10import 'stock_data.dart';
Rafael Weinstein202f99d2015-03-02 20:55:02 -080011
Adam Barthc6217002015-03-11 10:17:54 -070012class StockRow extends Component {
Adam Barthdf9d48a2015-03-17 15:08:53 -070013 static final Style _style = new Style('''
Rafael Weinstein202f99d2015-03-02 20:55:02 -080014 align-items: center;
15 border-bottom: 1px solid #F4F4F4;
16 padding-top: 16px;
17 padding-left: 16px;
18 padding-right: 16px;
19 padding-bottom: 20px;'''
20 );
21
Hixie4c15a962015-05-15 15:16:25 -070022 static final FlexBoxParentData _tickerFlex = new FlexBoxParentData()..flex = 1;
Rafael Weinstein202f99d2015-03-02 20:55:02 -080023
Adam Barthdf9d48a2015-03-17 15:08:53 -070024 static final Style _lastSaleStyle = new Style('''
Rafael Weinstein202f99d2015-03-02 20:55:02 -080025 text-align: right;
26 padding-right: 16px;'''
27 );
28
Adam Barthdf9d48a2015-03-17 15:08:53 -070029 static final Style _changeStyle = new Style('''
Adam Barth74cfcc42015-03-16 20:53:26 -070030 ${typography.black.caption};
Rafael Weinstein202f99d2015-03-02 20:55:02 -080031 text-align: right;'''
32 );
33
Adam Barthdf9d48a2015-03-17 15:08:53 -070034 Stock stock;
35
Rafael Weinstein202f99d2015-03-02 20:55:02 -080036 StockRow({Stock stock}) : super(key: stock.symbol) {
37 this.stock = stock;
38 }
39
Hixiefd14a1d2015-04-01 09:46:28 -070040 UINode build() {
Rafael Weinstein202f99d2015-03-02 20:55:02 -080041 String lastSale = "\$${stock.lastSale.toStringAsFixed(2)}";
42
43 String changeInPrice = "${stock.percentChange.toStringAsFixed(2)}%";
44 if (stock.percentChange > 0)
45 changeInPrice = "+" + changeInPrice;
46
Hixiefd14a1d2015-04-01 09:46:28 -070047 List<UINode> children = [
Rafael Weinstein202f99d2015-03-02 20:55:02 -080048 new StockArrow(
49 percentChange: stock.percentChange
50 ),
Hixie4c15a962015-05-15 15:16:25 -070051 new ParentDataNode(
52 new Container(
53 key: 'Ticker',
54 children: [new Text(stock.symbol)]
55 ),
56 _tickerFlex
Rafael Weinstein202f99d2015-03-02 20:55:02 -080057 ),
58 new Container(
59 key: 'LastSale',
Rafael Weinstein4c2f2482015-03-13 14:08:24 -070060 style: _lastSaleStyle,
Rafael Weinstein202f99d2015-03-02 20:55:02 -080061 children: [new Text(lastSale)]
62 ),
63 new Container(
64 key: 'Change',
Rafael Weinstein4c2f2482015-03-13 14:08:24 -070065 style: _changeStyle,
Rafael Weinstein202f99d2015-03-02 20:55:02 -080066 children: [new Text(changeInPrice)]
67 )
68 ];
69
Adam Barth1718f192015-03-25 10:41:38 -070070 return new StyleNode(new InkWell(children: children), _style);
Rafael Weinstein202f99d2015-03-02 20:55:02 -080071 }
Rafael Weinstein202f99d2015-03-02 20:55:02 -080072}