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 }) }
|
654
JS/main.js
654
JS/main.js
|
@ -1,5 +1,232 @@
|
||||||
|
let weatherArrayToday
|
||||||
|
let weatherArrayTommorow
|
||||||
|
let weatherArray2Days
|
||||||
|
const weather = {
|
||||||
|
async getweather() {
|
||||||
|
city = changeDiacritics(userLocationInformationValue[3])
|
||||||
|
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]
|
||||||
|
},
|
||||||
|
updateWeather() {
|
||||||
|
let header = document.querySelectorAll('.weather-main-header')[0]
|
||||||
|
header.children[0].src = weatherArrayToday.day.condition.icon
|
||||||
|
header.children[1].innerHTML = userLocationInformationValue[3]
|
||||||
|
header.children[2].innerHTML = `${Math.round(weatherArrayToday.day.avgtemp_c)}°C`
|
||||||
|
|
||||||
|
let weatherDate = new Date(weatherArrayToday.date)
|
||||||
|
let tommorowNumber = weatherDate.getDay()
|
||||||
|
let dayAfterTomorrow = weatherDate.getDay()
|
||||||
|
|
||||||
|
if(tommorowNumber == 6) tommorowNumber = tommorowNumber - 7
|
||||||
|
if(dayAfterTomorrow == 5 || dayAfterTomorrow == 6) dayAfterTomorrow = dayAfterTomorrow - 7
|
||||||
|
|
||||||
|
let dayAcronymTommorow = daysAcronyms[tommorowNumber + 1]
|
||||||
|
let dayAcronymIn2Days = daysAcronyms[dayAfterTomorrow + 2]
|
||||||
|
|
||||||
|
let mainWeatherContent = document.querySelectorAll('.weather-3-days')[0]
|
||||||
|
mainWeatherContent.children[0].firstElementChild.innerHTML = 'Today'
|
||||||
|
mainWeatherContent.children[1].firstElementChild.innerHTML = dayAcronymTommorow
|
||||||
|
mainWeatherContent.children[2].firstElementChild.innerHTML = dayAcronymIn2Days
|
||||||
|
|
||||||
|
mainWeatherContent.children[0].children[1].firstElementChild.src = weatherArrayToday.day.condition.icon
|
||||||
|
mainWeatherContent.children[1].children[1].firstElementChild.src = weatherArrayTommorow.day.condition.icon
|
||||||
|
mainWeatherContent.children[2].children[1].firstElementChild.src = weatherArray2Days.day.condition.icon
|
||||||
|
|
||||||
|
mainWeatherContent.children[0].children[2].firstElementChild.src = 'http://cdn.weatherapi.com/weather/64x64/day/302.png'
|
||||||
|
mainWeatherContent.children[1].children[2].firstElementChild.src = 'http://cdn.weatherapi.com/weather/64x64/day/302.png'
|
||||||
|
mainWeatherContent.children[2].children[2].firstElementChild.src = 'http://cdn.weatherapi.com/weather/64x64/day/302.png'
|
||||||
|
|
||||||
|
mainWeatherContent.children[0].children[1].lastElementChild.innerHTML = `${weatherArrayToday.day.avgtemp_c}°C`
|
||||||
|
mainWeatherContent.children[1].children[1].lastElementChild.innerHTML = `${weatherArrayTommorow.day.avgtemp_c}°C`
|
||||||
|
mainWeatherContent.children[2].children[1].lastElementChild.innerHTML = `${weatherArray2Days.day.avgtemp_c}°C`
|
||||||
|
|
||||||
|
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 () => {
|
window.onload = async () => {
|
||||||
await getuserLocationInformationValue()
|
await user.location()
|
||||||
removeActiveSidebarCategory()
|
removeActiveSidebarCategory()
|
||||||
if (window.location.pathname.includes('headlines')) headlines()
|
if (window.location.pathname.includes('headlines')) headlines()
|
||||||
else if (window.location.pathname.includes('for-you')) forYou()
|
else if (window.location.pathname.includes('for-you')) forYou()
|
||||||
|
@ -20,20 +247,21 @@ window.onload = async () => {
|
||||||
// changeBackgroundColor()
|
// changeBackgroundColor()
|
||||||
let selectedCountryAcronym = getCountryAcronym(selectedCountry.innerHTML)
|
let selectedCountryAcronym = getCountryAcronym(selectedCountry.innerHTML)
|
||||||
|
|
||||||
if(!window.location.search.match(regularExpressions.url.country)) historyPushState(window.location.origin + window.location.pathname, '', `?cou=${selectedCountryAcronym}&`,`bg=${backgroundColor}`)
|
// if(!window.location.search.match(regularExpressions.url.country))
|
||||||
else {
|
|
||||||
urlCountryAcronym = window.location.search.match(regularExpressions.url.country)[0].slice(5, 7)
|
//historyPushState(window.location.origin + window.location.pathname, '', `?cou=${selectedCountryAcronym}&`,`bg=${backgroundColor}`)
|
||||||
if(getAcronymCountry(urlCountryAcronym) === undefined) return openLinks(filePath.headlines)
|
// else {
|
||||||
urlCountry = getAcronymCountry(urlCountryAcronym)
|
// urlCountryAcronym = window.location.search.match(regularExpressions.url.country)[0].slice(5, 7)
|
||||||
updateCountrySelect(urlCountry)
|
// if(getAcronymCountry(urlCountryAcronym) === undefined) return openLinks(filePath.headlines)
|
||||||
}
|
// urlCountry = getAcronymCountry(urlCountryAcronym)
|
||||||
|
// updateCountrySelect(urlCountry)
|
||||||
|
// }
|
||||||
|
|
||||||
if(!window.location.search.match(regularExpressions.url.query)) return
|
if(!window.location.search.match(regularExpressions.url.query)) return
|
||||||
|
|
||||||
let query = location.search.match(regularExpressions.url.query)[0]
|
let query = location.search.match(regularExpressions.url.query)[0]
|
||||||
query = removeCharactersInString(query, 3, query.length - 1)
|
query = removeCharactersInString(query, 3, query.length - 1)
|
||||||
/* Search news */
|
/* Search news */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
window.onclick = (e) => {
|
window.onclick = (e) => {
|
||||||
|
@ -45,73 +273,34 @@ window.onclick = (e) => {
|
||||||
else if(!extraSearchOptions.classList.contains('disable')) clickInOutCheck(extraSearchOptions, 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 openLinks(string) { window.location.replace(websiteURL + string) }
|
||||||
|
|
||||||
function historyPushState(webiste, string, country, background) { history.pushState({}, null, webiste + string + country + background) }
|
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) }
|
function changeBackgroundColor() { document.body.className = window.location.search.match(regularExpressions.url.backgroundColor)[0].slice(4,10) }
|
||||||
|
|
||||||
let userLocationInformationValue
|
// console.log(changeDiacritics())
|
||||||
async function getuserLocationInformationValue() { userLocationInformationValue = await getUsersCountry() }
|
// function changeDiacritics() {
|
||||||
|
// let string = 'leščać'
|
||||||
async function getUsersCountry() {
|
// string = string.split('')
|
||||||
const key = await getPrivateInfo('user')
|
// console.log(string)
|
||||||
const response = await fetch(`https://ipinfo.io?token=${key}`)
|
// // const regexDiacritics = /č|ć|đ|š|ž/g
|
||||||
const data = await response.json()
|
// for(let i = 0; i < string.length; i++)
|
||||||
const userCountryAcronym = data.country.toLowerCase()
|
// if(diacriticLetters.test(string[i]))
|
||||||
const userCountry = getAcronymCountry(userCountryAcronym)
|
// string[i] = diacriticsReplacement[string[i]]
|
||||||
const userCity = data.city
|
// return string
|
||||||
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() {
|
|
||||||
city = changeDiacritics(userLocationInformationValue[3])
|
|
||||||
const key = getPrivateInfo('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) {
|
function getLanguageAcronym(target) {
|
||||||
for(let i = 0; i < language.length; i++)
|
for(let i = 0; i < language.length; i++)
|
||||||
if(language[i] === target)
|
if(language[i] === target)
|
||||||
return languageAcronyms[i]
|
return languageAcronyms[i]
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCountryAcronym(target) {
|
function getCountryAcronym(target) {
|
||||||
for(let i = 0; i < countries.length; i++)
|
for(let i = 0; i < countries.length; i++)
|
||||||
if(countries[i] === target)
|
if(countries[i] === target)
|
||||||
return countryAcronyms[i]
|
return countryAcronyms[i]
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAcronymCountry(acronym) {
|
function getAcronymCountry(acronym) {
|
||||||
for(let i = 0; i < countries.length; i++)
|
for(let i = 0; i < countries.length; i++)
|
||||||
if(countryAcronyms[i] === acronym)
|
if(countryAcronyms[i] === acronym)
|
||||||
|
@ -123,43 +312,6 @@ function getAcronymLanguage(acronym) {
|
||||||
return language[i]
|
return language[i]
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateWeather() {
|
|
||||||
let header = document.querySelectorAll('.weather-main-header')[0]
|
|
||||||
header.children[0].src = weatherArrayToday.day.condition.icon
|
|
||||||
header.children[1].innerHTML = userLocationInformationValue[3]
|
|
||||||
header.children[2].innerHTML = `${Math.round(weatherArrayToday.day.avgtemp_c)}°C`
|
|
||||||
|
|
||||||
let weatherDate = new Date(weatherArrayToday.date)
|
|
||||||
let tommorowNumber = weatherDate.getDay()
|
|
||||||
let dayAfterTomorrow = weatherDate.getDay()
|
|
||||||
|
|
||||||
if(tommorowNumber == 6) tommorowNumber = tommorowNumber - 7
|
|
||||||
if(dayAfterTomorrow == 5 || dayAfterTomorrow == 6) dayAfterTomorrow = dayAfterTomorrow - 7
|
|
||||||
|
|
||||||
let dayAcronymTommorow = daysAcronyms[tommorowNumber + 1]
|
|
||||||
let dayAcronymIn2Days = daysAcronyms[dayAfterTomorrow + 2]
|
|
||||||
|
|
||||||
let mainWeatherContent = document.querySelectorAll('.weather-3-days')[0]
|
|
||||||
mainWeatherContent.children[0].firstElementChild.innerHTML = 'Today'
|
|
||||||
mainWeatherContent.children[1].firstElementChild.innerHTML = dayAcronymTommorow
|
|
||||||
mainWeatherContent.children[2].firstElementChild.innerHTML = dayAcronymIn2Days
|
|
||||||
|
|
||||||
mainWeatherContent.children[0].children[1].firstElementChild.src = weatherArrayToday.day.condition.icon
|
|
||||||
mainWeatherContent.children[1].children[1].firstElementChild.src = weatherArrayTommorow.day.condition.icon
|
|
||||||
mainWeatherContent.children[2].children[1].firstElementChild.src = weatherArray2Days.day.condition.icon
|
|
||||||
|
|
||||||
mainWeatherContent.children[0].children[2].firstElementChild.src = 'http://cdn.weatherapi.com/weather/64x64/day/302.png'
|
|
||||||
mainWeatherContent.children[1].children[2].firstElementChild.src = 'http://cdn.weatherapi.com/weather/64x64/day/302.png'
|
|
||||||
mainWeatherContent.children[2].children[2].firstElementChild.src = 'http://cdn.weatherapi.com/weather/64x64/day/302.png'
|
|
||||||
|
|
||||||
mainWeatherContent.children[0].children[1].lastElementChild.innerHTML = `${weatherArrayToday.day.avgtemp_c}°C`
|
|
||||||
mainWeatherContent.children[1].children[1].lastElementChild.innerHTML = `${weatherArrayTommorow.day.avgtemp_c}°C`
|
|
||||||
mainWeatherContent.children[2].children[1].lastElementChild.innerHTML = `${weatherArray2Days.day.avgtemp_c}°C`
|
|
||||||
|
|
||||||
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}%`
|
|
||||||
}
|
|
||||||
|
|
||||||
function changeTemperatureUnit(element) {
|
function changeTemperatureUnit(element) {
|
||||||
const unit = element.innerHTML
|
const unit = element.innerHTML
|
||||||
|
@ -206,9 +358,6 @@ function changeTemperatureUnit(element) {
|
||||||
document.querySelectorAll('.weather-article .active')[0].classList.remove('active')
|
document.querySelectorAll('.weather-article .active')[0].classList.remove('active')
|
||||||
element.classList.add('active')
|
element.classList.add('active')
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeCharactersInString(string, frontNumber, backNumber) { return string.slice(frontNumber, backNumber)}
|
|
||||||
|
|
||||||
function celsiusToFahrenheit(number) { return number * 9/5 + 32 }
|
function celsiusToFahrenheit(number) { return number * 9/5 + 32 }
|
||||||
function celsiusToKelvin(number) { return Number(number) + 273 }
|
function celsiusToKelvin(number) { return Number(number) + 273 }
|
||||||
function kelvinToFahrenheit(number) { return (number - 273) * 9/5 + 32 }
|
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 fahrenheitToCelsius(number) { return (number - 32) * 5/9 }
|
||||||
function fahrenheitToKelvin(number) { return (number - 32) * 5/9 + 273 }
|
function fahrenheitToKelvin(number) { return (number - 32) * 5/9 + 273 }
|
||||||
|
|
||||||
|
|
||||||
/* HEADLINES */
|
/* HEADLINES */
|
||||||
|
|
||||||
async function headlines() {
|
async function headlines() {
|
||||||
// await getWeather()
|
// await weather.getWeather()
|
||||||
// updateWeather()
|
// weather.updateWeather()
|
||||||
sidebarCategorySelect(document.querySelector('.fa-newspaper').parentElement)
|
sidebarCategorySelect(document.querySelector('.fa-newspaper').parentElement)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -231,22 +379,23 @@ async function headlines() {
|
||||||
if(window.location.search.match(regularExpressions.url.query) === null) return openLinks(filePath.headlines)
|
if(window.location.search.match(regularExpressions.url.query) === null) return openLinks(filePath.headlines)
|
||||||
|
|
||||||
addDisableSideElements()
|
addDisableSideElements()
|
||||||
console.log(extra === undefined)
|
// console.log(extra === undefined)
|
||||||
let locationSearch
|
|
||||||
if(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, '+', ' ')
|
mainSearchInput.value = addCharacterBetweenSpaceInString(searchInputValue, '+', ' ')
|
||||||
updateSearchBox(mainSearchInput.value.trim())
|
searchBox.update(mainSearchInput.value.trim())
|
||||||
} else {
|
} else {
|
||||||
console.log(createUrlExtraOptions())
|
let extraOptionsUrl = createUrlExtraOptions()
|
||||||
|
let selectedCountryAcronym = getCountryAcronym(selectedCountry.innerHTML)
|
||||||
|
historyPushState(websiteURL, extraOptionsUrl, selectedCountryAcronym, backgroundColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
hideSuggestWords()
|
hideSuggestWords()
|
||||||
suggestWords()
|
suggest.suggest()
|
||||||
|
|
||||||
/* Search news articles */
|
/* Search news articles */
|
||||||
}
|
}
|
||||||
|
|
||||||
function newSearch(extra) {
|
function newSearch(extra) {
|
||||||
if(extra !== undefined) {
|
if(extra !== undefined) {
|
||||||
|
|
||||||
|
@ -268,48 +417,25 @@ async function headlines() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function createUrlExtraOptions(type) {
|
function createUrlExtraOptions() {
|
||||||
let hasWordsV = hasWords.value
|
let url
|
||||||
let exactPhraseV = exactPhrase.value
|
let exactPhraseV = exactPhrase.value.trim()
|
||||||
let excludeWordsV = excludeWords.value
|
let hasWordsV = hasWords.value.trim()
|
||||||
|
let excludeWordsV = excludeWords.value.trim()
|
||||||
|
|
||||||
if(exactPhraseV.length !== 0 && hasWordsV.length === 0 && excludeWordsV.length === 0) return`"${exactPhraseV}"`
|
if(exactPhraseV.length !== 0 && hasWordsV.length === 0 && excludeWordsV.length === 0) url = `"${exactPhraseV.trim()}"`
|
||||||
else if(hasWordsV.length !== 0 && exactPhraseV.length === 0 && excludeWordsV.length === 0) return devideStringIntoWords(hasWordsV,'HW')
|
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) return devideStringIntoWords(excludeWordsV,'EW')
|
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 (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(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(excludeWordsV,'EW')}`
|
||||||
else if(exactPhraseV.length !== 0 && excludeWordsV.length !== 0 && hasWordsV.length !== 0) return `"${exactPhraseV}" ${devideStringIntoWords(hasWordsV,'HW')} ${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){
|
function devideStringIntoWords(string, keyword){
|
||||||
if(keyword === 'HW') return `+${string.replace(/\s/g,' +')}`
|
if(keyword === 'HW') return `+${string.replace(/\s/g, ' +')}`
|
||||||
if(keyword === 'EW') 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'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FOR YOU */
|
/* FOR YOU */
|
||||||
|
@ -346,40 +472,16 @@ function settings() {
|
||||||
function about() {
|
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 = () => {
|
mainSearchInput.onfocus = () => {
|
||||||
if(!extraSearchOptions.classList.contains('disable')) return manageExtraSearchOptions()
|
if(!extraSearchOptions.classList.contains('disable')) return manageExtraSearchOptions()
|
||||||
else if(mainSearchInput.value.length !== 0) showSuggestWords()
|
else if(mainSearchInput.value.length !== 0) showSuggestWords()
|
||||||
manageSuggestWords()
|
suggest.manageSuggestWords()
|
||||||
}
|
}
|
||||||
|
|
||||||
mainSearchInput.oninput = () => {
|
mainSearchInput.oninput = () => {
|
||||||
if(mainSearchInput.value.length === 0) return hideSuggestWords()
|
if(mainSearchInput.value.length === 0) return hideSuggestWords()
|
||||||
else if(suggestMainInput.classList.contains('disable')) showSuggestWords()
|
else if(suggestMainInput.classList.contains('disable')) showSuggestWords()
|
||||||
manageSuggestWords()
|
suggest.manageSuggestWords()
|
||||||
}
|
}
|
||||||
let place = 0
|
let place = 0
|
||||||
mainSearchInput.onkeyup = (e) => {
|
mainSearchInput.onkeyup = (e) => {
|
||||||
|
@ -387,8 +489,10 @@ mainSearchInput.onkeyup = (e) => {
|
||||||
let suggestDivActiveKey = suggestMainInput.querySelectorAll('div.active.key')
|
let suggestDivActiveKey = suggestMainInput.querySelectorAll('div.active.key')
|
||||||
if(e.keyCode === 13) {
|
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}`)
|
if(suggestDivActiveKey.length === 1)//historyPushState
|
||||||
else historyPushState(location.origin + location.pathname, `?q=${addCharacterBetweenSpaceInString(mainSearchInput.value, ' ', '+')}&`, `cou=${getCountryAcronym(selectedCountry.innerHTML)}&`,`bg=${backgroundColor}`)
|
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()
|
mainSearch()
|
||||||
// if(!suggestMainInput.classList.contains('disable')) hideSuggestWords()
|
// if(!suggestMainInput.classList.contains('disable')) hideSuggestWords()
|
||||||
// return mainSearch()
|
// 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) {
|
function updateCountrySelect(country) {
|
||||||
selectedCountry.innerHTML = country
|
selectedCountry.innerHTML = country
|
||||||
if(location.pathname.includes('search')) string = '&'
|
if(location.pathname.includes('search')) string = '&'
|
||||||
|
@ -539,15 +582,12 @@ function generateCountries() {
|
||||||
for(let i = 0; i < newCountriesArray.length; i++)
|
for(let i = 0; i < newCountriesArray.length; i++)
|
||||||
createElementsForCountry(newCountriesArray[i], 'not-active', 'normal')
|
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) {
|
function checkForDoubleCountriesSuggest(country) {
|
||||||
for(let i = 0; i < suggestCountriesArray.length; i++)
|
for(let i = 0; i < suggestCountriesArray.length; i++)
|
||||||
if(suggestCountriesArray[i] === country)
|
if(suggestCountriesArray[i] === country)
|
||||||
return true
|
return true
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
function createElementsForCountry(country, activeCountry, location) {
|
function createElementsForCountry(country, activeCountry, location) {
|
||||||
let aside = document.createElement('aside')
|
let aside = document.createElement('aside')
|
||||||
aside.classList.add('radio-button-container','grid')
|
aside.classList.add('radio-button-container','grid')
|
||||||
|
@ -584,7 +624,6 @@ function changeSelectedCountry(element) {
|
||||||
aside.firstElementChild.firstElementChild.classList.add('active')
|
aside.firstElementChild.firstElementChild.classList.add('active')
|
||||||
aside.firstElementChild.firstElementChild.firstElementChild.classList.add('active')
|
aside.firstElementChild.firstElementChild.firstElementChild.classList.add('active')
|
||||||
}
|
}
|
||||||
|
|
||||||
let lastSelectedCountry = null
|
let lastSelectedCountry = null
|
||||||
let selectedC = null
|
let selectedC = null
|
||||||
let newCountriesArray = []
|
let newCountriesArray = []
|
||||||
|
@ -677,7 +716,7 @@ hasWords.oninput = () => { inputExtraSearchOptionChange() }
|
||||||
excludeWords.oninput = () => { inputExtraSearchOptionChange() }
|
excludeWords.oninput = () => { inputExtraSearchOptionChange() }
|
||||||
|
|
||||||
function 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.disabled = true
|
||||||
submitButton.classList.add('ext-opt-submit-disable')
|
submitButton.classList.add('ext-opt-submit-disable')
|
||||||
submitButton.classList.remove('ext-opt-submit')
|
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 addDisableSideElements() { mainAsideContent.querySelectorAll('article').forEach(article => article.classList.add('disable')) }
|
||||||
function removeDisableSideElements() { mainAsideContent.querySelectorAll('article.disable').forEach(article => article.classList.remove('disable')) }
|
function removeDisableSideElements() { mainAsideContent.querySelectorAll('article.disable').forEach(article => article.classList.remove('disable')) }
|
||||||
|
|
||||||
function saveNews(element) {
|
function saveNews(element) {
|
||||||
|
|
||||||
if(element.lastElementChild.textContent === 'Save') {
|
if(element.lastElementChild.textContent === 'Save') {
|
||||||
element.firstElementChild.classList.remove('far')
|
element.firstElementChild.classList.remove('far')
|
||||||
element.firstElementChild.classList.add('fas')
|
element.firstElementChild.classList.add('fas')
|
||||||
|
@ -793,38 +756,23 @@ function followNews(element) {
|
||||||
//PHP
|
//PHP
|
||||||
}
|
}
|
||||||
|
|
||||||
function capitalizeString(string) { return string.charAt(0).toUpperCase() + string.slice(1) }
|
|
||||||
|
|
||||||
/* API */
|
/* API */
|
||||||
|
|
||||||
// fetchNewsArticles()
|
// 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(() => {
|
console.log(articles, `http://cors-anywhere.herokuapp.com/http://newsapi.org/v2/everything?q=-velenje america "coronavirus"&sortBy=popularity&apiKey=${key}`)
|
||||||
// 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)
|
|
||||||
}
|
}
|
||||||
sayHello.call('This', 'Nik Topler', 18)
|
|
||||||
|
|
||||||
const information = {
|
const information = {
|
||||||
firstName : 'Nik',
|
firstName : 'Nik',
|
||||||
|
@ -833,8 +781,18 @@ const information = {
|
||||||
let { firstName } = information
|
let { firstName } = information
|
||||||
// console.log(firstName)
|
// console.log(firstName)
|
||||||
|
|
||||||
|
function createFormData(word) {
|
||||||
let newArray = [1 ,2, 123, 23, 4, 3.123, 12, 93, 0]
|
let formData = new FormData
|
||||||
let result = newArray.filter( val => { return val % 2 === 1} )
|
formData.append(word, '')
|
||||||
// console.log(result)
|
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)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
16
JS/show.js
16
JS/show.js
|
@ -91,7 +91,7 @@ function hideSuggestWords() {
|
||||||
mainSearchInput.style.borderBottomLeftRadius = '6px'
|
mainSearchInput.style.borderBottomLeftRadius = '6px'
|
||||||
mainSearchInput.style.borderBottomRightRadius = '6px'
|
mainSearchInput.style.borderBottomRightRadius = '6px'
|
||||||
suggestMainInput.classList.add('disable')
|
suggestMainInput.classList.add('disable')
|
||||||
removeAllSuggestWordBoxes()
|
suggest.removeAllSuggestWordBoxes()
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideSelectCountry() {
|
function hideSelectCountry() {
|
||||||
|
@ -127,4 +127,16 @@ function resetExtraSearchOptions() {
|
||||||
indexTimeLabel.innerHTML = 'Anytime'
|
indexTimeLabel.innerHTML = 'Anytime'
|
||||||
for(let i = 0; i < 3; i++)
|
for(let i = 0; i < 3; i++)
|
||||||
document.querySelectorAll('.extra-search-options > div > input')[i].value = ''
|
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 */
|
// /** Google */
|
||||||
// function onSignIn(googleUser) {
|
function onSignIn(googleUser) {
|
||||||
// console.log('Logged in as: ' + JSON.stringify(googleUser.getBasicProfile()))
|
console.log('Logged in as: ' + JSON.stringify(googleUser.getBasicProfile()))
|
||||||
|
|
||||||
// let profile = googleUser.getBasicProfile()
|
let profile = googleUser.getBasicProfile()
|
||||||
// // console.log('ID: ' + profile.getId()) // Do not send to your backend! Use an ID token instead.
|
// console.log('ID: ' + profile.getId()) // Do not send to your backend! Use an ID token instead.
|
||||||
// // console.log('Name: ' + profile.getName())
|
// console.log('Name: ' + profile.getName())
|
||||||
// // console.log('Image URL: ' + profile.getImageUrl())
|
// console.log('Image URL: ' + profile.getImageUrl())
|
||||||
// // console.log('Email: ' + profile.getEmail())
|
// console.log('Email: ' + profile.getEmail())
|
||||||
// }
|
}
|
||||||
|
|
||||||
// function onFailure(error) {
|
function onFailure(error) {
|
||||||
// console.log(error)
|
console.log(error)
|
||||||
// }
|
}
|
||||||
// var googleUser = {};
|
var googleUser = {};
|
||||||
// var startApp = function() {
|
var startApp = function() {
|
||||||
// gapi.load('auth2', function(){
|
gapi.load('auth2', function(){
|
||||||
// auth2 = gapi.auth2.init({
|
auth2 = gapi.auth2.init({
|
||||||
// client_id: '571327981909-r5sunoo4l6uqducmqm7vjon1af0tmso1.apps.googleusercontent.com',
|
client_id: '571327981909-r5sunoo4l6uqducmqm7vjon1af0tmso1.apps.googleusercontent.com',
|
||||||
// cookiepolicy: 'single_host_origin',
|
cookiepolicy: 'single_host_origin',
|
||||||
// });
|
});
|
||||||
// attachSignin(document.getElementById('googleBtn'));
|
attachSignin(document.getElementById('googleBtn'));
|
||||||
// });
|
});
|
||||||
// };
|
};
|
||||||
// function attachSignin(element) {
|
function attachSignin(element) {
|
||||||
// auth2.attachClickHandler(element, {},
|
auth2.attachClickHandler(element, {},
|
||||||
// (googleUser) =>{
|
(googleUser) =>{
|
||||||
// console.log(googleUser.getBasicProfile())},
|
console.log(googleUser.getBasicProfile())},
|
||||||
// (error) => {
|
(error) => {
|
||||||
// // alert(JSON.stringify(error, undefined, 2));
|
// alert(JSON.stringify(error, undefined, 2));
|
||||||
// });
|
});
|
||||||
// }
|
}
|
||||||
// startApp()
|
startApp()
|
||||||
// function signOut() {
|
function signOut() {
|
||||||
// var auth2 = gapi.auth2.getAuthInstance()
|
var auth2 = gapi.auth2.getAuthInstance()
|
||||||
// auth2.signOut().then(function () {
|
auth2.signOut().then(function () {
|
||||||
// console.log('User signed out.')
|
console.log('User signed out.')
|
||||||
// })
|
})
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// /** GitHub */
|
/** GitHub */
|
||||||
|
|
||||||
// document.getElementById('github-button').addEventListener('click', () => {
|
document.getElementById('github-button').addEventListener('click', () => {
|
||||||
// // Initialize with your OAuth.io app public key
|
// Initialize with your OAuth.io app public key
|
||||||
// OAuth.initialize('_nPRfzTNGplyDCW0vD9dmek5QAg');
|
OAuth.initialize('_nPRfzTNGplyDCW0vD9dmek5QAg');
|
||||||
// // Use popup for oauth
|
// Use popup for oauth
|
||||||
// // Alternative is redirect
|
// Alternative is redirect
|
||||||
// OAuth.popup('github').then(github => {
|
OAuth.popup('github').then(github => {
|
||||||
// console.log('github:', github);
|
console.log('github:', github);
|
||||||
// // Retrieves user data from oauth provider
|
// Retrieves user data from oauth provider
|
||||||
// // Prompts 'welcome' message with User's email on successful login
|
// Prompts 'welcome' message with User's email on successful login
|
||||||
// // #me() is a convenient method to retrieve user data without requiring you
|
// #me() is a convenient method to retrieve user data without requiring you
|
||||||
// // to know which OAuth provider url to call
|
// to know which OAuth provider url to call
|
||||||
// github.me().then(data => {
|
github.me().then(data => {
|
||||||
// console.log('me data:', data);
|
console.log('me data:', data);
|
||||||
// // alert('GitHub says your email is:' + data.email + ".\nView browser 'Console Log' for more details");
|
// 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
|
// Retrieves user data from OAuth provider by using #get() and
|
||||||
// // OAuth provider url
|
// OAuth provider url
|
||||||
// github.get('/user').then(data => {
|
github.get('/user').then(data => {
|
||||||
// console.log('self data:', data);
|
console.log('self data:', data);
|
||||||
// })
|
})
|
||||||
// });
|
});
|
||||||
// })
|
})
|
||||||
|
|
||||||
|
|
||||||
// /** FaceBook */
|
// /** FaceBook */
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
<script src="../JS/variables.js" defer></script>
|
<script src="../JS/variables.js" defer></script>
|
||||||
<script src="../JS/show.js" defer></script>
|
<script src="../JS/show.js" defer></script>
|
||||||
<script src="../JS/main.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="../JS/sign.js" defer></script>
|
||||||
|
|
||||||
<script src="https://kit.fontawesome.com/89923351fd.js" crossorigin="anonymous" defer></script>
|
<script src="https://kit.fontawesome.com/89923351fd.js" crossorigin="anonymous" defer></script>
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
onclick="mainSearch('extra')">Search</button>
|
onclick="mainSearch('extra')">Search</button>
|
||||||
</footer>
|
</footer>
|
||||||
</aside>
|
</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">
|
<hr class="absolute">
|
||||||
</aside>
|
</aside>
|
||||||
</div>
|
</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();
|
$dotend->load();
|
||||||
|
|
||||||
if($_SERVER['REQUEST_METHOD'] !== 'POST') return;
|
if($_SERVER['REQUEST_METHOD'] !== 'POST') return;
|
||||||
if(isset($_POST['images'])) return image();
|
if(isset($_POST['images'])) echo $_ENV['IMAGE_API_KEY'];
|
||||||
if(isset($_POST['user'])) return user();
|
else if(isset($_POST['user'])) echo $_ENV['USER_LOCATION_API_KEY'];
|
||||||
if(isset($_POST['weather'])) return weather();
|
else if(isset($_POST['weather'])) echo $_ENV['WEATHER_API_KEY'];
|
||||||
|
else if(isset($_POST['news'])) echo $_ENV['NEWS_API_KEY'];
|
||||||
function image() { echo $_ENV['IMAGE_API_KEY']; }
|
|
||||||
function user() { echo $_ENV['USER_LOCATION_API_KEY']; }
|
|
||||||
function weather() { echo $_ENV['WEATHER_API_KEY']; }
|
|
||||||
|
|
|
@ -12,8 +12,9 @@
|
||||||
<link rel="stylesheet" href="CSS/index.css">
|
<link rel="stylesheet" href="CSS/index.css">
|
||||||
|
|
||||||
<script src="JS/variables.js" defer></script>
|
<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/main.js" defer></script>
|
||||||
|
<script src="JS/show.js" defer></script>
|
||||||
<script src="JS/sign.js" defer></script>
|
<script src="JS/sign.js" defer></script>
|
||||||
|
|
||||||
<script src="https://kit.fontawesome.com/89923351fd.js" crossorigin="anonymous" defer></script>
|
<script src="https://kit.fontawesome.com/89923351fd.js" crossorigin="anonymous" defer></script>
|
||||||
|
|
Loading…
Reference in a new issue