impression_srv.ts 1.1 KB

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