blob: 6b97386f219ce693fa678d0cf4df488024ab188e [file] [log] [blame]
<!--
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-->
<import src="/sky/framework/elements/sky-drawer-header.sky" />
<import src="/sky/framework/elements/sky-drawer.sky" />
<import src="/sky/framework/elements/sky-element.sky" />
<import src="/sky/framework/elements/sky-icon.sky" />
<import src="/sky/framework/elements/sky-menu-divider.sky" />
<import src="/sky/framework/elements/sky-menu-item.sky" />
<import src="/sky/framework/elements/sky-scrollable.sky" />
<import src="/sky/framework/elements/sky-toolbar.sky" />
<import src="stock.sky" as='view'/>
<sky-element>
<template>
<style>
:host {
display: flex;
flex-direction: column;
height: -webkit-fill-available;
font-family: 'Roboto Regular', 'Helvetica';
font-size: 16px;
}
sky-drawer {
position: absolute;
z-index: 2;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
sky-toolbar {
z-index: 1;
background-color: #3F51B5;
color: white;
}
sky-icon {
padding: 8px;
margin: 0 4px;
}
#title {
flex: 1;
margin: 0 4px;
}
sky-scrollable {
flex: 1;
}
</style>
<sky-drawer id="drawer" level="3">
<sky-drawer-header>
Stocks
</sky-drawer-header>
<sky-menu-item icon="content/inbox">Inbox</sky-menu-item>
<sky-menu-item icon="content/drafts">Drafts</sky-menu-item>
<sky-menu-divider />
<sky-menu-item icon="action/settings">Settings</sky-menu-item>
<sky-menu-item icon="action/help">Help &amp; feedback</sky-menu-item>
</sky-drawer>
<sky-toolbar level="2">
<sky-icon id="menu" type="navigation/menu_white" size="24" />
<div id="title">I am a stocks app</div>
<sky-icon type="action/search_white" size="24" />
<sky-icon type="navigation/more_vert_white" size="24" />
</sky-toolbar>
<sky-scrollable id='stock_list'>
</sky-scrollable>
</template>
<script>
import "dart:sky";
import "dart:math";
import "../data/stocks.dart" as model;
List pick(List list, int count) {
var rng = new Random();
List picked = new List();
for (int i = 0; i < count; i++) {
picked.add(list[rng.nextInt(list.length)]);
}
return picked;
}
@Tagname('stocks')
class Stocks extends SkyElement {
Element _drawer;
void shadowRootReady() {
_drawer = shadowRoot.getElementById('drawer');
Element menu = shadowRoot.getElementById('menu');
menu.addEventListener('click', _handleMenuClick);
populateStockList();
}
void populateStockList() {
Element stockList = shadowRoot.getElementById('stock_list');
// Limit to 100 to avoid taking seconds to load.
List<model.Stock> picked = pick(model.oracle.stocks, 100);
picked.sort((a, b) => a.symbol.compareTo(b.symbol));
for (model.Stock stock in picked) {
stockList.appendChild(new view.Stock()..model = stock);
}
}
void _handleMenuClick(_) {
_drawer.toggle();
}
}
_init(script) => register(script, Stocks);
</script>
</sky-element>