| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 | 
							- import { ReactiveCache } from '/imports/reactiveCache';
 
- import { TAPi18n } from '/imports/i18n';
 
- import Cards from '../../models/cards';
 
- import SessionData from '../../models/usersessiondata';
 
- import {QueryDebug} from "../../config/query-classes";
 
- import {OPERATOR_DEBUG} from "../../config/search-const";
 
- export class CardSearchPagedComponent extends BlazeComponent {
 
-   onCreated() {
 
-     this.searching = new ReactiveVar(false);
 
-     this.hasResults = new ReactiveVar(false);
 
-     this.hasQueryErrors = new ReactiveVar(false);
 
-     this.query = new ReactiveVar('');
 
-     this.resultsHeading = new ReactiveVar('');
 
-     this.searchLink = new ReactiveVar(null);
 
-     this.results = new ReactiveVar([]);
 
-     this.hasNextPage = new ReactiveVar(false);
 
-     this.hasPreviousPage = new ReactiveVar(false);
 
-     this.resultsCount = 0;
 
-     this.totalHits = 0;
 
-     this.queryErrors = null;
 
-     this.resultsPerPage = 25;
 
-     this.sessionId = SessionData.getSessionId();
 
-     this.subscriptionHandle = null;
 
-     this.serverError = new ReactiveVar(false);
 
-     this.sessionData = null;
 
-     this.debug = new ReactiveVar(new QueryDebug());
 
-     const that = this;
 
-     this.subscriptionCallbacks = {
 
-       onReady() {
 
-         that.getResults();
 
-         that.searching.set(false);
 
-         that.hasResults.set(true);
 
-         that.serverError.set(false);
 
-       },
 
-       onError(error) {
 
-         that.searching.set(false);
 
-         that.hasResults.set(false);
 
-         that.serverError.set(true);
 
-         // eslint-disable-next-line no-console
 
-         //console.log('Error.reason:', error.reason);
 
-         // eslint-disable-next-line no-console
 
-         //console.log('Error.message:', error.message);
 
-         // eslint-disable-next-line no-console
 
-         //console.log('Error.stack:', error.stack);
 
-       },
 
-     };
 
-   }
 
-   resetSearch() {
 
-     this.searching.set(false);
 
-     this.results.set([]);
 
-     this.hasResults.set(false);
 
-     this.hasQueryErrors.set(false);
 
-     this.resultsHeading.set('');
 
-     this.serverError.set(false);
 
-     this.resultsCount = 0;
 
-     this.totalHits = 0;
 
-     this.queryErrors = null;
 
-     this.debug.set(new QueryDebug());
 
-   }
 
-   getSessionData(sessionId) {
 
-     return ReactiveCache.getSessionData({
 
-       sessionId: sessionId || SessionData.getSessionId(),
 
-     });
 
-   }
 
-   getResults() {
 
-     // eslint-disable-next-line no-console
 
-     // console.log('getting results');
 
-     this.sessionData = this.getSessionData();
 
-     // eslint-disable-next-line no-console
 
-     console.log('session data:', this.sessionData);
 
-     const cards = [];
 
-     this.sessionData.cards.forEach(cardId => {
 
-       cards.push(ReactiveCache.getCard(cardId));
 
-     });
 
-     this.queryErrors = this.sessionData.errors;
 
-     if (this.queryErrors.length) {
 
-       // console.log('queryErrors:', this.queryErrorMessages());
 
-       this.hasQueryErrors.set(true);
 
-       // return null;
 
-     }
 
-     this.debug.set(new QueryDebug(this.sessionData.debug));
 
-     console.log('debug:', this.debug.get().get());
 
-     console.log('debug.show():', this.debug.get().show());
 
-     console.log('debug.showSelector():', this.debug.get().showSelector());
 
-     if (cards) {
 
-       this.totalHits = this.sessionData.totalHits;
 
-       this.resultsCount = cards.length;
 
-       this.resultsStart = this.sessionData.lastHit - this.resultsCount + 1;
 
-       this.resultsEnd = this.sessionData.lastHit;
 
-       this.resultsHeading.set(this.getResultsHeading());
 
-       this.results.set(cards);
 
-       this.hasNextPage.set(this.sessionData.lastHit < this.sessionData.totalHits);
 
-       this.hasPreviousPage.set(
 
-         this.sessionData.lastHit - this.sessionData.resultsCount > 0,
 
-       );
 
-       return cards;
 
-     }
 
-     this.resultsCount = 0;
 
-     return null;
 
-   }
 
-   stopSubscription() {
 
-     if (this.subscriptionHandle) {
 
-       this.subscriptionHandle.stop();
 
-     }
 
-   }
 
-   getSubscription(queryParams) {
 
-     return Meteor.subscribe(
 
-       'globalSearch',
 
-       this.sessionId,
 
-       queryParams.params,
 
-       queryParams.text,
 
-       this.subscriptionCallbacks,
 
-     );
 
-   }
 
-   runGlobalSearch(queryParams) {
 
-     this.searching.set(true);
 
-     this.debug.set(new QueryDebug());
 
-     this.stopSubscription();
 
-     this.subscriptionHandle = this.getSubscription(queryParams);
 
-   }
 
-   queryErrorMessages() {
 
-     const messages = [];
 
-     this.queryErrors.forEach(err => {
 
-       let value = err.color ? TAPi18n.__(`color-${err.value}`) : err.value;
 
-       if (!value) {
 
-         value = err.value;
 
-       }
 
-       messages.push(TAPi18n.__(err.tag, value));
 
-     });
 
-     return messages;
 
-   }
 
-   nextPage() {
 
-     this.searching.set(true);
 
-     this.stopSubscription();
 
-     this.subscriptionHandle = Meteor.subscribe(
 
-       'nextPage',
 
-       this.sessionId,
 
-       this.subscriptionCallbacks,
 
-     );
 
-   }
 
-   previousPage() {
 
-     this.searching.set(true);
 
-     this.stopSubscription();
 
-     this.subscriptionHandle = Meteor.subscribe(
 
-       'previousPage',
 
-       this.sessionId,
 
-       this.subscriptionCallbacks,
 
-     );
 
-   }
 
-   getResultsHeading() {
 
-     if (this.resultsCount === 0) {
 
-       return TAPi18n.__('no-cards-found');
 
-     } else if (this.resultsCount === 1) {
 
-       return TAPi18n.__('one-card-found');
 
-     } else if (this.resultsCount === this.totalHits) {
 
-       return TAPi18n.__('n-cards-found', {sprintf: [this.resultsCount]});
 
-     }
 
-     return TAPi18n.__('n-n-of-n-cards-found', {
 
-       start: this.resultsStart,
 
-       end: this.resultsEnd,
 
-       total: this.totalHits,
 
-     });
 
-   }
 
-   getSearchHref() {
 
-     const baseUrl = window.location.href.replace(/([?#].*$|\s*$)/, '');
 
-     return `${baseUrl}?q=${encodeURIComponent(this.query.get())}`;
 
-   }
 
-   events() {
 
-     return [
 
-       {
 
-         'click .js-next-page'(evt) {
 
-           evt.preventDefault();
 
-           this.nextPage();
 
-         },
 
-         'click .js-previous-page'(evt) {
 
-           evt.preventDefault();
 
-           this.previousPage();
 
-         },
 
-       },
 
-     ];
 
-   }
 
- }
 
 
  |