VirtualBox

Changeset 65430 in vbox for trunk/src/VBox/ValidationKit


Ignore:
Timestamp:
Jan 24, 2017 3:58:34 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
113043
Message:

TestManager: Added basic sorting of report tables.

Location:
trunk/src/VBox/ValidationKit/testmanager
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/testmanager/core/report.py

    r65213 r65430  
    531531    if/when it becomes necessary.
    532532    """
    533 
    534533
    535534    kdsStatusSimplificationMap = {
  • trunk/src/VBox/ValidationKit/testmanager/htdocs/js/common.js

    r65227 r65430  
    259259                var offValue = offMatch + 1 + sParam.length + 1;
    260260                offEnd = sArgs.indexOf('&', offValue);
    261                 if (offEnd < 0)
     261                if (offEnd < offValue)
    262262                    offEnd = sArgs.length;
    263263
    264264                var iColumn = parseInt(sArgs.substring(offValue, offEnd));
    265265                if (!isMemberOfArray(aiColumns, iColumn) && !isMemberOfArray(aiColumns, -iColumn))
    266                     sNew += sArgs.substring(off, offEnd);
     266                    sNew += sArgs.substring(offMatch, offEnd);
    267267
    268268                off = offEnd;
  • trunk/src/VBox/ValidationKit/testmanager/webui/wuimain.py

    r65165 r65430  
    12561256            if aidSubjects is None:
    12571257                raise WuiException('Missing parameter %s' % (self.ksParamReportSubjectIds,));
     1258
     1259        aiSortColumnsDup = self.getListOfIntParams(self.ksParamSortColumns,
     1260                                                   iMin = -getattr(oReportType, 'kcMaxSortColumns', cPeriods) + 1,
     1261                                                   iMax = getattr(oReportType, 'kcMaxSortColumns', cPeriods), aiDefaults = []);
     1262        aiSortColumns   = [];
     1263        for iSortColumn in aiSortColumnsDup:
     1264            if iSortColumn not in aiSortColumns:
     1265                aiSortColumns.append(iSortColumn);
     1266
    12581267        oFilter = oFilterType().initFromParams(self);
    12591268        self._checkForUnknownParameters();
     
    12701279
    12711280        oModel   = oModelType(self._oDb, tsEffective, cPeriods, cHoursPerPeriod, sSubject, aidSubjects, oFilter);
    1272         oContent = oReportType(oModel, dParams, fSubReport = False, fnDPrint = self._oSrvGlue.dprint, oDisp = self);
     1281        oContent = oReportType(oModel, dParams, fSubReport = False, aiSortColumns = aiSortColumns,
     1282                               fnDPrint = self._oSrvGlue.dprint, oDisp = self);
    12731283        (self._sPageTitle, self._sPageBody) = oContent.show();
    12741284        sNavi = self._generateReportNavigation(tsEffective, cHoursPerPeriod, cPeriods);
  • trunk/src/VBox/ValidationKit/testmanager/webui/wuireport.py

    r62484 r65430  
    6767    """
    6868
    69     def __init__(self, oModel, dParams, fSubReport = False, fnDPrint = None, oDisp = None):
     69    def __init__(self, oModel, dParams, fSubReport = False, aiSortColumns = None, fnDPrint = None, oDisp = None):
    7070        WuiContentBase.__init__(self, fnDPrint = fnDPrint, oDisp = oDisp);
    7171        self._oModel        = oModel;
     
    7373        self._fSubReport    = fSubReport;
    7474        self._sTitle        = None;
     75        self._aiSortColumns = aiSortColumns;
    7576
    7677        # Additional URL parameters for reports
     
    283284        sHtml += self._formatSeriesNameColumnHeadersForTable();
    284285        for iPeriod, oPeriod in enumerate(reversed(oSet.aoPeriods)):
    285             sHtml += u'<th colspan="%d">%s%s</th>' % ( cColsPerSeries, webutils.escapeElem(oPeriod.sDesc),
    286                                                        '&#x25bc;' if iPeriod == iSortColumn else '');
     286            sHtml += u'<th colspan="%d"><a href="javascript:ahrefActionSortByColumns(\'%s\',[%s]);">%s</a>%s</th>' \
     287                   % ( cColsPerSeries, self._oDisp.ksParamSortColumns, iPeriod, webutils.escapeElem(oPeriod.sDesc),
     288                       '&#x25bc;' if iPeriod == iSortColumn else '');
    287289        if fWithTotals:
    288             sHtml += u'<th colspan="%d">Total%s</th>' % (cColsPerSeries,
    289                                                          '&#x25bc;' if iSortColumn == len(oSet.aoPeriods) else '');
     290            sHtml += u'<th colspan="%d"><a href="javascript:ahrefActionSortByColumns(\'%s\',[%s]);">Total</a>%s</th>' \
     291                   % ( cColsPerSeries, self._oDisp.ksParamSortColumns, iPeriod,
     292                       '&#x25bc;' if iSortColumn == len(oSet.aoPeriods) else '');
    290293        sHtml += u'</thead></td>\n';
    291294
     
    320323        return str(oSubject);
    321324
    322     def _getSortedIds(self, oSet, fByTotal = None):
     325    def _getSortedIds(self, oSet):
    323326        """
    324327        Get default sorted subject IDs and which column.
    325328        """
    326329
    327         if fByTotal is None:
    328             fByTotal = oSet.cMaxTotal < 10;
    329 
    330         if fByTotal is True:
     330        # Figure the sorting column.
     331        if self._aiSortColumns is not None \
     332          and len(self._aiSortColumns) > 0 \
     333          and abs(self._aiSortColumns[0]) <= len(oSet.aoPeriods):
     334            iSortColumn = abs(self._aiSortColumns[0]);
     335            fByTotal = iSortColumn >= len(oSet.aoPeriods);
     336        elif oSet.cMaxTotal < 10:
     337            iSortColumn = len(oSet.aoPeriods);
     338        else:
     339            iSortColumn = 0;
     340
     341        if iSortColumn >= len(oSet.aoPeriods):
    331342            # Sort the total.
    332343            aidSortedRaw = sorted(oSet.dSubjects,
    333344                                  key = lambda idKey: oSet.dcHitsPerId[idKey] * 10000 / oSet.dcTotalPerId[idKey],
    334345                                  reverse = True);
    335             iColumn = len(oSet.aoPeriods);
    336346        else:
    337347            # Sort by NOW column.
    338348            dTmp = {};
    339349            for idKey in oSet.dSubjects:
    340                 oRow = oSet.aoPeriods[-1].dRowsById.get(idKey, None);
     350                oRow = oSet.aoPeriods[-1 - iSortColumn].dRowsById.get(idKey, None);
    341351                if oRow is None:    dTmp[idKey] = 0;
    342352                else:               dTmp[idKey] = oRow.cHits * 10000 / max(1, oRow.cTotal);
    343353            aidSortedRaw = sorted(dTmp, key = lambda idKey: dTmp[idKey], reverse = True);
    344             iColumn = 0;
    345         return (aidSortedRaw, iColumn);
     354        return (aidSortedRaw, iSortColumn);
    346355
    347356    def _generateGraph(self, oSet, sIdBase, aidSortedRaw):
     
    629638
    630639        aoReports.append(WuiReportSuccessRate(     self._oModel, self._dParams, fSubReport = True,
     640                                                   aiSortColumns = self._aiSortColumns,
    631641                                                   fnDPrint = self._fnDPrint, oDisp = self._oDisp));
    632642        aoReports.append(WuiReportTestCaseFailures(self._oModel, self._dParams, fSubReport = True,
     643                                                   aiSortColumns = self._aiSortColumns,
    633644                                                   fnDPrint = self._fnDPrint, oDisp = self._oDisp));
    634645        if self._oModel.sSubject == ReportModelBase.ksSubTestCase:
    635646            aoReports.append(WuiReportTestCaseArgsFailures(self._oModel, self._dParams, fSubReport = True,
     647                                                           aiSortColumns = self._aiSortColumns,
    636648                                                           fnDPrint = self._fnDPrint, oDisp = self._oDisp));
    637649        aoReports.append(WuiReportTestBoxFailures( self._oModel, self._dParams, fSubReport = True,
     650                                                   aiSortColumns = self._aiSortColumns,
    638651                                                   fnDPrint = self._fnDPrint, oDisp = self._oDisp));
    639652        aoReports.append(WuiReportFailureReasons(  self._oModel, self._dParams, fSubReport = True,
     653                                                   aiSortColumns = self._aiSortColumns,
    640654                                                   fnDPrint = self._fnDPrint, oDisp = self._oDisp));
    641655
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette