From 61b25e12133f132c2e4e5d6ea4a3a695b142c8b7 Mon Sep 17 00:00:00 2001 From: Ivan Kristianto Date: Sat, 12 Feb 2022 13:10:23 +0700 Subject: [PATCH] Add search feature to Audit Logs --- frontend/js/app/audit-log/main.ejs | 10 +++++ frontend/js/app/audit-log/main.js | 65 +++++++++++++++++++++--------- 2 files changed, 57 insertions(+), 18 deletions(-) diff --git a/frontend/js/app/audit-log/main.ejs b/frontend/js/app/audit-log/main.ejs index acaa8b49..bec57871 100644 --- a/frontend/js/app/audit-log/main.ejs +++ b/frontend/js/app/audit-log/main.ejs @@ -2,6 +2,16 @@

<%- i18n('audit-log', 'title') %>

+
+ +
diff --git a/frontend/js/app/audit-log/main.js b/frontend/js/app/audit-log/main.js index ec9b5368..0d03c5ca 100644 --- a/frontend/js/app/audit-log/main.js +++ b/frontend/js/app/audit-log/main.js @@ -12,39 +12,68 @@ module.exports = Mn.View.extend({ ui: { list_region: '.list-region', - dimmer: '.dimmer' + dimmer: '.dimmer', + search: '.search-form', + query: 'input[name="source-query"]' + }, + + fetch: App.Api.AuditLog.getAll, + + showData: function(response) { + this.showChildView('list_region', new ListView({ + collection: new AuditLogModel.Collection(response) + })); + }, + + showError: function(err) { + this.showChildView('list_region', new ErrorView({ + code: err.code, + message: err.message, + retry: function () { + App.Controller.showAuditLog(); + } + })); + + console.error(err); + }, + + showEmpty: function() { + this.showChildView('list_region', new EmptyView({ + title: App.i18n('audit-log', 'empty'), + subtitle: App.i18n('audit-log', 'empty-subtitle') + })); }, regions: { list_region: '@ui.list_region' }, + events: { + 'submit @ui.search': function (e) { + e.preventDefault(); + let query = this.ui.query.val(); + + this.fetch(['user'], query) + .then(response => this.showData(response)) + .catch(err => { + this.showError(err); + }); + } + }, + onRender: function () { let view = this; - App.Api.AuditLog.getAll(['user']) + view.fetch(['user']) .then(response => { if (!view.isDestroyed() && response && response.length) { - view.showChildView('list_region', new ListView({ - collection: new AuditLogModel.Collection(response) - })); + view.showData(response); } else { - view.showChildView('list_region', new EmptyView({ - title: App.i18n('audit-log', 'empty'), - subtitle: App.i18n('audit-log', 'empty-subtitle') - })); + view.showEmpty(); } }) .catch(err => { - view.showChildView('list_region', new ErrorView({ - code: err.code, - message: err.message, - retry: function () { - App.Controller.showAuditLog(); - } - })); - - console.error(err); + view.showError(err); }) .then(() => { view.ui.dimmer.removeClass('active');