Topic : 1/2
Summary
- How to create an indented line for a subfolder within the grouped folder in list view?
- DQL10
- mDVJS01 + Q30_DQL10a_JS.js + Q30_ParentFolder_Config_a.md: It supports three different use cases.
Test
Summary
- dataview: v0.5.55
Input
Summary
the current notes
- Location: “100_Project/02_dataview/Q30_CurrentFolder/Q30_test_data/C0_Parent”
- filename :
Q30_DQL01_C0
```md
### Q30_DQL01
```
- filename :
Q30_DQL10_C0
````md
### Q30_DQL10
````
- filename :
Q30_mDVJS01_C0
orQ30_index_C0
````md
### Q30_mDVJS01
````
dictionary files
- Location: “100_Project/02_dataview/Q30_CurrentFolder/Q30_test_data/C0_Parent”
folder: C1_04
- filename :
dic_19530401
```md
---
date: 1953-04-01
---
```
- filename :
dic_19530406
```md
---
date: 1953-04-06
---
```
folder: C1_05
- filename :
dic_19530501
```md
---
date: 1953-05-01
---
```
- filename :
dic_19530506
```md
---
date: 1953-05-06
---
```
folder: C1_05/C2_01
- filename :
dic_19530511
```md
---
date: 1953-05-11
---
```
- filename :
dic_19530516
```md
---
date: 1953-05-16
---
```
folder: C1_05/C2_02
- filename :
dic_19530521
```md
---
date: 1953-05-21
---
```
- filename :
dic_19530526
```md
---
date: 1953-05-26
---
```
folder: C1_06
- filename :
dic_19530601
```md
---
date: 1953-06-01
---
```
- filename :
dic_19530606
```md
---
date: 1953-06-06
---
```
DQL01_create_Indentations_for_subfolder_within_grouped_folder_and_TABLE: For Debugging
Summary
Main DQL
Code Name | Data type | Group By | Purposes | Remark |
---|---|---|---|---|
DQL01 _create_Indentations _for_subfolder _within_grouped_folder _and_LIST |
file.folder :a string this.file.folder :a string |
yes | 1.To filter by file.folder 2.To define field variables: 2.1 To define three field variables, such as SubFolderName , SubFolderWithPathRelativeToParent , ParentFolderName 2.2 To define three field variables, such as SubFolderWithPath , pName , and sName 2.3 To define ten field variables, such as C0 , C1 ,… ,C9 3.To define field variables: 3.1 To define one field variable CN 3.2 To define one field variable SomeIndentation for Indentations4.To sort by file.folder in ascending order5.To group by SubFolderWithPath 6.To define two field variables, such as P_SomeIndentation and P_SubFolderName 7.To render as a table |
Code DQL01_create_Indentations_for_subfolder_within_grouped_folder_and_TABLE
Summary_code
NOTE:
The location for the DQL01 is “100_Project/02_dataview/Q30_ParentFolder/Q30_test_data/C0_Parent”.
title: DQL01_create_Indentations_for_subfolder_within_grouped_folder_and_TABLE =>
collapse: close
icon:
color:
```dataview
TABLE WITHOUT ID
rows.file.link,
rows.CN,
rows.ParentFolderName,
rows.SubFolderName,
rows.SubFolderWithPath
FROM "100_Project/02_dataview/Q30_ParentFolder/Q30_test_data/C0_Parent"
FLATTEN this.file.folder AS C0_Parent
WHERE startswith(file.folder, C0_Parent)
FLATTEN regexreplace(file.folder, "^.*\/([^/]+)$", "$1") AS SubFolderName
FLATTEN regexreplace(file.folder, C0_Parent + "\/", "") AS SubFolderWithPathRelativeToParent
FLATTEN regexreplace(C0_Parent, "^.*\/([^/]+)$", "$1") AS ParentFolderName
FLATTEN SubFolderWithPathRelativeToParent AS SubFolderWithPath
FLATTEN ParentFolderName AS pName
FLATTEN SubFolderName AS sName
FLATTEN choice(sName = pName, "C0", "") AS C0
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+)$", "C1"), "") AS C1
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){1,1})$", "C2"), "") AS C2
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){2,2})$", "C3"), "") AS C3
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){3,3})$", "C4"), "") AS C4
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){4,4})$", "C5"), "") AS C5
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){5,5})$", "C6"), "") AS C6
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){6,6})$", "C7"), "") AS C7
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){7,7})$", "C8"), "") AS C8
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){8,})$", "C9"), "") AS C9
FLATTEN C0 + choice(C1="C1", "C1", "") + choice(C2="C2", "C2", "") + choice(C3="C3", "C3", "") +
choice(C4="C4", "C4", "") + choice(C5="C5", "C5", "") + choice(C6="C6", "C6", "") +
choice(C7="C7", "C7", "") + choice(C8="C8", "C8", "") + choice(C9="C9", "C9", "")
AS CN
FLATTEN "  " AS INDT
FLATTEN {
"C0": "",
"C1": INDT,
"C2": INDT + INDT,
"C3": INDT + INDT + INDT,
"C4": INDT + INDT + INDT + INDT,
"C5": INDT + INDT + INDT + INDT + INDT,
"C6": INDT + INDT + INDT + INDT + INDT + INDT,
"C7": INDT + INDT + INDT + INDT + INDT + INDT + INDT,
"C8": INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT,
"C9": INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT
}[CN] AS SomeIndentation
SORT file.folder ASC
GROUP BY SubFolderWithPath AS G_SubFolderWithPath
FLATTEN rows.SomeIndentation[0] AS P_SomeIndentation
FLATTEN rows.SubFolderName[0] AS P_SubFolderName
```
Screenshots(DQL01):
DQL10_create_Indentations_for_subfolder_within_grouped_folder_and_LIST
Summary
Main DQL
Code Name | Data type | Group By | Purposes | Remark |
---|---|---|---|---|
DQL10 _create_Indentations _for_subfolder _within_grouped_folder _and_LIST |
file.folder :a string this.file.folder :a string |
yes | 1.To define field variables C0_Parent 2.To filter file.folder by C0_Parent 3.To define field variables: 3.1 To define three field variables, such as SubFolderName , SubFolderWithPathRelativeToParent , ParentFolderName 3.2 To define three field variables, such as SubFolderWithPath , pName , and sName 3.3 To define ten field variables, such as C0 , C1 ,… ,C9 4.To define field variables: 4.1 To define one field variable CN 4.2 To define one field variable SomeIndentation for Indentations5.To sort by file.folder in ascending order6.To group by SubFolderWithPath 7.To define two field variables, such as P_SomeIndentation and P_SubFolderName 8.To render as a list with desired structure |
The DQL10 is based on the DQL01 in the topic. |
Notes
Summary
Q1: How to modify the following code in order to use the DQL10 in any page in any location?
Summary_Q1
Original Example: Q1 (To be modified)
```dataview
LIST WITHOUT ID
P_SomeIndentation +
P_SubFolderName +
map(rows.file.link, (e) => "<br>" + P_SomeIndentation + "⦁ " + e)
FROM "100_Project/02_dataview/Q30_ParentFolder/Q30_test_data/C0_Parent"
FLATTEN this.file.folder AS C0_Parent
WHERE startswith(file.folder, C0_Parent)
```
A1_11:
Another Example: A1_11
NOTE:
- Remove the FROM expression.
- The DQL10 performance is poor without the FROM expression.
- For best performance, use the mDVJS01 instead of the DQL10, where the FROM expression is removed.
```dataview
LIST WITHOUT ID
P_SomeIndentation +
P_SubFolderName +
map(rows.file.link, (e) => "<br>" + P_SomeIndentation + "⦁ " + e)
FLATTEN this.file.folder AS C0_Parent
WHERE startswith(file.folder, C0_Parent)
```
Q2: How to customize different folder levels of Indentations?
Summary_Q2
Original Example: Q2 (To be modified)
```dataview
FLATTEN "  " AS INDT
FLATTEN {
"C0": "",
"C1": INDT,
"C2": INDT + INDT,
"C3": INDT + INDT + INDT,
"C4": INDT + INDT + INDT + INDT,
"C5": INDT + INDT + INDT + INDT + INDT,
"C6": INDT + INDT + INDT + INDT + INDT + INDT,
"C7": INDT + INDT + INDT + INDT + INDT + INDT + INDT,
"C8": INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT,
"C9": INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT
}[CN] AS SomeIndentation
```
A2_21: Add Circled Sans-Serif Digits
Another Example: A2_21
```dataview
FLATTEN "  " AS INDT
FLATTEN {
"C0": "",
"C1": "➁" + INDT,
"C2": INDT + "➂" + INDT,
"C3": INDT + INDT + "➃" + INDT,
"C4": INDT + INDT + INDT + "➄" + INDT,
"C5": INDT + INDT + INDT + INDT + "➅" + INDT,
"C6": INDT + INDT + INDT + INDT + INDT + "➆" + INDT,
"C7": INDT + INDT + INDT + INDT + INDT + INDT + "➇" + INDT,
"C8": INDT + INDT + INDT + INDT + INDT + INDT + INDT + "➈" + INDT,
"C9": INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT + "➉" + INDT
}[CN] AS SomeIndentation
```
Screenshots(A2_21):
A2_22: Add Vertical Lines
Another Example: A2_22
```dataview
FLATTEN "|  " AS INDT
FLATTEN {
"C0": "",
"C1": INDT,
"C2": INDT + INDT,
"C3": INDT + INDT + INDT,
"C4": INDT + INDT + INDT + INDT,
"C5": INDT + INDT + INDT + INDT + INDT,
"C6": INDT + INDT + INDT + INDT + INDT + INDT,
"C7": INDT + INDT + INDT + INDT + INDT + INDT + INDT,
"C8": INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT,
"C9": INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT
}[CN] AS SomeIndentation
```
Screenshots(A2_22):
A2_23: Add Vertical Lines with HTML formatting
Another Example: A2_23
```dataview
FLATTEN "<span style='color:grey'>" + "|  " + "</span>" AS INDT
FLATTEN {
"C0": "",
"C1": INDT,
"C2": INDT + INDT,
"C3": INDT + INDT + INDT,
"C4": INDT + INDT + INDT + INDT,
"C5": INDT + INDT + INDT + INDT + INDT,
"C6": INDT + INDT + INDT + INDT + INDT + INDT,
"C7": INDT + INDT + INDT + INDT + INDT + INDT + INDT,
"C8": INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT,
"C9": INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT
}[CN] AS SomeIndentation
```
Screenshots(A2_23):
Code DQL10_create_Indentations_for_subfolder_within_grouped_folder_and_LIST
Summary_code
NOTE:
- It supprts up to eight levels of subfolders (C0~C8) for the
file.folder
.- The
file.folder
subfolders at or above nine levels (C9, C10~) are rendered as nine levels.- The location for the DQL10 is “100_Project/02_dataview/Q30_ParentFolder/Q30_test_data/C0_Parent”.
C0=Parent
C1=Childern of C0_Parent
C2=Childern of C1
C3=Childern of C2
C4=Childern of C3
C5=Childern of C4
C6=Childern of C5
C7=Childern of C6
C8=Childern of C7
C9=Childern of C8, C9, C10, C11, and so on
title: DQL10_create_Indentations_for_subfolder_within_grouped_folder_and_LIST =>1.To define field variables `C0_Parent` 2.To filter `file.folder` by `C0_Parent` 3.To define field variables: 3.1 To define three field variables, such as `SubFolderName`, `SubFolderWithPathRelativeToParent`, `ParentFolderName` 3.2 To define three field variables, such as `SubFolderWithPath`, `pName`, and `sName` 3.3 To define ten field variables, such as `C0`, `C1`,... ,`C9` 4.To define field variables: 4.1 To define one field variable `CN` 4.2 To define one field variable `SomeIndentation` for Indentations 5.To sort by `file.folder` in ascending order 6.To group by `SubFolderWithPath` 7.To define two field variables, such as `P_SomeIndentation` and `P_SubFolderName` 8.To render as a list with desired structure
collapse: close
icon:
color:
```dataview
LIST WITHOUT ID
P_SomeIndentation +
P_SubFolderName +
map(rows.file.link, (e) => "<br>" + P_SomeIndentation + "⦁ " + e)
FROM "100_Project/02_dataview/Q30_ParentFolder/Q30_test_data/C0_Parent"
FLATTEN this.file.folder AS C0_Parent
WHERE startswith(file.folder, C0_Parent)
FLATTEN regexreplace(file.folder, "^.*\/([^/]+)$", "$1") AS SubFolderName
FLATTEN regexreplace(file.folder, C0_Parent + "\/", "") AS SubFolderWithPathRelativeToParent
FLATTEN regexreplace(C0_Parent, "^.*\/([^/]+)$", "$1") AS ParentFolderName
FLATTEN SubFolderWithPathRelativeToParent AS SubFolderWithPath
FLATTEN ParentFolderName AS pName
FLATTEN SubFolderName AS sName
FLATTEN choice(sName = pName, "C0", "") AS C0
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+)$", "C1"), "") AS C1
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){1,1})$", "C2"), "") AS C2
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){2,2})$", "C3"), "") AS C3
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){3,3})$", "C4"), "") AS C4
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){4,4})$", "C5"), "") AS C5
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){5,5})$", "C6"), "") AS C6
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){6,6})$", "C7"), "") AS C7
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){7,7})$", "C8"), "") AS C8
FLATTEN choice(sName != pName, regexreplace(SubFolderWithPath, "^([^/]+(\/[^/]+){8,})$", "C9"), "") AS C9
FLATTEN C0 + choice(C1="C1", "C1", "") + choice(C2="C2", "C2", "") + choice(C3="C3", "C3", "") +
choice(C4="C4", "C4", "") + choice(C5="C5", "C5", "") + choice(C6="C6", "C6", "") +
choice(C7="C7", "C7", "") + choice(C8="C8", "C8", "") + choice(C9="C9", "C9", "")
AS CN
FLATTEN "  " AS INDT
FLATTEN {
"C0": "",
"C1": INDT,
"C2": INDT + INDT,
"C3": INDT + INDT + INDT,
"C4": INDT + INDT + INDT + INDT,
"C5": INDT + INDT + INDT + INDT + INDT,
"C6": INDT + INDT + INDT + INDT + INDT + INDT,
"C7": INDT + INDT + INDT + INDT + INDT + INDT + INDT,
"C8": INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT,
"C9": INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT + INDT
}[CN] AS SomeIndentation
SORT file.folder ASC
GROUP BY SubFolderWithPath AS G_SubFolderWithPath
FLATTEN rows.SomeIndentation[0] AS P_SomeIndentation
FLATTEN rows.SubFolderName[0] AS P_SubFolderName
```
Screenshots(DQL10):
Conclusion
Summary
- Althought the FROM expression in DQL doesn’t support
FROM this.file.folder
, the mDVJS01 does. - For best performance, use the mDVJS01 instead of the DQL10, which the FROM expression is removed.
Reference
Summary
Emojis
Z Notation Spot
Vertical Line
Dingbat Circled Sans-Serif Digit
- Dingbat Circled Sans-Serif Digit One: ➀ U+2780
- Dingbat Circled Sans-Serif Digit Two: ➁ U+2781
- Dingbat Circled Sans-Serif Digit Three: ➂ U+2782
- Dingbat Circled Sans-Serif Digit Four: ➃ U+2783
- Dingbat Circled Sans-Serif Digit Five: ➄ U+2784
- Dingbat Circled Sans-Serif Digit Six: ➅ U+2785
- Dingbat Circled Sans-Serif Digit Seven: ➆ U+2786
- Dingbat Circled Sans-Serif Digit Eight: ➇ U+2787
- Dingbat Circled Sans-Serif Digit Nine: ➈ U+2788
- Dingbat Circled Sans-Serif Digit Ten: ➉ U+2789
Q83_FolderNote: Regular Expressions
- Q83_FolderNote: Solutions
Q88_header: DQL30
- Q88_header: Solutions
Q78_MediumCat: mDVJS01
How to reuse user-defined functions, a DVJS code, or a DQL query?
Summary
- Q1: How to reuse user-defined functions without installing other plugins?
- Q2: How to reuse a DVJS code?
- Solutions: by Folkemunne
- Q3: How to reuse a DQL query?
- Solutions: by Craig
- Q4: How to reuse a DQL query with reading a configuration from another file via the dv.query() instead of the dv.execute()?
- Q30_ParentFolder: Part02: by Justdoitcc
- Q30_DQL10 = mDVJS01 + Q30_DQL10a_JS.js + Q30_ParentFolder_Config_a.md
- Q30_ParentFolder: Part02: by Justdoitcc
- Q5: How to reuse a DQL query with reading a configuration from another file with a JavaScript object as a argment?
- Q30_ParentFolder: Part02: by Justdoitcc