Example #1
0
    def get_legends(self):
        if len(self.layers) > 1:
            items = []
            total = 0
            repr_attrs = dict(class_='pull-right stay-open', style="padding-right: 10px;")

            for layer in self.layers:
                representation = ''
                if hasattr(layer, 'representation'):
                    total += layer.representation
                    representation = HTML.span(str(layer.representation), **repr_attrs)
                items.append([
                    HTML.label(
                        HTML.input(
                            class_="stay-open",
                            type="checkbox",
                            checked="checked",
                            onclick=helpers.JS_CLLD.mapToggleLayer(
                                self.eid, layer.id, helpers.JS("this"))),
                        getattr(layer, 'marker', ''),
                        layer.name,
                        class_="checkbox inline stay-open",
                        style="margin-left: 5px; margin-right: 5px;",
                    ),
                    representation,
                ])
            if total:
                items.append(HTML.span(HTML.b(str(total)), **repr_attrs))
            yield Legend(
                self,
                'layers',
                items,
                label='Legend',
                stay_open=True,
                item_attrs=dict(style='clear: right'))
        items = []
        for size in [15, 20, 30, 40]:
            attrs = dict(name="iconsize", value=str(size), type="radio")
            if size == self.options.get('icon_size', 30):
                attrs['checked'] = 'checked'
            items.append(HTML.label(
                HTML.input(onclick=helpers.JS_CLLD.mapResizeIcons(self.eid), **attrs),
                HTML.img(
                    height=str(size),
                    width=str(size),
                    src=self.req.registry.getUtility(IIcon, 'cff6600').url(self.req)),
                class_="radio",
                style="margin-left: 5px; margin-right: 5px;"))
        yield Legend(
            self,
            'iconsize',
            items,
            label='Icon size')

        item = lambda layer: HTML.a(
            layer.name,
            onclick='return %s;' % helpers.JS_CLLD.mapShowGeojson(self.eid, layer.id),
            href=layer.data if isinstance(layer.data, string_types) else '#')
        yield Legend(
            self, 'geojson', map(item, self.layers), label='GeoJSON', pull_right=True)
Example #2
0
 def li(self, col, item, value_getter, checked=False):
     input_attrs = dict(
         type='radio',
         class_='stay-open %s inline' % self.jsname,
         name=self.jsname,
         value=item[0] if isinstance(item, (tuple, list)) else item,
         onclick=helpers.JS("CLLD.mapLegendFilter")(
             self.map.eid, self.name, self.jsname, helpers.JS(value_getter),
             col.dt.eid if col else None))
     if checked:
         input_attrs['checked'] = 'checked'
     return HTML.label(
         HTML.input(**input_attrs),
         ' ',
         self.li_label(item),
         class_="stay-open",
         style="margin-left:5px; margin-right:5px;",
     )