Initial commit

This commit is contained in:
2023-08-29 19:55:48 +02:00
commit 7c2eec4446
473 changed files with 40947 additions and 0 deletions

View File

@@ -0,0 +1,115 @@
var PageList: PageList = {
elements: {
container: document.querySelector('.pageselector')
},
order: null,
firstRender: true,
render(pagelist: PageListItem[]) {
var list = ce('div', 'list');
PageList.order = pagelist.map((page) => {
return page.pageID;
});
pagelist.forEach((pagelistitem, index) => {
var pageitem = ce('div', 'pageitem', { pageID: pagelistitem.pageID });
var name = ce('div', 'name', null, pagelistitem.name);
pageitem.appendChild(name);
var move = ce('div', 'move');
var up = ce('div', [
'moveitem',
'up'
]);
up.appendChild(ce('img', 'normal', { src: '/stc/icon/up.png' }));
up.appendChild(ce('img', 'selected', { src: '/stc/icon/up_gray.png' }));
var down = ce('div', [
'moveitem',
'down'
]);
down.appendChild(ce('img', 'normal', { src: '/stc/icon/down.png' }));
down.appendChild(ce('img', 'selected', { src: '/stc/icon/down_gray.png' }));
up.onclick = (e: MouseEvent) => {
e.stopPropagation();
var current = PageList.order.indexOf(pagelistitem.pageID);
var newIndex = Math.max(current - 1, 0);
PageList.order.splice(current, 1);
PageList.order.splice(newIndex, 0, pagelistitem.pageID);
socket.emit('page', 'setorder', PageList.order);
};
down.onclick = (e: MouseEvent) => {
e.stopPropagation();
var current = PageList.order.indexOf(pagelistitem.pageID);
var newIndex = Math.max(current + 1, 0);
PageList.order.splice(current, 1);
PageList.order.splice(newIndex, 0, pagelistitem.pageID);
socket.emit('page', 'setorder', PageList.order);
};
move.appendChild(up);
move.appendChild(down);
pageitem.appendChild(move);
pageitem.onclick = () => {
PageHandler.request(pagelistitem.pageID, index);
};
list.appendChild(pageitem);
if (PageHandler.currentPageID == pagelistitem.pageID) {
PageHandler.request(pagelistitem.pageID, index);
}
});
var existing = PageList.elements.container.querySelector('.list');
if (existing) existing.parentElement.removeChild(existing);
PageList.elements.container.appendChild(list);
},
select(pageID: string): boolean {
var selectedFound = false;
PageList.elements.container.querySelectorAll('.pageitem').forEach((item: HTMLDivElement) => {
var itemPageID = item.getAttribute('pageID');
if (itemPageID == pageID) {
item.classList.add('selected');
selectedFound = true;
} else item.classList.remove('selected');
});
if (selectedFound) {
history.pushState(null, null, `/pages/${pageID}`);
TabController.setTitle(`Page ${pageID}`);
}
return selectedFound;
},
updateName(pageID: string, name: string) {
var item = PageList.elements.container.querySelector(`.pageitem[pageid="${pageID}"]`);
if (item) {
var nameElement: HTMLDivElement = item.querySelector('.name');
nameElement.innerText = name;
}
}
};
interface PageList {
elements: {
container: HTMLDivElement;
};
firstRender: boolean;
order: string[];
render: (pagelist: PageListItem[]) => void;
select: (pageID: string) => boolean;
updateName: (pageID: string, name: string) => void;
}
interface PageListItem {
pageID: string;
name: string;
}