# Class: FNote

## FNote(froca, row)

#### new FNote(froca, row)

##### Parameters:

Name | Type | Description
--- | --- | ---
`froca` | Froca |
`row` | Object.<string, Object> |

Source:
  - entities/fnote.js, line 33

### Members

#### attachments :Array.<FAttachment>|null

##### Type:

- Array.<FAttachment> | null

Source:
  - entities/fnote.js, line 55

#### attributes :Array.<string>

##### Type:

- Array.<string>

Source:
  - entities/fnote.js, line 38

#### childToBranch :Object.<string, string>

##### Type:

- Object.<string, string>

Source:
  - entities/fnote.js, line 52

#### children :Array.<string>

##### Type:

- Array.<string>

Source:
  - entities/fnote.js, line 46

#### froca :Froca

##### Type:

- Froca

Source:
  - entities/fnote.js, line 35

#### isProtected :boolean

##### Type:

- boolean

Source:
  - entities/fnote.js, line 66

#### mime :string

content-type, e.g. "application/json"

##### Type:

- string

Source:
  - entities/fnote.js, line 76

#### noteId :string

##### Type:

- string

Source:
  - entities/fnote.js, line 62

#### parentToBranch :Object.<string, string>

##### Type:

- Object.<string, string>

Source:
  - entities/fnote.js, line 49

#### parents :Array.<string>

##### Type:

- Array.<string>

Source:
  - entities/fnote.js, line 44

#### targetRelations :Array.<string>

##### Type:

- Array.<string>

Source:
  - entities/fnote.js, line 41

#### title :string

##### Type:

- string

Source:
  - entities/fnote.js, line 64

#### type :string

one of 'text', 'code', 'file' or 'render'

##### Type:

- string

Source:
  - entities/fnote.js, line 71

### Methods

#### getAllNotePaths() → {Array.<Array.<string>>}

Gives all possible note paths leading to this note. Paths containing search note are ignored (could form cycles)

Source:
  - entities/fnote.js, line 354

##### Returns:

- array of notePaths (each represented by array of noteIds constituting the particular note path)

Type
  Array.<Array.<string>>

#### (async) getAttachmentById() → {Promise.<FAttachment>}

Source:
  - entities/fnote.js, line 241

##### Returns:

Type
  Promise.<FAttachment>

#### (async) getAttachments() → {Promise.<Array.<FAttachment>>}

Source:
  - entities/fnote.js, line 232

##### Returns:

Type
  Promise.<Array.<FAttachment>>

#### getAttribute(type, name) → {FAttribute}

##### Parameters:

Name | Type | Description
--- | --- | ---
`type` | string | attribute type (label, relation, etc.)
`name` | string | attribute name

Source:
  - entities/fnote.js, line 617

##### Returns:

attribute of the given type and name. If there are more such attributes, first is returned. Returns null if there's no such attribute belonging to this note.

Type
  FAttribute

#### getAttributeValue(type, name) → {string}

##### Parameters:

Name | Type | Description
--- | --- | ---
`type` | string | attribute type (label, relation, etc.)
`name` | string | attribute name

Source:
  - entities/fnote.js, line 639

##### Returns:

attribute value of the given type and name or null if no such attribute exists.

Type
  string

#### getAttributes(typeopt, nameopt) → {Array.<FAttribute>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`type` | string | <optional> | (optional) attribute type to filter
`name` | string | <optional> | (optional) attribute name to filter

Source:
  - entities/fnote.js, line 288

##### Returns:

all note's attributes, including inherited ones

Type
  Array.<FAttribute>

#### getBestNotePath(hoistedNoteIdopt) → {Array.<string>}

Returns the note path considered to be the "best"

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`hoistedNoteId` | string | <optional> | 'root' |

Source:
  - entities/fnote.js, line 410

##### Returns:

array of noteIds constituting the particular note path

Type
  Array.<string>

#### getBestNotePathString(hoistedNoteIdopt) → {string}

Returns the note path considered to be the "best"

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`hoistedNoteId` | string | <optional> | 'root' |

Source:
  - entities/fnote.js, line 420

##### Returns:

serialized note path (e.g. 'root/a1h315/js725h')

Type
  string

#### (async) getBlob() → {Promise.<FBlob>}

Source:
  - entities/fnote.js, line 864

##### Returns:

Type
  Promise.<FBlob>

#### getBranchIds() → {Array.<string>}

Deprecated:
  - use getParentBranchIds() instead
Source:
  - entities/fnote.js, line 153

##### Returns:

Type
  Array.<string>

#### getBranches() → {Array.<FBranch>}

