Compare commits

..

16 Commits

Author SHA1 Message Date
azivner
1079ba1707 release 0.20.2 2018-09-01 14:08:37 +02:00
azivner
10ff504528 demo document update 2018-09-01 13:57:03 +02:00
azivner
005b66f4f4 smaller initial height of 800 to fit into 1600*900 display 2018-09-01 13:41:01 +02:00
azivner
792039227f cssClass is correctly filled for new note 2018-09-01 13:18:55 +02:00
azivner
bc38172792 readme update 2018-09-01 11:04:31 +02:00
azivner
c55bc471db fix note move to different parent in note cache 2018-08-31 19:55:56 +02:00
azivner
fdc3a7a7f2 fix "search" button click 2018-08-31 19:23:56 +02:00
azivner
a98d80db31 renamed subtree operations in context menu from "branch" to "subtree" 2018-08-31 18:22:53 +02:00
azivner
65d99f3f06 fixed bug which caused incorrect ordering of lazy loaded branches 2018-08-31 17:29:54 +02:00
azivner
85215aa440 fix timing issue when saving changes to notes 2018-08-31 00:08:04 +02:00
azivner
cfa4cc4931 fix undefined Sync section in the config file 2018-08-30 23:28:38 +02:00
azivner
ce9805c5bc protection against deleting root note 2018-08-30 22:38:34 +02:00
azivner
0442a44aab font slightly larger in setup + tiny visual tweaks 2018-08-30 22:28:57 +02:00
azivner
be22d3cb4c new server package build without using pkg (fixes images stuff) 2018-08-30 21:57:14 +02:00
azivner
dcc770c443 readme update 2018-08-30 11:56:12 +02:00
azivner
a2d7be445f demo db update 2018-08-30 00:42:02 +02:00
31 changed files with 258 additions and 610 deletions

View File

