1
- < h5 > Build chart </ h5 >
1
+ < h5 > Plot data </ h5 >
2
2
< section class ="section ">
3
3
< div class ="row ">
4
4
< div class ="card ">
5
5
< div class ="card-body ">
6
- < form class ="margin-top-1rem ">
6
+ < form class ="margin-top-1rem " onsubmit =" generateEpiVisLink(event) " id =" epivis-form " >
7
7
< div class ="row ">
8
8
< div class ="col-2 ">
9
- < label for ="inputState " class ="form-label "
9
+ < label for ="source " class ="form-label "
10
10
> Data Source:</ label
11
11
>
12
12
</ div >
13
13
< div class ="col-10 ">
14
- < select id ="inputState " class ="form-select " disabled >
14
+ < select id ="source " name =" source " class ="form-select " disabled >
15
15
< option selected > {{ signal.source.name }}</ option >
16
16
</ select >
17
17
</ div >
18
18
</ div >
19
19
< div class ="row margin-top-1rem ">
20
20
< div class ="col-2 ">
21
- < label for ="inputState " class ="form-label "
21
+ < label for ="signal " class ="form-label "
22
22
> Data Signal:</ label
23
23
>
24
24
</ div >
25
25
< div class ="col-10 ">
26
- < select id ="inputState " class ="form-select " disabled >
26
+ < select id ="signal " name =" signal " class ="form-select " disabled >
27
27
< option selected > {{ signal.name }}</ option >
28
28
</ select >
29
29
</ div >
30
30
</ div >
31
31
< div class ="row margin-top-1rem ">
32
32
< div class ="col-2 ">
33
- < label for ="inputState " class ="form-label "
33
+ < label for ="geographic_type " class ="form-label "
34
34
> Geographic Type:</ label
35
35
>
36
36
</ div >
37
37
< div class ="col-10 ">
38
- < select id ="inputState " class ="form-select ">
38
+ < select id ="geographic_type " name =" geographic_type " class ="form-select ">
39
39
< option selected > Choose...</ option >
40
40
{% for geography in signal.available_geography.all %}
41
41
< option > {{ geography }}</ option >
@@ -45,22 +45,80 @@ <h5>Build chart</h5>
45
45
</ div >
46
46
< div class ="row margin-top-1rem ">
47
47
< div class ="col-2 ">
48
- < label for ="inputEmail3 " class ="col-form-label "> Geographic Value:</ label >
48
+ < label for ="geographic_value " class ="col-form-label "> Geographic Value:</ label >
49
49
</ div >
50
50
< div class ="col-10 ">
51
- < input type =" text " class ="form-control " id =" inputText " >
51
+ < select id =" geographic_value " name =" geographic_value " class ="form-select select-responsive " > </ select >
52
52
</ div >
53
53
</ div >
54
- {% comment %} < div class ="text-center ">
55
- < button type ="submit " class ="btn btn-primary ">
56
- Submit
57
- </ button >
58
- < button type ="reset " class ="btn btn-secondary ">
59
- Reset
54
+ < div class ="row ">
55
+ < button type ="submit " value ="Submit " class ="btn btn-primary margin-top-1rem " id ="show-chart ">
56
+ Show plot
60
57
</ button >
61
- </ div > {% endcomment %}
58
+ </ div >
62
59
</ form >
63
60
</ div >
64
61
</ div >
65
62
</ div >
66
63
</ section >
64
+ < script >
65
+ $ ( document ) . ready ( function ( ) {
66
+ $ ( '#geographic_value' ) . select2 ( {
67
+ ajax : {
68
+ url : '{% url ' geography_units_api ' %}' ,
69
+ dataType : 'json' ,
70
+ data : function ( params ) {
71
+ var geographic_type = document . getElementById ( 'geographic_type' ) ;
72
+ return {
73
+ geography__name : geographic_type . value ,
74
+ term : params . term ,
75
+ limit : 50
76
+ } ;
77
+ } ,
78
+ processResults : function ( data ) {
79
+ return {
80
+ results : $ . map ( data . results , function ( item ) {
81
+ if ( typeof item . geo_id === 'string' ) {
82
+ return {
83
+ text : item . display_name ,
84
+ id : item . geo_id . toLowerCase ( )
85
+ }
86
+ } else {
87
+ return {
88
+ text : item . display_name ,
89
+ id : item . geo_id
90
+ }
91
+ }
92
+ } )
93
+ } ;
94
+ }
95
+ } ,
96
+ minimumInputLength : 1
97
+ } ) ;
98
+ } ) ;
99
+
100
+ document . getElementById ( 'geographic_type' ) . addEventListener ( "change" , ( event ) => {
101
+ $ ( '#geographic_value' ) . val ( null ) . trigger ( 'change' ) ;
102
+ } )
103
+
104
+
105
+ function generateEpiVisLink ( event ) {
106
+ event . preventDefault ( ) ;
107
+ var dataSource = document . getElementById ( 'source' ) . value ;
108
+ var dataSignal = document . getElementById ( 'signal' ) . value ;
109
+
110
+ var geographicType = document . getElementById ( 'geographic_type' ) . value ;
111
+ var geographicValue = document . getElementById ( 'geographic_value' ) . value ;
112
+
113
+ var urlParamsEncoded = btoa ( `{"datasets":[{"color":"#415742","title":"value","params":{"_endpoint":"covidcast","data_source":"${ dataSource } ","signal":"${ dataSignal } ","time_type":"day","geo_type":"${ geographicType } ","geo_value":"${ geographicValue } "}}]}` ) ;
114
+
115
+ var epiVisUrl = `https://deploy-preview-36--cmu-delphi-epivis.netlify.app/` ;
116
+
117
+ if ( geographicType === 'Choose...' || geographicValue === '' ) {
118
+ window . open ( epiVisUrl , '_blank' ) . focus ( ) ;
119
+ } else {
120
+ epiVisUrl += `#${ urlParamsEncoded } ` ;
121
+ window . open ( epiVisUrl , '_blank' ) . focus ( ) ;
122
+ }
123
+ }
124
+ </ script >
0 commit comments