Esempio n. 1
0
import { Template } from 'meteor/templating';
import { Querying } from '/client/imports/ui';
import { Enums, SessionManager } from '/client/imports/modules';
import '/client/imports/views/query_templates_options/explain/explain';
import '/client/imports/views/query_templates_options/cursor_options/cursor_options';
import './find.html';

Template.find.onRendered(() => {
  Querying.initOptions(Enums.CURSOR_OPTIONS);

  $('#cmbFindCursorOptions').val('LIMIT').trigger('chosen:updated');
  SessionManager.set(SessionManager.strSessionSelectedOptions, ['LIMIT']);
});

Template.find.executeQuery = Querying.Collection.Find.execute.bind(Querying.Collection.Find);
Template.find.renderQuery = Querying.Collection.Find.render.bind(Querying.Collection.Find);
Esempio n. 2
0
File: find.js Progetto: schuel/hmmm
Template.find.onCreated(function() {
	var instance = this;

	// Reflect filter selection in URI
	// This creates a browser history entry so it is not done on every filter
	// change. For example, when the search-field receives keydowns, the filter
	// is updated but the change is not reflected in the URI.
	instance.updateUrl = function() {
		var filterParams = instance.filter.toParams();
		delete filterParams.region; // HACK region is kept in the session (for bad reasons)
		delete filterParams.internal;
		var queryString = UrlTools.paramsToQueryString(filterParams);

		var options = {};

		if (queryString.length) {
			options.query = queryString;
		}

		RouterAutoscroll.cancelNext();

		var router = Router.current();
		Router.go(router.route.getName(), { _id: router.params._id }, options);

		return true;
	};


	instance.updateCategorySearch = function(query) {
		instance.categorySearch.set(query);

		if (!query) {
			instance.categorySearchResults.set(Categories);
			return;
		}

		var lowQuery = query.toLowerCase();
		var results = {};
		for (var mainCategory in Categories) {
			if (mf('category.'+mainCategory).toLowerCase().indexOf(lowQuery) >= 0) {
				results[mainCategory] = [];
			}
			for (i = 0; i < Categories[mainCategory].length; i++) {
				var subCategory = Categories[mainCategory][i];
				if (mf('category.'+subCategory).toLowerCase().indexOf(lowQuery) >= 0) {
					if (results[mainCategory]) results[mainCategory].push(subCategory);
					else results[subCategory] = [];
				}
			}
		}
		instance.categorySearchResults.set(results);
	};

	instance.updateCategorySearchDebounced = _.debounce(instance.updateCategorySearch, 200);

	instance.showingFilters = new ReactiveVar(false);
	instance.categorySearch = new ReactiveVar('');
	instance.categorySearchResults = new ReactiveVar(Categories);
	instance.courseLimit = new ReactiveVar(36);
	instance.coursesReady = new ReactiveVar(false); // Latch

	var filter = Courses.Filtering();
	instance.filter = filter;

	// Read URL state
	instance.autorun(function() {
		var query = Template.currentData();
		filter
			.clear()
			.read(query)
			.done();
	});

	// When there are filters set, show the filtering pane
	instance.autorun(function() {
		for (var name in filter.toParams()) {
			if (hiddenFilters.indexOf(name) > -1) {
				instance.showingFilters.set(true);
			}
		}
	});

	// Update whenever filter changes
	instance.autorun(function() {
		var filterQuery = filter.toQuery();
		instance.coursesReady.set(false);

		// Add one to the limit so we know there is more to show
		var limit = instance.courseLimit.get() + 1;

		instance.subscribe('Courses.findFilter', filterQuery, limit, function() {
			instance.coursesReady.set(true);
		});
	});
});