--- 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-` `jsx-

The value of hello is "{JSXExample}"

}/>` `jsx- (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 >
~ Melchior de Villeneuve
=== end-multi-column   - [b] ff

Comment





  ```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('') + '
'; } 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); } ```