@@ -792,11 +792,16 @@ function setCurrentTab(id) {
792792
793793 // Persist tab selection into the session storage
794794 sessionStorage . setItem ( "tab" , id ) ;
795-
795+
796796 // Update parameter overlay visibility based on new tab
797797 if ( typeof updateParameterOverlay === 'function' ) {
798798 updateParameterOverlay ( id ) ;
799799 }
800+
801+ // Update parameter toggle button visibility based on new tab
802+ if ( typeof updateParamToggleVisibility === 'function' ) {
803+ updateParamToggleVisibility ( id ) ;
804+ }
800805}
801806
802807function showQueryHistory ( ) {
@@ -1408,6 +1413,62 @@ function addShortcutTooltips() {
14081413// Global variables for parameter overlay management
14091414var globalSqlParamsForOverlay = { } ;
14101415var shouldShowParamIndicator = false ;
1416+ var paramOverlayManuallySet = false ; // Track if user manually toggled
1417+
1418+ // Get parameter overlay preference from localStorage
1419+ function getParamOverlayPreference ( ) {
1420+ var pref = localStorage . getItem ( "param_overlay_enabled" ) ;
1421+ return pref === null ? null : pref === "true" ;
1422+ }
1423+
1424+ // Set parameter overlay preference to localStorage
1425+ function setParamOverlayPreference ( enabled ) {
1426+ localStorage . setItem ( "param_overlay_enabled" , enabled . toString ( ) ) ;
1427+ }
1428+
1429+ // Check if screen width is >= 1400px
1430+ function isWideScreen ( ) {
1431+ return window . innerWidth >= 1400 ;
1432+ }
1433+
1434+ // Determine if overlay should be visible based on toggle state and screen size
1435+ function shouldShowOverlay ( ) {
1436+ var preference = getParamOverlayPreference ( ) ;
1437+
1438+ // If user has set a preference, use it
1439+ if ( preference !== null ) {
1440+ return preference ;
1441+ }
1442+
1443+ // Default: show on wide screens, hide on narrow screens
1444+ return isWideScreen ( ) ;
1445+ }
1446+
1447+ // Update toggle button icon and overlay visibility
1448+ function updateParamToggleState ( ) {
1449+ var showOverlay = shouldShowOverlay ( ) ;
1450+ var currentTab = $ ( '#nav ul li.selected' ) . attr ( 'id' ) || 'table_query' ;
1451+
1452+ // Update toggle button icon
1453+ if ( showOverlay ) {
1454+ $ ( '#toggle_param_overlay i' ) . removeClass ( 'fa-toggle-off' ) . addClass ( 'fa-toggle-on' ) ;
1455+ } else {
1456+ $ ( '#toggle_param_overlay i' ) . removeClass ( 'fa-toggle-on' ) . addClass ( 'fa-toggle-off' ) ;
1457+ }
1458+
1459+ // Update overlay visibility based on toggle state
1460+ shouldShowParamIndicator = showOverlay && Object . keys ( globalSqlParamsForOverlay ) . length > 0 ;
1461+ updateParameterOverlay ( currentTab ) ;
1462+ }
1463+
1464+ // Show/hide toggle button based on current tab
1465+ function updateParamToggleVisibility ( currentTabId ) {
1466+ if ( currentTabId === 'table_query' && Object . keys ( globalSqlParamsForOverlay ) . length > 0 ) {
1467+ $ ( '.parameter-toggle-action' ) . show ( ) ;
1468+ } else {
1469+ $ ( '.parameter-toggle-action' ) . hide ( ) ;
1470+ }
1471+ }
14111472
14121473function updateParameterOverlay ( currentTabId ) {
14131474 // Remove existing indicator
@@ -1429,24 +1490,23 @@ function updateParameterOverlay(currentTabId) {
14291490
14301491function displayURLParameters ( ) {
14311492 var urlParams = new URLSearchParams ( window . location . search ) ;
1432- var hideIndicator = urlParams . get ( 'hideParamIndicator' ) === 'true' ;
14331493
14341494 // Extract SQL parameters and store them globally (always do this for substitution to work)
14351495 var sqlParams = extractSqlParameters ( ) ;
14361496 var hasParams = Object . keys ( sqlParams ) . length > 0 ;
14371497
1438- // Store parameters and indicator preference globally
1498+ // Store parameters globally
14391499 globalSqlParamsForOverlay = sqlParams ;
1440- shouldShowParamIndicator = hasParams && ! hideIndicator ;
1441-
1442- // Show overlay for current tab (will be managed by setCurrentTab from now on)
1443- if ( shouldShowParamIndicator ) {
1444- var currentTab = $ ( '#nav ul li.selected' ) . attr ( 'id' ) || 'table_query' ;
1445- updateParameterOverlay ( currentTab ) ;
1446- }
1447-
1500+
14481501 if ( hasParams ) {
14491502 console . log ( 'URL parameters available for query substitution:' , sqlParams ) ;
1503+
1504+ // Initialize toggle state and overlay visibility
1505+ updateParamToggleState ( ) ;
1506+
1507+ // Show toggle button if on query tab
1508+ var currentTab = $ ( '#nav ul li.selected' ) . attr ( 'id' ) || 'table_query' ;
1509+ updateParamToggleVisibility ( currentTab ) ;
14501510 }
14511511}
14521512
@@ -2262,6 +2322,39 @@ $(document).ready(function() {
22622322 addShortcutTooltips ( ) ;
22632323 bindDatabaseObjectsFilter ( ) ;
22642324
2325+ // Parameter overlay toggle button click handler
2326+ $ ( "#toggle_param_overlay" ) . on ( "click" , function ( e ) {
2327+ e . preventDefault ( ) ;
2328+
2329+ // Toggle the preference
2330+ var currentPreference = shouldShowOverlay ( ) ;
2331+ var newPreference = ! currentPreference ;
2332+
2333+ // Save to localStorage
2334+ setParamOverlayPreference ( newPreference ) ;
2335+
2336+ // Update toggle state and overlay visibility
2337+ updateParamToggleState ( ) ;
2338+ } ) ;
2339+
2340+ // Window resize handler for responsive behavior
2341+ $ ( window ) . on ( "resize" , function ( ) {
2342+ // Only update if there are parameters
2343+ if ( Object . keys ( globalSqlParamsForOverlay ) . length > 0 ) {
2344+ var preference = getParamOverlayPreference ( ) ;
2345+
2346+ // If preference is set to ON but screen is now narrow, turn it OFF
2347+ if ( preference && ! isWideScreen ( ) ) {
2348+ setParamOverlayPreference ( false ) ;
2349+ updateParamToggleState ( ) ;
2350+ }
2351+ // If no preference is set (null), update based on screen size
2352+ else if ( preference === null ) {
2353+ updateParamToggleState ( ) ;
2354+ }
2355+ }
2356+ } ) ;
2357+
22652358 // Set session from the url
22662359 var reqUrl = new URL ( window . location ) ;
22672360 var sessionId = reqUrl . searchParams . get ( "session" ) ;
0 commit comments