Skip to content

Commit

Permalink
Добавлен подсчёт количества скачиваний
Browse files Browse the repository at this point in the history
  • Loading branch information
1640max committed Feb 5, 2024
1 parent ad0cfa2 commit 475818c
Show file tree
Hide file tree
Showing 4 changed files with 105 additions and 15 deletions.
28 changes: 14 additions & 14 deletions _data/pieces.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
characters: 4 # Количество персонажей
description: |
Три критика с принципиально разными взглядами на театр должны у нас на глазах решить: кто из них достоин жить, а кто умрёт. А всё из-за сумасшедшего, но безусловно гениального режиссёра.
button-link:
button-link: /assets/pieces/
client: # Написана по заказу
client-link:
rewards: # Регалии
Expand All @@ -23,7 +23,7 @@
order: 2
characters: 3
description: Чёрная комедия про то, как парень попал в вольер с гориллой. Горилла агрессивная, а дверь, увы, заперта.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand All @@ -42,7 +42,7 @@
order: 3
characters: 4
description: Игорь едет на своей Волге из Волгограда в Волжский, наслаждаясь видами Волги и подвозя по дороге то своего брата до его дома, то симпатичную незнакомку до ветеринарной клиники. Во всех этих передвижениях незримо участвует Матушка. Волга Матушка. Его Мать. Его Родина.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand All @@ -61,7 +61,7 @@
Орки. Всегда обезличенные. Злые. Функциональные. Нужны в книгах и фильмах, только чтобы главный герой разрубил их мечом и добрался до заветной цели. Но только не в этой пьесе.
Нам не интересны герои, разрубающие орков мечами. Нам интересны именно орки. Кто они? Чем они живут? О чём думают? Чем они заняты в свободное от войн время?
Пьеса повествует о нескольких орочьих женщинах, ждущих возвращения своих мужей с фронта.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand All @@ -76,7 +76,7 @@
description: |
Андрюша — москвич мезозойской эры — целурозавр.
Ему кажется, что он всю жизнь занимался какой-то ерундой. Глеб, например, — профессиональный хищник, Алик — самый горячий самец в центральном округе, а Андрюша — простой падальщик. Чтобы показать, чего он стоит, Андрюша совершает опасное путешествие в далёкий город Московской области — Коломну, и возвращается оттуда совсем другим человеком. Ну то есть динозавром.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand All @@ -99,7 +99,7 @@
С детства?!
Добро пожаловать в Кукляндию!
Чёрная комедия для тех, кто детские театры (в плохом смысле этого слова) на дух не переносит.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand All @@ -113,7 +113,7 @@
characters: 2
description: |
В этой пьесе взрослый мужчина будет по телефонной связи 60 минут слушать мать. И если это не глубинная метафора жизни всего моего поколения, то я просто не знаю, что может быть глубже.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand Down Expand Up @@ -148,7 +148,7 @@
order: 8
characters: 4
description: В гостях у знаменитого блогера сам творец. Туть настроен серьёзно. Туть будет задавать вопросы. Как всегда, самые чёткие вопросы, самые ловкие, самые неудобные, колкие вопросы. Туть их все задаст. Бог ответит.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand Down Expand Up @@ -196,7 +196,7 @@
description: |
К деду на загородный участок свалилась ракета из космоса — курьерская доставка межпланетных посылок. Из посылки к нему выпрыгивает робопёс с сообщением, но деду не интересны сообщения. Ему интересно, а с какой стати приземлять своё железное корыто нужно непременно на его цветочный сад?!
Ироническая комедия про наших дедушек.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand All @@ -222,7 +222,7 @@
И вот тут, кажется, между ними может наклюнуться некий конфликт.
Конфликт 10-летнего беззащитного мальчика и древней злющей ведьмы.
Рекомендуется к просмотру бабушкам с внуками.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand Down Expand Up @@ -252,7 +252,7 @@
description: |
Лёва и Ксюша — влюблённые друг в друга застенчивые симпатичные подростки в острой фазе полового созревания. У Лёвы никого нет дома. Сегодня они с Ксюшей будут вместе. Всю ночь. В первый раз.
Получится ли у них всё, что они запланировали, решит голосование.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand All @@ -269,7 +269,7 @@
То, что он принесёт в свою пещеру, навсегда изменит жизнь всего племени. И не только племени.
Я надеюсь, изменится и жизнь всей планеты.
Нашей.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand All @@ -287,7 +287,7 @@
description: |
На ручье Сунгирь тридцать тысяч лет назад жили люди. Такие же люди, как мы, только без телефонов, спальных районов и очередей и одеты чуть более стильно. Всё натуральное: шкуры оленей и волков, бусины из костей мамонтов. Это были охотники, и в их жизнях бывало всякое. Такое, что нам сегодня и не снится: жизнь у подножия исполинского ледника, встреча с пещерным львом, погоня от шерстистого носорога, охота на гигантского оленя, двухметровые рога которого напоминают крылья орла. Посмотрим поближе на их фантастическую жизнь и узнаем, легко ли стать вождём племени «шерстистых мамонтов» и чем обычно заканчивается встреча с таким зверем.
P.S. В конце концов всё будет нормально, но согласитесь, звучит волнительно!
button-link:
button-link: /assets/pieces/
client: МИРА Центр в Суздале
client-link: https://myra.ru/
rewards:
Expand All @@ -314,7 +314,7 @@
characters: 10
description: |
Виктор Груз лёг в канаву у дороги. Зачем? Когда он из неё вылезет? Что его заставило так себя вести? Это всё очень интересует его невесту, его отца, его соседку, его товарища по рабочей борьбе, его повара с работы, его коллектора, его сестру, его начальника и даже местного новостного блогера.
button-link:
button-link: /assets/pieces/
client:
client-link:
rewards:
Expand Down
1 change: 1 addition & 0 deletions _layouts/page.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<script src="assets/js/sort.js"></script>
<script src="assets/js/drag-to-scroll.js"></script>
<script src="assets/js/highlightPiece.js"></script>
<script src="assets/js/counter.js"></script>
</head>
<body class="body">

