Beispiel #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)

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

                    mapwidget._layers.append(layer)

        return (mapwidget, )
Beispiel #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.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, )
Beispiel #3
0
 def cgmap(self):
     cgmap = MapWidget(self, self.request, self.context)
     cgmap.mapid = 'country-cgmap'
     return cgmap