Skip to content

Commit ad2277f

Browse files
authored
Custom views (#1705)
1 parent 8d74118 commit ad2277f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+1292
-153
lines changed

frontend/components.d.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ declare module '@vue/runtime-core' {
1414
ElButton: typeof import('element-plus/es')['ElButton']
1515
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
1616
ElCard: typeof import('element-plus/es')['ElCard']
17-
ElCarousel: typeof import('element-plus/es')['ElCarousel']
18-
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
1917
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
20-
ElCol: typeof import('element-plus/es')['ElCol']
2118
ElCollapse: typeof import('element-plus/es')['ElCollapse']
2219
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
2320
ElContainer: typeof import('element-plus/es')['ElContainer']
@@ -49,12 +46,10 @@ declare module '@vue/runtime-core' {
4946
ElTabPane: typeof import('element-plus/es')['ElTabPane']
5047
ElTabs: typeof import('element-plus/es')['ElTabs']
5148
ElTag: typeof import('element-plus/es')['ElTag']
52-
ElTextarea: typeof import('element-plus/es')['ElTextarea']
5349
ElTimeline: typeof import('element-plus/es')['ElTimeline']
5450
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
5551
ElTimeSelect: typeof import('element-plus/es')['ElTimeSelect']
5652
ElTooltip: typeof import('element-plus/es')['ElTooltip']
57-
ElUpload: typeof import('element-plus/es')['ElUpload']
5853
RouterLink: typeof import('vue-router')['RouterLink']
5954
RouterView: typeof import('vue-router')['RouterView']
6055
}

frontend/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
if (!segmentKey || segmentKey.startsWith('%VUE_APP_SEGMENT_KEY')) {
7171
segmentKey = 'CROWD_VUE_APP_SEGMENT_KEY'
7272
}
73-
73+
7474
!(function() {
7575
var analytics = (window.analytics =
7676
window.analytics || [])
@@ -136,7 +136,7 @@
136136
analytics.load(segmentKey)
137137
}
138138
})()
139-
139+
140140

141141
let pendoKey = '%VUE_APP_PENDO_KEY%'
142142

frontend/package-lock.json

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
"vite": "^4.4.7",
6262
"vue": "^3.3.1",
6363
"vue-3-sanitize": "^0.1.4",
64+
"vue-draggable-next": "^2.2.1",
6465
"vue-grid-layout": "3.0.0-beta1",
6566
"vue-json-pretty": "^2.2.4",
6667
"vue-router": "^4.1.6",

frontend/src/assets/scss/tooltip.scss

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@
1212
width: max-content;
1313
max-width: 20rem;
1414
display: block;
15-
@apply bg-gray-900 text-white rounded-md text-xs leading-5 py-0.5 px-1.5 opacity-0 transition invisible;
15+
padding: 5px 6px;
16+
@apply bg-gray-900 text-white rounded-md text-2xs leading-5 opacity-0 transition invisible;
1617
}
1718

1819
&:hover:before {
1920
@apply opacity-100 visible;
2021
}
21-
}
22+
}

