1module Dashboard.Models exposing
2    ( DragState(..)
3    , DropState(..)
4    , Dropdown(..)
5    , FetchError(..)
6    , FooterModel
7    , Model
8    )
9
10import Concourse
11import Dashboard.Group.Models
12import Dict exposing (Dict)
13import FetchResult exposing (FetchResult)
14import Login.Login as Login
15import Message.Effects exposing (Effect(..))
16import Message.Message exposing (DropTarget)
17import Routes
18import Set exposing (Set)
19import Time
20
21
22type alias Model =
23    FooterModel
24        (Login.Model
25            { now : Maybe Time.Posix
26            , highDensity : Bool
27            , query : String
28            , pipelinesWithResourceErrors : Set ( String, String )
29            , jobs : FetchResult (Dict ( String, String, String ) Concourse.Job)
30            , pipelineLayers : Dict ( String, String ) (List (List Concourse.JobIdentifier))
31            , teams : FetchResult (List Concourse.Team)
32            , dragState : DragState
33            , dropState : DropState
34            , isJobsRequestFinished : Bool
35            , isTeamsRequestFinished : Bool
36            , isPipelinesRequestFinished : Bool
37            , isResourcesRequestFinished : Bool
38            , jobsError : Maybe FetchError
39            , teamsError : Maybe FetchError
40            , resourcesError : Maybe FetchError
41            , pipelinesError : Maybe FetchError
42            , viewportWidth : Float
43            , viewportHeight : Float
44            , scrollTop : Float
45            , pipelineJobs : Dict ( String, String ) (List Concourse.JobIdentifier)
46            , effectsToRetry : List Effect
47            }
48        )
49
50
51type FetchError
52    = Failed
53    | Disabled
54
55
56type DragState
57    = NotDragging
58    | Dragging Concourse.TeamName Concourse.PipelineName
59
60
61type DropState
62    = NotDropping
63    | Dropping DropTarget
64    | DroppingWhileApiRequestInFlight Concourse.TeamName
65
66
67type alias FooterModel r =
68    { r
69        | hideFooter : Bool
70        , hideFooterCounter : Int
71        , showHelp : Bool
72        , pipelines : Maybe (Dict String (List Dashboard.Group.Models.Pipeline))
73        , dropdown : Dropdown
74        , highDensity : Bool
75        , dashboardView : Routes.DashboardView
76    }
77
78
79type Dropdown
80    = Hidden
81    | Shown (Maybe Int)
82