コンポーネント詳細
DataFrame
Render a gota DataFrame as a table component.
サンプル
参照情報
- テンプレート
dataframe.go- ゴールデン
N/A
Go(Marionette)サンプル
この実装例は Go の Marionette を使っています。ソース: docs/site-astro/public/examples/go/dataframe.go
package goexamples
import (
"bytes"
"fmt"
"strconv"
mb "github.com/YoshihideShirai/marionette/backend"
mf "github.com/YoshihideShirai/marionette/frontend"
)
const dataframeCSV = `Name,Role,Score
Aiko,Admin,88
Ren,Editor,72
Mina,Viewer,65
Sora,Admin,95
Yui,Viewer,81
`
func RegisterDataFrameExample(app *mb.App) {
app.Page("/dataframe", func(ctx *mb.Context) mf.Node {
q := ctx.Query("q")
sort := ctx.Query("sort")
view := mf.DataFrameViewProps{PageSize: 3, ComputedColumns: []mf.DataFrameComputedColumn{{Name: "Tier", Compute: func(row map[string]any) any {
score, _ := strconv.ParseFloat(fmt.Sprint(row["Score"]), 64)
if score >= 85 {
return "Gold"
}
return "Silver"
}}}}
if q != "" {
view.Filters = append(view.Filters, mf.DataFrameFilter{Column: "Name", Op: mf.DataFrameFilterContains, Value: q})
}
if sort != "" {
view.Sort = append(view.Sort, mf.DataFrameSort{Column: sort})
}
node, err := mf.DataFrameFromCSV(bytes.NewReader([]byte(dataframeCSV)), mf.TableProps{
View: view,
Columns: []mf.TableColumn{
{Label: "Name", SortKey: "Name", SortHref: "/dataframe?sort=Name&q=" + q},
{Label: "Role", SortKey: "Role", SortHref: "/dataframe?sort=Role&q=" + q},
{Label: "Score", SortKey: "Score", SortHref: "/dataframe?sort=Score&q=" + q},
},
})
if err != nil {
return mf.Alert(mf.AlertProps{Title: "Failed to load CSV", Description: err.Error()})
}
return node
})
}