Commit 550a9e19 authored by ransome1's avatar ransome1
Browse files

Added threshold toggle and translations, moved About tab to Help modal, added...

Added threshold toggle and translations, moved About tab to Help modal, added delay on version hover
parent aff7b358
......@@ -14,7 +14,7 @@
sleek is an open-source todo app that makes use of the todo.txt format. sleeks GUI is modern and simple but still offers a decent set of functions which help users getting things done. sleek is available as a client for Windows, MacOS and Linux.
Users can add contexts, projects, priorities, due dates or recurrences to their todos. These todo.txt attributes can then be used in full-text search, as filters or to group and sort the todo list.
Users can add contexts, projects, priorities, due dates, recurrences or threshold dates to their todos. These todo.txt attributes can then be used in full-text search, as filters or to group and sort the todo list.
sleek manages and watches multiple todo.txt files continuously for changes, which makes it easy to integrate sleek with other todo.txt apps. Also users can switch to dark mode and choose from multiple languages.
......@@ -47,6 +47,10 @@ Run it using: `flatpak run com.github.ransome1.sleek`
<a href="https://flathub.org/apps/details/com.github.ransome1.sleek" target="blank"><img width='180' alt="Download on Flathub" src="https://flathub.org/assets/badges/flathub-badge-en.png"/></a>
### Get sleek from Homebrew
Install sleek from <a href="https://formulae.brew.sh/cask/sleek" target="blank">Homebrew</a>.
`brew install --cask sleek`
### Get sleek from Arch User Repository
Install sleek from <a href="https://aur.archlinux.org/packages/sleek/" target="blank">AUR</a>.
1. Setup <a href="https://github.com/Jguer/yay#installation" target="blank">Yay</a>
......@@ -74,7 +78,8 @@ A prioritized backlog of new features and known issues can be found <a href="htt
- projects
- due dates
- start dates
- <a href="https://github.com/ransome1/sleek/wiki/Recurring-todos">recurrences</a>
- <a href="https://github.com/ransome1/sleek/wiki/Recurring-todos-(rec:)">recurrences</a>
- <a href="https://github.com/ransome1/sleek/wiki/Deferred-todos-(t:)">thresholds</a>
* Todo-List can be grouped and sorted by priorities, due dates, contexts or projects
* The sorting order can be defined on all 4 levels
* Todos can be filtered by contexts, projects and priorities
......
{
"name": "sleek",
"productName": "sleek",
"version": "1.0.9-rc.4",
"version": "1.0.9",
"description": "Todo app based on todo.txt for Linux, Windows and MacOS, free and open-source",
"synopsis": "Todo app based on todo.txt for Linux, Windows and MacOS, free and open-source",
"category": "ProjectManagement",
......
name: sleek
base: core18
version: '1.0.8'
version: '1.0.9'
summary: Todo app based on the todo.txt format for Linux, free and open-source
description: |
sleek is an open-source todo app that makes use of the todo.txt format. sleeks GUI is modern and simple but still offers a decent set of functions which help users getting things done. sleek is available as a client for Windows, MacOS and Linux.
......
......@@ -116,6 +116,12 @@ body.dark nav ul li a.is-highlighted {
border-bottom: none;
background-color: #3B3B3B;
}
body.dark nav ul:nth-child(2) #versionNumber {
color: #CCCDCF !important;
}
body.dark nav ul:nth-child(2) #versionNumber:hover {
color: #CCCDCF !important;
}
body.dark #drawerContainer .zoom svg {
color: white !important;
}
......@@ -906,21 +912,58 @@ nav ul:nth-child(2) {
bottom: 0;
left: 0;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
nav ul:nth-child(2) #versionNumber {
width: auto !important;
padding: 0.1em;
line-height: 1em;
display: none;
line-height: 1em;
position: fixed;
bottom: 0.2em;
z-index: 80;
margin-left: 7em;
font-size: 0.8em;
color: #ccc;
background: white !important;
background: transparent !important;
opacity: 0;
animation: fadeOut 1s forwards;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
nav ul:nth-child(2):hover #versionNumber {
display: flex;
opacity: 0;
animation: fadeIn 1s forwards;
animation-delay: 0.5s;
}
#todoTableSearchContainer {
......@@ -1516,10 +1559,11 @@ body.compact #autoCompleteContainer h4 {
z-index: 60;
margin: 0 !important;
}
.modal.content .title.is-3 {
.modal.content h3 {
font-family: "FreeSansBold";
font-size: 1.7em;
font-weight: normal;
margin-top: 0.5em;
}
.modal.content p {
display: block;
......@@ -1537,6 +1581,10 @@ body.compact #autoCompleteContainer h4 {
.modal.content select {
background: white !important;
}
.modal.content code {
background: transparent;
padding: 0;
}
.modal.content .delete,
.modal.content .modal-close {
background: #3273dc !important;
......
This diff is collapsed.
......@@ -123,6 +123,17 @@
</span>
</td>
</tr>
<tr>
<td><span id="viewToggleDeferredTodos"></span> <a href="https://github.com/ransome1/sleek/wiki/Deferred-todos-(t:)" target="_blank"><i class="fas fa-question-circle"></i></a></td>
<td>
<span class="toggle">
<label class="switch" for="deferredTodos">
<input type="checkbox" id="deferredTodos" class="viewToggle" tabindex="0">
<span class="slider round"></span>
</label>
</span>
</td>
</tr>
<tr>
<th colspan="100%">
<h3 id="viewHeadlineFilterList" class="is-3"></h3>
......@@ -356,10 +367,10 @@
<div id="modalSettings" class="modal content" tabindex="0">
<div class="modal-background"></div>
<div class="modal-card">
<div class="tabs is-centered">
<div class="tabs is-centered" style="display: none;">
<ul>
<li class="settingsTab1 is-active"><a href="#" tabindex="0" id="settingsTabSettings"></a></li>
<li class="settingsTab2"><a href="#" tabindex="0" id="settingsTabAbout"></a></li>
<!--<li class="settingsTab2"><a href="#" tabindex="0" id="settingsTabAbout"></a></li>-->
</ul>
</div>
<section id="settingsTab1" class="modal-card-body" data-track-content data-content-name="Settings" data-content-piece="Settings">
......@@ -432,7 +443,7 @@
</tr>
</table>
</section>
<section id="settingsTab2" class="modal-card-body" data-track-content data-content-name="Settings" data-content-piece="About">
<!--<section id="settingsTab2" class="modal-card-body" data-track-content data-content-name="Settings" data-content-piece="About">
<h3 class="title is-3" id="settingsTabAboutHeadline"></h3>
<table>
<tr>
......@@ -495,12 +506,12 @@
</tr>
</table>
<p><code>v<span id="version"></span></code></p>
</section>
</section>-->
<button class="modal-close close is-large" aria-label="close" tabindex="0"></button>
</div>
</div>
<div id="modalHelp" class="modal content" tabindex="0" data-track-content data-content-name="Help" data-content-piece="Keyboard shortcuts">
<div id="modalHelp" class="modal content" tabindex="0">
<div class="modal-background"></div>
<div class="modal-card">
<div class="tabs is-centered">
......@@ -510,9 +521,10 @@
<li class="helpTab3"><a href="#" tabindex="0" id="helpTab3Title"></a></li>
<li class="helpTab4"><a href="#" tabindex="0" id="helpTab4Title"></a></li>
<li class="helpTab5"><a href="#" tabindex="0" id="helpTab5Title"></a></li>
<li class="helpTab6"><a href="#" tabindex="0" id="settingsTabAbout"></a></li>
</ul>
</div>
<section id="helpTab1" class="modal-card-body is-active">
<section id="helpTab1" class="modal-card-body is-active" data-track-content data-content-name="Help" data-content-piece="Keyboard shortcuts">
<h3 class="title is-3" id="helpTabKeyboardTitle"></h3>
<table class="shortcuts">
<tr>
......@@ -648,6 +660,70 @@
</div>
</div>
</section>
<section id="helpTab6" class="modal-card-body" data-track-content data-content-name="Help" data-content-piece="About">
<h3 class="title is-3" id="settingsTabAboutHeadline"></h3>
<p><code>Current version: <span id="version"></span></code></p>
<table>
<tr>
<th colspan="100%" id="settingsTabAboutContribute"></th>
</tr>
<tr>
<td><i class="fab fa-github"></i></td>
<td><a href="https://github.com/ransome1/sleek/issues" target="_blank" id="submitIssuesOnGithub"></a></td>
<td><i class="fas fa-star"></i></td>
<td><a href="https://sourceforge.net/projects/sleek/reviews" target="_blank" id="reviewSourceforge"></a></td>
<td><i class="fab fa-windows"></i></td>
<td><a href="https://www.microsoft.com/store/apps/9NWM2WXF60KR" target="_blank" id="reviewWindowsStore"></a></td>
</tr>
<tr>
<td><i class="fab fa-twitter"></i></td>
<td><a href="https://twitter.com/intent/tweet?text=Check%20out%20sleek,%20a%20todo%20app%20based%20on%20todo.txt,%20free%20and%20open-source.%20Available%20for%20Linux,%20Windows%20and%20MacOS.%20https://github.com/ransome1/sleek" target="_blank" id="shareTwitter"></a></td>
<td><i class="fab fa-facebook"></i></td>
<td><a href="https://www.facebook.com/sharer/sharer.php?u=https://github.com/ransome1/sleek" target="_blank" id="shareFacebook"></a></td>
<td><i class="fab fa-linkedin"></i></td>
<td><a href="https://www.linkedin.com/shareArticle?mini=true&url=https://github.com/ransome1/sleek" target="_blank" id="shareLinkedin"></a></td>
</tr>
</table>
<table>
<tr>
<th colspan="100%" id="settingsTabAboutCopyrightLicense"></th>
</tr>
<tr>
<td colspan="100%" id="settingsTabAboutCopyrightLicenseBody"></td>
</tr>
</table>
<table>
<tr>
<th colspan="100%" id="settingsTabAboutPrivacy"></th>
</tr>
<tr>
<td colspan="100%" id="settingsTabAboutPrivacyBody"></td>
</tr>
</table>
<table>
<tr>
<th colspan="100%" id="settingsTabAboutExternalLibraries"></th>
</tr>
<tr>
<td><a href="https://github.com/electron/electron" target="_blank">Electron</a></td>
<td><a href="https://github.com/electron-userland/electron-builder" target="_blank">Electron builder</a></td>
<td><a href="https://github.com/i18next/i18next" target="_blank">i18next</a></td>
<td><a href="https://github.com/mymth/vanillajs-datepicker" target="_blank">vanillajs-datepicker</a></td>
</tr>
<tr>
<td><a href="https://github.com/jgthms/bulma" target="_blank">Bulma CSS</a></td>
<td><a href="https://github.com/FortAwesome/Font-Awesome" target="_blank">Font Awesome</a></td>
<td><a href="https://github.com/jmhobbs/jsTodoTxt" target="_blank">jsTodoTxt</a></td>
<td><a href="https://github.com/markedjs/marked" target="_blank">Marked</a></td>
</tr>
<tr>
<td><a href="https://github.com/matomo-org/matomo" target="_blank">Matomo</a></td>
<td><a href="https://github.com/paulmillr/chokidar" target="_blank">chokidar</a></td>
<td><a href="https://github.com/viktor-shmigol/electron-windows-badge/" target="_blank">Electron Windows Badge</a></td>
<td><a href="https://github.com/andrewplummer/Sugar" target="_blank">Sugar</a></td>
</tr>
</table>
</section>
<button class="modal-close close is-large" aria-label="close" tabindex="0"></button>
</div>
</div>
......
......@@ -113,7 +113,7 @@ settingsTabAboutExternalLibraries.innerHTML = translations.settingsTabAboutExter
settingsTabAboutHeadline.innerHTML = translations.about;
settingsTabAboutPrivacy.innerHTML = translations.settingsTabAboutPrivacy;
settingsTabAboutPrivacyBody.innerHTML = translations.settingsTabAboutPrivacyBody;
settingsTabSettings.innerHTML = translations.settings;
//settingsTabSettings.innerHTML = translations.settings;
settingsTabSettingsDarkmode.innerHTML = translations.darkmode;
settingsTabSettingsHeadline.innerHTML = translations.settings;
settingsTabSettingsLanguage.innerHTML = translations.language;
......
......@@ -161,6 +161,9 @@ function filterItems(items) {
if(!userData.showDueIsToday && item.due && isToday(item.due)) return false;
if(!userData.showDueIsPast && item.due && isPast(item.due)) return false;
if(!userData.showDueIsFuture && item.due && isFuture(item.due)) return false;
// filter deferred todos that are set in the future
if(!userData.deferredTodos && item.t && isFuture(item.t)) return false;
// remove todos with no text
if(item.text==="") return false;
return true;
});
......@@ -227,7 +230,7 @@ function generateCategoryContainer(category, autoCompletePrefix, filterFragment)
} else {
let todoFilterHint = document.createElement("div");
todoFilterHint.setAttribute("class", "todoFilterHint");
todoFilterHint.innerHTML = "<i class=\"fas fa-question-circle\"></i> No " + category + " available. Learn how to add one.";
todoFilterHint.innerHTML = translations.noFiltersFound + " <a href=\"#\"><i class=\"fas fa-question-circle\"></i></a>";
todoFilterHint.onclick = function() {
showContent("modalHelp");
// trigger matomo event
......
......@@ -55,6 +55,7 @@ function configureMatomo() {
if(typeof userData.tray === "boolean")_paq.push(['setCustomDimension', 19, userData.tray]);
if(typeof userData.showEmptyFilters === "boolean")_paq.push(['setCustomDimension', 20, userData.showEmptyFilters]);
if(items) _paq.push(['setCustomDimension', 21, todoRange(items.objects.length)]);
if(typeof userData.deferredTodos === "boolean")_paq.push(['setCustomDimension', 22, userData.deferredTodos]);
_paq.push(['requireConsent']);
_paq.push(['setConsentGiven']);
_paq.push(['trackPageView']);
......
......@@ -206,6 +206,7 @@ async function generateTable(groups, append) {
// add divider row only if it doesn't exist yet
if(!append && !document.getElementById(userData.sortBy[0] + groups[group][0]) && dividerRow) tableContainerContent.appendChild(dividerRow);
for (let item in groups[group][1]) {
let todo = groups[group][1][item];
//
if(clusterCounter<clusterThreshold) {
clusterCounter++;
......@@ -215,7 +216,6 @@ async function generateTable(groups, append) {
stopBuilding = true;
break;
}
let todo = groups[group][1][item];
// if this todo is not a recurring one the rec value will be set to null
if(!todo.rec) todo.rec = null;
// incompleted todos with due date
......
......@@ -30,6 +30,7 @@ const showEmptyFilters = document.getElementById("showEmptyFilters");
const viewToggleShowEmptyFilters = document.getElementById("viewToggleShowEmptyFilters");
const compactView = document.getElementById("compactView");
const sortByContainer = document.getElementById("sortByContainer");
const viewToggleDeferredTodos = document.getElementById("viewToggleDeferredTodos");
sortBy.innerHTML = translations.sortBy;
viewHeadlineAppView.innerHTML = translations.viewHeadlineAppView;
......@@ -45,6 +46,7 @@ viewToggleCompactView.innerHTML = translations.compactView;
zoomRangePicker.innerHTML = translations.zoomRangePicker;
viewToggleZoom.innerHTML = translations.viewToggleZoom;
viewToggleShowEmptyFilters.innerHTML = translations.viewToggleShowEmptyFilters;
viewToggleDeferredTodos.innerHTML = translations.deferredTodos;
// build the sortBy list
userData.sortBy.forEach((sortBy) => {
......@@ -79,6 +81,9 @@ zoomUndo.onclick = function() {
});
};
viewToggles.forEach(function(viewToggle) {
// set checked according to user data
viewToggle.checked = userData[viewToggle.id];
// setup up the click event
viewToggle.onclick = function() {
toggle(this.id).then(response => {
console.log(response);
......@@ -89,18 +94,6 @@ viewToggles.forEach(function(viewToggle) {
});
}
});
// set the toggles in view sidebar
showCompleted.checked = userData.showCompleted;
sortCompletedLast.checked = userData.sortCompletedLast;
showHidden.checked = userData.showHidden;
showDueIsToday.checked = userData.showDueIsToday;
showDueIsFuture.checked = userData.showDueIsFuture;
showDueIsPast.checked = userData.showDueIsPast;
toggleTray.checked = userData.tray;
compactView.checked = userData.compactView;
showEmptyFilters.checked = userData.showEmptyFilters;
function zoom(zoom) {
try {
html.style.zoom = zoom + "%";
......
......@@ -118,7 +118,7 @@
"shortcuts": "Tastaturkürzel",
"sleekOnGithub": "sleek auf Github",
"sortBy": "Sortiere nach",
"sortCompletedLast": "Erledigte Todos nach unten",
"sortCompletedLast": "Erledigte nach unten",
"submitIssuesOnGithub": "Fehler auf Github melden",
"today": "Heute",
"todos": "Aufgaben",
......@@ -151,5 +151,7 @@
"archivingCompletedBody": "Erledigte Todos erfolgreich verschoben nach ",
"restartPrompt": "Für diese Änderung muss sich sleek selbst neustarten. Wenn das nicht passiert, starte das Programm bitte händisch neu.",
"deleteCategoryPrompt": "Dieser Filter wird unwiderruflich aus allen Todos entfernt.",
"modalBackgroundAttention": "Dieses Fenster wird geschlossen, dabei gehen vorgenommene Änderungen verloren."
"modalBackgroundAttention": "Dieses Fenster wird geschlossen, dabei gehen vorgenommene Änderungen verloren.",
"deferredTodos": "Verzögertes Datum",
"noFiltersFound": "Keine Filter gefunden"
}
......@@ -11,7 +11,7 @@
"clear": "Clear",
"close": "Close",
"compactView": "Compact view",
"completedTodos": "Completed todos",
"completedTodos": "Completed",
"contexts": "Contexts",
"copy": "Copy",
"createFile": "Create todo.txt",
......@@ -65,7 +65,7 @@
"helpTabPrioritiesTitle": "Adding a priority",
"helpTabRecurrencesBody1": "If you want a todo to repeat itself you need to specify a recurrence interval using the <strong>rec:</strong> (for example <strong>rec:d</strong> for a todo that recurs every day) attribute. The sleek user interface provides controls to set the rec: attribute for you, or you can edit it into the text of the todo yourself. Possible values are <strong>d</strong> (daily), <strong>b</strong> (each business day), <strong>w</strong> (weekly), <strong>m</strong> (monthly), <strong>y</strong> (anually). You can also specify a different interval, for example, <strong>rec:3m</strong> to repeat every 3rd month. <a href=\"https://github.com/ransome1/sleek/wiki/Recurring-todos\" target=\"_blank\">Learn more about recurrences in sleek</a>.",
"helpTabRecurrencesTitle1": "Adding recurrences",
"hiddenTodos": "Hidden todos",
"hiddenTodos": "Hidden",
"inProgress": "In progress",
"language": "Language",
"messageLoggingBody": "You can support this project by enabling an anonymized error and event logging. It will log errors that occur and features you use. You can enable this feature in settings.",
......@@ -117,7 +117,7 @@
"shortcuts": "Shortcuts",
"sleekOnGithub": "sleek on Github",
"sortBy": "Sort by",
"sortCompletedLast": "Completed todos at the end",
"sortCompletedLast": "Completed at the end",
"submitIssuesOnGithub": "Submit issues on Github",
"today": "Today",
"todos": "Todos",
......@@ -150,5 +150,7 @@
"archivingCompletedBody": "Completed todos successfully moved to ",
"restartPrompt": "For this change sleek needs to restart itself. If this doesn't happen, please start the application again manually.",
"deleteCategoryPrompt": "This filter will be irrevocably removed from all todos.",
"modalBackgroundAttention": "This window will be closed and its contents cleared."
"modalBackgroundAttention": "This window will be closed and its contents cleared.",
"deferredTodos": "Threshold date in the future",
"noFiltersFound": "No filters found"
}
......@@ -149,5 +149,7 @@
"archivingCompletedBody": "Todos completados movidos con éxito a ",
"restartPrompt": "Para este cambio, sleek necesita reiniciarse. Si esto no sucede, vuelva a iniciar la aplicación manualmente.",
"deleteCategoryPrompt": "Este filtro se eliminará irrevocablemente de todas las tareas.",
"modalBackgroundAttention": "Esta ventana se cerrará y se borrará su contenido."
"modalBackgroundAttention": "Esta ventana se cerrará y se borrará su contenido.",
"deferredTodos": "Fecha límite en el futuro",
"noFiltersFound": "No se encontraron filtros"
}
......@@ -150,5 +150,7 @@
"archivingCompletedBody": "Les tâches terminées ont été déplacées avec succès vers ",
"restartPrompt": "Pour ce changement, sleek doit redémarrer. Si cela ne se produit pas, veuillez redémarrer l'application manuellement.",
"deleteCategoryPrompt": "Ce filtre sera irrévocablement supprimé de toutes les tâches.",
"modalBackgroundAttention": "Cette fenêtre sera fermée et son contenu effacé."
"modalBackgroundAttention": "Cette fenêtre sera fermée et son contenu effacé.",
"deferredTodos": "Date seuil dans le futur",
"noFiltersFound": "Aucun filtre trouvé"
}
......@@ -149,5 +149,7 @@
"archivingCompletedBody": "Le cose da fare completate sono state spostate con successo in ",
"restartPrompt": "Per questo cambiamento, sleek deve riavviarsi. Se ciò non accade, riavvia l'applicazione manualmente.",
"deleteCategoryPrompt": "Questo filtro verrà irrevocabilmente rimosso da tutte le attività.",
"modalBackgroundAttention": "Questa finestra verrà chiusa e il suo contenuto cancellato."
"modalBackgroundAttention": "Questa finestra verrà chiusa e il suo contenuto cancellato.",
"deferredTodos": "Data limite nel futuro",
"noFiltersFound": "Nessun filtro trovato"
}
......@@ -150,5 +150,7 @@
"archivingCompletedBody": "完了タスク保存完了した, アーカイブファイル: ",
"restartPrompt": "設定を適用するため, sleekを再起動する必要がある. もし再起動しなければ, 手動でアプリ再起動をお願いいたします.",
"deleteCategoryPrompt": "このフィルターは、すべてのタスクから取り消せないほど削除されます。.",
"modalBackgroundAttention": "このウィンドウは閉じられ、その内容はクリアされます。"
"modalBackgroundAttention": "このウィンドウは閉じられ、その内容はクリアされます。",
"deferredTodos": "将来のしきい値",
"noFiltersFound": "フィルタが見つかりません"
}
......@@ -46,7 +46,7 @@
"helpTab3Title": "Contextos e projetos",
"helpTab4Title": "Datas",
"helpTab5Title": "Recorrências",
"helpTabContextsProjectsBody": "Se você trabalha em projetos que consistem em várias tarefas, pode atribuir essas tarefas anexando \"+\" seguido do nome do projeto. Os contextos definem a situação em que essa tarefa é relevante para você. De acordo com o conceito de David Allen de <a href=\"https://en.wikipedia.org/wiki/Getting_Things_Done\" target=\"_blank\"> Fazendo as coisas </a>, o \ "contexto \" poderia estar em casa, no trabalho, nas compras, ao telefone, no computador, com uma pessoa em particular. Para adicionar um contexto, basta anexar um \ "@ \" mais o nome do contexto. Para obter mais informações sobre todo.txt <a href=\"https://github.com/todotxt/todo.txt\" target=\"_blank\">clique aqui</a>.<br><br>Nenhum dos dois projetos nem contexto permitem o uso de espaços, então escreva-os em uma palavra. Você pode anexar quantos projetos e contextos desejar.",
"helpTabContextsProjectsBody": "Se você trabalha em projetos que consistem em várias tarefas, pode atribuir essas tarefas anexando \"+\" seguido do nome do projeto. Os contextos definem a situação em que essa tarefa é relevante para você. De acordo com o conceito de David Allen de <a href=\"https://en.wikipedia.org/wiki/Getting_Things_Done\" target=\"_blank\"> Fazendo as coisas </a>, o \"contexto \" poderia estar em casa, no trabalho, nas compras, ao telefone, no computador, com uma pessoa em particular. Para adicionar um contexto, basta anexar um \"@ \" mais o nome do contexto. Para obter mais informações sobre todo.txt <a href=\"https://github.com/todotxt/todo.txt\" target=\"_blank\">clique aqui</a>.<br><br>Nenhum dos dois projetos nem contexto permitem o uso de espaços, então escreva-os em uma palavra. Você pode anexar quantos projetos e contextos desejar.",
"helpTabContextsProjectsTitle": "Adicionando contextos e projetos",
"helpTabDatesBody1": "sleek adicionará a data de início automaticamente igual à data de criação de todos. Se você quiser alterá-lo, você precisa procurar a primeira data em sua tarefa logo após a marca de prioridade. Todos com datas de vencimento aumentarão sua lista. Quanto mais próxima a data de vencimento, maior será a classificação. Se a data de vencimento for hoje ou uma data no passado, ela será marcada em vermelho e permanecerá no topo da sua lista. Para adicionar uma data de vencimento, anexe \"vencimento:\" e adicione a data de vencimento formatada como <strong>AAAA-MM-DD (por exemplo, vencimento: 2021-03-07)</strong>. Como alternativa, use o seletor de data, ele fará a formatação para você.",
"helpTabDatesBody2": "Nomes de datas amigáveis como <strong>amanhã</strong>, <strong>próxima terça</strong> ou <strong>final de fevereiro</strong> serão convertidos em datas formatadas apropriadamente. <a href=\"https://sugarjs.com/dates/#/Parsing\" target=\"_blank\">Uma lista completa de possíveis datas amigáveis pode ser encontrada aqui. </a>",
......@@ -150,5 +150,7 @@
"archivingCompletedBody": "Todos concluídos movidos com sucesso para ",
"restartPrompt": "Para essa mudança, o sleek precisa ser reiniciado. Se isso não acontecer, reinicie o aplicativo manualmente.",
"deleteCategoryPrompt": "Este filtro será removido irrevogavelmente de todas as tarefas.",
"modalBackgroundAttention": "Esta janela será fechada e seu conteúdo apagado."
"modalBackgroundAttention": "Esta janela será fechada e seu conteúdo apagado.",
"deferredTodos": "Data limite no futuro",
"noFiltersFound": "Nenhum filtro encontrado"
}
......@@ -150,5 +150,7 @@
"archivingCompletedBody": "已完成的待办事项成功移至 ",
"restartPrompt": "对于这种变化,sleek 需要重新启动。 如果这没有发生,请手动重新启动应用程序。",
"deleteCategoryPrompt": "此过滤器将从所有任务中不可撤销地删除。.",
"modalBackgroundAttention": "此窗口将关闭并清除其内容。"
"modalBackgroundAttention": "此窗口将关闭并清除其内容。",
"deferredTodos": "未来的阈值日期",
"noFiltersFound": "未找到过滤器"
}
......@@ -284,6 +284,7 @@ const createWindow = async function() {
if(!Array.isArray(userData.data.dismissedMessages)) userData.set("dismissedMessages", []);
if(!Array.isArray(userData.data.hideFilterCategories)) userData.set("hideFilterCategories", []);
if(!Array.isArray(userData.data.sortBy)) userData.set("sortBy", ["priority", "dueString", "contexts", "projects"]);
if(typeof userData.data.deferredTodos != "boolean") userData.data.deferredTodos = true;
return Promise.resolve(userData);
} catch(error) {
error.functionName = getUserData.id;
......@@ -353,6 +354,7 @@ const createWindow = async function() {
preload: appData.path + "/preload.js"
}
});
// for Windows a separate node module is needed
if(appData.os === "windows") {
const Badge = require("electron-windows-badge");
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment