Skip to content

Commit 7a30070

Browse files
authored
fix(users): added 5 more columns options (#390)
* fix(users): added 5 more columns options * fix(summary): fixed charts numbers display
1 parent 673da05 commit 7a30070

File tree

11 files changed

+73
-23
lines changed

11 files changed

+73
-23
lines changed

src/app/features/admin-institutions/components/admin-table/admin-table.component.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,12 @@
123123
}
124124
</a>
125125
} @else {
126-
@if (col.dateFormat) {
126+
@if (col.dateFormat && rowData[col.field]) {
127127
{{ getCellValue(rowData[col.field]) | date: col.dateFormat }}
128-
} @else {
128+
} @else if (!col.dateFormat && rowData[col.field]) {
129129
{{ getCellValue(rowData[col.field]) }}
130+
} @else {
131+
{{ rowData[col.field] ?? '-' }}
130132
}
131133
}
132134

src/app/features/admin-institutions/constants/user-table-columns.constant.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { TableColumn } from '@osf/features/admin-institutions/models';
1+
import { TableColumn } from '../models';
22

33
export const userTableColumns: TableColumn[] = [
44
{
@@ -20,4 +20,24 @@ export const userTableColumns: TableColumn[] = [
2020
{ field: 'publicRegistrationCount', header: 'adminInstitutions.summary.publicRegistrations', sortable: true },
2121
{ field: 'embargoedRegistrationCount', header: 'adminInstitutions.summary.embargoedRegistrations', sortable: true },
2222
{ field: 'publishedPreprintCount', header: 'adminInstitutions.institutionUsers.preprints', sortable: true },
23+
{ field: 'publicFileCount', header: 'adminInstitutions.institutionUsers.filesOnOsf', sortable: true },
24+
{ field: 'totalDataStored', header: 'adminInstitutions.institutionUsers.totalDataStored', sortable: true },
25+
{
26+
field: 'accountCreationDate',
27+
header: 'adminInstitutions.institutionUsers.accountCreated',
28+
sortable: true,
29+
dateFormat: 'dd/MM/yyyy',
30+
},
31+
{
32+
field: 'monthLasLogin',
33+
header: 'adminInstitutions.institutionUsers.lastLogin',
34+
sortable: true,
35+
dateFormat: 'dd/MM/yyyy',
36+
},
37+
{
38+
field: 'monthLastActive',
39+
header: 'adminInstitutions.institutionUsers.lastActive',
40+
sortable: true,
41+
dateFormat: 'dd/MM/yyyy',
42+
},
2343
];

src/app/features/admin-institutions/mappers/institution-user-to-table-data.mapper.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,10 @@ export function mapUserToTableCellData(user: InstitutionUser): TableCellData {
2424
publicRegistrationCount: user.publicRegistrationCount,
2525
embargoedRegistrationCount: user.embargoedRegistrationCount,
2626
publishedPreprintCount: user.publishedPreprintCount,
27+
publicFileCount: user.publicFileCount,
28+
totalDataStored: user.storageByteCount ? `${(user.storageByteCount / (1024 * 1024)).toFixed(1)} MB` : '0 B',
29+
monthLasLogin: user.monthLasLogin,
30+
monthLastActive: user.monthLastActive,
31+
accountCreationDate: user.accountCreationDate,
2732
};
2833
}

src/app/features/admin-institutions/mappers/institution-users.mapper.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
import {
2-
InstitutionUser,
3-
InstitutionUserDataJsonApi,
4-
InstitutionUsersJsonApi,
5-
} from '@osf/features/admin-institutions/models';
1+
import { InstitutionUser, InstitutionUserDataJsonApi, InstitutionUsersJsonApi } from '../models';
62

73
export function mapInstitutionUsers(jsonApiData: InstitutionUsersJsonApi): InstitutionUser[] {
84
return jsonApiData.data.map((user: InstitutionUserDataJsonApi) => ({
@@ -16,5 +12,11 @@ export function mapInstitutionUsers(jsonApiData: InstitutionUsersJsonApi): Insti
1612
publicRegistrationCount: user.attributes.public_registration_count,
1713
embargoedRegistrationCount: user.attributes.embargoed_registration_count,
1814
publishedPreprintCount: user.attributes.published_preprint_count,
15+
monthLasLogin: user.attributes.month_last_login,
16+
monthLastActive: user.attributes.month_last_active,
17+
accountCreationDate: user.attributes.account_creation_date,
18+
storageByteCount: user.attributes.storage_byte_count,
19+
reportYearMonth: user.attributes.report_yearmonth,
20+
publicFileCount: user.attributes.public_file_count,
1921
}));
2022
}

src/app/features/admin-institutions/models/institution-user.model.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,10 @@ export interface InstitutionUser {
99
publicRegistrationCount: number;
1010
embargoedRegistrationCount: number;
1111
publishedPreprintCount: number;
12+
monthLasLogin: string;
13+
monthLastActive: string;
14+
accountCreationDate: string;
15+
storageByteCount: number;
16+
publicFileCount: number;
17+
reportYearMonth: string;
1218
}

src/app/features/admin-institutions/models/institution-users-json-api.model.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ export interface InstitutionUserAttributesJsonApi {
99
public_registration_count: number;
1010
embargoed_registration_count: number;
1111
published_preprint_count: number;
12+
account_creation_date: string;
13+
contacts: unknown[];
14+
month_last_active: string;
15+
month_last_login: string;
16+
public_file_count: number;
17+
report_yearmonth: string;
18+
storage_byte_count: number;
1219
}
1320

1421
export interface InstitutionUserRelationshipDataJsonApi {

src/app/features/admin-institutions/pages/institutions-summary/institutions-summary.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,9 @@ export class InstitutionsSummaryComponent implements OnInit {
158158
];
159159

160160
this.osfProjectsLabels = [
161-
'resourceCard.labels.publicRegistrations',
161+
'adminInstitutions.summary.publicRegistrations',
162162
'adminInstitutions.summary.embargoedRegistrations',
163-
'resourceCard.labels.publicProjects',
163+
'adminInstitutions.summary.publicProjects',
164164
'adminInstitutions.summary.privateProjects',
165165
'common.search.tabs.preprints',
166166
].map((el) => this.translateService.instant(el));

src/app/features/admin-institutions/pages/institutions-users/institutions-users.component.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,7 @@ export class InstitutionsUsersComponent {
6868

6969
currentUser = select(UserSelectors.getCurrentUser);
7070

71-
tableData = computed(() => {
72-
return this.users().map((user: InstitutionUser): TableCellData => mapUserToTableCellData(user));
73-
});
71+
tableData = computed(() => this.users().map((user: InstitutionUser): TableCellData => mapUserToTableCellData(user)));
7472

7573
amountText = computed(() => {
7674
const count = this.totalCount();

src/app/shared/components/bar-chart/bar-chart.component.html

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,14 @@ <h4>{{ title() | translate }}</h4>
2020
<p-accordion-content>
2121
<div class="content">
2222
@for (label of labels(); let i = $index; track i) {
23-
<li class="flex align-items-center mb-2 gap-2">
24-
<div class="w-1rem h-1rem" [style.background-color]="getColor(i)"></div>
25-
<span>{{ label }}</span>
23+
<li class="flex align-items-center justify-content-between gap-3 mb-2">
24+
<div class="flex align-items-center gap-2">
25+
<div class="w-1rem h-1rem" [style.background-color]="getColor(i)"></div>
26+
<span>{{ label }}</span>
27+
</div>
28+
@if (datasets().length) {
29+
<span>{{ datasets()[0].data[i] }}</span>
30+
}
2631
</li>
2732
}
2833
</div>

src/app/shared/components/doughnut-chart/doughnut-chart.component.html

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,14 @@ <h4>{{ title() | translate }}</h4>
2020
<p-accordion-content>
2121
<div class="content">
2222
@for (label of labels(); let i = $index; track i) {
23-
<li class="flex align-items-center mb-2 gap-2">
24-
<div class="w-1rem h-1rem" [style.background-color]="getColor(i)"></div>
25-
<span>{{ label }}</span>
23+
<li class="flex align-items-center justify-content-between gap-3 mb-2">
24+
<div class="flex align-items-center gap-2">
25+
<div class="w-1rem h-1rem" [style.background-color]="getColor(i)"></div>
26+
<span>{{ label }}</span>
27+
</div>
28+
@if (datasets().length) {
29+
<span>{{ datasets()[0].data[i] }}</span>
30+
}
2631
</li>
2732
}
2833
</div>

0 commit comments

Comments
 (0)