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

Side by Side Diff: samples/newissues/newissues.dart

Issue 11783009: Big merge from experimental to bleeding edge. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 import 'dart:html'; 5 import 'dart:html';
6 import 'dart:json'; 6 import 'dart:json' as jsonlib;
7 7
8 /// Issue wraps JSON structure that describes a bug. 8 /// Issue wraps JSON structure that describes a bug.
9 class Issue { 9 class Issue {
10 final json; 10 final json;
11 Issue(this.json); 11 Issue(this.json);
12 12
13 void addTo(Element div) { 13 void addTo(Element div) {
14 div.children.add(new Element.tag("h2")..text = json[r"title"][r"$t"]); 14 div.children.add(new Element.tag("h2")..text = json[r"title"][r"$t"]);
15 div.children.add(new Element.tag("pre")..text = json[r"content"][r"$t"]); 15 div.children.add(new Element.tag("pre")..text = json[r"content"][r"$t"]);
16 } 16 }
17 } 17 }
18 18
19 /// Decodes JSON into a list of Issues. 19 /// Decodes JSON into a list of Issues.
20 List<Issue> getIssues(json) { 20 List<Issue> getIssues(json) {
21 var issues = json["feed"]["entry"]; 21 var issues = json["feed"]["entry"];
22 if (issues == null) return null; 22 if (issues == null) return null;
23 return issues.map((data) => new Issue(data)); 23 return issues.mappedBy((data) => new Issue(data)).toList();
24 } 24 }
25 25
26 /// Iterates over the recieved issues and construct HTML for them. 26 /// Iterates over the recieved issues and construct HTML for them.
27 void processJson(json) { 27 void processJson(json) {
28 Element div = query("#content"); 28 Element div = query("#content");
29 List<Issue> list = getIssues(json); 29 List<Issue> list = getIssues(json);
30 if (list == null) { 30 if (list == null) {
31 div.children.add(new Element.tag("h2")..text = "... no issues found."); 31 div.children.add(new Element.tag("h2")..text = "... no issues found.");
32 } else { 32 } else {
33 getIssues(json).forEach((Issue i) => i.addTo(div)); 33 getIssues(json).forEach((Issue i) => i.addTo(div));
34 } 34 }
35 } 35 }
36 36
37 /// Sends a HTTPRequest and returns a future fo the date. 37 /// Sends a HTTPRequest and returns a future fo the date.
38 Future<dynamic> requestJson(String url) { 38 Future<dynamic> requestJson(String url) {
39 Completer c = new Completer<dynamic>(); 39 Completer c = new Completer<dynamic>();
40 void callback(HttpRequest req) { 40 void callback(HttpRequest req) {
41 if (req.readyState == HttpRequest.DONE) { 41 if (req.readyState == HttpRequest.DONE) {
42 c.complete(JSON.parse(req.response)); 42 c.complete(jsonlib.parse(req.response));
43 } 43 }
44 }; 44 };
45 new HttpRequest.get(url, callback); 45 new HttpRequest.get(url, callback);
46 return c.future; 46 return c.future;
47 } 47 }
48 48
49 void main() { 49 void main() {
50 // Requests new issues from the Dart issue database as json. 50 // Requests new issues from the Dart issue database as json.
51 const String url = "https://code.google.com/feeds/issues/p/dart/issues/full"; 51 const String url = "https://code.google.com/feeds/issues/p/dart/issues/full";
52 const String options = "alt=json&can=new"; 52 const String options = "alt=json&can=new";
53 requestJson("$url?$options").then(processJson); 53 requestJson("$url?$options").then(processJson);
54 } 54 }
OLDNEW
« no previous file with comments | « samples/markdown/markdown.dart ('k') | samples/sample_extension/sample_asynchronous_extension.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698