@xiee/utils 1.14.81 → 1.14.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/lt-plot.css +22 -0
- package/css/lt-plot.min.css +1 -1
- package/css/lt-plot.min.css.map +1 -1
- package/js/lt-plot.js +54 -1
- package/js/lt-plot.min.js +1 -1
- package/js/lt-plot.min.js.map +1 -1
- package/package.json +1 -1
package/css/lt-plot.css
CHANGED
|
@@ -31,4 +31,26 @@
|
|
|
31
31
|
.lt-spark-line { fill: none; stroke: currentColor; stroke-width: 1; }
|
|
32
32
|
.lt-spark-bar { fill: currentColor; }
|
|
33
33
|
}
|
|
34
|
+
.lt-dot {
|
|
35
|
+
position: relative; /* paint above the absolutely-positioned gridlines */
|
|
36
|
+
vertical-align: middle;
|
|
37
|
+
color: #333;
|
|
38
|
+
/* default only the dots without a per-column fill= attribute, so that
|
|
39
|
+
attribute still shows; override either via `color` or `.lt-dot circle` */
|
|
40
|
+
circle:not([fill]) { fill: currentColor; }
|
|
41
|
+
}
|
|
42
|
+
.lt-dot-legend {
|
|
43
|
+
margin-top: 3px; /* small gap below the axis, since the cell has no padding */
|
|
44
|
+
font-size: 11px;
|
|
45
|
+
color: #666;
|
|
46
|
+
i {
|
|
47
|
+
display: inline-block;
|
|
48
|
+
width: 8px;
|
|
49
|
+
height: 8px;
|
|
50
|
+
margin-right: 2px;
|
|
51
|
+
border-radius: 50%;
|
|
52
|
+
vertical-align: middle;
|
|
53
|
+
}
|
|
54
|
+
span { margin-right: 6px; white-space: nowrap; }
|
|
55
|
+
}
|
|
34
56
|
}
|
package/css/lt-plot.min.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
.lt-table{& .lt-eb-cell{text-align:left;padding:0;position:relative}& .lt-eb-grid-bg{position:absolute;top:0;left:0;& line{stroke:#eee}}& .lt-eb{vertical-align:middle;position:relative;& line{stroke:#888}& circle{fill:#333}& .lt-eb-ref{stroke:#ccc}}& .lt-eb-axis{margin-top:3px;display:block;& line{stroke:#888}& text{fill:#666;font-size:11px}& .lt-eb-axis-label{fill:#333;font-size:12px}}& .lt-spark{vertical-align:middle;color:#4682b4;& .lt-spark-line{fill:none;stroke:currentColor;stroke-width:1px}& .lt-spark-bar{fill:currentColor}}}
|
|
1
|
+
.lt-table{& .lt-eb-cell{text-align:left;padding:0;position:relative}& .lt-eb-grid-bg{position:absolute;top:0;left:0;& line{stroke:#eee}}& .lt-eb{vertical-align:middle;position:relative;& line{stroke:#888}& circle{fill:#333}& .lt-eb-ref{stroke:#ccc}}& .lt-eb-axis{margin-top:3px;display:block;& line{stroke:#888}& text{fill:#666;font-size:11px}& .lt-eb-axis-label{fill:#333;font-size:12px}}& .lt-spark{vertical-align:middle;color:#4682b4;& .lt-spark-line{fill:none;stroke:currentColor;stroke-width:1px}& .lt-spark-bar{fill:currentColor}}& .lt-dot{vertical-align:middle;color:#333;position:relative;& circle:not([fill]){fill:currentColor}}& .lt-dot-legend{color:#666;margin-top:3px;font-size:11px;& i{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:2px;display:inline-block}& span{white-space:nowrap;margin-right:6px}}}
|
|
2
2
|
/*# sourceMappingURL=lt-plot.min.css.map */
|
package/css/lt-plot.min.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"AACA,UACE,0DAKA,gDAIE,oBAEF,iDAGE,mBACA,mBACA,0BAEF,2CAGE,mBACA,gCACA,8CAEF,gDAGE,gEACA","sources":["lt-plot.css"],"sourcesContent":["/* lt-plot.css — styles for inline graphics cells (see lt-plot.js). */\n.lt-table {\n .lt-eb-cell {\n position: relative;\n padding: 0; /* so the gridline background fills the whole cell */\n text-align: left; /* keep the plot flush left, aligned with the gridlines */\n }\n .lt-eb-grid-bg {\n position: absolute;\n left: 0;\n top: 0;\n line { stroke: #eee; }\n }\n .lt-eb {\n position: relative;\n vertical-align: middle;\n line { stroke: #888; }\n circle { fill: #333; }\n .lt-eb-ref { stroke: #ccc; }\n }\n .lt-eb-axis {\n display: block;\n margin-top: 3px; /* small gap below the body, since the cell has no padding */\n line { stroke: #888; }\n text { fill: #666; font-size: 11px; }\n .lt-eb-axis-label { fill: #333; font-size: 12px; }\n }\n .lt-spark {\n vertical-align: middle;\n color: #4682b4; /* line/bars inherit this via currentColor; override inline */\n .lt-spark-line { fill: none; stroke: currentColor; stroke-width: 1; }\n .lt-spark-bar { fill: currentColor; }\n }\n}\n"],"names":[]}
|
|
1
|
+
{"version":3,"mappings":"AACA,UACE,0DAKA,gDAIE,oBAEF,iDAGE,mBACA,mBACA,0BAEF,2CAGE,mBACA,gCACA,8CAEF,gDAGE,gEACA,mCAEF,6DAME,wCAEF,0DAIE,uGAQA","sources":["lt-plot.css"],"sourcesContent":["/* lt-plot.css — styles for inline graphics cells (see lt-plot.js). */\n.lt-table {\n .lt-eb-cell {\n position: relative;\n padding: 0; /* so the gridline background fills the whole cell */\n text-align: left; /* keep the plot flush left, aligned with the gridlines */\n }\n .lt-eb-grid-bg {\n position: absolute;\n left: 0;\n top: 0;\n line { stroke: #eee; }\n }\n .lt-eb {\n position: relative;\n vertical-align: middle;\n line { stroke: #888; }\n circle { fill: #333; }\n .lt-eb-ref { stroke: #ccc; }\n }\n .lt-eb-axis {\n display: block;\n margin-top: 3px; /* small gap below the body, since the cell has no padding */\n line { stroke: #888; }\n text { fill: #666; font-size: 11px; }\n .lt-eb-axis-label { fill: #333; font-size: 12px; }\n }\n .lt-spark {\n vertical-align: middle;\n color: #4682b4; /* line/bars inherit this via currentColor; override inline */\n .lt-spark-line { fill: none; stroke: currentColor; stroke-width: 1; }\n .lt-spark-bar { fill: currentColor; }\n }\n .lt-dot {\n position: relative; /* paint above the absolutely-positioned gridlines */\n vertical-align: middle;\n color: #333;\n /* default only the dots without a per-column fill= attribute, so that\n attribute still shows; override either via `color` or `.lt-dot circle` */\n circle:not([fill]) { fill: currentColor; }\n }\n .lt-dot-legend {\n margin-top: 3px; /* small gap below the axis, since the cell has no padding */\n font-size: 11px;\n color: #666;\n i {\n display: inline-block;\n width: 8px;\n height: 8px;\n margin-right: 2px;\n border-radius: 50%;\n vertical-align: middle;\n }\n span { margin-right: 6px; white-space: nowrap; }\n }\n}\n"],"names":[]}
|
package/js/lt-plot.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
/* lt-plot.js — inline graphics cells for lt tables (error bars, sparklines,
|
|
1
|
+
/* lt-plot.js — inline graphics cells for lt tables (error bars, sparklines,
|
|
2
|
+
* dot plots, …).
|
|
2
3
|
* Registers cell renderers on LT.cells; the core runtime (lt.js) consults them
|
|
3
4
|
* while building the <table>, so a plot draws for every render path (static,
|
|
4
5
|
* Node-baked, and the interactive per-page rebuild) with no plot code in core.
|
|
@@ -212,6 +213,58 @@
|
|
|
212
213
|
cell: (sp, data, r, u) => svgSparkline(sp, data, r, u)
|
|
213
214
|
};
|
|
214
215
|
|
|
216
|
+
// Inline SVG dot plot for a cell: one dot per column, each at its value on the
|
|
217
|
+
// column group's shared [min,max] scale, so a row with N columns shows N dots
|
|
218
|
+
// laid out horizontally on one baseline. When colors are given, each dot takes
|
|
219
|
+
// its column's color (see dotLegend for the key). Non-finite values draw no
|
|
220
|
+
// dot. Reuses the error-bar scale (ebX) and padding.
|
|
221
|
+
function svgDotplot(dp, data, r, u) {
|
|
222
|
+
const H = dp.height, y = H / 2, x = v => ebX(dp, v);
|
|
223
|
+
let s = `<svg class="lt-dot" width="${dp.width}" height="${H}">`;
|
|
224
|
+
const titles = [];
|
|
225
|
+
dp.cols.forEach((c, i) => {
|
|
226
|
+
const v = data[c]?.[r - 1];
|
|
227
|
+
if (!u.isNum(v)) return;
|
|
228
|
+
// the per-column color is a fill= presentation attribute; the stylesheet
|
|
229
|
+
// only defaults dots that lack it (:not([fill])), so this color shows but
|
|
230
|
+
// user CSS (a stylesheet rule) can still override it
|
|
231
|
+
const col = dp.colors?.[i], fl = col ? ` fill="${u.esc(col)}"` : "";
|
|
232
|
+
s += `<circle${fl} cx="${x(v)}" cy="${y}" r="3"/>`;
|
|
233
|
+
titles.push((dp.labels?.[i] ? dp.labels[i] + ": " : "") + u.str(v));
|
|
234
|
+
});
|
|
235
|
+
return s + `<title>${u.esc(titles.join("\n"))}</title></svg>`;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Color key for a colored dot plot, drawn once in the footer under the axis: a
|
|
239
|
+
// swatch + label per column. "" when the plot is monochrome (no colors).
|
|
240
|
+
function dotLegend(dp, u) {
|
|
241
|
+
if (!dp.colors) return "";
|
|
242
|
+
const items = dp.cols.map((c, i) =>
|
|
243
|
+
`<span><i style="background:${u.esc(dp.colors[i])}"></i>` +
|
|
244
|
+
`${u.esc(dp.labels?.[i] ?? c)}</span>`).join("");
|
|
245
|
+
return `<div class="lt-dot-legend">${items}</div>`;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Dot-plot cell renderer. columns = the value columns (one dot each); the plot
|
|
249
|
+
// is drawn in the first column's cells on a scale shared across them. Shares
|
|
250
|
+
// the error-bar axis/gridline machinery (ticks, svgGrid, svgAxis, lt-eb-cell).
|
|
251
|
+
cells.dotplot = {
|
|
252
|
+
resolve(op) {
|
|
253
|
+
const cols = op.columns || [], v = cols[0];
|
|
254
|
+
if (!v) return {};
|
|
255
|
+
const dp = {
|
|
256
|
+
col: v, cols, colors: op.colors, labels: op.labels,
|
|
257
|
+
min: op.min, max: op.max, axisLabel: op.axis_label,
|
|
258
|
+
width: op.width || 160, height: op.height || 16
|
|
259
|
+
};
|
|
260
|
+
if (op.axis) dp.ticks = niceTicks(dp.min, dp.max, nAxisTicks(dp));
|
|
261
|
+
return { [v]: dp };
|
|
262
|
+
},
|
|
263
|
+
cellClass: dp => dp.ticks ? "lt-eb-cell" : "",
|
|
264
|
+
cell: (dp, data, r, u) => (dp.ticks ? svgGrid(dp) : "") + svgDotplot(dp, data, r, u),
|
|
265
|
+
foot: (dp, u) => (dp.ticks ? svgAxis(dp, u) : "") + dotLegend(dp, u)
|
|
266
|
+
};
|
|
267
|
+
|
|
215
268
|
// If core already built a table before this module loaded (a doc where an
|
|
216
269
|
// earlier plain table pulled in lt.js first, so its renderer was missing),
|
|
217
270
|
// re-render any mounted table that uses a renderer we just registered. Tables
|
package/js/lt-plot.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(t=>{"use strict";const l=t.LT||(t.LT={}),e=l.cells||(l.cells={});if(e.errorbar)return;
|
|
1
|
+
(t=>{"use strict";const l=t.LT||(t.LT={}),e=l.cells||(l.cells={});if(e.errorbar)return;function s(t,l,e=5){if(!(l>t))return[t];const s=(t,l)=>{const e=Math.floor(Math.log10(t)),s=t/10**e;return(l?s<1.5?1:s<3?2:s<7?5:10:s<=1?1:s<=2?2:s<=5?5:10)*10**e},n=s(s(l-t,!1)/(e-1),!0),i=Math.max(0,-Math.floor(Math.log10(n))),o=[];for(let e=Math.ceil(t/n)*n;e<=l+n/2;e+=n)o.push(+e.toFixed(i));return o}function n(t){const l=t.width-8,e=11*Math.max(String(t.min).length,String(t.max).length)*.6+11;return Math.max(2,Math.min(8,Math.floor(l/e)+1))}const i=(t,l)=>{const e=t.width-8,s=t.max-t.min,n=s>0?4+(l-t.min)/s*e:t.width/2;return Math.round(10*Math.max(4,Math.min(t.width-4,n)))/10};function o(t){let l=`<svg class="lt-eb-grid-bg" width="${t.width}" height="100%" viewBox="0 0 ${t.width} 10" preserveAspectRatio="none">`;for(const e of t.ticks)l+=`<line x1="${i(t,e)}" y1="0" x2="${i(t,e)}" y2="10"/>`;return l+"</svg>"}function r(t,l){const e=t.width,s=t.axisLabel,n=s?32:18,o=l=>i(t,l);let r=`<svg class="lt-eb-axis" width="${e}" height="${n}" overflow="visible"><line x1="4" y1="1" x2="${e-4}" y2="1"/>`;for(const s of t.ticks||[]){const t=o(s);r+=`<line x1="${t}" y1="0" x2="${t}" y2="4"/><text x="${t}" y="15" text-anchor="${t<=4?"start":t>=e-4?"end":"middle"}">${l.esc(l.str(s))}</text>`}return s&&(r+=`<text class="lt-eb-axis-label" x="${e/2}" y="${n-4}" text-anchor="middle">${l.esc(s)}</text>`),r+"</svg>"}e.errorbar={resolve(t){const[l,e,i]=t.columns||[];if(!l)return{};const o={col:l,lo:e,hi:i,min:t.min,max:t.max,ref:t.ref,axis:t.axis,axisLabel:t.axis_label,width:t.width||160,height:t.height||16};return t.axis&&(o.ticks=s(o.min,o.max,n(o))),{[l]:o}},cellClass:t=>t.ticks?"lt-eb-cell":"",cell:(t,l,e,s)=>(t.ticks?o(t):"")+function(t,l,e,s){const n=t=>{const n=l[t]?.[e-1];return s.isNum(n)?n:null},o=n(t.col),r=n(t.lo),c=n(t.hi);if(null==o&&null==r&&null==c)return"";const a=t.height,h=a/2,u=l=>i(t,l),$=Math.min(4,(a-1)/2);let x=`<svg class="lt-eb" width="${t.width}" height="${a}">`;if(null!=t.ref&&(x+=`<line class="lt-eb-ref" x1="${u(t.ref)}" y1="0" x2="${u(t.ref)}" y2="${a}"/>`),null!=r&&null!=c){const t=u(r),l=u(c);x+=`<line x1="${t}" y1="${h}" x2="${l}" y2="${h}"/><line x1="${t}" y1="${h-$}" x2="${t}" y2="${h+$}"/><line x1="${l}" y1="${h-$}" x2="${l}" y2="${h+$}"/>`}null!=o&&(x+=`<circle cx="${u(o)}" cy="${h}" r="3"/>`);const m=null!=r&&null!=c?` (${s.str(r)}, ${s.str(c)})`:"";return x+=`<title>${s.esc((null!=o?s.str(o):"")+m)}</title></svg>`,x}(t,l,e,s),foot:(t,l)=>t.axis?r(t,l):""};const c=t=>Math.round(10*t)/10,a=t=>`"${t}"`;function h(t,l,e,s){const n=function(t,l,e,s){const n=l[t.cols[0]]?.[e-1];return(1===t.cols.length&&Array.isArray(n)?n:t.cols.map(t=>l[t]?.[e-1])).map(t=>s.isNum(t)?+t:null)}(t,l,e,s),i=n.filter(t=>null!=t);if(!i.length)return"";const o=t.width,r=t.height,h=n.length,u=null!=t.min?t.min:Math.min(...i),$=null!=t.max?t.max:Math.max(...i),x=t=>c($>u?r-2-(t-u)/($-u)*(r-4):r/2),m=t.color?` style="color:${s.esc(t.color)}"`:"";let d;if("bar"===t.kind){const t=(o-4)/h,l=c(Math.max(1,.8*t)),e=x(u<0&&$>0?0:u);d=n.map((s,n)=>{if(null==s)return"";const i=x(s),o=c(2+n*t+(t-l)/2);return`<rect class="lt-spark-bar" x=${a(o)} y=${a(Math.min(i,e))} width=${a(l)} height=${a(Math.max(1,Math.abs(e-i)))}/>`}).join("")}else{let t="",l=!1;n.forEach((e,s)=>{null!=e?(t+=`${l?"L":"M"}${(t=>c(h>1?2+t/(h-1)*(o-4):o/2))(s)} ${x(e)}`,l=!0):l=!1}),d=`<path class="lt-spark-line" d="${t}"/>`}return`<svg class="lt-spark" width="${o}" height="${r}"${m}>${d}<title>${s.esc(i.map(s.str).join(", "))}</title></svg>`}function u(t,l,e,s){const n=t.height,o=n/2;let r=`<svg class="lt-dot" width="${t.width}" height="${n}">`;const c=[];return t.cols.forEach((n,a)=>{const h=l[n]?.[e-1];if(!s.isNum(h))return;const u=t.colors?.[a],$=u?` fill="${s.esc(u)}"`:"";r+=`<circle${$} cx="${(l=>i(t,l))(h)}" cy="${o}" r="3"/>`,c.push((t.labels?.[a]?t.labels[a]+": ":"")+s.str(h))}),r+`<title>${s.esc(c.join("\n"))}</title></svg>`}e.sparkline={resolve(t){const l=t.columns||[],e=l[0];return e?{[e]:{col:e,cols:l,kind:t.kind,min:t.min,max:t.max,color:t.color,width:t.width||120,height:t.height||20}}:{}},cell:(t,l,e,s)=>h(t,l,e,s)},e.dotplot={resolve(t){const l=t.columns||[],e=l[0];if(!e)return{};const i={col:e,cols:l,colors:t.colors,labels:t.labels,min:t.min,max:t.max,axisLabel:t.axis_label,width:t.width||160,height:t.height||16};return t.axis&&(i.ticks=s(i.min,i.max,n(i))),{[e]:i}},cellClass:t=>t.ticks?"lt-eb-cell":"",cell:(t,l,e,s)=>(t.ticks?o(t):"")+u(t,l,e,s),foot:(t,l)=>(t.ticks?r(t,l):"")+function(t,l){return t.colors?`<div class="lt-dot-legend">${t.cols.map((e,s)=>`<span><i style="background:${l.esc(t.colors[s])}"></i>${l.esc(t.labels?.[s]??e)}</span>`).join("")}</div>`:""}(t,l)};const $=t.document;if($)for(const t of $.querySelectorAll(".lt-table"))(t._ltSpec?.ops||[]).some(t=>e[t.type])&&l.refresh?.(t)})(window);
|
|
2
2
|
//# sourceMappingURL=lt-plot.min.js.map
|
package/js/lt-plot.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["root","LT","cells","errorbar","
|
|
1
|
+
{"version":3,"names":["root","LT","cells","errorbar","niceTicks","lo","hi","n","niceNum","x","round","e","Math","floor","log10","f","d","dec","max","ticks","v","ceil","push","toFixed","nAxisTicks","eb","inner","width","per","String","min","length","ebX","span","p","svgGrid","s","t","svgAxis","u","W","lbl","axisLabel","H","xt","esc","str","resolve","op","columns","col","ref","axis","axis_label","height","cellClass","cell","data","r","num","k","isNum","est","y","cap","xl","xh","ci","svgErrorbar","foot","round1","q","svgSparkline","sp","vals","cols","Array","isArray","map","c","spSeries","fin","filter","yAt","style","color","body","kind","slot","bw","base","i","yv","abs","join","pen","forEach","xAt","svgDotplot","dp","titles","colors","fl","labels","sparkline","dotplot","dotLegend","doc","document","tbl","querySelectorAll","_ltSpec","ops","some","o","type","refresh","window"],"sources":["lt-plot.js"],"mappings":"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","ignoreList":[]}
|