def displayTableContents(self, req): list = '<table class="%s" cellspacing="0" border="0" cellpadding="0">' % (self.klass) list += '<thead><tr>' columns = self.getColumns(req) sortCol = self.getSortColumn(req,columns) if sortCol: sortOrder = self.getSortOrder(req, sortCol) else: sortOrder = None for column in columns: th = '<th' if column.width: th += ' width="%s"' % (column.width) if sortCol and column.id == sortCol.id: th += ' class="selected"' if column.style: th += ' style="%s"' % (column.style) th += '>' if sortCol and column.id == sortCol.id: if sortOrder == "asc": dir = "desc" klass = "asc" msg = "(%s)" % req.bundle["pywebmvc.common.ascending"] else: dir = "asc" klass = "desc" msg = "(%s)" % req.bundle["pywebmvc.common.descending"] params = self.getPageParams(req, exclude=[self.getSortOrderParam(), self.getOrderByParam()]) params += [(self.getSortOrderParam(), dir), (self.getOrderByParam(), column.id)] paramStr = htmlutil.getParameterString(params) th += '<div class="sorted">%s</div>' % (req.bundle[column.label]) th += '<a href="?%s" class="%s"><span>%s</span> </a>' % (paramStr, klass, msg) else: params = self.getPageParams(req, exclude=[self.getSortOrderParam(), self.getOrderByParam()]) params += [(self.getOrderByParam(), column.id)] paramStr = htmlutil.getParameterString(params) if column.sortable: th += '<a href="?%s" class="sortable">%s</a>' % ( paramStr, req.bundle[column.label]) else: th += req.bundle[column.label] th += '</th>' list += th list += '</tr></thead>' list += '<tbody>' index = 0 items = self.getItems(req,sortCol,sortOrder,self.getStartIndex(req),self.getEndIndex(req)) if items: for item in items: list += self._generateCellRow(req, index, item, columns) index += 1 else: list += '<tr><td colspan="%i">%s</td></tr>' % ( len(columns), req.bundle.getMessage("pywebmvc.tools.table.message.emptyList", self.getTypeString(req))) list += self.bottomOfTableHook(req) list += '</tbody></table>' return list
def getPager(self,req): size = self.__getListSize(req) pageSize = self.__getCurrentPageSize(req) curPage = self.getCurrentPage(req) numPages = int(math.ceil(float(size)/pageSize)) html = "" paramString = "" parameters = self.getPageParams(req,exclude=[self.getPageParamName()]) if parameters: paramString = "&"+htmlutil.getParameterString(parameters) if size > pageSize: html += '<div class="pager">' if curPage > 1: html += '<a href="?%s=0%s"><<</a> ' % (self.getPageParamName(), paramString) if curPage > 0: html += '<a href="?%s=%i%s"><</a> ' % (self.getPageParamName(), curPage - 1, paramString) startPage = max(0,curPage -5) stopPage = min(max(curPage + 5, 10), numPages) if startPage > 0: html += "... " for i in range(startPage,stopPage): if i == curPage: html += '<span class="curPage">%i</span> ' % (i+1) else: html += '<a href="?%s=%i%s">%i</a> ' % (self.getPageParamName(), i,paramString,i+1) if stopPage < numPages - 1: html += "... " if curPage < numPages - 1: html += '<a href="?%s=%i%s">></a> ' % (self.getPageParamName(), curPage + 1, paramString) if curPage < numPages - 2: html += '<a href="?%s=%i%s">>></a> ' % (self.getPageParamName(), numPages - 1, paramString) html += '</div>' return html