Merge branch 'main' into feature/date-math
# Conflicts: # src/views/tasks/ShowTasks.vue
This commit is contained in:
commit
d5f0158b04
29 changed files with 1182 additions and 660 deletions
|
@ -123,7 +123,6 @@ steps:
|
|||
- yarn serve:dist & npx wait-on http://localhost:4173
|
||||
- yarn test:frontend --browser chrome --record
|
||||
depends_on:
|
||||
- dependencies
|
||||
- build-prod
|
||||
|
||||
- name: deploy-preview
|
||||
|
@ -137,6 +136,9 @@ steps:
|
|||
GITEA_TOKEN:
|
||||
from_secret: gitea_token
|
||||
commands:
|
||||
- cp -r dist dist-preview
|
||||
# Override the default api url used for preview
|
||||
- sed -i 's|localhost:3456|try.vikunja.io|g' dist-preview/index.html
|
||||
- shasum -a 384 -c ./scripts/deploy-preview-netlify.js.sha384
|
||||
- node ./scripts/deploy-preview-netlify.js
|
||||
depends_on:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[build]
|
||||
command = "yarn build"
|
||||
publish = "dist"
|
||||
publish = "dist-preview"
|
||||
|
||||
[[redirects]]
|
||||
from = "/*"
|
||||
|
|
36
package.json
36
package.json
|
@ -20,15 +20,15 @@
|
|||
"dependencies": {
|
||||
"@github/hotkey": "2.0.0",
|
||||
"@kyvg/vue3-notification": "2.3.4",
|
||||
"@sentry/tracing": "6.17.9",
|
||||
"@sentry/vue": "6.17.9",
|
||||
"@sentry/tracing": "6.18.0",
|
||||
"@sentry/vue": "6.18.0",
|
||||
"@types/is-touch-device": "1.0.0",
|
||||
"@vue/compat": "3.2.31",
|
||||
"@vueuse/core": "7.6.2",
|
||||
"@vueuse/router": "7.6.2",
|
||||
"bulma-css-variables": "0.9.33",
|
||||
"camel-case": "4.1.2",
|
||||
"codemirror": "5.65.1",
|
||||
"codemirror": "5.65.2",
|
||||
"copy-to-clipboard": "3.3.1",
|
||||
"date-fns": "2.28.0",
|
||||
"dompurify": "2.3.6",
|
||||
|
@ -42,7 +42,7 @@
|
|||
"marked": "4.0.12",
|
||||
"register-service-worker": "1.7.2",
|
||||
"snake-case": "3.0.4",
|
||||
"ufo": "0.7.10",
|
||||
"ufo": "0.7.11",
|
||||
"v-tooltip": "4.0.0-beta.17",
|
||||
"vue": "3.2.31",
|
||||
"vue-advanced-cropper": "2.8.1",
|
||||
|
@ -52,7 +52,7 @@
|
|||
"vue-router": "4.0.12",
|
||||
"vuedraggable": "4.1.0",
|
||||
"vuex": "4.0.2",
|
||||
"workbox-precaching": "6.4.2"
|
||||
"workbox-precaching": "6.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@4tw/cypress-drag-drop": "2.1.0",
|
||||
|
@ -62,8 +62,8 @@
|
|||
"@fortawesome/free-solid-svg-icons": "5.15.4",
|
||||
"@fortawesome/vue-fontawesome": "3.0.0-5",
|
||||
"@types/flexsearch": "0.7.2",
|
||||
"@typescript-eslint/eslint-plugin": "5.12.0",
|
||||
"@typescript-eslint/parser": "5.12.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.12.1",
|
||||
"@typescript-eslint/parser": "5.12.1",
|
||||
"@vitejs/plugin-legacy": "1.7.1",
|
||||
"@vitejs/plugin-vue": "2.2.2",
|
||||
"@vue/eslint-config-typescript": "10.0.0",
|
||||
|
@ -73,24 +73,24 @@
|
|||
"caniuse-lite": "1.0.30001312",
|
||||
"cypress": "9.5.0",
|
||||
"esbuild": "0.14.23",
|
||||
"eslint": "8.9.0",
|
||||
"eslint-plugin-vue": "8.4.1",
|
||||
"eslint": "8.10.0",
|
||||
"eslint-plugin-vue": "8.5.0",
|
||||
"express": "4.17.3",
|
||||
"happy-dom": "2.39.1",
|
||||
"netlify-cli": "8.16.1",
|
||||
"postcss": "8.4.6",
|
||||
"happy-dom": "2.41.0",
|
||||
"netlify-cli": "9.6.5",
|
||||
"postcss": "8.4.7",
|
||||
"postcss-preset-env": "7.4.1",
|
||||
"rollup": "2.67.3",
|
||||
"rollup-plugin-visualizer": "5.5.4",
|
||||
"sass": "1.49.8",
|
||||
"rollup": "2.68.0",
|
||||
"rollup-plugin-visualizer": "5.6.0",
|
||||
"sass": "1.49.9",
|
||||
"typescript": "4.5.5",
|
||||
"vite": "2.8.4",
|
||||
"vite-plugin-pwa": "0.11.13",
|
||||
"vite-svg-loader": "3.1.2",
|
||||
"vitest": "0.4.2",
|
||||
"vue-tsc": "0.31.4",
|
||||
"vitest": "0.5.7",
|
||||
"vue-tsc": "0.32.0",
|
||||
"wait-on": "6.0.1",
|
||||
"workbox-cli": "6.4.2"
|
||||
"workbox-cli": "6.5.0"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
|
||||
<script setup lang="ts">
|
||||
import {ref, computed, watch} from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import {useI18n} from 'vue-i18n'
|
||||
import {parseURL} from 'ufo'
|
||||
|
||||
import {checkAndSetApiUrl} from '@/helpers/checkAndSetApiUrl'
|
||||
|
@ -61,18 +61,20 @@ const emit = defineEmits(['foundApi'])
|
|||
const apiUrl = ref(window.API_URL)
|
||||
const configureApi = ref(apiUrl.value === '')
|
||||
|
||||
const apiDomain = computed(() => parseURL(apiUrl.value).host || parseURL(window.location.href).host)
|
||||
|
||||
// Because we're only using this to parse the hostname, it should be fine to just prefix with http://
|
||||
// regardless of whether the url is actually reachable under http.
|
||||
const apiDomain = computed(() => parseURL(apiUrl.value, 'http://').host || parseURL(window.location.href).host)
|
||||
|
||||
watch(() => props.configureOpen, (value) => {
|
||||
configureApi.value = value
|
||||
}, { immediate: true })
|
||||
}, {immediate: true})
|
||||
|
||||
|
||||
const {t} = useI18n()
|
||||
|
||||
const errorMsg = ref('')
|
||||
const successMsg = ref('')
|
||||
|
||||
async function setApiUrl() {
|
||||
if (apiUrl.value === '') {
|
||||
// Don't try to check and set an empty url
|
||||
|
|
|
@ -84,14 +84,6 @@ export default {
|
|||
BaseButton,
|
||||
},
|
||||
|
||||
mounted() {
|
||||
document.addEventListener('keydown', (e) => {
|
||||
// Close the model when escape is pressed
|
||||
if (e.keyCode === 27) {
|
||||
this.$emit('close')
|
||||
}
|
||||
})
|
||||
},
|
||||
props: {
|
||||
enabled: {
|
||||
type: Boolean,
|
||||
|
|
|
@ -81,7 +81,7 @@ export default {
|
|||
return this.notifications.filter(n => n.readAt === null).length
|
||||
},
|
||||
notifications() {
|
||||
return this.allNotifications.filter(n => n.name !== '')
|
||||
return this.allNotifications ? this.allNotifications.filter(n => n.name !== '') : []
|
||||
},
|
||||
...mapState({
|
||||
userInfo: state => state.auth.info,
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
v-focus
|
||||
v-model="newTaskTitle"
|
||||
ref="newTaskInput"
|
||||
@keyup="errorMessage = ''"
|
||||
@keyup="resetEmptyTitleError"
|
||||
@keydown.enter="handleEnter"
|
||||
/>
|
||||
<span class="icon is-small is-left">
|
||||
|
@ -135,6 +135,12 @@ const store = useStore()
|
|||
const taskService = shallowReactive(new TaskService())
|
||||
const errorMessage = ref('')
|
||||
|
||||
function resetEmptyTitleError() {
|
||||
if(newTaskTitle.value !== '') {
|
||||
errorMessage.value = ''
|
||||
}
|
||||
}
|
||||
|
||||
async function addTask() {
|
||||
if (newTaskTitle.value === '') {
|
||||
errorMessage.value = t('list.create.addTitleRequired')
|
||||
|
|
|
@ -114,7 +114,7 @@ export default {
|
|||
},
|
||||
|
||||
async removeLabel(label) {
|
||||
if (!this.taskId === 0) {
|
||||
if (this.taskId !== 0) {
|
||||
await this.$store.dispatch('tasks/removeLabel', {label: label, taskId: this.taskId})
|
||||
}
|
||||
|
||||
|
|
|
@ -190,10 +190,7 @@ export default {
|
|||
this.$t('task.undoneSuccess'),
|
||||
}, [{
|
||||
title: 'Undo',
|
||||
callback() {
|
||||
this.task.done = !this.task.done
|
||||
this.markAsDone(!checked)
|
||||
},
|
||||
callback: () => this.undoDone(checked),
|
||||
}])
|
||||
}
|
||||
|
||||
|
@ -203,6 +200,11 @@ export default {
|
|||
await updateFunc() // Don't delay it when un-marking it as it doesn't have an animation the other way around
|
||||
}
|
||||
},
|
||||
|
||||
undoDone(checked) {
|
||||
this.task.done = !this.task.done
|
||||
this.markAsDone(!checked)
|
||||
},
|
||||
|
||||
async toggleFavorite() {
|
||||
this.task.isFavorite = !this.task.isFavorite
|
||||
|
|
|
@ -570,22 +570,22 @@
|
|||
"text2": "Tímto také odstraníte všechny přílohy, připomenutí a vztahy spojené s tímto úkolem a nelze je vrátit zpět!"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Přiřadit uživateli",
|
||||
"label": "Přidat štítky",
|
||||
"assign": "Assign to User",
|
||||
"label": "Add Labels",
|
||||
"priority": "Nastavit prioritu",
|
||||
"dueDate": "Nastavit termín",
|
||||
"startDate": "Nastavit počáteční datum",
|
||||
"endDate": "Nastavit koncové datum",
|
||||
"startDate": "Set Start Date",
|
||||
"endDate": "Set End Date",
|
||||
"reminders": "Nastavit připomenutí",
|
||||
"repeatAfter": "Nastavit interval opakování",
|
||||
"repeatAfter": "Set Repeating Interval",
|
||||
"percentDone": "Set Progress",
|
||||
"attachments": "Přidat přílohy",
|
||||
"relatedTasks": "Přidat vztahy úkolu",
|
||||
"moveList": "Přesunout úkol",
|
||||
"color": "Nastavit barvu úkolu",
|
||||
"delete": "Smazat úkol",
|
||||
"favorite": "Uložit jako oblíbené",
|
||||
"unfavorite": "Odebrat z oblíbených"
|
||||
"attachments": "Add Attachments",
|
||||
"relatedTasks": "Add Relation",
|
||||
"moveList": "Move",
|
||||
"color": "Set Color",
|
||||
"delete": "Delete",
|
||||
"favorite": "Add to Favorites",
|
||||
"unfavorite": "Remove from Favorites"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
|
|
@ -580,11 +580,11 @@
|
|||
"repeatAfter": "Wiederholung setzen",
|
||||
"percentDone": "Fortschritt einstellen",
|
||||
"attachments": "Anhänge hinzufügen",
|
||||
"relatedTasks": "Aufgabenbeziehungen hinzufügen",
|
||||
"moveList": "Aufgabe verschieben",
|
||||
"color": "Taskfarbe setzen",
|
||||
"delete": "Aufgabe löschen",
|
||||
"favorite": "In Favoriten speichern",
|
||||
"relatedTasks": "Beziehung hinzufügen",
|
||||
"moveList": "Verschieben",
|
||||
"color": "Farbe setzen",
|
||||
"delete": "Löschen",
|
||||
"favorite": "Zu Favoriten hinzufügen",
|
||||
"unfavorite": "Aus Favoriten entfernen"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -571,20 +571,20 @@
|
|||
},
|
||||
"actions": {
|
||||
"assign": "Benutzer:in zuweisen",
|
||||
"label": "Label hinzuefüege",
|
||||
"label": "Label hinzufügen",
|
||||
"priority": "Priorität setzä",
|
||||
"dueDate": "Fälligkeitsdatum setze",
|
||||
"startDate": "Startdatum setze",
|
||||
"endDate": "Enddatum setze",
|
||||
"startDate": "Startdatum setzen",
|
||||
"endDate": "Enddatum setzen",
|
||||
"reminders": "Errinnerig iihstelle",
|
||||
"repeatAfter": "En wiederholende Intervall setze",
|
||||
"repeatAfter": "Wiederholung setzen",
|
||||
"percentDone": "Fortschritt einstellen",
|
||||
"attachments": "Aahang hinzuefüege",
|
||||
"relatedTasks": "Uufgabsbeziehig hinzufüege",
|
||||
"moveList": "Uufgab verschiebe",
|
||||
"color": "Uufgab Farb setze",
|
||||
"delete": "Uufgab chüble",
|
||||
"favorite": "In Favoriten speichern",
|
||||
"attachments": "Anhänge hinzufügen",
|
||||
"relatedTasks": "Beziehung hinzufügen",
|
||||
"moveList": "Verschieben",
|
||||
"color": "Farbe setzen",
|
||||
"delete": "Löschen",
|
||||
"favorite": "Zu Favoriten hinzufügen",
|
||||
"unfavorite": "Aus Favoriten entfernen"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -570,22 +570,22 @@
|
|||
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Assign to a user",
|
||||
"label": "Add labels",
|
||||
"assign": "Assign to User",
|
||||
"label": "Add Labels",
|
||||
"priority": "Set Priority",
|
||||
"dueDate": "Set Due Date",
|
||||
"startDate": "Set a Start Date",
|
||||
"endDate": "Set an End Date",
|
||||
"startDate": "Set Start Date",
|
||||
"endDate": "Set End Date",
|
||||
"reminders": "Set Reminders",
|
||||
"repeatAfter": "Set a repeating interval",
|
||||
"repeatAfter": "Set Repeating Interval",
|
||||
"percentDone": "Set Progress",
|
||||
"attachments": "Add attachments",
|
||||
"relatedTasks": "Add task relations",
|
||||
"moveList": "Move task",
|
||||
"color": "Set task color",
|
||||
"delete": "Delete task",
|
||||
"favorite": "Save as favorite",
|
||||
"unfavorite": "Remove from favorites"
|
||||
"attachments": "Add Attachments",
|
||||
"relatedTasks": "Add Relation",
|
||||
"moveList": "Move",
|
||||
"color": "Set Color",
|
||||
"delete": "Delete",
|
||||
"favorite": "Add to Favorites",
|
||||
"unfavorite": "Remove from Favorites"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
"lastViewed": "Dernière consultation",
|
||||
"list": {
|
||||
"newText": "Tu peux créer une nouvelle liste pour tes nouvelles tâches :",
|
||||
"new": "New list",
|
||||
"new": "Nouvelle liste",
|
||||
"importText": "Ou importe tes listes et tâches d’autres services dans Vikunja :",
|
||||
"import": "Importer tes données dans Vikunja"
|
||||
}
|
||||
|
@ -31,11 +31,11 @@
|
|||
"username": "Nom d’utilisateur·rice",
|
||||
"usernameEmail": "Nom d’utilisateur·rice ou adresse courriel",
|
||||
"usernamePlaceholder": "p. ex. frederick",
|
||||
"email": "Email address",
|
||||
"email": "Adresse courriel",
|
||||
"emailPlaceholder": "p. ex. frederic{'@'}vikunja.io",
|
||||
"password": "Mot de passe",
|
||||
"passwordPlaceholder": "p. ex. •••••••••••",
|
||||
"forgotPassword": "Forgot your password?",
|
||||
"forgotPassword": "Mot de passe oublié ?",
|
||||
"resetPassword": "Réinitialiser ton mot de passe",
|
||||
"resetPasswordAction": "M’envoyer un lien de réinitialisation du mot de passe",
|
||||
"resetPasswordSuccess": "Vérifie ta boîte de réception ! Tu devrais avoir un courriel contenant les instructions sur la manière de réinitialiser ton mot de passe.",
|
||||
|
@ -44,20 +44,20 @@
|
|||
"totpTitle": "Code d’authentification à deux facteurs",
|
||||
"totpPlaceholder": "p. ex. 123456",
|
||||
"login": "Se connecter",
|
||||
"createAccount": "Create account",
|
||||
"createAccount": "Créer un compte",
|
||||
"loginWith": "Se connecter avec {provider}",
|
||||
"authenticating": "Authentification…",
|
||||
"openIdStateError": "L’état ne correspond pas, impossible de continuer !",
|
||||
"openIdGeneralError": "Une erreur s'est produite lors de l'authentification contre un tiers.",
|
||||
"logout": "Se déconnecter",
|
||||
"emailInvalid": "Please enter a valid email address.",
|
||||
"usernameRequired": "Please provide a username.",
|
||||
"passwordRequired": "Please provide a password.",
|
||||
"showPassword": "Show the password",
|
||||
"hidePassword": "Hide the password",
|
||||
"noAccountYet": "Don't have an account yet?",
|
||||
"alreadyHaveAnAccount": "Already have an account?",
|
||||
"remember": "Stay logged in"
|
||||
"emailInvalid": "Veuillez saisir une adresse courriel valide.",
|
||||
"usernameRequired": "Veuillez saisir un nom d'utilisateur.",
|
||||
"passwordRequired": "Veuillez fournir un mot de passe.",
|
||||
"showPassword": "Afficher le mot de passe",
|
||||
"hidePassword": "Masquer le mot de passe",
|
||||
"noAccountYet": "Vous n'avez pas encore de compte ?",
|
||||
"alreadyHaveAnAccount": "Vous avez déjà un compte ?",
|
||||
"remember": "Rester connecté(e)"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Paramètres",
|
||||
|
@ -68,7 +68,7 @@
|
|||
"currentPasswordPlaceholder": "Ton mot de passe actuel",
|
||||
"passwordsDontMatch": "Le nouveau mot de passe et sa confirmation ne correspondent pas.",
|
||||
"passwordUpdateSuccess": "Mot de passe mis à jour.",
|
||||
"updateEmailTitle": "Update Your Email Address",
|
||||
"updateEmailTitle": "Mettre à jour votre adresse courriel",
|
||||
"updateEmailNew": "Nouvelle adresse courriel",
|
||||
"updateEmailSuccess": "Mise à jour de l’adresse électronique. Clique sur le lien dans le courriel qui t’a été envoyé pour le confirmer.",
|
||||
"general": {
|
||||
|
@ -86,7 +86,7 @@
|
|||
"weekStartMonday": "lundi",
|
||||
"language": "Langue",
|
||||
"defaultList": "Liste par défaut",
|
||||
"timezone": "Time Zone"
|
||||
"timezone": "Fuseau horaire"
|
||||
},
|
||||
"totp": {
|
||||
"title": "Authentification à deux facteurs",
|
||||
|
@ -165,7 +165,7 @@
|
|||
"searchSelect": "Clique ou appuie sur la touche Entrée pour sélectionner cette liste",
|
||||
"shared": "Listes partagées",
|
||||
"create": {
|
||||
"header": "New list",
|
||||
"header": "Nouvelle liste",
|
||||
"titlePlaceholder": "Entre le nom de la liste…",
|
||||
"addTitleRequired": "Indique un nom.",
|
||||
"createdSuccess": "Liste créée.",
|
||||
|
@ -323,7 +323,7 @@
|
|||
"namespaces": "Espaces de noms",
|
||||
"search": "Écris pour rechercher un espace de noms…",
|
||||
"create": {
|
||||
"title": "New namespace",
|
||||
"title": "Nouvel espace de noms",
|
||||
"titleRequired": "Indique un nom.",
|
||||
"explanation": "Des collections de listes pour partager et organiser vos listes. En fait, chaque liste appartient à un espace de noms.",
|
||||
"tooltip": "Qu’est-ce qu’un espace de noms ?",
|
||||
|
@ -335,7 +335,7 @@
|
|||
"archiveText": "Tu ne pourras pas modifier cet espace de noms ou créer de nouvelles listes tant que tu ne l’auras pas désarchivé. Ceci archivera également toutes les listes de cet espace de noms.",
|
||||
"unarchiveText": "Tu pourras créer de nouvelles listes ou les modifier.",
|
||||
"success": "Espace de noms archivé.",
|
||||
"unarchiveSuccess": "The namespace was successfully un-archived.",
|
||||
"unarchiveSuccess": "Espace de noms archivé.",
|
||||
"description": "L’archivage d’un espace de noms signifie qu’on ne peut pas créer de nouvelles listes dans cet espace, ni le modifier."
|
||||
},
|
||||
"delete": {
|
||||
|
@ -383,7 +383,7 @@
|
|||
"includeNulls": "Inclure les tâches sans valeurs",
|
||||
"requireAll": "Exiger tous les filtres pour qu’une tâche s’affiche",
|
||||
"showDoneTasks": "Afficher les tâches terminées",
|
||||
"sortAlphabetically": "Sort Alphabetically",
|
||||
"sortAlphabetically": "Trier par ordre alphabétique",
|
||||
"enablePriority": "Activer le filtre par priorité",
|
||||
"enablePercentDone": "Enable Filter By Progress",
|
||||
"dueDateRange": "Plage de dates d’échéance",
|
||||
|
@ -392,7 +392,7 @@
|
|||
"reminderRange": "Plage de dates de rappel"
|
||||
},
|
||||
"create": {
|
||||
"title": "New Saved Filter",
|
||||
"title": "Nouveau filtre enregistré",
|
||||
"description": "Un filtre enregistré est une liste virtuelle qui est calculée à partir d’un ensemble de filtres à chaque fois qu’on y accède. Une fois créé, il apparaît dans un espace de noms spécial.",
|
||||
"action": "Créer un nouveau filtre enregistré"
|
||||
},
|
||||
|
@ -485,7 +485,7 @@
|
|||
"showMenu": "Afficher le menu",
|
||||
"hideMenu": "Masquer le menu",
|
||||
"forExample": "Par exemple :",
|
||||
"welcomeBack": "Welcome Back!"
|
||||
"welcomeBack": "Heureux de vous revoir !"
|
||||
},
|
||||
"input": {
|
||||
"resetColor": "Réinitialiser la couleur",
|
||||
|
@ -554,7 +554,7 @@
|
|||
"chooseStartDate": "Clique ici pour fixer une date de début",
|
||||
"chooseEndDate": "Clique ici pour fixer une date de fin",
|
||||
"move": "Déplacer une tâche vers une autre liste",
|
||||
"done": "Mark task done!",
|
||||
"done": "Marquer la tâche comme terminée !",
|
||||
"undone": "Marquer comme inachevé",
|
||||
"created": "Créé {0} par {1}",
|
||||
"updated": "Mis à jour {0}",
|
||||
|
@ -570,22 +570,22 @@
|
|||
"text2": "Ceci supprimera également toutes les pièces jointes, les rappels et les relations associés à cette tâche et ne pourra pas être annulé !"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Attribuer à un utilisateur",
|
||||
"label": "Ajouter des étiquettes",
|
||||
"assign": "Assign to User",
|
||||
"label": "Add Labels",
|
||||
"priority": "Définir la priorité",
|
||||
"dueDate": "Définir l’échéance",
|
||||
"startDate": "Définir une date de début",
|
||||
"endDate": "Fixer une date de fin",
|
||||
"startDate": "Set Start Date",
|
||||
"endDate": "Set End Date",
|
||||
"reminders": "Définir des rappels",
|
||||
"repeatAfter": "Définir un intervalle de répétition",
|
||||
"repeatAfter": "Set Repeating Interval",
|
||||
"percentDone": "Set Progress",
|
||||
"attachments": "Ajouter des pièces jointes",
|
||||
"relatedTasks": "Ajouter des relations de tâches",
|
||||
"moveList": "Déplacer la tâche",
|
||||
"color": "Définir la couleur de la tâche",
|
||||
"delete": "Supprimer la tâche",
|
||||
"favorite": "Enregistrer comme favori",
|
||||
"unfavorite": "Retirer des favoris"
|
||||
"attachments": "Add Attachments",
|
||||
"relatedTasks": "Add Relation",
|
||||
"moveList": "Move",
|
||||
"color": "Set Color",
|
||||
"delete": "Delete",
|
||||
"favorite": "Add to Favorites",
|
||||
"unfavorite": "Remove from Favorites"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
@ -790,7 +790,7 @@
|
|||
"then": "puis",
|
||||
"task": {
|
||||
"title": "Page de tâche",
|
||||
"done": "Done",
|
||||
"done": "Terminé",
|
||||
"assign": "Attribuer à un utilisateur",
|
||||
"labels": "Ajouter des étiquettes à cette tâche",
|
||||
"dueDate": "Modifier la date d’échéance de cette tâche",
|
||||
|
@ -823,7 +823,7 @@
|
|||
"url": "URL Vikunja",
|
||||
"urlPlaceholder": "Par exemple : https://localhost:3456",
|
||||
"change": "changer",
|
||||
"use": "Using Vikunja installation at {0}",
|
||||
"use": "Utiliser l’installation de Vikunja à {0}",
|
||||
"error": "Impossible de trouver ou d'utiliser l'installation de Vikunja sur « {domain} ». Veuillez essayer une autre URL.",
|
||||
"success": "Utilisation de l’installation Vikunja à « {domain} ».",
|
||||
"urlRequired": "Une URL est requise."
|
||||
|
@ -908,7 +908,7 @@
|
|||
"4015": "Le commentaire de la tâche n’existe pas.",
|
||||
"4016": "Champ de tâche invalide.",
|
||||
"4017": "Comparateur de filtre de tâche invalide.",
|
||||
"4018": "Invalid task filter concatenator.",
|
||||
"4018": "Concaténateur de filtre de tâche invalide.",
|
||||
"4019": "Valeur de filtre de tâche invalide.",
|
||||
"5001": "L’espace de noms n’existe pas.",
|
||||
"5003": "Tu n’as pas accès à l’espace de noms indiqué.",
|
||||
|
|
|
@ -570,22 +570,22 @@
|
|||
"text2": "Questo rimuoverà anche tutti gli allegati, i promemoria e le relazioni associati a questa attività e non può essere ripristinato!"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Assegna ad un utente",
|
||||
"label": "Aggiungi etichette",
|
||||
"assign": "Assegna all'Utente",
|
||||
"label": "Aggiungi Etichette",
|
||||
"priority": "Imposta Priorità",
|
||||
"dueDate": "Imposta data di scadenza",
|
||||
"startDate": "Imposta una data di inizio",
|
||||
"endDate": "Imposta una data di fine",
|
||||
"startDate": "Imposta Data Inizio",
|
||||
"endDate": "Imposta Data Fine",
|
||||
"reminders": "Imposta promemoria",
|
||||
"repeatAfter": "Imposta ricorrenza",
|
||||
"repeatAfter": "Imposta Intervallo Ripetizione",
|
||||
"percentDone": "Imposta Progresso",
|
||||
"attachments": "Aggiungi allegati",
|
||||
"relatedTasks": "Aggiungi attività collegate",
|
||||
"moveList": "Sposta attività",
|
||||
"color": "Imposta colore attività",
|
||||
"delete": "Elimina attività",
|
||||
"favorite": "Salva come preferito",
|
||||
"unfavorite": "Rimuovi dai preferiti"
|
||||
"attachments": "Aggiungi Allegati",
|
||||
"relatedTasks": "Aggiungi Relazione",
|
||||
"moveList": "Sposta",
|
||||
"color": "Imposta Colore",
|
||||
"delete": "Elimina",
|
||||
"favorite": "Aggiungi ai Preferiti",
|
||||
"unfavorite": "Rimuovi dai Preferiti"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
|
|
@ -91,15 +91,15 @@
|
|||
"totp": {
|
||||
"title": "Twee-factor-authenticatie",
|
||||
"enroll": "Activeren",
|
||||
"finishSetupPart1": "To finish your setup, use this secret in your totp app (Google Authenticator or similar):",
|
||||
"finishSetupPart2": "After that, enter a code from your app below.",
|
||||
"finishSetupPart1": "Gebruik dit geheim in je TOTP app (Google Authenticator of vergelijkbaar), om de installatie te voltooien:",
|
||||
"finishSetupPart2": "Daarna voert u hieronder een code van je app in.",
|
||||
"scanQR": "Als alternatief kan je ook deze QR code scannen:",
|
||||
"passcode": "Je toegangscode",
|
||||
"passcodePlaceholder": "A code generated by your totp application",
|
||||
"passcodePlaceholder": "Een code gegenereerd door uw TOTP app",
|
||||
"setupSuccess": "Je hebt met succes tweestapsverificatie ingesteld!",
|
||||
"enterPassword": "Voer alsjeblieft je wachtwoord in",
|
||||
"disable": "Tweestapsverificatie uitschakelen",
|
||||
"confirmSuccess": "You've successfully confirmed your totp setup and can use it from now on!",
|
||||
"confirmSuccess": "Je hebt met succes je TOTP setup bevestigd en kan het van nu af aan gebruiken!",
|
||||
"disableSuccess": "Authenticatie in twee stappen is succesvol uitgeschakeld."
|
||||
},
|
||||
"caldav": {
|
||||
|
@ -118,7 +118,7 @@
|
|||
"setSuccess": "De avatar is succesvol ingesteld!"
|
||||
},
|
||||
"quickAddMagic": {
|
||||
"title": "Quick Add Magic Mode",
|
||||
"title": "Magische Modus Snel Toevoegen",
|
||||
"disabled": "Uitgeschakeld",
|
||||
"todoist": "Todoist",
|
||||
"vikunja": "Vikunja"
|
||||
|
@ -136,7 +136,7 @@
|
|||
"deletion": {
|
||||
"title": "Verwijder je Vikunja account",
|
||||
"text1": "Het verwijderen van je account is permanent en kan niet ongedaan worden gemaakt. We zullen al je namespaces, lijsten, taken en alles wat ermee verbonden is verwijderen.",
|
||||
"text2": "To proceed, please enter your password. You will receive an email with further instructions.",
|
||||
"text2": "Graag je wachtwoord invullen om verder te gaan. Je zult een e-mail ontvangen met verdere instructies.",
|
||||
"confirm": "Verwijder mijn account",
|
||||
"requestSuccess": "Het verzoek was succesvol. Je ontvangt een e-mail met verdere instructies.",
|
||||
"passwordRequired": "Voer alsjeblieft je wachtwoord in.",
|
||||
|
@ -500,7 +500,7 @@
|
|||
},
|
||||
"editor": {
|
||||
"edit": "Bewerken",
|
||||
"done": "Gereed",
|
||||
"done": "Voltooid",
|
||||
"heading1": "Kop 1",
|
||||
"heading2": "Kop 2",
|
||||
"heading3": "Kop 3",
|
||||
|
@ -555,7 +555,7 @@
|
|||
"chooseEndDate": "Klik hier om een einddatum in te stellen",
|
||||
"move": "Verplaats taak naar een andere lijst",
|
||||
"done": "Mark task done!",
|
||||
"undone": "Markeer als niet gereed",
|
||||
"undone": "Markeer als niet voltooid",
|
||||
"created": "Created {0} by {1}",
|
||||
"updated": "Updated {0}",
|
||||
"doneAt": "Done {0}",
|
||||
|
@ -570,22 +570,22 @@
|
|||
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Toewijzen aan een gebruiker",
|
||||
"label": "Labels toevoegen",
|
||||
"assign": "Assign to User",
|
||||
"label": "Add Labels",
|
||||
"priority": "Prioriteit instellen",
|
||||
"dueDate": "Vervaldatum instellen",
|
||||
"startDate": "Startdatum instellen",
|
||||
"endDate": "Einddatum instellen",
|
||||
"startDate": "Set Start Date",
|
||||
"endDate": "Set End Date",
|
||||
"reminders": "Herinneringen instellen",
|
||||
"repeatAfter": "Herhalingsinterval instellen",
|
||||
"repeatAfter": "Set Repeating Interval",
|
||||
"percentDone": "Set Progress",
|
||||
"attachments": "Bijlage toevoegen",
|
||||
"relatedTasks": "Taakrelaties toevoegen",
|
||||
"moveList": "Taak verplaatsen",
|
||||
"color": "Taakkleur instellen",
|
||||
"delete": "Taak verwijderen",
|
||||
"favorite": "Opslaan als favoriet",
|
||||
"unfavorite": "Verwijderen uit favorieten"
|
||||
"attachments": "Add Attachments",
|
||||
"relatedTasks": "Add Relation",
|
||||
"moveList": "Move",
|
||||
"color": "Set Color",
|
||||
"delete": "Verwijder",
|
||||
"favorite": "Toevoegen aan favorieten",
|
||||
"unfavorite": "Verwijder uit favorieten"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
@ -594,7 +594,7 @@
|
|||
"created": "Aangemaakt op",
|
||||
"createdBy": "Aangemaakt door",
|
||||
"description": "Beschrijving",
|
||||
"done": "Gereed",
|
||||
"done": "Voltooid",
|
||||
"dueDate": "Due Date",
|
||||
"endDate": "End Date",
|
||||
"labels": "Labels",
|
||||
|
|
|
@ -580,11 +580,11 @@
|
|||
"repeatAfter": "Ustaw interwał powtarzania",
|
||||
"percentDone": "Ustaw postęp",
|
||||
"attachments": "Dodaj załączniki",
|
||||
"relatedTasks": "Dodaj powiązane zadania",
|
||||
"moveList": "Przenieś zadanie",
|
||||
"color": "Ustaw kolor zadania",
|
||||
"delete": "Usuń zadanie",
|
||||
"favorite": "Zapisz jako ulubione",
|
||||
"relatedTasks": "Dodaj powiązanie",
|
||||
"moveList": "Przenieś",
|
||||
"color": "Ustaw kolor",
|
||||
"delete": "Usuń",
|
||||
"favorite": "Dodaj do ulubionych",
|
||||
"unfavorite": "Usuń z ulubionych"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -570,22 +570,22 @@
|
|||
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Assign to a user",
|
||||
"label": "Add labels",
|
||||
"assign": "Assign to User",
|
||||
"label": "Add Labels",
|
||||
"priority": "Set Priority",
|
||||
"dueDate": "Set Due Date",
|
||||
"startDate": "Set a Start Date",
|
||||
"endDate": "Set an End Date",
|
||||
"startDate": "Set Start Date",
|
||||
"endDate": "Set End Date",
|
||||
"reminders": "Set Reminders",
|
||||
"repeatAfter": "Set a repeating interval",
|
||||
"repeatAfter": "Set Repeating Interval",
|
||||
"percentDone": "Set Progress",
|
||||
"attachments": "Add attachments",
|
||||
"relatedTasks": "Add task relations",
|
||||
"moveList": "Move task",
|
||||
"color": "Set task color",
|
||||
"delete": "Delete task",
|
||||
"favorite": "Save as favorite",
|
||||
"unfavorite": "Remove from favorites"
|
||||
"attachments": "Add Attachments",
|
||||
"relatedTasks": "Add Relation",
|
||||
"moveList": "Move",
|
||||
"color": "Set Color",
|
||||
"delete": "Delete",
|
||||
"favorite": "Add to Favorites",
|
||||
"unfavorite": "Remove from Favorites"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
|
|
@ -570,22 +570,22 @@
|
|||
"text2": "Isto vai também eliminar todos os anexos, lembretes e relações associadas a esta tarefa, e não pode ser revertido!"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Atribuir a um utilizador",
|
||||
"label": "Adicionar etiquetas",
|
||||
"assign": "Atribuir a Utilizador",
|
||||
"label": "Adicionar Etiquetas",
|
||||
"priority": "Definir Prioridade",
|
||||
"dueDate": "Definir Data de Vencimento",
|
||||
"startDate": "Definir Data de Início",
|
||||
"endDate": "Definir Data de Fim",
|
||||
"reminders": "Definir Lembretes",
|
||||
"repeatAfter": "Definir um intervalo recorrente",
|
||||
"repeatAfter": "Definir Intervalo Recorrente",
|
||||
"percentDone": "Definir Progresso",
|
||||
"attachments": "Adicionar Anexos",
|
||||
"relatedTasks": "Adicionar relações entre tarefas",
|
||||
"moveList": "Mover tarefa",
|
||||
"color": "Definir cor da tarefa",
|
||||
"delete": "Eliminar tarefa",
|
||||
"favorite": "Marcar como favorito",
|
||||
"unfavorite": "Remover dos favoritos"
|
||||
"relatedTasks": "Adicionar Relação",
|
||||
"moveList": "Mover",
|
||||
"color": "Definir Cor",
|
||||
"delete": "Eliminar",
|
||||
"favorite": "Adicionar aos Favoritos",
|
||||
"unfavorite": "Remover dos Favoritos"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
|
|
@ -570,22 +570,22 @@
|
|||
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Assign to a user",
|
||||
"label": "Add labels",
|
||||
"assign": "Assign to User",
|
||||
"label": "Add Labels",
|
||||
"priority": "Set Priority",
|
||||
"dueDate": "Set Due Date",
|
||||
"startDate": "Set a Start Date",
|
||||
"endDate": "Set an End Date",
|
||||
"startDate": "Set Start Date",
|
||||
"endDate": "Set End Date",
|
||||
"reminders": "Set Reminders",
|
||||
"repeatAfter": "Set a repeating interval",
|
||||
"repeatAfter": "Set Repeating Interval",
|
||||
"percentDone": "Set Progress",
|
||||
"attachments": "Add attachments",
|
||||
"relatedTasks": "Add task relations",
|
||||
"moveList": "Move task",
|
||||
"color": "Set task color",
|
||||
"delete": "Delete task",
|
||||
"favorite": "Save as favorite",
|
||||
"unfavorite": "Remove from favorites"
|
||||
"attachments": "Add Attachments",
|
||||
"relatedTasks": "Add Relation",
|
||||
"moveList": "Move",
|
||||
"color": "Set Color",
|
||||
"delete": "Delete",
|
||||
"favorite": "Add to Favorites",
|
||||
"unfavorite": "Remove from Favorites"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
|
|
@ -570,22 +570,22 @@
|
|||
"text2": "Будут удалены все вложения, напоминания и отношения, связанные с этой задачей, и отменить это будет нельзя!"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Assign to a user",
|
||||
"label": "Добавить метки",
|
||||
"assign": "Assign to User",
|
||||
"label": "Add Labels",
|
||||
"priority": "Установить приоритет",
|
||||
"dueDate": "Установить срок",
|
||||
"startDate": "Установить дату начала",
|
||||
"endDate": "Установить дату завершения",
|
||||
"startDate": "Set Start Date",
|
||||
"endDate": "Set End Date",
|
||||
"reminders": "Установить напоминания",
|
||||
"repeatAfter": "Установить интервал повтора",
|
||||
"repeatAfter": "Set Repeating Interval",
|
||||
"percentDone": "Set Progress",
|
||||
"attachments": "Добавить вложения",
|
||||
"relatedTasks": "Добавить связанные задачи",
|
||||
"moveList": "Переместить задачу",
|
||||
"color": "Установить цвет задачи",
|
||||
"delete": "Удалить задачу",
|
||||
"favorite": "Сохранить как ибзранное",
|
||||
"unfavorite": "Убрать из избранного"
|
||||
"attachments": "Add Attachments",
|
||||
"relatedTasks": "Add Relation",
|
||||
"moveList": "Move",
|
||||
"color": "Set Color",
|
||||
"delete": "Delete",
|
||||
"favorite": "Add to Favorites",
|
||||
"unfavorite": "Remove from Favorites"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
|
|
@ -570,22 +570,22 @@
|
|||
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Assign to a user",
|
||||
"label": "Add labels",
|
||||
"assign": "Assign to User",
|
||||
"label": "Add Labels",
|
||||
"priority": "Set Priority",
|
||||
"dueDate": "Set Due Date",
|
||||
"startDate": "Set a Start Date",
|
||||
"endDate": "Set an End Date",
|
||||
"startDate": "Set Start Date",
|
||||
"endDate": "Set End Date",
|
||||
"reminders": "Set Reminders",
|
||||
"repeatAfter": "Set a repeating interval",
|
||||
"repeatAfter": "Set Repeating Interval",
|
||||
"percentDone": "Set Progress",
|
||||
"attachments": "Add attachments",
|
||||
"relatedTasks": "Add task relations",
|
||||
"moveList": "Move task",
|
||||
"color": "Set task color",
|
||||
"delete": "Delete task",
|
||||
"favorite": "Save as favorite",
|
||||
"unfavorite": "Remove from favorites"
|
||||
"attachments": "Add Attachments",
|
||||
"relatedTasks": "Add Relation",
|
||||
"moveList": "Move",
|
||||
"color": "Set Color",
|
||||
"delete": "Delete",
|
||||
"favorite": "Add to Favorites",
|
||||
"unfavorite": "Remove from Favorites"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
|
|
@ -570,22 +570,22 @@
|
|||
"text2": "This will also remove all attachments, reminders and relations associated with this task and cannot be undone!"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Assign to a user",
|
||||
"label": "Add labels",
|
||||
"assign": "Assign to User",
|
||||
"label": "Add Labels",
|
||||
"priority": "Set Priority",
|
||||
"dueDate": "Set Due Date",
|
||||
"startDate": "Set a Start Date",
|
||||
"endDate": "Set an End Date",
|
||||
"startDate": "Set Start Date",
|
||||
"endDate": "Set End Date",
|
||||
"reminders": "Set Reminders",
|
||||
"repeatAfter": "Set a repeating interval",
|
||||
"repeatAfter": "Set Repeating Interval",
|
||||
"percentDone": "Set Progress",
|
||||
"attachments": "Add attachments",
|
||||
"relatedTasks": "Add task relations",
|
||||
"moveList": "Move task",
|
||||
"color": "Set task color",
|
||||
"delete": "Delete task",
|
||||
"favorite": "Save as favorite",
|
||||
"unfavorite": "Remove from favorites"
|
||||
"attachments": "Add Attachments",
|
||||
"relatedTasks": "Add Relation",
|
||||
"moveList": "Move",
|
||||
"color": "Set Color",
|
||||
"delete": "Delete",
|
||||
"favorite": "Add to Favorites",
|
||||
"unfavorite": "Remove from Favorites"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
|
|
@ -570,22 +570,22 @@
|
|||
"text2": "Thao tác này cũng sẽ xóa tất cả tệp đính kèm, lời nhắc và liên kết đến công việc này. Nó không thể hoàn tác!"
|
||||
},
|
||||
"actions": {
|
||||
"assign": "Chỉ định một người",
|
||||
"label": "Thêm nhãn",
|
||||
"assign": "Assign to User",
|
||||
"label": "Add Labels",
|
||||
"priority": "Mức độ ưu tiên",
|
||||
"dueDate": "Đặt ngày đến hạn",
|
||||
"startDate": "Chọn ngày bắt đầu",
|
||||
"endDate": "Chọn ngày kết thúc",
|
||||
"startDate": "Set Start Date",
|
||||
"endDate": "Set End Date",
|
||||
"reminders": "Thiết lập nhắc nhở",
|
||||
"repeatAfter": "Đặt khoảng lặp lại",
|
||||
"repeatAfter": "Set Repeating Interval",
|
||||
"percentDone": "Set Progress",
|
||||
"attachments": "Đính kèm tệp",
|
||||
"relatedTasks": "Thêm liên kết công việc",
|
||||
"moveList": "Di chuyển công việc",
|
||||
"color": "Chọn màu",
|
||||
"delete": "Loại bỏ công việc",
|
||||
"favorite": "Lưu thành ưa thích",
|
||||
"unfavorite": "Gỡ khỏi ưa thích"
|
||||
"attachments": "Add Attachments",
|
||||
"relatedTasks": "Add Relation",
|
||||
"moveList": "Move",
|
||||
"color": "Set Color",
|
||||
"delete": "Delete",
|
||||
"favorite": "Add to Favorites",
|
||||
"unfavorite": "Remove from Favorites"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* eslint-disable no-console */
|
||||
/* eslint-disable no-undef */
|
||||
|
||||
const workboxVersion = 'v6.4.2'
|
||||
const workboxVersion = 'v6.5.0'
|
||||
importScripts( `/workbox-${workboxVersion}/workbox-sw.js`)
|
||||
workbox.setConfig({
|
||||
modulePathPrefix: `/workbox-${workboxVersion}`,
|
||||
|
|
|
@ -299,6 +299,7 @@ export default defineComponent({
|
|||
break
|
||||
}
|
||||
}
|
||||
// FIXME: Use computed
|
||||
sortTasks(this.tasks)
|
||||
},
|
||||
|
||||
|
|
|
@ -520,6 +520,13 @@ export default {
|
|||
},
|
||||
immediate: true,
|
||||
},
|
||||
// Using a watcher here because the header component handles saving the task with the api but we want to decouple
|
||||
// it from the page title.
|
||||
'task.title': {
|
||||
handler(title) {
|
||||
this.setTitle(title)
|
||||
},
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
currentList() {
|
||||
|
|
|
@ -181,7 +181,7 @@ export default {
|
|||
validateField() {
|
||||
// using computed so that debounced function definition stays
|
||||
return useDebounceFn((field) => {
|
||||
this[`${field}Valid`] = this.$refs[field].value !== ''
|
||||
this[`${field}Valid`] = this.$refs[field]?.value !== ''
|
||||
}, 100)
|
||||
},
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue