|  | 
| 24 | 24 | 				:key="project.name" | 
| 25 | 25 | 				class="col-span-1 flex flex-col styled-element hoverable pressable cursor-pointer" | 
| 26 | 26 | 				:style="{ backgroundColor: projectColors[index] }" | 
| 27 |  | -				@click="startTransition(project, projectColors[index])" | 
|  | 27 | +				@click="onProjectClick(project, projectColors[index])" | 
| 28 | 28 | 			> | 
| 29 | 29 | 				<!-- Project Iterator. --> | 
| 30 | 30 | 				<div class="flex flex-1 flex-col p-8 min-h-40"> | 
|  | 
| 84 | 84 | 	import { emissionToNumber, getResultLogEmissions } from '@/utils/resultUtils' | 
| 85 | 85 | 	import { ColorManager } from '@/utils/colorUtils' | 
| 86 | 86 | 	import router from '@/router' | 
| 87 |  | -	import { useNavigationStore } from '@/stores/navigationStore' | 
| 88 | 87 | 	import { roundNumber } from '@/utils/mathUtils' | 
| 89 | 88 | 	import LoadingCubes from '@/components/LoadingCubes/LoadingCubes.vue' | 
| 90 | 89 | 
 | 
|  | 
| 94 | 93 | 	const speckleStore = useSpeckleStore() | 
| 95 | 94 | 	const firebaseStore = useFirebaseStore() | 
| 96 | 95 | 	const settingsStore = useSettingsStore() | 
| 97 |  | -	const navStore = useNavigationStore() | 
| 98 |  | -
 | 
| 99 |  | -	const selectedProjectId = ref('') | 
| 100 |  | -	const selectedProjectName = ref('') | 
| 101 | 96 | 
 | 
| 102 | 97 | 	const loading = ref(false) | 
| 103 | 98 | 
 | 
|  | 
| 201 | 196 | 	} | 
| 202 | 197 | 
 | 
| 203 | 198 | 	// Updated transition function | 
| 204 |  | -	const startTransition = async (project: ProjectId, color: string) => { | 
| 205 |  | -		activeColor.value = color | 
| 206 |  | -		selectedProjectId.value = project.id | 
| 207 |  | -		selectedProjectName.value = project.name | 
| 208 |  | -
 | 
| 209 |  | -		// Start flash sequence | 
| 210 |  | -		backgroundVisible.value = true | 
| 211 |  | -
 | 
| 212 |  | -		// Load data during the flash | 
| 213 |  | -		navStore.setActiveColor(color) | 
| 214 |  | -
 | 
| 215 |  | -		// Complete transition and navigate | 
| 216 |  | -		setTimeout(() => { | 
| 217 |  | -			router.push({ | 
| 218 |  | -				name: 'Overview', | 
| 219 |  | -				params: { | 
| 220 |  | -					projectId: project.id, | 
| 221 |  | -					id: project.id, | 
| 222 |  | -					color: color | 
| 223 |  | -				} | 
| 224 |  | -			}) | 
| 225 |  | -		}, 100) | 
|  | 199 | +	const onProjectClick = async (project: ProjectId, color: string) => { | 
|  | 200 | +		await firebaseStore.addOrUpdateProjectSettings({ | 
|  | 201 | +			projectId: project.id, | 
|  | 202 | +			name: project.name, | 
|  | 203 | +			settings: { color } | 
|  | 204 | +		}) | 
|  | 205 | +		await router.push({ name: 'Overview', params: { projectId: project.id } }) | 
| 226 | 206 | 	} | 
| 227 | 207 | 
 | 
| 228 | 208 | 	onMounted(() => { | 
|  | 
| 238 | 218 | 		} | 
| 239 | 219 | 	) | 
| 240 | 220 | </script> | 
| 241 |  | - | 
| 242 |  | -<style scoped> | 
| 243 |  | -	.origin-center { | 
| 244 |  | -		transform-origin: center; | 
| 245 |  | -	} | 
| 246 |  | -
 | 
| 247 |  | -	/* Flash transition */ | 
| 248 |  | -	.flash-enter-active { | 
| 249 |  | -		transition: opacity 0.15s step-end; | 
| 250 |  | -	} | 
| 251 |  | -
 | 
| 252 |  | -	.flash-enter-from { | 
| 253 |  | -		opacity: 0; | 
| 254 |  | -	} | 
| 255 |  | -
 | 
| 256 |  | -	.flash-leave-active { | 
| 257 |  | -		transition: opacity 0.15s step-start; | 
| 258 |  | -	} | 
| 259 |  | -
 | 
| 260 |  | -	.flash-leave-to { | 
| 261 |  | -		opacity: 0; | 
| 262 |  | -	} | 
| 263 |  | -</style> | 
0 commit comments