Skip to content

Commit 8247970

Browse files
committed
Add SELECT_ROW_TREE selection mode
Signed-off-by: Andrew Stein <steinlink@gmail.com>
1 parent 24ac749 commit 8247970

60 files changed

Lines changed: 997 additions & 1044 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

packages/viewer-d3fc/src/ts/plugin/plugin.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ class HTMLPerspectiveViewerD3fcPluginElement extends HTMLElement {
524524
* causes non-cleared redraws duplicate column labels when calculating column name
525525
* resize/repositions - see `treemapLabel.js`.
526526
*/
527-
async resize(view) {
527+
async resize(_view) {
528528
if (this.offsetParent !== null) {
529529
if (this._settings?.data !== undefined) {
530530
this._draw();
@@ -536,13 +536,13 @@ class HTMLPerspectiveViewerD3fcPluginElement extends HTMLElement {
536536
}
537537
}
538538

539-
async restyle(view, _end_col, _end_row) {
539+
async restyle(view) {
540540
let settings = this._settings;
541541
if (settings) {
542542
delete settings["colorStyles"];
543543
delete settings["textStyles"];
544544
if (this.isConnected) {
545-
initialiseStyles(this._container, this._settings);
545+
initialiseStyles(this._container, settings);
546546
this.resize(view);
547547
}
548548
}

packages/viewer-d3fc/src/ts/tooltip/selectionEvent.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,13 @@ export const raiseEvent = (node, data, settings) => {
2727
[],
2828
[{ filter }],
2929
);
30+
31+
if (node.tagName !== "PERSPECTIVE-VIEWER") {
32+
node = node.getRootNode().host.parentElement;
33+
}
34+
3035
node.dispatchEvent(
31-
new CustomEvent("perspective-select", {
36+
new CustomEvent("perspective-global-filter", {
3237
bubbles: true,
3338
composed: true,
3439
detail,

packages/viewer-datagrid/src/css/regular_table.css

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -97,34 +97,18 @@ perspective-viewer,
9797
cursor: pointer;
9898
}
9999

100-
.psp-row-selected,
101-
:hover .psp-row-selected,
102-
:hover th.psp-tree-leaf.psp-row-selected,
103-
:hover th.psp-tree-label.psp-row-selected {
104-
color: white !important;
105-
background-color: var(--selected-row--background-color, #ea7319) !important;
106-
border-color: var(--selected-row--background-color, #ea7319) !important;
107-
}
108-
109100
regular-table.flat-group-rollup-mode.vertical-row-headers
110101
th.psp-tree-label:not(:last-of-type) {
111102
writing-mode: vertical-lr;
112103
}
113104

114-
.psp-row-selected.psp-tree-label:not(:hover):before {
115-
color: white;
116-
}
117-
118-
regular-table:not(.flat-group-rollup-mode)
119-
.psp-row-selected.psp-tree-label:not(:hover):before {
120-
color: white;
121-
}
122-
123-
.psp-row-subselected,
124-
:hover .psp-row-subselected,
125-
:hover th.psp-tree-leaf.psp-row-subselected,
126-
:hover th.psp-tree-label.psp-row-subselected {
127-
background: rgba(234, 115, 25, 0.2) !important;
105+
.psp-select-region-inactive,
106+
:hover .psp-select-region-inactive,
107+
:hover th.psp-tree-leaf.psp-select-region-inactive,
108+
:hover th.psp-tree-label.psp-select-region-inactive {
109+
background-color: var(--psp-inactive--color) !important;
110+
color: var(--psp--background-color) !important;
111+
border-color: var(--psp--background-color) !important;
128112
}
129113

130114
.psp-error {
@@ -318,9 +302,33 @@ regular-table:not(.flat-group-rollup-mode) {
318302
text-align: right;
319303
}
320304

305+
.psp-color-mode-bar {
306+
padding: 0 2px;
307+
}
308+
321309
.psp-color-mode-label-bar {
322310
position: relative;
323-
isolation: isolate;
311+
padding: 0 2px;
312+
313+
.psp-bar {
314+
isolation: isolate;
315+
position: unset;
316+
}
317+
318+
.psp-bar:after {
319+
color: var(--psp-label-bar-bg);
320+
content: var(--label);
321+
mix-blend-mode: difference;
322+
position: absolute;
323+
top: 0;
324+
bottom: 0;
325+
left: 0;
326+
right: 0;
327+
display: inline-flex;
328+
justify-content: flex-end;
329+
align-items: center;
330+
padding: 0 5px;
331+
}
324332
}
325333

326334
.psp-label-bar {
@@ -429,18 +437,18 @@ regular-table table {
429437
regular-table
430438
tbody
431439
tr:hover
432-
td.psp-select-region:not(.psp-row-selected):not(.psp-row-subselected),
440+
td.psp-select-region:not(.psp-select-region-inactive),
433441
regular-table
434442
tbody
435443
tr:hover
436444
+ tr
437-
td.psp-select-region:not(.psp-row-selected):not(.psp-row-subselected) {
445+
td.psp-select-region:not(.psp-select-region-inactive) {
438446
border-color: var(--psp--background-color) !important;
439447
}
440448

441449
regular-table tbody tr:hover {
442450
td.psp-select-region.psp-menu-open {
443-
&:not(.psp-row-selected):not(.psp-row-subselected) {
451+
&:not(.psp-select-region-inactive) {
444452
box-shadow:
445453
inset -2px 0px 0px var(--psp--background-color),
446454
inset 2px 0px 0px var(--psp--background-color);

packages/viewer-datagrid/src/css/row-hover.css

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,14 @@
1414
regular-table {
1515
tbody {
1616
tr:hover
17-
th.psp-tree-leaf:not(.psp-row-selected):not(.psp-row-subselected),
17+
th.psp-tree-leaf:not(.psp-select-region):not(
18+
.psp-select-region-inactive
19+
),
1820
tr:hover
19-
th.psp-tree-label:not(.psp-row-selected):not(.psp-row-subselected),
20-
tr:hover td:not(.psp-row-selected):not(.psp-row-subselected),
21+
th.psp-tree-label:not(.psp-select-region):not(
22+
.psp-select-region-inactive
23+
),
24+
tr:hover td:not(.psp-select-region):not(.psp-select-region-inactive),
2125
tr:hover:after {
2226
border-color: var(
2327
--psp-datagrid--hover--border-color,
@@ -36,7 +40,9 @@ regular-table {
3640
}
3741

3842
tr:last-child:hover
39-
td:not(.psp-row-selected):not(.psp-row-subselected).psp-menu-open {
43+
td:not(.psp-select-region):not(
44+
.psp-select-region-inactive
45+
).psp-menu-open {
4046
box-shadow:
4147
inset -2px 0px 0px var(--psp--color),
4248
inset 2px 0px 0px var(--psp--color),
@@ -46,11 +52,17 @@ regular-table {
4652

4753
tr:hover
4854
+ tr
49-
th.psp-tree-leaf:not(.psp-row-selected):not(.psp-row-subselected),
55+
th.psp-tree-leaf:not(.psp-select-region):not(
56+
.psp-select-region-inactive
57+
),
5058
tr:hover
5159
+ tr
52-
th.psp-tree-label:not(.psp-row-selected):not(.psp-row-subselected),
53-
tr:hover + tr td:not(.psp-row-selected):not(.psp-row-subselected) {
60+
th.psp-tree-label:not(.psp-select-region):not(
61+
.psp-select-region-inactive
62+
),
63+
tr:hover
64+
+ tr
65+
td:not(.psp-select-region):not(.psp-select-region-inactive) {
5466
border-top-color: transparent;
5567
}
5668

@@ -72,6 +84,7 @@ regular-table {
7284

7385
tr:hover {
7486
color: inherit;
87+
7588
th:first-child:not(:empty),
7689
th:first-child:empty + th:not(:empty),
7790
th:first-child:empty ~ th:empty + th:not(:empty),

packages/viewer-datagrid/src/css/toolbar.css

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@
9494
-webkit-mask-image: var(--psp-toolbar-edit-mode-select-region--content);
9595
}
9696

97+
#edit_mode[data-edit-mode="SELECT_ROW_TREE"]:before {
98+
-webkit-mask-image: var(--psp-toolbar-edit-mode-select-row-tree--content);
99+
}
100+
97101
/* #edit_mode span:before { */
98102
/* content: var(--edit-mode-toggle--content, "N/A"); */
99103
/* } */
@@ -124,6 +128,13 @@
124128
);
125129
}
126130

131+
#edit_mode[data-edit-mode="SELECT_ROW_TREE"] span:before {
132+
content: var(
133+
--psp-label--edit-mode-select-row-tree--content,
134+
"Tree Select"
135+
);
136+
}
137+
127138
#scroll_lock span:before {
128139
content: var(--psp-label--scroll-lock-toggle--content, "Free Scroll");
129140
}

packages/viewer-datagrid/src/ts/custom_elements/datagrid.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ export class HTMLPerspectiveViewerDatagridPluginElement
210210
return out.trim();
211211
}
212212

213-
async resize(): Promise<void> {
213+
async resize(_view: View): Promise<void> {
214214
if (!this.isConnected || this.offsetParent == null) {
215215
return;
216216
}
@@ -233,10 +233,10 @@ export class HTMLPerspectiveViewerDatagridPluginElement
233233
return restore.call(this, token, columns_config ?? {});
234234
}
235235

236-
async restyle(): Promise<void> {
236+
async restyle(view: View): Promise<void> {
237237
// Get view from model if available, otherwise no-op
238238
if (this.model?._view) {
239-
await this.draw(this.model._view);
239+
await this.draw(view);
240240
}
241241
}
242242

packages/viewer-datagrid/src/ts/custom_elements/toolbar.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export class HTMLPerspectiveViewerDatagridToolbarElement extends HTMLElement {
6666
plugin._edit_button = this.shadowRoot!.querySelector(
6767
"#edit_mode",
6868
) as HTMLElement;
69+
6970
plugin._edit_button.addEventListener("click", () => {
7071
toggle_edit_mode.call(plugin);
7172
plugin.regular_table.draw();

packages/viewer-datagrid/src/ts/data_listener/format_cell.ts

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -58,40 +58,29 @@ export function format_cell(
5858
),
5959
);
6060

61-
const anchor = (val as number) >= 0 ? "left" : "right";
61+
const anchor = (val as number) >= 0 ? "" : "justify-self:flex-end;";
6262
const pct = (a * 100).toFixed(2);
6363

6464
if (plugin.number_fg_mode === "bar") {
6565
const div = this._div_factory.get();
6666
div.className = "psp-bar";
6767
div.setAttribute(
6868
"style",
69-
`width:calc(${pct}% - 4px);position:absolute;${anchor}:2px;height:80%;top:10%;pointer-events:none;`,
69+
`${anchor}width:${pct}%;height:80%;top:10%;pointer-events:none;background:var(--psp-label-bar-color)`,
7070
);
7171

7272
return div;
7373
} else {
74-
const wrapper = this._div_factory.get();
75-
wrapper.setAttribute("style", "");
76-
wrapper.className = "psp-label-bar";
77-
while (wrapper.firstChild) {
78-
wrapper.removeChild(wrapper.firstChild);
79-
}
80-
const bar = document.createElement("div");
81-
bar.className = "psp-label-bar-fill";
82-
bar.setAttribute(
74+
const formatter = FORMAT_CACHE.get(type, plugin);
75+
const label = formatter ? formatter.format(val) : (val as string);
76+
77+
const div = this._div_factory.get();
78+
div.className = "psp-bar";
79+
div.setAttribute(
8380
"style",
84-
`width:calc(${pct}% - 4px);${anchor}:2px;`,
81+
`--label:"${label}";${anchor}width:${pct}%;height:80%;top:10%;pointer-events:none;background:var(--psp-label-bar-color)`,
8582
);
86-
const label = document.createElement("span");
87-
label.className = "psp-label-bar-text";
88-
const formatter = FORMAT_CACHE.get(type, plugin);
89-
label.textContent = formatter
90-
? formatter.format(val)
91-
: (val as string);
92-
wrapper.appendChild(bar);
93-
wrapper.appendChild(label);
94-
return wrapper;
83+
return div;
9584
}
9685
} else if (plugin?.format === "link" && type === "string") {
9786
const anchor = document.createElement("a");

0 commit comments

Comments
 (0)