@@ -19,10 +19,14 @@ import { AttributesContext } from './../App';
19
19
import { triggerRestQueryDetails , objectShallowEq } from './../util' ;
20
20
21
21
/* todos
22
+ - add manual trigger button for preview (or find better way to avoid reports constantly popping up)
23
+ - cache apply query rests (e.g. only on button press)
24
+ - add way for reports to contain multiple filter
25
+ - add hover/tooltip for filters showing the full object (e.g. tmpFb...)
22
26
- add manual filter entry
23
27
- finish support apply mode
24
- - cache apply query rests (e.g. only on button press)
25
28
- disallow esc to close?
29
+ - add icons for report,... similar to tree-view in dlt-logs
26
30
*/
27
31
28
32
const useStyles = makeStyles ( theme => ( {
@@ -49,20 +53,55 @@ function intersection(a, b) {
49
53
return a . filter ( ( value ) => b . indexOf ( value ) !== - 1 ) ;
50
54
}
51
55
52
- function filterFromObj ( obj , applyMode ) {
56
+ export const MSTP_strs = [ "log" , "app_trace" , "nw_trace" , "control" , "" , "" , "" , "" ] ;
57
+ export const MTIN_LOG_strs = [ "" , "fatal" , "error" , "warn" , "info" , "debug" , "verbose" , "" , "" , "" , "" , "" , "" , "" , "" , "" ] ;
53
58
54
- const typePrefix = ( type ) => {
55
- switch ( type ) {
56
- case 0 : return '+' ;
57
- case 1 : return '-' ;
58
- case 2 : return '*' ;
59
- case 3 : return '@' ;
60
- default : return `unknown(${ type } )` ;
61
- }
59
+ /**
60
+ * return a name similar as in DltFilter.ts from mbehr1/dlt-logs
61
+ * @param {Object } filter
62
+ */
63
+ function nameForFilterObj ( filter ) {
64
+
65
+ let enabled = '' ;
66
+ if ( filter . name ) {
67
+ enabled += filter . name + ' ' ;
62
68
}
69
+ let type ;
70
+ switch ( filter . type ) {
71
+ case 0 /* DltFilterType.POSITIVE*/ : type = "+" ; break ;
72
+ case 1 /* DltFilterType.NEGATIVE*/ : type = "-" ; break ;
73
+ case 2 /* DltFilterType.MARKER*/ : type = "*" ; break ;
74
+ case 3 /* DltFilterType.EVENT*/ : type = "@" ; break ;
75
+ default : type = `unknown(${ filter . type } )` ; break ;
76
+ } ;
77
+ if ( filter . negateMatch ) {
78
+ type += '!' ;
79
+ }
80
+ let nameStr = "" ;
81
+ if ( filter . mstp !== undefined ) {
82
+ nameStr += MSTP_strs [ filter . mstp ] ;
83
+ nameStr += ' ' ;
84
+ }
85
+ if ( filter . logLevelMin ) { // we ignore 0 values here
86
+ nameStr += `>=${ MTIN_LOG_strs [ filter . logLevelMin ] } ` ;
87
+ }
88
+ if ( filter . logLevelMax ) { // we ignore 0 value here
89
+ nameStr += `<=${ MTIN_LOG_strs [ filter . logLevelMax ] } ` ;
90
+ }
91
+ if ( filter . ecu ) { nameStr += `ECU:${ filter . ecu } ` ; } // we ignore empty strings
92
+ if ( filter . apid ) { nameStr += `APID:${ filter . apid } ` ; }
93
+ if ( filter . ctid ) { nameStr += `CTID:${ filter . ctid } ` ; }
94
+ if ( filter . payload ) { nameStr += `payload contains '${ filter . payload } ' ` ; }
95
+ if ( filter . payloadRegex !== undefined ) { nameStr += `payload matches '${ filter . payloadRegex } '` ; }
96
+ if ( filter . lifecycles !== undefined ) { nameStr += ` in ${ filter . lifecycles . length } LCs` ; }
97
+
98
+ return `${ enabled } ${ type } ${ nameStr } ` ;
99
+ }
100
+
101
+ function filterFromObj ( obj , applyMode ) {
63
102
64
103
return {
65
- name : `${ typePrefix ( obj . type ) } ${ obj ?. name ?. length > 0 ? obj . name : JSON . stringify ( { ...obj , type : undefined , tmpFb : undefined } ) } ` ,
104
+ name : nameForFilterObj ( obj ) , // `${typePrefix(obj.type)}${obj?.name?.length > 0 ? obj.name : JSON.stringify({ ...obj, type: undefined, tmpFb: undefined })}`,
66
105
value : applyMode ?
67
106
( obj . type !== 3 ? `add=${ JSON . stringify ( { ...obj , tmpFb : 1 } ) } ` : `report=[${ JSON . stringify ( { ...obj , tmpFb : 1 } ) } ]` ) :
68
107
JSON . stringify ( obj ) // todo for report multiple ones should be put into the same report -> same array. refactor logic!
@@ -185,7 +224,7 @@ export default function DLTFilterAssistantDialog(props) {
185
224
const attr = filter . attributes ;
186
225
if ( attr . type === 0 || attr . type === 1 || attr . type === 2 || attr . type === 3 ) { // only pos,neg, marker and event filters
187
226
if ( ! ( attr ?. atLoadTime ) ) { // ignore load time ones
188
- const enabled = attr ?. enabled ? true : false ;
227
+ const enabled = attr ?. enabled ? ( attr . type !== 3 /* event filters should not be enabled */ ? true : false ) : false ;
189
228
const newAttrs = { ...attr , configs : undefined , id : undefined , enabled : undefined }
190
229
const newFilter = filterFromObj ( newAttrs , props . applyMode ) ;
191
230
// does it exist already?
0 commit comments