Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
f09ed7a
Merge pull request #14 from dhunt84971/sqlliteSupport
dhunt84971 Jul 3, 2020
62cf578
Added await call support for saving tasks and notes.
dhunt84971 Jul 3, 2020
fb29233
Updated README.md to include the new installation instructions and fe…
dhunt84971 Jul 4, 2020
b5a9739
Update README.md
dhunt84971 Jul 4, 2020
142de98
Update README.md
dhunt84971 Jul 4, 2020
7403d1c
Update README.md
dhunt84971 Jul 4, 2020
0b2f00a
Update README.md
dhunt84971 Jul 4, 2020
32fe031
Update README.md
dhunt84971 Jul 4, 2020
882b43b
Update README.md
dhunt84971 Jul 4, 2020
f958d42
Update README.md
dhunt84971 Jul 4, 2020
8e40215
Update README.md
dhunt84971 Jul 4, 2020
959363d
Added version number per issue #15.
dhunt84971 Jul 6, 2020
5a7f79f
Added checkboxes for all themes. Issue #8.
dhunt84971 Jul 6, 2020
efaa6da
Updated readme.
dhunt84971 Aug 15, 2020
2a6187b
Renamed functions.
dhunt84971 Nov 4, 2020
3244cb5
Updated npm packages.
dhunt84971 Nov 4, 2020
e1f02a5
Merge pull request #22 from dhunt84971/npm-updates
dhunt84971 Nov 4, 2020
8074008
Fixed minor typo.
dhunt84971 Nov 4, 2020
b42a1d5
Update README.md
dhunt84971 Nov 20, 2020
230c254
Progress commit. Migrating code to app_documents.
dhunt84971 Nov 25, 2020
73225ac
Progress commit.
dhunt84971 Nov 26, 2020
f972b4a
Progress commit. Added rename of documents.
dhunt84971 Nov 26, 2020
86043d8
Progress commit. Rename completed.
dhunt84971 Nov 27, 2020
3052fee
Completed page rename and remove.
dhunt84971 Nov 27, 2020
d55607a
Completed addition of documents with sqlite support.
dhunt84971 Nov 27, 2020
2aae547
Completed addition of MySQL queries.
dhunt84971 Nov 28, 2020
38de609
Merge pull request #23 from dhunt84971/documents
dhunt84971 Nov 28, 2020
67865dd
Fixed minor issues after merge of documents feature branch.
dhunt84971 Nov 28, 2020
b0b534b
Added ellipsis and minor fixes to documents.
dhunt84971 Nov 28, 2020
2275b14
Commit ready for 1.1.0 build.
dhunt84971 Nov 29, 2020
5bb70d5
Updated version number to 1.1.0
dhunt84971 Nov 29, 2020
e1efb31
Added wait image.
dhunt84971 Nov 29, 2020
42d7081
Bumped ini to 1.3.6
dhunt84971 Dec 12, 2020
17546cd
Created new wait gif.
dhunt84971 Dec 19, 2020
4cda58a
Made settings scrollable. Added settable sqlite db file.
dhunt84971 Dec 19, 2020
3bc8687
Build for version 1.1.2
dhunt84971 Dec 20, 2020
5e3c6c1
Update README.md
dhunt84971 Dec 20, 2020
2d53960
Added synchronous calls to CreateSqliteDB.
dhunt84971 Dec 20, 2020
5c4af00
Fixed more bugs with DB creation. Add DocOrder and PageOrder to DB t…
dhunt84971 Dec 21, 2020
a8e66e1
Added expand and collapse buttons.
dhunt84971 Dec 21, 2020
f6dd09b
Fixed context menu locations.
dhunt84971 Dec 21, 2020
6bc85c3
Added Move Page Up and Move Page Down buttons.
dhunt84971 Dec 21, 2020
695fc34
Completed addition of Doc Move Up and Down buttons.
dhunt84971 Dec 22, 2020
fbaa86c
Page drag and drop to reorder.
dhunt84971 Dec 22, 2020
a828d21
Merge pull request #29 from dhunt84971/drag-drop-reorder
dhunt84971 Dec 22, 2020
1897de9
Fixing markdown view of check boxes.
dhunt84971 Dec 22, 2020
ce480f0
Added drag and drop of page to document.
dhunt84971 Dec 23, 2020
bba7823
Completed drag and drop features.
dhunt84971 Dec 24, 2020
7193702
Added drag to Add Doc button to move document to the root of the tree.
dhunt84971 Dec 24, 2020
8a7b577
Added spell checking option.
dhunt84971 Dec 31, 2020
a433f5b
Removed unused better-sqlite3 package.
dhunt84971 Jan 1, 2021
4e74018
Added automatic saving of page edits prior to moving of pages.
dhunt84971 Jan 3, 2021
d089e29
Fixed date offset bug for SQLite.
dhunt84971 Jan 20, 2021
62bb85f
Fixed date parsing error introduced in last commit.
dhunt84971 Jan 20, 2021
aeed617
Bump electron from 10.1.5 to 10.2.0
dependabot[bot] Jan 28, 2021
775ce74
Fixed tabbing in documents. Issue #32.
dhunt84971 Feb 1, 2021
3046c91
Bump marked from 1.2.2 to 2.0.0
dependabot[bot] Feb 8, 2021
85ec225
Updated documentation and minor fixes.
dhunt84971 Feb 14, 2021
bca79b1
Update README.md
dhunt84971 Feb 19, 2021
f17f196
Update README.md
dhunt84971 Feb 19, 2021
9b06115
Update README.md
dhunt84971 Feb 19, 2021
a79b9e8
Bump y18n from 4.0.0 to 4.0.1
dependabot[bot] Apr 1, 2021
1d2c0ab
Update README.md
dhunt84971 Apr 9, 2021
d572452
Merge pull request #37 from dhunt84971/dependabot/npm_and_yarn/y18n-4…
dhunt84971 Apr 28, 2021
e3ee2ff
Merge pull request #33 from dhunt84971/dependabot/npm_and_yarn/electr…
dhunt84971 Apr 28, 2021
d853252
Merge pull request #35 from dhunt84971/dependabot/npm_and_yarn/marked…
dhunt84971 Apr 28, 2021
2ef2309
Bump hosted-git-info from 2.8.8 to 2.8.9
dependabot[bot] May 9, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
188 changes: 174 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,185 @@
# CalendarNotes
An Electron application for daily note (or journal) entries saved to a MySQL DB and searchable by words.
An Electron application for daily notes (or journal) entries saved to a SQLite or MySQL DB and searchable by words.

