mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-12-25 19:04:18 +00:00
remove new news system as it needs more work
This commit is contained in:
parent
ea48e479f2
commit
2b164fc51d
@ -9,7 +9,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col s12">
|
<div class="col s12">
|
||||||
<div id="aggregated-news"></div>
|
|
||||||
<div class="card" id="april-2022-update">
|
<div class="card" id="april-2022-update">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<span class="card-title">April 2022 update</span>
|
<span class="card-title">April 2022 update</span>
|
||||||
@ -127,143 +126,3 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock page_content %}
|
{% endblock page_content %}
|
||||||
|
|
||||||
{% block scripts %}
|
|
||||||
{{ super() }}
|
|
||||||
<script>
|
|
||||||
function getMastodonStatuses() {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
fetch(`https://fedihum.org/api/v1/accounts/109386364241901080/statuses`, {method: 'GET', headers: {Accept: 'application/json'}})
|
|
||||||
.then((response) => {
|
|
||||||
if (!response.ok) {reject(response);}
|
|
||||||
return response.json();
|
|
||||||
})
|
|
||||||
.then((statuses) => {resolve(statuses);})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function getBisBlogsEntries() {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
fetch(`https://blogs.uni-bielefeld.de/blog/uniintern/feed/entries/atom?cat=%2FAllgemein`, {method: 'GET', headers: {Accept: 'application/xml'}})
|
|
||||||
.then((response) => {
|
|
||||||
if (!response.ok) {reject(response);}
|
|
||||||
return response.text();
|
|
||||||
})
|
|
||||||
.then((responseText) => {return new DOMParser().parseFromString(responseText, 'application/xml');})
|
|
||||||
.then((xmlDocument) => {return xmlDocument.toObject();})
|
|
||||||
.then((feed) => {resolve(feed);});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function sortAggregatedNews(a, b) {
|
|
||||||
let aDate;
|
|
||||||
let bDate;
|
|
||||||
|
|
||||||
switch (a.source) {
|
|
||||||
case 'mastodon':
|
|
||||||
aDate = new Date(a.created_at);
|
|
||||||
break;
|
|
||||||
case 'big-blogs':
|
|
||||||
aDate = new Date(a.published);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new Error('Unknown source');
|
|
||||||
}
|
|
||||||
switch (b.source) {
|
|
||||||
case 'mastodon':
|
|
||||||
bDate = new Date(b.created_at);
|
|
||||||
break;
|
|
||||||
case 'big-blogs':
|
|
||||||
bDate = new Date(b.published);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new Error('Unknown source');
|
|
||||||
}
|
|
||||||
return bDate - aDate;
|
|
||||||
}
|
|
||||||
function aggregateNews() {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
Promise.all([getMastodonStatuses(), getBisBlogsEntries()])
|
|
||||||
.then(
|
|
||||||
(responses) => {
|
|
||||||
console.log(responses[1]);
|
|
||||||
let mastodonStatuses = responses[0].map((obj) => {return { ...obj, source: 'mastodon'}});
|
|
||||||
let bisBlogsEntries = responses[1].feed.entry.map((obj) => {return { ...obj, source: 'big-blogs'};});
|
|
||||||
let aggregatedNews = [...mastodonStatuses, ...bisBlogsEntries];
|
|
||||||
aggregatedNews.sort(sortAggregatedNews);
|
|
||||||
resolve(aggregatedNews);
|
|
||||||
},
|
|
||||||
(error) => {reject(error);}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function mastodonStatusToElement(status) {
|
|
||||||
let date = new Date(status.created_at).toLocaleString('en-US');
|
|
||||||
let newsElement = Utils.HTMLToElement(
|
|
||||||
`
|
|
||||||
<div class="row">
|
|
||||||
<div class="col s11">
|
|
||||||
<div class="card white-text" style="background-color:#5D50E7; border-radius:10px;">
|
|
||||||
<div class="card-content">
|
|
||||||
<span class="card-title">New Actitvity on Mastodon</span>
|
|
||||||
<p><i>Published on ${date}</i></p>
|
|
||||||
<br>
|
|
||||||
<p>${status.content}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col s1">
|
|
||||||
<img src="https://joinmastodon.org/logos/logo-purple.svg" alt="Mastodon" class="responsive-img hide-on-small-only" style="width:70%; margin-top:30px;">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`
|
|
||||||
);
|
|
||||||
return newsElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
function bisBlogsEntryToElement(entry) {
|
|
||||||
let date = new Date(entry.published).toLocaleString('en-US');
|
|
||||||
let newsElement = Utils.HTMLToElement(
|
|
||||||
`
|
|
||||||
<div class="row">
|
|
||||||
<div class="col s1">
|
|
||||||
<img src="https://blogs.uni-bielefeld.de/blog/uniintern/resource/themabilder/unilogo-square.svg" alt="Bielefeld University Blogs" class="responsive-img hide-on-small-only" style="width:70%; margin-top:40px;">
|
|
||||||
</div>
|
|
||||||
<div class="col s11">
|
|
||||||
<div class="card" style="background-color: #A5BDCC; border-radius:10px;">
|
|
||||||
<div class="card-content">
|
|
||||||
<span class="card-title">${entry.title['#text']}</span>
|
|
||||||
<p><i>Published on ${date}</i></p>
|
|
||||||
<br>
|
|
||||||
<p>${entry.content['#text']}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`
|
|
||||||
);
|
|
||||||
let newsImageElements = newsElement.querySelectorAll('img');
|
|
||||||
for (let newsImageElement of newsImageElements) {
|
|
||||||
newsImageElement.classList.add('responsive-img');
|
|
||||||
}
|
|
||||||
return newsElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
let aggregatedNewsElement = document.querySelector('#aggregated-news');
|
|
||||||
aggregateNews().then((aggregatedNews) => {
|
|
||||||
for (let item of aggregatedNews) {
|
|
||||||
let newsElement;
|
|
||||||
switch (item.source) {
|
|
||||||
case 'mastodon':
|
|
||||||
newsElement = mastodonStatusToElement(item);
|
|
||||||
break;
|
|
||||||
case 'big-blogs':
|
|
||||||
newsElement = bisBlogsEntryToElement(item);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new Error('Unknown source');
|
|
||||||
}
|
|
||||||
aggregatedNewsElement.appendChild(newsElement);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
{% endblock scripts %}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user