Skip to content

Commit d822ff8

Browse files
committed
feat: Enhance insights project form and widget configuration
- Update insights project form to handle empty repositories - Add placeholder for empty repositories in repository tab - Modify default widgets to focus on development-related metrics - Improve form validation and error handling - Refactor code for better null safety and readability Signed-off-by: Sameh16 <[email protected]>
1 parent cb2274d commit d822ff8

File tree

4 files changed

+50
-25
lines changed

4 files changed

+50
-25
lines changed

frontend/src/modules/admin/modules/insights-projects/components/lf-insights-project-add-repository-tab.vue

+28-6
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,15 @@
1111
}"
1212
>
1313
<div class="flex items-center w-3/5">
14-
<lf-svg name="git-repository" class="!block w-5 h-5 text-gray-900 mr-3" />
14+
<lf-svg
15+
name="git-repository"
16+
class="!block w-5 h-5 text-gray-900 mr-3"
17+
/>
1518
<span class="text-gray-900 text-sm">{{ repository.url }}</span>
1619
</div>
17-
<div class="flex items-center gap-2 border border-gray-200 rounded-[100px] px-2 ml-3">
20+
<div
21+
class="flex items-center gap-2 border border-gray-200 rounded-[100px] px-2 ml-3"
22+
>
1823
<template v-for="platform of repository.platforms" :key="platform">
1924
<lf-icon
2025
v-if="platform === 'github'"
@@ -23,8 +28,18 @@
2328
class="text-[#24292F]"
2429
type="brands"
2530
/>
26-
<lf-icon v-if="platform === 'git'" name="git-alt" :size="25" class="text-[#F05133]" type="brands" />
27-
<lf-svg v-if="platform === 'gitlab'" name="gitlab" class="!block w-4 h-4" />
31+
<lf-icon
32+
v-if="platform === 'git'"
33+
name="git-alt"
34+
:size="25"
35+
class="text-[#F05133]"
36+
type="brands"
37+
/>
38+
<lf-svg
39+
v-if="platform === 'gitlab'"
40+
name="gitlab"
41+
class="!block w-4 h-4"
42+
/>
2843
<img
2944
v-if="platform === 'gerrit'"
3045
src="/images/integrations/gerrit.png"
@@ -35,6 +50,14 @@
3550
</div>
3651
<lf-switch v-model="repository.enabled" class="ml-auto" :size="'small'" />
3752
</div>
53+
<div
54+
v-if="cForm.repositories.length === 0"
55+
class="flex items-center justify-center pt-14"
56+
>
57+
<span class="text-gray-500 text-sm">
58+
There are no repositories connected to this project
59+
</span>
60+
</div>
3861
</div>
3962
</template>
4063

@@ -46,11 +69,10 @@ import { reactive } from 'vue';
4669
import { InsightsProjectAddFormModel } from '../models/insights-project-add-form.model';
4770
4871
const props = defineProps<{
49-
form: InsightsProjectAddFormModel;
72+
form: InsightsProjectAddFormModel;
5073
}>();
5174
5275
const cForm = reactive(props.form);
53-
5476
</script>
5577

5678
<script lang="ts">

frontend/src/modules/admin/modules/insights-projects/components/lf-insights-project-add.vue

-3
Original file line numberDiff line numberDiff line change
@@ -177,9 +177,6 @@ const rules = {
177177
description: { required: (value: string) => value.trim().length },
178178
logoUrl: { required: (value: string) => value.trim().length },
179179
website: { required: (value: string) => value.trim().length },
180-
repositories: {
181-
required: (value: any) => value.some((repository: any) => repository.enabled),
182-
},
183180
widgets: {
184181
required: (widgets: any) => Object.keys(widgets).some((key: any) => widgets[key]),
185182
},

frontend/src/modules/admin/modules/insights-projects/insight-project-helper.ts

+14-12
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@ export const buildRequest = (form: InsightsProjectAddFormModel) => ({
1313
github: form.github,
1414
twitter: form.twitter,
1515
linkedin: form.linkedin,
16-
repositories: form.repositories
17-
.filter((repository: any) => repository.enabled)
18-
.map((repository: any) => ({
19-
url: repository.url,
20-
platforms: repository.platforms,
21-
})),
16+
repositories:
17+
form.repositories
18+
?.filter((repository: any) => repository.enabled)
19+
?.map((repository: any) => ({
20+
url: repository.url,
21+
platforms: repository.platforms,
22+
})) || [],
2223
widgets: Object.keys(form.widgets).filter((key: string) => form.widgets[key]),
2324
});
2425

@@ -29,12 +30,13 @@ export const buildForm = (
2930
...result,
3031
organizationId: result.organization.id,
3132
collectionsIds: result.collections.map((collection: any) => collection.id),
32-
repositories: repositories?.map((repository: any) => ({
33-
...repository,
34-
enabled: result.repositories?.some(
35-
(repo: any) => repo.url === repository.url,
36-
),
37-
})),
33+
repositories:
34+
repositories?.map((repository: any) => ({
35+
...repository,
36+
enabled: result.repositories?.some(
37+
(repo: any) => repo.url === repository.url,
38+
),
39+
})) || [],
3840
widgets: Object.keys(defaultWidgetsValues).reduce(
3941
(acc, key: string) => ({
4042
...acc,

frontend/src/modules/admin/modules/insights-projects/widgets.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,14 @@ export const defaultWidgetsValues = {
4949
organizationDependency: true,
5050
retention: true,
5151
geographicalDistribution: true,
52-
industryDistribution: true,
5352
stars: true,
5453
forks: true,
55-
socialMentions: true,
56-
githubMentions: true,
57-
pressMentions: true,
54+
issuesResolution: true,
55+
pullRequests: true,
56+
contributionsOutsideWorkHours: true,
57+
mergeLeadTime: true,
58+
reviewTimeByPullRequestSize: true,
59+
averageTimeToMerge: true,
60+
waitTimeFor1stReview: true,
61+
codeReviewEngagement: true,
5862
};

0 commit comments

Comments
 (0)