Spaces:
Configuration error
Configuration error
refactor: filter sessions by full project folder paths and support Uncategorized category
Browse files- src/viewer/index.html +19 -7
src/viewer/index.html
CHANGED
|
@@ -3006,18 +3006,27 @@
|
|
| 3006 |
|
| 3007 |
var folderFilter = state.sessions.folderFilter || '';
|
| 3008 |
var projects = [];
|
|
|
|
| 3009 |
state.sessions.items.forEach(function(s) {
|
| 3010 |
-
var
|
| 3011 |
-
if (
|
| 3012 |
-
projects.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3013 |
}
|
| 3014 |
});
|
| 3015 |
projects.sort();
|
| 3016 |
|
| 3017 |
var toolbarHtml = '<div class="toolbar" style="margin-bottom: 12px; display: flex; gap: 10px; align-items: center;">';
|
| 3018 |
-
toolbarHtml += '<span style="font-size: 12px; font-weight: 600; color: var(--ink-muted);">FILTER BY FOLDER:</span>';
|
| 3019 |
-
toolbarHtml += '<select id="sessions-folder-filter" style="width:
|
| 3020 |
toolbarHtml += '<option value="">All Folders</option>';
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3021 |
projects.forEach(function(p) {
|
| 3022 |
var selected = p === folderFilter ? ' selected' : '';
|
| 3023 |
toolbarHtml += '<option value="' + esc(p) + '"' + selected + '>' + esc(p) + '</option>';
|
|
@@ -3027,8 +3036,11 @@
|
|
| 3027 |
|
| 3028 |
var filteredItems = items.filter(function(s) {
|
| 3029 |
if (!folderFilter) return true;
|
| 3030 |
-
var
|
| 3031 |
-
|
|
|
|
|
|
|
|
|
|
| 3032 |
});
|
| 3033 |
|
| 3034 |
var html = toolbarHtml + '<div class="session-list">';
|
|
|
|
| 3006 |
|
| 3007 |
var folderFilter = state.sessions.folderFilter || '';
|
| 3008 |
var projects = [];
|
| 3009 |
+
var hasNoFolder = false;
|
| 3010 |
state.sessions.items.forEach(function(s) {
|
| 3011 |
+
var pPath = s.project ? String(s.project).trim() : '';
|
| 3012 |
+
if (pPath) {
|
| 3013 |
+
if (!projects.includes(pPath)) {
|
| 3014 |
+
projects.push(pPath);
|
| 3015 |
+
}
|
| 3016 |
+
} else {
|
| 3017 |
+
hasNoFolder = true;
|
| 3018 |
}
|
| 3019 |
});
|
| 3020 |
projects.sort();
|
| 3021 |
|
| 3022 |
var toolbarHtml = '<div class="toolbar" style="margin-bottom: 12px; display: flex; gap: 10px; align-items: center;">';
|
| 3023 |
+
toolbarHtml += '<span style="font-size: 12px; font-weight: 600; color: var(--ink-muted);">FILTER BY FOLDER PATH:</span>';
|
| 3024 |
+
toolbarHtml += '<select id="sessions-folder-filter" style="width: 280px; padding: 6px 10px; border-radius: 4px; border: 1px solid var(--border); background: var(--bg); color: var(--ink);">';
|
| 3025 |
toolbarHtml += '<option value="">All Folders</option>';
|
| 3026 |
+
if (hasNoFolder) {
|
| 3027 |
+
var selected = folderFilter === '_none_' ? ' selected' : '';
|
| 3028 |
+
toolbarHtml += '<option value="_none_"' + selected + '>Uncategorized (No Folder)</option>';
|
| 3029 |
+
}
|
| 3030 |
projects.forEach(function(p) {
|
| 3031 |
var selected = p === folderFilter ? ' selected' : '';
|
| 3032 |
toolbarHtml += '<option value="' + esc(p) + '"' + selected + '>' + esc(p) + '</option>';
|
|
|
|
| 3036 |
|
| 3037 |
var filteredItems = items.filter(function(s) {
|
| 3038 |
if (!folderFilter) return true;
|
| 3039 |
+
var pPath = s.project ? String(s.project).trim() : '';
|
| 3040 |
+
if (folderFilter === '_none_') {
|
| 3041 |
+
return !pPath;
|
| 3042 |
+
}
|
| 3043 |
+
return pPath === folderFilter;
|
| 3044 |
});
|
| 3045 |
|
| 3046 |
var html = toolbarHtml + '<div class="session-list">';
|