Set up settings for useIPAPronunciationField
This commit is contained in:
parent
fdd12983ff
commit
5da39269b5
|
@ -145,7 +145,7 @@
|
||||||
<section>
|
<section>
|
||||||
<form>
|
<form>
|
||||||
<label>Use IPA Auto-Fill
|
<label>Use IPA Auto-Fill
|
||||||
<input type="checkbox" checked><br />
|
<input id="settingsUseIPA" type="checkbox" checked><br />
|
||||||
<small>Check this to use character combinations to input International Phonetic Alphabet characters into
|
<small>Check this to use character combinations to input International Phonetic Alphabet characters into
|
||||||
Pronunciation fields.</small>
|
Pronunciation fields.</small>
|
||||||
</label>
|
</label>
|
||||||
|
|
|
@ -54,6 +54,11 @@ export const DEFAULT_DICTIONARY = {
|
||||||
version: MIGRATE_VERSION,
|
version: MIGRATE_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const DEFAULT_SETTINGS = {
|
||||||
|
useIPAPronunciationField: true,
|
||||||
|
};
|
||||||
|
|
||||||
export const DEFAULT_PAGE_SIZE = 50;
|
export const DEFAULT_PAGE_SIZE = 50;
|
||||||
|
|
||||||
export const LOCAL_STORAGE_KEY = 'dictionary';
|
export const LOCAL_STORAGE_KEY = 'dictionary';
|
||||||
|
export const SETTINGS_KEY = 'settings';
|
||||||
|
|
|
@ -4,10 +4,12 @@ import setupListeners from './js/setupListeners';
|
||||||
import { renderAll } from './js/render';
|
import { renderAll } from './js/render';
|
||||||
import { generateRandomWords, addMessage } from './js/utilities';
|
import { generateRandomWords, addMessage } from './js/utilities';
|
||||||
import { loadDictionary } from './js/dictionaryManagement';
|
import { loadDictionary } from './js/dictionaryManagement';
|
||||||
|
import { loadSettings } from './js/settings';
|
||||||
|
|
||||||
function initialize() {
|
function initialize() {
|
||||||
addMessage('Loading!');
|
addMessage('Loading!');
|
||||||
loadDictionary();
|
loadDictionary();
|
||||||
|
loadSettings();
|
||||||
// generateRandomWords(100);
|
// generateRandomWords(100);
|
||||||
setupListeners();
|
setupListeners();
|
||||||
renderAll();
|
renderAll();
|
||||||
|
|
|
@ -231,14 +231,18 @@ export function renderEditForm(wordId = false) {
|
||||||
wordId = typeof wordId.target === 'undefined' ? wordId : parseInt(this.id.replace('edit_', ''));
|
wordId = typeof wordId.target === 'undefined' ? wordId : parseInt(this.id.replace('edit_', ''));
|
||||||
const word = window.currentDictionary.words.find(w => w.wordId === wordId);
|
const word = window.currentDictionary.words.find(w => w.wordId === wordId);
|
||||||
if (word) {
|
if (word) {
|
||||||
|
const ipaPronunciationField = `<label>Pronunciation<a class="label-button ipa-table-button">IPA Chart</a><br>
|
||||||
|
<input id="wordPronunciation_${wordId}" class="ipa-field" value="${word.pronunciation}"><br>
|
||||||
|
<a class="label-help-button ipa-field-help-button">Field Help</a>
|
||||||
|
</label>`;
|
||||||
|
const plainPronunciationField = `<label>Pronunciation<br>
|
||||||
|
<input id="wordPronunciation_${wordId}" value="${word.pronunciation}">
|
||||||
|
</label>`;
|
||||||
const editForm = `<form id="editForm_${wordId}" class="edit-form">
|
const editForm = `<form id="editForm_${wordId}" class="edit-form">
|
||||||
<label>Word<span class="red">*</span><br>
|
<label>Word<span class="red">*</span><br>
|
||||||
<input id="wordName_${wordId}" value="${word.name}">
|
<input id="wordName_${wordId}" value="${word.name}">
|
||||||
</label>
|
</label>
|
||||||
<label>Pronunciation<a class="label-button ipa-table-button">IPA Chart</a><br>
|
${window.settings.useIPAPronunciationField ? ipaPronunciationField : plainPronunciationField}
|
||||||
<input id="wordPronunciation_${wordId}" value="${word.pronunciation}"><br>
|
|
||||||
<a class="label-help-button ipa-field-help-button">Field Help</a>
|
|
||||||
</label>
|
|
||||||
<label>Part of Speech<br>
|
<label>Part of Speech<br>
|
||||||
<select id="wordPartOfSpeech_${wordId}" class="part-of-speech-select">
|
<select id="wordPartOfSpeech_${wordId}" class="part-of-speech-select">
|
||||||
<option value="${word.partOfSpeech}" selected>${word.partOfSpeech}</option>
|
<option value="${word.partOfSpeech}" selected>${word.partOfSpeech}</option>
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
import { SETTINGS_KEY, DEFAULT_SETTINGS } from "../constants";
|
||||||
|
import { cloneObject } from "../helpers";
|
||||||
|
import { usePhondueDigraphs } from "./KeyboardFire/phondue/ipaField";
|
||||||
|
import { renderWords } from "./render";
|
||||||
|
|
||||||
|
export function loadSettings() {
|
||||||
|
const storedSettings = window.localStorage.getItem(SETTINGS_KEY);
|
||||||
|
window.settings = storedSettings ? JSON.parse(storedSettings) : cloneObject(DEFAULT_SETTINGS);
|
||||||
|
toggleIPAPronunciationFields();
|
||||||
|
}
|
||||||
|
|
||||||
|
export function saveSettings() {
|
||||||
|
window.localStorage.setItem(SETTINGS_KEY, JSON.stringify(window.settings));
|
||||||
|
}
|
||||||
|
|
||||||
|
export function openSettingsModal() {
|
||||||
|
const { useIPAPronunciationField } = window.settings;
|
||||||
|
|
||||||
|
document.getElementById('settingsUseIPA').checked = useIPAPronunciationField;
|
||||||
|
|
||||||
|
document.getElementById('settingsModal').style.display = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
export function saveSettingsModal() {
|
||||||
|
window.settings.useIPAPronunciationField = document.getElementById('settingsUseIPA').checked;
|
||||||
|
|
||||||
|
saveSettings();
|
||||||
|
toggleIPAPronunciationFields();
|
||||||
|
}
|
||||||
|
|
||||||
|
export function saveAndCloseSettingsModal() {
|
||||||
|
saveSettingsModal();
|
||||||
|
document.getElementById('settingsModal').style.display = 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
export function toggleIPAPronunciationFields() {
|
||||||
|
const ipaButtons = document.querySelectorAll('.ipa-table-button, .ipa-field-help-button'),
|
||||||
|
ipaFields = document.querySelectorAll('.ipa-field');
|
||||||
|
if (!window.settings.useIPAPronunciationField) {
|
||||||
|
Array.from(ipaButtons).forEach(button => {
|
||||||
|
button.style.display = 'none';
|
||||||
|
});
|
||||||
|
Array.from(ipaFields).forEach(field => {
|
||||||
|
field.removeEventListener('keypress', usePhondueDigraphs);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Array.from(ipaButtons).forEach(button => {
|
||||||
|
button.style.display = '';
|
||||||
|
});
|
||||||
|
Array.from(ipaFields).forEach(field => {
|
||||||
|
field.addEventListener('keypress', usePhondueDigraphs);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
renderWords();
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ import { openEditModal, saveEditModal, saveAndCloseEditModal } from './dictionar
|
||||||
import { goToNextPage, goToPreviousPage, goToPage } from './pagination';
|
import { goToNextPage, goToPreviousPage, goToPage } from './pagination';
|
||||||
import { insertAtCursor } from './StackOverflow/inputCursorManagement';
|
import { insertAtCursor } from './StackOverflow/inputCursorManagement';
|
||||||
import { usePhondueDigraphs } from './KeyboardFire/phondue/ipaField';
|
import { usePhondueDigraphs } from './KeyboardFire/phondue/ipaField';
|
||||||
|
import { openSettingsModal, saveSettingsModal, saveAndCloseSettingsModal } from './settings';
|
||||||
|
|
||||||
export default function setupListeners() {
|
export default function setupListeners() {
|
||||||
setupDetailsTabs();
|
setupDetailsTabs();
|
||||||
|
@ -212,9 +213,9 @@ export function setupWordOptionSelections() {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setupSettingsModal() {
|
export function setupSettingsModal() {
|
||||||
document.getElementById('settingsButton').addEventListener('click', () => {
|
document.getElementById('settingsButton').addEventListener('click', openSettingsModal);
|
||||||
document.getElementById('settingsModal').style.display = '';
|
document.getElementById('settingsSave').addEventListener('click', saveSettingsModal);
|
||||||
});
|
document.getElementById('settingsSaveAndClose').addEventListener('click', saveAndCloseSettingsModal);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setupWordEditFormButtons() {
|
export function setupWordEditFormButtons() {
|
||||||
|
@ -269,11 +270,13 @@ export function setupPagination() {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setupIPAFields() {
|
export function setupIPAFields() {
|
||||||
|
if (window.settings.useIPAPronunciationField) {
|
||||||
const ipaFields = document.getElementsByClassName('ipa-field');
|
const ipaFields = document.getElementsByClassName('ipa-field');
|
||||||
Array.from(ipaFields).forEach(field => {
|
Array.from(ipaFields).forEach(field => {
|
||||||
field.removeEventListener('keypress', usePhondueDigraphs);
|
field.removeEventListener('keypress', usePhondueDigraphs);
|
||||||
field.addEventListener('keypress', usePhondueDigraphs);
|
field.addEventListener('keypress', usePhondueDigraphs);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
setupIPAButtons();
|
setupIPAButtons();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue