This is an automated email from the ASF dual-hosted git repository.
pabloem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 402bb56 Merge pull request #16283 from [BEAM-13448] [Playground]
track run code time to the analytics
402bb56 is described below
commit 402bb56483148d8e09cdbc3fdd270493628a7cd4
Author: Aydar Farrakhov <[email protected]>
AuthorDate: Wed Dec 22 01:46:01 2021 +0300
Merge pull request #16283 from [BEAM-13448] [Playground] track run code
time to the analytics
* [BEAM-13448]: playground - track run time
* [BEAM-13448]: remove pring
* [BEAM-13448]: fix tracking run time example name
---
.../frontend/lib/modules/analytics/analytics_events.dart | 1 +
.../lib/modules/analytics/analytics_service.dart | 16 ++++++++++++++--
.../playground/components/editor_textarea_wrapper.dart | 12 +++++++++++-
.../lib/pages/playground/states/playground_state.dart | 5 ++++-
4 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/playground/frontend/lib/modules/analytics/analytics_events.dart
b/playground/frontend/lib/modules/analytics/analytics_events.dart
index 0f747b8..cd68f24 100644
--- a/playground/frontend/lib/modules/analytics/analytics_events.dart
+++ b/playground/frontend/lib/modules/analytics/analytics_events.dart
@@ -32,4 +32,5 @@ const kOpenShortcutsModalEvent = 'open_shortcuts_modal';
const kOpenLinkEvent = 'open_link';
const kClickEnjoyPlaygroundEvent = 'click_enjoy_playground';
const kClickRunEvent = 'click_run';
+const kRunTimeEvent = 'run_time';
const kClickReportIssueEvent = 'click_report_issue';
diff --git a/playground/frontend/lib/modules/analytics/analytics_service.dart
b/playground/frontend/lib/modules/analytics/analytics_service.dart
index fc746ea..865191b 100644
--- a/playground/frontend/lib/modules/analytics/analytics_service.dart
+++ b/playground/frontend/lib/modules/analytics/analytics_service.dart
@@ -31,7 +31,7 @@ class AnalyticsService {
_analytics = AnalyticsHtml(kAnalyticsUA, 'beam', '1.0');
}
- static get(BuildContext context) {
+ static AnalyticsService get(BuildContext context) {
return Provider.of<AnalyticsService>(context, listen: false);
}
@@ -99,12 +99,24 @@ class AnalyticsService {
);
}
- void safeSendEvent(String category, String action, {String? label}) {
+ void trackRunTimeEvent(String exampleName, int runTimeMs) {
+ safeSendEvent(
+ kRunCodeCategory,
+ kRunTimeEvent,
+ label: exampleName,
+ value: runTimeMs,
+ );
+ }
+
+ void safeSendEvent(String category, String action,
+ {String? label, int? value, Map<String, String>? parameters}) {
try {
_analytics.sendEvent(
category,
action,
label: label,
+ value: value,
+ parameters: parameters,
);
} catch (e) {
// ignore analytics errors sync they don't affect app
diff --git
a/playground/frontend/lib/pages/playground/components/editor_textarea_wrapper.dart
b/playground/frontend/lib/pages/playground/components/editor_textarea_wrapper.dart
index 3e2e916..c5719ba 100644
---
a/playground/frontend/lib/pages/playground/components/editor_textarea_wrapper.dart
+++
b/playground/frontend/lib/pages/playground/components/editor_textarea_wrapper.dart
@@ -29,6 +29,7 @@ import
'package:playground/pages/playground/states/playground_state.dart';
import 'package:provider/provider.dart';
const kNotificationTitle = 'Run Code';
+const kUnknownExamplePrefix = 'Unknown Example';
class CodeTextAreaWrapper extends StatelessWidget {
const CodeTextAreaWrapper({Key? key}) : super(key: key);
@@ -67,7 +68,16 @@ class CodeTextAreaWrapper extends StatelessWidget {
child: RunButton(
isRunning: state.isCodeRunning,
runCode: () {
- state.runCode();
+ final stopwatch = Stopwatch()..start();
+ state.runCode(
+ onFinish: () {
+ AnalyticsService.get(context).trackRunTimeEvent(
+ state.selectedExample?.path ??
+ '$kUnknownExamplePrefix, sdk
${state.sdk.displayName}',
+ stopwatch.elapsedMilliseconds,
+ );
+ },
+ );
AnalyticsService.get(context)
.trackClickRunEvent(state.selectedExample);
},
diff --git
a/playground/frontend/lib/pages/playground/states/playground_state.dart
b/playground/frontend/lib/pages/playground/states/playground_state.dart
index 93747b0..b2021ca 100644
--- a/playground/frontend/lib/pages/playground/states/playground_state.dart
+++ b/playground/frontend/lib/pages/playground/states/playground_state.dart
@@ -110,7 +110,7 @@ class PlaygroundState with ChangeNotifier {
_pipelineOptions = options;
}
- void runCode() {
+ void runCode({Function? onFinish}) {
final parsedPipelineOptions = parsePipelineOptions(pipelineOptions);
if (parsedPipelineOptions == null) {
_result = RunCodeResult(
@@ -136,6 +136,9 @@ class PlaygroundState with ChangeNotifier {
);
_codeRepository?.runCode(request).listen((event) {
_result = event;
+ if (event.isFinished && onFinish != null) {
+ onFinish();
+ }
notifyListeners();
});
}