impression_store.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. ///<reference path="../../headers/common.d.ts" />
  2. import store from 'app/core/store';
  3. import _ from 'lodash';
  4. import config from 'app/core/config';
  5. export class ImpressionsStore {
  6. constructor() {}
  7. addDashboardImpression(dashboardId) {
  8. var impressionsKey = this.impressionKey(config);
  9. var impressions = [];
  10. if (store.exists(impressionsKey)) {
  11. impressions = JSON.parse(store.get(impressionsKey));
  12. if (!_.isArray(impressions)) {
  13. impressions = [];
  14. }
  15. }
  16. impressions = impressions.filter((imp) => {
  17. return dashboardId !== imp;
  18. });
  19. impressions.unshift(dashboardId);
  20. if (impressions.length > 50) {
  21. impressions.pop();
  22. }
  23. store.set(impressionsKey, JSON.stringify(impressions));
  24. }
  25. getDashboardOpened() {
  26. var impressions = store.get(this.impressionKey(config)) || "[]";
  27. impressions = JSON.parse(impressions);
  28. impressions = _.filter(impressions, el => {
  29. return _.isNumber(el);
  30. });
  31. return impressions;
  32. }
  33. impressionKey(config) {
  34. return "dashboard_impressions-" + config.bootData.user.orgId;
  35. }
  36. }
  37. var impressions = new ImpressionsStore();
  38. export {
  39. impressions
  40. };