github.com/erda-project/erda-infra@v1.0.9/providers/component-protocol/components/kanban/impl/default.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 impl 16 17 import ( 18 "github.com/erda-project/erda-infra/providers/component-protocol/components/defaults" 19 "github.com/erda-project/erda-infra/providers/component-protocol/components/kanban" 20 "github.com/erda-project/erda-infra/providers/component-protocol/cptype" 21 "github.com/erda-project/erda-infra/providers/component-protocol/utils/cputil" 22 ) 23 24 // DefaultKanban . 25 type DefaultKanban struct { 26 defaults.DefaultImpl 27 Impl kanban.IKanban 28 29 *StdStructuredPtr 30 } 31 32 // StdStructuredPtr . 33 type StdStructuredPtr struct { 34 StdInParamsPtr *cptype.ExtraMap 35 StdDataPtr *kanban.Data 36 StdStatePtr *cptype.ExtraMap 37 } 38 39 // DataPtr . 40 func (s *StdStructuredPtr) DataPtr() interface{} { return s.StdDataPtr } 41 42 // StatePtr . 43 func (s *StdStructuredPtr) StatePtr() interface{} { return s.StdStatePtr } 44 45 // InParamsPtr . 46 func (s *StdStructuredPtr) InParamsPtr() interface{} { return s.StdInParamsPtr } 47 48 // RegisterCompStdOps . 49 func (d *DefaultKanban) RegisterCompStdOps() (opFuncs map[cptype.OperationKey]cptype.OperationFunc) { 50 return map[cptype.OperationKey]cptype.OperationFunc{ 51 // kanban-level 52 kanban.OpBoardCreate{}.OpKey(): func(sdk *cptype.SDK) cptype.IStdStructuredPtr { 53 return d.Impl.RegisterBoardCreateOp(*cputil.MustObjJSONTransfer(sdk.Event.OperationData, &kanban.OpBoardCreate{}).(*kanban.OpBoardCreate))(sdk) 54 }, 55 56 // board-level 57 kanban.OpBoardLoadMore{}.OpKey(): func(sdk *cptype.SDK) cptype.IStdStructuredPtr { 58 return d.Impl.RegisterBoardLoadMoreOp(*cputil.MustObjJSONTransfer(sdk.Event.OperationData, &kanban.OpBoardLoadMore{}).(*kanban.OpBoardLoadMore))(sdk) 59 }, 60 kanban.OpBoardUpdate{}.OpKey(): func(sdk *cptype.SDK) cptype.IStdStructuredPtr { 61 return d.Impl.RegisterBoardUpdateOp(*cputil.MustObjJSONTransfer(sdk.Event.OperationData, &kanban.OpBoardUpdate{}).(*kanban.OpBoardUpdate))(sdk) 62 }, 63 kanban.OpBoardDelete{}.OpKey(): func(sdk *cptype.SDK) cptype.IStdStructuredPtr { 64 return d.Impl.RegisterBoardDeleteOp(*cputil.MustObjJSONTransfer(sdk.Event.OperationData, &kanban.OpBoardDelete{}).(*kanban.OpBoardDelete))(sdk) 65 }, 66 67 // card-level 68 kanban.OpCardMoveTo{}.OpKey(): func(sdk *cptype.SDK) cptype.IStdStructuredPtr { 69 return d.Impl.RegisterCardMoveToOp(*cputil.MustObjJSONTransfer(sdk.Event.OperationData, &kanban.OpCardMoveTo{}).(*kanban.OpCardMoveTo))(sdk) 70 }, 71 } 72 } 73 74 // RegisterCompNonStdOps . 75 func (d *DefaultKanban) RegisterCompNonStdOps() (opFuncs map[cptype.OperationKey]cptype.OperationFunc) { 76 return nil 77 } 78 79 // Initialize . 80 func (d *DefaultKanban) Initialize(sdk *cptype.SDK) {} 81 82 // Finalize . 83 func (d *DefaultKanban) Finalize(sdk *cptype.SDK) {} 84 85 // SkipOp providers default impl for user. 86 func (d *DefaultKanban) SkipOp(sdk *cptype.SDK) bool { return !d.Impl.Visible(sdk) } 87 88 // Visible . 89 func (d *DefaultKanban) Visible(sdk *cptype.SDK) bool { return true } 90 91 // BeforeHandleOp providers default impl for user. 92 func (d *DefaultKanban) BeforeHandleOp(sdk *cptype.SDK) {} 93 94 // AfterHandleOp providers default impl for user. 95 func (d *DefaultKanban) AfterHandleOp(sdk *cptype.SDK) {} 96 97 // StdStructuredPtrCreator . 98 func (d *DefaultKanban) StdStructuredPtrCreator() func() cptype.IStdStructuredPtr { 99 return func() cptype.IStdStructuredPtr { 100 return &StdStructuredPtr{ 101 StdInParamsPtr: &cptype.ExtraMap{}, 102 StdStatePtr: &cptype.ExtraMap{}, 103 StdDataPtr: &kanban.Data{}, 104 } 105 } 106 }