Skip to content

Commit d120e39

Browse files
authored
fix(asana): try another approach to fix customer problem (#2365)
1 parent f529beb commit d120e39

File tree

1 file changed

+99
-30
lines changed

1 file changed

+99
-30
lines changed

src/content/asana.js

+99-30
Original file line numberDiff line numberDiff line change
@@ -49,58 +49,127 @@ togglbutton.render(
4949
},
5050
)
5151

52-
// Spreadsheet view. Inserts button next to to the task name.
52+
// SpreadSheet View V2
5353
togglbutton.render(
5454
'.SpreadsheetRow .SpreadsheetTaskName:not(.toggl)',
5555
{ observe: true },
56-
function (taskNameCell) {
57-
const container = taskNameCell.closest('.SpreadsheetRow')
56+
(element) => {
57+
console.debug('DEBUG: Entering in SpreadsheetRow')
5858

59-
if (container.querySelector('.toggl-button')) {
60-
// Due to the way this UI is rendered, we must check for existence of old buttons manually.
61-
return
59+
const getDescription = () => {
60+
return element.querySelector('textarea').textContent.trim()
6261
}
6362

64-
const descriptionSelector = () =>
65-
taskNameCell.querySelector('textarea').textContent.trim()
63+
console.debug('DEBUG: Getting description:', getDescription())
6664

67-
const projectSelector = () => {
68-
const projectCell = container.querySelector(
69-
'.SpreadsheetTaskRow-projectsCell',
70-
)
71-
if (!projectCell) {
72-
// Try to look for for page project title instead.
73-
return projectHeaderSelector()
65+
const getProject = () => {
66+
const isMyTasksPage = document.querySelector('.MyTasksPage')
67+
const isProjectPage = document.querySelector('.ProjectPage')
68+
69+
if (isProjectPage) {
70+
return document
71+
.querySelector('.ProjectPageHeaderProjectTitle-input')
72+
.value.trim()
7473
}
7574

76-
// There can be multiple projects, but we can't support trying to match multiple yet.
77-
const firstProject = projectCell.querySelector(
78-
'.SpreadsheetPotsCell-potPill',
79-
)
80-
return firstProject
81-
? firstProject.textContent.trim()
82-
: projectHeaderSelector()
75+
if (isMyTasksPage) {
76+
return element
77+
.closest('.SpreadsheetRow')
78+
.querySelector(
79+
'.SpreadsheetTaskRow-projectsCell .SpreadsheetPotsCell-potPill',
80+
)
81+
?.textContent.trim()
82+
}
83+
84+
return null
8385
}
8486

85-
const tagsSelector = () => {
86-
const tags = container.querySelectorAll(
87-
'.SpreadsheetTaskRow-tagsCell .SpreadsheetPotsCell-potPill',
88-
)
87+
console.debug('DEBUG: Getting the Project:', getProject())
88+
89+
const getTags = () => {
90+
const tags = element
91+
.closest('.SpreadsheetRow')
92+
.querySelectorAll(
93+
'.SpreadsheetTaskRow-tagsCell .SpreadsheetPotsCell-potPill',
94+
)
95+
8996
return [...tags].map((tag) => tag.textContent.trim())
9097
}
9198

99+
console.debug('DEBUG: Getting the Tags:', getTags())
100+
92101
const link = togglbutton.createTimerLink({
93102
className: 'asana-spreadsheet',
94-
description: descriptionSelector,
95-
projectName: projectSelector,
96-
tags: tagsSelector,
103+
description: getDescription,
104+
projectName: getProject,
105+
tags: getTags,
97106
buttonType: 'minimal',
98107
})
99108

100-
taskNameCell.insertAdjacentElement('afterend', link)
109+
element.insertAdjacentElement('afterend', link)
101110
},
102111
)
103112

113+
// Spreadsheet view V1 Inserts button next to to the task name.
114+
// togglbutton.render(
115+
// '.SpreadsheetRow .SpreadsheetTaskName:not(.toggl)',
116+
// { observe: true },
117+
// function (taskNameCell) {
118+
// console.log('Entri in SpreadsheetView')
119+
// const container = taskNameCell.closest('.SpreadsheetRow')
120+
121+
// if (container.querySelector('.toggl-button')) {
122+
// // Due to the way this UI is rendered, we must check for existence of old buttons manually.
123+
// return
124+
// }
125+
126+
// const descriptionSelector = () =>
127+
// taskNameCell.querySelector('textarea').textContent.trim()
128+
129+
// const projectSelector = () => {
130+
// const projectCell = container.querySelector(
131+
// '.SpreadsheetTaskRow-projectsCell',
132+
// )
133+
134+
// console.log('XX_projectCell', projectCell)
135+
136+
// if (!projectCell) {
137+
// // Try to look for for page project title instead.
138+
// const projectHeader = projectHeaderSelector()
139+
// console.log('XX_projectHeader', projectHeader)
140+
// return projectHeader
141+
// }
142+
143+
// // There can be multiple projects, but we can't support trying to match multiple yet.
144+
// const firstProject = projectCell.querySelector(
145+
// '.SpreadsheetPotsCell-potPill',
146+
// )
147+
// console.log('XX_firstProject', firstProject)
148+
149+
// return firstProject
150+
// ? firstProject.textContent.trim()
151+
// : projectHeaderSelector()
152+
// }
153+
154+
// const tagsSelector = () => {
155+
// const tags = container.querySelectorAll(
156+
// '.SpreadsheetTaskRow-tagsCell .SpreadsheetPotsCell-potPill',
157+
// )
158+
// return [...tags].map((tag) => tag.textContent.trim())
159+
// }
160+
161+
// const link = togglbutton.createTimerLink({
162+
// className: 'asana-spreadsheet',
163+
// description: descriptionSelector,
164+
// projectName: projectSelector,
165+
// tags: tagsSelector,
166+
// buttonType: 'minimal',
167+
// })
168+
169+
// taskNameCell.insertAdjacentElement('afterend', link)
170+
// },
171+
// )
172+
104173
// 2020 My Tasks view, possibly other similar views.
105174
togglbutton.render(
106175
'.MyTasksTaskRow:not(.toggl)',

0 commit comments

Comments
 (0)