mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 20:06:08 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			117 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
const addLink = (function() {
 | 
						|
    const dialogEl = $("#add-link-dialog");
 | 
						|
    const formEl = $("#add-link-form");
 | 
						|
    const autoCompleteEl = $("#note-autocomplete");
 | 
						|
    const linkTitleEl = $("#link-title");
 | 
						|
    const clonePrefixEl = $("#clone-prefix");
 | 
						|
    const linkTitleFormGroup = $("#add-link-title-form-group");
 | 
						|
    const prefixFormGroup = $("#add-link-prefix-form-group");
 | 
						|
 | 
						|
    function showDialog() {
 | 
						|
        glob.activeDialog = dialogEl;
 | 
						|
 | 
						|
        $('input[name="add-link-type"]').each(function () {
 | 
						|
            $(this).prop('checked', $(this).val() === "html");
 | 
						|
        });
 | 
						|
 | 
						|
        linkTitleEl.val('');
 | 
						|
        clonePrefixEl.val('');
 | 
						|
 | 
						|
        linkTitleFormGroup.show();
 | 
						|
        prefixFormGroup.hide();
 | 
						|
 | 
						|
        dialogEl.dialog({
 | 
						|
            modal: true,
 | 
						|
            width: 700
 | 
						|
        });
 | 
						|
 | 
						|
        autoCompleteEl.val('').focus();
 | 
						|
        linkTitleEl.val('');
 | 
						|
 | 
						|
        function setDefaultLinkTitle(noteId) {
 | 
						|
            const noteTitle = noteTree.getNoteTitle(noteId);
 | 
						|
 | 
						|
            linkTitleEl.val(noteTitle);
 | 
						|
        }
 | 
						|
 | 
						|
        autoCompleteEl.autocomplete({
 | 
						|
            source: noteTree.getAutocompleteItems(),
 | 
						|
            minLength: 0,
 | 
						|
            change: () => {
 | 
						|
                const val = autoCompleteEl.val();
 | 
						|
                const notePath = link.getNodePathFromLabel(val);
 | 
						|
                const noteId = treeUtils.getNoteIdFromNotePath(notePath);
 | 
						|
 | 
						|
                if (noteId) {
 | 
						|
                    setDefaultLinkTitle(noteId);
 | 
						|
                }
 | 
						|
            },
 | 
						|
            // this is called when user goes through autocomplete list with keyboard
 | 
						|
            // at this point the item isn't selected yet so we use supplied ui.item to see WHERE the cursor is
 | 
						|
            focus: (event, ui) => {
 | 
						|
                const notePath = link.getNodePathFromLabel(ui.item.value);
 | 
						|
                const noteId = treeUtils.getNoteIdFromNotePath(notePath);
 | 
						|
 | 
						|
                setDefaultLinkTitle(noteId);
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    formEl.submit(() => {
 | 
						|
        const value = autoCompleteEl.val();
 | 
						|
 | 
						|
        const notePath = link.getNodePathFromLabel(value);
 | 
						|
        const noteId = treeUtils.getNoteIdFromNotePath(notePath);
 | 
						|
 | 
						|
        if (notePath) {
 | 
						|
            const linkType = $("input[name='add-link-type']:checked").val();
 | 
						|
 | 
						|
            if (linkType === 'html') {
 | 
						|
                const linkTitle = linkTitleEl.val();
 | 
						|
 | 
						|
                dialogEl.dialog("close");
 | 
						|
 | 
						|
                link.addLinkToEditor(linkTitle, '#' + notePath);
 | 
						|
            }
 | 
						|
            else if (linkType === 'selected-to-current') {
 | 
						|
                const prefix = clonePrefixEl.val();
 | 
						|
 | 
						|
                treeChanges.cloneNoteTo(noteId, noteEditor.getCurrentNoteId(), prefix);
 | 
						|
 | 
						|
                dialogEl.dialog("close");
 | 
						|
            }
 | 
						|
            else if (linkType === 'current-to-selected') {
 | 
						|
                const prefix = clonePrefixEl.val();
 | 
						|
 | 
						|
                treeChanges.cloneNoteTo(noteEditor.getCurrentNoteId(), noteId, prefix);
 | 
						|
 | 
						|
                dialogEl.dialog("close");
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        return false;
 | 
						|
    });
 | 
						|
 | 
						|
    $("input[name='add-link-type']").change(function() {
 | 
						|
        if (this.value === 'html') {
 | 
						|
            linkTitleFormGroup.show();
 | 
						|
            prefixFormGroup.hide();
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            linkTitleFormGroup.hide();
 | 
						|
            prefixFormGroup.show();
 | 
						|
        }
 | 
						|
    });
 | 
						|
 | 
						|
    $(document).bind('keydown', 'ctrl+l', e => {
 | 
						|
        showDialog();
 | 
						|
 | 
						|
        e.preventDefault();
 | 
						|
    });
 | 
						|
 | 
						|
    return {
 | 
						|
        showDialog
 | 
						|
    };
 | 
						|
})(); |