github.com/EngineerKamesh/gofullstack@v0.0.0-20180609171605-d41341d7d4ee/volume3/section1/intermediate/cars/cars.go (about)

     1  package main
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/gob"
     6  	"html/template"
     7  
     8  	"github.com/EngineerKamesh/gofullstack/volume3/section1/intermediate/model"
     9  	"honnef.co/go/js/dom"
    10  	"honnef.co/go/js/xhr"
    11  )
    12  
    13  const CarItemTemplate = `
    14  	<td class="mdl-data-table__cell--non-numeric">{{.ModelName}}</td>
    15  	<td class="mdl-data-table__cell--non-numeric">{{.Color}}</td>
    16  	<td class="mdl-data-table__cell--non-numeric">{{.Manufacturer}}</td>
    17  `
    18  
    19  var D = dom.GetWindow().Document()
    20  
    21  func main() {
    22  
    23  	nano := model.Car{ModelName: "Nano", Color: "Yellow", Manufacturer: "Tata"}
    24  	ambassador := model.Car{ModelName: "Ambassador", Color: "White", Manufacturer: "HM"}
    25  	omni := model.Car{ModelName: "Omni", Color: "Red", Manufacturer: "Maruti Suzuki"}
    26  	cars := []model.Car{nano, ambassador, omni}
    27  
    28  	println("Cars Template Example")
    29  
    30  	autoTableBody := D.GetElementByID("autoTableBody")
    31  	for i := 0; i < len(cars); i++ {
    32  		trElement := D.CreateElement("tr")
    33  		tpl := template.New("template")
    34  		tpl.Parse(CarItemTemplate)
    35  		var buff bytes.Buffer
    36  		tpl.Execute(&buff, cars[i])
    37  		trElement.SetInnerHTML(buff.String())
    38  		autoTableBody.AppendChild(trElement)
    39  	}
    40  
    41  	var carsDataBuffer bytes.Buffer
    42  	enc := gob.NewEncoder(&carsDataBuffer)
    43  	enc.Encode(cars)
    44  
    45  	xhrResponse, err := xhr.Send("POST", "/cars-data", carsDataBuffer.Bytes())
    46  
    47  	if err != nil {
    48  		println(err)
    49  	}
    50  
    51  	println("xhrResponse: ", string(xhrResponse))
    52  
    53  }