/
list_cell.go
64 lines (54 loc) · 1.39 KB
/
list_cell.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package prago
import (
"context"
"strings"
)
type listCell struct {
Images []string
Name string
ItemID string
}
func getCellViewData(userData UserData, f *Field, value interface{}) listCell {
if f.fieldType.listCellDataSource != nil {
return f.fieldType.listCellDataSource(userData, f, value)
}
if f.fieldType.IsRelation() {
return relationCellViewData(userData, f, value)
}
ret := listCell{
Name: getDefaultFieldStringer(f)(userData, f, value),
ItemID: f.id,
}
return ret
}
func textListDataSource(userData UserData, f *Field, value interface{}) listCell {
return listCell{Name: crop(value.(string), 100), ItemID: f.id}
}
func markdownListDataSource(userData UserData, f *Field, value interface{}) listCell {
return listCell{Name: cropMarkdown(value.(string), 100), ItemID: f.id}
}
func relationCellViewData(userData UserData, f *Field, value interface{}) listCell {
previewData := f.relationPreview(context.TODO(), userData, value.(int64))
if previewData == nil {
return listCell{}
}
ret := listCell{
Name: previewData.Name,
ItemID: f.id,
}
if previewData.Image != "" {
ret.Images = []string{previewData.Image}
}
return ret
}
func imageCellViewData(userData UserData, f *Field, value interface{}) listCell {
data := value.(string)
images := strings.Split(data, ",")
ret := listCell{
ItemID: f.id,
}
if len(images) > 0 {
ret.Images = images
}
return ret
}