2019-05-04 00:10:41 +02:00
import { renderWords } from "./render" ;
import { wordExists } from "./utilities" ;
2019-05-07 00:28:51 +02:00
import removeDiacritics from "./StackOverflow/removeDiacritics" ;
2019-05-04 00:10:41 +02:00
export function validateWord ( word , wordId = false ) {
const errorElementId = wordId === false ? 'wordErrorMessage' : 'wordErrorMessage_' + wordId ,
errorElement = document . getElementById ( errorElementId ) ;
let errorMessage = '' ;
if ( word . name === '' ) {
errorMessage += '<p class="bold red">Word field must not be blank.</p>' ;
}
if ( word . simpleDefinition === '' && word . longDefinition === '' ) {
errorMessage += '<p class="bold red">You must enter Definition or Details.</p>' ;
}
const { allowDuplicates , caseSensitive } = window . currentDictionary . settings ;
if ( ! allowDuplicates ) {
const foundDuplicate = wordExists ( word . name , true ) ;
if ( foundDuplicate !== false ) {
errorMessage += ` <p class="bold red">"<a href="# ${ foundDuplicate } "> ${ word . name } </a>" already exists, and "Allow Duplicates" is turned off. ${ ! caseSensitive ? ' <em>(Case sensitivity is turned also off)</em>' : '' } </p> ` ;
}
}
errorElement . innerHTML = errorMessage ;
return errorMessage === '' ;
}
2019-05-07 00:28:51 +02:00
export function addWord ( word , render = true ) {
2019-05-04 00:10:41 +02:00
const { sortByDefinition } = window . currentDictionary . settings ;
const sortBy = sortByDefinition ? 'simpleDefinition' : 'name' ;
window . currentDictionary . words . push ( word ) ;
window . currentDictionary . words . sort ( ( wordA , wordB ) => {
2019-05-07 00:28:51 +02:00
if ( removeDiacritics ( wordA [ sortBy ] ) . toLowerCase ( ) === removeDiacritics ( wordB [ sortBy ] ) . toLowerCase ( ) ) return 0 ;
return removeDiacritics ( wordA [ sortBy ] ) . toLowerCase ( ) > removeDiacritics ( wordB [ sortBy ] ) . toLowerCase ( ) ? 1 : - 1 ;
2019-05-04 00:10:41 +02:00
} ) ;
2019-05-07 00:28:51 +02:00
if ( render ) {
renderWords ( ) ;
}
2019-05-04 00:10:41 +02:00
}