Changeset 326a257


Ignore:
Timestamp:
Dec 10, 2016, 10:13:32 PM (3 years ago)
Author:
Agnibho Mondal <mail@…>
Branches:
master
Children:
3f2f9ee
Parents:
f964a69
Message:

Added update function

Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    rf964a69 r326a257  
    44npm-debug.log
    55todo.org
    6 src/dosage.json
     6src/data.json
  • index.html

    rf964a69 r326a257  
    3232        <meta charset="utf-8">
    3333        <meta name="viewport" content="width=device-width, initial-scale=1.0">
     34        <script>
     35         var VERSION="0.0.1";
     36        </script>
    3437        <style>
    3538         .loader {
     
    5760        <div class="loader"></div>
    5861        <div class="container" style="display:none">
     62            <div id="notify" style="position:fixed;margin:10px;z-index:10;display:none">
     63                <div id="notify-alert" class="alert alert-info alert-dismissible">
     64                    <button type="button" class="close" data-dismiss="alert"><span>&times;</span></button>
     65                    <h4><span id="notify-text"></span> <a id="notify-link" href="#" class="btn btn-success btn-lg">Download</a></h4>
     66                </div>
     67            </div>
    5968            <div class="text-primary">
    6069                <div class="jumbotron">
  • prepare.js

    rf964a69 r326a257  
    11var DATA_SRC="./src/data/";
    2 var DATA_FILE="./src/dosage.json";
     2var DATA_FILE="./src/data.json";
    33var fs=require("fs");
     4
     5var bigData={id:"com.agnibho.com.pdosage.data", timestamp: Date.now(), version: 0, dosage:[]};
    46
    57if(process.argv[2]=="watch"){
     
    1214function jsonCat(){
    1315    console.log("Joining JSON data files");
    14     var bigData=[]
    1516    var files=fs.readdirSync(DATA_SRC);
    1617    for(var i=0; i<files.length; i++){
    1718        if(files[i].indexOf(".")!==0){
    1819            try{
    19                 bigData=bigData.concat(JSON.parse(fs.readFileSync(DATA_SRC+files[i], "utf8")));
     20                bigData.dosage=bigData.dosage.concat(JSON.parse(fs.readFileSync(DATA_SRC+files[i], "utf8")));
    2021            }
    2122            catch(e){
  • src/main.js

    rf964a69 r326a257  
    3838//Backend files
    3939import Dosage from "./dosage.js";
    40 import data from "./dosage.json";
     40import data from "./data.json";
    4141
    4242//Vue Components
     
    4949
    5050//Start app
    51 var dosage=new Dosage(data);
    5251new Vue({
    5352    el: "#app",
     
    6160    data: {
    6261        patient: {age: {y:null, m:null, d:null}, wt:null},
    63         dosage: dosage,
     62        dosage: "",
    6463        favs: "[]"
    6564    },
     
    7372            }
    7473        }
     74        try{
     75            this.dosage=new Dosage(JSON.parse(localStorage.getItem("pdosage_data")).dosage);
     76        }
     77        catch(e){
     78            this.dosage=new Dosage(data.dosage);
     79            localStorage.setItem("pdosage_data", data);
     80        }
    7581    }
    7682});
  • src/routine.js

    rf964a69 r326a257  
    3030    $(".container").fadeIn();
    3131
     32    //Insert version code
     33    $(".version").text(VERSION);
     34
    3235    //Update copyright
    3336    $(".copyright").each(function(){
     
    4750        });
    4851    });
    49    
    50     //Change focus after number input
    51     $(".jump-focus").on("input", function(){
    52         if($(this).val().length == $(this).prop("maxlength")){
    53             var all=$("input").toArray();
    54             var i=all.indexOf(this)+1;
    55             $(all[i]).focus().select();
    56         }
     52
     53    //Notifications
     54    $(window).resize(function(){
     55        $("#notify").width($(".container").width()-20);
     56    });
     57    $(window).scroll(function(){
     58        $("#notify").width($(".container").width()-20);
    5759    });
    5860
    59     //Defocus after input finished
    60     $(".stop-focus").on("input", function(){
    61         if($(this).val().length == $(this).prop("maxlength")){
    62             $(this).blur();
    63             var target=$($(this).data("ref"));
    64             $("html, body").animate({
    65                 scrollTop: $(target).offset().top
    66             }, 1000);
     61    //Parse app info from server
     62    $.get("https://code.agnibho.com/pdosage/info.json", function(data){
     63        var vCurr=VERSION.split(".").map(Number);
     64        var vLtst=data.latest.split(".").map(Number);
     65       
     66        if(isBiggerThan(data.latest, VERSION)){
     67            $("#notify").slideDown();
     68            $("#notify").width($(".container").width()-20);
     69            $("#notify-text").text("A new version of PDosage is available.");
     70            if(document.URL.indexOf("http://")==-1 && document.URL.indexOf("https://")==-1){
     71                if(/(android)/i.test(navigator.userAgent)){
     72                    $("#notify-link").attr("href", data.apk);
     73                    $("#notify-link").text("Download");
     74                }
     75                else{
     76                    $("#notify-link").attr("href", data.url);
     77                    $("#notify-link").text("Load");
     78                }
     79            }
     80            else{
     81                $("#notify-link").attr("href", data.url);
     82                $("#notify-link").text("Load");
     83            }
    6784        }
     85       
     86        try{
     87            if(data.data.latest>JSON.parse(localStorage.getItem("pdosage_data")).version){
     88                $.get(data.data.src, function(d){
     89                    localStorage.setItem("pdosage_data", JSON.stringify(d));
     90                });
     91            }
     92        }
     93        catch(e){}
    6894    });
     95
     96    //Compare versions
     97    function isBiggerThan(v1, v2){
     98        while(v1.length<v2.length){
     99            v1.push(0);
     100        }
     101        while(v2.length<v1.length){
     102            v2.push(0);
     103        }
     104        for(var i=0; i<v1.length; i++){
     105            if(v1[i]>v2[i]){
     106                return true;
     107            }
     108        }
     109        return false;
     110    }
    69111});
Note: See TracChangeset for help on using the changeset viewer.