annotate default/node_modules/tablesaw/src/tables.modeswitch.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 * Mode Switch: UI element to allow the user to change table modes: stack/swipe/columntoggle
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 S = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10 selectors: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 init: "table[data-tablesaw-mode-switch]"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 attributes: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 excludeMode: "data-tablesaw-mode-exclude"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16 classes: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 main: "tablesaw-modeswitch",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 toolbar: "tablesaw-bar-section"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 modes: ["stack", "swipe", "columntoggle"],
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 init: function(table) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22 var $table = $(table);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 var tblsaw = $table.data("tablesaw");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24 var ignoreMode = $table.attr(S.attributes.excludeMode);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 var $toolbar = tblsaw.$toolbar;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26 var $switcher = $("<div>").addClass(S.classes.main + " " + S.classes.toolbar);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28 var html = [
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29 '<label><span class="abbreviated">' +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30 Tablesaw.i18n.modeSwitchColumnsAbbreviated +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 '</span><span class="longform">' +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 Tablesaw.i18n.modeSwitchColumns +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33 "</span>:"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34 ],
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35 dataMode = $table.attr("data-tablesaw-mode"),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 isSelected;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38 // TODO next major version: remove .btn
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39 html.push('<span class="btn tablesaw-btn"><select>');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40 for (var j = 0, k = S.modes.length; j < k; j++) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41 if (ignoreMode && ignoreMode.toLowerCase() === S.modes[j]) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 continue;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 isSelected = dataMode === S.modes[j];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 html.push(
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48 "<option" +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49 (isSelected ? " selected" : "") +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50 ' value="' +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 S.modes[j] +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52 '">' +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 Tablesaw.i18n.modes[j] +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54 "</option>"
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 html.push("</select></span></label>");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59 $switcher.html(html.join(""));
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61 var $otherToolbarItems = $toolbar.find(".tablesaw-advance").eq(0);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62 if ($otherToolbarItems.length) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 $switcher.insertBefore($otherToolbarItems);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65 $switcher.appendTo($toolbar);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68 $switcher.find(".tablesaw-btn").tablesawbtn();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69 $switcher.find("select").on("change", function(event) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70 return S.onModeChange.call(table, event, $(this).val());
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73 onModeChange: function(event, val) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74 var $table = $(this);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75 var tblsaw = $table.data("tablesaw");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76 var $switcher = tblsaw.$toolbar.find("." + S.classes.main);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78 $switcher.remove();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79 tblsaw.destroy();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81 $table.attr("data-tablesaw-mode", val);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82 $table.tablesaw();
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 $(document).on(Tablesaw.events.create, function(e, Tablesaw) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87 if (Tablesaw.$table.is(S.selectors.init)) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88 S.init(Tablesaw.table);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
89 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
90 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
91
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
92 // TODO OOP this and add to Tablesaw object
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
93 })();