diff --git a/app/controllers/admin/universal_tables_controller.rb b/app/controllers/admin/universal_tables_controller.rb index 8c3bd29..09d3bd1 100644 --- a/app/controllers/admin/universal_tables_controller.rb +++ b/app/controllers/admin/universal_tables_controller.rb @@ -321,6 +321,7 @@ class Admin::UniversalTablesController < OrbitAdminController new_tags.each do |tag| if is_uuid?(tag) === false tt = TableTag.new + tt.u_table_id = entry.u_table.id tt.title = tag.downcase tt.save entry.table_tags << tt diff --git a/app/controllers/universal_tables_controller.rb b/app/controllers/universal_tables_controller.rb index db2eb23..8400d4e 100644 --- a/app/controllers/universal_tables_controller.rb +++ b/app/controllers/universal_tables_controller.rb @@ -122,10 +122,21 @@ class UniversalTablesController < ApplicationController entries = entries.page(params["page_no"]).per(OrbitHelper.page_data_count) end else + if params[:tag] + tag = TableTag.where(:title => params[:tag], :u_table_id => table.id).first + end if paginated - entries = TableEntry.where(:u_table_id=>table.id, "have_data.#{I18n.locale}" => {"$in" => [nil, true]}).sorting(params: params,table: table,page_num: params["page_no"],per: OrbitHelper.page_data_count) + if tag.nil? + entries = TableEntry.where(:u_table_id=>table.id, "have_data.#{I18n.locale}" => {"$in" => [nil, true]}).sorting(params: params,table: table,page_num: params["page_no"],per: OrbitHelper.page_data_count) + else + entries = TableEntry.where(:u_table_id=>table.id, "have_data.#{I18n.locale}" => {"$in" => [nil, true]}, :table_tag_ids => tag.id).sorting(params: params,table: table,page_num: params["page_no"],per: OrbitHelper.page_data_count) + end else - entries = TableEntry.where(:u_table_id=>table.id, "have_data.#{I18n.locale}" => {"$in" => [nil, true]}).sorting(params: params,table: table,paginated: false) + if tag.nil? + entries = TableEntry.where(:u_table_id=>table.id, "have_data.#{I18n.locale}" => {"$in" => [nil, true]}).sorting(params: params,table: table,paginated: false) + else + entries = TableEntry.where(:u_table_id=>table.id, "have_data.#{I18n.locale}" => {"$in" => [nil, true]}, :table_tag_ids => tag.id).sorting(params: params,table: table,paginated: false) + end end end entries @@ -135,7 +146,6 @@ class UniversalTablesController < ApplicationController params = OrbitHelper.params entry = TableEntry.where(:uid => params[:uid]).first rescue nil rows = [] - entry.column_entries.each do |ce| ct = ce.table_column text = ce.get_frontend_text(ct) @@ -146,6 +156,10 @@ class UniversalTablesController < ApplicationController } if text != "" end sorted = rows.sort{ |k,v| k["order"] <=> v["order"] } + sorted << { + "title" => t("universal_table.hashtags"), + "text" => entry.tags_for_frontend + } entry.inc(view_count: 1) { "entry" => sorted, @@ -328,6 +342,8 @@ class UniversalTablesController < ApplicationController cols << {"text" => ""} end end + text = te.tags_for_frontend + cols << {"text" => text} rows << { "columns" => cols } diff --git a/app/models/table_entry.rb b/app/models/table_entry.rb index 965f2c2..2e974cf 100644 --- a/app/models/table_entry.rb +++ b/app/models/table_entry.rb @@ -41,6 +41,13 @@ class TableEntry end.to_h end + def tags_for_frontend + params = OrbitHelper.params + self.table_tags.map{|tt| + "#" + tt.title + "" + }.join(" ") + end + def self.u_table UTable.find(criteria.selector['u_table_id']) end diff --git a/app/models/table_tag.rb b/app/models/table_tag.rb index 66d1341..7e6f187 100644 --- a/app/models/table_tag.rb +++ b/app/models/table_tag.rb @@ -3,5 +3,6 @@ class TableTag include Mongoid::Timestamps field :title, type: String + field :u_table_id has_and_belongs_to_many :table_entries, inverse_of: :table_tags end