Files
buuh/examples/mailbox/elements/mailbox.js
T

83 lines
2.1 KiB
JavaScript
Raw Normal View History

2016-05-22 16:56:10 +09:00
const dateformat = require('dateformat')
2016-05-12 15:12:50 +07:00
const choo = require('../../../')
2016-05-13 16:48:46 +07:00
module.exports = function () {
return function (params, state, send) {
const mailbox = params.mailbox
const message = params.message
2016-05-23 04:00:29 +09:00
const messages = state[mailbox].messages
2016-05-12 15:12:50 +07:00
2016-05-12 19:33:52 +07:00
if (message) {
2016-05-23 04:00:29 +09:00
const email = state[mailbox].messages.filter(function (msg) {
2016-05-12 19:33:52 +07:00
return String(msg.id) === message
})[0]
return choo.view`
<section class="fl mt4 w-80 db">
2016-05-13 16:48:46 +07:00
<div>
${createHeader()}
2016-05-23 04:00:29 +09:00
${messages.map(function (msg) {
2016-05-13 16:48:46 +07:00
return createMessage(msg, mailbox)
})}
</div>
<div>
${email ? createEmail(email) : 'error: no email found'}
</div
2016-05-12 19:33:52 +07:00
</section>
`
} else {
return choo.view`
<section class="fl mt4 w-80 db">
${createHeader()}
2016-05-23 04:00:29 +09:00
${messages.map(function (msg) {
2016-05-12 19:33:52 +07:00
return createMessage(msg, mailbox)
})}
</section>
`
}
}
2016-05-12 15:12:50 +07:00
}
function createHeader () {
return choo.view`
2016-05-12 19:33:52 +07:00
<div class="db cf w-100">
<div class="fl mb3 w-25 mt0 b">Date</th>
<div class="fl mb3 w-25 mt0 b">Subject</th>
<div class="fl mb3 w-25 mt0 b">From</th>
<div class="fl mb3 w-25 mt0 b">To</th>
</div>
2016-05-12 15:12:50 +07:00
`
}
function createMessage (message, mailbox) {
return choo.view`
2016-05-12 19:33:52 +07:00
<div class="db cf w-100">
2016-05-12 15:12:50 +07:00
<a href="${'/' + mailbox + '/' + message.id}">
2016-05-12 19:33:52 +07:00
<div class="fl mb3 w-25 f6 link">
${dateformat(message.date, 'mmmm dS')}
</div>
<div class="fl mb3 w-25 f6 link">${message.subject}</div>
<div class="fl mb3 w-25 f6 link">${message.from}</div>
<div class="fl mb3 w-25 f6 link">${message.to}</div>
2016-05-12 15:12:50 +07:00
</a>
2016-05-12 19:33:52 +07:00
</div>
`
}
function createEmail (message) {
return choo.view`
<div class="mail">
<dl>
<dt>From</dt>
<dd>${message.from}</dd>
<dt>To</dt>
<dd>${message.to}</dd>
<dt>Date</dt>
<dd>${message.date}</dd>
</dl>
<h4>${message.subject}</h4>
<p>${message.body}</p>
</div>
2016-05-12 15:12:50 +07:00
`
}