diff --git a/static/js/pages/market.js b/static/js/pages/market.js index a103b5f..b87be2a 100644 --- a/static/js/pages/market.js +++ b/static/js/pages/market.js @@ -66,6 +66,7 @@ const PageMarket = { const icon = isScene ? '🎬' : (d.icon || '📦'); const label = installed ? '已安装' : (isScene ? '安装场景' : '安装'); const btnClass = isScene ? 'btn-m-install-scene' : 'btn-m-install'; + const uninstallBtn = installed ? `` : ''; return `
${icon}
@@ -77,6 +78,7 @@ const PageMarket = { ${d.author||''}${d.downloads||0} 次
+ ${uninstallBtn}
`; }, @@ -107,6 +109,22 @@ const PageMarket = { const btnUpdate = e.target.closest('.btn-my-update'); const btnDelete = e.target.closest('.btn-my-delete'); + if (e.target.closest('.btn-m-uninstall')) { + const ubtn = e.target.closest('.btn-m-uninstall'); + if (!confirm('确定卸载 "' + (ubtn.dataset.name||'') + '"?')) return; + try { + const r = await fetch('/api/dashboards?category=all'); + const list = (await r.json()) || []; + const dash = list.find(d => d.id === ubtn.dataset.name || d.name === ubtn.dataset.name); + if (dash) { + await fetch('/api/dashboards/' + dash.id, { method: 'DELETE' }); + Toast.show('已卸载', 'success'); + this._loadItems(); + } else { Toast.show('未找到本地安装', 'error'); } + } catch (e) { Toast.show('卸载失败', 'error'); } + return; + } + if (btnUpdate) { const input = document.createElement('input'); input.type = 'file'; input.accept = btnUpdate.dataset.type; input.onchange = async (ev) => {