115 lines
2.6 KiB
JavaScript

import Controller from '@ember/controller';
import { computed, set, get } from '@ember/object';
import { capitalize } from '@ember/string';
import { action } from 'ember-decorators/object';
// gradual refactor into es class, hence extends EmberObject instance
export default class Search extends Controller.extend({
isMetrics: computed('model.category', function() {
var model = this.get('model');
if (model && model.category) {
if (model.category.toLocaleLowerCase() === 'metrics') {
return true;
}
}
return false;
}),
previousPage: computed('model.page', function() {
var model = this.get('model');
if (model && model.page) {
var currentPage = model.page;
if (currentPage <= 1) {
return currentPage;
} else {
return currentPage - 1;
}
} else {
return 1;
}
}),
nextPage: computed('model.page', function() {
var model = this.get('model');
if (model && model.page) {
var currentPage = model.page;
var totalPages = model.totalPages;
if (currentPage >= totalPages) {
return totalPages;
} else {
return currentPage + 1;
}
} else {
return 1;
}
}),
first: computed('model.page', function() {
var model = this.get('model');
if (model && model.page) {
var currentPage = model.page;
if (currentPage <= 1) {
return true;
} else {
return false;
}
} else {
return false;
}
}),
last: computed('model.page', function() {
var model = this.get('model');
if (model && model.page) {
var currentPage = model.page;
var totalPages = model.totalPages;
if (currentPage >= totalPages) {
return true;
} else {
return false;
}
} else {
return false;
}
})
}) {
queryParams = ['keyword', 'category', 'source', 'page'];
/**
* Search keyword to look for
* @type {string}
*/
keyword = '';
/**
* The category to narrow/ filter search results
* @type {string}
*/
category = 'datasets';
/**
* Dataset Platform to restrict search results to
* @type {'all'|DatasetPlatform}
*/
source = 'all';
/**
* The current search page
* @type {number}
*/
page = 1;
/**
* Header text for search sidebar
* @type {string}
*/
header = 'Refine By';
/**
* Handles the response to changing the source platform to search through
* @param _groupName is radioGroup name i.e. binding to Search.source
* @param value
*/
@action
sourceDidChange(_groupName, value) {
set(this, 'source', value);
}
}