This commit is contained in:
Monty
2021-09-13 15:26:08 +02:00
parent fe1e5d3163
commit 4b780ada13
8 changed files with 57 additions and 58 deletions

View File

@@ -1,61 +1,62 @@
/* eslint-disable no-undef, no-unused-vars */
function setDefaultDropdownLocale(localeString) {
const selected = document.querySelector(".selected-locale");
let item = document.querySelector(`label[for=${localeString}`);
if (!item) { // if locale cant be find, default to en-US
localeString = "en-US";
item = document.querySelector(`label[for=${localeString}`);
}
selected.innerHTML = item.innerHTML
const selected = document.querySelector('.selected-locale');
let item = document.querySelector(`label[for=${localeString}`);
if (!item) { // if locale can't be found, default to en-US
localeString = 'en-US';
item = document.querySelector(`label[for=${localeString}`);
}
selected.innerHTML = item.innerHTML;
}
function localeDropdownHandler(selectedLocale) {
document.cookie = `preferredLocale=${selectedLocale};max-age=31536000`;
window.location.reload();
document.cookie = `preferredLocale=${selectedLocale};max-age=31536000`;
window.location.reload();
}
const dropdowns = document.querySelectorAll("*[data-dropdown]");
const dropdowns = document.querySelectorAll('*[data-dropdown]');
const dropdownOptions = document.querySelectorAll(
"*[data-dropdown] .options-container"
'*[data-dropdown] .options-container'
);
dropdowns.forEach((el) => {
const selected = el.querySelector(".selected-locale");
const optionsContainer = el.querySelector(".options-container");
const optionsList = el.querySelectorAll(".option");
const selected = el.querySelector('.selected-locale');
const optionsContainer = el.querySelector('.options-container');
const optionsList = el.querySelectorAll('.option');
// click dropdown element will open dropdown
selected.addEventListener("click", () => {
optionsContainer.classList.toggle("active");
});
// click dropdown element will open dropdown
selected.addEventListener('click', () => {
optionsContainer.classList.toggle('active');
});
// clicking on any option will close dropdown and change value
optionsList.forEach((option) => {
option.addEventListener("click", () => {
selected.innerHTML = option.querySelector("label").innerHTML;
optionsContainer.classList.remove("active");
const selectedLocale = option.querySelector("label").getAttribute("for");
localeDropdownHandler(selectedLocale);
});
});
// clicking on any option will close dropdown and change value
optionsList.forEach((option) => {
option.addEventListener('click', () => {
selected.innerHTML = option.querySelector('label').innerHTML;
optionsContainer.classList.remove('active');
const selectedLocale = option.querySelector('label').getAttribute('for');
localeDropdownHandler(selectedLocale);
});
});
});
// close all dropdowns on scroll
document.addEventListener("scroll", () => {
dropdownOptions.forEach((el) => el.classList.remove("active"));
document.addEventListener('scroll', () => {
dropdownOptions.forEach((el) => el.classList.remove('active'));
});
// click outside of dropdown will close all dropdowns
document.addEventListener("click", (e) => {
const targetElement = e.target;
document.addEventListener('click', (e) => {
const targetElement = e.target;
// check if target is from a dropdown
let found = false;
dropdowns.forEach((v) => {
if (v == targetElement || v.contains(targetElement)) found = true;
});
// check if target is from a dropdown
let found = false;
dropdowns.forEach((v) => {
if (v == targetElement || v.contains(targetElement)) found = true;
});
if (found) return;
if (found) return;
// click outside of dropdowns
dropdownOptions.forEach((el) => el.classList.remove("active"));
// click outside of dropdowns
dropdownOptions.forEach((el) => el.classList.remove('active'));
});

View File

@@ -1,8 +1,8 @@
const form = document.querySelector(".localization-form");
/* eslint-disable no-undef */
const form = document.querySelector('.localization-form');
form.addEventListener('submit', (e) => {
e.preventDefault();
e.stopPropagation();
window.location.href=`https://pretendo-locale-tester.herokuapp.com/?url=${e.target[0].value}`
e.preventDefault();
e.stopPropagation();
window.location.href=`https://pretendo-locale-tester.herokuapp.com/?url=${e.target[0].value}`;
});

View File

@@ -7,7 +7,7 @@ const { getTrelloCache } = require('../trello');
router.get('/', async (request, response) => {
const reqLocale = request.locale
const reqLocale = request.locale;
const locale = util.getLocale(reqLocale.region, reqLocale.language);
const cache = await getTrelloCache();

View File

@@ -4,7 +4,7 @@ const router = new Router();
router.get('/', async (request, response) => {
const reqLocale = request.locale
const reqLocale = request.locale;
const locale = util.getLocale(reqLocale.region, reqLocale.language);
response.render('localization', {

View File

@@ -7,18 +7,16 @@ const { getTrelloCache } = require('../trello');
router.get('/', async (request, response) => {
const reqLocale = request.locale
const reqLocale = request.locale;
const locale = util.getLocale(reqLocale.region, reqLocale.language);
const localeString = reqLocale.toString()
const cache = await getTrelloCache();
response.render('progress', {
layout: 'main',
boards,
locale,
localeString,
localeString: reqLocale.toString(),
progressLists: cache
});
});

View File

@@ -4,7 +4,7 @@ const express = require('express');
const handlebars = require('express-handlebars');
const morgan = require('morgan');
const expressLocale = require('express-locale');
const cookieParser = require('cookie-parser')
const cookieParser = require('cookie-parser');
const logger = require('./logger');
const util = require('./util');
const config = require('../config.json');
@@ -26,11 +26,11 @@ const routers = {
localization: require('./routers/localization')
};
app.use(cookieParser())
app.use(cookieParser());
// Locale express middleware setup
app.use(expressLocale({
"priority": ['cookie', 'accept-language', 'map', 'default'],
'priority': ['cookie', 'accept-language', 'map', 'default'],
cookie: {name: 'preferredLocale'},
// Map unavailable regions to available locales from the same language
@@ -59,8 +59,8 @@ app.use(expressLocale({
'ru', 'ru-RU',
'tr', 'tr-TR',
],
"default": "en-US"
}))
'default': 'en-US'
}));
@@ -109,7 +109,7 @@ app.engine('handlebars', handlebars({
}));
app.set('view engine', 'handlebars');
logger.info('Starting server')
logger.info('Starting server');
app.listen(port, () => {
logger.success(`Server listening on *:${port}`);
});

View File

@@ -1,4 +1,4 @@
const Trello =require("trello")
const Trello =require('trello');
const Redis = require('ioredis');
const JSONCache = require('redis-json');
const config = require('../config.json');

View File

@@ -20,4 +20,4 @@ function getLocale(region, language) {
module.exports = {
fullUrl,
getLocale
}
};