mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 20:06:08 +01:00 
			
		
		
		
	expose root node, fixes #101
This commit is contained in:
		@@ -1,6 +1,6 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<dataSource name="document.db">
 | 
			
		||||
  <database-model serializer="dbm" rdbms="SQLITE" format-version="4.8">
 | 
			
		||||
  <database-model serializer="dbm" rdbms="SQLITE" format-version="4.9">
 | 
			
		||||
    <root id="1">
 | 
			
		||||
      <ServerVersion>3.16.1</ServerVersion>
 | 
			
		||||
    </root>
 | 
			
		||||
@@ -50,546 +50,616 @@
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="24" parent="6" name="sqlite_autoindex_api_tokens_1">
 | 
			
		||||
    <column id="24" parent="6" name="hash">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="25" parent="6" name="sqlite_autoindex_api_tokens_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>apiTokenId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="25" parent="6">
 | 
			
		||||
    <key id="26" parent="6">
 | 
			
		||||
      <ColNames>apiTokenId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_api_tokens_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="26" parent="7" name="branchId">
 | 
			
		||||
    <column id="27" parent="7" name="branchId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="27" parent="7" name="noteId">
 | 
			
		||||
    <column id="28" parent="7" name="noteId">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="28" parent="7" name="parentNoteId">
 | 
			
		||||
    <column id="29" parent="7" name="parentNoteId">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="29" parent="7" name="notePosition">
 | 
			
		||||
    <column id="30" parent="7" name="notePosition">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>INTEGER|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="30" parent="7" name="prefix">
 | 
			
		||||
    <column id="31" parent="7" name="prefix">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="31" parent="7" name="isExpanded">
 | 
			
		||||
    <column id="32" parent="7" name="isExpanded">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>BOOLEAN|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="32" parent="7" name="isDeleted">
 | 
			
		||||
    <column id="33" parent="7" name="isDeleted">
 | 
			
		||||
      <Position>7</Position>
 | 
			
		||||
      <DataType>INTEGER|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="33" parent="7" name="dateModified">
 | 
			
		||||
    <column id="34" parent="7" name="dateModified">
 | 
			
		||||
      <Position>8</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="34" parent="7" name="sqlite_autoindex_branches_1">
 | 
			
		||||
    <column id="35" parent="7" name="hash">
 | 
			
		||||
      <Position>9</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="36" parent="7" name="dateCreated">
 | 
			
		||||
      <Position>10</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>'1970-01-01T00:00:00.000Z'</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="37" parent="7" name="sqlite_autoindex_branches_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>branchId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="35" parent="7" name="IDX_branches_noteId_parentNoteId">
 | 
			
		||||
    <index id="38" parent="7" name="IDX_branches_noteId_parentNoteId">
 | 
			
		||||
      <ColNames>noteId
 | 
			
		||||
