@ -1,5 +1,5 @@ |
|||||||
{ |
{ |
||||||
"label": "Table Details", |
"label": "Table details", |
||||||
"collapsible": true, |
"collapsible": true, |
||||||
"collapsed": true |
"collapsed": true |
||||||
} |
} |
@ -0,0 +1,137 @@ |
|||||||
|
--- |
||||||
|
title: 'Rich text' |
||||||
|
description: 'This article explains how to create & work with a Rich text field.' |
||||||
|
tags: ['Fields', 'Field types', 'Text based types', 'Rich text'] |
||||||
|
keywords: ['Fields', 'Field types', 'Text based types', 'Rich text', 'Create rich text field'] |
||||||
|
--- |
||||||
|
|
||||||
|
|
||||||
|
`Rich Text` field is text based field & is extension of `Long text` that allows you to add formatting to the text. You can add text formatting like bold, italic, underline, strikethrough, horizontal rule, ordered list, unordered list, code, quote, etc. |
||||||
|
|
||||||
|
## Create a `Rich Text` field |
||||||
|
1. Click on `+` icon to the right of `Fields header` |
||||||
|
2. On the dropdown modal, enter the field name (Optional). |
||||||
|
3. Select the field type as `Long text` from the dropdown. |
||||||
|
4. Enable `Rich Text` toggle field. |
||||||
|
5. Set default value for the field (Optional). |
||||||
|
6. Click on `Save Field` button. |
||||||
|
|
||||||
|
![image](/img/v2/fields/types/richtext.png) |
||||||
|
|
||||||
|
:::note |
||||||
|
- Specify default value without quotes. |
||||||
|
- Use `Enter` key to add new line. |
||||||
|
::: |
||||||
|
|
||||||
|
### Cell display |
||||||
|
`Rich Text` field is displayed as a single line text field in the table view. Click on the expand icon in the cell to view the full text. |
||||||
|
|
||||||
|
![image](/img/v2/fields/long-text-expand.png) |
||||||
|
![image](/img/v2/fields/long-text-expand-2.png) |
||||||
|
|
||||||
|
|
||||||
|
## Formatting options |
||||||
|
NocoDB supports markdown syntax for formatting the text. Following are the supported formatting options. |
||||||
|
|
||||||
|
### Heading |
||||||
|
To create a heading, prefix `#` symbol preceding your heading text. The number of # symbols employed will dictate the heading's hierarchy level and typeface size. Three levels of headings are supported. |
||||||
|
|
||||||
|
``` |
||||||
|
# Heading 1 |
||||||
|
## Heading 2 |
||||||
|
### Heading 3 |
||||||
|
``` |
||||||
|
|
||||||
|
![image](/img/v2/fields/types/richtext-heading.png) |
||||||
|
|
||||||
|
### Text formatting |
||||||
|
You can emphasise text with bold, italic, strikethrough or underline formatting options. Table below shows syntax, keyboard shortcut, example & output for each formatting option. |
||||||
|
|
||||||
|
| Style | Syntax | Keyboard shortcut | Example | Output | |
||||||
|
| --- | --- | --- | --- | --- | |
||||||
|
| Bold | `**bold text**` | `Ctrl/Cmd + B` | `**This is bold text**` | **This is bold text** | |
||||||
|
| Italic | `*italicized text*` | `Ctrl/Cmd + I` | `*This is italicized text*` | *This is italicized text* | |
||||||
|
| Strikethrough | `~~strikethrough text~~` | `Ctrl/Cmd + Shift + X` | `~~This is strikethrough text~~` | ~~This is strikethrough text~~ | |
||||||
|
| Underline | | `Ctrl/Cmd + U` | `This is underlined text` | <u>This is underlined text</u> | |
||||||
|
|
||||||
|
### Quote block |
||||||
|
You can quote text with a `>` |
||||||
|
|
||||||
|
``` |
||||||
|
normal text |
||||||
|
> quoted text |
||||||
|
``` |
||||||
|
|
||||||
|
normal text |
||||||
|
> quoted text |
||||||
|
|
||||||
|
### Code block |
||||||
|
Code block can be created by using (3 backticks) before & after the code. |
||||||
|
```` |
||||||
|
``` |
||||||
|
This is a code block |
||||||
|
``` |
||||||
|
```` |
||||||
|
|
||||||
|
``` |
||||||
|
This is a code block |
||||||
|
``` |
||||||
|
|
||||||
|
### Link |
||||||
|
You can create an inline link by using `Link` menu option in the rich text toolbar |
||||||
|
|
||||||
|
![image](/img/v2/fields/types/richtext-links.png) |
||||||
|
|
||||||
|
### Bullet List |
||||||
|
You can create unordered list by using `Bulleted list` menu option in the rich text toolbar or by preceding the text with `-` `+` or `*` symbol. |
||||||
|
``` |
||||||
|
- Item 1 |
||||||
|
- Item 2 |
||||||
|
|
||||||
|
+ Item 1 |
||||||
|
+ Item 2 |
||||||
|
|
||||||
|
* Item 1 |
||||||
|
* Item 2 |
||||||
|
``` |
||||||
|
|
||||||
|
- Item 1 |
||||||
|
- Item 2 |
||||||
|
|
||||||
|
+ Item 1 |
||||||
|
+ Item 2 |
||||||
|
|
||||||
|
* Item 1 |
||||||
|
* Item 2 |
||||||
|
|
||||||
|
:::note |
||||||
|
You can create nested lists by using `tab` key & `shift + tab` key to indent & outdent the list items. |
||||||
|
::: |
||||||
|
|
||||||
|
### Numbered List |
||||||
|
You can create ordered list by using `Numbered list` menu option in the rich text toolbar or by preceding the text with `1.` symbol. |
||||||
|
``` |
||||||
|
1. Item 1 |
||||||
|
2. Item 2 |
||||||
|
``` |
||||||
|
1. Item 1 |
||||||
|
2. Item 2 |
||||||
|
|
||||||
|
### Task list |
||||||
|
You can create task lists by using `Task list` menu option in the rich text toolbar or by preceding the text with `[ ]` symbol. You can mark the task as completed by using `[x]` symbol. |
||||||
|
``` |
||||||
|
[ ] Item 1 |
||||||
|
[x] Item 2 |
||||||
|
``` |
||||||
|
- [ ] Item 1 |
||||||
|
- [x] Item 2 |
||||||
|
|
||||||
|
|
||||||
|
## Similar text based fields |
||||||
|
Following are the other text based fields available in NocoDB, custom-built for specific use cases. |
||||||
|
- [Single line text](010.single-line-text.md) |
||||||
|
- [URL](050.url.md) |
||||||
|
- [Email](030.email.md) |
||||||
|
- [Phone](040.phonenumber.md) |
||||||
|
|
||||||
|
|
@ -0,0 +1,30 @@ |
|||||||
|
--- |
||||||
|
title: 'User' |
||||||
|
description: 'This article explains how to create & work with a User field.' |
||||||
|
tags: ['Fields', 'Field types', 'User'] |
||||||
|
keywords: ['Fields', 'Field types', 'User', 'Create User field'] |
||||||
|
--- |
||||||
|
|
||||||
|
`User` field type allows you to assign a user from your current workspace to a record. For example, you can create a `Task` table with a `User` field type to assign a task to a user. You can also configure the field to allow assigning multiple users to a record. |
||||||
|
|
||||||
|
## Create a User field |
||||||
|
1. Click on `+` icon to the right of `Fields header` |
||||||
|
2. On the dropdown modal, enter the field name (Optional). |
||||||
|
3. Select the field type as `User` from the dropdown. |
||||||
|
4. Configure `Allow adding multiple users` toggle field (Optional). |
||||||
|
5. Configure default value (Optional) |
||||||
|
6. Click on `Save Field` button. |
||||||
|
|
||||||
|
![image](/img/v2/fields/types/user-field.png) |
||||||
|
|
||||||
|
### Cell display |
||||||
|
`User` field display is quite identical to `Select` field. It is displayed as a dropdown in the table view. Click on the dropdown to select a user. If `Allow adding multiple users` is enabled, you can select multiple users from the dropdown. |
||||||
|
|
||||||
|
![image](/img/v2/fields/types/user-field-cell.png) |
||||||
|
|
||||||
|
:::note |
||||||
|
- If a user is removed from workspace, the user will be removed from the dropdown list. If such user was assigned to a record already, the user will be displayed as is. |
||||||
|
- To remove a user from a record, click on the `x` icon next to the user name. |
||||||
|
- If display name is not set for a user, the user's email address will be displayed. |
||||||
|
::: |
||||||
|
|
@ -0,0 +1,5 @@ |
|||||||
|
{ |
||||||
|
"label": "User based", |
||||||
|
"collapsible": true, |
||||||
|
"collapsed": true |
||||||
|
} |
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 161 KiB |
After Width: | Height: | Size: 155 KiB |
After Width: | Height: | Size: 126 KiB |
@ -0,0 +1,35 @@ |
|||||||
|
import jsep from 'jsep'; |
||||||
|
import { UITypes } from 'nocodb-sdk'; |
||||||
|
import type FormulaColumn from '../models/FormulaColumn'; |
||||||
|
import type { Column } from '~/models'; |
||||||
|
|
||||||
|
export async function getFormulasReferredTheColumn({ |
||||||
|
column, |
||||||
|
columns, |
||||||
|
}: { |
||||||
|
column: Column; |
||||||
|
columns: Column[]; |
||||||
|
}): Promise<Column[]> { |
||||||
|
const fn = (pt) => { |
||||||
|
if (pt.type === 'CallExpression') { |
||||||
|
return pt.arguments.some((arg) => fn(arg)); |
||||||
|
} else if (pt.type === 'Literal') { |
||||||
|
} else if (pt.type === 'Identifier') { |
||||||
|
return [column.id, column.title].includes(pt.name); |
||||||
|
} else if (pt.type === 'BinaryExpression') { |
||||||
|
return fn(pt.left) || fn(pt.right); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
return columns.reduce(async (columnsPromise, c) => { |
||||||
|
const columns = await columnsPromise; |
||||||
|
if (c.uidt !== UITypes.Formula) return columns; |
||||||
|
|
||||||
|
const formula = await c.getColOptions<FormulaColumn>(); |
||||||
|
|
||||||
|
if (fn(jsep(formula.formula))) { |
||||||
|
columns.push(c); |
||||||
|
} |
||||||
|
return columns; |
||||||
|
}, Promise.resolve([])); |
||||||
|
} |