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              ]