1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package element
- import (
- "git.nspix.com/golang/pgenr/internal/pool"
- "golang.org/x/net/html/atom"
- )
- type (
- Table struct {
- Title Element
- Header []Element
- Body [][]Element
- Outro Element
- }
- )
- func (table *Table) SetHead(elements ...Element) {
- table.Header = elements
- }
- func (table *Table) AddCell(elements ...Element) {
- if table.Body == nil {
- table.Body = make([][]Element, 0)
- }
- table.Body = append(table.Body, elements)
- }
- func (table *Table) String() string {
- br := pool.Get()
- defer pool.Put(br)
- br.WriteString(beginTag(atom.Div.String(), Attrs{"class": "table-wrapper"}))
- if table.Title != nil {
- br.WriteString(renderTag(atom.Div.String(), Attrs{"class": "table-title"}, table.Title.Html()))
- }
- br.WriteString(beginTag(atom.Table.String(), Attrs{"class": "table"}))
- if len(table.Header) > 0 {
- br.WriteString(beginTag(atom.Thead.String(), nil))
- br.WriteString(beginTag(atom.Tr.String(), nil))
- for _, text := range table.Header {
- br.WriteString(renderTag(atom.Th.String(), nil, text.Html()))
- }
- br.WriteString(endTag(atom.Tr.String()))
- br.WriteString(endTag(atom.Thead.String()))
- }
- if len(table.Body) > 0 {
- br.WriteString(beginTag(atom.Tbody.String(), nil))
- for _, cell := range table.Body {
- br.WriteString(beginTag(atom.Tr.String(), nil))
- for _, text := range cell {
- br.WriteString(renderTag(atom.Td.String(), nil, text.Html()))
- }
- br.WriteString(endTag(atom.Tr.String()))
- }
- br.WriteString(endTag(atom.Tbody.String()))
- }
- br.WriteString(endTag(atom.Table.String()))
- if table.Outro != nil {
- br.WriteString(table.Outro.Html())
- }
- br.WriteString(endTag(atom.Div.String()))
- return br.String()
- }
- func NewTable(title *Text) *Table {
- table := &Table{
- Title: title,
- Header: make([]Element, 0),
- Body: make([][]Element, 0),
- }
- return table
- }
|