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

Unified Diff: src/site/articles/trydart/examples/7-piratebadge_json/piratebadge.dart

Issue 35913002: Try Dart 1 hour experience first draft (Closed) Base URL: https://github.com/dart-lang/dartlang.org.git@master
Patch Set: trying again to upload chnages. still getting an error Created 7 years, 2 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
Index: src/site/articles/trydart/examples/7-piratebadge_json/piratebadge.dart
diff --git a/src/site/articles/trydart/examples/7-piratebadge_json/piratebadge.dart b/src/site/articles/trydart/examples/7-piratebadge_json/piratebadge.dart
new file mode 100644
index 0000000000000000000000000000000000000000..3c11f3d52fadbdef1e44a902c93524c119c54915
--- /dev/null
+++ b/src/site/articles/trydart/examples/7-piratebadge_json/piratebadge.dart
@@ -0,0 +1,129 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+
+// Demonstrates:
+// list, random, string interpolation, cascade, fat arrow,
+// named constructors.
+// optional parameters.
+// getters, setters,
+// httprequest, JSON
+// static methods/fields
+// cascades (onclick listen...piratename.male.name
+
+import 'dart:html';
+import 'dart:math';
+import 'dart:convert';
+
+InputElement inputNameElement;
+ButtonElement genButtonElement;
+
+bool useRandomName = false;
+
+RadioButtonInputElement captainRadioElement;
+RadioButtonInputElement scallywagRadioElement;
+
+void main() {
+ inputNameElement = query('#inputName');
+ inputNameElement.onChange.listen(generateBadge);
+
+ genButtonElement = query('#generateButton');
+ genButtonElement.onClick.listen(generateBadge);
+
+ query('#useRandomName').onClick.listen(useRandomNameClickHandler);
+
+ captainRadioElement = query('#captain');
+ scallywagRadioElement = query('#scallywag');
+
+ PirateName.initialize();
+}
+
+void generateBadge(Event event) {
+ if (!useRandomName) {
+ query('#badgeName').text = new PirateName(firstName: inputNameElement.value).name;
+ } else if (scallywagRadioElement.checked) {
+ query('#badgeName').text = new PirateName.scallywag().name;
+ } else {
+ query('#badgeName').text = new PirateName.captain().name;
+ }
+}
+
+void useRandomNameClickHandler(MouseEvent e) {
+ if ((e.target as CheckboxInputElement).checked) {
+ genButtonElement.disabled = false;
+ captainRadioElement.disabled = false;
+ scallywagRadioElement.disabled = false;
+ inputNameElement
+ ..disabled = true
+ ..value = ''
+ ..placeholder = '';
+ useRandomName = true;
+ } else {
+ genButtonElement.disabled = true;
+ captainRadioElement.disabled = true;
+ scallywagRadioElement.disabled = true;
+ inputNameElement
+ ..disabled = false
+ ..placeholder = 'Your name here';
+ useRandomName = false;
+ }
+}
+
+//library models;
+class PirateName {
+
+ Random indexGen = new Random();
+
+ String _pirateName;
+
+ String get name => _pirateName;
+ set name(String value) => _pirateName = value;
+
+ String toString() => name;
+
+ PirateName({String firstName}) {
+ if (firstName == null) {
+ firstName = names[indexGen.nextInt(names.length)];
+ }
+ _pirateName = '$firstName';
+ }
+
+ PirateName.captain() {
+ String firstName = names[indexGen.nextInt(names.length)];
+ String appellation = captains[indexGen.nextInt(captains.length)];
+ _pirateName = '$firstName the $appellation';
+ }
+
+ PirateName.scallywag() {
+ String firstName = names[indexGen.nextInt(names.length)];
+ String appellation = scallywags[indexGen.nextInt(scallywags.length)];
+ _pirateName = '$firstName the $appellation';
+ }
+
+ static List<String> names = [];
+ static List<String> captains = [];
+ static List<String> scallywags = [];
+
+ static void initialize() {
+ makeRequest();
+ }
+
+ static void makeRequest(/*Event e*/) {
+ var path = 'piratenames.json';
+ HttpRequest.getString(path)
+ .then(processString)
+ .catchError(handleError);
+ }
+
+ static handleError(Exception error) {
+ print('Request failed.');
+ }
+
+ static processString(String jsonString) {
+ List<List> pirateNames = JSON.decode(jsonString);
+ names = pirateNames[0];
+ captains = pirateNames[1];
+ scallywags = pirateNames[2];
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698