Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 44 additions & 1 deletion app/controllers/keyword_filter_groups_controller.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
class KeywordFilterGroupsController < ApplicationController
before_action :set_keyword_filter_group, only: [:show, :edit, :update, :destroy, :update_is_active]
before_action :set_keyword_filter_group, only: [:show, :edit, :update, :destroy, :update_is_active, :download_csv]

def index
@keyword_filter_groups = KeywordFilterGroup.all
Expand Down Expand Up @@ -58,6 +58,49 @@ def update_is_active
end
end

def download_csv
require 'csv'
filters = @keyword_filter_group.keyword_filters
csv_data = CSV.generate(headers: true) do |csv|
csv << ["Name", "Server Setting", "Is Active", "Keyword", "Filter Type"]
filters.each do |kf|
csv << [
@keyword_filter_group.name,
@keyword_filter_group.server_setting&.name,
@keyword_filter_group.is_active ? 'True' : 'False',
kf.keyword,
kf.filter_type
]
end
end
send_data csv_data, filename: "#{@keyword_filter_group.server_setting&.name&.parameterize}-#{@keyword_filter_group.name&.parameterize}.csv"
end

def download_csv_by_server_setting
require 'csv'
server_setting_id = params[:server_setting_id]
server_setting = ServerSetting.find_by_id(server_setting_id)
keyword_filters = KeywordFilter.joins(:keyword_filter_group)
.where(keyword_filter_groups: { server_setting_id: server_setting_id })

csv_data = CSV.generate(headers: true) do |csv|
csv << ["Group Name", "Server Setting", "Group Active", "Keyword", "Filter Type", "Custom Group"]
keyword_filters.find_each do |kf|
group = kf.keyword_filter_group
csv << [
group&.name,
group&.server_setting&.name,
group&.is_active ? 'True' : 'False',
kf.keyword,
kf.filter_type,
group&.is_custom ? 'True' : 'False'
]
end
end

send_data csv_data, filename: "#{server_setting&.name&.parameterize}.csv"
end

private

def set_keyword_filter_group
Expand Down
9 changes: 0 additions & 9 deletions app/helpers/routing_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,6 @@ module RoutingHelper
extend ActiveSupport::Concern

include ActionView::Helpers::AssetTagHelper
# include Webpacker::Helper

included do
include Rails.application.routes.url_helpers

def default_url_options
ActionMailer::Base.default_url_options
end
end

def full_asset_url(source, **)
source = ActionController::Base.helpers.asset_url(source, **) unless use_storage?
Expand Down
2 changes: 2 additions & 0 deletions app/models/keyword_filter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class KeywordFilter < ApplicationRecord
self.table_name = 'keyword_filters'
validates :keyword, presence: true, uniqueness: true

belongs_to :keyword_filter_group

enum filter_type: { content: 0, hashtag: 1, both: 2 }

end
8 changes: 5 additions & 3 deletions app/views/keyword_filter_groups/show.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
.card
.card-header
%h3.card-title= @keyword_filter_group.name
- if @keyword_filter_group.is_custom?
.card-tools
.input-group.input-group-sm{"data-toggle" => "tooltip", "data-placement" => "top", "title"=>"Actions"}
.card-tools
.input-group.input-group-sm{"data-toggle" => "tooltip", "data-placement" => "top", "title"=>"Actions"}
- if @keyword_filter_group.is_custom?
= link_to new_keyword_filter_group_keyword_filter_path(@keyword_filter_group), class: 'form-control float-right mr-2', title: 'Add new keyword' do
%i.fa-solid.fa-circle-plus
= link_to download_csv_keyword_filter_group_path(@keyword_filter_group, format: :csv), class: 'form-control float-right', title: 'Download CSV', 'data-turbo' => false do
%i.fa-solid.fa-download

.card-body
%table#datatable.table.table-striped.table-bordered{data: {url: keyword_filter_group_url(@keyword_filter_group), type: 'keyword_filter_group_list', 'is-custom': @keyword_filter_group.is_custom?.to_s}}
Expand Down
4 changes: 4 additions & 0 deletions app/views/server_settings/index.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@
%a{ href: '#', style: 'color: red;', title: 'Add custom filter', 'data-filter-type': 'content', 'data-id': option[:id], 'data-toggle': 'modal', 'data-target': '#keyFilterModal', 'data-label': 'Custom filter name' }
Add custom filter
%div
%a{ href: download_csv_by_server_setting_keyword_filter_groups_path(format: :csv, server_setting_id: option[:id]), title: 'Download CSV', 'data-turbo': false, style: 'color: red;' }
%i.fa-solid.fa-download.mr-1
%a{ href: "##{collapse_id}", role: "button", class: "collapse-toggle arrow-toggle", 'data-toggle': "collapse", 'aria-expanded': "false", 'aria-controls': collapse_id }
%i.fa-solid.fa-caret-down.icon-arrow-down
%i.fa-solid.fa-caret-up.icon-arrow-up
Expand All @@ -86,6 +88,8 @@
%span.ml-2
= sub_option[:name]
%div
%a{ href: download_csv_keyword_filter_group_path(sub_option[:id], format: :csv), title: 'Download CSV', 'data-turbo': false, style: 'color: red;' }
%i.fa-solid.fa-download.ml-2
%a{ href: keyword_filter_group_path(sub_option[:id]), title: 'Edit' }
= image_tag("icons/edit-btn.svg", class: "ml-2", width: "16", height: "16")
- if sub_option[:is_custom]
Expand Down
4 changes: 4 additions & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@
resources :keyword_filter_groups do
member do
patch :update_is_active
get :download_csv
end
collection do
get :download_csv_by_server_setting
end
resources :keyword_filters
end
Expand Down
2 changes: 1 addition & 1 deletion config/routes/api_v1.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
when 'channel'
{ display: true, app_name: 'channel' }
when 'mo-me'
{ display: true, app_name: 'mo-me' }
{ display: false, app_name: 'mo-me' }
else
{ display: true, app_name: app_name }
end
Expand Down
Loading