Skip to content

Commit 4255667

Browse files
committed
refactor: moved version check to JS
The version checking logic is now inside a JS file and should be bundled inside the last-bundle dist file.
1 parent 75e1714 commit 4255667

File tree

5 files changed

+129
-3
lines changed

5 files changed

+129
-3
lines changed

debug.html

+3-1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
<script src="js/vendor/a_jquery-3.3.1.js"></script>
5656
<script src="js/vendor/b_bootstrap.js"></script>
5757
<script src="js/vendor/c_bootstrap-notify.js"></script>
58+
<script src="js/vendor/d_version_check.js"></script>
5859

5960
<!-- Custom JS files -->
6061
<script src="js/src/alerter.1.js"></script>
@@ -76,7 +77,7 @@
7677
</button>
7778
<a class="navbar-brand" href="https://github.com/TGRHavoc/">
7879
<img src="https://avatars1.githubusercontent.com/u/1770893?s=460&v=4" style="max-height: 30px" >
79-
Live Map v<span id="livemap_version">2.0.0</span>
80+
Live Map v<span id="livemap_version">0.0.0</span>
8081
</a>
8182

8283
<div class="collapse navbar-collapse" id="navbarNav">
@@ -185,6 +186,7 @@
185186
</div>
186187

187188
<script src="js/src/controls.2.js"></script>
189+
<script src="js/src/version-check.2.js"></script>
188190

189191
<script>
190192
var greenIcon = L.icon({

js/src/version-check.2.js

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
$(document).ready(function () {
2+
$.ajax("version.json", {
3+
error: function (textStatus, errorThrown) {
4+
createAlert({
5+
title: "<strong>Error getting version.json!</strong>",
6+
message: textStatus.statusText
7+
});
8+
},
9+
dataType: "text", // We want to strip any comments in the file first
10+
success: function (data, textStatus) {
11+
var str = stripJsonOfComments(data);
12+
var p = JSON.parse(str);
13+
14+
window.version = p["interface"];
15+
16+
$("#livemap_version").text(window.version); // Show it on the interface
17+
18+
$.ajax("//raw.githubusercontent.com/TGRHavoc/live_map-interface/master/version.json", {
19+
error: function (textStatus, errorThrown) {
20+
createAlert({
21+
title: "<strong>Error latest version for check!</strong>",
22+
message: textStatus.statusText
23+
});
24+
},
25+
dataType: "text", // We want to strip any comments in the file first
26+
success: function (data, textStatus) {
27+
var str = stripJsonOfComments(data);
28+
var p = JSON.parse(str);
29+
30+
// Check versions
31+
if (window.compareVersions(window.version, p["interface"]) < 0){
32+
createAlert({
33+
title: "Update available",
34+
message: `An update is available (${window.version} -> ${p["interface"]}). Please download it <a style='color: #000;' href='https://github.com/TGRHavoc/live_map-interface'>HERE.</a>`
35+
})
36+
}else{
37+
console.log("Up to date or, a higher version");
38+
}
39+
40+
}
41+
});
42+
}
43+
});
44+
});
45+
46+
/*
47+
$jsArrayString = sprintf("An update is available (%s -> %s). Please download it <a style=\'color: #000;\' href=\'%s\'>HERE.</a>", self::$version, self::$latestVer, self::$downloadUrl);
48+
49+
return "<script> createAlert({ title: 'Update available', message: '" . $jsArrayString . "'}, {type: 'danger', delay: 0}); </script>";
50+
*/

js/vendor/d_version_check.js

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/* global define */
2+
(function (root, factory) {
3+
/* istanbul ignore next */
4+
if (typeof define === 'function' && define.amd) {
5+
define([], factory);
6+
} else if (typeof exports === 'object') {
7+
module.exports = factory();
8+
} else {
9+
root.compareVersions = factory();
10+
}
11+
}(this, function () {
12+
13+
var semver = /^v?(?:\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+))?(?:-[\da-z\-]+(?:\.[\da-z\-]+)*)?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i;
14+
15+
function indexOrEnd(str, q) {
16+
return str.indexOf(q) === -1 ? str.length : str.indexOf(q);
17+
}
18+
19+
function split(v) {
20+
var c = v.replace(/^v/, '').replace(/\+.*$/, '');
21+
var patchIndex = indexOrEnd(c, '-');
22+
var arr = c.substring(0, patchIndex).split('.');
23+
arr.push(c.substring(patchIndex + 1));
24+
return arr;
25+
}
26+
27+
function tryParse(v) {
28+
return isNaN(Number(v)) ? v : Number(v);
29+
}
30+
31+
function validate(version) {
32+
if (typeof version !== 'string') {
33+
throw new TypeError('Invalid argument expected string');
34+
}
35+
if (!semver.test(version)) {
36+
throw new Error('Invalid argument not valid semver (\'' + version + '\' received)');
37+
}
38+
}
39+
40+
return function compareVersions(v1, v2) {
41+
[v1, v2].forEach(validate);
42+
43+
var s1 = split(v1);
44+
var s2 = split(v2);
45+
46+
for (var i = 0; i < Math.max(s1.length - 1, s2.length - 1); i++) {
47+
var n1 = parseInt(s1[i] || 0, 10);
48+
var n2 = parseInt(s2[i] || 0, 10);
49+
50+
if (n1 > n2) return 1;
51+
if (n2 > n1) return -1;
52+
}
53+
54+
var sp1 = s1[s1.length - 1];
55+
var sp2 = s2[s2.length - 1];
56+
57+
if (sp1 && sp2) {
58+
var p1 = sp1.split('.').map(tryParse);
59+
var p2 = sp2.split('.').map(tryParse);
60+
61+
for (i = 0; i < Math.max(p1.length, p2.length); i++) {
62+
if (p1[i] === undefined || typeof p2[i] === 'string' && typeof p1[i] === 'number') return -1;
63+
if (p2[i] === undefined || typeof p1[i] === 'string' && typeof p2[i] === 'number') return 1;
64+
65+
if (p1[i] > p2[i]) return 1;
66+
if (p2[i] > p1[i]) return -1;
67+
}
68+
} else if (sp1 || sp2) {
69+
return sp1 ? -1 : 1;
70+
}
71+
72+
return 0;
73+
};
74+
75+
}));

style/src/style.css

-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ input[type=text] {display:inline;}
9494
.fix-row label {display:block;vertical-align: middle;padding: 8px 0;}
9595
.fix-row input {float:right;}
9696
.info-window {padding:10px;}
97-
.info-icon {background-image: url(../images/icons/info.png);background-repeat:no-repeat;background-position: center center;float:left;width:32px;height:32px;margin-right:5px;}
9897
.info-header-box {margin-bottom:2px;}
9998
.info-header {float:left;font-size:1.8em!important;font-weight:bold!important;color:#333!important;padding-top:3px;}
10099
.info-body {color:#333 !important; height:33px;border-top:1px solid #333;}

version.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"interface" : "2.2.11"
2+
"interface" : "3.0.0"
33
}

0 commit comments

Comments
 (0)