Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reorder the user imports fields #3722

Merged
merged 10 commits into from
Jul 10, 2024
4 changes: 2 additions & 2 deletions client/src/app/domain/models/users/user.constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ export const userHeadersAndVerboseNames: { [key in keyof User]?: any } = {
first_name: _(`Given name`),
last_name: _(`Surname`),
email: _(`Email`),
member_number: _(`Member number`),
pronoun: _(`Pronoun`),
gender: _(`Gender`),
username: _(`Username`),
default_password: _(`Initial password`),
is_active: _(`Active`),
is_physical_person: _(`Natural person`),
saml_id: _(`SSO identification`),
member_number: _(`Membership number`)
saml_id: _(`SSO identification`)
};
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ describe(`CsvExportForBackendService`, () => {

it(`test dummy export method with default settings`, () => {
service.dummyCSVExport(
{ proper: `Fancy`, tea: `Tea`, strength: `Muscle` },
Object.keys({ proper: `Fancy`, tea: `Tea`, strength: `Muscle` }),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just use the list of keys at this point, no use keeping this as an object

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

toDummyExport,
`dummyAssortmentOfTeas`
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,14 +101,15 @@ export class CsvExportForBackendService {
}
}

public dummyCSVExport<I>(headerAndVerboseNames: { [key in keyof I]: any }, rows: I[], filename: string): void {
public dummyCSVExport<I>(headers: string[], rows: I[], filename: string): void {
const separator = DEFAULT_COLUMN_SEPARATOR;
const encoding: `utf-8` | `iso-8859-15` = DEFAULT_ENCODING as any;
const headerRow = [Object.keys(headerAndVerboseNames).join(separator)];
const headerRow = [headers.join(separator)];

const content = rows.map(row =>
Object.keys(headerAndVerboseNames)
headers
.map(key => {
let value = row[key as keyof I] || ``;
let value = row[key] || ``;
if (typeof value === `number`) {
value = value.toString(10);
} else if (typeof value === `boolean`) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export class TopicExportService {
];

this.csvExportService.dummyCSVExport<TopicExport>(
topicHeadersAndVerboseNames,
Object.keys(topicHeadersAndVerboseNames),
rows,
`${this.translate.instant(`Agenda`)}-${this.translate.instant(`example`)}.csv`
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ import { CsvColumnDefinitionProperty, CsvColumnsDefinition } from 'src/app/gatew
import { ViewUser } from 'src/app/site/pages/meetings/view-models/view-user';

import { MeetingCsvExportForBackendService } from '../../../../services/export/meeting-csv-export-for-backend.service';
import { participantHeadersAndVerboseNames } from '../../pages/participant-import/definitions';
import {
participantColumnsWeight,
participantHeadersAndVerboseNames
} from '../../pages/participant-import/definitions';
import { ParticipantExportModule } from '../participant-export.module';
import { participantsExportExample } from '../participants-export-example';

Expand Down Expand Up @@ -40,12 +43,16 @@ export class ParticipantCsvExportService {
// ]
// ]);

public columns = Object.keys(participantHeadersAndVerboseNames).sort(
(a, b) => participantColumnsWeight[a] - participantColumnsWeight[b]
);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If participantColumnsWeight already contains all relevant fields, why even import participantHeadersAndVerboseNames at all

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, changed it.


public constructor(private csvExport: MeetingCsvExportForBackendService, private translate: TranslateService) {}

public export(participants: ViewUser[]): void {
this.csvExport.export(
participants,
Object.keys(participantHeadersAndVerboseNames).map(key => {
this.columns.map(key => {
return {
property: key
} as CsvColumnDefinitionProperty<ViewUser>;
Expand All @@ -57,7 +64,7 @@ export class ParticipantCsvExportService {
public exportCsvExample(): void {
const rows: UserExport[] = participantsExportExample;
this.csvExport.dummyCSVExport<UserExport>(
participantHeadersAndVerboseNames,
this.columns,
rows,
`${this.translate.instant(`participants-example`)}.csv`
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { TranslateService } from '@ngx-translate/core';
import { BaseViaBackendImportListMeetingComponent } from 'src/app/site/base/base-via-backend-import-list-meeting.component';
import { ImportListHeaderDefinition } from 'src/app/ui/modules/import-list';

import { participantHeadersAndVerboseNames } from '../../definitions';
import { participantColumnsWeight, participantHeadersAndVerboseNames } from '../../definitions';
import { ParticipantImportService } from '../../services';

@Component({
Expand All @@ -12,9 +12,11 @@ import { ParticipantImportService } from '../../services';
styleUrls: [`./participant-import-list.component.scss`]
})
export class ParticipantImportListComponent extends BaseViaBackendImportListMeetingComponent {
public possibleFields = Object.keys(participantHeadersAndVerboseNames);
public possibleFields = Object.keys(participantHeadersAndVerboseNames).sort(
(a, b) => participantColumnsWeight[a] - participantColumnsWeight[b]
);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see comments in participant-csv-export.service.ts and participant-import/definitions/index.ts

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.


public columns: ImportListHeaderDefinition[] = Object.keys(participantHeadersAndVerboseNames).map(header => ({
public columns: ImportListHeaderDefinition[] = this.possibleFields.map(header => ({
property: header,
label: (<any>participantHeadersAndVerboseNames)[header],
isTableColumn: true
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,33 @@
import { userHeadersAndVerboseNames } from 'src/app/domain/models/users/user.constants';
import { GeneralUser } from 'src/app/gateways/repositories/users';

export const participantHeadersAndVerboseNames: { [key in keyof GeneralUser]?: string } = {
export const participantHeadersAndVerboseNames: { [key in keyof GeneralUser]?: any } = {
...userHeadersAndVerboseNames,
is_present: `Is present`,
structure_level: `Structure levels`,
groups: `Groups`,
number: `Participant number`,
vote_weight: `Vote weight`,
groups: `Groups`,
is_present: `Is present`,
comment: `Comment`
};

export const participantColumnsWeight: { [key in keyof GeneralUser]?: any } = {
title: 1,
first_name: 2,
last_name: 3,
email: 4,
member_number: 5,
structure_level: 6,
groups: 7,
number: 8,
vote_weight: 9,
gender: 10,
pronoun: 11,
username: 12,
default_password: 13,
is_active: 14,
is_physical_person: 15,
is_present: 16,
saml_id: 17,
comment: 18
};
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using an array with the index being the weight may also work, would spare you the work of having to re-sort the keys every time you need the keys in-order

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now use an array.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { BaseViaBackendImportListComponent } from 'src/app/site/base/base-via-ba
import { OrganizationSettingsService } from 'src/app/site/pages/organization/services/organization-settings.service';
import { ImportListHeaderDefinition } from 'src/app/ui/modules/import-list';

import { accountHeadersAndVerboseNames } from '../../definitions';
import { accountColumnsWeight, accountHeadersAndVerboseNames } from '../../definitions';
import { AccountImportService } from '../../services/account-import.service/account-import.service';

@Component({
Expand All @@ -14,9 +14,11 @@ import { AccountImportService } from '../../services/account-import.service/acco
styleUrls: [`./account-import-list.component.scss`]
})
export class AccountImportListComponent extends BaseViaBackendImportListComponent {
public possibleFields = Object.keys(accountHeadersAndVerboseNames);
public possibleFields = Object.keys(accountHeadersAndVerboseNames).sort(
(a, b) => accountColumnsWeight[a] - accountColumnsWeight[b]
);

public columns: ImportListHeaderDefinition[] = Object.keys(accountHeadersAndVerboseNames).map(header => ({
public columns: ImportListHeaderDefinition[] = this.possibleFields.map(header => ({
property: header,
label: (<any>accountHeadersAndVerboseNames)[header],
isTableColumn: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,23 @@ import { marker as _ } from '@colsen1991/ngx-translate-extract-marker';
import { User } from 'src/app/domain/models/users/user';
import { userHeadersAndVerboseNames } from 'src/app/domain/models/users/user.constants';

export const accountHeadersAndVerboseNames: { [key in keyof User]?: string } = {
export const accountHeadersAndVerboseNames: { [key in keyof User]?: any } = {
...userHeadersAndVerboseNames,
default_vote_weight: _(`Vote weight`)
};

export const accountColumnsWeight: { [key in keyof User]?: any } = {
title: 1,
first_name: 2,
last_name: 3,
email: 4,
member_number: 5,
default_vote_weight: 6,
gender: 7,
pronoun: 8,
username: 9,
default_password: 10,
is_active: 11,
is_physical_person: 12,
saml_id: 13
};
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,22 @@ import { CsvExportForBackendService } from 'src/app/gateways/export/csv-export.s
import { ViewUser } from 'src/app/site/pages/meetings/view-models/view-user';

import { AccountCsvExportExample } from '../../export/csv-export-example';
import { accountHeadersAndVerboseNames } from '../../pages/account-import/definitions';
import { accountColumnsWeight, accountHeadersAndVerboseNames } from '../../pages/account-import/definitions';
import { AccountExportServiceModule } from '../account-export-service.module';

@Injectable({
providedIn: AccountExportServiceModule
})
export class AccountExportService {
public columns = Object.keys(accountHeadersAndVerboseNames).sort(
(a, b) => accountColumnsWeight[a] - accountColumnsWeight[b]
);

public constructor(private csvExportService: CsvExportForBackendService, private translate: TranslateService) {}

public downloadCsvImportExample(): void {
this.csvExportService.dummyCSVExport<UserExport>(
accountHeadersAndVerboseNames,
this.columns,
AccountCsvExportExample,
`${this.translate.instant(`account-example`)}.csv`
);
Expand All @@ -25,7 +29,7 @@ export class AccountExportService {
public downloadAccountCsvFile(dataSource: ViewUser[]): void {
this.csvExportService.export(
dataSource,
Object.keys(accountHeadersAndVerboseNames).map(key => ({
this.columns.map(key => ({
property: key as keyof ViewUser
})),
`${this.translate.instant(`Accounts`)}.csv`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export class CommitteeImportService extends BaseBackendImportService {

public downloadCsvExample(): void {
this.exporter.dummyCSVExport(
committeeHeadersAndVerboseNames,
Object.keys(committeeHeadersAndVerboseNames),
COMMITTEE_CSV_EXPORT_EXAMPLE,
`${this.translate.instant(`committee-example`)}.csv`
);
Expand Down
2 changes: 1 addition & 1 deletion client/src/meta
Submodule meta updated 3 files
+4 −4 dev/requirements.txt
+0 −8 models.yml
+0 −1 search.yml
Loading