@@ -5,44 +5,34 @@ Trilium Notes is a hierarchical note taking application. Picture tells a thousan
![](https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png) ![](https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png)
See other pictures in [screenshot tour](https://github.com/zadam/trilium/wiki/Screenshot-tour).
## Features ## Features
* Notes can be arranged into arbitrarily deep hierarchy * Notes can be arranged into arbitrarily deep hierarchy (tree)
* Notes can have more than 1 parents - see [cloning](https://github.com/zadam/trilium/wiki/Cloning-notes) * Notes can have more than 1 parents - see [cloning](https://github.com/zadam/trilium/wiki/Cloning-notes)
* WYSIWYG (What You See Is What You Get) editing * Rich WYSIWYG note editing including e.g. tables and images
* Support for editing [notes with source code](https://raw.githubusercontent.com/wiki/zadam/trilium/images/code-note.png), including syntax highlighting
* Fast and easy [navigation between notes](https://github.com/zadam/trilium/wiki/Note-navigation) * Fast and easy [navigation between notes](https://github.com/zadam/trilium/wiki/Note-navigation)
* Seamless note versioning * Seamless [note versioning](https://github.com/zadam/trilium/wiki/Note-revisions)
* Note labels can be used to tag/label notes as an alternative note organization and querying * Note [attributes](https://github.com/zadam/trilium/wiki/Attributes) can be used for note organization, querying and advanced [[scripting|scripts]]
* Can be deployed as web application and / or desktop application with offline access (electron based) * [Synchronization](https://github.com/zadam/trilium/wiki/Synchronization) with self-hosted sync server
* [Synchronization with](https://github.com/zadam/trilium/wiki/Synchronization) self-hosted sync server
* Strong [note encryption](https://github.com/zadam/trilium/wiki/Protected-notes) * Strong [note encryption](https://github.com/zadam/trilium/wiki/Protected-notes)
* [Scripting](https://github.com/zadam/trilium/wiki/Scripts) - see [Advanced showcases](https://github.com/zadam/trilium/wiki/Advanced-showcases)
* Scales well in both usability and performance upwards of 100 000 notes
## Builds ## Builds
* If you want to install Trilium on server, follow [this page](https://github.com/zadam/trilium/wiki/Installation-as-webapp) Trilium is provided as either desktop application ([Electron](https://electronjs.org)-based) or web application hosted on your server.
* If you want to use Trilium on the desktop, download binary release for your platform from [latest release](https://github.com/zadam/trilium/releases/latest), unzip the package and run ```trilium``` executable. * If you want to use Trilium on the desktop, download binary release for your platform from [latest release](https://github.com/zadam/trilium/releases/latest), unzip the package and run ```trilium``` executable.
* If you want to install Trilium on server, follow [this page](https://github.com/zadam/trilium/wiki/Server-installation).
* Currently only recent Chrome and Firefox are supported (tested) browsers.
## Supported platforms ## Status
Desktop (electron-based) 64-bit builds are available for Linux and Windows. Trilium is beta quality software. While it is reasonably feature complete and is tested by its author, it lacks proper testing by more users. It's not yet recommended for daily use, but testing and experimentation is encouraged.
Requirements for web based installation are [outlined here](https://github.com/zadam/trilium/wiki/Installation-as-webapp).
Currently only recent Chrome and Firefox are supported (tested) browsers. Other modern browsers (not IE) might work as well.
## Documentation ## Documentation
List of documentation pages: [See wiki for complete list of documentation pages.](https://github.com/zadam/trilium/wiki/)
* [Installation as webapp](https://github.com/zadam/trilium/wiki/Installation-as-webapp)
* [Note navigation](https://github.com/zadam/trilium/wiki/Note-navigation)
* [Tree manipulation](https://github.com/zadam/trilium/wiki/Tree-manipulation)
* [Labels](https://github.com/zadam/trilium/wiki/Labels)
* [Links](https://github.com/zadam/trilium/wiki/Links)
* [Cloning notes](https://github.com/zadam/trilium/wiki/Cloning-notes)
* [Protected notes](https://github.com/zadam/trilium/wiki/Protected-notes)
* [Synchronization](https://github.com/zadam/trilium/wiki/Synchronization)
* [Document](https://github.com/zadam/trilium/wiki/Document)
* [Theming](https://github.com/zadam/trilium/wiki/Theming)
* [Keyboard shortcuts](https://github.com/zadam/trilium/wiki/Keyboard-shortcuts)
* [Troubleshooting](https://github.com/zadam/trilium/wiki/Troubleshooting)

View File

@@ -1,23 +0,0 @@
#!/usr/bin/env bash
if [[ $# -eq 0 ]] ; then
echo "Missing argument of new version"
exit 1
fi
VERSION=$1
PKG_DIR=dist/trilium-linux-x64-server
mkdir $PKG_DIR
pkg . --targets node8-linux-x64 --output ${PKG_DIR}/trilium
chmod +x ${PKG_DIR}/trilium
cp node_modules/sqlite3/lib/binding/node-v57-linux-x64/node_sqlite3.node ${PKG_DIR}/
cp node_modules/scrypt/build/Release/scrypt.node ${PKG_DIR}/
cd dist
7z a trilium-linux-x64-server-${VERSION}.7z trilium-linux-x64-server

38
bin/build-server.sh Executable file
View File

@@ -0,0 +1,38 @@
#!/usr/bin/env bash
if [[ $# -eq 0 ]] ; then
echo "Missing argument of new version"
exit 1
fi
VERSION=$1
PKG_DIR=dist/trilium-linux-x64-server
NODE_VERSION=8.11.4
rm -r $PKG_DIR
mkdir $PKG_DIR
cd $PKG_DIR
wget https://nodejs.org/dist/latest-v8.x/node-v${NODE_VERSION}-linux-x64.tar.xz
tar xvfJ node-v${NODE_VERSION}-linux-x64.tar.xz
rm node-v${NODE_VERSION}-linux-x64.tar.xz
mv node-v${NODE_VERSION}-linux-x64 node
cp -r ../../node_modules/ ./
cp -r ../../src/ ./
cp -r ../../db/ ./
cp -r ../../package.json ./
cp -r ../../package-lock.json ./
cp -r ../../README.md ./
cp -r ../../LICENSE ./
cp -r ../../config-sample.ini ./
rm -r ./node_modules/electron*
printf "#/bin/sh\n./node/bin/node src/www" > trilium.sh
chmod 755 trilium.sh
cd ..
7z a trilium-linux-x64-server-${VERSION}.7z trilium-linux-x64-server

View File

@@ -1,5 +1,9 @@
#!/usr/bin/env bash #!/usr/bin/env bash
rm -r node_modules
npm install
echo "Deleting existing builds" echo "Deleting existing builds"
rm -r dist/* rm -r dist/*
@@ -11,7 +15,7 @@ echo "Rebuilding binaries for linux-ia32"
./node_modules/.bin/electron-packager . --out=dist --platform=win32 --arch=x64 --overwrite ./node_modules/.bin/electron-packager . --out=dist --platform=win32 --arch=x64 --overwrite
# we build x64 as second so that we keep X64 binaries in node_modules for local development # we build x64 as second so that we keep X64 binaries in node_modules for local development and server build
echo "Rebuilding binaries for linux-x64" echo "Rebuilding binaries for linux-x64"
./node_modules/.bin/electron-rebuild --arch=x64 ./node_modules/.bin/electron-rebuild --arch=x64

View File

@@ -78,7 +78,7 @@ github-release upload \
echo "Packaging server version" echo "Packaging server version"
bin/build-pkg.sh $VERSION bin/build-server.sh $VERSION
github-release upload \ github-release upload \
--tag $TAG \ --tag $TAG \

View File

@@ -24,7 +24,6 @@ INSERT INTO attributes VALUES('yVZf4BNnV0Ev','8APXN4n4Hnb8','label','person','',
INSERT INTO attributes VALUES('8oAIhmdTUvEg','8APXN4n4Hnb8','relation','template','WkdQrYTnsgxP',4,'2018-08-28T20:50:22.465Z','2018-08-28T20:50:22.465Z',0,'GbRQJL+GEp',0); INSERT INTO attributes VALUES('8oAIhmdTUvEg','8APXN4n4Hnb8','relation','template','WkdQrYTnsgxP',4,'2018-08-28T20:50:22.465Z','2018-08-28T20:50:22.465Z',0,'GbRQJL+GEp',0);
INSERT INTO attributes VALUES('cneD8mgzvai7','s0Hhsl0nb1bg','label','dateOfBirth','1926-04-21',0,'2018-08-28T20:50:22.468Z','2018-08-28T20:50:22.468Z',0,'cXdtlXqXEB',0); INSERT INTO attributes VALUES('cneD8mgzvai7','s0Hhsl0nb1bg','label','dateOfBirth','1926-04-21',0,'2018-08-28T20:50:22.468Z','2018-08-28T20:50:22.468Z',0,'cXdtlXqXEB',0);
INSERT INTO attributes VALUES('8z9zChaZOTDH','s0Hhsl0nb1bg','relation','isPartnerOf','8APXN4n4Hnb8',1,'2018-08-28T20:50:22.471Z','2018-08-28T20:50:22.471Z',0,'33J9ZyF2ho',0); INSERT INTO attributes VALUES('8z9zChaZOTDH','s0Hhsl0nb1bg','relation','isPartnerOf','8APXN4n4Hnb8',1,'2018-08-28T20:50:22.471Z','2018-08-28T20:50:22.471Z',0,'33J9ZyF2ho',0);
INSERT INTO attributes VALUES('Gfhzgi1fbbYY','s0Hhsl0nb1bg','relation','isPartnerOf','8APXN4n4Hnb8',2,'2018-08-28T20:50:22.474Z','2018-08-28T20:50:22.474Z',0,'4vBDYs4T8T',0);
INSERT INTO attributes VALUES('gdJaomu0xBOu','s0Hhsl0nb1bg','relation','isChildOf','cUYFEvsdY6N6',3,'2018-08-28T20:50:22.477Z','2018-08-28T20:50:22.477Z',0,'BIFGASgBgq',0); INSERT INTO attributes VALUES('gdJaomu0xBOu','s0Hhsl0nb1bg','relation','isChildOf','cUYFEvsdY6N6',3,'2018-08-28T20:50:22.477Z','2018-08-28T20:50:22.477Z',0,'BIFGASgBgq',0);
INSERT INTO attributes VALUES('9Jwa8a993yen','s0Hhsl0nb1bg','relation','isChildOf','wHb2YBwhjxiD',4,'2018-08-28T20:50:22.479Z','2018-08-28T20:50:22.480Z',0,'TG9GD3do5B',0); INSERT INTO attributes VALUES('9Jwa8a993yen','s0Hhsl0nb1bg','relation','isChildOf','wHb2YBwhjxiD',4,'2018-08-28T20:50:22.479Z','2018-08-28T20:50:22.480Z',0,'TG9GD3do5B',0);
INSERT INTO attributes VALUES('Xe1QAkKsWWpF','s0Hhsl0nb1bg','relation','hasChild','baafKkgNGYLm',5,'2018-08-28T20:50:22.482Z','2018-08-28T20:50:22.482Z',0,'dqIMe2e19M',0); INSERT INTO attributes VALUES('Xe1QAkKsWWpF','s0Hhsl0nb1bg','relation','hasChild','baafKkgNGYLm',5,'2018-08-28T20:50:22.482Z','2018-08-28T20:50:22.482Z',0,'dqIMe2e19M',0);
@@ -94,12 +93,6 @@ INSERT INTO attributes VALUES('f0Ow5PJyhbYY','nUgD4SYx2gt7','label','taskTagRoot
INSERT INTO attributes VALUES('6or0Gr0hFW2t','9HHqPxJkLAkl','label','taskDoneRoot','',0,'2018-08-28T20:50:48.626Z','2018-08-28T20:50:48.626Z',0,'e8MjtXx+UD',0); INSERT INTO attributes VALUES('6or0Gr0hFW2t','9HHqPxJkLAkl','label','taskDoneRoot','',0,'2018-08-28T20:50:48.626Z','2018-08-28T20:50:48.626Z',0,'e8MjtXx+UD',0);
INSERT INTO attributes VALUES('pSVR4p5EM3i1','XVlWndK4Oh6A','label','run','frontendStartup',0,'2018-08-28T20:50:48.630Z','2018-08-28T20:50:48.630Z',0,'/Og2vneotj',0); INSERT INTO attributes VALUES('pSVR4p5EM3i1','XVlWndK4Oh6A','label','run','frontendStartup',0,'2018-08-28T20:50:48.630Z','2018-08-28T20:50:48.630Z',0,'/Og2vneotj',0);
INSERT INTO attributes VALUES('uSj6vDAaM3Z8','gYNJtGEPGW95','label','appCss','',0,'2018-08-28T20:50:48.636Z','2018-08-28T20:50:48.636Z',0,'TssM5mauP3',0); INSERT INTO attributes VALUES('uSj6vDAaM3Z8','gYNJtGEPGW95','label','appCss','',0,'2018-08-28T20:50:48.636Z','2018-08-28T20:50:48.636Z',0,'TssM5mauP3',0);
INSERT INTO attributes VALUES('cyujybJzh4It','HbtlYiMvmm4V','relation','runOnAttributeChange','gYVdjKAJeImD',0,'2018-08-28T20:50:48.640Z','2018-08-28T20:50:48.640Z',0,'6ziRrHJAhQ',1);
INSERT INTO attributes VALUES('MEr8Y48B5fuA','HbtlYiMvmm4V','label-definition','location','{"labelType":"text","multiplicityType":"singlevalue","isPromoted":true}',1,'2018-08-28T20:50:48.652Z','2018-08-28T20:50:48.652Z',0,'SHKsaKOZDy',1);
INSERT INTO attributes VALUES('0zEib333MHaK','HbtlYiMvmm4V','label-definition','tag','{"labelType":"text","multiplicityType":"multivalue","isPromoted":true}',2,'2018-08-28T20:50:48.661Z','2018-08-28T20:50:48.661Z',0,'qGaGNt4Il4',1);
INSERT INTO attributes VALUES('XsQlrpkI26vx','HbtlYiMvmm4V','label-definition','todoDate','{"labelType":"date","multiplicityType":"singlevalue","isPromoted":true}',3,'2018-08-28T20:50:48.707Z','2018-08-28T20:50:48.708Z',0,'K1zIHbXWjg',1);
INSERT INTO attributes VALUES('jbVAxy9rOvw7','HbtlYiMvmm4V','label-definition','doneDate','{"labelType":"date","multiplicityType":"singlevalue","isPromoted":true}',4,'2018-08-28T20:50:48.716Z','2018-08-28T20:50:48.717Z',0,'ibiT2W04+I',1);
INSERT INTO attributes VALUES('I98xKISNcMwY','HbtlYiMvmm4V','label','taskTemplate','',5,'2018-08-28T20:50:48.724Z','2018-08-28T20:50:48.724Z',0,'r2hEWMgitj',0);
INSERT INTO attributes VALUES('lKaZjiGo2X1T','gDrEI7LFWqrP','label','hideChildrenOverview','',0,'2018-08-28T20:50:22.253Z','2018-08-28T20:50:22.253Z',0,'qGo6F87JjB',0); INSERT INTO attributes VALUES('lKaZjiGo2X1T','gDrEI7LFWqrP','label','hideChildrenOverview','',0,'2018-08-28T20:50:22.253Z','2018-08-28T20:50:22.253Z',0,'qGo6F87JjB',0);
INSERT INTO attributes VALUES('wycKIOGBLBr2','gDrEI7LFWqrP','relation','familyContainer','YULCKCrWJJZ6',1,'2018-08-28T20:50:22.257Z','2018-08-28T20:50:22.257Z',0,'wRgPdq8myG',0); INSERT INTO attributes VALUES('wycKIOGBLBr2','gDrEI7LFWqrP','relation','familyContainer','YULCKCrWJJZ6',1,'2018-08-28T20:50:22.257Z','2018-08-28T20:50:22.257Z',0,'wRgPdq8myG',0);
INSERT INTO attributes VALUES('45sz6us7COFA','gDrEI7LFWqrP','relation','renderNote','Z5yhGE5g0UB5',2,'2018-08-28T20:52:45.872Z','2018-08-28T20:52:45.872Z',0,'Rf2zkiB3bY',0); INSERT INTO attributes VALUES('45sz6us7COFA','gDrEI7LFWqrP','relation','renderNote','Z5yhGE5g0UB5',2,'2018-08-28T20:52:45.872Z','2018-08-28T20:52:45.872Z',0,'Rf2zkiB3bY',0);
@@ -107,9 +100,6 @@ INSERT INTO attributes VALUES('4m6dIcDjkC2q','8LOr7xUMuWD4','label','hideChildre
INSERT INTO attributes VALUES('UbMObRd5U1p3','8LOr7xUMuWD4','relation','renderNote','YBAcWV8TjYEp',1,'2018-08-28T20:54:40.517Z','2018-08-28T20:56:27.135Z',0,'iqKSOL+B1L',0); INSERT INTO attributes VALUES('UbMObRd5U1p3','8LOr7xUMuWD4','relation','renderNote','YBAcWV8TjYEp',1,'2018-08-28T20:54:40.517Z','2018-08-28T20:56:27.135Z',0,'iqKSOL+B1L',0);
INSERT INTO attributes VALUES('2YBCX6bTRrde','qEi5St9PBPCP','label','run','frontendStartup',0,'2018-08-28T20:50:36.178Z','2018-08-28T20:50:36.179Z',0,'hDcu/CoV8A',0); INSERT INTO attributes VALUES('2YBCX6bTRrde','qEi5St9PBPCP','label','run','frontendStartup',0,'2018-08-28T20:50:36.178Z','2018-08-28T20:50:36.179Z',0,'hDcu/CoV8A',0);
INSERT INTO attributes VALUES('IhuXzxRoCdJj','qEi5St9PBPCP','relation','targetNote','8LOr7xUMuWD4',1,'2018-08-28T20:58:15.164Z','2018-08-28T20:58:15.164Z',0,'un6P3bD9wb',0); INSERT INTO attributes VALUES('IhuXzxRoCdJj','qEi5St9PBPCP','relation','targetNote','8LOr7xUMuWD4',1,'2018-08-28T20:58:15.164Z','2018-08-28T20:58:15.164Z',0,'un6P3bD9wb',0);
INSERT INTO attributes VALUES('0p8vtV5LoH0e','L9qettZi0csz','label','taskTodoRoot','',0,'2018-08-28T20:50:48.596Z','2018-08-28T20:50:48.596Z',0,'mKdjsJRSwv',0);
INSERT INTO attributes VALUES('lCyxJnXmNy5x','L9qettZi0csz','label','child:task','',1,'2018-08-28T21:11:09.138Z','2018-08-28T21:11:09.138Z',0,'EarSd1tApi',0);
INSERT INTO attributes VALUES('ifqAReEYdFh6','L9qettZi0csz','relation','child:template','HbtlYiMvmm4V',2,'2018-08-28T21:11:09.143Z','2018-08-28T21:11:09.143Z',0,'JXcAyc3in4',0);
INSERT INTO attributes VALUES('wfv43UPhvRDB','1s6SGhByxkoU','label','cssClass','todo',3,'2018-08-28T21:11:48.954Z','2018-08-28T21:11:48.955Z',0,'CFjJZ/EjzN',0); INSERT INTO attributes VALUES('wfv43UPhvRDB','1s6SGhByxkoU','label','cssClass','todo',3,'2018-08-28T21:11:48.954Z','2018-08-28T21:11:48.955Z',0,'CFjJZ/EjzN',0);
INSERT INTO attributes VALUES('vnDnf7erhpHf','eXHZAKsMYgur','relation','child:template','TlGCAdcfxkOT',0,'2018-08-29T17:13:34.317Z','2018-08-29T17:13:34.317Z',0,'8W6ql67C0G',0); INSERT INTO attributes VALUES('vnDnf7erhpHf','eXHZAKsMYgur','relation','child:template','TlGCAdcfxkOT',0,'2018-08-29T17:13:34.317Z','2018-08-29T17:13:34.317Z',0,'8W6ql67C0G',0);
INSERT INTO attributes VALUES('Vwo09bhVsDFP','TjWEndYCCg7g','relation','child:template','TlGCAdcfxkOT',0,'2018-08-29T17:15:28.700Z','2018-08-29T17:15:28.700Z',0,'Dowmf6VzWU',0); INSERT INTO attributes VALUES('Vwo09bhVsDFP','TjWEndYCCg7g','relation','child:template','TlGCAdcfxkOT',0,'2018-08-29T17:15:28.700Z','2018-08-29T17:15:28.700Z',0,'Dowmf6VzWU',0);
@@ -159,7 +149,6 @@ INSERT INTO attributes VALUES('h0git26ZEGDy','rUsGgtpohm7T','relation','template
INSERT INTO attributes VALUES('mcqG8yBYNxTo','rUsGgtpohm7T','label','dateNote','2017-12-23',1,'2018-08-29T17:31:06.444Z','2018-08-29T17:31:06.444Z',0,'BdarwYoBuQ',0); INSERT INTO attributes VALUES('mcqG8yBYNxTo','rUsGgtpohm7T','label','dateNote','2017-12-23',1,'2018-08-29T17:31:06.444Z','2018-08-29T17:31:06.444Z',0,'BdarwYoBuQ',0);
INSERT INTO attributes VALUES('KtkikXf0X9nc','sXti7HgialF2','relation','template','Lt8IUldw7d7H',0,'2018-08-29T17:29:43.173Z','2018-08-29T17:29:43.173Z',0,'iFuRC25cyS',0); INSERT INTO attributes VALUES('KtkikXf0X9nc','sXti7HgialF2','relation','template','Lt8IUldw7d7H',0,'2018-08-29T17:29:43.173Z','2018-08-29T17:29:43.173Z',0,'iFuRC25cyS',0);
INSERT INTO attributes VALUES('3LO087cn7L37','sXti7HgialF2','label','dateNote','2017-12-24',1,'2018-08-29T17:31:14.645Z','2018-08-29T17:31:14.645Z',0,'U2d5WjCqq4',0); INSERT INTO attributes VALUES('3LO087cn7L37','sXti7HgialF2','label','dateNote','2017-12-24',1,'2018-08-29T17:31:14.645Z','2018-08-29T17:31:14.645Z',0,'U2d5WjCqq4',0);
INSERT INTO attributes VALUES('kNp0J9uXoC8U','tX80udgxnW5n','label','weight','75',2,'2018-08-29T17:31:58.692Z','2018-08-29T17:31:58.692Z',0,'Fi6QCUFo5i',0);
INSERT INTO attributes VALUES('tgeFjZXxRCVr','cwPuYRAGKtUi','label','weight','75.4',2,'2018-08-29T17:32:04.330Z','2018-08-29T17:32:04.330Z',0,'1qYNDu4uln',0); INSERT INTO attributes VALUES('tgeFjZXxRCVr','cwPuYRAGKtUi','label','weight','75.4',2,'2018-08-29T17:32:04.330Z','2018-08-29T17:32:04.330Z',0,'1qYNDu4uln',0);
INSERT INTO attributes VALUES('QkQATsOfaiZ2','1Fi3MpUkZkLk','label','weight','75.2',2,'2018-08-29T17:32:08.910Z','2018-08-29T17:32:08.910Z',0,'ildTmrBJED',0); INSERT INTO attributes VALUES('QkQATsOfaiZ2','1Fi3MpUkZkLk','label','weight','75.2',2,'2018-08-29T17:32:08.910Z','2018-08-29T17:32:08.910Z',0,'ildTmrBJED',0);
INSERT INTO attributes VALUES('cjrMaMByU8d7','Iha4YwchR413','label','weight','76',2,'2018-08-29T17:32:13.915Z','2018-08-29T17:32:13.915Z',0,'PSxYyr9giQ',0); INSERT INTO attributes VALUES('cjrMaMByU8d7','Iha4YwchR413','label','weight','76',2,'2018-08-29T17:32:13.915Z','2018-08-29T17:32:13.915Z',0,'PSxYyr9giQ',0);
@@ -173,7 +162,6 @@ INSERT INTO attributes VALUES('LTGKKLNRYSM6','Z4CC9azzMNhg','label','taskLocatio
INSERT INTO attributes VALUES('J0g9ODCjbAOD','uP3V8BqwXC05','label','cssClass','todo',4,'2018-08-29T19:42:47.875Z','2018-08-29T19:42:47.875Z',0,'0mfYyV3m0Y',0); INSERT INTO attributes VALUES('J0g9ODCjbAOD','uP3V8BqwXC05','label','cssClass','todo',4,'2018-08-29T19:42:47.875Z','2018-08-29T19:42:47.875Z',0,'0mfYyV3m0Y',0);
INSERT INTO attributes VALUES('OmZAhWAt2bIe','uP3V8BqwXC05','label','tag','groceries',5,'2018-08-29T19:42:51.115Z','2018-08-29T19:42:51.115Z',0,'9CP3TeprnT',0); INSERT INTO attributes VALUES('OmZAhWAt2bIe','uP3V8BqwXC05','label','tag','groceries',5,'2018-08-29T19:42:51.115Z','2018-08-29T19:42:51.115Z',0,'9CP3TeprnT',0);
INSERT INTO attributes VALUES('n2RHZ8Sl0lQF','q6A62bZE2R1r','label','taskTagNote','groceries',1,'2018-08-29T19:42:51.152Z','2018-08-29T19:42:51.152Z',0,'ke/5NXvA5v',0); INSERT INTO attributes VALUES('n2RHZ8Sl0lQF','q6A62bZE2R1r','label','taskTagNote','groceries',1,'2018-08-29T19:42:51.152Z','2018-08-29T19:42:51.152Z',0,'ke/5NXvA5v',0);
INSERT INTO attributes VALUES('01UuzuSR78Kj','uP3V8BqwXC05','label','todoDate','2017-12-22',6,'2018-08-29T19:43:01.973Z','2018-08-29T19:43:01.974Z',0,'EutrqW3a5b',0);
INSERT INTO attributes VALUES('ch6YD8XTrUr5','XoLNnnlwdjBi','label','task','',1,'2018-08-29T19:43:06.412Z','2018-08-29T19:43:06.412Z',0,'jQHXfhklXB',0); INSERT INTO attributes VALUES('ch6YD8XTrUr5','XoLNnnlwdjBi','label','task','',1,'2018-08-29T19:43:06.412Z','2018-08-29T19:43:06.412Z',0,'jQHXfhklXB',0);
INSERT INTO attributes VALUES('TZkneA5u23Kw','XoLNnnlwdjBi','relation','template','HbtlYiMvmm4V',2,'2018-08-29T19:43:06.432Z','2018-08-29T19:43:06.432Z',0,'0ePfOmtYfE',0); INSERT INTO attributes VALUES('TZkneA5u23Kw','XoLNnnlwdjBi','relation','template','HbtlYiMvmm4V',2,'2018-08-29T19:43:06.432Z','2018-08-29T19:43:06.432Z',0,'0ePfOmtYfE',0);
INSERT INTO attributes VALUES('4TPlivzsoHPv','XoLNnnlwdjBi','label','location','mall',3,'2018-08-29T19:43:40.276Z','2018-08-29T19:43:40.276Z',0,'vh+2pYyK3U',0); INSERT INTO attributes VALUES('4TPlivzsoHPv','XoLNnnlwdjBi','label','location','mall',3,'2018-08-29T19:43:40.276Z','2018-08-29T19:43:40.276Z',0,'vh+2pYyK3U',0);
@@ -184,8 +172,6 @@ INSERT INTO attributes VALUES('Li7MCkVJwtoe','Lom0LEnCes1l','label','taskTagNote
INSERT INTO attributes VALUES('7hNexvifrZ9F','XoLNnnlwdjBi','label','todoDate','2017-12-20',6,'2018-08-29T19:43:50.837Z','2018-08-29T19:43:50.837Z',0,'+nJtkDbMMG',0); INSERT INTO attributes VALUES('7hNexvifrZ9F','XoLNnnlwdjBi','label','todoDate','2017-12-20',6,'2018-08-29T19:43:50.837Z','2018-08-29T19:43:50.837Z',0,'+nJtkDbMMG',0);
INSERT INTO attributes VALUES('OllsfdAN2wCw','prjUbW6QtsL4','label','task','',1,'2018-08-29T19:46:42.152Z','2018-08-29T19:46:42.152Z',0,'TCfgA6DVBv',0); INSERT INTO attributes VALUES('OllsfdAN2wCw','prjUbW6QtsL4','label','task','',1,'2018-08-29T19:46:42.152Z','2018-08-29T19:46:42.152Z',0,'TCfgA6DVBv',0);
INSERT INTO attributes VALUES('VjUlZR2yv2Vs','prjUbW6QtsL4','relation','template','HbtlYiMvmm4V',2,'2018-08-29T19:46:42.158Z','2018-08-29T19:46:42.158Z',0,'eFW+ARGCQN',0); INSERT INTO attributes VALUES('VjUlZR2yv2Vs','prjUbW6QtsL4','relation','template','HbtlYiMvmm4V',2,'2018-08-29T19:46:42.158Z','2018-08-29T19:46:42.158Z',0,'eFW+ARGCQN',0);
INSERT INTO attributes VALUES('yc58HTwoM3b0','prjUbW6QtsL4','label','todoDate','2017-12-20',3,'2018-08-29T19:47:53.123Z','2018-08-29T19:47:53.123Z',0,'UnKvGyVk7X',0);
INSERT INTO attributes VALUES('JVlFEQPYUiCR','prjUbW6QtsL4','label','doneDate','2017-12-18',5,'2018-08-29T19:48:00.928Z','2018-08-29T19:48:00.928Z',0,'nSVv39kafi',0);
INSERT INTO attributes VALUES('PwkDmazJTPAM','prjUbW6QtsL4','label','cssClass','done',6,'2018-08-29T19:48:00.986Z','2018-08-29T19:48:00.986Z',0,'JQ5wGmAqdM',0); INSERT INTO attributes VALUES('PwkDmazJTPAM','prjUbW6QtsL4','label','cssClass','done',6,'2018-08-29T19:48:00.986Z','2018-08-29T19:48:00.986Z',0,'JQ5wGmAqdM',0);
INSERT INTO attributes VALUES('Q3u9O4u2utP3','prjUbW6QtsL4','label','location','mall',7,'2018-08-29T19:49:13.815Z','2018-08-29T19:49:13.816Z',0,'JkBPyNcdpA',0); INSERT INTO attributes VALUES('Q3u9O4u2utP3','prjUbW6QtsL4','label','location','mall',7,'2018-08-29T19:49:13.815Z','2018-08-29T19:49:13.816Z',0,'JkBPyNcdpA',0);
INSERT INTO attributes VALUES('SMyP8V9L8vBj','prjUbW6QtsL4','label','tag','christmas',8,'2018-08-29T19:49:35.716Z','2018-08-29T19:49:35.717Z',0,'polIDXvbFh',0); INSERT INTO attributes VALUES('SMyP8V9L8vBj','prjUbW6QtsL4','label','tag','christmas',8,'2018-08-29T19:49:35.716Z','2018-08-29T19:49:35.717Z',0,'polIDXvbFh',0);
@@ -213,3 +199,17 @@ INSERT INTO attributes VALUES('YngESU7G6T62','TTl2nD4CqzC9','label','taskLocatio
INSERT INTO attributes VALUES('PEbrAcRaFOXE','ve3Ib30x9nGf','label','cssClass','todo',4,'2018-08-29T19:59:38.915Z','2018-08-29T19:59:38.915Z',0,'Xepyx9jFGP',0); INSERT INTO attributes VALUES('PEbrAcRaFOXE','ve3Ib30x9nGf','label','cssClass','todo',4,'2018-08-29T19:59:38.915Z','2018-08-29T19:59:38.915Z',0,'Xepyx9jFGP',0);
INSERT INTO attributes VALUES('cdSIp3FJ50vX','ve3Ib30x9nGf','label','todoDate','2017-12-18',5,'2018-08-29T19:59:46.829Z','2018-08-29T20:00:18.351Z',0,'TWZfKhjpe3',0); INSERT INTO attributes VALUES('cdSIp3FJ50vX','ve3Ib30x9nGf','label','todoDate','2017-12-18',5,'2018-08-29T19:59:46.829Z','2018-08-29T20:00:18.351Z',0,'TWZfKhjpe3',0);
INSERT INTO attributes VALUES('TZa1McDCnNHj','uP3V8BqwXC05','label','tag','shopping',7,'2018-08-29T20:01:47.691Z','2018-08-29T20:01:47.691Z',0,'kH6CGtIT/r',0); INSERT INTO attributes VALUES('TZa1McDCnNHj','uP3V8BqwXC05','label','tag','shopping',7,'2018-08-29T20:01:47.691Z','2018-08-29T20:01:47.691Z',0,'kH6CGtIT/r',0);
INSERT INTO attributes VALUES('kNp0J9uXoC8U','tX80udgxnW5n','label','weight','74.9',2,'2018-08-29T17:31:58.692Z','2018-08-29T21:30:23.669Z',0,'xagvtLz48G',0);
INSERT INTO attributes VALUES('0F9G0OQujXVO','prjUbW6QtsL4','label','tag','shopping',9,'2018-08-30T07:54:40.727Z','2018-08-30T07:54:40.728Z',0,'XyCvk4htB5',0);
INSERT INTO attributes VALUES('yc58HTwoM3b0','prjUbW6QtsL4','label','todoDate','2017-12-20',3,'2018-08-29T19:47:53.123Z','2018-08-30T07:56:53.874Z',0,'UnKvGyVk7X',0);
INSERT INTO attributes VALUES('JVlFEQPYUiCR','prjUbW6QtsL4','label','doneDate','2017-12-24',5,'2018-08-29T19:48:00.928Z','2018-08-30T07:57:00.569Z',0,'nbXCZOrqq6',0);
INSERT INTO attributes VALUES('01UuzuSR78Kj','uP3V8BqwXC05','label','todoDate','2017-12-24',6,'2018-08-29T19:43:01.973Z','2018-08-30T08:04:55.301Z',0,'tDEAzDOKYn',0);
INSERT INTO attributes VALUES('cyujybJzh4It','HbtlYiMvmm4V','relation','runOnAttributeChange','gYVdjKAJeImD',0,'2018-08-28T20:50:48.640Z','2018-08-28T20:50:48.640Z',0,'6ziRrHJAhQ',1);
INSERT INTO attributes VALUES('MEr8Y48B5fuA','HbtlYiMvmm4V','label-definition','location','{"isPromoted":true,"labelType":"text","multiplicityType":"singlevalue"}',1,'2018-08-28T20:50:48.652Z','2018-08-28T20:50:48.652Z',0,'SHKsaKOZDy',1);
INSERT INTO attributes VALUES('0zEib333MHaK','HbtlYiMvmm4V','label-definition','tag','{"isPromoted":true,"labelType":"text","multiplicityType":"multivalue"}',2,'2018-08-28T20:50:48.661Z','2018-08-28T20:50:48.661Z',0,'qGaGNt4Il4',1);
INSERT INTO attributes VALUES('XsQlrpkI26vx','HbtlYiMvmm4V','label-definition','todoDate','{"isPromoted":true,"labelType":"date","multiplicityType":"singlevalue"}',3,'2018-08-28T20:50:48.707Z','2018-08-28T20:50:48.708Z',0,'K1zIHbXWjg',1);
INSERT INTO attributes VALUES('jbVAxy9rOvw7','HbtlYiMvmm4V','label-definition','doneDate','{"isPromoted":true,"labelType":"date","multiplicityType":"singlevalue"}',4,'2018-08-28T20:50:48.716Z','2018-08-28T20:50:48.717Z',0,'ibiT2W04+I',1);
INSERT INTO attributes VALUES('0p8vtV5LoH0e','L9qettZi0csz','label','taskTodoRoot','',0,'2018-08-28T20:50:48.596Z','2018-08-28T20:50:48.596Z',0,'mKdjsJRSwv',0);
INSERT INTO attributes VALUES('lCyxJnXmNy5x','L9qettZi0csz','label','child:task','',1,'2018-08-28T21:11:09.138Z','2018-08-28T21:11:09.138Z',0,'EarSd1tApi',0);
INSERT INTO attributes VALUES('ifqAReEYdFh6','L9qettZi0csz','relation','child:template','HbtlYiMvmm4V',2,'2018-08-28T21:11:09.143Z','2018-08-28T21:11:09.143Z',0,'JXcAyc3in4',0);
INSERT INTO attributes VALUES('1hmYf4fJQmBk','L9qettZi0csz','label','child:cssClass','todo',3,'2018-09-01T11:20:29.168Z','2018-09-01T11:20:29.168Z',0,'toS3GWHG/9',0);

View File

@@ -1,9 +1,9 @@
INSERT INTO branches VALUES('root','root','none',0,NULL,1,0,'2018-01-01T00:00:00.000Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('root','root','none',0,NULL,1,0,'2018-01-01T00:00:00.000Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('dLgtLUFn3GoN','1Heh2acXfPNt','root',21,NULL,1,0,'2017-12-23T00:46:39.304Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('dLgtLUFn3GoN','1Heh2acXfPNt','root',21,NULL,1,0,'2017-12-23T00:46:39.304Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('QLfS835GSfIh','3RkyK9LI18dO','1Heh2acXfPNt',2,NULL,0,0,'2017-12-23T01:20:04.181Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('QLfS835GSfIh','3RkyK9LI18dO','1Heh2acXfPNt',5,NULL,1,0,'2017-12-23T01:20:04.181Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('wLTa2l3lYi83','HJusZTbBU494','3RkyK9LI18dO',1,NULL,1,0,'2017-12-23T01:20:50.709Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('wLTa2l3lYi83','HJusZTbBU494','3RkyK9LI18dO',1,NULL,1,0,'2017-12-23T01:20:50.709Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('jvhKcwz4pYTr','ZC78NlmdXeC6','WdWZFuWNVDZk',0,NULL,1,0,'2017-12-23T04:06:21.579Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('jvhKcwz4pYTr','ZC78NlmdXeC6','WdWZFuWNVDZk',0,NULL,1,0,'2017-12-23T04:06:21.579Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('CarTrwkGVcPz','NncfGH8dyNjJ','WdWZFuWNVDZk',1,NULL,0,0,'2017-12-23T04:06:24.012Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('CarTrwkGVcPz','NncfGH8dyNjJ','WdWZFuWNVDZk',1,NULL,1,0,'2017-12-23T04:06:24.012Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('6M7qPlr7at6N','eouCLkjbruai','NncfGH8dyNjJ',0,NULL,0,0,'2017-12-23T01:23:28.291Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('6M7qPlr7at6N','eouCLkjbruai','NncfGH8dyNjJ',0,NULL,0,0,'2017-12-23T01:23:28.291Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('tQgognnAH9WI','C44aq4mkaX67','NncfGH8dyNjJ',1,NULL,0,0,'2017-12-23T01:23:31.879Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('tQgognnAH9WI','C44aq4mkaX67','NncfGH8dyNjJ',1,NULL,0,0,'2017-12-23T01:23:31.879Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('xyAi7MmgvAgR','C44aq4mkaX67','ZC78NlmdXeC6',1,NULL,0,0,'2017-12-23T01:23:47.756Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('xyAi7MmgvAgR','C44aq4mkaX67','ZC78NlmdXeC6',1,NULL,0,0,'2017-12-23T01:23:47.756Z','','1970-01-01T00:00:00.000Z');
@@ -11,7 +11,7 @@ INSERT INTO branches VALUES('xQ3fjRp9yaPq','I6Cw88AirBBl','C44aq4mkaX67',0,NULL,
INSERT INTO branches VALUES('2GOsNT5LsvTP','mcEwFMSjhlvL','C44aq4mkaX67',1,NULL,0,0,'2017-12-23T01:29:35.974Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('2GOsNT5LsvTP','mcEwFMSjhlvL','C44aq4mkaX67',1,NULL,0,0,'2017-12-23T01:29:35.974Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('RxUiraiR655R','CF2lUIJAr6Ey','NncfGH8dyNjJ',2,NULL,0,0,'2017-12-23T01:34:37.658Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('RxUiraiR655R','CF2lUIJAr6Ey','NncfGH8dyNjJ',2,NULL,0,0,'2017-12-23T01:34:37.658Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('mZuSrZ18Zmv0','xkXwueRoDNeN','MG0wntwILQW6',0,NULL,0,0,'2017-12-23T01:35:40.306Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('mZuSrZ18Zmv0','xkXwueRoDNeN','MG0wntwILQW6',0,NULL,0,0,'2017-12-23T01:35:40.306Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('hbcWTnEnXPwF','eXHZAKsMYgur','1Heh2acXfPNt',5,NULL,0,0,'2017-12-23T03:32:42.868Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('hbcWTnEnXPwF','eXHZAKsMYgur','1Heh2acXfPNt',9,NULL,0,0,'2017-12-23T03:32:42.868Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('8a3aNxjG0nu7','2WU27ekfy07E','eXHZAKsMYgur',0,NULL,0,0,'2017-12-23T03:32:49.379Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('8a3aNxjG0nu7','2WU27ekfy07E','eXHZAKsMYgur',0,NULL,0,0,'2017-12-23T03:32:49.379Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('4Tu6vaPdCxCM','TjWEndYCCg7g','eXHZAKsMYgur',1,NULL,0,0,'2017-12-23T03:33:23.584Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('4Tu6vaPdCxCM','TjWEndYCCg7g','eXHZAKsMYgur',1,NULL,0,0,'2017-12-23T03:33:23.584Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('lBPOmhP12egP','8nRNDJGyGs2Z','TjWEndYCCg7g',0,NULL,0,0,'2017-12-23T03:33:37.327Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('lBPOmhP12egP','8nRNDJGyGs2Z','TjWEndYCCg7g',0,NULL,0,0,'2017-12-23T03:33:37.327Z','','1970-01-01T00:00:00.000Z');
@@ -33,12 +33,12 @@ INSERT INTO branches VALUES('gSRkHpB7Bu3D','pOFVzbXLmzhX','R6pheWjdwmNU',2,NULL,
INSERT INTO branches VALUES('6brdjeWDOB6w','0xtvjqrcGiRB','ZC78NlmdXeC6',0,NULL,0,0,'2017-12-23T04:02:06.650Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('6brdjeWDOB6w','0xtvjqrcGiRB','ZC78NlmdXeC6',0,NULL,0,0,'2017-12-23T04:02:06.650Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('AqKUM2zUVFUF','Zl69uXBSen0w','ZC78NlmdXeC6',2,NULL,1,0,'2017-12-23T04:02:16.685Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('AqKUM2zUVFUF','Zl69uXBSen0w','ZC78NlmdXeC6',2,NULL,1,0,'2017-12-23T04:02:16.685Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('Ez7NN2WVzRc4','62BKAQMVP2KW','Zl69uXBSen0w',1,NULL,0,0,'2017-12-23T04:02:39.164Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('Ez7NN2WVzRc4','62BKAQMVP2KW','Zl69uXBSen0w',1,NULL,0,0,'2017-12-23T04:02:39.164Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('t3vVElqMIQVa','h4OfLEAYspud','WdWZFuWNVDZk',2,NULL,1,0,'2017-12-23T04:06:25.769Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('t3vVElqMIQVa','h4OfLEAYspud','WdWZFuWNVDZk',2,NULL,0,0,'2017-12-23T04:06:25.769Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('O983DHtLpgmr','1hASbLRDL7oo','h4OfLEAYspud',0,NULL,0,0,'2017-12-23T16:42:26.347Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('O983DHtLpgmr','1hASbLRDL7oo','h4OfLEAYspud',0,NULL,0,0,'2017-12-23T16:42:26.347Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('RsvL795Mk1bp','1hASbLRDL7oo','GpGnjmcAPeWG',1,'',0,0,'2017-12-23T04:04:56.830Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('RsvL795Mk1bp','1hASbLRDL7oo','GpGnjmcAPeWG',1,'',0,0,'2017-12-23T04:04:56.830Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('79e4hrHLFmx6','jyqG9GucsMdn','Iha4YwchR413',1,NULL,0,0,'2017-12-23T04:05:16.439Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('79e4hrHLFmx6','jyqG9GucsMdn','Iha4YwchR413',1,NULL,0,0,'2017-12-23T04:05:16.439Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('oWO8rctUjf7d','WdWZFuWNVDZk','1Heh2acXfPNt',8,NULL,0,0,'2017-12-23T04:06:16.179Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('oWO8rctUjf7d','WdWZFuWNVDZk','1Heh2acXfPNt',13,NULL,1,0,'2017-12-23T04:06:16.179Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('GOxcrZrxalFN','yK4SBJfwD3tY','1Heh2acXfPNt',12,NULL,0,0,'2017-12-23T04:06:32.833Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('GOxcrZrxalFN','yK4SBJfwD3tY','1Heh2acXfPNt',18,NULL,0,0,'2017-12-23T04:06:32.833Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('bSPmEvjLzQKU','r4BnsmSQeVr1','yK4SBJfwD3tY',0,NULL,0,0,'2017-12-23T04:06:37.427Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('bSPmEvjLzQKU','r4BnsmSQeVr1','yK4SBJfwD3tY',0,NULL,0,0,'2017-12-23T04:06:37.427Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('bMtxCD6cwNR9','QbL3pTvhgzM8','yK4SBJfwD3tY',2,NULL,0,0,'2017-12-23T04:06:43.841Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('bMtxCD6cwNR9','QbL3pTvhgzM8','yK4SBJfwD3tY',2,NULL,0,0,'2017-12-23T04:06:43.841Z','','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('o4ycR7xIi4oI','moMbTKwN15Ps','yK4SBJfwD3tY',3,NULL,1,0,'2017-12-23T04:06:49.331Z','','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('o4ycR7xIi4oI','moMbTKwN15Ps','yK4SBJfwD3tY',3,NULL,1,0,'2017-12-23T04:06:49.331Z','','1970-01-01T00:00:00.000Z');
@@ -60,15 +60,13 @@ INSERT INTO branches VALUES('vWch9vHEIsKw','OZKicr536m7U','YULCKCrWJJZ6',8,NULL,
INSERT INTO branches VALUES('p07f522OT9FP','oato1D7kuNU2','YULCKCrWJJZ6',9,NULL,0,0,'2018-08-28T20:50:22.231Z','LQlWJmL3RR','2018-08-28T20:50:22.231Z'); INSERT INTO branches VALUES('p07f522OT9FP','oato1D7kuNU2','YULCKCrWJJZ6',9,NULL,0,0,'2018-08-28T20:50:22.231Z','LQlWJmL3RR','2018-08-28T20:50:22.231Z');
INSERT INTO branches VALUES('03YszmiIfe8B','C1I7GPA8ORO4','YULCKCrWJJZ6',10,NULL,0,0,'2018-08-28T20:50:22.236Z','uNgEmMMv59','2018-08-28T20:50:22.236Z'); INSERT INTO branches VALUES('03YszmiIfe8B','C1I7GPA8ORO4','YULCKCrWJJZ6',10,NULL,0,0,'2018-08-28T20:50:22.236Z','uNgEmMMv59','2018-08-28T20:50:22.236Z');
INSERT INTO branches VALUES('iZJMJE9v4caq','gQNQaMBzRYdb','YULCKCrWJJZ6',11,NULL,0,0,'2018-08-28T20:50:22.242Z','OIMswfv8u0','2018-08-28T20:50:22.242Z'); INSERT INTO branches VALUES('iZJMJE9v4caq','gQNQaMBzRYdb','YULCKCrWJJZ6',11,NULL,0,0,'2018-08-28T20:50:22.242Z','OIMswfv8u0','2018-08-28T20:50:22.242Z');
INSERT INTO branches VALUES('BgakZWX2NSoa','8LOr7xUMuWD4','1Heh2acXfPNt',17,NULL,0,0,'2018-08-28T20:50:36.080Z','l6e868XpLw','2018-08-28T20:50:36.079Z'); INSERT INTO branches VALUES('BgakZWX2NSoa','8LOr7xUMuWD4','1Heh2acXfPNt',24,NULL,0,0,'2018-08-28T20:50:36.080Z','l6e868XpLw','2018-08-28T20:50:36.079Z');
INSERT INTO branches VALUES('iRvWmIBZPmBV','NGSqsVZkg0Fb','kV2NwNNvepGF',0,NULL,1,0,'2018-08-28T20:50:36.107Z','TnumCb1pF9','2018-08-28T20:50:36.107Z');
INSERT INTO branches VALUES('9zW6GNyUrSwj','HgaAwBX5zVcP','kV2NwNNvepGF',1,NULL,0,0,'2018-08-28T20:50:36.140Z','IsmvjdfKeM','2018-08-28T20:50:36.139Z');
INSERT INTO branches VALUES('6yEXb5xSww7E','qEi5St9PBPCP','8LOr7xUMuWD4',3,NULL,0,0,'2018-08-28T20:50:36.154Z','wiqkXVJhDQ','2018-08-28T20:50:36.154Z'); INSERT INTO branches VALUES('6yEXb5xSww7E','qEi5St9PBPCP','8LOr7xUMuWD4',3,NULL,0,0,'2018-08-28T20:50:36.154Z','wiqkXVJhDQ','2018-08-28T20:50:36.154Z');
INSERT INTO branches VALUES('WFBrWWGubT8N','IYKhW6LTUpwP','1Heh2acXfPNt',19,NULL,0,0,'2018-08-28T20:50:48.458Z','KaPAe+LyvC','2018-08-28T20:50:48.458Z'); INSERT INTO branches VALUES('WFBrWWGubT8N','IYKhW6LTUpwP','1Heh2acXfPNt',28,NULL,0,0,'2018-08-28T20:50:48.458Z','KaPAe+LyvC','2018-08-28T20:50:48.458Z');
INSERT INTO branches VALUES('VEq36SudFqDe','L9qettZi0csz','IYKhW6LTUpwP',0,NULL,1,0,'2018-08-28T20:50:48.471Z','74RNaEVH/C','2018-08-28T20:50:48.470Z'); INSERT INTO branches VALUES('VEq36SudFqDe','L9qettZi0csz','IYKhW6LTUpwP',0,NULL,1,0,'2018-08-28T20:50:48.471Z','74RNaEVH/C','2018-08-28T20:50:48.470Z');
INSERT INTO branches VALUES('cnL65jQZPFng','Dyahpf7LroQY','IYKhW6LTUpwP',2,NULL,1,0,'2018-08-28T20:50:48.481Z','uY3Jzm+34n','2018-08-28T20:50:48.480Z'); INSERT INTO branches VALUES('cnL65jQZPFng','Dyahpf7LroQY','IYKhW6LTUpwP',2,NULL,1,0,'2018-08-28T20:50:48.481Z','uY3Jzm+34n','2018-08-28T20:50:48.480Z');
INSERT INTO branches VALUES('jj5QAGAl31lB','nUgD4SYx2gt7','IYKhW6LTUpwP',4,NULL,0,0,'2018-08-28T20:50:48.507Z','sxhKcIO0Fo','2018-08-28T20:50:48.507Z'); INSERT INTO branches VALUES('jj5QAGAl31lB','nUgD4SYx2gt7','IYKhW6LTUpwP',4,NULL,1,0,'2018-08-28T20:50:48.507Z','sxhKcIO0Fo','2018-08-28T20:50:48.507Z');
INSERT INTO branches VALUES('H4uX5U8UA3Fb','hL4rychNFWZs','IYKhW6LTUpwP',6,NULL,0,0,'2018-08-28T20:50:48.539Z','8/KA289XO5','2018-08-28T20:50:48.539Z'); INSERT INTO branches VALUES('H4uX5U8UA3Fb','hL4rychNFWZs','IYKhW6LTUpwP',6,NULL,1,0,'2018-08-28T20:50:48.539Z','8/KA289XO5','2018-08-28T20:50:48.539Z');
INSERT INTO branches VALUES('r6XUe41mCgPY','gYVdjKAJeImD','hL4rychNFWZs',0,NULL,0,0,'2018-08-28T20:50:48.546Z','B8Zx5cyTRW','2018-08-28T20:50:48.546Z'); INSERT INTO branches VALUES('r6XUe41mCgPY','gYVdjKAJeImD','hL4rychNFWZs',0,NULL,0,0,'2018-08-28T20:50:48.546Z','B8Zx5cyTRW','2018-08-28T20:50:48.546Z');
INSERT INTO branches VALUES('UPdB517CCSC6','vVhlPtM5YgWe','gYVdjKAJeImD',0,NULL,0,0,'2018-08-28T20:50:48.556Z','Ydd3hXIn5h','2018-08-28T20:50:48.556Z'); INSERT INTO branches VALUES('UPdB517CCSC6','vVhlPtM5YgWe','gYVdjKAJeImD',0,NULL,0,0,'2018-08-28T20:50:48.556Z','Ydd3hXIn5h','2018-08-28T20:50:48.556Z');
INSERT INTO branches VALUES('2lLNmlPp32DT','XVlWndK4Oh6A','hL4rychNFWZs',2,NULL,0,0,'2018-08-28T20:50:48.575Z','7KpHQIqICP','2018-08-28T20:50:48.575Z'); INSERT INTO branches VALUES('2lLNmlPp32DT','XVlWndK4Oh6A','hL4rychNFWZs',2,NULL,0,0,'2018-08-28T20:50:48.575Z','7KpHQIqICP','2018-08-28T20:50:48.575Z');
@@ -77,46 +75,43 @@ INSERT INTO branches VALUES('feP0uJpIPOz3','HbtlYiMvmm4V','hL4rychNFWZs',4,NULL,
INSERT INTO branches VALUES('VgaH4I1fLW0p','Dk5RGYzufXg3','Z5yhGE5g0UB5',0,NULL,1,0,'2018-08-28T20:51:30.388Z','A5p7MjKIdD','2018-08-28T20:50:21.941Z'); INSERT INTO branches VALUES('VgaH4I1fLW0p','Dk5RGYzufXg3','Z5yhGE5g0UB5',0,NULL,1,0,'2018-08-28T20:51:30.388Z','A5p7MjKIdD','2018-08-28T20:50:21.941Z');
INSERT INTO branches VALUES('sOGDHPGhnMoM','YBAcWV8TjYEp','8LOr7xUMuWD4',0,NULL,1,0,'2018-08-28T20:56:04.336Z','e84wqxU8y+','2018-08-28T20:55:00.064Z'); INSERT INTO branches VALUES('sOGDHPGhnMoM','YBAcWV8TjYEp','8LOr7xUMuWD4',0,NULL,1,0,'2018-08-28T20:56:04.336Z','e84wqxU8y+','2018-08-28T20:55:00.064Z');
INSERT INTO branches VALUES('Hoq9xTZg8sCK','kV2NwNNvepGF','YBAcWV8TjYEp',0,NULL,1,0,'2018-08-28T20:56:05.910Z','0rORbULibz','2018-08-28T20:50:36.095Z'); INSERT INTO branches VALUES('Hoq9xTZg8sCK','kV2NwNNvepGF','YBAcWV8TjYEp',0,NULL,1,0,'2018-08-28T20:56:05.910Z','0rORbULibz','2018-08-28T20:50:36.095Z');
INSERT INTO branches VALUES('A56xlTT6rczp','YULCKCrWJJZ6','gDrEI7LFWqrP',0,NULL,0,0,'2018-08-29T16:03:23.987Z','7YCK6Cf3vr','2018-08-28T20:50:22.175Z'); INSERT INTO branches VALUES('A56xlTT6rczp','YULCKCrWJJZ6','gDrEI7LFWqrP',0,NULL,1,0,'2018-08-29T16:03:23.987Z','7YCK6Cf3vr','2018-08-28T20:50:22.175Z');
INSERT INTO branches VALUES('5cJwU0VlCJA7','WkdQrYTnsgxP','gDrEI7LFWqrP',1,NULL,0,0,'2018-08-29T16:03:24.889Z','RaGS8TUyuV','2018-08-28T20:50:22.250Z'); INSERT INTO branches VALUES('5cJwU0VlCJA7','WkdQrYTnsgxP','gDrEI7LFWqrP',1,NULL,0,0,'2018-08-29T16:03:24.889Z','RaGS8TUyuV','2018-08-28T20:50:22.250Z');
INSERT INTO branches VALUES('U4XC6g7oB4ME','Z5yhGE5g0UB5','gDrEI7LFWqrP',2,NULL,1,0,'2018-08-29T16:03:25.779Z','fAkVtlU455','2018-08-28T20:51:10.194Z'); INSERT INTO branches VALUES('U4XC6g7oB4ME','Z5yhGE5g0UB5','gDrEI7LFWqrP',2,NULL,1,0,'2018-08-29T16:03:25.779Z','fAkVtlU455','2018-08-28T20:51:10.194Z');
INSERT INTO branches VALUES('bFGrKoCcHTD0','ucC6Zabv3Uml','gDrEI7LFWqrP',3,NULL,0,0,'2018-08-29T16:03:30.624Z','KWGpDGiWrq','2018-08-28T20:50:22.122Z'); INSERT INTO branches VALUES('bFGrKoCcHTD0','ucC6Zabv3Uml','gDrEI7LFWqrP',3,NULL,0,0,'2018-08-29T16:03:30.624Z','KWGpDGiWrq','2018-08-28T20:50:22.122Z');
INSERT INTO branches VALUES('FIurtaYkU3mn','gDrEI7LFWqrP','1Heh2acXfPNt',18,NULL,0,0,'2018-08-29T16:03:27.894Z','+Jd+Zzgx2u','2018-08-28T20:50:21.931Z'); INSERT INTO branches VALUES('FIurtaYkU3mn','gDrEI7LFWqrP','1Heh2acXfPNt',26,NULL,0,0,'2018-08-29T16:03:27.894Z','+Jd+Zzgx2u','2018-08-28T20:50:21.931Z');
INSERT INTO branches VALUES('bryQseMhyzaI','IlULcDiOTI4K','1Heh2acXfPNt',1,NULL,0,0,'2018-08-29T17:10:47.987Z','wX6dY3pq/D','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('bryQseMhyzaI','IlULcDiOTI4K','1Heh2acXfPNt',2,NULL,0,0,'2018-08-29T17:10:47.987Z','wX6dY3pq/D','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('u84s3tBBB92g','TlGCAdcfxkOT','eXHZAKsMYgur',2,NULL,0,0,'2018-08-29T17:11:16.550Z','Ei4ozqDMWi','2018-08-29T17:11:16.550Z'); INSERT INTO branches VALUES('u84s3tBBB92g','TlGCAdcfxkOT','eXHZAKsMYgur',2,NULL,0,0,'2018-08-29T17:11:16.550Z','Ei4ozqDMWi','2018-08-29T17:11:16.550Z');
INSERT INTO branches VALUES('yMhwsE7uvEij','3oldoiMUPOlr','HJusZTbBU494',1,NULL,1,0,'2018-08-29T17:20:59.012Z','7U4pIRsbwO','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('yMhwsE7uvEij','3oldoiMUPOlr','HJusZTbBU494',1,NULL,1,0,'2018-08-29T17:20:59.012Z','7U4pIRsbwO','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('NTlSXCbgt5Va','Lt8IUldw7d7H','3RkyK9LI18dO',3,NULL,0,0,'2018-08-29T17:23:45.198Z','QjebjIeHUj','2018-08-29T17:23:45.198Z'); INSERT INTO branches VALUES('NTlSXCbgt5Va','Lt8IUldw7d7H','3RkyK9LI18dO',3,NULL,0,0,'2018-08-29T17:23:45.198Z','QjebjIeHUj','2018-08-29T17:23:45.198Z');
INSERT INTO branches VALUES('0fpnraUGs9Kl','rz5t0r9Qr2WC','HJusZTbBU494',2,NULL,0,0,'2018-08-29T17:26:27.928Z','rw9k0n9SUb','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('0fpnraUGs9Kl','rz5t0r9Qr2WC','HJusZTbBU494',2,NULL,0,0,'2018-08-29T17:26:27.928Z','rw9k0n9SUb','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('uMt25KxpV45Y','tX80udgxnW5n','3oldoiMUPOlr',1,NULL,0,0,'2018-08-29T17:29:24.554Z','XlDqz7PX7X','2018-08-29T17:29:24.554Z'); INSERT INTO branches VALUES('uMt25KxpV45Y','tX80udgxnW5n','3oldoiMUPOlr',1,NULL,0,0,'2018-08-29T17:29:24.554Z','XlDqz7PX7X','2018-08-29T17:29:24.554Z');
INSERT INTO branches VALUES('IsCUFfM1QzHl','rUsGgtpohm7T','3oldoiMUPOlr',21,NULL,0,0,'2018-08-29T17:29:32.942Z','o8ZNDOfGSB','2018-08-29T17:29:32.942Z'); INSERT INTO branches VALUES('IsCUFfM1QzHl','rUsGgtpohm7T','3oldoiMUPOlr',21,NULL,0,0,'2018-08-29T17:29:32.942Z','o8ZNDOfGSB','2018-08-29T17:29:32.942Z');
INSERT INTO branches VALUES('UozNcoXYDovC','sXti7HgialF2','3oldoiMUPOlr',23,NULL,0,0,'2018-08-29T17:29:43.138Z','mDyppB0lkz','2018-08-29T17:29:43.138Z'); INSERT INTO branches VALUES('UozNcoXYDovC','sXti7HgialF2','3oldoiMUPOlr',23,NULL,1,0,'2018-08-29T17:29:43.138Z','mDyppB0lkz','2018-08-29T17:29:43.138Z');
INSERT INTO branches VALUES('3B2q1J0jymcC','uP3V8BqwXC05','L9qettZi0csz',0,NULL,0,0,'2018-08-29T19:42:32.718Z','fgHfgNl00Y','2018-08-29T19:42:32.718Z'); INSERT INTO branches VALUES('3B2q1J0jymcC','uP3V8BqwXC05','L9qettZi0csz',0,NULL,0,0,'2018-08-29T19:42:32.718Z','fgHfgNl00Y','2018-08-29T19:42:32.718Z');
INSERT INTO branches VALUES('tznJp79kaw59','Z4CC9azzMNhg','Dyahpf7LroQY',0,NULL,0,0,'2018-08-29T19:42:47.857Z','GPgoswIB8x','2018-08-29T19:42:47.856Z'); INSERT INTO branches VALUES('tznJp79kaw59','Z4CC9azzMNhg','Dyahpf7LroQY',0,NULL,1,0,'2018-08-29T19:42:47.857Z','GPgoswIB8x','2018-08-29T19:42:47.856Z');
INSERT INTO branches VALUES('akqrs7gHmh5t','uP3V8BqwXC05','Z4CC9azzMNhg',0,NULL,0,0,'2018-08-29T19:42:47.872Z','aoLg0gFrd/','2018-08-29T19:42:47.872Z'); INSERT INTO branches VALUES('akqrs7gHmh5t','uP3V8BqwXC05','Z4CC9azzMNhg',0,NULL,0,0,'2018-08-29T19:42:47.872Z','aoLg0gFrd/','2018-08-29T19:42:47.872Z');
INSERT INTO branches VALUES('acVSG5Mau4XN','q6A62bZE2R1r','nUgD4SYx2gt7',0,NULL,0,0,'2018-08-29T19:42:51.139Z','V1TNeMyqD5','2018-08-29T19:42:51.139Z'); INSERT INTO branches VALUES('acVSG5Mau4XN','q6A62bZE2R1r','nUgD4SYx2gt7',2,NULL,0,0,'2018-08-29T19:42:51.139Z','V1TNeMyqD5','2018-08-29T19:42:51.139Z');
INSERT INTO branches VALUES('Gd1QxgTLiOQx','uP3V8BqwXC05','q6A62bZE2R1r',0,NULL,0,0,'2018-08-29T19:42:51.161Z','FC79qQkyC3','2018-08-29T19:42:51.161Z'); INSERT INTO branches VALUES('Gd1QxgTLiOQx','uP3V8BqwXC05','q6A62bZE2R1r',0,NULL,0,0,'2018-08-29T19:42:51.161Z','FC79qQkyC3','2018-08-29T19:42:51.161Z');
INSERT INTO branches VALUES('aCAgcqpOKx7z','XoLNnnlwdjBi','L9qettZi0csz',1,NULL,0,0,'2018-08-29T19:43:06.394Z','5tETh0Khcc','2018-08-29T19:43:06.394Z'); INSERT INTO branches VALUES('aCAgcqpOKx7z','XoLNnnlwdjBi','L9qettZi0csz',1,NULL,0,0,'2018-08-29T19:43:06.394Z','5tETh0Khcc','2018-08-29T19:43:06.394Z');
INSERT INTO branches VALUES('ofME2yjEstZT','tQmqkQOMHgQJ','Dyahpf7LroQY',1,NULL,0,0,'2018-08-29T19:43:40.323Z','bRdu27+7TZ','2018-08-29T19:43:40.323Z'); INSERT INTO branches VALUES('ofME2yjEstZT','tQmqkQOMHgQJ','Dyahpf7LroQY',1,NULL,0,0,'2018-08-29T19:43:40.323Z','bRdu27+7TZ','2018-08-29T19:43:40.323Z');
INSERT INTO branches VALUES('LfV9Vuv2KOYi','XoLNnnlwdjBi','tQmqkQOMHgQJ',0,NULL,0,0,'2018-08-29T19:43:40.335Z','blImjibA2C','2018-08-29T19:43:40.334Z'); INSERT INTO branches VALUES('LfV9Vuv2KOYi','XoLNnnlwdjBi','tQmqkQOMHgQJ',0,NULL,0,0,'2018-08-29T19:43:40.335Z','blImjibA2C','2018-08-29T19:43:40.334Z');
INSERT INTO branches VALUES('7XqFyRCCbbFR','Lom0LEnCes1l','nUgD4SYx2gt7',1,NULL,0,0,'2018-08-29T19:43:44.024Z','/4YLa/r5CT','2018-08-29T19:43:44.024Z');
INSERT INTO branches VALUES('mSyNlVSA6WRX','XoLNnnlwdjBi','Lom0LEnCes1l',0,NULL,0,0,'2018-08-29T19:43:44.040Z','kQy9lC8qmF','2018-08-29T19:43:44.039Z'); INSERT INTO branches VALUES('mSyNlVSA6WRX','XoLNnnlwdjBi','Lom0LEnCes1l',0,NULL,0,0,'2018-08-29T19:43:44.040Z','kQy9lC8qmF','2018-08-29T19:43:44.039Z');
INSERT INTO branches VALUES('q735AeBxPj1T','ydix6JqjXiUm','XoLNnnlwdjBi',0,NULL,0,0,'2018-08-29T19:46:03.357Z','5eoW9KyskY','2018-08-29T19:46:03.356Z'); INSERT INTO branches VALUES('q735AeBxPj1T','ydix6JqjXiUm','XoLNnnlwdjBi',0,NULL,0,0,'2018-08-29T19:46:03.357Z','5eoW9KyskY','2018-08-29T19:46:03.356Z');
INSERT INTO branches VALUES('fmm6YcEBxv8T','prjUbW6QtsL4','9HHqPxJkLAkl',0,NULL,0,0,'2018-08-29T19:48:00.972Z','JMdLMCDy2J','2018-08-29T19:48:00.972Z'); INSERT INTO branches VALUES('fmm6YcEBxv8T','prjUbW6QtsL4','9HHqPxJkLAkl',0,NULL,0,0,'2018-08-29T19:48:00.972Z','JMdLMCDy2J','2018-08-29T19:48:00.972Z');
INSERT INTO branches VALUES('NnybbW5xPPHO','9HHqPxJkLAkl','IYKhW6LTUpwP',1,NULL,0,0,'2018-08-29T19:48:05.277Z','FirAueCkjs','2018-08-28T20:50:48.529Z'); INSERT INTO branches VALUES('NnybbW5xPPHO','9HHqPxJkLAkl','IYKhW6LTUpwP',1,NULL,1,0,'2018-08-29T19:48:05.277Z','FirAueCkjs','2018-08-28T20:50:48.529Z');
INSERT INTO branches VALUES('KgPU7QD19kBk','prjUbW6QtsL4','tX80udgxnW5n',0,'DONE',NULL,0,'2018-08-29T19:48:00.995Z','HPvrpaEQO7','2018-08-29T19:48:00.995Z');
INSERT INTO branches VALUES('Fq4TqKTo93aK','EluAg7EiealE','L9qettZi0csz',2,NULL,0,0,'2018-08-29T19:53:44.530Z','mJCxaZ1mlW','2018-08-29T19:53:44.530Z'); INSERT INTO branches VALUES('Fq4TqKTo93aK','EluAg7EiealE','L9qettZi0csz',2,NULL,0,0,'2018-08-29T19:53:44.530Z','mJCxaZ1mlW','2018-08-29T19:53:44.530Z');
INSERT INTO branches VALUES('2dac99oNkdH3','vkoNZlNO5TO4','Dyahpf7LroQY',2,NULL,0,0,'2018-08-29T19:54:19.618Z','fN3DqnjcUb','2018-08-29T19:54:19.618Z'); INSERT INTO branches VALUES('2dac99oNkdH3','vkoNZlNO5TO4','Dyahpf7LroQY',2,NULL,0,0,'2018-08-29T19:54:19.618Z','fN3DqnjcUb','2018-08-29T19:54:19.618Z');
INSERT INTO branches VALUES('8aSc0sibmCZm','EluAg7EiealE','vkoNZlNO5TO4',0,NULL,0,0,'2018-08-29T19:54:19.637Z','RpUFzJs2RD','2018-08-29T19:54:19.637Z'); INSERT INTO branches VALUES('8aSc0sibmCZm','EluAg7EiealE','vkoNZlNO5TO4',0,NULL,0,0,'2018-08-29T19:54:19.637Z','RpUFzJs2RD','2018-08-29T19:54:19.637Z');
INSERT INTO branches VALUES('uMnwVhwtdXZg','cUWgYJfpp8G8','3oldoiMUPOlr',24,NULL,0,0,'2018-08-29T19:55:04.661Z','ZMEYWKhIhB','2018-08-29T19:55:04.661Z'); INSERT INTO branches VALUES('uMnwVhwtdXZg','cUWgYJfpp8G8','3oldoiMUPOlr',24,NULL,0,0,'2018-08-29T19:55:04.661Z','ZMEYWKhIhB','2018-08-29T19:55:04.661Z');
INSERT INTO branches VALUES('kS7GsSvztE1J','EluAg7EiealE','cUWgYJfpp8G8',0,'TODO',NULL,0,'2018-08-29T19:55:04.691Z','72zbNyyFRw','2018-08-29T19:54:38.626Z'); INSERT INTO branches VALUES('kS7GsSvztE1J','EluAg7EiealE','cUWgYJfpp8G8',0,'TODO',NULL,0,'2018-08-29T19:55:04.691Z','72zbNyyFRw','2018-08-29T19:54:38.626Z');
INSERT INTO branches VALUES('EjQTcVVHFmmZ','MG0wntwILQW6','3oldoiMUPOlr',19,NULL,0,0,'2018-08-29T19:55:53.824Z','bx2z9074Vi','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('EjQTcVVHFmmZ','MG0wntwILQW6','3oldoiMUPOlr',19,NULL,1,0,'2018-08-29T19:55:53.824Z','bx2z9074Vi','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('HsN4600rQoL9','Iha4YwchR413','3oldoiMUPOlr',17,NULL,0,0,'2018-08-29T17:26:52.528Z','GBlVZxHhto','1970-01-01T00:00:00.000Z'); INSERT INTO branches VALUES('HsN4600rQoL9','Iha4YwchR413','3oldoiMUPOlr',17,NULL,0,0,'2018-08-29T17:26:52.528Z','GBlVZxHhto','1970-01-01T00:00:00.000Z');
INSERT INTO branches VALUES('fQ2BsgDWdqoE','1Fi3MpUkZkLk','3oldoiMUPOlr',16,NULL,0,0,'2018-08-29T19:56:00.793Z','tk6763xjRL','2018-08-29T17:29:02.035Z'); INSERT INTO branches VALUES('fQ2BsgDWdqoE','1Fi3MpUkZkLk','3oldoiMUPOlr',16,NULL,0,0,'2018-08-29T19:56:00.793Z','tk6763xjRL','2018-08-29T17:29:02.035Z');
INSERT INTO branches VALUES('Sv77hHzVZvdw','cwPuYRAGKtUi','3oldoiMUPOlr',2,NULL,0,0,'2018-08-29T19:56:04.404Z','Uwn3W1Q8py','2018-08-29T17:29:16.635Z'); INSERT INTO branches VALUES('Sv77hHzVZvdw','cwPuYRAGKtUi','3oldoiMUPOlr',2,NULL,0,0,'2018-08-29T19:56:04.404Z','Uwn3W1Q8py','2018-08-29T17:29:16.635Z');
INSERT INTO branches VALUES('kPZLi2VKVjQ1','2V9Zg9CXdNvn','nUgD4SYx2gt7',2,NULL,0,0,'2018-08-29T19:57:02.270Z','v0dB+4MnXy','2018-08-29T19:57:02.270Z'); INSERT INTO branches VALUES('kPZLi2VKVjQ1','2V9Zg9CXdNvn','nUgD4SYx2gt7',6,NULL,0,0,'2018-08-29T19:57:02.270Z','v0dB+4MnXy','2018-08-29T19:57:02.270Z');
INSERT INTO branches VALUES('9nEK1jBKqdL7','cmYy3Z22F4MY','9HHqPxJkLAkl',1,NULL,0,0,'2018-08-29T19:57:11.828Z','P7AvZh6VlN','2018-08-29T19:57:11.828Z'); INSERT INTO branches VALUES('9nEK1jBKqdL7','cmYy3Z22F4MY','9HHqPxJkLAkl',1,NULL,0,0,'2018-08-29T19:57:11.828Z','P7AvZh6VlN','2018-08-29T19:57:11.828Z');
INSERT INTO branches VALUES('HVvl5lR3Db7p','cmYy3Z22F4MY','cwPuYRAGKtUi',1,'DONE',NULL,0,'2018-08-29T19:57:39.314Z','dZK0rWy9IN','2018-08-29T19:57:11.876Z'); INSERT INTO branches VALUES('HVvl5lR3Db7p','cmYy3Z22F4MY','cwPuYRAGKtUi',1,'DONE',NULL,0,'2018-08-29T19:57:39.314Z','dZK0rWy9IN','2018-08-29T19:57:11.876Z');
INSERT INTO branches VALUES('iTtVoNfVBdex','d04CnuZxPXj2','nUgD4SYx2gt7',3,NULL,1,0,'2018-08-29T19:58:59.136Z','AWKJ2Bzv6u','2018-08-29T19:58:59.136Z');
INSERT INTO branches VALUES('bPQksNkJmvLR','XoLNnnlwdjBi','d04CnuZxPXj2',0,NULL,0,0,'2018-08-29T19:58:59.150Z','bMHPa6tOOV','2018-08-29T19:58:59.150Z'); INSERT INTO branches VALUES('bPQksNkJmvLR','XoLNnnlwdjBi','d04CnuZxPXj2',0,NULL,0,0,'2018-08-29T19:58:59.150Z','bMHPa6tOOV','2018-08-29T19:58:59.150Z');
INSERT INTO branches VALUES('eoWt4fWm0sW3','XoLNnnlwdjBi','1Fi3MpUkZkLk',0,'TODO',NULL,0,'2018-08-29T19:43:50.887Z','Dq9p08n0+S','2018-08-29T19:43:50.887Z'); INSERT INTO branches VALUES('eoWt4fWm0sW3','XoLNnnlwdjBi','1Fi3MpUkZkLk',0,'TODO',NULL,0,'2018-08-29T19:43:50.887Z','Dq9p08n0+S','2018-08-29T19:43:50.887Z');
INSERT INTO branches VALUES('lMn7U8E3HcM8','ve3Ib30x9nGf','L9qettZi0csz',3,NULL,0,0,'2018-08-29T19:59:04.336Z','9uxcfSBqQm','2018-08-29T19:59:04.336Z'); INSERT INTO branches VALUES('lMn7U8E3HcM8','ve3Ib30x9nGf','L9qettZi0csz',3,NULL,0,0,'2018-08-29T19:59:04.336Z','9uxcfSBqQm','2018-08-29T19:59:04.336Z');
@@ -124,4 +119,10 @@ INSERT INTO branches VALUES('No0w47P6V5NU','TTl2nD4CqzC9','Dyahpf7LroQY',3,NULL,
INSERT INTO branches VALUES('0TOuqT1KIYRZ','ve3Ib30x9nGf','TTl2nD4CqzC9',0,NULL,0,0,'2018-08-29T19:59:38.901Z','jjfsd5sCg4','2018-08-29T19:59:38.901Z'); INSERT INTO branches VALUES('0TOuqT1KIYRZ','ve3Ib30x9nGf','TTl2nD4CqzC9',0,NULL,0,0,'2018-08-29T19:59:38.901Z','jjfsd5sCg4','2018-08-29T19:59:38.901Z');
INSERT INTO branches VALUES('5dNoZxDbyGLR','ve3Ib30x9nGf','tX80udgxnW5n',0,'TODO',NULL,0,'2018-08-29T20:00:18.428Z','YrUH6cdlZO','2018-08-29T19:59:47.032Z'); INSERT INTO branches VALUES('5dNoZxDbyGLR','ve3Ib30x9nGf','tX80udgxnW5n',0,'TODO',NULL,0,'2018-08-29T20:00:18.428Z','YrUH6cdlZO','2018-08-29T19:59:47.032Z');
INSERT INTO branches VALUES('mTe83gvO9fsQ','uP3V8BqwXC05','d04CnuZxPXj2',1,NULL,0,0,'2018-08-29T20:01:47.773Z','2uPfZok3xo','2018-08-29T20:01:47.772Z'); INSERT INTO branches VALUES('mTe83gvO9fsQ','uP3V8BqwXC05','d04CnuZxPXj2',1,NULL,0,0,'2018-08-29T20:01:47.773Z','2uPfZok3xo','2018-08-29T20:01:47.772Z');
INSERT INTO branches VALUES('5OwmqXXREhwW','uP3V8BqwXC05','MG0wntwILQW6',2,'TODO',NULL,0,'2018-08-29T19:43:02.012Z','y+j8i/4GSy','2018-08-29T19:43:02.012Z'); INSERT INTO branches VALUES('DzI3pH06LRAK','7H3OrcgB8Io6','tX80udgxnW5n',1,NULL,0,0,'2018-08-29T21:26:55.817Z','TQATDSthxP','2018-08-29T21:26:55.817Z');
INSERT INTO branches VALUES('9zW6GNyUrSwj','HgaAwBX5zVcP','kV2NwNNvepGF',0,NULL,0,0,'2018-08-29T22:13:25.436Z','n7SHMc8Do/','2018-08-28T20:50:36.139Z');
INSERT INTO branches VALUES('KgPU7QD19kBk','prjUbW6QtsL4','sXti7HgialF2',0,'DONE',NULL,0,'2018-08-30T07:57:00.605Z','55wpz4Yj6h','2018-08-29T19:48:00.995Z');
INSERT INTO branches VALUES('iTtVoNfVBdex','d04CnuZxPXj2','nUgD4SYx2gt7',0,NULL,1,0,'2018-08-30T07:57:39.090Z','YuZ73fj3vz','2018-08-29T19:58:59.136Z');
INSERT INTO branches VALUES('7XqFyRCCbbFR','Lom0LEnCes1l','nUgD4SYx2gt7',1,NULL,0,0,'2018-08-30T08:04:45.853Z','xPKVn25yMG','2018-08-29T19:43:44.024Z');
INSERT INTO branches VALUES('5OwmqXXREhwW','uP3V8BqwXC05','sXti7HgialF2',2,'TODO',NULL,0,'2018-08-30T08:04:55.389Z','SBwS31n2Cp','2018-08-29T19:43:02.012Z');
INSERT INTO branches VALUES('Bu2TmxdlNlTi','i3cLVxiO6GlW','1Heh2acXfPNt',3,NULL,0,0,'2018-09-01T11:47:59.762Z','imw6rHOkkw','2018-09-01T11:47:52.505Z');

File diff suppressed because one or more lines are too long

View File

@@ -1 +1,2 @@
INSERT INTO note_images VALUES('2EtgRRPfk4Fi','1Heh2acXfPNt','ed64aET6i379',0,'2018-01-08T04:41:30.663Z','2018-01-08T04:41:30.663Z',''); INSERT INTO note_images VALUES('2EtgRRPfk4Fi','1Heh2acXfPNt','ed64aET6i379',0,'2018-01-08T04:41:30.663Z','2018-01-08T04:41:30.663Z','');
INSERT INTO note_images VALUES('T7qQAw9BVi0E','prjUbW6QtsL4','0mLHhGv61RDM',0,'2018-08-30T07:53:53.165Z','2018-08-30T07:53:53.164Z','lSz2qni/Rx');

File diff suppressed because one or more lines are too long

View File

@@ -25,8 +25,9 @@ function onClosed() {
async function createMainWindow() { async function createMainWindow() {
const win = new electron.BrowserWindow({ const win = new electron.BrowserWindow({
// initial window width & height so it's usable on 1600 * 900 display (including some extra panels etc.)
width: 1200, width: 1200,
height: 900, height: 800,
title: 'Trilium Notes', title: 'Trilium Notes',
icon: path.join(__dirname, 'src/public/images/app-icons/png/256x256.png') icon: path.join(__dirname, 'src/public/images/app-icons/png/256x256.png')
}); });

444
package-lock.json generated
View File

@@ -1,15 +1,9 @@
{ {
"name": "trilium", "name": "trilium",
"version": "0.20.0", "version": "0.20.1",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"@babel/parser": {
"version": "7.0.0-beta.51",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz",
"integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=",
"dev": true
},
"@babel/polyfill": { "@babel/polyfill": {
"version": "7.0.0", "version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz",
@@ -165,9 +159,9 @@
} }
}, },
"@jimp/plugin-color": { "@jimp/plugin-color": {
"version": "0.3.9", "version": "0.3.10",
"resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.3.10.tgz",
"integrity": "sha512-pfYkrM9s3oLcJgvdVt4EBhQ3E6MeyQA87aZ72MYGSizSst+m4sIeKZlc5VB+a7EUf2E1+ucqQ+8i/6UQqjVD3Q==", "integrity": "sha512-XObgRjjw720T0jJn41fm5POC/FH2rifN+TQqAlaZ/7Wn1kNlH4G8H1v6M0RNzMEKEYTgQud1oVZqY61gceowSQ==",
"requires": { "requires": {
"@jimp/utils": "0.3.9", "@jimp/utils": "0.3.9",
"core-js": "2.5.7", "core-js": "2.5.7",
@@ -407,13 +401,13 @@
} }
}, },
"@jimp/plugins": { "@jimp/plugins": {
"version": "0.3.9", "version": "0.3.10",
"resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.3.10.tgz",
"integrity": "sha512-vf23smFqRL9mrEXVhaLm+eHIc+/zyMn9XawvswMuiGEPLOM4KM9wLoYhgQSZguYX9HFA7Kmt1j4DjS0VOqVwiA==", "integrity": "sha512-RYFO8A8qFo7q0fKiZIcwaNco375Mdknat2oDn67B21k/3CZPUtqzLWy2+X9WXBPHULrF9F8J2loxN8rvSe/0Og==",
"requires": { "requires": {
"@jimp/plugin-blit": "0.3.9", "@jimp/plugin-blit": "0.3.9",
"@jimp/plugin-blur": "0.3.9", "@jimp/plugin-blur": "0.3.9",
"@jimp/plugin-color": "0.3.9", "@jimp/plugin-color": "0.3.10",
"@jimp/plugin-contain": "0.3.9", "@jimp/plugin-contain": "0.3.9",
"@jimp/plugin-cover": "0.3.9", "@jimp/plugin-cover": "0.3.9",
"@jimp/plugin-crop": "0.3.9", "@jimp/plugin-crop": "0.3.9",
@@ -2308,12 +2302,6 @@
} }
} }
}, },
"byline": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
"integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=",
"dev": true
},
"bytes": { "bytes": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -4525,6 +4513,7 @@
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz",
"integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==", "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==",
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"esprima": "3.1.3", "esprima": "3.1.3",
"estraverse": "4.2.0", "estraverse": "4.2.0",
@@ -4537,7 +4526,8 @@
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
"integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
"dev": true "dev": true,
"optional": true
}, },
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
@@ -4892,12 +4882,6 @@
"fill-range": "2.2.3" "fill-range": "2.2.3"
} }
}, },
"expand-template": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz",
"integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg==",
"dev": true
},
"expect-ct": { "expect-ct": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.1.1.tgz", "resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.1.1.tgz",
@@ -5742,16 +5726,6 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
}, },
"from2": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
"integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
"dev": true,
"requires": {
"inherits": "2.0.3",
"readable-stream": "2.2.7"
}
},
"fs-constants": { "fs-constants": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
@@ -6362,16 +6336,6 @@
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
}, },
"har-validator": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
"dev": true,
"requires": {
"ajv": "5.5.2",
"har-schema": "2.0.0"
}
},
"has": { "has": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
@@ -7111,12 +7075,6 @@
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
}, },
"in-publish": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
"integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
"dev": true
},
"indent-string": { "indent-string": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
@@ -7150,16 +7108,6 @@
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
}, },
"into-stream": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
"integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
"dev": true,
"requires": {
"from2": "2.3.0",
"p-is-promise": "1.1.0"
}
},
"invariant": { "invariant": {
"version": "2.2.4", "version": "2.2.4",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
@@ -7773,13 +7721,13 @@
"dev": true "dev": true
}, },
"jimp": { "jimp": {
"version": "0.3.9", "version": "0.3.11",
"resolved": "https://registry.npmjs.org/jimp/-/jimp-0.3.9.tgz", "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.3.11.tgz",
"integrity": "sha512-JmdWiphPZ02XWItR1jv4eXNAsuoxud+BeagHqiLiTV9AT6DbzJwqBaFw4yFGZ5NHy9wDqofP/XDZBSOA0Ig9tw==", "integrity": "sha512-M+MWaCg/sJmeXSP5TRzKHmJUU2LpBWKEdoxiqczhY4FdMqz2k3Db4pdQjkcYR5ihW9MvtrjqarPAF6iTMGT34g==",
"requires": { "requires": {
"@babel/polyfill": "7.0.0", "@babel/polyfill": "7.0.0",
"@jimp/custom": "0.3.9", "@jimp/custom": "0.3.9",
"@jimp/plugins": "0.3.9", "@jimp/plugins": "0.3.10",
"@jimp/types": "0.3.9", "@jimp/types": "0.3.9",
"core-js": "2.5.7" "core-js": "2.5.7"
}, },
@@ -7796,9 +7744,6 @@
"resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.4.tgz", "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.4.tgz",
"integrity": "sha512-6IzjQxvnlT8UlklNmDXIJMWxijULjqGrzgqc0OG7YadZdvm7KPQ1j0ehmQQHckgEWOfgpptzcnWgESovxudpTA==" "integrity": "sha512-6IzjQxvnlT8UlklNmDXIJMWxijULjqGrzgqc0OG7YadZdvm7KPQ1j0ehmQQHckgEWOfgpptzcnWgESovxudpTA=="
}, },
"jpgjs": {
"version": "github:makr28/jpgjs#c83f107ad725b476a3441d20680a02590d8752cc"
},
"js-base64": { "js-base64": {
"version": "2.4.8", "version": "2.4.8",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.8.tgz", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.8.tgz",
@@ -8483,9 +8428,9 @@
} }
}, },
"lorem-ipsum": { "lorem-ipsum": {
"version": "1.0.5", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/lorem-ipsum/-/lorem-ipsum-1.0.5.tgz", "resolved": "https://registry.npmjs.org/lorem-ipsum/-/lorem-ipsum-1.0.6.tgz",
"integrity": "sha512-GW1N2mqtS1qRf4WHmQ/g/asGXXd2dciLUDEsz5hZQfVJNWHUZX0zsJDLfV581de4OOCrBRiTifyoSuSSUwIEdg==", "integrity": "sha512-Rx4XH8X4KSDCKAVvWGYlhAfNqdUP5ZdT4rRyf0jjrvWgtViZimDIlopWNfn/y3lGM5K4uuiAoY28TaD+7YKFrQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"minimist": "1.2.0" "minimist": "1.2.0"
@@ -8903,16 +8848,6 @@
} }
} }
}, },
"multistream": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/multistream/-/multistream-2.1.1.tgz",
"integrity": "sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ==",
"dev": true,
"requires": {
"inherits": "2.0.3",
"readable-stream": "2.2.7"
}
},
"mute-stream": { "mute-stream": {
"version": "0.0.7", "version": "0.0.7",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
@@ -9706,12 +9641,6 @@
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
}, },
"p-is-promise": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
"integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
"dev": true
},
"p-limit": { "p-limit": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz",
@@ -9958,120 +9887,6 @@
"pngjs": "3.3.3" "pngjs": "3.3.3"
} }
}, },
"pkg": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/pkg/-/pkg-4.3.4.tgz",
"integrity": "sha512-/vHksmZRu68BCZi+gX4ghCMKVPMXkoo6E16HbI0jAR1/wDMrRFGCXFIho2BQLTiFwtx80KH9FpZixEs/gYxfwA==",
"dev": true,
"requires": {
"@babel/parser": "7.0.0-beta.51",
"babel-runtime": "6.26.0",
"chalk": "2.4.1",
"escodegen": "1.10.0",
"fs-extra": "6.0.1",
"globby": "8.0.1",
"into-stream": "3.1.0",
"minimist": "1.2.0",
"multistream": "2.1.1",
"pkg-fetch": "2.5.6",
"progress": "2.0.0",
"resolve": "1.6.0",
"stream-meter": "1.0.4"
},
"dependencies": {
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
"color-convert": "1.9.0"
}
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
"ansi-styles": "3.2.1",
"escape-string-regexp": "1.0.5",
"supports-color": "5.4.0"
}
},
"fs-extra": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
"integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"jsonfile": "4.0.0",
"universalify": "0.1.1"
}
},
"globby": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz",
"integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==",
"dev": true,
"requires": {
"array-union": "1.0.2",
"dir-glob": "2.0.0",
"fast-glob": "2.2.2",
"glob": "7.1.2",
"ignore": "3.3.8",
"pify": "3.0.0",
"slash": "1.0.0"
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11"
}
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
"pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true
},
"resolve": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz",
"integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==",
"dev": true,
"requires": {
"path-parse": "1.0.5"
}
},
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
"dev": true,
"requires": {
"has-flag": "3.0.0"
}
}
}
},
"pkg-conf": { "pkg-conf": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
@@ -10136,181 +9951,6 @@
"find-up": "1.1.2" "find-up": "1.1.2"
} }
}, },
"pkg-fetch": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/pkg-fetch/-/pkg-fetch-2.5.6.tgz",
"integrity": "sha512-Bmae7NUnImRzFL7OtWfC0fnzhTqQi3vXpZjlruww882hQEVt/Z9Jcq8o7KdL6VGJPGo72JTZHDa+PRD++HkAXQ==",
"dev": true,
"requires": {
"babel-runtime": "6.26.0",
"byline": "5.0.0",
"chalk": "2.4.1",
"expand-template": "1.1.1",
"fs-extra": "6.0.1",
"in-publish": "2.0.0",
"minimist": "1.2.0",
"progress": "2.0.0",
"request": "2.85.0",
"request-progress": "3.0.0",
"semver": "5.5.0",
"unique-temp-dir": "1.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
"color-convert": "1.9.0"
}
},
"boom": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
"integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
"dev": true,
"requires": {
"hoek": "4.2.1"
}
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
"ansi-styles": "3.2.1",
"escape-string-regexp": "1.0.5",
"supports-color": "5.4.0"
}
},
"cryptiles": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
"integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
"dev": true,
"requires": {
"boom": "5.2.0"
},
"dependencies": {
"boom": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
"integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
"dev": true,
"requires": {
"hoek": "4.2.1"
}
}
}
},
"fs-extra": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
"integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"jsonfile": "4.0.0",
"universalify": "0.1.1"
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"hawk": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
"integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
"dev": true,
"requires": {
"boom": "4.3.1",
"cryptiles": "3.1.2",
"hoek": "4.2.1",
"sntp": "2.1.0"
}
},
"hoek": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
"integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
"dev": true
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11"
}
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
"request": {
"version": "2.85.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz",
"integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
"dev": true,
"requires": {
"aws-sign2": "0.7.0",
"aws4": "1.6.0",
"caseless": "0.12.0",
"combined-stream": "1.0.5",
"extend": "3.0.1",
"forever-agent": "0.6.1",
"form-data": "2.3.2",
"har-validator": "5.0.3",
"hawk": "6.0.2",
"http-signature": "1.2.0",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.17",
"oauth-sign": "0.8.2",
"performance-now": "2.1.0",
"qs": "6.5.1",
"safe-buffer": "5.1.1",
"stringstream": "0.0.6",
"tough-cookie": "2.3.3",
"tunnel-agent": "0.6.0",
"uuid": "3.1.0"
}
},
"semver": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
"integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
"dev": true
},
"sntp": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
"integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
"dev": true,
"requires": {
"hoek": "4.2.1"
}
},
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
"dev": true,
"requires": {
"has-flag": "3.0.0"
}
}
}
},
"pkg-up": { "pkg-up": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
@@ -11260,23 +10900,6 @@
} }
} }
}, },
"request-progress": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
"integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=",
"dev": true,
"requires": {
"throttleit": "1.0.0"
},
"dependencies": {
"throttleit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
"integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
"dev": true
}
}
},
"request-promise": { "request-promise": {
"version": "4.2.2", "version": "4.2.2",
"resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz", "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz",
@@ -12149,15 +11772,6 @@
"readable-stream": "2.2.7" "readable-stream": "2.2.7"
} }
}, },
"stream-meter": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz",
"integrity": "sha1-Uq+Vql6nYKJJFxZwTb/5D3Ov3R0=",
"dev": true,
"requires": {
"readable-stream": "2.2.7"
}
},
"stream-shift": { "stream-shift": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
@@ -13032,12 +12646,6 @@
"random-bytes": "1.0.0" "random-bytes": "1.0.0"
} }
}, },
"uid2": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz",
"integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=",
"dev": true
},
"unbzip2-stream": { "unbzip2-stream": {
"version": "1.2.5", "version": "1.2.5",
"resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz",
@@ -13109,17 +12717,6 @@
"crypto-random-string": "1.0.0" "crypto-random-string": "1.0.0"
} }
}, },
"unique-temp-dir": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz",
"integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=",
"dev": true,
"requires": {
"mkdirp": "0.5.1",
"os-tmpdir": "1.0.2",
"uid2": "0.0.3"
}
},
"universalify": { "universalify": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
@@ -13318,6 +12915,11 @@
"requires": { "requires": {
"jpgjs": "github:makr28/jpgjs#c83f107ad725b476a3441d20680a02590d8752cc", "jpgjs": "github:makr28/jpgjs#c83f107ad725b476a3441d20680a02590d8752cc",
"pako": "1.0.6" "pako": "1.0.6"
},
"dependencies": {
"jpgjs": {
"version": "github:makr28/jpgjs#c83f107ad725b476a3441d20680a02590d8752cc"
}
} }
}, },
"util-deprecate": { "util-deprecate": {

View File

@@ -1,7 +1,7 @@
{ {
"name": "trilium", "name": "trilium",
"description": "Trilium Notes", "description": "Trilium Notes",
"version": "0.20.1", "version": "0.20.2",
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"main": "electron.js", "main": "electron.js",
"bin": { "bin": {
@@ -49,7 +49,7 @@
"imagemin-mozjpeg": "7.0.0", "imagemin-mozjpeg": "7.0.0",
"imagemin-pngquant": "6.0.0", "imagemin-pngquant": "6.0.0",
"ini": "1.3.5", "ini": "1.3.5",
"jimp": "0.3.9", "jimp": "0.3.11",
"moment": "2.22.2", "moment": "2.22.2",
"multer": "1.3.1", "multer": "1.3.1",
"open": "0.0.5", "open": "0.0.5",
@@ -75,10 +75,9 @@
"electron-packager": "12.1.1", "electron-packager": "12.1.1",
"electron-prebuilt-compile": "2.0.7", "electron-prebuilt-compile": "2.0.7",
"electron-rebuild": "1.8.2", "electron-rebuild": "1.8.2",
"lorem-ipsum": "1.0.5", "lorem-ipsum": "1.0.6",
"tape": "4.9.1", "tape": "4.9.1",
"xo": "0.22.0", "xo": "0.22.0"
"pkg": "4.3.4"
}, },
"config": { "config": {
"forge": { "forge": {
@@ -117,15 +116,5 @@
"node", "node",
"browser" "browser"
] ]
},
"pkg": {
"assets": [
"./db/**/*",
"./src/public/**/*",
"./src/views/**/*",
"./node_modules/mozjpeg/vendor/*",
"./node_modules/pngquant-bin/vendor/*",
"./node_modules/giflossy/vendor/*"
]
} }
} }

View File

@@ -27,6 +27,13 @@ class Branch extends Entity {
// notePosition is not part of hash because it would produce a lot of updates in case of reordering // notePosition is not part of hash because it would produce a lot of updates in case of reordering
static get hashedProperties() { return ["branchId", "noteId", "parentNoteId", "isDeleted", "prefix"]; } static get hashedProperties() { return ["branchId", "noteId", "parentNoteId", "isDeleted", "prefix"]; }
constructor(row = {}) {
super(row);
// used to detect move in note tree
this.origParentNoteId = this.parentNoteId;
}
async getNote() { async getNote() {
return await repository.getEntity("SELECT * FROM notes WHERE noteId = ?", [this.noteId]); return await repository.getEntity("SELECT * FROM notes WHERE noteId = ?", [this.noteId]);
} }

View File

@@ -99,23 +99,37 @@ class Note extends Entity {
return await repository.getEntities(`SELECT * FROM attributes WHERE isDeleted = 0 AND noteId = ?`, [this.noteId]); return await repository.getEntities(`SELECT * FROM attributes WHERE isDeleted = 0 AND noteId = ?`, [this.noteId]);
} }
/** @returns {Promise<Attribute[]>} all note's attributes, including inherited ones */ /**
async getAttributes() { * @param {string} [name] - attribute name to filter
* @returns {Promise<Attribute[]>} all note's attributes, including inherited ones
*/
async getAttributes(name) {
if (!this.__attributeCache) { if (!this.__attributeCache) {
await this.loadAttributesToCache(); await this.loadAttributesToCache();
} }
return this.__attributeCache; if (name) {
return this.__attributeCache.filter(attr => attr.name === name);
}
else {
return this.__attributeCache;
}
} }
/** @returns {Promise<Attribute[]>} all note's labels (attributes with type label), including inherited ones */ /**
async getLabels() { * @param {string} [name] - label name to filter
return (await this.getAttributes()).filter(attr => attr.type === LABEL); * @returns {Promise<Attribute[]>} all note's labels (attributes with type label), including inherited ones
*/
async getLabels(name) {
return (await this.getAttributes(name)).filter(attr => attr.type === LABEL);
} }
/** @returns {Promise<Attribute[]>} all note's relations (attributes with type relation), including inherited ones */ /**
async getRelations() { * @param {string} [name] - relation name to filter
return (await this.getAttributes()).filter(attr => attr.type === RELATION); * @returns {Promise<Attribute[]>} all note's relations (attributes with type relation), including inherited ones
*/
async getRelations(name) {
return (await this.getAttributes(name)).filter(attr => attr.type === RELATION);
} }
/** /**

View File

@@ -59,6 +59,8 @@ async function moveToNode(nodesToMove, toNode) {
} }
async function deleteNodes(nodes) { async function deleteNodes(nodes) {
nodes = nodes.filter(node => node.data.noteId !== 'root');
if (nodes.length === 0 || !confirm('Are you sure you want to delete select note(s) and all the sub-notes?')) { if (nodes.length === 0 || !confirm('Are you sure you want to delete select note(s) and all the sub-notes?')) {
return; return;
} }

View File

@@ -86,21 +86,21 @@ const contextMenuOptions = {
{title: "----"}, {title: "----"},
{title: "Edit branch prefix <kbd>F2</kbd>", cmd: "editBranchPrefix", uiIcon: "ui-icon-pencil"}, {title: "Edit branch prefix <kbd>F2</kbd>", cmd: "editBranchPrefix", uiIcon: "ui-icon-pencil"},
{title: "----"}, {title: "----"},
{title: "Protect branch", cmd: "protectBranch", uiIcon: "ui-icon-locked"}, {title: "Protect subtree", cmd: "protectSubtree", uiIcon: "ui-icon-locked"},
{title: "Unprotect branch", cmd: "unprotectBranch", uiIcon: "ui-icon-unlocked"}, {title: "Unprotect subtree", cmd: "unprotectSubtree", uiIcon: "ui-icon-unlocked"},
{title: "----"}, {title: "----"},
{title: "Copy / clone <kbd>Ctrl+C</kbd>", cmd: "copy", uiIcon: "ui-icon-copy"}, {title: "Copy / clone <kbd>Ctrl+C</kbd>", cmd: "copy", uiIcon: "ui-icon-copy"},
{title: "Cut <kbd>Ctrl+X</kbd>", cmd: "cut", uiIcon: "ui-icon-scissors"}, {title: "Cut <kbd>Ctrl+X</kbd>", cmd: "cut", uiIcon: "ui-icon-scissors"},
{title: "Paste into <kbd>Ctrl+V</kbd>", cmd: "pasteInto", uiIcon: "ui-icon-clipboard"}, {title: "Paste into <kbd>Ctrl+V</kbd>", cmd: "pasteInto", uiIcon: "ui-icon-clipboard"},
{title: "Paste after", cmd: "pasteAfter", uiIcon: "ui-icon-clipboard"}, {title: "Paste after", cmd: "pasteAfter", uiIcon: "ui-icon-clipboard"},
{title: "----"}, {title: "----"},
{title: "Export subtree", cmd: "exportSubTree", uiIcon: " ui-icon-arrowthick-1-ne", children: [ {title: "Export subtree", cmd: "exportSubtree", uiIcon: " ui-icon-arrowthick-1-ne", children: [
{title: "Native&nbsp;Tar", cmd: "exportSubTreeToTar"}, {title: "Native&nbsp;Tar", cmd: "exportSubtreeToTar"},
{title: "OPML", cmd: "exportSubTreeToOpml"} {title: "OPML", cmd: "exportSubtreeToOpml"}
]}, ]},
{title: "Import into branch (tar, opml)", cmd: "importBranch", uiIcon: "ui-icon-arrowthick-1-sw"}, {title: "Import into note (tar, opml)", cmd: "importIntoNote", uiIcon: "ui-icon-arrowthick-1-sw"},
{title: "----"}, {title: "----"},
{title: "Collapse branch <kbd>Alt+-</kbd>", cmd: "collapseBranch", uiIcon: "ui-icon-minus"}, {title: "Collapse subtree <kbd>Alt+-</kbd>", cmd: "collapseSubtree", uiIcon: "ui-icon-minus"},
{title: "Force note sync", cmd: "forceNoteSync", uiIcon: "ui-icon-refresh"}, {title: "Force note sync", cmd: "forceNoteSync", uiIcon: "ui-icon-refresh"},
{title: "Sort alphabetically <kbd>Alt+S</kbd>", cmd: "sortAlphabetically", uiIcon: " ui-icon-arrowthick-2-n-s"} {title: "Sort alphabetically <kbd>Alt+S</kbd>", cmd: "sortAlphabetically", uiIcon: " ui-icon-arrowthick-2-n-s"}
], ],
@@ -119,8 +119,8 @@ const contextMenuOptions = {
$tree.contextmenu("enableEntry", "cut", isNotRoot); $tree.contextmenu("enableEntry", "cut", isNotRoot);
$tree.contextmenu("enableEntry", "pasteAfter", clipboardIds.length > 0 && isNotRoot && parentNote.type !== 'search'); $tree.contextmenu("enableEntry", "pasteAfter", clipboardIds.length > 0 && isNotRoot && parentNote.type !== 'search');
$tree.contextmenu("enableEntry", "pasteInto", clipboardIds.length > 0 && note.type !== 'search'); $tree.contextmenu("enableEntry", "pasteInto", clipboardIds.length > 0 && note.type !== 'search');
$tree.contextmenu("enableEntry", "importBranch", note.type !== 'search'); $tree.contextmenu("enableEntry", "importIntoNote", note.type !== 'search');
$tree.contextmenu("enableEntry", "exportSubTree", note.type !== 'search'); $tree.contextmenu("enableEntry", "exportSubtree", note.type !== 'search');
$tree.contextmenu("enableEntry", "editBranchPrefix", isNotRoot && parentNote.type !== 'search'); $tree.contextmenu("enableEntry", "editBranchPrefix", isNotRoot && parentNote.type !== 'search');
// Activate node on right-click // Activate node on right-click
@@ -145,11 +145,11 @@ const contextMenuOptions = {
else if (ui.cmd === "editBranchPrefix") { else if (ui.cmd === "editBranchPrefix") {
branchPrefixDialog.showDialog(node); branchPrefixDialog.showDialog(node);
} }
else if (ui.cmd === "protectBranch") { else if (ui.cmd === "protectSubtree") {
protectedSessionService.protectBranch(node.data.noteId, true); protectedSessionService.protectSubtree(node.data.noteId, true);
} }
else if (ui.cmd === "unprotectBranch") { else if (ui.cmd === "unprotectSubtree") {
protectedSessionService.protectBranch(node.data.noteId, false); protectedSessionService.protectSubtree(node.data.noteId, false);
} }
else if (ui.cmd === "copy") { else if (ui.cmd === "copy") {
copy(treeService.getSelectedNodes()); copy(treeService.getSelectedNodes());
@@ -166,16 +166,16 @@ const contextMenuOptions = {
else if (ui.cmd === "delete") { else if (ui.cmd === "delete") {
treeChangesService.deleteNodes(treeService.getSelectedNodes(true)); treeChangesService.deleteNodes(treeService.getSelectedNodes(true));
} }
else if (ui.cmd === "exportSubTreeToTar") { else if (ui.cmd === "exportSubtreeToTar") {
exportService.exportSubTree(node.data.noteId, 'tar'); exportService.exportSubtree(node.data.noteId, 'tar');
} }
else if (ui.cmd === "exportSubTreeToOpml") { else if (ui.cmd === "exportSubtreeToOpml") {
exportService.exportSubTree(node.data.noteId, 'opml'); exportService.exportSubtree(node.data.noteId, 'opml');
} }
else if (ui.cmd === "importBranch") { else if (ui.cmd === "importIntoNote") {
exportService.importBranch(node.data.noteId); exportService.importIntoNote(node.data.noteId);
} }
else if (ui.cmd === "collapseBranch") { else if (ui.cmd === "collapseSubtree") {
treeService.collapseTree(node); treeService.collapseTree(node);
} }
else if (ui.cmd === "forceNoteSync") { else if (ui.cmd === "forceNoteSync") {

View File

@@ -3,7 +3,7 @@ import protectedSessionHolder from './protected_session_holder.js';
import utils from './utils.js'; import utils from './utils.js';
import server from './server.js'; import server from './server.js';
function exportSubTree(noteId, format) { function exportSubtree(noteId, format) {
const url = utils.getHost() + "/api/notes/" + noteId + "/export/" + format + const url = utils.getHost() + "/api/notes/" + noteId + "/export/" + format +
"?protectedSessionId=" + encodeURIComponent(protectedSessionHolder.getProtectedSessionId()); "?protectedSessionId=" + encodeURIComponent(protectedSessionHolder.getProtectedSessionId());
@@ -12,7 +12,7 @@ function exportSubTree(noteId, format) {
let importNoteId; let importNoteId;
function importBranch(noteId) { function importIntoNote(noteId) {
importNoteId = noteId; importNoteId = noteId;
$("#import-upload").trigger('click'); $("#import-upload").trigger('click');
@@ -35,6 +35,6 @@ $("#import-upload").change(async function() {
}); });
export default { export default {
exportSubTree, exportSubtree,
importBranch importIntoNote
}; };

View File

@@ -99,11 +99,14 @@ async function saveNote() {
note.title = $noteTitle.val(); note.title = $noteTitle.val();
note.content = getComponent(note.type).getContent(); note.content = getComponent(note.type).getContent();
// it's important to set the flag back to false immediatelly after retrieving title and content
// otherwise we might overwrite another change (especially async code)
isNoteChanged = false;
treeService.setNoteTitle(note.noteId, note.title); treeService.setNoteTitle(note.noteId, note.title);
await server.put('notes/' + note.noteId, note.dto); await server.put('notes/' + note.noteId, note.dto);
isNoteChanged = false;
if (note.isProtected) { if (note.isProtected) {
protectedSessionHolder.touchProtectedSession(); protectedSessionHolder.touchProtectedSession();

View File

@@ -89,6 +89,8 @@ async function setupProtectedSession() {
$protectedSessionOnButton.addClass('active'); $protectedSessionOnButton.addClass('active');
$protectedSessionOffButton.removeClass('active'); $protectedSessionOffButton.removeClass('active');
} }
infoService.showMessage("Protected session has been started.");
} }
function ensureDialogIsClosed() { function ensureDialogIsClosed() {
@@ -148,7 +150,7 @@ async function unprotectNoteAndSendToServer() {
noteDetailService.setNoteBackgroundIfProtected(note); noteDetailService.setNoteBackgroundIfProtected(note);
} }
async function protectBranch(noteId, protect) { async function protectSubtree(noteId, protect) {
await ensureProtectedSession(true, true); await ensureProtectedSession(true, true);
await server.put('notes/' + noteId + "/protect/" + (protect ? 1 : 0)); await server.put('notes/' + noteId + "/protect/" + (protect ? 1 : 0));
@@ -172,7 +174,7 @@ export default {
ensureProtectedSession, ensureProtectedSession,
protectNoteAndSendToServer, protectNoteAndSendToServer,
unprotectNoteAndSendToServer, unprotectNoteAndSendToServer,
protectBranch, protectSubtree,
ensureDialogIsClosed, ensureDialogIsClosed,
enterProtectedSession, enterProtectedSession,
leaveProtectedSession leaveProtectedSession

View File

@@ -89,7 +89,7 @@ $searchInput.keyup(e => {
} }
}).focus(); }).focus();
$doSearchButton.click(doSearch); $doSearchButton.click(() => doSearch()); // keep long form because of argument
$resetSearchButton.click(resetSearch); $resetSearchButton.click(resetSearch);
$saveSearchButton.click(saveSearch); $saveSearchButton.click(saveSearch);

View File

@@ -26,6 +26,8 @@ async function createNote(req) {
const { note, branch } = await noteService.createNewNote(parentNoteId, newNote, req); const { note, branch } = await noteService.createNewNote(parentNoteId, newNote, req);
note.cssClass = (await note.getLabels("cssClass")).map(label => label.value).join(" ");
return { return {
note, note,
branch branch
@@ -45,7 +47,7 @@ async function sortNotes(req) {
await treeService.sortNotesAlphabetically(noteId); await treeService.sortNotesAlphabetically(noteId);
} }
async function protectBranch(req) { async function protectSubtree(req) {
const noteId = req.params.noteId; const noteId = req.params.noteId;
const note = await repository.getNote(noteId); const note = await repository.getNote(noteId);
const protect = !!parseInt(req.params.isProtected); const protect = !!parseInt(req.params.isProtected);
@@ -70,6 +72,6 @@ module.exports = {
updateNote, updateNote,
createNote, createNote,
sortNotes, sortNotes,
protectBranch, protectSubtree,
setNoteTypeMime setNoteTypeMime
}; };

View File

@@ -39,8 +39,14 @@ async function getRelations(noteIds) {
// we need to fetch both parentNoteId and noteId matches because we can have loaded child // we need to fetch both parentNoteId and noteId matches because we can have loaded child
// of which only some of the parents has been loaded. // of which only some of the parents has been loaded.
return await sql.getManyRows(`SELECT branchId, noteId AS 'childNoteId', parentNoteId FROM branches WHERE isDeleted = 0 const relations = await sql.getManyRows(`SELECT branchId, noteId AS 'childNoteId', parentNoteId, notePosition FROM branches WHERE isDeleted = 0
AND (parentNoteId IN (???) OR noteId IN (???))`, noteIds); AND (parentNoteId IN (???) OR noteId IN (???))`, noteIds);
// although we're fetching relations for multiple notes, ordering will stay correct for single note as well - relations are being added into tree cache in the order they were returned
// cannot use ORDER BY because of usage of getManyRows which is not a single SQL query
relations.sort((a, b) => a.notePosition > b.notePosition ? 1 : -1);
return relations;
} }
async function getTree() { async function getTree() {

View File

@@ -117,7 +117,7 @@ function register(app) {
apiRoute(PUT, '/api/notes/:noteId', notesApiRoute.updateNote); apiRoute(PUT, '/api/notes/:noteId', notesApiRoute.updateNote);
apiRoute(POST, '/api/notes/:parentNoteId/children', notesApiRoute.createNote); apiRoute(POST, '/api/notes/:parentNoteId/children', notesApiRoute.createNote);
apiRoute(PUT, '/api/notes/:noteId/sort', notesApiRoute.sortNotes); apiRoute(PUT, '/api/notes/:noteId/sort', notesApiRoute.sortNotes);
apiRoute(PUT, '/api/notes/:noteId/protect/:isProtected', notesApiRoute.protectBranch); apiRoute(PUT, '/api/notes/:noteId/protect/:isProtected', notesApiRoute.protectSubtree);
apiRoute(PUT, /\/api\/notes\/(.*)\/type\/(.*)\/mime\/(.*)/, notesApiRoute.setNoteTypeMime); apiRoute(PUT, /\/api\/notes\/(.*)\/type\/(.*)\/mime\/(.*)/, notesApiRoute.setNoteTypeMime);
apiRoute(GET, '/api/notes/:noteId/revisions', noteRevisionsApiRoute.getNoteRevisions); apiRoute(GET, '/api/notes/:noteId/revisions', noteRevisionsApiRoute.getNoteRevisions);

View File

@@ -1 +1 @@
module.exports = { buildDate:"2018-08-29T22:29:36+02:00", buildRevision: "561b514b8494de93787e875f42ba7765a65bb63f" }; module.exports = { buildDate:"2018-09-01T14:08:37+02:00", buildRevision: "10ff504528fef652a4fb003c6e058f2fd8a911fc" };

View File

@@ -260,20 +260,19 @@ eventService.subscribe(eventService.ENTITY_CHANGED, async ({entityName, entity})
else if (entityName === 'branches') { else if (entityName === 'branches') {
const branch = entity; const branch = entity;
if (childToParent[branch.noteId]) { // first we remove records for original placement (if they exist)
childToParent[branch.noteId] = childToParent[branch.noteId].filter(noteId => noteId !== branch.parentNoteId) childToParent[branch.noteId] = childToParent[branch.noteId] || [];
} childToParent[branch.noteId] = childToParent[branch.noteId].filter(noteId => noteId !== branch.origParentNoteId);
if (branch.isDeleted) { delete prefixes[branch.noteId + '-' + branch.origParentNoteId];
delete prefixes[branch.noteId + '-' + branch.parentNoteId]; delete childParentToBranchId[branch.noteId + '-' + branch.origParentNoteId];
delete childParentToBranchId[branch.noteId + '-' + branch.parentNoteId];
} if (!branch.isDeleted) {
else { // ... and then we create new records
if (branch.prefix) { if (branch.prefix) {
prefixes[branch.noteId + '-' + branch.parentNoteId] = branch.prefix; prefixes[branch.noteId + '-' + branch.parentNoteId] = branch.prefix;
} }
childToParent[branch.noteId] = childToParent[branch.noteId] || [];
childToParent[branch.noteId].push(branch.parentNoteId); childToParent[branch.noteId].push(branch.parentNoteId);
childParentToBranchId[branch.noteId + '-' + branch.parentNoteId] = branch.branchId; childParentToBranchId[branch.noteId + '-' + branch.parentNoteId] = branch.branchId;
} }

View File

@@ -81,6 +81,8 @@ async function createNewNote(parentNoteId, noteData) {
position: attr.position, position: attr.position,
isInheritable: attr.isInheritable isInheritable: attr.isInheritable
}).save(); }).save();
note.invalidateAttributeCache();
} }
} }
@@ -193,14 +195,14 @@ async function saveNoteRevision(note) {
const revisionCutoff = dateUtils.dateStr(new Date(now.getTime() - noteRevisionSnapshotTimeInterval * 1000)); const revisionCutoff = dateUtils.dateStr(new Date(now.getTime() - noteRevisionSnapshotTimeInterval * 1000));
const existingnoteRevisionId = await sql.getValue( const existingNoteRevisionId = await sql.getValue(
"SELECT noteRevisionId FROM note_revisions WHERE noteId = ? AND dateModifiedTo >= ?", [note.noteId, revisionCutoff]); "SELECT noteRevisionId FROM note_revisions WHERE noteId = ? AND dateModifiedTo >= ?", [note.noteId, revisionCutoff]);
const msSinceDateCreated = now.getTime() - dateUtils.parseDateTime(note.dateCreated).getTime(); const msSinceDateCreated = now.getTime() - dateUtils.parseDateTime(note.dateCreated).getTime();
if (note.type !== 'file' if (note.type !== 'file'
&& !await note.hasLabel('disableVersioning') && !await note.hasLabel('disableVersioning')
&& !existingnoteRevisionId && !existingNoteRevisionId
&& msSinceDateCreated >= noteRevisionSnapshotTimeInterval * 1000) { && msSinceDateCreated >= noteRevisionSnapshotTimeInterval * 1000) {
await new NoteRevision({ await new NoteRevision({
@@ -248,6 +250,10 @@ async function deleteNote(branch) {
return; return;
} }
if (branch.branchId === 'root' || branch.noteId === 'root') {
throw new Error("Can't delete root branch/note");
}
branch.isDeleted = true; branch.isDeleted = true;
await branch.save(); await branch.save();

View File

@@ -68,9 +68,11 @@ async function updateEntity(entity) {
const clone = Object.assign({}, entity); const clone = Object.assign({}, entity);
// transient properties not supposed to be persisted
delete clone.jsonContent; delete clone.jsonContent;
delete clone.isOwned; delete clone.isOwned;
delete clone.isChanged; delete clone.isChanged;
delete clone.origParentNoteId;
delete clone.__attributeCache; delete clone.__attributeCache;
for (const key in clone) { for (const key in clone) {

View File

@@ -11,7 +11,7 @@ const config = require('./config');
*/ */
async function get(name) { async function get(name) {
return config['Sync'][name] || await optionService.getOption(name); return (config['Sync'] && config['Sync'][name]) || await optionService.getOption(name);
} }
module.exports = { module.exports = {

View File

@@ -19,7 +19,7 @@ async function validateParentChild(parentNoteId, childNoteId, branchId = null) {
if (!await checkTreeCycle(parentNoteId, childNoteId)) { if (!await checkTreeCycle(parentNoteId, childNoteId)) {
return { return {
success: false, success: false,
message: 'Moving note here would create cycle.' message: 'Moving/cloning note here would create cycle.'
}; };
} }
@@ -34,17 +34,17 @@ async function getExistingBranch(parentNoteId, childNoteId) {
* Tree cycle can be created when cloning or when moving existing clone. This method should detect both cases. * Tree cycle can be created when cloning or when moving existing clone. This method should detect both cases.
*/ */
async function checkTreeCycle(parentNoteId, childNoteId) { async function checkTreeCycle(parentNoteId, childNoteId) {
const subTreeNoteIds = []; const subtreeNoteIds = [];
// we'll load the whole sub tree - because the cycle can start in one of the notes in the sub tree // we'll load the whole sub tree - because the cycle can start in one of the notes in the sub tree
await loadSubTreeNoteIds(childNoteId, subTreeNoteIds); await loadSubtreeNoteIds(childNoteId, subtreeNoteIds);
async function checkTreeCycleInner(parentNoteId) { async function checkTreeCycleInner(parentNoteId) {
if (parentNoteId === 'root') { if (parentNoteId === 'root') {
return true; return true;
} }
if (subTreeNoteIds.includes(parentNoteId)) { if (subtreeNoteIds.includes(parentNoteId)) {
// while towards the root of the tree we encountered noteId which is already present in the subtree // while towards the root of the tree we encountered noteId which is already present in the subtree
// joining parentNoteId with childNoteId would then clearly create a cycle // joining parentNoteId with childNoteId would then clearly create a cycle
return false; return false;
@@ -68,13 +68,13 @@ async function getBranch(branchId) {
return sql.getRow("SELECT * FROM branches WHERE branchId = ?", [branchId]); return sql.getRow("SELECT * FROM branches WHERE branchId = ?", [branchId]);
} }
async function loadSubTreeNoteIds(parentNoteId, subTreeNoteIds) { async function loadSubtreeNoteIds(parentNoteId, subtreeNoteIds) {
subTreeNoteIds.push(parentNoteId); subtreeNoteIds.push(parentNoteId);
const children = await sql.getColumn("SELECT noteId FROM branches WHERE parentNoteId = ? AND isDeleted = 0", [parentNoteId]); const children = await sql.getColumn("SELECT noteId FROM branches WHERE parentNoteId = ? AND isDeleted = 0", [parentNoteId]);
for (const childNoteId of children) { for (const childNoteId of children) {
await loadSubTreeNoteIds(childNoteId, subTreeNoteIds); await loadSubtreeNoteIds(childNoteId, subtreeNoteIds);
} }
} }

View File

@@ -5,22 +5,22 @@
<title>Setup</title> <title>Setup</title>
</head> </head>
<body> <body>
<div id="setup-dialog" style="width: 500px; margin: auto; display:none;"> <div id="setup-dialog" style="width: 600px; margin: auto; display:none; font-size: larger;">
<h1>Trilium Notes setup</h1> <h1>Trilium Notes setup</h1>
<div class="alert alert-warning" id="alert" style="display: none;"> <div class="alert alert-warning" id="alert" style="display: none;">
</div> </div>
<div id="setup-type" data-bind="visible: step() == 'setup-type'"> <div id="setup-type" data-bind="visible: step() == 'setup-type'" style="margin-top: 20px;">
<div class="radio"> <div class="radio" style="margin-bottom: 15px;">
<label><input type="radio" name="setup-type" value="new-document" data-bind="checked: setupNewDocument"> <label><input type="radio" name="setup-type" value="new-document" data-bind="checked: setupNewDocument">
I'm a new user and I want to create new Trilium document for my notes</label> I'm a new user and I want to create new Trilium document for my notes</label>
</div> </div>
<div class="radio" data-bind="if: instanceType == 'server'"> <div class="radio" data-bind="if: instanceType == 'server'" style="margin-bottom: 15px;">
<label><input type="radio" name="setup-type" value="sync-from-desktop" data-bind="checked: setupSyncFromDesktop"> <label><input type="radio" name="setup-type" value="sync-from-desktop" data-bind="checked: setupSyncFromDesktop">
I have desktop instance already and I want to setup sync with it</label> I have desktop instance already and I want to setup sync with it</label>
</div> </div>
<div class="radio" data-bind="if: instanceType == 'desktop'"> <div class="radio" data-bind="if: instanceType == 'desktop'" style="margin-bottom: 15px;">
<label><input type="radio" name="setup-type" value="sync-from-server" data-bind="checked: setupSyncFromServer"> <label><input type="radio" name="setup-type" value="sync-from-server" data-bind="checked: setupSyncFromServer">
I have server instance up and I want to setup sync with it</label> I have server instance up and I want to setup sync with it</label>
</div> </div>