Example #1
0
    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