module Config.Helpers.Cards.Inner.StrengthBar exposing
    ( barMaker
    , barPadding
    )

import Config.Helpers.Cards.Inner.ToolTip
    exposing
        ( ToolTipPosition(..)
        , tooltip
        )
import Config.Style.Colour.Helpers exposing (colourTheme)
import Element as E
    exposing
        ( Device
        , DeviceClass(..)
        , Element
        , Orientation(..)
        , alignLeft
        , column
        , el
        , fill
        , height
        , none
        , px
        , width
        )
import Element.Background as B exposing (gradient)
import Element.Border as D
    exposing
        ( color
        , rounded
        , width
        )
import Shared exposing (Model)


barMaker : Shared.Model -> (Int -> String) -> Int -> Element msg
barMaker shared getTooltip num =
    let
        strengthBarAttr =
            [ height <| px 12
            , E.width fill
            , D.rounded 10
            , D.color colourTheme.textDarkGrey
            , D.width 2
            , B.gradient
                { angle = 1.57
                , steps =
                    List.concat
                        [ List.repeat num colourTheme.barGreen
                        , List.repeat (10 - num) colourTheme.barRed
                        ]
                }
            ]
    in
    el
        (strengthBarAttr
            ++ (case ( shared.device.class, shared.device.orientation ) of
                    ( Phone, Portrait ) ->
                        []

                    ( Tablet, Portrait ) ->
                        []

                    _ ->
                        [ tooltip IsLeft (getTooltip num) ]
               )
        )
        none


barPadding : List (Element msg) -> Element msg
barPadding =
    column
        [ E.width fill
        , alignLeft
        ]
