| 
					
				 | 
			
			
				@@ -1,3 +1,42 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script setup lang="ts"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useStore } from "vuex"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ref } from "vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+defineProps({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	jobs: { type: Array, default: () => [] } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const showJobDropdown = ref(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const store = useStore(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const { socket } = store.state.websockets; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const setJob = payload => store.dispatch("longJobs/setJob", payload); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const runJob = job => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	let id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	let title; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	socket.dispatch(job.socket, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		cb: () => {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		onProgress: res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (res.status === "started") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				id = res.id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				title = res.title; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				setJob({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					name: title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					...res 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<tippy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		class="runJobDropdown" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -52,52 +91,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	</tippy> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-<script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { mapGetters } from "vuex"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	props: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		jobs: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			type: Array, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			default: () => [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			showJobDropdown: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	computed: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		...mapGetters({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			socket: "websockets/getSocket" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		runJob(job) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			let id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			let title; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			this.socket.dispatch(job.socket, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				cb: () => {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				onProgress: res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (res.status === "started") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						id = res.id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						title = res.title; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.setJob({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							name: title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							...res 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <style lang="less" scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .nav-dropdown-items { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	& > span:not(:last-child) .nav-item.button { 
			 |