diff --git a/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6
index 42a774b..e3db48f 100644
--- a/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6
+++ b/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6
@@ -20,6 +20,9 @@ export default Ember.Controller.extend({
editing: false,
everEditing: false,
+ showRecentQueries: true,
+ sortBy: ['id:desc'],
+ sortedQueries: Em.computed.sort('model', 'sortBy'),
createDisabled: function() {
return (this.get('newQueryName') || "").trim().length === 0;
@@ -28,6 +31,7 @@ export default Ember.Controller.extend({
selectedItem: function() {
const id = parseInt(this.get('selectedQueryId'));
const item = this.get('content').find(q => q.get('id') === id);
+ !isNaN(id) ? this.set('showRecentQueries', false) : this.set('showRecentQueries', true);
return item || NoQuery;
}.property('selectedQueryId'),
@@ -86,6 +90,10 @@ export default Ember.Controller.extend({
window.open(this.get('selectedItem.downloadUrl'), "_blank");
},
+ scrollTop() {
+ window.scrollTo(0,0);
+ },
+
resetParams() {
this.get('selectedItem').resetParams();
},
@@ -106,6 +114,7 @@ export default Ember.Controller.extend({
const name = this.get("newQueryName").trim();
this.set('loading', true);
this.set('showCreate', false);
+ this.set('showRecentQueries', false);
this.store
.createRecord('query', { name })
.save()
diff --git a/assets/javascripts/discourse/templates/admin/plugins-explorer.hbs b/assets/javascripts/discourse/templates/admin/plugins-explorer.hbs
index b0847c4..47cb510 100644
--- a/assets/javascripts/discourse/templates/admin/plugins-explorer.hbs
+++ b/assets/javascripts/discourse/templates/admin/plugins-explorer.hbs
@@ -133,6 +133,37 @@
{{/if}}
{{/unless}}
+ {{#if showRecentQueries}}
+ {{#if sortedQueries.length}}
+
+ {{/if}}
+ {{/if}}
+
{{else}}
diff --git a/assets/stylesheets/explorer.scss b/assets/stylesheets/explorer.scss
index 9c88adf..08f2c67 100644
--- a/assets/stylesheets/explorer.scss
+++ b/assets/stylesheets/explorer.scss
@@ -210,6 +210,45 @@
}
}
+.recent-queries {
+ tr a {
+ display:block;
+ width:100%;
+ height: 100%;
+ color: inherit;
+ }
+ .time {
+ width: 15%;
+ }
+ .user {
+ width: 20%;
+ }
+ td{
+ .query-created-at {
+ font-weight: bold;
+ color: dark-light-diff($primary, $secondary, 40%, -20%);
+ }
+ .query-created-by {
+ color: dark-light-diff($primary, $secondary, 25%, -20%);
+ }
+ }
+ hr {
+ height: 2px;
+ width: 100%;
+ color: dark-light-diff($primary, $secondary, 35%, -20%);
+ }
+ .heading {
+ padding-top: 30px;
+ color: dark-light-diff($primary, $secondary, 30%, -20%);
+ }
+ .query-name {
+ color: dark-light-diff($primary, $secondary, 15%, -20%);
+ }
+ .query-desc {
+ color: dark-light-diff($primary, $secondary, 25%, -20%);
+ }
+}
+
.explorer-pad-bottom {
margin-bottom: 200px;
}
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index 32a0f9e..1bf2ba0 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -52,6 +52,10 @@ en:
download_csv: "CSV"
others_dirty: "A query has unsaved changes that will be lost if you navigate away."
run_time: "Query completed in {{value}} ms."
+ query_name: "Query"
+ query_description: "Description"
+ query_time: "Date created"
+ query_user: "Created by"
column: "Column {{number}}"
explain_label: "Include query plan?"
save_params: "Set Defaults"
diff --git a/plugin.rb b/plugin.rb
index de25af4..7aa0f7a 100644
--- a/plugin.rb
+++ b/plugin.rb
@@ -567,7 +567,7 @@ SQL
# Reimplement a couple ActiveRecord methods, but use PluginStore for storage instead
class DataExplorer::Query
- attr_accessor :id, :name, :description, :sql
+ attr_accessor :id, :name, :description, :sql, :created_by, :created_at
def initialize
@name = 'Unnamed Query'
@@ -609,7 +609,7 @@ SQL
def self.from_hash(h)
query = DataExplorer::Query.new
- [:name, :description, :sql].each do |sym|
+ [:name, :description, :sql, :created_by, :created_at].each do |sym|
query.send("#{sym}=", h[sym].strip) if h[sym]
end
query.id = h[:id].to_i if h[:id]
@@ -622,6 +622,8 @@ SQL
name: @name,
description: @description,
sql: @sql,
+ created_by: @created_by,
+ created_at: @created_at
}
end
@@ -938,6 +940,8 @@ SQL
# guardian.ensure_can_create_explorer_query!
query = DataExplorer::Query.from_hash params.require(:query)
+ query.created_at = Time.now.strftime("%b %e, %Y")
+ query.created_by = current_user.id.to_s
query.id = nil # json import will assign an id, which is wrong
query.save
@@ -1073,11 +1077,15 @@ SQL
end
class DataExplorer::QuerySerializer < ActiveModel::Serializer
- attributes :id, :sql, :name, :description, :param_info
+ attributes :id, :sql, :name, :description, :param_info, :created_by, :created_at, :username
def param_info
object.params.map(&:to_hash) rescue nil
end
+
+ def username
+ User.find(created_by).username rescue nil
+ end
end
DataExplorer::Engine.routes.draw do