Современные информационные технологии. 4 курс. Лабораторное занятие №1. Подгруппа 2. Простой mash-up
Часть первая:
Вам необходимо собрать обработанные данные из разнородных источников и сгруппировать их. Для создания стартового форка (fork) вы:
1) Переходите к мэшап-платформе https://www.pipes.digital/ и регистрируетесь в ней до начала работы.
1) Переходите к мэшап-платформе https://www.pipes.digital/ и регистрируетесь в ней до начала работы.
2) Создаете несколько фид-каналов (не менее трех) из любого источника (в моем случае - YouTube). Для соединения компонентов – зажать первый компонент (он станет светлее) и кликнуть на второй. Для удаления связи (если компоненты соединились по ошибке) – кликнуть левой кнопкой и сдвинуть курсор.
3)Выбираете контроллер Combine и собираете в него эти фиды.
4) На выходе добавляете секвенсер Sort с произвольным аутпутом (у меня - item.updated и автосортировка).
5) Добавляете фильтры мэшапа таким образом, чтобы на выходе получался распознаваемый по этим фильтрам поток (если их несколько и вы обрабатываете фильтрованный фид другим фильтром - то просто последовательно).
6) Добавляете инструмент исключений (Replace) - по ключевому слову (словам). Важно! Разделителем в фильтре является модульный слеш "|"
7) Через инструмент Truncate задаете число модулей в ленте.
8) Выдаете весь фид в итоговый канал и сохраняете готовый мэшап. После сохранения открываете мэшап в настройках профиля и делаете общедоступным (make public).
Часть вторая:
Теперь вам нужно упаковать ваш RSS в виджет и разместить на странице в блоге. Для этого вам потребуются параметры стилей в CSS, динамический сценарий JavaScript и непосредственно HTML.
CSS
9) Задаем шрифт, цвет абзацев и ссылок:
html, body {
font-family: Roboto;
}
a {
color: #fd084a;
text-decoration: none;
}
p {
color: #fff;
}
10) Указываем расположение описания:
.description {
margin-top: 50px;
}
11) Задаем положение и цвет стрелок навигации:
span.left-arrow, span.right-arrow {
color: #fbfbfb;
cursor: pointer;
display: block;
font-size: 1em;
height: auto;
padding: 1em;
position: absolute;
top: 80%;
transition: all 0.3s ease;
width: auto;
z-index: 999;
}
span.left-arrow:hover, span.right-arrow:hover {
background-color: #87CEEB;
}
.left-arrow {
right: 60px;
}
.right-arrow {
right: 0;
}
12) Указываем цвета и положение слайдера
.slider {
color: #fbfbfb;
overflow: hidden;
position: relative;
}
.slider .carousel {
height: 200px;
list-style: none;
margin: 0;
padding: 0;
position: relative;
}
.slider .carousel .carousel-footer {
color: #ffffff;
bottom: -80px;
position: relative;
}
13) Задаем фон слайдера:
.slider .carousel li {
background-image: url(здесь ваш фон);
display: block;
float: left;
height: 300px;
margin: 0;
padding: 70px 0;
position: relative;
text-align: center;
}
.slider .carousel li h3, .slider .carousel li a, .slider .carousel li p {
color: #fbfbfb;
}
14) Указываем параметры адаптивной верстки:
@media only screen and (min-width: 780px) {
.slider .carousel li {
width: 700px;
}
}
@media only screen and (min-width: 680px) and (max-width: 779px) {
.slider .carousel li {
width: 600px;
}
}
@media only screen and (min-width: 480px) and (max-width: 679px) {
.slider .carousel li {
width: 400px;
}
}
@media only screen and (min-width: 320px) and (max-width: 479px) {
.slider .carousel li {
width: 300px;
}
}
@media only screen and (max-width: 319px) {
.slider .carousel li {
width: 200px;
}
}
15) Задаем фон фида и его размеры:
.feed {
background-color: #fbfbfb;
margin: auto;
}
.feed ul {
width: 100%;
margin: 0;
padding: 0;
}
16) Цвет заголовков фида:
.feed h3 {
color: #424242;
padding: 0 0.8em;
}
.feed li {
align-items: center;
display: flex;
justify-content: flex-start;
list-style: none;
transition: background-color 0.3s ease;
width: 100%;
}
17) Цвет ссылок фида (активных и неактивных)
.feed li a {
color: #0000ff;
margin: 0;
padding: 1em;
}
.feed li:hover {
background-color: #87CEEB;
}
18) Адаптивная верстка для блока фида:
@media only screen and (min-width: 780px) {
.feed {
width: 700px;
}
}
@media only screen and (min-width: 680px) and (max-width: 779px) {
.feed {
width: 600px;
}
}
@media only screen and (min-width: 480px) and (max-width: 679px) {
.feed {
width: 400px;
}
}
@media only screen and (min-width: 320px) and (max-width: 479px) {
.feed {
width: 300px;
}
}
@media only screen and (max-width: 319px) {
.feed {
width: 200px;
}
}
19) И упаковку фида:
.wrapper {
align-items: center;
display: flex;
flex-direction: column;
margin: auto;
}
JavaScript
20) Задаем функцию RSS-запроса. Здесь вам нужно указать ссылку на фид из pipes digital:
var slideCount;
var slideWidth;
var slideHeight;
var sliderUlWidth;
$(function() {
getRssFeed("ссылка на ваш фид", mapFeed);
$('.left-arrow').on('click', function () {
moveLeft();
});
$('.right-arrow').on('click', function () {
moveRight();
});
$(window).on('resize', function () {
returnCarouselList();
});
});
21) Функция движения по стрелкам:
function moveLeft() {
$('.carousel').animate({
left: + slideWidth
}, 200, function () {
$('.carousel li:last-child').prependTo('.carousel');
$('.carousel').css('left', '');
});
}
function moveRight() {
$('.carousel').animate({
left: - slideWidth
}, 200, function () {
$('.carousel li:first-child').appendTo('.carousel');
$('.carousel').css('left', '');
});
}
22) Функция отображения RSS-канала:
function getRssFeed(url, callback) {
return feednami.loadGoogleFormat(encodeURI(url), callback);
}
function mapFeed(result) {
if (result.error) {
console.log(result.error)
} else {
createCarouselList(result.feed.entries.slice(0, 5));
createFeedList(result.feed.entries.slice(0, 20));
}
}
function createCarouselList(elements) {
var list = [];
$(elements).each(function(index, element) {
list.push("<li><h3><a href='"+ element.link +"'>"+ element.title +"</a></h3><p>"+ new Date(element.publishedDate).toLocaleDateString("pt-BR") +"</p><span class='carousel-footer'>"+ (index + 1) +" out of 5</span></li>");
});
$(".carousel").append(list);
}
function createFeedList(elements) {
var list = [];
$(elements).each(function(index, element) {
list.push("<li><a href='"+ element.link +"'>"+ element.title +"</a></li>");
});
$(".list").append(list);
returnCarouselList();
}
function returnCarouselList() {
slideCount = $('.carousel li').length;
slideWidth = $('.carousel li').width();
slideHeight = $('.carousel li').height();
sliderUlWidth = slideCount * slideWidth;
$('.slider').css({ width: slideWidth, height: slideHeight });
$('.carousel').css({ width: sliderUlWidth, marginLeft: - slideWidth });
$('.carousel li:last-child').prependTo('.carousel');
}
HTML
23) Указываем DOCTYPE, стандартный заголовок и стандарт библиотеки стилей:
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>Carousel Rss Feed Reader</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
24) Встраиваем шрифты:
<link rel='stylesheet' href='https://fonts.googleapis.com/icon?family=Material+Icons'>
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Roboto'>
25) Встраиваем CSS и закрываем </head>
26) Внутри <body> разворачиваем классы стрелок навигации:
<div class="wrapper">
<div class="slider">
<span class="left-arrow">
<i class="material-icons">keyboard_arrow_left</i>
</span>
<span class="right-arrow">
<i class="material-icons">keyboard_arrow_right</i>
</span>
27) Внедряем класс отображения сообщений:
<ul class="carousel"></ul> и закрываем </div>
28) Открываем класс фида с заголовком:
<div class="feed">
<h3>Последние публикации</h3>
29) Добавляем класс перечня:
<ul class="list"></ul> и закрываем оставшиеся классы:
</div>
</div>
30) Встраиваем стандарт библиотек JS:
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js'></script>
<script src='https://storage.googleapis.com/feednami-static/js/feednami-client-v1.0.1.js'></script>
31) Теперь ваш JavaScript и закрываем </body> и </html>
Если все верно, то ваш mash-up будет выглядеть примерно так: https://konoplevtech4.blogspot.com/2019/09/rss-feed.html
Обратите внимание, что из-за запроса данных из RSS страница может выгружаться медленно - до 20-30 секунд.
Ссылки на выполненное задание принимаются в комментариях к этому посту до 23:59 26 октября.
https://praktika-1.blogspot.com/2019/10/blog-post_25.html
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://borisovaanna56.blogspot.com/2019/10/youtube.html
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://dyadina74tatyana.blogspot.com/2019/10/blog-post.html
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://xeniakuchugova4.blogspot.com/2019/10/blog-post_25.html
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://ekaterinaaaaaaaaaaa.blogspot.com/2019/10/blog-post_25.html
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://elizavetabelyakova17.blogspot.com/2019/10/blog-post.html
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://xeniyafrolova21.blogspot.com/2019/10/mash-up.html
ОтветитьУдалитьОценка "отлично"
Удалитьhttps://koloskovayulya98.blogspot.com/2019/10/blog-post.html
ОтветитьУдалитьОценка "отлично"
Удалить