annotate default/node_modules/tablesaw/src/tables.minimap.js @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
1 /*
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
2 * tablesaw: A set of plugins for responsive tables
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
3 * minimap: a set of dots to show which columns are currently visible.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4 * Copyright (c) 2013 Filament Group, Inc.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 * MIT License
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8 (function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9 var MiniMap = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10 attr: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 init: "data-tablesaw-minimap"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 show: function(table) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 var mq = table.getAttribute(MiniMap.attr.init);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16 if (mq === "") {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 // value-less but exists
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 return true;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19 } else if (mq && "matchMedia" in window) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 // has a mq value
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 return window.matchMedia(mq).matches;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24 return false;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28 function createMiniMap($table) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29 var tblsaw = $table.data("tablesaw");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30 var $btns = $('<div class="tablesaw-advance minimap">');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 var $dotNav = $('<ul class="tablesaw-advance-dots">').appendTo($btns);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 var hideDot = "tablesaw-advance-dots-hide";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33 var $headerCells = $table.data("tablesaw")._getPrimaryHeaderCells();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35 // populate dots
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 $headerCells.each(function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37 $dotNav.append("<li><i></i></li>");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40 $btns.appendTo(tblsaw.$toolbar);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 function showHideNav() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43 if (!MiniMap.show($table[0])) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 $btns.css("display", "none");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 return;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 $btns.css("display", "block");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49 // show/hide dots
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50 var dots = $dotNav.find("li").removeClass(hideDot);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 $table.find("thead th").each(function(i) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52 if ($(this).css("display") === "none") {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 dots.eq(i).addClass(hideDot);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58 // run on init and resize
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59 showHideNav();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60 $(window).on(Tablesaw.events.resize, showHideNav);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62 $table
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 .on("tablesawcolumns.minimap", function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64 showHideNav();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65 })
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 .on(Tablesaw.events.destroy + ".minimap", function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67 var $t = $(this);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69 tblsaw.$toolbar.find(".tablesaw-advance").remove();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70 $(window).off(Tablesaw.events.resize, showHideNav);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72 $t.off(".minimap");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76 // on tablecreate, init
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77 $(document).on(Tablesaw.events.create, function(e, tablesaw) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78 if (
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79 (tablesaw.mode === "swipe" || tablesaw.mode === "columntoggle") &&
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80 tablesaw.$table.is("[ " + MiniMap.attr.init + "]")
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81 ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82 createMiniMap(tablesaw.$table);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
83 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
84 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
85
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
86 // TODO OOP this better
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87 Tablesaw.MiniMap = MiniMap;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88 })();