mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 13:01:31 +08:00 
			
		
		
		
	date notes are now created with template relations
This commit is contained in:
		
							parent
							
								
									3bf8546d51
								
							
						
					
					
						commit
						45ee959c11
					
				| @ -195,6 +195,8 @@ class Note extends Entity { | |||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * @returns {Promise<Attribute[]>} attributes belonging to this specific note (excludes inherited attributes) |      * @returns {Promise<Attribute[]>} attributes belonging to this specific note (excludes inherited attributes) | ||||||
|  |      * | ||||||
|  |      * This method can be significantly faster than the getAttributes() | ||||||
|      */ |      */ | ||||||
|     async getOwnedAttributes(type, name) { |     async getOwnedAttributes(type, name) { | ||||||
|         let query = `SELECT * FROM attributes WHERE isDeleted = 0 AND noteId = ?`; |         let query = `SELECT * FROM attributes WHERE isDeleted = 0 AND noteId = ?`; | ||||||
| @ -215,6 +217,8 @@ class Note extends Entity { | |||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * @returns {Promise<Attribute>} attribute belonging to this specific note (excludes inherited attributes) |      * @returns {Promise<Attribute>} attribute belonging to this specific note (excludes inherited attributes) | ||||||
|  |      * | ||||||
|  |      * This method can be significantly faster than the getAttribute() | ||||||
|      */ |      */ | ||||||
|     async getOwnedAttribute(type, name) { |     async getOwnedAttribute(type, name) { | ||||||
|         const attrs = await this.getOwnedAttributes(type, name); |         const attrs = await this.getOwnedAttributes(type, name); | ||||||
|  | |||||||
| @ -35,6 +35,9 @@ export default class NoteTypeContext { | |||||||
|             () => ["file", "image", "search"].includes(this.ctx.note.type)); |             () => ["file", "image", "search"].includes(this.ctx.note.type)); | ||||||
| 
 | 
 | ||||||
|         this.$noteTypeDesc.text(await this.findTypeTitle(this.ctx.note.type, this.ctx.note.mime)); |         this.$noteTypeDesc.text(await this.findTypeTitle(this.ctx.note.type, this.ctx.note.mime)); | ||||||
|  | 
 | ||||||
|  |         this.$executeScriptButton.toggle(this.ctx.note.mime.startsWith('application/javascript')); | ||||||
|  |         this.$renderButton.toggle(this.ctx.note.type === 'render'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** actual body is rendered lazily on note-type button click */ |     /** actual body is rendered lazily on note-type button click */ | ||||||
| @ -87,9 +90,6 @@ export default class NoteTypeContext { | |||||||
| 
 | 
 | ||||||
|             this.$noteTypeDropdown.append($mimeLink); |             this.$noteTypeDropdown.append($mimeLink); | ||||||
|         } |         } | ||||||
| 
 |  | ||||||
|         this.$executeScriptButton.toggle(this.ctx.note.mime.startsWith('application/javascript')); |  | ||||||
|         this.$renderButton.toggle(this.ctx.note.type === 'render'); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async findTypeTitle(type, mime) { |     async findTypeTitle(type, mime) { | ||||||
|  | |||||||
| @ -72,6 +72,15 @@ async function createLabel(noteId, name, value = "") { | |||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | async function createRelation(noteId, name, targetNoteId) { | ||||||
|  |     return await createAttribute({ | ||||||
|  |         noteId: noteId, | ||||||
|  |         type: 'relation', | ||||||
|  |         name: name, | ||||||
|  |         value: targetNoteId | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| async function createAttribute(attribute) { | async function createAttribute(attribute) { | ||||||
|     return await new Attribute(attribute).save(); |     return await new Attribute(attribute).save(); | ||||||
| } | } | ||||||
| @ -114,6 +123,7 @@ module.exports = { | |||||||
|     getNotesWithLabels, |     getNotesWithLabels, | ||||||
|     getNoteWithLabel, |     getNoteWithLabel, | ||||||
|     createLabel, |     createLabel, | ||||||
|  |     createRelation, | ||||||
|     createAttribute, |     createAttribute, | ||||||
|     getAttributeNames, |     getAttributeNames, | ||||||
|     isAttributeType, |     isAttributeType, | ||||||
|  | |||||||
| @ -67,6 +67,12 @@ async function getYearNote(dateStr, rootNote) { | |||||||
| 
 | 
 | ||||||
|         await attributeService.createLabel(yearNote.noteId, YEAR_LABEL, yearStr); |         await attributeService.createLabel(yearNote.noteId, YEAR_LABEL, yearStr); | ||||||
|         await attributeService.createLabel(yearNote.noteId, 'sorted'); |         await attributeService.createLabel(yearNote.noteId, 'sorted'); | ||||||
|  | 
 | ||||||
|  |         const yearTemplateAttr = await rootNote.getOwnedAttribute('relation', 'yearTemplate'); | ||||||
|  | 
 | ||||||
|  |         if (yearTemplateAttr) { | ||||||
|  |             await attributeService.createRelation(yearNote.noteId, 'template', yearTemplateAttr.value); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return yearNote; |     return yearNote; | ||||||
| @ -83,6 +89,10 @@ async function getMonthNoteTitle(rootNote, monthNumber, dateObj) { | |||||||
| 
 | 
 | ||||||
| /** @return {Promise<Note>} */ | /** @return {Promise<Note>} */ | ||||||
| async function getMonthNote(dateStr, rootNote) { | async function getMonthNote(dateStr, rootNote) { | ||||||
|  |     if (!rootNote) { | ||||||
|  |         rootNote = await getRootCalendarNote(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     const monthStr = dateStr.substr(0, 7); |     const monthStr = dateStr.substr(0, 7); | ||||||
|     const monthNumber = dateStr.substr(5, 2); |     const monthNumber = dateStr.substr(5, 2); | ||||||
| 
 | 
 | ||||||
| @ -103,6 +113,12 @@ async function getMonthNote(dateStr, rootNote) { | |||||||
| 
 | 
 | ||||||
|         await attributeService.createLabel(monthNote.noteId, MONTH_LABEL, monthStr); |         await attributeService.createLabel(monthNote.noteId, MONTH_LABEL, monthStr); | ||||||
|         await attributeService.createLabel(monthNote.noteId, 'sorted'); |         await attributeService.createLabel(monthNote.noteId, 'sorted'); | ||||||
|  | 
 | ||||||
|  |         const monthTemplateAttr = await rootNote.getOwnedAttribute('relation', 'monthTemplate'); | ||||||
|  | 
 | ||||||
|  |         if (monthTemplateAttr) { | ||||||
|  |             await attributeService.createRelation(monthNote.noteId, 'template', monthTemplateAttr.value); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return monthNote; |     return monthNote; | ||||||
| @ -141,6 +157,12 @@ async function getDateNote(dateStr) { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         await attributeService.createLabel(dateNote.noteId, DATE_LABEL, dateStr.substr(0, 10)); |         await attributeService.createLabel(dateNote.noteId, DATE_LABEL, dateStr.substr(0, 10)); | ||||||
|  | 
 | ||||||
|  |         const dateTemplateAttr = await rootNote.getOwnedAttribute('relation', 'dateTemplate'); | ||||||
|  | 
 | ||||||
|  |         if (dateTemplateAttr) { | ||||||
|  |             await attributeService.createRelation(dateNote.noteId, 'template', dateTemplateAttr.value); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return dateNote; |     return dateNote; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 zadam
						zadam