parentNoteId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="36" parent="7" name="IDX_branches_noteId">
 | 
			
		||||
    <index id="39" parent="7" name="IDX_branches_noteId">
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="37" parent="7">
 | 
			
		||||
    <index id="40" parent="7" name="IDX_branches_parentNoteId">
 | 
			
		||||
      <ColNames>parentNoteId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="41" parent="7">
 | 
			
		||||
      <ColNames>branchId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_branches_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="38" parent="8" name="id">
 | 
			
		||||
    <column id="42" parent="8" name="id">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>INTEGER|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <SequenceIdentity>1</SequenceIdentity>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="39" parent="8" name="noteId">
 | 
			
		||||
    <column id="43" parent="8" name="noteId">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="40" parent="8" name="comment">
 | 
			
		||||
    <column id="44" parent="8" name="comment">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="41" parent="8" name="dateAdded">
 | 
			
		||||
    <column id="45" parent="8" name="dateCreated">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <key id="42" parent="8">
 | 
			
		||||
    <key id="46" parent="8">
 | 
			
		||||
      <ColNames>id</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="43" parent="9" name="imageId">
 | 
			
		||||
    <column id="47" parent="9" name="imageId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="44" parent="9" name="format">
 | 
			
		||||
    <column id="48" parent="9" name="format">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="45" parent="9" name="checksum">
 | 
			
		||||
    <column id="49" parent="9" name="checksum">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="46" parent="9" name="name">
 | 
			
		||||
    <column id="50" parent="9" name="name">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="47" parent="9" name="data">
 | 
			
		||||
    <column id="51" parent="9" name="data">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>BLOB|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="48" parent="9" name="isDeleted">
 | 
			
		||||
    <column id="52" parent="9" name="isDeleted">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="49" parent="9" name="dateModified">
 | 
			
		||||
    <column id="53" parent="9" name="dateModified">
 | 
			
		||||
      <Position>7</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="50" parent="9" name="dateCreated">
 | 
			
		||||
    <column id="54" parent="9" name="dateCreated">
 | 
			
		||||
      <Position>8</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="51" parent="9" name="sqlite_autoindex_images_1">
 | 
			
		||||
    <column id="55" parent="9" name="hash">
 | 
			
		||||
      <Position>9</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="56" parent="9" name="sqlite_autoindex_images_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>imageId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="52" parent="9">
 | 
			
		||||
    <key id="57" parent="9">
 | 
			
		||||
      <ColNames>imageId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_images_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="53" parent="10" name="labelId">
 | 
			
		||||
    <column id="58" parent="10" name="labelId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="54" parent="10" name="noteId">
 | 
			
		||||
    <column id="59" parent="10" name="noteId">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="55" parent="10" name="name">
 | 
			
		||||
    <column id="60" parent="10" name="name">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="56" parent="10" name="value">
 | 
			
		||||
    <column id="61" parent="10" name="value">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>''</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="57" parent="10" name="position">
 | 
			
		||||
    <column id="62" parent="10" name="position">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="58" parent="10" name="dateCreated">
 | 
			
		||||
    <column id="63" parent="10" name="dateCreated">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="59" parent="10" name="dateModified">
 | 
			
		||||
    <column id="64" parent="10" name="dateModified">
 | 
			
		||||
      <Position>7</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="60" parent="10" name="isDeleted">
 | 
			
		||||
    <column id="65" parent="10" name="isDeleted">
 | 
			
		||||
      <Position>8</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="61" parent="10" name="sqlite_autoindex_labels_1">
 | 
			
		||||
    <column id="66" parent="10" name="hash">
 | 
			
		||||
      <Position>9</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="67" parent="10" name="sqlite_autoindex_labels_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>labelId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="62" parent="10" name="IDX_labels_noteId">
 | 
			
		||||
    <index id="68" parent="10" name="IDX_labels_noteId">
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="63" parent="10" name="IDX_labels_name_value">
 | 
			
		||||
    <index id="69" parent="10" name="IDX_labels_name_value">
 | 
			
		||||
      <ColNames>name
 | 
			
		||||
value</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="64" parent="10">
 | 
			
		||||
    <key id="70" parent="10">
 | 
			
		||||
      <ColNames>labelId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_labels_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="65" parent="11" name="noteImageId">
 | 
			
		||||
    <column id="71" parent="11" name="noteImageId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="66" parent="11" name="noteId">
 | 
			
		||||
    <column id="72" parent="11" name="noteId">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="67" parent="11" name="imageId">
 | 
			
		||||
    <column id="73" parent="11" name="imageId">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="68" parent="11" name="isDeleted">
 | 
			
		||||
    <column id="74" parent="11" name="isDeleted">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="69" parent="11" name="dateModified">
 | 
			
		||||
    <column id="75" parent="11" name="dateModified">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="70" parent="11" name="dateCreated">
 | 
			
		||||
    <column id="76" parent="11" name="dateCreated">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="71" parent="11" name="sqlite_autoindex_note_images_1">
 | 
			
		||||
    <column id="77" parent="11" name="hash">
 | 
			
		||||
      <Position>7</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="78" parent="11" name="sqlite_autoindex_note_images_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>noteImageId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="72" parent="11" name="IDX_note_images_noteId_imageId">
 | 
			
		||||
    <index id="79" parent="11" name="IDX_note_images_noteId_imageId">
 | 
			
		||||
      <ColNames>noteId
 | 
			
		||||
