---
ChildrenType: ["Note", "Task", "Recipe"]
JSXExample: "Hello JSX!"
Number1: 1
Number2: 3
TimeStamp: 2022-01-15
---
await dv.io.load(dv.page("02.02 Paris/Abri"))
`jsx-<LoadiFrameButton title="" src="img_0950.jpg" />`
`jsx- <WithFrontMatter render={({JSXExample})=><h1>The value of hello is "{JSXExample}"</h1>}/>`
`jsx- < WithFrontMatter render = {({Number1, Number2 } ) = > (Number1 + Number2) * 100
}/>`
> [!command] test
> ```
> Command line test
> ```
Syntax
Description
> [!seealso]
> Test
> [!success]
> Reteet
> [!missing]
> 3
> [!email]
> 4
> [!credentials]
> 5
- [ ] to-do
- [/] incomplete
- [x] done
- [-] canceled
- [>] forwarded
- [< ] scheduling
- [?] question
- [!] important
- [*] star
- ["] quote
- [l] location
- [b] bookmark
- [i] information
- [S] savings
- [I] idea
- [p] pros
- [c] cons
- [f] fire
- [k] key
- [w] win
- [u] up
- [d] down
```dataviewjs
this.container.style.minHeight = "500px"; const { renderCalendar } = app.plugins.plugins["obsidian-full-calendar"]; let calendar = renderCalendar(this.container, [[{start: new Date(), id: "id", title: "Now and for an hour"}]]); calendar.render()
```
=== start-multi-column: Testlist
```column-settings
number of columns: 2
largest column: standard
border: disabled
```
My Meggi-mo is never going to give up on me
[Forum ](https://forum.obsidian.md )
- [b] bookmark checklist item
=== end-column ===
> citation example
> <div class="signature"> ~ Melchior de Villeneuve</div>
=== end-multi-column
 
- [b] ff
< p id = "counter" > < / p >
< div id = "commentThread" >
< / div >
< h3 > Comment< / h3 >
< form id = "formField" >
< input type = "hidden" id = "threadID" >
< input type = "text" id = "commenterName" placeholder = "name" > < br > < br >
< textarea id = "commentBody" placeholder = "Write here..." > < / textarea > < br > < br >
< input type = "submit" value = "Add" >
< / form >
< / div >
 
```dataviewjs
let stepSize = 40;
let bigStepSize = 200;
if (app.isMobile) {
stepSize = 15;
bigStepSize = 100;
}
let completeSquare = '🟩';
let notCompleteSquare = '⬛';
let results = [];
let pages = dv.pages('"00.01 Admin"');
for (let page of pages) {
let link = page.file.link;
link.display = completeSquare;
let rank = parseInt(page.file.name.slice(0, 4));
if (rank) {
results.push({
rank: rank,
name: page.file.name,
link: page.file.link
});
}
}
results.sort((a, b) => a.rank - b.rank);
let current = 2000;
let mapList = [];
for (let result of results) {
for (let i = 0; i < result.rank - current - 1 ; i + + ) {
mapList.push(notCompleteSquare);
}
mapList.push(result.link);
current = result.rank;
}
let displayString = '';
for (let i = 0; i < mapList.length ; i = i + stepSize ) {
let startBigStep = Math.ceil((i) / bigStepSize);
let endBigStep = Math.ceil((i + stepSize) / bigStepSize);
if (endBigStep > startBigStep) {
displayString += ((endBigStep - 1) * bigStepSize).toString().padStart(4, ' ');
} else {
displayString += ' '.repeat(4);
}
displayString += ' ' + mapList.slice(i, i + stepSize).join('') + '< br > ';
}
dv.el('pre', displayString);
```
 
```lineup
formation: 433
players: Donnarumma,Bernat,Marquinhos,Kimpembe,Hakimi,Villeneuve,Verratti,St Hilaire,MBappe,Solanet,Messi
```
---
### dataview habit tracker
- [ ] Habit_1
- [ ] Habit_2
- [ ] Habit_3
- [ ] Habit_4
```dataviewjs
const habits = [] // Array of objects for each page's tasks.
const defaultHeaders = ['Day']
const headers = new Set(defaultHeaders) // Set of task names to be used as table headers.
const rows = []
const noteDay = dv.current().file.day
if (!noteDay)
throw {
stack:
'(If this note is your template, this error is expected.) Unable to get note\'s day. Note should be named in the "YYYY-MM-DD" format.',
}
const pages = dv
.pages('"00.01 Admin/Calendars"')
.where((p) => p.file.day >= noteDay.minus({ days: 7 })) // Only include previous week in table.
.where((p) => p.file.day < = noteDay) // Don't include future notes.
.sort((p) => p.file.day, 'desc') // Sort table by most recent day.
for (const page of pages) {
// Only include tasks under a header named "Habits".
const pageHabits = page.file.tasks.filter((t) => t.header.subpath == 'Habits')
const noteLink = page.file.link
noteLink.display = page.file.day.weekdayLong // Set display name of the note link to the day of the week.
const habitsObject = { noteLink }
for (const habit of pageHabits) {
let habitText = habit.text.split(' ✅')[0] // Remove completion text from Tasks plugin.
// Remove tag text.
for (const tag of habit.tags) {
habitText = habitText.replace(tag, '')
}
habitText = habitText.trim()
habitsObject[habitText] = habit.completed // Build habitsObject. Key is the task's text. Value is tasks's completion.
headers.add(habitText) // Build headers set where each header is the task's text.
}
habits.push(habitsObject)
}
for (const habitsObject of habits) {
const row = [habitsObject.noteLink] // Start building row data. Fill in first value (Day) with note link.
for (const header of headers) {
if (defaultHeaders.includes(header)) continue // Don't overwrite default headers.
let habitStatus = '➖ ' // This emoji is seen if a corresponding task doesn't exist for a header (e.g. task didn't previously exist).
if (habitsObject.hasOwnProperty(header))
// If task exists, we know it must be complete or incomplete.
habitStatus = habitsObject[header] ? '✔' : '❌'
row.push(habitStatus)
}
rows.push(row)
}
dv.table(headers, rows)
```
---
```dataviewjs
const {shoppingFunc} = customJS
shoppingFunc.getItems2Change({app: app, dv: dv, luxon: luxon, that:this, theme: "to0"})
```
```button
name Create Note
type append template
action SendMail
color blue
templater true
```
const subject = tp.file.title
const body = tp.file.content
tR += "[Send as email](readdle-spark://compose?body=" + encodeURI(body) + ""& subject=" + encodeURI(subject) + ")"
%>
const {templaterFunc} = this.app.plugins.plugins["customjs"].api
templaterFunc.createNewFile(tp, tp.frontmatter.ChildrenType)
%>
tR += const {templaterFunc} = this.app.plugins.plugins["customJS"]
templaterFunc.createNewFile(tp, tp.frontmatter.ChildrenType)
%>
tR += const {templaterFunc} = this.app.plugins.plugins["customJS"].api
templaterFunc.createNewFile(tp, tp.frontmatter.ChildrenType)
%>
tR += const {templaterFunc} = this.app.plugins.plugins["CustomJS"].api
templaterFunc.createNewFile(tp, tp.frontmatter.ChildrenType)
%>
tR += const {templaterFunc} = tp.obsidian.plugins.plugins.CustomJS
%>
< % templaterFunc.createNewFile(tp, tp.frontmatter.ChildrenType) %>
tR += const {templaterFunc} = customJS
%>
< % templaterFunc.createNewFile(tp, tp.frontmatter.ChildrenType) %>
const templaterFunc = customJS
tR += templaterFunc.createNewFile(tp, tp.frontmatter.ChildrenType)
%>
const templaterFunc = tp.obsidian.plugins.plugins.CustomJS
tR += templaterFunc.createNewFile(tp, tp.frontmatter.ChildrenType)
%>
const {templaterFunc} = tp.obsidian.plugins.plugins.CustomJS
tR += templaterFunc.createNewFile(tp, tp.frontmatter.ChildrenType)
%>
CollapseMetaTable: yes
Groceries: ["🍶 6 bottle(s) Coke 0", "🍿 1 whole Snacks", "🧈 packet(s) Beurre", "🫒 0 bottle(s) Olive oil", "🍺 0 bottle(s) Beers", "🥯 0 packet(s) Bagels", "🍯 1 jar(s) Bonne Maman", "🍌 6 whole Bananas", "🧀 0 packet(s) Fromage rape", "🥩 2 packet(s) Cured meat", "🍐 6 whole Fruit", "🍝 2 packet(s) Pasta", "🌶️ 1 bottle(s) Tabasco"]
Health:
- 🚿 1 whole shower gel
- 🧴 1 whole shampoo
- 🪥 whole toothbrush
- 🦷 1 whole toothpaste
- 👂 whole earbuds
- 🪒 1 whole razor blades (mach3)
- 🍦 whole shaving cream
- 🧻 6 whole loo rolls
- 🦨 whole deo
Household:
- 👔 1 whole Washing gel
- 🧻 4 whole Kitchen towel
- 🧽 whole Sponge
- 👕 2 whole Softener
- 🍽️ whole Dishwasher tablets
- 🧂 1 whole Dishwasher salt
- 🚰 0 whole Dishwasher rinsing aid
 
 
 
 
```dataviewjs
const app = this.app;
const metaedit = app.plugins.plugins["metaedit"];
const init_dom = (row) => { const sel = `table.dataview.table-view-table td > span > a[data-href='${row.file.path}']` ;
const tr = dv.container.querySelector(sel).closest("tr");
const labels = tr.querySelectorAll("._dataview-labels"); for (let i = 0; i < labels.length ; i + + ) { const data = labels[i].data
const file = app.vault.getAbstractFileByPath(row.file.path);
const prop = {key: data.name, content:data.actual, type: data.type};
labels[i].addEventListener('click', async (evt) => { metaedit.controller.editMetaElement(prop, [], file); }); } }
const field = (row, name, type) => {
let data = {};
data.row = row;
data.name = name;
data.actual = row[name];
data.value = row[name];
data.type = type || 1;
const el = this.container.createEl('span', {"text": row[name] || "-"});
el.classList.add("_dataview-labels");
el.data = data; return el; };
try { var workspace = dv.container.closest("div.workspace-leaf");
var title = workspace.querySelector("div.view-header-title");
let pages = dv.pages('"03.03 Food & Wine"') .sort(t => t.file.name) .where(t => field(t, 'DocType') == "Recipe");
dv.table( ["Name", "Course", "Category", "Collection", "Cooking Time", "Rating", ""], pages .map(t => [ t.file.link, field(t, 'Recipe.Course'), field(t, 'Recipe.Category'), field(t, 'Recipe.Collection'), field(t, 'Recipe.CookingTime'), field(t, 'Meta.Rating') ]) );
setTimeout(function(){
for (let i = 0; i < pages.length ; i + + ) {
init_dom(pages[i]); } }, 0);
}
catch (err) { window.console.info(err); }
```