Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions packages/perspective-viewer-datagrid/src/js/datagrid.js
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,17 @@ export class DatagridViewModel extends DatagridViewEventModel {
this.appendChild(this.table_model.table);
}
}

save() {
const selected = this._get_selected();
if (selected !== undefined) {
return {selected};
}
}

restore(config) {
if (config.selected) {
this._set_selected(config.selected);
}
}
}
32 changes: 29 additions & 3 deletions packages/perspective-viewer-datagrid/src/js/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,32 @@ export class DatagridViewEventModel extends DatagridVirtualTableViewModel {
}
}
}
/**
* Get the id of the selected row
*
* @memberof DatagridVirtualTableViewModel
*/
_get_selected() {
return this._selected_id;
}
/**
* sets the selected row to the `selected_id`. The row for the id
* will be highlighted if it's in the viewport
*
* @param {*} selected_id
* @memberof DatagridVirtualTableViewModel
*/
_set_selected(selected_id) {
this._selected_id = selected_id;
}
/**
* Clears selected row
*
* @memberof DatagridVirtualTableViewModel
*/
_clear_selected() {
delete this._selected_id;
}

/**
* Datagrid event which handles row selection.
Expand All @@ -198,13 +224,13 @@ export class DatagridViewEventModel extends DatagridVirtualTableViewModel {
return;
}

const is_deselect = isEqual(metadata.id, this._selected_id);
const is_deselect = isEqual(metadata.id, this._get_selected());
let filters = [];
if (is_deselect) {
this._selected_id = undefined;
this._clear_selected();
await this.draw({invalid_viewport: true});
} else {
this._selected_id = metadata.id;
this._set_selected(metadata.id);
await this.draw({invalid_viewport: true});
filters = await getCellConfig(this._view_cache, metadata.ridx, metadata.cidx);
filters = filters.config.filters;
Expand Down
27 changes: 27 additions & 0 deletions packages/perspective-viewer-datagrid/src/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ class DatagridPlugin {
static async create(div, view) {
const datagrid = get_or_create_datagrid(this, div);
const options = await datagrid.set_view(view);
if (this._plugin_config) {
datagrid.restore(this._plugin_config);
delete this._plugin_config;
}
await datagrid.draw(options);
}

Expand All @@ -76,6 +80,29 @@ class DatagridPlugin {
await datagrid.draw({invalid_viewport: true});
}
}

static delete() {
if (this.view && VIEWER_MAP.has(this._datavis)) {
const datagrid = VIEWER_MAP.get(this._datavis);
datagrid.clear();
}
}

static save() {
if (this.view && VIEWER_MAP.has(this._datavis)) {
const datagrid = VIEWER_MAP.get(this._datavis);
return datagrid.save();
}
}

static restore(config) {
if (this.view && VIEWER_MAP.has(this._datavis)) {
const datagrid = VIEWER_MAP.get(this._datavis);
datagrid.restore(config);
} else {
this._plugin_config = config;
}
}
}

/**
Expand Down