Skip to content

Commit b53d300

Browse files
committed
fixed radios
Signed-off-by: Vedansh Saini <[email protected]>
1 parent f5f5293 commit b53d300

File tree

3 files changed

+173
-88
lines changed

3 files changed

+173
-88
lines changed

src/scripts/main.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,7 @@ function handleYesterdayContributionChange() {
149149

150150
function getLastWeek() {
151151
var today = new Date();
152-
var noDays_to_goback = gsoc == 0 ? 7 : 1;
153-
var lastWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - noDays_to_goback);
152+
var lastWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 1);
154153
var lastWeekMonth = lastWeek.getMonth() + 1;
155154
var lastWeekDay = lastWeek.getDate();
156155
var lastWeekYear = lastWeek.getFullYear();

src/scripts/popup.js

Lines changed: 170 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,49 @@
1-
function toggleRadio(radio){
2-
const startDateInput = document.getElementById('startingDate');
3-
const endDateInput = document.getElementById('endingDate');
4-
5-
if(radio.id === 'lastWeekContribution'){
6-
startDateInput.value = getLastWeek();
7-
endDateInput.value = getToday();
8-
chrome.storage.local.set({
9-
startingDate: startDateInput.value,
10-
endingDate: endDateInput.value,
11-
lastWeekContribution: true,
12-
yesterdayContribution: false
13-
}, () => {
14-
window.generateScrumReport();
15-
});
16-
} else {
17-
startDateInput.value = getYesterday();
18-
endDateInput.value = getToday();
19-
chrome.storage.local.set({
20-
startingDate: startDateInput.value,
21-
endingDate: endDateInput.value,
22-
lastWeekContribution: false,
23-
yesterdayContribution: true
24-
}, () => {
25-
window.generateScrumReport();
26-
});
27-
}
28-
startDateInput.disabled = endDateInput.disabled = true;
1+
function getLastWeek() {
2+
var today = new Date();
3+
var lastWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
4+
var lastWeekMonth = lastWeek.getMonth() + 1;
5+
var lastWeekDay = lastWeek.getDate();
6+
var lastWeekYear = lastWeek.getFullYear();
7+
var lastWeekDisplayPadded =
8+
('0000' + lastWeekYear.toString()).slice(-4) +
9+
'-' +
10+
('00' + lastWeekMonth.toString()).slice(-2) +
11+
'-' +
12+
('00' + lastWeekDay.toString()).slice(-2);
13+
return lastWeekDisplayPadded;
2914
}
30-
// Function to activate the date containers after toggling radios of last week and day
31-
document.getElementById('customDateContainer').addEventListener('click', () => {
32-
document.querySelectorAll('input[name="timeframe"]').forEach(radio => radio.checked = false);
33-
document.getElementById('startingDate').disabled = false;
34-
document.getElementById('endingDate').disabled = false;
35-
chrome.storage.local.set({
36-
lastWeekContribution: false,
37-
yesterdayContribution: false
38-
});
39-
});
40-
4115

42-
// Date change
43-
document.getElementById('startingDate').addEventListener('change', function() {
44-
chrome.storage.local.set({
45-
startingDate: this.value,
46-
lastWeekContribution: false,
47-
yesterdayContribution: false
48-
}, () => {
49-
if (document.getElementById('endingDate').value) {
50-
window.generateScrumReport();
51-
}
52-
});
53-
});
54-
55-
document.getElementById('endingDate').addEventListener('change', function() {
56-
chrome.storage.local.set({
57-
endingDate: this.value,
58-
lastWeekContribution: false,
59-
yesterdayContribution: false
60-
}, () => {
61-
if (document.getElementById('startingDate').value) {
62-
window.generateScrumReport();
63-
}
64-
});
65-
});
16+
function getToday() {
17+
var today = new Date();
18+
var WeekMonth = today.getMonth() + 1;
19+
var WeekDay = today.getDate();
20+
var WeekYear = today.getFullYear();
21+
var WeekDisplayPadded =
22+
('0000' + WeekYear.toString()).slice(-4) +
23+
'-' +
24+
('00' + WeekMonth.toString()).slice(-2) +
25+
'-' +
26+
('00' + WeekDay.toString()).slice(-2);
27+
return WeekDisplayPadded;
28+
}
6629

30+
function getYesterday() {
31+
let today = new Date();
32+
let yesterday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 1);
33+
let yesterdayMonth = yesterday.getMonth() + 1;
34+
let yesterdayDay = yesterday.getDate();
35+
let yesterdayYear = yesterday.getFullYear();
36+
let yesterdayPadded =
37+
('0000' + yesterdayYear.toString()).slice(-4) +
38+
'-' +
39+
('00' + yesterdayMonth.toString()).slice(-2) +
40+
'-' +
41+
('00' + yesterdayDay.toString()).slice(-2);
42+
return yesterdayPadded;
43+
}
6744

