QueryEditor: remove slateAutocomplete toggle (#81696)

remove toggle
This commit is contained in:
Ashley Harrison 2024-02-01 13:03:11 +00:00 committed by GitHub
parent d0ecf863df
commit 3e01ba0f57
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 27 additions and 75 deletions

View File

@ -57,7 +57,6 @@ Some features are enabled by default. You can disable these feature by setting t
| `lokiQueryHints` | Enables query hints for Loki | Yes | | `lokiQueryHints` | Enables query hints for Loki | Yes |
| `alertingQueryOptimization` | Optimizes eligible queries in order to reduce load on datasources | | | `alertingQueryOptimization` | Optimizes eligible queries in order to reduce load on datasources | |
| `jitterAlertRules` | Distributes alert rule evaluations more evenly over time, by rule group | | | `jitterAlertRules` | Distributes alert rule evaluations more evenly over time, by rule group | |
| `slateAutocomplete` | Adjusts the behaviour of the slate editor to properly handle autocomplete. Feature toggled for safety. | Yes |
## Preview feature toggles ## Preview feature toggles

View File

@ -176,6 +176,5 @@ export interface FeatureToggles {
onPremToCloudMigrations?: boolean; onPremToCloudMigrations?: boolean;
alertingSaveStatePeriodic?: boolean; alertingSaveStatePeriodic?: boolean;
promQLScope?: boolean; promQLScope?: boolean;
slateAutocomplete?: boolean;
nodeGraphDotLayout?: boolean; nodeGraphDotLayout?: boolean;
} }

View File

