-// 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 +
+ "®ion=" +
+ 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() +
- "®ion=" +
- $("#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() +
- "®ion=" +
- $("#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() +
- "®ion=" +
- $("#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();
+});