github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/web/elm/src/SideBar/Views.elm (about) 1 module SideBar.Views exposing (Pipeline, Team, viewTeam) 2 3 import Assets 4 import HoverState exposing (TooltipPosition(..)) 5 import Html exposing (Html) 6 import Html.Attributes exposing (class, href, id) 7 import Html.Events exposing (onClick, onMouseEnter, onMouseLeave) 8 import Message.Effects exposing (toHtmlID) 9 import Message.Message exposing (DomID(..), Message(..)) 10 import SideBar.Styles as Styles 11 import StrictEvents exposing (onLeftClickStopPropagation) 12 13 14 type alias Team = 15 { icon : Styles.Opacity 16 , collapseIcon : 17 { asset : Assets.Asset 18 , opacity : Styles.Opacity 19 } 20 , name : 21 { text : String 22 , teamColor : Styles.SidebarElementColor 23 , domID : DomID 24 } 25 , isExpanded : Bool 26 , pipelines : List Pipeline 27 , background : Styles.Background 28 } 29 30 31 viewTeam : Team -> Html Message 32 viewTeam team = 33 Html.div 34 (class "side-bar-team" :: Styles.team) 35 [ Html.div 36 (Styles.teamHeader team 37 ++ [ onClick <| Click <| team.name.domID 38 , onMouseEnter <| Hover <| Just <| team.name.domID 39 , onMouseLeave <| Hover Nothing 40 ] 41 ) 42 [ Styles.collapseIcon team.collapseIcon 43 , Styles.teamIcon 44 , Html.div 45 (Styles.teamName team.name 46 ++ [ id <| toHtmlID team.name.domID ] 47 ) 48 [ Html.text team.name.text ] 49 ] 50 , if team.isExpanded then 51 Html.div Styles.column <| List.map viewPipeline team.pipelines 52 53 else 54 Html.text "" 55 ] 56 57 58 type alias Pipeline = 59 { icon : Assets.Asset 60 , name : 61 { pipelineColor : Styles.SidebarElementColor 62 , text : String 63 , weight : Styles.FontWeight 64 } 65 , background : Styles.Background 66 , href : String 67 , domID : DomID 68 , starIcon : 69 { filled : Bool 70 , isBright : Bool 71 } 72 , id : Int 73 } 74 75 76 viewPipeline : Pipeline -> Html Message 77 viewPipeline p = 78 Html.a 79 (Styles.pipeline p 80 ++ [ href <| p.href 81 , onMouseEnter <| Hover <| Just <| p.domID 82 , onMouseLeave <| Hover Nothing 83 ] 84 ) 85 [ Html.div 86 (Styles.pipelineIcon p.icon) 87 [] 88 , Html.div 89 (id (toHtmlID p.domID) 90 :: Styles.pipelineName p.name 91 ) 92 [ Html.text p.name.text ] 93 , Html.div 94 (Styles.pipelineFavorite p.starIcon 95 ++ [ onLeftClickStopPropagation <| Click <| SideBarFavoritedIcon p.id ] 96 ) 97 [] 98 ]