fix issue with setting false (#9611)

This commit is contained in:
Anthony Dresser
2020-03-16 11:12:57 -07:00
committed by GitHub
parent 11cf5654bf
commit 0405658be7
7 changed files with 71 additions and 8 deletions

View File

@@ -5,6 +5,7 @@
import { dispose, Disposable } from 'vs/base/common/lifecycle';
import { Event, Emitter } from 'vs/base/common/event';
import { isUndefined } from 'vs/base/common/types';
export class GridPanelState {
public tableStates: GridTableState[] = [];
@@ -30,7 +31,7 @@ export class GridTableState extends Disposable {
/* The top row of the current scroll */
public scrollPositionY = 0;
public scrollPositionX = 0;
public columnSizes?: number[] = undefined;
public columnSizes?: number[];
public selection?: Slick.Range[];
public activeCell?: Slick.Cell;
@@ -43,7 +44,7 @@ export class GridTableState extends Disposable {
}
public set canBeMaximized(val: boolean | undefined) {
if (!val || val === this._canBeMaximized) {
if (isUndefined(val) || val === this._canBeMaximized) {
return;
}
this._canBeMaximized = val;
@@ -55,7 +56,7 @@ export class GridTableState extends Disposable {
}
public set maximized(val: boolean | undefined) {
if (!val || val === this._maximized) {
if (isUndefined(val) || val === this._maximized) {
return;
}
this._maximized = val;

View File

@@ -10,7 +10,7 @@ import { TopOperationsState } from 'sql/workbench/common/editor/query/topOperati
import { ChartState } from 'sql/workbench/common/editor/query/chartState';
import { QueryPlanState } from 'sql/workbench/common/editor/query/queryPlanState';
import { MessagePanelState } from 'sql/workbench/common/editor/query/messagePanelState';
import { GridPanelState } from 'sql/workbench/common/editor/query/gridPanelState';
import { GridPanelState } from 'sql/workbench/common/editor/query/gridTableState';
import { QueryModelViewState } from 'sql/workbench/common/editor/query/modelViewState';
import { URI } from 'vs/base/common/uri';

View File

@@ -24,7 +24,7 @@ import { AngularDisposable } from 'sql/base/browser/lifecycle';
import { IMimeComponent } from 'sql/workbench/contrib/notebook/browser/outputs/mimeRegistry';
import { ICellModel } from 'sql/workbench/services/notebook/browser/models/modelInterfaces';
import { MimeModel } from 'sql/workbench/services/notebook/browser/outputs/mimemodel';
import { GridTableState } from 'sql/workbench/common/editor/query/gridPanelState';
import { GridTableState } from 'sql/workbench/common/editor/query/gridTableState';
import { GridTableBase } from 'sql/workbench/contrib/query/browser/gridPanel';
import { getErrorMessage } from 'vs/base/common/errors';
import { ISerializationService, SerializeDataParams } from 'sql/platform/serialization/common/serializationService';

View File

@@ -17,7 +17,7 @@ import { removeAnsiEscapeCodes } from 'vs/base/common/strings';
import { IGridDataProvider } from 'sql/workbench/services/query/common/gridDataProvider';
import { INotificationService } from 'vs/platform/notification/common/notification';
import QueryRunner from 'sql/workbench/services/query/common/queryRunner';
import { GridTableState } from 'sql/workbench/common/editor/query/gridPanelState';
import { GridTableState } from 'sql/workbench/common/editor/query/gridTableState';
import * as Constants from 'sql/workbench/contrib/extensions/common/constants';
import { IAdsTelemetryService } from 'sql/platform/telemetry/common/telemetry';
import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';

View File

@@ -44,7 +44,7 @@ import { localize } from 'vs/nls';
import { IGridDataProvider } from 'sql/workbench/services/query/common/gridDataProvider';
import { formatDocumentWithSelectedProvider, FormattingMode } from 'vs/editor/contrib/format/format';
import { CancellationToken } from 'vs/base/common/cancellation';
import { GridPanelState, GridTableState } from 'sql/workbench/common/editor/query/gridPanelState';
import { GridPanelState, GridTableState } from 'sql/workbench/common/editor/query/gridTableState';
import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService';
import { SaveFormat } from 'sql/workbench/services/query/common/resultSerializer';
import { Progress } from 'vs/platform/progress/common/progress';

View File

@@ -14,7 +14,7 @@ import { QueryPlanTab } from 'sql/workbench/contrib/queryPlan/browser/queryPlan'
import { TopOperationsTab } from 'sql/workbench/contrib/queryPlan/browser/topOperations';
import { QueryModelViewTab } from 'sql/workbench/contrib/query/browser/modelViewTab/queryModelViewTab';
import { MessagePanelState } from 'sql/workbench/common/editor/query/messagePanelState';
import { GridPanelState } from 'sql/workbench/common/editor/query/gridPanelState';
import { GridPanelState } from 'sql/workbench/common/editor/query/gridTableState';
import * as nls from 'vs/nls';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';

View File

@@ -0,0 +1,62 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { GridTableState } from 'sql/workbench/common/editor/query/gridTableState';
import * as assert from 'assert';
import { isUndefined } from 'vs/base/common/types';
import { Event } from 'vs/base/common/event';
suite('Grid Table State', () => {
test('inital state is correct', () => {
const resultId = 0;
const batchId = 0;
const state = new GridTableState(resultId, batchId);
assert.equal(state.resultId, resultId);
assert.equal(state.batchId, batchId);
assert(isUndefined(state.canBeMaximized));
assert(isUndefined(state.maximized));
assert.equal(state.scrollPositionX, 0);
assert.equal(state.scrollPositionY, 0);
assert(isUndefined(state.columnSizes));
assert(isUndefined(state.selection));
assert(isUndefined(state.activeCell));
});
test('does set properties correctly', async () => {
const state = new GridTableState(0, 0);
let event = await new Promise<boolean>(resolve => {
Event.once(state.onCanBeMaximizedChange)(e => resolve(e));
state.canBeMaximized = true;
});
assert.equal(event, true);
assert.equal(state.canBeMaximized, true);
event = await new Promise<boolean>(resolve => {
Event.once(state.onCanBeMaximizedChange)(e => resolve(e));
state.canBeMaximized = false;
});
assert.equal(event, false);
assert.equal(state.canBeMaximized, false);
event = await new Promise<boolean>(resolve => {
Event.once(state.onMaximizedChange)(e => resolve(e));
state.maximized = true;
});
assert.equal(event, true);
assert.equal(state.maximized, true);
event = await new Promise<boolean>(resolve => {
Event.once(state.onMaximizedChange)(e => resolve(e));
state.maximized = false;
});
assert.equal(event, false);
assert.equal(state.maximized, false);
});
});