-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add survey report settings page (#1810)
* implement client side pagination * add fetch report settings * Add checkbox and refine components * call patch update with the updated settings * handle navigation on save * validate survey during update * fix lint and unit test * Add service test * replace double quote with single * Complete dashboard url copy functionality * load engagement slug * remove generate dashboard button setting from report settings * remove only from unit test * update docstring and function names
- Loading branch information
1 parent
86e2581
commit 978208c
Showing
21 changed files
with
669 additions
and
80 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
# Copyright © 2019 Province of British Columbia | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
"""Tests for the report settings service. | ||
Test suite to ensure that the Survey report settings service routines are working as expected. | ||
""" | ||
from met_api.services.report_setting_service import ReportSettingService | ||
from tests.utilities.factory_scenarios import TestSurveyInfo | ||
from tests.utilities.factory_utils import factory_survey_and_eng_model | ||
|
||
|
||
def test_refresh_report_setting(session): # pylint:disable=unused-argument | ||
"""Assert report settings are refreshed.""" | ||
survey, _ = factory_survey_and_eng_model(TestSurveyInfo.survey3) | ||
survey_data = { | ||
'id': survey.id, | ||
'form_json': survey.form_json, | ||
} | ||
result = ReportSettingService.refresh_report_setting(survey_data) | ||
assert result == survey_data | ||
|
||
report_settings = ReportSettingService.get_report_setting(survey.id) | ||
assert len(report_settings) == 1 | ||
assert report_settings[0].get('survey_id') == survey.id |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
65 changes: 65 additions & 0 deletions
65
met-web/src/components/common/Table/ClientSidePagination.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
import React, { useEffect } from 'react'; | ||
import { MetTableProps } from '.'; | ||
import { PaginationOptions } from './types'; | ||
|
||
interface ClientSidePaginationProps<T> { | ||
rows: T[]; | ||
searchFilter?: { | ||
key: keyof T; | ||
value: string; | ||
}; | ||
children: (props: MetTableProps<T>) => React.ReactElement<MetTableProps<T>>; | ||
} | ||
|
||
export function ClientSidePagination<T>({ rows, searchFilter, children }: ClientSidePaginationProps<T>) { | ||
const [paginationOptions, setPaginationOptions] = React.useState<PaginationOptions<T>>({ | ||
page: 1, | ||
size: 10, // default page size | ||
}); | ||
const [pageInfo, setPageInfo] = React.useState({ total: rows.length }); | ||
const [searchFilteredRows, setSearchFilteredRows] = React.useState<T[]>([]); | ||
const [paginatedRows, setPaginatedRows] = React.useState<T[]>([]); | ||
|
||
const handleChangePagination = (newPaginationOptions: PaginationOptions<T>) => { | ||
const { page, size } = newPaginationOptions; | ||
const paginated = searchFilteredRows.slice((page - 1) * size, page * size); | ||
setPaginationOptions(newPaginationOptions); | ||
setPageInfo({ total: rows.length }); | ||
setPaginatedRows(paginated); | ||
}; | ||
|
||
const handleFilter = () => { | ||
if (!searchFilter?.value) { | ||
setSearchFilteredRows(rows); | ||
setPageInfo({ total: rows.length }); | ||
setPaginationOptions({ ...paginationOptions, page: 1 }); | ||
return; | ||
} | ||
const filtered = rows.filter((row) => | ||
String(row[searchFilter.key]).toLowerCase().includes(searchFilter.value.toLowerCase()), | ||
); | ||
const newTotal = filtered.length; | ||
setSearchFilteredRows(filtered); | ||
setPageInfo({ total: newTotal }); | ||
setPaginationOptions({ ...paginationOptions, page: 1 }); | ||
}; | ||
|
||
useEffect(() => { | ||
handleFilter(); | ||
}, [searchFilter, rows]); | ||
|
||
useEffect(() => { | ||
handleChangePagination(paginationOptions); | ||
}, [searchFilteredRows]); | ||
|
||
const metTableComponent = children({ | ||
rows: paginatedRows, // Use the filtered rows for rendering | ||
loading: false, | ||
handleChangePagination, | ||
paginationOptions, | ||
pageInfo, | ||
headCells: [], | ||
}); | ||
|
||
return <>{metTableComponent}</>; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.