OLD | NEW |
(Empty) | |
| 1 import 'dart:html'; |
| 2 import 'dart:async'; |
| 3 import 'package:polymer/polymer.dart'; |
| 4 |
| 5 @CustomTag('tute-stopwatch') |
| 6 class TuteStopwatch extends PolymerElement with ObservableMixin { |
| 7 @observable String counter='00:00'; |
| 8 |
| 9 Stopwatch mywatch = new Stopwatch(); |
| 10 Timer mytimer; |
| 11 |
| 12 ButtonElement stopButton; |
| 13 ButtonElement startButton; |
| 14 ButtonElement resetButton; |
| 15 |
| 16 void inserted() { |
| 17 super.inserted(); |
| 18 startButton = getShadowRoot('tute-stopwatch').query('#startButton'); |
| 19 stopButton = getShadowRoot('tute-stopwatch').query('#stopButton'); |
| 20 resetButton = getShadowRoot('tute-stopwatch').query('#resetButton'); |
| 21 |
| 22 stopButton.disabled = true; |
| 23 resetButton.disabled = true; |
| 24 } |
| 25 |
| 26 void removed() { |
| 27 super.removed(); |
| 28 mytimer.cancel(); |
| 29 } |
| 30 |
| 31 void start(Event e, var detail, Node target) { |
| 32 mywatch.start(); |
| 33 var oneSecond = new Duration(seconds:1); |
| 34 mytimer = new Timer.periodic(oneSecond, updateTime); |
| 35 startButton.disabled = true; |
| 36 stopButton.disabled = false; |
| 37 resetButton.disabled = true; |
| 38 } |
| 39 |
| 40 void stop(Event e, var detail, Node target) { |
| 41 mywatch.stop(); |
| 42 mytimer.cancel(); |
| 43 startButton.disabled = false; |
| 44 resetButton.disabled = false; |
| 45 stopButton.disabled = true; |
| 46 } |
| 47 |
| 48 void reset(Event e, var detail, Node target) { |
| 49 mywatch.reset(); |
| 50 counter = '00:00'; |
| 51 resetButton.disabled = true; |
| 52 } |
| 53 |
| 54 void updateTime(Timer _) { |
| 55 var s = mywatch.elapsedMilliseconds~/1000; |
| 56 var m = 0; |
| 57 |
| 58 if (s >= 60) { m = s ~/ 60; s = s % 60; } |
| 59 |
| 60 String minute = (m <= 9) ? '0$m' : '$m'; |
| 61 String second = (s <= 9) ? '0$s' : '$s'; |
| 62 counter = '$minute:$second'; |
| 63 } |
| 64 } |
OLD | NEW |