Internet_programming/Lab3/news.html
2023-12-10 23:31:11 +03:00

138 lines
6.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Моя страница</title>
<!-- Подключаем стили Bootstrap для карточек -->
<link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
<link href="node_modules/@fortawesome/fontawesome-free/css/all.min.css"
rel="stylesheet" />
<link rel="stylesheet" href="styles/style.css">
<style>
/* Дополнительные стили для карточек */
.news-card {
margin-bottom: 20px;
}
</style>
</head>
<body class="d-flex flex-column h-100">
<header class="bg-white">
<nav class="navbar navbar-expand-lg navbar-light mb-4">
<div class="container">
<a class="navbar-brand text-dark" href="/">
<img src="img/logo_header.png" alt="Мой логотип" width="280" height="60">
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse align-items-center" id="navbarNav">
<ul class="d-flex justify-content-between align-items-center list-unstyled w-100 m-0 mx-auto">
<li class="nav-item">
<a class="nav-link" href="second.html">Об университете</a>
</li>
<li class="nav-item">
<a class="nav-link ms-2" href="third.html">Студенческая жизнь</a>
</li>
<li class="nav-item">
<a class="nav-link ms-2" href="fourth.html">Мир спорта</a>
</li>
<li class="nav-item">
<a class="btn btn-purple text-center ms-2" href="fifth.html">Личный кабинет</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<!-- Место для отображения карточек -->
<div class="container">
<div class="row" id="news-cards-container">
<!-- Карточки будут отображены здесь -->
</div>
</div>
<footer class="footer mt-auto text-white py-1">
<div class="container">
<div class="row align-items-center">
<div class="col-md-4">
<a class="navbar-brand text-dark" href="/">
<img src="img/logo_footer.png" width="240" height="60" alt="Мой логотип в футере">
</a>
</div>
<div class="col-md-4">
<p class="mb-1 mt-0">Адрес и контакты</p>
<p class="mb-1 mt-0">432027, г. Ульяновск, ул. Северный Венец, д. 32</p>
<p class="mb-1 mt-0">Приёмная ректора: +7 (8422) 43-06-43,
<a href="mailto:rector@ulstu.ru" class="footer-contacts__mail">rector@ulstu.ru</a>
</p>
<p class="mb-1 mt-0">Вопросы по сайту:
<a href="mailto:web@ulstu.ru" class="footer-contacts__mail">web@ulstu.ru</a>
</p>
</div>
<div class="col-md-4 text-md-center">
<a class="nav-link" href="second.html">Об университете</a>
</div>
</div>
</div>
</footer>
<!-- Подключаем скрипт для работы с данными -->
<script type="module">
import {
getAllLines, getLine, updateLine,
} from "./js/cards_api";
// Функция для создания карточки на основе данных
function createNewsCard(newsData) {
const maxTextLength = 150;
const truncatedText = newsData.text.length > maxTextLength ? newsData.text.substring(0, maxTextLength) + '...' : newsData.text;
const imageUrl = newsData.image ? newsData.image : 'https://via.placeholder.com/200'; // Дефолтное изображение
const cardHtml = `
<div class="col-md-4">
<div class="card news-card">
<img src="${imageUrl}" class="card-img-top" alt="Изображение новости">
<div class="card-body">
<h5 class="card-title">${newsData.title}</h5>
<p class="card-text">${truncatedText}</p>
<p class="card-text">${new Date().toLocaleDateString()}</p>
</div>
</div>
</div>
`;
return cardHtml;
}
// Функция для загрузки и отображения карточек
async function loadAndDisplayNewsCards() {
try {
// Получаем данные с сервера с помощью функции из card.js
const lines = await getAllLines();
const newsCardsContainer = document.getElementById('news-cards-container');
// Перебираем полученные данные и создаем карточки для каждой новости
lines.forEach(line => {
const newsCard = createNewsCard({
title: line.title,
text: line.text,
image: line.image,
date:line.date
});
newsCardsContainer.innerHTML += newsCard;
});
} catch (error) {
console.error('Ошибка загрузки данных:', error);
}
}
// Вызываем функцию для загрузки и отображения карточек при загрузке страницы
window.onload = loadAndDisplayNewsCards;
</script>
</body>
</html>