From b3bafee363e3cdafb6f83dd5fdac2cccf7f3789d Mon Sep 17 00:00:00 2001 From: Martavis Parker <47053705+martavis@users.noreply.github.com> Date: Tue, 21 Sep 2021 07:10:08 -0700 Subject: [PATCH] Team maintainer create & run new query, no save (#2141) * team maintainer create & run new query, no save * lint fixes * showing table sidebar for team maintainer * style fixes to no results * lint fix --- .../forms/queries/QueryForm/QueryForm.tsx | 50 +++++++++++++++++-- .../pages/queries/QueryPage/QueryPage.tsx | 8 ++- .../components/QueryResults/QueryResults.tsx | 1 - .../components/QueryResults/_styles.scss | 25 ++++++---- 4 files changed, 67 insertions(+), 17 deletions(-) diff --git a/frontend/components/forms/queries/QueryForm/QueryForm.tsx b/frontend/components/forms/queries/QueryForm/QueryForm.tsx index 03c8959dde..e23531d07e 100644 --- a/frontend/components/forms/queries/QueryForm/QueryForm.tsx +++ b/frontend/components/forms/queries/QueryForm/QueryForm.tsx @@ -40,9 +40,9 @@ interface IQueryFormProps { } interface IRenderProps { - nameText: string; - descText: string; queryValue: string; + nameText?: string; + descText?: string; queryError?: any; queryOnChange?: any; name?: IFormField; @@ -251,6 +251,42 @@ const QueryForm = ({ ); + const renderCreateForTeamMaintainer = ({ + queryValue, + queryOnChange, + queryError, + }: IRenderProps) => ( + <> +
+

New query

+ {baseError &&
{baseError}
} + + {renderLiveQueryWarning()} +
+ +
+ + + ); + const renderForGlobalAdminOrMaintainer = ({ nameText, descText, @@ -268,7 +304,7 @@ const QueryForm = ({ name?.onChange(evt.target.value) @@ -390,6 +426,14 @@ const QueryForm = ({ }); } + if (!isEditMode && isAnyTeamMaintainer) { + return renderCreateForTeamMaintainer({ + queryValue, + queryOnChange, + queryError, + }); + } + if (isAnyTeamMaintainer || isGlobalMaintainer) { return renderRunForMaintainer({ nameText, descText, queryValue }); } diff --git a/frontend/pages/queries/QueryPage/QueryPage.tsx b/frontend/pages/queries/QueryPage/QueryPage.tsx index 65ad2119f7..913d00b1b2 100644 --- a/frontend/pages/queries/QueryPage/QueryPage.tsx +++ b/frontend/pages/queries/QueryPage/QueryPage.tsx @@ -41,7 +41,9 @@ const QueryPage = ({ location: { query: URLQuerySearch }, }: IQueryPageProps) => { const queryIdForEdit = paramsQueryId ? parseInt(paramsQueryId, 10) : null; - const { isGlobalAdmin, isGlobalMaintainer } = useContext(AppContext); + const { isGlobalAdmin, isGlobalMaintainer, isAnyTeamMaintainer } = useContext( + AppContext + ); const { selectedOsqueryTable, setSelectedOsqueryTable } = useContext( QueryContext ); @@ -199,7 +201,9 @@ const QueryPage = ({ const isFirstStep = step === QUERIES_PAGE_STEPS[1]; const sidebarClass = isFirstStep && isSidebarOpen && "has-sidebar"; const showSidebar = - isFirstStep && isSidebarOpen && (isGlobalAdmin || isGlobalMaintainer); + isFirstStep && + isSidebarOpen && + (isGlobalAdmin || isGlobalMaintainer || isAnyTeamMaintainer); return (
diff --git a/frontend/pages/queries/QueryPage/components/QueryResults/QueryResults.tsx b/frontend/pages/queries/QueryPage/components/QueryResults/QueryResults.tsx index 3ff6f6c662..cff8912b26 100644 --- a/frontend/pages/queries/QueryPage/components/QueryResults/QueryResults.tsx +++ b/frontend/pages/queries/QueryPage/components/QueryResults/QueryResults.tsx @@ -303,7 +303,6 @@ const QueryResults = ({ {isQueryFinished && hasNoResults ? (

Your live query returned no results. -
Expecting to see results? Check to see if the hosts you targeted reported “Online” or check out the diff --git a/frontend/pages/queries/QueryPage/components/QueryResults/_styles.scss b/frontend/pages/queries/QueryPage/components/QueryResults/_styles.scss index 4a2be63775..9ecf08e32a 100644 --- a/frontend/pages/queries/QueryPage/components/QueryResults/_styles.scss +++ b/frontend/pages/queries/QueryPage/components/QueryResults/_styles.scss @@ -122,6 +122,20 @@ font-weight: $bold; } } + &__tab-panel { + .no-results-message { + margin-top: $pad-xxlarge; + font-size: $small; + font-weight: $bold; + + span { + margin-top: $pad-medium; + font-size: $x-small; + font-weight: $regular; + display: block; + } + } + } } &__results-table-container, @@ -137,17 +151,6 @@ margin-top: $pad-large; box-sizing: border-box; overflow: auto; - - .kolide-spinner { - align-self: center; - } - - .no-results-message { - flex-grow: 1; - align-self: center; - text-align: center; - font-size: $x-small; - } } &__table {