| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  | const recentChanges = (function() { | 
					
						
							|  |  |  |     const dialog = $("#recent-changes-dialog"); | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |     async function showDialog() { | 
					
						
							|  |  |  |         dialog.dialog({ | 
					
						
							|  |  |  |             modal: true, | 
					
						
							|  |  |  |             width: 800, | 
					
						
							|  |  |  |             height: 700 | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |         const result = await $.ajax({ | 
					
						
							|  |  |  |             url: baseApiUrl + 'recent-changes/', | 
					
						
							|  |  |  |             type: 'GET', | 
					
						
							|  |  |  |             error: () => error("Error getting recent changes.") | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |         dialog.html(''); | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |         const groupedByDate = groupByDate(result); | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |         for (const [dateDay, dayChanges] of groupedByDate) { | 
					
						
							|  |  |  |             const changesListEl = $('<ul>'); | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |             const dayEl = $('<div>').append($('<b>').html(formatDate(dateDay))).append(changesListEl); | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |             for (const change of dayChanges) { | 
					
						
							|  |  |  |                 const formattedTime = formatTime(getDateFromTS(change.date_modified_to)); | 
					
						
							| 
									
										
										
										
											2017-10-06 22:46:30 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |                 const noteLink = $("<a>", { | 
					
						
							|  |  |  |                     href: 'app#' + change.note_id, | 
					
						
							|  |  |  |                     text: change.note_title | 
					
						
							|  |  |  |                 }); | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |                 const revLink = $("<a>", { | 
					
						
							|  |  |  |                     href: "javascript: showNoteHistoryDialog('" + change.note_id + "', '" + change.note_history_id + "');", | 
					
						
							|  |  |  |                     text: 'rev' | 
					
						
							|  |  |  |                 }); | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |                 changesListEl.append($('<li>') | 
					
						
							|  |  |  |                     .append(formattedTime + ' - ') | 
					
						
							|  |  |  |                     .append(noteLink) | 
					
						
							|  |  |  |                     .append(' (').append(revLink).append(')')); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |             dialog.append(dayEl); | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |     function groupByDate(result) { | 
					
						
							|  |  |  |         const groupedByDate = new Map(); | 
					
						
							|  |  |  |         const dayCache = {}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for (const row of result) { | 
					
						
							|  |  |  |             row.note_title = getFullName(row.note_id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             let dateDay = getDateFromTS(row.date_modified_to); | 
					
						
							|  |  |  |             dateDay.setHours(0); | 
					
						
							|  |  |  |             dateDay.setMinutes(0); | 
					
						
							|  |  |  |             dateDay.setSeconds(0); | 
					
						
							|  |  |  |             dateDay.setMilliseconds(0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // this stupidity is to make sure that we always use the same day object because Map uses only
 | 
					
						
							|  |  |  |             // reference equality
 | 
					
						
							|  |  |  |             if (dayCache[dateDay]) { | 
					
						
							|  |  |  |                 dateDay = dayCache[dateDay]; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             else { | 
					
						
							|  |  |  |                 dayCache[dateDay] = dateDay; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (!groupedByDate.has(dateDay)) { | 
					
						
							|  |  |  |                 groupedByDate.set(dateDay, []); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             groupedByDate.get(dateDay).push(row); | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |         return groupedByDate; | 
					
						
							| 
									
										
										
										
											2017-11-04 11:32:05 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |     $(document).bind('keydown', 'alt+r', showDialog); | 
					
						
							| 
									
										
										
										
											2017-09-26 23:23:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  |     $(document).on('click', '#recent-changes-dialog a', e => { | 
					
						
							|  |  |  |         goToInternalNote(e, () => { | 
					
						
							|  |  |  |             dialog.dialog('close'); | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-09-26 23:23:03 -04:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2017-11-04 13:39:26 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |         showDialog | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | })(); |