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  )