mirror of
https://github.com/getredash/redash.git
synced 2025-12-19 17:37:19 -05:00
* DynamicComponent for QuerySourceAlerts * General Settings updates * Dynamic Date[Range] updates * EmptyState updates * Query and SchemaBrowser updates * Adjust page headers and add disablePublish * Policy updates * Separate Home FavoritesList component * Update FormatQuery * Autolimit frontend fixes * Misc updates * Keep registering of QuerySourceDropdown * Undo changes in DynamicComponent * Change sql-formatter package.json syntax * Allow opening help trigger in new tab * Don't run npm commands as root in Dockerfile * Cypress: Remove extra execute query
34 lines
1.2 KiB
JavaScript
34 lines
1.2 KiB
JavaScript
import { isEmpty } from "lodash";
|
|
import { useState, useMemo } from "react";
|
|
import useUpdateQuery from "./useUpdateQuery";
|
|
import navigateTo from "@/components/ApplicationArea/navigateTo";
|
|
|
|
export default function useQuery(originalQuery) {
|
|
const [query, setQuery] = useState(originalQuery);
|
|
const [originalQuerySource, setOriginalQuerySource] = useState(originalQuery.query);
|
|
const [originalAutoLimit, setOriginalAutoLimit] = useState(query.options.apply_auto_limit);
|
|
|
|
const updateQuery = useUpdateQuery(query, updatedQuery => {
|
|
// It's important to update URL first, and only then update state
|
|
if (updatedQuery.id !== query.id) {
|
|
// Don't reload page when saving new query
|
|
navigateTo(updatedQuery.getUrl(true), true);
|
|
}
|
|
setQuery(updatedQuery);
|
|
setOriginalQuerySource(updatedQuery.query);
|
|
setOriginalAutoLimit(updatedQuery.options.apply_auto_limit);
|
|
});
|
|
|
|
return useMemo(
|
|
() => ({
|
|
query,
|
|
setQuery,
|
|
isDirty:
|
|
query.query !== originalQuerySource ||
|
|
(!isEmpty(query.query) && query.options.apply_auto_limit !== originalAutoLimit),
|
|
saveQuery: () => updateQuery(),
|
|
}),
|
|
[query, originalQuerySource, updateQuery, originalAutoLimit]
|
|
);
|
|
}
|