Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Unified Diff: sky/examples/stocks/stock-arrow.sky

Issue 932103004: Make the stock app demo list view prettier (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/examples/stocks/stock.sky ('k') | sky/framework/sky-element.sky » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/examples/stocks/stock-arrow.sky
diff --git a/sky/examples/stocks/stock-arrow.sky b/sky/examples/stocks/stock-arrow.sky
new file mode 100644
index 0000000000000000000000000000000000000000..0ebe9cfba3fcc5fdba3039231dd0219f524f1003
--- /dev/null
+++ b/sky/examples/stocks/stock-arrow.sky
@@ -0,0 +1,98 @@
+<!--
+// 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/sky-element.sky" />
+
+<sky-element attributes="change:number">
+<template>
+ <style>
+ :host {
+ width: 40px;
+ height: 40px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 40px;
+ border: 1px solid transparent;
+ }
+ #arrow {
+ width: 0;
+ height: 0;
+ border-left: 9px solid transparent;
+ border-right: 9px solid transparent;
+ }
+ .up {
+ margin-bottom: 3px;
+ border-bottom: 9px solid white;
+ }
+ .down {
+ margin-top: 3px;
+ border-top: 9px solid white;
+ }
+ </style>
+ <div id="arrow" />
+</template>
+<script>
+import "dart:sky";
+import "dart:math";
+
+final List<String> _kRedColors = [
+ '#E57373',
+ '#EF5350',
+ '#F44336',
+ '#E53935',
+ '#D32F2F',
+ '#C62828',
+ '#B71C1C',
+];
+
+final List<String> _kGreenColors = [
+ '#81C784',
+ '#66BB6A',
+ '#4CAF50',
+ '#43A047',
+ '#388E3C',
+ '#2E7D32',
+ '#1B5E20',
+];
+
+int _colorIndexForPercentChange(double percentChange) {
+ // Currently the max is 10%.
+ double maxPercent = 10.0;
+ return max(0, ((percentChange.abs() / maxPercent) * _kGreenColors.length).floor());
+}
+
+String _colorForPercentChange(double percentChange) {
+ if (percentChange > 0)
+ return _kGreenColors[_colorIndexForPercentChange(percentChange)];
+ return _kRedColors[_colorIndexForPercentChange(percentChange)];
+}
+
+@Tagname('stock-arrow')
+class StockArrow extends SkyElement {
+ Element _arrow;
+
+ void _updateArrow(double percentChange) {
+ String border = _colorForPercentChange(percentChange).toString();
+ String type = percentChange > 0 ? 'bottom' : 'top';
+ _arrow.style['border-$type-color'] = border;
+ style['border-color'] = border;
+ _arrow.setAttribute('class', percentChange > 0 ? 'up' : 'down');
+ }
+
+ void shadowRootReady() {
+ _arrow = shadowRoot.getElementById('arrow');
+ _updateArrow(change);
+ }
+
+ void changeChanged(double oldValue, double newValue) {
+ if (_arrow != null)
+ _updateArrow(newValue);
+ }
+}
+
+_init(script) => register(script, StockArrow);
+</script>
+</sky-element>
« no previous file with comments | « sky/examples/stocks/stock.sky ('k') | sky/framework/sky-element.sky » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698