Skip to content

Commit bd182b9

Browse files
authored
Merge pull request #114 from Preeti9764/commits-add
To show Commits in Scrum Report
2 parents c91ef4a + 7fa6cdd commit bd182b9

File tree

6 files changed

+834
-211
lines changed

6 files changed

+834
-211
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@
6666
- Edit it in the window.
6767
- Copy the rich HTML using the `COPY` button.
6868

69+
## New Features
70+
- The extension now uses parallel modern API requests along with data caching with a TTL(Time to Live) of 10 minutes.
71+
- New fetch requests will be made if input data by user is changed.
72+
- The cache data can be manually refreshed using the `Refresh Data` button.
73+
6974
## Setting up the code locally
7075

7176
```

docs/images/popup.png

9.21 KB
Loading

src/index.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,14 @@ body,input,div,h3,h4,p,label,hr, #scrumReport{
8585
transition: color 0.3s ease-in-out;
8686
}
8787

88+
89+
90+
8891
.dark-mode hr {
8992
border-color: #505050 !important;
9093
transition: border-color 0.3s ease-in-out;
9194
}
95+
9296
#scrumReport {
9397
font-size: 13px !important;
9498
line-height: 1.5 !important;

src/popup.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
</style>
1919
</head>
2020
<body>
21+
2122
<div class="pl-1 py-4 rounded-2xl">
2223
<div class="bg-white px-4 py-4 mx-2 mb-2 rounded-3xl">
2324
<div class="flex justify-between py-2">
@@ -27,6 +28,7 @@ <h3 class="text-3xl font-semibold ">Scrum Helper</h3>
2728
<div>
2829
<p class="">Report your development progress by auto-fetching your Git activity for a selected period</p>
2930
</div>
31+
3032

3133
<div class="center mt-2 ">
3234
<label class="flex items-center justify-center gap-2">

src/scripts/main.js

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
var enableToggleElement = document.getElementById('enable');
23
var githubUsernameElement = document.getElementById('githubUsername');
34
var projectNameElement = document.getElementById('projectName');
@@ -7,6 +8,7 @@ var startingDateElement = document.getElementById('startingDate');
78
var endingDateElement = document.getElementById('endingDate');
89
var showOpenLabelElement = document.getElementById('showOpenLabel');
910
var userReasonElement = document.getElementById('userReason');
11+
1012
function handleBodyOnLoad() {
1113
chrome.storage.local.get(
1214
[
@@ -70,22 +72,49 @@ function handleBodyOnLoad() {
7072
},
7173
);
7274
}
75+
76+
document.getElementById('refreshCache').addEventListener('click', async (e) => {
77+
const button = e.currentTarget;
78+
button.classList.add('loading');
79+
button.disabled = true;
80+
81+
try {
82+
const tabs = await chrome.tabs.query({active: true, currentWindow: true});
83+
await chrome.tabs.sendMessage(tabs[0].id, {
84+
action: 'forceRefresh',
85+
timestamp: Date.now()
86+
});
87+
88+
// Reload the active tab to re-inject content
89+
chrome.tabs.reload(tabs[0].id);
90+
91+
M.toast({html: 'Data refreshed successfully!', classes: 'green'});
92+
} catch (err) {
93+
console.error('Refresh failed:', err);
94+
M.toast({html: 'Failed to refresh data', classes: 'red'});
95+
} finally {
96+
setTimeout(() => {
97+
button.classList.remove('loading');
98+
button.disabled = false;
99+
}, 500);
100+
}
101+
});
102+
73103
function handleEnableChange() {
74-
var value = enableToggleElement.checked;
104+
let value = enableToggleElement.checked;
75105
chrome.storage.local.set({ enableToggle: value });
76106
}
77107
function handleStartingDateChange() {
78-
var value = startingDateElement.value;
108+
let value = startingDateElement.value;
79109
chrome.storage.local.set({ startingDate: value });
80110
}
81111
function handleEndingDateChange() {
82-
var value = endingDateElement.value;
112+
let value = endingDateElement.value;
83113
chrome.storage.local.set({ endingDate: value });
84114
}
85115
function handleLastWeekContributionChange() {
86-
var value = lastWeekContributionElement.checked;
87-
var labelElement = document.querySelector("label[for='lastWeekContribution']");
88-
116+
let value = lastWeekContributionElement.checked;
117+
let labelElement = document.querySelector("label[for='lastWeekContribution']");
89118
if (value) {
90119
startingDateElement.disabled = true;
91120
endingDateElement.disabled = true;
@@ -128,12 +157,14 @@ function handleYesterdayContributionChange() {
128157
}
129158

130159
function getLastWeek() {
160+
131161
var today = new Date();
132162
var lastWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 1);
133163
var lastWeekMonth = lastWeek.getMonth() + 1;
134164
var lastWeekDay = lastWeek.getDate();
135165
var lastWeekYear = lastWeek.getFullYear();
136166
var lastWeekDisplayPadded =
167+
137168
('0000' + lastWeekYear.toString()).slice(-4) +
138169
'-' +
139170
('00' + lastWeekMonth.toString()).slice(-2) +
@@ -156,12 +187,12 @@ function getYesterday() {
156187
return yesterdayPadded;
157188
}
158189
function getToday() {
159-
var today = new Date();
160-
var Week = new Date(today.getFullYear(), today.getMonth(), today.getDate());
161-
var WeekMonth = Week.getMonth() + 1;
162-
var WeekDay = Week.getDate();
163-
var WeekYear = Week.getFullYear();
164-
var WeekDisplayPadded =
190+
let today = new Date();
191+
let Week = new Date(today.getFullYear(), today.getMonth(), today.getDate());
192+
let WeekMonth = Week.getMonth() + 1;
193+
let WeekDay = Week.getDate();
194+
let WeekYear = Week.getFullYear();
195+
let WeekDisplayPadded =
165196
('0000' + WeekYear.toString()).slice(-4) +
166197
'-' +
167198
('00' + WeekMonth.toString()).slice(-2) +
@@ -171,16 +202,16 @@ function getToday() {
171202
}
172203

173204
function handleGithubUsernameChange() {
174-
var value = githubUsernameElement.value;
205+
let value = githubUsernameElement.value;
175206
chrome.storage.local.set({ githubUsername: value });
176207
}
177208
function handleProjectNameChange() {
178-
var value = projectNameElement.value;
209+
let value = projectNameElement.value;
179210
chrome.storage.local.set({ projectName: value });
180211
}
181212
function handleOpenLabelChange() {
182-
var value = showOpenLabelElement.checked;
183-
var labelElement = document.querySelector("label[for='showOpenLabel']");
213+
let value = showOpenLabelElement.checked;
214+
let labelElement = document.querySelector("label[for='showOpenLabel']");
184215

185216
if (value) {
186217
labelElement.classList.add("selectedLabel");
@@ -194,7 +225,7 @@ function handleOpenLabelChange() {
194225
}
195226

196227
function handleUserReasonChange() {
197-
var value = userReasonElement.value;
228+
let value = userReasonElement.value;
198229
chrome.storage.local.set({ userReason: value });
199230
}
200231
enableToggleElement.addEventListener('change', handleEnableChange);

0 commit comments

Comments
 (0)