From 1439581016c6d5e1a82a0598225188233c0078d3 Mon Sep 17 00:00:00 2001 From: Alexey Skobkin Date: Sat, 20 Mar 2021 19:40:38 +0300 Subject: [PATCH] JavaScript refactoring. Simple server list page added. Info page added. Links on index replaced with working pages. --- index.html | 48 ++++++++++++++++--------- info.html | 83 +++++++++++++++++++++++++++++++++++++++++++ js/functions.js | 33 +++++++++++++++++ js/list-servers.js | 19 ++++++++++ js/random-server.js | 10 ++---- servers.html | 86 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 254 insertions(+), 25 deletions(-) create mode 100644 info.html create mode 100644 js/functions.js create mode 100644 js/list-servers.js create mode 100644 servers.html diff --git a/index.html b/index.html index aa1744f..415f57f 100644 --- a/index.html +++ b/index.html @@ -15,9 +15,10 @@ + + - @@ -26,31 +27,44 @@
@@ -92,7 +106,7 @@ Если вы хотите ответственно подойти к выбору места, где будете вести свой блог - воспользуйтесь списками серверов.

- Выбрать самостоятельно » + Выбрать самостоятельно »

@@ -104,7 +118,7 @@ Проходите по ссылке ниже чтобы увидеть подборку ссылок на полезные материалы.

- Полезные материалы » + Полезные материалы »

diff --git a/info.html b/info.html new file mode 100644 index 0000000..e71e1b6 --- /dev/null +++ b/info.html @@ -0,0 +1,83 @@ + + + + + + + + Into the Fediverse! + + + + + + + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/js/functions.js b/js/functions.js new file mode 100644 index 0000000..7bfef72 --- /dev/null +++ b/js/functions.js @@ -0,0 +1,33 @@ +/** + * Returns random key from the object. + * + * @param {object} obj + * @returns {string} + */ +function getRandomKey(obj) { + let keys = Object.keys(obj); + + return keys[ keys.length * Math.random() << 0 ]; +}; + +/** + * Randomly sorts an array. + * + * @param {array} array + * @returns {array} + */ +function shuffleArray(array) { + return array.sort(function(a, b) { + return getRandomInt(1) ? 1 : -1; + }); +} + +/** + * Returns random number from 0 to max. + * + * @param {number} max + * @returns {number} + */ +function getRandomInt(max) { + return Math.floor(Math.random() * Math.floor(max + 1)); +} diff --git a/js/list-servers.js b/js/list-servers.js new file mode 100644 index 0000000..03d0d20 --- /dev/null +++ b/js/list-servers.js @@ -0,0 +1,19 @@ +// Should be included using 'defer' after servers.js and functions.js + +let listGroup = document.getElementById('server-list'); + +let shuffledServerNames = shuffleArray(Object.keys(instances)); +console.log('shuffled: ', shuffledServerNames); + +for (serverName of shuffledServerNames) { + let url = instances[serverName]; + + // Creating list item + let item = document.createElement('a'); + item.setAttribute('class', 'list-group-item'); + item.setAttribute('href', url); + item.innerText = serverName; + + listGroup.appendChild(item); +} + diff --git a/js/random-server.js b/js/random-server.js index 7846748..8dc58a1 100644 --- a/js/random-server.js +++ b/js/random-server.js @@ -1,4 +1,4 @@ -// Should be included using 'defer' after servers.js +// Should be included using 'defer' after servers.js and functions.js let serverName = getRandomKey(instances); let url = instances[serverName]; @@ -7,10 +7,4 @@ console.log('Randomly selected: ', serverName, url); let linkElement = document.getElementById('reg-link'); linkElement.setAttribute('href', url); -linkElement.innerHTML = 'Регистрация на ' + serverName; - -function getRandomKey(obj) { - let keys = Object.keys(obj); - - return keys[ keys.length * Math.random() << 0 ]; -}; \ No newline at end of file +linkElement.innerText = 'Регистрация на ' + serverName; diff --git a/servers.html b/servers.html new file mode 100644 index 0000000..2f17c9e --- /dev/null +++ b/servers.html @@ -0,0 +1,86 @@ + + + + + + + + Into the Fediverse! + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Рекомендованные русскоязычные серверы

+ +
+ +
+
+
+
+
+ + + + + \ No newline at end of file