package main

import (
	"context"

	mirko "code.hackerspace.pl/hscloud/go/mirko"
	"code.hackerspace.pl/hscloud/go/statusz"
)

const statuszFragment = `
    <style type="text/css">
		.table td,th {
			background-color: #eee;
			padding: 0.2em 0.4em 0.2em 0.4em;
		}
		.table th {
			background-color: #c0c0c0;
		}
		.table {
			background-color: #fff;
			border-spacing: 0.2em;
		}
	</style>
	<div>
	<b>Current leases:</b> {{ .Leases | len }}<br />
	<table class="table">
		<tr>
      		<th>IP Address</th>
      		<th>MAC Address</th>
			<th>Start</th>
			<th>End</th>
		</tr>
		{{range .Leases }}
		<tr>
			<td>{{ .IP }}</td>
			<td>{{ .MAC }}</td>
			<td>{{ .Start }}</td>
			<td>{{ .End }}</td>
		</tr>
		{{end}}
	</table>
	</div>
`

type szLeases struct {
	IP    string
	MAC   string
	Start string
	End   string
}

func (s *service) setupStatusz(m *mirko.Mirko) {
	statusz.AddStatusPart("Leases", statuszFragment, func(ctx context.Context) interface{} {
		c := make(chan []lease)
		s.leaseC <- c
		leases := <-c

		ls := make([]szLeases, len(leases))

		for i, l := range leases {
			ls[i].IP = l.ip.String()
			ls[i].MAC = l.hardware.String()
			ls[i].Start = l.from.String()
			ls[i].End = l.to.String()
		}

		return struct {
			Leases []szLeases
		}{
			Leases: ls,
		}
	})
}
