@@ -5,8 +5,10 @@ import Code.Definition.Reference exposing (Reference)
55import Code.FullyQualifiedName as FQN
66import Code.Hash as Hash
77import Code.Perspective as Perspective
8+ import Code.ProjectDependency as ProjectDependency
89import Code.Syntax as Syntax
910import Code.Syntax.SyntaxConfig as SyntaxConfig
11+ import Code.Version as Version
1012import Html exposing (Html , br , code , div , h2 , label , p , pre , span , strong , text )
1113import Html.Attributes exposing (class , id , style )
1214import Http
@@ -300,22 +302,28 @@ viewChangeIcon item =
300302 )
301303
302304
303- viewChangeBadge : Int -> ChangeLine -> Html Msg
305+ viewChangeBadge : Int -> ChangeLine -> Html msg
304306viewChangeBadge maxBadgeLength changeLine =
305307 let
306308 type_ =
307309 ChangeLine . toString changeLine
310+ in
311+ viewChangeBadge_ maxBadgeLength ( changeIcon changeLine) type_
312+
308313
314+ viewChangeBadge_ : Int -> Icon msg -> String -> Html msg
315+ viewChangeBadge_ maxBadgeLength icon label_ =
316+ let
309317 width =
310318 String . fromInt maxBadgeLength
311319 in
312320 span [ class " change-badge_wrapper" , style " width" ( width ++ " ch" ) ]
313321 [ span
314322 [ class " change-badge"
315- , class ( String . toLower type_ )
323+ , class ( String . toLower label_ )
316324 ]
317- [ Icon . view ( changeIcon changeLine )
318- , label [] [ text type_ ]
325+ [ Icon . view icon
326+ , label [] [ text label_ ]
319327 ]
320328 ]
321329
@@ -549,15 +557,9 @@ viewChangedDefinitionCard projectRef toggledChangeLines branchDiff maxBadgeLengt
549557 |> Card . view
550558
551559
552- viewChangedDefinitionsCards : ProjectRef -> ToggledChangeLines -> BranchDiff -> List (Html Msg )
553- viewChangedDefinitionsCards projectRef toggledChangeLines branchDiff =
560+ viewChangedDefinitionsCards : ProjectRef -> ToggledChangeLines -> Int -> BranchDiff -> List (Html Msg )
561+ viewChangedDefinitionsCards projectRef toggledChangeLines maxBadgeLength branchDiff =
554562 let
555- maxBadgeLength =
556- branchDiff. lines
557- |> List . map ( ChangeLine . toString >> String . length)
558- |> List . maximum
559- |> Maybe . withDefault 0
560-
561563 view_ =
562564 viewChangedDefinitionCard
563565 projectRef
@@ -665,64 +667,90 @@ viewChangedDefinitionsCards projectRef toggledChangeLines branchDiff =
665667 go branchDiff. lines
666668
667669
668- viewLibDep : LibDep -> Html msg
669- viewLibDep dep =
670+ viewLibDep : Int -> LibDep -> Html msg
671+ viewLibDep maxBadgeLength libDep =
670672 let
671673 viewCard content =
672674 Card . card
673- [ div [ class " definition-change-header" ] [ div [ class " change-line" ] content ] ]
675+ [ div [ class " definition-change-header" ]
676+ [ div [ class " change-line" ] content ]
677+ ]
674678 |> Card . withClassName " definition-change lib-dep"
675679 |> Card . asContained
676680 |> Card . view
677681
678- changeIcon_ type_ icon =
679- Tooltip . text type_
680- |> Tooltip . tooltip
681- |> Tooltip . withArrow Tooltip . Start
682- |> Tooltip . view
683- ( span
684- [ class " change-icon"
685- , class ( String . toLower type_)
686- ]
687- [ Icon . view icon ]
688- )
682+ badge icon type_ =
683+ viewChangeBadge_ maxBadgeLength icon type_
689684
690- viewTitle name =
691- let
692- fqn =
693- FQN . fromList [ " lib" , name ]
694- in
695- div [ class " change-title" ] [ FQN . view fqn ]
685+ viewDepInfoBadge dep =
686+ div [ class " dep-info change-info" ]
687+ [ div [ class " change-title" ]
688+ [ ProjectDependency . viewLibraryBadge_ { withVersion = True , withTooltip = False } dep. dep
689+ , span [ class " lib-namespace-info" ] [ text " (" , FQN . view dep. name, text " )" ]
690+ ]
691+ ]
696692 in
697- case dep of
698- LibDep . Added { name } ->
693+ case libDep of
694+ LibDep . Added dep ->
699695 viewCard
700- [ changeIcon_ " Added " Icon . largePlus
701- , div [ class " def-icon-anchor " ]
702- [ Tooltip . text " Lib dependency "
703- |> Tooltip . tooltip
704- |> Tooltip . withArrow Tooltip . Start
705- |> Tooltip . view ( span [ class " def-icon " ] [ Icon . view Icon . book ] )
706- ]
707- , div [ class " change-info " ] [ viewTitle name ]
696+ [ badge Icon . largePlus " Added "
697+ , viewDepInfoBadge dep
698+ ]
699+
700+ LibDep . Removed dep ->
701+ viewCard
702+ [ badge Icon . dash " Removed "
703+ , viewDepInfoBadge dep
708704 ]
709705
710- LibDep . Removed { name } ->
706+ LibDep . Updated { before, after } ->
707+ let
708+ toFrom =
709+ case ( before. dep. version, after. dep. version ) of
710+ ( Just beforeV, Just afterV ) ->
711+ [ ProjectDependency . viewLibraryBadge_
712+ { withVersion = False
713+ , withTooltip = False
714+ }
715+ before. dep
716+ , Version . view beforeV
717+ , Icon . view Icon . arrowRight
718+ , Version . view afterV
719+ , span [ class " lib-namespace-info" ]
720+ [ text " ("
721+ , FQN . view before. name
722+ , Icon . view Icon . arrowRight
723+ , FQN . view after. name
724+ , text " )"
725+ ]
726+ ]
727+
728+ _ ->
729+ [ ProjectDependency . viewLibraryBadge before. dep
730+ , Icon . view Icon . arrowRight
731+ , ProjectDependency . viewLibraryBadge after. dep
732+ , span [ class " lib-namespace-info" ]
733+ [ text " ("
734+ , FQN . view before. name
735+ , Icon . view Icon . arrowRight
736+ , FQN . view after. name
737+ , text " )"
738+ ]
739+ ]
740+ in
711741 viewCard
712- [ changeIcon_ " Removed" Icon . dash
713- , div [ class " def-icon-anchor" ]
714- [ Tooltip . text " Lib dependency"
715- |> Tooltip . tooltip
716- |> Tooltip . withArrow Tooltip . Start
717- |> Tooltip . view ( span [ class " def-icon" ] [ Icon . view Icon . book ] )
742+ [ badge Icon . refreshSmallBold " Updated"
743+ , div [ class " dep-info change-info" ]
744+ [ div [ class " change-title" ] toFrom
718745 ]
719- , div [ class " change-info" ] [ viewTitle name ]
720746 ]
721747
722748
723- viewLibDeps : List LibDep -> List (Html msg )
724- viewLibDeps deps =
725- List . map viewLibDep deps
749+ viewLibDeps : Int -> List LibDep -> List (Html msg )
750+ viewLibDeps maxBadgeLength deps =
751+ deps
752+ |> LibDep . mergeUpdated
753+ |> List . map ( viewLibDep maxBadgeLength)
726754
727755
728756viewBranchDiff : ProjectRef -> ToggledChangeLines -> BranchDiff -> Html Msg
@@ -731,6 +759,12 @@ viewBranchDiff projectRef toggledChangeLines diff =
731759 summary =
732760 BranchDiff . summary diff
733761
762+ maxBadgeLength =
763+ diff. lines
764+ |> List . map ( ChangeLine . toString >> String . length)
765+ |> List . maximum
766+ |> Maybe . withDefault 0
767+
734768 -- There's no reason to show a tree with a single element...
735769 tree =
736770 if BranchDiff . size diff > 1 then
@@ -751,8 +785,8 @@ viewBranchDiff projectRef toggledChangeLines diff =
751785 , div [ class " branch-diff-content-cards" ]
752786 [ tree
753787 , div [ id " definition-changes" , class " definition-changes" ]
754- ( viewLibDeps diff. libDeps
755- ++ viewChangedDefinitionsCards projectRef toggledChangeLines diff
788+ ( viewLibDeps maxBadgeLength diff. libDeps
789+ ++ viewChangedDefinitionsCards projectRef toggledChangeLines maxBadgeLength diff
756790 )
757791 ]
758792 ]
0 commit comments