Deprecated:
  - use getParentBranches() instead
Source:
  - entities/fnote.js, line 170

##### Returns:

Type
  Array.<FBranch>

#### getChildBranches() → {Array.<FBranch>}

Source:
  - entities/fnote.js, line 180

##### Returns:

Type
  Array.<FBranch>

#### getChildNoteIds() → {Array.<string>}

Source:
  - entities/fnote.js, line 222

##### Returns:

Type
  Array.<string>

#### (async) getChildNotes() → {Promise.<Array.<FNote>>}

Source:
  - entities/fnote.js, line 227

##### Returns:

Type
  Promise.<Array.<FNote>>

#### getLabel(name) → {FAttribute}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - entities/fnote.js, line 693

##### Returns:

label if it exists, null otherwise

Type
  FAttribute

#### getLabelValue(name) → {string}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - entities/fnote.js, line 717

##### Returns:

label value if label exists, null otherwise

Type
  string

#### getLabels(nameopt) → {Array.<FAttribute>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string | <optional> | label name to filter

Source:
  - entities/fnote.js, line 503

##### Returns:

all note's labels (attributes with type label), including inherited ones

Type
  Array.<FAttribute>

#### (async) getNoteComplement() → {Promise.<FBlob>}

Deprecated:
  - use getBlob() instead
Source:
  - entities/fnote.js, line 859

##### Returns:

Type
  Promise.<FBlob>

#### getNotesToInheritAttributesFrom() → {Array.<FNote>}

Source:
  - entities/fnote.js, line 759

##### Returns:

Type
  Array.<FNote>

#### getOwnedAttribute(type, name) → {FAttribute}

##### Parameters:

Name | Type | Description
--- | --- | ---
`type` | string | attribute type (label, relation, etc.)
`name` | string | attribute name

Source:
  - entities/fnote.js, line 606

##### Returns:

attribute of the given type and name. If there are more such attributes, first is returned. Returns null if there's no such attribute belonging to this note.

Type
  FAttribute

#### getOwnedAttributeValue(type, name) → {string}

##### Parameters:

Name | Type | Description
--- | --- | ---
`type` | string | attribute type (label, relation, etc.)
`name` | string | attribute name

Source:
  - entities/fnote.js, line 628

##### Returns:

attribute value of the given type and name or null if no such attribute exists.

Type
  string

#### getOwnedAttributes(typeopt, nameopt) → {Array.<FAttribute>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`type` | string | <optional> | (optional) attribute type to filter
`name` | string | <optional> | (optional) attribute name to filter

Source:
  - entities/fnote.js, line 275

##### Returns:

all note's attributes, including inherited ones

Type
  Array.<FAttribute>

#### getOwnedLabel(name) → {FAttribute}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - entities/fnote.js, line 687

##### Returns:

label if it exists, null otherwise

Type
  FAttribute

#### getOwnedLabelValue(name) → {string}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - entities/fnote.js, line 711

##### Returns:

label value if label exists, null otherwise

Type
  string

#### getOwnedLabels(nameopt) → {Array.<FAttribute>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string | <optional> | label name to filter

Source:
  - entities/fnote.js, line 495

##### Returns:

all note's labels (attributes with type label), including inherited ones

Type
  Array.<FAttribute>

#### getOwnedRelation(name) → {FAttribute}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | relation name

Source:
  - entities/fnote.js, line 699

##### Returns:

relation if it exists, null otherwise

Type
  FAttribute

#### getOwnedRelationValue(name) → {string}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | relation name

Source:
  - entities/fnote.js, line 723

##### Returns:

relation value if relation exists, null otherwise

Type
  string

#### getOwnedRelations(nameopt) → {Array.<FAttribute>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string | <optional> | relation name to filter

Source:
  - entities/fnote.js, line 569

##### Returns:

all note's relations (attributes with type relation), including inherited ones

Type
  Array.<FAttribute>

#### getParentBranchIds() → {Array.<string>}

Source:
  - entities/fnote.js, line 145

##### Returns:

Type
  Array.<string>

#### getParentBranches() → {Array.<FBranch>}

Source:
  - entities/fnote.js, line 160

##### Returns:

Type
  Array.<FBranch>

#### getParentNoteIds() → {Array.<string>}

Source:
  - entities/fnote.js, line 188

##### Returns:

Type
  Array.<string>

#### getParentNotes() → {Array.<FNote>}

Source:
  - entities/fnote.js, line 193

##### Returns:

Type
  Array.<FNote>

#### getRelation(name) → {FAttribute}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | relation name

Source:
  - entities/fnote.js, line 705

