Commit 3dde046d authored by Alexandre Delanoë's avatar Alexandre Delanoë

[Config] Mode configuration added.

parent f6fd6ec6
{- | Main Configuration of Gargantext Front-End
The main function to use for internal link in the Front-End
developpement is : toUrl.
* Example usage:
- for Mock config:
- toUrl Corpus 3 == "http://localhost:2015/corpus/3"
- (this mode supposes you have the mock haskell backend running)
- for Dev config:
- toUrl Corpus 3 == "http://localhost:8008/corpus/3"
- (this mode supposes you have the dev haskell backend running)
- for Prod config:
- toUrl Corpus 3 == "http://gargantext.org:8080/corpus/3"
- (this mode supposes you have a prod haskell backend running on the specified url)
-}
module Gargantext.Config where
import Prelude (class Eq, class Ord, class Show, compare, eq, show, (<>))
import Prelude ( class Eq, class Ord, class Show
, compare, eq, show, (<>), identity)
import Data.Map (Map)
import Data.Map as DM
-- import Data.Maybe (maybe)
import Data.Maybe (maybe)
import Data.Tuple (Tuple(..))
------------------------------------------------------------
-- | Versions wille used later after the release
-- data ApiVersion = V1
-- | Main options of the configuration
data Mode = Mock | Dev | Prod
config :: FrontEndConfig
config = mkConfig Mock
mkAdress :: Mode -> String
mkAdress Mock = "localhost"
mkAdress Dev = "localhost"
mkAdress Prod = "gargantext.org"
mkPort :: Mode -> Int
mkPort Mock = 2015
mkPort Dev = 8008
mkPort Prod = 8080
------------------------------------------------------------
urlConfig :: Map NodeType Url
urlConfig = DM.fromFoldable [ Tuple UserPage "user"
, easy Corpus
, easy Document
, easy Annuaire
, easy Individu
]
where
easy :: NodeType -> Tuple NodeType Url
easy n = Tuple n (show n)
------------------------------------------------------------
type FrontEndConfig = { proto :: String
, port :: Int
, address :: String
, urls :: Map NodeType Url
}
config :: FrontEndConfig
config = { proto : "http://"
, port : 2015
, address : "localhost"
, urls : urlConfig
}
-- | Basic starting example
mkConfig :: Mode -> FrontEndConfig
mkConfig mode = { proto : "http://"
, address : mkAdress mode
, port : mkPort mode
, urls : urlConfig
}
------------------------------------------------------------
------------------------------------------------------------
-- | Main function to use in the Front-End developpement
-- for more complex urls, use urlConfig and smart constructors
toUrl :: NodeType -> Id -> Url
toUrl nt i = config.proto <> config.address <> ":" <> show config.port <> "/" <> show nt <> "/" <> show i
--where
--path = maybe "error" (DM.lookup nt config.urls)
toUrl nt i = config.proto <> config.address <> ":" <> show config.port <> "/" <> path
where
path = subPath <> "/" <> show i
subPath = maybe "error" identity (DM.lookup nt config.urls)
------------------------------------------------------------
type Url = String
type Id = Int
------------------------------------------------------------
data NodeType = UserPage | Corpus | Document | Annuaire | Individu | Project
------------------------------------------------------------
instance showNodeType :: Show NodeType where
show UserPage = "userPage"
show Corpus = "corpus"
......@@ -48,15 +98,4 @@ instance ordNodeType :: Ord NodeType where
instance eqNodeType :: Eq NodeType where
eq n1 n2 = eq (show n1) (show n2)
------------------------------------------------------------
trivial :: NodeType -> Tuple NodeType Url
trivial n = Tuple n (show n)
urlConfig :: Map NodeType Url
urlConfig = DM.fromFoldable [ Tuple UserPage "user"
, trivial Corpus
, trivial Document
, trivial Annuaire
, trivial Individu
]
------------------------------------------------------------
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment