Add Tabular Diff for CSV files (#14661)
Implements request #14320 The rendering of CSV files does match the diff style. * Moved CSV logic into base package. * Added method to create a tabular diff. * Added CSV compare context. * Added CSV diff template. * Use new table style in CSV markup. * Added file size limit for CSV rendering. * Display CSV parser errors in diff. * Lazy read single file. * Lazy read rows for full diff. * Added unit tests for various CSV changes.
This commit is contained in:
parent
d3b8127ad3
commit
0c6137617f
20 changed files with 937 additions and 118 deletions
|
@ -2489,6 +2489,18 @@ function initIssueReferenceRepositorySearch() {
|
|||
});
|
||||
}
|
||||
|
||||
function initFileViewToggle() {
|
||||
$('.file-view-toggle').on('click', function() {
|
||||
const $this = $(this);
|
||||
$this.parent().children().removeClass('active');
|
||||
$this.addClass('active');
|
||||
|
||||
const $target = $($this.data('toggle-selector'));
|
||||
$target.parent().children().addClass('hide');
|
||||
$target.removeClass('hide');
|
||||
});
|
||||
}
|
||||
|
||||
function initLinkAccountView() {
|
||||
const $lnkUserPage = $('.page-content.user.link-account');
|
||||
if ($lnkUserPage.length === 0) {
|
||||
|
@ -2756,6 +2768,7 @@ $(document).ready(async () => {
|
|||
initTableSort();
|
||||
initNotificationsTable();
|
||||
initPullRequestMergeInstruction();
|
||||
initFileViewToggle();
|
||||
initReleaseEditor();
|
||||
initRelease();
|
||||
|
||||
|
|
|
@ -473,31 +473,6 @@
|
|||
box-shadow: inset 0 -1px 0 var(--color-secondary);
|
||||
}
|
||||
|
||||
.csv-data td,
|
||||
.csv-data th {
|
||||
padding: 5px;
|
||||
overflow: hidden;
|
||||
font-size: 12px;
|
||||
line-height: 1;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.csv-data .blob-num {
|
||||
padding: 10px 8px 9px;
|
||||
text-align: right;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.csv-data tr {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.csv-data th {
|
||||
font-weight: 600;
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.ui.list .list,
|
||||
ol.ui.list ol,
|
||||
ul.ui.list ul {
|
||||
|
|
|
@ -1455,6 +1455,65 @@
|
|||
}
|
||||
}
|
||||
|
||||
.data-table {
|
||||
width: 100%;
|
||||
|
||||
tr {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: 5px !important;
|
||||
overflow: hidden;
|
||||
font-size: 12px;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
border: 1px solid var(--color-secondary);
|
||||
}
|
||||
|
||||
td {
|
||||
white-space: pre-line;
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: 600;
|
||||
background: var(--color-box-header);
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
td.added,
|
||||
th.added,
|
||||
tr.added {
|
||||
background-color: var(--color-diff-added-row-bg) !important;
|
||||
}
|
||||
|
||||
td.removed,
|
||||
th.removed,
|
||||
tr.removed {
|
||||
background-color: var(--color-diff-removed-row-bg) !important;
|
||||
}
|
||||
|
||||
tbody.section {
|
||||
border-top: 2px solid var(--color-secondary);
|
||||
}
|
||||
|
||||
.line-num {
|
||||
width: 1%;
|
||||
min-width: 50px;
|
||||
font-family: monospace;
|
||||
line-height: 20px;
|
||||
color: var(--color-secondary-dark-2);
|
||||
white-space: nowrap;
|
||||
vertical-align: top;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
text-align: right;
|
||||
background: var(--color-body);
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.diff-detail-box {
|
||||
padding: 7px 0;
|
||||
background: var(--color-body);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue