Переглянути джерело

ReactiveCache, adding options to every method

Martin Filser 2 роки тому
батько
коміт
ba9e2debe2
1 змінених файлів з 286 додано та 234 видалено
  1. 286 234
      imports/reactiveCache.js

+ 286 - 234
imports/reactiveCache.js

@@ -3,108 +3,108 @@ import { Jsons } from './jsons';
 
 // Server isn't reactive, so search for the data always.
 ReactiveCacheServer = {
-  getBoard(idOrFirstObjectSelector) {
-    const ret = Boards.findOne(idOrFirstObjectSelector);
+  getBoard(idOrFirstObjectSelector, options) {
+    const ret = Boards.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getBoards(selector) {
-    const ret = Boards.find(selector).fetch();
+  getBoards(selector, options) {
+    const ret = Boards.find(selector, options).fetch();
     return ret;
   },
-  getList(idOrFirstObjectSelector) {
-    const ret = Lists.findOne(idOrFirstObjectSelector);
+  getList(idOrFirstObjectSelector, options) {
+    const ret = Lists.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getLists(selector) {
-    const ret = Lists.find(selector).fetch();
+  getLists(selector, options) {
+    const ret = Lists.find(selector, options).fetch();
     return ret;
   },
-  getSwimlane(idOrFirstObjectSelector) {
-    const ret = Swimlanes.findOne(idOrFirstObjectSelector);
+  getSwimlane(idOrFirstObjectSelector, options) {
+    const ret = Swimlanes.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getSwimlanes(selector) {
-    const ret = Swimlanes.find(selector).fetch();
+  getSwimlanes(selector, options) {
+    const ret = Swimlanes.find(selector, options).fetch();
     return ret;
   },
-  getChecklist(idOrFirstObjectSelector) {
-    const ret = Checklists.findOne(idOrFirstObjectSelector);
+  getChecklist(idOrFirstObjectSelector, options) {
+    const ret = Checklists.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getChecklists(selector) {
-    const ret = Checklists.find(selector).fetch();
+  getChecklists(selector, options) {
+    const ret = Checklists.find(selector, options).fetch();
     return ret;
   },
-  getChecklistItem(idOrFirstObjectSelector) {
-    const ret = ChecklistItems.findOne(idOrFirstObjectSelector);
+  getChecklistItem(idOrFirstObjectSelector, options) {
+    const ret = ChecklistItems.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getChecklistItems(selector) {
-    const ret = ChecklistItems.find(selector).fetch();
+  getChecklistItems(selector, options) {
+    const ret = ChecklistItems.find(selector, options).fetch();
     return ret;
   },
-  getCard(idOrFirstObjectSelector) {
-    const ret = Cards.findOne(idOrFirstObjectSelector);
+  getCard(idOrFirstObjectSelector, options) {
+    const ret = Cards.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getCards(selector) {
-    const ret = Cards.find(selector).fetch();
+  getCards(selector, options) {
+    const ret = Cards.find(selector, options).fetch();
     return ret;
   },
-  getCardComment(idOrFirstObjectSelector) {
-    const ret = CardComments.findOne(idOrFirstObjectSelector);
+  getCardComment(idOrFirstObjectSelector, options) {
+    const ret = CardComments.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getCardComments(selector) {
-    const ret = CardComments.find(selector).fetch();
+  getCardComments(selector, options) {
+    const ret = CardComments.find(selector, options).fetch();
     return ret;
   },
-  getCustomField(idOrFirstObjectSelector) {
-    const ret = CustomFields.findOne(idOrFirstObjectSelector);
+  getCustomField(idOrFirstObjectSelector, options) {
+    const ret = CustomFields.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getCustomFields(selector) {
-    const ret = CustomFields.find(selector).fetch();
+  getCustomFields(selector, options) {
+    const ret = CustomFields.find(selector, options).fetch();
     return ret;
   },
-  getAttachment(idOrFirstObjectSelector) {
-    const ret = Attachments.findOne(idOrFirstObjectSelector);
+  getAttachment(idOrFirstObjectSelector, options) {
+    const ret = Attachments.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getAttachments(selector) {
-    const ret = Attachments.find(selector).fetch();
+  getAttachments(selector, options) {
+    const ret = Attachments.find(selector, options).fetch();
     return ret;
   },
-  getUser(idOrFirstObjectSelector) {
-    const ret = Users.findOne(idOrFirstObjectSelector);
+  getUser(idOrFirstObjectSelector, options) {
+    const ret = Users.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getUsers(selector) {
-    const ret = Users.find(selector).fetch();
+  getUsers(selector, options) {
+    const ret = Users.find(selector, options).fetch();
     return ret;
   },
-  getOrg(idOrFirstObjectSelector) {
-    const ret = Org.findOne(idOrFirstObjectSelector);
+  getOrg(idOrFirstObjectSelector, options) {
+    const ret = Org.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getOrgs(selector) {
-    const ret = Org.find(selector).fetch();
+  getOrgs(selector, options) {
+    const ret = Org.find(selector, options).fetch();
     return ret;
   },
-  getTeam(idOrFirstObjectSelector) {
-    const ret = Team.findOne(idOrFirstObjectSelector);
+  getTeam(idOrFirstObjectSelector, options) {
+    const ret = Team.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getTeams(selector) {
-    const ret = Team.find(selector).fetch();
+  getTeams(selector, options) {
+    const ret = Team.find(selector, options).fetch();
     return ret;
   },
-  getActivity(idOrFirstObjectSelector) {
-    const ret = Activities.findOne(idOrFirstObjectSelector);
+  getActivity(idOrFirstObjectSelector, options) {
+    const ret = Activities.findOne(idOrFirstObjectSelector, options);
     return ret;
   },
-  getActivities(selector) {
-    const ret = Activities.find(selector).fetch();
+  getActivities(selector, options) {
+    const ret = Activities.find(selector, options).fetch();
     return ret;
   },
   getCurrentSetting() {
@@ -121,264 +121,316 @@ ReactiveCacheServer = {
 // saving the result has a big advantage if the query is big and often searched for the same data again and again
 // if the data is changed in the client, the data is saved to the server and depending code is reactive called again
 ReactiveCacheClient = {
-  getBoard(idOrFirstObjectSelector) {
+  getBoard(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__board) {
-      this.__board = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = Boards.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__board = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = Boards.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__board.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__board.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getBoards(selector) {
+  getBoards(selector, options) {
+    const select = {selector, options}
     if (!this.__boards) {
-      this.__boards = new DataCache(_selector => {
-        const _ret = Boards.find(Jsons.parse(_selector)).fetch();
+      this.__boards = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = Boards.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__boards.get(Jsons.stringify(selector));
+    const ret = this.__boards.get(Jsons.stringify(select));
     return ret;
   },
-  getList(idOrFirstObjectSelector) {
+  getList(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__list) {
-      this.__list = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = Lists.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__list = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = Lists.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__list.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__list.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getLists(selector) {
+  getLists(selector, options) {
+    const select = {selector, options}
     if (!this.__lists) {
-      this.__lists = new DataCache(_selector => {
-        const _ret = Lists.find(Jsons.parse(_selector)).fetch();
+      this.__lists = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = Lists.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__lists.get(Jsons.stringify(selector));
+    const ret = this.__lists.get(Jsons.stringify(select));
     return ret;
   },
-  getSwimlane(idOrFirstObjectSelector) {
+  getSwimlane(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__swimlane) {
-      this.__swimlane = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = Swimlanes.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__swimlane = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = Swimlanes.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__swimlane.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__swimlane.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getSwimlanes(selector) {
+  getSwimlanes(selector, options) {
+    const select = {selector, options}
     if (!this.__swimlanes) {
-      this.__swimlanes = new DataCache(_selector => {
-        const _ret = Swimlanes.find(Jsons.parse(_selector)).fetch();
+      this.__swimlanes = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = Swimlanes.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__swimlanes.get(Jsons.stringify(selector));
+    const ret = this.__swimlanes.get(Jsons.stringify(select));
     return ret;
   },
-  getChecklist(idOrFirstObjectSelector) {
+  getChecklist(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__checklist) {
-      this.__checklist = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = Checklists.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__checklist = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = Checklists.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__checklist.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__checklist.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getChecklists(selector) {
+  getChecklists(selector, options) {
+    const select = {selector, options}
     if (!this.__checklists) {
-      this.__checklists = new DataCache(_selector => {
-        const _ret = Checklists.find(Jsons.parse(_selector)).fetch();
+      this.__checklists = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = Checklists.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__checklists.get(Jsons.stringify(selector));
+    const ret = this.__checklists.get(Jsons.stringify(select));
     return ret;
   },
-  getChecklistItem(idOrFirstObjectSelector) {
+  getChecklistItem(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__checklistItem) {
-      this.__checklistItem = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = ChecklistItems.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__checklistItem = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = ChecklistItems.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__checklistItem.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__checklistItem.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getChecklistItems(selector) {
+  getChecklistItems(selector, options) {
+    const select = {selector, options}
     if (!this.__checklistItems) {
-      this.__checklistItems = new DataCache(_selector => {
-        const _ret = ChecklistItems.find(Jsons.parse(_selector)).fetch();
+      this.__checklistItems = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = ChecklistItems.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__checklistItems.get(Jsons.stringify(selector));
+    const ret = this.__checklistItems.get(Jsons.stringify(select));
     return ret;
   },
-  getCard(idOrFirstObjectSelector) {
+  getCard(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__card) {
-      this.__card = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = Cards.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__card = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = Cards.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__card.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__card.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getCards(selector) {
+  getCards(selector, options) {
+    const select = {selector, options}
     if (!this.__cards) {
-      this.__cards = new DataCache(_selector => {
-        const _ret = Cards.find(Jsons.parse(_selector)).fetch();
+      this.__cards = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = Cards.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__cards.get(Jsons.stringify(selector));
+    const ret = this.__cards.get(Jsons.stringify(select));
     return ret;
   },
-  getCardComment(idOrFirstObjectSelector) {
+  getCardComment(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__cardComment) {
-      this.__cardComment = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = CardComments.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__cardComment = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = CardComments.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__cardComment.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__cardComment.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getCardComments(selector) {
+  getCardComments(selector, options) {
+    const select = {selector, options}
     if (!this.__cardComments) {
-      this.__cardComments = new DataCache(_selector => {
-        const _ret = CardComments.find(Jsons.parse(_selector)).fetch();
+      this.__cardComments = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = CardComments.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__cardComments.get(Jsons.stringify(selector));
+    const ret = this.__cardComments.get(Jsons.stringify(select));
     return ret;
   },
-  getCustomField(idOrFirstObjectSelector) {
+  getCustomField(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__customField) {
-      this.__customField = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = CustomFields.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__customField = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = CustomFields.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__customField.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__customField.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getCustomFields(selector) {
+  getCustomFields(selector, options) {
+    const select = {selector, options}
     if (!this.__customFields) {
-      this.__customFields = new DataCache(_selector => {
-        const _ret = CustomFields.find(Jsons.parse(_selector)).fetch();
+      this.__customFields = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = CustomFields.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__customFields.get(Jsons.stringify(selector));
+    const ret = this.__customFields.get(Jsons.stringify(select));
     return ret;
   },
-  getAttachment(idOrFirstObjectSelector) {
+  getAttachment(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__attachment) {
-      this.__attachment = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = Attachments.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__attachment = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = Attachments.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__attachment.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__attachment.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getAttachments(selector) {
+  getAttachments(selector, options) {
+    const select = {selector, options}
     if (!this.__attachments) {
-      this.__attachments = new DataCache(_selector => {
-        const _ret = Attachments.find(Jsons.parse(_selector)).fetch();
+      this.__attachments = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = Attachments.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__attachments.get(Jsons.stringify(selector));
+    const ret = this.__attachments.get(Jsons.stringify(select));
     return ret;
   },
-  getUser(idOrFirstObjectSelector) {
+  getUser(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__user) {
-      this.__user = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = Users.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__user = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = Users.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__user.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__user.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getUsers(selector) {
+  getUsers(selector, options) {
+    const select = {selector, options}
     if (!this.__users) {
-      this.__users = new DataCache(_selector => {
-        const _ret = Users.find(Jsons.parse(_selector)).fetch();
+      this.__users = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = Users.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__users.get(Jsons.stringify(selector));
+    const ret = this.__users.get(Jsons.stringify(select));
     return ret;
   },
-  getOrg(idOrFirstObjectSelector) {
+  getOrg(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__org) {
-      this.__org = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = Org.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__org = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = Org.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__org.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__org.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getOrgs(selector) {
+  getOrgs(selector, options) {
+    const select = {selector, options}
     if (!this.__orgs) {
-      this.__orgs = new DataCache(_selector => {
-        const _ret = Org.find(Jsons.parse(_selector)).fetch();
+      this.__orgs = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = Org.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__orgs.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__orgs.get(Jsons.stringify(select));
     return ret;
   },
-  getTeam(idOrFirstObjectSelector) {
+  getTeam(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__team) {
-      this.__team = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = Team.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__team = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = Team.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__team.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__team.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getTeams(selector) {
+  getTeams(selector, options) {
+    const select = {selector, options}
     if (!this.__teams) {
-      this.__teams = new DataCache(_selector => {
-        const _ret = Team.find(Jsons.parse(_selector)).fetch();
+      this.__teams = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = Team.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__teams.get(Jsons.stringify(selector));
+    const ret = this.__teams.get(Jsons.stringify(select));
     return ret;
   },
-  getActivity(idOrFirstObjectSelector) {
+  getActivity(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
     if (!this.__activity) {
-      this.__activity = new DataCache(_idOrFirstObjectSelector => {
-        const _ret = Activities.findOne(Jsons.parse(_idOrFirstObjectSelector));
+      this.__activity = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = Activities.findOne(__select.idOrFirstObjectSelector, __select.options);
         return _ret;
       });
     }
-    const ret = this.__activity.get(Jsons.stringify(idOrFirstObjectSelector));
+    const ret = this.__activity.get(Jsons.stringify(idOrFirstObjectSelect));
     return ret;
   },
-  getActivities(selector) {
+  getActivities(selector, options) {
+    const select = {selector, options}
     if (!this.__activities) {
-      this.__activities = new DataCache(_selector => {
-        const _ret = Activities.find(Jsons.parse(_selector)).fetch();
+      this.__activities = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = Activities.find(__select.selector, __select.options).fetch();
         return _ret;
       });
     }
-    const ret = this.__activities.get(Jsons.stringify(selector));
+    const ret = this.__activities.get(Jsons.stringify(select));
     return ret;
   },
   getCurrentSetting() {
@@ -410,237 +462,237 @@ ReactiveCacheClient = {
 // - The Programmer hasn't to care about in which context he call's this class
 // - having all queries together in 1 class to make it possible to see which queries in Wekan happens, e.g. with console.log
 ReactiveCache = {
-  getBoard(idOrFirstObjectSelector) {
+  getBoard(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getBoard(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getBoard(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getBoard(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getBoard(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getBoards(selector) {
+  getBoards(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getBoards(selector);
+      ret = ReactiveCacheServer.getBoards(selector, options);
     } else {
-      ret = ReactiveCacheClient.getBoards(selector);
+      ret = ReactiveCacheClient.getBoards(selector, options);
     }
     return ret;
   },
-  getList(idOrFirstObjectSelector) {
+  getList(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getList(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getList(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getList(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getList(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getLists(selector) {
+  getLists(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getLists(selector);
+      ret = ReactiveCacheServer.getLists(selector, options);
     } else {
-      ret = ReactiveCacheClient.getLists(selector);
+      ret = ReactiveCacheClient.getLists(selector, options);
     }
     return ret;
   },
-  getSwimlane(idOrFirstObjectSelector) {
+  getSwimlane(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getSwimlane(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getSwimlane(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getSwimlane(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getSwimlane(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getSwimlanes(selector) {
+  getSwimlanes(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getSwimlanes(selector);
+      ret = ReactiveCacheServer.getSwimlanes(selector, options);
     } else {
-      ret = ReactiveCacheClient.getSwimlanes(selector);
+      ret = ReactiveCacheClient.getSwimlanes(selector, options);
     }
     return ret;
   },
-  getChecklist(idOrFirstObjectSelector) {
+  getChecklist(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getChecklist(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getChecklist(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getChecklist(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getChecklist(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getChecklists(selector) {
+  getChecklists(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getChecklists(selector);
+      ret = ReactiveCacheServer.getChecklists(selector, options);
     } else {
-      ret = ReactiveCacheClient.getChecklists(selector);
+      ret = ReactiveCacheClient.getChecklists(selector, options);
     }
     return ret;
   },
-  getChecklistItem(idOrFirstObjectSelector) {
+  getChecklistItem(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getChecklistItem(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getChecklistItem(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getChecklistItem(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getChecklistItem(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getChecklistItems(selector) {
+  getChecklistItems(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getChecklistItems(selector);
+      ret = ReactiveCacheServer.getChecklistItems(selector, options);
     } else {
-      ret = ReactiveCacheClient.getChecklistItems(selector);
+      ret = ReactiveCacheClient.getChecklistItems(selector, options);
     }
     return ret;
   },
-  getCard(idOrFirstObjectSelector) {
+  getCard(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getCard(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getCard(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getCard(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getCard(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getCards(selector) {
+  getCards(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getCards(selector);
+      ret = ReactiveCacheServer.getCards(selector, options);
     } else {
-      ret = ReactiveCacheClient.getCards(selector);
+      ret = ReactiveCacheClient.getCards(selector, options);
     }
     return ret;
   },
-  getCardComment(idOrFirstObjectSelector) {
+  getCardComment(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getCardComment(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getCardComment(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getCardComment(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getCardComment(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getCardComments(selector) {
+  getCardComments(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getCardComments(selector);
+      ret = ReactiveCacheServer.getCardComments(selector, options);
     } else {
-      ret = ReactiveCacheClient.getCardComments(selector);
+      ret = ReactiveCacheClient.getCardComments(selector, options);
     }
     return ret;
   },
-  getCustomField(idOrFirstObjectSelector) {
+  getCustomField(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getCustomField(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getCustomField(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getCustomField(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getCustomField(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getCustomFields(selector) {
+  getCustomFields(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getCustomFields(selector);
+      ret = ReactiveCacheServer.getCustomFields(selector, options);
     } else {
-      ret = ReactiveCacheClient.getCustomFields(selector);
+      ret = ReactiveCacheClient.getCustomFields(selector, options);
     }
     return ret;
   },
-  getAttachment(idOrFirstObjectSelector) {
+  getAttachment(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getAttachment(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getAttachment(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getAttachment(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getAttachment(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getAttachments(selector) {
+  getAttachments(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getAttachments(selector);
+      ret = ReactiveCacheServer.getAttachments(selector, options);
     } else {
-      ret = ReactiveCacheClient.getAttachments(selector);
+      ret = ReactiveCacheClient.getAttachments(selector, options);
     }
     return ret;
   },
-  getUser(idOrFirstObjectSelector) {
+  getUser(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getUser(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getUser(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getUser(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getUser(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getUsers(selector) {
+  getUsers(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getUsers(selector);
+      ret = ReactiveCacheServer.getUsers(selector, options);
     } else {
-      ret = ReactiveCacheClient.getUsers(selector);
+      ret = ReactiveCacheClient.getUsers(selector, options);
     }
     return ret;
   },
-  getOrg(idOrFirstObjectSelector) {
+  getOrg(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getOrg(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getOrg(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getOrg(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getOrg(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getOrgs(selector) {
+  getOrgs(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getOrgs(selector);
+      ret = ReactiveCacheServer.getOrgs(selector, options);
     } else {
-      ret = ReactiveCacheClient.getOrgs(selector);
+      ret = ReactiveCacheClient.getOrgs(selector, options);
     }
     return ret;
   },
-  getTeam(idOrFirstObjectSelector) {
+  getTeam(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getTeam(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getTeam(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getTeam(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getTeam(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getTeams(selector) {
+  getTeams(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getTeams(selector);
+      ret = ReactiveCacheServer.getTeams(selector, options);
     } else {
-      ret = ReactiveCacheClient.getTeams(selector);
+      ret = ReactiveCacheClient.getTeams(selector, options);
     }
     return ret;
   },
-  getActivity(idOrFirstObjectSelector) {
+  getActivity(idOrFirstObjectSelector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getActivity(idOrFirstObjectSelector);
+      ret = ReactiveCacheServer.getActivity(idOrFirstObjectSelector, options);
     } else {
-      ret = ReactiveCacheClient.getActivity(idOrFirstObjectSelector);
+      ret = ReactiveCacheClient.getActivity(idOrFirstObjectSelector, options);
     }
     return ret;
   },
-  getActivities(selector) {
+  getActivities(selector, options) {
     let ret;
     if (Meteor.isServer) {
-      ret = ReactiveCacheServer.getActivities(selector);
+      ret = ReactiveCacheServer.getActivities(selector, options);
     } else {
-      ret = ReactiveCacheClient.getActivities(selector);
+      ret = ReactiveCacheClient.getActivities(selector, options);
     }
     return ret;
   },