tourfp 0.3.0 → 0.3.1

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.
Files changed (3) hide show
  1. package/README.md +3 -2
  2. package/package.json +1 -1
  3. package/tourfp.js +3 -3
package/README.md CHANGED
@@ -29,13 +29,13 @@ Với Angular, nên khai báo trong `angular.json` để thư viện được n
29
29
  Hoặc không cần cài, nạp bằng một thẻ script qua CDN:
30
30
 
31
31
  ```html
32
- <script src="https://cdn.jsdelivr.net/npm/tourfp@0.3.0/tourfp.js"></script>
32
+ <script src="https://cdn.jsdelivr.net/npm/tourfp@0.3.1/tourfp.js"></script>
33
33
  ```
34
34
 
35
35
  Để dùng thử nhanh trên một trang đang mở (trang phải cho phép script từ `cdn.jsdelivr.net`), dán dòng này vào console:
36
36
 
37
37
  ```js
38
- document.head.appendChild(Object.assign(document.createElement('script'), { src: 'https://cdn.jsdelivr.net/npm/tourfp@0.3.0/tourfp.js' }));
38
+ document.head.appendChild(Object.assign(document.createElement('script'), { src: 'https://cdn.jsdelivr.net/npm/tourfp@0.3.1/tourfp.js' }));
39
39
  ```
40
40
 
41
41
  Tuỳ chọn, đặt trước khi nạp thư viện:
@@ -89,6 +89,7 @@ Mở <http://localhost:8000>:
89
89
  - **Chạy thử** — chép một đoạn mã gồm cả thư viện lẫn tour; mở màn bắt đầu của tour, dán vào console là tour phát ngay.
90
90
  Khi chạy thử, thanh ghi tour không hiện (chế độ chỉ phát); gọi `TourFP.showPanel()` nếu cần hiện lại.
91
91
  - **Xoá**, **Tải JSON**, và xem danh sách bước của từng tour.
92
+ - **Sửa tên**: bấm vào tên một bước để đặt tên hiển thị cho bước đó (để trống thì dùng lại tên tự lấy từ giao diện); nút **Sửa tên tour** đổi tên và mô tả của tour. Tên đã đặt được dùng trong lời hướng dẫn khi phát và trong việc tìm tour của trợ lý.
92
93
 
93
94
  Cấu hình bằng biến môi trường: `TOURFP_TARGET` là trang web tour chạy trên đó (mặc định `https://tcinvest.tcbs.com.vn`),
94
95
  `TOURFP_DATA` là thư mục chứa file SQLite.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tourfp",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Ghi và phát tour hướng dẫn trên giao diện web bằng dấu vân tay phần tử, không cần sửa mã nguồn của app.",
5
5
  "main": "tourfp.js",
6
6
  "browser": "tourfp.js",
package/tourfp.js CHANGED
@@ -1,4 +1,4 @@
1
- /* TourFP 0.3.0 — bản thử: ghi tour theo thao tác và khớp phần tử bằng "dấu vân tay".
1
+ /* TourFP 0.3.1 — bản thử: ghi tour theo thao tác và khớp phần tử bằng "dấu vân tay".
2
2
  * - Không dùng class/id. Không phụ thuộc thư viện.
3
3
  * - Chữ lấy từ API (tên, tên kế hoạch…) và chữ số bị loại khỏi dấu vân tay.
4
4
  * Để lọc được, file này phải được nạp TRƯỚC khi app gọi API (đặt trong <head>).
@@ -78,7 +78,7 @@
78
78
  // chỉ cần vài mẩu đầu: với khối lớn (thẻ, bảng) đó là tiêu đề
79
79
  for (let n; (n = w.nextNode()) && nodes < 40 && out.length < 6;) {
80
80
  const v = n.nodeValue;
81
- if (!v.trim() || (n.parentElement && n.parentElement.closest('svg,script,style'))) continue;
81
+ if (!v.trim() || (n.parentElement && n.parentElement.closest('svg,script,style,mat-icon,.material-icons'))) continue;
82
82
  nodes++;
83
83
  if (/\d/.test(v)) digits = true;
84
84
  for (const seg of v.split(/\d[\d.,%\/:-]*/)) { const s = norm(seg); if (s.length >= 2 && hasLetters(s)) { out.push(s.slice(0, 60)); num.push(/\d/.test(v)); } }
@@ -641,7 +641,7 @@
641
641
  async function show(i) {
642
642
  if (i >= steps.length) return stopPlay(`Xong tour · ${steps.length} bước`);
643
643
  playing = i; target = null; advancing = false; box.style.display = 'none';
644
- const st = steps[i], nx = steps[i + 1], name = nameOf(st.fp), head = `Bước ${i + 1}/${steps.length}`;
644
+ const st = steps[i], nx = steps[i + 1], name = st.title || nameOf(st.fp), head = `Bước ${i + 1}/${steps.length}`;
645
645
  // bước rê chuột mà đích của bước sau đã hiện sẵn thì không cần rê nữa
646
646
  if (st.kind === 'hover' && nx && find(nx.fp).el) return show(i + 1);
647
647
  box.style.borderColor = '#e5484d'; box.style.boxShadow = '0 0 0 9999px rgba(0,0,0,.5)';