@@ -38,6 +38,8 @@ export const registerBuiltInTabs = (
3838 services : ExploreServices ,
3939 registryFlavor : ExploreFlavor
4040) => {
41+ const isExperimentalEnabled = services . uiSettings . get ( ENABLE_EXPERIMENTAL_SETTING , false ) ;
42+
4143 // Register Logs Tab
4244 const logsTabDefinition : TabDefinition = {
4345 id : EXPLORE_LOGS_TAB_ID ,
@@ -52,89 +54,91 @@ export const registerBuiltInTabs = (
5254 tabRegistry . registerTab ( logsTabDefinition ) ;
5355
5456 // Register Patterns Tab
55- tabRegistry . registerTab ( {
56- id : EXPLORE_PATTERNS_TAB_ID ,
57- label : 'Patterns' ,
58- flavor : [ ExploreFlavor . Logs , ExploreFlavor . Metrics ] ,
59- order : 15 ,
60- supportedLanguages : [ EXPLORE_DEFAULT_LANGUAGE ] ,
57+ if ( isExperimentalEnabled ) {
58+ tabRegistry . registerTab ( {
59+ id : EXPLORE_PATTERNS_TAB_ID ,
60+ label : 'Patterns' ,
61+ flavor : [ ExploreFlavor . Logs , ExploreFlavor . Metrics ] ,
62+ order : 15 ,
63+ supportedLanguages : [ EXPLORE_DEFAULT_LANGUAGE ] ,
6164
62- prepareQuery : ( query ) => {
63- const state = services . store . getState ( ) ;
65+ prepareQuery : ( query ) => {
66+ const state = services . store . getState ( ) ;
6467
65- // Get the selected patterns field from the Redux state
66- let patternsField = state . tab . patterns . patternsField ;
68+ // Get the selected patterns field from the Redux state
69+ let patternsField = state . tab . patterns . patternsField ;
6770
68- const preparedQuery = getQueryWithSource ( query ) ;
69- if ( ! patternsField ) {
70- try {
71- patternsField = findDefaultPatternsField ( services ) ;
72- } catch {
73- return preparedQuery . query ;
71+ const preparedQuery = getQueryWithSource ( query ) ;
72+ if ( ! patternsField ) {
73+ try {
74+ patternsField = findDefaultPatternsField ( services ) ;
75+ } catch {
76+ return preparedQuery . query ;
77+ }
7478 }
75- }
7679
77- if ( state . tab . patterns . usingRegexPatterns )
78- return regexPatternQuery ( preparedQuery . query , patternsField ) ;
79-
80- return brainPatternQuery ( preparedQuery . query , patternsField ) ;
81- } ,
82-
83- handleQueryError : ( error , cacheKey ) => {
84- const state = services . store . getState ( ) ;
85-
86- /**
87- * The below conditional is checking for the error returned when attempting to use a BRAIN
88- * query on an older version of the querying engine. If this error appears, an attempt is made
89- * to switch over to a patterns query which works on older versions of the querying engine.
90- * A redux state is set to inform the UI that this older query is being utilized
91- * Finally, the query is retriggered.
92- * The return value being true will prevent the standard error from dispatching, keeping the page clear
93- */
94- if (
95- error &&
96- error . status &&
97- error . status === 400 &&
98- error . error . details &&
99- error . error . details . startsWith ( BRAIN_QUERY_OLD_ENGINE_ERROR_PREFIX )
100- ) {
101- // can check further details of err if needed
102- let patternsField = state . tab . patterns . patternsField ;
103- if ( ! patternsField ) {
104- patternsField = findDefaultPatternsField ( services ) ;
80+ if ( state . tab . patterns . usingRegexPatterns )
81+ return regexPatternQuery ( preparedQuery . query , patternsField ) ;
82+
83+ return brainPatternQuery ( preparedQuery . query , patternsField ) ;
84+ } ,
85+
86+ handleQueryError : ( error , cacheKey ) => {
87+ const state = services . store . getState ( ) ;
88+
89+ /**
90+ * The below conditional is checking for the error returned when attempting to use a BRAIN
91+ * query on an older version of the querying engine. If this error appears, an attempt is made
92+ * to switch over to a patterns query which works on older versions of the querying engine.
93+ * A redux state is set to inform the UI that this older query is being utilized
94+ * Finally, the query is retriggered.
95+ * The return value being true will prevent the standard error from dispatching, keeping the page clear
96+ */
97+ if (
98+ error &&
99+ error . status &&
100+ error . status === 400 &&
101+ error . error . details &&
102+ error . error . details . startsWith ( BRAIN_QUERY_OLD_ENGINE_ERROR_PREFIX )
103+ ) {
104+ // can check further details of err if needed
105+ let patternsField = state . tab . patterns . patternsField ;
106+ if ( ! patternsField ) {
107+ patternsField = findDefaultPatternsField ( services ) ;
108+ }
109+ const query = state . query ;
110+ const preparedQuery = getQueryWithSource ( query ) ;
111+ services . store . dispatch ( setUsingRegexPatterns ( true ) ) ;
112+ services . store . dispatch (
113+ executeTabQuery ( {
114+ services,
115+ cacheKey : regexPatternQuery ( preparedQuery . query , patternsField ) ,
116+ queryString : query . query ,
117+ } )
118+ ) ;
119+
120+ // set the old cacheKey to uninitialized to finalize loading, our new tab query has new cacheKey
121+ services . store . dispatch (
122+ setIndividualQueryStatus ( {
123+ cacheKey,
124+ status : {
125+ status : QueryExecutionStatus . UNINITIALIZED ,
126+ startTime : undefined ,
127+ elapsedMs : undefined ,
128+ error : undefined ,
129+ } ,
130+ } )
131+ ) ;
132+
133+ return true ;
105134 }
106- const query = state . query ;
107- const preparedQuery = getQueryWithSource ( query ) ;
108- services . store . dispatch ( setUsingRegexPatterns ( true ) ) ;
109- services . store . dispatch (
110- executeTabQuery ( {
111- services,
112- cacheKey : regexPatternQuery ( preparedQuery . query , patternsField ) ,
113- queryString : query . query ,
114- } )
115- ) ;
116-
117- // set the old cacheKey to uninitialized to finalize loading, our new tab query has new cacheKey
118- services . store . dispatch (
119- setIndividualQueryStatus ( {
120- cacheKey,
121- status : {
122- status : QueryExecutionStatus . UNINITIALIZED ,
123- startTime : undefined ,
124- elapsedMs : undefined ,
125- error : undefined ,
126- } ,
127- } )
128- ) ;
129-
130- return true ;
131- }
132-
133- return false ;
134- } ,
135135
136- component : PatternsTab ,
137- } ) ;
136+ return false ;
137+ } ,
138+
139+ component : PatternsTab ,
140+ } ) ;
141+ }
138142
139143 // Register Visualizations Tab
140144 tabRegistry . registerTab ( {
@@ -155,7 +159,6 @@ export const registerBuiltInTabs = (
155159 } ) ;
156160
157161 // Register Field Stats Tab
158- const isExperimentalEnabled = services . uiSettings . get ( ENABLE_EXPERIMENTAL_SETTING , false ) ;
159162 if ( isExperimentalEnabled ) {
160163 tabRegistry . registerTab ( {
161164 id : EXPLORE_FIELD_STATS_TAB_ID ,
0 commit comments