| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 | import { TAPi18n } from '/imports/i18n';import { AttachmentStorage } from '/models/attachments';import { CardSearchPagedComponent } from '/client/lib/cardSearch';import SessionData from '/models/usersessiondata';import { QueryParams } from '/config/query-classes';import { OPERATOR_LIMIT } from '/config/search-const';const filesize = require('filesize');BlazeComponent.extendComponent({  subscription: null,  showFilesReport: new ReactiveVar(false),  showBrokenCardsReport: new ReactiveVar(false),  showOrphanedFilesReport: new ReactiveVar(false),  showRulesReport: new ReactiveVar(false),  showCardsReport: new ReactiveVar(false),  showBoardsReport: new ReactiveVar(false),  sessionId: null,  onCreated() {    this.error = new ReactiveVar('');    this.loading = new ReactiveVar(false);    this.sessionId = SessionData.getSessionId();  },  events() {    return [      {        'click a.js-report-broken': this.switchMenu,        'click a.js-report-files': this.switchMenu,        'click a.js-report-rules': this.switchMenu,        'click a.js-report-cards': this.switchMenu,        'click a.js-report-boards': this.switchMenu,      },    ];  },  switchMenu(event) {    const target = $(event.target);    if (!target.hasClass('active')) {      this.loading.set(true);      this.showFilesReport.set(false);      this.showBrokenCardsReport.set(false);      this.showOrphanedFilesReport.set(false);      this.showRulesReport.set(false)      this.showBoardsReport.set(false);      this.showCardsReport.set(false);      if (this.subscription) {        this.subscription.stop();      }      $('.side-menu li.active').removeClass('active');      target.parent().addClass('active');      const targetID = target.data('id');      if ('report-broken' === targetID) {        this.showBrokenCardsReport.set(true);        this.subscription = Meteor.subscribe(          'brokenCards',          SessionData.getSessionId(),          () => {            this.loading.set(false);          },        );      } else if ('report-files' === targetID) {        this.showFilesReport.set(true);        this.subscription = Meteor.subscribe('attachmentsList', () => {          this.loading.set(false);        });      } else if ('report-rules' === targetID) {        this.subscription = Meteor.subscribe('rulesReport', () => {          this.showRulesReport.set(true);          this.loading.set(false);        });      } else if ('report-boards' === targetID) {        this.subscription = Meteor.subscribe('boardsReport', () => {          this.showBoardsReport.set(true);          this.loading.set(false);        });      } else if ('report-cards' === targetID) {        const qp = new QueryParams();        qp.addPredicate(OPERATOR_LIMIT, 300);        this.subscription = Meteor.subscribe(          'globalSearch',          this.sessionId,          qp.getParams(),          qp.text,          () => {            this.showCardsReport.set(true);            this.loading.set(false);          },        );      }    }  },}).register('adminReports');class AdminReport extends BlazeComponent {  collection;  results() {    // eslint-disable-next-line no-console    return this.collection.find();  }  yesOrNo(value) {    if (value) {      return TAPi18n.__('yes');    } else {      return TAPi18n.__('no');    }  }  resultsCount() {    return this.collection.find().count();  }  fileSize(size) {    const ret = filesize(size);    return ret;  }  abbreviate(text) {    if (text.length > 30) {      return `${text.substr(0, 29)}...`;    }    return text;  }}(class extends AdminReport {  collection = Attachments;}.register('filesReport'));(class extends AdminReport {  collection = Rules;  results() {    const rules = [];    Rules.find().forEach(rule => {      rules.push({        _id: rule._id,        title: rule.title,        boardId: rule.boardId,        boardTitle: rule.board().title,        action: rule.action(),        trigger: rule.trigger(),      });    });    // eslint-disable-next-line no-console    console.log('rows:', rules);    return rules;  }}.register('rulesReport'));(class extends AdminReport {  collection = Boards;  userNames(members) {    let text = '';    members.forEach(member => {      const user = Users.findOne(member.userId);      text += text ? ', ' : '';      if (user) {        text += user.username;      } else {        text += member.userId      }    });    return text;  }}.register('boardsReport'));(class extends AdminReport {  collection = Cards;  userNames(userIds) {    let text = '';    userIds.forEach(userId => {      const user = Users.findOne(userId);      text += text ? ', ' : '';      text += user.username;    });    return text;  }}.register('cardsReport'));class BrokenCardsComponent extends CardSearchPagedComponent {  onCreated() {    super.onCreated();  }}BrokenCardsComponent.register('brokenCardsReport');
 |