Compare commits

...

4 Commits

Author SHA1 Message Date
silverwind
2e67cbb077
Merge 61aa3279cb into 55d5a74bb3 2024-09-20 08:48:31 +08:00
GiteaBot
55d5a74bb3 [skip ci] Updated translations via Crowdin 2024-09-20 00:29:58 +00:00
silverwind
61aa3279cb
Merge branch 'main' into syntaxtokens 2024-03-28 21:09:53 +01:00
silverwind
cfaf7458ae
Support actions syntax tokens 2024-03-14 00:05:20 +01:00
2 changed files with 47 additions and 9 deletions

View File

@ -1731,6 +1731,7 @@ issues.dependency.add_error_dep_not_same_repo=Ambas as questões têm que estar
issues.review.self.approval=Não pode aprovar o seu próprio pedido de integração.
issues.review.self.rejection=Não pode solicitar modificações sobre o seu próprio pedido de integração.
issues.review.approve=aprovou estas modificações %s
issues.review.comment=reviu %s
issues.review.dismissed=descartou a revisĂŁo de %s %s
issues.review.dismissed_label=Descartada
issues.review.left_comment=deixou um comentário

View File

@ -156,9 +156,9 @@ const sfc = {
POST(`${this.run.link}/approve`);
},
createLogLine(line, startTime, stepIndex) {
createLogLine(line, startTime, stepIndex, {classNames, wrappings} = {}) {
const div = document.createElement('div');
div.classList.add('job-log-line');
div.classList.add('job-log-line', ...classNames);
div.setAttribute('id', `jobstep-${stepIndex}-${line.index}`);
div._jobLogTime = line.timestamp;
@ -184,19 +184,50 @@ const sfc = {
const logMessage = document.createElement('span');
logMessage.className = 'log-msg';
logMessage.innerHTML = renderAnsi(line.message);
div.append(logTimeStamp);
div.append(logMessage);
div.append(logTimeSeconds);
let html = renderAnsi(line.message);
for (const [before, after] of wrappings) {
html = `${before}${html}${after}`;
}
logMessage.innerHTML = html;
div.append(logTimeStamp, logMessage, logTimeSeconds);
return div;
},
getLineHTML({message, index, timestamp}, startTime, stepIndex) {
const wrappings = [];
const classNames = [];
if (message.startsWith('::endgroup')) {
classNames.push('endgroup');
} else if (message.startsWith('::add-matcher')) {
classNames.push('add-matcher');
} else if (message.startsWith('::remove-matcher')) {
classNames.push('remove-matcher');
} else {
if (message.startsWith('::group::')) {
message = message.substring(9);
wrappings.push(['<details><summary>', '</summary></details>']);
}
if (message.startsWith('::error::')) {
message = message.substring(9);
wrappings.push(['<span class="tw-text-red">', '</span>']);
}
if (message.startsWith('[command]')) {
message = message.substring(9);
wrappings.push(['<span class="tw-text-blue">', '</span>']);
}
}
return this.createLogLine({message, index, timestamp}, startTime, stepIndex, {classNames, wrappings});
},
appendLogs(stepIndex, logLines, startTime) {
const el = this.getLogsContainer(stepIndex);
for (const line of logLines) {
// TODO: group support: ##[group]GroupTitle , ##[endgroup]
const el = this.getLogsContainer(stepIndex);
el.append(this.createLogLine(line, startTime, stepIndex));
el.append(this.getLineHTML(line, startTime, stepIndex));
}
},
@ -834,6 +865,12 @@ export function initRepositoryActionView() {
scroll-margin-top: 95px;
}
.job-log-line.add-matcher,
.job-log-line.remove-matcher,
.job-log-line.endgroup {
display: none !important;
}
/* class names 'log-time-seconds' and 'log-time-stamp' are used in the method toggleTimeDisplay */
.job-log-line .line-num, .log-time-seconds {
width: 48px;