jenkins-bot has submitted this change and it was merged. Change subject: Add event logging funnel for navigation menu interaction ......................................................................
Add event logging funnel for navigation menu interaction Adds logging per the schema at https://meta.wikimedia.org/wiki/Schema:MobileWikiAppNavMenu. Logs opening of the nav menu, selection of an item, and cancellation, i.e., the closing of the drawer without any item having been selected. Bug: T104623 Change-Id: I9cf04cf9c2d258fc8b561d1dca99de40e22c78ab --- A wikipedia/src/main/java/org/wikipedia/analytics/NavMenuFunnel.java M wikipedia/src/main/java/org/wikipedia/page/NavDrawerHelper.java M wikipedia/src/main/java/org/wikipedia/page/PageActivity.java 3 files changed, 96 insertions(+), 0 deletions(-) Approvals: Dbrant: Looks good to me, approved jenkins-bot: Verified diff --git a/wikipedia/src/main/java/org/wikipedia/analytics/NavMenuFunnel.java b/wikipedia/src/main/java/org/wikipedia/analytics/NavMenuFunnel.java new file mode 100644 index 0000000..0cb40ef --- /dev/null +++ b/wikipedia/src/main/java/org/wikipedia/analytics/NavMenuFunnel.java @@ -0,0 +1,67 @@ +package org.wikipedia.analytics; + +import org.wikipedia.WikipediaApp; + +public class NavMenuFunnel extends Funnel { + private static final String SCHEMA_NAME = "MobileWikiAppNavMenu"; + private static final int REV_ID = 12732211; + + private static final String NAV_MENU_TODAY = "Today"; + private static final String NAV_MENU_HISTORY = "Recent"; + private static final String NAV_MENU_SAVED_PAGES = "SavedPages"; + private static final String NAV_MENU_NEARBY = "Nearby"; + private static final String NAV_MENU_MORE = "More"; + private static final String NAV_MENU_LOGIN = "Login"; + private static final String NAV_MENU_RANDOM = "Random"; + + public NavMenuFunnel() { + super(WikipediaApp.getInstance(), SCHEMA_NAME, REV_ID, Funnel.SAMPLE_LOG_100); + } + + public void logToday() { + logSelect(NAV_MENU_TODAY); + } + + public void logHistory() { + logSelect(NAV_MENU_HISTORY); + } + + public void logSavedPages() { + logSelect(NAV_MENU_SAVED_PAGES); + } + + public void logNearby() { + logSelect(NAV_MENU_NEARBY); + } + + public void logMore() { + logSelect(NAV_MENU_MORE); + } + + public void logLogin() { + logSelect(NAV_MENU_LOGIN); + } + + public void logRandom() { + logSelect(NAV_MENU_RANDOM); + } + + public void logOpen() { + log( + "action", "open" + ); + } + + public void logCancel() { + log( + "action", "cancel" + ); + } + + private void logSelect(String menuItem) { + log( + "action", "select", + "menuItem", menuItem + ); + } +} diff --git a/wikipedia/src/main/java/org/wikipedia/page/NavDrawerHelper.java b/wikipedia/src/main/java/org/wikipedia/page/NavDrawerHelper.java index 3d7533b..2ae65db 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/NavDrawerHelper.java +++ b/wikipedia/src/main/java/org/wikipedia/page/NavDrawerHelper.java @@ -12,6 +12,7 @@ import org.wikipedia.R; import org.wikipedia.WikipediaApp; import org.wikipedia.analytics.LoginFunnel; +import org.wikipedia.analytics.NavMenuFunnel; import org.wikipedia.history.HistoryEntry; import org.wikipedia.history.HistoryFragment; import org.wikipedia.login.LoginActivity; @@ -34,8 +35,10 @@ private MenuItem usernameContainer; private MenuItem loginContainer; private MenuItem[] loggedInOnyActionViews = new MenuItem[NAV_DRAWER_ACTION_ITEMS_LOGGED_IN_ONLY.length]; + private NavMenuFunnel funnel; public NavDrawerHelper(@NonNull PageActivity page) { + this.funnel = new NavMenuFunnel(); this.page = page; page.getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() { @Override @@ -43,6 +46,10 @@ updateItemSelection(NavDrawerHelper.this.page.getTopFragment()); } }); + } + + public NavMenuFunnel getFunnel() { + return funnel; } public void setupDynamicNavDrawerItems() { @@ -66,30 +73,38 @@ switch (menuItem.getItemId()) { case R.id.nav_item_today: page.displayMainPageInCurrentTab(); + funnel.logToday(); break; case R.id.nav_item_history: page.pushFragment(new HistoryFragment()); + funnel.logHistory(); break; case R.id.nav_item_saved_pages: page.pushFragment(new SavedPagesFragment()); + funnel.logSavedPages(); break; case R.id.nav_item_nearby: page.pushFragment(new NearbyFragment()); + funnel.logNearby(); break; case R.id.nav_item_more: launchSettingsActivity(); + funnel.logMore(); break; case R.id.nav_item_login: launchLoginActivity(); + funnel.logLogin(); break; case R.id.nav_item_random: page.getRandomHandler().doVisitRandomArticle(); + funnel.logRandom(); break; default: return false; } clearItemHighlighting(); menuItem.setChecked(true); + page.setNavItemSelected(true); return true; } }; diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java index e5f2c87..175b4ca 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java +++ b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java @@ -120,6 +120,7 @@ private ThemeChooserDialog themeChooser; private RandomHandler randomHandler; private NavDrawerHelper navDrawerHelper; + private boolean navItemSelected; public View getContentView() { return fragmentContainerView; @@ -174,6 +175,14 @@ } else { return null; } + } + + public void setNavItemSelected(boolean wasSelected) { + navItemSelected = wasSelected; + } + + private boolean wasNavItemSelected() { + return navItemSelected; } @Override @@ -326,6 +335,10 @@ super.onDrawerClosed(view); // if we want to change the title upon closing: //getSupportActionBar().setTitle(""); + if (!wasNavItemSelected()) { + navDrawerHelper.getFunnel().logCancel(); + } + setNavItemSelected(false); } @Override @@ -341,6 +354,7 @@ if (isCabOpen()) { currentActionMode.finish(); } + navDrawerHelper.getFunnel().logOpen(); } private boolean oncePerSlideLock = false; -- To view, visit https://gerrit.wikimedia.org/r/228012 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9cf04cf9c2d258fc8b561d1dca99de40e22c78ab Gerrit-PatchSet: 6 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Mholloway <[email protected]> Gerrit-Reviewer: BearND <[email protected]> Gerrit-Reviewer: Brion VIBBER <[email protected]> Gerrit-Reviewer: Dbrant <[email protected]> Gerrit-Reviewer: Mholloway <[email protected]> Gerrit-Reviewer: Niedzielski <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
