VirtualBox

Ignore:
Timestamp:
May 30, 2020 10:34:30 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
138355
Message:

TestManager: More complete vcs revision hack.

Location:
trunk/src/VBox/ValidationKit/testmanager/htdocs/js
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/testmanager/htdocs/js/common.js

    r84619 r84620  
    3131/** Same as WuiDispatcherBase.ksParamRedirectTo. */
    3232var g_ksParamRedirectTo = 'RedirectTo';
     33
     34/** Days of the week in Date() style with Sunday first. */
     35var g_kasDaysOfTheWeek = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
    3336
    3437
     
    12371240    if (oResp)
    12381241    {
    1239         var asDaysOfTheWeek = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
    12401242        sHtml = '<div class="tmvcstimeline tmvcstimelinetooltip">\n';
    12411243
     
    12541256                    sHtml += ' </dl>\n';
    12551257                iCurDay = iCommitDay;
    1256                 sHtml += ' <h2>' + tsCreated.toISOString().split('T')[0] + ' ' + asDaysOfTheWeek[tsCreated.getDay()] + '</h2>\n';
     1258                sHtml += ' <h2>' + tsCreated.toISOString().split('T')[0] + ' ' + g_kasDaysOfTheWeek[tsCreated.getDay()] + '</h2>\n';
    12571259                sHtml += ' <dl>\n';
    12581260            }
  • trunk/src/VBox/ValidationKit/testmanager/htdocs/js/vcsrevisions.js

    r84619 r84620  
    2525 */
    2626
    27 /** Called when we've got the revision data.   */
     27
     28/**
     29 * @internal.
     30 */
     31function vcsRevisionFormatDate(tsDate)
     32{
     33    /*return tsDate.toLocaleDateString();*/
     34    return tsDate.toISOString().split('T')[0];
     35}
     36
     37/**
     38 * @internal.
     39 */
     40function vcsRevisionFormatTime(tsDate)
     41{
     42    var sRet = tsDate.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit'} );
     43    return sRet.replace(' ', '\u00a0');
     44}
     45
     46/**
     47 * Called 'onclick' for the link/button used to show the detailed VCS
     48 * revisions.
     49 * @internal.
     50 */
     51function vcsRevisionShowDetails(oElmSource)
     52{
     53    document.getElementById('vcsrevisions-detailed').style.display = 'block';
     54    document.getElementById('vcsrevisions-brief').style.display = 'none';
     55    oElmSource.style.display = 'none';
     56    return false;
     57}
     58
     59/**
     60 * Called when we've got the revision data.
     61 * @internal
     62 */
    2863function vcsRevisionsRender(sTestMgr, oElmDst, sBugTracker, oRestReq, sUrl)
    2964{
     
    76111        else
    77112        {
    78             sHtml = '<p>';
    79 
    80113            var aoCommits = oResp.aoCommits;
    81114            var cCommits  = oResp.aoCommits.length;
    82115            var i;
     116
     117            sHtml = '';
     118            /*sHtml = '<a href="#" onclick="return vcsRevisionShowDetails(this);" class="vcsrevisions-show-details">Show full VCS details...</a>\n';*/
     119            /*sHtml = '<button onclick="vcsRevisionShowDetails(this);" class="vcsrevisions-show-details">Show full VCS details...</button>\n';*/
     120
     121            /* Brief view (the default): */
     122            sHtml += '<p id="vcsrevisions-brief">';
    83123            for (i = 0; i < cCommits; i++)
    84124            {
     
    88128                sHtml += ' <a href="' + escapeElem(sUrl) + '" title="' + escapeElem(sTitle) + '">r' + oCommit.iRevision + '</a> \n';
    89129            }
    90 
    91130            sHtml += '</p>';
    92 
     131            sHtml += '<a href="#" onclick="return vcsRevisionShowDetails(this);" class="vcsrevisions-show-details-bottom">Show full VCS details...</a>\n';
     132
     133            /* Details view: */
     134            sHtml += '<div id="vcsrevisions-detailed" style="display:none;">\n';
     135            var iCurDay = null;
     136            if (0)
     137            {
     138                /* Changelog variant: */
     139                for (i = 0; i < cCommits; i++)
     140                {
     141                    var oCommit    = aoCommits[i];
     142                    var tsCreated  = parseIsoTimestamp(oCommit.tsCreated);
     143                    var sUrl       = oResp.sTracChangesetUrlFmt.replace('%(sRepository)s', oCommit.sRepository).replace('%(iRevision)s', oCommit.iRevision.toString());
     144                    var iCommitDay = Math.floor((tsCreated.getTime() + tsCreated.getTimezoneOffset()) / (24 * 60 * 60 * 1000));
     145                    if (iCurDay === null || iCurDay != iCommitDay)
     146                    {
     147                        if (iCurDay !== null)
     148                            sHtml += ' </dl>\n';
     149                        iCurDay = iCommitDay;
     150                        sHtml += ' <h3>' + vcsRevisionFormatDate(tsCreated) + ' ' + g_kasDaysOfTheWeek[tsCreated.getDay()] + '</h3>\n';
     151                        sHtml += ' <dl>\n';
     152                    }
     153
     154                    sHtml += '  <dt id="r' + oCommit.iRevision + '">';
     155                    sHtml += '<a href="' + oResp.sTracChangesetUrlFmt.replace('%(iRevision)s', oCommit.iRevision.toString()) + '">';
     156                    /*sHtml += '<span class="vcsrevisions-time">' + escapeElem(vcsRevisionFormatTime(tsCreated)) + '</span>'
     157                    sHtml += ' Changeset <span class="vcsrevisions-rev">r' + oCommit.iRevision + '</span>';
     158                    sHtml += ' by <span class="vcsrevisions-author">' + escapeElem(oCommit.sAuthor) + '</span>'; */
     159                    sHtml += '<span class="vcsrevisions-time">' + escapeElem(vcsRevisionFormatTime(tsCreated)) + '</span>';
     160                    sHtml += ' - <span class="vcsrevisions-rev">r' + oCommit.iRevision + '</span>';
     161                    sHtml += ' - <span class="vcsrevisions-author">' + escapeElem(oCommit.sAuthor) + '</span>';
     162                    sHtml += '</a></dt>\n';
     163                    sHtml += '  <dd>' + escapeElem(oCommit.sMessage) + '</dd>\n';
     164                }
     165
     166                if (iCurDay !== null)
     167                    sHtml += ' </dl>\n';
     168            }
     169            else
     170            {   /* TABLE variant: */
     171                sHtml += '<table class="vcsrevisions-table">';
     172                var iAlt = 0;
     173                for (i = 0; i < cCommits; i++)
     174                {
     175                    var oCommit    = aoCommits[i];
     176                    var tsCreated  = parseIsoTimestamp(oCommit.tsCreated);
     177                    var sUrl       = oResp.sTracChangesetUrlFmt.replace('%(sRepository)s', oCommit.sRepository).replace('%(iRevision)s', oCommit.iRevision.toString());
     178                    var iCommitDay = Math.floor((tsCreated.getTime() + tsCreated.getTimezoneOffset()) / (24 * 60 * 60 * 1000));
     179                    if (iCurDay === null || iCurDay != iCommitDay)
     180                    {
     181                        iCurDay = iCommitDay;
     182                        sHtml += '<tr id="r' + oCommit.iRevision + '"><td colspan="4" class="vcsrevisions-tab-date">';
     183                        sHtml += vcsRevisionFormatDate(tsCreated) + ' ' + g_kasDaysOfTheWeek[tsCreated.getDay()];
     184                        sHtml += '</td></tr>\n';
     185                        sHtml += '<tr>';
     186                        iAlt = 0;
     187                    }
     188                    else
     189                        sHtml += '<tr id="r' + oCommit.iRevision + '">';
     190                    var sAltCls = '';
     191                    var sAltClsStmt = '';
     192                    iAlt += 1;
     193                    if (iAlt & 1)
     194                    {
     195                        sAltCls     = ' alt';
     196                        sAltClsStmt = ' class="alt"';
     197                    }
     198                    sHtml += '<td class="vcsrevisions-tab-time'+sAltCls+'"><a href="' + sUrl + '">'
     199                           + escapeElem(vcsRevisionFormatTime(tsCreated)) + '</a></td>';
     200                    sHtml += '<td'+sAltClsStmt+'><a href="' + sUrl + '" class="vcsrevisions-rev' + sAltCls + '">r'
     201                           + oCommit.iRevision + '</a></td>';
     202                    sHtml += '<td'+sAltClsStmt+'><a href="' + sUrl + '" class="vcsrevisions-author' + sAltCls + '">'
     203                           + escapeElem(oCommit.sAuthor) + '<a></td>';
     204                    sHtml += '<td'+sAltClsStmt+'>' + escapeElem(oCommit.sMessage) + '</td></tr>\n';
     205                }
     206                sHtml += '</table>\n';
     207            }
     208            sHtml += '</div>\n';
    93209        }
    94210    }
     
    107223    oRestReq.open('GET', sUrl);
    108224    oRestReq.withCredentials = true;
    109     //oRestReq.setRequestHeader('Content-type', 'application/json');
     225    /*oRestReq.setRequestHeader('Content-type', 'application/json'); - Causes CORS trouble. */
    110226    oRestReq.send();
    111227}
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