Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <title>Cor_Vous Corridor Solution Search</title>
- <meta name="viewport" content="initial-scale=1">
- <meta charset="UTF-8">
- </head>
- <body>
- <div>
- <img id="cauldron" src="cauldron.png" />
- <img id="clover" src="clover.png" />
- <img id="diamond" src="diamond.png" />
- <img id="hex" src="hex.png" />
- <img id="plus" src="plus.png" />
- <img id="snake" src="snake.png" />
- </div>
- <p>@Cor_Vous Corridor Vault Search</p>
- <form>
- <fieldset>
- <legend>Options</legend>
- <div><label><input type="radio" id="VaultOnly" name="SelectedData" value="vault" >Vault Data</label> <a href="https://docs.google.com/spreadsheets/d/1bYi_-XApwf_avyIuExGULdWa4oxzLr7upelAtRq38TA/edit#gid=710933392">https://docs.google.com/spreadsheets/d/1bYi_-XApwf_avyIuExGULdWa4oxzLr7upelAtRq38TA/edit#gid=710933392</a></div><br>
- <div><label><input type="radio" id="VerifiedOnly" name="SelectedData" value="verified" >Verified Combined Data</label> <a href="https://docs.google.com/spreadsheets/d/1T4h8B3LF7jCNKccMAUjRDPJYetA7WJlFeit6Fon6xoA/edit?usp=sharing">https://docs.google.com/spreadsheets/d/1T4h8B3LF7jCNKccMAUjRDPJYetA7WJlFeit6Fon6xoA/edit?usp=sharing</a></div><br>
- <div><label><input type="radio" id="MasterOnly" name="SelectedData" value="master"checked>Unfiltered Compiled Data (1/17/2020 3:27 AM PST)</label> <a href="https://docs.google.com/spreadsheets/d/1bYi_-XApwf_avyIuExGULdWa4oxzLr7upelAtRq38TA/edit#gid=1755434390">https://docs.google.com/spreadsheets/d/1bYi_-XApwf_avyIuExGULdWa4oxzLr7upelAtRq38TA/edit#gid=1755434390</a></div><br>
- <br>
- <div><label>Main Symbol:</label>
- <select id="Symbol">
- <option value="any" selected="selected">Any</option>
- <option value="some">Non-blank</option>
- <option value="">Blank</option>
- <option value="cauldron">Cauldron</option>
- <option value="clover">Clover</option>
- <option value="diamond">Diamond</option>
- <option value="hex">Hex</option>
- <option value="plus">Plus</option>
- <option value="snake">Snake</option>
- </select>
- </div><br>
- <div><label>Has subnode:</label><input type="text" id="SubNode" name="SubNode" /></div><br>
- <div><label><input type="checkbox" id="StartEnd" name="StartEnd">Is Start/End</label></div><br>
- <input id="search-button" type="button" onclick="search()" value="Search">
- </fieldset>
- </form>
- <textarea id="json-export" style="display: none;" cols="100" rows="10"></textarea>
- <br>
- <div id="results">
- <table>
- <thead>
- <th>ID</th>
- <th>Symbol</th>
- <th>Open Sides</th>
- <th>Subnodes</th>
- <th>Image</th>
- </thead>
- <tbody id="results-table">
- <tr id="result-placeholder" style="display: none;">
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- </tbody>
- </table>
- </div>
- <script>
- class Node {
- constructor(id, subNodes, openSides, symbol=null, corridorLink) {
- this.id = id;
- this.subNodes = subNodes;
- this.openSides = openSides;
- this.symbol = symbol;
- this.corridorLink = corridorLink;
- }
- }
- class SubNode {
- constructor(code = "") {
- this.code = code;
- }
- }
- function search() {
- var verifiedOnly = document.getElementById("VerifiedOnly").checked;
- var vaultOnly = document.getElementById("VaultOnly").checked;
- var masterOnly = document.getElementById("MasterOnly").checked;
- var selectedData = "";
- var selectedData = verifiedOnly?"verifiedOnly":selectedData;
- var selectedData = vaultOnly?"vaultOnly":selectedData;
- var selectedData = masterOnly?"masterOnly":selectedData;
- var startEnd = document.getElementById("StartEnd").checked;
- var symbolSearch = document.getElementById("Symbol").selectedOptions[0].value;
- var subNodeSearch = document.getElementById("SubNode").value;
- window.history.pushState("", "document.title", window.location.href.split('?')[0]+"?Search="+selectedData+"&SubNode="+subNodeSearch);
- var resultRows = document.getElementById("results-table").getElementsByClassName("result-row");
- while (resultRows.length > 0) resultRows[0].remove();
- document.getElementById("search-button").style.display = "none";
- document.getElementById("json-export").style.display = "none";
- var dataTest = [];
- var nodes = [];
- var nodeSignature = {};
- var xmlhttp = new XMLHttpRequest();
- xmlhttp.onreadystatechange = function() {
- if (this.readyState == 4 && this.status == 200) {
- let counter = 0;
- var data = JSON.parse(this.responseText);
- data.feed.entry.forEach(function(sheetData){
- if (sheetData["gs$cell"]["col"] == 2 && sheetData["gs$cell"]["row"] >= 2) {
- x = sheetData.content["$t"];
- x = x.replace(/\\""/g, '"');
- try {
- JSON.parse(x);
- } catch(e) {
- return;
- }
- dataTest.push([JSON.parse(x), sheetData["gs$cell"]["row"]]);
- }
- });
- dataTest.forEach(function(data) {
- let signature = "";
- var newSubNodes = [];
- try {
- data[0].nodes.forEach(function(subData){
- if (subData.join('') == "BBBBBBB") {
- var newSubNode = new SubNode();
- } else {
- var newSubNode = new SubNode(subData.join(''));
- }
- signature+=subData.join('');
- newSubNodes.push(newSubNode);
- });
- } catch(e) {
- //console.log(e);
- return;
- }
- var newOpenSides = [];
- for(i=0; i<6; i++) {
- if (!data[0].walls[i]) {
- signature+=i+1;
- newOpenSides.push(i+1);
- }
- }
- var newSymbol;
- switch(data[0].center) {
- case 'T':
- newSymbol = "cauldron";
- break;
- case 'C':
- newSymbol = "clover";
- break;
- case 'H':
- newSymbol = "hex";
- break;
- case 'S':
- newSymbol = "snake";
- break;
- case 'D':
- newSymbol = "diamond";
- break;
- case 'P':
- newSymbol = "plus";
- break;
- case 'B':
- newSymbol = null;
- break;
- }
- signature+=newSymbol;
- var corridors = "https://tjl.co/corridors-of-time/viewer.html#"+btoa(JSON.stringify(data));
- var newNode = new Node(data[1], newSubNodes, newOpenSides, newSymbol, corridors);
- newNode.image = data[0].image;
- if (!nodeSignature[signature]) {
- nodeSignature[signature] = data[1];
- nodes.push(newNode);
- } else {
- //console.log("Duplicate found at: "+data[1]+". Original at: "+nodeSignature[signature]);
- }
- });
- console.log(nodes.length + " rows");
- var results = nodes.slice();
- if (symbolSearch == "some") {
- results = results.filter(n => n.symbol != null)
- } else if (symbolSearch != "any") {
- results = results.filter(n => n.symbol == symbolSearch || symbolSearch == "" && n.symbol == null);
- }
- if (subNodeSearch != "") {
- results = results.filter(n => n.subNodes.find(subNode => subNode.code.toUpperCase() == subNodeSearch.toUpperCase() || subNode.code == "" && subNodeSearch.toUpperCase() == "BBBBBB"));
- }
- if (startEnd) {
- results = results.filter(n => {
- for (let k=0; k<n.openSides.length; k++) {
- if (n.subNodes[n.openSides[k]-1].code == "") return true;
- }
- return false;
- });
- }
- console.log(results.length + " results");
- let resultPlaceholder = document.getElementById("result-placeholder");
- let resultContainer = document.getElementById("results-table");
- let j=0;
- results.forEach(result => {
- let resultElement = resultPlaceholder.cloneNode(true);
- resultContainer.append(resultElement);
- resultElement.id = "result-" + j++;
- resultElement.classList.add("result-row");
- resultElement.children[0].innerHTML = result.id;
- resultElement.children[1].innerHTML = result.symbol == null ? "Blank" : result.symbol.charAt(0).toUpperCase() + result.symbol.slice(1);
- resultElement.children[2].innerHTML = result.openSides.join(", ");
- resultElement.children[3].innerHTML = result.subNodes.map(sn => sn.code == "" ? "BBBBBB" : sn.code).join(", ");
- resultElement.children[4].innerHTML = '<a href="'+result.image+'">'+result.image+"</a>";
- resultElement.style.display = "";
- });
- document.getElementById("search-button").style.display = "block";
- }
- };
- if (verifiedOnly) {
- //xmlhttp.open("GET", "https://spreadsheets.google.com/feeds/cells/1Z16lZS_Uo-Go9hyxxY3oZlFqObkGpgmThSvJUrwSBFk/7/public/full?alt=json", true);
- xmlhttp.open("GET", "https://spreadsheets.google.com/feeds/cells/1T4h8B3LF7jCNKccMAUjRDPJYetA7WJlFeit6Fon6xoA/1/public/full?alt=json", true);
- xmlhttp.send();
- }
- else if (masterOnly) {
- xmlhttp.open("GET", "https://spreadsheets.google.com/feeds/cells/1bYi_-XApwf_avyIuExGULdWa4oxzLr7upelAtRq38TA/5/public/full?alt=json", true);
- xmlhttp.send();
- }
- else {
- xmlhttp.open("GET", "https://spreadsheets.google.com/feeds/cells/1bYi_-XApwf_avyIuExGULdWa4oxzLr7upelAtRq38TA/1/public/full?alt=json", true);
- xmlhttp.send();
- }
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement