feat: refactoring and tidying up

This commit is contained in:
Nick 2024-12-18 20:11:04 -06:00
parent 62be86f2f9
commit 2295c85fca
112 changed files with 862 additions and 1698 deletions

View file

@ -0,0 +1,145 @@
module Config.Helpers.Articles.Article exposing (..)
import Config.Data.Identity exposing (pageNames)
import Config.Helpers.Articles.Types exposing (References)
import Config.Helpers.CardFormat
exposing
( cardContentSpacing
, cardFormatter
, cardMaker
, cardSubTitleMaker
, cardTitleMaker
, desktopCardMaker
, desktopImageBoxSize
, desktopImageSize
, fieldSpacer
, mobileCardMaker
, mobileImageBoxSize
, mobileImageSize
, topLevelBox
)
import Config.Helpers.Format exposing (..)
import Config.Helpers.Headers.Header exposing (headerMaker)
import Config.Helpers.Headers.Types exposing (Header)
import Config.Helpers.Markdown exposing (..)
import Config.Helpers.Response
exposing
( pageList
, topLevelContainer
)
import Config.Helpers.StrengthBar
exposing
( barMaker
, barPadding
)
import Config.Helpers.ToolTip exposing (..)
import Config.Helpers.Viewport exposing (resetViewport)
import Config.Pages.Blog.Types exposing (BlogArticle)
import Config.Pages.Contact.Types exposing (..)
import Config.Pages.Interviews.Types exposing (..)
import Config.Pages.Products.Types exposing (..)
import Config.Style.Colour exposing (colourTheme)
import Config.Style.Transitions
exposing
( hoverFontDarkOrange
, transitionStyleFast
, transitionStyleSlow
)
import Effect exposing (Effect)
import Element as E exposing (..)
import Element.Background as B
import Element.Border as D
import Element.Font as F
import Html
import Html.Attributes as H exposing (style)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared exposing (..)
import View exposing (View)
articleMaker : BlogArticle -> Element msg
articleMaker article =
column
topLevelBox
[ cardMaker
[ cardTitleMaker (String.toUpper article.articleName)
, cardFormatter
[ cardContentSpacing
[ column
fieldSpacer
[ cardSubTitleMaker
[ articleImage article.articleImage
, renderDeviceMarkdown article.articleBody
, case article.hasReferences of
True ->
articleReferences article
False ->
none
]
]
]
]
]
]
articleReferences : BlogArticle -> Element msg
articleReferences article =
el
[ width fill
, height fill
]
<|
column [ width fill, F.size 15, spacing 10 ] <|
List.map2 (\x y -> makeReference x y)
article.articleReferences
(List.range 1 (List.length article.articleReferences))
makeReference : References -> Int -> Element msg
makeReference references index =
el
[ F.regular
, F.alignLeft
]
<|
paragraph []
[ newTabLink
[ F.bold
, F.color colourTheme.textLightOrange
, hoverFontDarkOrange
, transitionStyleFast
]
{ url = references.link, label = text (String.fromInt index ++ ". ") }
, text (references.author ++ ", ")
, text (references.title ++ ", ")
, text (references.journal ++ ", ")
, text references.year
]
extractFirstWords : String -> String
extractFirstWords text =
let
words =
text
|> String.split " "
|> List.filter (not << String.isEmpty)
truncatedWords =
List.take 80 words
wasTextTruncated =
List.length words > 80
result =
String.join " " truncatedWords
in
if wasTextTruncated then
result ++ "..."
else
result