feat: improve admin pricing modal quote count display to show period and total counts
This commit is contained in:
@@ -708,8 +708,8 @@ func (h *PricingHandler) PreviewPrice(c *gin.Context) {
|
|||||||
medianAllTime = &median
|
medianAllTime = &median
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get quote count (from all relevant lots)
|
// Get quote count (from all relevant lots) - total count
|
||||||
var quoteCount int64
|
var quoteCountTotal int64
|
||||||
for _, lotName := range lotNames {
|
for _, lotName := range lotNames {
|
||||||
var count int64
|
var count int64
|
||||||
if strings.HasSuffix(lotName, "*") {
|
if strings.HasSuffix(lotName, "*") {
|
||||||
@@ -718,7 +718,25 @@ func (h *PricingHandler) PreviewPrice(c *gin.Context) {
|
|||||||
} else {
|
} else {
|
||||||
h.db.Model(&models.LotLog{}).Where("lot = ?", lotName).Count(&count)
|
h.db.Model(&models.LotLog{}).Where("lot = ?", lotName).Count(&count)
|
||||||
}
|
}
|
||||||
quoteCount += count
|
quoteCountTotal += count
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get quote count for specified period (if period is > 0)
|
||||||
|
var quoteCountPeriod int64
|
||||||
|
if req.PeriodDays > 0 {
|
||||||
|
for _, lotName := range lotNames {
|
||||||
|
var count int64
|
||||||
|
if strings.HasSuffix(lotName, "*") {
|
||||||
|
pattern := strings.TrimSuffix(lotName, "*") + "%"
|
||||||
|
h.db.Raw(`SELECT COUNT(*) FROM lot_log WHERE lot LIKE ? AND date >= DATE_SUB(NOW(), INTERVAL ? DAY)`, pattern, req.PeriodDays).Scan(&count)
|
||||||
|
} else {
|
||||||
|
h.db.Raw(`SELECT COUNT(*) FROM lot_log WHERE lot = ? AND date >= DATE_SUB(NOW(), INTERVAL ? DAY)`, lotName, req.PeriodDays).Scan(&count)
|
||||||
|
}
|
||||||
|
quoteCountPeriod += count
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// If no period specified, period count equals total count
|
||||||
|
quoteCountPeriod = quoteCountTotal
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get last received price (from the main lot only)
|
// Get last received price (from the main lot only)
|
||||||
@@ -773,14 +791,15 @@ func (h *PricingHandler) PreviewPrice(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
c.JSON(http.StatusOK, gin.H{
|
||||||
"lot_name": req.LotName,
|
"lot_name": req.LotName,
|
||||||
"current_price": comp.CurrentPrice,
|
"current_price": comp.CurrentPrice,
|
||||||
"median_all_time": medianAllTime,
|
"median_all_time": medianAllTime,
|
||||||
"new_price": newPrice,
|
"new_price": newPrice,
|
||||||
"quote_count": quoteCount,
|
"quote_count_total": quoteCountTotal,
|
||||||
"manual_price": comp.ManualPrice,
|
"quote_count_period": quoteCountPeriod,
|
||||||
"last_price": lastPrice.Price,
|
"manual_price": comp.ManualPrice,
|
||||||
"last_price_date": lastPrice.Date,
|
"last_price": lastPrice.Price,
|
||||||
|
"last_price_date": lastPrice.Date,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -591,8 +591,21 @@ async function fetchPreview() {
|
|||||||
document.getElementById('modal-new-price').textContent =
|
document.getElementById('modal-new-price').textContent =
|
||||||
data.new_price ? '$' + parseFloat(data.new_price).toFixed(2) : '—';
|
data.new_price ? '$' + parseFloat(data.new_price).toFixed(2) : '—';
|
||||||
|
|
||||||
// Update quote count
|
// Update quote count with new format "N (всего: M)"
|
||||||
document.getElementById('modal-quote-count').textContent = data.quote_count || 0;
|
let quoteCountText = '';
|
||||||
|
if (data.quote_count_period !== undefined && data.quote_count_total !== undefined) {
|
||||||
|
if (data.quote_count_period === data.quote_count_total) {
|
||||||
|
// If period count equals total count, just show the total
|
||||||
|
quoteCountText = data.quote_count_total;
|
||||||
|
} else {
|
||||||
|
// Show both counts in format "N (всего: M)"
|
||||||
|
quoteCountText = data.quote_count_period + ' (всего: ' + data.quote_count_total + ')';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Fallback for older API responses
|
||||||
|
quoteCountText = data.quote_count || 0;
|
||||||
|
}
|
||||||
|
document.getElementById('modal-quote-count').textContent = quoteCountText;
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
console.error('Preview fetch error:', e);
|
console.error('Preview fetch error:', e);
|
||||||
|
|||||||
Reference in New Issue
Block a user