Skip to content

Instantly share code, notes, and snippets.

@alalm3i
Created May 10, 2025 09:59
Show Gist options
  • Save alalm3i/d35cc505f0995eb61ec02e141a3818fa to your computer and use it in GitHub Desktop.
Save alalm3i/d35cc505f0995eb61ec02e141a3818fa to your computer and use it in GitHub Desktop.
Guess the code function
const $app = document.querySelector('.app');
const $modal = document.querySelector('.modal');
const $currency = $app.querySelector('.currency');
const $currencyContainer = $currency.querySelector('.currency-container');
const $currencyValue = $currency.querySelector('.value');
const $blockSetTime = $app.querySelector('.set-time');
// const $timeInput = $blockSetTime.querySelector('.time_input');
const $timeValue = $blockSetTime.querySelector('.time_val');
const $timeItems = $blockSetTime.querySelector('.set-time-items');
const $blockForecast = $app.querySelector('.forecast');
const $blockForecastValue = $blockForecast.querySelector('.value');
const $btnAction = $app.querySelector('.btn.action');
const $btnActionText = $btnAction.querySelector('.text');
const today = new Date();
const dayOfWeek = today.getDay();
const isWeekend = dayOfWeek === 6 || dayOfWeek === 0;
let currentTime = getCurrentTime();
const currency = ["AUD/CAD", "GBP/JPY", "CHF/JPY", "AUD/USD", "EUR/CAD", "USD/JPY", "EUR/USD", "CRYPTO IDX"];
let sessionCode = localStorage.getItem('sessionCode') ? localStorage.getItem('sessionCode') : '';
const sessionCodesArr = [
"RST-ijkl-67890",
"BCD-mnop-23456",
"QWE-rstv-98765"
];
if (isWeekend) {
if (!$currencyValue.textContent.includes("CRYPTO IDX")) {
$currencyValue.textContent = currency[0] + " (OTC)";
}
} else {
$currencyValue.textContent = currency[0];
}
currency.map(item => {
if (isWeekend) {
if (!item.includes("CRYPTO IDX")) {
item = item + " (OTC)";
}
}
let div = document.createElement('div');
div.classList.add('item');
div.textContent = item;
$currencyContainer.appendChild(div);
})
setTime();
window.addEventListener('click', (e) => {
if (!$currencyContainer.contains(e.target) && !$currency.contains(e.target)) {
$currencyContainer.classList.remove('windowShow');
}
if (!$timeItems.contains(e.target) && !$blockSetTime.contains(e.target)) {
$timeItems.classList.remove('windowShow');
}
})
$currency.addEventListener('click', (e) => {
$currencyContainer.classList.add('windowShow');
})
$currencyContainer.querySelectorAll('.item').forEach(item => {
item.addEventListener('click', (e) => {
e.stopPropagation();
let val = item.textContent;
$currencyValue.textContent = val;
$currencyContainer.classList.remove('windowShow');
})
})
$blockSetTime.addEventListener('click', (e) => {
$timeItems.classList.add('windowShow');
})
timeItemsActivate();
// $blockSetTime.addEventListener('click', () => {
// $timeInput.focus();
// })
// $timeInput.value = getCurrentTime();
// $timeInput.addEventListener("input", function () {
// const sanitizedInput = $timeInput.value.replace(/[^0-9]/g, "");
// let value = sanitizedInput;
//
// if (sanitizedInput.length >= 3) {
// value = value.slice(0, 2) + ":" + value.slice(2);
// }
//
// if (value.length >= 5) {
// value = value.slice(0, 5);
// }
//
// if ((value[0] == 2 && value[1] > 4) || (value[0] > 2) || (value[1] > 9)) {
// value = '2';
// }
//
// if (value.slice(3)[0] > 5) {
// value = value.slice(0, 2) + ":";
// }
//
// $timeInput.value = value;
// });
//
// $timeInput.addEventListener("blur", function () {
// if ($timeInput.value.length == 0) {
// $timeInput.value = getCurrentTime();
// }
// });
$btnAction.addEventListener('click', () => {
let status = $btnAction.dataset.initStatus;
if (status == 'loading') return;
$btnAction.dataset.initStatus = 'loading';
$blockForecastValue.innerHTML = '<div class="spinner"></div>'
$blockForecast.classList.remove('down');
$blockForecast.classList.remove('up');
// isTimeBehindScheduled();
let forecastValue = getRandomForecast();
$btnAction.classList.add('loading');
$btnActionText.textContent = 'loading';
setTimeout(() => {
$blockForecastValue.innerHTML = forecastValue;
if (forecastValue == 'DOWN') {
$blockForecast.classList.add('down');
} else if (forecastValue == 'UP') {
$blockForecast.classList.add('up');
}
setTimeOut(1);
}, 1000)
})
function getCurrentTime() {
const now = new Date();
const hours = now.getHours().toString().padStart(2, "0");
const minutes = now.getMinutes().toString().padStart(2, "0");
const timeString = hours + ":" + minutes;
return timeString;
}
// function isTimeBehindScheduled() {
// const currentTime = getCurrentTime();
// if (currentTime > $timeInput.value) {
// $timeInput.value = currentTime;
// }
// }
function isTimeBehindScheduled() {
const cTime = getCurrentTime();
if (cTime > $timeValue.textContent) {
$timeValue.textContent = cTime;
currentTime = getCurrentTime();
setCurrentTimeItems();
timeItemsActivate();
}
}
function getRandomForecast() {
const randomValue = Math.random();
if (randomValue < 0.5) {
return "DOWN";
} else {
return "UP";
}
}
function setCurrentTimeItems() {
$timeItems.innerHTML = '';
$timeValue.textContent = currentTime;
let val = currentTime;
for (let i = 0; i < 15; i++) {
let firstT = +val.slice(0, 2);
let lastM = +val.slice(3,5);
if (i > 0) {
lastM = lastM + 1
if (lastM == 60) {
firstT = firstT + 1
if (firstT < 10) {
val = `0${firstT}:00`
} else {
val = `${firstT}:00`
}
} else {
if (firstT < 10) {
if (lastM < 10) {
val = `0${firstT}:0${lastM}`
} else {
val = `0${firstT}:${lastM}`;
}
} else {
if (lastM < 10) {
val = `${firstT}:0${lastM}`
} else {
val = `${firstT}:${lastM}`;
}
}
}
}
let div = document.createElement('div');
div.classList.add('item');
div.textContent = val;
$timeItems.appendChild(div);
}
}
function setTime() {
$timeItems.innerHTML = '';
$timeValue.textContent = '1 Min';
for (let i = 1; i <= 1; i++) {
let div = document.createElement('div');
div.classList.add('item');
div.textContent = `${i} Min`;
$timeItems.appendChild(div);
}
}
function timeItemsActivate() {
$timeItems.querySelectorAll('.item').forEach(item => {
item.addEventListener('click', (e) => {
e.stopPropagation();
let val = item.textContent;
$timeValue.textContent = val;
$timeItems.classList.remove('windowShow');
})
})
}
function setTimeOut($countMinutes = 1) {
let startTime = 0;
let endTime = $countMinutes * 60;
let time = endTime;
let interval = '';
$btnActionText.textContent = timeView(time);
interval = setInterval(() => {
startTime += 1;
if (startTime == endTime) {
$btnAction.classList.remove('loading');
$btnActionText.textContent = 'Next signal';
$btnAction.dataset.initStatus = 'wait';
clearInterval(interval);
} else {
time -= 1;
$btnActionText.textContent = timeView(time);
}
}, 1000)
}
function timeView(countSecond) {
let minutes = Math.floor(countSecond / 60);
if (minutes > 0) {
console.log(1)
return `${minutes}:${countSecond - (minutes * 60)}`;
} else {
console.log(2)
return `0:${countSecond}`;
}
}
$modal.querySelector('.unlock').addEventListener('click', () => {
let code = $modal.querySelector('.modal-input input').value;
setCode(code)
});
function setCode(code) {
if (sessionCodesArr.includes(code)) {
localStorage.setItem('sessionCode', code);
$modal.style.display = 'none';
document.querySelector('.display').style.display = 'block';
} else {
document.querySelector('.modal-input .errtxt').classList.add('active');
}
}
if (sessionCode && sessionCodesArr.includes(sessionCode)) {
$modal.style.display = 'none';
document.querySelector('.display').style.display = 'block';
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment