Yash030 commited on
Commit
0f9d0de
·
1 Parent(s): 0d0d847

refactor: filter sessions by full project folder paths and support Uncategorized category

Browse files
Files changed (1) hide show
  1. 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 folder = s.project ? String(s.project).split(/[\\/]/).pop() : '';
3011
- if (folder && !projects.includes(folder)) {
3012
- projects.push(folder);
 
 
 
 
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: 200px; padding: 6px 10px; border-radius: 4px; border: 1px solid var(--border); background: var(--bg); color: var(--ink);">';
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 folder = s.project ? String(s.project).split(/[\\/]/).pop() : '';
3031
- return folder === folderFilter;
 
 
 
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">';