@@ -11,7 +11,6 @@ import Data.Text (unpack)
11
11
import Cardano.JSON
12
12
import Cardano.Util
13
13
import Cardano.Analysis.API.Ground
14
- import Cardano.Analysis.API.Run
15
14
16
15
17
16
data Scale
@@ -23,6 +22,7 @@ data Range
23
22
= Free -- No range restriction
24
23
| Z0 Int -- 1-based range
25
24
| Z1 Int -- 1-based range
25
+ | R01
26
26
deriving (Eq , Show )
27
27
28
28
data Unit
@@ -33,6 +33,7 @@ data Unit
33
33
| MB -- Mibibyte: 2^20
34
34
| KBs -- Kibibyte/s
35
35
| MBs -- Mibibyte/s
36
+ | Era -- Era
36
37
| Epo -- Epoch
37
38
| Slo -- Slots
38
39
| Blk -- Blocks
@@ -41,10 +42,16 @@ data Unit
41
42
| Sig -- Sign: +/-
42
43
| Pct -- Unspecified ratio, percents
43
44
| Ev -- Events
45
+ | KEv -- Events: 10^3
46
+ | Dat -- Date
47
+ | Tim -- Time
48
+ | Ver -- Version
44
49
| Ix -- Unspecified index
45
50
| Len -- Unspecified length
51
+ | Cnt -- Unspecified count
46
52
| Rto -- Unspecified ratio
47
53
| Uni -- Unspecified unit
54
+ | Id -- Unspefified identifier
48
55
deriving (Eq , Show )
49
56
50
57
renderUnit :: Unit -> Text
@@ -56,21 +63,28 @@ renderUnit = \case
56
63
MB -> " MB"
57
64
KBs -> " KB/s"
58
65
MBs -> " MB/s"
66
+ Era -> " era"
59
67
Epo -> " epoch"
60
68
Slo -> " slots"
61
69
Blk -> " blocks"
62
70
Hsh -> " hash"
63
71
Hos -> " host"
64
72
Sig -> " +/-"
65
73
Pct -> " %"
66
- Ev -> " "
67
- Ix -> " "
68
- Len -> " "
69
- Rto -> " "
70
- Uni -> " "
74
+ Ev -> " #"
75
+ KEv -> " #"
76
+ Dat -> " on"
77
+ Tim -> " at"
78
+ Ver -> " v"
79
+ Ix -> " []"
80
+ Len -> " #"
81
+ Cnt -> " #"
82
+ Rto -> " /"
83
+ Uni -> " #"
84
+ Id -> " "
71
85
72
86
data Width
73
- = W0
87
+ = Wno
74
88
| W1
75
89
| W2
76
90
| W3
@@ -83,6 +97,15 @@ data Width
83
97
| W10
84
98
| W11
85
99
| W12
100
+ | W13
101
+ | W14
102
+ | W15
103
+ | W16
104
+ | W17
105
+ | W18
106
+ | W19
107
+ | W20
108
+ | W21
86
109
deriving (Eq , Enum , Ord , Show )
87
110
88
111
data Precision
@@ -94,7 +117,8 @@ data Precision
94
117
95
118
{-# INLINE width #-}
96
119
width :: Width -> Int
97
- width = fromEnum
120
+ width Wno = 80
121
+ width x = fromEnum x
98
122
99
123
-- | Encapsulate all metadata about a metric (a projection) of
100
124
-- a certain projectible (a kind of analysis results):
@@ -122,10 +146,14 @@ class CDFFields a p where
122
146
123
147
class TimelineFields a where
124
148
data TimelineComments a :: Type
125
- timelineFields :: Run -> [Field ISelect I a ]
149
+ timelineFields :: [Field ISelect I a ]
126
150
rtCommentary :: a -> TimelineComments a -> [Text ]
127
151
rtCommentary _ _ = []
128
152
153
+ data FSelect where
154
+ ISel :: TimelineFields a => (Field ISelect I a -> Bool ) -> FSelect
155
+ DSel :: CDFFields a p => (Field DSelect p a -> Bool ) -> FSelect
156
+
129
157
data DSelect p a
130
158
= DInt (a p -> CDF p Int )
131
159
| DWord64 (a p -> CDF p Word64 )
@@ -139,8 +167,16 @@ data ISelect p a
139
167
| IFloat (a -> Double )
140
168
| IDeltaT (a -> NominalDiffTime )
141
169
| IDeltaTM (a -> SMaybe NominalDiffTime )
170
+ | IDate (a -> UTCTime )
171
+ | ITime (a -> UTCTime )
142
172
| IText (a -> Text )
143
173
174
+ dFields :: [FieldName ] -> Field DSelect p a -> Bool
175
+ dFields fs Field {fId} = FieldName fId `elem` fs
176
+
177
+ iFields :: [FieldName ] -> Field ISelect I a -> Bool
178
+ iFields fs Field {fId} = FieldName fId `elem` fs
179
+
144
180
filterFields :: CDFFields a p
145
181
=> (Field DSelect p a -> Bool ) -> [Field DSelect p a ]
146
182
filterFields f = filter f cdfFields
0 commit comments