github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/web/elm/src/Views/PauseToggle.elm (about) 1 module Views.PauseToggle exposing (view) 2 3 import Assets 4 import Concourse 5 import Html exposing (Html) 6 import Html.Attributes exposing (class) 7 import Html.Events exposing (onClick, onMouseEnter, onMouseLeave) 8 import Message.Message exposing (DomID(..), Message(..), PipelinesSection(..)) 9 import UserState exposing (UserState(..)) 10 import Views.Icon as Icon 11 import Views.Spinner as Spinner 12 import Views.Styles as Styles 13 14 15 view : 16 { a 17 | isPaused : Bool 18 , pipeline : Concourse.PipelineIdentifier 19 , isToggleHovered : Bool 20 , isToggleLoading : Bool 21 , margin : String 22 , userState : UserState 23 , tooltipPosition : Styles.TooltipPosition 24 , domID : DomID 25 } 26 -> Html Message 27 view params = 28 let 29 isClickable = 30 UserState.isAnonymous params.userState 31 || UserState.isMember 32 { teamName = params.pipeline.teamName 33 , userState = params.userState 34 } 35 in 36 if params.isToggleLoading then 37 Spinner.spinner { sizePx = 20, margin = params.margin } 38 39 else 40 Html.div 41 (Styles.pauseToggle params.margin 42 ++ [ onMouseEnter <| Hover <| Just <| params.domID 43 , onMouseLeave <| Hover Nothing 44 , class "pause-toggle" 45 ] 46 ++ (if isClickable then 47 [ onClick <| Click <| params.domID ] 48 49 else 50 [] 51 ) 52 ) 53 [ Icon.icon 54 { sizePx = 20 55 , image = 56 if params.isPaused then 57 Assets.PlayIcon 58 59 else 60 Assets.PauseIcon 61 } 62 (Styles.pauseToggleIcon 63 { isHovered = isClickable && params.isToggleHovered 64 , isClickable = isClickable 65 } 66 ) 67 , if params.isToggleHovered && not isClickable then 68 Html.div 69 (Styles.pauseToggleTooltip params.tooltipPosition) 70 [ Html.text "not authorized" ] 71 72 else 73 Html.text "" 74 ]