diff --git a/src/Gargantext/Components/GraphExplorer/Types.purs b/src/Gargantext/Components/GraphExplorer/Types.purs index abdc96d17a27b284e8223a2b5713f9bdef80b1b8..5f9b468d7283d610a2b37eaf9abbba9f59e176a9 100644 --- a/src/Gargantext/Components/GraphExplorer/Types.purs +++ b/src/Gargantext/Components/GraphExplorer/Types.purs @@ -36,6 +36,8 @@ cameraP = SProxy :: SProxy "camera" mCameraP = SProxy :: SProxy "mCamera" idP = SProxy :: SProxy "id" id_P = SProxy :: SProxy "id_" +typeP = SProxy :: SProxy "type" +type_P = SProxy :: SProxy "type_" derive instance Generic Node _ derive instance Newtype Node _ @@ -44,9 +46,17 @@ instance Ord Node where compare (Node n1) (Node n2) = compare n1.id_ n2.id_ instance JSON.ReadForeign Node where readImpl f = do inst <- JSON.readImpl f - pure $ Node $ Record.rename x_coordP xP $ Record.rename y_coordP yP inst + pure $ Node $ + Record.rename idP id_P $ + Record.rename typeP type_P $ + Record.rename x_coordP xP $ + Record.rename y_coordP yP inst instance JSON.WriteForeign Node where - writeImpl (Node nd) = JSON.writeImpl $ Record.rename xP x_coordP $ Record.rename yP y_coordP nd + writeImpl (Node nd) = JSON.writeImpl $ + Record.rename id_P idP $ + Record.rename type_P typeP $ + Record.rename xP x_coordP $ + Record.rename yP y_coordP nd newtype Cluster = Cluster { clustDefault :: Int } @@ -110,15 +120,16 @@ instance JSON.ReadForeign GraphData where readImpl f = do inst :: { nodes :: Array Node , edges :: Array Edge - , metadata :: Maybe MetaData - , corpusId :: Array CorpusId - , listId :: ListId } <- JSON.readImpl f - let side x = GraphSideCorpus { corpusId: x, corpusLabel: "Publications", listId : inst.listId} - let sides = side <$> inst.corpusId + , metadata :: MetaData } <- JSON.readImpl f + let (MetaData metadata) = inst.metadata + let side x = GraphSideCorpus { corpusId: x + , corpusLabel: "Publications" + , listId : metadata.list.listId } + let sides = side <$> metadata.corpusId pure $ GraphData { nodes: inst.nodes , edges: inst.edges , sides - , metaData: inst.metadata } + , metaData: Just inst.metadata } instance JSON.WriteForeign GraphData where writeImpl (GraphData gd) = JSON.writeImpl { nodes: gd.nodes , edges: gd.edges @@ -127,9 +138,9 @@ instance JSON.WriteForeign GraphData where newtype MetaData = MetaData { corpusId :: Array Int , legend :: Array Legend - , list :: { listId :: ListId - , version :: Version - } + , list :: { listId :: ListId + , version :: Version + } , metric :: String -- dummy value , startForceAtlas :: Boolean , title :: String @@ -188,8 +199,12 @@ derive instance Generic Legend _ derive instance Newtype Legend _ instance Eq Legend where eq (Legend l1) (Legend l2) = eq l1.id_ l2.id_ instance Ord Legend where compare (Legend l1) (Legend l2) = compare l1.id_ l2.id_ -derive newtype instance JSON.ReadForeign Legend -derive newtype instance JSON.WriteForeign Legend +instance JSON.ReadForeign Legend where + readImpl f = do + inst <- JSON.readImpl f + pure $ Legend $ Record.rename idP id_P inst +instance JSON.WriteForeign Legend where + writeImpl (Legend l) = JSON.writeImpl $ Record.rename id_P idP l getLegendData :: GraphData -> Array Legend diff --git a/src/Gargantext/Types.purs b/src/Gargantext/Types.purs index d582094380ce66e4f9ecb6441e198146ca3eca3b..37220500b654adf13fff314d2e23835b6e3a038c 100644 --- a/src/Gargantext/Types.purs +++ b/src/Gargantext/Types.purs @@ -1,7 +1,6 @@ module Gargantext.Types where import Data.Array as A -import Data.Either (Either(..)) import Data.Newtype (class Newtype) import Data.String as S import Data.Generic.Rep (class Generic) @@ -9,7 +8,7 @@ import Data.Eq.Generic (genericEq) import Data.Ord.Generic (genericCompare) import Data.Show.Generic (genericShow) import Data.Int (toNumber) -import Data.Maybe (Maybe(..), maybe, fromMaybe) +import Data.Maybe (Maybe(..), maybe) import Effect.Aff (Aff) import Foreign as F import Prim.Row (class Union) @@ -429,10 +428,10 @@ instance JSON.ReadForeign ApiVersion where readImpl f = do s <- JSON.readImpl f case s of - "v0" -> pure V0 + "v0" -> pure V0 "v1.0" -> pure V10 "v1.1" -> pure V11 - x -> F.fail $ F.ErrorAtProperty x $ F.ForeignError "unknown API value" + x -> F.fail $ F.ErrorAtProperty x $ F.ForeignError "unknown API value" instance JSON.WriteForeign ApiVersion where writeImpl v = F.unsafeToForeign $ JSON.writeImpl $ show v instance Show ApiVersion where @@ -633,8 +632,7 @@ newtype AsyncTask = derive instance Generic AsyncTask _ derive instance Newtype AsyncTask _ derive newtype instance JSON.ReadForeign AsyncTask -instance Eq AsyncTask where - eq = genericEq +instance Eq AsyncTask where eq = genericEq newtype AsyncTaskWithType = AsyncTaskWithType { task :: AsyncTask @@ -687,8 +685,7 @@ prettyNodeType nt = S.replace (S.Pattern "Node") (S.Replacement " ") data SidePanelState = InitialClosed | Opened | Closed derive instance Generic SidePanelState _ -instance Eq SidePanelState where - eq = genericEq +instance Eq SidePanelState where eq = genericEq toggleSidePanelState :: SidePanelState -> SidePanelState toggleSidePanelState InitialClosed = Opened