diff --git a/src/App.tsx b/src/App.tsx index 06e0b5f..133a319 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -110,7 +110,7 @@ function App() { {settings.showNextNDaysTask && ( )} '"' + m + '"').join(' '); + + const journalMarkerFilter = customMarkers.length > 0 + ? `(or + [(contains? #{"NOW" "LATER" "TODO" "DOING"} ?marker)] + [(contains? #{${markers}} ?marker)])` + : `[(contains? #{"NOW" "LATER" "TODO" "DOING"} ?marker)]`; + + const journalEntryCond = treatJournalEntriesAsScheduled ? ` + (and + ${journalMarkerFilter} + [?p :block/journal? true] + [?p :block/journal-day ?d] + (not [?b :block/scheduled]) + (not [?b :block/deadline]) + [(> ?d ${start})] + [(<= ?d ${next})]) + ` : ''; + + const customMarkerScheduledCond = customMarkers.length > 0 ? ` + (and + [(contains? #{${markers}} ?marker)] + (or + [?b :block/scheduled ?d] + [?b :block/deadline ?d]) + [(> ?d ${start})] + [(<= ?d ${next})]) + ` : ''; const query = ` [:find (pull ?b [*]) :where [?b :block/marker ?marker] - [(contains? #{"NOW" "LATER" "TODO" "DOING"} ?marker)] [?b :block/page ?p] (or - [?b :block/scheduled ?d] - [?b :block/deadline ?d]) - [(> ?d ${start})]] - [(> ?d ${next})]] + (and + [(contains? #{"NOW" "LATER" "TODO" "DOING"} ?marker)] + (or + [?b :block/scheduled ?d] + [?b :block/deadline ?d]) + [(> ?d ${start})] + [(<= ?d ${next})]) + ${journalEntryCond} + ${customMarkerScheduledCond})] `; return query; } diff --git a/src/querys/scheduled.ts b/src/querys/scheduled.ts index 8f99130..df75c8e 100644 --- a/src/querys/scheduled.ts +++ b/src/querys/scheduled.ts @@ -3,19 +3,27 @@ import dayjs, { Dayjs } from 'dayjs'; export default function getScheduledTaskQuery( treatJournalEntriesAsScheduled = true, startDate: Dayjs | Date = new Date(), + customMarkers: string[] = [], ) { const start = dayjs(startDate).format('YYYYMMDD'); + const markers = customMarkers.map((m) => '"' + m + '"').join(' '); const journalEntryCond = treatJournalEntriesAsScheduled ? ` (and [?p :block/journal? true] [?p :block/journal-day ?d])` : ''; + const markerFilter = customMarkers.length > 0 + ? `(or + [(contains? #{"NOW" "LATER" "TODO" "DOING"} ?marker)] + [(contains? #{${markers}} ?marker)])` + : `[(contains? #{"NOW" "LATER" "TODO" "DOING"} ?marker)]`; + const query = ` [:find (pull ?b [*]) :where [?b :block/marker ?marker] - [(contains? #{"NOW" "LATER" "TODO" "DOING"} ?marker)] + ${markerFilter} [?b :block/page ?p] (or (or diff --git a/src/querys/today.ts b/src/querys/today.ts index 902d5ef..c1352ec 100644 --- a/src/querys/today.ts +++ b/src/querys/today.ts @@ -26,6 +26,16 @@ export default function getTodayTaskQuery( [(<= ?d ${today})]) ` : ''; + const customMarkerJournalCond = customMarkers.length > 0 && treatJournalEntriesAsScheduled ? ` + (and + [(contains? #{${markers}} ?marker)] + [?p :block/journal? true] + [?p :block/journal-day ?d] + (not [?b :block/scheduled]) + (not [?b :block/deadline]) + [(<= ?d ${today})]) + ` : ''; + const query = ` [:find (pull ?b [*]) :where @@ -39,7 +49,8 @@ export default function getTodayTaskQuery( [?b :block/deadline ?d]) [(<= ?d ${today})]) ${journalEntryCond} - ${customMarkerCond})] + ${customMarkerCond} + ${customMarkerJournalCond})] `; return query;