Logo  

Home - Old Man Programmer

Displaying webapps/scheduler/loadsave.js

// schedule0data
// schedule0name
// schedule0date
// schedule1
// ..
// schedule4

// %....[dsf]
String.prototype.format = function() {
  var arg = 0;
  var n = "", s = this, fmt, t, zero, p, ts, ps;

  for(var i=0, max = s.length; i < max; i++) {
    if (s[i] == '%') {
      if (s[++i] == '%') {
        n += '%';
        continue;
      }
      fmt = "";
      for(var j = i; j < s.length; j++) {
        if (s[j] == 'd' || s[j] == 's' || s[j] == 'f') {
          t = s[j];
          break;
        }
        fmt += s[j];
      }
      i = j;
      switch(t) {
        case 'd':
          zero = (fmt[0] == '0');
          p = parseInt(fmt);
          ts = parseInt(arguments[arg++]).toString();
          if (ts.length < p) {
            p -= ts.length;
            ps = "";
            while(p--) ps += zero? "0" : " ";
            n += ps + ts;
          } else n += ts;
          break;
        case 's':
          break;
        case 'f':
          break;
      }
    } else n += s[i];
  }
  return n;
}

function load_save(which) {
  if(disable_flag == true) return;
  disable_flag = true;
  var t = new Array(), tb = new Array();
  t.push(el("thead", [
    el("tr",[
      el("th", null),
      el("th", null, {innerHTML: "Name", style: "min-width: 200px;"}),
      el("th", null, {innerHTML: "Date", style: "min-width: 100px;"})
    ])
  ]));
  for(var r = 0; r < 5; r++) {
    var name = localStorage.getItem("schedule"+r+"name");
    var date = localStorage.getItem("schedule"+r+"date");
    if (name == undefined) name = "";
    if (date == undefined) date = "";
    tb.push(el("tr", [
      el("td", null, {innerHTML: (r+1)+":"}),
      el("td", null, {innerHTML: name }),
      el("td", null, {innerHTML: date })
    ], {onclick: (which == "load"? "loadsched(" : "savesched(")+r+");"}));
  }
  t.push(el("tbody", tb));

  document.getElementById("popup").appendChild(
    el("div", [
      el("button", null, {innerHTML:"X", onclick:"closewin();"}),
      el("table", t)
    ], {class:"popup", id:"loadsave"})
  );
  var w = (window.innerWidth/2)-(350/2);
  var h = window.innerHeight;
  document.getElementById("loadsave").setAttribute("style", "top:120px;left:"+ w +"px;");
}

function closewin() {
  disable_flag = false;
  document.getElementById("popup").innerHTML = "";
}

function savesched(i) {
  if (window.confirm("Over-write this save location?") == false) return;
  save_tab();
  localStorage.setItem("schedule"+i+"name", document.getElementById("name").value);
  var d = new Date();
  var date = "%02d-%02d-%d %02d:%02d".format(d.getDate(), d.getMonth()+1, d.getFullYear(), d.getHours(), d.getMinutes());
  localStorage.setItem("schedule"+i+"date", date);
  localStorage.setItem("schedule"+i+"data", JSON.stringify(_tabs));
  closewin();
}

function loadsched(i) {
  if (window.confirm("Discard current schedule and load?") == false) return;
  document.getElementById("name").value = localStorage.getItem("schedule"+i+"name");
  _tabs = JSON.parse(localStorage.getItem("schedule"+i+"data"));
  closewin();
  _active = _tabs[0];
  var tabs = document.getElementById("tabs");
  tabs.innerHTML = "";
  for(var i = 0; i < _tabs.length; i++) {
    tabs.appendChild(el("div", null, {id:_tabs[i].id, class: (i==0?'activetab':'tab'),innerHTML:_tabs[i].name, onclick:'switch_tab("'+_tabs[i].id+'");'}));
  }
  refresh_body(_active);
}