feat: enhanced dataset management and UI improvements
Some checks failed
CI Pipeline / japa-tests (push) Failing after 1m10s

- Submitter/DatasetController.ts: improved validations for time_absolute, time_min, and time_max.
- validators/dataset.ts: enhanced validations for time_absolute, time_min, and time_max.
- Added new favicon.ico for better branding.
- Improved password-meter.vue component with clearer hint messages.
- Updated checkStrength.ts: enhanced checkStrength() method for password strength validation.
- submitter/Dataset/Create.vue: added form controls for time_min, time_max, and/or time_absolute fields.
- submitter/Dataset/Edit.vue: introduced a loading spinner during file upload for better UX.
This commit is contained in:
Kaimbacher 2025-01-08 11:45:03 +01:00
parent f67b736a88
commit d1480b1240
17 changed files with 2682 additions and 1446 deletions

View file

@ -14,11 +14,11 @@ import BaseButton from '@/Components/BaseButton.vue';
import BaseButtons from '@/Components/BaseButtons.vue';
import { stardust } from '@eidellev/adonis-stardust/client';
// import { Inertia } from '@inertiajs/inertia';
import passwordMeter from '@/Components/SimplePasswordMeter/password-meter.vue';
import PasswordMeter from '@/Components/SimplePasswordMeter/password-meter.vue';
const enabled = ref(false);
const handleScore = (score: number) => {
if (score == 4){
if (score >= 4){
enabled.value = true;
} else {
enabled.value = false;
@ -101,15 +101,15 @@ const submit = async () => {
</FormControl>
</FormField>
<FormField label="Password" :class="{ 'text-red-400': errors.password }">
<!-- <FormField label="Password" :class="{ 'text-red-400': errors.password }">
<FormControl v-model="form.password" type="password" placeholder="Enter Password" :errors="errors.password">
<div class="text-red-400 text-sm" v-if="errors.password && Array.isArray(errors.password)">
<!-- {{ errors.password }} -->
<div class="text-red-400 text-sm" v-if="errors.password && Array.isArray(errors.password)">
{{ errors.password.join(', ') }}
</div>
</FormControl>
</FormField>
<password-meter :password="form.password" @score="handleScore" />
<password-meter :password="form.password" @score="handleScore" /> -->
<PasswordMeter v-model:password="form.password" :errors="form.errors" @score="handleScore" />
<FormField label="Password Confirmation" :class="{ 'text-red-400': errors.password_confirmation }">
<FormControl

View file

@ -14,7 +14,7 @@ import BaseButton from '@/Components/BaseButton.vue';
import BaseButtons from '@/Components/BaseButtons.vue';
import { stardust } from '@eidellev/adonis-stardust/client';
// import { Inertia } from '@inertiajs/inertia';
import passwordMeter from '@/Components/SimplePasswordMeter/password-meter.vue';
import PasswordMeter from '@/Components/SimplePasswordMeter/password-meter.vue';
const enabled = ref(false);
const props = defineProps({
@ -52,7 +52,7 @@ const submit = async () => {
await router.put(stardust.route('settings.user.update', [props.user.id]), form);
};
const handleScore = (score: number) => {
if (score == 4){
if (score >= 4){
enabled.value = true;
} else {
enabled.value = false;
@ -116,7 +116,7 @@ const handleScore = (score: number) => {
</FormControl>
</FormField>
<password-meter :password="form.password" @score="handleScore" />
<PasswordMeter v-model:password="form.password" :errors="form.errors" @score="handleScore" />
<FormField label="Password Confirmation" :class="{ 'text-red-400': errors.password_confirmation }">
<FormControl