You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.4 KiB
65 lines
1.4 KiB
package goblin |
|
|
|
import ( |
|
"strings" |
|
|
|
"go-common/app/interface/main/tv/conf" |
|
) |
|
|
|
// Label def. |
|
type Label struct { |
|
ID int `json:"id"` |
|
Name string `json:"name"` |
|
Param string `json:"param"` |
|
ParamName string `json:"param_name"` |
|
Value string `json:"value"` |
|
} |
|
|
|
// TypeLabels def. |
|
type TypeLabels struct { |
|
ParamName string `json:"param_name"` |
|
Param string `json:"param"` |
|
Labels []*Label `json:"labels"` |
|
} |
|
|
|
// FromLabels def. |
|
func (v *TypeLabels) FromLabels(labels []*Label) { |
|
if len(labels) == 0 { |
|
return |
|
} |
|
v.Param = labels[0].Param |
|
v.ParamName = labels[0].ParamName |
|
v.Labels = labels |
|
} |
|
|
|
// IndexLabels is used to combine the data in memory |
|
type IndexLabels struct { |
|
PGC map[int][]*TypeLabels // key is category, value is all the param and their labels |
|
UGC map[int][]*TypeLabels |
|
} |
|
|
|
// YearVDur def. |
|
type YearVDur struct { |
|
Dur string `json:"dur"` |
|
} |
|
|
|
// TransYear transforms the value of year type labels |
|
func (v *Label) TransYear(cfg *conf.IndexLabel) { |
|
if !cfg.IsYear(v.Param) { |
|
return |
|
} |
|
if len(cfg.YearV) == 0 { |
|
return |
|
} |
|
if newV, ok := cfg.YearV[v.Value]; ok { // replace the value |
|
v.Value = newV.Dur |
|
} |
|
if !strings.Contains(v.Value, "-") { |
|
v.Value = v.Value + "-" + v.Value |
|
} else { // transform 2004-2000 to 2000-2004 |
|
years := strings.Split(v.Value, "-") |
|
if len(years) == 2 && years[0] != "" && years[1] != "" { |
|
v.Value = years[1] + "-" + years[0] |
|
} |
|
} |
|
}
|
|
|