fixes
Build And Push Image / docker (push) Successful in 3m9s Details

This commit is contained in:
Matt 2025-08-07 22:01:02 +02:00
parent d36209818a
commit 13fa95a9a2
2 changed files with 61 additions and 61 deletions

View File

@ -12,7 +12,7 @@
size="small"
variant="flat"
>
{{ member['Membership Status'] }}
{{ member.membership_status }}
</v-chip>
</div>
@ -31,18 +31,18 @@
<div class="flex-grow-1">
<h3 class="text-h6 font-weight-bold mb-1">
{{ member.FullName || `${member['First Name']} ${member['Last Name']}` }}
{{ member.FullName || `${member.first_name} ${member.last_name}` }}
</h3>
<div class="d-flex align-center">
<CountryFlag
v-if="member.Nationality"
:country-code="member.Nationality"
v-if="member.nationality"
:country-code="member.nationality"
:show-name="false"
size="small"
class="mr-2"
/>
<span class="text-body-2 text-medium-emphasis">
{{ getCountryName(member.Nationality) || 'Unknown' }}
{{ getCountryName(member.nationality) || 'Unknown' }}
</span>
</div>
</div>
@ -52,17 +52,17 @@
<div class="member-info">
<div class="info-row mb-2">
<v-icon size="16" class="mr-2 text-medium-emphasis">mdi-email</v-icon>
<span class="text-body-2">{{ member.Email || 'No email' }}</span>
<span class="text-body-2">{{ member.email || 'No email' }}</span>
</div>
<div class="info-row mb-2" v-if="member.Phone">
<div class="info-row mb-2" v-if="member.phone">
<v-icon size="16" class="mr-2 text-medium-emphasis">mdi-phone</v-icon>
<span class="text-body-2">{{ member.FormattedPhone || member.Phone }}</span>
<span class="text-body-2">{{ member.FormattedPhone || member.phone }}</span>
</div>
<div class="info-row mb-2" v-if="member['Member Since']">
<div class="info-row mb-2" v-if="member.member_since">
<v-icon size="16" class="mr-2 text-medium-emphasis">mdi-calendar</v-icon>
<span class="text-body-2">Member since {{ formatDate(member['Member Since']) }}</span>
<span class="text-body-2">Member since {{ formatDate(member.member_since) }}</span>
</div>
</div>
@ -79,14 +79,14 @@
</v-chip>
<v-chip
v-if="member['Payment Due Date']"
v-if="member.payment_due_date"
color="warning"
variant="tonal"
size="small"
:class="{ 'text-error': isOverdue }"
>
<v-icon start size="14">mdi-calendar-alert</v-icon>
{{ isOverdue ? 'Overdue' : `Due ${formatDate(member['Payment Due Date'])}` }}
{{ isOverdue ? 'Overdue' : `Due ${formatDate(member.payment_due_date)}` }}
</v-chip>
</div>
</v-card-text>
@ -148,11 +148,11 @@ const props = withDefaults(defineProps<Props>(), {
defineEmits<Emits>();
// Computed properties
const memberInitials = computed(() => {
const firstName = props.member['First Name'] || '';
const lastName = props.member['Last Name'] || '';
return `${firstName.charAt(0)}${lastName.charAt(0)}`.toUpperCase();
});
const memberInitials = computed(() => {
const firstName = props.member.first_name || '';
const lastName = props.member.last_name || '';
return `${firstName.charAt(0)}${lastName.charAt(0)}`.toUpperCase();
});
const avatarColor = computed(() => {
// Generate consistent color based on member ID using high-contrast colors
@ -162,11 +162,11 @@ const avatarColor = computed(() => {
});
const isActive = computed(() => {
return props.member['Membership Status'] === 'Active';
return props.member.membership_status === 'Active';
});
const statusColor = computed(() => {
const status = props.member['Membership Status'];
const status = props.member.membership_status;
switch (status) {
case 'Active': return 'success';
case 'Inactive': return 'grey';
@ -177,26 +177,26 @@ const statusColor = computed(() => {
});
const duesColor = computed(() => {
return props.member['Current Year Dues Paid'] === 'true' ? 'success' : 'error';
return props.member.current_year_dues_paid === 'true' ? 'success' : 'error';
});
const duesVariant = computed(() => {
return props.member['Current Year Dues Paid'] === 'true' ? 'tonal' : 'flat';
return props.member.current_year_dues_paid === 'true' ? 'tonal' : 'flat';
});
const duesIcon = computed(() => {
return props.member['Current Year Dues Paid'] === 'true' ? 'mdi-check-circle' : 'mdi-alert-circle';
return props.member.current_year_dues_paid === 'true' ? 'mdi-check-circle' : 'mdi-alert-circle';
});
const duesText = computed(() => {
return props.member['Current Year Dues Paid'] === 'true' ? 'Dues Paid' : 'Dues Outstanding';
return props.member.current_year_dues_paid === 'true' ? 'Dues Paid' : 'Dues Outstanding';
});
const isOverdue = computed(() => {
if (!props.member['Payment Due Date']) return false;
const dueDate = new Date(props.member['Payment Due Date']);
if (!props.member.payment_due_date) return false;
const dueDate = new Date(props.member.payment_due_date);
const today = new Date();
return dueDate < today && props.member['Current Year Dues Paid'] !== 'true';
return dueDate < today && props.member.current_year_dues_paid !== 'true';
});
// Methods

View File

@ -21,18 +21,18 @@
<div class="flex-grow-1">
<h2 class="text-h5 text-white font-weight-bold">
{{ member.FullName || `${member['First Name']} ${member['Last Name']}` }}
{{ member.FullName || `${member.first_name} ${member.last_name}` }}
</h2>
<div class="d-flex align-center mt-1">
<CountryFlag
v-if="member.Nationality"
:country-code="member.Nationality"
v-if="member.nationality"
:country-code="member.nationality"
:show-name="false"
size="small"
class="mr-2"
/>
<span class="text-white text-body-2">
{{ getCountryName(member.Nationality) || 'Unknown Country' }}
{{ getCountryName(member.nationality) || 'Unknown Country' }}
</span>
</div>
</div>
@ -56,7 +56,7 @@
size="small"
>
<v-icon start size="16">{{ statusIcon }}</v-icon>
{{ member['Membership Status'] }}
{{ member.membership_status }}
</v-chip>
<v-chip
@ -69,7 +69,7 @@
</v-chip>
<v-chip
v-if="member['Payment Due Date']"
v-if="member.payment_due_date"
:color="isOverdue ? 'error' : 'warning'"
variant="tonal"
size="small"
@ -88,41 +88,41 @@
<div class="info-group">
<div class="info-item mb-3">
<label class="text-body-2 font-weight-bold text-medium-emphasis">First Name</label>
<p class="text-body-1 ma-0">{{ member['First Name'] || 'Not provided' }}</p>
<p class="text-body-1 ma-0">{{ member.first_name || 'Not provided' }}</p>
</div>
<div class="info-item mb-3">
<label class="text-body-2 font-weight-bold text-medium-emphasis">Last Name</label>
<p class="text-body-1 ma-0">{{ member['Last Name'] || 'Not provided' }}</p>
<p class="text-body-1 ma-0">{{ member.last_name || 'Not provided' }}</p>
</div>
<div class="info-item mb-3">
<label class="text-body-2 font-weight-bold text-medium-emphasis">Email</label>
<p class="text-body-1 ma-0">
<a v-if="member.Email" :href="`mailto:${member.Email}`" class="text-primary">
{{ member.Email }}
<a v-if="member.email" :href="`mailto:${member.email}`" class="text-primary">
{{ member.email }}
</a>
<span v-else>Not provided</span>
</p>
</div>
<div class="info-item mb-3" v-if="member.Phone">
<div class="info-item mb-3" v-if="member.phone">
<label class="text-body-2 font-weight-bold text-medium-emphasis">Phone</label>
<p class="text-body-1 ma-0">
<a :href="`tel:${member.Phone}`" class="text-primary">
{{ member.FormattedPhone || member.Phone }}
<a :href="`tel:${member.phone}`" class="text-primary">
{{ member.FormattedPhone || member.phone }}
</a>
</p>
</div>
<div class="info-item mb-3" v-if="member['Date of Birth']">
<div class="info-item mb-3" v-if="member.date_of_birth">
<label class="text-body-2 font-weight-bold text-medium-emphasis">Date of Birth</label>
<p class="text-body-1 ma-0">{{ formatDate(member['Date of Birth']) }}</p>
<p class="text-body-1 ma-0">{{ formatDate(member.date_of_birth) }}</p>
</div>
<div class="info-item mb-3" v-if="member.Address">
<div class="info-item mb-3" v-if="member.address">
<label class="text-body-2 font-weight-bold text-medium-emphasis">Address</label>
<p class="text-body-1 ma-0">{{ member.Address }}</p>
<p class="text-body-1 ma-0">{{ member.address }}</p>
</div>
</div>
</v-col>
@ -134,14 +134,14 @@
<div class="info-group">
<div class="info-item mb-3">
<label class="text-body-2 font-weight-bold text-medium-emphasis">Member Since</label>
<p class="text-body-1 ma-0">{{ formatDate(member['Member Since']) || 'Not specified' }}</p>
<p class="text-body-1 ma-0">{{ formatDate(member.member_since) || 'Not specified' }}</p>
</div>
<div class="info-item mb-3">
<label class="text-body-2 font-weight-bold text-medium-emphasis">Membership Status</label>
<p class="text-body-1 ma-0">
<v-chip :color="statusColor" size="small" variant="tonal">
{{ member['Membership Status'] }}
{{ member.membership_status }}
</v-chip>
</p>
</div>
@ -150,20 +150,20 @@
<label class="text-body-2 font-weight-bold text-medium-emphasis">Current Year Dues</label>
<p class="text-body-1 ma-0">
<v-chip :color="duesColor" size="small" variant="tonal">
{{ member['Current Year Dues Paid'] ? 'Paid' : 'Outstanding' }}
{{ member.current_year_dues_paid === 'true' ? 'Paid' : 'Outstanding' }}
</v-chip>
</p>
</div>
<div class="info-item mb-3" v-if="member['Membership Date Paid']">
<div class="info-item mb-3" v-if="member.membership_date_paid">
<label class="text-body-2 font-weight-bold text-medium-emphasis">Last Payment Date</label>
<p class="text-body-1 ma-0">{{ formatDate(member['Membership Date Paid']) }}</p>
<p class="text-body-1 ma-0">{{ formatDate(member.membership_date_paid) }}</p>
</div>
<div class="info-item mb-3" v-if="member['Payment Due Date']">
<div class="info-item mb-3" v-if="member.payment_due_date">
<label class="text-body-2 font-weight-bold text-medium-emphasis">Payment Due Date</label>
<p class="text-body-1 ma-0" :class="{ 'text-error': isOverdue }">
{{ formatDate(member['Payment Due Date']) }}
{{ formatDate(member.payment_due_date) }}
<span v-if="isOverdue" class="text-error font-weight-bold"> (Overdue)</span>
</p>
</div>
@ -208,8 +208,8 @@ defineEmits<Emits>();
// Computed properties
const memberInitials = computed(() => {
if (!props.member) return '';
const firstName = props.member['First Name'] || '';
const lastName = props.member['Last Name'] || '';
const firstName = props.member.first_name || '';
const lastName = props.member.last_name || '';
return `${firstName.charAt(0)}${lastName.charAt(0)}`.toUpperCase();
});
@ -222,7 +222,7 @@ const avatarColor = computed(() => {
const statusColor = computed(() => {
if (!props.member) return 'grey';
const status = props.member['Membership Status'];
const status = props.member.membership_status;
switch (status) {
case 'Active': return 'success';
case 'Inactive': return 'grey';
@ -234,7 +234,7 @@ const statusColor = computed(() => {
const statusIcon = computed(() => {
if (!props.member) return 'mdi-help';
const status = props.member['Membership Status'];
const status = props.member.membership_status;
switch (status) {
case 'Active': return 'mdi-check-circle';
case 'Inactive': return 'mdi-pause-circle';
@ -246,29 +246,29 @@ const statusIcon = computed(() => {
const duesColor = computed(() => {
if (!props.member) return 'grey';
return props.member['Current Year Dues Paid'] === 'true' ? 'success' : 'error';
return props.member.current_year_dues_paid === 'true' ? 'success' : 'error';
});
const duesVariant = computed(() => {
if (!props.member) return 'tonal';
return props.member['Current Year Dues Paid'] === 'true' ? 'tonal' : 'flat';
return props.member.current_year_dues_paid === 'true' ? 'tonal' : 'flat';
});
const duesIcon = computed(() => {
if (!props.member) return 'mdi-help';
return props.member['Current Year Dues Paid'] === 'true' ? 'mdi-check-circle' : 'mdi-alert-circle';
return props.member.current_year_dues_paid === 'true' ? 'mdi-check-circle' : 'mdi-alert-circle';
});
const duesText = computed(() => {
if (!props.member) return '';
return props.member['Current Year Dues Paid'] === 'true' ? 'Dues Paid' : 'Dues Outstanding';
return props.member.current_year_dues_paid === 'true' ? 'Dues Paid' : 'Dues Outstanding';
});
const isOverdue = computed(() => {
if (!props.member || !props.member['Payment Due Date']) return false;
const dueDate = new Date(props.member['Payment Due Date']);
if (!props.member || !props.member.payment_due_date) return false;
const dueDate = new Date(props.member.payment_due_date);
const today = new Date();
return dueDate < today && props.member['Current Year Dues Paid'] !== 'true';
return dueDate < today && props.member.current_year_dues_paid !== 'true';
});
// Methods