1
module ParasitemiaUI.Utils
9 let inline listAsStr
(s
: 'a seq) =
10 s |> Seq.fold (fun acc obj -> acc + (if acc = "" then "" else ", ") + string obj) ""
12 let percentText (nbTotal : int, nb : int) : string =
16 let percent = 100. * (float nb) / (float nbTotal)
17 sprintf "%.1f %% (%d / %d)" percent nb nbTotal
20 Path.Combine (System.Environment.GetFolderPath (System.Environment.SpecialFolder.ApplicationData), "Parasitemia")
22 let predefinedPPIFilename = "predefined-ppi.json"
23 let predefinedPPIFilepath = Path.Combine (roamingDir, predefinedPPIFilename)
25 let sensorSizesFilename = "sensor-sizes.json"
26 let sensorSizesFilepath = Path.Combine (roamingDir, sensorSizesFilename)
28 let private savePredefinedPPIToFile (predefinedPPI : PredefinedPPI list) =
30 use file = new StreamWriter (predefinedPPIFilepath)
31 file.Write (JsonConvert.SerializeObject (predefinedPPI, JsonSerializerSettings (Formatting = Formatting.Indented)))
34 Logger.Log.Error "Unable to save predefined PPI to file \"%s\": %O" predefinedPPIFilepath ex
36 let private saveSensorSizesToFile (sensorSizes : SensorSize list) =
38 use file = new StreamWriter (sensorSizesFilepath)
39 file.Write (JsonConvert.SerializeObject (sensorSizes, JsonSerializerSettings (Formatting = Formatting.Indented)))
42 Logger.Log.Error "Unable to save sensor sizes to file \"%s\": %O" sensorSizesFilepath ex
44 let predefinedPPI : PredefinedPPI list =
46 use file = new StreamReader (predefinedPPIFilepath)
47 JsonConvert.DeserializeObject<PredefinedPPI list> (file.ReadToEnd ())
50 savePredefinedPPIToFile defaultPredefinedPPI
53 let sensorSizes : SensorSize list =
55 use file = new StreamReader (sensorSizesFilepath)
56 JsonConvert.DeserializeObject<SensorSize list> (file.ReadToEnd ())
59 saveSensorSizesToFile defaultSensorSizes