From 5e8de4450798e4b9f7a89397ffb650b213e3146c Mon Sep 17 00:00:00 2001 From: ken Date: Wed, 29 Jul 2026 14:26:38 +0800 Subject: [PATCH] update --- assets/javascripts/app.js | 63 +++++++++++++++++++ .../template/modules/universal-table.scss | 2 +- 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/assets/javascripts/app.js b/assets/javascripts/app.js index 74bc29a..a5f35c7 100644 --- a/assets/javascripts/app.js +++ b/assets/javascripts/app.js @@ -3111,6 +3111,69 @@ $(document).ready(function () { fixSortLinkA11y(); fixSearchInputA11y(); }, 500); +}); +function fixUniversalTableA11y() { + setTimeout(function () { + + $('.universal-table-show .table-content table').each(function () { + var $table = $(this); + + // 為外層表格加上 caption(若尚未有) + if ($table.find('caption').length === 0) { + $table.prepend('計畫成員資料表'); + } + + $table.find('tbody tr').each(function () { + var $tr = $(this); + var $cells = $tr.find('td'); + + // 每行結構:角色td、資料td、角色td、資料td、角色td、資料td(共6欄) + $cells.each(function (index) { + var $cell = $(this); + var cellText = $cell.text().trim(); + + // 判斷是否為標題欄(奇數欄 0、2、4) + var isHeaderCell = (index % 2 === 0); + + if (isHeaderCell && cellText !== '' && cellText !== '\u00a0') { + // 產生唯一 id:row + rowIndex + col + colIndex + var rowIndex = $tr.index(); + var colIndex = index; + var headerId = 'member-header-r' + rowIndex + '-c' + colIndex; + + // 將 td 替換為 th + var $th = $('') + .attr({ + 'scope': 'row', + 'id': headerId + }) + .html($cell.html()); + + // 複製原有 style/class + if ($cell.attr('style')) $th.attr('style', $cell.attr('style')); + if ($cell.attr('class')) $th.attr('class', $cell.attr('class')); + + $cell.replaceWith($th); + + } else if (!isHeaderCell) { + // 資料欄:找對應的 th id + var headerColIndex = index - 1; + var rowIndex = $tr.index(); + var headerId = 'member-header-r' + rowIndex + '-c' + headerColIndex; + + if ($('#' + headerId).length || $('[id="' + headerId + '"]').length) { + $cell.attr('headers', headerId); + } + } + }); + }); + }); + + }, 500); +} + +$(document).ready(function () { + fixUniversalTableA11y(); }); // 執行 member等高計算,目前改用flexbox故mark掉 by ika 20160105 // $(window).load(function() { diff --git a/assets/stylesheets/template/modules/universal-table.scss b/assets/stylesheets/template/modules/universal-table.scss index 49ed1fd..5661bcb 100644 --- a/assets/stylesheets/template/modules/universal-table.scss +++ b/assets/stylesheets/template/modules/universal-table.scss @@ -483,7 +483,7 @@ img.image-preview { tbody > tr:nth-of-type(even) { background-color: #cccccc30; } - td{ + td,th{ border-bottom: 1px #333 solid; } }