platypush/platypush/backend/http/static/js/widgets/rss-news/index.js

41 lines
1.2 KiB
JavaScript

Vue.component('rss-news', {
template: '#tmpl-widget-rss-news',
props: ['config'],
data: function() {
return {
articles: [],
queue: [],
currentArticle: undefined,
};
},
methods: {
refresh: async function() {
if (!this.queue.length) {
this.articles = await request('db.select', {
engine: this.config.db,
query: "select s.title as source, e.title, e.summary, " +
"strftime('%Y-%m-%dT%H:%M:%fZ', e.published) as published " +
"from FeedEntry e join FeedSource s " +
"on e.source_id = s.id order by e.published limit " +
('limit' in this.config ? this.config.limit : 10)
});
this.queue = [...this.articles];
}
if (!this.queue.length)
return;
this.currentArticle = this.queue.pop();
},
},
mounted: function() {
this.refresh();
setInterval(this.refresh, 'refresh_seconds' in this.config ? this.config.refresh_seconds*1000 : 15000);
},
});