diff --git a/index.html b/index.html
index 554217e..dcf3384 100644
--- a/index.html
+++ b/index.html
@@ -160,6 +160,13 @@
+
+
+
+ ~
+
+
+
@@ -364,8 +371,19 @@
fillSelect('perfProduct', [...new Set(perfData.map(d => d.product))].sort());
fillSelect('perfCountry', [...new Set(perfData.map(d => d.location))].filter(x=>x&&x!=='0').sort());
fillSelect('perfDay', [...new Set(perfData.map(d => d.date))].sort().reverse());
- ['perfChannel','perfProduct','perfCountry','perfRange','perfDay'].forEach(id =>
+ // 自定义日期选择器:限制可选范围为数据的最小/最大日期
+ const allD = [...new Set(perfData.map(d => d.date))].sort();
+ if (allD.length) {
+ const s = document.getElementById('perfStart'), e = document.getElementById('perfEnd');
+ s.min = e.min = allD[0]; s.max = e.max = allD[allD.length-1];
+ }
+ ['perfChannel','perfProduct','perfCountry','perfRange','perfDay','perfStart','perfEnd'].forEach(id =>
document.getElementById(id).addEventListener('change', drawPerf));
+ document.getElementById('perfDateReset').addEventListener('click', () => {
+ document.getElementById('perfStart').value = '';
+ document.getElementById('perfEnd').value = '';
+ drawPerf();
+ });
drawPerf();
}
@@ -376,11 +394,16 @@
const co = document.getElementById('perfCountry').value;
const rg = document.getElementById('perfRange').value;
const day = document.getElementById('perfDay').value;
+ const start = document.getElementById('perfStart').value;
+ const end = document.getElementById('perfEnd').value;
if (ch !== 'all') d = d.filter(x => x.channel === ch);
if (pr !== 'all') d = d.filter(x => x.product === pr);
if (co !== 'all') d = d.filter(x => x.location === co);
- // 选了具体某天则优先按天过滤(覆盖时间范围);否则用时间范围
- if (day !== 'all') {
+ // 日期过滤优先级:自定义日期区间 > 按天 > 时间范围
+ if (start || end) {
+ if (start) d = d.filter(x => x.date >= start);
+ if (end) d = d.filter(x => x.date <= end);
+ } else if (day !== 'all') {
d = d.filter(x => x.date === day);
} else if (rg !== 'all') {
const allDates = [...new Set(perfData.map(x => x.date))].sort();