Files
homework-vocabulary/javascript/homeworkSession.js

79 lines
2.2 KiB
JavaScript

class HomeworkSession extends HomeworkElement {
constructor() {
super()
this.addEventListener('texts-loaded', this.updateTexts.bind(this))
}
connectedCallback() {
let top = new HomeworkLayout()
this.append(top)
console.log("Session added to DOM")
}
static get observedAttributes () {
return [ 'language' ]
}
attributeChangedCallback(name, oldValue, newValue) {
if(name == 'language') {
if(oldValue === null) {
console.log("Language initiated to " + newValue)
} else {
console.log("Language changed to " + newValue + " from " + oldValue)
}
this.changeLanguage(newValue)
} else {
console.log("Unknown property", name)
}
}
get language() {
let languageCode = this.getAttribute("language")
return languageCode
}
set language(languageCode) {
this.setAttribute("language", languageCode)
}
async changeLanguage(languageCode) {
let languageFile = "/resources/" + languageCode + ".json"
let response = await fetch(languageFile)
HomeworkSession.texts = await response.json()
this.dispatchEvent(new CustomEvent('texts-loaded', { bubbles: true }))
}
updateTexts() {
HomeworkElement.updateTexts(this)
}
/*
homeworkTypeChanged(event) {
let homeworkType = event.target.value
console.log("Changed homework type to " + homeworkType )
let pages = this.querySelectorAll('.page')
pages.forEach((page) => {
page.classList.remove('active')
})
let page = null
switch(homeworkType) {
case 'math':
page = this.querySelector('homework-page-math')
page.classList.add('active')
break
case 'englishVocabulary':
page = this.querySelector('homework-page-english-vocabulary')
page.classList.add('active')
break
default:
console.warn("Unknown type " + homeworkType)
break
}
}
*/
}
HomeworkSession.texts = { }
customElements.define('homework-session', HomeworkSession)