diff --git a/Dockerfile b/Dockerfile index 47691c11d..f20d6920b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:16 as build +FROM node:16-bookworm as build # make sure app variable is set and valid ARG app="" RUN : "${app:?Missing --build-arg app}" @@ -12,7 +12,7 @@ RUN yarn --network-timeout 100000 RUN yarn build:$app RUN mv ./apps/$app/bundle-$app/ ./bundle/ -FROM node:16 +FROM node:16-bookworm RUN npm install --location=global serve COPY --from=build /tmp/app/bundle/ /var/www/app/ WORKDIR /var/www/app/ diff --git a/apps/genetics/index.html b/apps/genetics/index.html index 0e5539149..ef751f3be 100644 --- a/apps/genetics/index.html +++ b/apps/genetics/index.html @@ -23,7 +23,8 @@ - + + Open Targets Genetics diff --git a/apps/genetics/package.json b/apps/genetics/package.json index 8789b5082..16efc514d 100644 --- a/apps/genetics/package.json +++ b/apps/genetics/package.json @@ -43,7 +43,7 @@ "react-helmet": "^6.0.0", "react-measure": "^2.1.2", "react-router-dom": "5.1.2", - "react-scripts": "4.0.3", + "react-scripts": "5.0.0", "react-scroll": "^1.7.16", "react-select": "^5.3.2", "react-sizeme": "^3.0.2", diff --git a/apps/genetics/public/matomo/get_logged_in_user.js b/apps/genetics/public/matomo/get_logged_in_user.js new file mode 100644 index 000000000..162e8e72e --- /dev/null +++ b/apps/genetics/public/matomo/get_logged_in_user.js @@ -0,0 +1,24 @@ +/** +Returns a promise of logged-in user id. +This function assumes response header contains 'user' entry. +*/ +function getLoggedInUser() { + return new Promise(function(resolve, reject) { + var request = new XMLHttpRequest(); + request.onreadystatechange = function() { + if (this.readyState === this.HEADERS_RECEIVED) { + var user = request.getResponseHeader('user'); + if (user != null) { + resolve(user); + } else { + reject(); + } + } + }; + request.onerror = function() { + reject(); + }; + request.open('HEAD', document.location, true); + request.send(null); + }); +} \ No newline at end of file diff --git a/apps/genetics/public/matomo/init_matomo.js b/apps/genetics/public/matomo/init_matomo.js new file mode 100644 index 000000000..fc4786055 --- /dev/null +++ b/apps/genetics/public/matomo/init_matomo.js @@ -0,0 +1,40 @@ +var _paq = window._paq || []; +/* tracker methods like "setCustomDimension" should be called before "trackPageView" */ + +(function() { + function registerUserVisit() { + getLoggedInUser() + .then(function(user) { + _paq.push(['setUserId', user]); + }) + .finally(function() { + _paq.push(['setCustomUrl', window.location.href]); + _paq.push(['setDocumentTitle', window.document.title]); + _paq.push(['trackPageView']); + _paq.push(['enableLinkTracking']); + }); + } + var pushState = history.pushState; + history.pushState = function() { + pushState.apply(history, arguments); + registerUserVisit(); + }; + registerUserVisit(); +})(); + +(function() { + var u = 'DISABLED'; + if (u === 'DISABLED') { + return + } + _paq.push(['setTrackerUrl', u + 'matomo.php']); + _paq.push(['setSiteId', '1']); + 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 + 'matomo.js'; + s.parentNode.insertBefore(g, s); +})(); \ No newline at end of file