Skip to content

Commit 16b4b56

Browse files
authored
fix(asana): Fix asana board view button (#2117)
Closes #2114
1 parent 89a0582 commit 16b4b56

File tree

2 files changed

+26
-29
lines changed

2 files changed

+26
-29
lines changed

src/content/asana.js

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
*/
66
'use strict';
77

8+
89
// Board view. Inserts button next to assignee/due date.
9-
togglbutton.render('.BaseCard .BoardCardLayout:not(.toggl)', { observe: true },
10+
togglbutton.render('.BoardCardLayout:not(.toggl)', { observe: true },
1011
boadCardElem => {
1112
if (boadCardElem.querySelector('.toggl-button')) {
1213
// Due to the way this UI is rendered, we must check for existence of old buttons manually.
@@ -15,19 +16,11 @@ togglbutton.render('.BaseCard .BoardCardLayout:not(.toggl)', { observe: true },
1516

1617
const descriptionSelector = () => boadCardElem.querySelector('.BoardCard-taskName').textContent.trim();
1718

18-
const projectSelector = () => {
19-
const projectElement = document.querySelector('.TopbarPageHeaderStructure-titleRow > h1');
20-
if (!projectElement) return '';
21-
22-
return projectElement.textContent.trim();
23-
};
24-
2519
const link = togglbutton.createTimerLink({
2620
className: 'asana-board-view',
2721
description: descriptionSelector,
28-
projectName: projectSelector,
29-
buttonType: 'minimal'
30-
// N.B. tags cannot be supported on board view as the information is not available.
22+
buttonType: 'minimal',
23+
// N.B. Tags and ProjectName cannot be supported on board view as the information is not available.
3124
});
3225

3326
const injectContainer = boadCardElem.querySelector('.BoardCardLayout-actionButtons');
@@ -134,39 +127,39 @@ togglbutton.render('.MyTasksTaskRow:not(.toggl)', { observe: true },
134127
);
135128

136129
// Task detail. My Tasks, Spreadsheet, Board, ...
137-
togglbutton.render(
138-
'.SingleTaskPaneSpreadsheet:not(.toggl)',
139-
{ observe: true },
140-
function (elem) {
141-
if ($('.toggl-button', elem)) {
130+
togglbutton.render('.TaskPane:not(.toggl)', { observe: true },
131+
taskPaneEl => {
132+
if (taskPaneEl.querySelector('.toggl-button')) {
133+
// Due to the way this UI is rendered, we must check for existence of old buttons manually.
142134
return;
143135
}
144136

145-
const descriptionSelector = () => {
146-
return $('.SingleTaskPaneSpreadsheet-titleRow textarea', elem).textContent.trim();
147-
};
137+
const descriptionSelector = () => taskPaneEl.querySelector('[aria-label="Task Name"]').textContent.trim();
148138

149139
const projectSelector = () => {
150-
const projectEl = elem.querySelectorAll('.TaskProjectToken-potTokenizerPill');
151-
return [...projectEl].map(el => el.textContent.trim());
140+
const projectElement = taskPaneEl.querySelector('.TokenizerPillBase-name');
141+
if (!projectElement) return '';
142+
143+
return projectElement.textContent.trim();
152144
};
153145

154146
const tagsSelector = () => {
155-
const tags = elem.querySelectorAll('.TaskTagTokenPills .Pill');
147+
const tags = taskPaneEl.querySelectorAll('.TokenizerPillBase-name');
156148
return [...tags].map(tag => tag.textContent.trim());
157-
};
149+
}
158150

159151
const link = togglbutton.createTimerLink({
160-
className: 'asana-board',
152+
className: 'TaskPaneToolbar-button',
161153
description: descriptionSelector,
162154
projectName: projectSelector,
163-
tags: tagsSelector,
164-
buttonType: 'minimal'
155+
buttonType: 'minimal',
156+
tags: tagsSelector
165157
});
166158

167-
link.style.margin = '0 5px';
159+
const injectContainer = taskPaneEl.querySelector('.TaskPaneExtraActionsButton');
168160

169-
const firstButton = elem.querySelector('.SingleTaskPaneToolbar-button');
170-
firstButton.parentNode.insertBefore(link, firstButton);
161+
if (injectContainer) {
162+
injectContainer.parentNode.insertBefore(link, injectContainer.nextSibling);
163+
}
171164
}
172165
);

src/styles/style.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ SingleTaskPaneToolbar .toggl-button.asana-board, /* new ui v1 */
104104
opacity: 1;
105105
}
106106

107+
.BoardCardLayout.toggl:hover .toggl-button.asana-board-view {
108+
opacity: 1;
109+
}
110+
107111
/********* PODIO *********/
108112
.toggl-button.podio {
109113
width: 100px;

0 commit comments

Comments
 (0)