summaryrefslogtreecommitdiff
path: root/js/FeedStoreModel.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2018-08-23 09:56:34 +0300
committerAndrew Dolgov <[email protected]>2018-08-23 09:56:34 +0300
commita3e2f1a9c3b7fa5688f908bd0aa9ed4c6c539953 (patch)
treedee65ed57833371139cb62b97cae0de43aa5979a /js/FeedStoreModel.js
parent54727f9534f8b17b57d87577ed1ec0e8be8be0f3 (diff)
define custom dojo modules with define() instead of require(), update startup module dependencies
Diffstat (limited to 'js/FeedStoreModel.js')
-rw-r--r--js/FeedStoreModel.js98
1 files changed, 98 insertions, 0 deletions
diff --git a/js/FeedStoreModel.js b/js/FeedStoreModel.js
new file mode 100644
index 000000000..49641a732
--- /dev/null
+++ b/js/FeedStoreModel.js
@@ -0,0 +1,98 @@
+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;
+
+ 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;
+
+ 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) {
+ var unread = parseInt(this.getFeedValue(feed, is_cat, 'unread'));
+ return (isNaN(unread)) ? 0 : 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;
+
+ 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;
+
+ if (is_cat) {
+ treeItem = this.store._itemsByIdentity['CAT:' + feed];
+ } else {
+ treeItem = this.store._itemsByIdentity['FEED:' + feed];
+ }
+
+ items = this.store._arrayOfAllItems;
+
+ for (var i = 0; i < items.length; i++) {
+ if (items[i] == treeItem) {
+
+ for (var j = i + 1; j < items.length; j++) {
+ var unread = this.store.getValue(items[j], 'unread');
+ var 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 (var j = 0; j < i; j++) {
+ var unread = this.store.getValue(items[j], 'unread');
+ var 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;
+ },
+
+ });
+});
+
+