website/frontend/src/Debate/Helpers.elm

141 lines
6.5 KiB
Elm
Raw Normal View History

2024-11-15 23:28:32 -06:00
module Debate.Helpers exposing (..)
import Config.Colour as T exposing (..)
import Config.Format as O exposing (..)
import Debate.Types exposing (..)
import Effect exposing (Effect)
import Element exposing (..)
import Element.Border as D exposing (..)
import Element.Font as F
import Html
import Html.Attributes as H exposing (style, title, wrap)
import Layouts
import Page exposing (Page)
import Route exposing (Route)
import Shared
import View exposing (View)
argumentMaker : Argument -> Element msg
2024-11-16 00:26:41 -06:00
argumentMaker argument =
2024-11-15 23:28:32 -06:00
let
argRows : List (Element msg)
argRows =
let
argumentFormatting =
[ centerX, F.center, spacing 3 ]
in
List.indexedMap
(\index argumentEntry ->
column (paragraphFormat ++ [ spacing 3, paddingEach { top = 30, right = 0, bottom = 0, left = 0 } ])
(List.indexedMap
(\premiseIndex premiseWithNotation ->
column argumentFormatting
[ paragraph paragraphHightlightedBoldText
[ text ("P" ++ String.fromInt (premiseIndex + 1) ++ ") ")
, text premiseWithNotation.premise
|> el [ F.color colourTheme.nonHighlightedText, F.regular ]
]
, paragraph argumentFormatting
[ text premiseWithNotation.notation
|> el [ F.color colourTheme.highlightText, F.bold ]
]
]
)
argumentEntry.premises
++ [ column argumentFormatting
[ paragraph paragraphHightlightedBoldText
[ text ("C" ++ String.fromInt (index + 1) ++ ") ")
, text argumentEntry.conclusion
|> el [ F.color colourTheme.nonHighlightedText, F.regular ]
]
, paragraph argumentFormatting
[ text argumentEntry.conclusionNotation
|> el [ F.color colourTheme.highlightText, F.bold ]
]
]
]
)
)
2024-11-16 00:26:41 -06:00
argument.argumentFormalization
2024-11-15 23:28:32 -06:00
in
column
[ paragraphWidth, alignLeft, spacing 8, paddingEach { top = 0, right = 0, bottom = 60, left = 0 } ]
[ paragraph (paragraphBoldFormat ++ [ F.size 20 ])
2024-11-16 16:35:08 -06:00
[ newTabLink []
{ url = argument.proofLink
, label = transitionNonHighlightedLinkHover <| text (argument.argumentTitle)
}
2024-11-15 23:28:32 -06:00
]
, paragraph (paragraphBoldFormat ++ [ F.size 18 ])
[ text "Proposition: " |> el [ F.color colourTheme.highlightText ]
2024-11-16 00:26:41 -06:00
, text argument.propositionTitle |> el [ F.color colourTheme.nonHighlightedText, F.regular ]
2024-11-15 23:28:32 -06:00
]
, paragraph (paragraphBoldFormat ++ [ F.size 18 ])
[ text "Summary: " |> el [ F.color colourTheme.highlightText ]
2024-11-16 00:26:41 -06:00
, text argument.propositionSummary |> el [ F.color colourTheme.nonHighlightedText, F.regular ]
2024-11-15 23:28:32 -06:00
]
, wrappedRow (paragraphBoldFormat ++ [ alignLeft ])
[ Element.table
[ spacing 0
, D.rounded 10
, D.width 1
, D.color colourTheme.nonHighlightedDarkText
, clip
]
2024-11-16 00:26:41 -06:00
{ data = argument.definitionTable
2024-11-15 23:28:32 -06:00
, columns =
[ { header =
el
[ F.bold
, D.widthEach { bottom = 1, top = 1, left = 1, right = 1 }
, D.color colourTheme.nonHighlightedDarkText
, padding 8
]
(text "Definiendum" |> el [ F.color colourTheme.highlightText ])
, width = fill |> maximum 50
, view =
\definition ->
row
[ F.color colourTheme.highlightText
, F.bold
, D.widthEach { bottom = 1, top = 0, left = 1, right = 1 }
, D.color colourTheme.nonHighlightedDarkText
, padding 8
, Element.height fill
]
2024-11-16 00:26:41 -06:00
[ row [ centerX ]
[ paragraph [] [ text definition.definiendum ]
]
2024-11-15 23:28:32 -06:00
]
}
, { header =
el
[ F.bold
, D.widthEach { bottom = 1, top = 1, left = 0, right = 1 }
, D.color colourTheme.nonHighlightedDarkText
, padding 8
]
(text "Definiens" |> el [ F.color colourTheme.highlightText ])
, width = fill
, view =
\definition ->
paragraph
[ F.color colourTheme.nonHighlightedText
, F.regular
, D.widthEach { bottom = 1, top = 0, left = 0, right = 1 }
, D.color colourTheme.nonHighlightedDarkText
, padding 8
, Element.height fill
]
2024-11-16 00:26:41 -06:00
[ row []
[ paragraph [] [ text definition.definiens ]
]
]
2024-11-15 23:28:32 -06:00
}
]
}
]
, column [ centerX ] argRows
]