Refactoring - Added GenerateModelSelector()

This commit is contained in:
Noah Boos 2025-07-08 16:29:08 +02:00
parent 390d27cbb1
commit 2491dfd448
3 changed files with 21 additions and 23 deletions

View file

@ -19,7 +19,7 @@ import {
ReadFileContent
} from "../utils";
import {ProcessAddNote} from "../AnkiConnect";
import {GenerateDeckSelector} from "./modalsUtils";
import {GenerateDeckSelector, GenerateModelSelector} from "./modalsUtils";
import {Drop} from "esbuild";
/**
@ -79,18 +79,7 @@ export class AddNoteFromCodeBlockModal extends Modal {
const deckSelector: DropdownComponent = GenerateDeckSelector(dropdownContainer, ankiData);
/**
* @type {DropdownComponent} modelSelector
* @description Dropdown allowing the user to select a model among those that are synchronized.
*/
const modelSelector: DropdownComponent = AddDropdown(dropdownContainer, "Choose a model");
/**
* @type {string[]} modelKeys
* @description An array containing the keys of all available models.
*/
const modelKeys: string[] = Object.keys(ankiData["modelsData"]);
AddOptionsToDropdownFromDataset(modelSelector, modelKeys, "name", "name", ankiData["modelsData"]);
const modelSelector: DropdownComponent = GenerateModelSelector(dropdownContainer, ankiData);
/**
* @type {HTMLDivElement} tagsHeader

View file

@ -17,7 +17,7 @@ import {
AddTitle, AutoAssignDeck, AutoAssignModel, AutoGenerateFields, BuildTagsArray, CreateFieldsGroupData,
FetchModelByName
} from "../utils";
import {GenerateDeckSelector} from "./modalsUtils";
import {GenerateDeckSelector, GenerateModelSelector} from "./modalsUtils";
/**
* A modal dialog for creating a new Anki note by using metadata as pre-filled values.
@ -89,15 +89,7 @@ export class AddNoteFromMetadataModal extends Modal {
const deckSelector = GenerateDeckSelector(dropdownContainer, ankiData);
// Create and configure the model selector dropdown.
const modelSelector = AddDropdown(dropdownContainer, "Choose a model");
/**
* @type {string[]} modelKeys
* @description An array containing the keys of all available models.
*/
const modelKeys: string[] = Object.keys(ankiData["modelsData"]);
AddOptionsToDropdownFromDataset(modelSelector, modelKeys, "name", "name", ankiData["modelsData"]);
const modelSelector: DropdownComponent = GenerateModelSelector(dropdownContainer, ankiData);
/**
* @type {HTMLDivElement} tagsHeader

View file

@ -16,4 +16,21 @@ export function GenerateDeckSelector(parent: HTMLDivElement, ankiData: Object) {
AddOptionsToDropdownFromDataset(deckSelector, deckKeys, "name", "name", ankiData["decksData"]);
return deckSelector;
}
export function GenerateModelSelector(parent: HTMLDivElement, ankiData: Object) {
/**
* @type {DropdownComponent} modelSelector
* @description Dropdown allowing the user to select a model among those that are synchronized.
*/
const modelSelector: DropdownComponent = AddDropdown(parent, "Choose a model");
/**
* @type {string[]} modelKeys
* @description An array containing the keys of all available models.
*/
const modelKeys: string[] = Object.keys(ankiData["modelsData"]);
AddOptionsToDropdownFromDataset(modelSelector, modelKeys, "name", "name", ankiData["modelsData"]);
return modelSelector;
}