Skip to content
Merged
4 changes: 2 additions & 2 deletions api/src/lib/organizations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export const Organization = Type.Object({
name: Type.String({ description: "The organization's display name." }),
slug: Type.String({
description:
"The organization's slug in LFX Insights, as in its organization page URL `https://insights.linuxfoundation.org/organization/{slug}`. It can change, for example when the organization is renamed. An empty string when the organization has no public page, so there is no page to link to.",
"The organization's slug in LFX Insights, as in its organization page URL `https://insights.linuxfoundation.org/company/{slug}`. It can change, for example when the organization is renamed. An empty string when the organization has no public page, so there is no page to link to.",
}),
logo: Type.String({
description: "URL of the organization's logo image. An empty string when it has none.",
Expand All @@ -56,7 +56,7 @@ export const OrganizationParams = Type.Object({
slug: Type.String({
minLength: 1,
description:
"The organization's slug, as in its organization page URL `https://insights.linuxfoundation.org/organization/{slug}` and in the `slug` the organization leaderboards return.",
"The organization's slug, as in its organization page URL `https://insights.linuxfoundation.org/company/{slug}` and in the `slug` the organization leaderboards return.",
}),
});

Expand Down
2 changes: 1 addition & 1 deletion docs/knowledge/flow-caching.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ or is cleared by a deploy or a manual workflow.
in Redis.
- **Uncached:** auth, health, events, chat, collections, community, `/api/security/**`, `/api/report`,
project and collection pages, the API docs, OG and image routes.
- **Organization pages** (`/organization/**`, 1 day) and `/api/organization-page/**` (1 hour) turn
- **Company pages** (`/company/**`, 1 day) and `/api/organization-page/**` (1 hour) turn
off stale-while-revalidate, so they expire in Redis at the TTL.

All other rules keep Nitro's default stale-while-revalidate. Past the TTL, the next request gets
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ SPDX-License-Identifier: MIT
<nuxt-link
:to="{
name: LfxRoutes.LEADERBOARD,
params: { key: props.badge.config.leaderboardKey },
params: { key: leaderboardSlug(props.badge.config.leaderboardKey) },
}"
class="flex-1"
>
Expand All @@ -89,6 +89,7 @@ import { computed } from 'vue';
import { LfxRoutes } from '~/components/shared/types/routes';
import LfxButton from '~/components/uikit/button/button.vue';
import LfxIcon from '~/components/uikit/icon/icon.vue';
import { leaderboardSlug } from '~~/config/leaderboard-slugs';

import { tierConfigs, getTierTagStyle } from '../config/tiers.config';
import type { ProjectBadge } from '../types/badge.types';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import { BadgeTier, type BadgeConfig } from '../../types/badge.types';

export const activeOrganizationsBadgeConfig: BadgeConfig = {
title: 'Active organizations',
description: 'Unique organizations contributing in the last 12 months',
title: 'Active companies',
description: 'Unique companies contributing in the last 12 months',
leaderboardKey: 'active-organizations',
badgeImages: {
[BadgeTier.BRONZE]: '/images/badges/active-organizations/bronze.png',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ SPDX-License-Identifier: MIT
<nuxt-link
:to="{
name: LfxRoutes.LEADERBOARD,
params: { key: tierBadge.config.leaderboardKey },
params: { key: leaderboardSlug(tierBadge.config.leaderboardKey) },
}"
@click.stop
>
Expand Down Expand Up @@ -111,6 +111,7 @@ import { LfxRoutes } from '~/components/shared/types/routes';
import LfxIconButton from '~/components/uikit/icon-button/icon-button.vue';
import LfxPopover from '~/components/uikit/popover/popover.vue';
import LfxTooltip from '~/components/uikit/tooltip/tooltip.vue';
import { leaderboardSlug } from '~~/config/leaderboard-slugs';
import type { ProjectInsights } from '~~/types/project';

const props = defineProps<{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ SPDX-License-Identifier: MIT
:size="12"
/>
{{ props.project.organizationDependencyCount }}
{{ pluralize('organization', props.project.organizationDependencyCount) }}
{{ pluralize('company', props.project.organizationDependencyCount) }}
</div>
<div class="text-neutral-500">
<span class="text-sm leading-none"> ・ </span>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,13 @@ SPDX-License-Identifier: MIT

<!-- Organization dependency -->
<div class="flex flex-col gap-3">
<p class="text-xs leading-4 font-semibold text-neutral-500">Organization dependency</p>
<p class="text-xs leading-4 font-semibold text-neutral-500">Company dependency</p>
<div class="flex flex-col gap-2">
<div class="flex items-start justify-between">
<div class="flex flex-col">
<p class="text-sm font-semibold text-neutral-900">
{{ formatNumber(props.project.organizationDependencyCount) }}
{{ pluralize('organization', props.project.organizationDependencyCount) }}
{{ pluralize('company', props.project.organizationDependencyCount) }}
</p>
<p
class="text-xs leading-4"
Expand All @@ -63,7 +63,7 @@ SPDX-License-Identifier: MIT
<div class="flex flex-col text-right">
<p class="text-sm font-semibold text-neutral-900">
Other {{ formatNumber(otherOrganizationsCount) }}
{{ pluralize('organization', otherOrganizationsCount) }}
{{ pluralize('company', otherOrganizationsCount) }}
</p>
<p class="text-xs leading-4 text-neutral-500">{{ otherOrganizationsPercentage }}% of all contributions</p>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ SPDX-License-Identifier: MIT
/>
<lfx-dropdown-item
value="organizationCount_desc"
label="Most organizations"
label="Most companies"
/>
<lfx-dropdown-item
value="score_desc"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ SPDX-License-Identifier: MIT
/>
</span>
</th>
<th class="py-5 px-2 text-left whitespace-nowrap font-semibold">Contributor/Organization dependency</th>
<th class="py-5 px-2 text-left whitespace-nowrap font-semibold">Contributor/Company dependency</th>
<th class="py-5 pl-2 pr-5 md:pr-10 text-right whitespace-nowrap font-semibold">Achievements</th>
</tr>
</thead>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ SPDX-License-Identifier: MIT
most critical open source projects
</h1>
<p class="text-sm">
LFX Insights helps developers and their organizations make smarter decisions about the open source projects they
LFX Insights helps developers and their companies make smarter decisions about the open source projects they
depend on
</p>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ import LfxCard from '~/components/uikit/card/card.vue';
import LfxChip from '~/components/uikit/chip/chip.vue';
import LfxIconButton from '~/components/uikit/icon-button/icon-button.vue';
import LfxIcon from '~/components/uikit/icon/icon.vue';
import { leaderboardSlug } from '~~/config/leaderboard-slugs';
import type { Leaderboard } from '~~/types/leaderboard/leaderboard';

import LfxTableHeader from './table-header.vue';
Expand All @@ -115,7 +116,7 @@ const props = defineProps<{
const isHovered = ref(false);

const navigateToLeaderboard = () => {
router.push({ name: LfxRoutes.LEADERBOARD, params: { key: props.config.key as string } });
router.push({ name: LfxRoutes.LEADERBOARD, params: { key: leaderboardSlug(props.config.key) } });
};

const handleCardClick = (event: MouseEvent) => {
Expand All @@ -135,7 +136,7 @@ const handleShare = () => {

const resolvedRoute = router.resolve({
name: LfxRoutes.LEADERBOARD,
params: { key: props.config.key as string },
params: { key: leaderboardSlug(props.config.key) },
});
const url = new URL(resolvedRoute.href, window.location.origin);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ SPDX-License-Identifier: MIT
<router-link
v-for="config in allLeaderboards"
:key="config.key"
:to="{ name: LfxRoutes.LEADERBOARD, params: { key: config.key as string } }"
:to="{ name: LfxRoutes.LEADERBOARD, params: { key: leaderboardSlug(config.key) } }"
class="flex items-center justify-between py-2 px-0"
@click="isModalOpen = false"
>
Expand Down Expand Up @@ -66,6 +66,7 @@ import { LfxRoutes } from '~/components/shared/types/routes';
import useScroll from '~/components/shared/utils/scroll';
import LfxIcon from '~/components/uikit/icon/icon.vue';
import LfxModal from '~/components/uikit/modal/modal.vue';
import { leaderboardSlug } from '~~/config/leaderboard-slugs';

import leaderboardConfigs from '../../config/index.config';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ SPDX-License-Identifier: MIT
<router-link
v-for="config in allLeaderboards"
:key="config.key"
:to="{ name: LfxRoutes.LEADERBOARD, params: { key: config.key as string } }"
:to="{ name: LfxRoutes.LEADERBOARD, params: { key: leaderboardSlug(config.key) } }"
class="flex gap-2 items-center text-xs leading-4 cursor-pointer transition-colors hover:text-neutral-900 hover:font-medium"
:class="isActiveLeaderboard(config.key) ? 'text-neutral-900 font-medium' : 'text-neutral-500 font-normal'"
>
Expand All @@ -27,6 +27,7 @@ import { computed } from 'vue';

import { LfxRoutes } from '~/components/shared/types/routes';
import LfxIcon from '~/components/uikit/icon/icon.vue';
import { leaderboardSlug } from '~~/config/leaderboard-slugs';

import leaderboardConfigs from '../../config/index.config';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ import type { LeaderboardConfig } from './types/leaderboard.types';

export const mostActiveOrganizationsConfig: LeaderboardConfig = {
key: 'active-organizations',
name: 'Most active organizations',
name: 'Most active companies',
description:
'These projects brought together the largest number of distinct contributing organizations in the past 12 months.',
'These projects brought together the largest number of distinct contributing companies in the past 12 months.',
icon: 'buildings',
dataDisplay: LfxProjectIntegerRowDisplay,
minimizedDataDisplay: LfxProjectIntegerMinimizedRowDisplay,
entityLabel: 'Project',
metricLabel: 'Organizations (12M)',
metricLabel: 'Companies (12M)',
};
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ import type { LeaderboardConfig } from './types/leaderboard.types';

export const top100OrganizationsConfig: LeaderboardConfig = {
key: 'organizations',
name: 'Top 100 organizations',
name: 'Top 100 companies',
description:
'Most influential organizations based on the total number of contributions made over the last 12 months.',
'Most influential companies based on the total number of contributions made over the last 12 months.',
icon: 'building-flag',
dataDisplay: LfxOrganizationRowDisplay,
minimizedDataDisplay: LfxOrganizationMinimizedRowDisplay,
entityLabel: 'Organization',
entityLabel: 'Company',
metricLabel: 'Contributions (12M)',
};
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ const handleShare = () => {
url.hash = '';
openShareModal({
url: url.toString(),
title: `LFX Insights | ${props.organization?.displayName || 'Organization'}`,
title: `LFX Insights | ${props.organization?.displayName || 'Company'}`,
area: props.organization?.displayName,
});
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ import type { OrgActivityTimeseries } from '~~/types/organization-page';
const route = useRoute();
const orgSlug = route.params.orgSlug as string;
const { organization } = storeToRefs(useOrganizationPageStore());
const orgDisplayName = computed(() => organization.value?.displayName || 'this organization');
const orgDisplayName = computed(() => organization.value?.displayName || 'this company');
const currentYear = new Date().getFullYear().toString();

const queryKey = computed(() => [TanstackKey.ORGANIZATION_PAGE_ACTIVITY, orgSlug]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ import type { OrgContributorTimeseries } from '~~/types/organization-page';
const route = useRoute();
const orgSlug = route.params.orgSlug as string;
const { organization } = storeToRefs(useOrganizationPageStore());
const orgDisplayName = computed(() => organization.value?.displayName || 'this organization');
const orgDisplayName = computed(() => organization.value?.displayName || 'this company');
const currentYear = new Date().getFullYear().toString();

const queryKey = computed(() => [TanstackKey.ORGANIZATION_PAGE_CONTRIBUTORS_TIMESERIES, orgSlug]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ import type { OrganizationKpis } from '~~/types/organization-page';
const route = useRoute();
const orgSlug = route.params.orgSlug as string;
const { organization } = storeToRefs(useOrganizationPageStore());
const orgDisplayName = computed(() => organization.value?.displayName || 'this organization');
const orgDisplayName = computed(() => organization.value?.displayName || 'this company');

const queryKey = computed(() => [TanstackKey.ORGANIZATION_PAGE_KPIS, orgSlug]);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ SPDX-License-Identifier: MIT
size="medium"
>
<span class="sm:hidden">Open in LFX</span>
<span class="hidden sm:inline">Check your organization data in LFX</span>
<span class="hidden sm:inline">Check your company data in LFX</span>
<lfx-icon
name="arrow-up-right-from-square"
:size="12"
Expand All @@ -46,7 +46,7 @@ import LfxButton from '~/components/uikit/button/button.vue';
import LfxIcon from '~/components/uikit/icon/icon.vue';

const { organization } = storeToRefs(useOrganizationPageStore());
const orgDisplayName = computed(() => organization.value?.displayName || 'your organization');
const orgDisplayName = computed(() => organization.value?.displayName || 'your company');
</script>

<script lang="ts">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ import type { TechnicalInfluence } from '~~/types/organization-page';

const route = useRoute();
const { organization } = storeToRefs(useOrganizationPageStore());
const orgDisplayName = computed(() => organization.value?.displayName || 'This organization');
const orgDisplayName = computed(() => organization.value?.displayName || 'This company');
const orgSlug = route.params.orgSlug as string;

const { data, isLoading, hasNextPage, isFetchingNextPage, fetchNextPage } =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ SPDX-License-Identifier: MIT
name="building"
:size="14"
/>
Organizations
Companies
</lfx-tag>
<p class="text-body-1">
{{ formatNumber(props.project.organizationCount) }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ const selectedCategoryRows = computed(() => {
return [
{ name: 'Maintainer responsiveness', ...getResponsivenessRow(signals) },
{ name: 'Bus factor', ...getBusFactorRow(signals) },
{ name: 'Organization Diversity', ...getOrgDiversityRow(signals) },
{ name: 'Company diversity', ...getOrgDiversityRow(signals) },
];
}
if (selectedCategoryKey.value === 'security-supply-chain') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ SPDX-License-Identifier: MIT
>
<lfx-input
v-model="model.affiliation"
placeholder="Company or Organization"
placeholder="Company"
/>
</lfx-field>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ SPDX-License-Identifier: MIT
>
<LfxInput
v-model="model.affiliation"
placeholder="Company or Organization"
placeholder="Company"
/>
</LfxField>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ type Metric = 'Contributor' | 'Contribution' | 'Organization';
const metricTabs = [
{ value: 'Contributor', label: 'Contributors' },
{ value: 'Contribution', label: 'Code contributions' },
{ value: 'Organization', label: 'Organizations' },
{ value: 'Organization', label: 'Companies' },
];
const metric = ref<Metric>('Contributor');

Expand Down Expand Up @@ -132,7 +132,7 @@ const worldNote = computed(
({
Contributor: 'Code contributors with a known location',
Contribution: 'Code contributions from people with a known location',
Organization: 'Active organizations with a known HQ',
Organization: 'Active companies with a known HQ',
})[metric.value],
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ SPDX-License-Identifier: MIT
<lfx-table class="min-w-[640px]">
<thead>
<tr>
<th>Organization</th>
<th>Company</th>
<th class="text-right">Contributors</th>
<th class="text-right">In {{ countryName }}</th>
<th class="text-right">Code contributions</th>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,20 +52,20 @@ const segments = computed(() => {
return [
{
key: 'in-country-elsewhere',
label: `In ${props.countryName}, other or no organization`,
label: `In ${props.countryName}, other or no company`,
value: props.summary.inCountryElsewhereCount,
barClass: 'bg-brand-300',
},
{
key: 'in-country-at-country-organization',
label: `In ${props.countryName}, at an organization with ${props.countryAdjective} HQ`,
label: `In ${props.countryName}, at a company with ${props.countryAdjective} HQ`,
value: props.summary.inCountryAtCountryOrganizationCount,
barClass: 'bg-brand-500',
},
{
key: 'abroad-at-country-organization',
// Counts everyone not located in the country, including contributors with no location.
label: `Abroad or location unknown, at an organization with ${props.countryAdjective} HQ`,
label: `Abroad or location unknown, at a company with ${props.countryAdjective} HQ`,
value: props.summary.abroadAtCountryOrganizationCount,
barClass: 'bg-brand-800',
},
Expand Down
Loading
Loading