@@ -29,6 +29,9 @@ export class SourceFormHandler extends AbstractSettingsHandler {
2929 case SourceDataTypes . QUERY :
3030 this . queryHandler ( view , containerEl , columns ) ;
3131 break ;
32+ case SourceDataTypes . QUERY_JS :
33+ this . queryJsHandler ( view , containerEl ) ;
34+ break ;
3235 default :
3336 //Current folder
3437 }
@@ -97,5 +100,41 @@ export class SourceFormHandler extends AbstractSettingsHandler {
97100 } ) ;
98101 destinationFolderSetting ( view , containerEl ) ;
99102 }
103+
104+ private queryJsHandler ( view : DatabaseView , containerEl : HTMLElement ) {
105+ const query_promise = async ( value : string ) : Promise < void > => {
106+ if ( this . sourceFormResultTimeout ) {
107+ clearTimeout ( this . sourceFormResultTimeout ) ;
108+ }
109+ this . sourceFormResultTimeout = setTimeout ( ( ) => {
110+ // update settings
111+ view . diskConfig . yaml . config . source_form_result = value ;
112+ view . diskConfig . updateConfig ( { source_form_result : value } ) ;
113+ } , 1500 ) ;
114+
115+ } ;
116+
117+ new Setting ( containerEl )
118+ . setName ( t ( "settings_source_form_query_js_title" ) )
119+ . setDesc ( t ( "settings_source_form_query_js_desc" ) )
120+ . addTextArea ( ( textArea ) => {
121+ textArea . inputEl . addClass ( c ( "textarea-setting" ) ) ;
122+ textArea . setValue ( view . diskConfig . yaml . config . source_form_result ) ;
123+ textArea . setPlaceholder ( t ( "settings_source_form_query_js_placeholder" ) ) ;
124+ textArea . onChange ( query_promise ) ;
125+ } ) . addExtraButton ( ( cb ) => {
126+ cb . setIcon ( "check" )
127+ . setTooltip ( t ( "settings_source_form_query_js_button_tooltip" ) )
128+ . onClick ( async ( ) : Promise < void > => {
129+ try {
130+ DataviewService . getDataviewAPI ( ) . pages ( view . diskConfig . yaml . config . source_form_result ) ;
131+ new Notice ( t ( "settings_source_form_query_js_notice_validate" ) , 2000 ) ;
132+ } catch ( e ) {
133+ new Notice ( t ( "settings_source_form_query_js_notice_error" , e . message ) , 10000 ) ;
134+ }
135+ } ) ;
136+ } ) ;
137+ destinationFolderSetting ( view , containerEl ) ;
138+ }
100139}
101140
0 commit comments