new design(?)
This commit is contained in:
85
src/client/js/Sites/SelectWordsSite.ts
Normal file
85
src/client/js/Sites/SelectWordsSite.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
|
||||
const view = require("../../html/sites/selectWords.html");
|
||||
import {UserMenuAction, UserSite} from "cordova-sites-user-management/dist/client";
|
||||
import {NavbarFragment} from "cordova-sites/dist/client/js/Context/Menu/NavbarFragment";
|
||||
import {App} from "cordova-sites/dist/client/js/App";
|
||||
import {DataManager} from "cordova-sites/dist/client/js/DataManager";
|
||||
import {ViewHelper} from "js-helper/dist/client/ViewHelper";
|
||||
import {MenuSite} from "cordova-sites/dist/client";
|
||||
|
||||
export class SelectWordsSite extends MenuSite{
|
||||
private stats: any;
|
||||
private words: any;
|
||||
|
||||
constructor(siteManager) {
|
||||
super(siteManager, view);
|
||||
this.addDelegate(new UserSite(this, "select-words"))
|
||||
}
|
||||
|
||||
async onConstruct(args) {
|
||||
let res = await super.onConstruct(args);
|
||||
this.stats = (await DataManager.load("words"))["result"];
|
||||
this.words = this.stats["wordsToCheck"];
|
||||
console.log(this.stats);
|
||||
return res;
|
||||
}
|
||||
|
||||
async onViewLoaded() {
|
||||
let res = super.onViewLoaded();
|
||||
this.findBy("#not-checked").appendChild(document.createTextNode(this.stats["wordsNotChecked"]));
|
||||
this.findBy("#checked").appendChild(document.createTextNode(this.stats["wordsChecked"]));
|
||||
this.findBy("#not-sure").appendChild(document.createTextNode(this.stats["wordsUnsure"]));
|
||||
this.findBy("#deleted").appendChild(document.createTextNode(this.stats["wordsDeleted"]));
|
||||
this.findBy("#unused").appendChild(document.createTextNode(this.stats["wordsNotUsed"]));
|
||||
|
||||
let template = this.findBy("#word-template");
|
||||
template.id = null;
|
||||
template.remove();
|
||||
|
||||
let container = this.findBy("#word-container");
|
||||
|
||||
let numWords = this.words.length;
|
||||
for (let i = 0; i < numWords; i++) {
|
||||
let wordElement = template.cloneNode(true);
|
||||
wordElement.dataset["id"] = -1;
|
||||
this.setWord(wordElement, this.words[i]);
|
||||
container.appendChild(wordElement);
|
||||
|
||||
wordElement.querySelector(".button-ok").addEventListener("click", async () => {
|
||||
let newWord = (await DataManager.send("checkWord", {
|
||||
"wordId":wordElement.dataset["id"],
|
||||
"action":"1"
|
||||
}))["result"];
|
||||
this.setWord(wordElement, newWord[0]);
|
||||
});
|
||||
|
||||
wordElement.querySelector(".button-unsure").addEventListener("click", async () => {
|
||||
let newWord = (await DataManager.send("checkWord", {
|
||||
"wordId":wordElement.dataset["id"],
|
||||
"action":"2"
|
||||
}))["result"];
|
||||
this.setWord(wordElement, newWord[0]);
|
||||
});
|
||||
|
||||
wordElement.querySelector(".button-delete").addEventListener("click", async () => {
|
||||
let newWord = (await DataManager.send("checkWord", {
|
||||
"wordId":wordElement.dataset["id"],
|
||||
"action":"3"
|
||||
}))["result"];
|
||||
this.setWord(wordElement, newWord[0]);
|
||||
});
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
setWord(wordElement, word){
|
||||
ViewHelper.removeAllChildren(wordElement.querySelector(".word")).appendChild(document.createTextNode(word["word"]));
|
||||
wordElement.dataset["id"] = word["id"];
|
||||
}
|
||||
}
|
||||
|
||||
App.addInitialization(app => {
|
||||
NavbarFragment.defaultActions.push(new UserMenuAction("select-words", "select-words", () => {
|
||||
app.startSite(SelectWordsSite);
|
||||
}));
|
||||
});
|
||||
Reference in New Issue
Block a user