Lumi/plugins/expression-interaction/views/expression.ejs
2026-05-30 20:37:42 +02:00

260 lines
8.5 KiB
Plaintext

<%- include("../../../src/web/views/partials/layout-top", { title }) %>
<section class="card">
<h1>Expression Interaction</h1>
<p>Roleplay friendly interactions from Discord or Twitch with quick commands.</p>
<p class="hint">
Commands:
<% const enabledActions = actions.filter((action) => action.enabled && !action.archived); %>
<% if (!enabledActions.length) { %>
None enabled yet.
<% } else { %>
<%= enabledActions.map((action) => `!${action.command}`).join(", ") %>
<% } %>
</p>
</section>
<section class="card">
<h2>Your stats</h2>
<% if (!stats) { %>
<p>Sign in to see how many actions you have given or received.</p>
<% } else { %>
<div class="stat-grid">
<div class="stat">
<span class="stat-label">Given</span>
<span class="stat-value"><%= stats.totals.given %></span>
</div>
<div class="stat">
<span class="stat-label">Received</span>
<span class="stat-value"><%= stats.totals.received %></span>
</div>
</div>
<table class="table">
<thead>
<tr>
<th>Action</th>
<th>Given</th>
<th>Received</th>
</tr>
</thead>
<tbody>
<% const statActions = actions.filter((action) => !action.archived); %>
<% statActions.forEach((action) => { %>
<% const row = stats.byAction[action.id] || { given_count: 0, received_count: 0 }; %>
<tr>
<td><%= action.command %></td>
<td><%= row.given_count %></td>
<td><%= row.received_count %></td>
</tr>
<% }) %>
</tbody>
</table>
<% } %>
</section>
<section class="card">
<h2>Global stats</h2>
<div class="stat-grid">
<div class="stat">
<span class="stat-label">Total interactions</span>
<span class="stat-value"><%= globalStats.total %></span>
</div>
</div>
<% if (!globalStats.byAction.length) { %>
<p>No interactions recorded yet.</p>
<% } else { %>
<table class="table">
<thead>
<tr>
<th>Action</th>
<th>Total</th>
</tr>
</thead>
<tbody>
<% globalStats.byAction.forEach((row) => { %>
<% const action = actions.find((item) => item.id === row.action); %>
<tr>
<td><%= action ? action.command : row.action %></td>
<td><%= row.count %></td>
</tr>
<% }) %>
</tbody>
</table>
<% } %>
</section>
<% if (isAdmin) { %>
<section class="card">
<h2>Settings</h2>
<% if (conflicts && conflicts.length) { %>
<div class="flash error">
Conflicting command names: <%= conflicts.join(", ") %>. Rename the duplicates.
</div>
<% } %>
<form method="post" action="/plugins/expression-interaction/settings" class="form-grid">
<div class="field">
<label>Enable on Discord</label>
<label class="switch">
<input
type="checkbox"
class="switch-input"
name="platform_discord"
<%= platforms.discord ? 'checked' : '' %>
/>
<span class="switch-track" aria-hidden="true"></span>
<span class="switch-text"><%= platforms.discord ? 'On' : 'Off' %></span>
</label>
</div>
<div class="field">
<label>Enable on Twitch</label>
<label class="switch">
<input
type="checkbox"
class="switch-input"
name="platform_twitch"
<%= platforms.twitch ? 'checked' : '' %>
/>
<span class="switch-track" aria-hidden="true"></span>
<span class="switch-text"><%= platforms.twitch ? 'On' : 'Off' %></span>
</label>
</div>
<div class="field full">
<button type="submit" class="button">Save settings</button>
</div>
</form>
</section>
<section class="card">
<h2>Expressions</h2>
<form method="post" action="/plugins/expression-interaction/actions/create" class="form-grid">
<div class="field">
<label>Action id</label>
<input name="action_id" placeholder="hug" />
<span class="hint">Used for stats and tracking. Avoid changing it once created.</span>
</div>
<div class="field">
<label>Command name</label>
<input name="action_command" placeholder="hug" />
</div>
<div class="field">
<label>Present tense</label>
<input name="action_verb" placeholder="hugs" />
</div>
<div class="field">
<label>Past tense</label>
<input name="action_past" placeholder="hugged" />
</div>
<div class="field full">
<label>Aliases (comma or space separated)</label>
<input name="action_aliases" placeholder="high-five hf" />
<span class="hint">Command names are lowercased; spaces become dashes.</span>
</div>
<div class="field">
<label>Enabled</label>
<label class="switch">
<input type="checkbox" class="switch-input" name="action_enabled" checked />
<span class="switch-track" aria-hidden="true"></span>
<span class="switch-text">Enabled</span>
</label>
</div>
<div class="field full">
<button type="submit" class="button">Add expression</button>
</div>
</form>
<% if (!actions.length) { %>
<p>No expressions yet.</p>
<% } else { %>
<table class="table">
<thead>
<tr>
<th>Action</th>
<th>Command</th>
<th>Verb</th>
<th>Past</th>
<th>Aliases</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<% actions.forEach((action) => { %>
<tr>
<td><%= action.id %></td>
<td><%= action.command %></td>
<td><%= action.verb %></td>
<td><%= action.past %></td>
<td><%= action.aliases.length ? action.aliases.join(", ") : '-' %></td>
<td>
<%= action.archived ? 'Archived' : action.enabled ? 'Enabled' : 'Disabled' %>
</td>
<td>
<form method="post" action="/plugins/expression-interaction/actions/<%= action.id %>/toggle" class="inline-form">
<button type="submit" class="button subtle"><%= action.enabled ? "Disable" : "Enable" %></button>
</form>
<% if (action.archived) { %>
<form method="post" action="/plugins/expression-interaction/actions/<%= action.id %>/restore" class="inline-form">
<button type="submit" class="button">Restore</button>
</form>
<% } else { %>
<form method="post" action="/plugins/expression-interaction/actions/<%= action.id %>/archive" class="inline-form">
<button type="submit" class="button danger">Archive</button>
</form>
<% } %>
<button
type="button"
class="button subtle"
data-edit-toggle="expression-<%= action.id %>"
aria-expanded="false"
>
Edit
</button>
</td>
</tr>
<tr class="edit-row" data-edit-row="expression-<%= action.id %>">
<td colspan="7">
<form method="post" action="/plugins/expression-interaction/actions/<%= action.id %>/update" class="form-grid">
<div class="field">
<label>Command name</label>
<input name="action_command" value="<%= action.command %>" />
</div>
<div class="field">
<label>Present tense</label>
<input name="action_verb" value="<%= action.verbOverride || '' %>" placeholder="<%= action.verb %>" />
</div>
<div class="field">
<label>Past tense</label>
<input name="action_past" value="<%= action.pastOverride || '' %>" placeholder="<%= action.past %>" />
</div>
<div class="field full">
<label>Aliases (comma or space separated)</label>
<input name="action_aliases" value="<%= action.aliases.join(', ') %>" />
<span class="hint">Leave tense fields blank to auto-conjugate.</span>
</div>
<div class="field">
<label>Enabled</label>
<label class="switch">
<input
type="checkbox"
class="switch-input"
name="action_enabled"
<%= action.enabled ? 'checked' : '' %>
/>
<span class="switch-track" aria-hidden="true"></span>
<span class="switch-text"><%= action.enabled ? 'Enabled' : 'Disabled' %></span>
</label>
</div>
<div class="field full">
<button type="submit" class="button">Save</button>
</div>
</form>
</td>
</tr>
<% }) %>
</tbody>
</table>
<% } %>
</section>
<% } %>
<%- include("../../../src/web/views/partials/layout-bottom") %>