Azpect3120 36f7b9fe39 FEAT: Connection manager changes!
Can now edit the connection names when creating a connection and the
connection manager can now edit those names! Much better ease of use.
2024-08-15 09:07:12 -07:00

91 lines
3.6 KiB
Go

package templates
import (
"encoding/json"
"fmt"
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
)
const MANAGER string = `
<div id="manager-modal" class="fixed inset-0 bg-gray-600 bg-opacity-50">
<div class="flex items-center justify-center min-h-screen">
<form hx-post="/v1/api/connections/delete" hx-swap="outerHTML" hx-target="#manager-modal" hx-trigger="submit" class="bg-white p-6 rounded-lg shadow-lg w-2/3">
<div class="flex justify-between items-start border-b pb-2">
<h2 class="text-xl font-bold">
Manage Stored Connections
<br>
<span class="text-xs font-light">Connection data is stored in the browsers session and can be renamed or deleted here.</span>
</h2>
<button hx-get="/v1/web/manager/hide" hx-trigger="click" hx-swap="outerHTML" hx-target="#manager-modal" class="text-gray-500 hover:text-gray-700">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
</svg>
</button>
</div>
<div class="mt-4 w-full max-w-full overflow-x-auto">
<table>
<thead class="bg-gray-50">
<tr>
<th scope="col" class="px-6 py-3 text-center text-xs font-medium text-gray-500 uppercase tracking-wider">Delete</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Name</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase jracking-wider">Driver</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">URL</th>
</tr>
</thead>
<tbody class="w-full">
%s
</tbody>
</table>
</div>
<div class="flex items-center space-x-4 mt-4 border-t pt-4">
<button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-md"> Save Changes </button>
</div>
</form>
</div>
</div>
`
const MANAGER_ENTRY string = `
<tr class="overflow-x-auto">
<td class="px-6 py-4 whitespace-nowrap flex items-center justify-center">
<input type="checkbox" name="connections" value="%s" class="w-4 h-4 m-2">
</td>
<td class="px-6 py-4 whitespace-nowrap">
<input type="text" name="%s" value="%s" class="p-2 border border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm">
</td>
<td class="px-6 py-4 whitespace-nowrap">%s</td>
<td class="px-6 py-4 whitespace-nowrap">%s</td>
</tr>
`
const MANAGER_CLOSED string = `
<div id="manager-modal" class="fixed inset-0 bg-gray-600 bg-opacity-50 hidden opacity-0" hx-get="/v1/web/connections" hx-trigger="load" hx-swap="outerHTML" hx-target="#connected-database" hx-params="none"></div>
`
func OpenManager(c *gin.Context) {
session := sessions.Default(c)
connections_bytes, ok := session.Get("connections").([]byte)
if !ok {
fmt.Println("No connections found")
}
var connections map[string]string
if err := json.Unmarshal(connections_bytes, &connections); err != nil {
fmt.Println(err)
}
var entries string
for name, url := range connections {
entries += fmt.Sprintf(MANAGER_ENTRY, url, url, name, "PostgreSQL", url)
}
c.String(200, fmt.Sprintf(MANAGER, entries))
}
func HideManager(c *gin.Context) {
c.String(200, MANAGER_CLOSED)
}