This is a port of an application originally written in Gambas. Much of the code for the calendar component was taken from a
javascript tutorial taken from here https://code.tutsplus.com/tutorials/how-to-build-a-beautiful-calendar-widget--net-12538
Current release:
<br/>https://github.com/dhunt84971/CalendarNotes/releases/tag/v1.1.6

While the settings dialog will create the database tables the setup of the MySQL database and configuration/creation of a
database and username and password is on the end user. Keep in mind, the entered database user must be able to create tables
in order to use the create tables button.

This is a work in progress and JavaScript is relatively new to me, so any suggestions or code improvements are welcome.
This is a port of an application originally written in Gambas. Much of the code for the calendar component came from a
javascript tutorial taken from here:
<br/>https://code.tutsplus.com/tutorials/how-to-build-a-beautiful-calendar-widget--net-12538

Screenshot(s):
<img src="./screenshots/markdown.png">

Application -
## Installation
To install the latest release, download the install package appropriate for the platform (exe for Windows, appimage/deb for Linux).
<br/>
https://github.com/dhunt84971/CalendarNotes/releases

<img src="./screenshots/Screenshot_Application.png">
### Windows Installation
For Windows simply execute the setup.exe file.

Search -
### Linux Installation
There are two options for Linux.

<img src="./screenshots/Screenshot_Search.png">
**App Image Installation**

