From 9dcafd268cc6428b3339b0145f2cebd9327a9e81 Mon Sep 17 00:00:00 2001 From: rulingcom Date: Wed, 13 Aug 2025 22:18:55 +0800 Subject: [PATCH] moved hashtags location in xls --- .../export_structure.xlsx.axlsx | 19 +++++++-------- app/views/utable_export/export.xlsx.axlsx | 20 ++++++++-------- lib/tasks/universal_table_tasks.rake | 23 ++++++++++--------- 3 files changed, 32 insertions(+), 30 deletions(-) diff --git a/app/views/admin/universal_tables/export_structure.xlsx.axlsx b/app/views/admin/universal_tables/export_structure.xlsx.axlsx index a93ab7c..338e01a 100755 --- a/app/views/admin/universal_tables/export_structure.xlsx.axlsx +++ b/app/views/admin/universal_tables/export_structure.xlsx.axlsx @@ -10,6 +10,15 @@ wb.add_worksheet(name: "Structure") do |sheet| row1 = ['uid'] row2 = ['Use to update existing entries. Leave blank to create new.'] + # 加入 hashtags 與 related_entries 欄位 + row << t("universal_table.hashtags") + row1 << "table_tags" + row2 << "Separate tags by ;" + + row << t("universal_table.related_entries") + row1 << "related_entries" + row2 << "Separate UIDs with ;" + @table.table_columns.asc(:order).each do |column| case column.type when "text", "editor" @@ -48,7 +57,7 @@ wb.add_worksheet(name: "Structure") do |sheet| row << "#{column.title}" row1 << column.key row2 << "Separate the files by ;" - + @site_in_use_locales.sort.each do |locale| # URL 欄位 row << "#{column.title} (註解) - #{t(locale.to_s)}" @@ -59,14 +68,6 @@ wb.add_worksheet(name: "Structure") do |sheet| end # <-- 正確結束 case 區塊 end - # 加入 hashtags 與 related_entries 欄位 - row << t("universal_table.hashtags") - row1 << "table_tags" - row2 << "Separate tags by ;" - - row << t("universal_table.related_entries") - row1 << "related_entries" - row2 << "Separate UIDs with ;" sheet.add_row row, style: heading sheet.add_row row1 diff --git a/app/views/utable_export/export.xlsx.axlsx b/app/views/utable_export/export.xlsx.axlsx index b5f8be0..be60137 100755 --- a/app/views/utable_export/export.xlsx.axlsx +++ b/app/views/utable_export/export.xlsx.axlsx @@ -15,6 +15,14 @@ wb.add_worksheet(name: "Structure") do |sheet| row1 << "uid" row2 << "uid" + row << t("universal_table.hashtags") + row1 << "table_tags" + row2 << "Separate tags by ;" + + row << t("universal_table.related_entries") + row1 << "related_entries" + row2 << "Separate UIDs with ;" + table.table_columns.asc(:order).each do |column| case column.type when "text", "editor" @@ -53,13 +61,6 @@ wb.add_worksheet(name: "Structure") do |sheet| end end - row << t("universal_table.hashtags") - row1 << "table_tags" - row2 << "Separate tags by ;" - - row << t("universal_table.related_entries") - row1 << "related_entries" - row2 << "Separate UIDs with ;" sheet.add_row row, style: heading sheet.add_row row1 @@ -68,6 +69,8 @@ wb.add_worksheet(name: "Structure") do |sheet| table.table_entries.asc(:created_at).each do |entry| row = [] row << entry.uid + row << entry.hashtags_for_export + row << entry.get_related_entries_uid table.table_columns.asc(:order).each do |col| column = entry.column_entries.where(table_column_id: col.id).first @@ -137,9 +140,6 @@ wb.add_worksheet(name: "Structure") do |sheet| end end - row << entry.hashtags_for_export - row << entry.get_related_entries_uid - sheet.add_row row, style: wrap end end diff --git a/lib/tasks/universal_table_tasks.rake b/lib/tasks/universal_table_tasks.rake index 8503190..382d0a3 100755 --- a/lib/tasks/universal_table_tasks.rake +++ b/lib/tasks/universal_table_tasks.rake @@ -77,6 +77,8 @@ namespace :universal_table_tasks do [i, tc] end.to_h + + sheet.each_with_index do |row, i| if i >= 3 && row.cells.all? { |c| c.nil? || c.value.to_s.strip.blank? } table.inc(current_xlsx_value: 1) @@ -85,11 +87,18 @@ namespace :universal_table_tasks do next if i < 3 uid_val = row[0].value.to_s.strip rescue nil - te = uid_val.present? ? TableEntry.where(uid: uid_val, u_table_id: table.id).first_or_initialize : TableEntry.new te.u_table = table - skip = 0 - tc_idx = 0 + skip = 3 + tc_idx = 3 + + tags_text = row.cells[1].value.to_s rescue "" + module_app = ModuleApp.find_by_key("universal_table") + create_get_table_tags(te, tags_text.split(";"), module_app) if row.cells.count >= 2 + + related_uids = row.cells[2].value.to_s.split(";").map(&:strip) rescue [] + related_ids = TableEntry.where(:uid.in => related_uids).pluck(:id) + te.related_entries = related_ids.join(",") if row.cells.count >= 1 row.cells.each_with_index do |cell, col_idx| next if skip > 0 && (skip -= 1) >= 0 @@ -156,14 +165,6 @@ namespace :universal_table_tasks do te.column_entries << ce end - tags_text = row.cells[-2].value.to_s rescue "" - module_app = ModuleApp.find_by_key("universal_table") - create_get_table_tags(te, tags_text.split(";"), module_app) if row.cells.count >= 2 - - related_uids = row.cells[-1].value.to_s.split(";").map(&:strip) - related_ids = TableEntry.where(:uid.in => related_uids).pluck(:id) - te.related_entries = related_ids.join(",") if row.cells.count >= 1 - te.save! te.fix_have_data te.uid = uid_val if uid_val.present?