Public Access
Add OCA Modules Status section: searchable scrollable table with v19/v20 support indicators and GitHub icon links
This commit is contained in:
1 parent
246beeb231
commit
3605545838
2 files changed
+110
No files matched your search
@@ -666,3 +666,66 @@ var si = 0,
|
||||
form.submit();
|
||||
document.body.removeChild(form);
|
||||
};
|
||||
|
||||
/* ---- OCA Modules Status ---- */
|
||||
(function () {
|
||||
var tbody = document.getElementById('ocaTbody');
|
||||
var searchInput = document.getElementById('ocaSearch');
|
||||
var empty = document.getElementById('ocaEmpty');
|
||||
var loading = document.getElementById('ocaLoading');
|
||||
var allModules = [];
|
||||
|
||||
function render(filter) {
|
||||
var q = (filter || '').toLowerCase();
|
||||
var matched = q ? allModules.filter(function (m) { return (m.name + ' ' + m.area).toLowerCase().indexOf(q) !== -1; }) : allModules;
|
||||
if (matched.length === 0) {
|
||||
tbody.innerHTML = '';
|
||||
empty.style.display = 'block';
|
||||
return;
|
||||
}
|
||||
empty.style.display = 'none';
|
||||
var html = '';
|
||||
for (var i = 0; i < matched.length; i++) {
|
||||
var mod = matched[i];
|
||||
var v19 = mod.v19 ? '<span class="oca-check">✓</span>' : '<span class="oca-cross">–</span>';
|
||||
var v20 = mod.v20 ? '<span class="oca-check">✓</span>' : '<span class="oca-cross">–</span>';
|
||||
html += '<tr>' +
|
||||
'<td>' + esc(mod.name) + '</td>' +
|
||||
'<td>' + esc(mod.area) + '</td>' +
|
||||
'<td>' + v19 + '</td>' +
|
||||
'<td>' + v20 + '</td>' +
|
||||
'<td><a href="' + esc(mod.URL) + '" target="_blank" rel="noopener" class="oca-icon-link" title="View on GitHub"><i class="fas fa-external-link-alt"></i></a></td>' +
|
||||
'</tr>';
|
||||
}
|
||||
tbody.innerHTML = html;
|
||||
}
|
||||
|
||||
function esc(s) {
|
||||
var d = document.createElement('div');
|
||||
d.appendChild(document.createTextNode(s || ''));
|
||||
return d.innerHTML;
|
||||
}
|
||||
|
||||
fetch('https://n8n.odoo4projects.com/webhook/oc-guy/modules')
|
||||
.then(function (r) { return r.json(); })
|
||||
.then(function (data) {
|
||||
if (data && Array.isArray(data.data)) {
|
||||
allModules = data.data;
|
||||
} else if (Array.isArray(data) && data.length > 0 && Array.isArray(data[0].data)) {
|
||||
allModules = data[0].data;
|
||||
} else if (Array.isArray(data)) {
|
||||
allModules = data;
|
||||
}
|
||||
loading.style.display = 'none';
|
||||
render(searchInput ? searchInput.value : '');
|
||||
})
|
||||
.catch(function () {
|
||||
loading.textContent = 'Could not load module status.';
|
||||
});
|
||||
|
||||
if (searchInput) {
|
||||
searchInput.addEventListener('input', function () {
|
||||
render(this.value);
|
||||
});
|
||||
}
|
||||
})();
|
||||
Reference in new issue
Block a user