Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
6cddcae
パッケージ関連図の出力
irof Jan 23, 2026
65fda3b
パッケージ概要のダイアグラムを選択したパッケージ配下に絞りこめるようにする
irof Jan 23, 2026
73cba94
絞り込みを手入力でもできるように
irof Jan 23, 2026
3b10dfb
パッケージ概要の関連図のラベルを名称に変更
irof Jan 23, 2026
8dbae16
相互依存の矢印を1つにして赤く
irof Jan 23, 2026
122cf48
mermaid更新
irof Jan 23, 2026
f0feca6
階層集約を追加
irof Jan 23, 2026
85167d0
パッケージ概要のクリック時のフィルタを変更
irof Jan 23, 2026
1833932
テーブルのクリックでのダイアグラム書き換えをやめた
irof Jan 23, 2026
3d86e18
jig.jsの分割
irof Jan 24, 2026
939038f
追加スクリプトはreplaceの外で読ませる必要がある
irof Jan 24, 2026
4edde94
分割したスクリプトもコピーする
irof Jan 24, 2026
ce751e8
コメント追加
irof Jan 24, 2026
d484c51
エラー時にメッセージを出す。
irof Jan 24, 2026
fd4f57a
edge上限オーバーのエラーに対応
irof Jan 24, 2026
52452fd
階層集約の選択肢を選びやすくした
irof Jan 24, 2026
821f492
パッケージ概要の表示設定を改善
irof Jan 24, 2026
f93b10c
クリアボタンをリセットに変更
irof Jan 24, 2026
a4895c4
詳細列を除去
irof Jan 24, 2026
0492e22
テーブルからパッケージを絞り込めるように
irof Jan 24, 2026
fe56e51
パッケージ絞り込み→スコープに変更
irof Jan 24, 2026
5492b75
package-list用のcssをまとめる
irof Jan 24, 2026
a2812be
sr-onlyは謎なので略しない
irof Jan 24, 2026
af960fd
テンプレートのJSONをそれっぽく
irof Jan 24, 2026
5cd1be7
スコープでテーブルも絞りコム
irof Jan 24, 2026
5582aa5
関連のみの表示をテーブルでもできるように
irof Jan 24, 2026
f2d6e24
関連絞り込みのときもテーブルを連動するように
irof Jan 24, 2026
80dbdfb
関連モードの切り替え機能を追加
irof Jan 24, 2026
d6bf803
デフォルトスコープ設定機能を追加
irof Jan 24, 2026
1171d84
関連フィルターの選択内容を表示する機能を追加
irof Jan 24, 2026
4948659
スコープ解除ボタンと関連解除ボタンを追加
irof Jan 24, 2026
5c47c24
デフォルトのスコープフィルタを末尾domainにする
irof Jan 24, 2026
bd27e96
図の向き切り替え機能を追加
irof Jan 24, 2026
5fdf4ad
パッケージ関連図で親パッケージでグルーピングする
irof Jan 24, 2026
6f3bd4b
グルーピングの改善
irof Jan 24, 2026
a5f770b
アイコン追加
irof Jan 24, 2026
8678c82
押せないアイコンを押せないように
irof Jan 24, 2026
438af00
関連フィルタの選択時にパッケージフィルタに入らないように
irof Jan 24, 2026
44c1af3
rename
irof Jan 24, 2026
03aff47
スコープフィルタをパッケージフィルタに変更
irof Jan 24, 2026
3de316c
スコープフィルタをパッケージフィルタに変更
irof Jan 24, 2026
b7676be
「スコープ」を根絶
irof Jan 24, 2026
f0e6235
相互依存と原因を表示
irof Jan 24, 2026
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
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,9 @@ private void generateAssets() {
copyAsset("style.css", assetsPath);
copyAsset("jig.js", assetsPath);
copyAsset("favicon.ico", assetsPath);
// ページごとのスクリプトを追加する
// 増えるごとにここに追加しなきゃいけないのはいかがなものか
copyAsset("package.js", assetsPath);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
Expand Down
69 changes: 3 additions & 66 deletions jig-core/src/main/resources/templates/assets/jig.js
Original file line number Diff line number Diff line change
Expand Up @@ -180,16 +180,6 @@ function updateLetterNavigationVisibility() {
});
}

