86 lines
5.0 KiB
PHP
86 lines
5.0 KiB
PHP
<?= $this->extend('layouts/main') ?>
|
|
|
|
<?= $this->section('content') ?>
|
|
<header class="cb-page-header">
|
|
<div>
|
|
<a href="<?= base_url('alert') ?>" class="text-decoration-none small d-inline-block mb-1" style="color: var(--text-secondary);">← Back to alerts</a>
|
|
<h1 class="cb-page-title">New alert</h1>
|
|
<p class="cb-page-subtitle mb-0">Watch a column from the chart’s query result.</p>
|
|
</div>
|
|
</header>
|
|
|
|
<div class="cb-page-body">
|
|
<?php if (session()->getFlashdata('errors')): ?>
|
|
<div class="alert alert-danger">
|
|
<?php foreach (session()->getFlashdata('errors') as $err): ?>
|
|
<div><?= esc(is_array($err) ? implode(' ', $err) : $err) ?></div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
<?php endif; ?>
|
|
<?php if (session()->getFlashdata('error')): ?>
|
|
<div class="alert alert-danger"><?= esc(session()->getFlashdata('error')) ?></div>
|
|
<?php endif; ?>
|
|
|
|
<?php if ($charts === []): ?>
|
|
<div class="alert alert-warning">Create a chart first before adding alerts.</div>
|
|
<?php else: ?>
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-body">
|
|
<form action="<?= base_url('alert/store') ?>" method="post">
|
|
<?= csrf_field() ?>
|
|
<div class="mb-3">
|
|
<label class="form-label fw-semibold">Name</label>
|
|
<input type="text" name="name" class="form-control" value="<?= esc(old('name', '')) ?>" required maxlength="200">
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label fw-semibold">Chart</label>
|
|
<select name="chart_id" class="form-select" required>
|
|
<option value="">— Select —</option>
|
|
<?php foreach ($charts as $c): ?>
|
|
<option value="<?= (int) $c['id'] ?>" <?= (string) old('chart_id') === (string) $c['id'] ? 'selected' : '' ?>><?= esc($c['name']) ?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label fw-semibold">Metric column</label>
|
|
<input type="text" name="metric_field" class="form-control" value="<?= esc(old('metric_field', '')) ?>" required placeholder="e.g. revenue, total, count" maxlength="150">
|
|
<div class="form-text">First row of the query result; column name must match.</div>
|
|
</div>
|
|
<div class="row g-3 mb-3">
|
|
<div class="col-md-4">
|
|
<label class="form-label fw-semibold">Condition</label>
|
|
<select name="condition" class="form-select">
|
|
<?php foreach (['gt' => 'Greater than', 'lt' => 'Less than', 'eq' => 'Equals', 'gte' => 'Greater or equal', 'lte' => 'Less or equal'] as $k => $lab): ?>
|
|
<option value="<?= esc($k) ?>" <?= old('condition', 'gt') === $k ? 'selected' : '' ?>><?= esc($lab) ?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label fw-semibold">Threshold</label>
|
|
<input type="text" name="threshold" class="form-control" value="<?= esc(old('threshold', '0')) ?>" required inputmode="decimal">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label fw-semibold">Check every (minutes)</label>
|
|
<input type="number" name="check_interval" class="form-control" value="<?= esc(old('check_interval', '15')) ?>" min="1" max="1440">
|
|
</div>
|
|
</div>
|
|
<div class="border rounded-3 p-3 mb-3">
|
|
<div class="form-check mb-2">
|
|
<input class="form-check-input" type="checkbox" name="notify_email" value="1" id="ne" <?= old('notify_email') ? 'checked' : '' ?>>
|
|
<label class="form-check-label" for="ne">Email</label>
|
|
</div>
|
|
<input type="text" name="email_addresses" class="form-control form-control-sm" placeholder="Comma-separated emails" value="<?= esc(old('email_addresses', '')) ?>">
|
|
<div class="form-check mt-3 mb-2">
|
|
<input class="form-check-input" type="checkbox" name="notify_slack" value="1" id="ns" <?= old('notify_slack') ? 'checked' : '' ?>>
|
|
<label class="form-check-label" for="ns">Slack (incoming webhook)</label>
|
|
</div>
|
|
<input type="url" name="slack_webhook" class="form-control form-control-sm" placeholder="https://hooks.slack.com/..." value="<?= esc(old('slack_webhook', '')) ?>">
|
|
</div>
|
|
<button type="submit" class="btn btn-dark">Save alert</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<?php endif; ?>
|
|
</div>
|
|
<?= $this->endSection() ?>
|