@@ -49,58 +49,127 @@ togglbutton.render(
49
49
} ,
50
50
)
51
51
52
- // Spreadsheet view. Inserts button next to to the task name.
52
+ // SpreadSheet View V2
53
53
togglbutton . render (
54
54
'.SpreadsheetRow .SpreadsheetTaskName:not(.toggl)' ,
55
55
{ observe : true } ,
56
- function ( taskNameCell ) {
57
- const container = taskNameCell . closest ( '. SpreadsheetRow')
56
+ ( element ) => {
57
+ console . debug ( 'DEBUG: Entering in SpreadsheetRow')
58
58
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 ( )
62
61
}
63
62
64
- const descriptionSelector = ( ) =>
65
- taskNameCell . querySelector ( 'textarea' ) . textContent . trim ( )
63
+ console . debug ( 'DEBUG: Getting description:' , getDescription ( ) )
66
64
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 ( )
74
73
}
75
74
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
83
85
}
84
86
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
+
89
96
return [ ...tags ] . map ( ( tag ) => tag . textContent . trim ( ) )
90
97
}
91
98
99
+ console . debug ( 'DEBUG: Getting the Tags:' , getTags ( ) )
100
+
92
101
const link = togglbutton . createTimerLink ( {
93
102
className : 'asana-spreadsheet' ,
94
- description : descriptionSelector ,
95
- projectName : projectSelector ,
96
- tags : tagsSelector ,
103
+ description : getDescription ,
104
+ projectName : getProject ,
105
+ tags : getTags ,
97
106
buttonType : 'minimal' ,
98
107
} )
99
108
100
- taskNameCell . insertAdjacentElement ( 'afterend' , link )
109
+ element . insertAdjacentElement ( 'afterend' , link )
101
110
} ,
102
111
)
103
112
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
+
104
173
// 2020 My Tasks view, possibly other similar views.
105
174
togglbutton . render (
106
175
'.MyTasksTaskRow:not(.toggl)' ,
0 commit comments