├── .github
├── ISSUE_TEMPLATE.md
├── dependabot.yml
├── pull_request_template.md
└── workflows
│ └── releases.yml
├── .gitignore
├── LICENSE
├── README.md
├── docs
├── Commands.md
├── Concepts.md
├── Examples.md
├── Expressions.md
├── InputParameters.md
├── Installation.md
├── Questions.md
├── ReleaseNotes.md
├── RoadMap.md
├── Settings.md
├── TargetEvaluation.md
├── YAML.md
└── images
│ ├── Screenshot_v1.1.png
│ ├── cover_v1.3.png
│ ├── repository-open-graph-template.png
│ ├── screenshot_v1.0.png
│ ├── screenshot_v1.3.png
│ ├── screenshot_v1.6.png
│ ├── screenshot_v1.7.png
│ ├── screenshot_v1.9.png
│ ├── usage_v1.0.gif
│ ├── usage_v1.1.gif
│ └── usage_v1.3.gif
├── examples
├── .obsidian
│ └── plugins
│ │ └── obsidian-tracker
│ │ ├── .hotreload
│ │ └── .keep
├── BloodPressureTracker.md
├── ErrorMessages.md
├── FinanceTracker.md
├── HabitTracker.md
├── StarTracker.md
├── TestAxisIntervalAndFormat.md
├── TestBarChart.md
├── TestBullet.md
├── TestCalendar.md
├── TestCommands.md
├── TestDateFormats.md
├── TestDvField.md
├── TestEmoji.md
├── TestExpression.md
├── TestFileMeta.md
├── TestFrontmatter.md
├── TestInSentenceFields.md
├── TestLegends.md
├── TestMultipleTargetsMultipleValues.md
├── TestPieChart.md
├── TestRegex.md
├── TestRelativeStartEndDate.md
├── TestScalingAndPositioning.md
├── TestSpecifiedFiles.md
├── TestSummary.md
├── TestTabCharacters.md
├── TestTable.md
├── TestTask.md
├── TestTextValueMap.md
├── TestTimeValues.md
├── TestWordCounting.md
├── TestXDataset.md
├── WeightTracker.md
├── WikiTracker.md
├── data
│ ├── In-Sentence-Fields.md
│ ├── MTG-Card-1.md
│ ├── MTG-Card-2.md
│ ├── MTG-Card-3.md
│ ├── MTG-Card-4.md
│ ├── MTG-Deck-1.md
│ ├── Set-FileDates.ps1
│ ├── Tables.md
│ ├── data1.md
│ ├── data2.md
│ └── data3.md
├── diary
│ ├── 01-01-2021.md
│ ├── 01.01.2021.md
│ ├── 02-01-2021.md
│ ├── 02.01.2021.md
│ ├── 03-01-2021.md
│ ├── 03.01.2021.md
│ ├── 04-01-2021.md
│ ├── 04.01.2021.md
│ ├── 05-01-2021.md
│ ├── 05.01.2021.md
│ ├── 1-20210101.md
│ ├── 2-20210102.md
│ ├── 2021-01-01-Friday.md
│ ├── 2021-01-01.md
│ ├── 2021-01-02-Saturday.md
│ ├── 2021-01-02.md
│ ├── 2021-01-03-Sunday.md
│ ├── 2021-01-03.md
│ ├── 2021-01-04-Monday.md
│ ├── 2021-01-04.md
│ ├── 2021-01-05-Tuesday.md
│ ├── 2021-01-05.md
│ ├── 2021-01-06.md
│ ├── 2021-01-07.md
│ ├── 2021-01-08.md
│ ├── 2021-01-09.md
│ ├── 2021-01-10.md
│ ├── 2021-01-11.md
│ ├── 2021-01-12.md
│ ├── 2021-01-13.md
│ ├── 2021-01-14.md
│ ├── 2021-01-15.md
│ ├── 2021-01-16.md
│ ├── 2021-01-17.md
│ ├── 2021-01-18.md
│ ├── 2021-01-19.md
│ ├── 2021-01-20.md
│ ├── 2021-01-21.md
│ ├── 2021-01-22.md
│ ├── 2021-01-23.md
│ ├── 2021-01-24.md
│ ├── 2021-01-25.md
│ ├── 2021-01-26.md
│ ├── 2021-01-27.md
│ ├── 2021-01-28.md
│ ├── 2021-01-29.md
│ ├── 2021-01-30.md
│ ├── 2021-01-31.md
│ ├── 20210101-D.md
│ ├── 20210102-D.md
│ ├── 20210103-D.md
│ ├── 20210104-D.md
│ ├── 20210105-D.md
│ ├── 2023-06-05.md
│ ├── 2023-06-06.md
│ ├── 2023-06-07.md
│ ├── 2023-06-08.md
│ ├── 3-20210103.md
│ ├── 4-20210104.md
│ ├── 5-20210105.md
│ ├── D-20210101.md
│ ├── D-20210102.md
│ ├── D-20210103.md
│ ├── D-20210104.md
│ ├── D-20210105.md
│ ├── Jeffrey-20210101-Diary.md
│ ├── Jeffrey-20210101-Journal.md
│ ├── Jeffrey-20210102-Diary.md
│ ├── Jeffrey-20210102-Journal.md
│ ├── Jeffrey-20210103-Diary.md
│ ├── Jeffrey-20210103-Journal.md
│ ├── Jeffrey-20210104-Diary.md
│ ├── Jeffrey-20210104-Journal.md
│ ├── Jeffrey-20210105-Diary.md
│ ├── Jeffrey-20210105-Journal.md
│ ├── Lucas-20210101-Diary.md
│ ├── Lucas-20210101-Journal.md
│ ├── Lucas-20210102-Diary.md
│ ├── Lucas-20210102-Journal.md
│ ├── Lucas-20210103-Diary.md
│ ├── Lucas-20210103-Journal.md
│ ├── Lucas-20210104-Diary.md
│ ├── Lucas-20210104-Journal.md
│ ├── Lucas-20210105-Diary.md
│ └── Lucas-20210105-Journal.md
└── example_generator.ts
├── manifest.json
├── package-lock.json
├── package.json
├── rollup.config.build.mjs
├── rollup.config.dev.mjs
├── src
├── bullet.ts
├── collecting.ts
├── data.ts
├── expr.ts
├── heatmap.ts
├── helper.ts
├── main.ts
├── month.ts
├── parsing.ts
├── pie.ts
├── rendering.ts
├── settings.ts
└── summary.ts
├── styles.css
├── tsconfig.json
└── versions.json
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## Expected Behavior
4 |
5 |
6 |
7 | ## Current Behavior
8 |
9 |
10 |
11 | ## Possible Solution
12 |
13 |
14 |
15 | ## Steps to Reproduce (for bugs)
16 |
17 | 1.
18 | 2.
19 | 3.
20 | 4.
21 |
22 | ## Context
23 |
24 |
25 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for all configuration options:
4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5 |
6 | version: 2
7 | updates:
8 | # Maintain dependencies for GitHub Actions
9 | - package-ecosystem: "github-actions"
10 | # Workflow files stored in the default location of `.github/workflows`. (You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`.)
11 | directory: "/"
12 | schedule:
13 | interval: "weekly"
14 | # Maintain dependencies for npm
15 | - package-ecosystem: "npm" # See documentation for possible values
16 | directory: "/" # Location of package manifests
17 | schedule:
18 | interval: "weekly"
19 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 | # Description
2 |
3 | Please include a summary of the change and which (if any) issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
4 |
5 | Fixes # (issue)
6 |
7 | ## Type of change
8 |
9 | Please delete options that are not relevant.
10 |
11 | - [ ] Bug fix (non-breaking change which fixes an issue)
12 | - [ ] New feature (non-breaking change which adds functionality)
13 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
14 | - [ ] This change requires a documentation update
15 |
16 | # How Has This Been Tested?
17 |
18 | - [ ] If this is a bug fix, did you add or update a test file to the examples directory that verifies the bug is fixed?
19 | - [ ] If this is a new feature, did you add files to the examples directory to demonstrate the feature?
20 | - [ ] If this is a new feature, did you add documentation to the docs directory for the feature?
21 |
--------------------------------------------------------------------------------
/.github/workflows/releases.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 |
3 | on:
4 | release:
5 | types: [published]
6 |
7 | jobs:
8 | build:
9 | permissions:
10 | contents: write
11 | runs-on: ubuntu-latest
12 | steps:
13 | - uses: actions/checkout@v4
14 | - name: Use Node.js
15 | uses: actions/setup-node@v4
16 | with:
17 | node-version: '18.x'
18 | - name: Build
19 | run: |
20 | yarn
21 | yarn build
22 | yarn zip
23 | - name: Release with Notes
24 | uses: softprops/action-gh-release@v2
25 | with:
26 | files: |
27 | main.js
28 | manifest.json
29 | styles.css
30 | obsidian-tracker-*.zip
31 | env:
32 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Intellij
2 | *.iml
3 | .idea
4 |
5 | # npm
6 | node_modules
7 |
8 | # build
9 | main.js
10 | *.js.map
11 | examples/*.js
12 | *.zip
13 |
14 | # .obsidian
15 | .obsidian
16 |
17 | # examples for users
18 | examples/case
19 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021-2024 Hsuan Hao Chang
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 | # Obsidian Tracker Plugin
2 |
3 | 
4 |
5 |
6 |
7 | This is an [Obsidian](https://obsidian.md/) plugin that helps you collect data from notes and represent it comprehensively.
8 |
9 | [Here](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/Examples.md) is a table containing simplified examples showing what you can track.
10 |
11 | ## What's New
12 |
13 | Version 1.16.0
14 |
15 | - Adding thresholdType parameter to Calendars
16 | - Enable bar chart full-bar display at beginning and end
17 | - Update dependencies
18 |
19 | Version 1.15.1
20 |
21 | - Fix: Added DatasetName as title for calendar in annotation mode
22 | - Fix: Resolve scaling issue when navigating between monthly views
23 | - Update dependencies
24 |
25 | Version 1.15.0
26 |
27 | - Fix: Minor spelling error in Examples.md
28 | - Added new expression functions - First and Last
29 | - Updated dates in examples to fix plots
30 | - Respect thresholds in scaled months
31 | - Update dependencies
32 |
33 | Version 1.14.0
34 |
35 | - Update dependencies
36 | - Prevent overlapping external labels in pie chart
37 | - Enable Stacked Bar Chart
38 |
39 | Version 1.13.3
40 |
41 | - Update dependencies
42 | - Fix typo in FinanceTracker.md
43 | - Fix typo in TestExpression.md
44 | - Update main.ts - use new format for {{average}}
45 |
46 | Version 1.13.2
47 |
48 | - Update dependencies
49 | - Fix typo in README.md
50 | - Change streak counts to terminate on falsey values rather than null
51 |
52 | Version 1.13.1
53 |
54 | - Fix packaging script
55 |
56 | Version 1.13.0
57 |
58 | - Add support for inline dataview fields (including emoji support for values)
59 | - Update dependencies
60 |
61 | Version 1.12.0
62 |
63 | - Add aspect ratio parameter for graphs
64 | - Reorganize release notes in readme to be in descending order (latest release first)
65 |
66 | Version 1.11.0
67 |
68 | - Add support for checkboxes in new properties added in Obsidian 1.4
69 | - Fix typos in documentation and examples
70 |
71 | Version 1.10.9
72 |
73 | - Replace tab characters by spaces
74 | - Accept more unicode characters in dvField
75 | - Allow emojis in the folder path
76 | - Fixed bugs
77 |
78 | Version 1.10.8
79 |
80 | - Fixed startDate/endDate misread as a relative date
81 |
82 | Version 1.10.7
83 |
84 | - Allow using html image tags as emoji inputs
85 |
86 | Version 1.10.6
87 |
88 | - Fixed the coloring for missing data in the month view
89 |
90 | Version 1.10.5
91 |
92 | - Allow using a relative date value in `initMonth` in the month view
93 |
94 | Version 1.10.4
95 |
96 | - Allow using a regular expression as a key of the parameter `textValueMap`
97 | - Add a parameter `shiftOnlyValueLargerThan` to determine when to do `valueShift`
98 | - Fixed bugs reported by users
99 | - Fixed typo in plugin settings
100 |
101 | Version 1.10.3
102 |
103 | - Allow using the parameter `fitPanelWidth` with the output type `month` and `pie`
104 | - Fixed the resizing and positioning of the chart tooltip
105 |
106 | Version 1.10.2
107 |
108 | - Fixed plugin not rendering on some macOS machines
109 |
110 | Version 1.10.1
111 |
112 | - Fixed 'failed to load plugin' on iOS
113 |
114 | Version 1.10.0
115 |
116 | - Add annotation mode for month view ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestCalendar.md))
117 | - Add parameters `xAxisTickInterval`, `yAxisTickInterval`, `xAxisTickLabelFormat` and `yAxisTickLabelFormat` for the line and bar chart ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestAxisIntervalAndFormat.md))
118 | - Allow using regular expression in parameter `dateFormatPrefix` and `dateFormatSuffix` ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestDateFormats.md))
119 | - Add parameters `file`, `specifiedFilesOnly`, `fileContainsLinkedFiles`, and `fileMultiplierAfterLink` to retrieve data from specified files ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestSpecifiedFiles.md))
120 | - Add a parameter `textValueMap` to convert texts or emojis to specified values ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestTextValueMap.md))
121 | - Fixed bugs
122 | - Enhanced error messages
123 |
124 | ## !!! Breaking Changes !!!
125 |
126 | From version 1.9.0, template variables, e.g. '{{sum}}', are deprecated. Instead, Tracker provide operators (+, -, *, /, %) and functions (dataset(), sum(), maxStreak(), ......etc) to help us do data processing. For users having code blocks from previous version, please replace '{{sum}}' by '{{sum()}}' or '{{sum(1)}}' by '{{sum(dataset(1))}}'. More information about the new expressions could be found [here](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/Expressions.md).
127 |
128 | ## Usage
129 |
130 | 1. Have some targets you want to track in daily notes.
131 | 2. Add a new note for displaying the tracker.
132 | 3. Add tracker code blocks manually ([examples](https://github.com/pyrochlore/obsidian-tracker/tree/master/examples)) or using [commands](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/Commands.md).
133 | 4. Switch the document view mode to 'Preview', then the code block will get rendered.
134 |
135 | For more use cases, please download and open the [examples](https://github.com/pyrochlore/obsidian-tracker/tree/master/examples) folder in obsidian with this plugin installed and enabled.
136 |
137 | ## More Details You May Want to Know
138 |
139 | - [Installation](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/Installation.md): Install the plugin from Obsidian or install it manually
140 | - [Concepts](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/Concepts.md): Explain how this plugin works and what to setup
141 | - [Target Evaluation](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/TargetEvaluation.md)
142 | - [Input Parameters](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/InputParameters.md)
143 | - [Expressions](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/Expressions.md)
144 | - [Examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/Examples.md)
145 | - [Plugin Settings](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/Settings.md)
146 | - [Release Notes](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/ReleaseNotes.md)
147 | - [Road Map](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/RoadMap.md)
148 | - [Frequently Asked Questions](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/Questions.md)
149 |
150 | ## Support
151 |
152 | - If you like this plugin or want to support further development, you can [Buy Me a Coffee](https://www.buymeacoffee.com/pyrochlore).
153 | - Please report bugs and request features in [GitHub Issues](https://github.com/pyrochlore/obsidian-tracker/issues)
154 |
--------------------------------------------------------------------------------
/docs/Commands.md:
--------------------------------------------------------------------------------
1 | # Commands
2 |
3 | To smooth the process of making trackers, obsidian-tracker provides three commands (There will be more in the future release), "Add Line Chart Tracker", "Add Bar Chart Tracker", and "Add Summary Tracker". Just type Ctrl/Cmd+P to activate the command palette, then type "Tracker" to search these commands.
4 |
5 | After a command is executed, a code block will be added to the next line below your cursor position for you. The added code block will contain the most frequently used keys. To see the complete list of input parameters and description, please check [this document](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/InputParameters.md).
--------------------------------------------------------------------------------
/docs/Concepts.md:
--------------------------------------------------------------------------------
1 | # Concepts
2 |
3 | This plugin was designed to read code blocks in [YAML format](https://en.wikipedia.org/wiki/YAML). The key-value pairs in the code blocks tell the plugin what data to collect and how to represent the result.
4 |
5 | [Here](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/InputParameters.md) are all the parameters (key-value pairs) defined in this plugin. They are used for collecting data, evaluating targets, data preprocessing, and rendering output.
6 |
7 | ### Collecting Data
8 |
9 | Providing parameters `searchType` and `searchTarget` is the minimum requirement for a successful data collection. `searchType` can be `tag`, `frontmatter`, `wiki`, `dvField`, `table`, `fileMeta`, `task`, or `text`. Then the cooresponding `searchTarget` should be provided according to the specified type.
10 |
11 | ### Target Evaluation
12 |
13 | Depends on the `searchType` and the `searchTarget` you provided, the evaluation of a target would be different. Simply speaking, you can track the occurrences of a target or the value attached/embedded in it.
14 |
15 | To see the detail about the target evaluation, please check the document [Target Evaluation](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/TargetEvaluation.md).
16 |
17 | ### Rendering Output
18 |
19 | Currently, obsidian-tracker provides five kinds of rendering output: `line`, `bar`, `summary`, `bullet`, `month` and `pie`. You have to provide at least one output parameter in a code block.
20 |
21 | With output type set to `line` or `bar`, Tracker plugin will generate a customizable chart. These charts are very good at seeing the variation of collected number in the notes.
22 |
23 | With the output type `summary`, a text block based on your '**template**' parameter will be created. You can use [expressions](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/Expressions.md) like '{{sum()}}' or '{{maxStreak()}}' in the template parameter, to get a statistical summary of collected data.
24 |
25 | Output type `bullet` creates a [bullet chart](https://en.wikipedia.org/wiki/Bullet_graph) and could serve as a gauge showing the status (level, performance, progress) of a dataset.
26 |
27 | Output type `month` creates a month view with circled dates exceeding the given threshold and streaks showing how long it persisted.
28 |
29 | Output type `pie` creates a pie chart. The `data` parameter should be applied for circular sectors you want to add. Parameter `label` and `extLabel` are used for displaying labels and `dataName` is used for the diplay names on legend.
30 |
31 | Detailed description for all parameters of the output types can be found [here](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/InputParameters.md).
--------------------------------------------------------------------------------
/docs/Examples.md:
--------------------------------------------------------------------------------
1 | # Examples
2 |
3 | We provide a simplified table of use cases and full examples including data.
4 |
5 | ## Table of Use Cases
6 |
7 | Check where (Location) and what (Target to Track) is your target and find the settings (Tracker) you need.
8 |
9 | | Location | Target to Track | Tracker | Get (O)ccurrences/(V)alues |
10 | |:--------|:-------|:---------|:--:|
11 | | content | #meditation | searchType: tag
searchTarget: meditation | O |
12 | | frontmatter | ---
tags: meditation
--- | searchType: tag
searchTarget: meditation | O |
13 | | content | #weight:60.5kg | searchType: tag
searchTarget: weight | V |
14 | | content | #finance/bank1/transfer:100USD | searchType: tag
searchTarget: finance/bank1/transfer | V |
15 | | content | #finance/bank1/transfer:100USD
#finance/bank1/income:80USD
#finance/bank1/outcome:-120USD | searchType: tag
searchTarget: finance/bank1 | V |
16 | | content | #blood-pressure:180/120 | searchType: tag
searchTarget: blood-pressure[0], blood-pressure[1] | V |
17 | | content | dvTarget:: 20.5 | searchType: dvField
searchTarget: dvTarget | V |
18 | | content | dvTarget:: 20.5/30.5 | searchType: dvField
searchTarget: dvTarget[0], dvTarget[1] | V |
19 | | content | dvTarget:: 20.5, 30.5 | searchType: dvField
searchTarget: dvTarget[0], dvTarget[1]
separator: 'comma' | V |
20 | | frontmatter | ---
mood: 10
--- | searchType: frontmatter
searchTarget: mood | V |
21 | | frontmatter | ---
bp: 184.4/118.8
--- | searchType: frontmatter
searchTarget: bp[0], bp[1] | V |
22 | | frontmatter | ---
bp: 184.4, 118.8
--- | searchType: frontmatter
searchTarget: bp[0], bp[1]
separator: 'comma' | V |
23 | | frontmatter | ---
bp: [184.4, 118.8]
--- | searchType: frontmatter
searchTarget: bp[0], bp[1] | V |
24 | | frontmatter | ---
clock-in: 10:45
clock-out: 20:51
--- | searchType: frontmatter
searchTarget: clock-in, clock-out | V |
25 | | content | [[journal]] | searchType: wiki
searchTarget: journal | O |
26 | | content | ⭐ | searchType: text
searchTarget: ⭐ | O |
27 | | content | love | searchType: text
searchTarget: love | O |
28 | | content | test@gmail.com
test@hotmail.com | searchType: text
searchTarget: '.+\\@.+\\..+' | O |
29 | | content | #weightlifting: 50 | searchType: text
searchTarget: 'weightlifting: (?\[\\-]?[0-9]+[\\.][0-9]+\|[\\-]?[0-9]+)' | V |
30 | | content | I walked 10000 steps today. | searchType: text
searchTarget: 'walked\\s+(?\[0-9]+)\\s+steps' | V |
31 | | content | myvalues 1/2/3 | searchType: text
searchTarget: 'myvalues\\s+(?\[0-9]+)/([0-9]+)/([0-9]+), myvalues\\s+([0-9]+)/(?\[0-9]+)/([0-9]+), myvalues\\s+([0-9]+)/([0-9]+)/(?\[0-9]+)' | V |
32 | | table content | { a table filled with dates and values }
[example table](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/data/Tables.md) | searchType: table
searchTarget: filePath[0][0], filePath[0][1] | V |
33 | | table content | { a table filled with dates and values }
[example table](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/data/Tables.md) | searchType: table
searchTarget: filePath[1][0], filePath[1][1][0], filePath[1][1][1] | V |
34 | | file meta | meta data from files
(size, cDate, mDate, numWords, numChars, numSentences) | searchType: fileMeta
searchTarget: size | V |
35 | | content | - [x] Say love
- [ ] Say love | searchType:task
searchTarget: Say love | O |
36 | | content | - [x] Say love | searchType:task.done
searchTarget: Say love | O |
37 | | content | - [ ] Say love | searchType: task.notdone
searchTarget: Say love | O |
38 |
39 | ## Full examples
40 |
41 | Full tracker code blocks can be found in folder [examples](https://github.com/pyrochlore/obsidian-tracker/tree/master/examples) and the corresponding notes (data) can be found under folder '[diary](https://github.com/pyrochlore/obsidian-tracker/tree/master/examples/diary)' and '[data](https://github.com/pyrochlore/obsidian-tracker/tree/master/examples/data)'.
42 |
43 | List of all examples
44 | - [Bloodpressure Tracker](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/BloodPressureTracker.md)
45 | - [Error Messages](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/ErrorMessages.md)
46 | - [Finance Tracker](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/FinanceTracker.md)
47 | - [Habit Tracker](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/HabitTracker.md)
48 | - [Star Tracker](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/StarTracker.md)
49 | - [Bar Chart](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestBarChart.md)
50 | - [Axis Interval and Format](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestAxisIntervalAndFormat.md)
51 | - [Bullet Chart](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestBullet.md)
52 | - [Calendar](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestCalendar.md)
53 | - [Date Formats](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestDateFormats.md)
54 | - [Dataview Inline Field](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestDvField.md)
55 | - [Expression](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestExpression.md)
56 | - [File Meta](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestFileMeta.md)
57 | - [Legends](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestLegends.md)
58 | - [Multiple Targets / Multiple Values](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestMultipleTargetsMultipleValues.md)
59 | - [Pie Chart](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestPieChart.md)
60 | - [Scaling and Positioning](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestScalingAndPositioning.md)
61 | - [Specified Files](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestSpecifiedFiles.md)
62 | - [Summary](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestSummary.md)
63 | - [Table](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestTable.md)
64 | - [Task](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestTask.md)
65 | - [Text-value Map/Mood Tracker](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestTextValueMap.md)
66 | - [Time Values](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestTimeValues.md)
67 | - [Word Counting](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestWordCounting.md)
68 | - [X Dataset](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestXDataset.md)
69 | - [Regular Expression](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestRegex.md)
70 | - [Weight Tracker](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/WeightTracker.md)
71 | - [Wiki](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/WikiTracker.md)
72 |
73 |
--------------------------------------------------------------------------------
/docs/Expressions.md:
--------------------------------------------------------------------------------
1 | # Expressions
2 |
3 | Expressions could help us create new and meaningful data from the original collected data by using operators and functions.
4 |
5 | ## !!! Breaking Changes !!!
6 |
7 | From version 1.9.0, template variables, e.g. '{{sum}}', are deprecated. Instead, Tracker provide operators (+, -, *, /, %) and functions (dataset(), sum(), maxStreak(), ......etc) to help us do data processing. For users having code blocks from previous version, please replace '{{sum}}' by '{{sum()}}' or '{{sum(1)}}' by '{{sum(dataset(1))}}'.
8 |
9 | ## Where to Use
10 |
11 | Currently, we can only use expressions in some parameters. These includes `template` in `summary` output, `value` in `bullet` output, and `data` `label` `extLabel` in `pie` output. In future release, there will be more parameters using expressiones as input.
12 |
13 | ## How to Use
14 |
15 | Expressions should be be wrapped in curly brackets. By using the combination of operators and funtions, Tracker can resolve the whole expression in brackets and then generate a number or a string according to what was requested.
16 |
17 | If the resolved output of an expression is a string, we can assign a format string to it. The format string should be placed after the expression in curly brackets following by two colons. For example, The expression '{{sum()::i}}' will force the output number represented as an integer (i for integer).
18 |
19 | For the number output, use '[Printf Format String](https://en.wikipedia.org/wiki/Printf_format_string)' for the format string. For the date output, use the date format string defined in [Moment.js](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/).
20 |
21 | The following tables show all the operators and functions available for now. Please make sure the input type and output type when you are combining them together. Examples could be found [here](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestExpression.md). Requests for operators or functions are welcome.
22 |
23 | ## List of Operators
24 |
25 | ### Uniry Operators
26 |
27 | | Function | Description | Operant | Output |
28 | |:---------|:------------|:--------|:------|
29 | | + | positive | number or dataset | number or dataset |
30 | | - | negative | number or dataset | number or dataset |
31 |
32 | ### Binary Operators
33 |
34 | | Function | Description | Left Operant | Right Operant | Output |
35 | |:---------|:------------|:-----|:------|:-------|
36 | | + | plus | number or dataset | number or dataset | number or dataset |
37 | | - | minus | number or dataset | number or dataset | number or dataset |
38 | | * | multiply | number or dataset | number or dataset | number or dataset |
39 | | / | divide | number or dataset | number or dataset | number or dataset |
40 | | % | modulo | number or dataset | number or dataset | number or dataset |
41 |
42 | e.g.
43 | - number + number --> number
44 | - dataset + number --> dataset
45 | - number + dataset -> dataset
46 | - dataset + dataset --> dataset
47 |
48 | ## List of Functions
49 |
50 | ### Get Dataset by Index
51 |
52 | | Function(InputType): OutputType | Description |
53 | |:------------------|:-----------|
54 | | dataset(number): Dataset | Get dataset from dataset id (the order in `searchTarget`) |
55 |
56 | ### Functions Accept Dataset and return a value
57 |
58 | **If the input dataset is missing, it will use the first available Y dataset found.**
59 |
60 | | Function(InputType): OutputType | Description |
61 | |:------------------|:-----------|
62 | | first(Dataset): number | First value of the dataset |
63 | | last(Dataset): number | Last value of the dataset |
64 | | min(Dataset): number | Minimum value of the dataset |
65 | | minDate(Dataset): Date | Latest date of minimum value |
66 | | max(Dataset): number | Maximum value of the dataset |
67 | | maxDate(Dataset): Date | Latest date of maximum value |
68 | | startDate(Dataset): Date | Start date of the dataset |
69 | | endDate(Dataset): Date | End date of the dataset |
70 | | sum(Dataset): number | Summation of values of the dataset |
71 | | numTargets(Dataset): number | Total counts of targets |
72 | | numDays(Dataset): number | Days from startDate to endDate |
73 | | numDaysHavingData(Dataset): number | Number of days having data |
74 | | maxStreak(Dataset): number | Maximum continuous days without breaks |
75 | | maxStreakStart(Dataset): Date | Start date of the max streak |
76 | | maxStreakEnd(Dataset): Date | End date of the max streak |
77 | | maxBreaks(Dataset): number | Maximum break days |
78 | | maxBreaksStart(Dataset): Date | Start date of the maximum break days |
79 | | maxBreaksEnd(Dataset): Date | End date of the maximum break days |
80 | | currentStreak(Dataset): number | Current continuous days |
81 | | currentStreakStart(Dataset): Date | Start date of current streak |
82 | | currentStreakEnd(Dataset): Date | End date of current streak |
83 | | currentBreaks(Dataset): number | Current break days |
84 | | currentBreaksStart(Dataset): Date | Start date of current breaks |
85 | | currentBreaksEnd(Dataset): Date | End date of current breaks |
86 | | average(Dataset): number | Average value of the dataset |
87 | | median(Dataset): number | Median value of the dataset |
88 | | variance(Dataset): number | Variance value of the dataset |
89 |
90 | ### Functions Accept Dataset and Return Dataset
91 |
92 | | Function(InputType): OutputType | Description |
93 | |:---------|:-----------|
94 | | normalize(Dataset): Dataset | rescale the Y values to [0, 1] |
95 | | setMissingValues(Dataset, number): Dataset | set the missing values |
96 |
97 | ## Missing Values
98 |
99 | Notice that the missing values (null values) are ignored in function like sum or average. Moreover, a value plus a missing value will leads to null value (missing value). To avoid these, you can set those missing values to a value by using parameter `penalty` or use expression function `setMissingValues`.
100 |
--------------------------------------------------------------------------------
/docs/Installation.md:
--------------------------------------------------------------------------------
1 | # Installation
2 |
3 | ## Install from the Obsidian Settings Panel
4 | 1. From Settings Panel (the icon at the bottom left corner) -> Options -> Community plugins, set 'safe mode' to off.
5 | 2. In the 'Community plugins' section, click 'Browse' and find the obsidian-tracker plugin by the name 'Tracker'.
6 | 3. Press the button 'Install' and wait for the completion of the install.
7 | 4. In the section 'Installed plugins', find and enable the plugin just installed.
8 | 5. Enjoy tracking.
9 |
10 | ## Manual Installation
11 | Download the latest [release](https://github.com/pyrochlore/obsidian-tracker/releases). Extract and put the three files (main.js, manifest.json, styles.css) to folder '{{obsidian_vault}}/.obsidian/plugins/obsidian-tracker'.
--------------------------------------------------------------------------------
/docs/Questions.md:
--------------------------------------------------------------------------------
1 | # Frequently Asked Questions
2 |
3 | - Does Tracker only track data in daily notes (file names contain dates)?
4 |
5 | No. The file name of your notes could be any string. But we do need a date from each file. If it is not from the file name, we should add one more `searchTarget` and use that target as the source of X values by setting parameter `xDataset` to its index. The searchType `fileMeta` with `searchTarget` cDate (creation date) and mDate (modification date) are always accessible as date sources if you don't have any. Examples of these use cases could be found [here](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestXDataset.md).
6 |
7 | - Why my line chart looks broken (not connected) at some points?
8 |
9 | Tracker only connects adjacent points (neighbor points by date) by default. To force it connecting points over missing data, set the parameter `fillGap` under `line` or `bar` to true.
10 |
11 | - Why does the plugin show: error 'No valid date as X value found in notes'?
12 |
13 | First we have to confirm where is the source of your X values. Tracker always needs X values in dates. The default source of X values are the file names of your notes. As long as a proper `dateFormat` was assigned, and combine with `dateFormatPrefix` and `dateFormatSuffix`, the dates in file names could be extracted from your file names successfully.
14 |
15 | If the date values are from front matter, dataview inline field, or other places, choose the right `searchType` and `searchTarget` and mark them as `xDataset`, Tracker will collect X values for you.
16 |
17 | If you don't have any date values, and you just want to count the number of occurrences of a target. As a trick, you can use the creation date (cDate) or modification date (mDate) of the file as X data source.
18 |
19 | Examples of these use cases could be found [here](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestXDataset.md).
20 |
21 | - Why does the plugin show: error 'No valid Y value found in notes'?
22 |
23 | That means no matched data found in your notes. Please check the document for the detail of [target evaluation](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/TargetEvaluation.md).
24 |
25 | - Why does the plugin show: 'Error parsing YAML'?
26 |
27 | There are syntax errors in your code block. Please check [this document](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/YAML.md) for common issues.
28 |
29 | ---
30 |
31 | Still have problems?? You might encounter a bug.
32 | Welcome to leave an issue [here](https://github.com/pyrochlore/obsidian-tracker/issues).
33 |
--------------------------------------------------------------------------------
/docs/ReleaseNotes.md:
--------------------------------------------------------------------------------
1 | # Release Notes
2 |
3 | ## 1.16.0
4 |
5 | - Adding thresholdType parameter to Calendars
6 | - Enable bar chart full-bar display at beginning and end
7 | - Update dependencies
8 |
9 | ## 1.15.1
10 |
11 | - Fix: Added DatasetName as title for calendar in annotation mode
12 | - Fix: Resolve scaling issue when navigating between monthly views
13 | - Update dependencies
14 |
15 | ## 1.15.0
16 |
17 | - Fix: Minor spelling error in Examples.md
18 | - Added new expression functions - First and Last
19 | - Updated dates in examples to fix plots
20 | - Respect thresholds in scaled months
21 | - Update dependencies
22 |
23 | ## 1.14.0
24 |
25 | - Update dependencies
26 | - Prevent overlapping external labels in pie chart
27 | - Enable Stacked Bar Chart
28 |
29 | ## 1.13.3
30 |
31 | - Update dependencies
32 | - Fix typo in FinanceTracker.md
33 | - Fix typo in TestExpression.md
34 | - Update main.ts - use new format for {{average}}
35 |
36 | ## 1.13.2
37 |
38 | - Update dependencies
39 | - Fix typo in README.md
40 | - Change streak counts to terminate on falsey values rather than null
41 |
42 | ## 1.13.1
43 |
44 | - Fix packaging script
45 |
46 | ## 1.13.0
47 |
48 | - Add support for inline dataview fields (including emoji support for values)
49 | - Update dependencies
50 |
51 | ## 1.12.0
52 |
53 | - Add aspect ratio parameter for graphs
54 | - Reorganize release notes in readme to be in descending order (latest release first)
55 |
56 | ## 1.11.0
57 |
58 | - Add support for checkboxes in new properties added in Obsidian 1.4
59 | - Fix typos in documentation and examples
60 |
61 | ## v1.10.9
62 |
63 | - Replace tab characters by spaces
64 | - Accept more unicode characters in dvField
65 | - Allow emojis in the folder path
66 | - Fixed bugs
67 |
68 | ## v1.10.8
69 |
70 | - Fixed startDat/endDate misread as a relative date
71 |
72 | ## v1.10.7
73 |
74 | - Allow using html image tags as emoji inputs
75 |
76 | ## v1.10.6
77 |
78 | - Fixed the coloring for missing data in the month view
79 |
80 | ## v1.10.5
81 |
82 | - Allow using a relative date value in `initMonth` in the month view
83 |
84 | ## v1.10.4
85 |
86 | - Allow using a regular expression as a key of the parameter `textValueMap`
87 | - Add a parameter `shiftOnlyValueLargerThan` to determine when to do `valueShift`
88 | - Fixed bugs reported by users
89 | - Fixed typo in plugin settings
90 |
91 | ## v1.10.3
92 |
93 | - Allow using the parameter `fitPanelWidth` with the output type `month` and `pie`
94 | - Fixed the resizing and positioning of the chart tooltip
95 |
96 | ## v1.10.2
97 |
98 | - Fixed plugin not rendering on some macOS machines
99 |
100 | ## v1.10.1
101 |
102 | - Fixed 'failed to load plugin' on iOS
103 |
104 | ## v1.10.0
105 |
106 | - Add annotation mode for month view ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestCalendar.md))
107 | - Add parameters `xAxisTickInterval`, `yAxisTickInterval`, `xAxisTickLabelFormat` and `yAxisTickLabelFormat` for the line and bar chart ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestAxisIntervalAndFormat.md))
108 | - Allow using regular expression in parameter `dateFormatPrefix` and `dateFormatSuffix` ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestDateFormats.md))
109 | - Add parameters `file`, `specifiedFilesOnly`, `fileContainsLinkedFiles`, and `fileMultiplierAfterLink` to retrieve data from specified files ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestSpecifiedFiles.md))
110 | - Add a parameter `textValueMap` to convert texts or emojis to specified values ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestTextValueMap.md))
111 | - Fixed bugs
112 | - Enhanced error messages
113 |
114 | ## v1.9.2
115 |
116 | - Allow using seconds in time values
117 | - Fixed error parsing `dvField`
118 |
119 | ## v1.9.1
120 |
121 | - Fixed errors on collecting time values from `dvField`
122 | - Fixed errors on collecting wiki while fileCache.links is undefined
123 |
124 | ## v1.9.0
125 |
126 | - Add a new output type `pie`, rendering a pie chart ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestPieChart.md))
127 | - Allow expressions (operators and functions) as data inputs for output type `summary`, `bullet`, and `pie` (examples: [expression](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestExpression.md), [summary](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestSummary.md), [bullet](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestBullet.md), [pie](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestPieChart.md))
128 | - Allow formatting evaluated expressions by a follwing format string ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestExpression.md))
129 |
130 | ## v1.8.2
131 |
132 | - Fixed tasks searching not working for multiple targets
133 |
134 | ## v1.8.1
135 |
136 | - Fixed bugs while using month view with parameter `xDataset`
137 |
138 | ## v1.8.0
139 |
140 | - Add a new `searchType` `task`, retrieving data from tasks ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestTask.md))
141 | - Enhancement
142 | - Month view ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestCalendar.md))
143 | - Add parameter `circleColorByValue` to show color based on the value
144 | - Support multiple targets (dataset), change the dataset by clicking the header
145 | - Add a button (◦) to show current month
146 | - Accept ISO-8601 date as `dateFormat` ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestDateFormats.md#iso-8601-date-format))
147 | - Relative date input for `startDate` and `endDate` ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestDateFormats.md#relative-date-input-for-startdate-and-enddate))
148 | - Fixed missing dvField values at the last line of files
149 |
150 | ## v1.7.0
151 |
152 | - Add a new output type 'month', rendering a month view for a given dataset ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestCalendar.md))
153 |
154 | ## v1.6.1
155 |
156 | - Add new targets 'numWords', 'numChars', and 'numSentences' for input type 'fileMeta' ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestWordCounting.md))
157 |
158 | ## v1.6.0
159 |
160 | - Add a new input type 'fileMeta', getting meta data from a file ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestFileMeta.md))
161 | - Add a new output type 'bullet', rendering a bullet chart ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestBullet.md))
162 | - Enhancement
163 | - Accept tracking time values ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestTimeValues.md))
164 | - Allow tracking nested values from front matter
165 | - Allow using dataset with date values as xDataset ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestXDataset.md))
166 | - Add more template variables ([examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestTemplateVariables.md))
167 | - Allow parsing date in wiki brackets
168 | - Fixed bugs
169 |
170 | ## v1.5.1
171 |
172 | - Fixed labels not shown in light theme
173 | - Enhanced error handling for searchType 'table'
174 |
175 | ## v1.5.0
176 |
177 | - New searchType 'table', searching records from a given table
178 | - New searchType 'dvField', searching the inline fields used with Dataview plugin
179 | - Enhance multiple values extraction
180 | - Allow using multiple values in searchType 'text'
181 | - Allow using array values in searchType 'frontmatter'
182 | - Allow using multiple values in searchType 'dvField'
183 | - Allow using multiple values in searchType 'table'
184 | - Allow using custom separator for multiple values extraction
185 | - Improved performance
186 | - Reduced package size
187 |
188 | ## v1.4.1
189 |
190 | - Enhanced error handling
191 |
192 | ## v1.4.0
193 |
194 | - Add a new parameter (fixedScale) for the scaling of the output chart
195 | - Add a new parameter (fitPanelWidth) to enable/disable the auto-scaling of the output chart
196 | - Add a new parameter (margin) to help to position the chart
197 | - Tested in Obsidian mobile app on iPhone and iPad
198 | - Fixed bugs
199 |
200 | ## v1.3.0
201 |
202 | - Support reading and rendering multiple targets
203 | - Support reading and rendering multiple values (a tuple of values) under a target
204 | - New output type 'bar', rendering a bar chart
205 | - Add a legend for the chart output
206 | - Fixed bugs
207 |
208 | ## v1.2.1
209 |
210 | - Fixed files with the specified dateFormat are not recognized
211 | - Restored the plugin's settings panel for dateFormat and folder
212 |
213 | ## v1.2.0
214 |
215 | - Enable using regular expression in text searching
216 | - New search type 'frontmatter', searching for key-value pairs in the front matter
217 | - New search type 'wiki', searching for wiki links
218 | - Reduced package size
219 |
220 | ## v1.1.0
221 |
222 | - New output type 'summary'
223 | - Add commands help create Tracker code blocks
224 | - Relaxed the regex for searching tags, allowing tags embedded in sentences
225 | - Fixed issues
226 |
227 | ## v1.0.2
228 |
229 | - Fixed the searching of nested tag in frontmatter
230 | - Reduced the package size by using the module from Obsidian
231 |
232 | ## v1.0.1
233 |
234 | - Remove dependencies to Node.js modules
235 | - Add example markdown files
236 |
237 | ## v1.0.0
238 |
239 | First version released at 2021-03-23
240 |
241 | - Track simple tags, value-attached tags, and texts using code blocks
242 | - Represent the tracked data in a customizable line chart
243 | - Allow tracking in-line tags and tags in frontmatter
244 | - Allow tracking nested tags
245 |
--------------------------------------------------------------------------------
/docs/RoadMap.md:
--------------------------------------------------------------------------------
1 | # Road Map
2 |
3 | - Data Collecting
4 | - [x] Support tracking key-value pairs in frontmatter
5 | - [x] Support searching text using regular expression
6 | - [x] Support multiple targets and multiple values
7 | - [x] Add a parameter xDataset to identify targets to be used as x values
8 | - [x] Allow tracking time values
9 | - [ ] Allow tracking date values
10 | - [x] Get data from a table
11 | - [x] Collect data from dataview plugin's inline fields
12 | - [x] Collect meta information from file
13 | - [x] Support tracking tasks
14 | - [ ] Allow manual data input (x and y values) in custom datasets
15 | - [ ] Allow forced value types
16 | - [ ] Allow using non-date x values
17 | - [ ] Allow multiple points (different time stamp) from a single file
18 | - Output Type and Graph
19 | - [x] Implement output type 'summary', analyzes the input data and represents it using a user-defined text template
20 | - [x] Implement output type 'bar', rendering a bar chart
21 | - [x] Implement output type 'bullet', rendering
22 | - [x] Implement output type 'month', rendering a month view
23 | - [ ] Implement output type 'heatmap', rendering a heatmap like Github activity chart
24 | - [x] Implement output type 'pie', rendering a pie chart
25 | - [x] Add parameters for adjusting the size of the graph
26 | - [ ] Multiple outputs from one code block
27 | - [ ] Support graphs showing the correlation between sets of data
28 | - [ ] Allow a graph drawing selected dataset.
29 | - [x] Allow expressions evaluating operators and functions
30 | - [x] Allow format string for evaluated expressions
31 | - Helper
32 | - [x] Add Commands help create Tracker blocks.
33 | - [ ] Add an 'Explode' button to the rendered blocks, it will replace the code block with the rendered result
34 | - [ ] Add a helper panel for adding frequently used tracking targets to article.
35 | - Data Processing
36 | - [ ] Allow arithmetics operation on dataset and generate custom datasets
37 | - [ ] Add data post-process function, e.g. 'moving average'
38 | - Performance
39 | - [ ] Use PixiJS to do rendering
40 |
41 | And more ... Feature requests are welcome.
42 |
43 | P.S. Features may not be implemented in the order above.
--------------------------------------------------------------------------------
/docs/Settings.md:
--------------------------------------------------------------------------------
1 | # Plugin Settings
2 |
3 | The default folder to search and the date format can be defined in the plugin's settings panel. If `folder` and `dateFormat` are not assigned in your code blocks, these default values will be applied automatically.
4 |
5 | | Setting Item | Description | Default |
6 | |:--------|:-------|:---------|
7 | | Default folder location | The folder to search | Root of the vault |
8 | | Default date format | The date format you are using | 'YYYY-MM-DD' |
9 |
10 | For more information about the dateFormat setting, please also check the [TestDateFormats example](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestDateFormats.md) and [moment.js string format](https://momentjs.com/docs/#/parsing/string-format/).
--------------------------------------------------------------------------------
/docs/TargetEvaluation.md:
--------------------------------------------------------------------------------
1 | # Target Evaluation
2 |
3 | From the [input parameters](https://github.com/pyrochlore/obsidian-tracker/blob/master/docs/InputParameters.md) you provided, the search targets dispersed in the notes will be counted or evaluated as a value. Tracker plugin supports eight kinds of `searchType`: `tag`, `frontmatter`, `wiki`, `text`, `table`, `dvField`, `task`, and `fileMeta`, dealing with different types of searching condition.
4 |
5 | ## Multiple Targets
6 | You can provide multiple search targets in code block by entering an array of targets separated by a comma under parameter `searchType` and `searchTarget`. Each of the targets will be identified in order and then the values in notes will be evaluated and form a dataset indexed by that order in the array (zero-based indexing).
7 |
8 | ```
9 | searchTarget: target0, target1, target2, ......
10 | searchType: type0, type1, type2, .....
11 | datasetName: dataset0, dataset1, dataset2, ......
12 | line:
13 | lineColor: red, blue, yellow
14 | ```
15 |
16 | Above is an example of multiple targets searching. In the code block, multiple targets are provided and separated by a comma. If they have a different searchType, provide the same number of types in the same order. In this case, the second search target 'target1' with index 1 has type 'type1' and name 'dataset1'.
17 |
18 | Many other parameters that accept multiple values (e.g. lineColor) can also be provided and the value given will be applied to the corresponding dataset.
19 |
20 | ## Multiple Values
21 |
22 | Multiple values under a target (value tuple) separated by a slash, e.g. #bloodpressure:180/120mmHg, are supported after version 1.3.0. To identify a specific value as a target, use an accessor with bracket notation where the value in the bracket is the index by the order of values. In this case, they are bloodpressure[0] and bloodpressure[1]. You can find the example of this [here](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/BloodPressureTracker.md). You can also use a custom separator by using the parameter `separator`.
23 |
24 | ## Search Target in Detail
25 |
26 | ### searchType: tag
27 |
28 | Simple tags in the format of '*#tagName*' in the file content are evaluated as a constant value (default value 1.0). You can override the value by assigning the key `constValue` in the code block. Use the tag name (the name after #) as the value of key `searchTarget` or use quoted tag (`#tagName`) to make it work.
29 |
30 | For tags in frontmatter (e.g. tags: meditation), it works like simple tags and will be evaluated as a constant value. For example,
31 |
32 | \-\-\-
33 | tags: tagName1, tagName2
34 | ......
35 | \-\-\-
36 |
37 | Set `searchTarget` to tagName1 or tagName2 will make the plugin do its work.
38 |
39 | In your content, a value can be attached to the tag in the format of '*#tagName:value*'. Note the value should be appended right after your tag and an extra colon **without spaces**. If a value is attached this way, the obsidian-tracker will automatically use the provided value instead of the constant one.
40 |
41 | Nested tags with values attached could be useful for tracking children's data separately and also still see the overall merged data using parent tags.
42 |
43 | If you don't want value-attached tags in your content, you can also put data in front matter and use `frontmatter` as your searchType.
44 |
45 | ### searchType: frontmatter
46 |
47 | This search type is used to query the key-value pairs in the front matter. If you don't want these values been seen in your article, the front matter would be the best place to record. For example,
48 |
49 | \-\-\-
50 | mood: 10
51 | ......
52 | \-\-\-
53 |
54 | ### searchType: wiki
55 | This search type helps you count wiki links in articles. For example,
56 | [[A]]
57 | [[B|Link to B]]
58 |
59 | ### searchType: text
60 | searchType `text` is the most powerful one among all. If you simply provide text like 'love', the number of occurrences of tags will be counted. You can provide a regular expression to search for a very complicated target by wrapping it in single quotes. If you want to retrieve a value from it, use the group name in the expression. To see more detail, see [this case](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestRegex.md).
61 |
62 | Multiple values in text search can be achieved by separate regex by comma and wrap them all in single quotes as follows:
63 |
64 | ```
65 | searchTarget: 'regex1, regex2'
66 | ......
67 | ```
68 |
69 | ### searchType: dvField
70 |
71 | Tracker supports retrieving inline fields used with the dataview plugin. To get "targetName:: value" in your article, try the following tracker settings.
72 |
73 | ```
74 | searchType: dvField
75 | searchTarget: targetName
76 | ......
77 | ```
78 |
79 | If you have multiple values in field, like "targetName:: 123 @ 456", use the following tracker settings.
80 |
81 | ```
82 | searchType: dvField
83 | searchTarget: targetName[0], targetName[1]
84 | separator: '@'
85 | ......
86 | ```
87 |
88 | More dvField example can be found [here](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestMultipleTargesMultipleValues.md#multiple-values-in-dvfield-dataview-inline-field).
89 |
90 | ### searchType: table
91 |
92 | This search type is very much different from others because it does not search over files in the specified folder. Instead, it looks into a given file, finds the specified table, and retrieves data from specified columns. Here is an example,
93 |
94 | ```
95 | searchType: table
96 | searchTarget: data/Tables[0][0], data/Tables[0][1], data/Tables[0][2]
97 | xDataset:
98 | line:
99 | yAxisLocation: none, left, right
100 | lineColor: none, yellow, red
101 | showLegend: true
102 | ```
103 |
104 | In this case, "data/Tables" is the path of the file of interest. The number in the first brackets after the path ([0]) is the index of the table of interest in the file, starts from 0. And the number in the second brackets is the index of the column containing target data. If there are multiple values in table cells, you can provide a third index to identify them.
105 |
106 | More table examples can be found [here](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestTable.md).
107 |
108 | ### searchType: fileMeta
109 |
110 | With this search type, you can retrieve infomation of files. Currently, three kinds of data you can get.
111 |
112 | - cDate: creation date of a file
113 | - mDate: last modification date of a file
114 | - size: file size in bytes
115 | - numWords: number of words in a file
116 | - numChars: number of characters in a file (including spaces)
117 | - numSentences: number of setences in a file
118 |
119 | `cData` and `mDate` can be used as X dataset and `size` can be used as Y dataset.
120 |
121 | ### searchType: task
122 |
123 | You can retrieve infomation from tasks by using `searchType` `task`.
124 | The provided `searchTarget` will limit the result with task's contents match the input.
125 |
126 | Using type `task` or `task.all` will get you all tasks no matter it is done or not.
127 | To get task done, use `task.done`. By contrast, use `task.notdone`.
128 |
--------------------------------------------------------------------------------
/docs/YAML.md:
--------------------------------------------------------------------------------
1 | # YAML Related Issues
2 |
3 | ## Special characters
4 |
5 | YAML special characters (e.g. #, [, ], ...) are not allowed for input values in code blocks. You need to wrap the whole input up by single quotes.
6 |
7 | ### Example 1 - Tag Search
8 | If we have a bunch of tags (say #tagName) to track.
9 | This will leads to 'Error parsing YAML' because of the # charactter.
10 | ```
11 | searchType: tag
12 | searchTarget: #tagName
13 | ```
14 |
15 | Instead, wrapping the input by single quotes will do the work.
16 | ```
17 | searchType: tag
18 | searchTarget: '#tagName'
19 | ```
20 |
21 | or simply
22 | ```
23 | searchType: tag
24 | searchTarget: tagName
25 | ```
26 |
27 | ### Example 2 - Hex Color Codes
28 |
29 | Hex color codes must be wrapped in single quotes.
30 | ```
31 | searchType: tag
32 | searchTarget: weight
33 | line:
34 | lineColor: '#F08080'
35 | ```
36 |
37 | Wrap the whole input by single quotes.
38 | ```
39 | searchType: tag
40 | searchTarget: weight, push-up
41 | line:
42 | lineColor: '#F08080, #008080'
43 | ```
44 |
45 | ### Example 3 - Text Search with Regex
46 |
47 | If we want to track value-attached tags not matched the standard format of Tracker, for example, weightlifting: 20.5kg. We can use search type `text` with regular expression in `searchTarget`.
48 | ```
49 | searchType: text
50 | searchTarget: 'weightlifting:\s(?[\-]?[0-9]+[\.][0-9]+|[\-]?[0-9]+)'
51 | ```
52 | The whole input should be wrapped in single quotes because of the special characters.
53 |
54 | ## Array input
55 | Tracker accepts two types of array input.
56 |
57 | - YAML Array
58 |
59 | A YAML array input can be represented as: ['value1', 'value2', 'value3'].
60 |
61 | - Value Separated by Comma
62 |
63 | Use values separated by comma: value1, value2, value3
64 | Or single quoted string: 'value1, value2, value3'
65 |
66 |
--------------------------------------------------------------------------------
/docs/images/Screenshot_v1.1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/docs/images/Screenshot_v1.1.png
--------------------------------------------------------------------------------
/docs/images/cover_v1.3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/docs/images/cover_v1.3.png
--------------------------------------------------------------------------------
/docs/images/repository-open-graph-template.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/docs/images/repository-open-graph-template.png
--------------------------------------------------------------------------------
/docs/images/screenshot_v1.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/docs/images/screenshot_v1.0.png
--------------------------------------------------------------------------------
/docs/images/screenshot_v1.3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/docs/images/screenshot_v1.3.png
--------------------------------------------------------------------------------
/docs/images/screenshot_v1.6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/docs/images/screenshot_v1.6.png
--------------------------------------------------------------------------------
/docs/images/screenshot_v1.7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/docs/images/screenshot_v1.7.png
--------------------------------------------------------------------------------
/docs/images/screenshot_v1.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/docs/images/screenshot_v1.9.png
--------------------------------------------------------------------------------
/docs/images/usage_v1.0.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/docs/images/usage_v1.0.gif
--------------------------------------------------------------------------------
/docs/images/usage_v1.1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/docs/images/usage_v1.1.gif
--------------------------------------------------------------------------------
/docs/images/usage_v1.3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/docs/images/usage_v1.3.gif
--------------------------------------------------------------------------------
/examples/.obsidian/plugins/obsidian-tracker/.hotreload:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/examples/.obsidian/plugins/obsidian-tracker/.hotreload
--------------------------------------------------------------------------------
/examples/.obsidian/plugins/obsidian-tracker/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyrochlore/obsidian-tracker/4910c12bd8b868b829a037d8510f09a8d07caf4d/examples/.obsidian/plugins/obsidian-tracker/.keep
--------------------------------------------------------------------------------
/examples/BloodPressureTracker.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # Blood Pressure Tracker
4 |
5 | ``` tracker
6 | searchType: frontmatter
7 | searchTarget: bloodpressure[0], bloodpressure[1]
8 | datasetName: systolic, diastolic
9 | folder: diary
10 | startDate: 2021-01-01
11 | endDate: 2021-01-31
12 | line:
13 | title: Blood Pressures
14 | yAxisLabel: BP
15 | yAxisUnit: mmHg
16 | lineColor: yellow, red
17 | showLegend: true
18 | legendPosition: bottom
19 | ```
20 |
21 | ``` tracker
22 | searchType: frontmatter
23 | searchTarget: bloodpressure[0], bloodpressure[1]
24 | datasetName: systolic, diastolic
25 | folder: diary
26 | startDate: 2021-01-01
27 | endDate: 2021-01-31
28 | summary:
29 | template: "Average: {{average(dataset(0))}}/{{average(dataset(1))}}"
30 | ```
31 |
32 | ``` tracker
33 | searchType: frontmatter
34 | searchTarget: bloodpressure[0], bloodpressure[1]
35 | datasetName: systolic, diastolic
36 | folder: diary
37 | startDate: 2021-01-01
38 | endDate: 2021-01-31
39 | line:
40 | title: Blood Pressures
41 | yAxisLabel: Systolic, Diastolic
42 | yAxisUnit: mmHg
43 | yMin: 150, 110
44 | yMax: 190, 125
45 | yAxisLocation: left, right
46 | yAxisColor: yellow, red
47 | yAxisLabelColor: yellow, red
48 | lineColor: yellow, red
49 | showLegend: true
50 | legendPosition: right
51 | ```
52 |
53 | Please also check those search targets in markdown files under folder 'diary'.
54 |
--------------------------------------------------------------------------------
/examples/ErrorMessages.md:
--------------------------------------------------------------------------------
1 | # Error Messages
2 |
3 | ## YAML
4 | Error parsing caused by the escaping character YAMLParsError: Missing closing "quote"
5 | ``` tracker
6 | searchType: tag
7 | searchTarget: "\"
8 | line:
9 | ```
10 |
11 | 'searchTypes' --> typo
12 | 'searchType' --> correct
13 | ``` tracker
14 | searchTypes: tag
15 | searchTarget: weight
16 | line:
17 | ```
18 |
19 | 'searchTargets' --> typo
20 | 'searchTarget' --> correct
21 | ``` tracker
22 | searchType: tag
23 | searchTargets: weight
24 | line:
25 | ```
26 |
27 | 'lines' --> typo
28 | 'line' --> correct
29 | ``` tracker
30 | searchType: tag
31 | searchTarget: weight
32 | lines:
33 | ```
34 |
35 | Missing tracker block identifier, no error message though.
36 | ```
37 | searchType: tag
38 | searchTarget: weight
39 | line:
40 | ```
41 |
42 | ## searchTarget
43 | Missing searchTarget
44 | ``` tracker
45 | searchType: tag
46 | searchTarget:
47 | line:
48 | ```
49 |
50 | Invalid searchTarget, '#' is a special character to YAML, use single quotes to wrap it
51 | ``` tracker
52 | searchType: tag
53 | searchTarget: #weight
54 | line:
55 | ```
56 |
57 | ## Folder
58 | Folder not exists
59 | ``` tracker
60 | searchType: tag
61 | searchTarget: weight
62 | folder: abc
63 | line:
64 | ```
65 |
66 | ## Files
67 | No file in folder
68 | ``` tracker
69 | searchType: tag
70 | searchTarget: weight
71 | folder: empty
72 | line:
73 | ```
74 |
75 | ## Number of parameters
76 | Two search targets provided, the number of search types shouldn't be more than two.
77 | ``` tracker
78 | searchType: frontmatter, frontmatter, frontmatter
79 | searchTarget: bloodpressure[0], bloodpressure[1]
80 | line:
81 | ```
82 |
83 | yAxisLabel allows only two inputs
84 | ``` tracker
85 | searchType: frontmatter, frontmatter
86 | searchTarget: bloodpressure[0], bloodpressure[1]
87 | line:
88 | yAxisLabel: BP1, BP2, BP3
89 | ```
90 |
91 | ## startDate & endDate
92 | The format of startDate or endDate does not match dateFormat in the plugin settings. Change the settings or Add a dateFormat parameter into YAML.
93 | ``` tracker
94 | searchType: tag
95 | searchTarget: weight
96 | startDate: 2020-01-01_Fri
97 | endDate: 2020-01-31_Mon
98 | line:
99 | ```
100 |
101 | We don't have thirty days in February
102 | ``` tracker
103 | searchType: tag
104 | searchTarget: weight
105 | startDate: 2021-02-01
106 | endDate: 2021-02-30
107 | line:
108 | ```
109 |
110 | ## X Values (Dates)
111 | No note found in the given date range
112 | ``` tracker
113 | searchType: tag
114 | searchTarget: weight
115 | startDate: 2020-01-01
116 | endDate: 2020-01-31
117 | line:
118 | ```
119 |
120 | No valid X values, add "xDataset: 0" to fix it
121 | ``` tracker
122 | searchType: fileMeta, dvField
123 | searchTarget: cDate, dataviewTarget
124 | folder: data
125 | line:
126 | fillGap: true
127 | ```
128 |
129 | ## Y Values
130 | No valid Y values!!!!!
131 | Use parameter `textValueMap` to map a text to a value.
132 | ``` tracker
133 | searchType: frontmatter
134 | searchTarget: randchar
135 | folder: diary
136 | line:
137 | fillGap: true
138 | ```
139 |
140 | ## Output
141 | No output type provided, choose 'line', 'bar', or 'summary'.
142 | ``` tracker
143 | searchType: tag
144 | searchTarget: weight
145 | ```
146 |
147 | ## Line Chart
148 | The Parameter 'lineColor' allows only one input for the single target
149 | ``` tracker
150 | searchType: tag
151 | searchTarget: weight
152 | line:
153 | title: Line
154 | lineColor: red, yellow
155 | ```
156 |
157 | The parameter name should be 'title', not 'titles'
158 | ``` tracker
159 | searchType: frontmatter, frontmatter
160 | searchTarget: bloodpressure[0], bloodpressure[1]
161 | line:
162 | titles: "Blood Pressure"
163 | ```
164 |
165 | ## Table
166 | All dates are invalid, leads to an error message
167 | ``` tracker
168 | searchType: table
169 | searchTarget: data/Tables[4][0], data/Tables[4][1]
170 | xDataset: 0
171 | line:
172 | lineColor: none, yellow
173 | ```
174 |
175 |
176 | Please also check those search targets in markdown files under folder 'diary' and 'data'.
177 |
178 | ## Expression
179 | Unknown function
180 | ``` tracker
181 | searchType: task
182 | searchTarget: Say I love you
183 | summary:
184 | template: '{{unknown()}}'
185 | ```
186 |
187 | Incomplete expression
188 | ``` tracker
189 | searchType: task
190 | searchTarget: Say I love you
191 | summary:
192 | template: '{{1+}}'
193 | ```
194 |
195 | No dataset found for id
196 | ``` tracker
197 | searchType: task
198 | searchTarget: Say I love you
199 | summary:
200 | template: '{{sum(dataset(1))}}'
201 | ```
202 |
203 | Divide by zero
204 | ``` tracker
205 | searchType: task
206 | searchTarget: Say I love you
207 | summary:
208 | template: '{{sum()/0}}'
209 | ```
210 |
211 | Invalid data range (data only contains 1 and null)
212 | ``` tracker
213 | searchType: tag
214 | searchTarget: meditation
215 | folder: diary
216 | summary:
217 | template: '{{sum(normalize(dataset(0)))}}'
218 | ```
219 |
220 | ## Deprecated
221 | ### Deprecated template variables
222 |
223 | Deprecated template variable
224 | ``` tracker
225 | searchType: task
226 | searchTarget: Say I love you
227 | summary:
228 | template: '{{sum}}'
229 | ```
230 |
231 |
--------------------------------------------------------------------------------
/examples/FinanceTracker.md:
--------------------------------------------------------------------------------
1 | # Finance Tracker
2 |
3 | ``` tracker
4 | searchType: tag
5 | searchTarget: finance
6 | folder: diary
7 | accum: true
8 | endDate: 2021-01-31
9 | line:
10 | title: Finance
11 | yAxisLabel: USD
12 | lineWidth: 4
13 | ```
14 |
15 |
16 | ``` tracker
17 | searchType: tag
18 | searchTarget: finance/bank1
19 | folder: diary
20 | accum: true
21 | endDate: 2021-01-31
22 | line:
23 | title: Bank1
24 | yAxisLabel: USD
25 | ```
26 |
27 |
28 | ``` tracker
29 | searchType: tag
30 | searchTarget: finance/bank2
31 | folder: diary
32 | accum: true
33 | endDate: 2021-03-15
34 | line:
35 | title: Bank2
36 | yAxisLabel: USD
37 | fillGap: true
38 | ```
39 |
40 | Please also check those search targets in markdown files under folder 'diary'.
41 |
--------------------------------------------------------------------------------
/examples/HabitTracker.md:
--------------------------------------------------------------------------------
1 | # Habit Tracker
2 |
3 | ``` tracker
4 | searchType: tag
5 | searchTarget: exercise-pushup
6 | folder: diary
7 | endDate: 2021-01-31
8 | line:
9 | title: PushUp
10 | yAxisLabel: Count
11 | lineColor: "#d65d0e"
12 | ```
13 |
14 | ``` tracker
15 | searchType: tag
16 | searchTarget: exercise-plank
17 | folder: diary
18 | endDate: 2021-01-31
19 | line:
20 | title: Plank
21 | yAxisLabel: Hold
22 | yAxisUnit: sec
23 | lineColor: "#458588"
24 | pointColor: red
25 | ```
26 |
27 | ``` tracker
28 | searchType: tag
29 | searchTarget: meditation
30 | folder: diary
31 | accum: true
32 | penalty: -1
33 | endDate: 2021-01-31
34 | line:
35 | title: Meditation
36 | yAxisLabel: Count
37 | ```
38 |
39 | ## Summary
40 | ### Meditation
41 | ``` tracker
42 | searchType: tag
43 | searchTarget: meditation
44 | folder: diary
45 | summary:
46 | template: "Longest Streak: {{maxStreak()}} day(s)\nLongest Breaks: {{maxBreaks()}} day(s)\nLast streak: {{currentStreak()}} day(s)"
47 | ```
48 |
49 | ### CleanUp
50 | ``` tracker
51 | searchType: tag
52 | searchTarget: clean-up
53 | folder: diary
54 | endDate: 2021-01-31
55 | summary:
56 | template: "Last Break: {{currentBreaks()}} day(s)"
57 | ```
58 |
59 | ### Work log
60 | ``` tracker
61 | searchType: tag
62 | searchTarget: work_log
63 | folder: diary
64 | accum: true
65 | startDate: 2021-01-01
66 | endDate: 2021-01-31
67 | line:
68 | title: Work Log
69 | yAxisLabel: Count
70 | pointSize: 5
71 | pointColor: white
72 | pointBorderWidth: 2
73 | pointBorderColor: "#d65d0e"
74 | ```
75 |
76 | Please also check those search targets in markdown files under folder 'diary'.
--------------------------------------------------------------------------------
/examples/StarTracker.md:
--------------------------------------------------------------------------------
1 | # Star Tracker
2 | ## Summary
3 |
4 | ``` tracker
5 | searchType: text
6 | searchTarget: ⭐
7 | folder: diary
8 | endDate: 2021-01-31
9 | summary:
10 | template: "I have {{sum()}} stars in total."
11 | style: "font-size:20px;color:yellow;margin-left: 50px;margin-top:00px;"
12 | ```
13 |
14 | ``` tracker
15 | searchType: text
16 | searchTarget: ⭐
17 | folder: diary
18 | endDate: 2021-01-31
19 | accum: true
20 | line:
21 | title: Count the Given Stars
22 | yAxisLabel: Count
23 | showLine: false
24 | ```
25 |
26 | Please also check those search targets in markdown files under folder 'diary'.
--------------------------------------------------------------------------------
/examples/TestAxisIntervalAndFormat.md:
--------------------------------------------------------------------------------
1 | # Test Axis Interval and Tick Label Format
2 |
3 | ## Y Axis Interval
4 |
5 | Numeric Y values
6 | ``` tracker
7 | searchType: tag
8 | searchTarget: weight
9 | folder: diary
10 | startDate: 2021-01-01
11 | endDate: 2021-01-31
12 | line:
13 | title: Weight Log
14 | yAxisLabel: Weight
15 | yAxisUnit: kg
16 | lineColor: yellow
17 | yAxisTickInterval: 5
18 | yMin: 55
19 | ```
20 |
21 | Y values in time
22 | ``` tracker
23 | searchType: frontmatter
24 | searchTarget: clock-in, clock-out
25 | endDate: 2021-01-15
26 | folder: diary
27 | datasetName: Clock-In, Clock-Out
28 | line:
29 | title: "Working Hours"
30 | yAxisLabel: "Time (24h)"
31 | reverseYAxis: true
32 | lineColor: yellow, red
33 | showPoint: true
34 | yAxisTickInterval: 1h
35 | yMin: 06:00
36 | yMax: 23:00
37 | ```
38 |
39 | ## Y Axis Tick Label Format
40 | Float numbers with precision of 1 decimal digits
41 | ``` tracker
42 | searchType: tag
43 | searchTarget: weight
44 | folder: diary
45 | startDate: 2021-01-01
46 | endDate: 2021-01-31
47 | line:
48 | title: Weight Log
49 | yAxisLabel: Weight
50 | yAxisUnit: kg
51 | lineColor: yellow
52 | yAxisTickInterval: 5
53 | yAxisTickLabelFormat: .2f
54 | yMin: 55
55 | ```
56 |
57 | Y values in time
58 | ``` tracker
59 | searchType: frontmatter
60 | searchTarget: clock-in, clock-out
61 | endDate: 2021-01-15
62 | folder: diary
63 | datasetName: Clock-In, Clock-Out
64 | line:
65 | title: "Working Hours"
66 | yAxisLabel: "Time (24h)"
67 | reverseYAxis: true
68 | lineColor: yellow, red
69 | showPoint: true
70 | yMin: 05:00
71 | yMax: 22:00
72 | yAxisTickInterval: 50m
73 | yAxisTickLabelFormat: H---m
74 | ```
75 |
76 | ## X Axis Interval
77 | ``` tracker
78 | searchType: tag
79 | searchTarget: weight
80 | folder: diary
81 | startDate: 2021-01-01
82 | endDate: 2021-01-31
83 | line:
84 | title: Weight Log
85 | yAxisLabel: Weight
86 | yAxisUnit: kg
87 | lineColor: yellow
88 | xAxisTickInterval: 1w
89 | ```
90 |
91 | ## X Axis Tick Label Format
92 | ``` tracker
93 | searchType: tag
94 | searchTarget: weight
95 | folder: diary
96 | startDate: 2021-01-01
97 | endDate: 2021-01-31
98 | line:
99 | title: Weight Log
100 | yAxisLabel: Weight
101 | yAxisUnit: kg
102 | lineColor: yellow
103 | xAxisTickInterval: 7d
104 | xAxisTickLabelFormat: M-DD
105 | ```
--------------------------------------------------------------------------------
/examples/TestBarChart.md:
--------------------------------------------------------------------------------
1 | # Test Bar Chart
2 |
3 | ``` tracker
4 | searchType: tag
5 | searchTarget: weight
6 | folder: diary
7 | startDate: 2021-01-01
8 | endDate: 2021-01-05
9 | bar:
10 | title: Weight Log
11 | yAxisLabel: Weight
12 | xAxisPadding: 12h
13 | yAxisUnit: kg
14 | yMin: 0
15 | barColor: darkolivegreen
16 | ```
17 |
18 | ``` tracker
19 | searchType: tag
20 | searchTarget: weight
21 | folder: diary
22 | startDate: 2021-01-01
23 | endDate: 2021-01-31
24 | bar:
25 | title: Weight Log
26 | yAxisLabel: Weight
27 | xAxisPadding: 12h
28 | yAxisUnit: kg
29 | yMin: 0
30 | barColor: brown
31 | ```
32 |
33 | ``` tracker
34 | searchType: tag
35 | searchTarget: sin[0], sin[1], sin[2]
36 | folder: diary
37 | startDate: 2021-01-10
38 | endDate: 2021-01-21
39 | bar:
40 | title: Sin Wave
41 | yAxisLabel: Value
42 | xAxisPadding: 12h
43 | barColor: yellow, red, green
44 | ```
45 |
46 | ``` tracker
47 | searchType: tag
48 | searchTarget: sinsquare[0], sinsquare[1], sinsquare[2], sinsquare[3], sinsquare[4], sinsquare[5]
49 | folder: diary
50 | startDate: 2021-01-01
51 | endDate: 2021-01-05
52 | bar:
53 | title: Sin Square Wave
54 | yAxisLabel: Value
55 | xAxisPadding: 12h
56 | yMin: 0
57 | barColor: yellow, red, green, blue, orange, white
58 | ```
59 |
60 |
61 | ``` tracker
62 | searchType: tag
63 | searchTarget: sinsquare[0], sinsquare[1], sinsquare[2], sinsquare[3], sinsquare[4], sinsquare[5]
64 | folder: diary
65 | startDate: 2021-01-01
66 | endDate: 2021-01-05
67 | stack: true
68 | bar:
69 | title: Sin Square Wave (Stacked)
70 | yAxisLabel: Value
71 | xAxisPadding: 12h
72 | yMin: 0
73 | barColor: yellow, red, green, blue, orange, black
74 | ```
75 | Please also check those search targets in markdown files under folder 'diary'.
--------------------------------------------------------------------------------
/examples/TestBullet.md:
--------------------------------------------------------------------------------
1 | # Test Bullet
2 |
3 | ## Manual Input Data
4 |
5 | Manual input `value` as 12\.5
6 | ``` tracker
7 | searchType: tag
8 | searchTarget: clean-up
9 | folder: diary
10 | endDate: 2021-01-31
11 | fixedScale: 1.1
12 | bullet:
13 | title: "Clean Up"
14 | dataset: 0
15 | orientation: horizontal
16 | range: 10, 20, 40
17 | rangeColor: darkgray, silver, lightgray
18 | value: 12.5
19 | valueUnit: times
20 | valueColor: '#69b3a2'
21 | showMarker: true
22 | markerValue: 30
23 | markerColor: black
24 | ```
25 |
26 | ## Data from Notes
27 |
28 | Horizontal bullet chart
29 | value from expression function currentBreaks()
30 | ``` tracker
31 | searchType: tag
32 | searchTarget: clean-up
33 | folder: diary
34 | endDate: 2021-01-31
35 | fixedScale: 1.1
36 | bullet:
37 | title: "Clean Up"
38 | dataset: 0
39 | orientation: horizontal
40 | range: 10, 20, 40
41 | rangeColor: darkgray, silver, lightgray
42 | value: "{{currentBreaks()}}"
43 | valueUnit: times
44 | valueColor: '#69b3a2'
45 | showMarker: true
46 | markerValue: 24
47 | markerColor: black
48 | ```
49 |
50 | Vertical bullet chart
51 | value from expression function sum()
52 | ``` tracker
53 | searchType: tag
54 | searchTarget: meditation
55 | folder: diary
56 | endDate: 2021-01-31
57 | bullet:
58 | title: "Meditation"
59 | dataset: 0
60 | orientation: vertical
61 | range: 30, 60, 100
62 | rangeColor: darkgray, silver, lightgray
63 | value: "{{sum()}}"
64 | valueUnit: times
65 | valueColor: steelblue
66 | showMarker: true
67 | markerValue: 80
68 | markerColor: red
69 | ```
70 |
71 | Please also check those search targets in markdown files under folder 'diary'.
--------------------------------------------------------------------------------
/examples/TestCalendar.md:
--------------------------------------------------------------------------------
1 | # Test Calendar
2 |
3 | ## Single target
4 | ### Minimum setup
5 | 1. Use default colors only
6 | 2. Use parameter `datasetName` to set the title name
7 | ``` tracker
8 | searchType: tag
9 | searchTarget: meditation
10 | datasetName: Meditation
11 | folder: diary
12 | endDate: 2021-01-31
13 | month:
14 | ```
15 |
16 | ### Colorized
17 | 1. Click "<" to see data in previous month
18 | 2. Click ">" to see data in next month
19 | 3. Click "◦" to see data in current month
20 | ``` tracker
21 | searchType: tag
22 | searchTarget: exercise-pushup
23 | datasetName: PushUp
24 | folder: diary
25 | endDate: 2021-01-31
26 | month:
27 | startWeekOn: 'Sun'
28 | threshold: 40
29 | color: tomato
30 | headerMonthColor: orange
31 | dimNotInMonth: false
32 | todayRingColor: orange
33 | selectedRingColor: steelblue
34 | showSelectedValue: true
35 | ```
36 |
37 | ### Colorized
38 | ``` tracker
39 | searchType: tag
40 | searchTarget: meditation
41 | datasetName: Meditation
42 | folder: diary
43 | endDate: 2021-01-31
44 | month:
45 | startWeekOn: 'Sun'
46 | color: steelblue
47 | headerMonthColor: green
48 | selectedRingColor: orange
49 | ```
50 |
51 | ### Colored by Values
52 | Use parameters `circleColorByValue`, `yMin`, and `yMax`, to color the circles based on the values
53 | ``` tracker
54 | searchType: tag
55 | searchTarget: exercise-pushup
56 | datasetName: PushUp
57 | folder: diary
58 | endDate: 2021-01-31
59 | month:
60 | startWeekOn:
61 | threshold: 10
62 | color: green
63 | headerMonthColor: orange
64 | dimNotInMonth: false
65 | todayRingColor: orange
66 | selectedRingColor: steelblue
67 | circleColorByValue: true
68 | yMin: 0
69 | yMax: 50
70 | showSelectedValue: true
71 | ```
72 |
73 | ### Colored by Threshold and thresholdType
74 | Use parameters threshold and thresholdType - "LessThan" to color the circles
75 | ``` tracker
76 | searchType: tag
77 | searchTarget: exercise-pushup
78 | datasetName: PushUp
79 | folder: diary
80 | endDate: 2021-01-31
81 | month:
82 | startWeekOn:
83 | threshold: 40
84 | thresholdType: LessThan
85 | color: green
86 | headerMonthColor: orange
87 | dimNotInMonth: false
88 | todayRingColor: orange
89 | selectedRingColor: steelblue
90 | showSelectedValue: true
91 | ```
92 |
93 | ### Check minDate, minValue, maxDate, maxValue
94 | ``` tracker
95 | searchType: tag
96 | searchTarget: exercise-pushup
97 | summary:
98 | template: "minDate: {{minDate()}}\nminValue: {{min()}}\nmaxDate: {{maxDate()}}\nmaxValue: {{max()}}"
99 | ```
100 |
101 | ### initMonth
102 |
103 | Specify the initial month in YYYY-MM format
104 | ``` tracker
105 | searchType: tag
106 | searchTarget: exercise-pushup
107 | datasetName: PushUp
108 | folder: diary
109 | month:
110 | startWeekOn:
111 | threshold: 40
112 | color: green
113 | headerMonthColor: orange
114 | dimNotInMonth: false
115 | todayRingColor: orange
116 | selectedRingColor: steelblue
117 | circleColorByValue: true
118 | showSelectedValue: true
119 | initMonth: 2021-01
120 | ```
121 |
122 | Specify the initial month by relative date
123 | ``` tracker
124 | searchType: tag
125 | searchTarget: exercise-pushup
126 | datasetName: PushUp
127 | folder: diary
128 | month:
129 | startWeekOn:
130 | threshold: 40
131 | color: green
132 | headerMonthColor: orange
133 | dimNotInMonth: false
134 | todayRingColor: orange
135 | selectedRingColor: steelblue
136 | circleColorByValue: true
137 | showSelectedValue: true
138 | initMonth: -47M
139 | ```
140 |
141 | ## Multiple targets
142 | 1. Use parameter `datasetName` to specify the name of each dataset
143 | 2. Use parameter `dataset` to include dataset we are going to view
144 | 3. Use parameter `threshold` to specify the level of achievement (affect the streaks)
145 | 4. Click the datasetName label in month view to change the target dataset
146 | ``` tracker
147 | searchType: tag
148 | searchTarget: exercise-pushup, meditation
149 | datasetName: PushUp, Meditation
150 | folder: diary
151 | endDate: 2021-01-31
152 | month:
153 | dataset: 0, 1
154 | startWeekOn: 'Sun'
155 | threshold: 40, 0
156 | color: green
157 | headerMonthColor: orange
158 | dimNotInMonth: false
159 | todayRingColor: orange
160 | selectedRingColor: steelblue
161 | circleColorByValue: true
162 | showSelectedValue: true
163 | ```
164 |
165 | ## Annotations
166 | One target at a time
167 | ``` tracker
168 | searchType: tag
169 | searchTarget: exercise-pushup, meditation
170 | datasetName: PushUp, Meditation
171 | folder: diary
172 | endDate: 2021-01-31
173 | month:
174 | mode: annotation
175 | startWeekOn: 'Sun'
176 | threshold: 40, 0
177 | color: green
178 | headerMonthColor: orange
179 | dimNotInMonth: false
180 | annotation: 💪,🧘♂️
181 | showAnnotationOfAllTargets: false
182 | ```
183 |
184 | All targets
185 | ``` tracker
186 | searchType: tag
187 | searchTarget: exercise-pushup, meditation
188 | datasetName: PushUp, Meditation
189 | folder: diary
190 | endDate: 2021-01-31
191 | month:
192 | mode: annotation
193 | startWeekOn: 'Sun'
194 | threshold: 40, 0
195 | color: green
196 | headerMonthColor: orange
197 | dimNotInMonth: false
198 | annotation: 💪,🧘♂️
199 | showAnnotationOfAllTargets: true
200 | ```
201 |
202 | Please also check those search targets in markdown files under folder 'diary'.
203 |
204 | ## Scaling
205 | fitPanelWidth: true
206 | Click forward backward months and verify it stays scaled
207 | ``` tracker
208 | searchType: tag
209 | searchTarget: meditation
210 | datasetName: Meditation
211 | fitPanelWidth: true
212 | folder: diary
213 | endDate: 2021-01-31
214 | month:
215 | ```
216 |
--------------------------------------------------------------------------------
/examples/TestCommands.md:
--------------------------------------------------------------------------------
1 | # Test Commands
2 |
3 | ``` tracker
4 | searchType: tag
5 | searchTarget: weight
6 | folder: /
7 | startDate:
8 | endDate: 2021-01-31
9 | line:
10 | title: "Line Chart"
11 | xAxisLabel: Date
12 | yAxisLabel: Value
13 | ```
14 |
15 |
16 | ``` tracker
17 | searchType: tag
18 | searchTarget: weight
19 | folder: /
20 | startDate:
21 | endDate: 2021-01-31
22 | bar:
23 | title: "Bar Chart"
24 | xAxisLabel: Date
25 | yAxisLabel: Value
26 | ```
27 |
28 |
29 | ``` tracker
30 | searchType: tag
31 | searchTarget: weight
32 | folder: /
33 | startDate:
34 | endDate: 2021-01-31
35 | summary:
36 | template: "Average value of tagName is {{average()}}"
37 | style: "color:white;"
38 | ```
--------------------------------------------------------------------------------
/examples/TestDateFormats.md:
--------------------------------------------------------------------------------
1 | # Test Date Formats
2 |
3 | ## Test Default Date Formats
4 |
5 | Change the default dateFomat on Tracker settings panel and then check the following trackers in the preview mode. Only the one fit dateFomat settings will get rendered.
6 |
7 | ### dateFomat: YYYY-MM-DD
8 |
9 | ``` tracker
10 | searchType: tag
11 | searchTarget: weight
12 | folder: diary
13 | startDate: 2021-01-01
14 | endDate: 2021-01-05
15 | line:
16 | title: Weight Log
17 | yAxisLabel: Weight
18 | yAxisUnit: kg
19 | lineColor: yellow
20 | ```
21 |
22 | ### dateFormat: D-YYYYMMDD
23 |
24 | ``` tracker
25 | searchType: tag
26 | searchTarget: weight
27 | folder: diary
28 | startDate: 1-20210101
29 | endDate: 5-20210105
30 | line:
31 | title: Weight Log
32 | yAxisLabel: Weight
33 | yAxisUnit: kg
34 | lineColor: yellow
35 | ```
36 |
37 | ### dateFormat: YYYY-MM-DD-dddd
38 |
39 | ``` tracker
40 | searchType: tag
41 | searchTarget: weight
42 | folder: diary
43 | startDate: 2021-01-01-Friday
44 | endDate: 2021-01-05-Tuesday
45 | line:
46 | title: Weight Log
47 | yAxisLabel: Weight
48 | yAxisUnit: kg
49 | lineColor: yellow
50 | ```
51 |
52 | ### dateFormat: YYYY-MM-DD_ddd
53 | ``` tracker
54 | searchType: tag
55 | searchTarget: weight
56 | folder: diary
57 | startDate: 2021-01-01_Fri
58 | endDate: 2021-01-05_Tue
59 | line:
60 | title: Weight Log
61 | yAxisLabel: Weight
62 | yAxisUnit: kg
63 | lineColor: yellow
64 | ```
65 |
66 | ### dateFormat: DD-MM-YYYY
67 |
68 | ``` tracker
69 | searchType: tag
70 | searchTarget: weight
71 | folder: diary
72 | startDate: 01-01-2021
73 | endDate: 05-01-2021
74 | line:
75 | title: Weight Log
76 | yAxisLabel: Weight
77 | yAxisUnit: kg
78 | lineColor: yellow
79 | ```
80 |
81 | ### dateFormat: DD.MM.YYYY
82 |
83 | ``` tracker
84 | searchType: tag
85 | searchTarget: weight
86 | folder: diary
87 | startDate: 01.01.2021
88 | endDate: 05.01.2021
89 | line:
90 | title: Weight Log
91 | yAxisLabel: Weight
92 | yAxisUnit: kg
93 | lineColor: yellow
94 | ```
95 |
96 | ## ISO-8601 Date Format
97 |
98 | ``` tracker
99 | searchType: tag
100 | searchTarget: weight
101 | folder: diary
102 | dateFormat: iso-8601
103 | startDate: 2021-01-01T14:53:25+00:00
104 | endDate: 2021-01-05T14:53:25+00:00
105 | line:
106 | title: Weight Log
107 | yAxisLabel: Weight
108 | yAxisUnit: kg
109 | lineColor: yellow
110 | ```
111 |
112 | ## Test Date Format Prefix and Suffix
113 |
114 | The string provided in dateFormatPrefix and dateFormatSuffix will be removed before parsing dates.
115 |
116 | ### dateFormat: YYYYMMDD with prefix D-
117 |
118 | ``` tracker
119 | searchType: tag
120 | searchTarget: weight
121 | folder: diary
122 | dateFormat: YYYYMMDD
123 | dateFormatPrefix: D-
124 | startDate: D-20210101
125 | endDate: D-20210105
126 | line:
127 | title: Weight Log
128 | yAxisLabel: Weight
129 | yAxisUnit: kg
130 | lineColor: yellow
131 | ```
132 |
133 | ### dateFormat: YYYYMMDD with suffix -D
134 |
135 | ``` tracker
136 | searchType: tag
137 | searchTarget: weight
138 | folder: diary
139 | dateFormat: YYYYMMDD
140 | dateFormatSuffix: -D
141 | startDate: 20210101-D
142 | endDate: 20210105-D
143 | line:
144 | title: Weight Log
145 | yAxisLabel: Weight
146 | yAxisUnit: kg
147 | lineColor: yellow
148 | ```
149 |
150 | ### Using prefix and suffix with regular expression
151 |
152 | Examples of file name
153 | - Jeffrey-20210101-Journal
154 | - Jeffrey-20210102-Diary
155 | - Lucas-2021-0103-Journal
156 | - Lucas-2021-0104-Diary
157 |
158 | Data from the same days will be summed up.
159 | ``` tracker
160 | searchType: tag
161 | searchTarget: exercise-pushup
162 | folder: diary
163 | dateFormat: YYYYMMDD
164 | dateFormatPrefix: '(Jeffrey-|Lucas-)'
165 | dateFormatSuffix: '(-Journal|-Diary)'
166 | startDate: 20210101
167 | endDate: 20210105
168 | line:
169 | title: PushUp
170 | yAxisLabel: Count
171 | yAxisUnit: times
172 | lineColor: yellow
173 | ```
174 |
175 | ## Relative Date Input for startDate and endDate
176 |
177 | The reference date of the relative date input is 'today' (The current date of your computer), So
178 | - 0d ==> today
179 | - -1d ==> yesterday
180 | - -1w ==> last week
181 | - -1M ==> last month
182 | - -1y ==> last year
183 |
184 | Notice!!
185 | - small 'm' represent 'minute'
186 | - If the date range is less than 1 day, you will get the error message 'No valid date as X value found in notes'.
187 |
188 | ``` tracker
189 | searchType: tag
190 | searchTarget: weight
191 | folder: diary
192 | startDate: -1M
193 | endDate: 0d
194 | line:
195 | title: Weight Log
196 | yAxisLabel: Weight
197 | yAxisUnit: kg
198 | lineColor: yellow
199 | ```
200 |
201 | Please also check those search targets in markdown files under folder 'diary'.
202 |
--------------------------------------------------------------------------------
/examples/TestDvField.md:
--------------------------------------------------------------------------------
1 | # Test dvField
2 |
3 | Simple inline field
4 | ``` tracker
5 | searchType: dvField
6 | searchTarget: dataviewTarget
7 | folder: diary
8 | startDate: 2021-01-01
9 | endDate: 2021-01-31
10 | line:
11 | title: dvField
12 | lineColor: green
13 | ```
14 |
15 | Field with a space
16 | ``` tracker
17 | searchType: dvField
18 | searchTarget: Make Progress
19 | folder: diary
20 | startDate: 2021-01-01
21 | endDate: 2021-01-31
22 | line:
23 | title: dvField
24 | lineColor: yellow
25 | ```
26 |
27 | Field with a dash line
28 | ``` tracker
29 | searchType: dvField
30 | searchTarget: Make-Progress
31 | folder: diary
32 | startDate: 2021-01-01
33 | endDate: 2021-01-31
34 | line:
35 | title: dvField
36 | lineColor: red
37 | ```
38 |
39 | Extract the first value from multiple values
40 | ``` tracker
41 | searchType: dvField
42 | searchTarget: dataviewTarget1[0]
43 | folder: diary
44 | startDate: 2021-01-01
45 | endDate: 2021-01-31
46 | line:
47 | title: dvField
48 | lineColor: blue
49 | ```
50 |
51 | Multiple values separated by '/' (default)
52 | ``` tracker
53 | searchType: dvField
54 | searchTarget: dataviewTarget1[0], dataviewTarget1[1]
55 | folder: diary
56 | startDate: 2021-01-01
57 | endDate: 2021-01-31
58 | line:
59 | title: dvField
60 | lineColor: green, red
61 | ```
62 |
63 | Multiple values seprated by 'comma'
64 | ``` tracker
65 | searchType: dvField
66 | searchTarget: dataviewTarget3[0], dataviewTarget3[1]
67 | folder: diary
68 | startDate: 2021-01-01
69 | endDate: 2021-01-31
70 | separator: 'comma'
71 | line:
72 | title: dvField
73 | lineColor: green, red
74 | ```
75 |
76 | Multiple values seprated by '\,'
77 | ``` tracker
78 | searchType: dvField
79 | searchTarget: dataviewTarget3[0], dataviewTarget3[1]
80 | folder: diary
81 | startDate: 2021-01-01
82 | endDate: 2021-01-31
83 | separator: '\,'
84 | line:
85 | title: dvField
86 | lineColor: green, red
87 | ```
88 |
89 | Use custom multiple value separator
90 | ``` tracker
91 | searchType: dvField
92 | searchTarget: dataviewTarget2[0], dataviewTarget2[1]
93 | separator: '@'
94 | folder: diary
95 | startDate: 2021-01-01
96 | endDate: 2021-01-31
97 | line:
98 | title: dvField
99 | lineColor: green, red
100 | ```
101 |
102 | Please also check those search targets in markdown files under folder 'diary'.
--------------------------------------------------------------------------------
/examples/TestEmoji.md:
--------------------------------------------------------------------------------
1 |
2 | ```tracker
3 | searchType: dvfield
4 | searchTarget: Physical
5 | folder: diary
6 | startDate: 2023-06-04
7 | endDate: 2023-06-11
8 | textValueMap:
9 | 😀: 5
10 | 🙂: 4
11 | 😐: 3
12 | 🙁: 2
13 | 😞: 1
14 | datasetName: 🚹 Physical
15 | line:
16 | lineColor: orange
17 | lineWidth: 3
18 | showLegend: true
19 | legendPosition: right
20 | ```
--------------------------------------------------------------------------------
/examples/TestFileMeta.md:
--------------------------------------------------------------------------------
1 | # Test FileMeta
2 | Track the size variation of diaries
3 | ``` tracker
4 | searchType: fileMeta
5 | searchTarget: size
6 | folder: diary
7 | endDate: 2021-01-31
8 | line:
9 | title: File Size Variation
10 | yAxisLabel: Size
11 | yAxisUnit: bytes
12 | ```
13 |
14 | Use file created dates (cDate) as x values
15 | ``` tracker
16 | searchType: fileMeta, dvField
17 | searchTarget: cDate, dataviewTarget
18 | xDataset: 0
19 | folder: data
20 | line:
21 | fillGap: true
22 | ```
23 |
24 | Use file modified dates (mDate) as x values
25 | ``` tracker
26 | searchType: fileMeta, dvField
27 | searchTarget: mDate, dataviewTarget
28 | xDataset: 0
29 | folder: data
30 | line:
31 | fillGap: true
32 | ```
33 |
34 | Please also check those search targets in markdown files under folder 'diary' and 'data'.
35 |
36 |
--------------------------------------------------------------------------------
/examples/TestFrontmatter.md:
--------------------------------------------------------------------------------
1 | # Test Frontmatter
2 |
3 | ## Deep Values
4 | deepValue:
5 | very:
6 | very:
7 | very:
8 | very:
9 | very:
10 | deep: 27.4
11 | ``` tracker
12 | searchType: frontmatter
13 | searchTarget: deepValue.very.very.very.very.very.deep
14 | folder: diary
15 | endDate: 2021-01-31
16 | line:
17 | title: Deep Values
18 | ```
19 |
20 | ## Multiple Values
21 | bloodpressure: 184.4/118.8
22 | ``` tracker
23 | searchType: frontmatter
24 | searchTarget: bloodpressure[0], bloodpressure[1]
25 | datasetName: systolic, diastolic
26 | folder: diary
27 | startDate: 2021-01-01
28 | endDate: 2021-01-31
29 | line:
30 | title: Blood Pressures
31 | yAxisLabel: BP
32 | yAxisUnit: mmHg
33 | lineColor: yellow, red
34 | showLegend: true
35 | legendPosition: bottom
36 | ```
37 |
38 | ## Multiple Tags in Front Matter
39 | Extract data of one tag from multiple tags
40 | The default separator in front matter tags is comma (,)
41 | ``` tracker
42 | searchType: tag
43 | searchTarget: work_log
44 | folder: diary
45 | accum: true
46 | startDate: 2021-01-01
47 | endDate: 2021-01-31
48 | line:
49 | title: Work Log
50 | yAxisLabel: Count
51 | pointSize: 5
52 | pointColor: white
53 | pointBorderWidth: 2
54 | pointBorderColor: "#d65d0e"
55 | ```
56 |
57 | Use the data of two tags
58 | The default separator in front matter tags is comma (,)
59 | ``` tracker
60 | searchType: tag
61 | searchTarget: work_log, work_log2
62 | folder: diary
63 | datasetName: Work1, Work2
64 | month:
65 | initMonth: 2021-01
66 | ```
67 |
68 | Please also check those search targets in markdown files under folder 'diary'.
--------------------------------------------------------------------------------
/examples/TestInSentenceFields.md:
--------------------------------------------------------------------------------
1 |
2 | ```tracker
3 | searchType: frontmatter, dvField
4 | searchTarget: date, count
5 | xDataset: 0
6 | folder: "data"
7 | bullet:
8 | title: Total Counts
9 | value: "{{sum()}}"
10 | range: 1,5,10,20
11 | rangeColor: darkRed, lightBlue, lightGreen, blue
12 | showMarker: true
13 | markerValue: 2
14 | markerColor: red
15 | ```
16 |
--------------------------------------------------------------------------------
/examples/TestLegends.md:
--------------------------------------------------------------------------------
1 | # Test Legends
2 |
3 | ## Position and Orientation
4 |
5 | - Default legendPosition ==> bottom
6 | - Default legendOrientation ==> horizontal
7 |
8 | ### Right
9 |
10 | - legendPosition: right
11 | - Default legendOrientation ==> vertical
12 |
13 | ``` tracker
14 | searchType: tag
15 | searchTarget: sin[0], sin[1], sin[2], sin[3], sin[4], sin[5], sin[6], sin[7], sin[8]
16 | folder: diary
17 | startDate: 2021-01-01
18 | endDate: 2021-01-31
19 | line:
20 | title: Sin Wave
21 | lineColor: yellow, blue, white, red, black, orange, purple, green, cyan
22 | showPoint: false
23 | showLegend: true
24 | legendPosition: right
25 | ```
26 |
27 | - legendPosition: right
28 | - legendOrientation: horizontal
29 |
30 | ``` tracker
31 | searchType: tag
32 | searchTarget: sin[0], sin[1], sin[2], sin[3], sin[4], sin[5], sin[6], sin[7], sin[8]
33 | folder: diary
34 | startDate: 2021-01-01
35 | endDate: 2021-01-31
36 | line:
37 | title: Sin Wave
38 | lineColor: yellow, blue, white, red, black, orange, purple, green, cyan
39 | showPoint: false
40 | showLegend: true
41 | legendPosition: right
42 | legendOrientation: horizontal
43 | ```
44 |
45 | ### Left
46 |
47 | - legendPosition: left
48 | - Default legendOrientation ==> vertical
49 |
50 | ``` tracker
51 | searchType: tag
52 | searchTarget: sin[0], sin[1], sin[2], sin[3], sin[4], sin[5], sin[6], sin[7], sin[8]
53 | folder: diary
54 | startDate: 2021-01-01
55 | endDate: 2021-01-31
56 | line:
57 | title: Sin Wave
58 | lineColor: yellow, blue, white, red, black, orange, purple, green, cyan
59 | showPoint: false
60 | showLegend: true
61 | legendPosition: left
62 | ```
63 |
64 | - legendPosition: left
65 | - legendOrientation: horizontal
66 |
67 | ``` tracker
68 | searchType: tag
69 | searchTarget: sin[0], sin[1], sin[2], sin[3], sin[4], sin[5], sin[6], sin[7], sin[8]
70 | folder: diary
71 | startDate: 2021-01-01
72 | endDate: 2021-01-31
73 | line:
74 | title: Sin Wave
75 | lineColor: yellow, blue, white, red, black, orange, purple, green, cyan
76 | showPoint: false
77 | showLegend: true
78 | legendPosition: left
79 | legendOrientation: horizontal
80 | ```
81 |
82 | ### Top
83 |
84 | - legendPosition: top
85 | - Default legendOrientation ==> horizontal
86 |
87 | ``` tracker
88 | searchType: tag
89 | searchTarget: sin[0], sin[1], sin[2], sin[3], sin[4], sin[5], sin[6], sin[7], sin[8]
90 | folder: diary
91 | startDate: 2021-01-01
92 | endDate: 2021-01-31
93 | line:
94 | title: Sin Wave
95 | lineColor: yellow, blue, white, red, black, orange, purple, green, cyan
96 | showPoint: false
97 | showLegend: true
98 | legendPosition: top
99 | ```
100 |
101 | - legendPosition: top
102 | - legendOrientation: vertical
103 | ``` tracker
104 | searchType: tag
105 | searchTarget: sin[0], sin[1], sin[2], sin[3], sin[4], sin[5], sin[6], sin[7], sin[8]
106 | folder: diary
107 | startDate: 2021-01-01
108 | endDate: 2021-01-31
109 | line:
110 | title: Sin Wave
111 | lineColor: yellow, blue, white, red, black, orange, purple, green, cyan
112 | showPoint: false
113 | showLegend: true
114 | legendPosition: top
115 | legendOrientation: vertical
116 | ```
117 |
118 | ### Bottom
119 |
120 | - Default legendPosition ==> bottom
121 | - Default legendOrientation ==> horizontal
122 |
123 | ``` tracker
124 | searchType: tag
125 | searchTarget: sin[0], sin[1], sin[2], sin[3], sin[4], sin[5], sin[6], sin[7], sin[8]
126 | folder: diary
127 | startDate: 2021-01-01
128 | endDate: 2021-01-31
129 | line:
130 | title: Sin Wave
131 | lineColor: yellow, blue, white, red, black, orange, purple, green, cyan
132 | showPoint: false
133 | showLegend: true
134 | ```
135 |
136 | - Default legendPosition ==> bottom
137 | - legendOrientation: vertical
138 |
139 | ``` tracker
140 | searchType: tag
141 | searchTarget: sin[0], sin[1], sin[2], sin[3], sin[4], sin[5], sin[6], sin[7], sin[8]
142 | folder: diary
143 | startDate: 2021-01-01
144 | endDate: 2021-01-31
145 | line:
146 | title: Sin Wave
147 | lineColor: yellow, blue, white, red, black, orange, purple, green, cyan
148 | showPoint: false
149 | showLegend: true
150 | legendOrientation: vertical
151 | legendBorderColor: gold
152 | ```
153 |
154 | ## Lines, Points, and Bars
155 |
156 | ``` tracker
157 | searchType: tag
158 | searchTarget: exercise-pushup
159 | datasetName: weight
160 | folder: diary
161 | endDate: 2021-01-31
162 | line:
163 | title: PushUp
164 | yAxisLabel: Count
165 | lineColor: "#d65d0e"
166 | showLegend: true
167 | ```
168 |
169 | ``` tracker
170 | searchType: tag
171 | searchTarget: exercise-pushup
172 | datasetName: weight
173 | folder: diary
174 | endDate: 2021-01-31
175 | bar:
176 | title: PushUp
177 | yAxisLabel: Count
178 | barColor: "#458588"
179 | showLegend: true
180 | ```
181 |
182 | ``` tracker
183 | searchType: tag
184 | searchTarget: exercise-pushup
185 | datasetName: weight
186 | folder: diary
187 | endDate: 2021-01-31
188 | bar:
189 | title: PushUp
190 | yAxisLabel: Count
191 | barColor: "#458588"
192 | showLegend: true
193 | legendPosition: right
194 | ```
195 |
196 | Please also check those search targets in markdown files under folder 'diary'.
--------------------------------------------------------------------------------
/examples/TestMultipleTargetsMultipleValues.md:
--------------------------------------------------------------------------------
1 | # Test Multiple Targets and Multiple Values
2 |
3 | ## Data from Different Value-attached Tags
4 | Put value-attached tag data of weight and exercise-push together
5 | ``` tracker
6 | searchType: tag
7 | searchTarget: weight, exercise-pushup
8 | folder: diary
9 | startDate: 2021-01-01
10 | endDate: 2021-01-31
11 | datasetName: Weight, Pushup
12 | line:
13 | title: Multiple Targets
14 | lineColor: yellow, red
15 | yAxisLocation: left, right
16 | yAxisLabel: Weight, Count
17 | showLegend: true
18 | ```
19 |
20 | ## Multiple Values from a Single Multiple-values-attached Tag
21 | Retrieve a single value from a multiple-values-attached tag
22 | ``` tracker
23 | searchType: tag
24 | searchTarget: sin[0]
25 | folder: diary
26 | startDate: 2021-01-01
27 | endDate: 2021-01-31
28 | line:
29 | title: Sin Wave
30 | lineColor: yellow
31 | showLegend: false
32 | ```
33 |
34 | Retrieve values from a multiple-values-attached tag
35 | ``` tracker
36 | searchType: tag
37 | searchTarget: sin[0], sin[1], sin[2], sin[3], sin[4], sin[5], sin[6], sin[7], sin[8]
38 | folder: diary
39 | datasetName: Sin1, Sin2, Sin3, Sin4, Sin5, Sin6, Sin7, Sin8, Sin9
40 | startDate: 2021-01-01
41 | endDate: 2021-01-31
42 | line:
43 | title: Sin Wave
44 | lineColor: yellow, blue, white, red, black, orange, purple, green, cyan
45 | showPoint: false
46 | showLegend: true
47 | legendPosition: right
48 | legendOrientation: vertical
49 | ```
50 |
51 | ## Multiple Values from Frontmatter
52 | Multiple values separated by slash (/)
53 | ``` tracker
54 | searchType: frontmatter
55 | searchTarget: bloodpressure[0], bloodpressure[1]
56 | folder: diary
57 | datasetName: systolic, diastolic
58 | startDate: 2021-01-01
59 | endDate: 2021-01-31
60 | line:
61 | title: Blood Pressure
62 | lineColor: yellow, red
63 | showLegend: true
64 | ```
65 |
66 | Multiple values separated by comma (,)
67 | ``` tracker
68 | searchType: frontmatter
69 | searchTarget: bloodpressure1[0], bloodpressure1[1]
70 | folder: diary
71 | datasetName: systolic, diastolic
72 | startDate: 2021-01-01
73 | endDate: 2021-01-31
74 | separator: comma
75 | line:
76 | title: Blood Pressure
77 | lineColor: yellow, red
78 | showLegend: true
79 | ```
80 |
81 | Values from array
82 | ``` tracker
83 | searchType: frontmatter
84 | searchTarget: bloodpressure2[0], bloodpressure2[1]
85 | folder: diary
86 | datasetName: systolic, diastolic
87 | startDate: 2021-01-01
88 | endDate: 2021-01-31
89 | line:
90 | title: Blood Pressure
91 | lineColor: yellow, red
92 | showLegend: true
93 | ```
94 |
95 | Values from nested keys
96 | ``` tracker
97 | searchType: frontmatter
98 | searchTarget: bp.systolic, bp.diastolic
99 | folder: diary
100 | datasetName: systolic, diastolic
101 | startDate: 2021-01-01
102 | endDate: 2021-01-31
103 | line:
104 | title: Blood Pressure
105 | lineColor: yellow, red
106 | showLegend: true
107 | ```
108 |
109 | ## Multiple Values in Text
110 | Use searchType 'dvField' with separators in the target instead
111 | ``` tracker
112 | searchType: text
113 | searchTarget: 'dataviewTarget2::\s+(?[\-]?[0-9]+[\.][0-9]+|[\-]?[0-9]+)\s+@\s+([\-]?[0-9]+[\.][0-9]+|[\-]?[0-9]+), dataviewTarget2::\s+([\-]?[0-9]+[\.][0-9]+|[\-]?[0-9]+)\s+@\s+(?[\-]?[0-9]+[\.][0-9]+|[\-]?[0-9]+)'
114 | folder: diary
115 | startDate: 2021-01-01
116 | endDate: 2021-01-31
117 | line:
118 | title: Dataview Data
119 | yAxisLabel: Count
120 | lineColor: red, yellow
121 | yMin: 0
122 | ```
123 |
124 |
125 | ## Multiple Values in dvField (Dataview inline field)
126 | Extract the first value in dataview inline field
127 | ``` tracker
128 | searchType: dvField
129 | searchTarget: dataviewTarget1[0]
130 | folder: diary
131 | startDate: 2021-01-01
132 | endDate: 2021-01-31
133 | line:
134 | title: dvField
135 | ```
136 |
137 | Multiple Values in dataview inline field
138 | ``` tracker
139 | searchType: dvField
140 | searchTarget: dataviewTarget1[0], dataviewTarget1[1]
141 | folder: diary
142 | startDate: 2021-01-01
143 | endDate: 2021-01-31
144 | line:
145 | title: dvField
146 | lineColor: green, red
147 | ```
148 |
149 | Multiple values seprated by 'comma'
150 | ``` tracker
151 | searchType: dvField
152 | searchTarget: dataviewTarget3[0], dataviewTarget3[1]
153 | folder: diary
154 | startDate: 2021-01-01
155 | endDate: 2021-01-31
156 | separator: comma
157 | line:
158 | title: dvField
159 | lineColor: green, red
160 | ```
161 |
162 | Use custom multiple value separator
163 | ``` tracker
164 | searchType: dvField
165 | searchTarget: dataviewTarget2[0], dataviewTarget2[1]
166 | separator: '@'
167 | folder: diary
168 | startDate: 2021-01-01
169 | endDate: 2021-01-31
170 | line:
171 | title: dvField
172 | lineColor: green, red
173 | ```
174 |
175 | ## Multiple Values in Table
176 |
177 | Use first column as X dataset. Second column posses multiple values in each cell.
178 | ``` tracker
179 | searchType: table
180 | searchTarget: data/Tables[1][0], data/Tables[1][1][0], data/Tables[1][1][1]
181 | xDataset: 0
182 | separator: "@"
183 | line:
184 | yAxisLocation: none, left, right
185 | lineColor: none, yellow, red
186 | ```
187 |
188 | Please also check those search targets in markdown files under folder 'diary' and 'data'.
189 |
--------------------------------------------------------------------------------
/examples/TestPieChart.md:
--------------------------------------------------------------------------------
1 | # Test Pie Chart
2 |
3 | Expressions could be used in parameter `data`, `label`, and `extLabel`.
4 |
5 | ## Manual Input Data
6 |
7 | ### Numbers as Data
8 | Pie chart with labels showing percentages
9 | ``` tracker
10 | searchType: task.done, task.notdone
11 | searchTarget: Say I love you, Say I love you
12 | pie:
13 | title: Pie Chart
14 | label: '{{2/30*100}}%, {{4/30*100}}%, {{6/30*100}}%, {{8/30*100}}%, {{10/30*100}}%'
15 | data: 2, 4, 6, 8, 10
16 | dataColor: '#4daf4a,#377eb8,#ff7f00,#984ea3,#e41a1c'
17 | ratioInnerRadius: 0.0
18 | ```
19 |
20 | ### Arithmetic
21 |
22 | Pie chart with labels showing percentages
23 | ``` tracker
24 | searchType: task.done, task.notdone
25 | searchTarget: Say I love you, Say I love you
26 | datasetName: Done, NotDone
27 | pie:
28 | title: Arithmetic
29 | data: '{{1 + 1}}, {{2 * 2}}, {{12/ 2}}, {{1+(2+3*2)-1}}, {{27%17}}'
30 | label: '{{2/30*100}}%, {{4/30*100}}%, {{6/30*100}}%, {{8/30*100}}%, {{10/30*100}}%'
31 | dataColor: '#4daf4a,#377eb8,#ff7f00,#984ea3,#e41a1c'
32 | ratioInnerRadius: 0.5
33 | ```
34 |
35 | ### Legend
36 |
37 | Use parameter `dataName` for the name on the legend
38 | ``` tracker
39 | searchType: task.done, task.notdone
40 | searchTarget: Say I love you, Say I love you
41 | datasetName: Done, NotDone
42 | pie:
43 | title: Manual Input Data
44 | label: '{{2/30*100}}%, {{4/30*100}}%, {{6/30*100}}%, {{8/30*100}}%, {{10/30*100}}%'
45 | data: '2, 4, 6, 8, 10'
46 | dataColor: '#4daf4a,#377eb8,#ff7f00,#984ea3,#e41a1c'
47 | dataName: Data1, Data2, Data3, Data4, Data5
48 | ratioInnerRadius: 0.5
49 | showLegend: true
50 | legendPosition: right
51 | legendOrientation: vertical
52 | ```
53 |
54 | ### Default data colors
55 | ``` tracker
56 | searchType: task.done, task.notdone
57 | searchTarget: Say I love you, Say I love you
58 | pie:
59 | title: Pie Chart
60 | label: '{{2/30*100}}%, {{4/30*100}}%, {{6/30*100}}%, {{8/30*100}}%, {{10/30*100}}%'
61 | data: 2, 4, 6, 8, 10
62 | ratioInnerRadius: 0.0
63 | ```
64 |
65 | ## Data from Notes
66 |
67 | Using function dataset() to get Dataset then use function sum() to get the summation
68 | ``` tracker
69 | searchType: task.done, task.notdone
70 | searchTarget: Say I love you, Say I love you
71 | folder: diary
72 | datasetName: Done, NotDone
73 | pie:
74 | title: Love is Action
75 | data: '{{sum(dataset(0))}},{{sum(dataset(1))}}'
76 | dataColor: '#4daf4a,#377eb8'
77 | label: Say👍,Not Say💔
78 | ratioInnerRadius: 0.3
79 | ```
80 |
81 | Summary
82 | ``` tracker
83 | searchType: task.done, task.notdone
84 | searchTarget: Say I love you, Say I love you
85 | folder: diary
86 | summary:
87 | template: "How many days I said love: {{sum(dataset(0))::i}}\nHow many days I didn't say love: {{sum(dataset(1))::i}}"
88 | ```
89 |
90 | ## External Labels
91 | ``` tracker
92 | searchType: task.done, task.notdone
93 | searchTarget: Say I love you, Say I love you
94 | datasetName: Done, NotDone
95 | pie:
96 | label: '{{0.5/28.5*100}}%, {{4/28.5*100}}%, {{6/28.5*100}}%, {{8/28.5*100}}%, {{10/28.5*100}}%'
97 | extLabel: 'DataA {{0.5/28.5*100}}%, DataB, DataC, DataD, DataE'
98 | data: '0.5, 4, 6, 8, 10'
99 | dataColor: '#4daf4a,#377eb8,#ff7f00,#984ea3,#e41a1c'
100 | ratioInnerRadius: 0.6
101 | ```
102 |
103 | 1. Label for the first data was hidden because the fraction of it is too small (less than 0.03, 3%).
104 | 2. showExtLabelOnlyIfNoLabel was set to true, thus the external label of the first data was shown due to the hidden label.
105 | ``` tracker
106 | searchType: task.done, task.notdone
107 | searchTarget: Say I love you, Say I love you
108 | datasetName: Done, NotDone
109 | pie:
110 | label: '{{0.5/28.5*100}}%, B {{4/28.5*100}}%, C {{6/28.5*100}}%, D {{8/28.5*100}}%, E {{10/28.5*100}}%'
111 | extLabel: 'A {{0.5/28.5*100}}%, {{4/28.5*100}}%, {{6/28.5*100}}%, {{8/28.5*100}}%, {{10/28.5*100}}%'
112 | data: '0.5, 4, 6, 8, 10'
113 | dataColor: '#4daf4a,#377eb8,#ff7f00,#984ea3,#e41a1c'
114 | ratioInnerRadius: 0.4
115 | hideLabelLessThan: 0.03
116 | showExtLabelOnlyIfNoLabel: true
117 | ```
118 |
119 | When there are multiple external labels, make sure they won't overlap with each other
120 | ``` tracker
121 | searchType: task.done, task.notdone
122 | searchTarget: Say I love you, Say I love you
123 | datasetName: Done, NotDone
124 | pie:
125 | label: '{{0.5/11*100}}%, B {{0.4/11*100}}%, C {{0.1/11*100}}%, D {{8/11*100}}%, E {{9.7/11*100}}%, F {{0.3/28.5*100}}'
126 | extLabel: 'A {{0.5/11*100}}%, B {{0.4/11*100}}%, C {{0.1/11*100}}%, D {{8/11*100}}%, E {{9.7/11*100}}, F {{0.3/11*100}}%'
127 | data: '0.5, 0.4, 0.1, 8, 9.7, 0.3'
128 | dataColor: '#4daf4a,#377eb8,#ff7f00,#984ea3,#e41a1c,#aaaaaa'
129 | ratioInnerRadius: 0.4
130 | hideLabelLessThan: 0.03
131 | showExtLabelOnlyIfNoLabel: true
132 | ```
133 |
--------------------------------------------------------------------------------
/examples/TestRegex.md:
--------------------------------------------------------------------------------
1 | # Search Text using Regular Expression
2 |
3 | **Important**!!
4 | 1. Use single quotes to wrap the regular expression, or use double quotes with all back slashes (escape characters) duplicated.
5 | 2. You can make your own expression, or find a suitable one from website like [regex101](https://regex101.com).
6 | 3. Use a named group "(?\XXXXXX)" in your expression if you need values be retrieved from text.
7 |
8 | ## Count Occurencies (No Value)
9 | ### Occurencies of Email
10 | [Regex for searching simple emails](https://regex101.com/library/mF3pK7)
11 | ``` tracker
12 | searchType: text
13 | searchTarget: '.+\@.+\..+'
14 | folder: diary
15 | startDate: 2021-01-01
16 | endDate: 2021-01-31
17 | line:
18 | title: Email Occurencies
19 | yAxisLabel: Count
20 | lineColor: yellow
21 | yAxisTickInterval: 1.0
22 | yAxisTickLabelFormat: i
23 | yMin: 0
24 | yMax: 5
25 | ```
26 |
27 | ``` tracker
28 | searchType: text
29 | searchTarget: '.+\@.+\..+'
30 | folder: diary
31 | startDate: 2021-01-01
32 | endDate: 2021-01-31
33 | summary:
34 | template: "Total number of emails found: {{sum()::i}}"
35 | style: "font-size:20px;color:red;margin-left: 50px;margin-top:00px;"
36 | ```
37 |
38 | ## Count Values
39 | ### Weightlifting Tracker
40 | Track text in format "weightlifting: 10".
41 | [Regex for searching value-attached texts](https://regex101.com/r/eCWpgS/2)
42 | ``` tracker
43 | searchType: text
44 | searchTarget: 'weightlifting:\s+(?[\-]?[0-9]+[\.][0-9]+|[\-]?[0-9]+)'
45 | folder: diary
46 | startDate: 2021-01-01
47 | endDate: 2021-01-31
48 | line:
49 | title: Weight Lifting
50 | yAxisLabel: Count
51 | lineColor: yellow
52 | ```
53 |
54 | ### Dataview Compatible Tracker
55 | Use searchType 'dvField' instead
56 | ``` tracker
57 | searchType: text
58 | searchTarget: 'dataviewTarget::\s+(?[\-]?[0-9]+[\.][0-9]+|[\-]?[0-9]+)'
59 | folder: diary
60 | startDate: 2021-01-01
61 | endDate: 2021-01-31
62 | line:
63 | title: Dataview Data
64 | yAxisLabel: Count
65 | lineColor: red
66 | yMin: 0
67 | ```
68 |
69 | Use searchType 'dvField' with separators in the target instead
70 | ``` tracker
71 | searchType: text
72 | searchTarget: 'dataviewTarget2::\s+(?[\-]?[0-9]+[\.][0-9]+|[\-]?[0-9]+)\s+@\s+([\-]?[0-9]+[\.][0-9]+|[\-]?[0-9]+), dataviewTarget2::\s+([\-]?[0-9]+[\.][0-9]+|[\-]?[0-9]+)\s+@\s+(?[\-]?[0-9]+[\.][0-9]+|[\-]?[0-9]+)'
73 | folder: diary
74 | startDate: 2021-01-01
75 | endDate: 2021-01-31
76 | line:
77 | title: Dataview Data
78 | yAxisLabel: Count
79 | lineColor: red, yellow
80 | yMin: 0
81 | ```
82 |
83 |
84 | Please also check those search targets in markdown files under folder 'diary'.
85 |
--------------------------------------------------------------------------------
/examples/TestRelativeStartEndDate.md:
--------------------------------------------------------------------------------
1 | # Test Relative startDate and endDate
2 |
3 | ``` tracker
4 | searchType: tag
5 | searchTarget: exercise-pushup
6 | folder: diary
7 | startDate: -48M
8 | endDate: -46M
9 | line:
10 | title: PushUp
11 | yAxisLabel: Count
12 | lineColor: "#d65d0e"
13 | yAxisTickInterval: 2
14 | ```
--------------------------------------------------------------------------------
/examples/TestScalingAndPositioning.md:
--------------------------------------------------------------------------------
1 | # Test Scaling and Positioning
2 | ## Scaling the chart
3 | Scaling factor 0.5
4 | ``` tracker
5 | searchType: tag
6 | searchTarget: exercise-pushup
7 | folder: diary
8 | endDate: 2021-01-31
9 | fixedScale: 0.5
10 | fitPanelWidth: false
11 | line:
12 | title: PushUp
13 | yAxisLabel: Count
14 | lineColor: "#d65d0e"
15 | ```
16 |
17 | Scaling factor 1.5
18 | ``` tracker
19 | searchType: tag
20 | searchTarget: exercise-pushup
21 | folder: diary
22 | endDate: 2021-01-31
23 | fixedScale: 1.5
24 | fitPanelWidth: false
25 | line:
26 | title: PushUp
27 | yAxisLabel: Count
28 | lineColor: "#d65d0e"
29 | ```
30 |
31 | ## Fitting the chart to the panel width
32 | ``` tracker
33 | searchType: tag
34 | searchTarget: exercise-pushup
35 | folder: diary
36 | endDate: 2021-01-31
37 | fixedScale: 1.0
38 | fitPanelWidth: true
39 | line:
40 | title: PushUp
41 | yAxisLabel: Count
42 | lineColor: "#d65d0e"
43 | ```
44 |
45 | ## Chart Positioning
46 | margin: top right bottom left
47 | ``` tracker
48 | searchType: tag
49 | searchTarget: exercise-pushup
50 | folder: diary
51 | endDate: 2021-01-31
52 | fixedScale: 1.0
53 | fitPanelWidth: false
54 | margin: 10, 10, 10, 0
55 | line:
56 | title: PushUp
57 | yAxisLabel: Count
58 | lineColor: "#d65d0e"
59 | ```
60 |
61 | ``` tracker
62 | searchType: tag
63 | searchTarget: exercise-pushup
64 | folder: diary
65 | endDate: 2021-01-31
66 | fixedScale: 1.0
67 | fitPanelWidth: false
68 | margin: 10, 10, 10, 50
69 | line:
70 | title: PushUp
71 | yAxisLabel: Count
72 | lineColor: "#d65d0e"
73 | ```
74 |
75 | ``` tracker
76 | searchType: tag
77 | searchTarget: exercise-pushup
78 | folder: diary
79 | endDate: 2021-01-31
80 | fixedScale: 1.0
81 | fitPanelWidth: false
82 | margin: 10, 10, 10, 100
83 | line:
84 | title: PushUp
85 | yAxisLabel: Count
86 | lineColor: "#d65d0e"
87 | ```
88 |
89 | ``` tracker
90 | searchType: tag
91 | searchTarget: exercise-pushup
92 | folder: diary
93 | endDate: 2021-01-31
94 | fixedScale: 1.0
95 | fitPanelWidth: false
96 | margin: 10, 10, 10, 150
97 | line:
98 | title: PushUp
99 | yAxisLabel: Count
100 | lineColor: "#d65d0e"
101 | ```
102 |
103 | Please also check those search targets in markdown files under folder 'diary'.
--------------------------------------------------------------------------------
/examples/TestSpecifiedFiles.md:
--------------------------------------------------------------------------------
1 | # Test Specified Files
2 |
3 | ## Collect Data from the Specified Files Only
4 | ``` tracker
5 | searchType: frontmatter, dvField
6 | searchTarget: date, dataviewTarget
7 | xDataset: 0
8 | file: data/data1, data/data2, data/data3
9 | specifiedFilesOnly: true
10 | line:
11 | ```
12 |
13 | ## Collect Data from the Linked Files Only
14 | Count the MTG mana cost in linked files
15 | ``` tracker
16 | searchType: fileMeta, text
17 | searchTarget: 'cDate, {W}, {R}, {G}, {B}, {(?[0-9]+)}'
18 | fileContainsLinkedFiles: data/MTG-Deck-1
19 | specifiedFilesOnly: true
20 | fileMultiplierAfterLink: 'x(?[0-9]+)'
21 | xDataset: 0
22 | pie:
23 | label: '{{sum(dataset(1))::i}},{{sum(dataset(2))::i}},{{sum(dataset(3))::i}},{{sum(dataset(4))::i}},{{sum(dataset(5))::i}}'
24 | data: '{{sum(dataset(1))}},{{sum(dataset(2))}}, {{sum(dataset(3))}}, {{sum(dataset(4))}},{{sum(dataset(5))}}'
25 | dataColor: lightgray, firebrick, yellowgreen, lightblue, gray
26 | ```
--------------------------------------------------------------------------------
/examples/TestSummary.md:
--------------------------------------------------------------------------------
1 | # Test Summary
2 |
3 | ## Multiple Lines
4 |
5 | ``` tracker
6 | searchType: tag
7 | searchTarget: weight
8 | folder: diary
9 | summary:
10 | template: "Minimum: {{min()}}kg\nMaximum: {{max()}}kg\nMedian: {{median()}}kg\nAverage: {{average()}}kg"
11 | ```
12 |
13 | ## Styling
14 |
15 | ``` tracker
16 | searchType: text
17 | searchTarget: ⭐
18 | folder: diary
19 | summary:
20 | template: "I have {{sum()}} stars in total."
21 | style: "font-size:20px;color:yellow;margin-left: 50px;margin-top:00px;"
22 | ```
23 |
24 | ``` tracker
25 | searchType: frontmatter
26 | searchTarget: sleptwell
27 | folder: diary
28 | summary:
29 | template: "I once slept well for {{maxStreak()::i}} days in a row!"
30 | ```
31 | ## Using Expressions
32 |
33 | Please check [expression examples](https://github.com/pyrochlore/obsidian-tracker/blob/master/examples/TestExpression.md) for more examples.
--------------------------------------------------------------------------------
/examples/TestTabCharacters.md:
--------------------------------------------------------------------------------
1 | # Test Tab Characters
2 |
3 | Tab characters will be replaced by numbers of spaces according to the tabSize defined in your editor settings
4 |
5 | ## Single Tab
6 | ``` tracker
7 | searchType: tag
8 | searchTarget: exercise-pushup
9 | folder: diary
10 | endDate: 2021-01-31
11 | line:
12 | title: PushUp
13 | yAxisLabel: Count
14 | lineColor: "#d65d0e"
15 | ```
16 |
17 | ## Multiple Tabs
18 |
19 | ``` tracker
20 | searchType: tag
21 | searchTarget: exercise-pushup
22 | folder: diary
23 | endDate: 2021-01-31
24 | line:
25 | title: PushUp
26 | yAxisLabel: Count
27 | lineColor: "#d65d0e"
28 | ```
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/examples/TestTable.md:
--------------------------------------------------------------------------------
1 | # Test Table
2 |
3 | ## Line Chart
4 | Use first column as X dataset , and second and third columns as Y values
5 | ``` tracker
6 | searchType: table
7 | searchTarget: data/Tables[0][0], data/Tables[0][1], data/Tables[0][2]
8 | xDataset: 0
9 | line:
10 | yAxisLocation: none, left, right
11 | lineColor: none, yellow, red
12 | showLegend: true
13 | ```
14 |
15 | Use first column as X dataset , and third and forth columns as Y values
16 | ``` tracker
17 | searchType: table
18 | searchTarget: data/Tables[0][0], data/Tables[0][2], data/Tables[0][3]
19 | xDataset: 0
20 | line:
21 | yAxisLocation: none, left, right
22 | lineColor: none, yellow, red
23 | showLegend: true
24 | legendPosition: right
25 | ```
26 |
27 | Use first column as X dataset. Second column posses multiple values in each cell.
28 | ``` tracker
29 | searchType: table
30 | searchTarget: data/Tables[1][0], data/Tables[1][1][0], data/Tables[1][1][1]
31 | xDataset: 0
32 | separator: "@"
33 | line:
34 | yAxisLocation: none, left, right
35 | lineColor: none, yellow, red
36 | showLegend: true
37 | legendPosition: right
38 | ```
39 |
40 | ### Tables with Defects
41 | ``` tracker
42 | searchType: table
43 | searchTarget: data/Tables[2][0], data/Tables[2][1]
44 | xDataset: 0
45 | line:
46 | lineColor: none, yellow
47 | ```
48 |
49 | Wrong date format in Table
50 | ``` tracker
51 | searchType: table
52 | searchTarget: data/Tables[3][0], data/Tables[3][1]
53 | xDataset: 0
54 | line:
55 | lineColor: none, yellow
56 | ```
57 |
58 | ## Month View
59 |
60 | ``` tracker
61 | searchType: table
62 | searchTarget: data/Tables[0][0], data/Tables[0][1], data/Tables[0][2], data/Tables[0][3]
63 | xDataset: 0
64 | datasetName: null, Jeffrey, Lucas, Anne
65 | month:
66 | startWeekOn: 'Sun'
67 | threshold: 0, 62.2, 20.8, 18.2
68 | color: green
69 | headerMonthColor: orange
70 | dimNotInMonth: false
71 | todayRingColor: orange
72 | selectedRingColor: steelblue
73 | circleColorByValue: true
74 | showSelectedValue: true
75 | ```
76 |
77 | Please also check those search targets in markdown file /data/Tables.
78 |
--------------------------------------------------------------------------------
/examples/TestTask.md:
--------------------------------------------------------------------------------
1 | # Test Task
2 |
3 | ## Summary
4 | ### All Tasks
5 | Collect all tasks matched `searchTarget`
6 | ``` tracker
7 | searchType: task
8 | searchTarget: Say I love you
9 | folder: diary
10 | summary:
11 | template: "Total count: {{sum()}}"
12 | ```
13 |
14 | ### All Tasks
15 | Collect all tasks matched `searchTarget`
16 | ``` tracker
17 | searchType: task.all
18 | searchTarget: Say I love you
19 | folder: diary
20 | summary:
21 | template: "Total count: {{sum()}}"
22 | ```
23 |
24 | ### Task Done
25 | Collect all tasks done matched `searchTarget`
26 | ``` tracker
27 | searchType: task.done
28 | searchTarget: Say I love you
29 | folder: diary
30 | summary:
31 | template: "How many days I said: {{sum()}}"
32 | ```
33 |
34 | ### Task Not Done
35 | Collect all tasks not-done matched `searchTarget`
36 | ``` tracker
37 | searchType: task.notdone
38 | searchTarget: Say I love you
39 | folder: diary
40 | summary:
41 | template: "How many days I didn't say: {{sum()}}"
42 | ```
43 |
44 | ## Month View
45 | See tasks done in month view
46 | ``` tracker
47 | searchType: task.done
48 | searchTarget: Say I love you
49 | folder: diary
50 | datasetName: Love
51 | endDate: 2021-01-31
52 | month:
53 | color: tomato
54 | headerMonthColor: orange
55 | todayRingColor: orange
56 | selectedRingColor: steelblue
57 | showSelectedValue: false
58 | ```
59 |
60 | task.done and task.notdone
61 | ``` tracker
62 | searchType: task.done, task.notdone
63 | searchTarget: Say I love you, Say I love you
64 | folder: diary
65 | datasetName: Good Lover, Bad Lover
66 | endDate: 2021-01-31
67 | month:
68 | color: tomato
69 | headerMonthColor: orange
70 | todayRingColor: orange
71 | selectedRingColor: steelblue
72 | showSelectedValue: false
73 | ```
--------------------------------------------------------------------------------
/examples/TestTextValueMap.md:
--------------------------------------------------------------------------------
1 | # Test textValueMap
2 |
3 | ## Mood
4 | ``` tracker
5 | searchType: frontmatter
6 | searchTarget: "mood"
7 | folder: diary
8 | endDate: 2021-01-31
9 | textValueMap:
10 | 😀: 5
11 | 🙂: 4
12 | 😐: 3
13 | 🙁: 2
14 | 😞: 1
15 | line:
16 | title: "Mood"
17 | yAxisLabel: Mood
18 | lineColor: "#d65d0e"
19 | yAxisTickInterval: 1
20 | yAxisTickLabelFormat: i
21 | yMin: 0
22 | ```
23 |
--------------------------------------------------------------------------------
/examples/TestTimeValues.md:
--------------------------------------------------------------------------------
1 | # Test Time Values
2 |
3 | ## From frontmatter
4 | Clock-In & Clock-Out from front matter
5 | ``` tracker
6 | searchType: frontmatter
7 | searchTarget: clock-in, clock-out
8 | endDate: 2021-01-15
9 | folder: diary
10 | datasetName: Clock-In, Clock-Out
11 | line:
12 | title: "Working Hours"
13 | yAxisLabel: "Time (24h)"
14 | reverseYAxis: true
15 | lineColor: yellow, red
16 | showPoint: true
17 | showLegend: true
18 | ```
19 |
20 | Sleep time separated by / from front matter
21 | ``` tracker
22 | searchType: frontmatter
23 | searchTarget: sleep[0], sleep[1]
24 | endDate: 2021-01-15
25 | folder: diary
26 | valueShift: -24:00, 00:00
27 | datasetName: Sleep, WakeUp
28 | line:
29 | title: "Sleep"
30 | yAxisLabel: "Time (24h)"
31 | lineColor: yellow, red
32 | showPoint: true
33 | showLegend: true
34 | ```
35 |
36 | ## From dvField
37 | Clock-In & Clock-Out from dvField
38 | time granularity to one second
39 | ``` tracker
40 | searchType: dvField
41 | searchTarget: clock-in, clock-out
42 | endDate: 2021-01-15
43 | folder: diary
44 | datasetName: Clock-In, Clock-Out
45 | line:
46 | title: "Working Hours"
47 | yAxisLabel: "Time (24h)"
48 | reverseYAxis: true
49 | lineColor: yellow, red
50 | showPoint: true
51 | showLegend: true
52 | ```
53 |
54 | Sleep time separated by / from dvField
55 | ``` tracker
56 | searchType: dvField
57 | searchTarget: sleep[0], sleep[1]
58 | endDate: 2021-01-15
59 | folder: diary
60 | valueShift: -24:00, 00:00
61 | datasetName: Sleep, WakeUp
62 | line:
63 | title: "Sleep"
64 | yAxisLabel: "Time (24h)"
65 | lineColor: yellow, red
66 | showPoint: true
67 | showLegend: true
68 | ```
69 |
70 | Please also check those search targets in markdown files under folder 'diary'.
--------------------------------------------------------------------------------
/examples/TestWordCounting.md:
--------------------------------------------------------------------------------
1 | # Test Word Counting
2 |
3 |
4 | ## Word counts of daily notes
5 | ``` tracker
6 | searchType: fileMeta
7 | searchTarget: numWords, numChars
8 | folder: diary
9 | startDate: 2021-01-01
10 | endDate: 2021-01-05
11 | datasetName: words, chars
12 | line:
13 | title: Word Counting
14 | yAxisLocation: left, right
15 | yAxisLabel: Words, Characters
16 | lineColor: red, yellow
17 | showLegend: true
18 | ```
19 |
20 | ``` tracker
21 | searchType: fileMeta
22 | searchTarget: numWords
23 | folder: diary
24 | startDate: 2021-01-01
25 | endDate: 2021-01-05
26 | summary:
27 | template: 'Total number of words: {{sum()}}'
28 | ```
29 |
30 | ``` tracker
31 | searchType: fileMeta
32 | searchTarget: numChars
33 | folder: diary
34 | startDate: 2021-01-01
35 | endDate: 2021-01-05
36 | summary:
37 | template: 'Total number of characters: {{sum()}}'
38 | ```
39 |
40 | ## Word counts of all notes
41 | Use file creation dates as x values then sum the counts up
42 | ``` tracker
43 | searchType: fileMeta
44 | searchTarget: cDate, numWords
45 | xDataset: 0
46 | folder: /
47 | summary:
48 | template: "Total word count: {{sum(dataset(1))}}"
49 | ```
50 |
51 |
--------------------------------------------------------------------------------
/examples/TestXDataset.md:
--------------------------------------------------------------------------------
1 | # Test X Dataset
2 |
3 | Use file created dates (cDate) as x values
4 | ``` tracker
5 | searchType: fileMeta, dvField
6 | searchTarget: cDate, dataviewTarget
7 | xDataset: 0
8 | folder: data
9 | line:
10 | fillGap: true
11 | ```
12 |
13 | Use dates from front matter as x values
14 | ``` tracker
15 | searchType: frontmatter, dvField
16 | searchTarget: date, dataviewTarget
17 | xDataset: 0
18 | folder: data
19 | line:
20 | title: Dataview Inline Field
21 | fillGap: true
22 | ```
23 |
24 | Use dates from date-attached tags as x values
25 | ``` tracker
26 | searchType: tag, dvField
27 | searchTarget: date, dataviewTarget
28 | xDataset: 0
29 | folder: data
30 | line:
31 | title: Dataview Inline Field
32 | fillGap: true
33 | ```
34 |
35 | Use dates from Dataview inline fields as x values
36 | ``` tracker
37 | searchType: dvField, dvField
38 | searchTarget: date, dataviewTarget
39 | xDataset: 0
40 | folder: data
41 | line:
42 | title: Dataview Inline Field
43 | fillGap: true
44 | ```
45 |
46 | Use dates from formatted text as x values
47 | ``` tracker
48 | searchType: text, dvField
49 | searchTarget: 'Today\sis\s(?([0-9]{4})-([0-9]{2})-([0-9]{2})), dataviewTarget'
50 | xDataset: 0
51 | folder: data
52 | line:
53 | title: Dataview Inline Field
54 | fillGap: true
55 | ```
56 |
57 | Please also check those search targets in markdown files under folder 'data'.
58 |
--------------------------------------------------------------------------------
/examples/WeightTracker.md:
--------------------------------------------------------------------------------
1 | # Weight Tracker
2 |
3 | ``` tracker
4 | searchType: tag
5 | searchTarget: weight
6 | folder: diary
7 | startDate: 2021-01-01
8 | endDate: 2021-01-31
9 | aspectRatio: 20:9
10 | fitPanelWidth: 1
11 | line:
12 | title: Weight Log
13 | yAxisLabel: Weight
14 | yAxisUnit: kg
15 | lineColor: yellow
16 | ```
17 |
18 | ## Summary
19 | ``` tracker
20 | searchType: tag
21 | searchTarget: weight
22 | folder: diary
23 | summary:
24 | template: "First: {{first()}}kg\nLast: {{last()}}kg\nMinimum: {{min()}}kg\nMaximum: {{max()}}kg\nMedian: {{median()}}kg\nAverage: {{average()}}kg"
25 | ```
26 |
27 | ``` tracker
28 | searchType: tag
29 | searchTarget: weight
30 | folder: diary
31 | endDate: 2021-01-31
32 | line:
33 | title: Weight Log
34 | yAxisLabel: Weight
35 | yAxisUnit: kg
36 | showPoint: false
37 | lineColor: "#b16286"
38 | ```
39 |
40 | Please also check those search targets in markdown files under folder 'diary'.
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/examples/WikiTracker.md:
--------------------------------------------------------------------------------
1 | # Wiki Tracker
2 |
3 | wiki --> Try parse the display text first, if it does not exist, parse the link text
4 | wiki.link --> Parse the link text
5 | wiki.display --> Parse the display text
6 |
7 | In the example notes, we have
8 | [[todo_family|To-Do @Family]]
9 | [[todo_work|To-Do @Work]]
10 |
11 | ## wiki.link
12 | ``` tracker
13 | searchType: wiki.link
14 | searchTarget: todo_work
15 | folder: diary
16 | startDate: 2021-01-01
17 | endDate: 2021-01-31
18 | summary:
19 | template: '{{sum()::i}}'
20 | ```
21 |
22 | ## wiki.display
23 | ``` tracker
24 | searchType: wiki.display
25 | searchTarget: To
26 | folder: diary
27 | startDate: 2021-01-01
28 | endDate: 2021-01-31
29 | summary:
30 | template: '{{sum()::i}}'
31 | ```
32 |
33 |
34 | Please also check those search targets in markdown files under folder 'diary'.
35 |
--------------------------------------------------------------------------------
/examples/data/In-Sentence-Fields.md:
--------------------------------------------------------------------------------
1 | ---
2 | date: 2021-01-05
3 | ---
4 |
5 | I am [count:: 1] inline
6 | So am (count::2) I
7 | count:: 3
8 | | count:: 4 |
9 | |count:: 5|
--------------------------------------------------------------------------------
/examples/data/MTG-Card-1.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | {R}{R}
--------------------------------------------------------------------------------
/examples/data/MTG-Card-2.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | {B}{B}{R}{2}
--------------------------------------------------------------------------------
/examples/data/MTG-Card-3.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | {G}{G}{G}{G}{G}{0}
--------------------------------------------------------------------------------
/examples/data/MTG-Card-4.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | {W}
--------------------------------------------------------------------------------
/examples/data/MTG-Deck-1.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | [[MTG-Card-1]] x1
4 | [[MTG-Card-2]] x2
5 | [[MTG-Card-3]] x2
6 | [[MTG-Card-4]] x5
--------------------------------------------------------------------------------
/examples/data/Set-FileDates.ps1:
--------------------------------------------------------------------------------
1 | (Get-Item "./data1.md").CreationTime=("25 May 2021 17:00:00")
2 | (Get-Item "./data2.md").CreationTime=("27 May 2021 17:00:00")
3 | (Get-Item "./data3.md").CreationTime=("29 May 2021 17:00:00")
4 | (Get-Item "./data1.md").LastWriteTime=("25 May 2021 17:00:00")
5 | (Get-Item "./data2.md").LastWriteTime=("27 May 2021 17:00:00")
6 | (Get-Item "./data3.md").LastWriteTime=("29 May 2021 17:00:00")
--------------------------------------------------------------------------------
/examples/data/Tables.md:
--------------------------------------------------------------------------------
1 | # Tables
2 |
3 | ## Weight Table
4 | Date | Jeffrey (kg) | Lucas (kg) | Anne (kg) |
5 | | - | - | - | - |
6 | | 2021-05-01 | 60.0 | 20.1 | 18.2
7 | 2021-05-02 | 62.1 | 20.5 | 18.1 |
8 | | 2021-05-03 | 62.2 | 20.3 | 18.3
9 | | 2021-05-04 | 62.3 | 20.4 | 18.2 |
10 | 2021-05-05 | 62.2 | 20.2 | 18.4
11 | | [[2021-05-06]] | 62.4 | 21.0 | 18.4
12 | | 2021-05-07 | 62.6 | 20.9 | 18.3 |
13 | | 2021-05-08 | 62.3 | 20.9 | 18.2
14 | | [[2021-05-09]] | 62.2 | 20.3 | 18.5
15 | | [[2021-05-10]] | 62.1 | 20.8 | 18.9
16 |
17 |
18 | ## Running Records
19 |
20 | Date | km @ min/km |
21 | | - | - |
22 | | 2021-05-01 | 5.32 @ 6.32 |
23 | 2021-05-02 | 5.0 @ 6.30
24 | | 2021-05-03 | 5.22 @ 6.12
25 | | 2021-05-04 | 5.10 @ 6.10 |
26 | 2021-05-05 | 5.35 @ 6.05
27 | | 2021-05-06 | 5.45 @ 6.05 |
28 | | 2021-05-07 | 5.73 @ 5.05 |
29 | | 2021-05-08 | 6.25 @ 5.55 |
30 | | 2021-05-09 | 6.25 @ 5.45 |
31 | | 2021-05-10 | 6.35 @ 5.75 |
32 |
33 | ## Tables with Defects
34 | More columns than need, graph still rendered
35 |
36 | Date | Weight (kg) |
37 | | - | - | -
38 | | 2021-05-01 | 60.0 | 20.1 |
39 | 2021-05-02 | 62.1 | 20.5
40 | | 2021-05-03 | 62.2 | 20.3 |
41 |
42 | The row with wrong date format will be skipped
43 |
44 | Date | Weight (kg) |
45 | | - | - | -
46 | | not a date | 60.0 | 20.1 |
47 | 2021-05-02 | 62.1 | 20.5
48 | | 2021-05-03 | 62.2 | 20.3 |
49 |
50 | All dates are invalid, leads to an error message
51 |
52 | Date | Weight (kg) |
53 | | - | - | -
54 | | not a date | 60.0 | 20.1 |
55 | not a date | 62.1 | 20.5
56 | | not a date | 62.2 | 20.3 |
--------------------------------------------------------------------------------
/examples/data/data1.md:
--------------------------------------------------------------------------------
1 | ---
2 | date: 2021-01-01
3 | ---
4 |
5 | #date:2021-01-01
6 | date:: 2021-01-01
7 |
8 | dataviewTarget:: 50
9 |
10 | Today is 2021-01-01
--------------------------------------------------------------------------------
/examples/data/data2.md:
--------------------------------------------------------------------------------
1 | ---
2 | date: 2021-01-02
3 | ---
4 |
5 | #date:2021-01-03
6 | date:: 2021-01-05
7 |
8 | dataviewTarget:: 30
9 |
10 | Today is 2021-01-10
--------------------------------------------------------------------------------
/examples/data/data3.md:
--------------------------------------------------------------------------------
1 | ---
2 | date: 2021-01-03
3 | ---
4 |
5 | #date:2021-01-05
6 | date:: 2021-01-09
7 |
8 | dataviewTarget:: 80
9 |
10 | Today is 2021-01-20
--------------------------------------------------------------------------------
/examples/diary/01-01-2021.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 6
4 | ---
5 |
6 | #weight:66.9kg
7 |
8 | #exercise-pushup:33
9 | #exercise-plank:85sec
10 |
11 |
12 | ⭐⭐⭐⭐
13 |
14 | #finance/bank1:-2.7USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker+1@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 |
23 |
--------------------------------------------------------------------------------
/examples/diary/01.01.2021.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 6
4 | ---
5 |
6 | #weight:66.9kg
7 |
8 | #exercise-pushup:33
9 | #exercise-plank:85sec
10 |
11 |
12 | ⭐⭐⭐⭐
13 |
14 | #finance/bank1:-2.7USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker+1@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 |
23 |
--------------------------------------------------------------------------------
/examples/diary/02-01-2021.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 5
4 | ---
5 |
6 | #weight:69.4kg
7 |
8 | #exercise-pushup:30
9 | #exercise-plank:93sec
10 |
11 |
12 | ⭐⭐
13 |
14 | #finance/bank1:-3.1USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 14
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/02.01.2021.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 5
4 | ---
5 |
6 | #weight:69.4kg
7 |
8 | #exercise-pushup:30
9 | #exercise-plank:93sec
10 |
11 |
12 | ⭐⭐
13 |
14 | #finance/bank1:-3.1USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 14
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/03-01-2021.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 5
4 | ---
5 |
6 | #weight:69.3kg
7 |
8 | #exercise-pushup:39
9 | #exercise-plank:98sec
10 |
11 |
12 | ⭐
13 |
14 | #finance/bank1:-2.2USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker@gmail.com
20 | obsidian-tracker+1@gmail.com
21 |
22 | weightlifting: 14
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/03.01.2021.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 5
4 | ---
5 |
6 | #weight:69.3kg
7 |
8 | #exercise-pushup:39
9 | #exercise-plank:98sec
10 |
11 |
12 | ⭐
13 |
14 | #finance/bank1:-2.2USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker@gmail.com
20 | obsidian-tracker+1@gmail.com
21 |
22 | weightlifting: 14
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/04-01-2021.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 7
4 | ---
5 |
6 | #weight:70.6kg
7 |
8 | #exercise-pushup:41
9 | #exercise-plank:87sec
10 |
11 |
12 | ⭐
13 |
14 | #finance/bank1:-3.3USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker+1@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 11
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/04.01.2021.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 7
4 | ---
5 |
6 | #weight:70.6kg
7 |
8 | #exercise-pushup:41
9 | #exercise-plank:87sec
10 |
11 |
12 | ⭐
13 |
14 | #finance/bank1:-3.3USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker+1@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 11
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/05-01-2021.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 8
4 | ---
5 |
6 | #weight:60.2kg
7 |
8 | #exercise-pushup:50
9 | #exercise-plank:55sec
10 |
11 | #meditation
12 |
13 | ⭐⭐⭐
14 |
15 | #finance/bank1:-2.2USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 20
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/05.01.2021.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 8
4 | ---
5 |
6 | #weight:60.2kg
7 |
8 | #exercise-pushup:50
9 | #exercise-plank:55sec
10 |
11 | #meditation
12 |
13 | ⭐⭐⭐
14 |
15 | #finance/bank1:-2.2USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 20
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/1-20210101.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 6
4 | ---
5 |
6 | #weight:66.9kg
7 |
8 | #exercise-pushup:33
9 | #exercise-plank:85sec
10 |
11 |
12 | ⭐⭐⭐⭐
13 |
14 | #finance/bank1:-2.7USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker+1@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 |
23 |
--------------------------------------------------------------------------------
/examples/diary/2-20210102.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 5
4 | ---
5 |
6 | #weight:69.4kg
7 |
8 | #exercise-pushup:30
9 | #exercise-plank:93sec
10 |
11 |
12 | ⭐⭐
13 |
14 | #finance/bank1:-3.1USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 14
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-01-Friday.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 6
4 | ---
5 |
6 | #weight:66.9kg
7 |
8 | #exercise-pushup:33
9 | #exercise-plank:85sec
10 |
11 |
12 | ⭐⭐⭐⭐
13 |
14 | #finance/bank1:-2.7USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker+1@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 |
23 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-01.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 🙁
4 | bloodpressure: 184.4/118.8
5 | bloodpressure1: 184.4, 118.8
6 | bloodpressure2: [184.4, 118.8]
7 | bp:
8 | systolic: 184.4
9 | diastolic: 118.8
10 | clock-in: 10:45
11 | clock-out: 20:51
12 | sleep: 10:11 pm/7:5 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 27.4
20 | randchar: D
21 | ---
22 |
23 | #weight:74.1kg
24 |
25 | #exercise-pushup:31
26 | #exercise-plank:109sec
27 |
28 |
29 |
30 |
31 |
32 | #finance/bank1:-3.5USD
33 |
34 | [[todo_family|To-Do @Family]]
35 | [[todo_work|To-Do @Work]]
36 |
37 | obsidian-tracker+1@gmail.com
38 |
39 | weightlifting: 18
40 |
41 | dataviewTarget:: 48
42 | - Make Progress:: 29
43 | - Make-Progress:: 88
44 | dataviewTarget1:: 48/29
45 | dataviewTarget2:: 29 @ 88
46 | dataviewTarget3:: 29, 88
47 |
48 | clock-in:: 10:45:29
49 | clock-out:: 20:51:29
50 |
51 | sleep:: 10:11 pm/7:5 am
52 |
53 | #sin:0.00000/0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452
54 |
55 | #sinsquare:0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907
56 |
57 | - [x] Say I love you
58 |
59 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-02-Saturday.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 5
4 | ---
5 |
6 | #weight:69.4kg
7 |
8 | #exercise-pushup:30
9 | #exercise-plank:93sec
10 |
11 |
12 | ⭐⭐
13 |
14 | #finance/bank1:-3.1USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 14
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-02.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 🙁
4 | bloodpressure: 180.8/120.6
5 | bloodpressure1: 180.8, 120.6
6 | bloodpressure2: [180.8, 120.6]
7 | bp:
8 | systolic: 180.8
9 | diastolic: 120.6
10 | clock-in: 8:7
11 | clock-out: 20:10
12 | sleep: 9:37 pm/7:57 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 13.3
20 | randchar: D
21 | ---
22 |
23 | #weight:76.2kg
24 |
25 | #exercise-pushup:46
26 | #exercise-plank:52sec
27 |
28 | #meditation
29 |
30 |
31 |
32 |
33 | #finance/bank1:-3.5USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 |
39 | weightlifting: 13
40 |
41 | dataviewTarget:: 25
42 | - Make Progress:: 5
43 | - Make-Progress:: 72
44 | dataviewTarget1:: 25/5
45 | dataviewTarget2:: 5 @ 72
46 | dataviewTarget3:: 5, 72
47 |
48 | clock-in:: 8:7:5
49 | clock-out:: 20:10:5
50 |
51 | sleep:: 9:37 pm/7:57 am
52 |
53 | #sin:0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106
54 |
55 | #sinsquare:0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451
56 |
57 | - [x] Say I love you
58 |
59 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-03-Sunday.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 5
4 | ---
5 |
6 | #weight:69.3kg
7 |
8 | #exercise-pushup:39
9 | #exercise-plank:98sec
10 |
11 |
12 | ⭐
13 |
14 | #finance/bank1:-2.2USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker@gmail.com
20 | obsidian-tracker+1@gmail.com
21 |
22 | weightlifting: 14
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-03.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 🙁
4 | bloodpressure: 180.2/118.4
5 | bloodpressure1: 180.2, 118.4
6 | bloodpressure2: [180.2, 118.4]
7 | bp:
8 | systolic: 180.2
9 | diastolic: 118.4
10 | clock-in: 10:49
11 | clock-out: 16:33
12 | sleep: 9:17 pm/6:48 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 73.0
20 | randchar: D
21 | ---
22 |
23 | #weight:63.2kg
24 |
25 | #exercise-pushup:49
26 | #exercise-plank:79sec
27 |
28 | #meditation
29 |
30 | ⭐
31 |
32 |
33 | #finance/bank1:-2.4USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker@yahoo.com
39 |
40 |
41 | dataviewTarget:: 12
42 | - Make Progress:: 14
43 | - Make-Progress:: 82
44 | dataviewTarget1:: 12/14
45 | dataviewTarget2:: 14 @ 82
46 | dataviewTarget3:: 14, 82
47 |
48 | clock-in:: 10:49:14
49 | clock-out:: 16:33:14
50 |
51 | sleep:: 9:17 pm/6:48 am
52 |
53 | #sin:0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603
54 |
55 | #sinsquare:0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000
56 |
57 | - [ ] Say I love you
58 |
59 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-04-Monday.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 7
4 | ---
5 |
6 | #weight:70.6kg
7 |
8 | #exercise-pushup:41
9 | #exercise-plank:87sec
10 |
11 |
12 | ⭐
13 |
14 | #finance/bank1:-3.3USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker+1@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 11
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-04.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 🙂
4 | bloodpressure: 176.6/121.2
5 | bloodpressure1: 176.6, 121.2
6 | bloodpressure2: [176.6, 121.2]
7 | bp:
8 | systolic: 176.6
9 | diastolic: 121.2
10 | clock-in: 10:41
11 | clock-out: 20:52
12 | sleep: 10:10 pm/6:37 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 88.6
20 | randchar: B
21 | ---
22 |
23 | #weight:61.6kg
24 |
25 | #exercise-pushup:33
26 | #exercise-plank:114sec
27 |
28 | #meditation
29 |
30 | ⭐
31 |
32 | #clean-up
33 |
34 | #finance/bank1:-3.8USD
35 |
36 | [[todo_family|To-Do @Family]]
37 | [[todo_work|To-Do @Work]]
38 |
39 | obsidian-tracker@gmail.com
40 | obsidian-tracker+1@gmail.com
41 | obsidian-tracker@yahoo.com
42 |
43 | weightlifting: 18
44 |
45 | dataviewTarget:: 43
46 | - Make Progress:: 29
47 | - Make-Progress:: 74
48 | dataviewTarget1:: 43/29
49 | dataviewTarget2:: 29 @ 74
50 | dataviewTarget3:: 29, 74
51 |
52 | clock-in:: 10:41:29
53 | clock-out:: 20:52:29
54 |
55 | sleep:: 10:10 pm/6:37 am
56 |
57 | #sin:0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314
58 |
59 | #sinsquare:0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226
60 |
61 | - [x] Say I love you
62 |
63 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-05-Tuesday.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 8
4 | ---
5 |
6 | #weight:60.2kg
7 |
8 | #exercise-pushup:50
9 | #exercise-plank:55sec
10 |
11 | #meditation
12 |
13 | ⭐⭐⭐
14 |
15 | #finance/bank1:-2.2USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 20
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-05.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😀
4 | bloodpressure: 180/118
5 | bloodpressure1: 180, 118
6 | bloodpressure2: [180, 118]
7 | bp:
8 | systolic: 180
9 | diastolic: 118
10 | clock-in: 9:1
11 | clock-out: 18:57
12 | sleep: 9:9 pm/5:57 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 13.1
20 | randchar: A
21 | ---
22 |
23 | #weight:72.5kg
24 |
25 | #exercise-pushup:5
26 | #exercise-plank:57sec
27 |
28 | #meditation
29 |
30 | ⭐
31 |
32 |
33 | #finance/bank1:-3.9USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker@gmail.com
39 | obsidian-tracker+1@gmail.com
40 |
41 | weightlifting: 17
42 |
43 | dataviewTarget:: 86
44 | - Make Progress:: 24
45 | - Make-Progress:: 90
46 | dataviewTarget1:: 86/24
47 | dataviewTarget2:: 24 @ 90
48 | dataviewTarget3:: 24, 90
49 |
50 | clock-in:: 9:1:24
51 | clock-out:: 18:57:24
52 |
53 | sleep:: 9:9 pm/5:57 am
54 |
55 | #sin:0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314/0.58779
56 |
57 | #sinsquare:0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549
58 |
59 | - [x] Say I love you
60 |
61 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-06.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 🙁
4 | bloodpressure: 171.4/118.8
5 | bloodpressure1: 171.4, 118.8
6 | bloodpressure2: [171.4, 118.8]
7 | bp:
8 | systolic: 171.4
9 | diastolic: 118.8
10 | clock-in: 10:27
11 | clock-out: 19:26
12 | sleep: 10:30 pm/5:29 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 20.7
20 | randchar: D
21 | ---
22 |
23 | #weight:60.1kg
24 |
25 | #exercise-pushup:46
26 | #exercise-plank:110sec
27 |
28 | #meditation
29 |
30 | ⭐⭐⭐
31 |
32 | #clean-up
33 |
34 | #finance/bank1:-2.4USD
35 |
36 | [[todo_family|To-Do @Family]]
37 | [[todo_work|To-Do @Work]]
38 |
39 | obsidian-tracker+1@gmail.com
40 |
41 | weightlifting: 19
42 |
43 | dataviewTarget:: 98
44 | - Make Progress:: 46
45 | - Make-Progress:: 75
46 | dataviewTarget1:: 98/46
47 | dataviewTarget2:: 46 @ 75
48 | dataviewTarget3:: 46, 75
49 |
50 | clock-in:: 10:27:46
51 | clock-out:: 19:26:46
52 |
53 | sleep:: 10:30 pm/5:29 am
54 |
55 | #sin:0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314/0.58779/0.40674
56 |
57 | #sinsquare:0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549/0.16543
58 |
59 | - [x] Say I love you
60 |
61 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-07.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😀
4 | bloodpressure: 175.8/120.6
5 | bloodpressure1: 175.8, 120.6
6 | bloodpressure2: [175.8, 120.6]
7 | bp:
8 | systolic: 175.8
9 | diastolic: 120.6
10 | clock-in: 9:53
11 | clock-out: 17:39
12 | sleep: 10:53 pm/7:13 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 47.8
20 | randchar: A
21 | ---
22 |
23 | #weight:70.2kg
24 |
25 | #exercise-pushup:33
26 | #exercise-plank:103sec
27 |
28 |
29 | ⭐
30 |
31 |
32 | #finance/bank1:-2.6USD
33 |
34 | [[todo_family|To-Do @Family]]
35 | [[todo_work|To-Do @Work]]
36 |
37 | obsidian-tracker@gmail.com
38 | obsidian-tracker@yahoo.com
39 |
40 | weightlifting: 10
41 |
42 | dataviewTarget:: 43
43 | - Make Progress:: 6
44 | - Make-Progress:: 77
45 | dataviewTarget1:: 43/6
46 | dataviewTarget2:: 6 @ 77
47 | dataviewTarget3:: 6, 77
48 |
49 | clock-in:: 9:53:6
50 | clock-out:: 17:39:6
51 |
52 | sleep:: 10:53 pm/7:13 am
53 |
54 | #sin:0.95106/0.99452/0.99452/0.95106/0.86603/0.74314/0.58779/0.40674/0.20791
55 |
56 | #sinsquare:0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549/0.16543/0.04323
57 |
58 | - [x] Say I love you
59 |
60 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-08.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😀
4 | bloodpressure: 172.2/116.4
5 | bloodpressure1: 172.2, 116.4
6 | bloodpressure2: [172.2, 116.4]
7 | bp:
8 | systolic: 172.2
9 | diastolic: 116.4
10 | clock-in: 8:5
11 | clock-out: 16:5
12 | sleep: 9:1 pm/6:56 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 68.6
20 | randchar: A
21 | ---
22 |
23 | #weight:74.0kg
24 |
25 | #exercise-pushup:33
26 | #exercise-plank:77sec
27 |
28 |
29 | ⭐
30 |
31 |
32 | #finance/bank1:-2.9USD
33 |
34 | [[todo_family|To-Do @Family]]
35 | [[todo_work|To-Do @Work]]
36 |
37 | obsidian-tracker@gmail.com
38 | obsidian-tracker@yahoo.com
39 |
40 | weightlifting: 19
41 |
42 | dataviewTarget:: 39
43 | - Make Progress:: 25
44 | - Make-Progress:: 77
45 | dataviewTarget1:: 39/25
46 | dataviewTarget2:: 25 @ 77
47 | dataviewTarget3:: 25, 77
48 |
49 | clock-in:: 8:5:25
50 | clock-out:: 16:5:25
51 |
52 | sleep:: 9:1 pm/6:56 am
53 |
54 | #sin:0.99452/0.99452/0.95106/0.86603/0.74314/0.58779/0.40674/0.20791/0.00000
55 |
56 | #sinsquare:0.98907/0.98907/0.90451/0.75000/0.55226/0.34549/0.16543/0.04323/0.00000
57 |
58 | - [ ] Say I love you
59 |
60 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-09.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 😀
4 | bloodpressure: 175.6/118.2
5 | bloodpressure1: 175.6, 118.2
6 | bloodpressure2: [175.6, 118.2]
7 | bp:
8 | systolic: 175.6
9 | diastolic: 118.2
10 | clock-in: 8:37
11 | clock-out: 17:9
12 | sleep: 9:23 pm/5:51 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 68.6
20 | randchar: A
21 | ---
22 |
23 | #weight:68.8kg
24 |
25 | #exercise-pushup:35
26 | #exercise-plank:112sec
27 |
28 | #meditation
29 |
30 | ⭐⭐⭐
31 |
32 |
33 | #finance/bank1:-3.8USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker@gmail.com
39 | obsidian-tracker+1@gmail.com
40 | obsidian-tracker@yahoo.com
41 |
42 | weightlifting: 10
43 |
44 | dataviewTarget:: 37
45 | - Make Progress:: 36
46 | - Make-Progress:: 53
47 | dataviewTarget1:: 37/36
48 | dataviewTarget2:: 36 @ 53
49 | dataviewTarget3:: 36, 53
50 |
51 | clock-in:: 8:37:36
52 | clock-out:: 17:9:36
53 |
54 | sleep:: 9:23 pm/5:51 am
55 |
56 | #sin:0.99452/0.95106/0.86603/0.74314/0.58779/0.40674/0.20791/0.00000/-0.20791
57 |
58 | #sinsquare:0.98907/0.90451/0.75000/0.55226/0.34549/0.16543/0.04323/0.00000/0.04323
59 |
60 | - [x] Say I love you
61 |
62 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-10.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 🙂
4 | bloodpressure: 179/116
5 | bloodpressure1: 179, 116
6 | bloodpressure2: [179, 116]
7 | bp:
8 | systolic: 179
9 | diastolic: 116
10 | clock-in: 10:25
11 | clock-out: 17:55
12 | sleep: 10:11 pm/5:31 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 17.7
20 | randchar: B
21 | ---
22 |
23 | #weight:62.1kg
24 |
25 | #exercise-pushup:41
26 | #exercise-plank:92sec
27 |
28 |
29 | ⭐⭐⭐
30 |
31 |
32 | #finance/bank1:-2.2USD
33 |
34 | [[todo_family|To-Do @Family]]
35 | [[todo_work|To-Do @Work]]
36 |
37 | obsidian-tracker@gmail.com
38 | obsidian-tracker@yahoo.com
39 |
40 |
41 | dataviewTarget:: 4
42 | - Make Progress:: 10
43 | - Make-Progress:: 92
44 | dataviewTarget1:: 4/10
45 | dataviewTarget2:: 10 @ 92
46 | dataviewTarget3:: 10, 92
47 |
48 | clock-in:: 10:25:10
49 | clock-out:: 17:55:10
50 |
51 | sleep:: 10:11 pm/5:31 am
52 |
53 | #sin:0.95106/0.86603/0.74314/0.58779/0.40674/0.20791/0.00000/-0.20791/-0.40674
54 |
55 | #sinsquare:0.90451/0.75000/0.55226/0.34549/0.16543/0.04323/0.00000/0.04323/0.16543
56 |
57 | - [ ] Say I love you
58 |
59 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-11.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😐
4 | bloodpressure: 173.4/117.8
5 | bloodpressure1: 173.4, 117.8
6 | bloodpressure2: [173.4, 117.8]
7 | bp:
8 | systolic: 173.4
9 | diastolic: 117.8
10 | clock-in: 9:42
11 | clock-out: 20:35
12 | sleep: 11:47 pm/6:8 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 26.2
20 | randchar: C
21 | ---
22 |
23 | #weight:80.8kg
24 |
25 | #exercise-pushup:48
26 | #exercise-plank:46sec
27 |
28 |
29 | ⭐⭐⭐⭐
30 |
31 |
32 | #finance/bank1:-2.5USD
33 |
34 | [[todo_family|To-Do @Family]]
35 | [[todo_work|To-Do @Work]]
36 |
37 | obsidian-tracker@yahoo.com
38 |
39 |
40 | dataviewTarget:: 97
41 | - Make Progress:: 19
42 | - Make-Progress:: 82
43 | dataviewTarget1:: 97/19
44 | dataviewTarget2:: 19 @ 82
45 | dataviewTarget3:: 19, 82
46 |
47 | clock-in:: 9:42:19
48 | clock-out:: 20:35:19
49 |
50 | sleep:: 11:47 pm/6:8 am
51 |
52 | #sin:0.86603/0.74314/0.58779/0.40674/0.20791/0.00000/-0.20791/-0.40674/-0.58779
53 |
54 | #sinsquare:0.75000/0.55226/0.34549/0.16543/0.04323/0.00000/0.04323/0.16543/0.34549
55 |
56 | - [x] Say I love you
57 |
58 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-12.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😀
4 | bloodpressure: 176.8/118.6
5 | bloodpressure1: 176.8, 118.6
6 | bloodpressure2: [176.8, 118.6]
7 | bp:
8 | systolic: 176.8
9 | diastolic: 118.6
10 | clock-in: 8:54
11 | clock-out: 16:19
12 | sleep: 11:23 pm/6:15 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 45.0
20 | randchar: A
21 | ---
22 |
23 | #weight:61.7kg
24 |
25 | #exercise-pushup:32
26 | #exercise-plank:31sec
27 |
28 | #meditation
29 |
30 | ⭐⭐⭐
31 |
32 |
33 | #finance/bank1:-2.7USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker@gmail.com
39 |
40 | weightlifting: 10
41 |
42 | dataviewTarget:: 79
43 | - Make Progress:: 36
44 | - Make-Progress:: 66
45 | dataviewTarget1:: 79/36
46 | dataviewTarget2:: 36 @ 66
47 | dataviewTarget3:: 36, 66
48 |
49 | clock-in:: 8:54:36
50 | clock-out:: 16:19:36
51 |
52 | sleep:: 11:23 pm/6:15 am
53 |
54 | #sin:0.74314/0.58779/0.40674/0.20791/0.00000/-0.20791/-0.40674/-0.58779/-0.74314
55 |
56 | #sinsquare:0.55226/0.34549/0.16543/0.04323/0.00000/0.04323/0.16543/0.34549/0.55226
57 |
58 | - [x] Say I love you
59 |
60 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-13.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😞
4 | bloodpressure: 168.2/116.4
5 | bloodpressure1: 168.2, 116.4
6 | bloodpressure2: [168.2, 116.4]
7 | bp:
8 | systolic: 168.2
9 | diastolic: 116.4
10 | clock-in: 8:1
11 | clock-out: 17:0
12 | sleep: 9:2 pm/6:37 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 64.5
20 | randchar: E
21 | ---
22 |
23 | #weight:71.7kg
24 |
25 | #exercise-pushup:44
26 | #exercise-plank:45sec
27 |
28 | #meditation
29 |
30 |
31 |
32 |
33 | #finance/bank1:-3.4USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 |
39 |
40 | dataviewTarget:: 87
41 | - Make Progress:: 46
42 | - Make-Progress:: 73
43 | dataviewTarget1:: 87/46
44 | dataviewTarget2:: 46 @ 73
45 | dataviewTarget3:: 46, 73
46 |
47 | clock-in:: 8:1:46
48 | clock-out:: 17:0:46
49 |
50 | sleep:: 9:2 pm/6:37 am
51 |
52 | #sin:0.58779/0.40674/0.20791/0.00000/-0.20791/-0.40674/-0.58779/-0.74314/-0.86603
53 |
54 | #sinsquare:0.34549/0.16543/0.04323/0.00000/0.04323/0.16543/0.34549/0.55226/0.75000
55 |
56 | - [x] Say I love you
57 |
58 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-14.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😐
4 | bloodpressure: 175.6/117.2
5 | bloodpressure1: 175.6, 117.2
6 | bloodpressure2: [175.6, 117.2]
7 | bp:
8 | systolic: 175.6
9 | diastolic: 117.2
10 | clock-in: 8:53
11 | clock-out: 17:19
12 | sleep: 9:40 pm/7:25 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 61.5
20 | randchar: C
21 | ---
22 |
23 | #weight:77.1kg
24 |
25 | #exercise-pushup:37
26 | #exercise-plank:89sec
27 |
28 | #meditation
29 |
30 | ⭐
31 |
32 | #clean-up
33 |
34 | #finance/bank1:-2.5USD
35 |
36 | [[todo_family|To-Do @Family]]
37 | [[todo_work|To-Do @Work]]
38 |
39 | obsidian-tracker@gmail.com
40 |
41 | weightlifting: 15
42 |
43 | dataviewTarget:: 43
44 | - Make Progress:: 5
45 | - Make-Progress:: 92
46 | dataviewTarget1:: 43/5
47 | dataviewTarget2:: 5 @ 92
48 | dataviewTarget3:: 5, 92
49 |
50 | clock-in:: 8:53:5
51 | clock-out:: 17:19:5
52 |
53 | sleep:: 9:40 pm/7:25 am
54 |
55 | #sin:0.40674/0.20791/0.00000/-0.20791/-0.40674/-0.58779/-0.74314/-0.86603/-0.95106
56 |
57 | #sinsquare:0.16543/0.04323/0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451
58 |
59 | - [x] Say I love you
60 |
61 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-15.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😀
4 | bloodpressure: 176/115
5 | bloodpressure1: 176, 115
6 | bloodpressure2: [176, 115]
7 | bp:
8 | systolic: 176
9 | diastolic: 115
10 | clock-in: 9:20
11 | clock-out: 18:40
12 | sleep: 11:14 pm/6:44 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 44.0
20 | randchar: A
21 | ---
22 |
23 | #weight:69.6kg
24 |
25 | #exercise-pushup:40
26 | #exercise-plank:100sec
27 |
28 | #meditation
29 |
30 |
31 |
32 |
33 | #finance/bank1:-2.5USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker@yahoo.com
39 |
40 | weightlifting: 14
41 |
42 | dataviewTarget:: 60
43 | - Make Progress:: 7
44 | - Make-Progress:: 81
45 | dataviewTarget1:: 60/7
46 | dataviewTarget2:: 7 @ 81
47 | dataviewTarget3:: 7, 81
48 |
49 | clock-in:: 9:20:7
50 | clock-out:: 18:40:7
51 |
52 | sleep:: 11:14 pm/6:44 am
53 |
54 | #sin:0.20791/0.00000/-0.20791/-0.40674/-0.58779/-0.74314/-0.86603/-0.95106/-0.99452
55 |
56 | #sinsquare:0.04323/0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907
57 |
58 | - [ ] Say I love you
59 |
60 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-16.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 😞
4 | bloodpressure: 168.4/114.8
5 | bloodpressure1: 168.4, 114.8
6 | bloodpressure2: [168.4, 114.8]
7 | bp:
8 | systolic: 168.4
9 | diastolic: 114.8
10 | clock-in: 9:54
11 | clock-out: 18:3
12 | sleep: 11:24 pm/6:40 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 81.6
20 | randchar: E
21 | ---
22 |
23 | #weight:70.0kg
24 |
25 | #exercise-pushup:38
26 | #exercise-plank:113sec
27 |
28 |
29 | ⭐⭐
30 |
31 | #clean-up
32 |
33 | #finance/bank1:-2.6USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker+1@gmail.com
39 |
40 |
41 | dataviewTarget:: 17
42 | - Make Progress:: 21
43 | - Make-Progress:: 93
44 | dataviewTarget1:: 17/21
45 | dataviewTarget2:: 21 @ 93
46 | dataviewTarget3:: 21, 93
47 |
48 | clock-in:: 9:54:21
49 | clock-out:: 18:3:21
50 |
51 | sleep:: 11:24 pm/6:40 am
52 |
53 | #sin:0.00000/-0.20791/-0.40674/-0.58779/-0.74314/-0.86603/-0.95106/-0.99452/-0.99452
54 |
55 | #sinsquare:0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907
56 |
57 | - [ ] Say I love you
58 |
59 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-17.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 🙂
4 | bloodpressure: 165.8/114.6
5 | bloodpressure1: 165.8, 114.6
6 | bloodpressure2: [165.8, 114.6]
7 | bp:
8 | systolic: 165.8
9 | diastolic: 114.6
10 | clock-in: 8:3
11 | clock-out: 16:23
12 | sleep: 10:42 pm/6:30 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 43.0
20 | randchar: B
21 | ---
22 |
23 | #weight:64.6kg
24 |
25 | #exercise-pushup:48
26 | #exercise-plank:93sec
27 |
28 |
29 | ⭐⭐⭐⭐
30 |
31 |
32 | #finance/bank1:-3.6USD
33 |
34 | [[todo_family|To-Do @Family]]
35 | [[todo_work|To-Do @Work]]
36 |
37 | obsidian-tracker@gmail.com
38 | obsidian-tracker@yahoo.com
39 |
40 | weightlifting: 17
41 |
42 | dataviewTarget:: 46
43 | - Make Progress:: 38
44 | - Make-Progress:: 82
45 | dataviewTarget1:: 46/38
46 | dataviewTarget2:: 38 @ 82
47 | dataviewTarget3:: 38, 82
48 |
49 | clock-in:: 8:3:38
50 | clock-out:: 16:23:38
51 |
52 | sleep:: 10:42 pm/6:30 am
53 |
54 | #sin:-0.20791/-0.40674/-0.58779/-0.74314/-0.86603/-0.95106/-0.99452/-0.99452/-0.95106
55 |
56 | #sinsquare:0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451
57 |
58 | - [ ] Say I love you
59 |
60 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-18.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😀
4 | bloodpressure: 167.2/118.4
5 | bloodpressure1: 167.2, 118.4
6 | bloodpressure2: [167.2, 118.4]
7 | bp:
8 | systolic: 167.2
9 | diastolic: 118.4
10 | clock-in: 8:48
11 | clock-out: 19:49
12 | sleep: 9:10 pm/7:51 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 19.5
20 | randchar: A
21 | ---
22 |
23 | #weight:78.7kg
24 |
25 | #exercise-pushup:42
26 | #exercise-plank:77sec
27 |
28 | #meditation
29 |
30 | ⭐
31 |
32 |
33 | #finance/bank1:-3.3USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker@gmail.com
39 |
40 | weightlifting: 20
41 |
42 | dataviewTarget:: 28
43 | - Make Progress:: 40
44 | - Make-Progress:: 81
45 | dataviewTarget1:: 28/40
46 | dataviewTarget2:: 40 @ 81
47 | dataviewTarget3:: 40, 81
48 |
49 | clock-in:: 8:48:40
50 | clock-out:: 19:49:40
51 |
52 | sleep:: 9:10 pm/7:51 am
53 |
54 | #sin:-0.40674/-0.58779/-0.74314/-0.86603/-0.95106/-0.99452/-0.99452/-0.95106/-0.86603
55 |
56 | #sinsquare:0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000
57 |
58 | - [ ] Say I love you
59 |
60 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-19.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😐
4 | bloodpressure: 165.6/117.2
5 | bloodpressure1: 165.6, 117.2
6 | bloodpressure2: [165.6, 117.2]
7 | bp:
8 | systolic: 165.6
9 | diastolic: 117.2
10 | clock-in: 8:30
11 | clock-out: 17:42
12 | sleep: 9:34 pm/7:2 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 29.5
20 | randchar: C
21 | ---
22 |
23 | #weight:69.3kg
24 |
25 | #exercise-pushup:47
26 | #exercise-plank:69sec
27 |
28 | #meditation
29 |
30 | ⭐⭐
31 |
32 |
33 | #finance/bank1:-3.5USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker@gmail.com
39 |
40 | weightlifting: 16
41 |
42 | dataviewTarget:: 73
43 | - Make Progress:: 8
44 | - Make-Progress:: 59
45 | dataviewTarget1:: 73/8
46 | dataviewTarget2:: 8 @ 59
47 | dataviewTarget3:: 8, 59
48 |
49 | clock-in:: 8:30:8
50 | clock-out:: 17:42:8
51 |
52 | sleep:: 9:34 pm/7:2 am
53 |
54 | #sin:-0.58779/-0.74314/-0.86603/-0.95106/-0.99452/-0.99452/-0.95106/-0.86603/-0.74314
55 |
56 | #sinsquare:0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226
57 |
58 | - [ ] Say I love you
59 |
60 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-20.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 🙂
4 | bloodpressure: 163/117
5 | bloodpressure1: 163, 117
6 | bloodpressure2: [163, 117]
7 | bp:
8 | systolic: 163
9 | diastolic: 117
10 | clock-in: 9:30
11 | clock-out: 20:13
12 | sleep: 9:28 pm/7:58 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 56.2
20 | randchar: B
21 | ---
22 |
23 | #weight:80.7kg
24 |
25 | #exercise-pushup:33
26 | #exercise-plank:90sec
27 |
28 |
29 | ⭐⭐⭐
30 |
31 |
32 | #finance/bank1:-3.2USD
33 |
34 | [[todo_family|To-Do @Family]]
35 | [[todo_work|To-Do @Work]]
36 |
37 |
38 | weightlifting: 19
39 |
40 | dataviewTarget:: 64
41 | - Make Progress:: 0
42 | - Make-Progress:: 54
43 | dataviewTarget1:: 64/0
44 | dataviewTarget2:: 0 @ 54
45 | dataviewTarget3:: 0, 54
46 |
47 | clock-in:: 9:30:0
48 | clock-out:: 20:13:0
49 |
50 | sleep:: 9:28 pm/7:58 am
51 |
52 | #sin:-0.74314/-0.86603/-0.95106/-0.99452/-0.99452/-0.95106/-0.86603/-0.74314/-0.58779
53 |
54 | #sinsquare:0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549
55 |
56 | - [x] Say I love you
57 |
58 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-21.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 🙂
4 | bloodpressure: 170.4/113.8
5 | bloodpressure1: 170.4, 113.8
6 | bloodpressure2: [170.4, 113.8]
7 | bp:
8 | systolic: 170.4
9 | diastolic: 113.8
10 | clock-in: 9:4
11 | clock-out: 19:29
12 | sleep: 10:43 pm/6:37 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 11.1
20 | randchar: B
21 | sleptwell: false
22 | ---
23 |
24 | #weight:67.3kg
25 |
26 | #exercise-pushup:50
27 | #exercise-plank:94sec
28 |
29 | #meditation
30 |
31 | ⭐⭐⭐
32 |
33 |
34 | #finance/bank1:-2.8USD
35 |
36 | [[todo_family|To-Do @Family]]
37 | [[todo_work|To-Do @Work]]
38 |
39 | obsidian-tracker@gmail.com
40 |
41 | weightlifting: 19
42 |
43 | dataviewTarget:: 88
44 | - Make Progress:: 41
45 | - Make-Progress:: 75
46 | dataviewTarget1:: 88/41
47 | dataviewTarget2:: 41 @ 75
48 | dataviewTarget3:: 41, 75
49 |
50 | clock-in:: 9:4:41
51 | clock-out:: 19:29:41
52 |
53 | sleep:: 10:43 pm/6:37 am
54 |
55 | #sin:-0.86603/-0.95106/-0.99452/-0.99452/-0.95106/-0.86603/-0.74314/-0.58779/-0.40674
56 |
57 | #sinsquare:0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549/0.16543
58 |
59 | - [x] Say I love you
60 |
61 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-22.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😞
4 | bloodpressure: 165.8/116.6
5 | bloodpressure1: 165.8, 116.6
6 | bloodpressure2: [165.8, 116.6]
7 | bp:
8 | systolic: 165.8
9 | diastolic: 116.6
10 | clock-in: 9:32
11 | clock-out: 20:27
12 | sleep: 10:25 pm/5:12 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 83.3
20 | randchar: E
21 | sleptwell: true
22 | ---
23 |
24 | #weight:64.7kg
25 |
26 | #exercise-pushup:30
27 | #exercise-plank:100sec
28 |
29 |
30 | ⭐
31 |
32 |
33 | #finance/bank1:-3.3USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker@gmail.com
39 |
40 | weightlifting: 11
41 |
42 | dataviewTarget:: 36
43 | - Make Progress:: 0
44 | - Make-Progress:: 91
45 | dataviewTarget1:: 36/0
46 | dataviewTarget2:: 0 @ 91
47 | dataviewTarget3:: 0, 91
48 |
49 | clock-in:: 9:32:0
50 | clock-out:: 20:27:0
51 |
52 | sleep:: 10:25 pm/5:12 am
53 |
54 | #sin:-0.95106/-0.99452/-0.99452/-0.95106/-0.86603/-0.74314/-0.58779/-0.40674/-0.20791
55 |
56 | #sinsquare:0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549/0.16543/0.04323
57 |
58 | - [x] Say I love you
59 |
60 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-23.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 😀
4 | bloodpressure: 164.2/115.4
5 | bloodpressure1: 164.2, 115.4
6 | bloodpressure2: [164.2, 115.4]
7 | bp:
8 | systolic: 164.2
9 | diastolic: 115.4
10 | clock-in: 10:36
11 | clock-out: 19:31
12 | sleep: 10:9 pm/7:30 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 28.8
20 | randchar: A
21 | sleptwell: true
22 | ---
23 |
24 | #weight:67.3kg
25 |
26 | #exercise-pushup:47
27 | #exercise-plank:83sec
28 |
29 |
30 | ⭐⭐⭐⭐
31 |
32 |
33 | #finance/bank1:-2.7USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker@gmail.com
39 |
40 | weightlifting: 12
41 |
42 | dataviewTarget:: 45
43 | - Make Progress:: 27
44 | - Make-Progress:: 95
45 | dataviewTarget1:: 45/27
46 | dataviewTarget2:: 27 @ 95
47 | dataviewTarget3:: 27, 95
48 |
49 | clock-in:: 10:36:27
50 | clock-out:: 19:31:27
51 |
52 | sleep:: 10:9 pm/7:30 am
53 |
54 | #sin:-0.99452/-0.99452/-0.95106/-0.86603/-0.74314/-0.58779/-0.40674/-0.20791/-0.00000
55 |
56 | #sinsquare:0.98907/0.98907/0.90451/0.75000/0.55226/0.34549/0.16543/0.04323/0.00000
57 |
58 | - [ ] Say I love you
59 |
60 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-24.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 🙂
4 | bloodpressure: 170.6/113.2
5 | bloodpressure1: 170.6, 113.2
6 | bloodpressure2: [170.6, 113.2]
7 | bp:
8 | systolic: 170.6
9 | diastolic: 113.2
10 | clock-in: 8:1
11 | clock-out: 18:9
12 | sleep: 10:53 pm/5:33 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 39.4
20 | randchar: B
21 | sleptwell: true
22 | ---
23 |
24 | #weight:64.1kg
25 |
26 | #exercise-pushup:43
27 | #exercise-plank:44sec
28 |
29 | #meditation
30 |
31 | ⭐⭐⭐⭐
32 |
33 |
34 | #finance/bank1:-3.3USD
35 |
36 | [[todo_family|To-Do @Family]]
37 | [[todo_work|To-Do @Work]]
38 |
39 | obsidian-tracker@gmail.com
40 | obsidian-tracker@yahoo.com
41 |
42 | weightlifting: 10
43 |
44 | dataviewTarget:: 63
45 | - Make Progress:: 23
46 | - Make-Progress:: 60
47 | dataviewTarget1:: 63/23
48 | dataviewTarget2:: 23 @ 60
49 | dataviewTarget3:: 23, 60
50 |
51 | clock-in:: 8:1:23
52 | clock-out:: 18:9:23
53 |
54 | sleep:: 10:53 pm/5:33 am
55 |
56 | #sin:-0.99452/-0.95106/-0.86603/-0.74314/-0.58779/-0.40674/-0.20791/-0.00000/0.20791
57 |
58 | #sinsquare:0.98907/0.90451/0.75000/0.55226/0.34549/0.16543/0.04323/0.00000/0.04323
59 |
60 | - [ ] Say I love you
61 |
62 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-25.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😞
4 | bloodpressure: 167/114
5 | bloodpressure1: 167, 114
6 | bloodpressure2: [167, 114]
7 | bp:
8 | systolic: 167
9 | diastolic: 114
10 | clock-in: 9:52
11 | clock-out: 17:55
12 | sleep: 10:53 pm/6:3 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 81.4
20 | randchar: E
21 | sleptwell: false
22 | ---
23 |
24 | #weight:62.4kg
25 |
26 | #exercise-pushup:30
27 | #exercise-plank:110sec
28 |
29 |
30 |
31 |
32 |
33 | #finance/bank1:-3.6USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker+1@gmail.com
39 |
40 |
41 | dataviewTarget:: 88
42 | - Make Progress:: 12
43 | - Make-Progress:: 96
44 | dataviewTarget1:: 88/12
45 | dataviewTarget2:: 12 @ 96
46 | dataviewTarget3:: 12, 96
47 |
48 | clock-in:: 9:52:12
49 | clock-out:: 17:55:12
50 |
51 | sleep:: 10:53 pm/6:3 am
52 |
53 | #sin:-0.95106/-0.86603/-0.74314/-0.58779/-0.40674/-0.20791/-0.00000/0.20791/0.40674
54 |
55 | #sinsquare:0.90451/0.75000/0.55226/0.34549/0.16543/0.04323/0.00000/0.04323/0.16543
56 |
57 | - [ ] Say I love you
58 |
59 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-26.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 🙂
4 | bloodpressure: 162.4/114.8
5 | bloodpressure1: 162.4, 114.8
6 | bloodpressure2: [162.4, 114.8]
7 | bp:
8 | systolic: 162.4
9 | diastolic: 114.8
10 | clock-in: 10:24
11 | clock-out: 19:12
12 | sleep: 11:36 pm/6:2 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 73.1
20 | randchar: B
21 | ---
22 |
23 | #weight:72.7kg
24 |
25 | #exercise-pushup:42
26 | #exercise-plank:114sec
27 |
28 | #meditation
29 |
30 | ⭐
31 |
32 |
33 | #finance/bank1:-3.3USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker@yahoo.com
39 |
40 |
41 | dataviewTarget:: 42
42 | - Make Progress:: 19
43 | - Make-Progress:: 93
44 | dataviewTarget1:: 42/19
45 | dataviewTarget2:: 19 @ 93
46 | dataviewTarget3:: 19, 93
47 |
48 | clock-in:: 10:24:19
49 | clock-out:: 19:12:19
50 |
51 | sleep:: 11:36 pm/6:2 am
52 |
53 | #sin:-0.86603/-0.74314/-0.58779/-0.40674/-0.20791/-0.00000/0.20791/0.40674/0.58779
54 |
55 | #sinsquare:0.75000/0.55226/0.34549/0.16543/0.04323/0.00000/0.04323/0.16543/0.34549
56 |
57 | - [ ] Say I love you
58 |
59 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-27.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 🙂
4 | bloodpressure: 165.8/113.6
5 | bloodpressure1: 165.8, 113.6
6 | bloodpressure2: [165.8, 113.6]
7 | bp:
8 | systolic: 165.8
9 | diastolic: 113.6
10 | clock-in: 10:28
11 | clock-out: 18:4
12 | sleep: 11:34 pm/6:12 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 78.5
20 | randchar: B
21 | ---
22 |
23 | #weight:63.7kg
24 |
25 | #exercise-pushup:46
26 | #exercise-plank:40sec
27 |
28 | #meditation
29 |
30 | ⭐⭐⭐
31 |
32 |
33 | #finance/bank1:-2.2USD
34 |
35 | [[todo_family|To-Do @Family]]
36 | [[todo_work|To-Do @Work]]
37 |
38 | obsidian-tracker@yahoo.com
39 |
40 | weightlifting: 11
41 |
42 | dataviewTarget:: 59
43 | - Make Progress:: 31
44 | - Make-Progress:: 67
45 | dataviewTarget1:: 59/31
46 | dataviewTarget2:: 31 @ 67
47 | dataviewTarget3:: 31, 67
48 |
49 | clock-in:: 10:28:31
50 | clock-out:: 18:4:31
51 |
52 | sleep:: 11:34 pm/6:12 am
53 |
54 | #sin:-0.74314/-0.58779/-0.40674/-0.20791/-0.00000/0.20791/0.40674/0.58779/0.74314
55 |
56 | #sinsquare:0.55226/0.34549/0.16543/0.04323/0.00000/0.04323/0.16543/0.34549/0.55226
57 |
58 | - [ ] Say I love you
59 |
60 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-28.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 😀
4 | bloodpressure: 158.2/115.4
5 | bloodpressure1: 158.2, 115.4
6 | bloodpressure2: [158.2, 115.4]
7 | bp:
8 | systolic: 158.2
9 | diastolic: 115.4
10 | clock-in: 10:44
11 | clock-out: 16:41
12 | sleep: 10:27 pm/5:11 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 80.6
20 | randchar: A
21 | ---
22 |
23 | #weight:79.2kg
24 |
25 | #exercise-pushup:36
26 | #exercise-plank:90sec
27 |
28 |
29 |
30 |
31 |
32 | #finance/bank1:-3.9USD
33 |
34 | [[todo_family|To-Do @Family]]
35 | [[todo_work|To-Do @Work]]
36 |
37 | obsidian-tracker@gmail.com
38 | obsidian-tracker@yahoo.com
39 |
40 | weightlifting: 18
41 |
42 | dataviewTarget:: 36
43 | - Make Progress:: 33
44 | - Make-Progress:: 92
45 | dataviewTarget1:: 36/33
46 | dataviewTarget2:: 33 @ 92
47 | dataviewTarget3:: 33, 92
48 |
49 | clock-in:: 10:44:33
50 | clock-out:: 16:41:33
51 |
52 | sleep:: 10:27 pm/5:11 am
53 |
54 | #sin:-0.58779/-0.40674/-0.20791/-0.00000/0.20791/0.40674/0.58779/0.74314/0.86603
55 |
56 | #sinsquare:0.34549/0.16543/0.04323/0.00000/0.04323/0.16543/0.34549/0.55226/0.75000
57 |
58 | - [ ] Say I love you
59 |
60 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-29.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log, work_log2
3 | mood: 🙁
4 | bloodpressure: 163.6/112.2
5 | bloodpressure1: 163.6, 112.2
6 | bloodpressure2: [163.6, 112.2]
7 | bp:
8 | systolic: 163.6
9 | diastolic: 112.2
10 | clock-in: 8:19
11 | clock-out: 16:35
12 | sleep: 11:47 pm/6:39 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 18.6
20 | randchar: D
21 | ---
22 |
23 | #weight:63.5kg
24 |
25 | #exercise-pushup:42
26 | #exercise-plank:30sec
27 |
28 |
29 | ⭐
30 |
31 |
32 | #finance/bank1:-2.7USD
33 |
34 | [[todo_family|To-Do @Family]]
35 | [[todo_work|To-Do @Work]]
36 |
37 | obsidian-tracker@yahoo.com
38 |
39 | weightlifting: 15
40 |
41 | dataviewTarget:: 96
42 | - Make Progress:: 44
43 | - Make-Progress:: 90
44 | dataviewTarget1:: 96/44
45 | dataviewTarget2:: 44 @ 90
46 | dataviewTarget3:: 44, 90
47 |
48 | clock-in:: 8:19:44
49 | clock-out:: 16:35:44
50 |
51 | sleep:: 11:47 pm/6:39 am
52 |
53 | #sin:-0.40674/-0.20791/-0.00000/0.20791/0.40674/0.58779/0.74314/0.86603/0.95106
54 |
55 | #sinsquare:0.16543/0.04323/0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451
56 |
57 | - [x] Say I love you
58 |
59 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-30.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 😐
4 | bloodpressure: 159/114
5 | bloodpressure1: 159, 114
6 | bloodpressure2: [159, 114]
7 | bp:
8 | systolic: 159
9 | diastolic: 114
10 | clock-in: 10:24
11 | clock-out: 18:4
12 | sleep: 11:10 pm/5:46 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 17.9
20 | randchar: C
21 | ---
22 |
23 | #weight:63.3kg
24 |
25 | #exercise-pushup:30
26 | #exercise-plank:83sec
27 |
28 |
29 | ⭐⭐⭐
30 |
31 |
32 | #finance/bank1:-2.2USD
33 | #finance/bank2:200USD
34 | #finance/bank2/transfer:-100USD
35 | #finance/bank1/transfer:100USD
36 |
37 | [[todo_family|To-Do @Family]]
38 | [[todo_work|To-Do @Work]]
39 |
40 | obsidian-tracker@gmail.com
41 |
42 | weightlifting: 10
43 |
44 | dataviewTarget:: 44
45 | - Make Progress:: 48
46 | - Make-Progress:: 84
47 | dataviewTarget1:: 44/48
48 | dataviewTarget2:: 48 @ 84
49 | dataviewTarget3:: 48, 84
50 |
51 | clock-in:: 10:24:48
52 | clock-out:: 18:4:48
53 |
54 | sleep:: 11:10 pm/5:46 am
55 |
56 | #sin:-0.20791/-0.00000/0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452
57 |
58 | #sinsquare:0.04323/0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907
59 |
60 | - [ ] Say I love you
61 |
62 |
--------------------------------------------------------------------------------
/examples/diary/2021-01-31.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 🙂
4 | bloodpressure: 160.4/115.8
5 | bloodpressure1: 160.4, 115.8
6 | bloodpressure2: [160.4, 115.8]
7 | bp:
8 | systolic: 160.4
9 | diastolic: 115.8
10 | clock-in: 10:5
11 | clock-out: 17:3
12 | sleep: 9:14 pm/5:9 am
13 | deepValue:
14 | very:
15 | very:
16 | very:
17 | very:
18 | very:
19 | deep: 56.8
20 | randchar: B
21 | ---
22 |
23 | #weight:72.2kg
24 |
25 | #exercise-pushup:36
26 | #exercise-plank:119sec
27 |
28 |
29 | ⭐⭐⭐⭐⭐
30 |
31 |
32 | #finance/bank1:-2.8USD
33 |
34 | [[todo_family|To-Do @Family]]
35 | [[todo_work|To-Do @Work]]
36 |
37 | obsidian-tracker@gmail.com
38 |
39 | weightlifting: 17
40 |
41 | dataviewTarget:: 59
42 | - Make Progress:: 22
43 | - Make-Progress:: 55
44 | dataviewTarget1:: 59/22
45 | dataviewTarget2:: 22 @ 55
46 | dataviewTarget3:: 22, 55
47 |
48 | clock-in:: 10:5:22
49 | clock-out:: 17:3:22
50 |
51 | sleep:: 9:14 pm/5:9 am
52 |
53 | #sin:-0.00000/0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452
54 |
55 | #sinsquare:0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907
56 |
57 | - [ ] Say I love you
58 |
59 |
--------------------------------------------------------------------------------
/examples/diary/20210101-D.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 10
4 | bloodpressure: 177.4/121.8
5 | ---
6 |
7 | #weight:74.0kg
8 |
9 | #exercise-pushup:44
10 | #exercise-plank:37sec
11 |
12 |
13 | ⭐⭐⭐⭐⭐
14 |
15 | #finance/bank1:-3.4USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker+1@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.00000/0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452
26 |
27 | #sinsquare:0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/20210102-D.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 8
4 | bloodpressure: 174.8/121.6
5 | ---
6 |
7 | #weight:68.8kg
8 |
9 | #exercise-pushup:38
10 | #exercise-plank:112sec
11 |
12 |
13 | ⭐⭐⭐
14 |
15 | #finance/bank1:-2.7USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 16
24 |
25 | #sin:0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106
26 |
27 | #sinsquare:0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/20210103-D.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 7
4 | bloodpressure: 178.2/119.4
5 | ---
6 |
7 | #weight:74.9kg
8 |
9 | #exercise-pushup:32
10 | #exercise-plank:56sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-3.7USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 | obsidian-tracker+1@gmail.com
23 | obsidian-tracker@yahoo.com
24 |
25 | weightlifting: 16
26 |
27 | #sin:0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603
28 |
29 | #sinsquare:0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000
30 |
31 |
--------------------------------------------------------------------------------
/examples/diary/20210104-D.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 3
4 | bloodpressure: 178.6/119.2
5 | ---
6 |
7 | #weight:73.5kg
8 |
9 | #exercise-pushup:40
10 | #exercise-plank:74sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-2.5USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 |
22 | weightlifting: 19
23 |
24 | #sin:0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314
25 |
26 | #sinsquare:0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226
27 |
28 |
--------------------------------------------------------------------------------
/examples/diary/20210105-D.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 1
4 | bloodpressure: 177/119
5 | ---
6 |
7 | #weight:70.0kg
8 |
9 | #exercise-pushup:5
10 | #exercise-plank:34sec
11 |
12 | #meditation
13 |
14 | ⭐⭐
15 |
16 | #finance/bank1:-2.6USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314/0.58779
26 |
27 | #sinsquare:0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/2023-06-05.md:
--------------------------------------------------------------------------------
1 | Physical:: 😐
--------------------------------------------------------------------------------
/examples/diary/2023-06-06.md:
--------------------------------------------------------------------------------
1 | Physical:: 😐
--------------------------------------------------------------------------------
/examples/diary/2023-06-07.md:
--------------------------------------------------------------------------------
1 | Physical:: 😀
--------------------------------------------------------------------------------
/examples/diary/2023-06-08.md:
--------------------------------------------------------------------------------
1 | Physical:: 😞
--------------------------------------------------------------------------------
/examples/diary/3-20210103.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 5
4 | ---
5 |
6 | #weight:69.3kg
7 |
8 | #exercise-pushup:39
9 | #exercise-plank:98sec
10 |
11 |
12 | ⭐
13 |
14 | #finance/bank1:-2.2USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker@gmail.com
20 | obsidian-tracker+1@gmail.com
21 |
22 | weightlifting: 14
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/4-20210104.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 7
4 | ---
5 |
6 | #weight:70.6kg
7 |
8 | #exercise-pushup:41
9 | #exercise-plank:87sec
10 |
11 |
12 | ⭐
13 |
14 | #finance/bank1:-3.3USD
15 |
16 | [[todo_family|To-Do @Family]]
17 | [[todo_work|To-Do @Work]]
18 |
19 | obsidian-tracker+1@gmail.com
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 11
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/5-20210105.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 8
4 | ---
5 |
6 | #weight:60.2kg
7 |
8 | #exercise-pushup:50
9 | #exercise-plank:55sec
10 |
11 | #meditation
12 |
13 | ⭐⭐⭐
14 |
15 | #finance/bank1:-2.2USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker@yahoo.com
21 |
22 | weightlifting: 20
23 |
24 |
--------------------------------------------------------------------------------
/examples/diary/D-20210101.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 10
4 | bloodpressure: 177.4/121.8
5 | ---
6 |
7 | #weight:74.0kg
8 |
9 | #exercise-pushup:44
10 | #exercise-plank:37sec
11 |
12 |
13 | ⭐⭐⭐⭐⭐
14 |
15 | #finance/bank1:-3.4USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker+1@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.00000/0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452
26 |
27 | #sinsquare:0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/D-20210102.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 8
4 | bloodpressure: 174.8/121.6
5 | ---
6 |
7 | #weight:68.8kg
8 |
9 | #exercise-pushup:38
10 | #exercise-plank:112sec
11 |
12 |
13 | ⭐⭐⭐
14 |
15 | #finance/bank1:-2.7USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 16
24 |
25 | #sin:0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106
26 |
27 | #sinsquare:0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/D-20210103.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 7
4 | bloodpressure: 178.2/119.4
5 | ---
6 |
7 | #weight:74.9kg
8 |
9 | #exercise-pushup:32
10 | #exercise-plank:56sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-3.7USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 | obsidian-tracker+1@gmail.com
23 | obsidian-tracker@yahoo.com
24 |
25 | weightlifting: 16
26 |
27 | #sin:0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603
28 |
29 | #sinsquare:0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000
30 |
31 |
--------------------------------------------------------------------------------
/examples/diary/D-20210104.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 3
4 | bloodpressure: 178.6/119.2
5 | ---
6 |
7 | #weight:73.5kg
8 |
9 | #exercise-pushup:40
10 | #exercise-plank:74sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-2.5USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 |
22 | weightlifting: 19
23 |
24 | #sin:0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314
25 |
26 | #sinsquare:0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226
27 |
28 |
--------------------------------------------------------------------------------
/examples/diary/D-20210105.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 1
4 | bloodpressure: 177/119
5 | ---
6 |
7 | #weight:70.0kg
8 |
9 | #exercise-pushup:5
10 | #exercise-plank:34sec
11 |
12 | #meditation
13 |
14 | ⭐⭐
15 |
16 | #finance/bank1:-2.6USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314/0.58779
26 |
27 | #sinsquare:0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Jeffrey-20210101-Diary.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 10
4 | bloodpressure: 177.4/121.8
5 | ---
6 |
7 | #weight:74.0kg
8 |
9 | #exercise-pushup:44
10 | #exercise-plank:37sec
11 |
12 |
13 | ⭐⭐⭐⭐⭐
14 |
15 | #finance/bank1:-3.4USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker+1@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.00000/0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452
26 |
27 | #sinsquare:0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Jeffrey-20210101-Journal.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 10
4 | bloodpressure: 177.4/121.8
5 | ---
6 |
7 | #weight:74.0kg
8 |
9 | #exercise-pushup:44
10 | #exercise-plank:37sec
11 |
12 |
13 | ⭐⭐⭐⭐⭐
14 |
15 | #finance/bank1:-3.4USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker+1@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.00000/0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452
26 |
27 | #sinsquare:0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Jeffrey-20210102-Diary.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 8
4 | bloodpressure: 174.8/121.6
5 | ---
6 |
7 | #weight:68.8kg
8 |
9 | #exercise-pushup:38
10 | #exercise-plank:112sec
11 |
12 |
13 | ⭐⭐⭐
14 |
15 | #finance/bank1:-2.7USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 16
24 |
25 | #sin:0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106
26 |
27 | #sinsquare:0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Jeffrey-20210102-Journal.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 8
4 | bloodpressure: 174.8/121.6
5 | ---
6 |
7 | #weight:68.8kg
8 |
9 | #exercise-pushup:38
10 | #exercise-plank:112sec
11 |
12 |
13 | ⭐⭐⭐
14 |
15 | #finance/bank1:-2.7USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 16
24 |
25 | #sin:0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106
26 |
27 | #sinsquare:0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Jeffrey-20210103-Diary.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 7
4 | bloodpressure: 178.2/119.4
5 | ---
6 |
7 | #weight:74.9kg
8 |
9 | #exercise-pushup:32
10 | #exercise-plank:56sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-3.7USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 | obsidian-tracker+1@gmail.com
23 | obsidian-tracker@yahoo.com
24 |
25 | weightlifting: 16
26 |
27 | #sin:0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603
28 |
29 | #sinsquare:0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000
30 |
31 |
--------------------------------------------------------------------------------
/examples/diary/Jeffrey-20210103-Journal.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 7
4 | bloodpressure: 178.2/119.4
5 | ---
6 |
7 | #weight:74.9kg
8 |
9 | #exercise-pushup:32
10 | #exercise-plank:56sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-3.7USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 | obsidian-tracker+1@gmail.com
23 | obsidian-tracker@yahoo.com
24 |
25 | weightlifting: 16
26 |
27 | #sin:0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603
28 |
29 | #sinsquare:0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000
30 |
31 |
--------------------------------------------------------------------------------
/examples/diary/Jeffrey-20210104-Diary.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 3
4 | bloodpressure: 178.6/119.2
5 | ---
6 |
7 | #weight:73.5kg
8 |
9 | #exercise-pushup:40
10 | #exercise-plank:74sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-2.5USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 |
22 | weightlifting: 19
23 |
24 | #sin:0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314
25 |
26 | #sinsquare:0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226
27 |
28 |
--------------------------------------------------------------------------------
/examples/diary/Jeffrey-20210104-Journal.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 3
4 | bloodpressure: 178.6/119.2
5 | ---
6 |
7 | #weight:73.5kg
8 |
9 | #exercise-pushup:40
10 | #exercise-plank:74sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-2.5USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 |
22 | weightlifting: 19
23 |
24 | #sin:0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314
25 |
26 | #sinsquare:0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226
27 |
28 |
--------------------------------------------------------------------------------
/examples/diary/Jeffrey-20210105-Diary.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 1
4 | bloodpressure: 177/119
5 | ---
6 |
7 | #weight:70.0kg
8 |
9 | #exercise-pushup:5
10 | #exercise-plank:34sec
11 |
12 | #meditation
13 |
14 | ⭐⭐
15 |
16 | #finance/bank1:-2.6USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314/0.58779
26 |
27 | #sinsquare:0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Jeffrey-20210105-Journal.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 1
4 | bloodpressure: 177/119
5 | ---
6 |
7 | #weight:70.0kg
8 |
9 | #exercise-pushup:5
10 | #exercise-plank:34sec
11 |
12 | #meditation
13 |
14 | ⭐⭐
15 |
16 | #finance/bank1:-2.6USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314/0.58779
26 |
27 | #sinsquare:0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Lucas-20210101-Diary.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 10
4 | bloodpressure: 177.4/121.8
5 | ---
6 |
7 | #weight:74.0kg
8 |
9 | #exercise-pushup:44
10 | #exercise-plank:37sec
11 |
12 |
13 | ⭐⭐⭐⭐⭐
14 |
15 | #finance/bank1:-3.4USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker+1@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.00000/0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452
26 |
27 | #sinsquare:0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Lucas-20210101-Journal.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 10
4 | bloodpressure: 177.4/121.8
5 | ---
6 |
7 | #weight:74.0kg
8 |
9 | #exercise-pushup:44
10 | #exercise-plank:37sec
11 |
12 |
13 | ⭐⭐⭐⭐⭐
14 |
15 | #finance/bank1:-3.4USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker+1@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.00000/0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452
26 |
27 | #sinsquare:0.00000/0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Lucas-20210102-Diary.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 8
4 | bloodpressure: 174.8/121.6
5 | ---
6 |
7 | #weight:68.8kg
8 |
9 | #exercise-pushup:38
10 | #exercise-plank:112sec
11 |
12 |
13 | ⭐⭐⭐
14 |
15 | #finance/bank1:-2.7USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 16
24 |
25 | #sin:0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106
26 |
27 | #sinsquare:0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Lucas-20210102-Journal.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 8
4 | bloodpressure: 174.8/121.6
5 | ---
6 |
7 | #weight:68.8kg
8 |
9 | #exercise-pushup:38
10 | #exercise-plank:112sec
11 |
12 |
13 | ⭐⭐⭐
14 |
15 | #finance/bank1:-2.7USD
16 |
17 | [[todo_family|To-Do @Family]]
18 | [[todo_work|To-Do @Work]]
19 |
20 | obsidian-tracker@gmail.com
21 | obsidian-tracker@yahoo.com
22 |
23 | weightlifting: 16
24 |
25 | #sin:0.20791/0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106
26 |
27 | #sinsquare:0.04323/0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Lucas-20210103-Diary.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 7
4 | bloodpressure: 178.2/119.4
5 | ---
6 |
7 | #weight:74.9kg
8 |
9 | #exercise-pushup:32
10 | #exercise-plank:56sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-3.7USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 | obsidian-tracker+1@gmail.com
23 | obsidian-tracker@yahoo.com
24 |
25 | weightlifting: 16
26 |
27 | #sin:0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603
28 |
29 | #sinsquare:0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000
30 |
31 |
--------------------------------------------------------------------------------
/examples/diary/Lucas-20210103-Journal.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags:
3 | mood: 7
4 | bloodpressure: 178.2/119.4
5 | ---
6 |
7 | #weight:74.9kg
8 |
9 | #exercise-pushup:32
10 | #exercise-plank:56sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-3.7USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 | obsidian-tracker+1@gmail.com
23 | obsidian-tracker@yahoo.com
24 |
25 | weightlifting: 16
26 |
27 | #sin:0.40674/0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603
28 |
29 | #sinsquare:0.16543/0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000
30 |
31 |
--------------------------------------------------------------------------------
/examples/diary/Lucas-20210104-Diary.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 3
4 | bloodpressure: 178.6/119.2
5 | ---
6 |
7 | #weight:73.5kg
8 |
9 | #exercise-pushup:40
10 | #exercise-plank:74sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-2.5USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 |
22 | weightlifting: 19
23 |
24 | #sin:0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314
25 |
26 | #sinsquare:0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226
27 |
28 |
--------------------------------------------------------------------------------
/examples/diary/Lucas-20210104-Journal.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 3
4 | bloodpressure: 178.6/119.2
5 | ---
6 |
7 | #weight:73.5kg
8 |
9 | #exercise-pushup:40
10 | #exercise-plank:74sec
11 |
12 | #meditation
13 |
14 | ⭐⭐⭐⭐⭐
15 |
16 | #finance/bank1:-2.5USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 |
22 | weightlifting: 19
23 |
24 | #sin:0.58779/0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314
25 |
26 | #sinsquare:0.34549/0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226
27 |
28 |
--------------------------------------------------------------------------------
/examples/diary/Lucas-20210105-Diary.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 1
4 | bloodpressure: 177/119
5 | ---
6 |
7 | #weight:70.0kg
8 |
9 | #exercise-pushup:5
10 | #exercise-plank:34sec
11 |
12 | #meditation
13 |
14 | ⭐⭐
15 |
16 | #finance/bank1:-2.6USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314/0.58779
26 |
27 | #sinsquare:0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549
28 |
29 |
--------------------------------------------------------------------------------
/examples/diary/Lucas-20210105-Journal.md:
--------------------------------------------------------------------------------
1 | ---
2 | tags: work_log
3 | mood: 1
4 | bloodpressure: 177/119
5 | ---
6 |
7 | #weight:70.0kg
8 |
9 | #exercise-pushup:5
10 | #exercise-plank:34sec
11 |
12 | #meditation
13 |
14 | ⭐⭐
15 |
16 | #finance/bank1:-2.6USD
17 |
18 | [[todo_family|To-Do @Family]]
19 | [[todo_work|To-Do @Work]]
20 |
21 | obsidian-tracker@gmail.com
22 |
23 | weightlifting: 10
24 |
25 | #sin:0.74314/0.86603/0.95106/0.99452/0.99452/0.95106/0.86603/0.74314/0.58779
26 |
27 | #sinsquare:0.55226/0.75000/0.90451/0.98907/0.98907/0.90451/0.75000/0.55226/0.34549
28 |
29 |
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "obsidian-tracker",
3 | "name": "Tracker",
4 | "version": "1.16.0",
5 | "minAppVersion": "0.9.12",
6 | "description": "A plugin tracks occurrences and numbers in your notes",
7 | "author": "pyrochlore",
8 | "authorUrl": "",
9 | "isDesktopOnly": false
10 | }
11 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "obsidian-tracker",
3 | "version": "1.16.0",
4 | "description": "A plugin tracks occurrences and numbers in your notes",
5 | "main": "main.js",
6 | "scripts": {
7 | "dev": "rollup --config rollup.config.dev.mjs -w",
8 | "build": "rollup --config rollup.config.build.mjs",
9 | "zip": "zip -9 obsidian-tracker-v$npm_package_version.zip main.js manifest.json styles.css"
10 | },
11 | "keywords": [],
12 | "author": "pyrochlore",
13 | "license": "MIT",
14 | "devDependencies": {
15 | "@rollup/plugin-commonjs": "^28.0.3",
16 | "@rollup/plugin-node-resolve": "^16.0.1",
17 | "@rollup/plugin-terser": "^0.4.4",
18 | "@rollup/plugin-typescript": "^12.1.2",
19 | "@types/d3": "^7.4.3",
20 | "@types/node": "^22.15.17",
21 | "@types/sprintf-js": "^1.1.4",
22 | "obsidian": "https://github.com/obsidianmd/obsidian-api/tarball/master",
23 | "rollup": "^4.40.2",
24 | "rollup-plugin-copy": "^3.5.0",
25 | "tslib": "^2.8.1",
26 | "typescript": "^5.8.3"
27 | },
28 | "dependencies": {
29 | "d3": "^7.9.0",
30 | "d3-interpolate": "^3.0.1",
31 | "jsep": "^1.4.0",
32 | "sprintf-js": "^1.1.3"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/rollup.config.build.mjs:
--------------------------------------------------------------------------------
1 | import typescript from '@rollup/plugin-typescript';
2 | import { nodeResolve } from '@rollup/plugin-node-resolve';
3 | import commonjs from '@rollup/plugin-commonjs';
4 | import terser from "@rollup/plugin-terser";
5 |
6 | export default {
7 | input: 'src/main.ts',
8 | output: {
9 | dir: '.',
10 | sourcemap: 'inline',
11 | format: 'cjs',
12 | exports: 'default'
13 | },
14 | external: ['obsidian'],
15 | plugins: [
16 | typescript(),
17 | nodeResolve({browser: true}),
18 | commonjs(),
19 | terser()
20 | ],
21 | onwarn: function(warning, warner){
22 | if (warning.code === 'CIRCULAR_DEPENDENCY') {
23 | if (warning.importer && warning.importer.startsWith('node_modules')) {
24 | console.warn(`(!) Circular dependency: ${warning.importer}`);
25 | }
26 | } else {
27 | warner(warning);
28 | }
29 | }
30 | };
--------------------------------------------------------------------------------
/rollup.config.dev.mjs:
--------------------------------------------------------------------------------
1 | import typescript from '@rollup/plugin-typescript';
2 | import {nodeResolve} from '@rollup/plugin-node-resolve';
3 | import commonjs from '@rollup/plugin-commonjs';
4 | import copy from 'rollup-plugin-copy'
5 |
6 | export default {
7 | input: 'src/main.ts',
8 | output: {
9 | dir: 'examples/.obsidian/plugins/obsidian-tracker',
10 | sourcemap: 'inline',
11 | format: 'cjs',
12 | exports: 'default'
13 | },
14 | external: ['obsidian'],
15 | plugins: [
16 | typescript(),
17 | nodeResolve({browser: true}),
18 | commonjs(),
19 | copy({
20 | targets: [
21 | { src: ['styles.css', 'manifest.json'], dest: 'examples/.obsidian/plugins/obsidian-tracker' }
22 | ]
23 | })
24 | ],
25 | onwarn: function(warning, warner){
26 | if (warning.code === 'CIRCULAR_DEPENDENCY') {
27 | if (warning.importer && warning.importer.startsWith('node_modules')) {
28 | console.warn(`(!) Circular dependency: ${warning.importer}`);
29 | }
30 | } else {
31 | warner(warning);
32 | }
33 | }
34 | };
--------------------------------------------------------------------------------
/src/heatmap.ts:
--------------------------------------------------------------------------------
1 | import { Moment } from "moment";
2 | import {
3 | Datasets,
4 | DataPoint,
5 | RenderInfo,
6 | MonthInfo,
7 | HeatmapInfo,
8 | Dataset,
9 | Size,
10 | Transform,
11 | ChartElements,
12 | GraphType,
13 | ValueType,
14 | } from "./data";
15 | import * as helper from "./helper";
16 | import * as d3 from "d3";
17 |
18 | interface DayInfo {
19 | date: string;
20 | value: number;
21 | scaledValue: number;
22 | row: number;
23 | col: number;
24 | }
25 |
26 | function createAreas(
27 | chartElements: ChartElements,
28 | canvas: HTMLElement,
29 | renderInfo: RenderInfo,
30 | heatmapInfo: HeatmapInfo
31 | ): ChartElements {
32 | // clean areas
33 | d3.select(canvas).select("#svg").remove();
34 | var props = Object.getOwnPropertyNames(chartElements);
35 | for (var i = 0; i < props.length; i++) {
36 | // d3.select(chartElements[props[i]]).remove();
37 | delete chartElements[props[i]];
38 | }
39 | // console.log(chartElements);
40 |
41 | // whole area for plotting, includes margins
42 | let svg = d3
43 | .select(canvas)
44 | .append("svg")
45 | .attr("id", "svg")
46 | .attr(
47 | "width",
48 | renderInfo.dataAreaSize.width +
49 | renderInfo.margin.left +
50 | renderInfo.margin.right
51 | )
52 | .attr(
53 | "height",
54 | renderInfo.dataAreaSize.height +
55 | renderInfo.margin.top +
56 | renderInfo.margin.bottom
57 | );
58 | chartElements["svg"] = svg;
59 |
60 | // graphArea, includes chartArea, title, legend
61 | let graphArea = svg
62 | .append("g")
63 | .attr("id", "graphArea")
64 | .attr(
65 | "transform",
66 | "translate(" +
67 | renderInfo.margin.left +
68 | "," +
69 | renderInfo.margin.top +
70 | ")"
71 | )
72 | .attr("width", renderInfo.dataAreaSize.width + renderInfo.margin.right)
73 | .attr(
74 | "height",
75 | renderInfo.dataAreaSize.height + renderInfo.margin.bottom
76 | );
77 | chartElements["graphArea"] = graphArea;
78 |
79 | // dataArea, under graphArea, includes points, lines, xAxis, yAxis
80 | let dataArea = graphArea
81 | .append("g")
82 | .attr("id", "dataArea")
83 | .attr("width", renderInfo.dataAreaSize.width)
84 | .attr("height", renderInfo.dataAreaSize.height);
85 | chartElements["dataArea"] = dataArea;
86 |
87 | return chartElements;
88 | }
89 |
90 | function renderHeatmapHeader(
91 | canvas: HTMLElement,
92 | chartElements: ChartElements,
93 | renderInfo: RenderInfo,
94 | heatmapInfo: HeatmapInfo,
95 | dataset: Dataset
96 | ) {
97 | // console.log("renderMonthHeader")
98 |
99 | if (!renderInfo || !heatmapInfo) return;
100 |
101 | }
102 |
103 | function renderHeatmapDays(
104 | canvas: HTMLElement,
105 | chartElements: ChartElements,
106 | renderInfo: RenderInfo,
107 | heatmapInfo: HeatmapInfo,
108 | dataset: Dataset,
109 | ) {
110 | // console.log("renderHeatmapDays");
111 |
112 | if (!renderInfo || !heatmapInfo) return;
113 |
114 | let cellSize = 20;
115 | let dotRadius = cellSize / 2.0 * 0.6;
116 |
117 | // Get min and max, null values will be treated as zero here
118 | let yMin = d3.min(dataset.getValues());
119 | if (heatmapInfo.yMin !== null) {
120 | yMin = heatmapInfo.yMin;
121 | }
122 | let yMax = d3.max(dataset.getValues());
123 | if (heatmapInfo.yMax !== null) {
124 | yMax = heatmapInfo.yMax;
125 | }
126 | // console.log(`yMin:${yMin}, yMax:${yMax}`);
127 |
128 | // Prepare data for graph
129 | let daysInHeatmapView: Array = [];
130 | const dataStartDate = dataset.getStartDate().clone();
131 | let startDate = dataStartDate
132 | .clone()
133 | .subtract(dataStartDate.day(), "days");
134 | if (heatmapInfo.startWeekOn.toLowerCase() === "mon") {
135 | startDate = startDate.add(1, "days");
136 | }
137 | const dataEndDate = dataset.getEndDate().clone();
138 | let endDate = dataEndDate.clone().add(7 - dataEndDate.day() - 1, "days");
139 | if (heatmapInfo.startWeekOn.toLowerCase() === "mon") {
140 | endDate = endDate.add(1, "days");
141 | }
142 | // console.log(startDate.format("YYYY-MM-DD"));
143 | // console.log(endDate.format("YYYY-MM-DD"));
144 |
145 | let indCol = 0;
146 | let indRow = 0;
147 | let ind = 0;
148 | for (
149 | let curDate = startDate.clone();
150 | curDate <= endDate;
151 | curDate.add(1, "days")
152 | ) {
153 | if (heatmapInfo.startWeekOn.toLowerCase() === "mon") {
154 | indCol = curDate.day() - 1;
155 | if (indCol < 0) {
156 | indCol = 6;
157 | }
158 | indRow = Math.floor(ind / 7);
159 | } else {
160 | indCol = curDate.day(); // 0~6
161 | indRow = Math.floor(ind / 7);
162 | }
163 |
164 | // curValue and scaledValue
165 | let curValue = dataset.getValue(curDate);
166 | let scaledValue = 0;
167 | if (Number.isNumber(yMax) && Number.isNumber(yMin) && yMax - yMin > 0) {
168 | scaledValue = (curValue - yMin) / (yMax - yMin);
169 | }
170 |
171 | daysInHeatmapView.push({
172 | date: helper.dateToStr(curDate, renderInfo.dateFormat),
173 | value: curValue,
174 | scaledValue: scaledValue,
175 | row: indRow,
176 | col: indCol,
177 | });
178 |
179 | ind++;
180 | }
181 | // console.log(daysInHeatmapView);
182 |
183 | // scale
184 | let totalDayBlockWidth = (indCol + 1) * cellSize;
185 | let totalBlockHeight = (indRow + 1) * cellSize;
186 | let scale = d3
187 | .scaleLinear()
188 | .domain([-0.5, 6.5])
189 | .range([0, totalDayBlockWidth]);
190 |
191 | // circles
192 | let heatmapColor = "#69b3a2";
193 | if (heatmapInfo.color) {
194 | heatmapColor = heatmapInfo.color;
195 | }
196 |
197 | // days, shown as dots or squares
198 | let days = chartElements.dataArea
199 | .selectAll("dot")
200 | .data(daysInHeatmapView)
201 | .enter()
202 | .append("circle")
203 | .attr("r", dotRadius)
204 | .attr("cx", function (d: DayInfo) {
205 | return scale(d.col);
206 | })
207 | .attr("cy", function (d: DayInfo) {
208 | return scale(d.row);
209 | })
210 | .style("fill", function (d: DayInfo) {
211 | return d3.interpolateLab(
212 | "white",
213 | heatmapColor
214 | )(d.scaledValue);
215 | })
216 | .style("cursor", "default");
217 |
218 | // Expand areas
219 | let svgWidth = parseFloat(chartElements.svg.attr("width"));
220 | let svgHeight = parseFloat(chartElements.svg.attr("height"));
221 | let graphAreaWidth = parseFloat(chartElements.graphArea.attr("width"));
222 | let graphAreaHeight = parseFloat(chartElements.graphArea.attr("height"));
223 | let totalHeight =
224 | (indRow + 2) * cellSize;// + parseFloat(chartElements.header.attr("height"));
225 | let totalWidth = (indCol + 1) * cellSize;
226 | if (totalHeight > svgHeight) {
227 | helper.expandArea(chartElements.svg, 0, totalHeight - svgHeight);
228 | }
229 | if (totalWidth > svgWidth) {
230 | helper.expandArea(chartElements.svg, totalWidth - svgWidth, 0);
231 | }
232 | if (totalHeight > graphAreaHeight) {
233 | helper.expandArea(
234 | chartElements.graphArea,
235 | 0,
236 | totalHeight - graphAreaHeight
237 | );
238 | }
239 | if (totalWidth > graphAreaWidth) {
240 | helper.expandArea(chartElements.svg, totalWidth - graphAreaWidth, 0);
241 | }
242 | }
243 |
244 | export function renderHeatmap(
245 | canvas: HTMLElement,
246 | renderInfo: RenderInfo,
247 | heatmapInfo: HeatmapInfo
248 | ) {
249 | // console.log("renderHeatmap");
250 | // console.log(renderInfo);
251 | if (!renderInfo || !renderHeatmap) return;
252 |
253 | return "Under construction";
254 |
255 | let chartElements: ChartElements = {};
256 | chartElements = createAreas(chartElements, canvas, renderInfo, heatmapInfo);
257 |
258 | let today = window.moment();
259 | let lastDataMonthDate = renderInfo.datasets.getDates().last();
260 |
261 | let datasetId = parseFloat(heatmapInfo.dataset);
262 | let dataset = renderInfo.datasets.getDatasetById(datasetId);
263 |
264 | renderHeatmapHeader(
265 | canvas,
266 | chartElements,
267 | renderInfo,
268 | heatmapInfo,
269 | dataset
270 | );
271 |
272 | renderHeatmapDays(
273 | canvas,
274 | chartElements,
275 | renderInfo,
276 | heatmapInfo,
277 | dataset
278 | );
279 | }
280 |
--------------------------------------------------------------------------------
/src/settings.ts:
--------------------------------------------------------------------------------
1 | import { App, PluginSettingTab, Setting } from "obsidian";
2 | import Tracker from "./main";
3 |
4 | export interface TrackerSettings {
5 | folder: string;
6 | dateFormat: string;
7 | }
8 |
9 | export const DEFAULT_SETTINGS: TrackerSettings = {
10 | folder: "/",
11 | dateFormat: "YYYY-MM-DD",
12 | };
13 |
14 | export class TrackerSettingTab extends PluginSettingTab {
15 | plugin: Tracker;
16 |
17 | constructor(app: App, plugin: Tracker) {
18 | super(app, plugin);
19 | this.plugin = plugin;
20 | }
21 |
22 | display(): void {
23 | let { containerEl } = this;
24 |
25 | containerEl.empty();
26 |
27 | new Setting(containerEl)
28 | .setName("Default folder location")
29 | .setDesc(
30 | "Files in this folder will be parsed and used as input data of the tracker plugin.\nYou can also override it using 'folder' argument in the tracker codeblock."
31 | )
32 | .addText((text) =>
33 | text
34 | .setPlaceholder("Folder Path")
35 | .setValue(this.plugin.settings.folder)
36 | .onChange(async (value) => {
37 | this.plugin.settings.folder = value;
38 | await this.plugin.saveSettings();
39 | })
40 | );
41 |
42 | new Setting(containerEl)
43 | .setName("Default date format")
44 | .setDesc(
45 | "This format is used to parse the date in your diary title.\nYou can also override it using 'dateFormat' argument in the tracker codeblock."
46 | )
47 | .addText((text) =>
48 | text
49 | .setPlaceholder("YYYY-MM-DD")
50 | .setValue(this.plugin.settings.dateFormat)
51 | .onChange(async (value) => {
52 | this.plugin.settings.dateFormat = value;
53 | await this.plugin.saveSettings();
54 | })
55 | );
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/summary.ts:
--------------------------------------------------------------------------------
1 | import * as d3 from "d3";
2 | import { RenderInfo, SummaryInfo } from "./data";
3 | import * as expr from "./expr";
4 |
5 | function checkSummaryTemplateValid(summaryTemplate: string): boolean {
6 | return true;
7 | }
8 |
9 | export function renderSummary(
10 | canvas: HTMLElement,
11 | renderInfo: RenderInfo,
12 | summaryInfo: SummaryInfo
13 | ) {
14 | // console.log("renderSummary");
15 | // console.log(renderInfo);
16 | if (!renderInfo || !summaryInfo) return;
17 |
18 | // console.log(summaryInfo.template);
19 | let outputSummary = "";
20 | if (checkSummaryTemplateValid(summaryInfo.template)) {
21 | outputSummary = summaryInfo.template;
22 | } else {
23 | return "Invalid summary template";
24 | }
25 |
26 | let retResolvedTemplate = expr.resolveTemplate(outputSummary, renderInfo);
27 | // console.log(retResolvedTemplate);
28 | if (retResolvedTemplate.startsWith("Error:")) {
29 | return retResolvedTemplate;
30 | }
31 | outputSummary = retResolvedTemplate;
32 |
33 | if (outputSummary !== "") {
34 | let textBlock = d3.select(canvas).append("div");
35 | if (outputSummary.includes("\n") || outputSummary.includes("\\n")) {
36 | let outputLines = outputSummary.split(/(\n|\\n)/);
37 | // console.log(outputLines);
38 | for (let outputLine of outputLines) {
39 | if (outputLine !== "\n" && outputLine !== "\\n")
40 | textBlock.append("div").text(outputLine);
41 | }
42 | } else {
43 | textBlock.text(outputSummary);
44 | }
45 |
46 | if (summaryInfo.style !== "") {
47 | textBlock.attr("style", summaryInfo.style);
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/styles.css:
--------------------------------------------------------------------------------
1 | .theme-light {
2 | --color-title: #000000;
3 | --color-axis: #000000;
4 | --color-axis-label: #000000;
5 | --color-tick-label: #000000;
6 | --color-line: #000000;
7 |
8 | --color-legend-border: #000000;
9 |
10 | --color-dot-fill: #69b3a2;
11 | --color-dot-stroke: none;
12 |
13 | --color-bar-fill: #69b3a2;
14 | --color-bar-border: none;
15 |
16 | --color-tooltip-bg: #ffffff;
17 | --color-tooltip-border: #000000;
18 | --color-tooltip-label: #000000;
19 | }
20 |
21 | .theme-dark {
22 | --color-title: #ffffff;
23 | --color-axis: #ffffff;
24 | --color-axis-label: #ffffff;
25 | --color-tick-label: #ffffff;
26 | --color-line: #ffffff;
27 |
28 | --color-legend-border: #ffffff;
29 |
30 | --color-dot-fill: #69b3a2;
31 | --color-dot-stroke: none;
32 |
33 | --color-bar-fill: #69b3a2;
34 | --color-bar-border: none;
35 |
36 | --color-tooltip-bg: #ffffff;
37 | --color-tooltip-border: #000000;
38 | --color-tooltip-label: #000000;
39 | }
40 |
41 | .tracker-title {
42 | fill: var(--color-title);
43 | text-anchor: middle;
44 | font-size: 18px;
45 | }
46 |
47 | .tracker-title-small {
48 | fill: var(--color-title);
49 | text-anchor: middle;
50 | font-size: 16px;
51 | }
52 |
53 | .tracker-axis {
54 | fill: none;
55 | stroke: var(--color-axis);
56 | stroke-width: 1px;
57 | }
58 |
59 | .tracker-axis-label {
60 | fill: var(--color-axis-label);
61 | text-anchor: middle;
62 | font-size: 14px;
63 | stroke: none;
64 | }
65 |
66 | .tracker-tick-label {
67 | fill: var(--color-tick-label);
68 | stroke: none;
69 | font-size: 12px;
70 | }
71 |
72 | .tracker-line {
73 | fill: none;
74 | stroke: var(--color-line);
75 | stroke-width: 1.5px;
76 | stroke-linecap: round;
77 | stroke-linejoin: round;
78 | }
79 |
80 | .tracker-dot {
81 | fill: var(--color-dot-fill);
82 | }
83 |
84 | .tracker-tooltip {
85 | fill: var(--color-tooltip-bg);
86 | stroke: var(--color-tooltip-border);
87 | stroke-width: 1px;
88 | }
89 |
90 | .tracker-tooltip-label {
91 | fill: var(--color-tooltip-label);
92 | stroke: none;
93 | font-size: 12px;
94 | }
95 |
96 | .tracker-legend {
97 | fill: none;
98 | stroke: var(--color-legend-border);
99 | stroke-width: 0.5px;
100 | }
101 |
102 | .tracker-legend-label {
103 | font-size: 14px;
104 | text-anchor: left;
105 | }
106 |
107 | .tracker-bar {
108 | fill: var(--color-bar-fill);
109 | }
110 |
111 | .tracker-month-header-year {
112 | fill: var(--color-title);
113 | text-anchor: start;
114 | font-size: 22px;
115 |
116 | }
117 |
118 | .tracker-month-header-month {
119 | fill: var(--color-title);
120 | text-anchor: start;
121 | font-size: 18px;
122 | }
123 |
124 | .tracker-month-dividing-line {
125 | fill: var(--color-bar-fill);
126 | }
127 |
128 | .tracker-month-title-arrow {
129 | fill: var(--color-title);
130 | text-anchor: middle;
131 | font-size: 22px;
132 | }
133 |
134 | .tracker-month-title-rotator {
135 | fill: var(--color-title);
136 | text-anchor: middle;
137 | font-size: 20px;
138 | }
139 |
140 | .tracker-month-title-monitor {
141 | fill: var(--color-title);
142 | text-anchor: middle;
143 | font-size: 18px;
144 | }
145 |
146 | .tracker-month-weekday {
147 | fill: var(--color-tick-label);
148 | stroke: none;
149 | font-size: 12px;
150 | }
151 |
152 | .tracker-month-today-circle {
153 | fill: none;
154 | stroke: "white";
155 | stroke-width: 4px;
156 | }
157 |
158 | .tracker-month-selected-circle {
159 | fill: none;
160 | stroke: "red";
161 | stroke-width: 2px;
162 | }
163 |
164 | .tracker-month-label {
165 | fill: var(--color-axis-label);
166 | text-anchor: middle;
167 | font-size: 14px;
168 | stroke: none;
169 | }
170 |
171 | .tracker-month-annotation {
172 | fill: var(--color-axis-label);
173 | text-anchor: middle;
174 | font-size: 10px;
175 | stroke: none;
176 | }
177 |
178 | .tracker-pie-label {
179 | fill: var(--color-tick-label);
180 | stroke: none;
181 | font-size: 12px;
182 | }
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "inlineSourceMap": true,
5 | "inlineSources": true,
6 | "module": "ESNext",
7 | "target": "ES2018",
8 | "allowJs": true,
9 | "noImplicitAny": true,
10 | "moduleResolution": "node",
11 | "importHelpers": true,
12 | "allowSyntheticDefaultImports": true,
13 |
14 | "lib": [
15 | "dom",
16 | "es5",
17 | "scripthost",
18 | "es2015",
19 | "ESNext.String"
20 | ]
21 | },
22 | "include": [
23 | "**/*.ts"
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/versions.json:
--------------------------------------------------------------------------------
1 | {
2 | "1.0.0": "0.9.12",
3 | "1.0.1": "0.9.12",
4 | "1.0.2": "0.9.12",
5 | "1.1.0": "0.9.12",
6 | "1.2.0": "0.9.12",
7 | "1.2.1": "0.9.12",
8 | "1.3.0": "0.9.12",
9 | "1.4.0": "0.9.12",
10 | "1.4.1": "0.9.12",
11 | "1.5.0": "0.9.12",
12 | "1.5.1": "0.9.12",
13 | "1.6.0": "0.9.12",
14 | "1.6.1": "0.9.12",
15 | "1.7.0": "0.9.12",
16 | "1.8.0": "0.9.12",
17 | "1.8.1": "0.9.12",
18 | "1.8.2": "0.9.12",
19 | "1.9.0": "0.9.12",
20 | "1.9.1": "0.9.12",
21 | "1.9.2": "0.9.12",
22 | "1.10.0": "0.9.12",
23 | "1.10.1": "0.9.12",
24 | "1.10.2": "0.9.12",
25 | "1.10.3": "0.9.12",
26 | "1.10.4": "0.9.12",
27 | "1.10.5": "0.9.12",
28 | "1.10.6": "0.9.12",
29 | "1.10.7": "0.9.12",
30 | "1.10.8": "0.9.12",
31 | "1.10.9": "0.9.12",
32 | "1.11.0": "0.9.12",
33 | "1.12.0": "0.9.12",
34 | "1.13.0": "0.9.12",
35 | "1.13.1": "0.9.12",
36 | "1.13.2": "0.9.12",
37 | "1.13.3": "0.9.12",
38 | "1.14.0": "0.9.12",
39 | "1.15.0": "0.9.12",
40 | "1.15.1": "0.9.12",
41 | "1.16.0": "0.9.12"
42 | }
43 |
--------------------------------------------------------------------------------