diff --git a/cypress/integration/vault.spec.js b/cypress/integration/vault.spec.js
--- a/cypress/integration/vault.spec.js
+++ b/cypress/integration/vault.spec.js
@@ -246,7 +246,7 @@
}).as('fetchCookedArchive');
cy.get(`#vault-task-${this.directory} .vault-origin a`)
- .should('have.text', this.origin[0].url)
+ .should('contain', this.origin[0].url)
.should('have.attr', 'href', `${this.Urls.browse_origin()}?origin_url=${this.origin[0].url}`);
cy.get(`#vault-task-${this.directory} .vault-object-info a`)
diff --git a/swh/web/assets/src/bundles/vault/vault-table-row.ejs b/swh/web/assets/src/bundles/vault/vault-table-row.ejs
new file mode 100644
--- /dev/null
+++ b/swh/web/assets/src/bundles/vault/vault-table-row.ejs
@@ -0,0 +1,56 @@
+<%#
+ Copyright (C) 2020 The Software Heritage developers
+ See the AUTHORS file at the top-level directory of this distribution
+ License: GNU Affero General Public License version 3, or any later version
+ See top-level LICENSE file for more information
+%>
+
+<% if (cookingTask.object_type === 'directory') { %>
+
\ No newline at end of file
diff --git a/swh/web/assets/src/bundles/vault/vault-ui.js b/swh/web/assets/src/bundles/vault/vault-ui.js
--- a/swh/web/assets/src/bundles/vault/vault-ui.js
+++ b/swh/web/assets/src/bundles/vault/vault-ui.js
@@ -6,6 +6,7 @@
*/
import {handleFetchError, handleFetchErrors, csrfPost} from 'utils/functions';
+import vaultTableRowTemplate from './vault-table-row.ejs';
let progress =
`
@@ -152,8 +153,7 @@
}
for (let i = 0; i < vaultCookingTasks.length; ++i) {
let cookingTask = vaultCookingTasks[i];
-
- let rowTask = $('#vault-task-' + cookingTask.object_id);
+ let rowTask = $(`#vault-task-${cookingTask.object_id}`);
if (!rowTask.length) {
@@ -169,53 +169,13 @@
let progressBar = $.parseHTML(progress)[0];
let progressBarContent = $(progressBar).find('.progress-bar');
updateProgressBar(progressBarContent, cookingTask);
- let tableRow;
- if (cookingTask.object_type === 'directory') {
- tableRow =
- `