├── .github └── workflows │ ├── auto-assign-issue.yml │ └── buildAndTest.yml ├── .gitignore ├── .husky ├── .gitignore └── pre-commit ├── .npmignore ├── .prettierignore ├── .prettierrc.json ├── CHANGELOG.md ├── GENERATOR_DOC.md ├── LICENSE ├── README.md ├── __test__ ├── data │ ├── notes │ │ ├── codeBlock │ │ │ ├── body.md │ │ │ └── data.json │ │ ├── multipleEmpty │ │ │ ├── body.md │ │ │ └── data.json │ │ ├── simple │ │ │ ├── body.md │ │ │ └── data.json │ │ ├── simpleEmpty │ │ │ ├── body.md │ │ │ └── data.json │ │ └── updateSetting │ │ │ ├── body.md │ │ │ └── data.json │ ├── options │ │ ├── datetime.yml │ │ ├── datetime_humanize.yml │ │ ├── datetime_humanize_withoutSuffix.yml │ │ ├── field_link.yml │ │ ├── field_link_html.yml │ │ └── note_status.yml │ └── removeNoteoverviewCode │ │ ├── closeTag.expected │ │ ├── closeTag.input │ │ ├── multiple.expected │ │ ├── multiple.input │ │ ├── single.expected │ │ ├── single.input │ │ ├── singleCodeblock.expected │ │ └── singleCodeblock.input ├── datetime.test.ts ├── fields.test.ts ├── noteoverview.test.ts ├── todo.test.ts ├── tools.ts └── update.test.ts ├── api ├── Global.d.ts ├── Joplin.d.ts ├── JoplinClipboard.d.ts ├── JoplinCommands.d.ts ├── JoplinContentScripts.d.ts ├── JoplinData.d.ts ├── JoplinFilters.d.ts ├── JoplinImaging.d.ts ├── JoplinInterop.d.ts ├── JoplinPlugins.d.ts ├── JoplinSettings.d.ts ├── JoplinViews.d.ts ├── JoplinViewsDialogs.d.ts ├── JoplinViewsMenuItems.d.ts ├── JoplinViewsMenus.d.ts ├── JoplinViewsNoteList.d.ts ├── JoplinViewsPanels.d.ts ├── JoplinViewsToolbarButtons.d.ts ├── JoplinWindow.d.ts ├── JoplinWorkspace.d.ts ├── index.ts ├── noteListType.d.ts ├── noteListType.ts └── types.ts ├── img ├── example_image.jpg ├── example_option_details.jpg ├── example_option_excerpt_regex_checkbox.png ├── example_option_listview_nolb.jpg ├── icon.svg ├── icon_256.png ├── icon_32.png ├── main.png ├── showcase1.png └── showcase2.png ├── package-lock.json ├── package.json ├── plugin.config.json ├── src ├── helper.ts ├── index.ts ├── locales │ ├── de_DE.json │ └── en_US.json ├── manifest.json ├── noteoverview.ts ├── settings.ts ├── type.ts └── webview.css ├── tsconfig.json └── webpack.config.js /.github/workflows/auto-assign-issue.yml: -------------------------------------------------------------------------------- 1 | name: Issue assignment 2 | 3 | on: 4 | issues: 5 | types: [opened] 6 | 7 | jobs: 8 | auto-assign: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: "Auto-assign issue" 12 | uses: pozil/auto-assign-issue@v1.4.0 13 | with: 14 | assignees: JackGruber 15 | -------------------------------------------------------------------------------- /.github/workflows/buildAndTest.yml: -------------------------------------------------------------------------------- 1 | name: Build and test 2 | on: [push, pull_request] 3 | jobs: 4 | buildAndTest: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - uses: actions/checkout@v2 8 | - uses: actions/setup-node@v2 9 | with: 10 | node-version: "16" 11 | - name: Install dependencies 12 | run: npm install 13 | - name: Build 14 | run: npm run dist 15 | - name: Run test 16 | run: npm test 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | publish/ 4 | .env 5 | tools/*.js 6 | -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | *.md 2 | !README.md 3 | /*.jpl 4 | /api 5 | /src 6 | /dist 7 | tsconfig.json 8 | webpack.config.js 9 | /__test__ 10 | .env 11 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | api/ 2 | dist/ 3 | publish/ 4 | webpack.config.js 5 | __test__/data/notes/**/*.md -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 2, 4 | "semi": true, 5 | "singleQuote": false, 6 | "endOfLine": "auto", 7 | "overrides": [ 8 | { 9 | "files": ["tsconfig.json"], 10 | "options": { 11 | "tabWidth": 4, 12 | "useTabs": true 13 | } 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## not released 4 | 5 | ## v1.7.1 (2024-01-11) 6 | 7 | - Add: Translation of humanized dates 8 | - Add: Screenshots / icon for [https://joplinapp.org/plugins/](https://joplinapp.org/plugins/) 9 | 10 | ## v1.7.0 (2023-12-24) 11 | 12 | - Add: Translation 13 | - Fix: #67 HTML image tags are not recognized for `image` option 14 | - Add: Option to disable automatic update of a note overview #57 15 | - Add: Option to configure the `status` field per note overview #66 @aiosk 16 | - Add: Option to configure the date and timeformat per note overview #68 @aiosk 17 | - Add: The option `limit` to set how many results should be displayed per note overview #69 18 | 19 | ## v1.6.0 (2022-12-26) 20 | 21 | - Add: #35 Warning color when a taks is close to a due date 22 | - Add: Virtual field `link` to display the `source_url` to make the output configurable 23 | - Fix: Ignore noteoverview blocks if they start with a codeblock (```) statement 24 | - Add: #36 Variable `{{count}}` to the summary of the details HTML tag 25 | - Add: #27 RegEx filter `regex` for excerpt 26 | - Add: Option for logfile 27 | - Add: #28 Stripe note-overview code block fields 28 | - Add: #26 Date variables for search query 29 | 30 | ## v1.5.5 (2022-01-26) 31 | 32 | - Improved: Alias keyword `AS` is now case insensetive #43 33 | - Fix: #47 Wrong color for finished todos (`todo [done]`) where loaded from the pluginsettings 34 | - Fix: #42 Table misformatted if values are blank 35 | - Fix: #29 #38 Text from note disappear (Thanks to @ken1kob) 36 | 37 | ## v1.5.4 (2021-10-09) 38 | 39 | - Fix: Default value for `Update on Joplin sync` 40 | 41 | ## v1.5.3 (2021-10-09) 42 | 43 | - Add: Option `Update on Joplin sync` to start the Noteoverview update after Joplin syncronisation 44 | - Improved: Start first Noteoverview update after the first Joplin syncronisation (Not as before after 5 minutes) 45 | 46 | ## v1.5.2 (2021-08-12) 47 | 48 | - Fix: #22 Loading error on over 100 notebooks and orphan notebooks 49 | 50 | ## v1.5.1 (2021-08-08) 51 | 52 | - Fix: #21 Note count off settings not respected 53 | 54 | ## v1.5.0 (2021-08-07) 55 | 56 | - Fix: #13 Prevents the current note from being updated by a background run when the note is open for editing 57 | - Add: Option `details` to include overview in a HTML deatils section 58 | - Add: Option `count` to customize note count field for a single overview 59 | - Add: Plugin option `Note count text` to customize note count text 60 | - Add: Option `listview` to display the overview as list instead of a table 61 | - Add: Virtual field `breadcrumb` to display the notebook path 62 | 63 | ## v1.4.3 (2021-05-17) 64 | 65 | - Fix: #12 Prevent note live update on Rich Text (WYSIWYG) editor 66 | 67 | ## v1.4.2 (2021-05-16) 68 | 69 | - Improved: Sort the tags in the field `tags` 70 | - Add: `image` as field, to display a image resource from the note 71 | - Add: `excerpt` as field 72 | 73 | ## v1.4.1 (2021-05-08) 74 | 75 | - Improved: An empty date is output instead of `01/01/1970` 76 | - Add: Option to set the color for `todo_due` and `todo_completed` 77 | - Add: `file` and `file_size` as fields for output 78 | - Add: `status` as fields for todo status output 79 | 80 | ## v1.4.0 (2021-03-30) 81 | 82 | - Add: Multiple note overview definitions in one note 83 | - Add: The note overview can now be embedded in existing text 84 | - Improved: Use registerSettings instead of deprecated registerSetting 85 | 86 | ❗ Requires at least Joplin v1.8.1 ❗ 87 | 88 | ## v1.3.4 (2021-03-27) 89 | 90 | - Fix: todo_completed not outputed as date/time field 91 | 92 | ## v1.3.3 (2021-02-13) 93 | 94 | - Add: #5 Show number of found notes 95 | 96 | ## v1.3.2 (2021-02-04) 97 | 98 | - Fix: Catch error on size, tag and notebook determination 99 | 100 | ## v1.3.1 (2021-02-01) 101 | 102 | - Add: Setting for update intervall 103 | 104 | ❗ Requires at least Joplin v1.7.1 ❗ 105 | 106 | ## v1.3.0 (2021-01-29) 107 | 108 | - Improved: Update the currently selected overview directly 109 | 110 | ## v1.2.1 (2021-01-23) 111 | 112 | - Fix: Escape text for markdown table 113 | 114 | ## v1.2.0 (2021-01-22) 115 | 116 | - Add: Field alias 117 | - Add: `size` as field for output 118 | 119 | ## v1.1.1 (2021-01-19) 120 | 121 | - Improved: Add more error handling 122 | 123 | ## v1.1.0 (2021-01-19) 124 | 125 | - Improved: Use Joplin Date and Time settings 126 | - New: `tag` and `notebook` as fields for output 127 | 128 | ## v1.0.0 (2021-01-16) 129 | 130 | - First version 131 | -------------------------------------------------------------------------------- /GENERATOR_DOC.md: -------------------------------------------------------------------------------- 1 | # Plugin development 2 | 3 | This documentation describes how to create a plugin, and how to work with the plugin builder framework and API. 4 | 5 | ## Installation 6 | 7 | First, install [Yeoman](http://yeoman.io) and generator-joplin using [npm](https://www.npmjs.com/) (we assume you have pre-installed [node.js](https://nodejs.org/)). 8 | 9 | ```bash 10 | npm install -g yo@4.3.1 11 | npm install -g generator-joplin 12 | ``` 13 | 14 | Then generate your new project: 15 | 16 | ```bash 17 | yo --node-package-manager npm joplin 18 | ``` 19 | 20 | ## Structure 21 | 22 | The main two files you will want to look at are: 23 | 24 | - `/src/index.ts`, which contains the entry point for the plugin source code. 25 | - `/src/manifest.json`, which is the plugin manifest. It contains information such as the plugin a name, version, etc. 26 | 27 | The file `/plugin.config.json` could also be useful if you intend to use [external scripts](#external-script-files), such as content scripts or webview scripts. 28 | 29 | ## Building the plugin 30 | 31 | The plugin is built using Webpack, which creates the compiled code in `/dist`. A JPL archive will also be created at the root, which can use to distribute the plugin. 32 | 33 | To build the plugin, simply run `npm run dist`. 34 | 35 | The project is setup to use TypeScript, although you can change the configuration to use plain JavaScript. 36 | 37 | ## Updating the manifest version number 38 | 39 | You can run `npm run updateVersion` to bump the patch part of the version number, so for example 1.0.3 will become 1.0.4. This script will update both the package.json and manifest.json version numbers so as to keep them in sync. 40 | 41 | ## Publishing the plugin 42 | 43 | To publish the plugin, add it to npmjs.com by running `npm publish`. Later on, a script will pick up your plugin and add it automatically to the Joplin plugin repository as long as the package satisfies these conditions: 44 | 45 | - In `package.json`, the name starts with "joplin-plugin-". For example, "joplin-plugin-toc". 46 | - In `package.json`, the keywords include "joplin-plugin". 47 | - In the `publish/` directory, there should be a .jpl and .json file (which are built by `npm run dist`) 48 | 49 | In general all this is done automatically by the plugin generator, which will set the name and keywords of package.json, and will put the right files in the "publish" directory. But if something doesn't work and your plugin doesn't appear in the repository, double-check the above conditions. 50 | 51 | ## Updating the plugin framework 52 | 53 | To update the plugin framework, run `npm run update`. 54 | 55 | In general this command tries to do the right thing - in particular it's going to merge the changes in package.json and .gitignore instead of overwriting. It will also leave "/src" as well as README.md untouched. 56 | 57 | The file that may cause problem is "webpack.config.js" because it's going to be overwritten. For that reason, if you want to change it, consider creating a separate JavaScript file and include it in webpack.config.js. That way, when you update, you only have to restore the line that include your file. 58 | 59 | ## External script files 60 | 61 | By default, the compiler (webpack) is going to compile `src/index.ts` only (as well as any file it imports), and any other file will simply be copied to the plugin package. In some cases this is sufficient, however if you have [content scripts](https://joplinapp.org/api/references/plugin_api/classes/joplincontentscripts.html) or [webview scripts](https://joplinapp.org/api/references/plugin_api/classes/joplinviewspanels.html#addscript) you might want to compile them too, in particular in these two cases: 62 | 63 | - The script is a TypeScript file - in which case it has to be compiled to JavaScript. 64 | 65 | - The script requires modules you've added to package.json. In that case, the script, whether JS or TS, must be compiled so that the dependencies are bundled with the JPL file. 66 | 67 | To get such an external script file to compile, you need to add it to the `extraScripts` array in `plugin.config.json`. The path you add should be relative to /src. For example, if you have a file in "/src/webviews/index.ts", the path should be set to "webviews/index.ts". Once compiled, the file will always be named with a .js extension. So you will get "webviews/index.js" in the plugin package, and that's the path you should use to reference the file. 68 | 69 | ## More information 70 | 71 | - [Joplin Plugin API](https://joplinapp.org/api/references/plugin_api/classes/joplin.html) 72 | - [Joplin Data API](https://joplinapp.org/help/api/references/rest_api) 73 | - [Joplin Plugin Manifest](https://joplinapp.org/api/references/plugin_manifest/) 74 | - Ask for help on the [forum](https://discourse.joplinapp.org/) or our [Discord channel](https://discord.gg/VSj7AFHvpq) 75 | 76 | ## License 77 | 78 | MIT © Laurent Cozic 79 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 JackGruber 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | # Joplin Plugin: Note overview 7 | 8 | A note overview is created based on the defined search and the specified fields. 9 | 10 | 11 | 12 | 13 | - [Installation](#installation) 14 | - [Automatic](#automatic) 15 | - [Manual](#manual) 16 | - [Manual via file system](#manual-via-file-system) 17 | - [Manual via file via GUI](#manual-via-file-via-gui) 18 | - [Usage](#usage) 19 | - [Limitations](#limitations) 20 | - [Codeblock options](#codeblock-options) 21 | - [search](#search) 22 | - [search variable date](#search-variable-date) 23 | - [fields](#fields) 24 | - [sort](#sort) 25 | - [limit](#limit) 26 | - [alias](#alias) 27 | - [datetime](#datetime) 28 | - [image](#image) 29 | - [excerpt](#excerpt) 30 | - [details](#details) 31 | - [count](#count) 32 | - [listview](#listview) 33 | - [link](#link) 34 | - [status](#status) 35 | - [Examples](#examples) 36 | - [ToDo Overview](#todo-overview) 37 | - [Show all ToDos with status](#show-all-todos-with-status) 38 | - [Open ToDos for the next 7 days and overdue ToDos](#open-todos-for-the-next-7-days-and-overdue-todos) 39 | - [Exclude ToDos with no due date](#exclude-todos-with-no-due-date) 40 | - [Show all ToDos with no due date](#show-all-todos-with-no-due-date) 41 | - [Rename fields](#rename-fields) 42 | - [Notes without a tag](#notes-without-a-tag) 43 | - [Notes created last 7 days](#notes-created-last-7-days) 44 | - [Cooking recipes overview](#cooking-recipes-overview) 45 | - [Details option](#details-option) 46 | - [Change count for single overview](#change-count-for-single-overview) 47 | - [Change to listview no linbreak](#change-to-listview-no-linbreak) 48 | - [Combine notes dynamically](#combine-notes-dynamically) 49 | - [Show all uncompleted checkboxes ToDos](#show-all-uncompleted-checkboxes-todos) 50 | - [Disable automatic note overview update for one note overview](#disable-automatic-note-overview-update-for-one-note-overview) 51 | - [Show the last 5 edited notes](#show-the-last-5-edited-notes) 52 | - [Plugin options](#plugin-options) 53 | - [Keyboard Shortcuts](#keyboard-shortcuts) 54 | - [FAQ](#faq) 55 | - [The note overview is not updated](#the-note-overview-is-not-updated) 56 | - [Error: Nested mappings are not allowed in compact mappings](#error-nested-mappings-are-not-allowed-in-compact-mappings) 57 | - [Error: Implicit map keys need to be followed by map values](#error-implicit-map-keys-need-to-be-followed-by-map-values) 58 | - [Error: All collection items must start at the same column](#error-all-collection-items-must-start-at-the-same-column) 59 | - [Error: e.slice is not a function](#error-eslice-is-not-a-function) 60 | - [Develop](#develop) 61 | - [Build](#build) 62 | - [Updating the plugin framework](#updating-the-plugin-framework) 63 | - [Changelog](#changelog) 64 | - [Links](#links) 65 | 66 | 67 | 68 | ## Installation 69 | 70 | ### Automatic 71 | 72 | - Go to `Tools > Options > Plugins` 73 | - Search for `Note overview` 74 | - Click Install plugin 75 | - Restart Joplin to enable the plugin 76 | 77 | ### Manual 78 | 79 | #### Manual via file system 80 | 81 | - Download the latest released JPL package (`io.github.jackgruber.note-overview.jpl`) from [here](https://github.com/JackGruber/joplin-plugin-note-overview/releases/latest) 82 | - Close Joplin 83 | - Copy the downloaded JPL package in your profile `plugins` folder 84 | - Start Joplin 85 | 86 | #### Manual via file via GUI 87 | 88 | - Download the latest released JPL package (`io.github.jackgruber.notelistpreview.jpl`) from [here](https://github.com/JackGruber/joplin-plugin-notelistpreview/releases/latest) 89 | - Go to `Tools > Options > Plugins` 90 | - Click on the gear wheel and select `Install from file` 91 | - Select the downloaded JPL file 92 | - Restart Joplin 93 | 94 | ## Usage 95 | 96 | Create one or more notes with the following content: 97 | 98 | ```yml 99 | 105 | ``` 106 | 107 | Several of these blocks can be included in one note, also between text. 108 | 109 | The note content is updated every x minutes (depending on your setting) or manualy by `Tools > Create Note overview`. 110 | 111 | ### Limitations 112 | 113 | > ⚠ Adding and editing the code block does not work in the **Rich Text (WYSIWYG)** editor! 114 | 115 | > ⚠ When the note is edited in `Rich Text` (WYSIWYG) editor, the note code block is not preserved! 116 | 117 | > ⚠ The manual refresh of the note ist not working in the `Rich Text` (WYSIWYG) editor, to update the note chnage to markdown editor, viewer or a other note and trigger the note overview update again. 118 | 119 | > With an automatic update, the currently displayed note opened in the `markdown` or `Rich Text` (WYSIWYG) editor is not updated to prevent data loss during editing! 120 | 121 | ## Codeblock options 122 | 123 | Options that can be specified in the in the code block using YAML syntax. 124 | 125 | ### search 126 | 127 | The search filter which will be used to create the overview. 128 | [Documentation of search filters](https://joplinapp.org/help/apps/search#search-filters). 129 | 130 | ```yml 131 | search: type:todo 132 | ``` 133 | 134 | #### search variable date 135 | 136 | To search for date texts the variable `{{moments:}}` is available, replace the `` with the [moments formatting](https://momentjs.com/docs/#/displaying/) 137 | 138 | ```yml 139 | search: Logbook {{moments:YYYY}} 140 | ``` 141 | 142 | The date can be manipulated with `modify:`, for `` the syntax is `<+ or ->` and the following key. This syntax can be repeated comma separated. 143 | 144 | | Modification | Key | 145 | | ------------ | --- | 146 | | years | y | 147 | | quarters | Q | 148 | | months | M | 149 | | weeks | w | 150 | | days | d | 151 | | hours | h | 152 | | minutes | m | 153 | 154 | ```yml 155 | search: Logbook {{moments:DD-MM-YYYY modify:+1m,-1d}} 156 | ``` 157 | 158 | ### fields 159 | 160 | Which fields should be output in the table.
161 | All fields of the note are available, a complete list of all field can be found [here](https://joplinapp.org/api/references/rest_api/#properties). 162 | 163 | In addition to the Joplin fields, there are the following virtual fields: 164 | 165 | - `status`: for todo status 166 | - `file`: List of all attachments 167 | - `file_size`: List of all attachments including their size 168 | - `size`: Size of the note, including attachments 169 | - `tags`: Assigned tags of the note 170 | - `notebook`: Folder in which the note is stored 171 | - `breadcrumb`: Folder breadcrumb (Folder path) 172 | - `image`: In this field a image resource from the note will be displayed. This field can be configured using the `image` option 173 | - `excerpt`: Displays an excerpt of the note body 174 | - `link`: Display the `source_url`. This field can be configured using the `link` option 175 | 176 | ```yml 177 | fields: todo_due, title, tags, notebook 178 | ``` 179 | 180 | ### sort 181 | 182 | By which field the output should be sorted. It can be only sorted by one field and it's not possible to sort by a virtual field! 183 | 184 | ```yml 185 | sort: todo_due ASC 186 | ``` 187 | 188 | ### limit 189 | 190 | Displayes only the first x hits of the search. Without the limit option all results are displayed. 191 | 192 | ```yml 193 | limit: 5 194 | ``` 195 | 196 | ### alias 197 | 198 | This allows renaming the fields in the output. 199 | 200 | Syntax: ` AS `, multiple fields comma seperated. 201 | 202 | ```yml 203 | alias: todo_due AS Due Date, notebook AS Folder 204 | ``` 205 | 206 | ### datetime 207 | 208 | Customize datetime format for a single overview. 209 | 210 | ```yml 211 | datetime: 212 | date: "YYYY-MM-DD" 213 | time: "HH:mm" 214 | ``` 215 | 216 | - `date`: Set date format. Default is Joplin global settings on `Tools` > `Options` > `General` > `Date format` 217 | - `time`: Set time format. Default is Joplin global settings on `Tools` > `Options` > `General` > `Time format` 218 | 219 | Complete list of format can be found [here](https://momentjs.com/docs/#/displaying/format/). 220 | 221 | You can also set datetime to [humanize](https://momentjs.com/docs/#/durations/humanize/) format, to display a length of time. You can do that by adding `humanize` settings. 222 | 223 | ```yml 224 | datetime: 225 | date: "YYYY-MM-DD" 226 | time: "HH:mm" 227 | humanize: 228 | enabled: [true | false] 229 | withSuffix: [true | false] 230 | ``` 231 | 232 | - `enabled` : set `true` to enable humanize format. Default is `false`. 233 | - `withSuffix` : set `false`, to remove oriented duration (ex: `a month`). Default is `true`, it will add oriented duration (ex: `in a month`, `a month ago`). 234 | 235 | ### image 236 | 237 | This allows you to control the image displayed in the `image` field. 238 | 239 | - `nr`: Which image should be displayed 240 | - `exactnr`: 241 | `false` = If the image number is not found, the last available one is used. 242 | `true` = Only the exact image number is used. 243 | - `width`: The image is reduced to this width. 244 | - `height`: The image is reduced to this height 245 | 246 | ```yml 247 | image: 248 | nr: 1 249 | exactnr: true 250 | width: 200 251 | height: 200 252 | ``` 253 | 254 | ### excerpt 255 | 256 | Displays an excerpt of the note body, the length of the excerpt can be configured using `maxlength` or you can use a RegEx to select data for the excerpt. 257 | 258 | ```yml 259 | excerpt: 260 | maxlength: 200 261 | removenewline: [true | false] 262 | removemd: [true | false] 263 | regex: ^.*Joplin.*$ 264 | regexflags: gmi 265 | ``` 266 | 267 | - `maxlength`: Maximum length for the excerpt 268 | - `removenewline`: Remove new lines from excerpt, default `true` 269 | - `removemd`: Remove markdown from excerpt, default `true` 270 | - `regex`: Regular expression to match content for the excerpt. `maxlength` will be ignored if this option is used. 271 | - `regexflags`: Regular expression flags for the `regex` match 272 | 273 | ### details 274 | 275 | Add the overview into a details section that can open and close on demand. 276 | In the summary the variable `{{count}}` can be used, to display the number of matched notes. 277 | 278 | ```yml 279 | details: 280 | open: [true | false] 281 | summary: {{count}} notes without a Tag 282 | ``` 283 | 284 | ### count 285 | 286 | Customize note count field for a single overview. 287 | 288 | ```yml 289 | count: 290 | enable: [true | false] 291 | position: [above | below] 292 | text: Note count: {{count}} 293 | ``` 294 | 295 | ### listview 296 | 297 | Option to display the overview as list instead of a table. 298 | For the field `text` all fields can be used, all used Joplin fields must be specified in the `fields`! 299 | 300 | ```yml 301 | fields: title 302 | listview: 303 | text: "{{title}} in {{notebook}}" 304 | linebreak: [true | false] 305 | separator: " | " 306 | prefix: == 307 | suffix: == 308 | ``` 309 | 310 | ### link 311 | 312 | This allows you to control the output displayed in the `link` field. 313 | 314 | - `caption`: The text to display for the link (default = `Link`). 315 | - `html`: 316 | `false` = Output is a markdown link (default) 317 | `true` = Output is a HTML link 318 | 319 | ```yml 320 | link: 321 | caption: "Jump to" 322 | html: true 323 | ``` 324 | 325 | ### status 326 | 327 | Customize note status field for a single overview. 328 | 329 | ```yml 330 | status: 331 | note: "" 332 | todo: 333 | open: ☐ 334 | done: 🗹 335 | overdue: ⚠ 336 | ``` 337 | 338 | ## Examples 339 | 340 | ### ToDo Overview 341 | 342 | ```yml 343 | 348 | ``` 349 | 350 | ### Show all ToDos with status 351 | 352 | ```yml 353 | 358 | ``` 359 | 360 | ### Open ToDos for the next 7 days and overdue ToDos 361 | 362 | ```yml 363 | 368 | ``` 369 | 370 | ### Exclude ToDos with no due date 371 | 372 | ```yml 373 | 378 | ``` 379 | 380 | ### Show all ToDos with no due date 381 | 382 | ```yml 383 | 388 | ``` 389 | 390 | ### Rename fields 391 | 392 | ```yml 393 | 398 | 399 | ``` 400 | 401 | ### Notes without a tag 402 | 403 | ```yml 404 | 408 | ``` 409 | 410 | ### Notes created last 7 days 411 | 412 | ```yml 413 | 418 | ``` 419 | 420 | ### Cooking recipes overview 421 | 422 | ```yml 423 | 430 | ``` 431 | 432 | 433 | 434 | ### Details option 435 | 436 | ```yml 437 | 444 | ``` 445 | 446 | 447 | 448 | ### Change count for single overview 449 | 450 | ```yml 451 | 459 | 460 | ``` 461 | 462 | ### Change to listview (no linbreak) 463 | 464 | ```yml 465 | 475 | ``` 476 | 477 | 478 | 479 | ### Combine notes dynamically 480 | 481 | ```yml 482 | 489 | ``` 490 | 491 | ### Show all uncompleted checkboxes (ToDos) 492 | 493 | ```yml 494 | 508 | ``` 509 | 510 | 511 | 512 | ### Disable automatic note overview update for one note overview 513 | 514 | When you set the `update` option to `manual`, then note overview is only updated when you select the note and trigger a update. 515 | 516 | ```yml 517 | 522 | ``` 523 | 524 | ### Show the last 5 edited notes 525 | 526 | ```yml 527 | 533 | ``` 534 | 535 | ## Plugin options 536 | 537 | Settings for the plugin, accessible at `Tools > Options > Note overview`. 538 | 539 | ## Keyboard Shortcuts 540 | 541 | Under `Options > Keyboard Shortcuts` you can assign a keyboard shortcut for the following commands: 542 | 543 | - `Create note overview` 544 | 545 | ## FAQ 546 | 547 | ### The note overview is not updated 548 | 549 | See the [limitations](#limitations) section. 550 | 551 | ### Error: Nested mappings are not allowed in compact mappings 552 | 553 | This error message occurs when a colon is used in the option value and an space character follows the colon. Just enclose the value of the option in quotes like `alias: "title AS : Title :"`. 554 | 555 | ### Error: Implicit map keys need to be followed by map values 556 | 557 | There is a space missing between the `