@ -2,52 +2,28 @@ import { getNumCharsToDelete } from './suggestions';
describe('suggestions', () => { describe('suggestions', () => {
describe('getNumCharsToDelete', () => { describe('getNumCharsToDelete', () => {
describe('when slateAutocomplete is enabled', () => { const splunkCleanText = (s: string) => s.replace(/[{}[\]="(),!~+\-*/^%:\\]/g, '').trim();
let originalBootData = window.grafanaBootData; it.each([
// | represents the caret position
// hacky way to enable the feature toggle for this test ['$query0 ', '', '', false, 0, undefined, { forward: 0, backward: 0 }], // "|" --> "$query0 |"
beforeEach(() => { ['$query0 ', '$que', '$que', false, 0, undefined, { forward: 0, backward: 4 }], // "$que|" --> "$query0 |"
if (originalBootData) { ['$query0 ', '$q', '$que', false, 0, undefined, { forward: 2, backward: 2 }], // "$q|ue" --> "$query0 |"
window.grafanaBootData = { ['$query0 ', '$que', '($que)', false, 0, splunkCleanText, { forward: 0, backward: 4 }], // "($que|)" --> "($query0 |)"
...originalBootData, ['$query0 ', '$que', 'esarvotionUsagePercent=$que', false, 0, undefined, { forward: 0, backward: 4 }], // "esarvotionUsagePercent=$que|" --> "esarvotionUsagePercent=$query0 |"
settings: { ])(
...originalBootData.settings, 'should calculate the correct number of characters to delete forwards and backwards',
featureToggles: { (suggestionText, typeaheadPrefix, typeaheadText, preserveSuffix, deleteBackwards, cleanText, expected) => {
...originalBootData.settings.featureToggles, expect(
slateAutocomplete: true, getNumCharsToDelete(
}, suggestionText,
}, typeaheadPrefix,
}; typeaheadText,
} preserveSuffix,
}); deleteBackwards,
cleanText
afterEach(() => { )
window.grafanaBootData = originalBootData; ).toEqual(expected);
}); }
);
const splunkCleanText = (s: string) => s.replace(/[{}[\]="(),!~+\-*/^%:\\]/g, '').trim();
it.each([
// | represents the caret position
['$query0 ', '', '', false, 0, undefined, { forward: 0, backward: 0 }], // "|" --> "$query0 |"
['$query0 ', '$que', '$que', false, 0, undefined, { forward: 0, backward: 4 }], // "$que|" --> "$query0 |"
['$query0 ', '$q', '$que', false, 0, undefined, { forward: 2, backward: 2 }], // "$q|ue" --> "$query0 |"
['$query0 ', '$que', '($que)', false, 0, splunkCleanText, { forward: 0, backward: 4 }], // "($que|)" --> "($query0 |)"
['$query0 ', '$que', 'esarvotionUsagePercent=$que', false, 0, undefined, { forward: 0, backward: 4 }], // "esarvotionUsagePercent=$que|" --> "esarvotionUsagePercent=$query0 |"
])(
'should calculate the correct number of characters to delete forwards and backwards',
(suggestionText, typeaheadPrefix, typeaheadText, preserveSuffix, deleteBackwards, cleanText, expected) => {
expect(
getNumCharsToDelete(
suggestionText,
typeaheadPrefix,
typeaheadText,
preserveSuffix,
deleteBackwards,
cleanText
)
).toEqual(expected);
}
);
});
}); });
}); });

View File

@ -360,18 +360,10 @@ export function getNumCharsToDelete(
const text = cleanText ? cleanText(typeaheadText) : typeaheadText; const text = cleanText ? cleanText(typeaheadText) : typeaheadText;
const offset = typeaheadText.indexOf(typeaheadPrefix); const offset = typeaheadText.indexOf(typeaheadPrefix);
let forward: number; const suffixLength =
offset > -1 ? text.length - offset - typeaheadPrefix.length : text.length - typeaheadPrefix.length;
if (window.grafanaBootData?.settings.featureToggles['slateAutocomplete']) { const midWord = Boolean((typeaheadPrefix && suffixLength > 0) || suggestionText === typeaheadText);
const suffixLength = const forward = midWord && !preserveSuffix ? suffixLength + offset : 0;
offset > -1 ? text.length - offset - typeaheadPrefix.length : text.length - typeaheadPrefix.length;
const midWord = Boolean((typeaheadPrefix && suffixLength > 0) || suggestionText === typeaheadText);
forward = midWord && !preserveSuffix ? suffixLength + offset : 0;
} else {
const suffixLength = text.length - typeaheadPrefix.length;
const midWord = typeaheadPrefix && ((suffixLength > 0 && offset > -1) || suggestionText === typeaheadText);
forward = midWord && !preserveSuffix ? suffixLength + offset : 0;
}
return { return {
forward, forward,

View File

@ -1337,15 +1337,6 @@ var (
Owner: grafanaObservabilityMetricsSquad, Owner: grafanaObservabilityMetricsSquad,
Created: time.Date(2024, time.January, 29, 0, 0, 0, 0, time.UTC), Created: time.Date(2024, time.January, 29, 0, 0, 0, 0, time.UTC),
}, },
{
Name: "slateAutocomplete",
Description: "Adjusts the behaviour of the slate editor to properly handle autocomplete. Feature toggled for safety.",
Stage: FeatureStageGeneralAvailability,
Expression: "true", // enabled by default
FrontendOnly: true,
Owner: grafanaFrontendPlatformSquad,
Created: time.Date(2024, time.January, 29, 12, 0, 0, 0, time.UTC),
},
{ {
Name: "nodeGraphDotLayout", Name: "nodeGraphDotLayout",
Description: "Changed the layout algorithm for the node graph", Description: "Changed the layout algorithm for the node graph",

View File

@ -157,5 +157,4 @@ jitterAlertRulesWithinGroups,preview,@grafana/alerting-squad,2024-01-17,false,tr
onPremToCloudMigrations,experimental,@grafana/grafana-operator-experience-squad,2024-01-22,false,false,false onPremToCloudMigrations,experimental,@grafana/grafana-operator-experience-squad,2024-01-22,false,false,false
alertingSaveStatePeriodic,privatePreview,@grafana/alerting-squad,2024-01-22,false,false,false alertingSaveStatePeriodic,privatePreview,@grafana/alerting-squad,2024-01-22,false,false,false
promQLScope,experimental,@grafana/observability-metrics,2024-01-29,false,false,false promQLScope,experimental,@grafana/observability-metrics,2024-01-29,false,false,false
slateAutocomplete,GA,@grafana/grafana-frontend-platform,2024-01-29,false,false,true
nodeGraphDotLayout,experimental,@grafana/observability-traces-and-profiling,2024-01-02,false,false,true nodeGraphDotLayout,experimental,@grafana/observability-traces-and-profiling,2024-01-02,false,false,true

1 Name Stage Owner Created requiresDevMode RequiresRestart FrontendOnly
157 onPremToCloudMigrations experimental @grafana/grafana-operator-experience-squad 2024-01-22 false false false
158 alertingSaveStatePeriodic privatePreview @grafana/alerting-squad 2024-01-22 false false false
159 promQLScope experimental @grafana/observability-metrics 2024-01-29 false false false
slateAutocomplete GA @grafana/grafana-frontend-platform 2024-01-29 false false true
160 nodeGraphDotLayout experimental @grafana/observability-traces-and-profiling 2024-01-02 false false true

View File

@ -639,10 +639,6 @@ const (
// In-development feature that will allow injection of labels into prometheus queries. // In-development feature that will allow injection of labels into prometheus queries.
FlagPromQLScope = "promQLScope" FlagPromQLScope = "promQLScope"
// FlagSlateAutocomplete
// Adjusts the behaviour of the slate editor to properly handle autocomplete. Feature toggled for safety.
FlagSlateAutocomplete = "slateAutocomplete"
// FlagNodeGraphDotLayout // FlagNodeGraphDotLayout
// Changed the layout algorithm for the node graph // Changed the layout algorithm for the node graph
FlagNodeGraphDotLayout = "nodeGraphDotLayout" FlagNodeGraphDotLayout = "nodeGraphDotLayout"