Skip to content

Commit c0ec746

Browse files
committed
table handles multiselection
1 parent 56f99e9 commit c0ec746

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

services/static-webserver/client/source/class/osparc/file/FolderContent.js

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -287,13 +287,11 @@ qx.Class.define("osparc.file.FolderContent", {
287287
});
288288
this.__selectionChanged(selectedFiles);
289289
} else {
290-
if (this.getMode() === "icons") {
291-
// unselect the other items
292-
const iconsLayout = this.getChildControl("icons-layout");
293-
iconsLayout.getChildren().forEach(btn => {
294-
btn.setValue(btn === gridItem);
295-
});
296-
}
290+
// unselect the other items
291+
const iconsLayout = this.getChildControl("icons-layout");
292+
iconsLayout.getChildren().forEach(btn => {
293+
btn.setValue(btn === gridItem);
294+
});
297295
this.__selectionChanged(gridItem.getValue() ? [gridItem.entry] : null);
298296
}
299297
// folders can't be selected
@@ -311,11 +309,17 @@ qx.Class.define("osparc.file.FolderContent", {
311309
if (e.getNativeEvent().ctrlKey) {
312310
this.setMultiSelect(true);
313311
}
314-
const selectedRow = e.getRow();
315-
const rowData = table.getTableModel().getRowData(selectedRow);
316-
if ("entry" in rowData) {
317-
this.__selectionChanged([rowData.entry]);
318-
}
312+
const selectedFiles = [];
313+
const selectionRanges = table.getSelectionModel().getSelectedRanges();
314+
selectionRanges.forEach(range => {
315+
for (let i=range.minIndex; i<=range.maxIndex; i++) {
316+
const row = table.getTableModel().getRowData(i);
317+
if (osparc.file.FilesTree.isFile(row.entry)) {
318+
selectedFiles.push(row.entry);
319+
}
320+
}
321+
});
322+
this.__selectionChanged(selectedFiles);
319323
}, this);
320324
table.addListener("cellDbltap", e => {
321325
const selectedRow = e.getRow();

0 commit comments

Comments
 (0)