feat: added interviews
|
@ -76,7 +76,15 @@ makeDodge dodgeEntry index =
|
|||
displayFallacy fallacyText =
|
||||
row paragraphBoldFormat
|
||||
[ column [ alignTop, width (px 165) ]
|
||||
[ text "Fallacy:" |> el [ paddingEach { top = 0, right = 0, bottom = 0, left = 70 } ]
|
||||
[ text "Fallacy:"
|
||||
|> el
|
||||
[ paddingEach
|
||||
{ top = 0
|
||||
, right = 0
|
||||
, bottom = 0
|
||||
, left = 70
|
||||
}
|
||||
]
|
||||
]
|
||||
, column [ E.width fill, alignLeft ]
|
||||
[ paragraph [ F.regular ]
|
||||
|
@ -84,11 +92,21 @@ makeDodge dodgeEntry index =
|
|||
]
|
||||
]
|
||||
in
|
||||
column (paragraphAlignLeft ++ [ spacing 3, width fill ])
|
||||
column
|
||||
(paragraphAlignLeft
|
||||
++ [ spacing 3
|
||||
, width fill
|
||||
]
|
||||
)
|
||||
[ row
|
||||
(paragraphFormat
|
||||
++ [ F.size 18
|
||||
, paddingEach { top = 0, bottom = 0, left = 15, right = 15 }
|
||||
, paddingEach
|
||||
{ top = 0
|
||||
, bottom = 0
|
||||
, left = 15
|
||||
, right = 15
|
||||
}
|
||||
, E.width fill
|
||||
]
|
||||
)
|
||||
|
@ -213,8 +231,11 @@ cuckMaker cuck =
|
|||
, E.height <| px 115
|
||||
, alignTop
|
||||
, alignRight
|
||||
|
||||
-- , explain Debug.todo
|
||||
]
|
||||
[ column
|
||||
[ D.rounded 100
|
||||
, D.width 5
|
||||
, D.color colourTheme.cardBackground
|
||||
]
|
||||
[ E.image
|
||||
[ alignRight
|
||||
|
@ -227,17 +248,7 @@ cuckMaker cuck =
|
|||
{ src = "cucks/" ++ cuck.cuckImage ++ "/" ++ cuck.cuckImage ++ ".png"
|
||||
, description = cuck.cuckName
|
||||
}
|
||||
-- , E.image
|
||||
-- [ D.rounded 100
|
||||
-- , clip
|
||||
-- , moveUp 107
|
||||
-- , moveRight 7
|
||||
-- , E.width <| px 125
|
||||
-- , E.height <| px 125
|
||||
-- ]
|
||||
-- { src = "cucks/clownborder.png"
|
||||
-- , description = cuck.cuckName
|
||||
-- }
|
||||
]
|
||||
]
|
||||
, column
|
||||
[ E.width <| px 600 ]
|
||||
|
|
29
frontend/src/Interviews/Episodes/FitAndFurious.elm
Normal file
|
@ -0,0 +1,29 @@
|
|||
module Interviews.Episodes.FitAndFurious exposing (..)
|
||||
|
||||
import Interviews.Types exposing (..)
|
||||
|
||||
|
||||
fitAndFurious : Interview
|
||||
fitAndFurious =
|
||||
let
|
||||
name : String
|
||||
name =
|
||||
"Fit and Furious"
|
||||
in
|
||||
{ interviewName = name
|
||||
, interviewImage = formatInterviewName name
|
||||
, interviewSocial = "https://x.com/FitAndFuriousND"
|
||||
, interviewAppearances =
|
||||
[ { appearanceTitle = "Seed Oil Schooling!"
|
||||
, appearanceEpisode = "51"
|
||||
, appearanceLink = "https://www.youtube.com/watch?v=7I1IJSZIGm0"
|
||||
, appearanceExperience = 7
|
||||
, appearanceSubjects =
|
||||
[ { subject = "The story behind the Nutri-Dex." }
|
||||
, { subject = "Seed oil consumption and health." }
|
||||
, { subject = "Natural diets versus artificial diets." }
|
||||
, { subject = "Ethical veganism and Nick's diet." }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
42
frontend/src/Interviews/Episodes/FoolproofMastery.elm
Normal file
|
@ -0,0 +1,42 @@
|
|||
module Interviews.Episodes.FoolproofMastery exposing (..)
|
||||
|
||||
import Interviews.Types exposing (..)
|
||||
|
||||
|
||||
foolproofMastery : Interview
|
||||
foolproofMastery =
|
||||
let
|
||||
name : String
|
||||
name =
|
||||
"Foolproof Mastery"
|
||||
in
|
||||
{ interviewName = name
|
||||
, interviewImage = formatInterviewName name
|
||||
, interviewSocial = "https://x.com/FoolproofMaster"
|
||||
, interviewAppearances =
|
||||
[ { appearanceTitle = "Seed Oils & Statistics"
|
||||
, appearanceEpisode = "14"
|
||||
, appearanceLink = "https://www.youtube.com/watch?v=3w0wvckA1Hw"
|
||||
, appearanceExperience = 10
|
||||
, appearanceSubjects =
|
||||
[ { subject = "Vegetable oils & health outcomes." }
|
||||
, { subject = "Lipid peroxidation." }
|
||||
, { subject = "Lag time to LDL oxidation." }
|
||||
, { subject = "Statistical analysis." }
|
||||
, { subject = "Study design" }
|
||||
]
|
||||
}
|
||||
, { appearanceTitle = "Bizarre Nutrition Claims"
|
||||
, appearanceEpisode = "15"
|
||||
, appearanceLink = "https://www.youtube.com/watch?v=9k7COJgwCo4"
|
||||
, appearanceExperience = 10
|
||||
, appearanceSubjects =
|
||||
[ { subject = "Meat eating in Hong Kong." }
|
||||
, { subject = "Different eating patterns." }
|
||||
, { subject = "Glycine methionine ratio." }
|
||||
, { subject = "Oysters as a vegan food." }
|
||||
, { subject = "Nick's supplements." }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
31
frontend/src/Interviews/Episodes/KetogeeksPodcast.elm
Normal file
|
@ -0,0 +1,31 @@
|
|||
module Interviews.Episodes.KetogeeksPodcast exposing (..)
|
||||
|
||||
import Interviews.Types exposing (..)
|
||||
|
||||
|
||||
ketoGeeksPodcast : Interview
|
||||
ketoGeeksPodcast =
|
||||
let
|
||||
name : String
|
||||
name =
|
||||
"Ketogeek's Podcast"
|
||||
in
|
||||
{ interviewName = name
|
||||
, interviewImage = formatInterviewName name
|
||||
, interviewSocial = "https://x.com/fmahmad88"
|
||||
, interviewAppearances =
|
||||
[ { appearanceTitle = "In Defense of Seed Oils and Polyunsaturated Fats"
|
||||
, appearanceEpisode = "78"
|
||||
, appearanceLink = "https://ketogeek.libsyn.com/in-defense-of-seed-oils-and-polyunsaturated-fats-nick-hiebert"
|
||||
, appearanceExperience = 10
|
||||
, appearanceSubjects =
|
||||
[ { subject = "How did you start getting into the seed oil debate?" }
|
||||
, { subject = "What are some common claims made against seed oils?" }
|
||||
, { subject = "Does PUFA cause chronic diseases like CVD and cancer?" }
|
||||
, { subject = "Critique of the ancestral approach towards food and nutrition." }
|
||||
, { subject = "Why and when epidemiology can be good evidence." }
|
||||
, { subject = "Resources people can read regarding PUFA and health." }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
32
frontend/src/Interviews/Episodes/LegendaryLifePodcast.elm
Normal file
|
@ -0,0 +1,32 @@
|
|||
module Interviews.Episodes.LegendaryLifePodcast exposing (..)
|
||||
|
||||
import Interviews.Types exposing (..)
|
||||
|
||||
|
||||
legendaryLifePodcast : Interview
|
||||
legendaryLifePodcast =
|
||||
let
|
||||
name : String
|
||||
name =
|
||||
"Legendary Life Podcast"
|
||||
in
|
||||
{ interviewName = name
|
||||
, interviewImage = formatInterviewName name
|
||||
, interviewSocial = "https://x.com/ted_ryce"
|
||||
, interviewAppearances =
|
||||
[ { appearanceTitle = "Common Food And Nutrition Myths Debunked"
|
||||
, appearanceEpisode = "391"
|
||||
, appearanceLink = "https://www.legendarylifepodcast.com/391-5-common-food-and-nutrition-myths-debunked-with-nick-hiebert/c"
|
||||
, appearanceExperience = 10
|
||||
, appearanceSubjects =
|
||||
[ { subject = "The importance of identifying quality evidence." }
|
||||
, { subject = "Salt doesn’t cost high blood pressure?" }
|
||||
, { subject = "Foods that are high in potassium." }
|
||||
, { subject = "Why eating processed foods might make you fat." }
|
||||
, { subject = "Western Diet Culture Mentality." }
|
||||
, { subject = "Are there good foods and bad foods." }
|
||||
, { subject = "Nutrient Density: Guide and Tools." }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
31
frontend/src/Interviews/Episodes/MarkBellsPowerProject.elm
Normal file
|
@ -0,0 +1,31 @@
|
|||
module Interviews.Episodes.MarkBellsPowerProject exposing (..)
|
||||
|
||||
import Interviews.Types exposing (..)
|
||||
|
||||
|
||||
markBellsPowerProject : Interview
|
||||
markBellsPowerProject =
|
||||
let
|
||||
name : String
|
||||
name =
|
||||
"Mark Bell's Power Project"
|
||||
in
|
||||
{ interviewName = name
|
||||
, interviewImage = formatInterviewName name
|
||||
, interviewSocial = "https://x.com/MarkSmellyBell"
|
||||
, interviewAppearances =
|
||||
[ { appearanceTitle = "Seed Oils Aren’t as Bad as You May Think"
|
||||
, appearanceEpisode = "670"
|
||||
, appearanceLink = "https://www.youtube.com/watch?v=omzCi2CGoxo"
|
||||
, appearanceExperience = 1
|
||||
, appearanceSubjects =
|
||||
[ { subject = "Quick background on seed oils." }
|
||||
, { subject = "How does red meat increase disease risk?" }
|
||||
, { subject = "Exact health benefits of vegetable oils." }
|
||||
, { subject = "Tucker Goodrich & Alan Flanagan debate review." }
|
||||
, { subject = "Should you remove seed oils all together at once?" }
|
||||
, { subject = "Maybe vegetable oils aren’t that important?" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
43
frontend/src/Interviews/Episodes/MuscleMemoirsPodcast.elm
Normal file
|
@ -0,0 +1,43 @@
|
|||
module Interviews.Episodes.MuscleMemoirsPodcast exposing (..)
|
||||
|
||||
import Interviews.Types exposing (..)
|
||||
|
||||
|
||||
muscleMemoirsPodcast : Interview
|
||||
muscleMemoirsPodcast =
|
||||
let
|
||||
name : String
|
||||
name =
|
||||
"Muscle Memoirs Podcast"
|
||||
in
|
||||
{ interviewName = name
|
||||
, interviewImage = formatInterviewName name
|
||||
, interviewSocial = "https://x.com/MikeMurrayRD"
|
||||
, interviewAppearances =
|
||||
[ { appearanceTitle = "The Nutri-Dex, Misconceptions, and Optimizing Body Composition"
|
||||
, appearanceEpisode = "11"
|
||||
, appearanceLink = "https://www.youtube.com/watch?v=SF1BBOA5FAQ"
|
||||
, appearanceExperience = 10
|
||||
, appearanceSubjects =
|
||||
[ { subject = "The story behind the Nutri-Dex." }
|
||||
, { subject = "Misconceptions about nutrient density." }
|
||||
, { subject = "Using the cheat sheet to optimize body composition." }
|
||||
, { subject = "Top foods that are beneficial for bodybuilding." }
|
||||
, { subject = "How are the most satiating foods determined?" }
|
||||
, { subject = "Nick gives some of his tops foods" }
|
||||
]
|
||||
}
|
||||
, { appearanceTitle = "Seed Oils, Saturated Fat, and Cardiovascular Disease"
|
||||
, appearanceEpisode = "82"
|
||||
, appearanceLink = "https://www.youtube.com/watch?v=WfApzH4Dj3M"
|
||||
, appearanceExperience = 10
|
||||
, appearanceSubjects =
|
||||
[ { subject = "Mechanistic arguments against seed oils." }
|
||||
, { subject = "Linoleic acid consumption and heart disease." }
|
||||
, { subject = "Are hunter-gatherer diets optimal for modern humans?" }
|
||||
, { subject = "Saturated fat and blood lipids." }
|
||||
, { subject = "Meta-analysis in nutrition." }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
32
frontend/src/Interviews/Episodes/SigmaNutritionRadio.elm
Normal file
|
@ -0,0 +1,32 @@
|
|||
module Interviews.Episodes.SigmaNutritionRadio exposing (..)
|
||||
|
||||
import Interviews.Types exposing (..)
|
||||
|
||||
|
||||
sigmaNutritionRadio : Interview
|
||||
sigmaNutritionRadio =
|
||||
let
|
||||
name : String
|
||||
name =
|
||||
"Sigma Nutrition Radio"
|
||||
in
|
||||
{ interviewName = name
|
||||
, interviewImage = formatInterviewName name
|
||||
, interviewSocial = "https://x.com/NutritionDanny"
|
||||
, interviewAppearances =
|
||||
[ { appearanceTitle = "Micronutrients, Anti-nutrients, and Non-essential Nutrients"
|
||||
, appearanceEpisode = "360"
|
||||
, appearanceLink = "https://sigmanutrition.com/episode360/"
|
||||
, appearanceExperience = 1
|
||||
, appearanceSubjects =
|
||||
[ { subject = "How best to measure nutrient density." }
|
||||
, { subject = "The downsides of maximizing nutrient density." }
|
||||
, { subject = "Anti-nutrients: how relevant are they?" }
|
||||
, { subject = "Understanding the effect of phytate, oxalate, etc." }
|
||||
, { subject = "Hard to get nutrients in typical diets." }
|
||||
, { subject = "Synergistic and moderating effects of nutrients." }
|
||||
, { subject = "Non-essential nutrients & importance for health." }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
217
frontend/src/Interviews/Helpers.elm
Normal file
|
@ -0,0 +1,217 @@
|
|||
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))
|
||||
]
|
||||
]
|
||||
]
|
44
frontend/src/Interviews/Types.elm
Normal file
|
@ -0,0 +1,44 @@
|
|||
module Interviews.Types exposing (..)
|
||||
|
||||
|
||||
type alias Interview =
|
||||
{ interviewName : String
|
||||
, interviewImage : String
|
||||
, interviewSocial : String
|
||||
, interviewAppearances : List Appearance
|
||||
}
|
||||
|
||||
|
||||
type alias Appearance =
|
||||
{ appearanceEpisode : String
|
||||
, appearanceLink : String
|
||||
, appearanceTitle : String
|
||||
, appearanceExperience : Int
|
||||
, appearanceSubjects : List Subjects
|
||||
}
|
||||
|
||||
|
||||
type alias Subjects =
|
||||
{ subject : String }
|
||||
|
||||
|
||||
type alias FormattedInterviewName =
|
||||
String
|
||||
|
||||
|
||||
type alias FormattedInterviewSocial =
|
||||
String
|
||||
|
||||
|
||||
formatInterviewName : String -> FormattedInterviewName
|
||||
formatInterviewName name =
|
||||
name
|
||||
|> String.toLower
|
||||
|> String.replace " " ""
|
||||
|> String.replace "'" ""
|
||||
|
||||
|
||||
formatInterviewSocial : String -> FormattedInterviewSocial
|
||||
formatInterviewSocial name =
|
||||
name
|
||||
|> String.replace "https://x.com/" "@"
|
|
@ -155,7 +155,8 @@ view { toContentMsg, model, content } =
|
|||
, hyperbolgButton
|
||||
, argumentsButton
|
||||
, cucklistButton
|
||||
, communityButton
|
||||
|
||||
-- , communityButton
|
||||
, nutridexButton
|
||||
, donateButton
|
||||
, interviewButton
|
||||
|
|
114
frontend/src/Pages/Interviews.elm
Normal file
|
@ -0,0 +1,114 @@
|
|||
module Pages.Interviews exposing (Model, Msg, page)
|
||||
|
||||
import Config.Colour as T exposing (..)
|
||||
import Config.Format as O exposing (..)
|
||||
import Config.Identity as I exposing (..)
|
||||
import Effect exposing (Effect)
|
||||
import Element exposing (..)
|
||||
import Element.Border as D
|
||||
import Element.Font as F
|
||||
import Html
|
||||
import Html.Attributes as H exposing (style)
|
||||
import Interviews.Episodes.FitAndFurious exposing (fitAndFurious)
|
||||
import Interviews.Episodes.FoolproofMastery exposing (foolproofMastery)
|
||||
import Interviews.Episodes.KetogeeksPodcast exposing (ketoGeeksPodcast)
|
||||
import Interviews.Episodes.LegendaryLifePodcast exposing (legendaryLifePodcast)
|
||||
import Interviews.Episodes.MarkBellsPowerProject exposing (markBellsPowerProject)
|
||||
import Interviews.Episodes.MuscleMemoirsPodcast exposing (muscleMemoirsPodcast)
|
||||
import Interviews.Episodes.SigmaNutritionRadio exposing (sigmaNutritionRadio)
|
||||
import Interviews.Helpers exposing (..)
|
||||
import Layouts
|
||||
import Page exposing (Page)
|
||||
import Route exposing (Route)
|
||||
import Shared
|
||||
import View exposing (View)
|
||||
|
||||
|
||||
page : Shared.Model -> Route () -> Page Model Msg
|
||||
page shared route =
|
||||
Page.new
|
||||
{ init = init
|
||||
, update = update
|
||||
, subscriptions = subscriptions
|
||||
, view = view
|
||||
}
|
||||
|> Page.withLayout toLayout
|
||||
|
||||
|
||||
toLayout : Model -> Layouts.Layout Msg
|
||||
toLayout model =
|
||||
Layouts.Navbar {}
|
||||
|
||||
|
||||
|
||||
-- INIT
|
||||
|
||||
|
||||
type alias Model =
|
||||
{}
|
||||
|
||||
|
||||
init : () -> ( Model, Effect Msg )
|
||||
init () =
|
||||
( {}
|
||||
, Effect.none
|
||||
)
|
||||
|
||||
|
||||
|
||||
-- UPDATE
|
||||
|
||||
|
||||
type Msg
|
||||
= NoOp
|
||||
|
||||
|
||||
update : Msg -> Model -> ( Model, Effect Msg )
|
||||
update msg model =
|
||||
case msg of
|
||||
NoOp ->
|
||||
( model
|
||||
, Effect.none
|
||||
)
|
||||
|
||||
|
||||
|
||||
-- SUBSCRIPTIONS
|
||||
|
||||
|
||||
subscriptions : Model -> Sub Msg
|
||||
subscriptions model =
|
||||
Sub.none
|
||||
|
||||
|
||||
|
||||
-- VIEW
|
||||
|
||||
|
||||
view : Model -> View Msg
|
||||
view model =
|
||||
{ title = dodgersName
|
||||
, attributes = []
|
||||
, element = interviewContainer
|
||||
}
|
||||
|
||||
|
||||
interviewContainer : Element msg
|
||||
interviewContainer =
|
||||
topLevelContainer interviewList
|
||||
|
||||
|
||||
interviewList : Element msg
|
||||
interviewList =
|
||||
column
|
||||
pageList
|
||||
<|
|
||||
List.map interviewMaker
|
||||
[ sigmaNutritionRadio
|
||||
, markBellsPowerProject
|
||||
, foolproofMastery
|
||||
, ketoGeeksPodcast
|
||||
, legendaryLifePodcast
|
||||
, muscleMemoirsPodcast
|
||||
, fitAndFurious
|
||||
]
|
BIN
frontend/static/interviews/fitandfurious.png
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
frontend/static/interviews/foolproofmastery.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
frontend/static/interviews/ketogeekspodcast.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
frontend/static/interviews/legendarylifepodcast.png
Normal file
After Width: | Height: | Size: 269 KiB |
BIN
frontend/static/interviews/markbellspowerproject.png
Normal file
After Width: | Height: | Size: 122 KiB |
BIN
frontend/static/interviews/musclememoirspodcast.png
Normal file
After Width: | Height: | Size: 318 KiB |
BIN
frontend/static/interviews/sigmanutritionradio.png
Normal file
After Width: | Height: | Size: 19 KiB |