| 
									
										
										
										
											2023-07-22 07:51:02 +02:00
										 |  |  | /* | 
					
						
							|  |  |  |  * dashboard.js | 
					
						
							|  |  |  |  * Copyright (c) 2023 james@firefly-iii.org | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This file is part of Firefly III (https://github.com/firefly-iii).
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as | 
					
						
							|  |  |  |  * published by the Free Software Foundation, either version 3 of the | 
					
						
							|  |  |  |  * License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 13:51:38 +02:00
										 |  |  | import '../../boot/bootstrap.js'; | 
					
						
							|  |  |  | import dates from '../../pages/shared/dates.js'; | 
					
						
							|  |  |  | import boxes from './boxes.js'; | 
					
						
							|  |  |  | import accounts from './accounts.js'; | 
					
						
							|  |  |  | import budgets from './budgets.js'; | 
					
						
							|  |  |  | import categories from './categories.js'; | 
					
						
							|  |  |  | import sankey from './sankey.js'; | 
					
						
							|  |  |  | import subscriptions from './subscriptions.js'; | 
					
						
							|  |  |  | import piggies from './piggies.js'; | 
					
						
							| 
									
										
										
										
											2023-08-12 07:53:11 +02:00
										 |  |  | import { | 
					
						
							| 
									
										
										
										
											2024-01-07 07:02:28 +01:00
										 |  |  |     ArcElement, | 
					
						
							|  |  |  |     BarController, | 
					
						
							|  |  |  |     BarElement, | 
					
						
							|  |  |  |     CategoryScale, | 
					
						
							| 
									
										
										
										
											2023-08-12 07:53:11 +02:00
										 |  |  |     Chart, | 
					
						
							| 
									
										
										
										
											2024-01-07 07:02:28 +01:00
										 |  |  |     Colors, | 
					
						
							|  |  |  |     Filler, | 
					
						
							|  |  |  |     Legend, | 
					
						
							|  |  |  |     LinearScale, | 
					
						
							| 
									
										
										
										
											2023-08-12 07:53:11 +02:00
										 |  |  |     LineController, | 
					
						
							|  |  |  |     LineElement, | 
					
						
							|  |  |  |     PieController, | 
					
						
							|  |  |  |     PointElement, | 
					
						
							| 
									
										
										
										
											2024-01-07 07:02:28 +01:00
										 |  |  |     TimeScale, | 
					
						
							| 
									
										
										
										
											2023-08-12 07:53:11 +02:00
										 |  |  |     Tooltip | 
					
						
							|  |  |  | } from "chart.js"; | 
					
						
							|  |  |  | import 'chartjs-adapter-date-fns'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // register things
 | 
					
						
							|  |  |  | Chart.register({ | 
					
						
							|  |  |  |     LineController, | 
					
						
							|  |  |  |     LineElement, | 
					
						
							|  |  |  |     ArcElement, | 
					
						
							|  |  |  |     BarController, | 
					
						
							|  |  |  |     TimeScale, | 
					
						
							|  |  |  |     PieController, | 
					
						
							|  |  |  |     BarElement, | 
					
						
							|  |  |  |     Filler, | 
					
						
							|  |  |  |     Colors, | 
					
						
							|  |  |  |     LinearScale, | 
					
						
							|  |  |  |     CategoryScale, | 
					
						
							|  |  |  |     PointElement, | 
					
						
							|  |  |  |     Tooltip, | 
					
						
							|  |  |  |     Legend | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const comps = { | 
					
						
							|  |  |  |     dates, | 
					
						
							|  |  |  |     boxes, | 
					
						
							|  |  |  |     accounts, | 
					
						
							|  |  |  |     budgets, | 
					
						
							|  |  |  |     categories, | 
					
						
							|  |  |  |     sankey, | 
					
						
							|  |  |  |     subscriptions, | 
					
						
							|  |  |  |     piggies | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2023-07-22 07:51:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-07 07:02:28 +01:00
										 |  |  | //let i18n;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-22 16:42:33 +02:00
										 |  |  | function loadPage(comps) { | 
					
						
							| 
									
										
										
										
											2024-01-07 12:51:42 +01:00
										 |  |  |     Object.keys(comps).forEach(comp => { | 
					
						
							|  |  |  |         let data = comps[comp](); | 
					
						
							|  |  |  |         Alpine.data(comp, () => data); | 
					
						
							| 
									
										
										
										
											2023-07-22 16:42:33 +02:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2024-01-07 12:51:42 +01:00
										 |  |  |     Alpine.start(); | 
					
						
							| 
									
										
										
										
											2023-07-22 16:42:33 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-07-22 07:51:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-22 16:42:33 +02:00
										 |  |  | // wait for load until bootstrapped event is received.
 | 
					
						
							|  |  |  | document.addEventListener('firefly-iii-bootstrapped', () => { | 
					
						
							| 
									
										
										
										
											2024-01-07 12:51:42 +01:00
										 |  |  |     console.log('Loaded through event listener.'); | 
					
						
							| 
									
										
										
										
											2023-07-22 16:42:33 +02:00
										 |  |  |     loadPage(comps); | 
					
						
							| 
									
										
										
										
											2023-07-22 07:51:02 +02:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2023-07-22 16:42:33 +02:00
										 |  |  | // or is bootstrapped before event is triggered.
 | 
					
						
							|  |  |  | if (window.bootstrapped) { | 
					
						
							| 
									
										
										
										
											2024-01-07 12:51:42 +01:00
										 |  |  |     console.log('Loaded through window variable.'); | 
					
						
							| 
									
										
										
										
											2023-07-22 16:42:33 +02:00
										 |  |  |     loadPage(comps); | 
					
						
							|  |  |  | } |