68-
// Dark mode
6945
document.addEventListener('DOMContentLoaded', function() {
46+
// Dark mode setup
7047
const darkModeToggle = document.querySelector('img[alt="Night Mode"]');
7148
const body = document.body;
7249

@@ -80,56 +57,165 @@ document.addEventListener('DOMContentLoaded', function() {
8057
darkModeToggle.addEventListener('click', function() {
8158
body.classList.toggle('dark-mode');
8259
const isDarkMode = body.classList.contains('dark-mode');
83-
84-
// Save preference
8560
chrome.storage.local.set({ darkMode: isDarkMode });
86-
87-
// Toggle icon
8861
this.src = isDarkMode ? 'icons/light-mode.png' : 'icons/night-mode.png';
8962
});
90-
})
91-
document.addEventListener('DOMContentLoaded', function() {
63+
64+
// Button setup
9265
const generateBtn = document.getElementById('generateReport');
9366
const copyBtn = document.getElementById('copyReport');
9467

9568
generateBtn.addEventListener('click', function() {
9669
this.innerHTML = '<i class="fa fa-spinner fa-spin"></i> Generating...';
9770
this.disabled = true;
98-
9971
window.generateScrumReport();
10072
});
10173

10274
copyBtn.addEventListener('click', function() {
10375
const scrumReport = document.getElementById('scrumReport');
104-
105-
// Create container for HTML content
10676
const tempDiv = document.createElement('div');
10777
tempDiv.innerHTML = scrumReport.innerHTML;
10878
document.body.appendChild(tempDiv);
10979
tempDiv.style.position = 'absolute';
11080
tempDiv.style.left = '-9999px';
11181

112-
// Select the content
11382
const range = document.createRange();
11483
range.selectNode(tempDiv);
11584
const selection = window.getSelection();
11685
selection.removeAllRanges();
11786
selection.addRange(range);
11887

11988
try {
120-
// Copy HTML content
121-
const success = document.execCommand('copy');
122-
if (!success) {
123-
throw new Error('Copy command failed');
124-
}
125-
Materialize.toast('Report copied with formatting!', 3000, 'green');
89+
document.execCommand('copy');
90+
this.innerHTML = '<i class="fa fa-check"></i> Copied!';
91+
setTimeout(() => {
92+
this.innerHTML = '<i class="fa fa-copy"></i> Copy Report';
93+
}, 2000);
12694
} catch (err) {
127-
console.error('Failed to copy:', err);
128-
Materialize.toast('Failed to copy report', 3000, 'red');
95+
console.error('Failed to copy: ', err);
12996
} finally {
130-
// Cleanup
13197
selection.removeAllRanges();
13298
document.body.removeChild(tempDiv);
13399
}
134100
});
135-
});
101+
102+
// Custom date container click handler
103+
document.getElementById('customDateContainer').addEventListener('click', () => {
104+
document.querySelectorAll('input[name="timeframe"]').forEach(radio => {
105+
radio.checked = false
106+
radio.dataset.wasChecked = 'false'
107+
});
108+
109+
const startDateInput = document.getElementById('startingDate');
110+
const endDateInput = document.getElementById('endingDate');
111+
startDateInput.disabled = false;
112+
endDateInput.disabled = false;
113+
114+
chrome.storage.local.set({
115+
lastWeekContribution: false,
116+
yesterdayContribution: false,
117+
selectedTimeframe: null
118+
});
119+
});
120+
121+
chrome.storage.local.get([
122+
'selectedTimeframe',
123+
'lastWeekContribution',
124+
'yesterdayContribution'
125+
], (items) => {
126+
console.log('Restoring state:', items);
127+
128+
if (!items.selectedTimeframe) {
129+
items.selectedTimeframe = 'yesterdayContribution';
130+
items.lastWeekContribution = false;
131+
items.yesterdayContribution = true;
132+
}
133+
134+
const radio = document.getElementById(items.selectedTimeframe);
135+
if (radio) {
136+
radio.checked = true;
137+
radio.dataset.wasChecked = 'true';
138+
139+
const startDateInput = document.getElementById('startingDate');
140+
const endDateInput = document.getElementById('endingDate');
141+
142+
if (items.selectedTimeframe === 'lastWeekContribution') {
143+
startDateInput.value = getLastWeek();
144+
endDateInput.value = getToday();
145+
} else {
146+
startDateInput.value = getYesterday();
147+
endDateInput.value = getToday();
148+
}
149+
150+
startDateInput.disabled = endDateInput.disabled = true;
151+
152+
chrome.storage.local.set({
153+
startingDate: startDateInput.value,
154+
endingDate: endDateInput.value,
155+
lastWeekContribution: items.selectedTimeframe === 'lastWeekContribution',
156+
yesterdayContribution: items.selectedTimeframe === 'yesterdayContribution',
157+
selectedTimeframe: items.selectedTimeframe
158+
});
159+
}
160+
});
161+
162+
// Radio button click handlers with toggle functionality
163+
document.querySelectorAll('input[name="timeframe"]').forEach(radio => {
164+
radio.addEventListener('click', function() {
165+
if (this.dataset.wasChecked === 'true') {
166+
this.checked = false;
167+
this.dataset.wasChecked = 'false';
168+
169+
const startDateInput = document.getElementById('startingDate');
170+
const endDateInput = document.getElementById('endingDate');
171+
startDateInput.disabled = false;
172+
endDateInput.disabled = false;
173+
174+
chrome.storage.local.set({
175+
lastWeekContribution: false,
176+
yesterdayContribution: false,
177+
selectedTimeframe: null
178+
});
179+
} else {
180+
document.querySelectorAll('input[name="timeframe"]').forEach(r => {
181+
r.dataset.wasChecked = 'false';
182+
});
183+
this.dataset.wasChecked = 'true';
184+
toggleRadio(this);
185+
}
186+
});
187+
});
188+
});
189+
190+
function toggleRadio(radio) {
191+
const startDateInput = document.getElementById('startingDate');
192+
const endDateInput = document.getElementById('endingDate');
193+
194+
console.log('Toggling radio:', radio.id);
195+
196+
if (radio.id === 'lastWeekContribution') {
197+
startDateInput.value = getLastWeek();
198+
endDateInput.value = getToday();
199+
} else if (radio.id === 'yesterdayContribution') {
200+
startDateInput.value = getYesterday();
201+
endDateInput.value = getToday();
202+
}
203+
204+
startDateInput.disabled = endDateInput.disabled = true;
205+
206+
chrome.storage.local.set({
207+
startingDate: startDateInput.value,
208+
endingDate: endDateInput.value,
209+
lastWeekContribution: radio.id === 'lastWeekContribution',
210+
yesterdayContribution: radio.id === 'yesterdayContribution',
211+
selectedTimeframe: radio.id,
212+
githubCache: null // Clear cache to force new fetch
213+
}, () => {
214+
console.log('State saved, dates:', {
215+
start: startDateInput.value,
216+
end: endDateInput.value,
217+
isLastWeek: radio.id === 'lastWeekContribution'
218+
});
219+
window.generateScrumReport();
220+
});
221+
}

src/scripts/scrumHelper.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,8 @@ function allIncluded(outputTarget = 'email') {
277277
for (i = 0; i < nextWeekArray.length; i++) nextWeekUl += nextWeekArray[i];
278278
nextWeekUl += '</ul>';
279279

280-
var weekOrDay = lastWeekContribution ? 'last week' : 'yesterday';
281-
var weekOrDay2 = lastWeekContribution ? 'this week' : 'today';
280+
var weekOrDay = lastWeekContribution ? 'last week' : (yesterdayContribution ? 'yesterday' : 'the period');
281+
var weekOrDay2 = lastWeekContribution ? 'this week' : 'today';
282282

283283
// Create the complete content
284284
let content;

0 commit comments

Comments
 (0)