From 2218b8f5c0fafc8c804976f9589f11e292620366 Mon Sep 17 00:00:00 2001 From: Stanislav Romanov Date: Thu, 15 Sep 2022 18:03:56 +0300 Subject: [PATCH] Add limit param for tasks list --- app/controllers/admin/tasks/index.js | 13 ++ app/routes/admin/tasks/index.js | 16 +- app/services/meilisearch.js | 7 +- app/templates/admin/tasks/index.hbs | 143 +++++++++++------- .../controllers/admin/tasks/index-test.js | 12 ++ 5 files changed, 132 insertions(+), 59 deletions(-) create mode 100644 app/controllers/admin/tasks/index.js create mode 100644 tests/unit/controllers/admin/tasks/index-test.js diff --git a/app/controllers/admin/tasks/index.js b/app/controllers/admin/tasks/index.js new file mode 100644 index 0000000..ed14fcd --- /dev/null +++ b/app/controllers/admin/tasks/index.js @@ -0,0 +1,13 @@ +import Controller from '@ember/controller'; +import { action } from '@ember/object'; +import { tracked } from '@glimmer/tracking'; + +export default class AdminTasksIndexController extends Controller { + @tracked limit = 20; + @tracked from; + @tracked status; + @tracked type; + @tracked indexUid; + + queryParams = ['limit', 'from', 'status', 'type', 'indexUid']; +} diff --git a/app/routes/admin/tasks/index.js b/app/routes/admin/tasks/index.js index 09d0698..e1337d2 100644 --- a/app/routes/admin/tasks/index.js +++ b/app/routes/admin/tasks/index.js @@ -1,10 +1,22 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; +import { hash } from 'rsvp'; export default class AdminTasksIndexRoute extends Route { @service meilisearch; - model() { - return this.meilisearch.getTasks(); + queryParams = { + limit: { refreshModel: true }, + from: { refreshModel: true }, + status: { refreshModel: true }, + type: { refreshModel: true }, + indexUid: { refreshModel: true }, + }; + + model(params) { + return hash({ + tasks: this.meilisearch.getTasks(params), + indexes: this.meilisearch.getIndexes(), + }); } } diff --git a/app/services/meilisearch.js b/app/services/meilisearch.js index 28deb7a..e964618 100644 --- a/app/services/meilisearch.js +++ b/app/services/meilisearch.js @@ -40,8 +40,11 @@ export default class MeilisearchService extends Service { return query(`keys/${uid}`); } - getTasks() { - return query('tasks'); + getTasks(params) { + // Clear from undefined fields + Object.keys(params).forEach((key) => params[key] ?? delete params[key]); + + return query(`tasks?${new URLSearchParams(params)}`); } getTask(uid) { diff --git a/app/templates/admin/tasks/index.hbs b/app/templates/admin/tasks/index.hbs index 51ea536..14c3b59 100644 --- a/app/templates/admin/tasks/index.hbs +++ b/app/templates/admin/tasks/index.hbs @@ -1,58 +1,91 @@ - - - {{data.uid}} - - - {{data.indexUid}} - - - - - - - {{json-stringify data.details}} - - - {{json-stringify data.error}} - - - - {{date-time-format - data.enqueuedAt - year='numeric' - month='numeric' - day='numeric' - hour='numeric' - minute='numeric' - second='numeric' - }} - - - {{date-time-format - data.startedAt - year='numeric' - month='numeric' - day='numeric' - hour='numeric' - minute='numeric' - second='numeric' - }} - - - {{date-time-format - data.finishedAt - year='numeric' - month='numeric' - day='numeric' - hour='numeric' - minute='numeric' - second='numeric' - }} - - - -
- +
+
+ + + Limit: + {{this.limit}} + + + {{#each (array 20 50 100 500) as |item|}} + +
+ {{item}} +
+
+ {{/each}} +
+
+
+ +{{#if @model.tasks.results.length}} + + + {{data.uid}} + + + {{data.indexUid}} + + + + + + + {{json-stringify data.details}} + + + {{json-stringify data.error}} + + + + {{date-time-format + data.enqueuedAt + year='numeric' + month='numeric' + day='numeric' + hour='numeric' + minute='numeric' + second='numeric' + }} + + + {{date-time-format + data.startedAt + year='numeric' + month='numeric' + day='numeric' + hour='numeric' + minute='numeric' + second='numeric' + }} + + + {{date-time-format + data.finishedAt + year='numeric' + month='numeric' + day='numeric' + hour='numeric' + minute='numeric' + second='numeric' + }} + + +{{else}} + No results found +{{/if}} diff --git a/tests/unit/controllers/admin/tasks/index-test.js b/tests/unit/controllers/admin/tasks/index-test.js new file mode 100644 index 0000000..5140259 --- /dev/null +++ b/tests/unit/controllers/admin/tasks/index-test.js @@ -0,0 +1,12 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'meiliadmin/tests/helpers'; + +module('Unit | Controller | admin/tasks/index', function (hooks) { + setupTest(hooks); + + // TODO: Replace this with your real tests. + test('it exists', function (assert) { + let controller = this.owner.lookup('controller:admin/tasks/index'); + assert.ok(controller); + }); +});