()
| 23 | } |
| 24 | |
| 25 | func (m *TuiModel) CopyMap() (to map[string]interface{}) { |
| 26 | from := m.Table().Data |
| 27 | to = map[string]interface{}{} |
| 28 | |
| 29 | for k, v := range from { |
| 30 | if copyValues, ok := v.(map[string][]interface{}); ok { |
| 31 | columnNames := m.Data().TableHeaders[k] |
| 32 | columnValues := make(map[string][]interface{}) |
| 33 | // golang wizardry |
| 34 | columns := make([]interface{}, len(columnNames)) |
| 35 | |
| 36 | for i := range columns { |
| 37 | columns[i] = copyValues[columnNames[i]] |
| 38 | } |
| 39 | |
| 40 | for i, colName := range columnNames { |
| 41 | val := columns[i].([]interface{}) |
| 42 | buffer := make([]interface{}, len(val)) |
| 43 | for k := range val { |
| 44 | buffer[k] = val[k] |
| 45 | } |
| 46 | columnValues[colName] = append(columnValues[colName], buffer) |
| 47 | } |
| 48 | |
| 49 | to[k] = columnValues // data for schema, organized by column |
| 50 | } |
| 51 | } |
| 52 | |
| 53 | return to |
| 54 | } |
| 55 | |
| 56 | // GetNewModel returns a TuiModel struct with some fields set |
| 57 | func GetNewModel(baseFileName string, db *sql.DB) TuiModel { |
no test coverage detected