Remove an useless opening directive.
[master-thesis.git] / Parasitemia / ParasitemiaUI / Utils.fs
1 module ParasitemiaUI.Utils
2
3 open System.IO
4
5 open Newtonsoft.Json
6
7 open Types
8
9 let inline listAsStr (s : 'a seq) =
10 s |> Seq.fold (fun acc obj -> acc + (if acc = "" then "" else ", ") + string obj) ""
11
12 let percentText (nbTotal : int, nb : int) : string =
13 if nbTotal = 0 then
14 ""
15 else
16 let percent = 100. * (float nb) / (float nbTotal)
17 sprintf "%.1f %% (%d / %d)" percent nb nbTotal
18
19 let roamingDir =
20 Path.Combine (System.Environment.GetFolderPath (System.Environment.SpecialFolder.ApplicationData), "Parasitemia")
21
22 let predefinedPPIFilename = "predefined-ppi.json"
23 let predefinedPPIFilepath = Path.Combine (roamingDir, predefinedPPIFilename)
24
25 let sensorSizesFilename = "sensor-sizes.json"
26 let sensorSizesFilepath = Path.Combine (roamingDir, sensorSizesFilename)
27
28 let private savePredefinedPPIToFile (predefinedPPI : PredefinedPPI list) =
29 try
30 use file = new StreamWriter (predefinedPPIFilepath)
31 file.Write (JsonConvert.SerializeObject (predefinedPPI, JsonSerializerSettings (Formatting = Formatting.Indented)))
32 with
33 ex ->
34 Logger.Log.Error "Unable to save predefined PPI to file \"%s\": %O" predefinedPPIFilepath ex
35
36 let private saveSensorSizesToFile (sensorSizes : SensorSize list) =
37 try
38 use file = new StreamWriter (sensorSizesFilepath)
39 file.Write (JsonConvert.SerializeObject (sensorSizes, JsonSerializerSettings (Formatting = Formatting.Indented)))
40 with
41 ex ->
42 Logger.Log.Error "Unable to save sensor sizes to file \"%s\": %O" sensorSizesFilepath ex
43
44 let predefinedPPI : PredefinedPPI list =
45 try
46 use file = new StreamReader (predefinedPPIFilepath)
47 JsonConvert.DeserializeObject<PredefinedPPI list> (file.ReadToEnd ())
48 with
49 | ex ->
50 savePredefinedPPIToFile defaultPredefinedPPI
51 defaultPredefinedPPI
52
53 let sensorSizes : SensorSize list =
54 try
55 use file = new StreamReader (sensorSizesFilepath)
56 JsonConvert.DeserializeObject<SensorSize list> (file.ReadToEnd ())
57 with
58 | ex ->
59 saveSensorSizesToFile defaultSensorSizes
60 defaultSensorSizes