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

1843: Missing application labels #1855

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions administration/src/bp-modules/applications/JsonFieldArray.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,24 @@ const JsonFieldArray = ({
'organizationContact',
'organization',
'volunteerServiceEntitlement',
'honoredByMinisterPresidentEntitlement',
'goldenCardHonoredByMinisterPresidentEntitlement',
].includes(jsonField.name)
? `${jsonField.name}.title`
: jsonField.name

const children = jsonField.value.map((jsonFieldIt, index: number) => (
<JsonFieldView
jsonField={jsonFieldIt}
parentName={['organizationContact', 'organization'].includes(jsonField.name) ? jsonField.name : undefined}
parentName={
Copy link
Contributor Author

Choose a reason for hiding this comment

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

since these keys are objects we need also the parent to resolve them properly

[
'organizationContact',
'organization',
'volunteerServiceEntitlement',
'goldenCardHonoredByMinisterPresidentEntitlement',
].includes(jsonField.name)
? jsonField.name
: undefined
}
baseUrl={baseUrl}
// This is the best key we have as jsonField.name is not unique
// eslint-disable-next-line react/no-array-index-key
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,12 @@ const PrintOnlySpan = styled.span`
}
`

// Some fields name are equals therefore the parents is needed for resolving the label
const getTranslationKey = (fieldName: string, parentName?: string) =>
parentName ? `${parentName}.${fieldName}` : fieldName

const JsonFieldAttachment = memo(
({ jsonField, baseUrl, attachmentAccessible }: JsonFieldViewProps<JsonField<'Attachment'>>) => {
({ jsonField, baseUrl, attachmentAccessible, parentName }: JsonFieldViewProps<JsonField<'Attachment'>>) => {
const appToaster = useAppToaster()
const token = useContext(AuthContext).data?.token
const { t } = useTranslation('application')
Expand Down Expand Up @@ -64,7 +68,7 @@ const JsonFieldAttachment = memo(
}
return (
<p>
{t(jsonField.name)}:&nbsp;
{t(getTranslationKey(jsonField.name, parentName))}:&nbsp;
<PrintAwareTag
round
rightIcon={<Icon icon='download' color={Colors.GRAY1} />}
Expand All @@ -77,7 +81,7 @@ const JsonFieldAttachment = memo(
}
return (
<p>
{t(jsonField.name)}:&nbsp;
{t(getTranslationKey(jsonField.name, parentName))}:&nbsp;
<span>eingereicht, nicht sichtbar</span>
</p>
)
Expand All @@ -90,31 +94,30 @@ const JsonFieldElemental = ({
...rest
}: JsonFieldViewProps<Exclude<GeneralJsonField, JsonField<'Array'>>>) => {
const { t } = useTranslation('application')
const getTranslationKey = () => (parentName ? `${parentName}.${jsonField.name}` : jsonField.name)

switch (jsonField.type) {
case 'String':
return (
<p>
{t(getTranslationKey())}: {jsonField.value}
{t(getTranslationKey(jsonField.name, parentName))}: {jsonField.value}
</p>
)
case 'Date':
return (
<p>
{t(getTranslationKey())}: {new Date(jsonField.value).toLocaleDateString('de')}
{t(getTranslationKey(jsonField.name, parentName))}: {new Date(jsonField.value).toLocaleDateString('de')}
</p>
)
case 'Number':
return (
<p>
{t(getTranslationKey())}: {jsonField.value}
{t(getTranslationKey(jsonField.name, parentName))}: {jsonField.value}
</p>
)
case 'Boolean':
return (
<p>
{t(getTranslationKey())}:&nbsp;
{t(getTranslationKey(jsonField.name, parentName))}:&nbsp;
{jsonField.value ? (
<>
<Icon icon='tick' intent='success' /> Ja
Expand All @@ -127,7 +130,7 @@ const JsonFieldElemental = ({
</p>
)
case 'Attachment':
return <JsonFieldAttachment jsonField={jsonField} {...rest} />
return <JsonFieldAttachment jsonField={jsonField} parentName={parentName} {...rest} />
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export type JsonFieldValueByType = {
String: string
Number: number
Boolean: boolean
Attachment: { fileIndex: number }
Attachment: { fileIndex: number; parentName?: string }
f1sh1918 marked this conversation as resolved.
Show resolved Hide resolved
Date: string
}

Expand Down
15 changes: 10 additions & 5 deletions administration/src/util/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,16 @@
"wantsDigitalCard": "Ich beantrage eine digitale Ehrenamtskarte",
"wantsPhysicalCard": "Ich beantrage eine physische Ehrenamtskarte",
"blueCardJuleicaEntitlement": "Ich bin Inhaber:in einer JuLeiCa (Jugendleiter:in-Card)",
"blueCardWorkAtDepartmentEntitlement": "Ich bin aktiv in der Freiwilligen Feuerwehr mit abgeschlossener Truppmannausbildung bzw. abgeschlossenem Basis-Modul der Modularen Truppausbildung (MTA), oder im Katastrophenschutz oder im Rettungsdienst mit abgeschlossener Grundausbildung",
"blueCardMilitaryReserveEntitlement": "Ich habe in den vergangenen zwei Kalenderjahren als Reservist regelmäßig aktiven Wehrdienst in der Bundeswehr geleistet, indem ich insgesamt mindestens 40 Tage Reservisten-Dienstleistung erbracht habe oder ständige:r Angehörige:r eines Bezirks- oder Kreisverbindungskommandos war",
"blueCardWorkAtOrganizationsEntitlement": "Ich engagiere mich ehrenamtlich seit mindestens zwei Jahren freiwillig mindestens fünf Stunden pro Woche oder bei Projektarbeiten mindestens 250 Stunden jährlich",
"juleicaNumber": "Kartennummer",
"juleicaExpiration": "Karte gültig bis",
"copyOfJuleicaFront": "Kopie der Karte (1)",
"copyOfJuleicaBack": "Kopie der Karte (2)",
"blueCardWorkAtOrganizationsEntitlement": "Ich engagiere mich ehrenamtlich seit mindestens zwei Jahren freiwillig mindestens fünf Stunden pro Woche oder bei Projektarbeiten mindestens 250 Stunden jährlich",
"goldenCardWorkAtOrganizationsEntitlement": "Ich bin seit mindestens 25 Jahren mindestens 5 Stunden pro Woche oder 250 Stunden pro Jahr bei einem Verein oder einer Organisation ehrenamtlich tätig",
Copy link
Member

Choose a reason for hiding this comment

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

I am also unsure why these strings are duplicated (once here and once in goldenCardEntitlementType.WorkAtOrganizations)

Copy link
Contributor Author

@f1sh1918 f1sh1918 Jan 9, 2025

Choose a reason for hiding this comment

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

The problem is that the keys were stored like that in the database (example)
I believe this happens in the GoldenCardEntitlement.kt
If i change this structure i would also have to replace the keys in jsonField in the production database via migration or sth :/

{
          "name": "goldenCardHonoredByMinisterPresidentEntitlement",
          "type": "Array",
          "value": [
            {
              "name": "certificate",
              "type": "Attachment",
              "value": {
                "fileIndex": 0
              }
            }
          ]
        },

i don't see any other way now to resolve the other structure.
If you have any idea let me known @michael-markl

But i May delete some duplicates if I change the keys in the form that write it in the form state

Copy link
Contributor Author

@f1sh1918 f1sh1918 Jan 9, 2025

Choose a reason for hiding this comment

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

Update: Okay i adjusted the keys that were used for the state (these keys will also be stored like that in the database, so we can properly resolve it again)
Removed the duplicates in the de.json

"goldenCardWorkAtDepartmentEntitlement": "Ich bin Feuerwehrdienstleistende:r oder Einsatzkraft im Rettungsdienst oder in Einheiten des Katastrophenschutzes und habe eine Dienstzeitauszeichnung nach dem Feuerwehr- und Hilfsorganisationen-Ehrenzeichengesetz (FwHOEzG) erhalten",
"goldenCardMilitaryReserveEntitlement": "Ich leiste als Reservist:in seit mindestens 25 Jahren regelmäßig aktiven Wehrdienst in der Bundeswehr, indem ich in dieser Zeit entweder insgesamt mindestens 500 Tage Reservisten-Dienstleistung erbracht habe oder in dieser Zeit ständige:r Angehörige:r eines Bezirks- oder Kreisverbindungskommandos war.",
"workAtOrganization": "Arbeit bei Organisation oder Verein",
"organization": {
"title": "Angaben zur Organisation",
Expand Down Expand Up @@ -59,17 +64,17 @@
},
"goldenCardEntitlementType": {
"WorkAtOrganizations": "Ich bin seit mindestens 25 Jahren mindestens 5 Stunden pro Woche oder 250 Stunden pro Jahr bei einem Verein oder einer Organisation ehrenamtlich tätig.",
"HonoredByMinisterPresident": "Ich bin Inhaber:in des Ehrenzeichens für Verdienstete im Ehrenamt des Bayerischen Ministerpräsidenten.",
"HonoredByMinisterPresident": "Ich bin Inhaber:in des Ehrenzeichens für Verdienste im Ehrenamt des Bayerischen Ministerpräsidenten.",
"WorkAtDepartment": "Ich bin Feuerwehrdienstleistende:r oder Einsatzkraft im Rettungsdienst oder in Einheiten des Katastrophenschutzes und habe eine Dienstzeitauszeichnung nach dem Feuerwehr- und Hilfsorganisationen-Ehrenzeichengesetz (FwHOEzG) erhalten.",
"MilitaryReserve": "Ich leiste als Reservist:in seit mindestens 25 Jahren regelmäßig aktiven Wehrdienst in der Bundeswehr, indem ich in dieser Zeit entweder insgesamt mindestens 500 Tage Reservisten-Dienstleistung erbracht habe oder in dieser Zeit ständige:r Angehörige:r eines Bezirks- oder Kreisverbindungskommandos war."
},
"volunteerServiceEntitlement": {
"title": "Freiwilligendienst",
"title": "Ich leiste einen Freiwilligendienst ab in einem Freiwilligen Sozialen Jahr (FSJ), einem Freiwilligen Ökologischen Jahr (FÖJ) oder einem Bundesfreiwilligendienst (BFD)",
"programName": "Name des Programms",
"certificate": "Tätigkeitsnachweis"
},
"honoredByMinisterPresidentEntitlement": {
"title": "Ehrenzeichen des Ministerpräsidenten",
"goldenCardHonoredByMinisterPresidentEntitlement": {
"title": "Ich bin Inhaber:in des Ehrenzeichens für Verdienste im Ehrenamt des Bayerischen Ministerpräsidenten",
"certificate": "Kopie der Urkunde"
}
}
Expand Down