analytics menu

This commit is contained in:
Mo Bitar
2017-04-25 11:45:04 -05:00
parent f982f0b00a
commit fc53fdcb8b
5 changed files with 74 additions and 29 deletions

View File

@@ -1,30 +1,11 @@
class BaseCtrl {
constructor(syncManager, dbManager, authManager) {
constructor(syncManager, dbManager, analyticsManager) {
dbManager.openDatabase(null, function(){
// new database, delete syncToken so that items can be refetched entirely from server
syncManager.clearSyncToken();
syncManager.sync();
})
// load analytics
window._paq = window._paq || [];
(function() {
var u="https://piwik.standardnotes.org/";
window._paq.push(['setTrackerUrl', u+'piwik.php']);
window._paq.push(['setSiteId', '2']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
var analyticsId = authManager.getUserAnalyticsId();
if(analyticsId) {
window._paq.push(['setUserId', analyticsId]);
}
window._paq.push(['trackPageView']);
window._paq.push(['enableLinkTracking']);
}
}
angular.module('app.frontend').controller('BaseCtrl', BaseCtrl);

View File

@@ -0,0 +1,51 @@
class AnalyticsManager {
constructor(authManager) {
this.authManager = authManager;
var status = localStorage.getItem("analyticsEnabled");
if(status === null) {
this.enabled = true;
} else {
this.enabled = JSON.parse(status);
}
if(this.enabled === true) {
this.initialize();
}
}
setStatus(enabled) {
this.enabled = enabled;
localStorage.setItem("analyticsEnabled", JSON.stringify(enabled));
window.location.reload();
}
toggleStatus() {
this.setStatus(!this.enabled);
}
initialize() {
// load analytics
window._paq = window._paq || [];
(function() {
var u="https://piwik.standardnotes.org/";
window._paq.push(['setTrackerUrl', u+'piwik.php']);
window._paq.push(['setSiteId', '2']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.id="piwik", g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
var analyticsId = this.authManager.getUserAnalyticsId();
if(analyticsId) {
window._paq.push(['setUserId', analyticsId]);
}
window._paq.push(['trackPageView', "AppInterface"]);
window._paq.push(['enableLinkTracking']);
}
}
angular.module('app.frontend').service('analyticsManager', AnalyticsManager);

View File

@@ -6,7 +6,7 @@ class AccountMenu {
this.scope = {};
}
controller($scope, authManager, modelManager, syncManager, dbManager, $timeout) {
controller($scope, authManager, modelManager, syncManager, dbManager, analyticsManager, $timeout) {
'ngInject';
$scope.formData = {mergeLocal: true, url: syncManager.serverURL};
@@ -14,6 +14,7 @@ class AccountMenu {
$scope.server = syncManager.serverURL;
$scope.syncStatus = syncManager.syncStatus;
$scope.analyticsManager = analyticsManager;
$scope.encryptionKey = function() {
return authManager.keys().mk;