import {UserMenuAction, UserSite} from "cordova-sites-user-management/dist/client"; import view from "../../html/sites/deleteLevels.html" import {WordRotatorBaseSite} from "./WordRotatorBaseSite"; import {App} from "cordova-sites/dist/client/js/App"; import {NavbarFragment} from "cordova-sites/dist/client/js/Context/Menu/NavbarFragment"; import {DataManager} from "cordova-sites/dist/client/js/DataManager"; export class DeleteWordsSite extends WordRotatorBaseSite { constructor(siteManager) { super(siteManager, view); this.addDelegate(new UserSite(this, "admin")) } async onConstruct(args) { let res = super.onConstruct(args); this.words = (await DataManager.load("getDoubleUsedWordsAction"))["result"]; return res; } onViewLoaded() { super.onViewLoaded(); let levelTemplate = this.findBy("#level-template"); let wordTemplate = this.findBy("#word-template"); let wordContainer = this.findBy("#word-container"); levelTemplate.id = null; levelTemplate.remove(); wordTemplate.id = null; wordTemplate.remove(); for (let k in this.words) { let wordElem = wordTemplate.cloneNode(true); wordElem.querySelector(".name").appendChild(document.createTextNode(k)); let levelContainer = wordElem.querySelector(".level-container"); for (let j = 0; j < this.words[k].length; j++) { let level = this.words[k][j]; let levelElem = levelTemplate.cloneNode(true); levelElem.querySelector(".id").appendChild(document.createTextNode(level["id"])); levelElem.querySelector(".words").appendChild(document.createTextNode(level["words"])); levelElem.querySelector(".positions").appendChild(document.createTextNode(level["rotations"])); levelElem.querySelector(".delete-button").addEventListener("click", async () => { let res = await DataManager.send("deleteLevel", {"levelId": level["id"]}); if (res["success"]) { levelElem.remove(); } }); levelContainer.appendChild(levelElem); } wordContainer.appendChild(wordElem); } } } App.addInitialization(app => { NavbarFragment.defaultActions.push(new UserMenuAction("delete-levels", "admin", () => { app.startSite(DeleteWordsSite); })); });