imageId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="73" parent="11" name="IDX_note_images_noteId">
 | 
			
		||||
    <index id="80" parent="11" name="IDX_note_images_noteId">
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="74" parent="11" name="IDX_note_images_imageId">
 | 
			
		||||
    <index id="81" parent="11" name="IDX_note_images_imageId">
 | 
			
		||||
      <ColNames>imageId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="75" parent="11">
 | 
			
		||||
    <key id="82" parent="11">
 | 
			
		||||
      <ColNames>noteImageId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_note_images_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="76" parent="12" name="noteRevisionId">
 | 
			
		||||
    <column id="83" parent="12" name="noteRevisionId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="77" parent="12" name="noteId">
 | 
			
		||||
    <column id="84" parent="12" name="noteId">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="78" parent="12" name="title">
 | 
			
		||||
    <column id="85" parent="12" name="title">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="79" parent="12" name="content">
 | 
			
		||||
    <column id="86" parent="12" name="content">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="80" parent="12" name="isProtected">
 | 
			
		||||
    <column id="87" parent="12" name="isProtected">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="81" parent="12" name="dateModifiedFrom">
 | 
			
		||||
    <column id="88" parent="12" name="dateModifiedFrom">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="82" parent="12" name="dateModifiedTo">
 | 
			
		||||
    <column id="89" parent="12" name="dateModifiedTo">
 | 
			
		||||
      <Position>7</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="83" parent="12" name="type">
 | 
			
		||||
    <column id="90" parent="12" name="type">
 | 
			
		||||
      <Position>8</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>''</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="84" parent="12" name="mime">
 | 
			
		||||
    <column id="91" parent="12" name="mime">
 | 
			
		||||
      <Position>9</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>''</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="85" parent="12" name="sqlite_autoindex_note_revisions_1">
 | 
			
		||||
    <column id="92" parent="12" name="hash">
 | 
			
		||||
      <Position>10</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="93" parent="12" name="sqlite_autoindex_note_revisions_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>noteRevisionId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="86" parent="12" name="IDX_note_revisions_noteId">
 | 
			
		||||
    <index id="94" parent="12" name="IDX_note_revisions_noteId">
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="87" parent="12" name="IDX_note_revisions_dateModifiedFrom">
 | 
			
		||||
    <index id="95" parent="12" name="IDX_note_revisions_dateModifiedFrom">
 | 
			
		||||
      <ColNames>dateModifiedFrom</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="88" parent="12" name="IDX_note_revisions_dateModifiedTo">
 | 
			
		||||
    <index id="96" parent="12" name="IDX_note_revisions_dateModifiedTo">
 | 
			
		||||
      <ColNames>dateModifiedTo</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="89" parent="12">
 | 
			
		||||
    <key id="97" parent="12">
 | 
			
		||||
      <ColNames>noteRevisionId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_note_revisions_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="90" parent="13" name="noteId">
 | 
			
		||||
    <column id="98" parent="13" name="noteId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="91" parent="13" name="title">
 | 
			
		||||
    <column id="99" parent="13" name="title">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>"unnamed"</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="92" parent="13" name="content">
 | 
			
		||||
    <column id="100" parent="13" name="content">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="93" parent="13" name="isProtected">
 | 
			
		||||
    <column id="101" parent="13" name="isProtected">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="94" parent="13" name="isDeleted">
 | 
			
		||||
    <column id="102" parent="13" name="isDeleted">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="95" parent="13" name="dateCreated">
 | 
			
		||||
    <column id="103" parent="13" name="dateCreated">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="96" parent="13" name="dateModified">
 | 
			
		||||
    <column id="104" parent="13" name="dateModified">
 | 
			
		||||
      <Position>7</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="97" parent="13" name="type">
 | 
			
		||||
    <column id="105" parent="13" name="type">
 | 
			
		||||
      <Position>8</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>'text'</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="98" parent="13" name="mime">
 | 
			
		||||
    <column id="106" parent="13" name="mime">
 | 
			
		||||
      <Position>9</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>'text/html'</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="99" parent="13" name="sqlite_autoindex_notes_1">
 | 
			
		||||
    <column id="107" parent="13" name="hash">
 | 
			
		||||
      <Position>10</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="108" parent="13" name="sqlite_autoindex_notes_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="100" parent="13" name="IDX_notes_isDeleted">
 | 
			
		||||
      <ColNames>isDeleted</ColNames>
 | 
			
		||||
    <index id="109" parent="13" name="IDX_notes_type">
 | 
			
		||||
      <ColNames>type</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="101" parent="13">
 | 
			
		||||
    <key id="110" parent="13">
 | 
			
		||||
      <ColNames>noteId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_notes_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="102" parent="14" name="name">
 | 
			
		||||
    <column id="111" parent="14" name="name">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="103" parent="14" name="value">
 | 
			
		||||
    <column id="112" parent="14" name="value">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="104" parent="14" name="dateModified">
 | 
			
		||||
    <column id="113" parent="14" name="dateModified">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="105" parent="14" name="isSynced">
 | 
			
		||||
    <column id="114" parent="14" name="isSynced">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>INTEGER|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>0</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="106" parent="14" name="sqlite_autoindex_options_1">
 | 
			
		||||
    <column id="115" parent="14" name="hash">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="116" parent="14" name="dateCreated">
 | 
			
		||||
      <Position>6</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>'1970-01-01T00:00:00.000Z'</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="117" parent="14" name="sqlite_autoindex_options_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>name</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="107" parent="14">
 | 
			
		||||
    <key id="118" parent="14">
 | 
			
		||||
      <ColNames>name</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_options_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="108" parent="15" name="branchId">
 | 
			
		||||
    <column id="119" parent="15" name="branchId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="109" parent="15" name="notePath">
 | 
			
		||||
    <column id="120" parent="15" name="notePath">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="110" parent="15" name="dateAccessed">
 | 
			
		||||
    <column id="121" parent="15" name="dateCreated">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="111" parent="15" name="isDeleted">
 | 
			
		||||
    <column id="122" parent="15" name="isDeleted">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>INT|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="112" parent="15" name="sqlite_autoindex_recent_notes_1">
 | 
			
		||||
    <column id="123" parent="15" name="hash">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <DefaultExpression>""</DefaultExpression>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="124" parent="15" name="sqlite_autoindex_recent_notes_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>branchId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="113" parent="15">
 | 
			
		||||
    <key id="125" parent="15">
 | 
			
		||||
      <ColNames>branchId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_recent_notes_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="114" parent="16" name="sourceId">
 | 
			
		||||
    <column id="126" parent="16" name="sourceId">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="115" parent="16" name="dateCreated">
 | 
			
		||||
    <column id="127" parent="16" name="dateCreated">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="116" parent="16" name="sqlite_autoindex_source_ids_1">
 | 
			
		||||
    <index id="128" parent="16" name="sqlite_autoindex_source_ids_1">
 | 
			
		||||
      <NameSurrogate>1</NameSurrogate>
 | 
			
		||||
      <ColNames>sourceId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="117" parent="16">
 | 
			
		||||
    <key id="129" parent="16">
 | 
			
		||||
      <ColNames>sourceId</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
      <UnderlyingIndexName>sqlite_autoindex_source_ids_1</UnderlyingIndexName>
 | 
			
		||||
    </key>
 | 
			
		||||
    <column id="118" parent="17" name="type">
 | 
			
		||||
    <column id="130" parent="17" name="type">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>text|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="119" parent="17" name="name">
 | 
			
		||||
    <column id="131" parent="17" name="name">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>text|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="120" parent="17" name="tbl_name">
 | 
			
		||||
    <column id="132" parent="17" name="tbl_name">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>text|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="121" parent="17" name="rootpage">
 | 
			
		||||
    <column id="133" parent="17" name="rootpage">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>integer|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="122" parent="17" name="sql">
 | 
			
		||||
    <column id="134" parent="17" name="sql">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>text|0s</DataType>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="123" parent="18" name="name">
 | 
			
		||||
    <column id="135" parent="18" name="name">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="124" parent="18" name="seq">
 | 
			
		||||
    <column id="136" parent="18" name="seq">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="125" parent="19" name="id">
 | 
			
		||||
    <column id="137" parent="19" name="id">
 | 
			
		||||
      <Position>1</Position>
 | 
			
		||||
      <DataType>INTEGER|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
      <SequenceIdentity>1</SequenceIdentity>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="126" parent="19" name="entityName">
 | 
			
		||||
    <column id="138" parent="19" name="entityName">
 | 
			
		||||
      <Position>2</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="127" parent="19" name="entityId">
 | 
			
		||||
    <column id="139" parent="19" name="entityId">
 | 
			
		||||
      <Position>3</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="128" parent="19" name="sourceId">
 | 
			
		||||
    <column id="140" parent="19" name="sourceId">
 | 
			
		||||
      <Position>4</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <column id="129" parent="19" name="syncDate">
 | 
			
		||||
    <column id="141" parent="19" name="syncDate">
 | 
			
		||||
      <Position>5</Position>
 | 
			
		||||
      <DataType>TEXT|0s</DataType>
 | 
			
		||||
      <NotNull>1</NotNull>
 | 
			
		||||
    </column>
 | 
			
		||||
    <index id="130" parent="19" name="IDX_sync_entityName_entityId">
 | 
			
		||||
    <index id="142" parent="19" name="IDX_sync_entityName_entityId">
 | 
			
		||||
      <ColNames>entityName
 | 
			
		||||
