Skip to content

Commit

Permalink
Fixing some code, Adding an option to hide elements.
Browse files Browse the repository at this point in the history
  • Loading branch information
Nerin3 committed Jun 16, 2023
1 parent b5c7076 commit 0118a6e
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 33 deletions.
53 changes: 29 additions & 24 deletions js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ for (let choice of choices) {

let karma = 0;
const updateKarma = (number) => {
pointBar = document.getElementById("karma");
let pointBar = document.getElementById("karma");
pointBar.innerText = `Karma: ${number}`;
}
const setKarma = (number) => {
Expand All @@ -78,24 +78,31 @@ const addKarma = (number) => {
karma += number;
updateKarma(karma);
}
//Hide n Unhide
//Hide n Reveal
const hideHandler = () => {
const reveals = document.querySelectorAll('[data-reveals]');
const hides = document.querySelectorAll('[data-hides]');
for (let element of reveals){
const elements = document.querySelectorAll('[data-reveals], [data-hides]');
for (let element of elements) {
let active = false;
const ids = element.dataset.reveals.split(', ');
for (let id of ids) {
const el = document.getElementById(id);
const category = el.parentElement.parentElement.parentElement.parentElement;
if (el.classList.contains('active-choice') && (!category.classList.contains('d-none') || !element.classList.contains('category'))){
active = true;
let hidden = false;
const revealID = element.dataset.reveals ? element.dataset.reveals.split(', ') : [];
const hideID = element.dataset.hides ? element.dataset.hides.split(', ') : [];
const combinedID = new Set([...revealID, ...hideID]);
for (let id of combinedID) {
const controller = document.getElementById(id);
const category = controller.classList.contains('choice') ? controller.parentElement.parentElement.parentElement.parentElement : undefined;
const hides = hideID.includes(controller.id);
const reveals = revealID.includes(controller.id);
const isActive = controller.classList.contains('active-choice');
const isHidden = (!category) ? category.classList.contains('d-none') : true;
active = (reveals && isActive) || !isHidden || active
hidden = (hides && isActive)
if (hidden || (active && hideID === [])) {
break;
}
}
if (active && element.classList.contains('d-none')){
if (active && element.classList.contains('d-none') && !hidden){
element.classList.remove('d-none');
} else if (!active && !element.classList.contains('d-none')){
} else if ((!active && !element.classList.contains('d-none')) || hidden){
element.classList.add('d-none');
}
}
Expand Down Expand Up @@ -137,7 +144,7 @@ const requirementChecker = (element) => {
const requires = element.dataset.requires ? element.dataset.requires.split(', ') : undefined;
if (!requires) return true;
let last = requires[requires.length-1]
if (last == 'and' || last == 'xor' || last == 'or'){
if (last === 'and' || last === 'xor' || last === 'or'){
last = requires.pop();
} else {
last = 'or';
Expand All @@ -148,24 +155,22 @@ const requirementChecker = (element) => {
case 'and':
if (!document.getElementById(require).classList.contains("active-choice"))
return false;
break;
case 'xor':
if (document.getElementById(require).classList.contains("active-choice"))
active++;
if (active > 1)
return false;
break;
case 'or':
if (document.getElementById(require).classList.contains("active-choice"))
return true;
break;
default:
console.log(last);
break;
}
}
if (last == 'or' || (last == 'xor' && active == 0)) {
return false;
} else {
return true;
}
return !(last === 'or' || (last === 'xor' && active === 0));
}
const requireDeactivator = (disabledElement) => {
if (!disabledElement) return false;
Expand All @@ -180,7 +185,7 @@ const requireDeactivator = (disabledElement) => {
}
}
//false when there are conflicts and requirements are not met, true when there aren't any conflicts and requirements are met
const conreq = (element) => {
const conReq = (element) => {
return (!conflictChecker(element) && requirementChecker(element));
}

Expand All @@ -193,15 +198,15 @@ const setChoice = (element) => {
let stop = false;
let value = 0;
const limit = container.dataset.limit ? parseInt(container.dataset.limit) : 1;
if (limit != 0)
if (limit !== 0)
for (let sibling of siblings) {
if (sibling.firstElementChild.classList.contains("active-choice")) count++;
if (count == limit) {
if (count === limit) {
stop = true;
break;
}
}
if (!conreq(element)) {
if (!conReq(element)) {
playSE('audio/error.ogg');
return;
}
Expand Down
18 changes: 9 additions & 9 deletions js/scramble.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,21 +99,21 @@ class Intro extends Scramble {
next() {
playSE('audio/click1.ogg');
super.next();
if (this.counter == 1) document.getElementById("previous").removeAttribute("disabled");
if (this.counter + 1 == this.phrases.length) {
if (this.counter === 1) document.getElementById("previous").removeAttribute("disabled");
if (this.counter + 1 === this.phrases.length) {
document.getElementById("next").setAttribute("disabled", "");
document.getElementById("accept").classList.remove("d-none");
}

}
previous() {
playSE('audio/click1.ogg');
if (this.counter == this.phrases.length - 1) {
if (this.counter === this.phrases.length - 1) {
document.getElementById("next").removeAttribute("disabled");
document.getElementById("accept").classList.add("d-none");
}
super.previous();
if (this.counter == 0) document.getElementById("previous").setAttribute("disabled", "");
if (this.counter === 0) document.getElementById("previous").setAttribute("disabled", "");

}
accept() {
Expand Down Expand Up @@ -179,13 +179,13 @@ class World extends Scramble {
let i = 0;
serialNumber.push("1." + Math.floor(Math.random() * 1000000) + "e+" + Math.floor(Math.random() * 10000));
i++;
return serialNumber;
return serialNumber.toString();
}

// Automatically update text based on the given interval
auto(interval = 800) {
this.setText('').then(() => {
if (this.counter == this.phrases.length - 1) {
if (this.counter === this.phrases.length - 1) {
this.worldLine = Math.floor(Math.random() * (this.worldLines.length - 1));
this.serialNumber = this.randomSerial();
this.phrases = this.worldLines[this.worldLine].map((str) => str.replaceAll('${serialNumber}', this.serialNumber).replaceAll('${altNumber}', this.randomSerial()));
Expand All @@ -197,7 +197,7 @@ class World extends Scramble {
setTimeout(() => {
for (let i = this.old.length - 1; i >= 0; i--) {
const old = this.old[i];
old.innerText = i == 0 ? this.el.innerText : this.old[i - 1].innerText;
old.innerText = i === 0 ? this.el.innerText : this.old[i - 1].innerText;
}
this.auto(interval);
}, interval);
Expand All @@ -209,7 +209,7 @@ const consoleOutputFromFile = async (url) => {
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
return;
}
const fileContent = await response.text();
const lines = fileContent.replaceAll('\r', '').split('\n');
Expand All @@ -218,7 +218,7 @@ const consoleOutputFromFile = async (url) => {
];
let group = 0;
for (const line of lines) {
if (line == '') {
if (line === '') {
group++;
formated.push([]);
} else formated[group].push(line);
Expand Down

0 comments on commit 0118a6e

Please sign in to comment.