@@ -393,7 +393,7 @@ function initDatePicker() {
393393 flatpickrInstance . destroy ( ) ;
394394 }
395395
396- // 创建可用日期的映射,用于禁用无效日期
396+ // 创建可用日期的映射,用于样式区分
397397 const enabledDatesMap = { } ;
398398 availableDates . forEach ( date => {
399399 enabledDatesMap [ date ] = true ;
@@ -419,15 +419,20 @@ function initDatePicker() {
419419 scrollTitle : '滚动切换' ,
420420 toggleTitle : '点击切换 12/24 小时时制'
421421 } ,
422- enable : [
423- function ( date ) {
424- // 只启用有效日期
425- const dateStr = date . getFullYear ( ) + "-" +
426- String ( date . getMonth ( ) + 1 ) . padStart ( 2 , '0' ) + "-" +
427- String ( date . getDate ( ) ) . padStart ( 2 , '0' ) ;
428- return ! ! enabledDatesMap [ dateStr ] ;
422+ // 移除enable限制,允许选择任意日期
423+ onDayCreate : function ( dObj , dStr , fp , dayElem ) {
424+ const dateStr = dayElem . dateObj . getFullYear ( ) + "-" +
425+ String ( dayElem . dateObj . getMonth ( ) + 1 ) . padStart ( 2 , '0' ) + "-" +
426+ String ( dayElem . dateObj . getDate ( ) ) . padStart ( 2 , '0' ) ;
427+
428+ // 为没有数据的日期添加特殊样式
429+ if ( ! enabledDatesMap [ dateStr ] ) {
430+ dayElem . classList . add ( 'no-data' ) ;
431+ dayElem . title = '此日期无数据' ;
432+ } else {
433+ dayElem . title = '此日期有数据' ;
429434 }
430- ] ,
435+ } ,
431436 onChange : function ( selectedDates , dateStr ) {
432437 if ( isRangeMode && selectedDates . length === 2 ) {
433438 // 处理日期范围选择
@@ -441,6 +446,9 @@ function initDatePicker() {
441446 if ( availableDates . includes ( selectedDate ) ) {
442447 loadPapersByDate ( selectedDate ) ;
443448 toggleDatePicker ( ) ;
449+ } else {
450+ // 如果选择的日期没有数据,显示提示
451+ alert ( '所选日期没有数据,请选择其他日期。' ) ;
444452 }
445453 }
446454 }
@@ -976,22 +984,43 @@ async function loadPapersByDateRange(startDate, endDate) {
976984 return date >= startDate && date <= endDate ;
977985 } ) ;
978986
987+ // 计算日期范围内的总天数
988+ const start = new Date ( startDate ) ;
989+ const end = new Date ( endDate ) ;
990+ const totalDays = Math . ceil ( ( end - start ) / ( 1000 * 60 * 60 * 24 ) ) + 1 ;
991+
979992 if ( validDatesInRange . length === 0 ) {
980- alert ( 'No available papers in the selected date range.' ) ;
993+ alert ( `所选日期范围 ( ${ formatDate ( startDate ) } - ${ formatDate ( endDate ) } ) 内没有可用数据。` ) ;
981994 return ;
982995 }
983996
984997 currentDate = `${ startDate } to ${ endDate } ` ;
985- document . getElementById ( 'currentDate' ) . textContent = `${ formatDate ( startDate ) } - ${ formatDate ( endDate ) } ` ;
998+ const dateDisplayText = startDate === endDate ?
999+ formatDate ( startDate ) :
1000+ `${ formatDate ( startDate ) } - ${ formatDate ( endDate ) } ` ;
1001+
1002+ // 如果有缺失的日期,在显示中添加提示
1003+ let displayText = dateDisplayText ;
1004+ if ( validDatesInRange . length < totalDays && startDate !== endDate ) {
1005+ displayText += ` (${ validDatesInRange . length } /${ totalDays } 天有数据)` ;
1006+ }
1007+
1008+ document . getElementById ( 'currentDate' ) . textContent = displayText ;
9861009
9871010 // 不再重置激活的关键词和作者
9881011 // 而是保持当前选择状态
9891012
9901013 const container = document . getElementById ( 'paperContainer' ) ;
1014+
1015+ // 更详细的加载提示
1016+ const loadingMessage = validDatesInRange . length < totalDays ?
1017+ `Loading papers from ${ formatDate ( startDate ) } to ${ formatDate ( endDate ) } ...<br><small>找到 ${ validDatesInRange . length } 天的数据,共 ${ totalDays } 天</small>` :
1018+ `Loading papers from ${ formatDate ( startDate ) } to ${ formatDate ( endDate ) } ...` ;
1019+
9911020 container . innerHTML = `
9921021 <div class="loading-container">
9931022 <div class="loading-spinner"></div>
994- <p>Loading papers from ${ formatDate ( startDate ) } to ${ formatDate ( endDate ) } ... </p>
1023+ <p>${ loadingMessage } </p>
9951024 </div>
9961025 ` ;
9971026
@@ -1002,14 +1031,14 @@ async function loadPapersByDateRange(startDate, endDate) {
10021031 for ( const date of validDatesInRange ) {
10031032 const response = await fetch ( `data/${ date } _AI_enhanced_Chinese.jsonl` ) ;
10041033 const text = await response . text ( ) ;
1005- const dataPapers = parseJsonlData ( text , date ) ;
1034+ const datePapers = parseJsonlData ( text , date ) ;
10061035
10071036 // 合并数据
1008- Object . keys ( dataPapers ) . forEach ( category => {
1037+ Object . keys ( datePapers ) . forEach ( category => {
10091038 if ( ! allPaperData [ category ] ) {
10101039 allPaperData [ category ] = [ ] ;
10111040 }
1012- allPaperData [ category ] = allPaperData [ category ] . concat ( dataPapers [ category ] ) ;
1041+ allPaperData [ category ] = allPaperData [ category ] . concat ( datePapers [ category ] ) ;
10131042 } ) ;
10141043 }
10151044
0 commit comments