Fix rows loading indefinitely when no rows are returned.
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
parent
2513e711b1
commit
2753b6eb9f
1 changed files with 13 additions and 4 deletions
|
@ -85,6 +85,12 @@ class AsyncManager<CK extends ColumnKey>
|
||||||
protected promisedRowsCells: Partial<Record<CK, Promised<CellDefinition>>>[] = [];
|
protected promisedRowsCells: Partial<Record<CK, Promised<CellDefinition>>>[] = [];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tells if rows are loaded or not.
|
||||||
|
* @protected
|
||||||
|
*/
|
||||||
|
protected rowsLoaded: boolean = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Rows data.
|
* Rows data.
|
||||||
* @protected
|
* @protected
|
||||||
|
@ -109,6 +115,7 @@ class AsyncManager<CK extends ColumnKey>
|
||||||
*/
|
*/
|
||||||
handle(data: SmartableData<CK>): void
|
handle(data: SmartableData<CK>): void
|
||||||
{
|
{
|
||||||
|
this.rowsLoaded = false;
|
||||||
this.promisedData.refresh(data);
|
this.promisedData.refresh(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,6 +132,7 @@ class AsyncManager<CK extends ColumnKey>
|
||||||
// Initialize rows data and cells definitions.
|
// Initialize rows data and cells definitions.
|
||||||
this.rowsData = [];
|
this.rowsData = [];
|
||||||
this.cellsDefinitions = [];
|
this.cellsDefinitions = [];
|
||||||
|
this.rowsLoaded = true;
|
||||||
|
|
||||||
for (const [rowId, rowDefinition] of rowsDefinitions.entries())
|
for (const [rowId, rowDefinition] of rowsDefinitions.entries())
|
||||||
{ // Get row data of each row.
|
{ // Get row data of each row.
|
||||||
|
@ -218,20 +226,21 @@ class AsyncManager<CK extends ColumnKey>
|
||||||
{
|
{
|
||||||
if (!(
|
if (!(
|
||||||
// Checking that there is at least one changed value.
|
// Checking that there is at least one changed value.
|
||||||
this.rowsData.length > 0 && this.cellsDefinitions.some((rowCells) => (
|
this.rowsData.length > 0 || this.cellsDefinitions.some((rowCells) => (
|
||||||
Object.keys(rowCells).length > 0
|
Object.keys(rowCells).length > 0
|
||||||
))
|
))
|
||||||
|
|| ((this.rowsLoaded && !this.currentDataState.rows) || (!this.rowsLoaded && this.currentDataState.rows))
|
||||||
)) // Nothing has changed.
|
)) // Nothing has changed.
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Initialize new data.
|
// Initialize new data.
|
||||||
const newData = {
|
const newData = {
|
||||||
rows: [
|
rows: !this.rowsLoaded ? undefined : [
|
||||||
...(this.currentDataState?.rows ?? [])
|
...(this.currentDataState?.rows ?? [])
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const [rowId, newRow] of this.rowsData.entries())
|
for (const [rowId, newRow] of this.rowsData?.entries())
|
||||||
{ // Update value of each new row.
|
{ // Update value of each new row.
|
||||||
newData.rows[rowId] = {
|
newData.rows[rowId] = {
|
||||||
element: newRow.element,
|
element: newRow.element,
|
||||||
|
@ -240,7 +249,7 @@ class AsyncManager<CK extends ColumnKey>
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const [rowId, rowCells] of this.cellsDefinitions.entries())
|
for (const [rowId, rowCells] of this.cellsDefinitions?.entries())
|
||||||
{ // Update cells of each changed row.
|
{ // Update cells of each changed row.
|
||||||
newData.rows[rowId] = {
|
newData.rows[rowId] = {
|
||||||
...newData.rows[rowId],
|
...newData.rows[rowId],
|
||||||
|
|
Loading…
Reference in a new issue