diff --git a/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6 index 42a774b..a281235 100644 --- a/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6 +++ b/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6 @@ -20,6 +20,7 @@ export default Ember.Controller.extend({ editing: false, everEditing: false, + showRecentQueries: true, createDisabled: function() { return (this.get('newQueryName') || "").trim().length === 0; @@ -28,6 +29,9 @@ export default Ember.Controller.extend({ selectedItem: function() { const id = parseInt(this.get('selectedQueryId')); const item = this.get('content').find(q => q.get('id') === id); + if (!isNaN(id)) { + this.set('showRecentQueries', false); + } return item || NoQuery; }.property('selectedQueryId'), @@ -76,6 +80,11 @@ export default Ember.Controller.extend({ showCreate() { this.set('showCreate', true); + this.set('showRecentQueries', false); + }, + + showRecentQueries() { + this.set('showRecentQueries', true); }, editName() { @@ -106,6 +115,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..24d229c 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-explorer.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-explorer.hbs @@ -133,6 +133,33 @@ {{/if}} {{/unless}} + {{#if showRecentQueries}} + {{#if model.length}} + + + + + + + + {{#each model as |query|}} + + + + + + {{/each}} +
{{i18n 'explorer.query_name'}}{{i18n 'explorer.query_user'}}{{i18n 'explorer.query_time'}}
+ + {{query.name}} +
+ {{query.description}} +
+
+
{{query.user}}{{query.time}}
+ {{/if}} + {{/if}} +
{{else}} diff --git a/assets/stylesheets/explorer.scss b/assets/stylesheets/explorer.scss index 9c88adf..7bef968 100644 --- a/assets/stylesheets/explorer.scss +++ b/assets/stylesheets/explorer.scss @@ -210,6 +210,47 @@ } } +.recent-queries { + tr a { + display:block; + width:100%; + height: 100%; + color: inherit; + } + th { + .time{ + width: 15%; + } + .user { + width: 15%; + } + } + td{ + .query-time { + font-weight: bold; + color: dark-light-diff($primary, $secondary, 40%, -20%); + } + .query-user { + 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..bd446ba 100644 --- a/plugin.rb +++ b/plugin.rb @@ -567,12 +567,15 @@ 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, :user, :time def initialize @name = 'Unnamed Query' @description = 'Enter a description here' @sql = 'SELECT 1' + #TODO: Figure out where to assign current user for storage + @created_by = 'Admin' + @created_at = Time.now.strftime("%b %e, %Y") end def slug @@ -609,7 +612,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 +625,8 @@ SQL name: @name, description: @description, sql: @sql, + created_by: @created_by, + created_at: @created_at } end @@ -1073,7 +1078,7 @@ 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 def param_info object.params.map(&:to_hash) rescue nil