##### Returns:

relation if it exists, null otherwise

Type
  FAttribute

#### (async) getRelationTarget(name) → {Promise.<FNote>|null}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string |

Source:
  - entities/fnote.js, line 735

##### Returns:

target note of the relation or null (if target is empty or note was not found)

Type
  Promise.<FNote> | null

#### (async) getRelationTargets(nameopt) → {Promise.<Array.<FNote>>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string | <optional> | relation name to filter

Source:
  - entities/fnote.js, line 745

##### Returns:

Type
  Promise.<Array.<FNote>>

#### getRelationValue(name) → {string}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | relation name

Source:
  - entities/fnote.js, line 729

##### Returns:

relation value if relation exists, null otherwise

Type
  string

#### getRelations(nameopt) → {Array.<FAttribute>}

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`name` | string | <optional> | relation name to filter

Source:
  - entities/fnote.js, line 577

##### Returns:

all note's relations (attributes with type relation), including inherited ones

Type
  Array.<FAttribute>

#### getScriptEnv() → {string|null}

Source:
  - entities/fnote.js, line 908

##### Returns:

JS script environment - either "frontend" or "backend"

Type
  string | null

#### getSortedNotePathRecords(hoistedNoteIdopt) → {Array.<{isArchived: boolean, isInHoistedSubTree: boolean, isSearch: boolean, notePath: Array.<string>, isHidden: boolean}>}

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`hoistedNoteId` | string | <optional> | 'root' |

Source:
  - entities/fnote.js, line 376

##### Returns:

Type
  Array.<{isArchived: boolean, isInHoistedSubTree: boolean, isSearch: boolean, notePath: Array.<string>, isHidden: boolean}>

#### (async) getTargetRelationSourceNotes() → {Promise.<Array.<FNote>>}

Get relations which target this note

Source:
  - entities/fnote.js, line 849

##### Returns:

Type
  Promise.<Array.<FNote>>

#### getTargetRelations() → {Array.<FAttribute>}

Get relations which target this note

Source:
  - entities/fnote.js, line 839

##### Returns:

Type
  Array.<FAttribute>

#### hasAttribute(type, name) → {boolean}

##### Parameters:

Name | Type | Description
--- | --- | ---
`type` | string | attribute type (label, relation, etc.)
`name` | string | attribute name

Source:
  - entities/fnote.js, line 586

##### Returns:

true if note has an attribute with given type and name (including inherited)

Type
  boolean

#### hasChildren() → {boolean}

Source:
  - entities/fnote.js, line 175

##### Returns:

Type
  boolean

#### hasLabel(name) → {boolean}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - entities/fnote.js, line 655

##### Returns:

true if label exists (including inherited)

Type
  boolean

#### hasOwnedAttribute(type, name) → {boolean}

##### Parameters:

Name | Type | Description
--- | --- | ---
`type` | string | attribute type (label, relation, etc.)
`name` | string | attribute name

Source:
  - entities/fnote.js, line 597

##### Returns:

true if note has an attribute with given type and name (including inherited)

Type
  boolean

#### hasOwnedLabel(name) → {boolean}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - entities/fnote.js, line 649

##### Returns:

true if label exists (excluding inherited)

Type
  boolean

#### hasOwnedRelation(name) → {boolean}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | relation name

Source:
  - entities/fnote.js, line 675

##### Returns:

true if relation exists (excluding inherited)

Type
  boolean

#### hasRelation(name) → {boolean}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | relation name

Source:
  - entities/fnote.js, line 681

##### Returns:

true if relation exists (including inherited)

Type
  boolean

#### invalidateAttributeCache()

Deprecated:
  - NOOP
Source:
  - entities/fnote.js, line 832

#### isHiddenCompletely()

Source:
  - entities/fnote.js, line 429

##### Returns:

boolean - true if there's no non-hidden path, note is not cloned to the visible tree

#### isHtml() → {boolean}

Source:
  - entities/fnote.js, line 903

##### Returns:

true if this note is HTML

Type
  boolean

#### isJavaScript() → {boolean}

Source:
  - entities/fnote.js, line 895

##### Returns:

true if this note is JavaScript (code or file)

Type
  boolean

#### isJson() → {boolean}

Source:
  - entities/fnote.js, line 118

##### Returns:

Type
  boolean

#### isLabelTruthy(name) → {boolean}

##### Parameters:

Name | Type | Description
--- | --- | ---
`name` | string | label name

Source:
  - entities/fnote.js, line 661

##### Returns:

true if label exists (including inherited) and does not have "false" value.

Type
  boolean