diff --git a/src/components/Sidebar.svelte b/src/components/Sidebar.svelte index 1f3167f..c7e01f3 100644 --- a/src/components/Sidebar.svelte +++ b/src/components/Sidebar.svelte @@ -1,8 +1,9 @@
+
Manage and view all issues reported in the system.
| + {#if typeof row[col.key as keyof Issue] === "string" && row[col.key as keyof Issue]} + {#await getPublicUrl(row[col.key as keyof Issue] as string) then publicUrl} + View Picture + {:catch} + Error loading image + {/await} + {:else} + No Picture + {/if} + | + {:else if col.key === "reported_date"} ++ {typeof row[col.key as keyof Issue] === + "string" || + typeof row[col.key as keyof Issue] === + "number" + ? new Date( + row[col.key as keyof Issue] as + | string + | number, + ).toLocaleDateString("en-US") + : ""} + | {:else if col.key === "need_approval"}
{#if row[col.key as keyof Issue]}
@@ -716,6 +830,14 @@
alt="Preview"
class="mt-2 max-h-48 rounded border"
/>
+ {:else if newIssue.issue_related_image}
+ {#await getPublicUrl(newIssue.issue_related_image) then url}
+ |
- {:else if col.key === "project_picture_link"}
+ {:else if col.key === "picture_link"}
{#if row.picture_link}
- View Picture
+ {#await getPublicUrl(row.picture_link) then publicUrl}
+ View Picture
+ {:catch}
+ Error loading image
+ {/await}
{:else}
No Picture
{/if}
@@ -556,6 +582,18 @@
alt="Preview"
class="mt-2 max-h-48 rounded border"
/>
+ {:else if newProjects.picture_link}
+ {#await getPublicUrl(newProjects.picture_link) then url}
+ + No image selected or uploaded. + {/if} {:else} diff --git a/src/routes/backoffice/timesheets/+page.svelte b/src/routes/backoffice/timesheets/+page.svelte new file mode 100644 index 0000000..7a4b177 --- /dev/null +++ b/src/routes/backoffice/timesheets/+page.svelte @@ -0,0 +1,763 @@ + + +
+
+
+
+{#if showModal}
+
+
+
+
+
+ Timesheet List++ Manage and track timesheets for staff members. + +
+
+
+
+
+
+
+ Showing {(currentPage - 1) * rowsPerPage + 1}–
+ {Math.min(currentPage * rowsPerPage, allRows.length)} of {allRows.length}
+
+
+
+ {#each Array(totalPages)
+ .fill(0)
+ .map((_, i) => i + 1) as page}
+
+ {/each}
+
+
+
+
+
+{/if}
diff --git a/src/routes/backoffice/timesheets/view/+page.svelte b/src/routes/backoffice/timesheets/view/+page.svelte
new file mode 100644
index 0000000..7a1d021
--- /dev/null
+++ b/src/routes/backoffice/timesheets/view/+page.svelte
@@ -0,0 +1,364 @@
+
+
+
+
+
diff --git a/src/routes/backoffice/vendor/+page.svelte b/src/routes/backoffice/vendor/+page.svelte
index 2378e59..d6536f4 100644
--- a/src/routes/backoffice/vendor/+page.svelte
+++ b/src/routes/backoffice/vendor/+page.svelte
@@ -1,6 +1,7 @@
-
-
-
- Vendor List-Manage your vendor and contact data - | ||||||||||||||||||
| + {new Date(row[col.key]).toLocaleDateString( + "en-US", + { + year: "numeric", + month: "short", + day: "numeric", + }, + )} + | + {:else if col.key === "villa_status"} + ++ + | + {:else if col.key === "villa_condition"} ++ + | + {:else if col.key === "villa_manager"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "villa_location"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "no_of_bedrooms"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "created_by"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "villa_email_address"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "owner_portal_username"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "owner_portal_password"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "closeable_living_room"} ++ {row[col.key] ? "✔️ Yes" : "❌ No"} + | + {:else if col.key === "monthly_rental_pre_approved_status"} ++ {row[col.key] ? "✔️ Yes" : "❌ No"} + | + {:else if col.key === "long_term_rental_pre_approval"} ++ {row[col.key] ? "✔️ Yes" : "❌ No"} + | + {:else if col.key === "pet_allowed_pre_approval_status"} ++ {row[col.key] ? "✔️ Yes" : "❌ No"} + | + {:else if col.key === "session_1_rate"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "session_2_rate"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "session_3_rate"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "session_4_rate"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "session_5_rate"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "session_6_rate"} ++ {row[col.key] || "N/A"} + | + {:else if col.key === "session_7_rate"} ++ {row[col.key] || "N/A"} + | {:else if col.key === "actions"}
- Showing {(currentPage - 1) * rowsPerPage + 1}–{Math.min(
- currentPage * rowsPerPage,
- allRows.length,
- )} of {allRows.length}
+ Showing {currentPage} of {totalPages} pages ({allRows.length} items total)
{isEditing ? "Edit Villa" : "Add New Villa"}{#each formColumns as col} -
-
-
-
+ {#if col.key === "villa_status"}
+
+
+
+
+ {#if $formErrors.villa_status}
+ + {$formErrors.villa_status} + + {/if} + {:else if col.key === "villa_condition"} +
+
+
+
+ {#if $formErrors.villa_condition}
+ + {$formErrors.villa_condition} + + {/if} + {:else if col.key === "closeable_living_room"} +
+
+
+
+ {#if $formErrors.closeable_living_room}
+ + {$formErrors.closeable_living_room} + + {/if} + {:else if col.key === "monthly_rental_pre_approved_status"} +
+
+
+
+ {#if $formErrors.monthly_rental_pre_approved_status}
+ + {$formErrors.monthly_rental_pre_approved_status} + + {/if} + {:else if col.key === "long_term_rental_pre_approval"} +
+
+
+
+ {#if $formErrors.long_term_rental_pre_approval}
+ + {$formErrors.long_term_rental_pre_approval} + + {/if} + {:else if col.key === "pet_allowed_pre_approval_status"} +
+
+
+
+ {#if $formErrors.pet_allowed_pre_approval_status}
+ + {$formErrors.pet_allowed_pre_approval_status} + + {/if} + {:else if col.key === "session_1_rate" || col.key === "session_2_rate" || col.key === "session_3_rate" || col.key === "session_4_rate" || col.key === "session_5_rate" || col.key === "session_6_rate" || col.key === "session_7_rate"} +
+
+
+
+ {#if $formErrors[col.key]}
+ + {$formErrors[col.key]} + + {/if} + {:else} +
+
+
+
+ {#if $formErrors[col.key]}
+ + {$formErrors[col.key]} + + {/if} + {/if} {/each} |