EBernhardson has uploaded a new change for review.
https://gerrit.wikimedia.org/r/247885
Change subject: Refactor search.js to only load deps for users in test
......................................................................
Refactor search.js to only load deps for users in test
This should reduce the amount of code loaded by 999 out of 1000
users of WMF wiki's.
Change-Id: I846752cef863e2c1fad1ba1f4fcaeb39868c2676
---
M WikimediaEvents.php
M modules/ext.wikimediaEvents.search.js
2 files changed, 46 insertions(+), 42 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikimediaEvents
refs/changes/85/247885/1
diff --git a/WikimediaEvents.php b/WikimediaEvents.php
index 846a1d1..1e13c88 100644
--- a/WikimediaEvents.php
+++ b/WikimediaEvents.php
@@ -113,8 +113,6 @@
'dependencies' => array(
'mediawiki.user', // needed by search.js,
searchSuggest.js
'mediawiki.Uri', // needed by searchSatisfaction.js
- 'schema.Search', // needed by search.js
- 'ext.eventLogging', // needed by search.js
),
'localBasePath' => __DIR__ . '/modules',
'remoteExtPath' => 'WikimediaEvents/modules',
diff --git a/modules/ext.wikimediaEvents.search.js
b/modules/ext.wikimediaEvents.search.js
index 6062562..0edd61b 100644
--- a/modules/ext.wikimediaEvents.search.js
+++ b/modules/ext.wikimediaEvents.search.js
@@ -2,51 +2,57 @@
( function ( $ ) {
'use strict';
- var isLoggingEnabled = mw.config.get(
'wgCirrusSearchEnableSearchLogging' ),
- // For 1 in a 1000 users the metadata about interaction
- // with the search form (absent search terms) is event logged.
- // See https://meta.wikimedia.org/wiki/Schema:Search
- isSampled = Math.random() < 1 / 1000,
- defaults,
- sessionStartTime;
+ var defaults, depsPromise, sessionStartTime,
+ getRandomToken = function () {
+ return mw.user.generateRandomSessionId() + ( new Date()
).getTime().toString();
+ },
+ oneIn = function ( populationSize ) {
+ var rand = parseInt(
mw.user.generateRandomSessionId().slice( 0, 13 ), 16 );
+ return rand % populationSize === 0;
+ },
+ isLoggingEnabled = mw.config.get(
'wgCirrusSearchEnableSearchLogging' );
- /**
- * Generate a random token
- * @return {String}
- */
- function getRandomToken() {
- return mw.user.generateRandomSessionId() + ( new Date()
).getTime().toString();
+ // For 1 in a 1000 users the metadata about interaction
+ // with the search form (absent search terms) is event logged.
+ // See https://meta.wikimedia.org/wiki/Schema:Search
+ if ( !isLoggingEnabled || !oneIn( 1000 ) ) {
+ return;
}
- if ( isLoggingEnabled && isSampled ) {
- defaults = {
- platform: 'desktop',
- userSessionToken: getRandomToken(),
- searchSessionToken: getRandomToken()
+ depsPromise = mw.loader.using( [
+ 'schema.Search',
+ 'ext.eventLogging'
+ ] );
+
+ defaults = {
+ platform: 'desktop',
+ userSessionToken: getRandomToken(),
+ searchSessionToken: getRandomToken()
+ };
+
+ mw.trackSubscribe( 'mediawiki.searchSuggest', function ( topic, data ) {
+ var loggingData = {
+ action: data.action
};
- mw.trackSubscribe( 'mediawiki.searchSuggest', function ( topic,
data ) {
- var loggingData = {
- action: data.action
- };
-
- if ( data.action === 'session-start' ) {
- // update session token if it's a new search
- defaults.searchSessionToken = getRandomToken();
- sessionStartTime = this.timeStamp;
- } else if ( data.action === 'impression-results' ) {
- loggingData.numberOfResults =
data.numberOfResults;
- loggingData.resultSetType = data.resultSetType;
- loggingData.timeToDisplayResults = Math.round(
this.timeStamp - sessionStartTime );
- } else if ( data.action === 'click-result' ) {
- loggingData.clickIndex = data.clickIndex;
- loggingData.numberOfResults =
data.numberOfResults;
- } else if ( data.action === 'submit-form' ) {
- loggingData.numberOfResults =
data.numberOfResults;
- }
- loggingData.timeOffsetSinceStart = Math.round(
this.timeStamp - sessionStartTime ) ;
- $.extend( loggingData, defaults );
+ if ( data.action === 'session-start' ) {
+ // update session token if it's a new search
+ defaults.searchSessionToken = getRandomToken();
+ sessionStartTime = this.timeStamp;
+ } else if ( data.action === 'impression-results' ) {
+ loggingData.numberOfResults = data.numberOfResults;
+ loggingData.resultSetType = data.resultSetType;
+ loggingData.timeToDisplayResults = Math.round(
this.timeStamp - sessionStartTime );
+ } else if ( data.action === 'click-result' ) {
+ loggingData.clickIndex = data.clickIndex;
+ loggingData.numberOfResults = data.numberOfResults;
+ } else if ( data.action === 'submit-form' ) {
+ loggingData.numberOfResults = data.numberOfResults;
+ }
+ loggingData.timeOffsetSinceStart = Math.round( this.timeStamp -
sessionStartTime ) ;
+ $.extend( loggingData, defaults );
+ depsPromise.then( function () {
mw.eventLog.logEvent( 'Search', loggingData );
} );
- }
+ } );
}( jQuery ) );
--
To view, visit https://gerrit.wikimedia.org/r/247885
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I846752cef863e2c1fad1ba1f4fcaeb39868c2676
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikimediaEvents
Gerrit-Branch: master
Gerrit-Owner: EBernhardson <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits