github.com/erda-project/erda-infra@v1.0.9/providers/component-protocol/components/list/model.go (about) 1 // Copyright (c) 2021 Terminus, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package list 16 17 import ( 18 "github.com/erda-project/erda-infra/providers/component-protocol/components/commodel" 19 "github.com/erda-project/erda-infra/providers/component-protocol/cptype" 20 ) 21 22 // ItemCommStatus . 23 type ItemCommStatus string 24 25 const ( 26 // ItemCommStatusDefault default status 27 ItemCommStatusDefault ItemCommStatus = "" 28 // ItemCommStatusSuccess success status 29 ItemCommStatusSuccess ItemCommStatus = "success" 30 // ItemCommStatusInfo info status 31 ItemCommStatusInfo ItemCommStatus = "info" 32 // ItemCommStatusWarning warning status 33 ItemCommStatusWarning ItemCommStatus = "warning" 34 // ItemCommStatusError error status 35 ItemCommStatusError ItemCommStatus = "error" 36 ) 37 38 type ( 39 // Data includes list of items. 40 Data struct { 41 Title string `json:"title,omitempty"` 42 TitleSummary string `json:"titleSummary,omitempty"` 43 List []Item `json:"list,omitempty"` 44 PageNo uint64 `json:"pageNo,omitempty"` 45 PageSize uint64 `json:"pageSize,omitempty"` 46 Total uint64 `json:"total,omitempty"` 47 Operations map[cptype.OperationKey]cptype.Operation `json:"operations,omitempty"` 48 UserIDs []string `json:"userIDs,omitempty"` 49 } 50 51 // Item minimum unit of list 52 Item struct { 53 // uniq id of the item, e.g: appID, projID, ... 54 ID string `json:"id,omitempty"` 55 Title string `json:"title,omitempty"` 56 TitleSummary string `json:"titleSummary,omitempty"` 57 // logo link url of title 58 //LogoURL string `json:"logoURL,omitempty"` 59 Star *bool `json:"star,omitempty"` 60 MainState *StateInfo `json:"mainState,omitempty"` 61 TitleState []StateInfo `json:"titleState,omitempty"` 62 Description string `json:"description,omitempty"` 63 BackgroundImgURL string `json:"backgroundImgURL,omitempty"` 64 KvInfos []KvInfo `json:"kvInfos,omitempty"` 65 Selectable bool `json:"selectable"` 66 // columns show in the item, e.g user, time 67 ColumnsInfo map[string]interface{} `json:"columnsInfo,omitempty"` 68 // operations on the frond 69 Operations map[cptype.OperationKey]cptype.Operation `json:"operations,omitempty"` 70 // operations folded 71 MoreOperations []MoreOpItem `json:"moreOperations,omitempty"` 72 Icon *commodel.Icon `json:"icon,omitempty"` 73 cptype.Extra 74 } 75 76 // StateInfo . 77 StateInfo struct { 78 Text string `json:"text,omitempty"` 79 Status ItemCommStatus `json:"status,omitempty"` 80 // right or left 81 SuffixIcon string `json:"suffixIcon,omitempty"` 82 Operations map[cptype.OperationKey]cptype.Operation `json:"operations"` 83 } 84 85 // KvInfo . 86 KvInfo struct { 87 ID string `json:"id,omitempty"` 88 Key string `json:"key,omitempty"` 89 Value string `json:"value,omitempty"` 90 Icon string `json:"icon,omitempty"` 91 Tip string `json:"tip,omitempty"` 92 // red green etc. 93 Color string `json:"color,omitempty"` 94 // metaInfo related operations 95 Operations map[cptype.OperationKey]cptype.Operation `json:"operations"` 96 } 97 98 // MoreOpItem more operation item info 99 MoreOpItem struct { 100 ID string `json:"id,omitempty"` 101 Text string `json:"text,omitempty"` 102 Icon string `json:"icon,omitempty"` 103 // more operation related operations 104 Operations map[cptype.OperationKey]cptype.Operation `json:"operations"` 105 } 106 )