Files
Mastermind/web/src/views/email_rules.ejs

111 lines
4.1 KiB
Plaintext

<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Mastermind — Email Rules</title>
<style>
body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;margin:0;background:#0b0f14;color:#e8eef7}
header{background:#111824;border-bottom:1px solid #233043;padding:14px 16px;position:sticky;top:0}
main{max-width:1200px;margin:0 auto;padding:16px}
.card{background:#111824;border:1px solid #233043;border-radius:12px;padding:14px;margin:12px 0}
a{color:#7cc4ff;text-decoration:none}
.muted{color:#a9b7c6}
input,select{padding:12px;border-radius:10px;border:1px solid #233043;background:#0e1520;color:#e8eef7;width:100%}
button{padding:12px 14px;border-radius:10px;border:1px solid #233043;background:#1c2a3d;color:#e8eef7}
table{width:100%;border-collapse:collapse}
th,td{border-bottom:1px solid #233043;padding:10px 6px;text-align:left;color:#a9b7c6;font-size:13px;vertical-align:top}
th{color:#e8eef7}
.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:12px}
.col4{grid-column:span 12}
@media(min-width:900px){.col4{grid-column:span 4}}
</style>
</head>
<body>
<header>
<div style="display:flex;justify-content:space-between;align-items:center;gap:10px">
<div style="font-weight:700">Email Rules</div>
<div style="display:flex;gap:10px">
<a href="/admin/email">Email Accounts</a>
<a href="/">Dashboard</a>
<a href="/logout">Logout</a>
</div>
</div>
</header>
<main>
<div class="card">
<h2 style="margin:0 0 8px">Create rule</h2>
<form method="post" action="/admin/email-rules/create" class="grid">
<div class="col4">
<label class="muted">Project</label>
<select name="projectId" required>
<% projects.forEach(p => { %>
<option value="<%= p.id %>"><%= p.name %> (<%= p.job_number || '—' %>)</option>
<% }) %>
</select>
</div>
<div class="col4">
<label class="muted">Match type</label>
<select name="matchType">
<option value="from_domain">From domain</option>
<option value="from_contains">From contains</option>
<option value="subject_contains">Subject contains</option>
<option value="body_contains">Body contains</option>
<option value="thread_key">Thread key</option>
</select>
</div>
<div class="col4">
<label class="muted">Match value</label>
<input name="matchValue" placeholder="@gc.com or 0222600001 or project name" required />
</div>
<div class="col4">
<label class="muted">Priority (lower = earlier)</label>
<input name="priority" value="100" />
</div>
<div style="grid-column:span 12">
<button type="submit">Add rule</button>
</div>
</form>
</div>
<div class="card">
<h2 style="margin:0 0 8px">Rules</h2>
<div style="overflow:auto">
<table>
<thead>
<tr>
<th>Enabled</th>
<th>Priority</th>
<th>Project</th>
<th>Type</th>
<th>Value</th>
<th></th>
</tr>
</thead>
<tbody>
<% rules.forEach(r => { %>
<tr>
<td><%= r.enabled ? 'yes' : 'no' %></td>
<td><%= r.priority %></td>
<td><%= r.project_name %></td>
<td><%= r.match_type %></td>
<td><%= r.match_value %></td>
<td>
<form method="post" action="/admin/email-rules/<%= r.id %>/toggle" style="display:inline">
<button type="submit"><%= r.enabled ? 'Disable' : 'Enable' %></button>
</form>
<form method="post" action="/admin/email-rules/<%= r.id %>/delete" onsubmit="return confirm('Delete rule?');" style="display:inline">
<button type="submit" style="background:#2b1216;border-color:#5a1e28">Delete</button>
</form>
</td>
</tr>
<% }) %>
</tbody>
</table>
</div>
</div>
</main>
</body>
</html>