<link rel="icon" href="dist/logo.png">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <script>
+ var VERSION="0.0.1";
+ </script>
<style>
.loader {
position: absolute;
<body>
<div class="loader"></div>
<div class="container" style="display:none">
+ <div id="notify" style="position:fixed;margin:10px;z-index:10;display:none">
+ <div id="notify-alert" class="alert alert-info alert-dismissible">
+ <button type="button" class="close" data-dismiss="alert"><span>×</span></button>
+ <h4><span id="notify-text"></span> <a id="notify-link" href="#" class="btn btn-success btn-lg">Download</a></h4>
+ </div>
+ </div>
<div class="text-primary">
<div class="jumbotron">
<h1>PDosage</h1>
var DATA_SRC="./src/data/";
-var DATA_FILE="./src/dosage.json";
+var DATA_FILE="./src/data.json";
var fs=require("fs");
+var bigData={id:"com.agnibho.com.pdosage.data", timestamp: Date.now(), version: 0, dosage:[]};
+
if(process.argv[2]=="watch"){
fs.watch(DATA_SRC, jsonCat);
}
function jsonCat(){
console.log("Joining JSON data files");
- var bigData=[]
var files=fs.readdirSync(DATA_SRC);
for(var i=0; i<files.length; i++){
if(files[i].indexOf(".")!==0){
try{
- bigData=bigData.concat(JSON.parse(fs.readFileSync(DATA_SRC+files[i], "utf8")));
+ bigData.dosage=bigData.dosage.concat(JSON.parse(fs.readFileSync(DATA_SRC+files[i], "utf8")));
}
catch(e){
console.log(e);
//Backend files
import Dosage from "./dosage.js";
-import data from "./dosage.json";
+import data from "./data.json";
//Vue Components
import Vue from "vue";
import AboutView from "./AboutView.vue";
//Start app
-var dosage=new Dosage(data);
new Vue({
el: "#app",
components: {
},
data: {
patient: {age: {y:null, m:null, d:null}, wt:null},
- dosage: dosage,
+ dosage: "",
favs: "[]"
},
created:function(){
this.favs=["Paracetamol", "Levosalbutamol", "Domperidone", "Drotaverine", "Ranitidine"];
}
}
+ try{
+ this.dosage=new Dosage(JSON.parse(localStorage.getItem("pdosage_data")).dosage);
+ }
+ catch(e){
+ this.dosage=new Dosage(data.dosage);
+ localStorage.setItem("pdosage_data", data);
+ }
}
});
$(".loader").remove();
$(".container").fadeIn();
+ //Insert version code
+ $(".version").text(VERSION);
+
//Update copyright
$(".copyright").each(function(){
if(new Date().getFullYear()>$(this).data("start")){
this.dispatchEvent(new Event("input"));
});
});
-
- //Change focus after number input
- $(".jump-focus").on("input", function(){
- if($(this).val().length == $(this).prop("maxlength")){
- var all=$("input").toArray();
- var i=all.indexOf(this)+1;
- $(all[i]).focus().select();
- }
+
+ //Notifications
+ $(window).resize(function(){
+ $("#notify").width($(".container").width()-20);
+ });
+ $(window).scroll(function(){
+ $("#notify").width($(".container").width()-20);
});
- //Defocus after input finished
- $(".stop-focus").on("input", function(){
- if($(this).val().length == $(this).prop("maxlength")){
- $(this).blur();
- var target=$($(this).data("ref"));
- $("html, body").animate({
- scrollTop: $(target).offset().top
- }, 1000);
+ //Parse app info from server
+ $.get("https://code.agnibho.com/pdosage/info.json", function(data){
+ var vCurr=VERSION.split(".").map(Number);
+ var vLtst=data.latest.split(".").map(Number);
+
+ if(isBiggerThan(data.latest, VERSION)){
+ $("#notify").slideDown();
+ $("#notify").width($(".container").width()-20);
+ $("#notify-text").text("A new version of PDosage is available.");
+ if(document.URL.indexOf("http://")==-1 && document.URL.indexOf("https://")==-1){
+ if(/(android)/i.test(navigator.userAgent)){
+ $("#notify-link").attr("href", data.apk);
+ $("#notify-link").text("Download");
+ }
+ else{
+ $("#notify-link").attr("href", data.url);
+ $("#notify-link").text("Load");
+ }
+ }
+ else{
+ $("#notify-link").attr("href", data.url);
+ $("#notify-link").text("Load");
+ }
+ }
+
+ try{
+ if(data.data.latest>JSON.parse(localStorage.getItem("pdosage_data")).version){
+ $.get(data.data.src, function(d){
+ localStorage.setItem("pdosage_data", JSON.stringify(d));
+ });
+ }
}
+ catch(e){}
});
+
+ //Compare versions
+ function isBiggerThan(v1, v2){
+ while(v1.length<v2.length){
+ v1.push(0);
+ }
+ while(v2.length<v1.length){
+ v2.push(0);
+ }
+ for(var i=0; i<v1.length; i++){
+ if(v1[i]>v2[i]){
+ return true;
+ }
+ }
+ return false;
+ }
});