@@ -2,10 +2,9 @@ import { FilterCondition } from "cdm/DatabaseModel";
22import { DataTypes , getOperatorFilterValue , OperatorFilter } from "helpers/Constants" ;
33import { Notice } from "obsidian" ;
44import { getAPI , isPluginEnabled } from "obsidian-dataview" ;
5- import { Literal } from "obsidian-dataview/lib/data-model/value" ;
5+ import { Literal , WrappedLiteral } from "obsidian-dataview/lib/data-model/value" ;
66import { DvAPIInterface } from "obsidian-dataview/lib/typings/api" ;
77import { DateTime } from "luxon" ;
8- import NoteInfo from "services/NoteInfo" ;
98class DataviewProxy {
109
1110 private static instance : DataviewProxy ;
@@ -61,25 +60,24 @@ class DataviewProxy {
6160 }
6261 }
6362
64- parseLiteral ( literal : Literal | NoteInfo , dataTypeDst : string ) : Literal | NoteInfo {
65- if ( literal === null || literal === undefined ) return "" ;
66- let parsedLiteral : Literal | NoteInfo = literal ;
63+ parseLiteral ( literal : Literal , dataTypeDst : string ) : Literal {
64+ let parsedLiteral : Literal = literal ;
65+ const wrapped = this . getDataviewAPI ( ) . value . wrapValue ( literal )
6766 // Check empty or undefined literals
6867 switch ( dataTypeDst ) {
6968 case DataTypes . CALENDAR :
70- switch ( typeof literal ) {
71- case "string" :
72- parsedLiteral = DateTime . fromISO ( literal ) ;
73- break ;
74- }
69+ parsedLiteral = this . parseToCalendar ( wrapped ) ;
7570 break ;
7671 case DataTypes . NUMBER :
77- parsedLiteral = isNaN ( literal as any ) ? ""
78- : Number . parseInt ( literal as string ) ;
72+ parsedLiteral = wrapped . type === 'number' ? literal : Number ( literal ) ;
7973 break ;
8074 default :
8175 // Values of dataview parse to md friendly strings
82- parsedLiteral = this . getDataviewAPI ( ) . value . toString ( literal ) ;
76+ if ( DateTime . isDateTime ( wrapped . value ) ) {
77+ parsedLiteral = wrapped . value . toFormat ( "yyyy-MM-dd" ) ;
78+ } else {
79+ parsedLiteral = this . getDataviewAPI ( ) . value . toString ( literal ) ;
80+ }
8381 }
8482 return parsedLiteral ;
8583 }
@@ -94,6 +92,14 @@ class DataviewProxy {
9492 }
9593 return this . instance ;
9694 }
95+
96+ private parseToCalendar ( literal : WrappedLiteral ) : Literal {
97+ if ( literal . type === 'string' ) {
98+ return DateTime . fromISO ( literal . value ) ;
99+ } else {
100+ return literal . value ;
101+ }
102+ }
97103}
98104
99105export const DataviewService = DataviewProxy . getInstance ( ) ;
0 commit comments