Skip to content

Commit

Permalink
Fix custom default category
Browse files Browse the repository at this point in the history
  • Loading branch information
seanmorley15 committed Nov 26, 2024
1 parent 17d8784 commit ce0b82a
Show file tree
Hide file tree
Showing 10 changed files with 66 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class Migration(migrations.Migration):
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
('name', models.CharField(max_length=200)),
('display_name', models.CharField(max_length=200)),
('icon', models.CharField(default='🌎', max_length=200)),
('icon', models.CharField(default='🌍', max_length=200)),
('user_id', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
options={
Expand Down
4 changes: 2 additions & 2 deletions backend/server/adventures/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def save(self, force_insert: bool = False, force_update: bool = False, using: st
if force_insert and force_update:
raise ValueError("Cannot force both insert and updating in model saving.")
if not self.category:
self.category = Category.objects.get_or_create(user_id=self.user_id, name='general', display_name='General', icon='🌎')[0]
self.category = Category.objects.get_or_create(user_id=self.user_id, name='general', display_name='General', icon='🌍')[0]
return super().save(force_insert, force_update, using, update_fields)

def __str__(self):
Expand Down Expand Up @@ -260,7 +260,7 @@ class Category(models.Model):
User, on_delete=models.CASCADE, default=default_user_id)
name = models.CharField(max_length=200)
display_name = models.CharField(max_length=200)
icon = models.CharField(max_length=200, default='🌎')
icon = models.CharField(max_length=200, default='🌍')

class Meta:
verbose_name_plural = 'Categories'
Expand Down
2 changes: 1 addition & 1 deletion backend/server/adventures/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ def get_or_create_category(self, category_data):
if isinstance(category_data, dict):
name = category_data.get('name', '').lower()
display_name = category_data.get('display_name', name)
icon = category_data.get('icon', '🌎')
icon = category_data.get('icon', '')
else:
name = category_data.name.lower()
display_name = category_data.display_name
Expand Down
2 changes: 1 addition & 1 deletion backend/server/adventures/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -644,7 +644,7 @@ def destroy(self, request, *args, **kwargs):
general_category = Category.objects.filter(user_id=request.user, name='general').first()

if not general_category:
general_category = Category.objects.create(user_id=request.user, name='general', icon='🌎', display_name='General')
general_category = Category.objects.create(user_id=request.user, name='general', icon='🌍', display_name='General')

Adventure.objects.filter(category=instance).update(category=general_category)

Expand Down
5 changes: 5 additions & 0 deletions documentation/.vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export default defineConfig({
title: "AdventureLog",
description: "The ultimate travel companion.",
lang: "en-US",
// lastUpdated: true,

ignoreDeadLinks: [
// ignore exact url "/playground"
Expand Down Expand Up @@ -33,6 +34,10 @@ export default defineConfig({
search: {
provider: "local",
},
editLink: {
pattern:
"https://github.com/seanmorley15/AdventureLog/edit/main/documentation/:path",
},

footer: {
message: "AdventureLog",
Expand Down
12 changes: 12 additions & 0 deletions frontend/src/lib/components/AdventureModal.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,18 @@
event.preventDefault();
console.log(adventure);
if (adventure.id === '') {
console.log(categories);
if (categories.some((category) => category.name === 'general')) {
adventure.category = categories.find((category) => category.name === 'general') as Category;
} else {
adventure.category = {
id: '',
name: 'general',
display_name: 'General',
icon: '🌍',
user_id: ''
};
}
let res = await fetch('/api/adventures', {
method: 'POST',
headers: {
Expand Down
51 changes: 39 additions & 12 deletions frontend/src/lib/components/CategoryModal.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
let category_to_edit: Category | null = null;
let is_changed: boolean = false;
onMount(async () => {
modal = document.getElementById('my_modal_1') as HTMLDialogElement;
if (modal) {
Expand Down Expand Up @@ -39,6 +41,7 @@
}
return c;
});
is_changed = true;
}
}
}
Expand All @@ -60,6 +63,7 @@
});
if (response.ok) {
categories = categories.filter((c) => c.id !== category.id);
is_changed = true;
}
};
}
Expand Down Expand Up @@ -87,21 +91,44 @@
{/if}

{#if category_to_edit}
<input
type="text"
placeholder="Name"
bind:value={category_to_edit.display_name}
class="input input-bordered w-full max-w-xs"
/>
<input
type="text"
placeholder="Icon"
bind:value={category_to_edit.icon}
class="input input-bordered w-full max-w-xs"
/>
<h2 class="text-center text-xl font-semibold mt-2 mb-2">Edit Category</h2>
<div class="flex flex-row space-x-2 form-control">
<input
type="text"
placeholder="Name"
bind:value={category_to_edit.display_name}
class="input input-bordered w-full max-w-xs"
/>

<input
type="text"
placeholder="Icon"
bind:value={category_to_edit.icon}
class="input input-bordered w-full max-w-xs"
/>
</div>
<button class="btn btn-primary" on:click={saveCategory}>Save</button>
{/if}

<button class="btn btn-primary mt-4" on:click={close}>{$t('about.close')}</button>

{#if is_changed}
<div role="alert" class="alert alert-info mt-6">
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
class="h-6 w-6 shrink-0 stroke-current"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
></path>
</svg>
<span>The adventure cards will be updated once you refresh the page.</span>
</div>
{/if}
</div>
</dialog>
3 changes: 1 addition & 2 deletions frontend/src/routes/adventures/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -361,8 +361,7 @@
</div>
<div class="divider"></div>
<div class="form-control">
<br />
<p class="text-lg font-semibold mt-2 mb-2">{$t('adventures.sources')}</p>
<p class="text-lg font-semibold mb-2">{$t('adventures.sources')}</p>
<label class="label cursor-pointer">
<span class="label-text">{$t('adventures.collection_adventures')}</span>
<input
Expand Down
7 changes: 2 additions & 5 deletions frontend/src/routes/adventures/[id]/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -265,9 +265,7 @@
<div>
<p class="text-sm text-muted-foreground">{$t('adventures.adventure_type')}</p>
<p class="text-base font-medium">
{typeof adventure.category === 'object'
? `${adventure.category.display_name} ${adventure.category.icon}`
: ''}
{adventure.category?.display_name + ' ' + adventure.category?.icon}
</p>
</div>
{#if data.props.collection}
Expand Down Expand Up @@ -339,8 +337,7 @@
<Popup openOn="click" offset={[0, -10]}>
<div class="text-lg text-black font-bold">{adventure.name}</div>
<p class="font-semibold text-black text-md">
{typeof adventure.category === 'object' && adventure.category.display_name}
{typeof adventure.category === 'object' && adventure.category.icon}
{adventure.category?.display_name + ' ' + adventure.category?.icon}
</p>
{#if adventure.visits.length > 0}
<p class="text-black text-sm">
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/routes/map/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@
on:click={togglePopup}
>
<span class="text-xl">
{typeof adventure.category === 'object' ? adventure.category.icon : adventure.category}
{adventure.category?.display_name + ' ' + adventure.category?.icon}
</span>
{#if isPopupOpen}
<Popup openOn="click" offset={[0, -10]} on:close={() => (isPopupOpen = false)}>
Expand All @@ -138,7 +138,7 @@
{adventure.is_visited ? $t('adventures.visited') : $t('adventures.planned')}
</p>
<p class="font-semibold text-black text-md">
{adventure.category.display_name + ' ' + adventure.category.icon}
{adventure.category?.display_name + ' ' + adventure.category?.icon}
</p>
{#if adventure.visits && adventure.visits.length > 0}
<p class="text-black text-sm">
Expand Down

0 comments on commit ce0b82a

Please sign in to comment.