Compare commits

..

1 Commits

Author SHA1 Message Date
sunilyadav840
bd1009c849 fixed eslint of ConflictsTab 2021-10-20 14:13:47 +05:30
3 changed files with 47 additions and 43 deletions

View File

@@ -84,9 +84,9 @@ src/Explorer/Tables/DataTable/DataTableOperationManager.ts
src/Explorer/Tables/DataTable/DataTableViewModel.ts src/Explorer/Tables/DataTable/DataTableViewModel.ts
src/Explorer/Tables/DataTable/TableEntityListViewModel.ts src/Explorer/Tables/DataTable/TableEntityListViewModel.ts
src/Explorer/Tables/QueryBuilder/CustomTimestampHelper.ts src/Explorer/Tables/QueryBuilder/CustomTimestampHelper.ts
src/Explorer/Tables/TableDataClient.ts
src/Explorer/Tables/TableEntityProcessor.ts src/Explorer/Tables/TableEntityProcessor.ts
src/Explorer/Tables/Utilities.ts src/Explorer/Tables/Utilities.ts
src/Explorer/Tabs/ConflictsTab.ts
src/Explorer/Tabs/DatabaseSettingsTab.ts src/Explorer/Tabs/DatabaseSettingsTab.ts
src/Explorer/Tabs/DocumentsTab.test.ts src/Explorer/Tabs/DocumentsTab.test.ts
src/Explorer/Tabs/DocumentsTab.ts src/Explorer/Tabs/DocumentsTab.ts

View File

