From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- .../thrift/tutorial/dart/client/web/client.dart | 278 +++++++++++++++++++++ 1 file changed, 278 insertions(+) create mode 100644 src/jaegertracing/thrift/tutorial/dart/client/web/client.dart (limited to 'src/jaegertracing/thrift/tutorial/dart/client/web/client.dart') diff --git a/src/jaegertracing/thrift/tutorial/dart/client/web/client.dart b/src/jaegertracing/thrift/tutorial/dart/client/web/client.dart new file mode 100644 index 000000000..4f02d0d98 --- /dev/null +++ b/src/jaegertracing/thrift/tutorial/dart/client/web/client.dart @@ -0,0 +1,278 @@ +/// Licensed to the Apache Software Foundation (ASF) under one +/// or more contributor license agreements. See the NOTICE file +/// distributed with this work for additional information +/// regarding copyright ownership. The ASF licenses this file +/// to you under the Apache License, Version 2.0 (the +/// "License"); you may not use this file except in compliance +/// with the License. You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, +/// software distributed under the License is distributed on an +/// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +/// KIND, either express or implied. See the License for the +/// specific language governing permissions and limitations +/// under the License. + +import 'dart:html'; + +import 'package:thrift/thrift.dart'; +import 'package:thrift/thrift_browser.dart'; +import 'package:shared/shared.dart'; +import 'package:tutorial/tutorial.dart'; + +/// Adapted from the AS3 tutorial +void main() { + new CalculatorUI(querySelector('#output')).start(); +} + +class CalculatorUI { + final DivElement output; + + CalculatorUI(this.output); + + TTransport _transport; + Calculator _calculatorClient; + + void start() { + _buildInterface(); + _initConnection(); + } + + void _validate() { + if (!_transport.isOpen) { + window.alert("The transport is not open!"); + } + } + + void _initConnection() { + _transport = new TAsyncClientSocketTransport( + new TWebSocket(Uri.parse('ws://127.0.0.1:9090/ws')), + new TMessageReader(new TBinaryProtocolFactory())); + TProtocol protocol = new TBinaryProtocol(_transport); + _transport.open(); + + _calculatorClient = new CalculatorClient(protocol); + } + + void _buildInterface() { + output.children.forEach((e) { + e.remove(); + }); + + _buildPingComponent(); + + _buildAddComponent(); + + _buildCalculatorComponent(); + + _buildGetStructComponent(); + } + + void _buildPingComponent() { + output.append(new HeadingElement.h3()..text = "Ping"); + ButtonElement pingButton = new ButtonElement() + ..text = "PING" + ..onClick.listen(_onPingClick); + output.append(pingButton); + } + + void _onPingClick(MouseEvent e) { + _validate(); + + _calculatorClient.ping(); + } + + void _buildAddComponent() { + output.append(new HeadingElement.h3()..text = "Add"); + InputElement num1 = new InputElement() + ..id = "add1" + ..type = "number" + ..style.fontSize = "14px" + ..style.width = "50px"; + output.append(num1); + SpanElement op = new SpanElement() + ..text = "+" + ..style.fontSize = "14px" + ..style.marginLeft = "10px"; + output.append(op); + InputElement num2 = new InputElement() + ..id = "add2" + ..type = "number" + ..style.fontSize = "14px" + ..style.width = "50px" + ..style.marginLeft = "10px"; + output.append(num2); + ButtonElement addButton = new ButtonElement() + ..text = "=" + ..style.fontSize = "14px" + ..style.marginLeft = "10px" + ..onClick.listen(_onAddClick); + output.append(addButton); + SpanElement result = new SpanElement() + ..id = "addResult" + ..style.fontSize = "14px" + ..style.marginLeft = "10px"; + output.append(result); + } + + void _onAddClick(MouseEvent e) { + _validate(); + + InputElement num1 = querySelector("#add1"); + InputElement num2 = querySelector("#add2"); + SpanElement result = querySelector("#addResult"); + + _calculatorClient + .add(int.parse(num1.value), int.parse(num2.value)) + .then((int n) { + result.text = "$n"; + }); + } + + void _buildCalculatorComponent() { + output.append(new HeadingElement.h3()..text = "Calculator"); + InputElement num1 = new InputElement() + ..id = "calc1" + ..type = "number" + ..style.fontSize = "14px" + ..style.width = "50px"; + output.append(num1); + SelectElement op = new SelectElement() + ..id = "calcOp" + ..multiple = false + ..selectedIndex = 0 + ..style.fontSize = "16px" + ..style.marginLeft = "10px" + ..style.width = "50px"; + OptionElement addOp = new OptionElement() + ..text = "+" + ..value = Operation.ADD.toString(); + op.add(addOp, 0); + OptionElement subtractOp = new OptionElement() + ..text = "-" + ..value = Operation.SUBTRACT.toString(); + op.add(subtractOp, 1); + OptionElement multiplyOp = new OptionElement() + ..text = "*" + ..value = Operation.MULTIPLY.toString(); + op.add(multiplyOp, 2); + OptionElement divideOp = new OptionElement() + ..text = "/" + ..value = Operation.DIVIDE.toString(); + op.add(divideOp, 3); + output.append(op); + InputElement num2 = new InputElement() + ..id = "calc2" + ..type = "number" + ..style.fontSize = "14px" + ..style.width = "50px" + ..style.marginLeft = "10px"; + output.append(num2); + ButtonElement calcButton = new ButtonElement() + ..text = "=" + ..style.fontSize = "14px" + ..style.marginLeft = "10px" + ..onClick.listen(_onCalcClick); + output.append(calcButton); + SpanElement result = new SpanElement() + ..id = "calcResult" + ..style.fontSize = "14px" + ..style.marginLeft = "10px"; + output.append(result); + output.append(new BRElement()); + output.append(new BRElement()); + LabelElement logIdLabel = new LabelElement() + ..text = "Log ID:" + ..style.fontSize = "14px"; + output.append(logIdLabel); + InputElement logId = new InputElement() + ..id = "logId" + ..type = "number" + ..value = "1" + ..style.fontSize = "14px" + ..style.width = "50px" + ..style.marginLeft = "10px"; + output.append(logId); + LabelElement commentLabel = new LabelElement() + ..text = "Comment:" + ..style.fontSize = "14px" + ..style.marginLeft = "10px"; + output.append(commentLabel); + InputElement comment = new InputElement() + ..id = "comment" + ..style.fontSize = "14px" + ..style.width = "100px" + ..style.marginLeft = "10px"; + output.append(comment); + } + + void _onCalcClick(MouseEvent e) { + _validate(); + + InputElement num1 = querySelector("#calc1"); + InputElement num2 = querySelector("#calc2"); + SelectElement op = querySelector("#calcOp"); + SpanElement result = querySelector("#calcResult"); + InputElement logId = querySelector("#logId"); + InputElement comment = querySelector("#comment"); + + int logIdValue = int.parse(logId.value); + logId.value = (logIdValue + 1).toString(); + + Work work = new Work(); + work.num1 = int.parse(num1.value); + work.num2 = int.parse(num2.value); + work.op = int.parse(op.options[op.selectedIndex].value); + work.comment = comment.value; + + _calculatorClient.calculate(logIdValue, work).then((int n) { + result.text = "$n"; + }); + } + + void _buildGetStructComponent() { + output.append(new HeadingElement.h3()..text = "Get Struct"); + LabelElement logIdLabel = new LabelElement() + ..text = "Struct Key:" + ..style.fontSize = "14px"; + output.append(logIdLabel); + InputElement logId = new InputElement() + ..id = "structKey" + ..type = "number" + ..value = "1" + ..style.fontSize = "14px" + ..style.width = "50px" + ..style.marginLeft = "10px"; + output.append(logId); + ButtonElement getStructButton = new ButtonElement() + ..text = "GET" + ..style.fontSize = "14px" + ..style.marginLeft = "10px" + ..onClick.listen(_onGetStructClick); + output.append(getStructButton); + output.append(new BRElement()); + output.append(new BRElement()); + TextAreaElement result = new TextAreaElement() + ..id = "getStructResult" + ..style.fontSize = "14px" + ..style.width = "300px" + ..style.height = "50px" + ..style.marginLeft = "10px"; + output.append(result); + } + + void _onGetStructClick(MouseEvent e) { + _validate(); + + InputElement structKey = querySelector("#structKey"); + TextAreaElement result = querySelector("#getStructResult"); + + _calculatorClient + .getStruct(int.parse(structKey.value)) + .then((SharedStruct s) { + result.text = "${s.toString()}"; + }); + } +} -- cgit v1.2.3