@@ -33,45 +33,65 @@ const PlotlyChart = {
33
33
34
34
const interventionTableConfig = {
35
35
social_distance : {
36
- formTitle : "Physical distancing" ,
37
- fields : [ { key : 'start' , type : 'number' , label : 'Start day' } ,
38
- { key : 'end' , type : 'number' , label : 'End day' } ,
39
- { label : 'Effectiveness' , key : 'level' , type : 'select' , options : [ { label : 'Aggressive (80%)' , value : 'aggressive' } , { label : 'Moderate (50%)' , value : 'moderate' } , { label : 'Mild (20%)' , value : 'mild' } ] } ] ,
36
+ formTitle : "Distancing" ,
37
+ toolTip : "Physical distancing and social distancing interventions" ,
38
+ fields : [
39
+ { key : 'start' , type : 'number' , label : 'Start day' , tooltip : 'Start day of intervention' , value : 0 } ,
40
+ { key : 'end' , type : 'number' , label : 'End day' , tooltip : 'End day of intervention (leave blank for no end)' , value : null } ,
41
+ { key : 'level' , type : 'number' , label : 'Effectiveness' , tooltip : 'Impact of social distancing (examples: 20 = mild, 50 = moderate, 80 = aggressive)' , min : 0 , max : 100 , value : 50 }
42
+ ] ,
40
43
handleSubmit : function ( event ) {
41
- const start = parseInt ( event . target . elements . start . value ) ;
42
- const end = parseInt ( event . target . elements . end . value ) ;
44
+ const start = vm . parse_day ( event . target . elements . start . value ) ;
45
+ const end = vm . parse_day ( event . target . elements . end . value ) ;
43
46
const level = event . target . elements . level . value ;
44
47
return { start, end, level} ;
45
48
}
46
49
} ,
47
50
school_closures : {
48
- formTitle : "School closures" ,
49
- fields : [ { key : 'start' , type : 'number' , label : 'Start day' } , { key : 'end' , type : 'number' , label : 'End day' } ] ,
51
+ formTitle : "Schools" ,
52
+ toolTip : "School and university closures" ,
53
+ fields : [
54
+ { key : 'start' , type : 'number' , label : 'Start day' , tooltip : 'Start day of intervention' , value : 0 } ,
55
+ { key : 'end' , type : 'number' , label : 'End day' , tooltip : 'End day of intervention (leave blank for no end)' , value : null } ,
56
+ { key : 'level' , type : 'number' , label : 'Effectiveness' , tooltip : 'Impact of school closures (0 = no schools closed, 100 = all schools closed)' , min : 0 , max : 100 , value : 90 }
57
+ ] ,
50
58
handleSubmit : function ( event ) {
51
- const start = parseInt ( event . target . elements . start . value ) ;
52
- const end = parseInt ( event . target . elements . end . value ) ;
53
- return { start, end} ;
59
+ const start = vm . parse_day ( event . target . elements . start . value ) ;
60
+ const end = vm . parse_day ( event . target . elements . end . value ) ;
61
+ const level = event . target . elements . level . value ;
62
+ return { start, end, level} ;
54
63
}
55
64
} ,
56
65
symptomatic_testing : {
57
- formTitle : "Symptomatic testing" ,
58
- fields : [ { key : 'start' , type : 'number' , label : 'Start day' } , { key : 'end' , type : 'number' , label : 'End day' } , { label : 'Coverage' , key : 'level' , type : 'select' , options : [ { label : '10% per day' , value : '10' } , { label : '30% per day' , value : '30' } , ] } ] ,
66
+ formTitle : "Testing" ,
67
+ toolTip : "Testing rates for people with symptoms" ,
68
+ fields : [
69
+ { key : 'start' , type : 'number' , label : 'Start day' , tooltip : 'Start day of intervention' , value : 0 } ,
70
+ { key : 'end' , type : 'number' , label : 'End day' , tooltip : 'End day of intervention (leave blank for no end)' , value : null } ,
71
+ { key : 'level' , type : 'number' , label : 'Effectiveness' , tooltip : 'Proportion of people tested per day (0 = no testing, 10 = 10% of people tested per day, 100 = everyone tested every day); assumes 1 day test delay' , min : 0 , max : 100 , value : 10 }
72
+ ] ,
59
73
handleSubmit : function ( event ) {
60
- const start = parseInt ( event . target . elements . start . value ) ;
61
- const end = parseInt ( event . target . elements . end . value ) ;
62
- const level = parseInt ( event . target . elements . level . value ) ;
74
+ const start = vm . parse_day ( event . target . elements . start . value ) ;
75
+ const end = vm . parse_day ( event . target . elements . end . value ) ;
76
+ const level = event . target . elements . level . value ;
63
77
return { start, end, level} ;
64
78
}
65
79
} ,
66
80
contact_tracing : {
67
- formTitle : "Contact tracing" ,
68
- fields : [ { key : 'start' , type : 'number' , label : 'Start Day' } , { key : 'end' , type : 'number' , label : 'End day' } ] ,
81
+ formTitle : "Tracing" ,
82
+ toolTip : "Contact tracing of diagnosed cases (requires testing intervention)" ,
83
+ fields : [
84
+ { key : 'start' , type : 'number' , label : 'Start day' , tooltip : 'Start day of intervention' , value : 0 } ,
85
+ { key : 'end' , type : 'number' , label : 'End day' , tooltip : 'End day of intervention (leave blank for no end)' , value : null } ,
86
+ { key : 'level' , type : 'number' , label : 'Effectiveness' , tooltip : 'Effectiveness of contact tracing (0 = no tracing, 100 = all contacts traced); assumes 1 day tracing delay. Please note: you must implement a testing intervention as well for tracing to have any effect.' , min : 0 , max : 100 , value : 80 }
87
+ ] ,
69
88
handleSubmit : function ( event ) {
70
- const start = parseInt ( event . target . elements . start . value ) ;
71
- const end = parseInt ( event . target . elements . end . value ) ;
72
- return { start, end} ;
89
+ const start = vm . parse_day ( event . target . elements . start . value ) ;
90
+ const end = vm . parse_day ( event . target . elements . end . value ) ;
91
+ const level = event . target . elements . level . value ;
92
+ return { start, end, level} ;
73
93
}
74
- }
94
+ }
75
95
76
96
} ;
77
97
@@ -235,7 +255,7 @@ var vm = new Vue({
235
255
this . int_pars [ key ] . push ( intervention ) ;
236
256
const result = this . int_pars [ key ] . sort ( ( a , b ) => a . start - b . start ) ;
237
257
this . $set ( this . int_pars , key , result ) ;
238
- const response = await sciris . rpc ( 'get_gantt' , undefined , { int_pars : this . int_pars , intervention_config : this . interventionTableConfig } ) ;
258
+ const response = await sciris . rpc ( 'get_gantt' , undefined , { int_pars : this . int_pars , intervention_config : this . interventionTableConfig , n_days : this . sim_length . best } ) ;
239
259
this . intervention_figs = response . data ;
240
260
} ,
241
261
async deleteIntervention ( scenarioKey , index ) {
@@ -244,6 +264,16 @@ var vm = new Vue({
244
264
this . intervention_figs = response . data ;
245
265
} ,
246
266
267
+ parse_day ( day ) {
268
+ if ( day == null || day == '' ) {
269
+ const output = this . sim_length . best
270
+ return output
271
+ } else {
272
+ const output = parseInt ( day )
273
+ return output
274
+ }
275
+ } ,
276
+
247
277
resize_start ( ) {
248
278
this . resizing = true ;
249
279
} ,
0 commit comments