mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 21:11:30 +08:00 
			
		
		
		
	add weight causes updating old chart instead of creating new chart, closes #53
This commit is contained in:
		
							parent
							
								
									3033f7cc08
								
							
						
					
					
						commit
						1d0220b03d
					
				| @ -16,84 +16,98 @@ | ||||
| <canvas id="canvas"></canvas> | ||||
| 
 | ||||
| <script> | ||||
| (async function() { | ||||
|     const dateEl = $("#weight-date"); | ||||
|     const weightEl = $("#weight"); | ||||
|     (async function() { | ||||
|         const dateEl = $("#weight-date"); | ||||
|         const weightEl = $("#weight"); | ||||
|         let chart; | ||||
| 
 | ||||
|     dateEl.datepicker(); | ||||
|     dateEl.datepicker('option', 'dateFormat', 'yy-mm-dd'); | ||||
|     dateEl.datepicker('setDate', new Date()); | ||||
|         dateEl.datepicker(); | ||||
|         dateEl.datepicker('option', 'dateFormat', 'yy-mm-dd'); | ||||
|         dateEl.datepicker('setDate', new Date()); | ||||
| 
 | ||||
|     async function saveWeight() { | ||||
|         await server.exec([dateEl.val(), weightEl.val()], async (date, weight) => { | ||||
|             const dataNote = await this.getNoteWithAttribute('date_data', date); | ||||
|         async function saveWeight() { | ||||
|             await server.exec([dateEl.val(), weightEl.val()], async (date, weight) => { | ||||
|                 const dataNote = await this.getNoteWithAttribute('date_data', date); | ||||
| 
 | ||||
|             if (dataNote) { | ||||
|                 dataNote.jsonContent.weight = weight; | ||||
|                 if (dataNote) { | ||||
|                     dataNote.jsonContent.weight = weight; | ||||
| 
 | ||||
|                 await this.updateEntity(dataNote); | ||||
|             } | ||||
|             else { | ||||
|                 const parentNoteId = await this.getDateNoteId(date); | ||||
|                 const jsonContent = { weight: weight }; | ||||
|                     await this.updateEntity(dataNote); | ||||
|                 } | ||||
|                 else { | ||||
|                     const parentNoteId = await this.getDateNoteId(date); | ||||
|                     const jsonContent = { weight: weight }; | ||||
| 
 | ||||
|                 await this.createNote(parentNoteId, 'data', jsonContent, { | ||||
|                     json: true, | ||||
|                     attributes: { | ||||
|                         date_data: date, | ||||
|                         hide_in_autocomplete: null | ||||
|                     } | ||||
|                 }); | ||||
|             } | ||||
|                     await this.createNote(parentNoteId, 'data', jsonContent, { | ||||
|                         json: true, | ||||
|                         attributes: { | ||||
|                             date_data: date, | ||||
|                             hide_in_autocomplete: null | ||||
|                         } | ||||
|                     }); | ||||
|                 } | ||||
|             }); | ||||
| 
 | ||||
|             showMessage("Weight has been saved"); | ||||
| 
 | ||||
|             const data = await getData(); | ||||
| 
 | ||||
|             chart.data = data; | ||||
|             chart.update(); | ||||
|         } | ||||
| 
 | ||||
|         async function drawChart() { | ||||
|             const data = await getData(); | ||||
| 
 | ||||
|             const ctx = $("#canvas")[0].getContext("2d"); | ||||
| 
 | ||||
|             chart = new Chart(ctx, { | ||||
|                 type: 'line', | ||||
|                 data: data | ||||
|             }); | ||||
|         } | ||||
| 
 | ||||
|         async function getData() { | ||||
|             const data = await server.exec([], async () => { | ||||
|                 const notes = await this.getNotesWithAttribute('date_data'); | ||||
|                 const data = []; | ||||
| 
 | ||||
|                 for (const note of notes) { | ||||
|                     const dateAttr = await note.getAttribute('date_data'); | ||||
| 
 | ||||
|                     data.push({ | ||||
|                         date: dateAttr.value, | ||||
|                         weight: note.jsonContent.weight | ||||
|                     }); | ||||
|                 } | ||||
| 
 | ||||
|                 data.sort((a, b) => a.date < b.date ? -1 : +1); | ||||
| 
 | ||||
|                 return data; | ||||
|             }); | ||||
| 
 | ||||
|             const datasets = [{ | ||||
|                 label: "Weight", | ||||
|                 backgroundColor: 'red', | ||||
|                 borderColor: 'red', | ||||
|                 data: data.map(row => row.weight), | ||||
|                 fill: false | ||||
|             }]; | ||||
| 
 | ||||
|             const labels = data.map(row => row.date); | ||||
| 
 | ||||
|             return { | ||||
|                 labels: labels, | ||||
|                 datasets: datasets | ||||
|             }; | ||||
|         } | ||||
| 
 | ||||
|         $("#weight-form").submit(event => { | ||||
|             saveWeight(); | ||||
| 
 | ||||
|             event.preventDefault(); | ||||
|         }); | ||||
| 
 | ||||
|         showMessage("Weight has been saved"); | ||||
| 
 | ||||
|         drawChart(); | ||||
|     } | ||||
| 
 | ||||
|     async function drawChart() { | ||||
|         const data = await server.exec([], async () => { | ||||
|             const notes = await this.getNotesWithAttribute('date_data'); | ||||
|             const data = []; | ||||
| 
 | ||||
|             for (const note of notes) { | ||||
|                 const dateAttr = await note.getAttribute('date_data'); | ||||
| 
 | ||||
|                 data.push({ | ||||
|                     date: dateAttr.value, | ||||
|                     weight: note.jsonContent.weight | ||||
|                 }); | ||||
|             } | ||||
| 
 | ||||
|             data.sort((a, b) => a.date < b.date ? -1 : +1); | ||||
| 
 | ||||
|             return data; | ||||
|         }); | ||||
| 
 | ||||
|         const ctx = $("#canvas")[0].getContext("2d"); | ||||
| 
 | ||||
|         new Chart(ctx, { | ||||
|             type: 'line', | ||||
|             data: { | ||||
|                 labels: data.map(row => row.date), | ||||
|                 datasets: [{ | ||||
|                     label: "Weight", | ||||
|                     backgroundColor: 'red', | ||||
|                     borderColor: 'red', | ||||
|                     data: data.map(row => row.weight), | ||||
|                     fill: false | ||||
|                 }] | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     $("#weight-form").submit(event => { | ||||
|         saveWeight(); | ||||
| 
 | ||||
|         event.preventDefault(); | ||||
|     }); | ||||
| 
 | ||||
|     drawChart(); | ||||
| })(); | ||||
|     })(); | ||||
| </script> | ||||
| @ -53,6 +53,10 @@ async function getNoteIdsWithAttribute(name) { | ||||
| } | ||||
| 
 | ||||
| async function createAttribute(noteId, name, value = "", sourceId = null) { | ||||
|     if (value === null || value === undefined) { | ||||
|         value = ""; | ||||
|     } | ||||
| 
 | ||||
|     const now = utils.nowDate(); | ||||
|     const attributeId = utils.newAttributeId(); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 azivner
						azivner