entityId</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
      <Unique>1</Unique>
 | 
			
		||||
    </index>
 | 
			
		||||
    <index id="131" parent="19" name="IDX_sync_syncDate">
 | 
			
		||||
    <index id="143" parent="19" name="IDX_sync_syncDate">
 | 
			
		||||
      <ColNames>syncDate</ColNames>
 | 
			
		||||
      <ColumnCollations></ColumnCollations>
 | 
			
		||||
    </index>
 | 
			
		||||
    <key id="132" parent="19">
 | 
			
		||||
    <key id="144" parent="19">
 | 
			
		||||
      <ColNames>id</ColNames>
 | 
			
		||||
      <Primary>1</Primary>
 | 
			
		||||
    </key>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								src/public/images/icons/tree-root.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/public/images/icons/tree-root.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 240 B  | 
@@ -107,12 +107,16 @@ const contextMenuOptions = {
 | 
			
		||||
        const branch = await treeCache.getBranch(node.data.branchId);
 | 
			
		||||
        const note = await treeCache.getNote(node.data.noteId);
 | 
			
		||||
        const parentNote = await treeCache.getNote(branch.parentNoteId);
 | 
			
		||||
        const isNotRoot = note.noteId !== 'root';
 | 
			
		||||
 | 
			
		||||
        // Modify menu entries depending on node status
 | 
			
		||||
        $tree.contextmenu("enableEntry", "pasteAfter", clipboardIds.length > 0 && (!parentNote || parentNote.type !== 'search'));
 | 
			
		||||
        $tree.contextmenu("enableEntry", "pasteInto", clipboardIds.length > 0 && note.type !== 'search');
 | 
			
		||||
        $tree.contextmenu("enableEntry", "insertNoteHere", !parentNote || parentNote.type !== 'search');
 | 
			
		||||
        $tree.contextmenu("enableEntry", "insertNoteHere", isNotRoot && parentNote.type !== 'search');
 | 
			
		||||
        $tree.contextmenu("enableEntry", "insertChildNote", note.type !== 'search');
 | 
			
		||||
        $tree.contextmenu("enableEntry", "delete", isNotRoot);
 | 
			
		||||
        $tree.contextmenu("enableEntry", "copy", isNotRoot);
 | 
			
		||||
        $tree.contextmenu("enableEntry", "cut", isNotRoot);
 | 
			
		||||
        $tree.contextmenu("enableEntry", "pasteAfter", clipboardIds.length > 0 && isNotRoot && parentNote.type !== 'search');
 | 
			
		||||
        $tree.contextmenu("enableEntry", "pasteInto", clipboardIds.length > 0 && note.type !== 'search');
 | 
			
		||||
        $tree.contextmenu("enableEntry", "importBranch", note.type !== 'search');
 | 
			
		||||
        $tree.contextmenu("enableEntry", "exportBranch", note.type !== 'search');
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -81,7 +81,7 @@ async function expandToNote(notePath, expandOpts) {
 | 
			
		||||
 | 
			
		||||
    const noteId = treeUtils.getNoteIdFromNotePath(notePath);
 | 
			
		||||
 | 
			
		||||
    let parentNoteId = 'root';
 | 
			
		||||
    let parentNoteId = 'none';
 | 
			
		||||
 | 
			
		||||
    for (const childNoteId of runPath) {
 | 
			
		||||
        const node = getNodesByNoteId(childNoteId).find(node => node.data.parentNoteId === parentNoteId);
 | 
			
		||||
@@ -115,7 +115,10 @@ async function getRunPath(notePath) {
 | 
			
		||||
    utils.assertArguments(notePath);
 | 
			
		||||
 | 
			
		||||
    const path = notePath.split("/").reverse();
 | 
			
		||||
    path.push('root');
 | 
			
		||||
 | 
			
		||||
    if (!path.includes("root")) {
 | 
			
		||||
        path.push('root');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const effectivePath = [];
 | 
			
		||||
    let childNoteId = null;
 | 
			
		||||
@@ -162,7 +165,7 @@ async function getRunPath(notePath) {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (parentNoteId === 'root') {
 | 
			
		||||
        if (parentNoteId === 'none') {
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
@@ -180,10 +183,6 @@ async function showParentList(noteId, node) {
 | 
			
		||||
    const note = await treeCache.getNote(noteId);
 | 
			
		||||
    const parents = await note.getParentNotes();
 | 
			
		||||
 | 
			
		||||
    if (!parents.length) {
 | 
			
		||||
        infoService.throwError("Can't find parents for noteId=" + noteId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (parents.length <= 1) {
 | 
			
		||||
        $parentList.hide();
 | 
			
		||||
    }
 | 
			
		||||
@@ -294,6 +293,7 @@ function initFancyTree(tree) {
 | 
			
		||||
        extensions: ["hotkeys", "filter", "dnd", "clones"],
 | 
			
		||||
        source: tree,
 | 
			
		||||
        scrollParent: $tree,
 | 
			
		||||
        minExpandLevel: 2, // root can't be collapsed
 | 
			
		||||
        click: (event, data) => {
 | 
			
		||||
            const targetType = data.targetType;
 | 
			
		||||
            const node = data.node;
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ async function prepareTree(noteRows, branchRows, relations) {
 | 
			
		||||
 | 
			
		||||
    treeCache.load(noteRows, branchRows, relations);
 | 
			
		||||
 | 
			
		||||
    return await prepareRealBranch(await treeCache.getNote('root'));
 | 
			
		||||
    return [ await prepareNode(await treeCache.getBranch('root')) ];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function prepareBranch(note) {
 | 
			
		||||
@@ -22,6 +22,35 @@ async function prepareBranch(note) {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function prepareNode(branch) {
 | 
			
		||||
    const note = await branch.getNote();
 | 
			
		||||
    const title = (branch.prefix ? (branch.prefix + " - ") : "") + note.title;
 | 
			
		||||
 | 
			
		||||
    const node = {
 | 
			
		||||
        noteId: note.noteId,
 | 
			
		||||
        parentNoteId: branch.parentNoteId,
 | 
			
		||||
        branchId: branch.branchId,
 | 
			
		||||
        isProtected: note.isProtected,
 | 
			
		||||
        title: utils.escapeHtml(title),
 | 
			
		||||
        extraClasses: await getExtraClasses(note),
 | 
			
		||||
        refKey: note.noteId,
 | 
			
		||||
        expanded: note.type !== 'search' && branch.isExpanded
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    if (note.hasChildren() || note.type === 'search') {
 | 
			
		||||
        node.folder = true;
 | 
			
		||||
 | 
			
		||||
        if (node.expanded && note.type !== 'search') {
 | 
			
		||||
            node.children = await prepareRealBranch(note);
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            node.lazy = true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return node;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function prepareRealBranch(parentNote) {
 | 
			
		||||
    utils.assertArguments(parentNote);
 | 
			
		||||
 | 
			
		||||
@@ -35,30 +64,7 @@ async function prepareRealBranch(parentNote) {
 | 
			
		||||
    const noteList = [];
 | 
			
		||||
 | 
			
		||||
    for (const branch of childBranches) {
 | 
			
		||||
        const note = await branch.getNote();
 | 
			
		||||
        const title = (branch.prefix ? (branch.prefix + " - ") : "") + note.title;
 | 
			
		||||
 | 
			
		||||
        const node = {
 | 
			
		||||
            noteId: note.noteId,
 | 
			
		||||
            parentNoteId: branch.parentNoteId,
 | 
			
		||||
            branchId: branch.branchId,
 | 
			
		||||
            isProtected: note.isProtected,
 | 
			
		||||
            title: utils.escapeHtml(title),
 | 
			
		||||
            extraClasses: await getExtraClasses(note),
 | 
			
		||||
            refKey: note.noteId,
 | 
			
		||||
            expanded: note.type !== 'search' && branch.isExpanded
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        if (note.hasChildren() || note.type === 'search') {
 | 
			
		||||
            node.folder = true;
 | 
			
		||||
 | 
			
		||||
            if (node.expanded && note.type !== 'search') {
 | 
			
		||||
                node.children = await prepareRealBranch(note);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                node.lazy = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        const node = await prepareNode(branch);
 | 
			
		||||
 | 
			
		||||
        noteList.push(node);
 | 
			
		||||
    }
 | 
			
		||||
@@ -90,6 +96,10 @@ async function getExtraClasses(note) {
 | 
			
		||||
 | 
			
		||||
    const extraClasses = [];
 | 
			
		||||
 | 
			
		||||
    if (note.noteId === 'root') {
 | 
			
		||||
        extraClasses.push("tree-root");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (note.isProtected) {
 | 
			
		||||
        extraClasses.push("protected");
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -58,6 +58,10 @@ class TreeCache {
 | 
			
		||||
 | 
			
		||||
    /** @return NoteShort */
 | 
			
		||||
    async getNote(noteId) {
 | 
			
		||||
        if (noteId === 'none') {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return (await this.getNotes([noteId]))[0];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -68,6 +72,10 @@ class TreeCache {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    addBranchRelationship(branchId, childNoteId, parentNoteId) {
 | 
			
		||||
        if (parentNoteId === 'none') { // applies only to root element
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.childParentToBranch[childNoteId + '-' + parentNoteId] = branchId;
 | 
			
		||||
 | 
			
		||||
        this.parents[childNoteId] = this.parents[childNoteId] || [];
 | 
			
		||||
 
 | 
			
		||||
@@ -105,6 +105,15 @@ span.fancytree-node.fancytree-active-clone:not(.fancytree-active) .fancytree-tit
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span.fancytree-node.tree-root > span.fancytree-icon {
 | 
			
		||||
    background: url("../images/icons/tree-root.png") 0 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* first nesting level has lower left padding to avoid extra left padding. Other levels are not affected */
 | 
			
		||||
.ui-fancytree > li > ul {
 | 
			
		||||
    padding-left: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* By default not focused active tree item is not easily visible, this makes it more visible */
 | 
			
		||||
span.fancytree-active:not(.fancytree-focused) .fancytree-title {
 | 
			
		||||
    background-color: #ddd !important;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user