From 054c7faaacfca30ab15f6fcb4241949aef4c87eb Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Sat, 13 Feb 2021 19:26:38 +0100 Subject: [PATCH 01/19] =?UTF-8?q?=E2=9C=A8=20basic=20Contact=20components?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #50 --- src/App.svelte | 9 + src/components/AddContactModal.svelte | 406 +++++++++++++++++++++++++ src/components/AddRunnerModal.svelte | 4 +- src/components/ContactOverview.svelte | 168 ++++++++++ src/components/Contacts.svelte | 30 ++ src/components/ContactsOverview.svelte | 171 +++++++++++ src/components/Dashboard.svelte | 7 + src/locales/en.json | 360 +++++++++++----------- 8 files changed, 974 insertions(+), 181 deletions(-) create mode 100644 src/components/AddContactModal.svelte create mode 100644 src/components/ContactOverview.svelte create mode 100644 src/components/Contacts.svelte create mode 100644 src/components/ContactsOverview.svelte diff --git a/src/App.svelte b/src/App.svelte index e88cfdea..afecf3e6 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -53,6 +53,7 @@ import Imprint from "./components/Imprint.svelte"; import Privacy from "./components/Privacy.svelte"; import ResetPassword from "./components/ResetPassword.svelte"; +import Contacts from "./components/Contacts.svelte"; store.init(); registerSW(); @@ -119,6 +120,14 @@ import ResetPassword from "./components/ResetPassword.svelte"; + + + + + + + + diff --git a/src/components/AddContactModal.svelte b/src/components/AddContactModal.svelte new file mode 100644 index 00000000..85115dea --- /dev/null +++ b/src/components/AddContactModal.svelte @@ -0,0 +1,406 @@ + + +{#if modal_open} +
{ + modal_open = false; + }}> +
+ +
+{/if} diff --git a/src/components/AddRunnerModal.svelte b/src/components/AddRunnerModal.svelte index 32c0da99..fe4cc642 100644 --- a/src/components/AddRunnerModal.svelte +++ b/src/components/AddRunnerModal.svelte @@ -36,7 +36,7 @@ $: firstname_input_value = ""; $: processed_last_submit = true; $: isPhoneValidOrEmpty = - isMobilePhone( + phone_input_value.includes("+")&&isMobilePhone( phone_input_value .replaceAll("(", "") .replaceAll(")", "") @@ -258,7 +258,7 @@ {#if !isPhoneValidOrEmpty} - {$_('the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number')} + {@html $_('the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number')} {/if}
diff --git a/src/components/ContactOverview.svelte b/src/components/ContactOverview.svelte new file mode 100644 index 00000000..fcf45b6f --- /dev/null +++ b/src/components/ContactOverview.svelte @@ -0,0 +1,168 @@ + + +{#if store.state.jwtinfo.userdetails.permissions.includes('TEAM:GET')} + {#await promise} + + {:then} + {#if current_teams.length === 0} + + {:else} + +
+ + + + + + + + + + + {#each current_teams as t} + {#if Object.values(t) + .toString() + .toLowerCase() + .includes(searchvalue)} + + + + + {#if active_deletes[t.id] === true} + + {:else} + + {/if} + + {/if} + {/each} + +
+ Name + + {$_('organization')} + + Contact + + Action +
+
+
+
+ {t.name} +
+
+
+
+
+
+
+ {#if t.parentGroup} + {t.parentGroup.name} + {:else}no organization specified{/if} +
+
+
+
+
+
+
+ {#if t.contact} + {JSON.stringify(t.contact)} + {:else}no contact specified{/if} +
+
+
+
+ + + + Edit + {#if store.state.jwtinfo.userdetails.permissions.includes('TEAM:DELETE')} + + {/if} +
+
+ {/if} + {:catch error} +
+ + {$_('general_promise_error')} + {error} + +
+ {/await} +{/if} diff --git a/src/components/Contacts.svelte b/src/components/Contacts.svelte new file mode 100644 index 00000000..f15451f9 --- /dev/null +++ b/src/components/Contacts.svelte @@ -0,0 +1,30 @@ + + +
+ + {$_('contacts')} + {#if store.state.jwtinfo.userdetails.permissions.includes('USER:CREATE')} + + {/if} + + +
+ +{#if store.state.jwtinfo.userdetails.permissions.includes('USER:CREATE')} + +{/if} diff --git a/src/components/ContactsOverview.svelte b/src/components/ContactsOverview.svelte new file mode 100644 index 00000000..6984475d --- /dev/null +++ b/src/components/ContactsOverview.svelte @@ -0,0 +1,171 @@ + + +{#if store.state.jwtinfo.userdetails.permissions.includes('TEAM:GET')} + {#await promise} + + {:then} + {#if current_contacts.length === 0} + + {:else} + {JSON.stringify(current_contacts)} + +
+ + + + + + + + + + + {#each current_contacts as t} + {#if Object.values(t) + .toString() + .toLowerCase() + .includes(searchvalue)} + + + + + {#if active_deletes[t.id] === true} + + {:else} + + {/if} + + {/if} + {/each} + +
+ Name + + Groups + + Address + + Action +
+
+
+
+ {t.firstname} + {t.middlename || ''} + {t.lastname} +
+
+
+
+
+
+
+ {#if t.groups.length>0} + {#each t.groups as g} + {#if g.responseType==="RUNNERORGANIZATION"} + {g.name} + {:else} + {g.name} + {/if} + {/each} + {:else}no groups{/if} +
+
+
+
+
+
+
+ {#if t.contact} + {JSON.stringify(t.contact)} + {:else}no contact specified{/if} +
+
+
+
+ + + + Edit + {#if store.state.jwtinfo.userdetails.permissions.includes('TEAM:DELETE')} + + {/if} +
+
+ {/if} + {:catch error} +
+ + {$_('general_promise_error')} + {error} + +
+ {/await} +{/if} diff --git a/src/components/Dashboard.svelte b/src/components/Dashboard.svelte index 23de2d92..72ffc38d 100644 --- a/src/components/Dashboard.svelte +++ b/src/components/Dashboard.svelte @@ -122,6 +122,13 @@ {$_('tracks')} {/if} + + + {$_('contacts')} + please enter a valid international number...", - "this-might-take-a-moment": "This might take a moment πŸ‘€", - "total-distance": "total distance", - "total-donations": "total donations", - "total-scans": "total scans", - "track-added": "Track added", - "track-data-is-being-loaded": "Track data is being loaded", - "track-is-being-added": "Track is being added...", - "track-length-in-m": "Track Length in m", - "track-name": "Track name", - "tracks": "Tracks", - "updating-runner": "Updating runner...", - "updating-user": "updating user...", - "user-updated": "User updated", - "username": "Username", - "users": "Users", - "valid-email-is-required": "valid email is required", - "welcome_wavinghand": "Welcome πŸ‘‹", - "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! πŸŽ‰", - "your_profile": "Your Profile" -} \ No newline at end of file + "404message": "Sorry, the page you are looking for could not be found.", + "404title": "Error 404", + "about": "About", + "action": "Action", + "add-your-first-track": "Add your first track", + "address": "Address", + "application_name": "Lauf fΓΌr Kaya! - Admin", + "author": "Author", + "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import", + "browse": "Browse", + "by": "by", + "cancel": "Cancel", + "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", + "changelog": "Changelog", + "close": "Close", + "confirm-delete": "Confirm Delete", + "confirm-deletion": "Confirm Deletion", + "contact": "Contact", + "contact-information": "Contact Information", + "count_organizations": "# Organizations", + "count_teams": "# Teams", + "create": "Create", + "create-a-new-runner": "Create a new Runner", + "create-a-new-track": "Create a new Track", + "create-organization": "Create Organization", + "create-user": "Create User", + "credits": "Credits", + "csv_import__class": "Class", + "csv_import__firstname": "Firstname", + "csv_import__lastname": "Lastname", + "csv_import__middlename": "Middlename", + "csv_import__team": "Team", + "dashboard-greeting": "hello there", + "dashboard-title": "Dashboard", + "datatable": { + "search": "πŸ” Search...", + "sort_column_ascending": "Sort column ascending", + "sort_column_descending": "Sort column descending", + "previous": "Previous", + "next": "Next", + "page": "Page", + "showing": "Showing", + "records": "Records", + "of": "of", + "to": "to", + "loading": "Loading...", + "no_matching_records_found": "No matching records found", + "an_error_happened_while_fetching_the_data": "An error happened while fetching the data" + }, + "delete": "Delete", + "delete-organization": "Delete Organization", + "delete-runner": "Delete Runner", + "delete-team": "Delete Team", + "delete-user": "Delete User", + "dependency_name": "Name", + "distance": "Distance", + "distance-in-km": "Distance in km", + "dont-have-your-email-connected": "Don't have your email connected?", + "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", + "drag-and-drop-your-files-or": "Drag & Drop your files or", + "e-mail-adress": "E-Mail Adress", + "edit-permissions": "edit permissions", + "email_address_or_username": "Email / username", + "error_on_login": "Error on login", + "faq": "FAQ", + "filepond__abort": "Abort", + "filepond__cancel": "Cancel", + "filepond__error-during-load": "Error during load", + "filepond__error-during-remove": "Error during remove", + "filepond__error-during-revert": "Error during revert", + "filepond__error-during-upload": "Error during upload", + "filepond__field-contains-invalid-files": "Field contains invalid files", + "filepond__loading": "Loading", + "filepond__remove": "Remove", + "filepond__retry": "Retry", + "filepond__size-not-available": "Size not available", + "filepond__tap-to-cancel": "tap to cancel", + "filepond__tap-to-retry": "tap to retry", + "filepond__tap-to-undo": "tap to undo", + "filepond__undo": "Undo", + "filepond__upload": "Upload", + "filepond__upload-cancelled": "Upload cancelled", + "filepond__upload-complete": "Upload complete", + "filepond__uploading": "Uploading", + "filepond__waiting-for-size": "Waiting for size", + "first-name": "First name", + "first-name-is-required": "First Name is required", + "forgot_password?": "Forgot your password?", + "general-stats": "General Stats", + "general_promise_error": "😒 Error", + "go-to-login": "Go To Login", + "goback": "Go Home", + "group": "Group", + "groups": "Groups", + "hallo": "hello", + "icon-image-credits": "We also want to thank these projects for illustrations and icons:", + "import-runners": "Import runners", + "import__target-organization": "Target Organization", + "imprint": "Imprint 🧾", + "imprint-loading": "Imprint loading...", + "installed-version": "Installed version", + "invalid-mail-reset": "the provided email is invalid", + "last-name": "Last name", + "last-name-is-required": "Last Name is required", + "lfk-is-os": "The \"Lauf fΓΌr Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", + "license": "License", + "licenses-are-being-loaded": "Licenses are being loaded...", + "loading-runners": "loading runners...", + "log_in": "Log in", + "log_in_to_your_account": "Log in to your account", + "login_is_checked": "Login is being checked...", + "logout": "Logout", + "mail-validation-in-progress": "mail validation in progress...", + "manage-admin-users": "manage admin users", + "middle-name": "Middle name", + "minimum-lap-time-in-s": "minimum lap time in s", + "name": "Name", + "new-password": "New password", + "no-license-text-could-be-found": "No license text could be found 😒", + "no-tracks-added-yet": "there are no tracks added yet.", + "organization": "Organization", + "organizations": "Organizations", + "orgs": "Orgs", + "oss_credit_description": "We use a lot of open source software on these projects, and would like to thank the following projects and contributors who help make open source great!", + "password": "Password", + "password-is-required": "Password is required", + "password-reset-failed": "Password reset failed!", + "password-reset-in-progress": "Password Reset in Progress...", + "password-reset-successful": "Password Reset successful!", + "permissions": "Permissions", + "phone": "Phone", + "please-provide-a-password": "Please provide a password...", + "please-provide-the-required-csv-xlsx-file": "Please provide the required csv/ xlsx file", + "please-provide-the-required-information-to-add-a-new-runner": "Please provide the required information to add a new runner.", + "please-provide-the-required-information-to-add-a-new-track": "Please provide the required information to add a new track.", + "please-request-a-new-reset-mail": "Please request a new reset mail...", + "privacy": "Privacy πŸ”’", + "privacy-loading": "Privacy loading...", + "profile-picture": "Profile Picture", + "read-license": "Read License", + "register": "Register", + "repo_link": "Link", + "request-a-new-reset-mail": "Request a new reset mail", + "reset-my-password": "Reset my password", + "reset-password": "Reset your password", + "runner-import": "Runner Import", + "runner-updated": "Runner updated!", + "runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"", + "runners": "Runners", + "save-changes": "Save Changes", + "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", + "settings": "Settings", + "signout": "Sign out", + "stats-are-being-loaded": "stats are being loaded...", + "successful-password-reset": "Successful password reset!", + "team": "Team", + "team-name": "Team name", + "teams": "Teams", + "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "the provided phone number is invalid.
please enter a valid international number...", + "this-might-take-a-moment": "This might take a moment πŸ‘€", + "total-distance": "total distance", + "total-donations": "total donations", + "total-scans": "total scans", + "track-added": "Track added", + "track-data-is-being-loaded": "Track data is being loaded", + "track-is-being-added": "Track is being added...", + "track-length-in-m": "Track Length in m", + "track-name": "Track name", + "tracks": "Tracks", + "updating-runner": "Updating runner...", + "updating-user": "updating user...", + "user-updated": "User updated", + "username": "Username", + "users": "Users", + "valid-email-is-required": "valid email is required", + "welcome_wavinghand": "Welcome πŸ‘‹", + "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! πŸŽ‰", + "your_profile": "Your Profile", + "contacts": "Contacts", + "create-a-new-contact": "Create a new contact" +} -- 2.47.2 From a7098df9cfe6ba4dffe2ed121b1e9ae69f40e89d Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Sat, 13 Feb 2021 20:13:05 +0100 Subject: [PATCH 02/19] =?UTF-8?q?=E2=9C=A8=20ContactsEmptyState?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #50 --- src/components/ContactsEmptyState.svelte | 17 +++++++++++++++++ src/components/ContactsOverview.svelte | 21 ++++++++++----------- 2 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 src/components/ContactsEmptyState.svelte diff --git a/src/components/ContactsEmptyState.svelte b/src/components/ContactsEmptyState.svelte new file mode 100644 index 00000000..61ee6e5b --- /dev/null +++ b/src/components/ContactsEmptyState.svelte @@ -0,0 +1,17 @@ + + +
+

+ + There are no contacts added yet.
+ Add your first contact +

+
+ + diff --git a/src/components/ContactsOverview.svelte b/src/components/ContactsOverview.svelte index 6984475d..86546d2b 100644 --- a/src/components/ContactsOverview.svelte +++ b/src/components/ContactsOverview.svelte @@ -6,7 +6,7 @@ current_contacts=result; }) import store from "../store"; - // import TeamsEmptyState from "./TeamsEmptyState.svelte"; + import ContactsEmptyState from "./ContactsEmptyState.svelte"; $: searchvalue = ""; $: active_deletes = []; export let current_contacts = []; @@ -22,7 +22,7 @@ {:then} {#if current_contacts.length === 0} - + {:else} {JSON.stringify(current_contacts)}
- {#if t.contact} - {JSON.stringify(t.contact)} - {:else}no contact specified{/if} + + {t.address.address1}
+ {t.address.address2 || ''}
+ {t.address.postalcode} + {t.address.city} + {t.address.country}
@@ -118,20 +121,16 @@ Delete
+ + {/if} + {#if !delete_triggered} + + {/if} + {/if} + {#if !delete_triggered} + + {/if} + + + +
+ + + {#if !isFirstnameValid} + + {$_('first-name-is-required')} + + {/if} +
+
+ + +
+
+ + + {#if !isLastnameValid} + + {$_('last-name-is-required')} + + {/if} +
+
+ + + {#if !isEmailValid} + + {$_('valid-email-is-required')} + + {/if} +
+
+ + +
+
+ {$_('groups')} + +
+ +{:catch error} + +{/await} -- 2.47.2 From 0f013304ef34d848652351a69e5374f61166db10 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Mon, 15 Feb 2021 17:46:01 +0100 Subject: [PATCH 06/19] =?UTF-8?q?=F0=9F=A7=B9=20ContactOverview=20refineme?= =?UTF-8?q?nt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #50 --- src/components/ContactOverview.svelte | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/components/ContactOverview.svelte b/src/components/ContactOverview.svelte index fcf45b6f..fe2d25e1 100644 --- a/src/components/ContactOverview.svelte +++ b/src/components/ContactOverview.svelte @@ -2,18 +2,15 @@ import { t, _ } from "svelte-i18n"; import Toastify from "toastify-js"; import { GroupContactService } from "@odit/lfk-client-js"; - const promise = GroupContactService.groupContactControllerGetAll() + const promise = GroupContactService.groupContactControllerGetAll(); import { users as usersstore } from "../store.js"; import store from "../store"; import TeamsEmptyState from "./TeamsEmptyState.svelte"; - // import ConfirmTeamDeletion from "./ConfirmTeamDeletion.svelte"; $: searchvalue = ""; $: active_deletes = []; - export let current_teams = []; - let modal_open = false; - let delete_team = {}; + export let contacts = []; usersstore.subscribe((val) => { - current_teams = val; + contacts = val; }); promise.then((data) => { usersstore.set(data); @@ -29,7 +26,7 @@

{$_('this-might-take-a-moment')}

{:then} - {#if current_teams.length === 0} + {#if contacts.length === 0} {:else} - {#each current_teams as t} + {#each contacts as t} {#if Object.values(t) .toString() .toLowerCase() @@ -87,7 +84,7 @@
{t.parentGroup.name} - {:else}no organization specified{/if} + {:else}no groups{/if} @@ -115,19 +112,18 @@ Delete {/if} diff --git a/src/components/ContactsEmptyState.svelte b/src/components/ContactsEmptyState.svelte index 61ee6e5b..7188c76f 100644 --- a/src/components/ContactsEmptyState.svelte +++ b/src/components/ContactsEmptyState.svelte @@ -9,8 +9,8 @@

- There are no contacts added yet.
- Add your first contact + {$_('there-are-no-contacts-added-yet')}
+ {$_('add-your-first-contact')}

diff --git a/src/components/ContactsOverview.svelte b/src/components/ContactsOverview.svelte index 9ee992e8..6ebeca5f 100644 --- a/src/components/ContactsOverview.svelte +++ b/src/components/ContactsOverview.svelte @@ -93,7 +93,9 @@ {g.name} {/if} {/each} - {:else}no groups{/if} + {:else} + {$_('contact-is-not-a-member-in-any-group')} + {/if} @@ -121,8 +123,7 @@ active_deletes[t.id] = false; }} tabindex="0" - class="ml-4 text-indigo-600 hover:text-indigo-900 cursor-pointer">Cancel - Delete + class="ml-4 text-indigo-600 hover:text-indigo-900 cursor-pointer">{$_('cancel-delete')} + class="ml-4 text-red-600 hover:text-red-900 cursor-pointer">{$_('confirm-delete')} {:else} Edit + class="text-indigo-600 hover:text-indigo-900">{$_('edit')} {#if store.state.jwtinfo.userdetails.permissions.includes('TEAM:DELETE')} + class="ml-4 text-red-600 hover:text-red-900 cursor-pointer">{$_('delete')} {/if} {/if} diff --git a/src/locales/en.json b/src/locales/en.json index e720e8ee..6af67984 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1,182 +1,202 @@ { - "404message": "Sorry, the page you are looking for could not be found.", - "404title": "Error 404", - "about": "About", - "action": "Action", - "add-your-first-track": "Add your first track", - "address": "Address", - "application_name": "Lauf fΓΌr Kaya! - Admin", - "author": "Author", - "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import", - "browse": "Browse", - "by": "by", - "cancel": "Cancel", - "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", - "changelog": "Changelog", - "close": "Close", - "confirm-delete": "Confirm Delete", - "confirm-deletion": "Confirm Deletion", - "contact": "Contact", - "contact-information": "Contact Information", - "count_organizations": "# Organizations", - "count_teams": "# Teams", - "create": "Create", - "create-a-new-runner": "Create a new Runner", - "create-a-new-track": "Create a new Track", - "create-organization": "Create Organization", - "create-user": "Create User", - "credits": "Credits", - "csv_import__class": "Class", - "csv_import__firstname": "Firstname", - "csv_import__lastname": "Lastname", - "csv_import__middlename": "Middlename", - "csv_import__team": "Team", - "dashboard-greeting": "hello there", - "dashboard-title": "Dashboard", - "datatable": { - "search": "πŸ” Search...", - "sort_column_ascending": "Sort column ascending", - "sort_column_descending": "Sort column descending", - "previous": "Previous", - "next": "Next", - "page": "Page", - "showing": "Showing", - "records": "Records", - "of": "of", - "to": "to", - "loading": "Loading...", - "no_matching_records_found": "No matching records found", - "an_error_happened_while_fetching_the_data": "An error happened while fetching the data" - }, - "delete": "Delete", - "delete-organization": "Delete Organization", - "delete-runner": "Delete Runner", - "delete-team": "Delete Team", - "delete-user": "Delete User", - "dependency_name": "Name", - "distance": "Distance", - "distance-in-km": "Distance in km", - "dont-have-your-email-connected": "Don't have your email connected?", - "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", - "drag-and-drop-your-files-or": "Drag & Drop your files or", - "e-mail-adress": "E-Mail Adress", - "edit-permissions": "edit permissions", - "email_address_or_username": "Email / username", - "error_on_login": "Error on login", - "faq": "FAQ", - "filepond__abort": "Abort", - "filepond__cancel": "Cancel", - "filepond__error-during-load": "Error during load", - "filepond__error-during-remove": "Error during remove", - "filepond__error-during-revert": "Error during revert", - "filepond__error-during-upload": "Error during upload", - "filepond__field-contains-invalid-files": "Field contains invalid files", - "filepond__loading": "Loading", - "filepond__remove": "Remove", - "filepond__retry": "Retry", - "filepond__size-not-available": "Size not available", - "filepond__tap-to-cancel": "tap to cancel", - "filepond__tap-to-retry": "tap to retry", - "filepond__tap-to-undo": "tap to undo", - "filepond__undo": "Undo", - "filepond__upload": "Upload", - "filepond__upload-cancelled": "Upload cancelled", - "filepond__upload-complete": "Upload complete", - "filepond__uploading": "Uploading", - "filepond__waiting-for-size": "Waiting for size", - "first-name": "First name", - "first-name-is-required": "First Name is required", - "forgot_password?": "Forgot your password?", - "general-stats": "General Stats", - "general_promise_error": "😒 Error", - "go-to-login": "Go To Login", - "goback": "Go Home", - "group": "Group", - "groups": "Groups", - "hallo": "hello", - "icon-image-credits": "We also want to thank these projects for illustrations and icons:", - "import-runners": "Import runners", - "import__target-organization": "Target Organization", - "imprint": "Imprint 🧾", - "imprint-loading": "Imprint loading...", - "installed-version": "Installed version", - "invalid-mail-reset": "the provided email is invalid", - "last-name": "Last name", - "last-name-is-required": "Last Name is required", - "lfk-is-os": "The \"Lauf fΓΌr Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", - "license": "License", - "licenses-are-being-loaded": "Licenses are being loaded...", - "loading-runners": "loading runners...", - "log_in": "Log in", - "log_in_to_your_account": "Log in to your account", - "login_is_checked": "Login is being checked...", - "logout": "Logout", - "mail-validation-in-progress": "mail validation in progress...", - "manage-admin-users": "manage admin users", - "middle-name": "Middle name", - "minimum-lap-time-in-s": "minimum lap time in s", - "name": "Name", - "new-password": "New password", - "no-license-text-could-be-found": "No license text could be found 😒", - "no-tracks-added-yet": "there are no tracks added yet.", - "organization": "Organization", - "organizations": "Organizations", - "orgs": "Orgs", - "oss_credit_description": "We use a lot of open source software on these projects, and would like to thank the following projects and contributors who help make open source great!", - "password": "Password", - "password-is-required": "Password is required", - "password-reset-failed": "Password reset failed!", - "password-reset-in-progress": "Password Reset in Progress...", - "password-reset-successful": "Password Reset successful!", - "permissions": "Permissions", - "phone": "Phone", - "please-provide-a-password": "Please provide a password...", - "please-provide-the-required-csv-xlsx-file": "Please provide the required csv/ xlsx file", - "please-provide-the-required-information-to-add-a-new-runner": "Please provide the required information to add a new runner.", - "please-provide-the-required-information-to-add-a-new-track": "Please provide the required information to add a new track.", - "please-request-a-new-reset-mail": "Please request a new reset mail...", - "privacy": "Privacy πŸ”’", - "privacy-loading": "Privacy loading...", - "profile-picture": "Profile Picture", - "read-license": "Read License", - "register": "Register", - "repo_link": "Link", - "request-a-new-reset-mail": "Request a new reset mail", - "reset-my-password": "Reset my password", - "reset-password": "Reset your password", - "runner-import": "Runner Import", - "runner-updated": "Runner updated!", - "runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"", - "runners": "Runners", - "save-changes": "Save Changes", - "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", - "settings": "Settings", - "signout": "Sign out", - "stats-are-being-loaded": "stats are being loaded...", - "successful-password-reset": "Successful password reset!", - "team": "Team", - "team-name": "Team name", - "teams": "Teams", - "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "the provided phone number is invalid.
please enter a valid international number...", - "this-might-take-a-moment": "This might take a moment πŸ‘€", - "total-distance": "total distance", - "total-donations": "total donations", - "total-scans": "total scans", - "track-added": "Track added", - "track-data-is-being-loaded": "Track data is being loaded", - "track-is-being-added": "Track is being added...", - "track-length-in-m": "Track Length in m", - "track-name": "Track name", - "tracks": "Tracks", - "updating-runner": "Updating runner...", - "updating-user": "updating user...", - "user-updated": "User updated", - "username": "Username", - "users": "Users", - "valid-email-is-required": "valid email is required", - "welcome_wavinghand": "Welcome πŸ‘‹", - "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! πŸŽ‰", - "your_profile": "Your Profile", - "contacts": "Contacts", - "create-a-new-contact": "Create a new contact" -} + "404message": "Sorry, the page you are looking for could not be found.", + "404title": "Error 404", + "about": "About", + "action": "Action", + "add-your-first-contact": "Add your first contact", + "add-your-first-track": "Add your first track", + "address": "Address", + "address-is-required": "Address is required", + "apartment-suite-etc": "Apartment, suite, etc.", + "application_name": "Lauf fΓΌr Kaya! - Admin", + "attention": "Attention!", + "author": "Author", + "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import", + "browse": "Browse", + "by": "by", + "cancel": "Cancel", + "cancel-delete": "Cancel Delete", + "cancel-keep-team": "Cancel, keep team", + "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", + "changelog": "Changelog", + "city": "City", + "close": "Close", + "confirm-delete": "Confirm Delete", + "confirm-delete-team-and-associated-runners": "Confirm, delete team and associated runners.", + "confirm-deletion": "Confirm Deletion", + "contact": "Contact", + "contact-information": "Contact Information", + "contact-is-being-updated": "Contact is being updated...", + "contact-is-not-a-member-in-any-group": "Contact is not a member in any group", + "contacts": "Contacts", + "count_organizations": "# Organizations", + "count_teams": "# Teams", + "create": "Create", + "create-a-new-contact": "Create a new contact", + "create-a-new-runner": "Create a new Runner", + "create-a-new-track": "Create a new Track", + "create-organization": "Create Organization", + "create-user": "Create User", + "credits": "Credits", + "csv_import__class": "Class", + "csv_import__firstname": "Firstname", + "csv_import__lastname": "Lastname", + "csv_import__middlename": "Middlename", + "csv_import__team": "Team", + "dashboard-greeting": "hello there", + "dashboard-title": "Dashboard", + "datatable": { + "search": "πŸ” Search...", + "sort_column_ascending": "Sort column ascending", + "sort_column_descending": "Sort column descending", + "previous": "Previous", + "next": "Next", + "page": "Page", + "showing": "Showing", + "records": "Records", + "of": "of", + "to": "to", + "loading": "Loading...", + "no_matching_records_found": "No matching records found", + "an_error_happened_while_fetching_the_data": "An error happened while fetching the data" + }, + "delete": "Delete", + "delete-contact": "Delete Contact", + "delete-organization": "Delete Organization", + "delete-runner": "Delete Runner", + "delete-team": "Delete Team", + "delete-user": "Delete User", + "dependency_name": "Name", + "distance": "Distance", + "distance-in-km": "Distance in km", + "dont-have-your-email-connected": "Don't have your email connected?", + "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", + "drag-and-drop-your-files-or": "Drag & Drop your files or", + "e-mail-adress": "E-Mail Adress", + "edit": "Edit", + "edit-permissions": "edit permissions", + "email_address_or_username": "Email / username", + "error_on_login": "Error on login", + "faq": "FAQ", + "filepond__abort": "Abort", + "filepond__cancel": "Cancel", + "filepond__error-during-load": "Error during load", + "filepond__error-during-remove": "Error during remove", + "filepond__error-during-revert": "Error during revert", + "filepond__error-during-upload": "Error during upload", + "filepond__field-contains-invalid-files": "Field contains invalid files", + "filepond__loading": "Loading", + "filepond__remove": "Remove", + "filepond__retry": "Retry", + "filepond__size-not-available": "Size not available", + "filepond__tap-to-cancel": "tap to cancel", + "filepond__tap-to-retry": "tap to retry", + "filepond__tap-to-undo": "tap to undo", + "filepond__undo": "Undo", + "filepond__upload": "Upload", + "filepond__upload-cancelled": "Upload cancelled", + "filepond__upload-complete": "Upload complete", + "filepond__uploading": "Uploading", + "filepond__waiting-for-size": "Waiting for size", + "first-name": "First name", + "first-name-is-required": "First Name is required", + "forgot_password?": "Forgot your password?", + "general-stats": "General Stats", + "general_promise_error": "😒 Error", + "go-to-login": "Go To Login", + "goback": "Go Home", + "group": "Group", + "groups": "Groups", + "hallo": "hello", + "icon-image-credits": "We also want to thank these projects for illustrations and icons:", + "import-runners": "Import runners", + "import__target-organization": "Target Organization", + "imprint": "Imprint 🧾", + "imprint-loading": "Imprint loading...", + "installed-version": "Installed version", + "invalid-mail-reset": "the provided email is invalid", + "last-name": "Last name", + "last-name-is-required": "Last Name is required", + "lfk-is-os": "The \"Lauf fΓΌr Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", + "license": "License", + "licenses-are-being-loaded": "Licenses are being loaded...", + "loading-contact-details": "Loading contact details...", + "loading-runners": "loading runners...", + "log_in": "Log in", + "log_in_to_your_account": "Log in to your account", + "login_is_checked": "Login is being checked...", + "logout": "Logout", + "mail-validation-in-progress": "mail validation in progress...", + "manage-admin-users": "manage admin users", + "middle-name": "Middle name", + "minimum-lap-time-in-s": "minimum lap time in s", + "name": "Name", + "new-password": "New password", + "no-license-text-could-be-found": "No license text could be found 😒", + "no-tracks-added-yet": "there are no tracks added yet.", + "organization": "Organization", + "organizations": "Organizations", + "orgs": "Orgs", + "oss_credit_description": "We use a lot of open source software on these projects, and would like to thank the following projects and contributors who help make open source great!", + "password": "Password", + "password-is-required": "Password is required", + "password-reset-failed": "Password reset failed!", + "password-reset-in-progress": "Password Reset in Progress...", + "password-reset-successful": "Password Reset successful!", + "permissions": "Permissions", + "phone": "Phone", + "please-provide-a-password": "Please provide a password...", + "please-provide-the-required-csv-xlsx-file": "Please provide the required csv/ xlsx file", + "please-provide-the-required-information-to-add-a-new-runner": "Please provide the required information to add a new runner.", + "please-provide-the-required-information-to-add-a-new-track": "Please provide the required information to add a new track.", + "please-request-a-new-reset-mail": "Please request a new reset mail...", + "privacy": "Privacy πŸ”’", + "privacy-loading": "Privacy loading...", + "profile-picture": "Profile Picture", + "read-license": "Read License", + "register": "Register", + "repo_link": "Link", + "request-a-new-reset-mail": "Request a new reset mail", + "reset-my-password": "Reset my password", + "reset-password": "Reset your password", + "runner-import": "Runner Import", + "runner-updated": "Runner updated!", + "runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"", + "runners": "Runners", + "save-changes": "Save Changes", + "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", + "settings": "Settings", + "signout": "Sign out", + "stats-are-being-loaded": "stats are being loaded...", + "successful-password-reset": "Successful password reset!", + "team": "Team", + "team-name": "Team name", + "teams": "Teams", + "teams-are-being-loaded": "Teams are being loaded...", + "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "the provided phone number is invalid.
please enter a valid international number...", + "there-are-no-contacts-added-yet": "There are no contacts added yet.", + "this-might-take-a-moment": "This might take a moment πŸ‘€", + "total-distance": "total distance", + "total-donations": "total donations", + "total-scans": "total scans", + "track-added": "Track added", + "track-data-is-being-loaded": "Track data is being loaded", + "track-is-being-added": "Track is being added...", + "track-length-in-m": "Track Length in m", + "track-name": "Track name", + "tracks": "Tracks", + "updated-contact": "Updated contact!", + "updating-runner": "Updating runner...", + "updating-user": "updating user...", + "user-updated": "User updated", + "username": "Username", + "users": "Users", + "valid-city-is-required": "Valid city is required", + "valid-email-is-required": "valid email is required", + "valid-international-phone-number-is-required": "valid international phone number is required...", + "valid-zipcode-postal-code-is-required": "Valid zipcode/ postal code is required", + "welcome_wavinghand": "Welcome πŸ‘‹", + "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! πŸŽ‰", + "your_profile": "Your Profile", + "zip-postal-code": "ZIP/ postal code" +} \ No newline at end of file -- 2.47.2 From 2033572c83654bc51ece17ef60e29c425001fe1c Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Wed, 17 Feb 2021 19:45:37 +0100 Subject: [PATCH 14/19] =?UTF-8?q?=E2=9C=A8=20TeamDetail=20-=20edit=20conta?= =?UTF-8?q?ct?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #50 --- src/components/TeamDetail.svelte | 37 +++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/src/components/TeamDetail.svelte b/src/components/TeamDetail.svelte index fec053dd..9b7818e5 100644 --- a/src/components/TeamDetail.svelte +++ b/src/components/TeamDetail.svelte @@ -1,5 +1,6 @@ @@ -216,13 +227,19 @@ - + class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"> + + {#each contacts as c} + + {/each} +
-- 2.47.2 From 1586c2f9e625a5eaa116251e5ebd83fcebd3bee5 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Wed, 17 Feb 2021 19:51:04 +0100 Subject: [PATCH 15/19] =?UTF-8?q?=E2=9C=A8=20OrgDetail=20-=20edit=20contac?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #50 --- src/components/OrgDetail.svelte | 36 +++++++++++++++++++++++++------- src/components/TeamDetail.svelte | 2 +- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/components/OrgDetail.svelte b/src/components/OrgDetail.svelte index df23936c..8e6b5f24 100644 --- a/src/components/OrgDetail.svelte +++ b/src/components/OrgDetail.svelte @@ -1,5 +1,8 @@