Browse Source

Svelte: Restore analytics over started processes

Alessandro Pignotti 9 months ago
parent
commit
930fc96242
3 changed files with 27 additions and 2 deletions
  1. 9 0
      src/lib/WebVM.svelte
  2. 9 1
      src/routes/+page.svelte
  3. 9 1
      src/routes/alpine/+page.svelte

+ 9 - 0
src/lib/WebVM.svelte

@@ -14,6 +14,7 @@
 	import { introMessage, errorMessage } from '$lib/messages.js'
 
 	export let configObj = null;
+	export let processCallback = null;
 
 	var term = new Terminal({cursorBlink:true, convertEol:true, fontFamily:"monospace", fontWeight: 400, fontWeightBold: 700});
 	var cx = null;
@@ -22,6 +23,7 @@
 	var linkAddon = new WebLinksAddon();
 	term.loadAddon(linkAddon);
 	var cxReadFunc = null;
+	var processCount = 0;
 	function writeData(buf, vt)
 	{
 		if(vt != 1)
@@ -78,6 +80,12 @@
 		const display = document.getElementById("display");
 		display.style.zIndex = 10;
 	}
+	function handleProcessCreated()
+	{
+		processCount++;
+		if(processCallback)
+			processCallback(processCount);
+	}
 	async function initCheerpX()
 	{
 		// TODO: Check for SAB support
@@ -142,6 +150,7 @@
 		}
 		cx.registerCallback("cpuActivity", cpuCallback);
 		cx.registerCallback("diskActivity", hddCallback);
+		cx.registerCallback("processCreated", handleProcessCreated);
 		term.scrollToBottom();
 		cxReadFunc = cx.setCustomConsole(writeData, term.cols, term.rows);
 		const display = document.getElementById("display");

+ 9 - 1
src/routes/+page.svelte

@@ -1,6 +1,14 @@
 <script>
 import WebVM from '$lib/WebVM.svelte';
 import * as configObj from '/config_terminal'
+function handleProcessCreated(processCount)
+{
+	// Log the first 5 processes, to get an idea of the level of interaction from the public
+	if(processCount <= 5)
+	{
+		plausible(`Process started: ${processCount}`);
+	}
+}
 </script>
 
-<WebVM configObj={configObj} />
+<WebVM configObj={configObj} processCallback={handleProcessCreated} />

+ 9 - 1
src/routes/alpine/+page.svelte

@@ -1,6 +1,14 @@
 <script>
 import WebVM from '$lib/WebVM.svelte';
 import * as configObj from '/config_public_alpine'
+function handleProcessCreated(processCount)
+{
+	// Log only the first process, as a proxy for successful startup
+	if(processCount == 1)
+	{
+		plausible("Alpine init");
+	}
+}
 </script>
 
-<WebVM configObj={configObj} />
+<WebVM configObj={configObj} processCallback={handleProcessCreated} />