186 lines
4.2 KiB
JavaScript
186 lines
4.2 KiB
JavaScript
class Component {
|
|
constructor(name) {
|
|
this.name = name;
|
|
this.start();
|
|
}
|
|
|
|
handle(data, ds) {
|
|
}
|
|
|
|
init() {
|
|
}
|
|
|
|
getUrl(ds) {
|
|
return '';
|
|
}
|
|
|
|
start() {
|
|
if (window.routerIsReady) {
|
|
router.addComponent(this.name || VUtils.tempId(), this);
|
|
this.init();
|
|
} else {
|
|
window.addEventListener('routerReady', this.start.bind(this));
|
|
}
|
|
}
|
|
}
|
|
class MetaDataComponent extends Component {
|
|
constructor() {
|
|
super("/metaData");
|
|
this.tpl = "metaDataList";
|
|
this.tpl2 = "metaDataEdit";
|
|
this._url = "/admin/api/metaData";
|
|
}
|
|
|
|
async handle(data, ds) {
|
|
let meTpl = ds.id ? this.tpl2 : this.tpl;
|
|
await tpl.loadTemplate(meTpl);
|
|
return await tpl.renderOn(meTpl, data.content);
|
|
}
|
|
|
|
getUrl(ds) {
|
|
let url = this._url;
|
|
if (ds.id) {
|
|
url += '/' + ds.id;
|
|
}
|
|
return url;
|
|
}
|
|
}
|
|
class OverviewComponent extends Component {
|
|
constructor() {
|
|
super("/overview");
|
|
this.tpl = "overview";
|
|
this._url = "/admin/api/overview";
|
|
}
|
|
|
|
async handle(data, ds) {
|
|
await tpl.loadTemplate(this.tpl);
|
|
return await tpl.renderOn(this.tpl, data.content);
|
|
}
|
|
|
|
getUrl(ds) {
|
|
return this._url;
|
|
}
|
|
}
|
|
class PagesComponent extends Component {
|
|
constructor() {
|
|
super("/pages");
|
|
this.tpl = "pagesList";
|
|
this.tpl2 = "pageEdit";
|
|
this._url = "/admin/api/pages";
|
|
}
|
|
|
|
async handle(data, ds) {
|
|
let meTpl = ds.id ? this.tpl2 : this.tpl;
|
|
await tpl.loadTemplate(meTpl);
|
|
return await tpl.renderOn(meTpl, data.content);
|
|
}
|
|
|
|
getUrl(ds) {
|
|
let url = this._url;
|
|
if (ds.id) {
|
|
url += '/' + ds.id;
|
|
}
|
|
return url;
|
|
}
|
|
}
|
|
class RolesComponent extends Component {
|
|
constructor() {
|
|
super("/roles");
|
|
this.tpl = "rolesList";
|
|
this.tpl2 = "roleEdit";
|
|
this._url = "/admin/api/roles";
|
|
}
|
|
|
|
async handle(data, ds) {
|
|
let meTpl = ds.id ? this.tpl2 : this.tpl;
|
|
await tpl.loadTemplate(meTpl);
|
|
return await tpl.renderOn(meTpl, data.content);
|
|
}
|
|
|
|
getUrl(ds) {
|
|
let url = this._url;
|
|
if (ds.id) {
|
|
url += '/' + ds.id;
|
|
}
|
|
return url;
|
|
}
|
|
}
|
|
class SeoUrlComponent extends Component {
|
|
constructor() {
|
|
super("/seoUrl");
|
|
this.tpl = "seoUrlList";
|
|
this.tpl2 = "seoUrlEdit";
|
|
this._url = "/admin/api/seoUrl";
|
|
}
|
|
|
|
async handle(data, ds) {
|
|
let meTpl = ds.id ? this.tpl2 : this.tpl;
|
|
await tpl.loadTemplate(meTpl);
|
|
return await tpl.renderOn(meTpl, data.content);
|
|
}
|
|
|
|
getUrl(ds) {
|
|
let url = this._url;
|
|
if (ds.id) {
|
|
url += '/' + ds.id;
|
|
}
|
|
return url;
|
|
}
|
|
}
|
|
class UsersComponent extends Component {
|
|
constructor() {
|
|
super("/users");
|
|
this.tpl = "usersList";
|
|
this.tpl2 = "userEdit";
|
|
this._url = "/admin/api/users";
|
|
}
|
|
|
|
async handle(data, ds) {
|
|
let meTpl = ds.id ? this.tpl2 : this.tpl;
|
|
await tpl.loadTemplate(meTpl);
|
|
return await tpl.renderOn(meTpl, data.content);
|
|
}
|
|
|
|
getUrl(ds) {
|
|
let url = this._url;
|
|
if (ds.id) {
|
|
url += '/' + ds.id;
|
|
}
|
|
return url;
|
|
}
|
|
}
|
|
class VenomStatusComponent extends Component {
|
|
constructor() {
|
|
super("/venomStatus");
|
|
this.tpl = "venomStatus";
|
|
this._url = "/admin/api/venomStatus";
|
|
}
|
|
|
|
async handle(data, ds) {
|
|
await tpl.loadTemplate(this.tpl);
|
|
return await tpl.renderOn(this.tpl, data.content);
|
|
}
|
|
|
|
getUrl(ds) {
|
|
return this._url;
|
|
}
|
|
}
|
|
(() => {
|
|
// init all Components ;)
|
|
new MetaDataComponent();
|
|
new OverviewComponent();
|
|
new PagesComponent();
|
|
new RolesComponent();
|
|
new SeoUrlComponent();
|
|
new UsersComponent();
|
|
new VenomStatusComponent();
|
|
|
|
|
|
if (routerIsReady) {
|
|
document.body.dispatchEvent(new CustomEvent('triggerRouter'));
|
|
} else {
|
|
document.addEventListener('routerReady', e => {
|
|
document.body.dispatchEvent(new CustomEvent('triggerRouter'));
|
|
})
|
|
}
|
|
})(); |