Skip to content

Commit 5cb97fb

Browse files
committed
update demo 3 progress report
1 parent c85fe9d commit 5cb97fb

File tree

6 files changed

+341
-46
lines changed

6 files changed

+341
-46
lines changed

source code/TestDebugASPNET/TestDebugASPNET.csproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@
137137
<Content Include="cssjs\ProgressReportWidget2-3.js" />
138138
<Content Include="pages\About.aspx" />
139139
<Content Include="pages\apiMain.aspx" />
140+
<Content Include="pages\apiProgressReport2-2.aspx" />
140141
<Content Include="pages\apiProgressReport2.aspx" />
141142
<Content Include="pages\apiProgressReport3.aspx" />
142143
<Content Include="pages\DatabaseDumpViewer.aspx" />
@@ -194,6 +195,13 @@
194195
<Compile Include="pages\apiMain.aspx.designer.cs">
195196
<DependentUpon>apiMain.aspx</DependentUpon>
196197
</Compile>
198+
<Compile Include="pages\apiProgressReport2-2.aspx.cs">
199+
<DependentUpon>apiProgressReport2-2.aspx</DependentUpon>
200+
<SubType>ASPXCodeBehind</SubType>
201+
</Compile>
202+
<Compile Include="pages\apiProgressReport2-2.aspx.designer.cs">
203+
<DependentUpon>apiProgressReport2-2.aspx</DependentUpon>
204+
</Compile>
197205
<Compile Include="pages\apiProgressReport2.aspx.cs">
198206
<DependentUpon>apiProgressReport2.aspx</DependentUpon>
199207
<SubType>ASPXCodeBehind</SubType>

source code/TestDebugASPNET/pages/ProgressReport3.aspx

Lines changed: 41 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,7 @@
7272
</tr>
7373
<tr>
7474
<td>Backup File</td>
75-
<td>
76-
Download: <span id="labelSqlFilename"></span>
75+
<td>Download: <span id="labelSqlFilename"></span>
7776
<br />
7877
SHA 256: <span id="labelSha256"></span>
7978
</td>
@@ -108,6 +107,8 @@
108107

109108
<script>
110109
110+
let currentPercent = 0;
111+
111112
let divThemes = document.querySelector("#divThemes");
112113
113114
let linkThemeFile = document.getElementById("linkThemeFile");
@@ -160,49 +161,31 @@
160161
btnRestore.addEventListener('click', startRestore);
161162
btnStop.addEventListener('click', stopTask);
162163
163-
// HTTP API Functions
164-
async function fetchAPI(url, options = {}) {
165-
try {
166-
const response = await fetch(url, {
167-
credentials: 'include',
168-
...options
169-
});
170-
171-
if (response.ok) {
172-
const contentType = response.headers.get('content-type');
173-
if (contentType && contentType.includes('application/json')) {
174-
return { ok: true, data: await response.json() };
175-
} else {
176-
return { ok: true, text: await response.text() };
177-
}
178-
} else {
179-
const errorText = await response.text();
180-
return { ok: false, error: errorText, status: response.status };
181-
}
182-
} catch (err) {
183-
return { ok: false, error: err.message };
184-
}
185-
}
186-
187164
async function startBackup() {
188165
resetUIValues();
189166
disableButtons();
190167
168+
currentPercent = 0;
169+
191170
try {
192171
const formData = new FormData();
193172
formData.append('action', 'start_backup');
194173
195-
const result = await fetchAPI(urlApiEndpoint, {
174+
const result = await fetch(urlApiEndpoint, {
196175
method: 'POST',
197-
body: formData
176+
body: formData,
177+
credentials: 'include'
198178
});
199179
200-
if (result.ok && result.data) {
201-
currentTaskId = result.data.TaskId;
202-
showGoodMessage("Success", result.data.Status);
180+
if (result.ok) {
181+
let jsonObject = await result.json();
182+
currentTaskId = jsonObject.TaskId;
183+
showGoodMessage("Success", jsonObject.Status);
203184
connectWebSocket(currentTaskId);
204-
} else {
205-
showErrorMessage("Error", result.error || "Failed to start backup");
185+
}
186+
else {
187+
let errMsg = await result.text();
188+
showErrorMessage("Error", errMsg);
206189
enableButtons();
207190
}
208191
} catch (err) {
@@ -226,17 +209,21 @@
226209
formData.append('action', 'start_restore');
227210
formData.append('file', fileRestore.files[0]);
228211
229-
const result = await fetchAPI(urlApiEndpoint, {
212+
const result = await fetch(urlApiEndpoint, {
230213
method: 'POST',
231-
body: formData
214+
body: formData,
215+
credentials: 'include'
232216
});
233217
234-
if (result.ok && result.data) {
235-
currentTaskId = result.data.TaskId;
236-
showGoodMessage("Success", result.data.Status);
218+
if (result.ok) {
219+
let jsonObject = await result.json();
220+
currentTaskId = jsonObject.TaskId;
221+
showGoodMessage("Success", jsonObject.Status);
237222
connectWebSocket(currentTaskId);
238-
} else {
239-
showErrorMessage("Error", result.error || "Failed to start restore");
223+
}
224+
else {
225+
let errMsg = result.text();
226+
showErrorMessage("Error", errMsg);
240227
enableButtons();
241228
}
242229
} catch (err) {
@@ -256,15 +243,17 @@
256243
formData.append('action', 'stop');
257244
formData.append('taskid', currentTaskId);
258245
259-
const result = await fetchAPI(urlApiEndpoint, {
246+
const result = await fetch(urlApiEndpoint, {
260247
method: 'POST',
261-
body: formData
248+
body: formData,
249+
credentials: 'include'
262250
});
263251
264252
if (result.ok) {
265253
showGoodMessage("Success", "Stop request sent to server");
266254
} else {
267-
showErrorMessage("Error", result.error || "Failed to stop task");
255+
let errMsg = result.text();
256+
showErrorMessage("Error", errMsg);
268257
}
269258
} catch (err) {
270259
showErrorMessage("Error", err.message);
@@ -382,6 +371,15 @@
382371
}
383372
384373
function updateUIValues(taskInfo) {
374+
375+
if (taskInfo.PercentCompleted < currentPercent) {
376+
// late echo, ignore
377+
return;
378+
}
379+
else {
380+
currentPercent = taskInfo.PercentCompleted;
381+
}
382+
385383
// Basic task information
386384
labelTaskId.textContent = taskInfo.TaskId || "--";
387385
lableTimeStart.textContent = taskInfo.TimeStartDisplay || "---";
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="apiProgressReport2-2.aspx.cs" Inherits="System.pages.apiProgressReport2_2" %>

0 commit comments

Comments
 (0)