INNER CODE UNIT · JavaScript

stale

rootSunc/CNEquity · frontend/src/main.js:390

  const stale = datasets.filter((d) => d.freshness === "stale").length;
  const rows = (items) =>
    items
      .map(
        (d) => `<tr class="dataset-row"><td><span class="dot ${d.freshness === "fresh" ? "fresh" : d.freshness === "stale" ? "stale" : "empty"}"></span>${dsLink(d.dataset)}</td><td>${esc(tierText(d.tier, d.tier_label))}</td><td>${esc(historyText(d.history_mode))}</td><td>${esc(partitionText(d.granularity))}</td><td>${esc(d.watermark || "-")}</td><td class="n">${fmt(d.row_count)}</td><td class="n">${mb(d.bytes)}</td></tr>`,
      )
      .join("");
  setPage(`<section class="page-heading"><div class="eyebrow">${tr("数据湖控制台 / 数据集", "Lake console / Datasets")}</div><div class="heading-row"><div><h1>${tr("数据集", "Datasets")}</h1><p class="sub">${tr(`按注册契约浏览 ${datasets.length} 个数据集,点击名称查看状态、元数据与数据。`, `Browse ${datasets.length} registered datasets. Open a name for status, metadata, and rows.`)}</p></div>
    ${stale ? `<div class="action-row"><a class="button button-primary" href="#/ops?op=daily.stale">${tr(`补抓 ${stale} 个落后数据集`, `Catch up ${stale} stale datasets`)}</a></div>` : ""}</div></section>
    <section class="surface-panel catalog-panel"><div class="catalog-toolbar"><label class="search-field"><span aria-hidden="true">⌕</span><input id="dataset-search" type="search" placeholder="${tr("搜索数据集、层级或语义", "Search name, layer, or semantics")}" autocomplete="off"></label><span class="panel-meta" id="dataset-count">${datasets.length} ${tr("个结果", "results")}</span></div><div class="scroll"><table id="dataset-table"><thead><tr><th>${tr("数据集", "Dataset")}</th><th>${tr("分层", "Layer")}</th><th>${tr("语义", "Semantics")}</th><th>${tr("粒度", "Grain")}</th><th>${tr("水位", "Watermark")}</th><th class="n">${tr("行", "Rows")}</th><th class="n">${tr("体积", "Size")}</th></tr></thead><tbody></tbody></table></div></section>`, "datasets");
  const table = document.querySelector("#dataset-table tbody");
  const count = document.getElementById("dataset-count");
  const render = (query = "") => {
    const q = query.trim().toLowerCase();
    const filtered = datasets.filter((d) =>
      [dsSearch(d.dataset), d.tier, tierText(d.tier, d.tier_label), historyText(d.history_mode), d.history_mode, partitionText(d.granularity), d.granularity].some((v) =>
        String(v || "").toLowerCase().includes(q),
      ),

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…