Using Hierarchy Position
Summary
This trait demonstrates how you can use your current hierarchy position to create a new note, similar to how the childOfDomain addBehavior works for special notes like Journal notes or scratch notes. In fact, all of the add-behaviors can be implemented with the note trait system.
This example creates a 'weekly-assignments' type of note with the following behavior:
- re-uses the current domain. For example, if you're currently viewing a note
physics.lectures.quantum-mechanics
, then the new note's name will start withphysics.assignments.*
- Appends the year + week-year.
- Applies a template to the note
Because this note trait falls under your current domain, you can then re-use this trait to create notes to track your weekly assignments in your other hierarchies, i.e. computer-science
, biology
, english
, etc.
Trait Definition
weekly-assignments-trait.js:
module.exports = {
OnWillCreate: {
/**
* This example takes the domain of the current note (the first segment of the hierarchy),
* adds 'assignments', followed by the year and the week number
*/
setNameModifier(props) {
const nameComponents = [
props.currentNoteName.split('.')[0],
"assignments",
luxon.DateTime.local().year.toString(),
luxon.DateTime.local().weekNumber.toString()
];
return {
name: nameComponents.join('.'),
promptUserForModification: true,
};
},
},
OnCreate: {
setTitle(props) {
const domain = props.currentNoteName.split('.')[0];
// Lodash '_' is available if needed
return `${_.capitalize(domain)} Week ${props.currentNoteName.split(".").slice(-1)} Assignments`
},
/**
* Apply a template to each note. NOTE: If you want to use this code, you
* will need a note file called `templates.planning-template.md` in your
* Dendron workspace.
*/
setTemplate: () => {
return "templates.assignments-template";
},
},
};
Backlinks