| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 1 | <!DOCTYPE html> |
| 2 | <html lang="en"> |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 3 | <head> |
| 4 | <meta charset="UTF-8"> |
| 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | <title>URL Shortener</title> |
| DTabidze | 71353b5 | 2024-01-17 16:02:55 +0400 | [diff] [blame] | 7 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@1/css/pico.min.css"> |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 8 | </head> |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 9 | <body> |
| 10 | <h1>URL Shortener</h1> |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 11 | <form action="/" method="post"> |
| 12 | <label for="address">Address:</label> |
| 13 | <input type="text" id="address" name="address" required> |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 14 | <label for="custom">Custom Name (optional):</label> |
| 15 | <input type="text" id="custom" name="custom"> |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 16 | <button type="submit">Shorten URL</button> |
| 17 | </form> |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 18 | <h2>Named Addresses:</h2> |
| 19 | <table> |
| 20 | <tr> |
| 21 | <th>Name</th> |
| 22 | <th>Address</th> |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 23 | <th>Active</th> |
| 24 | </tr> |
| DTabidze | 71353b5 | 2024-01-17 16:02:55 +0400 | [diff] [blame] | 25 | {{- range .NamedAddresses -}} |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 26 | <tr> |
| 27 | <td><a href="{{ .Name }}" target="_blank">{{ .Name }}</a></td> |
| 28 | <td>{{ .Address }}</td> |
| DTabidze | 71353b5 | 2024-01-17 16:02:55 +0400 | [diff] [blame] | 29 | <td> |
| 30 | <input type="checkbox" role="switch" {{ if .Active }}checked{{ end }} onclick="toggle('{{ .Name }}', {{ not .Active }});"> |
| 31 | </td> |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 32 | </tr> |
| DTabidze | 71353b5 | 2024-01-17 16:02:55 +0400 | [diff] [blame] | 33 | {{- end -}} |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 34 | </table> |
| 35 | </body> |
| DTabidze | 71353b5 | 2024-01-17 16:02:55 +0400 | [diff] [blame] | 36 | <script type="application/javascript"> |
| 37 | function toggle(name, status) { |
| 38 | const data = { |
| 39 | "name": name, |
| 40 | "active": status, |
| 41 | }; |
| 42 | fetch("/api/update/", { |
| 43 | method: "POST", |
| 44 | headers: { |
| 45 | 'Content-Type': 'application/json', |
| 46 | }, |
| 47 | body: JSON.stringify(data), |
| 48 | }) |
| 49 | .then(response => { |
| 50 | if (response.ok) { |
| 51 | window.location.reload(); |
| 52 | } |
| 53 | }) |
| 54 | .catch((error) => { |
| 55 | console.error('Error:', error); |
| 56 | }); |
| 57 | } |
| 58 | </script> |
| DTabidze | b00a1db | 2024-01-12 18:30:14 +0400 | [diff] [blame] | 59 | </html> |