Ejemplo n.º 1
0
    def mapfields(self):
        "Returns the mapwidgets to be shown on in the directory and item view."

        if not self.show_map:
            return tuple()

        mapwidget = MapWidget(self, self.request, self.context)

        if self.is_itemview:
            if self.has_mapdata(self.context):
                layer = DirectoryMapLayer(context=self.context)
                layer.zoom = True
                layer.letter = None
                mapwidget._layers = [layer]
        else:

            # in a directory view we can expect a batch
            # (only items in the shown batch are painted on the map as
            # performance is going to be a problem otherwise)
            if not hasattr(self, 'batch'):
                log.error('%s view has no batch attribute' % type(self))

            index = 0
            maxindex = len(letters) - 1

            self.lettermap.clear()
            mapwidget._layers = list()

            for item in self.batch:

                if hasattr(item, 'getObject'):
                    item = item.getObject()

                if item.id not in self.lettermap and self.has_mapdata(item):

                    layer = DirectoryMapLayer(context=item)
                    layer.zoom = True
                    layer.fit = True

                    if index <= maxindex:
                        layer.letter = self.lettermap[item.id] = letters[index]
                        index += 1

                    mapwidget._layers.append(layer)

        return (mapwidget, )
Ejemplo n.º 2
0
    def mapfields(self):
        "Returns the mapwidgets to be shown on in the directory and item view."

        if not self.show_map:
            return tuple()

        mapwidget = MapWidget(self, self.request, self.context)

        if self.is_itemview:
            if self.has_mapdata(self.context):
                layer = DirectoryMapLayer(context=self.context)
                layer.zoom = True
                layer.letter = None
                mapwidget._layers = [layer]
        else:

            # in a directory view we can expect a batch
            # (only items in the shown batch are painted on the map as
            # performance is going to be a problem otherwise)
            if not hasattr(self, 'batch'):
                log.error('%s view has no batch attribute' % type(self))

            index = 0
            maxindex = len(letters) - 1

            self.lettermap.clear()
            mapwidget._layers = list()

            for item in self.batch:

                if hasattr(item, 'getObject'):
                    item = item.getObject()

                if item.id not in self.lettermap and self.has_mapdata(item):

                    layer = DirectoryMapLayer(context=item)

                    if index <= maxindex:
                        layer.letter = self.lettermap[item.id] = letters[index]
                        index += 1

                    mapwidget._layers.append(layer)

        return (mapwidget, )
Ejemplo n.º 3
0
    def mapfields(self):
        assert self.show_map, """
            This should not be called if there are no sources.
        """

        widget = MapWidget(self, self.request, self.context)
        widget._layers = tuple(
            SourceLayer.from_source(s) for s in self.get_sources()
        )

        return (widget, )
Ejemplo n.º 4
0
    def mapfields(self):
        """ Returns the mapwidgets to be shown on in the directory and item view."""

        if not self.show_map:
            return tuple()

        mapwidget = MapWidget(self, self.request, self.context)

        if self.is_itemview:
            if self.context.has_mapdata():
                layer = DirectoryMapLayer(context=self.context)
                layer.zoom = True
                layer.letter = None
                mapwidget._layers = [layer]
        else:

            # in a directory view we can expect a batch
            # (only items in the shown batch are painted on the map as performance
            # is going to be a problem otherwise)
            assert hasattr(self, 'batch')

            index = 0
            maxindex = len(letters) - 1

            self.lettermap.clear()
            mapwidget._layers = list()

            for item in sorted(self.batch, key=lambda i: i.title):

                if not item.id in self.lettermap and item.has_mapdata():

                    layer = DirectoryMapLayer(context=item)

                    if index <= maxindex:
                        layer.letter = self.lettermap[item.id] = letters[index]
                        index += 1

                    mapwidget._layers.append(layer)

        return (mapwidget, )