From 50b54537d55c64a4778246537232bda8e3208e0f Mon Sep 17 00:00:00 2001 From: Henry Wilson Date: Fri, 9 Aug 2024 11:34:05 -0400 Subject: [PATCH 1/2] update query to use latest oso models --- .../grant-explorer/src/features/api/oso.ts | 18 +++++++++--------- .../src/features/round/OSO/ImpactStats.tsx | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/grant-explorer/src/features/api/oso.ts b/packages/grant-explorer/src/features/api/oso.ts index 48e405abd2..23a096afb4 100644 --- a/packages/grant-explorer/src/features/api/oso.ts +++ b/packages/grant-explorer/src/features/api/oso.ts @@ -13,14 +13,14 @@ const graphQLClient = new GraphQLClient(osoUrl, { let hasFetched = false; interface IOSOId { - artifacts_by_project: { + projects_v1: { project_id: Hex; }; } export interface IOSOStats { code_metrics_by_project: { - contributors: number; + contributor_count: number; first_commit_date: number; }; events_monthly_to_project: [ @@ -54,7 +54,7 @@ export interface IOSOStats { export function useOSO(projectGithub?: string) { const emptyReturn: IOSOStats = { code_metrics_by_project: { - contributors: 0, + contributor_count: 0, first_commit_date: 0, }, events_monthly_to_project: [ @@ -90,7 +90,7 @@ export function useOSO(projectGithub?: string) { if (osoApiKey === "") throw new Error("OpenSourceObserver API key not set."); const queryId = gql`{ - artifacts_by_project(where: {artifact_name: {_ilike: "%${projectRegistryGithub}/%"}} + projects_v1(where: {display_name: {_ilike: "%${projectRegistryGithub}/%"}} distinct_on: project_id ) { project_id @@ -101,22 +101,22 @@ export function useOSO(projectGithub?: string) { hasFetched = true; const idData: IOSOId = await graphQLClient.request(queryId); - if (!Array.isArray(idData.artifacts_by_project)) { + if (!Array.isArray(idData.projects_v1)) { setStats(emptyReturn); return; } const parsedId: IOSOId = { - artifacts_by_project: idData.artifacts_by_project[0], + projects_v1: idData.projects_v1[0], }; const queryStats = gql`{ - code_metrics_by_project(where: {project_id: {_eq: "${parsedId.artifacts_by_project.project_id}"}}) { - contributors + code_metrics_by_project_v1(where: {project_id: {_eq: "${parsedId.projects_v1.project_id}"}}) { + contributor_count first_commit_date } events_monthly_to_project( - where: {project_id: {_eq: "${parsedId.artifacts_by_project.project_id}"}, event_type: {_eq: "COMMIT_CODE"}} + where: {project_id: {_eq: "${parsedId.projects_v1.project_id}"}, event_type: {_eq: "COMMIT_CODE"}} limit: 6 order_by: {bucket_month: desc} ) { diff --git a/packages/grant-explorer/src/features/round/OSO/ImpactStats.tsx b/packages/grant-explorer/src/features/round/OSO/ImpactStats.tsx index ace1300fd8..3202e23d1f 100644 --- a/packages/grant-explorer/src/features/round/OSO/ImpactStats.tsx +++ b/packages/grant-explorer/src/features/round/OSO/ImpactStats.tsx @@ -8,7 +8,7 @@ import { formatTimeAgo } from "../../common/utils/utils"; export const StatList = ({ stats }: { stats: IOSOStats | null }) => { if (stats === null) return; return ( - stats.code_metrics_by_project.contributors > 0 ? ( + stats.code_metrics_by_project.contributor_count > 0 ? (

Impact stats

@@ -32,7 +32,7 @@ export const StatList = ({ stats }: { stats: IOSOStats | null }) => { > Unique code contributors From fe4e8ea774f432207ddf0257ef45c2e6bcea8d31 Mon Sep 17 00:00:00 2001 From: Henry W Date: Fri, 9 Aug 2024 12:16:14 -0400 Subject: [PATCH 2/2] fixes --- .../grant-explorer/src/features/api/oso.ts | 12 +-- .../src/features/round/OSO/ImpactStats.tsx | 78 ++++++++++--------- 2 files changed, 48 insertions(+), 42 deletions(-) diff --git a/packages/grant-explorer/src/features/api/oso.ts b/packages/grant-explorer/src/features/api/oso.ts index 23a096afb4..b11a961d7a 100644 --- a/packages/grant-explorer/src/features/api/oso.ts +++ b/packages/grant-explorer/src/features/api/oso.ts @@ -19,7 +19,7 @@ interface IOSOId { } export interface IOSOStats { - code_metrics_by_project: { + code_metrics_by_project_v1: { contributor_count: number; first_commit_date: number; }; @@ -53,7 +53,7 @@ export interface IOSOStats { export function useOSO(projectGithub?: string) { const emptyReturn: IOSOStats = { - code_metrics_by_project: { + code_metrics_by_project_v1: { contributor_count: 0, first_commit_date: 0, }, @@ -90,7 +90,7 @@ export function useOSO(projectGithub?: string) { if (osoApiKey === "") throw new Error("OpenSourceObserver API key not set."); const queryId = gql`{ - projects_v1(where: {display_name: {_ilike: "%${projectRegistryGithub}/%"}} + projects_v1(where: {display_name: {_ilike: "${projectRegistryGithub}"}} distinct_on: project_id ) { project_id @@ -128,20 +128,20 @@ export function useOSO(projectGithub?: string) { const items: IOSOStats = await graphQLClient.request(queryStats); - if (!Array.isArray(items.code_metrics_by_project)) { + if (!Array.isArray(items.code_metrics_by_project_v1)) { setStats(emptyReturn); return; } if (items.events_monthly_to_project.length === 6) { const parsedItems: IOSOStats = { - code_metrics_by_project: items.code_metrics_by_project[0], + code_metrics_by_project_v1: items.code_metrics_by_project_v1[0], events_monthly_to_project: items.events_monthly_to_project, }; setStats(parsedItems); } else { const parsedItems: IOSOStats = { - code_metrics_by_project: items.code_metrics_by_project[0], + code_metrics_by_project_v1: items.code_metrics_by_project_v1[0], events_monthly_to_project: emptyReturn.events_monthly_to_project, }; setStats(parsedItems); diff --git a/packages/grant-explorer/src/features/round/OSO/ImpactStats.tsx b/packages/grant-explorer/src/features/round/OSO/ImpactStats.tsx index 3202e23d1f..4bd8e20e6b 100644 --- a/packages/grant-explorer/src/features/round/OSO/ImpactStats.tsx +++ b/packages/grant-explorer/src/features/round/OSO/ImpactStats.tsx @@ -4,22 +4,22 @@ import { Flex, Link, Text } from "@chakra-ui/react"; import { Stat } from "../ViewProjectDetails"; import { formatTimeAgo } from "../../common/utils/utils"; - export const StatList = ({ stats }: { stats: IOSOStats | null }) => { if (stats === null) return; - return ( - stats.code_metrics_by_project.contributor_count > 0 ? ( - -

Impact stats

- -
0 ? ( + +

Impact stats

+ +
-
+
+ {" "} + Project age @@ -27,51 +27,57 @@ export const StatList = ({ stats }: { stats: IOSOStats | null }) => {
Unique code contributors
-
- + Velocity
- - Data provided by {" "} + + Data provided by{" "} - + opensource.observer - - ) : ( -
-
- ) + + ) : ( +
); }; -function projectVelocity(stats : IOSOStats) { - const recentCommits = stats.events_monthly_to_project[0].amount + stats.events_monthly_to_project[1].amount + stats.events_monthly_to_project[2].amount; - const olderCommits = stats.events_monthly_to_project[3].amount + stats.events_monthly_to_project[4].amount + stats.events_monthly_to_project[5].amount; +function projectVelocity(stats: IOSOStats) { + const recentCommits = + stats.events_monthly_to_project[0].amount + + stats.events_monthly_to_project[1].amount + + stats.events_monthly_to_project[2].amount; + const olderCommits = + stats.events_monthly_to_project[3].amount + + stats.events_monthly_to_project[4].amount + + stats.events_monthly_to_project[5].amount; - if (recentCommits === 0 && olderCommits === 0) return 'unknown'; - if (recentCommits >= (1.5 * olderCommits)) return 'increasing'; - if (recentCommits <= 0.5 * olderCommits) return 'decreasing'; - return 'steady'; -} \ No newline at end of file + if (recentCommits === 0 && olderCommits === 0) return "unknown"; + if (recentCommits >= 1.5 * olderCommits) return "increasing"; + if (recentCommits <= 0.5 * olderCommits) return "decreasing"; + return "steady"; +}