Skip to content

Commit d06437e

Browse files
authored
fix: enable schema browser when diverged, and fix divergence detection with multiline deletion event. (#5870)
* fix: enable schema browsing while diverged * fix: detected divergence when deleted lines produce an onChange event with range outside of current/new composition block size * fix: because of counting in SchemaBrowser tests, need to only create 2nd bucket for SchemaComposition tests
1 parent 5667a8c commit d06437e

File tree

3 files changed

+37
-12
lines changed

3 files changed

+37
-12
lines changed

cypress/e2e/shared/fluxQueryBuilder.test.ts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,21 @@ const DEFAULT_SCHEMA = {
1212
}
1313

1414
describe('Script Builder', () => {
15+
const writeData: string[] = []
16+
for (let i = 0; i < 30; i++) {
17+
writeData.push(`ndbc,air_temp_degc=70_degrees station_id_${i}=${i}`)
18+
}
19+
1520
beforeEach(() => {
1621
cy.flush().then(() => {
1722
cy.signin().then(() => {
18-
cy.get('@org').then(({id}: Organization) => {
23+
cy.get('@org').then(({id, name}: Organization) => {
1924
cy.visit(`/orgs/${id}/data-explorer`)
2025
cy.getByTestID('tree-nav').should('be.visible')
2126
cy.setFeatureFlags({
2227
newDataExplorer: true,
2328
}).then(() => {
24-
const writeData = []
25-
for (let i = 0; i < 30; i++) {
26-
writeData.push(
27-
`ndbc,air_temp_degc=70_degrees station_id_${i}=${i}`
28-
)
29-
}
29+
cy.createBucket(id, name, 'defbuck2')
3030
cy.writeData(writeData, 'defbuck')
3131
cy.wait(100)
3232
cy.getByTestID('flux-query-builder-toggle').then($toggle => {
@@ -191,6 +191,8 @@ describe('Script Builder', () => {
191191
'// Start by selecting data from the schema browser or typing flux here'
192192

193193
beforeEach(() => {
194+
cy.writeData(writeData, 'defbuck2')
195+
194196
window.sessionStorage.setItem(
195197
'dataExplorer.schema',
196198
JSON.parse(JSON.stringify(DEFAULT_SCHEMA))
@@ -277,6 +279,14 @@ describe('Script Builder', () => {
277279

278280
cy.log('toggle is now disabled')
279281
cy.getByTestID('flux-sync--toggle').should('have.class', 'disabled')
282+
283+
cy.log('can still browse schema while diverged')
284+
cy.getByTestID('bucket-selector--dropdown-button').click()
285+
cy.getByTestID(`bucket-selector--dropdown--defbuck2`).click()
286+
cy.getByTestID('bucket-selector--dropdown-button').should(
287+
'contain',
288+
'defbuck2'
289+
)
280290
})
281291

282292
it('should clear the editor text, and schema browser, with a new script', () => {

src/dataExplorer/context/persistance.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ export const PersistanceProvider: FC = ({children}) => {
132132

133133
const setSchemaSelection = useCallback(
134134
schema => {
135-
if (selection.composition?.diverged && schema.composition.synced) {
135+
if (selection.composition?.diverged && schema.composition?.synced) {
136+
// cannot re-sync if diverged
136137
return
137138
}
138139
const nextState: SchemaSelection = {

src/languageSupport/languages/flux/lsp/connection.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,25 @@ class LspConnectionManager {
144144
return false
145145
}
146146
const {startLine, endLine} = compositionBlock
147-
return (
147+
148+
const changeInBlock =
148149
change.range.startLineNumber >= startLine &&
149-
(change.range.endLineNumber <= endLine ||
150-
change.text.includes(COMPOSITION_YIELD))
151-
)
150+
change.range.endLineNumber <= endLine
151+
152+
const changeWithCompositionIdentifier =
153+
change.text.includes(COMPOSITION_YIELD)
154+
155+
const isDeletion = change.text == ''
156+
let deletionFromBlock = false
157+
if (isDeletion) {
158+
const linesDeleted =
159+
change.range.endLineNumber - change.range.startLineNumber
160+
deletionFromBlock =
161+
change.range.startLineNumber >= startLine &&
162+
change.range.endLineNumber <= endLine + linesDeleted
163+
}
164+
165+
return changeInBlock || changeWithCompositionIdentifier || deletionFromBlock
152166
}
153167

154168
_setEditorIrreversibleExit() {

0 commit comments

Comments
 (0)