Cleaned the code
This commit is contained in:
parent
95daa3f1e1
commit
2dd3a0f0b7
9 changed files with 699 additions and 419 deletions
305
JS/diacritics.js
Normal file
305
JS/diacritics.js
Normal file
|
@ -0,0 +1,305 @@
|
|||
const replacementList = [
|
||||
{
|
||||
base: ' ',
|
||||
chars: "\u00A0",
|
||||
}, {
|
||||
base: '0',
|
||||
chars: "\u07C0",
|
||||
}, {
|
||||
base: 'A',
|
||||
chars: "\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F",
|
||||
}, {
|
||||
base: 'AA',
|
||||
chars: "\uA732",
|
||||
}, {
|
||||
base: 'AE',
|
||||
chars: "\u00C6\u01FC\u01E2",
|
||||
}, {
|
||||
base: 'AO',
|
||||
chars: "\uA734",
|
||||
}, {
|
||||
base: 'AU',
|
||||
chars: "\uA736",
|
||||
}, {
|
||||
base: 'AV',
|
||||
chars: "\uA738\uA73A",
|
||||
}, {
|
||||
base: 'AY',
|
||||
chars: "\uA73C",
|
||||
}, {
|
||||
base: 'B',
|
||||
chars: "\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0181",
|
||||
}, {
|
||||
base: 'C',
|
||||
chars: "\u24b8\uff23\uA73E\u1E08\u0106\u0043\u0108\u010A\u010C\u00C7\u0187\u023B",
|
||||
}, {
|
||||
base: 'D',
|
||||
chars: "\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018A\u0189\u1D05\uA779",
|
||||
}, {
|
||||
base: 'Dh',
|
||||
chars: "\u00D0",
|
||||
}, {
|
||||
base: 'DZ',
|
||||
chars: "\u01F1\u01C4",
|
||||
}, {
|
||||
base: 'Dz',
|
||||
chars: "\u01F2\u01C5",
|
||||
}, {
|
||||
base: 'E',
|
||||
chars: "\u025B\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E\u1D07",
|
||||
}, {
|
||||
base: 'F',
|
||||
chars: "\uA77C\u24BB\uFF26\u1E1E\u0191\uA77B",
|
||||
}, {
|
||||
base: 'G',
|
||||
chars: "\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E\u0262",
|
||||
}, {
|
||||
base: 'H',
|
||||
chars: "\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D",
|
||||
}, {
|
||||
base: 'I',
|
||||
chars: "\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197",
|
||||
}, {
|
||||
base: 'J',
|
||||
chars: "\u24BF\uFF2A\u0134\u0248\u0237",
|
||||
}, {
|
||||
base: 'K',
|
||||
chars: "\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2",
|
||||
}, {
|
||||
base: 'L',
|
||||
chars: "\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780",
|
||||
}, {
|
||||
base: 'LJ',
|
||||
chars: "\u01C7",
|
||||
}, {
|
||||
base: 'Lj',
|
||||
chars: "\u01C8",
|
||||
}, {
|
||||
base: 'M',
|
||||
chars: "\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C\u03FB",
|
||||
}, {
|
||||
base: 'N',
|
||||
chars: "\uA7A4\u0220\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u019D\uA790\u1D0E",
|
||||
}, {
|
||||
base: 'NJ',
|
||||
chars: "\u01CA",
|
||||
}, {
|
||||
base: 'Nj',
|
||||
chars: "\u01CB",
|
||||
}, {
|
||||
base: 'O',
|
||||
chars: "\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C",
|
||||
}, {
|
||||
base: 'OE',
|
||||
chars: "\u0152",
|
||||
}, {
|
||||
base: 'OI',
|
||||
chars: "\u01A2",
|
||||
}, {
|
||||
base: 'OO',
|
||||
chars: "\uA74E",
|
||||
}, {
|
||||
base: 'OU',
|
||||
chars: "\u0222",
|
||||
}, {
|
||||
base: 'P',
|
||||
chars: "\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754",
|
||||
}, {
|
||||
base: 'Q',
|
||||
chars: "\u24C6\uFF31\uA756\uA758\u024A",
|
||||
}, {
|
||||
base: 'R',
|
||||
chars: "\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782",
|
||||
}, {
|
||||
base: 'S',
|
||||
chars: "\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784",
|
||||
}, {
|
||||
base: 'T',
|
||||
chars: "\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786",
|
||||
}, {
|
||||
base: 'Th',
|
||||
chars: "\u00DE",
|
||||
}, {
|
||||
base: 'TZ',
|
||||
chars: "\uA728",
|
||||
}, {
|
||||
base: 'U',
|
||||
chars: "\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244",
|
||||
}, {
|
||||
base: 'V',
|
||||
chars: "\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245",
|
||||
}, {
|
||||
base: 'VY',
|
||||
chars: "\uA760",
|
||||
}, {
|
||||
base: 'W',
|
||||
chars: "\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72",
|
||||
}, {
|
||||
base: 'X',
|
||||
chars: "\u24CD\uFF38\u1E8A\u1E8C",
|
||||
}, {
|
||||
base: 'Y',
|
||||
chars: "\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE",
|
||||
}, {
|
||||
base: 'Z',
|
||||
chars: "\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762",
|
||||
}, {
|
||||
base: 'a',
|
||||
chars: "\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0251",
|
||||
}, {
|
||||
base: 'aa',
|
||||
chars: "\uA733",
|
||||
}, {
|
||||
base: 'ae',
|
||||
chars: "\u00E6\u01FD\u01E3",
|
||||
}, {
|
||||
base: 'ao',
|
||||
chars: "\uA735",
|
||||
}, {
|
||||
base: 'au',
|
||||
chars: "\uA737",
|
||||
}, {
|
||||
base: 'av',
|
||||
chars: "\uA739\uA73B",
|
||||
}, {
|
||||
base: 'ay',
|
||||
chars: "\uA73D",
|
||||
}, {
|
||||
base: 'b',
|
||||
chars: "\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253\u0182",
|
||||
}, {
|
||||
base: 'c',
|
||||
chars: "\uFF43\u24D2\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184",
|
||||
}, {
|
||||
base: 'd',
|
||||
chars: "\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\u018B\u13E7\u0501\uA7AA",
|
||||
}, {
|
||||
base: 'dh',
|
||||
chars: "\u00F0",
|
||||
}, {
|
||||
base: 'dz',
|
||||
chars: "\u01F3\u01C6",
|
||||
}, {
|
||||
base: 'e',
|
||||
chars: "\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u01DD",
|
||||
}, {
|
||||
base: 'f',
|
||||
chars: "\u24D5\uFF46\u1E1F\u0192",
|
||||
}, {
|
||||
base: 'ff',
|
||||
chars: "\uFB00",
|
||||
}, {
|
||||
base: 'fi',
|
||||
chars: "\uFB01",
|
||||
}, {
|
||||
base: 'fl',
|
||||
chars: "\uFB02",
|
||||
}, {
|
||||
base: 'ffi',
|
||||
chars: "\uFB03",
|
||||
}, {
|
||||
base: 'ffl',
|
||||
chars: "\uFB04",
|
||||
}, {
|
||||
base: 'g',
|
||||
chars: "\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\uA77F\u1D79",
|
||||
}, {
|
||||
base: 'h',
|
||||
chars: "\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265",
|
||||
}, {
|
||||
base: 'hv',
|
||||
chars: "\u0195",
|
||||
}, {
|
||||
base: 'i',
|
||||
chars: "\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131",
|
||||
}, {
|
||||
base: 'j',
|
||||
chars: "\u24D9\uFF4A\u0135\u01F0\u0249",
|
||||
}, {
|
||||
base: 'k',
|
||||
chars: "\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3",
|
||||
}, {
|
||||
base: 'l',
|
||||
chars: "\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747\u026D",
|
||||
}, {
|
||||
base: 'lj',
|
||||
chars: "\u01C9",
|
||||
}, {
|
||||
base: 'm',
|
||||
chars: "\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F",
|
||||
}, {
|
||||
base: 'n',
|
||||
chars: "\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5\u043B\u0509",
|
||||
}, {
|
||||
base: 'nj',
|
||||
chars: "\u01CC",
|
||||
}, {
|
||||
base: 'o',
|
||||
chars: "\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\uA74B\uA74D\u0275\u0254\u1D11",
|
||||
}, {
|
||||
base: 'oe',
|
||||
chars: "\u0153",
|
||||
}, {
|
||||
base: 'oi',
|
||||
chars: "\u01A3",
|
||||
}, {
|
||||
base: 'oo',
|
||||
chars: "\uA74F",
|
||||
}, {
|
||||
base: 'ou',
|
||||
chars: "\u0223",
|
||||
}, {
|
||||
base: 'p',
|
||||
chars: "\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755\u03C1",
|
||||
}, {
|
||||
base: 'q',
|
||||
chars: "\u24E0\uFF51\u024B\uA757\uA759",
|
||||
}, {
|
||||
base: 'r',
|
||||
chars: "\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783",
|
||||
}, {
|
||||
base: 's',
|
||||
chars: "\u24E2\uFF53\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B\u0282",
|
||||
}, {
|
||||
base: 'ss',
|
||||
chars: "\xDF",
|
||||
}, {
|
||||
base: 't',
|
||||
chars: "\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787",
|
||||
}, {
|
||||
base: 'th',
|
||||
chars: "\u00FE",
|
||||
}, {
|
||||
base: 'tz',
|
||||
chars: "\uA729",
|
||||
}, {
|
||||
base: 'u',
|
||||
chars: "\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289",
|
||||
}, {
|
||||
base: 'v',
|
||||
chars: "\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C",
|
||||
}, {
|
||||
base: 'vy',
|
||||
chars: "\uA761",
|
||||
}, {
|
||||
base: 'w',
|
||||
chars: "\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73",
|
||||
}, {
|
||||
base: 'x',
|
||||
chars: "\u24E7\uFF58\u1E8B\u1E8D",
|
||||
}, {
|
||||
base: 'y',
|
||||
chars: "\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF",
|
||||
}, {
|
||||
base: 'z',
|
||||
chars: "\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763",
|
||||
}
|
||||
]
|
||||
|
||||
let diacriticsMap = {}
|
||||
for (let i = 0; i < replacementList.length; i++) {
|
||||
let chars = replacementList[i].chars
|
||||
for (let j = 0; j < chars.length; j++)
|
||||
diacriticsMap[chars[j]] = replacementList[i].base
|
||||
}
|
||||
function removeDiacritics(str) { return str.replace(/[^\u0000-\u007e]/g, function(c) { return diacriticsMap[c] || c }) }
|
694
JS/main.js
694
JS/main.js
|
@ -1,129 +1,17 @@
|
|||
window.onload = async () => {
|
||||
await getuserLocationInformationValue()
|
||||
removeActiveSidebarCategory()
|
||||
if (window.location.pathname.includes('headlines')) headlines()
|
||||
else if (window.location.pathname.includes('for-you')) forYou()
|
||||
else if (window.location.pathname.includes('following')) following()
|
||||
else if (window.location.pathname.includes('library')) library()
|
||||
else if (window.location.pathname.includes('covid')) category('fa-shield-cross')
|
||||
else if (window.location.pathname.includes('world')) category('fa-globe-europe')
|
||||
else if (window.location.pathname.includes('business')) category('fa-building')
|
||||
else if (window.location.pathname.includes('technology')) category('fa-microchip')
|
||||
else if (window.location.pathname.includes('entertainment')) category('fa-camera-movie')
|
||||
else if (window.location.pathname.includes('sports')) category('fa-tennis-ball')
|
||||
else if (window.location.pathname.includes('health')) category('fa-heartbeat')
|
||||
else if (window.location.pathname.includes('setings')) setings()
|
||||
else if (window.location.pathname.includes('about')) about()
|
||||
else if (window.location.pathname.includes('help')) help()
|
||||
else if (window.location.pathname.includes('search')) mainSearch()
|
||||
|
||||
// changeBackgroundColor()
|
||||
let selectedCountryAcronym = getCountryAcronym(selectedCountry.innerHTML)
|
||||
|
||||
if(!window.location.search.match(regularExpressions.url.country)) historyPushState(window.location.origin + window.location.pathname, '', `?cou=${selectedCountryAcronym}&`,`bg=${backgroundColor}`)
|
||||
else {
|
||||
urlCountryAcronym = window.location.search.match(regularExpressions.url.country)[0].slice(5, 7)
|
||||
if(getAcronymCountry(urlCountryAcronym) === undefined) return openLinks(filePath.headlines)
|
||||
urlCountry = getAcronymCountry(urlCountryAcronym)
|
||||
updateCountrySelect(urlCountry)
|
||||
}
|
||||
|
||||
if(!window.location.search.match(regularExpressions.url.query)) return
|
||||
|
||||
let query = location.search.match(regularExpressions.url.query)[0]
|
||||
query = removeCharactersInString(query, 3, query.length - 1)
|
||||
/* Search news */
|
||||
|
||||
}
|
||||
|
||||
window.onclick = (e) => {
|
||||
|
||||
if(logInOptions.classList.contains('active')) clickInOutCheck(logInOptions, e.target)
|
||||
else if(!suggestMainInput.classList.contains('disable')) clickInOutCheck(suggestMainInput, e.target)
|
||||
else if(!extOptProfile.classList.contains('disable')) clickInOutCheck(extOptProfile, e.target)
|
||||
else if(selectCountryDiv.classList.contains('active')) clickInOutCheck(selectCountryDiv, e.target)
|
||||
else if(!extraSearchOptions.classList.contains('disable')) clickInOutCheck(extraSearchOptions, e.target)
|
||||
}
|
||||
|
||||
async function getPrivateInfo(word) {
|
||||
let formData = new FormData
|
||||
formData.append(word, '')
|
||||
|
||||
const response = await fetch('privateInfo.php', {
|
||||
method: "POST",
|
||||
body: formData
|
||||
})
|
||||
const data = await response.text()
|
||||
return data
|
||||
}
|
||||
|
||||
function openLinks(string) { window.location.replace(websiteURL + string) }
|
||||
|
||||
function historyPushState(webiste, string, country, background) { history.pushState({}, null, webiste + string + country + background) }
|
||||
|
||||
function changeBackgroundColor() { document.body.className = window.location.search.match(regularExpressions.url.backgroundColor)[0].slice(4,10) }
|
||||
|
||||
let userLocationInformationValue
|
||||
async function getuserLocationInformationValue() { userLocationInformationValue = await getUsersCountry() }
|
||||
|
||||
async function getUsersCountry() {
|
||||
const key = await getPrivateInfo('user')
|
||||
const response = await fetch(`https://ipinfo.io?token=${key}`)
|
||||
const data = await response.json()
|
||||
const userCountryAcronym = data.country.toLowerCase()
|
||||
const userCountry = getAcronymCountry(userCountryAcronym)
|
||||
const userCity = data.city
|
||||
const userRegion = data.region
|
||||
const userLocation = data.loc
|
||||
const userTimeZone = data.timezone
|
||||
return [userCountry, userCountryAcronym, userCity, userRegion, userLocation, userTimeZone]
|
||||
}
|
||||
|
||||
let weatherArrayToday
|
||||
let weatherArrayTommorow
|
||||
let weatherArray2Days
|
||||
async function getWeather() {
|
||||
const weather = {
|
||||
async getweather() {
|
||||
city = changeDiacritics(userLocationInformationValue[3])
|
||||
const key = getPrivateInfo('weather')
|
||||
const key = php.info('weather')
|
||||
const response = await fetch(`https://cors-anywhere.herokuapp.com/https://api.weatherapi.com/v1/forecast.json?key=${key}&q=${city}&days=7`)
|
||||
const data = await response.json()
|
||||
weatherArrayToday = data.forecast.forecastday[0]
|
||||
weatherArrayTommorow = data.forecast.forecastday[1]
|
||||
weatherArray2Days = data.forecast.forecastday[2]
|
||||
}
|
||||
function changeDiacritics(string) {
|
||||
const regexDiacritics = /č|ć|đ|š|ž/g
|
||||
string = string.split('')
|
||||
for(let i = 0; i < string.length; i++)
|
||||
if(regexDiacritics.test(string[i]))
|
||||
string[i] = diacriticsReplacement[string[i]]
|
||||
return string
|
||||
}
|
||||
|
||||
function getLanguageAcronym(target) {
|
||||
for(let i = 0; i < language.length; i++)
|
||||
if(language[i] === target)
|
||||
return languageAcronyms[i]
|
||||
}
|
||||
|
||||
function getCountryAcronym(target) {
|
||||
for(let i = 0; i < countries.length; i++)
|
||||
if(countries[i] === target)
|
||||
return countryAcronyms[i]
|
||||
}
|
||||
|
||||
function getAcronymCountry(acronym) {
|
||||
for(let i = 0; i < countries.length; i++)
|
||||
if(countryAcronyms[i] === acronym)
|
||||
return countries[i]
|
||||
}
|
||||
function getAcronymLanguage(acronym) {
|
||||
for(let i = 0; i < language.length; i++)
|
||||
if(languageAcronyms[i] === acronym)
|
||||
return language[i]
|
||||
}
|
||||
|
||||
function updateWeather() {
|
||||
},
|
||||
updateWeather() {
|
||||
let header = document.querySelectorAll('.weather-main-header')[0]
|
||||
header.children[0].src = weatherArrayToday.day.condition.icon
|
||||
header.children[1].innerHTML = userLocationInformationValue[3]
|
||||
|
@ -159,8 +47,272 @@ function updateWeather() {
|
|||
mainWeatherContent.children[0].children[2].lastElementChild.innerHTML = `${weatherArrayToday.day.daily_chance_of_rain}%`
|
||||
mainWeatherContent.children[1].children[2].lastElementChild.innerHTML = `${weatherArrayTommorow.day.daily_chance_of_rain}%`
|
||||
mainWeatherContent.children[2].children[2].lastElementChild.innerHTML = `${weatherArray2Days.day.daily_chance_of_rain}%`
|
||||
}
|
||||
}
|
||||
|
||||
let userLocationInformationValue
|
||||
const user = {
|
||||
location : async() => { userLocationInformationValue = await user.country() },
|
||||
country : async() => {
|
||||
const key = await php.info('user')
|
||||
const response = await fetch(`https://ipinfo.io?token=${key}`)
|
||||
const data = await response.json()
|
||||
const userCountryAcronym = data.country.toLowerCase()
|
||||
const userCountry = getAcronymCountry(userCountryAcronym)
|
||||
const userCity = data.city
|
||||
const userRegion = data.region
|
||||
const userLocation = data.loc
|
||||
const userTimeZone = data.timezone
|
||||
return [userCountry, userCountryAcronym, userCity, userRegion, userLocation, userTimeZone]
|
||||
}
|
||||
}
|
||||
|
||||
const searchBox = {
|
||||
update : async (query) => {
|
||||
let i = 0
|
||||
let images = await searchBox.fetch(query)
|
||||
if(images.hits.length === 0) {
|
||||
images = await searchBox.fetch('nature')
|
||||
i = Math.round(Math.random() * images.hits.length)
|
||||
}
|
||||
|
||||
let searchAside = document.querySelector('article.search.aside')
|
||||
searchAside.firstElementChild.firstElementChild.innerHTML = capitalizeString(mainSearchInput.value)
|
||||
searchAside.firstElementChild.querySelector('figure img').src = images.hits[i].webformatURL
|
||||
searchAside.firstElementChild.querySelector('figure img').classList.remove('disable')
|
||||
},
|
||||
fetch : async(query) => {
|
||||
const key = await php.info('images')
|
||||
const response = await fetch(`https://pixabay.com/api/?key=${key}&q=${query}&image_type=photo`)
|
||||
const image = await response.json()
|
||||
return image
|
||||
}
|
||||
}
|
||||
|
||||
let mouseSuggestHover = false
|
||||
let moreSuggestWordsArray = []
|
||||
const suggest = {
|
||||
fetch : async (input) => {
|
||||
const res = await fetch(`https://api.datamuse.com/sug?s=${input}`)
|
||||
return words = await res.json()
|
||||
},
|
||||
suggest : async() => {
|
||||
let fetchArray = []
|
||||
let suggestWordsArray = []
|
||||
let input = mainSearchInput.value.split(' ')
|
||||
let n = 0
|
||||
|
||||
while(suggestWordsArray.length < 16) {
|
||||
fetchArray = await suggest.fetch(input[n])
|
||||
|
||||
for(let i = 0; i < fetchArray.length; i++)
|
||||
if(suggestWordsArray.indexOf(fetchArray[i].word) === -1 && fetchArray[i].word !== mainSearchInput.value) suggestWordsArray.push(fetchArray[i].word)
|
||||
input[n] = removeCharactersInString(input[n], 0, -1)
|
||||
if(input.length === 0) break
|
||||
}
|
||||
suggest.generate(suggestWordsArray)
|
||||
removeDisableSideElements()
|
||||
|
||||
},
|
||||
generate : (array) => {
|
||||
let section = document.querySelector('article.suggested-words.aside section')
|
||||
section.innerHTML = ''
|
||||
|
||||
for(let i = 0; i < array.length; i++) {
|
||||
let div = document.createElement('div')
|
||||
div.innerHTML = array[i]
|
||||
div.classList.add('search-box')
|
||||
div.onclick = () => suggest.selectSuggestedSearchOption(div)
|
||||
section.appendChild(div)
|
||||
}
|
||||
},
|
||||
manageSuggestWords : async () => {
|
||||
let suggestWordsArray = await suggest.fetch(mainSearchInput.value)
|
||||
if(suggestWordsArray.length === 0) return hideSuggestWords()
|
||||
|
||||
if(suggestWordsArray.length > 6) suggestWordsArray = removeCharactersInString(suggestWordsArray, 4, suggestWordsArray.length)
|
||||
|
||||
suggest.suggestBox(suggestWordsArray)
|
||||
|
||||
for(let i = 0; i < suggestMainInput.getElementsByTagName('div').length; i++) {
|
||||
suggestMainInput.getElementsByTagName('div')[i].onmouseover = () => {
|
||||
place = i
|
||||
if(suggestMainInput.querySelectorAll('div.active').length === 1) suggestMainInput.querySelectorAll('div.active')[0].classList.remove('active','key')
|
||||
suggestMainInput.getElementsByTagName('div')[i].classList.add('active')
|
||||
}
|
||||
suggestMainInput.getElementsByTagName('div')[i].onmouseleave = () => { suggestMainInput.getElementsByTagName('div')[i].classList.remove('active','key') }
|
||||
}
|
||||
},
|
||||
suggestBox : (words) => {
|
||||
let wordBoxes = words.map(word => `<div class="grid pointer" onclick="suggest.selectSuggestedSearchOption(this.firstElementChild)">
|
||||
<span>${word.word}</span>
|
||||
</div>`).join('')
|
||||
const html = `<hr class="absolute">${wordBoxes}`
|
||||
suggestMainInput.innerHTML = html
|
||||
},
|
||||
mouseSuggestHoverChange : (parameter) => {
|
||||
mouseSuggestHover = parameter
|
||||
},
|
||||
removeAllSuggestWordBoxes : () => {
|
||||
let numberOfBoxes = suggestMainInput.querySelectorAll('div').length
|
||||
for(let i = 0; i < numberOfBoxes; i++)
|
||||
suggestMainInput.querySelector('div').remove()
|
||||
},
|
||||
selectSuggestedSearchOption : (element) => {
|
||||
removeActiveSidebarCategory()
|
||||
hideSuggestWords()
|
||||
let elementInnerHTML = addCharacterBetweenSpaceInString(element.innerHTML, ' ', '+')
|
||||
let selectedCountryAcronym = getCountryAcronym(selectedCountry.innerHTML)
|
||||
historyPushState(location.origin + location.pathname, `?q=${elementInnerHTML}&`, `cou=${selectedCountryAcronym}&`,`bg=${backgroundColor}`)
|
||||
mainSearch()
|
||||
}
|
||||
}
|
||||
|
||||
const responsiveVersion = {
|
||||
mobileVersionNavigationBar() {
|
||||
mainSearchIcon.classList.add('disable')
|
||||
mainSearchBackLeftIcon.classList.remove('disable')
|
||||
navigationBarLeft.classList.add('disable')
|
||||
navigationBarRight.classList.add('disable')
|
||||
navigationBarMiddle.style.gridColumn = '1/4'
|
||||
mainSearchFigure.style.gridColumn = '1/2'
|
||||
mainSearchBackLeftTooltiptext.classList.remove('disable')
|
||||
mainSearchInput.style.display = 'grid'
|
||||
extOptIcon.style.display = 'flex'
|
||||
mainSearchInput.focus()
|
||||
sideBarContent.style.left = '-100%'
|
||||
sideMenuCounter = 1
|
||||
},
|
||||
desktopVersionNavigationBar() {
|
||||
mainSearchIcon.classList.remove('disable')
|
||||
mainSearchBackLeftIcon.classList.add('disable')
|
||||
navigationBarLeft.classList.remove('disable')
|
||||
navigationBarRight.classList.remove('disable')
|
||||
navigationBarMiddle.style.gridColumn = '2/3'
|
||||
mainSearchFigure.style.gridColumn = '3/4'
|
||||
mainSearchBackLeftTooltiptext.classList.add('disable')
|
||||
mainSearchInput.style.display = 'none'
|
||||
extOptIcon.style.display = 'none'
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const regularExpressions = {
|
||||
url : {
|
||||
query : /[\?|\&]+[q]+[=].*?[&]/g,
|
||||
country : /[\?|\&]+[c]+[o]+[u]+[=].{2}/g,
|
||||
backgroundColor : /[\&]+[b]+[g]+[=].*/g
|
||||
},
|
||||
string : {
|
||||
symbols : /[@_!#$%^&*()<>?/|}{~:]/g
|
||||
}
|
||||
}
|
||||
|
||||
const php = {
|
||||
info : async(word) => {
|
||||
const response = await fetch('privateInfo.php', {
|
||||
method: "POST",
|
||||
body: createFormData(word)
|
||||
})
|
||||
return await response.text()
|
||||
},
|
||||
session : async() => {
|
||||
const response = await fetch('include/session.inc.php', {
|
||||
method: "POST",
|
||||
body: createFormData('user')
|
||||
})
|
||||
return await response.text()
|
||||
}
|
||||
}
|
||||
|
||||
window.onload = async () => {
|
||||
await user.location()
|
||||
removeActiveSidebarCategory()
|
||||
if (window.location.pathname.includes('headlines')) headlines()
|
||||
else if (window.location.pathname.includes('for-you')) forYou()
|
||||
else if (window.location.pathname.includes('following')) following()
|
||||
else if (window.location.pathname.includes('library')) library()
|
||||
else if (window.location.pathname.includes('covid')) category('fa-shield-cross')
|
||||
else if (window.location.pathname.includes('world')) category('fa-globe-europe')
|
||||
else if (window.location.pathname.includes('business')) category('fa-building')
|
||||
else if (window.location.pathname.includes('technology')) category('fa-microchip')
|
||||
else if (window.location.pathname.includes('entertainment')) category('fa-camera-movie')
|
||||
else if (window.location.pathname.includes('sports')) category('fa-tennis-ball')
|
||||
else if (window.location.pathname.includes('health')) category('fa-heartbeat')
|
||||
else if (window.location.pathname.includes('setings')) setings()
|
||||
else if (window.location.pathname.includes('about')) about()
|
||||
else if (window.location.pathname.includes('help')) help()
|
||||
else if (window.location.pathname.includes('search')) mainSearch()
|
||||
|
||||
// changeBackgroundColor()
|
||||
let selectedCountryAcronym = getCountryAcronym(selectedCountry.innerHTML)
|
||||
|
||||
// if(!window.location.search.match(regularExpressions.url.country))
|
||||
|
||||
//historyPushState(window.location.origin + window.location.pathname, '', `?cou=${selectedCountryAcronym}&`,`bg=${backgroundColor}`)
|
||||
// else {
|
||||
// urlCountryAcronym = window.location.search.match(regularExpressions.url.country)[0].slice(5, 7)
|
||||
// if(getAcronymCountry(urlCountryAcronym) === undefined) return openLinks(filePath.headlines)
|
||||
// urlCountry = getAcronymCountry(urlCountryAcronym)
|
||||
// updateCountrySelect(urlCountry)
|
||||
// }
|
||||
|
||||
if(!window.location.search.match(regularExpressions.url.query)) return
|
||||
|
||||
let query = location.search.match(regularExpressions.url.query)[0]
|
||||
query = removeCharactersInString(query, 3, query.length - 1)
|
||||
/* Search news */
|
||||
}
|
||||
|
||||
window.onclick = (e) => {
|
||||
|
||||
if(logInOptions.classList.contains('active')) clickInOutCheck(logInOptions, e.target)
|
||||
else if(!suggestMainInput.classList.contains('disable')) clickInOutCheck(suggestMainInput, e.target)
|
||||
else if(!extOptProfile.classList.contains('disable')) clickInOutCheck(extOptProfile, e.target)
|
||||
else if(selectCountryDiv.classList.contains('active')) clickInOutCheck(selectCountryDiv, e.target)
|
||||
else if(!extraSearchOptions.classList.contains('disable')) clickInOutCheck(extraSearchOptions, e.target)
|
||||
}
|
||||
|
||||
function openLinks(string) { window.location.replace(websiteURL + string) }
|
||||
|
||||
function historyPushState(webiste, string, country, background) { history.pushState({}, null, webiste + string + country + background) }
|
||||
|
||||
function changeBackgroundColor() { document.body.className = window.location.search.match(regularExpressions.url.backgroundColor)[0].slice(4,10) }
|
||||
|
||||
// console.log(changeDiacritics())
|
||||
// function changeDiacritics() {
|
||||
// let string = 'leščać'
|
||||
// string = string.split('')
|
||||
// console.log(string)
|
||||
// // const regexDiacritics = /č|ć|đ|š|ž/g
|
||||
// for(let i = 0; i < string.length; i++)
|
||||
// if(diacriticLetters.test(string[i]))
|
||||
// string[i] = diacriticsReplacement[string[i]]
|
||||
// return string
|
||||
// }
|
||||
|
||||
function getLanguageAcronym(target) {
|
||||
for(let i = 0; i < language.length; i++)
|
||||
if(language[i] === target)
|
||||
return languageAcronyms[i]
|
||||
}
|
||||
function getCountryAcronym(target) {
|
||||
for(let i = 0; i < countries.length; i++)
|
||||
if(countries[i] === target)
|
||||
return countryAcronyms[i]
|
||||
}
|
||||
function getAcronymCountry(acronym) {
|
||||
for(let i = 0; i < countries.length; i++)
|
||||
if(countryAcronyms[i] === acronym)
|
||||
return countries[i]
|
||||
}
|
||||
function getAcronymLanguage(acronym) {
|
||||
for(let i = 0; i < language.length; i++)
|
||||
if(languageAcronyms[i] === acronym)
|
||||
return language[i]
|
||||
}
|
||||
|
||||
|
||||
function changeTemperatureUnit(element) {
|
||||
const unit = element.innerHTML
|
||||
const temperatureElements = document.querySelectorAll('.temperature')
|
||||
|
@ -206,9 +358,6 @@ function changeTemperatureUnit(element) {
|
|||
document.querySelectorAll('.weather-article .active')[0].classList.remove('active')
|
||||
element.classList.add('active')
|
||||
}
|
||||
|
||||
function removeCharactersInString(string, frontNumber, backNumber) { return string.slice(frontNumber, backNumber)}
|
||||
|
||||
function celsiusToFahrenheit(number) { return number * 9/5 + 32 }
|
||||
function celsiusToKelvin(number) { return Number(number) + 273 }
|
||||
function kelvinToFahrenheit(number) { return (number - 273) * 9/5 + 32 }
|
||||
|
@ -216,12 +365,11 @@ function kelvinToCelsius(number) { return number - 273 }
|
|||
function fahrenheitToCelsius(number) { return (number - 32) * 5/9 }
|
||||
function fahrenheitToKelvin(number) { return (number - 32) * 5/9 + 273 }
|
||||
|
||||
|
||||
/* HEADLINES */
|
||||
|
||||
async function headlines() {
|
||||
// await getWeather()
|
||||
// updateWeather()
|
||||
// await weather.getWeather()
|
||||
// weather.updateWeather()
|
||||
sidebarCategorySelect(document.querySelector('.fa-newspaper').parentElement)
|
||||
}
|
||||
|
||||
|
@ -231,18 +379,19 @@ async function headlines() {
|
|||
if(window.location.search.match(regularExpressions.url.query) === null) return openLinks(filePath.headlines)
|
||||
|
||||
addDisableSideElements()
|
||||
console.log(extra === undefined)
|
||||
let locationSearch
|
||||
// console.log(extra === undefined)
|
||||
if(extra === undefined) {
|
||||
searchInputValue = window.location.search.match(regularExpressions.url.query)[0].slice(3, -1)
|
||||
let searchInputValue = window.location.search.match(regularExpressions.url.query)[0].slice(3, -1)
|
||||
mainSearchInput.value = addCharacterBetweenSpaceInString(searchInputValue, '+', ' ')
|
||||
updateSearchBox(mainSearchInput.value.trim())
|
||||
searchBox.update(mainSearchInput.value.trim())
|
||||
} else {
|
||||
console.log(createUrlExtraOptions())
|
||||
let extraOptionsUrl = createUrlExtraOptions()
|
||||
let selectedCountryAcronym = getCountryAcronym(selectedCountry.innerHTML)
|
||||
historyPushState(websiteURL, extraOptionsUrl, selectedCountryAcronym, backgroundColor)
|
||||
}
|
||||
|
||||
hideSuggestWords()
|
||||
suggestWords()
|
||||
suggest.suggest()
|
||||
|
||||
/* Search news articles */
|
||||
}
|
||||
|
@ -268,48 +417,25 @@ async function headlines() {
|
|||
|
||||
}
|
||||
|
||||
function createUrlExtraOptions(type) {
|
||||
let hasWordsV = hasWords.value
|
||||
let exactPhraseV = exactPhrase.value
|
||||
let excludeWordsV = excludeWords.value
|
||||
function createUrlExtraOptions() {
|
||||
let url
|
||||
let exactPhraseV = exactPhrase.value.trim()
|
||||
let hasWordsV = hasWords.value.trim()
|
||||
let excludeWordsV = excludeWords.value.trim()
|
||||
|
||||
if(exactPhraseV.length !== 0 && hasWordsV.length === 0 && excludeWordsV.length === 0) return`"${exactPhraseV}"`
|
||||
else if(hasWordsV.length !== 0 && exactPhraseV.length === 0 && excludeWordsV.length === 0) return devideStringIntoWords(hasWordsV,'HW')
|
||||
else if(excludeWordsV.length !== 0 && exactPhraseV.length === 0 && hasWordsV.length === 0) return devideStringIntoWords(excludeWordsV,'EW')
|
||||
else if (exactPhraseV.length !== 0 && hasWordsV.length !== 0 && excludeWordsV.length === 0) return `"${exactPhraseV}"+${devideStringIntoWords(hasWordsV,'HW')}`
|
||||
else if(hasWordsV.length !== 0 && excludeWordsV.length !== 0 && exactPhraseV.length === 0) return `${devideStringIntoWords(hasWordsV,'HW')} ${devideStringIntoWords(excludeWordsV,'EW')}`
|
||||
else if(exactPhraseV.length !== 0 && excludeWordsV.length !== 0 && hasWordsV.length === 0) return `"${exactPhraseV}" ${devideStringIntoWords(excludeWordsV,'EW')}`
|
||||
else if(exactPhraseV.length !== 0 && excludeWordsV.length !== 0 && hasWordsV.length !== 0) return `"${exactPhraseV}" ${devideStringIntoWords(hasWordsV,'HW')} ${devideStringIntoWords(excludeWordsV,'EW')}`
|
||||
if(exactPhraseV.length !== 0 && hasWordsV.length === 0 && excludeWordsV.length === 0) url = `"${exactPhraseV.trim()}"`
|
||||
else if(hasWordsV.length !== 0 && exactPhraseV.length === 0 && excludeWordsV.length === 0) url = addCharacterBetweenSpaceInString(hasWordsV, ' ', '+')
|
||||
else if(excludeWordsV.length !== 0 && exactPhraseV.length === 0 && hasWordsV.length === 0) url = addCharacterBetweenSpaceInString(excludeWordsV, ' ', '-')
|
||||
// else if (exactPhraseV.length !== 0 && hasWordsV.length !== 0 && excludeWordsV.length === 0) return `"${exactPhraseV}"+${devideStringIntoWords(hasWordsV,'HW')}`
|
||||
// else if(hasWordsV.length !== 0 && excludeWordsV.length !== 0 && exactPhraseV.length === 0) return `${devideStringIntoWords(hasWordsV,'HW')} ${devideStringIntoWords(excludeWordsV,'EW')}`
|
||||
// else if(exactPhraseV.length !== 0 && excludeWordsV.length !== 0 && hasWordsV.length === 0) return `"${exactPhraseV}" ${devideStringIntoWords(excludeWordsV,'EW')}`
|
||||
// else if(exactPhraseV.length !== 0 && excludeWordsV.length !== 0 && hasWordsV.length !== 0) return `"${exactPhraseV}" ${devideStringIntoWords(hasWordsV,'HW')} ${devideStringIntoWords(excludeWordsV,'EW')}`
|
||||
return url
|
||||
// historyPushState(location.origin + location.pathname, `?q=${addCharacterBetweenSpaceInString(mainSearchInput.value, ' ', '+')}&`, `cou=${getCountryAcronym(selectedCountry.innerHTML)}&`,`bg=${backgroundColor}`)
|
||||
}
|
||||
function devideStringIntoWords(string, keyword){
|
||||
if(keyword === 'HW') return `+${string.replace(/\s/g,' +')}`
|
||||
if(keyword === 'EW') return `-${string.replace(/\s/g,' -')}`
|
||||
}
|
||||
|
||||
function mobileVersionNavigationBar() {
|
||||
mainSearchIcon.classList.add('disable')
|
||||
mainSearchBackLeftIcon.classList.remove('disable')
|
||||
navigationBarLeft.classList.add('disable')
|
||||
navigationBarRight.classList.add('disable')
|
||||
navigationBarMiddle.style.gridColumn = '1/4'
|
||||
mainSearchFigure.style.gridColumn = '1/2'
|
||||
mainSearchBackLeftTooltiptext.classList.remove('disable')
|
||||
mainSearchInput.style.display = 'grid'
|
||||
extOptIcon.style.display = 'flex'
|
||||
mainSearchInput.focus()
|
||||
sideBarContent.style.left = '-100%'
|
||||
sideMenuCounter = 1
|
||||
}
|
||||
function desktopVersionNavigationBar() {
|
||||
mainSearchIcon.classList.remove('disable')
|
||||
mainSearchBackLeftIcon.classList.add('disable')
|
||||
navigationBarLeft.classList.remove('disable')
|
||||
navigationBarRight.classList.remove('disable')
|
||||
navigationBarMiddle.style.gridColumn = '2/3'
|
||||
mainSearchFigure.style.gridColumn = '3/4'
|
||||
mainSearchBackLeftTooltiptext.classList.add('disable')
|
||||
mainSearchInput.style.display = 'none'
|
||||
extOptIcon.style.display = 'none'
|
||||
if(keyword === 'HW') return `+${string.replace(/\s/g, ' +')}`
|
||||
if(keyword === 'EW') return `-${string.replace(/\s/g, ' -')}`
|
||||
}
|
||||
|
||||
/* FOR YOU */
|
||||
|
@ -346,40 +472,16 @@ function settings() {
|
|||
function about() {
|
||||
}
|
||||
|
||||
const regularExpressions = {
|
||||
url : {
|
||||
query : /[\?|\&]+[q]+[=].*?[&]/g,
|
||||
country : /[\?|\&]+[c]+[o]+[u]+[=].{2}/g,
|
||||
backgroundColor : /[\&]+[b]+[g]+[=].*/g
|
||||
},
|
||||
string : {
|
||||
symbols : /[@_!#$%^&*()<>?/|}{~:]/g
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function sidebarCategorySelect(selectedElement) {
|
||||
if(selectedElement.classList.contains('side-menu-active')) return
|
||||
selectedElement.classList.add('side-menu-active')
|
||||
selectedElement.firstElementChild.classList.add('side-menu-active')
|
||||
/* Search news articles */
|
||||
}
|
||||
function removeActiveSidebarCategory() {
|
||||
let oldSelectedElements = document.querySelectorAll('.side-menu-active')
|
||||
for(let i = 0; i < oldSelectedElements.length; i++)
|
||||
oldSelectedElements[i].classList.remove('side-menu-active')
|
||||
}
|
||||
|
||||
mainSearchInput.onfocus = () => {
|
||||
if(!extraSearchOptions.classList.contains('disable')) return manageExtraSearchOptions()
|
||||
else if(mainSearchInput.value.length !== 0) showSuggestWords()
|
||||
manageSuggestWords()
|
||||
suggest.manageSuggestWords()
|
||||
}
|
||||
|
||||
mainSearchInput.oninput = () => {
|
||||
if(mainSearchInput.value.length === 0) return hideSuggestWords()
|
||||
else if(suggestMainInput.classList.contains('disable')) showSuggestWords()
|
||||
manageSuggestWords()
|
||||
suggest.manageSuggestWords()
|
||||
}
|
||||
let place = 0
|
||||
mainSearchInput.onkeyup = (e) => {
|
||||
|
@ -387,8 +489,10 @@ mainSearchInput.onkeyup = (e) => {
|
|||
let suggestDivActiveKey = suggestMainInput.querySelectorAll('div.active.key')
|
||||
if(e.keyCode === 13) {
|
||||
|
||||
if(suggestDivActiveKey.length === 1) historyPushState(location.origin + location.pathname, `?q=${addCharacterBetweenSpaceInString(suggestDivActiveKey[0].firstElementChild.innerHTML, ' ', '+')}&`, `cou=${getCountryAcronym(selectedCountry.innerHTML)}&`,`bg=${backgroundColor}`)
|
||||
else historyPushState(location.origin + location.pathname, `?q=${addCharacterBetweenSpaceInString(mainSearchInput.value, ' ', '+')}&`, `cou=${getCountryAcronym(selectedCountry.innerHTML)}&`,`bg=${backgroundColor}`)
|
||||
if(suggestDivActiveKey.length === 1)//historyPushState
|
||||
console.log(location.origin + location.pathname, `?q=${addCharacterBetweenSpaceInString(suggestDivActiveKey[0].firstElementChild.innerHTML, ' ', '+')}&`, `cou=${getCountryAcronym(selectedCountry.innerHTML)}&`,`bg=${backgroundColor}`)
|
||||
else //historyPushState
|
||||
console.log(location.origin + location.pathname, `?q=${addCharacterBetweenSpaceInString(mainSearchInput.value, ' ', '+')}&`, `cou=${getCountryAcronym(selectedCountry.innerHTML)}&`,`bg=${backgroundColor}`)
|
||||
mainSearch()
|
||||
// if(!suggestMainInput.classList.contains('disable')) hideSuggestWords()
|
||||
// return mainSearch()
|
||||
|
@ -415,67 +519,6 @@ mainSearchInput.onkeyup = (e) => {
|
|||
}
|
||||
}
|
||||
|
||||
let mouseSuggestHover = false
|
||||
function mouseSuggestHoverChange(parameter) {
|
||||
mouseSuggestHover = parameter
|
||||
}
|
||||
|
||||
let searchSuggestOptionsArray = []
|
||||
let resultArray = []
|
||||
let searchSuggestOptionSelectedWord
|
||||
const maxNumberSuggestWords = 6
|
||||
|
||||
async function fetchWords(input) {
|
||||
const res = await fetch(`https://api.datamuse.com/sug?s=${input}`)
|
||||
return words = await res.json()
|
||||
}
|
||||
async function manageSuggestWords() {
|
||||
let suggestWordsArray = await fetchWords(mainSearchInput.value)
|
||||
if(suggestWordsArray.length === 0) return hideSuggestWords()
|
||||
|
||||
if(suggestWordsArray.length > 6) suggestWordsArray = removeCharactersInString(suggestWordsArray, 4, suggestWordsArray.length)
|
||||
|
||||
suggestBox(suggestWordsArray)
|
||||
|
||||
for(let i = 0; i < suggestMainInput.getElementsByTagName('div').length; i++) {
|
||||
suggestMainInput.getElementsByTagName('div')[i].onmouseover = () => {
|
||||
place = i
|
||||
if(suggestMainInput.querySelectorAll('div.active').length === 1) suggestMainInput.querySelectorAll('div.active')[0].classList.remove('active','key')
|
||||
suggestMainInput.getElementsByTagName('div')[i].classList.add('active')
|
||||
}
|
||||
suggestMainInput.getElementsByTagName('div')[i].onmouseleave = () => { suggestMainInput.getElementsByTagName('div')[i].classList.remove('active','key') }
|
||||
}
|
||||
}
|
||||
|
||||
const suggestBox = words => {
|
||||
let wordBoxes = words.map(word => `<div class="grid pointer" onclick="selectSuggestedSearchOption(this.firstElementChild)">
|
||||
<span>${word.word}</span>
|
||||
</div>`).join('')
|
||||
const html = `<hr class="absolute">${wordBoxes}`
|
||||
suggestMainInput.innerHTML = html
|
||||
}
|
||||
|
||||
function removeAllSuggestWordBoxes() {
|
||||
let numberOfBoxes = suggestMainInput.querySelectorAll('div').length
|
||||
for(let i = 0; i < numberOfBoxes; i++)
|
||||
suggestMainInput.querySelector('div').remove()
|
||||
}
|
||||
|
||||
function selectSuggestedSearchOption(element) {
|
||||
removeActiveSidebarCategory()
|
||||
hideSuggestWords()
|
||||
let elementInnerHTML = addCharacterBetweenSpaceInString(element.innerHTML, ' ', '+')
|
||||
let selectedCountryAcronym = getCountryAcronym(selectedCountry.innerHTML)
|
||||
historyPushState(location.origin + location.pathname, `?q=${elementInnerHTML}&`, `cou=${selectedCountryAcronym}&`,`bg=${backgroundColor}`)
|
||||
mainSearch()
|
||||
}
|
||||
|
||||
function addCharacterBetweenSpaceInString(word, replace, character) {
|
||||
word = word.trim().replace(/\s\s+/g, ' ')
|
||||
if(replace === ' ') return word.replace(/\s/g, character)
|
||||
else if(replace === '+') return word.replace(/\+/g, character)
|
||||
}
|
||||
|
||||
function updateCountrySelect(country) {
|
||||
selectedCountry.innerHTML = country
|
||||
if(location.pathname.includes('search')) string = '&'
|
||||
|
@ -539,15 +582,12 @@ function generateCountries() {
|
|||
for(let i = 0; i < newCountriesArray.length; i++)
|
||||
createElementsForCountry(newCountriesArray[i], 'not-active', 'normal')
|
||||
}
|
||||
function removeDuplicates(array) { array.splice(0, array.length, ...(new Set(array))) }
|
||||
function removeSelectedValuesFromArray(array, target) { return target.filter(val => !array.includes(val)) }
|
||||
function checkForDoubleCountriesSuggest(country) {
|
||||
for(let i = 0; i < suggestCountriesArray.length; i++)
|
||||
if(suggestCountriesArray[i] === country)
|
||||
return true
|
||||
return false
|
||||
}
|
||||
|
||||
function createElementsForCountry(country, activeCountry, location) {
|
||||
let aside = document.createElement('aside')
|
||||
aside.classList.add('radio-button-container','grid')
|
||||
|
@ -584,7 +624,6 @@ function changeSelectedCountry(element) {
|
|||
aside.firstElementChild.firstElementChild.classList.add('active')
|
||||
aside.firstElementChild.firstElementChild.firstElementChild.classList.add('active')
|
||||
}
|
||||
|
||||
let lastSelectedCountry = null
|
||||
let selectedC = null
|
||||
let newCountriesArray = []
|
||||
|
@ -677,7 +716,7 @@ hasWords.oninput = () => { inputExtraSearchOptionChange() }
|
|||
excludeWords.oninput = () => { inputExtraSearchOptionChange() }
|
||||
|
||||
function inputExtraSearchOptionChange() {
|
||||
if(hasWords.value.length === 0 && exactPhrase.value.length === 0 && excludeWords.value.length === 0){
|
||||
if(hasWords.value.length === 0 && exactPhrase.value.length === 0 && excludeWords.value.length === 0) {
|
||||
submitButton.disabled = true
|
||||
submitButton.classList.add('ext-opt-submit-disable')
|
||||
submitButton.classList.remove('ext-opt-submit')
|
||||
|
@ -688,86 +727,10 @@ function inputExtraSearchOptionChange() {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
function saveSearchWord(element) {
|
||||
if(element.firstElementChild.classList.contains('yellow-color')) {
|
||||
element.firstElementChild.classList.remove('yellow-color', 'fa')
|
||||
element.firstElementChild.classList.add('fal')
|
||||
}
|
||||
else {
|
||||
element.firstElementChild.classList.add('yellow-color', 'fa')
|
||||
element.firstElementChild.classList.remove('fal')
|
||||
}
|
||||
}
|
||||
function followSearchWord(element) {
|
||||
if(element.firstElementChild.classList.contains('blue-color')) {
|
||||
element.innerHTML = ' <i class="fa fa-star"></i> Follow'
|
||||
element.firstElementChild.classList.remove('blue-color')
|
||||
element.classList.remove('blue-color')
|
||||
} else {
|
||||
element.innerHTML = ' <i class="fa fa-star"></i> Following'
|
||||
element.firstElementChild.classList.add('blue-color')
|
||||
element.classList.add('blue-color')
|
||||
}
|
||||
}
|
||||
|
||||
async function suggestWords() {
|
||||
let fetchArray = []
|
||||
let suggestWordsArray = []
|
||||
let input = mainSearchInput.value.split(' ')
|
||||
let n = 0
|
||||
|
||||
while(suggestWordsArray.length < 16) {
|
||||
fetchArray = await fetchWords(input[n])
|
||||
|
||||
for(let i = 0; i < fetchArray.length; i++)
|
||||
if(suggestWordsArray.indexOf(fetchArray[i].word) === -1 && fetchArray[i].word !== mainSearchInput.value) suggestWordsArray.push(fetchArray[i].word)
|
||||
input[n] = removeCharactersInString(input[n], 0, -1)
|
||||
if(input.length === 0) break
|
||||
}
|
||||
generateSuggestWords(suggestWordsArray)
|
||||
removeDisableSideElements()
|
||||
}
|
||||
|
||||
let moreSuggestWordsArray = []
|
||||
function generateSuggestWords(array) {
|
||||
let section = document.querySelector('article.suggested-words.aside section')
|
||||
section.innerHTML = ''
|
||||
|
||||
for(let i = 0; i < array.length; i++) {
|
||||
let div = document.createElement('div')
|
||||
div.innerHTML = array[i]
|
||||
div.classList.add('search-box')
|
||||
div.onclick = () => selectSuggestedSearchOption(div)
|
||||
section.appendChild(div)
|
||||
}
|
||||
}
|
||||
|
||||
async function updateSearchBox(query) {
|
||||
let i = 0
|
||||
let images = await fetchImages(query)
|
||||
if(images.hits.length === 0) {
|
||||
images = await fetchImages('nature')
|
||||
i = Math.round(Math.random() * images.hits.length)
|
||||
}
|
||||
|
||||
let searchBox = document.querySelector('article.search.aside')
|
||||
searchBox.firstElementChild.firstElementChild.innerHTML = capitalizeString(mainSearchInput.value)
|
||||
searchBox.firstElementChild.querySelector('figure img').src = images.hits[i].webformatURL
|
||||
searchBox.firstElementChild.querySelector('figure img').classList.remove('disable')
|
||||
}
|
||||
async function fetchImages(query) {
|
||||
const key = await getPrivateInfo('images')
|
||||
const response = await fetch(`https://pixabay.com/api/?key=${key}&q=${query}&image_type=photo`)
|
||||
const image = await response.json()
|
||||
return image
|
||||
}
|
||||
|
||||
function addDisableSideElements() { mainAsideContent.querySelectorAll('article').forEach(article => article.classList.add('disable')) }
|
||||
function removeDisableSideElements() { mainAsideContent.querySelectorAll('article.disable').forEach(article => article.classList.remove('disable')) }
|
||||
|
||||
function saveNews(element) {
|
||||
|
||||
if(element.lastElementChild.textContent === 'Save') {
|
||||
element.firstElementChild.classList.remove('far')
|
||||
element.firstElementChild.classList.add('fas')
|
||||
|
@ -793,38 +756,23 @@ function followNews(element) {
|
|||
//PHP
|
||||
}
|
||||
|
||||
function capitalizeString(string) { return string.charAt(0).toUpperCase() + string.slice(1) }
|
||||
|
||||
/* API */
|
||||
|
||||
// fetchNewsArticles()
|
||||
// async function fetchNewsArticles() {
|
||||
async function fetchNewsArticles() {
|
||||
|
||||
const key = await php.info('news')
|
||||
const response = await fetch(`http://cors-anywhere.herokuapp.com/http://newsapi.org/v2/everything?q=-velenje america "coronavirus"&sortBy=popularity&apiKey=${key}`).catch(() => {
|
||||
// noArticlesFoundNotification()
|
||||
})
|
||||
// const response = await fetch(newsApiLoadUrl).catch(err => {
|
||||
// noArticlesFoundNotification()
|
||||
// })
|
||||
const json = await response.json()
|
||||
const articles = await json.articles
|
||||
|
||||
// const response = await fetch(`http://cors-anywhere.herokuapp.com/`).catch(() => {
|
||||
// noArticlesFoundNotification()
|
||||
// })
|
||||
// // const response = await fetch(newsApiLoadUrl).catch(err => {
|
||||
// // noArticlesFoundNotification()
|
||||
// // })
|
||||
// const json = await response.json()
|
||||
// const articles = await json.articles
|
||||
|
||||
// console.log(articles)
|
||||
|
||||
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function sayHello (name, age) {
|
||||
// console.log(name)
|
||||
// console.log(age)
|
||||
// console.log(this)
|
||||
console.log(articles, `http://cors-anywhere.herokuapp.com/http://newsapi.org/v2/everything?q=-velenje america "coronavirus"&sortBy=popularity&apiKey=${key}`)
|
||||
}
|
||||
sayHello.call('This', 'Nik Topler', 18)
|
||||
|
||||
const information = {
|
||||
firstName : 'Nik',
|
||||
|
@ -833,8 +781,18 @@ const information = {
|
|||
let { firstName } = information
|
||||
// console.log(firstName)
|
||||
|
||||
|
||||
let newArray = [1 ,2, 123, 23, 4, 3.123, 12, 93, 0]
|
||||
let result = newArray.filter( val => { return val % 2 === 1} )
|
||||
// console.log(result)
|
||||
function createFormData(word) {
|
||||
let formData = new FormData
|
||||
formData.append(word, '')
|
||||
return formData
|
||||
}
|
||||
function capitalizeString(string) { return string.charAt(0).toUpperCase() + string.slice(1) }
|
||||
function removeCharactersInString(string, frontNumber, backNumber) { return string.slice(frontNumber, backNumber)}
|
||||
function removeDuplicates(array) { array.splice(0, array.length, ...(new Set(array))) }
|
||||
function removeSelectedValuesFromArray(array, target) { return target.filter(val => !array.includes(val)) }
|
||||
function addCharacterBetweenSpaceInString(word, replace, character) {
|
||||
word = word.trim().replace(/\s\s+/g, ' ')
|
||||
if(replace === ' ') return word.replace(/\s/g, character)
|
||||
else if(replace === '+') return word.replace(/\+/g, character)
|
||||
}
|
||||
|
||||
|
|
14
JS/show.js
14
JS/show.js
|
@ -91,7 +91,7 @@ function hideSuggestWords() {
|
|||
mainSearchInput.style.borderBottomLeftRadius = '6px'
|
||||
mainSearchInput.style.borderBottomRightRadius = '6px'
|
||||
suggestMainInput.classList.add('disable')
|
||||
removeAllSuggestWordBoxes()
|
||||
suggest.removeAllSuggestWordBoxes()
|
||||
}
|
||||
|
||||
function hideSelectCountry() {
|
||||
|
@ -128,3 +128,15 @@ function resetExtraSearchOptions() {
|
|||
for(let i = 0; i < 3; i++)
|
||||
document.querySelectorAll('.extra-search-options > div > input')[i].value = ''
|
||||
}
|
||||
|
||||
function sidebarCategorySelect(selectedElement) {
|
||||
if(selectedElement.classList.contains('side-menu-active')) return
|
||||
selectedElement.classList.add('side-menu-active')
|
||||
selectedElement.firstElementChild.classList.add('side-menu-active')
|
||||
/* Search news articles */
|
||||
}
|
||||
function removeActiveSidebarCategory() {
|
||||
let oldSelectedElements = document.querySelectorAll('.side-menu-active')
|
||||
for(let i = 0; i < oldSelectedElements.length; i++)
|
||||
oldSelectedElements[i].classList.remove('side-menu-active')
|
||||
}
|
||||
|
|
118
JS/sign.js
118
JS/sign.js
|
@ -1,69 +1,69 @@
|
|||
// /** Google */
|
||||
// function onSignIn(googleUser) {
|
||||
// console.log('Logged in as: ' + JSON.stringify(googleUser.getBasicProfile()))
|
||||
function onSignIn(googleUser) {
|
||||
console.log('Logged in as: ' + JSON.stringify(googleUser.getBasicProfile()))
|
||||
|
||||
// let profile = googleUser.getBasicProfile()
|
||||
// // console.log('ID: ' + profile.getId()) // Do not send to your backend! Use an ID token instead.
|
||||
// // console.log('Name: ' + profile.getName())
|
||||
// // console.log('Image URL: ' + profile.getImageUrl())
|
||||
// // console.log('Email: ' + profile.getEmail())
|
||||
// }
|
||||
let profile = googleUser.getBasicProfile()
|
||||
// console.log('ID: ' + profile.getId()) // Do not send to your backend! Use an ID token instead.
|
||||
// console.log('Name: ' + profile.getName())
|
||||
// console.log('Image URL: ' + profile.getImageUrl())
|
||||
// console.log('Email: ' + profile.getEmail())
|
||||
}
|
||||
|
||||
// function onFailure(error) {
|
||||
// console.log(error)
|
||||
// }
|
||||
// var googleUser = {};
|
||||
// var startApp = function() {
|
||||
// gapi.load('auth2', function(){
|
||||
// auth2 = gapi.auth2.init({
|
||||
// client_id: '571327981909-r5sunoo4l6uqducmqm7vjon1af0tmso1.apps.googleusercontent.com',
|
||||
// cookiepolicy: 'single_host_origin',
|
||||
// });
|
||||
// attachSignin(document.getElementById('googleBtn'));
|
||||
// });
|
||||
// };
|
||||
// function attachSignin(element) {
|
||||
// auth2.attachClickHandler(element, {},
|
||||
// (googleUser) =>{
|
||||
// console.log(googleUser.getBasicProfile())},
|
||||
// (error) => {
|
||||
// // alert(JSON.stringify(error, undefined, 2));
|
||||
// });
|
||||
// }
|
||||
// startApp()
|
||||
// function signOut() {
|
||||
// var auth2 = gapi.auth2.getAuthInstance()
|
||||
// auth2.signOut().then(function () {
|
||||
// console.log('User signed out.')
|
||||
// })
|
||||
// }
|
||||
function onFailure(error) {
|
||||
console.log(error)
|
||||
}
|
||||
var googleUser = {};
|
||||
var startApp = function() {
|
||||
gapi.load('auth2', function(){
|
||||
auth2 = gapi.auth2.init({
|
||||
client_id: '571327981909-r5sunoo4l6uqducmqm7vjon1af0tmso1.apps.googleusercontent.com',
|
||||
cookiepolicy: 'single_host_origin',
|
||||
});
|
||||
attachSignin(document.getElementById('googleBtn'));
|
||||
});
|
||||
};
|
||||
function attachSignin(element) {
|
||||
auth2.attachClickHandler(element, {},
|
||||
(googleUser) =>{
|
||||
console.log(googleUser.getBasicProfile())},
|
||||
(error) => {
|
||||
// alert(JSON.stringify(error, undefined, 2));
|
||||
});
|
||||
}
|
||||
startApp()
|
||||
function signOut() {
|
||||
var auth2 = gapi.auth2.getAuthInstance()
|
||||
auth2.signOut().then(function () {
|
||||
console.log('User signed out.')
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
// /** GitHub */
|
||||
/** GitHub */
|
||||
|
||||
// document.getElementById('github-button').addEventListener('click', () => {
|
||||
// // Initialize with your OAuth.io app public key
|
||||
// OAuth.initialize('_nPRfzTNGplyDCW0vD9dmek5QAg');
|
||||
// // Use popup for oauth
|
||||
// // Alternative is redirect
|
||||
// OAuth.popup('github').then(github => {
|
||||
// console.log('github:', github);
|
||||
// // Retrieves user data from oauth provider
|
||||
// // Prompts 'welcome' message with User's email on successful login
|
||||
// // #me() is a convenient method to retrieve user data without requiring you
|
||||
// // to know which OAuth provider url to call
|
||||
// github.me().then(data => {
|
||||
// console.log('me data:', data);
|
||||
// // alert('GitHub says your email is:' + data.email + ".\nView browser 'Console Log' for more details");
|
||||
// });
|
||||
// // Retrieves user data from OAuth provider by using #get() and
|
||||
// // OAuth provider url
|
||||
// github.get('/user').then(data => {
|
||||
// console.log('self data:', data);
|
||||
// })
|
||||
// });
|
||||
// })
|
||||
document.getElementById('github-button').addEventListener('click', () => {
|
||||
// Initialize with your OAuth.io app public key
|
||||
OAuth.initialize('_nPRfzTNGplyDCW0vD9dmek5QAg');
|
||||
// Use popup for oauth
|
||||
// Alternative is redirect
|
||||
OAuth.popup('github').then(github => {
|
||||
console.log('github:', github);
|
||||
// Retrieves user data from oauth provider
|
||||
// Prompts 'welcome' message with User's email on successful login
|
||||
// #me() is a convenient method to retrieve user data without requiring you
|
||||
// to know which OAuth provider url to call
|
||||
github.me().then(data => {
|
||||
console.log('me data:', data);
|
||||
// alert('GitHub says your email is:' + data.email + ".\nView browser 'Console Log' for more details");
|
||||
});
|
||||
// Retrieves user data from OAuth provider by using #get() and
|
||||
// OAuth provider url
|
||||
github.get('/user').then(data => {
|
||||
console.log('self data:', data);
|
||||
})
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
// /** FaceBook */
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<script src="../JS/variables.js" defer></script>
|
||||
<script src="../JS/show.js" defer></script>
|
||||
<script src="../JS/main.js" defer></script>
|
||||
<script src="..JS/diacritics.js" defer></script>
|
||||
<script src="../JS/sign.js" defer></script>
|
||||
|
||||
<script src="https://kit.fontawesome.com/89923351fd.js" crossorigin="anonymous" defer></script>
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
onclick="mainSearch('extra')">Search</button>
|
||||
</footer>
|
||||
</aside>
|
||||
<aside class="search-words absolute disable" id="search-words" onmouseover="mouseSuggestHoverChange(true)" onmouseout="mouseSuggestHoverChange(false)">
|
||||
<aside class="search-words absolute disable" id="search-words" onmouseover="suggest.mouseSuggestHoverChange(true)" onmouseout="suggest.mouseSuggestHoverChange(false)">
|
||||
<hr class="absolute">
|
||||
</aside>
|
||||
</div>
|
||||
|
|
7
include/session.inc.php
Normal file
7
include/session.inc.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php session_start();
|
||||
|
||||
echo $_SERVER['REQUEST_URI'];
|
||||
|
||||
if(isset($_SESSION['user_id'])) {
|
||||
|
||||
}
|
|
@ -5,11 +5,7 @@ $dotend = Dotenv::createImmutable(__DIR__);
|
|||
$dotend->load();
|
||||
|
||||
if($_SERVER['REQUEST_METHOD'] !== 'POST') return;
|
||||
if(isset($_POST['images'])) return image();
|
||||
if(isset($_POST['user'])) return user();
|
||||
if(isset($_POST['weather'])) return weather();
|
||||
|
||||
function image() { echo $_ENV['IMAGE_API_KEY']; }
|
||||
function user() { echo $_ENV['USER_LOCATION_API_KEY']; }
|
||||
function weather() { echo $_ENV['WEATHER_API_KEY']; }
|
||||
|
||||
if(isset($_POST['images'])) echo $_ENV['IMAGE_API_KEY'];
|
||||
else if(isset($_POST['user'])) echo $_ENV['USER_LOCATION_API_KEY'];
|
||||
else if(isset($_POST['weather'])) echo $_ENV['WEATHER_API_KEY'];
|
||||
else if(isset($_POST['news'])) echo $_ENV['NEWS_API_KEY'];
|
|
@ -12,8 +12,9 @@
|
|||
<link rel="stylesheet" href="CSS/index.css">
|
||||
|
||||
<script src="JS/variables.js" defer></script>
|
||||
<script src="JS/show.js" defer></script>
|
||||
<script src="JS/diacritics.js" defer></script>
|
||||
<script src="JS/main.js" defer></script>
|
||||
<script src="JS/show.js" defer></script>
|
||||
<script src="JS/sign.js" defer></script>
|
||||
|
||||
<script src="https://kit.fontawesome.com/89923351fd.js" crossorigin="anonymous" defer></script>
|
||||
|
|
Loading…
Reference in a new issue