mirror of
https://gitlab.com/upRootNutrition/website.git
synced 2025-06-16 20:35:13 -05:00
218 lines
7.1 KiB
Elm
218 lines
7.1 KiB
Elm
![]() |
module Interviews.Helpers exposing (..)
|
||
|
|
||
|
import Config.Colour exposing (..)
|
||
|
import Config.Format exposing (..)
|
||
|
import Cuckery.Types exposing (..)
|
||
|
import Effect exposing (Effect)
|
||
|
import Element as E exposing (..)
|
||
|
import Element.Background as B exposing (..)
|
||
|
import Element.Border as D
|
||
|
import Element.Font as F
|
||
|
import Html.Attributes as H exposing (style)
|
||
|
import Interviews.Types exposing (..)
|
||
|
import Layouts
|
||
|
import Page exposing (Page)
|
||
|
import Route exposing (Route)
|
||
|
import Shared
|
||
|
import View exposing (View)
|
||
|
|
||
|
|
||
|
makeSubject : Subjects -> Element msg
|
||
|
makeSubject subjects =
|
||
|
column [ E.width fill, alignLeft ]
|
||
|
[ paragraph [ F.regular ]
|
||
|
[ text ("‣ " ++ subjects.subject) ]
|
||
|
]
|
||
|
|
||
|
|
||
|
makeAppearance : Appearance -> Int -> Element msg
|
||
|
makeAppearance appearanceEntry index =
|
||
|
column
|
||
|
(paragraphAlignLeft
|
||
|
++ [ spacing 3
|
||
|
, width fill
|
||
|
]
|
||
|
)
|
||
|
[ row
|
||
|
(paragraphFormat
|
||
|
++ [ F.size 18
|
||
|
, paddingEach
|
||
|
{ top = 0
|
||
|
, bottom = 0
|
||
|
, left = 15
|
||
|
, right = 15
|
||
|
}
|
||
|
, E.width fill
|
||
|
]
|
||
|
)
|
||
|
[ text " "
|
||
|
, text (String.fromInt index ++ ". ")
|
||
|
, paragraphLinkFormat
|
||
|
{ url = appearanceEntry.appearanceLink
|
||
|
, label =
|
||
|
row
|
||
|
[ F.size 18
|
||
|
]
|
||
|
[ text ("#"++appearanceEntry.appearanceEpisode++": "++appearanceEntry.appearanceTitle)
|
||
|
|> el
|
||
|
[ F.color colourTheme.highlightText
|
||
|
, mouseOver [ F.color colourTheme.highlightTextHover ]
|
||
|
, transitionStyle
|
||
|
]
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
, row paragraphBoldFormat
|
||
|
[ column [ alignTop, width <| px 125 ]
|
||
|
[ text "Subjects:"
|
||
|
|> el
|
||
|
[ paddingEach
|
||
|
{ top = 0
|
||
|
, right = 0
|
||
|
, bottom = 0
|
||
|
, left = 55
|
||
|
}
|
||
|
]
|
||
|
]
|
||
|
, column
|
||
|
[ spacing 8
|
||
|
, width fill
|
||
|
]
|
||
|
<|
|
||
|
List.map2 (\x y -> makeSubject x)
|
||
|
appearanceEntry.appearanceSubjects
|
||
|
(List.range 1 (List.length appearanceEntry.appearanceSubjects))
|
||
|
]
|
||
|
]
|
||
|
|
||
|
|
||
|
interviewMaker : Interview -> Element msg
|
||
|
interviewMaker interview =
|
||
|
row
|
||
|
[ spacing 20
|
||
|
, width fill
|
||
|
, E.height fill
|
||
|
, alignTop
|
||
|
, alignRight
|
||
|
]
|
||
|
[ column
|
||
|
[ E.width <| px 115
|
||
|
, E.height <| px 115
|
||
|
, alignTop
|
||
|
, alignRight
|
||
|
]
|
||
|
[ column
|
||
|
[ D.rounded 100
|
||
|
, D.width 5
|
||
|
, D.color colourTheme.cardBackground
|
||
|
]
|
||
|
[ E.image
|
||
|
[ alignRight
|
||
|
, alignTop
|
||
|
, D.rounded 100
|
||
|
, clip
|
||
|
, E.width <| px 90
|
||
|
, E.height <| px 90
|
||
|
]
|
||
|
{ src = "interviews/" ++ interview.interviewImage ++ ".png"
|
||
|
, description = interview.interviewImage
|
||
|
}
|
||
|
]
|
||
|
]
|
||
|
, column
|
||
|
[ E.width <| px 600 ]
|
||
|
[ row
|
||
|
(nonHighlightedTitleFormat
|
||
|
++ [ F.size 20
|
||
|
, paddingEach
|
||
|
{ top = 6
|
||
|
, bottom = 3
|
||
|
, left = 25
|
||
|
, right = 15
|
||
|
}
|
||
|
, alignBottom
|
||
|
, width fill
|
||
|
, D.roundEach
|
||
|
{ topLeft = 26
|
||
|
, topRight = 15
|
||
|
, bottomRight = 0
|
||
|
, bottomLeft = 0
|
||
|
}
|
||
|
, B.gradient
|
||
|
{ angle = 1.5708
|
||
|
, steps =
|
||
|
[ colourTheme.highlightTextHover
|
||
|
, colourTheme.highlightTextHover
|
||
|
, colourTheme.transparent
|
||
|
, colourTheme.transparent
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
)
|
||
|
[ text interview.interviewName ]
|
||
|
, column
|
||
|
[ E.height fill
|
||
|
, E.width fill
|
||
|
|
||
|
-- , B.color colourTheme.cardBackground
|
||
|
, paddingEach
|
||
|
{ top = 10
|
||
|
, bottom = 10
|
||
|
, left = 10
|
||
|
, right = 10
|
||
|
}
|
||
|
, D.roundEach
|
||
|
{ topLeft = 0
|
||
|
, topRight = 0
|
||
|
, bottomRight = 0
|
||
|
, bottomLeft = 26
|
||
|
}
|
||
|
, spacing 3
|
||
|
, B.gradient
|
||
|
{ angle = 1.5708
|
||
|
, steps =
|
||
|
[ colourTheme.cardBackground
|
||
|
, colourTheme.cardBackground
|
||
|
, colourTheme.transparent
|
||
|
, colourTheme.transparent
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
[ row
|
||
|
(paragraphBoldFormat
|
||
|
++ [ F.size 18
|
||
|
, paddingEach
|
||
|
{ top = 0
|
||
|
, bottom = 0
|
||
|
, left = 15
|
||
|
, right = 15
|
||
|
}
|
||
|
, spacing 5
|
||
|
]
|
||
|
)
|
||
|
[ text "Social:"
|
||
|
, paragraphLinkFormat
|
||
|
{ url = interview.interviewSocial
|
||
|
, label = transitionHighlightedLinkHover <| text (formatInterviewSocial interview.interviewSocial)
|
||
|
}
|
||
|
]
|
||
|
, row
|
||
|
(paragraphBoldFormat
|
||
|
++ [ F.size 18
|
||
|
, paddingEach
|
||
|
{ top = 0
|
||
|
, bottom = 0
|
||
|
, left = 15
|
||
|
, right = 15
|
||
|
}
|
||
|
]
|
||
|
)
|
||
|
[ text "Appearances:" ]
|
||
|
, column [ spacing 8, width fill ] <|
|
||
|
List.map2 (\x y -> makeAppearance x y)
|
||
|
interview.interviewAppearances
|
||
|
(List.range 1 (List.length interview.interviewAppearances))
|
||
|
]
|
||
|
]
|
||
|
]
|