Migrate to mithril.js
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
{% include '/private/components/menu-general.js' %}
|
||||
{% include '/private/components/pages.js' %}
|
||||
{% include '/private/components/users.js' %}
|
||||
@@ -0,0 +1,43 @@
|
||||
function MenuGeneral() {
|
||||
function logout() {
|
||||
m.request({
|
||||
url: '/api',
|
||||
method: "POST",
|
||||
body: {
|
||||
"jsonrpc": "2.0",
|
||||
"method": 'auth.logout',
|
||||
"id": 1
|
||||
}
|
||||
}).then(
|
||||
function(response) {
|
||||
if ('result' in response) {
|
||||
window.location.href = '/';
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
return {
|
||||
oninit: function(vnode) {
|
||||
document.title = SETTINGS.TITLE;
|
||||
},
|
||||
view: function(vnode) {
|
||||
result = [];
|
||||
result.push(
|
||||
m('div', {class: 'row'},
|
||||
m('div', {class: 'col py-2'}, [
|
||||
m(m.route.Link, {class: 'btn btn-outline-secondary', href: '/'}, m('i', {class: 'fa fa-home'})),
|
||||
m(m.route.Link, {class: 'btn btn-outline-secondary border-0', href: '/pages'}, 'Статьи'),
|
||||
m(m.route.Link, {class: 'btn btn-outline-secondary border-0', href: '/tags'}, 'Метки'),
|
||||
m(m.route.Link, {class: 'btn btn-outline-secondary border-0', href: '/users'}, 'Пользователи'),
|
||||
m(m.route.Link, {class: 'btn btn-outline-secondary border-0', href: '/api/browse'}, 'API JSON-RPC'),
|
||||
m('div', {class: 'btn-group float-end'},
|
||||
m(m.route.Link, {class: 'btn btn-outline-secondary', href: '/profile'}, m('i', {class: 'fa fa-user'})),
|
||||
m('button', {class: "btn btn-outline-danger", onclick: logout}, m('i', {class: "fa fa-sign-out"})),
|
||||
)
|
||||
])
|
||||
)
|
||||
)
|
||||
return result;
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,57 @@
|
||||
function ComponentPages() {
|
||||
let data = {
|
||||
pages: null,
|
||||
};
|
||||
function page_render(page, pageIdx) {
|
||||
let odd = '';
|
||||
if (pageIdx % 2) {
|
||||
odd = ' bg-light'
|
||||
};
|
||||
let tags = page.tags.map(
|
||||
function(tag, tagIdx) {
|
||||
return [
|
||||
m('i', {class: "fa fa-tag"}),
|
||||
{tag: '<', children: ' '},
|
||||
m(m.route.Link, {class: "font-monospace text-decoration-none", href: `/tag/${tag.id}`}, tag.name),
|
||||
{tag: '<', children: ' '},
|
||||
]
|
||||
}
|
||||
);
|
||||
|
||||
return m('div', {class: 'row'},
|
||||
m('div', {class: "col py-2" + odd}, [
|
||||
m(m.route.Link, {class: "text-decoration-none", href: `/page/${page.id}`}, m.trust(page.title)),
|
||||
m('div', {class: 'row'},
|
||||
m('div', {class: 'col text-muted'},
|
||||
m('small', [...tags])
|
||||
)
|
||||
)
|
||||
])
|
||||
)
|
||||
};
|
||||
function pages_render() {
|
||||
return data.pages.map(page_render);
|
||||
};
|
||||
return {
|
||||
oninit: function(vnode) {
|
||||
console.log('ComponentPages.oninit');
|
||||
for (let key in vnode.attrs){
|
||||
data[key] = vnode.attrs[key];
|
||||
};
|
||||
},
|
||||
onupdate: function(vnode) {
|
||||
console.log('ComponentPages.onupdate');
|
||||
for (let key in vnode.attrs){
|
||||
data[key] = vnode.attrs[key];
|
||||
};
|
||||
},
|
||||
view: function() {
|
||||
console.log('ComponentPages.view');
|
||||
if (data.pages!=null) {
|
||||
let result = [];
|
||||
result.push(pages_render());
|
||||
return result;
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,41 @@
|
||||
function ComponentUsers() {
|
||||
let data = {
|
||||
users: null,
|
||||
};
|
||||
function user_render(user, userIdx) {
|
||||
let odd = '';
|
||||
if (userIdx % 2) {
|
||||
odd = ' bg-light'
|
||||
};
|
||||
return m('div', {class: 'row'},
|
||||
m('div', {class: "col py-2" + odd}, [
|
||||
m(m.route.Link, {class: "text-decoration-none", href: `/user/${user.id}`}, m.trust(user.name)),
|
||||
])
|
||||
)
|
||||
};
|
||||
function users_render() {
|
||||
return data.users.map(user_render);
|
||||
};
|
||||
return {
|
||||
oninit: function(vnode) {
|
||||
console.log('ComponentUsers.oninit');
|
||||
for (let key in vnode.attrs){
|
||||
data[key] = vnode.attrs[key];
|
||||
};
|
||||
},
|
||||
onupdate: function(vnode) {
|
||||
console.log('ComponentUsers.onupdate');
|
||||
for (let key in vnode.attrs){
|
||||
data[key] = vnode.attrs[key];
|
||||
};
|
||||
},
|
||||
view: function() {
|
||||
console.log('ComponentUsers.view');
|
||||
if (data.users!=null) {
|
||||
let result = [];
|
||||
result.push(users_render());
|
||||
return result;
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user