@@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { FeedOptions } from "@azure/cosmos"; import { FeedOptions } from "@azure/cosmos";
import * as ko from "knockout"; import * as ko from "knockout";
import Q from "q"; import Q from "q";
@@ -32,6 +31,8 @@ export interface CassandraTableKey {
} }
export abstract class TableDataClient { export abstract class TableDataClient {
constructor() {}
public abstract createDocument( public abstract createDocument(
collection: ViewModels.Collection, collection: ViewModels.Collection,
entity: Entities.ITableEntity entity: Entities.ITableEntity
@@ -53,7 +54,7 @@ export abstract class TableDataClient {
public abstract deleteDocuments( public abstract deleteDocuments(
collection: ViewModels.Collection, collection: ViewModels.Collection,
entitiesToDelete: Entities.ITableEntity[] entitiesToDelete: Entities.ITableEntity[]
): Promise<unknown>; ): Promise<any>;
} }
export class TablesAPIDataClient extends TableDataClient { export class TablesAPIDataClient extends TableDataClient {
@@ -66,7 +67,7 @@ export class TablesAPIDataClient extends TableDataClient {
collection, collection,
TableEntityProcessor.convertEntityToNewDocument(<Entities.ITableEntityForTablesAPI>entity) TableEntityProcessor.convertEntityToNewDocument(<Entities.ITableEntityForTablesAPI>entity)
).then( ).then(
(newDocument: unknown) => { (newDocument: any) => {
const newEntity = TableEntityProcessor.convertDocumentsToEntities([newDocument])[0]; const newEntity = TableEntityProcessor.convertDocumentsToEntities([newDocument])[0];
deferred.resolve(newEntity); deferred.resolve(newEntity);
}, },
@@ -145,7 +146,7 @@ export class CassandraAPIDataClient extends TableDataClient {
const clearInProgressMessage = logConsoleProgress(`Adding new row to table ${collection.id()}`); const clearInProgressMessage = logConsoleProgress(`Adding new row to table ${collection.id()}`);
let properties = "("; let properties = "(";
let values = "("; let values = "(";
for (const property in entity) { for (let property in entity) {
if (entity[property]._ === null) { if (entity[property]._ === null) {
continue; continue;
} }
@@ -163,7 +164,7 @@ export class CassandraAPIDataClient extends TableDataClient {
const deferred = Q.defer<Entities.ITableEntity>(); const deferred = Q.defer<Entities.ITableEntity>();
this.queryDocuments(collection, query) this.queryDocuments(collection, query)
.then( .then(
() => { (data: any) => {
entity[TableConstants.EntityKeyNames.RowKey] = entity[this.getCassandraPartitionKeyProperty(collection)]; entity[TableConstants.EntityKeyNames.RowKey] = entity[this.getCassandraPartitionKeyProperty(collection)];
entity[TableConstants.EntityKeyNames.RowKey]._ = entity[TableConstants.EntityKeyNames.RowKey]._.toString(); entity[TableConstants.EntityKeyNames.RowKey]._ = entity[TableConstants.EntityKeyNames.RowKey]._.toString();
logConsoleInfo(`Successfully added new row to table ${collection.id()}`); logConsoleInfo(`Successfully added new row to table ${collection.id()}`);
@@ -187,10 +188,10 @@ export class CassandraAPIDataClient extends TableDataClient {
try { try {
let whereSegment = " WHERE"; let whereSegment = " WHERE";
const keys: CassandraTableKey[] = collection.cassandraKeys.partitionKeys.concat( let keys: CassandraTableKey[] = collection.cassandraKeys.partitionKeys.concat(
collection.cassandraKeys.clusteringKeys collection.cassandraKeys.clusteringKeys
); );
for (const keyIndex in keys) { for (let keyIndex in keys) {
const key = keys[keyIndex].property; const key = keys[keyIndex].property;
const keyType = keys[keyIndex].type; const keyType = keys[keyIndex].type;
whereSegment += this.isStringType(keyType) whereSegment += this.isStringType(keyType)
@@ -202,7 +203,7 @@ export class CassandraAPIDataClient extends TableDataClient {
let updateQuery = `UPDATE ${collection.databaseId}.${collection.id()}`; let updateQuery = `UPDATE ${collection.databaseId}.${collection.id()}`;
let isPropertyUpdated = false; let isPropertyUpdated = false;
let isFirstPropertyToUpdate = true; let isFirstPropertyToUpdate = true;
for (const property in newEntity) { for (let property in newEntity) {
if ( if (
!originalDocument[property] || !originalDocument[property] ||
newEntity[property]._.toString() !== originalDocument[property]._.toString() newEntity[property]._.toString() !== originalDocument[property]._.toString()
@@ -228,7 +229,7 @@ export class CassandraAPIDataClient extends TableDataClient {
let deleteQuery = `DELETE `; let deleteQuery = `DELETE `;
let isPropertyDeleted = false; let isPropertyDeleted = false;
for (const property in originalDocument) { for (let property in originalDocument) {
if (property !== TableConstants.EntityKeyNames.RowKey && !newEntity[property] && !!originalDocument[property]) { if (property !== TableConstants.EntityKeyNames.RowKey && !newEntity[property] && !!originalDocument[property]) {
deleteQuery += ` ${property},`; deleteQuery += ` ${property},`;
isPropertyDeleted = true; isPropertyDeleted = true;
@@ -332,16 +333,16 @@ export class CassandraAPIDataClient extends TableDataClient {
resourceId: string, resourceId: string,
explorer: Explorer, explorer: Explorer,
createKeyspaceQuery: string createKeyspaceQuery: string
): Q.Promise<unknown> { ): Q.Promise<any> {
if (!createKeyspaceQuery) { if (!createKeyspaceQuery) {
return Q.reject("No query specified"); return Q.reject("No query specified");
} }
const deferred: Q.Deferred<unknown> = Q.defer(); const deferred: Q.Deferred<any> = Q.defer();
const clearInProgressMessage = logConsoleProgress(`Creating a new keyspace with query ${createKeyspaceQuery}`); const clearInProgressMessage = logConsoleProgress(`Creating a new keyspace with query ${createKeyspaceQuery}`);
this.createOrDeleteQuery(cassandraEndpoint, resourceId, createKeyspaceQuery) this.createOrDeleteQuery(cassandraEndpoint, resourceId, createKeyspaceQuery)
.then( .then(
() => { (data: any) => {
logConsoleInfo(`Successfully created a keyspace with query ${createKeyspaceQuery}`); logConsoleInfo(`Successfully created a keyspace with query ${createKeyspaceQuery}`);
deferred.resolve(); deferred.resolve();
}, },
@@ -365,8 +366,8 @@ export class CassandraAPIDataClient extends TableDataClient {
explorer: Explorer, explorer: Explorer,
createTableQuery: string, createTableQuery: string,
createKeyspaceQuery?: string createKeyspaceQuery?: string
): Q.Promise<unknown> { ): Q.Promise<any> {
let createKeyspacePromise: Q.Promise<unknown>; let createKeyspacePromise: Q.Promise<any>;
if (createKeyspaceQuery) { if (createKeyspaceQuery) {
createKeyspacePromise = this.createKeyspace(cassandraEndpoint, resourceId, explorer, createKeyspaceQuery); createKeyspacePromise = this.createKeyspace(cassandraEndpoint, resourceId, explorer, createKeyspaceQuery);
} else { } else {
@@ -379,7 +380,7 @@ export class CassandraAPIDataClient extends TableDataClient {
const clearInProgressMessage = logConsoleProgress(`Creating a new table with query ${createTableQuery}`); const clearInProgressMessage = logConsoleProgress(`Creating a new table with query ${createTableQuery}`);
this.createOrDeleteQuery(cassandraEndpoint, resourceId, createTableQuery) this.createOrDeleteQuery(cassandraEndpoint, resourceId, createTableQuery)
.then( .then(
() => { (data: any) => {
logConsoleInfo(`Successfully created a table with query ${createTableQuery}`); logConsoleInfo(`Successfully created a table with query ${createTableQuery}`);
deferred.resolve(); deferred.resolve();
}, },
@@ -398,7 +399,7 @@ export class CassandraAPIDataClient extends TableDataClient {
} }
public getTableKeys(collection: ViewModels.Collection): Q.Promise<CassandraTableKeys> { public getTableKeys(collection: ViewModels.Collection): Q.Promise<CassandraTableKeys> {
if (collection.cassandraKeys) { if (!!collection.cassandraKeys) {
return Q.resolve(collection.cassandraKeys); return Q.resolve(collection.cassandraKeys);
} }
const clearInProgressMessage = logConsoleProgress(`Fetching keys for table ${collection.id()}`); const clearInProgressMessage = logConsoleProgress(`Fetching keys for table ${collection.id()}`);
@@ -407,7 +408,7 @@ export class CassandraAPIDataClient extends TableDataClient {
authType === AuthType.EncryptedToken authType === AuthType.EncryptedToken
? Constants.CassandraBackend.guestKeysApi ? Constants.CassandraBackend.guestKeysApi
: Constants.CassandraBackend.keysApi; : Constants.CassandraBackend.keysApi;
const endpoint = `${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`; let endpoint = `${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`;
const deferred = Q.defer<CassandraTableKeys>(); const deferred = Q.defer<CassandraTableKeys>();
$.ajax(endpoint, { $.ajax(endpoint, {
@@ -428,7 +429,7 @@ export class CassandraAPIDataClient extends TableDataClient {
logConsoleInfo(`Successfully fetched keys for table ${collection.id()}`); logConsoleInfo(`Successfully fetched keys for table ${collection.id()}`);
deferred.resolve(data); deferred.resolve(data);
}, },
(error: Error) => { (error: any) => {
handleError(error, "FetchKeysCassandra", `Error fetching keys for table ${collection.id()}`); handleError(error, "FetchKeysCassandra", `Error fetching keys for table ${collection.id()}`);
deferred.reject(error); deferred.reject(error);
} }
@@ -438,7 +439,7 @@ export class CassandraAPIDataClient extends TableDataClient {
} }
public getTableSchema(collection: ViewModels.Collection): Q.Promise<CassandraTableKey[]> { public getTableSchema(collection: ViewModels.Collection): Q.Promise<CassandraTableKey[]> {
if (collection.cassandraSchema) { if (!!collection.cassandraSchema) {
return Q.resolve(collection.cassandraSchema); return Q.resolve(collection.cassandraSchema);
} }
const clearInProgressMessage = logConsoleProgress(`Fetching schema for table ${collection.id()}`); const clearInProgressMessage = logConsoleProgress(`Fetching schema for table ${collection.id()}`);
@@ -447,7 +448,7 @@ export class CassandraAPIDataClient extends TableDataClient {
authType === AuthType.EncryptedToken authType === AuthType.EncryptedToken
? Constants.CassandraBackend.guestSchemaApi ? Constants.CassandraBackend.guestSchemaApi
: Constants.CassandraBackend.schemaApi; : Constants.CassandraBackend.schemaApi;
const endpoint = `${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`; let endpoint = `${configContext.BACKEND_ENDPOINT}/${apiEndpoint}`;
const deferred = Q.defer<CassandraTableKey[]>(); const deferred = Q.defer<CassandraTableKey[]>();
$.ajax(endpoint, { $.ajax(endpoint, {
@@ -468,7 +469,7 @@ export class CassandraAPIDataClient extends TableDataClient {
logConsoleInfo(`Successfully fetched schema for table ${collection.id()}`); logConsoleInfo(`Successfully fetched schema for table ${collection.id()}`);
deferred.resolve(data.columns); deferred.resolve(data.columns);
}, },
(error: Error) => { (error: any) => {
handleError(error, "FetchSchemaCassandra", `Error fetching schema for table ${collection.id()}`); handleError(error, "FetchSchemaCassandra", `Error fetching schema for table ${collection.id()}`);
deferred.reject(error); deferred.reject(error);
} }
@@ -495,7 +496,7 @@ export class CassandraAPIDataClient extends TableDataClient {
beforeSend: this.setAuthorizationHeader, beforeSend: this.setAuthorizationHeader,
cache: false, cache: false,
}).then( }).then(
() => { (data: any) => {
deferred.resolve(); deferred.resolve();
}, },
(reason) => { (reason) => {

View File

@@ -1,3 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/switch-exhaustiveness-check */
import { ConflictDefinition, FeedOptions, QueryIterator, Resource } from "@azure/cosmos"; import { ConflictDefinition, FeedOptions, QueryIterator, Resource } from "@azure/cosmos";
import * as ko from "knockout"; import * as ko from "knockout";
import Q from "q"; import Q from "q";
@@ -69,13 +71,13 @@ export default class ConflictsTab extends TabsBase {
ViewModels.DocumentExplorerState.noDocumentSelected ViewModels.DocumentExplorerState.noDocumentSelected
); );
this.selectedConflictId = ko.observable<ConflictId>(); this.selectedConflictId = ko.observable<ConflictId>();
this.selectedConflictContent = editable.observable<any>(""); this.selectedConflictContent = editable.observable<string>("");
this.selectedConflictCurrent = editable.observable<any>(""); this.selectedConflictCurrent = editable.observable<string>("");
this.partitionKey = options.partitionKey || (this.collection && this.collection.partitionKey); this.partitionKey = options.partitionKey || (this.collection && this.collection.partitionKey);
this.conflictIds = options.conflictIds; this.conflictIds = options.conflictIds;
this.partitionKeyPropertyHeader = this.partitionKeyPropertyHeader =
(this.collection && this.collection.partitionKeyPropertyHeader) || this._getPartitionKeyPropertyHeader(); (this.collection && this.collection.partitionKeyPropertyHeader) || this._getPartitionKeyPropertyHeader();
this.partitionKeyProperty = !!this.partitionKeyPropertyHeader this.partitionKeyProperty = this.partitionKeyPropertyHeader
? this.partitionKeyPropertyHeader.replace(/[/]+/g, ".").substr(1).replace(/[']+/g, "") ? this.partitionKeyPropertyHeader.replace(/[/]+/g, ".").substr(1).replace(/[']+/g, "")
: null; : null;
@@ -187,7 +189,7 @@ export default class ConflictsTab extends TabsBase {
this.buildCommandBarOptions(); this.buildCommandBarOptions();
this.shouldShowDiffEditor = ko.pureComputed<boolean>(() => { this.shouldShowDiffEditor = ko.pureComputed<boolean>(() => {
const documentHasContent: boolean = const documentHasContent: boolean =
this.selectedConflictContent() != null && this.selectedConflictContent().length > 0; this.selectedConflictContent() !== null && this.selectedConflictContent().length > 0;
const operationIsReplace: boolean = this.conflictOperation() === Constants.ConflictOperationType.Replace; const operationIsReplace: boolean = this.conflictOperation() === Constants.ConflictOperationType.Replace;
const isLoadingData: boolean = this.loadingConflictData(); const isLoadingData: boolean = this.loadingConflictData();
return documentHasContent && operationIsReplace && !isLoadingData; return documentHasContent && operationIsReplace && !isLoadingData;
@@ -195,7 +197,7 @@ export default class ConflictsTab extends TabsBase {
this.shouldShowEditor = ko.pureComputed<boolean>(() => { this.shouldShowEditor = ko.pureComputed<boolean>(() => {
const documentHasContent: boolean = const documentHasContent: boolean =
this.selectedConflictContent() != null && this.selectedConflictContent().length > 0; this.selectedConflictContent() !== null && this.selectedConflictContent().length > 0;
const operationIsInsert: boolean = this.conflictOperation() === Constants.ConflictOperationType.Create; const operationIsInsert: boolean = this.conflictOperation() === Constants.ConflictOperationType.Create;
const operationIsDelete: boolean = this.conflictOperation() === Constants.ConflictOperationType.Delete; const operationIsDelete: boolean = this.conflictOperation() === Constants.ConflictOperationType.Delete;
const isLoadingData: boolean = this.loadingConflictData(); const isLoadingData: boolean = this.loadingConflictData();
@@ -242,7 +244,7 @@ export default class ConflictsTab extends TabsBase {
return true; return true;
}; };
public onConflictIdClick(clickedDocumentId: ConflictId): Q.Promise<any> { public onConflictIdClick(): Q.Promise<unknown> {
if (this.editorState() !== ViewModels.DocumentExplorerState.noDocumentSelected) { if (this.editorState() !== ViewModels.DocumentExplorerState.noDocumentSelected) {
return Q(); return Q();
} }
@@ -405,19 +407,19 @@ export default class ConflictsTab extends TabsBase {
} }
}; };
public onDiscardClick = (): Q.Promise<any> => { public onDiscardClick = (): Q.Promise<unknown> => {
this.selectedConflictContent(this.selectedConflictContent.getEditableOriginalValue()); this.selectedConflictContent(this.selectedConflictContent.getEditableOriginalValue());
this.editorState(ViewModels.DocumentExplorerState.exisitingDocumentNoEdits); this.editorState(ViewModels.DocumentExplorerState.exisitingDocumentNoEdits);
return Q(); return Q();
}; };
public onValidDocumentEdit(): Q.Promise<any> { public onValidDocumentEdit(): Q.Promise<unknown> {
this.editorState(ViewModels.DocumentExplorerState.exisitingDocumentDirtyValid); this.editorState(ViewModels.DocumentExplorerState.exisitingDocumentDirtyValid);
return Q(); return Q();
} }
public onInvalidDocumentEdit(): Q.Promise<any> { public onInvalidDocumentEdit(): Q.Promise<unknown> {
if ( if (
this.editorState() === ViewModels.DocumentExplorerState.exisitingDocumentNoEdits || this.editorState() === ViewModels.DocumentExplorerState.exisitingDocumentNoEdits ||
this.editorState() === ViewModels.DocumentExplorerState.exisitingDocumentDirtyValid this.editorState() === ViewModels.DocumentExplorerState.exisitingDocumentDirtyValid
@@ -442,7 +444,7 @@ export default class ConflictsTab extends TabsBase {
this._documentsIterator = await this.createIterator(); this._documentsIterator = await this.createIterator();
await this.loadNextPage(); await this.loadNextPage();
} catch (error) { } catch (error) {
if (this.onLoadStartKey != null && this.onLoadStartKey != undefined) { if (this.onLoadStartKey !== null && this.onLoadStartKey !== undefined) {
TelemetryProcessor.traceFailure( TelemetryProcessor.traceFailure(
Action.Tab, Action.Tab,
{ {
@@ -471,7 +473,7 @@ export default class ConflictsTab extends TabsBase {
return queryConflicts(this.collection.databaseId, this.collection.id(), query, options as FeedOptions); return queryConflicts(this.collection.databaseId, this.collection.id(), query, options as FeedOptions);
} }
public loadNextPage(): Q.Promise<any> { public loadNextPage(): Q.Promise<unknown> {
this.isExecuting(true); this.isExecuting(true);
this.isExecutionError(false); this.isExecutionError(false);
return this._loadNextPageInternal() return this._loadNextPageInternal()
@@ -491,7 +493,7 @@ export default class ConflictsTab extends TabsBase {
const merged = currentConflicts.concat(nextConflictIds); const merged = currentConflicts.concat(nextConflictIds);
this.conflictIds(merged); this.conflictIds(merged);
if (this.onLoadStartKey != null && this.onLoadStartKey != undefined) { if (this.onLoadStartKey !== null && this.onLoadStartKey !== undefined) {
TelemetryProcessor.traceSuccess( TelemetryProcessor.traceSuccess(
Action.Tab, Action.Tab,
{ {
@@ -508,7 +510,7 @@ export default class ConflictsTab extends TabsBase {
}, },
(error) => { (error) => {
this.isExecutionError(true); this.isExecutionError(true);
if (this.onLoadStartKey != null && this.onLoadStartKey != undefined) { if (this.onLoadStartKey !== null && this.onLoadStartKey !== undefined) {
TelemetryProcessor.traceFailure( TelemetryProcessor.traceFailure(
Action.Tab, Action.Tab,
{ {
@@ -541,18 +543,18 @@ export default class ConflictsTab extends TabsBase {
return Q(this._documentsIterator.fetchNext().then((response) => response.resources)); return Q(this._documentsIterator.fetchNext().then((response) => response.resources));
} }
protected _onEditorContentChange(newContent: string) { // eslint-disable-next-line @typescript-eslint/no-unused-vars
protected _onEditorContentChange(_newContent: string) {
try { try {
const parsed: any = JSON.parse(newContent);
this.onValidDocumentEdit(); this.onValidDocumentEdit();
} catch (e) { } catch (e) {
this.onInvalidDocumentEdit(); this.onInvalidDocumentEdit();
} }
} }
public initDocumentEditorForCreate(documentId: ConflictId, documentToInsert: any): Q.Promise<any> { public initDocumentEditorForCreate(documentId: ConflictId, documentToInsert: any): Q.Promise<unknown> {
if (documentId) { if (documentId) {
let parsedConflictContent: any = JSON.parse(documentToInsert); const parsedConflictContent: any = JSON.parse(documentToInsert);
const renderedConflictContent: string = this.renderObjectForEditor(parsedConflictContent, null, 4); const renderedConflictContent: string = this.renderObjectForEditor(parsedConflictContent, null, 4);
this.selectedConflictContent.setBaseline(renderedConflictContent); this.selectedConflictContent.setBaseline(renderedConflictContent);
this.editorState(ViewModels.DocumentExplorerState.exisitingDocumentNoEdits); this.editorState(ViewModels.DocumentExplorerState.exisitingDocumentNoEdits);
@@ -565,7 +567,7 @@ export default class ConflictsTab extends TabsBase {
documentId: ConflictId, documentId: ConflictId,
conflictContent: any, conflictContent: any,
currentContent: any currentContent: any
): Q.Promise<any> { ): Q.Promise<unknown> {
if (documentId) { if (documentId) {
currentContent = ConflictsTab.removeSystemProperties(currentContent); currentContent = ConflictsTab.removeSystemProperties(currentContent);
const renderedCurrentContent: string = this.renderObjectForEditor(currentContent, null, 4); const renderedCurrentContent: string = this.renderObjectForEditor(currentContent, null, 4);
@@ -582,7 +584,7 @@ export default class ConflictsTab extends TabsBase {
return Q(); return Q();
} }
public initDocumentEditorForDelete(documentId: ConflictId, documentToDelete: any): Q.Promise<any> { public initDocumentEditorForDelete(documentId: ConflictId, documentToDelete: any): Q.Promise<unknown> {
if (documentId) { if (documentId) {
let parsedDocumentToDelete: any = JSON.parse(documentToDelete); let parsedDocumentToDelete: any = JSON.parse(documentToDelete);
parsedDocumentToDelete = ConflictsTab.removeSystemProperties(parsedDocumentToDelete); parsedDocumentToDelete = ConflictsTab.removeSystemProperties(parsedDocumentToDelete);
@@ -594,7 +596,8 @@ export default class ConflictsTab extends TabsBase {
return Q(); return Q();
} }
public initDocumentEditorForNoOp(documentId: ConflictId): Q.Promise<any> { // eslint-disable-next-line @typescript-eslint/no-unused-vars
public initDocumentEditorForNoOp(_documentId: ConflictId): Q.Promise<unknown> {
this.selectedConflictContent(null); this.selectedConflictContent(null);
this.selectedConflictCurrent(null); this.selectedConflictCurrent(null);
this.editorState(ViewModels.DocumentExplorerState.noDocumentSelected); this.editorState(ViewModels.DocumentExplorerState.noDocumentSelected);