def post(self, request): ses_form = APIform4(request.POST) if ses_form.is_valid(): form_data = ses_form.cleaned_data query, messages, text = MOIRA.get_rates(form_data, 'ses') if 'error' in text: alerts = "<div class=\"alert alert-brand\"><strong>Invalid Cause of Death Category</strong></div>" suptable = '' elif '<!DOCTYPE html>' in text: # or '<!DOCTYPE html>' in rs_text: text = 'Please try another time period in your selection.' alerts = "<div class=\"alert alert-brand\"><strong>Your query returned too much data.</strong> Please Try a Shorter Time Period - Sorry!</div>" suptable = '' MOIRA.get_csv('{"temp":"temp"}', get=True) else: text = MOIRA.rates_SEStime(text) df, suptable = MOIRA.get_csv(text, SES = True) text = "" alerts = "" title = form_data['title_4'] #df_rates, df_deaths = MOIRA.rates_RStime(text), MOIRA.deaths_RStime(text) if len(messages) > 0: for message in messages: alert = "<div class=\"alert alert-brand\">"+message+"</div>" alerts = alerts + alert else: text = "Invalid Submission" title = form_data['title_4'] alerts = "<div class=\"alert alert-brand\"><strong>Please Try Another Time Period</strong> - Thank you!</div>" args = {'ses_form':ses_form, 'alerts':mark_safe(alerts), 'title':mark_safe(title), 'text':query, 'suptable':mark_safe(suptable)} return render(request, self.template_name, args)
def get(self, request): geo_form = APIform8() text = '' geoLVL = 'counties' args = {'geo_form':geo_form, 'text':text, 'geoLVL':geoLVL} MOIRA.get_csv('{"temp":"temp"}', get=True) return render(request, self.template_name, args)
def get(self, request): tc_form = APIform7() title = 'Create a time-series clustering heatmap... Please limit queries to a small number of counties.' # overwrite output file source1, source2 = '<!--', '-->' MOIRA.get_csv('{"temp":"temp"}', get=True) args = {'tc_form':tc_form, 'title':title, 'source1':mark_safe(source1), 'source2':mark_safe(source2)} return render(request, self.template_name, args)
def get(self, request): fc_form = APIform5() text = 'Locate Mortality Hotspots Across the United States' geoLVL = 'counties' projection = 'const projection = d3.geoAlbersUsa().scale(750).translate([350, 250])' args = {'fc_form':fc_form, 'text':text, 'geoLVL':geoLVL, 'projection':mark_safe(projection)} MOIRA.get_csv('{"temp":"temp"}', get=True) return render(request, self.template_name, args)
def post(self, request): race_sex_form = APIform2(request.POST) if race_sex_form.is_valid(): form_data = race_sex_form.cleaned_data query, text, messages = MOIRA.get_rates(form_data, 'rs') if 'error' in text: alerts = "<div class=\"alert alert-brand\"><strong>Invalid Cause of Death Category</strong></div>" elif '<!DOCTYPE html>' in text: # or '<!DOCTYPE html>' in rs_text: text = 'Please try another time period in your selection.' alerts = "<div class=\"alert alert-brand\"><strong>Please Try Another Time Period</strong> - Thank you!</div>" else: text = MOIRA.rates_RStime(text) df, suptable = MOIRA.get_csv(text, RS = True) text = "" alerts = "" title = form_data['title_2'] #df_rates, df_deaths = MOIRA.rates_RStime(text), MOIRA.deaths_RStime(text) if len(messages) > 0: for message in messages: alert = "<div class=\"alert alert-brand\">"+message+"</div>" alerts = alerts + alert else: text = "Invalid Submission" args = {'race_sex_form':race_sex_form, 'alerts':mark_safe(alerts), 'title':mark_safe(title), 'text':text, 'query':mark_safe(query), 'suptable':mark_safe(suptable)} return render(request, self.template_name, args)
def post(self, request): tc_form = APIform7(request.POST) if tc_form.is_valid(): form_data = tc_form.cleaned_data query, text, messages = MOIRA.get_rates(form_data, 'timecluster') if 'error' in text: alerts = "<div class=\"alert alert-brand\"><strong>Invalid Cause of Death Category</strong></div>" elif '<!DOCTYPE html>' in text: # or '<!DOCTYPE html>' in rs_text: text = 'Please try another time period in your selection.' alerts = "<div class=\"alert alert-brand\"><strong>Please Try Another Time Period</strong> - Thank you!</div>" else: text = MOIRA.rates_TempClust(text, form_data['geoLevel_7']) df, suptable = MOIRA.get_csv(text, tempcluster=True) text = "" alerts = "" title = form_data['title_7'] source1, source2 = '<iframe src=', '</iframe>' if len(messages) > 0: for message in messages: alert = "<div class=\"alert alert-brand\">"+message+"</div>" alerts = alerts + alert else: text = "Invalid Submission" alerts = "<div class=\"alert alert-brand\"><strong>Please Try Again</strong> - Thank you!</div>" args = {'tc_form':tc_form, 'alerts':mark_safe(alerts), 'title':mark_safe(title), 'text':text, 'query':mark_safe(query), 'source1':mark_safe(source1), 'source2':mark_safe(source2)} return render(request, self.template_name, args)
def post(self, request): fc_form = APIform5(request.POST) if fc_form.is_valid(): form_data = fc_form.cleaned_data # get API query, results and alerts query, messages, text = MOIRA.get_rates(form_data, 'clustering') # get alerts alerts= "" if len(messages) > 0: for message in messages: alert = "<div class=\"alert alert-brand\">"+message+"</div>" alerts = alerts + alert # title = form_data['title_5'] state = form_data['abbreviatedStates_5'] STATES = [('AL','Alabama'),('AK','Alaska'),('AZ','Arizona'),('AR','Arkansas'),('CA','California'),('CO','Colorado'),('CT','Connecticut'),('DE','Delaware'),('DC','District of Columbia'),('FL','Florida'),('GA','Georgia'),('HI','Hawaii'),('ID','Idaho'),('IL','Illinois'),('IN','Indiana'),('IA','Iowa'),('KS','Kansas'),('KY','Kentucky'),('LA','Louisiana'),('ME','Maine'),('MD','Maryland'),('MA','Massachusetts'),('MI','Michigan'),('MN','Minnesota'),('MS','Mississippi'),('MO','Missouri'),('MT','Montana'),('NE','Nebraska'),('NV','Nevada'),('NH','New Hampshire'),('NJ','New Jersey'),('NM','New Mexico'),('NY','New York'),('NC','North Carolina'),('ND','North Dakota'),('OH','Ohio'),('OK','Oklahoma'),('OR','Oregon'),('PA','Pennsylvania'),('RI','Rhode Island'),('SC','South Carolina'),('SD','South Dakota'),('TN','Tennessee'),('TX','Texas'),('UT','Utah'),('VT','Vermont'),('VA','Virginia'),('WA','Washington'),('WV','West Virginia'),('WI','Wisconsin'),('WY','Wyoming')] if len(state) == 1: for i in STATES: if i[0] == state[0]: state = i[1] break state_filter = "else if (states.get(d.id.slice(0, 2)).name != \""+ state +"\") {return \"transparent\"}" #center = MOIRA.get_center(state) projection = 'const projection = d3.geoMercator().scale(750).translate([350, 250])' #projection = 'const projection = d3.geoAlbersUsa().scale(750).translate([350, 250])' #.attr("transform", d => `translate(${path.centroid(d)})`) #state_filter = "else if (states.get(d.id.slice(0, 2)).name != \""+ state +"\") {return \"#ffffff\"}" if '<!DOCTYPE html>' in text: # or '<!DOCTYPE html>' in rs_text: text = 'Please try another time period in your selection.' geoLVL = 'counties' suptable = '' else: df, suptable = MOIRA.get_csv(text, cluster=True) args = {'fc_form':fc_form, 'projection':mark_safe(projection), 'state_filter':mark_safe(state_filter), 'alerts':mark_safe(alerts),'text':text, 'title':mark_safe(title), 'suptable':mark_safe(suptable), 'query':mark_safe(query)} return render(request, self.template_name, args)
def post(self, request): form = APIform(request.POST) if form.is_valid(): form_data = form.cleaned_data query, text, messages, age = MOIRA.get_rates(form_data, 'reg') #re_columns = list(df.columns) alerts = "" if len(messages) > 0: for message in messages: alert = "<div class=\"alert alert-brand\">"+message+"</div>" alerts = alerts + alert if '<!DOCTYPE html>' in text: text = '' alerts = alerts + "<div class=\"alert alert-brand\"><strong>Invalid form submission:</strong> Please try again</div>" else: df, x = MOIRA.get_csv(text) text = "<thead><tr>" for i in list(df.columns): text = text+"<th>"+i+"</th>" text = text+"</tr></thead><tbody>" for i in df.index: text = text+"<tr>" for col in list(df.columns): text = text+"<td>"+str(df[col][i])+"</td>" text = text+"</tr></tbody>" else: #alerts = "<div class=\"alert alert-brand\"><strong>Invalid form</strong></div><br>" text = "Invalid Submission" args = {'form':form, 'age':mark_safe(age),'query':mark_safe(query), 'text':mark_safe(text), 'alerts':mark_safe(alerts)}# 're_columns':re_columns} return render(request, self.template_name, args)
def get(self, request): race_sex_form = APIform2() text = 'Plot mortality rates by race and sex over time' MOIRA.get_csv('{"temp":"temp"}', get=True) args = {'race_sex_form':race_sex_form, 'text':text} return render(request, self.template_name, args)
def post(self, request): geo_form = APIform8(request.POST) if geo_form.is_valid(): form_data = geo_form.cleaned_data query, messages, text = MOIRA.get_rates(form_data, 'secondary') alerts= "" if len(messages) > 0: for message in messages: alert = "<div class=\"alert alert-brand\">"+message+"</div>" alerts = alerts + alert if form_data['plot'] == 'bubbles': bubbles = """const format = d3.format(",.0f") // Draw the bubble map svg.append("path") .datum(topojson.feature(us, us.objects.nation)) .attr("fill", "#ccc") .attr("d", path); svg.append("g") .attr("stroke", "#fff") .attr("stroke-width", 0.5) .selectAll("circle") .data({{ geoLVL }} .map(d => (d.value = bubble_data.get(d.id), d)) .sort((a, b) => b.value - a.value)) .join("circle") .attr("transform", d => `translate(${path.centroid(d)})`) .attr("r", d => radius(d.value)) .attr("fill", function(d){ if (data.get(d.id)){return color(data.get(d.id))} else {return "#d3d3d3"} }) .attr("fill-opacity", 0.5) //.attr("fill", d => color(data.get(d.id))) .append("title") .text(d => `${d.properties.name}, ${states.get(d.id.slice(0, 2)).name} ${format(bubble_data.get(d.id))}`); """ legend = """var blValues = [d3.quantile([...bubble_data.values()],0.25),d3.quantile([...bubble_data.values()],0.5),d3.quantile([...bubble_data.values()],0.75)].sort(d3.ascending), xCircle = 100, yCircle = 500, xLabel = 270; console.log(blValues) svg .selectAll("legend") .data(blValues) .enter() .append("circle") .attr("cx", function(d){ if(d==blValues[0]){return 50+xCircle} else if(d==blValues[1]){ return 100+xCircle } //else if(d==blValues[2]){ return 100+xCircle } //else if(d==blValues[3]){ return 150+xCircle } else{ return 150+xCircle } }) .attr("cy", yCircle) .attr("r", function(d){ return radius(d)}) .style("fill", "none") .attr("stroke","black") /*svg .selectAll("legend") .data(blValues) .enter() .append("line") .attr("x1",function(d){ return xCircle + radius(d)}) .attr("x2", function(d) { return xLabel - 10}) .attr("y1", function(d){ return yCircle - radius(d)*1.05}) .attr("y2", function(d){ return yCircle - radius(d)*1.05}) .attr("stroke","black") .attr("stroke-dasharray",('2,2')) */ svg .append("text") .attr('x', xLabel - xCircle) .attr('y', 450) .style("font-size", 10) .text(bubble_data.title) svg .selectAll("legend") .data(blValues) .enter() .append("text") .attr("x", function(d){ if(d==blValues[0]){return 50+xCircle} else if(d==blValues[1]){ return 100+xCircle } //else if(d==blValues[2]){ return 100+xCircle } //else if(d==blValues[3]){ return 150+xCircle } else{ return 150+xCircle } }) .attr('y', yCircle-30) .text( function(d){ return d } ) .style("font-size", 10) .attr('alignment-baseline', 'middle') svg.append("g") .attr("transform", "translate(400,450)") .append(() => legend({color, title: data.title, width: 200, tickFormat:".2f"})); """ else: bubbles = "" legend = """svg.append("g") .attr("transform", "translate(90,440)") .append(() => legend({color, title: data.title, width: 200, tickFormat:".2f"})); """ if form_data['title'] != 'Enter Map Title Here': title = form_data['title'] else: title = 'Mortality Rates:' + query['timePeriod'] if '<!DOCTYPE html>' in text: # or '<!DOCTYPE html>' in rs_text: text = 'Please try another time period in your selection.' geoLVL = 'counties' suptable = '' else: timeperiod = str(form_data['year1_8']) + ' - ' + str(form_data['year2_8']) if form_data['geoLevel_8']=='State': df, suptable = MOIRA.get_csv(text, state=True, secondary_data=timeperiod) #MOIRA.get_csv(rs_text, state=True, rs=True) geoLVL = 'states_' bubbles = bubbles.replace("{400}","400").replace("bubbleradius","1.5") legend = legend.replace("bubbleradius","1.5") else: df, suptable = MOIRA.get_csv(text, secondary_data=timeperiod) #MOIRA.get_csv(rs_text, rs=True) geoLVL = 'counties' bubbles = bubbles.replace("{400}","50").replace("bubbleradius",".25") legend = legend.replace("bubbleradius",".25") text = "" bubbles = bubbles.replace("{{ geoLVL }}",geoLVL) else: text = "Invalid Submission" download = """ """ args = {'geo_form':geo_form, 'alerts':mark_safe(alerts),'legend':mark_safe(legend),'text':text, 'bubbles':mark_safe(bubbles),'title':mark_safe(title), 'geoLVL':geoLVL, 'suptable':mark_safe(suptable), 'query':mark_safe(query)} return render(request, self.template_name, args)
def get(self, request): county_time_form = APIform6() text = 'Plot mortality rates by county or state over time. Please limit queries to a small number of counties.' MOIRA.get_csv('{"temp":"temp"}', get=True) args = {'county_time_form':county_time_form, 'text':text} return render(request, self.template_name, args)
def get(self, request): ses_form = APIform4() text = 'Plot mortality rates by socioeconomic subgroup over time' MOIRA.get_csv('{"temp":"temp"}', get=True) args = {'ses_form':ses_form, 'text':text} return render(request, self.template_name, args)