From ad8743a7d07d4bb265c8ea886e740597a9fce936 Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Tue, 4 Oct 2022 15:08:09 +0200 Subject: [PATCH] FileTree: Show more distinct icons where possible --- app/models/file_type.rb | 8 +++++++- lib/file_tree.rb | 14 ++++++++++++-- spec/lib/file_tree_spec.rb | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/models/file_type.rb b/app/models/file_type.rb index fff0267e..db5690eb 100644 --- a/app/models/file_type.rb +++ b/app/models/file_type.rb @@ -7,8 +7,14 @@ class FileType < ApplicationRecord include DefaultValues AUDIO_FILE_EXTENSIONS = %w[.aac .flac .m4a .mp3 .ogg .wav .wma].freeze + COMPRESSED_FILE_EXTENSIONS = %w[.7z .bz2 .gz .rar .tar .zip].freeze + CSV_FILE_EXTENSIONS = %w[.csv].freeze + EXCEL_FILE_EXTENSIONS = %w[.xls .xlsx].freeze IMAGE_FILE_EXTENSIONS = %w[.bmp .gif .jpeg .jpg .png].freeze + PDF_FILE_EXTENSIONS = %w[.pdf].freeze + POWERPOINT_FILE_EXTENSIONS = %w[.ppt .pptx].freeze VIDEO_FILE_EXTENSIONS = %w[.avi .flv .mkv .mp4 .m4v .ogv .webm].freeze + WORD_FILE_EXTENSIONS = %w[.doc .docx].freeze after_initialize :set_default_values @@ -23,7 +29,7 @@ class FileType < ApplicationRecord validates :name, presence: true validates :renderable, boolean_presence: true - %i[audio image video].each do |type| + %i[audio compressed csv excel image pdf powerpoint video word].each do |type| define_method("#{type}?") do self.class.const_get("#{type.upcase}_FILE_EXTENSIONS").include?(file_extension) end diff --git a/lib/file_tree.rb b/lib/file_tree.rb index ff8a52bd..dd0d8fa1 100644 --- a/lib/file_tree.rb +++ b/lib/file_tree.rb @@ -4,16 +4,26 @@ class FileTree def file_icon(file) if file.file_type.audio? 'fa-regular fa-file-audio' + elsif file.file_type.compressed? + 'fa-regular fa-file-zipper' + elsif file.file_type.excel? + 'fa-regular fa-file-excel' elsif file.file_type.image? 'fa-regular fa-file-image' + elsif file.file_type.pdf? + 'fa-regular fa-file-pdf' + elsif file.file_type.powerpoint? + 'fa-regular fa-file-powerpoint' elsif file.file_type.video? 'fa-regular fa-file-video' + elsif file.file_type.word? + 'fa-regular fa-file-word' elsif file.read_only? 'fa-solid fa-lock' elsif file.file_type.executable? 'fa-regular fa-file-code' - elsif file.file_type.renderable? - 'fa-regular fa-file-text' + elsif file.file_type.renderable? || file.file_type.csv? + 'fa-regular fa-file-lines' else 'fa-regular fa-file' end diff --git a/spec/lib/file_tree_spec.rb b/spec/lib/file_tree_spec.rb index 3d546980..2bb1da69 100644 --- a/spec/lib/file_tree_spec.rb +++ b/spec/lib/file_tree_spec.rb @@ -60,7 +60,7 @@ describe FileTree do let(:file) { build(:file, file_type: build(:dot_svg)) } it 'is a text file icon' do - expect(file_icon).to include('fa-file-text') + expect(file_icon).to include('fa-file-lines') expect(file_icon).to include('fa-regular') end end