@threestarsoftware/tssgrid 0.1.23 → 0.1.25
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/CHANGELOG.md +10 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/tssgrid.js +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
TssGrid の各リリースの変更点。日付は JST。形式は [Keep a Changelog](https://keepachangelog.com/ja/1.1.0/) 準拠(ゆるめ)。
|
|
4
4
|
数値は特記なき限り**自社調べ**(headless Chrome / Windows 11・環境差あり)。
|
|
5
5
|
|
|
6
|
+
## [0.1.25] - 2026-10-13
|
|
7
|
+
|
|
8
|
+
### 修正
|
|
9
|
+
- **`data: []` 始まりの遅延ロードで `rowClass` / `cellClass` の `src`(元レコード)が空になる不具合を修正**(コア)— `data: []` + `virtual` + `setRowCount` + `fillRows(オブジェクト)` の遅延ロードで、`_src` が未作成のため `fillRows` が src を保持せず、`rowClass`/`cellClass` の `src` が `undefined` になり**列に無いフィールド(例: `hidden`)を見られなかった**(`_ingest` は `data` 先頭がオブジェクトの時だけ `_src` を作るため `data: []` だと `null` のまま)。**`fillRows` にオブジェクトが来て `_src` が無ければ `ROWS` 長で作成(+object モード化)**、**`setRowCount` は `_src` があるとき行数変更に長さを追従**するように。これで `data: []` → `setRowCount` → `fillRows` の遅延ロードでも、元レコードを見た行/セルの色付けが効く。型は従来どおり(`rowClass`/`cellClass` の `src` は `any`・`setRowCount`/`fillRows`/`onViewportChange` も宣言済み)。
|
|
10
|
+
|
|
11
|
+
## [0.1.24] - 2026-10-08
|
|
12
|
+
|
|
13
|
+
### 追加
|
|
14
|
+
- **遅延ロード(`setRowCount` / `fillRows` / `onViewportChange`)のサンプルを追加** — `examples/lazy-load.html`。AG Grid の Infinite Row Model 相当=**10万件を一度に取らず、仮想スクロールで見える範囲だけ取得**する型を動く例に。①`setRowCount(total)` で確保(未取得は「読込中」表示)→ ②`onViewportChange(start,end)` で要る範囲を受け → ③`fillRows(start, rows)` で流し込む。ブロック単位取得(取得済み/取得中はスキップ)+サーバ呼び出しログで「可視ぶんだけ取得」を可視化。README のページネーション節からリンク。コア変更なし。
|
|
15
|
+
|
|
6
16
|
## [0.1.23] - 2026-10-08
|
|
7
17
|
|
|
8
18
|
### 追加
|
package/README.md
CHANGED
|
@@ -364,7 +364,7 @@ async function load() {
|
|
|
364
364
|
// 前/次/ページ番号は <button> で外に置き、go(p) → load() を呼ぶ
|
|
365
365
|
```
|
|
366
366
|
- **`total` が返るサーバ**: 「全何件・何ページ」まで出せる(上の例)。**`total` が無い(cursor のみ)**: ページ番号は出せないので **`appendRows` で「もっと読む」=無限スクロール型**に。
|
|
367
|
-
- **1本の長いスクロールで必要分だけ取得**したいなら、ページ送りでなく `setRowCount(total)` + `onViewportChange` + `fillRows(start, rows)`(AG Grid の Infinite Row Model
|
|
367
|
+
- **1本の長いスクロールで必要分だけ取得**したいなら、ページ送りでなく `setRowCount(total)` + `onViewportChange(start,end)` + `fillRows(start, rows)`(AG Grid の Infinite Row Model 相当・`virtual:true` 前提/未取得行は「読込中」表示)。動く例: [`examples/lazy-load.html`](https://tssgrid.threestarsoftware.co.jp/examples/lazy-load.html)(10万件を見える範囲だけ取得)。
|
|
368
368
|
- sort/filter をサーバ側でやる場合も同じ=**操作 → 再 fetch → `setData`**(遅延スクロール型なら `onSortFilterChange` で委譲)。
|
|
369
369
|
|
|
370
370
|
### 同梱プラグイン: ヘッダ オートフィルタ(filter UI)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@threestarsoftware/tssgrid",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.25",
|
|
4
4
|
"description": "軽量・ノービルド・日本語IME堅牢な編集グリッド(vanilla JS / 依存なし / MIT)。Excel ライクな入力画面を <script> タグ1本で。",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "ThreeStarSoftware (https://www.threestarsoftware.co.jp/)",
|
package/src/tssgrid.js
CHANGED
|
@@ -419,8 +419,8 @@
|
|
|
419
419
|
setRowCount(total) {
|
|
420
420
|
total = Math.max(0, total | 0);
|
|
421
421
|
const cur = this.ROWS;
|
|
422
|
-
if (total > cur) { for (let r = cur; r < total; r++) { this.data.push(TssGrid.PENDING); this.rowH.push(undefined); } }
|
|
423
|
-
else if (total < cur) { this.data.length = total; this.rowH.length = total; }
|
|
422
|
+
if (total > cur) { for (let r = cur; r < total; r++) { this.data.push(TssGrid.PENDING); this.rowH.push(undefined); if (this._src) this._src.push({}); } }
|
|
423
|
+
else if (total < cur) { this.data.length = total; this.rowH.length = total; if (this._src) this._src.length = total; }
|
|
424
424
|
this.ROWS = total;
|
|
425
425
|
let pend = 0; for (let r = 0; r < this.ROWS; r++) if (this.data[r] === TssGrid.PENDING) pend++; // 確保時の一度きり O(N)。以降 fillRows が差分で維持
|
|
426
426
|
this._pendingCount = pend; this.dataComplete = pend === 0;
|
|
@@ -437,6 +437,9 @@
|
|
|
437
437
|
const r = start + i; if (r >= this.ROWS) break;
|
|
438
438
|
const src = rows[i];
|
|
439
439
|
const srcIsObj = src && !Array.isArray(src) && typeof src === 'object';
|
|
440
|
+
// data:[] で始めて setRowCount→fillRows でオブジェクトを流す遅延ロード時、_src が未作成だとここで作る
|
|
441
|
+
// (src=元レコードを保持=rowClass/cellClass の src・非表示フィールドが見える)。
|
|
442
|
+
if (srcIsObj && !this._src) { this._objectMode = true; this._src = new Array(this.ROWS); for (let k = 0; k < this.ROWS; k++) this._src[k] = {}; }
|
|
440
443
|
const srcObj = srcIsObj ? Object.assign({}, src) : {};
|
|
441
444
|
let rowArr;
|
|
442
445
|
if (srcIsObj) rowArr = this._objToRow(src);
|