def _getBurndownImgStr(self, milestone, date): """ get burndown image string """ db = self.env.get_db_cnx() cursor = db.cursor() # prepare chart data # init chart data chartData = {"due":{}, "done":{}, } # get history data from db # get min milestone date startdate = MMV_List.getStartdate(self.env, milestone) # get max milestone date enddate = MMV_List.getEnddate(self.env, milestone) if not startdate: # no ticket in this milestone # skip return "" dateMin = int(startdate) / SECPERDAY + 1 dateMax = int(enddate) / SECPERDAY + 1 if dateMax > date: dateMax = date max_history_date = MMV_List.getMaxHistoryDate(self.env, milestone) # add history for add_date in range(dateMin, dateMax + 1): if add_date < max_history_date - 2: # don't update stable history continue MMV_List(self.env).addHistory(self.env, add_date, milestone) # get due dueData = MMV_List.getDue(self.env, dateMin, dateMax, milestone) for date, dueDays in dueData: dateString = formatDateCompact(date * SECPERDAY) chartData["due"][dateString] = dueDays # get done doneData = MMV_List.getDue(self.env, dateMin, dateMax, milestone) for date, doneDays in doneData: dateString = formatDateCompact(date * SECPERDAY) chartData["done"][dateString] = doneDays # genearte chart subMilestone = stripMilestoneName(milestone) returnStr = self._genLineChart(chartData, subMilestone, subMilestone) return returnStr