Skip to content

Instantly share code, notes, and snippets.

@jumpingdeeps
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jumpingdeeps/2a921bc559764bf58b96 to your computer and use it in GitHub Desktop.
Save jumpingdeeps/2a921bc559764bf58b96 to your computer and use it in GitHub Desktop.
A way to load the Wootric snippet in a factory file so it can be fired in a single-page application with wootricFactory.run();
'use strict';
/**
* @ngdoc service
* @name wootricAngularApp.wootricFactory
* @description
* # wootricFactory
* Factory in the wootricAngularApp.
*/
angular.module('wootricAngularApp')
.factory('wootricFactory', function () {
window.wootricSettings = {
email: 'nps@example.com',// TODO: The current logged in user's email address.
created_at: 1234567890, // TODO: The current logged in user's sign-up date as a 10 digit Unix timestamp.
account_token: 'NPS-xxxxxxx' // This is your unique account token.
};
var i=new Image;i.src="//d8myem934l1zi.cloudfront.net/pixel.gif?account_token="+window.wootricSettings.account_token+"&email="+encodeURIComponent(window.wootricSettings.email)+"&created_at="+window.wootricSettings.created_at+"&url="+encodeURIComponent(window.location)+"&random="+Math.random()
window.lightningjs||function(c){function g(b,d){d&&(d+=(/\?/.test(d)?"&":"?")+"lv=1");c[b]||function(){var i=window,h=document,j=b,g=h.location.protocol,l="load",k=0;(function(){function b(){a.P(l);a.w=1;c[j]("_load")}c[j]=function(){function m(){m.id=e;return c[j].apply(m,arguments)}var b,e=++k;b=this&&this!=i?this.id||0:0;(a.s=a.s||[]).push([e,b,arguments]);m.then=function(b,c,h){var d=a.fh[e]=a.fh[e]||[],j=a.eh[e]=a.eh[e]||[],f=a.ph[e]=a.ph[e]||[];b&&d.push(b);c&&j.push(c);h&&f.push(h);return m};return m};var a=c[j]._={};a.fh={};a.eh={};a.ph={};a.l=d?d.replace(/^\/\//,(g=="https:"?g:"http:")+"//"):d;a.p={0:+new Date};a.P=function(b){a.p[b]=new Date-a.p[0]};a.w&&b();i.addEventListener?i.addEventListener(l,b,!1):i.attachEvent("on"+l,b);var q=function(){function b(){return["<head></head><",c,' onload="var d=',n,";d.getElementsByTagName('head')[0].",d,"(d.",g,"('script')).",i,"='",a.l,"'\"></",c,">"].join("")}var c="body",e=h[c];if(!e)return setTimeout(q,100);a.P(1);var d="appendChild",g="createElement",i="src",k=h[g]("div"),l=k[d](h[g]("div")),f=h[g]("iframe"),n="document",p;k.style.display="none";e.insertBefore(k,e.firstChild).id=o+"-"+j;f.frameBorder="0";f.id=o+"-frame-"+j;/MSIE[ ]+6/.test(navigator.userAgent)&&(f[i]="javascript:false");f.allowTransparency="true";l[d](f);try{f.contentWindow[n].open()}catch(s){a.domain=h.domain,p="javascript:var d="+n+".open();d.domain='"+h.domain+"';",f[i]=p+"void(0);"}try{var r=f.contentWindow[n];r.write(b());r.close()}catch(t){f[i]=p+'d.write("'+b().replace(/"/g,String.fromCharCode(92)+'"')+'");d.close();'}a.P(2)};a.l&&q()})()}();c[b].lv="1";return c[b]}var o="lightningjs",k=window[o]=g(o);k.require=g;k.modules=c}({});
window.wootric = lightningjs.require("wootric", "//d27j601g4x0gd5.cloudfront.net/beacon.js");
return {
run: function() {
window.wootric_survey_immediately = true; // Shows survey immediately for testing purposes. TODO: Comment out for production.
window.wootric_no_surveyed_cookie = true; // Bypass cookie based throttle for testing purposes. TODO: Comment out for production.
window.wootric("run");
}
}
});
'use strict';
/**
* @ngdoc function
* @name wootricAngularApp.controller:MainCtrl
* @description
* # MainCtrl
* Controller of the wootricAngularApp
*/
angular.module('wootricAngularApp')
.controller('MainCtrl', ['wootricFactory', function (wootricFactory) {
wootricFactory.run();
}]);
/**
* Say you want to delay the "triggering" of wootric until after user data is available.
*/
User.getData().then(function (wootricFactory) {
wootricFactory.run();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment