feat: Enhance Dataset Edit Page with Unsaved Changes Indicator and Improved Structure
Some checks failed
build.yaml / feat: Enhance Dataset Edit Page with Unsaved Changes Indicator and Improved Structure (push) Failing after 0s
Some checks failed
build.yaml / feat: Enhance Dataset Edit Page with Unsaved Changes Indicator and Improved Structure (push) Failing after 0s
- Added a progress indicator for unsaved changes at the top of the dataset edit page. - Enhanced the title section with a dataset status badge and improved layout. - Introduced collapsible sections for better organization of form fields. - Improved notifications for success/error messages. - Refactored form fields into distinct sections: Basic Information, Licenses, Titles, Descriptions, Creators & Contributors, Additional Metadata, Geographic Coverage, and Files. - Enhanced loading spinner with a more visually appealing overlay. - Added new project validation logic in the backend with create and update validators.
This commit is contained in:
parent
f39fe75340
commit
3d8f2354cb
9 changed files with 863 additions and 625 deletions
|
|
@ -36,19 +36,15 @@ const submit = async () => {
|
|||
small
|
||||
/>
|
||||
</SectionTitleLineWithButton>
|
||||
|
||||
|
||||
<CardBox form @submit.prevent="submit()" class="shadow-lg">
|
||||
<div class="grid grid-cols-1 gap-6">
|
||||
<FormField
|
||||
label="Label"
|
||||
help="Required. Displayed project label"
|
||||
:class="{ 'text-red-400': form.errors.label }"
|
||||
>
|
||||
<FormControl
|
||||
v-model="form.label"
|
||||
type="text"
|
||||
placeholder="Enter a descriptive label..."
|
||||
required
|
||||
<FormField label="Label" help="Required. Displayed project label" :class="{ 'text-red-400': form.errors.label }">
|
||||
<FormControl
|
||||
v-model="form.label"
|
||||
type="text"
|
||||
placeholder="e.g., my-awesome-project"
|
||||
required
|
||||
:error="form.errors.label"
|
||||
class="transition-all focus:ring-2 focus:ring-blue-500"
|
||||
>
|
||||
|
|
@ -58,16 +54,16 @@ const submit = async () => {
|
|||
</FormControl>
|
||||
</FormField>
|
||||
|
||||
<FormField
|
||||
label="Name"
|
||||
help="Required. Project identifier (slug, lowercase, no spaces)"
|
||||
<FormField
|
||||
label="Name"
|
||||
help="Required. Project identifier (slug, lowercase, no spaces)"
|
||||
:class="{ 'text-red-400': form.errors.name }"
|
||||
>
|
||||
<FormControl
|
||||
v-model="form.name"
|
||||
type="text"
|
||||
placeholder="e.g., my-awesome-project"
|
||||
required
|
||||
<FormControl
|
||||
v-model="form.name"
|
||||
type="text"
|
||||
placeholder="Enter a descriptive titel..."
|
||||
required
|
||||
:error="form.errors.name"
|
||||
class="font-mono transition-all focus:ring-2 focus:ring-blue-500"
|
||||
>
|
||||
|
|
@ -100,12 +96,7 @@ const submit = async () => {
|
|||
|
||||
<template #footer>
|
||||
<BaseButtons class="justify-between">
|
||||
<BaseButton
|
||||
:route-name="stardust.route('settings.project.index')"
|
||||
label="Cancel"
|
||||
color="white"
|
||||
outline
|
||||
/>
|
||||
<BaseButton :route-name="stardust.route('settings.project.index')" label="Cancel" color="white" outline />
|
||||
<BaseButton
|
||||
type="submit"
|
||||
color="info"
|
||||
|
|
@ -120,7 +111,9 @@ const submit = async () => {
|
|||
</CardBox>
|
||||
|
||||
<!-- Helper Card -->
|
||||
<CardBox class="mt-6 bg-gradient-to-br from-blue-50 to-indigo-50 dark:from-slate-800 dark:to-slate-900 border-l-4 border-blue-500">
|
||||
<CardBox
|
||||
class="mt-6 bg-gradient-to-br from-blue-50 to-indigo-50 dark:from-slate-800 dark:to-slate-900 border-l-4 border-blue-500"
|
||||
>
|
||||
<div class="flex items-start gap-4">
|
||||
<div class="flex-shrink-0">
|
||||
<div class="w-10 h-10 rounded-full bg-blue-500 dark:bg-blue-600 flex items-center justify-center">
|
||||
|
|
@ -128,12 +121,10 @@ const submit = async () => {
|
|||
</div>
|
||||
</div>
|
||||
<div class="flex-1">
|
||||
<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-2">
|
||||
Quick Tips
|
||||
</h3>
|
||||
<h3 class="text-sm font-semibold text-gray-900 dark:text-white mb-2">Quick Tips</h3>
|
||||
<ul class="text-sm text-gray-700 dark:text-gray-300 space-y-1">
|
||||
<li>• <strong>Label</strong> is what users will see in the interface</li>
|
||||
<li>• <strong>Name</strong> is a technical identifier (use lowercase and hyphens)</li>
|
||||
<li>• <strong>Label</strong> is a technical identifier (use lowercase and hyphens) </li>
|
||||
<li>• <strong>Name</strong> is what users will see in the interface - short title</li>
|
||||
<li>• <strong>Description</strong> helps team members understand the project's purpose</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -141,4 +132,4 @@ const submit = async () => {
|
|||
</CardBox>
|
||||
</SectionMain>
|
||||
</LayoutAuthenticated>
|
||||
</template>
|
||||
</template>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue