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
            }
        )
Example #3
0
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}
Example #4
0
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}
Example #5
0
    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'],
                    ])
Example #6
0
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
Example #8
0
    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
            }
        )
Example #9
0
 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
Example #10
0
    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
            })