1- < h5 > Build chart </ h5 >
1+ < h5 > Plot data </ h5 >
22< section class ="section ">
33 < div class ="row ">
44 < div class ="card ">
55 < div class ="card-body ">
6- < form class ="margin-top-1rem ">
6+ < form class ="margin-top-1rem " onsubmit =" generateEpiVisLink(event) " id =" epivis-form " >
77 < div class ="row ">
88 < div class ="col-2 ">
9- < label for ="inputState " class ="form-label "
9+ < label for ="source " class ="form-label "
1010 > Data Source:</ label
1111 >
1212 </ div >
1313 < div class ="col-10 ">
14- < select id ="inputState " class ="form-select " disabled >
14+ < select id ="source " name =" source " class ="form-select " disabled >
1515 < option selected > {{ signal.source.name }}</ option >
1616 </ select >
1717 </ div >
1818 </ div >
1919 < div class ="row margin-top-1rem ">
2020 < div class ="col-2 ">
21- < label for ="inputState " class ="form-label "
21+ < label for ="signal " class ="form-label "
2222 > Data Signal:</ label
2323 >
2424 </ div >
2525 < div class ="col-10 ">
26- < select id ="inputState " class ="form-select " disabled >
26+ < select id ="signal " name =" signal " class ="form-select " disabled >
2727 < option selected > {{ signal.name }}</ option >
2828 </ select >
2929 </ div >
3030 </ div >
3131 < div class ="row margin-top-1rem ">
3232 < div class ="col-2 ">
33- < label for ="inputState " class ="form-label "
33+ < label for ="geographic_type " class ="form-label "
3434 > Geographic Type:</ label
3535 >
3636 </ div >
3737 < div class ="col-10 ">
38- < select id ="inputState " class ="form-select ">
38+ < select id ="geographic_type " name =" geographic_type " class ="form-select ">
3939 < option selected > Choose...</ option >
4040 {% for geography in signal.available_geography.all %}
4141 < option > {{ geography }}</ option >
@@ -45,22 +45,80 @@ <h5>Build chart</h5>
4545 </ div >
4646 < div class ="row margin-top-1rem ">
4747 < 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 >
4949 </ div >
5050 < 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 >
5252 </ div >
5353 </ 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
6057 </ button >
61- </ div > {% endcomment %}
58+ </ div >
6259 </ form >
6360 </ div >
6461 </ div >
6562 </ div >
6663</ 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