diff --git a/packages/desktop-client/src/components/reports/ReportOptions.ts b/packages/desktop-client/src/components/reports/ReportOptions.ts index 4f58c81def3adba24f1775bfb703d61d36244eef..acad7f742d7921f41fa60dbc938d3923ce7f9c71 100644 --- a/packages/desktop-client/src/components/reports/ReportOptions.ts +++ b/packages/desktop-client/src/components/reports/ReportOptions.ts @@ -136,20 +136,21 @@ const intervalOptions = [ { description: 'Daily', name: 'Day', - format: 'yyyy-MM-dd', + format: 'yy-MM-dd', range: 'dayRangeInclusive', }, { description: 'Weekly', name: 'Week', - format: 'yyyy-MM-dd', + format: 'yy-MM-dd', range: 'weekRangeInclusive', }, //{ value: 3, description: 'Fortnightly', name: 3}, { description: 'Monthly', name: 'Month', - format: 'MMMM, yyyy', + // eslint-disable-next-line rulesdir/typography + format: "MMM ''yy", range: 'rangeInclusive', }, { diff --git a/packages/desktop-client/src/components/reports/ReportSidebar.jsx b/packages/desktop-client/src/components/reports/ReportSidebar.jsx index e48fb0be5dfb5042ff380ce53a73d46400d39bc8..23f949a4a9b253d757e1cae53bd379f03491e974 100644 --- a/packages/desktop-client/src/components/reports/ReportSidebar.jsx +++ b/packages/desktop-client/src/components/reports/ReportSidebar.jsx @@ -431,28 +431,26 @@ export function ReportSidebar({ }} /> </View> - {['Category', 'Group'].includes(customReportItems.groupBy) && ( - <View - style={{ - marginTop: 10, - minHeight: 200, + <View + style={{ + marginTop: 10, + minHeight: 200, + }} + > + <CategorySelector + categoryGroups={categories.grouped.filter(f => { + return customReportItems.showHiddenCategories || !f.hidden + ? true + : false; + })} + selectedCategories={customReportItems.selectedCategories} + setSelectedCategories={e => { + setSelectedCategories(e); + onReportChange({ type: 'modify' }); }} - > - <CategorySelector - categoryGroups={categories.grouped.filter(f => { - return customReportItems.showHiddenCategories || !f.hidden - ? true - : false; - })} - selectedCategories={customReportItems.selectedCategories} - setSelectedCategories={e => { - setSelectedCategories(e); - onReportChange({ type: 'modify' }); - }} - showHiddenCategories={customReportItems.showHiddenCategories} - /> - </View> - )} + showHiddenCategories={customReportItems.showHiddenCategories} + /> + </View> </View> ); } diff --git a/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableTotals.tsx b/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableTotals.tsx index d47cf02530de0002894dda1ccbfead38aaa1f6f3..8cae27600c42f9dcac592591489bd76b06eb71b8 100644 --- a/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableTotals.tsx +++ b/packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableTotals.tsx @@ -10,6 +10,7 @@ import { import { type GroupedEntity } from 'loot-core/src/types/models/reports'; import { theme } from '../../../../style'; +import { styles } from '../../../../style/styles'; import { type CSSProperties } from '../../../../style/types'; import { View } from '../../../common/View'; import { Row, Cell } from '../../../table'; @@ -72,6 +73,13 @@ export function ReportTableTotals({ id="total" style={{ overflowX: 'auto', + scrollbarWidth: compact ? 'none' : 'inherit', + ...styles.horizontalScrollbar, + '::-webkit-scrollbar': { + backgroundColor: theme.tableBackground, + height: 12, + dispaly: compact && 'none', + }, flexDirection: 'row', flex: 1, }} diff --git a/packages/desktop-client/src/components/reports/reportRanges.ts b/packages/desktop-client/src/components/reports/reportRanges.ts index 8c6326cabbec37a49ca990c690560b23c0091e96..0acf4d42b2866ad60903cd5ddd240f71552cf4b3 100644 --- a/packages/desktop-client/src/components/reports/reportRanges.ts +++ b/packages/desktop-client/src/components/reports/reportRanges.ts @@ -134,6 +134,7 @@ export function getSpecificRange( firstDayOfWeekIdx?: LocalPrefs['firstDayOfWeekIdx'], ) { const currentDay = monthUtils.currentDay(); + const currentWeek = monthUtils.currentWeek(firstDayOfWeekIdx); let dateStart = monthUtils.subMonths(currentDay, offset) + '-01'; let dateEnd = monthUtils.getMonthEnd( @@ -142,7 +143,7 @@ export function getSpecificRange( ); if (type === 'Weeks') { - dateStart = monthUtils.subWeeks(currentDay, offset); + dateStart = monthUtils.subWeeks(currentWeek, offset); dateEnd = monthUtils.getWeekEnd( monthUtils.addWeeks(dateStart, addNumber === null ? offset : addNumber), firstDayOfWeekIdx, diff --git a/packages/desktop-client/src/components/reports/reports/CustomReport.jsx b/packages/desktop-client/src/components/reports/reports/CustomReport.jsx index b6cb2fa397d49ec25a24d14b5ade7ee5e02812b7..cc375de1dbcf5b66577d9128b32a832af77978c5 100644 --- a/packages/desktop-client/src/components/reports/reports/CustomReport.jsx +++ b/packages/desktop-client/src/components/reports/reports/CustomReport.jsx @@ -121,6 +121,7 @@ export function CustomReport() { useEffect(() => { async function run() { + onApplyFilter(null); report.conditions.forEach(condition => onApplyFilter(condition)); const trans = await send('get-earliest-transaction'); setEarliestTransaction(trans ? trans.date : monthUtils.currentDay()); @@ -164,16 +165,10 @@ export function CustomReport() { }, [interval]); useEffect(() => { - const format = - ReportOptions.intervalMap.get(interval).toLowerCase() + 'FromDate'; - - const dateStart = monthUtils[format](startDate); - const dateEnd = monthUtils[format](endDate); - const rangeProps = interval === 'Weekly' - ? [dateStart, dateEnd, firstDayOfWeekIdx] - : [dateStart, dateEnd]; + ? [startDate, endDate, firstDayOfWeekIdx] + : [startDate, endDate]; setIntervals( monthUtils[ReportOptions.intervalRange.get(interval)](...rangeProps), ); diff --git a/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts index 860efbc0755f8bdbebe62c4528a5170f2fe016ed..e40e32b659172279b1ed8b67393dc11a38ef33b6 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/custom-spreadsheet.ts @@ -143,16 +143,10 @@ export function createCustomSpreadsheet({ }); } - const format = - ReportOptions.intervalMap.get(interval).toLowerCase() + 'FromDate'; const rangeProps = interval === 'Weekly' - ? [ - monthUtils[format](startDate), - monthUtils[format](endDate), - firstDayOfWeekIdx, - ] - : [monthUtils[format](startDate), monthUtils[format](endDate)]; + ? [startDate, endDate, firstDayOfWeekIdx] + : [startDate, endDate]; const intervals = monthUtils[ReportOptions.intervalRange.get(interval)]( ...rangeProps, ); @@ -214,11 +208,10 @@ export function createCustomSpreadsheet({ totalDebts += perIntervalDebts; arr.push({ - date: - interval === 'Monthly' - ? // eslint-disable-next-line rulesdir/typography - d.format(d.parseISO(`${intervalItem}-01`), "MMM ''yy") - : intervalItem, + date: d.format( + d.parseISO(intervalItem), + ReportOptions.intervalFormat.get(interval), + ), ...stacked, dateStart: intervalItem, totalDebts: integerToAmount(perIntervalDebts), diff --git a/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts index da794cdfe3518f8377d3908ca837a2fc0744e666..591cb81cfb48006a94fe234123ae134a5906fbfb 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/grouped-spreadsheet.ts @@ -92,16 +92,10 @@ export function createGroupedSpreadsheet({ }); } - const format = - ReportOptions.intervalMap.get(interval).toLowerCase() + 'FromDate'; const rangeProps = interval === 'Weekly' - ? [ - monthUtils[format](startDate), - monthUtils[format](endDate), - firstDayOfWeekIdx, - ] - : [monthUtils[format](startDate), monthUtils[format](endDate)]; + ? [startDate, endDate, firstDayOfWeekIdx] + : [startDate, endDate]; const intervals = monthUtils[ReportOptions.intervalRange.get(interval)]( ...rangeProps, ); diff --git a/packages/desktop-client/src/style/styles.ts b/packages/desktop-client/src/style/styles.ts index e7c8e17944edb781ee353fed1eaa22e9266ef18b..e630ac4f48e037a29007caac60f907548684c65c 100644 --- a/packages/desktop-client/src/style/styles.ts +++ b/packages/desktop-client/src/style/styles.ts @@ -139,6 +139,7 @@ export const styles = { overflow: 'auto', }, // Dynamically set + horizontalScrollbar: null as CSSProperties | null, lightScrollbar: null as CSSProperties | null, darkScrollbar: null as CSSProperties | null, scrollbarWidth: null as number | null, @@ -151,6 +152,20 @@ let hiddenScrollbars = false; // lightScrollbar => primary // darkScrollbar => secondary function onScrollbarChange() { + styles.horizontalScrollbar = !hiddenScrollbars && { + '::-webkit-scrollbar': { + backgroundColor: 'inherit', + height: 12, + }, + '::-webkit-scrollbar-thumb': { + width: 7, + borderRadius: 30, + backgroundClip: 'padding-box', + border: '2px solid rgba(0, 0, 0, 0)', + backgroundColor: '#d0d0d0', + }, + }; + styles.lightScrollbar = !hiddenScrollbars && { '& ::-webkit-scrollbar': { width: 11, diff --git a/packages/loot-core/src/shared/months.ts b/packages/loot-core/src/shared/months.ts index 6be72eddc8f135d025c61ca03a6541c63dbc54c5..4828434661c04474b62acbb7d7de162b0cfc9697 100644 --- a/packages/loot-core/src/shared/months.ts +++ b/packages/loot-core/src/shared/months.ts @@ -256,7 +256,8 @@ export function _weekRange( ): string[] { const weeks: string[] = []; let week = weekFromDate(start, firstDayOfWeekIdx); - while (d.isBefore(_parse(week), _parse(end))) { + const endWeek = weekFromDate(end, firstDayOfWeekIdx); + while (d.isBefore(_parse(week), _parse(endWeek))) { weeks.push(week); week = addWeeks(week, 1); } diff --git a/upcoming-release-notes/2677.md b/upcoming-release-notes/2677.md new file mode 100644 index 0000000000000000000000000000000000000000..db2ea4278a727308237a56af39f6696669d34683 --- /dev/null +++ b/upcoming-release-notes/2677.md @@ -0,0 +1,6 @@ +--- +category: Enhancements +authors: [carkom] +--- + +Fixing small visual issues with custom reports.