Skip to content

Commit 9aabe65

Browse files
authored
Merge pull request #730 from tadast/tt/version-checker
Add a client side version checker
2 parents a52e6e9 + b322016 commit 9aabe65

3 files changed

Lines changed: 63 additions & 6 deletions

File tree

public/css/sequenceserver.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ td.nowrap-ellipsis {
383383
top: 0;
384384
left: 0;
385385
width: 100%;
386-
height: 32px;
386+
max-height: 32px;
387387
padding-right: 35px;
388388
padding-left: 35px;
389389
}

public/css/sequenceserver.min.css

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

views/layout.erb

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@
2020
<body>
2121
<div
2222
class="navbar">
23-
<div
24-
class="container">
23+
<div class="container">
2524
<a
2625
class="navbar-brand"
2726
href="https://sequenceserver.com" target="_blank">
@@ -31,6 +30,14 @@
3130
</small>
3231
</a>
3332
<ul class="nav navbar-nav navbar-right hover-reset focus-reset">
33+
<li>
34+
<a
35+
href="https://sequenceserver.com/progress-on-BLAST-interface/"
36+
class="update-check"
37+
data-version="<%= SequenceServer::VERSION %>"
38+
target="_blank">
39+
</a>
40+
</li>
3441
<li>
3542
<a
3643
target="_blank"
@@ -100,6 +107,56 @@
100107
</div> <!-- /container -->
101108
</div>
102109

110+
<script>
111+
document.addEventListener('DOMContentLoaded', function() {
112+
113+
function suggestNewVersion(element, version) {
114+
element.textContent = `New version v${version} is available`;
115+
console.log(`New SequenceServer version available ${version}. Please consider updating.`)
116+
}
117+
118+
const element = document.querySelector('.update-check');
119+
const currentVersion = element.getAttribute('data-version');
120+
const cachedVersion = document.cookie.split(';').find((item) => item.trim().startsWith('newVersion='));
121+
const upToDate = document.cookie.split(';').find((item) => item.trim().startsWith('versionIsLatest='));
122+
if (upToDate) {
123+
console.log('SequenceServer is up to date');
124+
return;
125+
}
126+
if (cachedVersion) {
127+
const newVersion = cachedVersion.split('=')[1];
128+
if (newVersion !== currentVersion) {
129+
suggestNewVersion(element, newVersion);
130+
}
131+
return;
132+
}
133+
console.log('Checking for new SequenceServer version...')
134+
fetch(`https://updates.sequenceserver.com/?version=${currentVersion}`)
135+
.then(response => {
136+
if (response.ok) {
137+
return response.json();
138+
} else {
139+
console.error('Failed to check for new SequenceServer version')
140+
}
141+
})
142+
.then(data => {
143+
const date = new Date();
144+
date.setTime(date.getTime() + (24 * 60 * 60 * 1000));
145+
const expires = "; expires=" + date.toUTCString();
146+
147+
if (data.update_available) {
148+
const newVersion = data.new_version;
149+
document.cookie = `newVersion=${newVersion}${expires}; path=/`;
150+
suggestNewVersion(element, newVersion);
151+
} else {
152+
console.log('SequenceServer is up to date');
153+
document.cookie = `versionIsLatest=true${expires}; path=/`;
154+
}
155+
})
156+
.catch(() => {});
157+
});
158+
159+
</script>
103160
<!-- twitter -->
104161
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
105162
</body>

0 commit comments

Comments
 (0)