frontend/src/modules/dashboard/components/dashboard-members.vue

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
:total="members.total"
88
:route="{
99
name: 'member',
10-
query: filterQueryService().setQuery(allMembers.filter),
10+
query: filterQueryService().setQuery(allContacts.config),
1111
}"
1212
button-title="All contacts"
1313
report-name="Members report"
@@ -92,7 +92,7 @@
9292
:to="{
9393
name: 'member',
9494
query: filterQueryService().setQuery({
95-
...allMembers.filter,
95+
...allContacts.config,
9696
joinedDate: {
9797
value: periodRange,
9898
operator: 'between',
@@ -180,7 +180,7 @@
180180
:to="{
181181
name: 'member',
182182
query: filterQueryService().setQuery({
183-
...allMembers.filter,
183+
...allContacts.config,
184184
lastActivityDate: {
185185
value: periodRange,
186186
operator: 'between',
@@ -217,8 +217,7 @@ import { DAILY_GRANULARITY_FILTER } from '@/modules/widget/widget-constants';
217217
import AppDashboardMemberItem from '@/modules/dashboard/components/member/dashboard-member-item.vue';
218218
import AppDashboardCount from '@/modules/dashboard/components/dashboard-count.vue';
219219
import { filterQueryService } from '@/shared/modules/filters/services/filter-query.service';
220-
import newAndActive from '@/modules/member/config/saved-views/views/new-and-active';
221-
import allMembers from '@/modules/member/config/saved-views/views/all-members';
220+
import allContacts from '@/modules/member/config/saved-views/views/all-contacts';
222221
223222
export default {
224223
name: 'AppDashboardMember',
@@ -237,8 +236,7 @@ export default {
237236
activeMembersCount,
238237
formatDateToTimeAgo,
239238
filterQueryService,
240-
newAndActive,
241-
allMembers,
239+
allContacts,
242240
};
243241
},
244242
computed: {

frontend/src/modules/dashboard/components/dashboard-organizations.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
:total="organizations.total"
88
:route="{
99
name: 'organization',
10-
query: filterQueryService().setQuery(allOrganizations.filter),
10+
query: filterQueryService().setQuery(allOrganizations.config),
1111
}"
1212
button-title="All organizations"
1313
report-name="Organizations report"
@@ -79,7 +79,7 @@
7979
:to="{
8080
name: 'organization',
8181
query: filterQueryService().setQuery({
82-
...allOrganizations.filter,
82+
...allOrganizations.config,
8383
joinedDate: {
8484
value: periodRange,
8585
operator: 'between',
@@ -159,7 +159,7 @@
159159
:to="{
160160
name: 'organization',
161161
query: filterQueryService().setQuery({
162-
...allOrganizations.filter,
162+
...allOrganizations.config,
163163
lastActivityDate: {
164164
value: periodRange,
165165
operator: 'between',

frontend/src/modules/member/config/saved-views/main.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,32 @@
11
import { SavedView, SavedViewsConfig } from '@/shared/modules/saved-views/types/SavedViewsConfig';
2-
import allMembers from './views/all-members';
2+
import allContacts from './views/all-contacts';
33
import newAndActive from './views/new-and-active';
44
import slippingAway from './views/slipping-away';
55
import mostEngaged from './views/most-engaged';
66
import influential from './views/influential';
77
import teamMembers from './views/team-members';
88

9-
import bot from './settings/bot';
10-
import teamMember from './settings/teamMember';
11-
import organization from './settings/organization';
9+
import bot from './settings/bot/config';
10+
import teamMember from './settings/teamMember/config';
11+
import organization from './settings/organization/config';
1212

1313
export const memberSavedViews: SavedViewsConfig = {
14-
defaultView: allMembers,
14+
defaultView: allContacts,
1515
settings: {
16-
bot,
1716
teamMember,
17+
bot,
1818
organization,
1919
},
20+
sorting: {
21+
displayName: 'Contact',
22+
activityCount: '# of activities',
23+
score: 'Engagement level',
24+
lastActive: 'Last activity',
25+
joinedAt: 'Joined date',
26+
numberOfOpenSourceContributions: '# of OSS contributions',
27+
},
2028
};
2129

22-
// Hardcoded views until we have backend done for it
2330
export const memberViews: SavedView[] = [
2431
newAndActive,
2532
slippingAway,
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<template>
2+
<article>
3+
<p class="text-xs font-semibold leading-5 mb-3">
4+
Bot contacts visibility
5+
</p>
6+
<el-radio-group v-model="value">
7+
<el-radio :label="IncludeEnum.EXCLUDE" class="!h-5">
8+
<span class="text-xs">Exclude bot contacts</span>
9+
</el-radio>
10+
<el-radio :label="IncludeEnum.INCLUDE" class="!h-5">
11+
<span class="text-xs">Include bot contacts</span>
12+
</el-radio>
13+
</el-radio-group>
14+
</article>
15+
</template>
16+
17+
<script setup lang="ts">
18+
import { IncludeEnum } from '@/modules/member/config/saved-views/settings/common/types/IncludeEnum';
19+
import { computed } from 'vue';
20+
21+
const props = defineProps<{
22+
modelValue: IncludeEnum,
23+
}>();
24+
25+
const emit = defineEmits<{(e: 'update:modelValue', value: IncludeEnum): any }>();
26+
27+
const value = computed<IncludeEnum>({
28+
get() {
29+
return props.modelValue;
30+
},
31+
set(val: IncludeEnum) {
32+
emit('update:modelValue', val);
33+
},
34+
});
35+
</script>
36+
37+
<script lang="ts">
38+
export default {
39+
name: 'CrMemberTeamMemberSetting',
40+
};
41+
</script>

frontend/src/modules/member/config/saved-views/settings/bot.ts renamed to frontend/src/modules/member/config/saved-views/settings/bot/config.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { SavedViewsSetting } from '@/shared/modules/saved-views/types/SavedViewsConfig';
2-
import { IncludeEnum } from '@/modules/member/config/saved-views/settings/types/IncludeEnum';
2+
import { IncludeEnum } from '@/modules/member/config/saved-views/settings/common/types/IncludeEnum';
33
import { includeFilterRenderer } from '@/modules/member/config/saved-views/settings/common/includeFilterRenderer';
4+
import MemberBotSetting from './MemberBotSetting.vue';
45

56
const bot: SavedViewsSetting<IncludeEnum> = {
7+
inSettings: true,
8+
settingsComponent: MemberBotSetting,
69
defaultValue: IncludeEnum.EXCLUDE,
710
queryUrlParser(value: string): IncludeEnum {
811
return value as IncludeEnum;

0 commit comments

Comments
 (0)