| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library eval_box_element; | 5 library eval_box_element; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:html'; | 8 import 'dart:html'; |
| 9 import 'observatory_element.dart'; | 9 import 'observatory_element.dart'; |
| 10 import 'package:polymer/polymer.dart'; | 10 import 'package:polymer/polymer.dart'; |
| 11 | 11 |
| 12 | 12 |
| 13 typedef Future evalType(String text); | 13 typedef Future evalType(String text); |
| 14 | 14 |
| 15 | 15 |
| 16 @CustomTag('eval-box') | 16 @CustomTag('eval-box') |
| 17 class EvalBoxElement extends ObservatoryElement { | 17 class EvalBoxElement extends ObservatoryElement { |
| 18 @observable String text; | 18 @observable String text; |
| 19 @observable String lineMode = "1-line"; | 19 @observable String lineMode = "1-line"; |
| 20 int _exprCount = 0; |
| 20 | 21 |
| 21 @published evalType callback; | 22 @published evalType callback; |
| 22 @observable ObservableList results = toObservable([]); | 23 @observable ObservableList results = toObservable([]); |
| 23 | 24 |
| 24 void updateLineMode(Event e, var detail, Node target) { | 25 void updateLineMode(Event e, var detail, Node target) { |
| 25 lineMode = (e.target as InputElement).value; | 26 lineMode = (e.target as InputElement).value; |
| 26 if (lineMode == '1-line') { | 27 if (lineMode == '1-line') { |
| 27 text = text.replaceAll('\n', ' '); | 28 text = text.replaceAll('\n', ' '); |
| 28 } | 29 } |
| 29 } | 30 } |
| 30 | 31 |
| 31 void evaluate(Event e, var detail, Node target) { | 32 void evaluate(Event e, var detail, Node target) { |
| 32 // Prevent any form action. | 33 // Prevent any form action. |
| 33 e.preventDefault(); | 34 e.preventDefault(); |
| 34 | 35 |
| 35 // Clear the text box. | 36 // Clear the text box. |
| 36 var expr = text; | 37 var expr = text; |
| 37 text = ''; | 38 text = ''; |
| 38 | 39 |
| 39 // Use provided callback to eval the expression. | 40 // Use provided callback to eval the expression. |
| 40 if (callback != null) { | 41 if (callback != null) { |
| 41 var map = toObservable({}); | 42 var map = toObservable({}); |
| 43 map['id'] = (_exprCount++).toString(); |
| 42 map['expr'] = expr; | 44 map['expr'] = expr; |
| 43 results.insert(0, map); | 45 results.insert(0, map); |
| 44 callback(expr).then((result) { | 46 callback(expr).then((result) { |
| 45 map['value'] = result; | 47 map['value'] = result; |
| 46 }).catchError((e, st) { | 48 }).catchError((e, st) { |
| 47 map['error'] = e.message; | 49 map['error'] = e.message; |
| 48 app.handleException(e, st); | 50 app.handleException(e, st); |
| 49 }); | 51 }); |
| 50 } | 52 } |
| 51 } | 53 } |
| 52 | 54 |
| 53 void selectExpr(MouseEvent e) { | 55 void selectExpr(MouseEvent e) { |
| 54 assert(e.target is Element); | 56 assert(e.target is Element); |
| 55 Element targetElement = e.target; | 57 Element targetElement = e.target; |
| 56 text = targetElement.getAttribute('expr'); | 58 text = targetElement.getAttribute('expr'); |
| 57 } | 59 } |
| 58 | 60 |
| 61 void closeItem(MouseEvent e) { |
| 62 assert(e.target is Element); |
| 63 Element targetElement = e.target; |
| 64 var closeId = targetElement.getAttribute('closeId'); |
| 65 results.removeWhere((item) => item['id'] == closeId); |
| 66 } |
| 67 |
| 59 EvalBoxElement.created() : super.created(); | 68 EvalBoxElement.created() : super.created(); |
| 60 } | 69 } |
| OLD | NEW |