(core) Raw renames

Summary:
A new way for renaming tables.

  - There is a new popup to rename section (where you can also rename the table)
  - Renaming/Deleting page doesn't modify/delete the table.
  - Renaming table can rename a page if the names match (and the page contains a section with that table).
  - User can rename table in Raw Data UI in two ways - either on the listing or by using the section name popup
  - As before, there is no way to change tableId - it is derived from a table name.
  - When the section name is empty the table name is shown instead.
  - White space for section name is allowed (to discuss) - so the user can just paste '   '.
  - Empty name for a page is not allowed (but white space is).
  - Some bugs related to deleting tables with attached summary tables (and with undoing this operation) were fixed (but not all of them yet).

Test Plan: Updated tests.

Reviewers: georgegevoian

Reviewed By: georgegevoian

Subscribers: georgegevoian

Differential Revision: https://phab.getgrist.com/D3360
This commit is contained in:
Jarosław Sadziński
2022-04-27 19:46:24 +02:00
parent 8a1cca629b
commit 6f00106d7c
37 changed files with 946 additions and 452 deletions

View File

@@ -68,9 +68,19 @@ MetaTableModel.prototype.loadData = function() {
* when the row is deleted; in that case lacking such dependency may cause subtle rare bugs.
*/
MetaTableModel.prototype.getRowModel = function(rowId, optDependOnVersion) {
let r = this.rowModels[rowId] || this.getEmptyRowModel();
const rowIdModel = this.rowModels[rowId];
const r = rowIdModel || this.getEmptyRowModel();
if (optDependOnVersion) {
this._rowModelVersions[rowId]();
// Versions are never deleted, so even if the rowModel is deleted, we still have its version
// in this list.
const version = this._rowModelVersions[rowId];
if (version) {
// Subscribe to updates for rowModel at rowId.
version();
} else {
// It shouldn't happen, but maybe it would be better to add an empty version observable at rowId.
// If it happens, it means we tried to get non existing row (row that wasn't created previously).
}
}
return r;
};