From 1991d7464275e2c8ada7b07c896575c673a6570b Mon Sep 17 00:00:00 2001 From: Adeniyi Adeosun Date: Tue, 16 Apr 2024 11:26:29 +0100 Subject: [PATCH] fix(asana.js): update project header selector and include it in board view (#2294) --- src/content/asana.js | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/content/asana.js b/src/content/asana.js index 79f38ac46..135694d5f 100644 --- a/src/content/asana.js +++ b/src/content/asana.js @@ -5,6 +5,19 @@ */ 'use strict'; +const projectHeaderSelector = () => { + // Try to look for for page project title instead. + const projectHeader = document.querySelector( + '.ProjectPageHeaderProjectTitle-container', + ); + + if (!projectHeader) { + return ''; + } + return projectHeader.textContent + .replace(/\u00a0/g, ' ') // There can be   in Asana header content + .trim(); +}; // Board view. Inserts button next to assignee/due date. togglbutton.render('.BoardCardLayout:not(.toggl)', { observe: true }, @@ -15,12 +28,14 @@ togglbutton.render('.BoardCardLayout:not(.toggl)', { observe: true }, } const descriptionSelector = () => boadCardElem.querySelector('.BoardCard-taskName').textContent.trim(); + const link = togglbutton.createTimerLink({ className: 'asana-board-view', description: descriptionSelector, buttonType: 'minimal', - // N.B. Tags and ProjectName cannot be supported on board view as the information is not available. + projectName: projectHeaderSelector, + // N.B. Tags cannot be supported on board view as the information is not available. }); const injectContainer = boadCardElem.querySelector('.BoardCardLayout-actionButtons'); @@ -41,19 +56,7 @@ togglbutton.render('.SpreadsheetRow .SpreadsheetTaskName:not(.toggl)', { observe } const descriptionSelector = () => taskNameCell.querySelector('textarea').textContent.trim(); - const projectHeaderSelector = () => { - // Try to look for for page project title instead. - const projectHeader = document.querySelector( - '.TopbarPageHeaderStructure.ProjectPageHeader .ProjectPageHeaderProjectTitle-shadow', - ); - - if (!projectHeader) { - return ''; - } - return projectHeader.textContent - .replace(/\u00a0/g, ' ') // There can be   in Asana header content - .trim(); - }; + const projectSelector = () => { const projectCell = container.querySelector('.SpreadsheetTaskRow-projectsCell'); if (!projectCell) {