def layer(self, layer_ids=None, request=None): """Return a layer with all stickies or stickies with selected tags """ start_end = current_start_end_dates(request) layers = [] styles = {} layer = mapnik.Layer("Stickies", WGS84) layer.datasource = mapnik.MemoryDatasource() stickies = self.stickies.exclude(time__gte=start_end[1] ).filter(time__gte=start_end[0]) for _id, sticky in enumerate(stickies): add_datasource_point(layer.datasource, sticky.geom.x, sticky.geom.y, 'Name', 'hssd', _id) # generate "unique" point style name and append to layer style_name = "StickyTweets" styles[style_name] = self.style() layer.styles.append(style_name) layers = [layer, ] return layers, styles
def html(self, identifiers=None, layout_options=None): """ Popup with graph - table - bargraph. We're using the template of RainApp's popup, so this function was written to result in exactly the same context variables as RainApp's adapter results in. """ add_snippet = layout_options.get('add_snippet', False) # Make table with given identifiers. # Layer options contain request - not the best way but it works. start_date, end_date = current_start_end_dates( layout_options['request']) # Convert start and end dates to utc. start_date_utc = dates.to_utc(start_date) end_date_utc = dates.to_utc(end_date) info = [] symbol_url = self.symbol_url() for identifier in identifiers: logger.debug("IN HTML, identifier = {0}".format(identifier)) image_graph_url = self.workspace_mixin_item.url( "lizard_map_adapter_image", (identifier,)) flot_graph_data_url = self.workspace_mixin_item.url( "lizard_map_adapter_flot_graph_data", (identifier,)) values = self.values(identifier, start_date_utc, end_date_utc) infoname = self._grid_name( identifier['region_name'], identifier['identifier']) info.append({ 'identifier': identifier, 'identifier_json': json.dumps(identifier).replace('"', '%22'), 'shortname': infoname, 'name': infoname, 'location': infoname, 'image_graph_url': image_graph_url, 'flot_graph_data_url': flot_graph_data_url, 'url': self.workspace_mixin_item.url( "lizard_map_adapter_values", [identifier, ], extra_kwargs={'output_type': 'csv'}), 'workspace_item': self.workspace_mixin_item, 'adapter': self }) return render_to_string( 'lizard_rainapp/popup_rainapp.html', { 'title': infoname, 'symbol_url': symbol_url, 'add_snippet': add_snippet, 'workspace_item': self.workspace_item, 'info': info } )
def collage_item_statistics(request, collage_items): if not collage_items: return {} start_date, end_date = current_start_end_dates(request) statistics = [] for collage_item in collage_items: statistics.extend(collage_item.statistics(start_date, end_date)) return { 'statistics': statistics, 'collage_items': collage_items}
def snippet_group_table(request, snippet_group): """ Renders table for snippet_group. """ start_date, end_date = current_start_end_dates(request) values_table = snippet_group.values_table(start_date, end_date) if len(values_table) > 1: table = values_table[1:] else: table = [] head = [value.replace('_', ' ') for value in values_table[0]] return {'table': table, 'head': head}
def write_collage_rows(self, writer): """ Common function used by csv_response and xls_response """ collage = self.collage() date_range = current_start_end_dates( self.request, for_form=True) writer.writerow(['naam', collage.name]) writer.writerow(['periode', date_range['dt_start'], date_range['dt_end']]) writer.writerow(['zomer of winter', LayerCollage.SUMMER_WINTER_DICT[collage.summer_or_winter]]) writer.writerow(['dag of nacht', LayerCollage.DAY_NIGHT_DICT[collage.summer_or_winter]]) writer.writerow(['maand', collage.display_month()]) writer.writerow(['dag van de week', collage.display_day()]) writer.writerow([ 'locatie', 'aantal waardes', 'min', 'datum min', 'max', 'datum max', 'gem', 'som', 'grenswaarde', 'aantal <= grenswaarde', 'aantal > grenswaarde', 'percentiel mediaan', 'percentiel 90', 'percentiel gebruiker', 'percentiel instelling']) for stats in self.collage_stats(): writer.writerow([ stats['name'], stats['item_count'], stats['standard']['min'][1][0], stats['standard']['min'][0], stats['standard']['max'][1][0], stats['standard']['max'][0], stats['standard']['avg'], stats['standard']['sum'], stats['boundary']['value'], stats['boundary']['amount_less_equal'], stats['boundary']['amount_greater'], stats['percentile']['median'], stats['percentile']['90'], stats['percentile']['user'], stats['percentile']['value'], ])
def workspace_item_bar_image(request, workspace_item_id): """Shows image corresponding to workspace item and location identifier(s) identifier_list """ # identifier_json_list = request.GET.getlist('identifier') # identifier_list = [json.loads(identifier_json) for identifier_json in # identifier_json_list] identifier_list = [{'afdeling': request.GET.get('afdeling'), }] width = request.GET.get('width') height = request.GET.get('height') if width: width = int(width) else: # We want None, not u''. width = None if height: height = int(height) else: # We want None, not u''. height = None workspace_item = get_object_or_404(WorkspaceEditItem, pk=workspace_item_id) start_date, end_date = current_start_end_dates(request) # add animation slider position layout_extra = slider_layout_extra(request) return workspace_item.adapter.bar_image( identifier_list, start_date, end_date, width, height, layout_extra=layout_extra, )
def layer(self, layer_ids=None, request=None): """Return a layer with all stickies or stickies with selected tags """ start_end = current_start_end_dates(request) layers = [] styles = {} layer = mapnik.Layer("Stickies", WGS84) layer.datasource = mapnik.MemoryDatasource() stickies = self.stickies.exclude(time__gte=start_end[1]).filter( time__gte=start_end[0]) for _id, sticky in enumerate(stickies): add_datasource_point(layer.datasource, sticky.geom.x, sticky.geom.y, 'Name', 'hssd', _id) # generate "unique" point style name and append to layer style_name = "StickyTweets" styles[style_name] = self.style() layer.styles.append(style_name) layers = [ layer, ] return layers, styles
def html(self, identifiers=None, layout_options=None): """ Popup with graph - table - bargraph. """ add_snippet = layout_options.get('add_snippet', False) parameter_name = self.jdbc_source.get_parameter_name(self.parameterkey) # Make table with given identifiers. # Layer options contain request - not the best way but it works. start_date, end_date = current_start_end_dates( layout_options['request']) # Convert start and end dates to utc. start_date_utc, end_date_utc = self._to_utc(start_date, end_date) td_windows = [datetime.timedelta(days=2), datetime.timedelta(days=1), datetime.timedelta(hours=3), datetime.timedelta(hours=1)] info = [] symbol_url = self.symbol_url() for identifier in identifiers: image_graph_url = self.workspace_mixin_item.url("lizard_map_adapter_image", (identifier,)) flot_graph_data_url = self.workspace_mixin_item.url("lizard_map_adapter_flot_graph_data", (identifier,)) values = self._cached_values(identifier, start_date_utc, end_date_utc) area_m2 = GeoObject.objects.get( municipality_id=identifier['location'], config=self.rainapp_config).geometry.area area_km2 = meter_square_to_km_square(area_m2) period_summary_row = { 'max': sum([v['value'] for v in values]), 'start': start_date, 'end': end_date, 'delta': (end_date - start_date).days, 't': self._t_to_string(None), } infoname = '%s, %s' % (self._get_location_name(identifier), parameter_name) info.append({ 'identifier': identifier, 'identifier_json': json.dumps(identifier).replace('"', '%22'), 'shortname': infoname, 'name': infoname, 'location': self._get_location_name(identifier), 'period_summary_row': period_summary_row, 'table': [self.rain_stats(values, area_km2, td_window, start_date_utc, end_date_utc) for td_window in td_windows], 'image_graph_url': image_graph_url, 'flot_graph_data_url': flot_graph_data_url, 'url': self.workspace_mixin_item.url( "lizard_map_adapter_values", [identifier, ], extra_kwargs={'output_type': 'csv'}), 'workspace_item': self.workspace_mixin_item, 'adapter': self }) return render_to_string( 'lizard_rainapp/popup_rainapp.html', { 'title': parameter_name, 'symbol_url': symbol_url, 'add_snippet': add_snippet, 'workspace_item': self.workspace_item, 'info': info } )
def date_range_url_params(self): date_range = current_start_end_dates( self.request, for_form=True) return '&dt_start=%(dt_start)s&dt_end=%(dt_end)s' % date_range
def html(self, identifiers=None, layout_options=None): """ Popup with graph - table - bargraph. We're using the template of RainApp's popup, so this function was written to result in exactly the same context variables as RainApp's adapter results in. """ add_snippet = layout_options.get('add_snippet', False) # Make table with given identifiers. # Layer options contain request - not the best way but it works. start_date, end_date = current_start_end_dates( layout_options['request']) # Convert start and end dates to utc. start_date_utc = dates.to_utc(start_date) end_date_utc = dates.to_utc(end_date) td_windows = [datetime.timedelta(days=2), datetime.timedelta(days=1), datetime.timedelta(hours=3), datetime.timedelta(hours=1)] info = [] symbol_url = self.symbol_url() for identifier in identifiers: logger.debug("IN HTML, identifier = {0}".format(identifier)) image_graph_url = self.workspace_mixin_item.url( "lizard_map_adapter_image", (identifier,)) flot_graph_data_url = self.workspace_mixin_item.url( "lizard_map_adapter_flot_graph_data", (identifier,)) values = self.values(identifier, start_date_utc, end_date_utc) area_km2 = 1.0 # A defining feature of the Neerslagradar # is that we always work in a 1km x 1km # grid. period_summary_row = { 'max': sum(v['value'] for v in values), 'start': start_date, 'end': end_date, 'delta': (end_date - start_date).days, 't': t_to_string(None), } infoname = self._grid_name( identifier['region_name'], identifier['identifier']) info.append({ 'identifier': identifier, 'identifier_json': json.dumps(identifier).replace('"', '%22'), 'shortname': infoname, 'name': infoname, 'location': infoname, 'period_summary_row': period_summary_row, 'table': [rain_stats(values, area_km2, td_window, start_date_utc, end_date_utc) for td_window in td_windows], 'image_graph_url': image_graph_url, 'flot_graph_data_url': flot_graph_data_url, 'url': self.workspace_mixin_item.url( "lizard_map_adapter_values", [identifier, ], extra_kwargs={'output_type': 'csv'}), 'workspace_item': self.workspace_mixin_item, 'adapter': self }) return render_to_string( 'lizard_rainapp/popup_rainapp.html', { 'title': infoname, 'symbol_url': symbol_url, 'add_snippet': add_snippet, 'workspace_item': self.workspace_item, 'info': info } )
def html(self, identifiers=None, layout_options=None): """ Popup with graph - table - bargraph. We're using the template of RainApp's popup, so this function was written to result in exactly the same context variables as RainApp's adapter results in. """ add_snippet = layout_options.get('add_snippet', False) # Make table with given identifiers. # Layer options contain request - not the best way but it works. start_date, end_date = current_start_end_dates( layout_options['request']) # Convert start and end dates to utc. start_date_utc = dates.to_utc(start_date) end_date_utc = dates.to_utc(end_date) info = [] symbol_url = self.symbol_url() for identifier in identifiers: logger.debug("IN HTML, identifier = {0}".format(identifier)) image_graph_url = self.workspace_mixin_item.url( "lizard_map_adapter_image", (identifier, )) flot_graph_data_url = self.workspace_mixin_item.url( "lizard_map_adapter_flot_graph_data", (identifier, )) values = self.values(identifier, start_date_utc, end_date_utc) infoname = self._grid_name(identifier['region_name'], identifier['identifier']) info.append({ 'identifier': identifier, 'identifier_json': json.dumps(identifier).replace('"', '%22'), 'shortname': infoname, 'name': infoname, 'location': infoname, 'image_graph_url': image_graph_url, 'flot_graph_data_url': flot_graph_data_url, 'url': self.workspace_mixin_item.url( "lizard_map_adapter_values", [ identifier, ], extra_kwargs={'output_type': 'csv'}), 'workspace_item': self.workspace_mixin_item, 'adapter': self }) return render_to_string( 'lizard_rainapp/popup_rainapp.html', { 'title': infoname, 'symbol_url': symbol_url, 'add_snippet': add_snippet, 'workspace_item': self.workspace_item, 'info': info })