Settings -
The appimage is probably the easiest to install, but does not typically result in a menu integrated installation meaning it will be necessary to execute the appimage file to launch the application. Simply use a file explorer and open the appimage and the application will run.

<img src="./screenshots/Screenshot_Settings.png">
**DEB Installation**

The deb file is suitable for all debian based distros include Ubuntu, however there is an additional dependency that is not included in the deb file that needs to be installed manually. To install the deb file use the following commands from a terminal in the folder where the package was downloaded:

```
sudo apt-get update
sudo apt-get install libappindicator1
sudo dpkg -i calendarNotes_1.0.1_amd64.deb
```
NOTE: Substitute the example deb file name with the version that was downloaded.

This should result in the Calendar Notes application becoming available from the launcher menu. This will depend on the distro being used.


## Configuration
When the application is first run it will display a warning that no settings file was found.

<img src="./screenshots/no_settings_warning.png">

After clicking OK the application is ready to use with the default settings. This includes using the default theme and a local SQLite database file.

### MySQL Configuration
The Calendar Notes application can be configured to store all notes and tasks in a MySQL database. Click on the gear icon in the upper right corner to display the settings and tick the MySQL DB Server radio button. This will display additional settings for making a connection to a MySQL database.

<img src="./screenshots/mysql_settings.png">

Enter the required information and click on **TEST CONNECTION**. If the connection is successful then provided the user has the correct privileges simply click on the **CREATE TABLES** button. This will create the necessary tables for storing the notes and tasks. If a connection is being made to an existing Calendar Notes database that already has the tables, then skip this step. The main advantage of using a MySQL database is that the notes become accessible from multiple locations. Just install the Calendar Notes application on any number of computers and configure the MySQL connection. Now notes can be accessed from anywhere.

### Themes
Several pre-configured themes are available from the application settings. Examples of each are displayed below:

**Default**

<img src="./screenshots/theme_default.png" style="width: 50%; height: 50%">

**Warm**

<img src="./screenshots/theme_warm.png" style="width: 50%; height: 50%">

**Cool**

<img src="./screenshots/theme_cool.png" style="width: 50%; height: 50%">

**Green**

<img src="./screenshots/theme_green.png" style="width: 50%; height: 50%">

**Pink**

<img src="./screenshots/theme_pink.png" style="width: 50%; height: 50%">

**Tron**

<img src="./screenshots/markdown.png" style="width: 50%; height: 50%">

**Clu**

<img src="./screenshots/theme_clu.png" style="width: 50%; height: 50%">

### Experimental
The **Experimental** option is for enabling features that are still being tested.

## Features
The main feature of the application is to provide a place to enter and store notes for a particular day on the calendar. Click on a day in the calendar and the notes for that day are displayed. Use the **>>** button to navigate directly to today's notes.

<img src="./screenshots/not_markdown.png">

### Tasks
The tasks area provides a single location for any active tasks that need to be always displayed. The tasks are not associated with any particular day and are not archived meaning if changes are made to the tasks area and the **SAVE** button is pressed whatever changes were made to tasks are permanent. That is why this area is meant for reminders, such as TO DO lists. Use the Notes area to record when a task has actually been worked on.

### Save and Revert
The **SAVE** button is used to save any changes that are made to the notes or tasks. To remind the user to press the **SAVE** button astericks (*) are placed on either side of the **SAVE** button to indicate that an edit has been made but not saved. The only time that edits are automatically saved is when the selected date is changed. **NOTE: This means unsaved edits will be lost if the application is closed.**

The **REVERT** button is there to remove any unsaved edits. For example, if the user has inadvertantly mashed on the keyboard and destroyed their notes, clicking on the **REVERT** button will pull the unedited notes from the database and load these back into the notes area. This also applies to tasks.

