@@ -6,7 +6,8 @@ import { Notice, Setting } from "obsidian";
66import { DataviewService } from "services/DataviewService" ;
77import { AbstractSettingsHandler , SettingHandlerResponse } from "settings/handlers/AbstractSettingHandler" ;
88import { add_dropdown } from "settings/SettingsComponents" ;
9- import { FileSuggest } from "settings/suggesters/FileSuggester" ;
9+ import { filePathsRecordSuggester , FileSuggest } from "settings/suggesters/FileSuggester" ;
10+ import { FolderSuggest } from "settings/suggesters/FolderSuggester" ;
1011
1112export class SourceFormHandler extends AbstractSettingsHandler {
1213 settingTitle : string = 'Form in function of source data' ;
@@ -18,24 +19,7 @@ export class SourceFormHandler extends AbstractSettingsHandler {
1819 break ;
1920 case SourceDataTypes . OUTGOING_LINK :
2021 case SourceDataTypes . INCOMING_LINK :
21- const filePaths : Record < string , string > = { }
22- app . vault . getMarkdownFiles ( ) . forEach ( file => { filePaths [ file . path ] = file . basename } ) ;
23- const source_form_promise = async ( value : string ) : Promise < void > => {
24- // update settings
25- view . diskConfig . updateConfig ( { source_form_result : value } ) ;
26- } ;
27- new Setting ( containerEl )
28- . setName ( 'Select a file' )
29- . setDesc ( 'Select file from vault to be used as source of data.' )
30- . addSearch ( ( cb ) => {
31- new FileSuggest (
32- cb . inputEl ,
33- view . file . parent . path
34- ) ;
35- cb . setPlaceholder ( "Example: folder1/template_file" )
36- . setValue ( view . diskConfig . yaml . config . source_form_result )
37- . onChange ( source_form_promise ) ;
38- } ) ;
22+ outgoingAndIncomingHandler ( view , containerEl ) ;
3923 break ;
4024 case SourceDataTypes . QUERY :
4125 queryHandler ( view , containerEl , columns ) ;
@@ -70,9 +54,30 @@ function tagHandler(view: DatabaseView, containerEl: HTMLElement) {
7054 tagRecords ,
7155 source_form_promise
7256 ) ;
57+ destinationFolderHandler ( view , containerEl ) ;
7358 }
7459}
7560
61+ function outgoingAndIncomingHandler ( view : DatabaseView , containerEl : HTMLElement ) {
62+ const source_form_promise = async ( value : string ) : Promise < void > => {
63+ // update settings
64+ view . diskConfig . updateConfig ( { source_form_result : value } ) ;
65+ } ;
66+ new Setting ( containerEl )
67+ . setName ( 'Select a file' )
68+ . setDesc ( 'Select file from vault to be used as source of data.' )
69+ . addSearch ( ( cb ) => {
70+ new FileSuggest (
71+ cb . inputEl ,
72+ view . file . parent . path
73+ ) ;
74+ cb . setPlaceholder ( "Example: folder1/template_file" )
75+ . setValue ( view . diskConfig . yaml . config . source_form_result )
76+ . onChange ( source_form_promise ) ;
77+ } ) ;
78+ destinationFolderHandler ( view , containerEl ) ;
79+ }
80+
7681function queryHandler ( view : DatabaseView , containerEl : HTMLElement , columns : TableColumn [ ] ) {
7782 const query_promise = async ( value : string ) : Promise < void > => {
7883 // update settings
@@ -104,4 +109,23 @@ function queryHandler(view: DatabaseView, containerEl: HTMLElement, columns: Tab
104109 }
105110 } ) ;
106111 } ) ;
112+ destinationFolderHandler ( view , containerEl ) ;
113+ }
114+
115+ function destinationFolderHandler ( view : DatabaseView , containerEl : HTMLElement ) {
116+ const source_form_promise = async ( value : string ) : Promise < void > => {
117+ // update settings
118+ view . diskConfig . updateConfig ( { source_destination_path : value } ) ;
119+ } ;
120+ new Setting ( containerEl )
121+ . setName ( 'Select destination folder' )
122+ . setDesc ( 'Select the destination of new entries for this source' )
123+ . addSearch ( ( cb ) => {
124+ new FolderSuggest (
125+ cb . inputEl
126+ ) ;
127+ cb . setPlaceholder ( "Example: path/to/folder" )
128+ . setValue ( view . diskConfig . yaml . config . source_destination_path )
129+ . onChange ( source_form_promise ) ;
130+ } ) ;
107131}
0 commit comments