diff --git a/components/dataset/About.tsx b/components/dataset/About.tsx index 3d59ee8d..1cb63447 100644 --- a/components/dataset/About.tsx +++ b/components/dataset/About.tsx @@ -4,10 +4,12 @@ import { useQuery } from '@apollo/react-hooks'; import gql from 'graphql-tag'; export const GET_DATAPACKAGE_QUERY = gql` - query dataset($id: String!) { - dataset(id: $id) { + query dataset($id: String) { + dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { result { name + title + size metadata_created metadata_modified resources { diff --git a/components/dataset/Org.tsx b/components/dataset/Org.tsx index b8751dde..00b7fd9f 100644 --- a/components/dataset/Org.tsx +++ b/components/dataset/Org.tsx @@ -5,8 +5,8 @@ import { useQuery } from '@apollo/react-hooks'; import gql from 'graphql-tag'; export const GET_ORG_QUERY = gql` - query dataset($id: String!) { - dataset(id: $id) { + query dataset($id: String) { + dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { result { organization { name diff --git a/components/dataset/Resources.tsx b/components/dataset/Resources.tsx index 93a01e17..1105a47c 100644 --- a/components/dataset/Resources.tsx +++ b/components/dataset/Resources.tsx @@ -4,9 +4,9 @@ import { NetworkStatus } from 'apollo-client'; import { useQuery } from '@apollo/react-hooks'; import gql from 'graphql-tag'; -export const DEFAULT_DATASET_QUERY = gql` - query dataset($id: String!) { - dataset(id: $id) { +export const GET_DATAPACKAGE_QUERY = gql` + query dataset($id: String) { + dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { result { name resources { @@ -23,7 +23,7 @@ export const DEFAULT_DATASET_QUERY = gql` export default function Resources({ variables }) { const { loading, error, data, fetchMore, networkStatus } = useQuery( - DEFAULT_DATASET_QUERY, + GET_DATAPACKAGE_QUERY, { variables, // Setting this value to true will make the component rerender when diff --git a/lib/apolloClient.ts b/lib/apolloClient.ts index a8adcb34..c3cdecb6 100644 --- a/lib/apolloClient.ts +++ b/lib/apolloClient.ts @@ -28,6 +28,25 @@ const restLink = new RestLink({ } return data; }, + Response: ( + data: any, + outerType: string, + patchDeeper: RestLink.FunctionalTypePatcher + ): any => { + if (data.result != null) { + data.result.__typename = 'Package'; + if (data.result.organization != null) { + data.result.organization.__typename = 'Organization'; + } + + if (data.result.resources != null) { + data.result.resources = data.result.resources.map((item) => { + return { __typename: 'Resource', ...item }; + }); + } + } + return data; + }, }, }); diff --git a/mocks/index.js b/mocks/index.js index 91561364..8c4c15ff 100644 --- a/mocks/index.js +++ b/mocks/index.js @@ -28,6 +28,7 @@ const gdp = { }, metadata_created: '2019-03-07T11:56:19.696257', metadata_modified: '2019-03-07T12:03:58.817280', + size: '', }; const population = { diff --git a/pages/[org]/[dataset]/index.tsx b/pages/[org]/[dataset]/index.tsx index df597f27..5122fca8 100644 --- a/pages/[org]/[dataset]/index.tsx +++ b/pages/[org]/[dataset]/index.tsx @@ -6,16 +6,40 @@ import Head from 'next/head'; import Nav from '../../../components/home/Nav'; import About from '../../../components/dataset/About'; import Org from '../../../components/dataset/Org'; -import Resources, { - DEFAULT_DATASET_QUERY, -} from '../../../components/dataset/Resources'; +import Resources from '../../../components/dataset/Resources'; +import gql from 'graphql-tag'; + +const QUERY = gql` + query dataset($id: String) { + dataset(id: $id) @rest(type: "Response", path: "package_show?{args}") { + result { + name + title + size + metadata_created + metadata_modified + resources { + name + title + format + created + last_modified + } + organization { + name + title + image_url + } + } + } + } +`; function Dataset({ variables }) { - const { - data: { - dataset: { result }, - }, - } = useQuery(DEFAULT_DATASET_QUERY, { variables }); + const { data, loading } = useQuery(QUERY, { variables }); + + if (loading) return