diff --git a/src/index.scss b/src/index.scss index a7290f6c..7f175c3e 100644 --- a/src/index.scss +++ b/src/index.scss @@ -28,7 +28,7 @@ a, text-decoration: none; } -a:not(.nav-link):not(.navbar-brand):not(.page-link):hover, +a:not(.nav-link):not(.navbar-brand):not(.page-link):not(.highlight-card):hover, .btn-link:hover { text-decoration: underline; } @@ -164,7 +164,8 @@ hr { .close, .close:hover, .table, -.table-hover > tbody > tr:hover > * { +.table-hover > tbody > tr:hover > *, +.table-hover > tbody > tr > * { color: var(--text-color); } diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx index 9810eff4..9e8a6769 100644 --- a/src/settings/Settings.tsx +++ b/src/settings/Settings.tsx @@ -21,13 +21,13 @@ const Settings = ( General Short URLs - Secondary items + Other items , ]} />} /> , ]} />} /> - , ]} />} /> + , ]} />} /> } /> diff --git a/src/visits/VisitsTable.tsx b/src/visits/VisitsTable.tsx index 505f01fe..21cfae83 100644 --- a/src/visits/VisitsTable.tsx +++ b/src/visits/VisitsTable.tsx @@ -87,137 +87,139 @@ const VisitsTable = ({ }, [ searchTerm ]); return ( - - - - - {supportsBots && ( - - )} - - - - - - - {isOrphanVisits && ( - - )} - - - - - - - {!resultSet.visitsGroups[page - 1]?.length && ( +
+
setSelectedVisits( - selectedVisits.length < resultSet.total ? resultSet.visitsGroups.flat() : [], - )} - > - 0 })} /> - - - {renderOrderIcon('potentialBot')} - - Date - {renderOrderIcon('date')} - - Country - {renderOrderIcon('country')} - - City - {renderOrderIcon('city')} - - Browser - {renderOrderIcon('browser')} - - OS - {renderOrderIcon('os')} - - Referrer - {renderOrderIcon('referer')} - - Visited URL - {renderOrderIcon('visitedUrl')} -
- -
+ - - - )} - {resultSet.visitsGroups[page - 1]?.map((visit, index) => { - const isSelected = selectedVisits.includes(visit); - - return ( - setSelectedVisits( - isSelected ? selectedVisits.filter((v) => v !== visit) : [ ...selectedVisits, visit ], + selectedVisits.length < resultSet.total ? resultSet.visitsGroups.flat() : [], )} > - - {supportsBots && ( - - )} - - - - - - - {isOrphanVisits && } - - ); - })} - - {resultSet.total > PAGE_SIZE && ( - + 0 })} /> + + {supportsBots && ( + + )} + + + + + + + {isOrphanVisits && ( + + )} + - - - )} -
- No visits found with current filtering -
- {isSelected && } - - {visit.potentialBot && ( - <> - - - Potentially a visit from a bot or crawler - - - )} - {visit.country}{visit.city}{visit.browser}{visit.os}{visit.referer}{(visit as NormalizedOrphanVisit).visitedUrl}
+ + {renderOrderIcon('potentialBot')} + + Date + {renderOrderIcon('date')} + + Country + {renderOrderIcon('country')} + + City + {renderOrderIcon('city')} + + Browser + {renderOrderIcon('browser')} + + OS + {renderOrderIcon('os')} + + Referrer + {renderOrderIcon('referer')} + + Visited URL + {renderOrderIcon('visitedUrl')} +
-
-
- -
-
-
- Visits {prettify(start + 1)} to{' '} - {prettify(min(end, resultSet.total))} of{' '} - {prettify(resultSet.total)} -
-
-
+
+
+ + + {!resultSet.visitsGroups[page - 1]?.length && ( + + + No visits found with current filtering + + + )} + {resultSet.visitsGroups[page - 1]?.map((visit, index) => { + const isSelected = selectedVisits.includes(visit); + + return ( + setSelectedVisits( + isSelected ? selectedVisits.filter((v) => v !== visit) : [ ...selectedVisits, visit ], + )} + > + + {isSelected && } + + {supportsBots && ( + + {visit.potentialBot && ( + <> + + + Potentially a visit from a bot or crawler + + + )} + + )} +