Skip to content

Commit 5889789

Browse files
committed
Revert "feat: Editing an Includes setting updates open Tasks searches (#3462)"
This reverts commit eac6d1e.
1 parent eac6d1e commit 5889789

File tree

8 files changed

+12
-175
lines changed

8 files changed

+12
-175
lines changed

resources/sample_vaults/Tasks-Demo/How To/Reuse instructions across the vault.md

Lines changed: 2 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
---
22
TQ_explain: false
33
TQ_extra_instructions: |-
4-
(filename includes Tasks Format) OR (tag includes #context)
54
ignore global query
6-
limit 20
5+
limit 10
76
---
87
# Reuse instructions across the vault
98

@@ -17,12 +16,6 @@ explain: `INPUT[toggle:TQ_explain]`
1716

1817
(assuming there is not one called `xxxx`!)
1918

20-
````text
21-
```tasks
22-
include xxxx
23-
```
24-
````
25-
2619
```tasks
2720
include xxxx
2821
```
@@ -31,25 +24,13 @@ include xxxx
3124

3225
explain: `INPUT[toggle:TQ_explain]`
3326

34-
````text
35-
```tasks
36-
```
37-
````
38-
3927
```tasks
4028
```
4129

4230
## Hide all the fields
4331

4432
explain: `INPUT[toggle:TQ_explain]`
4533

46-
````text
47-
```tasks
48-
include hide_all_dates
49-
include hide_other_fields
50-
```
51-
````
52-
5334
```tasks
5435
include hide_all_dates
5536
include hide_other_fields
@@ -59,59 +40,24 @@ include hide_other_fields
5940

6041
explain: `INPUT[toggle:TQ_explain]`
6142

62-
````text
63-
```tasks
64-
include hide_buttons
65-
```
66-
````
67-
6843
```tasks
6944
include hide_buttons
7045
```
7146

72-
## Show only the description and any tags
47+
## Hide everything, including tags
7348

7449
explain: `INPUT[toggle:TQ_explain]`
7550

76-
````text
77-
```tasks
78-
include just_the_description_and_tags
79-
```
80-
````
81-
8251
```tasks
8352
include just_the_description_and_tags
8453
```
8554

86-
## Just show the description, without tags
87-
88-
explain: `INPUT[toggle:TQ_explain]`
89-
90-
````text
91-
```tasks
92-
include just_the_description
93-
```
94-
````
95-
96-
```tasks
97-
include just_the_description
98-
```
99-
10055
## Advanced use: return a function, that takes a parameter from the query source
10156

10257
### Has context 'home' - and group by the Include text - version 1
10358

10459
explain: `INPUT[toggle:TQ_explain]`
10560

106-
````text
107-
```tasks
108-
# For debug/explanatory purposes, show the source of the Include as a group name:
109-
group by function const x = "{{includes.filter_by_context}}"; return x
110-
111-
{{includes.filter_by_context}}('home')
112-
```
113-
````
114-
11561
```tasks
11662
# For debug/explanatory purposes, show the source of the Include as a group name:
11763
group by function const x = "{{includes.filter_by_context}}"; return x
@@ -123,16 +69,6 @@ group by function const x = "{{includes.filter_by_context}}"; return x
12369

12470
explain: `INPUT[toggle:TQ_explain]`
12571

126-
````text
127-
```tasks
128-
# For debug/explanatory purposes, show the source of the Include as a group name:
129-
group by function const x = "{{includes.extract_contexts_1}}"; return x
130-
131-
# includes.extract_contexts_1 value needs to be surrounded by parentheses ():
132-
filter by function return ({{includes.extract_contexts_1}})('home')
133-
```
134-
````
135-
13672
```tasks
13773
# For debug/explanatory purposes, show the source of the Include as a group name:
13874
group by function const x = "{{includes.extract_contexts_1}}"; return x
@@ -145,16 +81,6 @@ filter by function return ({{includes.extract_contexts_1}})('home')
14581

14682
explain: `INPUT[toggle:TQ_explain]`
14783

148-
````text
149-
```tasks
150-
# For debug/explanatory purposes, show the source of the Include as a group name:
151-
group by function const x = "{{includes.extract_contexts_2}}"; return x
152-
153-
# includes.extract_contexts_1 value has the parentheses, to simplify use:
154-
filter by function {{includes.extract_contexts_2}}('home')
155-
```
156-
````
157-
15884
```tasks
15985
# For debug/explanatory purposes, show the source of the Include as a group name:
16086
group by function const x = "{{includes.extract_contexts_2}}"; return x

src/Config/IncludesSettingsUI.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { Setting, TextAreaComponent } from 'obsidian';
22
import type TasksPlugin from '../main';
3-
import type { TasksEvents } from '../Obsidian/TasksEvents';
43
import { IncludesSettingsService, type RenamesInProgress } from './IncludesSettingsService';
54
import { type IncludesMap, type Settings, getSettings, updateSettings } from './Settings';
65

@@ -13,18 +12,15 @@ type RefreshViewCallback = () => void;
1312
*/
1413
export class IncludesSettingsUI {
1514
private readonly plugin: TasksPlugin;
16-
private readonly events: TasksEvents;
1715
private readonly includesSettingsService = new IncludesSettingsService();
1816
private readonly nameFields: Map<string, { inputEl: HTMLInputElement; originalKey: string }> = new Map();
1917

2018
/**
2119
* Creates a new instance of IncludesSettingsUI
2220
* @param plugin The Tasks plugin instance
23-
* @param events The plugin's events object
2421
*/
25-
constructor(plugin: TasksPlugin, events: TasksEvents) {
22+
constructor(plugin: TasksPlugin) {
2623
this.plugin = plugin;
27-
this.events = events;
2824
}
2925

3026
/**
@@ -223,7 +219,5 @@ export class IncludesSettingsUI {
223219
if (refreshView) {
224220
refreshView();
225221
}
226-
227-
this.events.triggerReloadOpenSearchResults();
228222
}
229223
}

src/Config/SettingsTab.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { Status } from '../Statuses/Status';
66
import type { StatusCollection } from '../Statuses/StatusCollection';
77
import { createStatusRegistryReport } from '../Statuses/StatusRegistryReport';
88
import { i18n } from '../i18n/i18n';
9-
import type { TasksEvents } from '../Obsidian/TasksEvents';
109
import * as Themes from './Themes';
1110
import {
1211
type HeadingState,
@@ -35,11 +34,11 @@ export class SettingsTab extends PluginSettingTab {
3534
private readonly plugin: TasksPlugin;
3635
private readonly includesSettingsUI;
3736

38-
constructor({ plugin, events }: { plugin: TasksPlugin; events: TasksEvents }) {
37+
constructor({ plugin }: { plugin: TasksPlugin }) {
3938
super(plugin.app, plugin);
4039

4140
this.plugin = plugin;
42-
this.includesSettingsUI = new IncludesSettingsUI(plugin, events);
41+
this.includesSettingsUI = new IncludesSettingsUI(plugin);
4342
}
4443

4544
private static createFragmentWithHTML = (html: string) =>

src/Obsidian/TasksEvents.ts

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import type { State } from './Cache';
77
enum Event {
88
CacheUpdate = 'obsidian-tasks-plugin:cache-update',
99
RequestCacheUpdate = 'obsidian-tasks-plugin:request-cache-update',
10-
ReloadOpenSearchResults = 'obsidian-tasks-plugin:reload-open-search-results',
1110
}
1211

1312
interface CacheUpdateData {
@@ -23,52 +22,30 @@ export class TasksEvents {
2322
this.obsidianEvents = obsidianEvents;
2423
}
2524

26-
// ------------------------------------------------------------------------
27-
// CacheUpdate event
28-
2925
public onCacheUpdate(handler: (cacheData: CacheUpdateData) => void): EventRef {
3026
this.logger.debug('TasksEvents.onCacheUpdate()');
31-
const name = Event.CacheUpdate;
3227
// @ts-expect-error: error TS2345: Argument of type '(cacheData: CacheUpdateData) => void'
3328
// is not assignable to parameter of type '(...data: unknown[]) => unknown'.
34-
return this.obsidianEvents.on(name, handler);
29+
return this.obsidianEvents.on(Event.CacheUpdate, handler);
3530
}
3631

3732
public triggerCacheUpdate(cacheData: CacheUpdateData): void {
3833
this.logger.debug('TasksEvents.triggerCacheUpdate()');
3934
this.obsidianEvents.trigger(Event.CacheUpdate, cacheData);
4035
}
4136

42-
// ------------------------------------------------------------------------
43-
// RequestCacheUpdate event
44-
4537
public onRequestCacheUpdate(handler: (fn: (cacheData: CacheUpdateData) => void) => void): EventRef {
4638
this.logger.debug('TasksEvents.onRequestCacheUpdate()');
47-
const name = Event.RequestCacheUpdate;
4839
// @ts-expect-error: error TS2345: Argument of type '(cacheData: CacheUpdateData) => void'
4940
// is not assignable to parameter of type '(...data: unknown[]) => unknown'.
50-
return this.obsidianEvents.on(name, handler);
41+
return this.obsidianEvents.on(Event.RequestCacheUpdate, handler);
5142
}
5243

5344
public triggerRequestCacheUpdate(fn: (cacheData: CacheUpdateData) => void): void {
5445
this.logger.debug('TasksEvents.triggerRequestCacheUpdate()');
5546
this.obsidianEvents.trigger(Event.RequestCacheUpdate, fn);
5647
}
5748

58-
// ------------------------------------------------------------------------
59-
// ReloadOpenSearchResults event
60-
61-
public onReloadOpenSearchResults(handler: () => void): EventRef {
62-
this.logger.debug('TasksEvents.onReloadOpenSearchResults()');
63-
const name = Event.ReloadOpenSearchResults;
64-
return this.obsidianEvents.on(name, handler);
65-
}
66-
67-
public triggerReloadOpenSearchResults(): void {
68-
this.logger.debug('TasksEvents.triggerReloadOpenSearchResults()');
69-
this.obsidianEvents.trigger(Event.ReloadOpenSearchResults);
70-
}
71-
7249
public off(eventRef: EventRef): void {
7350
this.logger.debug('TasksEvents.off()');
7451
this.obsidianEvents.offref(eventRef);

src/Renderer/QueryRenderer.ts

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import {
22
type CachedMetadata,
3-
type Debouncer,
43
type EventRef,
54
type MarkdownPostProcessorContext,
65
MarkdownRenderChild,
76
MarkdownRenderer,
87
type TAbstractFile,
98
TFile,
10-
debounce,
119
} from 'obsidian';
1210
import { App, Keymap } from 'obsidian';
1311
import { GlobalQuery } from '../Config/GlobalQuery';
@@ -23,8 +21,6 @@ import type { Task } from '../Task/Task';
2321
import { type BacklinksEventHandler, type EditButtonClickHandler, QueryResultsRenderer } from './QueryResultsRenderer';
2422
import { createAndAppendElement } from './TaskLineRenderer';
2523

26-
type RenderParams = { tasks: Task[]; state: State };
27-
2824
/**
2925
* `QueryRenderer` is responsible for rendering queries in Markdown code blocks
3026
* annotated with the 'tasks' processor.
@@ -94,14 +90,12 @@ class QueryRenderChild extends MarkdownRenderChild {
9490
private readonly events: TasksEvents;
9591

9692
private renderEventRef: EventRef | undefined;
97-
private reloadSearchResultsEventRef: EventRef | undefined;
9893
private queryReloadTimeout: NodeJS.Timeout | undefined;
9994

10095
private isCacheChangedSinceLastRedraw = false;
10196
private observer: IntersectionObserver | null = null;
10297

10398
private readonly queryResultsRenderer: QueryResultsRenderer;
104-
private readonly debouncedRenderFn: Debouncer<[RenderParams], void>;
10599

106100
constructor({
107101
app,
@@ -133,19 +127,15 @@ class QueryRenderChild extends MarkdownRenderChild {
133127
this.app = app;
134128
this.plugin = plugin;
135129
this.events = events;
136-
137-
this.debouncedRenderFn = debounce((params: RenderParams) => this.render(params), 300, true);
138130
}
139131

140132
onload() {
141133
this.queryResultsRenderer.query.debug('[render] QueryRenderChild.onload() entered');
142134

143135
// Process the current cache state:
144136
this.events.triggerRequestCacheUpdate(this.render.bind(this));
145-
146-
// Listen to future changes:
137+
// Listen to future cache changes:
147138
this.renderEventRef = this.events.onCacheUpdate(this.render.bind(this));
148-
this.reloadSearchResultsEventRef = this.events.onReloadOpenSearchResults(this.rereadQueryFromFile.bind(this));
149139

150140
this.reloadQueryAtMidnight();
151141

@@ -231,17 +221,10 @@ class QueryRenderChild extends MarkdownRenderChild {
231221
this.events.off(this.renderEventRef);
232222
}
233223

234-
if (this.reloadSearchResultsEventRef !== undefined) {
235-
this.events.off(this.reloadSearchResultsEventRef);
236-
}
237-
238224
if (this.queryReloadTimeout !== undefined) {
239225
clearTimeout(this.queryReloadTimeout);
240226
}
241227

242-
// Cancel any pending debounced renders
243-
this.debouncedRenderFn.cancel();
244-
245228
this.observer?.disconnect();
246229
this.observer = null;
247230
}
@@ -273,11 +256,7 @@ class QueryRenderChild extends MarkdownRenderChild {
273256
}, millisecondsToMidnight + 1000); // Add buffer to be sure to run after midnight.
274257
}
275258

276-
private debouncedRender(params: RenderParams): void {
277-
this.debouncedRenderFn(params);
278-
}
279-
280-
private async render({ tasks, state }: RenderParams) {
259+
private async render({ tasks, state }: { tasks: Task[]; state: State }) {
281260
// We got here because the Cache reported a change in at least one task in the vault.
282261
// So note that any results we have already drawn are now out-of-date:
283262
this.isCacheChangedSinceLastRedraw = true;
@@ -325,12 +304,6 @@ class QueryRenderChild extends MarkdownRenderChild {
325304

326305
this.containerEl.firstChild?.replaceWith(content);
327306
}
328-
329-
private rereadQueryFromFile() {
330-
this.queryResultsRenderer.rereadQueryFromFile();
331-
this.isCacheChangedSinceLastRedraw = true;
332-
this.debouncedRender({ tasks: this.plugin.getTasks(), state: this.plugin.getState() });
333-
}
334307
}
335308

336309
function createEditTaskPencilClickHandler(app: App): EditButtonClickHandler {

src/Renderer/QueryResultsRenderer.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -112,20 +112,6 @@ export class QueryResultsRenderer {
112112
*/
113113
public setTasksFile(newFile: TasksFile) {
114114
this._tasksFile = newFile;
115-
this.rereadQueryFromFile();
116-
}
117-
118-
/**
119-
* Reads the query from the source file and tasks file.
120-
*
121-
* This is for when some change in the vault invalidates the current
122-
* Query object, and so it needs to be reloaded.
123-
*
124-
* For example, the user edited their Tasks plugin settings in some
125-
* way that changes how the query is interpreted, such as changing an
126-
* 'includes' definition.
127-
*/
128-
public rereadQueryFromFile() {
129115
this.query = this.makeQueryFromSourceAndTasksFile();
130116
}
131117

0 commit comments

Comments
 (0)