Browse Source

feat: added timer for uploads and removals to show how long it takes

document-upload-removal-layout-update
nic 7 months ago
parent
commit
38da0d751e
  1. 21
      internal/handlers/web/document_remove.go
  2. 14
      internal/handlers/web/documents.go

21
internal/handlers/web/document_remove.go

@ -415,6 +415,8 @@ func renderErrorTemplate(w http.ResponseWriter, templateName, errorMsg string, j
// BulkRemoveDocumentsHandler handles bulk removal of documents from multiple jobs
func BulkRemoveDocumentsHandler(w http.ResponseWriter, r *http.Request) {
startTime := time.Now()
if r.Method != http.MethodPost {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
@ -485,6 +487,7 @@ func BulkRemoveDocumentsHandler(w http.ResponseWriter, r *http.Request) {
TotalFiles int
SuccessCount int
ErrorCount int
Duration time.Duration
JobResults []struct {
JobID string
FilesFound int
@ -722,6 +725,12 @@ func BulkRemoveDocumentsHandler(w http.ResponseWriter, r *http.Request) {
// Wait for all jobs to complete
wg.Wait()
// Calculate total duration
totalDuration := time.Since(startTime)
results.Duration = totalDuration
log.Printf("Document removal completed in %v", totalDuration)
// Generate HTML for results
var resultHTML bytes.Buffer
@ -754,13 +763,19 @@ func BulkRemoveDocumentsHandler(w http.ResponseWriter, r *http.Request) {
resultHTML.WriteString("<div class=\"stat-label\">Files Processed</div>")
resultHTML.WriteString("</div>")
// Duration stat
resultHTML.WriteString("<div class=\"stat-box\">")
resultHTML.WriteString(fmt.Sprintf("<div class=\"stat-value\">%v</div>", totalDuration))
resultHTML.WriteString("<div class=\"stat-label\">Total Time</div>")
resultHTML.WriteString("</div>")
resultHTML.WriteString("</div>") // End of upload-stats
// Add completion message
// Add completion message with timing
if results.ErrorCount == 0 {
resultHTML.WriteString("<p>All documents were successfully removed from ServiceTrade!</p>")
resultHTML.WriteString(fmt.Sprintf("<p>All documents were successfully removed from ServiceTrade in %v!</p>", totalDuration))
} else {
resultHTML.WriteString("<p>Some documents failed to be removed. See details below.</p>")
resultHTML.WriteString(fmt.Sprintf("<p>Some documents failed to be removed. Process completed in %v. See details below.</p>", totalDuration))
}
resultHTML.WriteString("</div>") // End of upload-summary

14
internal/handlers/web/documents.go

@ -166,6 +166,8 @@ func ProcessCSVHandler(w http.ResponseWriter, r *http.Request) {
// UploadDocumentsHandler handles document uploads to jobs
func UploadDocumentsHandler(w http.ResponseWriter, r *http.Request) {
startTime := time.Now()
session, ok := r.Context().Value(middleware.SessionKey).(*api.Session)
if !ok {
http.Error(w, "Unauthorized", http.StatusUnauthorized)
@ -428,8 +430,10 @@ func UploadDocumentsHandler(w http.ResponseWriter, r *http.Request) {
results[result.JobID] = append(results[result.JobID], result)
}
log.Printf("All results collected. Total: %d, Total bytes uploaded: %.2f MB",
resultsCount, float64(totalBytesUploaded)/(1024*1024))
// Calculate total duration
totalDuration := time.Since(startTime)
log.Printf("All results collected. Total: %d, Total bytes uploaded: %.2f MB, Total time: %v",
resultsCount, float64(totalBytesUploaded)/(1024*1024), totalDuration)
var resultHTML bytes.Buffer
var totalSuccess, totalFailure int
@ -450,14 +454,14 @@ func UploadDocumentsHandler(w http.ResponseWriter, r *http.Request) {
resultHTML.WriteString(fmt.Sprintf("<div class=\"stat-box success-stat\"><div class=\"stat-value\">%d</div><div class=\"stat-label\">Successful Uploads</div></div>", totalSuccess))
resultHTML.WriteString(fmt.Sprintf("<div class=\"stat-box error-stat\"><div class=\"stat-value\">%d</div><div class=\"stat-label\">Failed Uploads</div></div>", totalFailure))
resultHTML.WriteString(fmt.Sprintf("<div class=\"stat-box\"><div class=\"stat-value\">%d</div><div class=\"stat-label\">Files Processed</div></div>", resultsCount))
resultHTML.WriteString("</div>")
resultHTML.WriteString(fmt.Sprintf("<div class=\"stat-box\"><div class=\"stat-value\">%v</div><div class=\"stat-label\">Total Time</div></div>", totalDuration))
if totalFailure == 0 && resultsCount > 0 {
resultHTML.WriteString("<p>All documents were successfully uploaded to ServiceTrade!</p>")
resultHTML.WriteString(fmt.Sprintf("<p>All documents were successfully uploaded to ServiceTrade in %v!</p>", totalDuration))
} else if resultsCount == 0 {
resultHTML.WriteString("<p>No documents were processed for upload.</p>")
} else {
resultHTML.WriteString("<p>Some documents failed to upload. See details below.</p>")
resultHTML.WriteString(fmt.Sprintf("<p>Some documents failed to upload. Process completed in %v. See details below.</p>", totalDuration))
}
resultHTML.WriteString("</div>")

Loading…
Cancel
Save