Expand Down
81 changes: 81 additions & 0 deletions assets/js/counter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
// Сгенерено нейросеткой, куча косячностей

// Функция для обновления значения счетчика
function updateCounter(linkNumber, responseData) {
const count = responseData.count || 0; // Если параметр "count" отсутствует, установить значение по умолчанию 0
// Найти блок счетчика по id и обновить его содержимое
const counterElement = document.getElementById(`piece-${linkNumber}-counter`);
if (counterElement) {
counterElement.innerText = `${count}`;
}
}

// Функция для обработки клика по ссылке
function handleLinkClick(linkNumber) {
const url = 'https://api.counterapi.dev/v1/vyatkin-test2/piece-' + linkNumber + '/up';
fetch(url, { method: 'GET' })
.then(response => response.json())
.then(data => {
const count = data.count || 0; // Если параметр "count" отсутствует, установить значение по умолчанию 0
// Обновить значение счетчика после успешного запроса
updateCounter(linkNumber, { count });
})
.catch(error => console.error('Error updating counter:', error));
}


// Инициализация значений счетчиков после загрузки DOM дерева
document.addEventListener('DOMContentLoaded', function () {
// Автоматическое определение номеров ссылок на основе имеющихся элементов на странице
const linkButtons = document.querySelectorAll('.piece-card__button');
const linkNumbers = [];

linkButtons.forEach(button => {
const linkNumberMatch = button.id.match(/piece-(\d+)-button/);
if (linkNumberMatch) {
const linkNumber = linkNumberMatch[1];
linkNumbers.push(linkNumber);
}
});

// Повешение обработчика событий клика на каждую ссылку
linkButtons.forEach(button => {
const linkNumberMatch = button.id.match(/piece-(\d+)-button/);
if (linkNumberMatch) {
const linkNumber = linkNumberMatch[1];
button.addEventListener('click', () => handleLinkClick(linkNumber));
}
});

// Загрузите начальные значения счетчиков с паузой в 150 мс между запросами
linkNumbers.reduce((chain, linkNumber) => {
return chain.then(() => {
return new Promise(resolve => {
setTimeout(() => {
const url = `https://api.counterapi.dev/v1/vyatkin-test2/piece-${linkNumber}/`;
fetch(url)
.then(response => {
if (response.ok) {
return response.json();
} else if (response.status === 400 || response.status === 404) {
// В случае "400 Bad request", отправляем команду повышения значения на 1
return fetch(`https://api.counterapi.dev/v1/vyatkin-test2/piece-${linkNumber}/up`, { method: 'GET' })
.then(response => response.json());
} else {
throw new Error('Failed to fetch initial counter value');
}
})
.then(data => {
// Обновить значение счетчика после успешной загрузки
updateCounter(linkNumber, data);
resolve();
})
.catch(error => {
console.error('Error fetching initial counter value:', error);
resolve();
});
}, 50);
});
});
}, Promise.resolve());
});
10 changes: 9 additions & 1 deletion pieces.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ <h2 class="piece-card__title">{{ piece.title }}</h2>
<p class="piece-card__description">{{ piece.description }}</p>
<div class="delimiter piece-card__delimiter"></div>
<div class="piece-card__table">
{% if piece.button-link %}
<section class="data data_inline">
<header class="data__key">Скачиваний:</header>
<div class="data__value" id="piece-{{ piece.order }}-counter"></div>
</section>
{% endif %}
{% if piece.characters %}
<section class="data data_inline">
<header class="data__key">Персонажей:</header>
Expand Down Expand Up @@ -69,7 +75,9 @@ <h2 class="piece-card__title">{{ piece.title }}</h2>
</div>
{% if piece.button-link %}
<a class="button link-reset piece-card__button"
href="{{ piece.button-link }}">
id="piece-{{ piece.order }}-button"
href="{{ piece.button-link }}"
target="_blank">
{% if piece.button-text %}
{{ piece.button-text }}
{% else %}
Expand Down

0 comments on commit 475818c

Please sign in to comment.