import { getAllProjectsFromOrg } from '../lib/project'; import getConfig from 'next/config'; import { Hero } from '../components/Hero'; import { Container } from '../components/Container'; import { FiscalDataPackage } from '../lib/datapackage.interface'; import { loadDataPackage } from '../lib/loader'; import DatasetsSearch from '../components/DatasetsSearch'; import Layout from '../components/_shared/Layout'; export async function getStaticProps() { // TODO: support other orgs // const orgsListPath = path.join(process.cwd(), '/orgs.json'); // const orgs = await fs.readFile(orgsListPath, 'utf8'); const github_pat = getConfig().serverRuntimeConfig.github_pat; const allProjects = await getAllProjectsFromOrg( 'os-data', 'main', github_pat ); const projects = allProjects.results.map( (item: { datapackage: FiscalDataPackage & { repo: string }; repo: any }) => loadDataPackage(item.datapackage, item.repo) ); const availableCountries = projects .map((item) => item.countryCode) .filter((v) => v) // Filters false values .filter((v, i, a) => a.indexOf(v) === i) // Remove duplicates // TODO: title should be the full name .map((code) => ({ code, title: code })); const minPeriod = projects.map(project => project.fiscalPeriod ? project.fiscalPeriod.start : null).filter(item => item !== null).sort()[0] const maxPeriod = projects.map(project => project.fiscalPeriod ? project.fiscalPeriod.end : null).filter(item => item !== null).sort().slice(-1)[0] return { props: { projects: JSON.stringify(projects), availableCountries, minPeriod, maxPeriod }, }; } export function Home({ projects, availableCountries, minPeriod, maxPeriod }) { projects = JSON.parse(projects); return ( partialSum + a.files.length, 0 )} />

Datasets

Find spending data about countries all around the world.

); } export default Home;