You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.9 KiB
JavaScript
107 lines
2.9 KiB
JavaScript
/* global define, dijit */
|
|
|
|
define(["dojo/_base/declare", "dijit/tree/ForestStoreModel"], function (declare) {
|
|
|
|
return declare("fox.FeedStoreModel", dijit.tree.ForestStoreModel, {
|
|
getItemsInCategory: function (id) {
|
|
if (!this.store._itemsByIdentity) return undefined;
|
|
|
|
const cat = this.store._itemsByIdentity['CAT:' + id];
|
|
|
|
if (cat && cat.items)
|
|
return cat.items;
|
|
else
|
|
return undefined;
|
|
|
|
},
|
|
getItemById: function (id) {
|
|
return this.store._itemsByIdentity[id];
|
|
},
|
|
getFeedValue: function (feed, is_cat, key) {
|
|
if (!this.store._itemsByIdentity) return undefined;
|
|
|
|
let treeItem;
|
|
|
|
if (is_cat)
|
|
treeItem = this.store._itemsByIdentity['CAT:' + feed];
|
|
else
|
|
treeItem = this.store._itemsByIdentity['FEED:' + feed];
|
|
|
|
if (treeItem)
|
|
return this.store.getValue(treeItem, key);
|
|
},
|
|
getFeedName: function (feed, is_cat) {
|
|
return this.getFeedValue(feed, is_cat, 'name');
|
|
},
|
|
getFeedUnread: function (feed, is_cat) {
|
|
const unread = parseInt(this.getFeedValue(feed, is_cat, 'unread'));
|
|
return (isNaN(unread)) ? -1 : unread;
|
|
},
|
|
setFeedUnread: function (feed, is_cat, unread) {
|
|
return this.setFeedValue(feed, is_cat, 'unread', parseInt(unread));
|
|
},
|
|
setFeedValue: function (feed, is_cat, key, value) {
|
|
if (!value) value = '';
|
|
if (!this.store._itemsByIdentity) return undefined;
|
|
|
|
let treeItem;
|
|
|
|
if (is_cat)
|
|
treeItem = this.store._itemsByIdentity['CAT:' + feed];
|
|
else
|
|
treeItem = this.store._itemsByIdentity['FEED:' + feed];
|
|
|
|
if (treeItem)
|
|
return this.store.setValue(treeItem, key, value);
|
|
},
|
|
getNextUnreadFeed: function (feed, is_cat) {
|
|
if (!this.store._itemsByIdentity)
|
|
return null;
|
|
|
|
let treeItem;
|
|
|
|
if (is_cat) {
|
|
treeItem = this.store._itemsByIdentity['CAT:' + feed];
|
|
} else {
|
|
treeItem = this.store._itemsByIdentity['FEED:' + feed];
|
|
}
|
|
|
|
const items = this.store._arrayOfAllItems;
|
|
|
|
for (let i = 0; i < items.length; i++) {
|
|
if (items[i] == treeItem) {
|
|
|
|
for (let j = i + 1; j < items.length; j++) {
|
|
const unread = this.store.getValue(items[j], 'unread');
|
|
const id = this.store.getValue(items[j], 'id');
|
|
|
|
if (unread > 0 && ((is_cat && id.match("CAT:")) || (!is_cat && id.match("FEED:")))) {
|
|
if (!is_cat || !(this.store.hasAttribute(items[j], 'parent_id') && this.store.getValue(items[j], 'parent_id') == feed)) return items[j];
|
|
}
|
|
}
|
|
|
|
for (let j = 0; j < i; j++) {
|
|
const unread = this.store.getValue(items[j], 'unread');
|
|
const id = this.store.getValue(items[j], 'id');
|
|
|
|
if (unread > 0 && ((is_cat && id.match("CAT:")) || (!is_cat && id.match("FEED:")))) {
|
|
if (!is_cat || !(this.store.hasAttribute(items[j], 'parent_id') && this.store.getValue(items[j], 'parent_id') == feed)) return items[j];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return null;
|
|
},
|
|
hasCats: function () {
|
|
if (this.store && this.store._itemsByIdentity)
|
|
return this.store._itemsByIdentity['CAT:-1'] != undefined;
|
|
else
|
|
return false;
|
|
},
|
|
|
|
});
|
|
});
|
|
|
|
|