Skip to content

Commit accd202

Browse files
authored
Merge pull request #3147 from ilandikov/refactor-QRR-renames
refactor: renames in `QueryResultsRenderer`
2 parents 13bf86d + efc9a72 commit accd202

File tree

1 file changed

+41
-33
lines changed

1 file changed

+41
-33
lines changed

src/Renderer/QueryResultsRenderer.ts

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ export interface QueryRendererParameters {
2828
editTaskPencilClickHandler: EditButtonClickHandler;
2929
}
3030

31+
/**
32+
* We want this function to be a method of ListItem but that causes a circular dependency
33+
* which makes the plugin fail to load in Obsidian.
34+
*
35+
* Note: the tests are in ListItem.test.ts
36+
*
37+
* @param listItem
38+
*/
3139
function findClosestParentTask(listItem: ListItem) {
3240
// Try to find the closest parent that is a task
3341
let closestParentTask = listItem.parent;
@@ -198,16 +206,16 @@ export class QueryResultsRenderer {
198206
// will be empty, and no headings will be added.
199207
await this.addGroupHeadings(content, group.groupHeadings);
200208

201-
const renderedTasks: Set<ListItem> = new Set();
202-
await this.createTaskList(group.tasks, content, queryRendererParameters, renderedTasks);
209+
const renderedListItems: Set<ListItem> = new Set();
210+
await this.createTaskList(group.tasks, content, queryRendererParameters, renderedListItems);
203211
}
204212
}
205213

206214
private async createTaskList(
207-
tasks: ListItem[],
215+
listItems: ListItem[],
208216
content: HTMLElement,
209217
queryRendererParameters: QueryRendererParameters,
210-
renderedTasks: Set<ListItem>,
218+
renderedListItems: Set<ListItem>,
211219
): Promise<void> {
212220
const taskList = createAndAppendElement('ul', content);
213221

@@ -228,16 +236,16 @@ export class QueryResultsRenderer {
228236
queryLayoutOptions: this.query.queryLayoutOptions,
229237
});
230238

231-
for (const [taskIndex, task] of tasks.entries()) {
239+
for (const [listItemIndex, listItem] of listItems.entries()) {
232240
if (this.query.queryLayoutOptions.hideTree) {
233241
/* Old-style rendering of tasks:
234242
* - What is rendered:
235243
* - Only task lines that match the query are rendered, as a flat list
236244
* - The order that lines are rendered:
237245
* - Tasks are rendered in the order specified in 'sort by' instructions and default sort order.
238246
*/
239-
if (task instanceof Task) {
240-
await this.addTask(taskList, taskLineRenderer, task, taskIndex, queryRendererParameters);
247+
if (listItem instanceof Task) {
248+
await this.addTask(taskList, taskLineRenderer, listItem, listItemIndex, queryRendererParameters);
241249
}
242250
} else {
243251
/* New-style rendering of tasks:
@@ -253,85 +261,85 @@ export class QueryResultsRenderer {
253261
await this.addTaskOrListItemAndChildren(
254262
taskList,
255263
taskLineRenderer,
256-
task,
257-
taskIndex,
264+
listItem,
265+
listItemIndex,
258266
queryRendererParameters,
259-
tasks,
260-
renderedTasks,
267+
listItems,
268+
renderedListItems,
261269
);
262270
}
263271
}
264272

265273
content.appendChild(taskList);
266274
}
267275

268-
private willBeRenderedLater(task: ListItem, renderedTasks: Set<ListItem>, tasks: ListItem[]) {
269-
const closestParentTask = findClosestParentTask(task);
276+
private willBeRenderedLater(listItem: ListItem, renderedListItems: Set<ListItem>, listItems: ListItem[]) {
277+
const closestParentTask = findClosestParentTask(listItem);
270278
if (!closestParentTask) {
271279
return false;
272280
}
273281

274-
if (!renderedTasks.has(closestParentTask)) {
282+
if (!renderedListItems.has(closestParentTask)) {
275283
// This task is a direct or indirect child of another task that we are waiting to draw,
276284
// so don't draw it yet, it will be done recursively later.
277-
if (tasks.includes(closestParentTask)) {
285+
if (listItems.includes(closestParentTask)) {
278286
return true;
279287
}
280288
}
281289

282290
return false;
283291
}
284292

285-
private alreadyRendered(task: ListItem, renderedTasks: Set<ListItem>) {
286-
return renderedTasks.has(task);
293+
private alreadyRendered(listItem: ListItem, renderedListItems: Set<ListItem>) {
294+
return renderedListItems.has(listItem);
287295
}
288296

289297
private async addTaskOrListItemAndChildren(
290298
taskList: HTMLUListElement,
291299
taskLineRenderer: TaskLineRenderer,
292-
task: ListItem,
300+
listItem: ListItem,
293301
taskIndex: number,
294302
queryRendererParameters: QueryRendererParameters,
295-
tasks: ListItem[],
296-
renderedTasks: Set<ListItem>,
303+
listItems: ListItem[],
304+
renderedListItems: Set<ListItem>,
297305
) {
298-
if (this.alreadyRendered(task, renderedTasks)) {
306+
if (this.alreadyRendered(listItem, renderedListItems)) {
299307
return;
300308
}
301309

302-
if (this.willBeRenderedLater(task, renderedTasks, tasks)) {
310+
if (this.willBeRenderedLater(listItem, renderedListItems, listItems)) {
303311
return;
304312
}
305313

306-
const listItem = await this.addTaskOrListItem(
314+
const listItemElement = await this.addTaskOrListItem(
307315
taskList,
308316
taskLineRenderer,
309-
task,
317+
listItem,
310318
taskIndex,
311319
queryRendererParameters,
312320
);
313-
renderedTasks.add(task);
321+
renderedListItems.add(listItem);
314322

315-
if (task.children.length > 0) {
316-
await this.createTaskList(task.children, listItem, queryRendererParameters, renderedTasks);
317-
task.children.forEach((childTask) => {
318-
renderedTasks.add(childTask);
323+
if (listItem.children.length > 0) {
324+
await this.createTaskList(listItem.children, listItemElement, queryRendererParameters, renderedListItems);
325+
listItem.children.forEach((childTask) => {
326+
renderedListItems.add(childTask);
319327
});
320328
}
321329
}
322330

323331
private async addTaskOrListItem(
324332
taskList: HTMLUListElement,
325333
taskLineRenderer: TaskLineRenderer,
326-
task: ListItem,
334+
listItem: ListItem,
327335
taskIndex: number,
328336
queryRendererParameters: QueryRendererParameters,
329337
) {
330-
if (task instanceof Task) {
331-
return await this.addTask(taskList, taskLineRenderer, task, taskIndex, queryRendererParameters);
338+
if (listItem instanceof Task) {
339+
return await this.addTask(taskList, taskLineRenderer, listItem, taskIndex, queryRendererParameters);
332340
}
333341

334-
return await this.addListItem(taskList, task);
342+
return await this.addListItem(taskList, listItem);
335343
}
336344

337345
private async addListItem(taskList: HTMLUListElement, listItem: ListItem) {

0 commit comments

Comments
 (0)