### Date Navigation
Date navigation is accomplished by clicking on a date in the calendar. This will immediately save the current notes and tasks and load the notes for the selected date. Use the **>>** button to navigate to today and the left and right arrow buttons to move to the previous or next month. By holding the **Ctrl** key and clicking on an arrow it is possible to move 12 months into the past or future.

### Search
One of the most powerful features of the Calendar Notes application is the simple to use search feature. To search for a note containing some words click on the **SEARCH** button and enter the words into the text field to the left of the **GO** button then click on the **GO** button to execute the search. The search uses an inclusive condition for the words being sought meaning that only notes containing ALL of the words will be included in the results. The results are displayed as buttons below the search entry field. Each button displays a date where matching words were found.

<img src="./screenshots/search_results.png">

By hovering over a date in the search results a preview of the note will be displayed in the notes area. The words being searched for will be highlighted in the previewed notes. To edit the notes for this day click on the dated button and the calendar will select that date and display the notes.

### Markdown
A markdown renderer has been included to allow the user to enter notes using markdown syntax. To display the fully rendered markdown click on the **MARKDOWN** button. It is not possible to edit the notes while markdown rendering is enabled. To disable the markdown mode click on the **EDIT** button. The markdown mode applies to the search result previews as well as the currently displayed notes.

<img src="./screenshots/markdown.png">

### Full Window Notes
In order to keep the application as functional as possible the left side of the application can be hidden so that only the notes editor area is displayed. To do this click on the left pointing arrow next to the word **NOTES** at the top of the notes editor area. To restore the left side, click on the right pointing arrow.

<img src="./screenshots/fullwindow_notes.png">



## Documents
Currently an experimental feature, enabling documents provides additional functionality allowing the user to create documents and multiple pages for each document. Use the gear to expose the settings and check the box next to Documents to enable the feature.

<img src="./screenshots/settings_documents.png">

### Add a Document
To add a document, click on the **DOCS** button to reveal the documents and then click the **+ ADD DOC** button.

<img src="./screenshots/add_document.png">

A page will be automatically added for the newly created document. The new document and new page will have a default name. Right click on the Document or Page button to display the context menu for the selected item.

<img src="./screenshots/modify_document.png">

Use the document and page context menus to modify the selected item.

#### Document Context Menu
+ **ADD DOC** - Add a document under the selected document.

+ **RENAME** - Rename the selected document. Documents at the same level cannot have the same name.

+ **REMOVE** - Delete the selected document. Deleting a document deletes all sub-documents and pages.

+ **MOVE UP** - Move the selected document up in the list. This does not change the level, only the order.

+ **MOVE DOWN** - Move the selected document down in the list. This does not change the level, only the order.

#### Page Context Menu
+ **RENAME** - Rename the selected page. Pages within the same document cannot have the same name.

+ **REMOVE** - Delete the selected page.

+ **INCREASE INDENT** - Indent the page button to the right. This is just a visual means of establishing a relationship between pages in the same document.

+ **DECREASE INDENT** - Remove indent from the page button. This moves the button to the left by one indent level per click.

+ **MOVE UP** - Move the selected page up in the list.

+ **MOVE DOWN** - Move the selected page down in the list.

### Drag and Drop
Documents and pages can be moved by dragging and dropping. Dragging a document will move all sub-documents under that document. Pages can be dragged from one document to another.

## Development Setup
VS Code is the recommended IDE. Install VS Code using the instructions from the VS Code website. Install nodejs and npm:

For Debian based Linux systems run:
```
sudo apt-get update
sudo apt-get install nodejs npm
```

### Development SQLite Dependencies
To setup a session for development it may be necessary to install python and make sure it is in the path. This is because if a SQLite binary cannot be found for the installed version of Electron it will need to be built from source and the source includes python code.

For Debian based Linux systems run:
```
sudo apt-get update
sudo apt-get install python
```
Loading