mirror of
https://github.com/datahub-project/datahub.git
synced 2025-08-27 10:35:58 +00:00
115 lines
2.6 KiB
JavaScript
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);
|
|
}
|
|
}
|