fix: ui/ux issues (#34)

* fix select first bug for creation

* add link to header

* fix date and display errors

* drop group name requirement
This commit is contained in:
Hayden 2022-10-09 05:03:24 -08:00 committed by GitHub
parent 79f7ad40cb
commit a6e3989aee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 33 additions and 46 deletions

View file

@ -23,7 +23,8 @@ tasks:
python3 ./scripts/process-types.py ./frontend/lib/api/types/data-contracts.ts
sources:
- "./backend/app/api/**/*"
- "./backend/app/internal/types/**/*"
- "./backend/internal/repo/**/*"
- "./backend/internal/services/**/*"
- "./scripts/process-types.py"
generates:
- "./frontend/lib/api/types/data-contracts.ts"

View file

@ -1531,9 +1531,6 @@ const docTemplate = `{
"email": {
"type": "string"
},
"groupName": {
"type": "string"
},
"name": {
"type": "string"
},

View file

@ -1523,9 +1523,6 @@
"email": {
"type": "string"
},
"groupName": {
"type": "string"
},
"name": {
"type": "string"
},

View file

@ -322,8 +322,6 @@ definitions:
properties:
email:
type: string
groupName:
type: string
name:
type: string
password:

View file

@ -28,7 +28,6 @@ type (
Name string `json:"name"`
Email string `json:"email"`
Password string `json:"password"`
GroupName string `json:"groupName"`
}
UserAuthTokenDetail struct {
Raw string `json:"raw"`
@ -46,7 +45,6 @@ func (svc *UserService) RegisterUser(ctx context.Context, data UserRegistration)
log.Debug().
Str("name", data.Name).
Str("email", data.Email).
Str("groupName", data.GroupName).
Str("groupToken", data.GroupToken).
Msg("Registering new user")
@ -57,7 +55,7 @@ func (svc *UserService) RegisterUser(ctx context.Context, data UserRegistration)
)
if data.GroupToken == "" {
group, err = svc.repos.Groups.GroupCreate(ctx, data.GroupName)
group, err = svc.repos.Groups.GroupCreate(ctx, "Home")
if err != nil {
log.Err(err).Msg("Failed to create group")
return repo.UserOut{}, err

View file

@ -68,11 +68,13 @@
<BaseContainer cmp="header" class="py-6 max-w-none">
<BaseContainer>
<h2 class="mt-1 text-4xl font-bold tracking-tight text-neutral-content sm:text-5xl lg:text-6xl flex">
HomeB
<AppLogo class="w-12 -mb-4" />
x
</h2>
<NuxtLink to="/home">
<h2 class="mt-1 text-4xl font-bold tracking-tight text-neutral-content sm:text-5xl lg:text-6xl flex">
HomeB
<AppLogo class="w-12 -mb-4" />
x
</h2>
</NuxtLink>
<div class="ml-1 mt-2 text-lg text-neutral-content/75 space-x-2">
<template v-for="link in links">
<NuxtLink

View file

@ -37,13 +37,22 @@
},
});
const api = useUserApi();
const toast = useNotifier();
const locationsStore = useLocationStore();
const locations = computed(() => locationsStore.locations);
const labelStore = useLabelStore();
const labels = computed(() => labelStore.labels);
const submitBtn = ref(null);
const modal = useVModel(props, "modelValue");
const loading = ref(false);
const focused = ref(false);
const form = reactive({
location: {} as LocationOut,
location: locations.value && locations.value.length > 0 ? locations.value[0] : ({} as LocationOut),
name: "",
description: "",
color: "", // Future!
@ -65,14 +74,6 @@
focused.value = true;
}
);
const api = useUserApi();
const toast = useNotifier();
const locationsStore = useLocationStore();
const locations = computed(() => locationsStore.locations);
const labelStore = useLabelStore();
const labels = computed(() => labelStore.labels);
async function create() {
if (!form.location) {
@ -88,7 +89,7 @@
const { error } = await api.items.create(out);
if (error) {
toast.error("Couldn't create label");
toast.error("Couldn't create item");
return;
}

View file

@ -19,7 +19,7 @@
return "";
}
if (nullDate(dt)) {
if (!validDate(dt)) {
return "";
}
@ -35,10 +35,6 @@
}
});
function nullDate(dt: Date) {
return dt.getFullYear() === 1;
}
const props = defineProps({
date: {
type: [Date, String],

View file

@ -8,7 +8,6 @@ function userFactory(): UserRegistration {
email: faker.internet.email(),
password: faker.internet.password(),
name: faker.name.firstName(),
groupName: faker.animal.cat(),
token: "",
};
}

View file

@ -30,10 +30,10 @@ export async function sharedUserClient(): Promise<UserClient> {
return userClient(cache.token);
}
const testUser = {
groupName: "test-group",
email: "__test__@__test__.com",
name: "__test__",
password: "__test__",
token: "",
};
const api = client();

View file

@ -219,7 +219,6 @@ export interface ServerValidationError {
export interface UserRegistration {
email: string;
groupName: string;
name: string;
password: string;
token: string;

View file

@ -21,7 +21,6 @@
const username = ref("");
const email = ref("");
const groupName = ref("");
const password = ref("");
const canRegister = ref(false);
@ -50,7 +49,6 @@
name: username.value,
email: email.value,
password: password.value,
groupName: groupName.value,
token: groupToken.value,
});
@ -152,8 +150,7 @@
</h2>
<FormTextField v-model="email" label="Set your email?" />
<FormTextField v-model="username" label="What's your name?" />
<FormTextField v-if="groupToken == ''" v-model="groupName" label="Name your group" />
<div v-else class="pt-4 pb-1 text-center">
<div v-if="!(groupToken == '')" class="pt-4 pb-1 text-center">
<p>You're Joining an Existing Group!</p>
<button type="button" class="text-xs underline" @click="groupToken = ''">
Don't Want To Join a Group?

View file

@ -177,14 +177,14 @@
if (preferences.value.showEmpty) {
return true;
}
return item.value?.purchaseFrom || item.value?.purchasePrice;
return item.value?.purchaseFrom || item.value?.purchasePrice !== "0";
});
const purchaseDetails = computed<(Detail | DateDetail)[]>(() => {
const purchaseDetails = computed<Array<Detail | DateDetail>>(() => {
return [
{
name: "Purchase From",
label: item.value?.purchaseFrom || "",
text: item.value?.purchaseFrom || "",
},
{
name: "Purchase Price",
@ -193,18 +193,19 @@
{
name: "Purchase Date",
text: item.value.purchaseTime,
type: "date",
},
] as (Detail | DateDetail)[];
];
});
const showSold = computed(() => {
if (preferences.value.showEmpty) {
return true;
}
return item.value?.soldTo || item.value?.soldPrice;
return item.value?.soldTo || item.value?.soldPrice !== "0";
});
const soldDetails = computed<Array<Detail>>(() => {
const soldDetails = computed<Array<Detail | DateDetail>>(() => {
return [
{
name: "Sold To",
@ -217,8 +218,9 @@
{
name: "Sold At",
text: item.value?.soldTime || "",
type: "date",
},
] as Detail[];
];
});
const confirm = useConfirm();