]> gitweb.ps.run Git - lolstats/blobdiff - html/script.js
changes
[lolstats] / html / script.js
index 518f5fbce8e4316369b876e87b9e9d2f33b8dc87..7a150c4d62480886b0affa2ccd0bb7fce97ff3f3 100644 (file)
-// Start Screen
-// ------------
 function getRegions() {
-  return [ "euw", "na", "kr", "br" ];
+  $.ajax("/lol/regions")
+    .done((data) => {
+      app.regions = JSON.parse(data);
+    });
 }
-
-function toggleStart(up) {
-  $("#start").removeClass(up ? "down" : "up");
-  $("#start").addClass(up ? "up" : "down");
+function getChampions() {
+  $.ajax("/lol/champions")
+    .done((data) => {
+      app.champions = JSON.parse(data);
+    });
 }
-function slideStart() {
-  $("#start").addClass("slideup");
+function getMatchProps() {
+  return [
+    {text: "Champion", name: "champ"},
+    {text: "Lane", name: "lane"},
+  ];
 }
-function slideSlideUp() {
-  $("#slide").addClass("slideup");
+function getMatches() {
+  $.ajax("/lol/matches?region=" + app.region + "&summoner=" + app.summoner)
+    .done((data) => {
+      app.matches = JSON.parse(data);
+    });
 }
-function slideSlideLeft() {
-  $("#slide").removeClass("slideright");
-  $("#slide").addClass("slideleft");
+function getInfo() {
+  app.summoner = $("#nameinput").val();
+  app.region = $("#regionselect").val();
+} 
+function setUrl() {
+  window.history.pushState("object or string", "Title",
+    "/lol?summoner=" +
+    app.summoner +
+    "&region=" +
+    app.region +
+    "&view=" +
+    app.view);
 }
-function slideSlideRight() {
-  $("#slide").removeClass("slideleft");
-  $("#slide").addClass("slideright");
+function toggleStartUp() {
+  $("#start").removeClass("down");
+  $("#start").addClass("up");
 }
-function toggleSlideLeft() {
-  $("#slide").addClass("left");
+function toggleStartDown() {
+  $("#start").removeClass("up");
+  $("#start").addClass("down");
 }
-
-var app = new Vue({
+function slideStartUp() {
+  $("#start").removeClass("slidedown");
+  $("#start").addClass("slideup");
+}
+function slideStartDown() {
+  $("#start").removeClass("slideup");
+  $("#start").addClass("slidedown");
+}
+function setView(view) {
+  console.log("Setting view to " + view);
+  if (view == "history") {
+    toggleStartUp();
+    $("#matchhistory").show();
+  } else if (view == "stats") {
+    toggleStartUp();
+    $("#stats").show();
+  }
+  app.view = view;
+}
+function changeView(view) {
+  let oldView = app.view;
+  console.log("changing view from " + oldView + " to " + view);
+  if (oldView == "start") {
+    if (view == "history") {
+      slideStartUp();
+      $("#matchhistory").show("blind", { direction: "down" }, 300);
+    } else if (view == "stats") {
+      slideStartUp();
+      $("#stats").show("blind", { direction: "down" }, 300);
+    }
+  } else if (oldView == "history") {
+    if (view == "start") {
+      $("#matchhistory").hide("blind", { direction: "down" }, 300);
+      slideStartDown();
+    } else if (view == "stats") {
+      $("#stats").show("blind", { direction: "right" });
+      $("#matchhistory").hide("blind", { direction: "left" });
+    }
+  } else if (oldView == "stats") {
+    if (view == "start") {
+      $("#stats").hide("blind", { direction: "down" }, 300);
+      slideStartDown();
+    } else if (view == "history") {
+      $("#matchhistory").show("blind", { direction: "left" });
+      $("#stats").hide("blind", { direction: "right" });
+    }
+  }
+  app.view = view;
+}
+let app = new Vue({
   el: '#app',
   data: {
-    regions: getRegions(),
-    region: "euw",
     summoner: "",
+    region: "",
+    view: "",
+    regions: [],
+    champions: [],
+    matchprops: [],
+    matches: [],
   },
   methods: {
-    startToHistory: function() {
-      window.history.pushState("object or string", "Title",
-        "/?summoner=" +
-        $("#nameinput").val() +
-        "&region=" +
-        $("#regionselect").val() +
-        "&view=history");
-
-      slideStart();
-      $("#matchhistory").show();
-      slideSlideUp();
-      app.startToHistory = ()=>{};
+    submit: function() {
+      getInfo();
+      if (app.view == "start")
+        changeView("history");
+      setUrl();
     },
     historyToStats: function() {
-      window.history.pushState("object or string", "Title",
-        "/?summoner=" +
-        $("#nameinput").val() +
-        "&region=" +
-        $("#regionselect").val() +
-        "&view=stats");
-
-      $("#stats").show();
-      slideSlideLeft();
-      setTimeout(() => {
-        $("#matchhistory").hide();
-      }, 300);
+      changeView("stats");
+      setUrl();
     },
     statsToHistory: function() {
-      window.history.pushState("object or string", "Title",
-        "/?summoner=" +
-        $("#nameinput").val() +
-        "&region=" +
-        $("#regionselect").val() +
-        "&view=history");
-
-      $("#matchhistory").show();
-      slideSlideRight();
-      setTimeout(() => {
-        $("#stats").hide();
-      }, 300);
+      changeView("history");
+      setUrl();
+    },
+    refreshHistory: function() {
+      getMatches();
     },
   },
 });
 
-// Check for URL parameters
-let url = new URL(window.location.href);
-if (url.searchParams.has("summoner"))
-  app.summoner = url.searchParams.get("summoner");
-if (url.searchParams.has("region"))
-  app.region = url.searchParams.get("region");
-if (url.searchParams.has("view")) {
-  let view = url.searchParams.get("view");
-  if (view == "history") {
-    toggleStart(true);
-    $("#matchhistory").show();
-    app.startToHistory = ()=>{};
+function parseUrl() {
+  let url = new URL(window.location.href);
+  if (url.searchParams.has("summoner")) {
+    app.summoner = url.searchParams.get("summoner");
+    $("#nameinput").val(app.summoner);
   }
-  else if (view == "stats") {
-    toggleStart(true);
-    $("#stats").show();
-    toggleSlideLeft();
-    app.startToHistory = ()=>{};
+  if (url.searchParams.has("region")) {
+    app.region = url.searchParams.get("region");
+    $("#regionselect").val(app.region);
+  }
+  if (url.searchParams.has("view")) {
+    let view = url.searchParams.get("view");
+    if (view != "start" && view != "history" && view != "stats") {
+      view = "start";
+    }
+    return view;
+  } else {
+    return "start";
   }
 }
-// ------------
+
+window.addEventListener('popstate', () => {
+  let view = parseUrl();
+  changeView(view);
+});
+window.addEventListener('load', () => {
+  let view = parseUrl();
+  setView(view);
+  getRegions();
+  getChampions();
+});