function toggleDescription() {
// クラス名に一致する要素を全部取得
const elements = document.getElementsByClassName("description");

// 各要素に対して「hidden」クラスをトグル(付けたり外したり)する
Array.from(elements).forEach(el => {
console.log(el);
el.classList.toggle("hidden");
});
}

function setupSortableTables() {
document.querySelectorAll("table.sortable").forEach(table => {
Expand All @@ -198,6 +188,9 @@ function setupSortableTables() {
if (header.hasAttribute("onclick")) {
return;
}
if (header.classList.contains("no-sort")) {
return;
}

header.addEventListener("click", sortTable);
header.style.cursor = "pointer";
Expand Down Expand Up @@ -285,58 +278,6 @@ function zoomFamilyTables(baseTable, baseRow) {
})
}

function writePackageTable() {
const jsonText = document.getElementById('package-data').textContent;
/** @type {{packages?: Array<{fqn: string, name: string, classCount: number, description: string}>, relations?: Array<{from: string, to: string}>} | Array<{fqn: string, name: string, classCount: number, description: string}>} */
const packageData = JSON.parse(jsonText);
const packages = Array.isArray(packageData) ? packageData : (packageData.packages ?? []);
const relations = Array.isArray(packageData) ? [] : (packageData.relations ?? []);
const incomingCounts = new Map();
const outgoingCounts = new Map();
relations.forEach(relation => {
outgoingCounts.set(relation.from, (outgoingCounts.get(relation.from) ?? 0) + 1);
incomingCounts.set(relation.to, (incomingCounts.get(relation.to) ?? 0) + 1);
});

const tbody = document.querySelector('#package-table tbody');
//tbody.innerHTML = '';

packages.forEach(item => {
const tr = document.createElement('tr');

const fqnTd = document.createElement('td');
fqnTd.textContent = item.fqn;
fqnTd.className = 'fqn';
tr.appendChild(fqnTd);

const nameTd = document.createElement('td');
nameTd.textContent = item.name;
tr.appendChild(nameTd);

const classCountTd = document.createElement('td');
classCountTd.textContent = String(item.classCount);
classCountTd.className = 'number';
tr.appendChild(classCountTd);

const incomingCountTd = document.createElement('td');
incomingCountTd.textContent = String(incomingCounts.get(item.fqn) ?? 0);
incomingCountTd.className = 'number';
tr.appendChild(incomingCountTd);

const outgoingCountTd = document.createElement('td');
outgoingCountTd.textContent = String(outgoingCounts.get(item.fqn) ?? 0);
outgoingCountTd.className = 'number';
tr.appendChild(outgoingCountTd);

const descTd = document.createElement('td');
descTd.textContent = item.description;
descTd.className = 'description hidden markdown';
tr.appendChild(descTd);

tbody.appendChild(tr);
});
}

// ページ読み込み時のイベント
// リスナーの登録はそのページだけでやる
document.addEventListener("DOMContentLoaded", function () {
Expand All @@ -350,10 +291,6 @@ document.addEventListener("DOMContentLoaded", function () {
document.getElementById("show-letter-navigation").addEventListener("change", updateLetterNavigationVisibility);

updateLetterNavigationVisibility();
} else if (document.body.classList.contains("package-list")) {
document.getElementById("toggle-description-btn").addEventListener("click", toggleDescription);
setupSortableTables();
writePackageTable();
} else if (document.body.classList.contains("insight")) {
setupSortableTables();
setupZoomIcons();
Expand Down
Loading