issues fixed

This commit is contained in:
pauladamseniii
2023-10-18 14:51:05 -04:00
parent dd0bce2f5d
commit 8aa80ec207
6 changed files with 69 additions and 29 deletions

View File

@@ -57,6 +57,7 @@ export const CarUpdatesProvider = ({ children }) => {
const [carUpdates, setCarUpdates] = useState([]); const [carUpdates, setCarUpdates] = useState([]);
const [versions, setVersions] = useState([SELECT_VERSION_OBJ]); const [versions, setVersions] = useState([SELECT_VERSION_OBJ]);
const [versionRxSwins, setVersionRxSwins] = useState([]); const [versionRxSwins, setVersionRxSwins] = useState([]);
const [totalVersionRxSwins, setTotalVersionRxSwins] = useState(0);
const [totalCarUpdates, setTotalCarUpdates] = useState(0); const [totalCarUpdates, setTotalCarUpdates] = useState(0);
const [delayCount, setDelayCount] = useState(0); const [delayCount, setDelayCount] = useState(0);
let progressTimer = 0; let progressTimer = 0;
@@ -308,17 +309,20 @@ export const CarUpdatesProvider = ({ children }) => {
return result; return result;
}; };
const getSUMSVersionRxSwins = async (sums_version, token) => { const getSUMSVersionRxSwins = async (sums_version, options, token) => {
let result; let result;
try { try {
setBusy(true); setBusy(true);
result = await api.getSUMSVersionRxSwins(sums_version, token); result = await api.getSUMSVersionRxSwins(sums_version, options, token);
if (result.error) if (result.error)
throw new Error(`Get software version rxswins error. ${result.message}`); throw new Error(`Get software version rxswins error. ${result.message}`);
setVersionRxSwins(result.data); setVersionRxSwins(result.data);
if (options && options.offset === 0 && result.total) {
setTotalVersionRxSwins(result.total);
}
} finally { } finally {
setBusy(false); setBusy(false);
} }
@@ -374,6 +378,7 @@ export const CarUpdatesProvider = ({ children }) => {
stopMonitor, stopMonitor,
updateSUMSVersion, updateSUMSVersion,
getSUMSVersionRxSwins, getSUMSVersionRxSwins,
totalVersionRxSwins,
deleteSUMSVersionRxSwins, deleteSUMSVersionRxSwins,
addSUMSVersionRxSwins, addSUMSVersionRxSwins,
}} }}

View File

@@ -71,19 +71,25 @@ exports[`SUMS Render 1`] = `
</span> </span>
</th> </th>
<th <th
aria-sort="descending"
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignCenter" class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignCenter"
scope="col" scope="col"
> >
<span <span
aria-disabled="false" aria-disabled="false"
class="MuiButtonBase-root MuiTableSortLabel-root" class="MuiButtonBase-root MuiTableSortLabel-root MuiTableSortLabel-active"
role="button" role="button"
tabindex="0" tabindex="0"
> >
Created Created
<span
class="makeStyles-hiddenSortSpan-0"
>
sorted descending
</span>
<svg <svg
aria-hidden="true" aria-hidden="true"
class="MuiSvgIcon-root MuiTableSortLabel-icon MuiTableSortLabel-iconDirectionAsc" class="MuiSvgIcon-root MuiTableSortLabel-icon MuiTableSortLabel-iconDirectionDesc"
focusable="false" focusable="false"
viewBox="0 0 24 24" viewBox="0 0 24 24"
> >

View File

@@ -31,7 +31,7 @@ import { RoleWrap } from "../Controls/RoleWrap";
const tableColumns = [ const tableColumns = [
{ {
id: "sums_rxswin", id: "rxswin",
label: "RXSWIN (RX Software Identification Number)", label: "RXSWIN (RX Software Identification Number)",
}, },
{ {
@@ -47,7 +47,7 @@ const MainForm = () => {
const classes = useStyles(); const classes = useStyles();
const [pageSize, setPageSize] = useLocalStorage(PAGE_SIZE, 10); const [pageSize, setPageSize] = useLocalStorage(PAGE_SIZE, 10);
const [pageIndex, setPageIndex] = useState(0); const [pageIndex, setPageIndex] = useState(0);
const [orderBy, setOrderBy] = useState("id"); const [orderBy, setOrderBy] = useState("created_at");
const [order, setOrder] = useState("desc"); const [order, setOrder] = useState("desc");
const [showDeleteModal, setShowDeleteModal] = useState(false); const [showDeleteModal, setShowDeleteModal] = useState(false);
const [rowToDelete, setRowToDelete] = useState({}); const [rowToDelete, setRowToDelete] = useState({});
@@ -55,6 +55,7 @@ const MainForm = () => {
deleteSUMSVersionRxSwins, deleteSUMSVersionRxSwins,
getSUMSVersionRxSwins, getSUMSVersionRxSwins,
versionRxSwins, versionRxSwins,
totalVersionRxSwins,
stopMonitor, stopMonitor,
} = useCarUpdatesContext(); } = useCarUpdatesContext();
const { const {
@@ -78,21 +79,28 @@ const MainForm = () => {
}, []); }, []);
useEffect(() => { useEffect(() => {
(async () => { loadSUMSVersionRxSwins();
try {
if (!sums_version || !token) return;
stopMonitor();
await getSUMSVersionRxSwins(
sums_version,
token
);
} catch (e) {
setMessage(e.message);
logger.warn(e.stack);
}
})();
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, [sums_version, token]); }, [sums_version, token, pageIndex, pageSize, orderBy, order]);
const loadSUMSVersionRxSwins = async () => {
try {
if (!sums_version || !token) return;
stopMonitor();
await getSUMSVersionRxSwins(
sums_version,
{
limit: pageSize,
offset: pageSize * pageIndex,
order: `${orderBy} ${order}`,
},
token
);
} catch (e) {
setMessage(e.message);
logger.warn(e.stack);
}
};
const handleChangePageIndex = (event, newIndex) => { const handleChangePageIndex = (event, newIndex) => {
setPageIndex(newIndex); setPageIndex(newIndex);
@@ -128,10 +136,14 @@ const MainForm = () => {
const sendDelete = async () => { const sendDelete = async () => {
if (rowToDelete) { if (rowToDelete) {
try { try {
await deleteSUMSVersionRxSwins(rowToDelete.version, rowToDelete.rxswin, token); const result = await deleteSUMSVersionRxSwins(rowToDelete.version, rowToDelete.rxswin, token);
setMessage(`Sent delete for ${rowToDelete.rxswin}`); if (!result || result.error) return;
setMessage(`Deleted ${rowToDelete.rxswin}`);
loadSUMSVersionRxSwins();
} catch (e) { } catch (e) {
setMessage(e.message); setMessage(e.message);
logger.warn(e.stack);
} }
} }
}; };
@@ -166,7 +178,7 @@ const MainForm = () => {
<RoleWrap <RoleWrap
groups={groups} groups={groups}
providers={providers} providers={providers}
rolesPerProvider={Permissions.FiskerMagnaCreate} rolesPerProvider={Permissions.FiskerMagnaDelete}
> >
<IconButton <IconButton
onClick={() => onDeleteClick(row)} onClick={() => onDeleteClick(row)}
@@ -188,8 +200,8 @@ const MainForm = () => {
) : ( ) : (
<TablePagination <TablePagination
rowsPerPageOptions={[5, 10, 25, 100]} rowsPerPageOptions={[5, 10, 25, 100]}
colSpan={8} colSpan={3}
count={versionRxSwins.length} count={totalVersionRxSwins}
rowsPerPage={pageSize} rowsPerPage={pageSize}
page={pageIndex} page={pageIndex}
SelectProps={{ SelectProps={{

View File

@@ -124,8 +124,8 @@ const updatesAPI = {
.catch(errorHandler); .catch(errorHandler);
}, },
getSUMSVersionRxSwins: async (sums_version, token) => { getSUMSVersionRxSwins: async (sums_version, options, token) => {
return fetch(`${API_ENDPOINT}/manifest/sums/${sums_version}/rxswins`, { return fetch(addQueryParams(`${API_ENDPOINT}/manifest/sums/${sums_version}/rxswins`, options), {
method: "GET", method: "GET",
headers: Object.assign( headers: Object.assign(
{ "Content-Type": "application/json" }, { "Content-Type": "application/json" },

View File

@@ -96,7 +96,12 @@ export const Permissions = {
[Providers.MAGNA]: [Roles.MAGNAGROUP], [Providers.MAGNA]: [Roles.MAGNAGROUP],
}, },
FiskerMagnaCreate: { FiskerMagnaCreate: {
[Providers.FISKER]: [Roles.CREATE, Roles.DELETE], [Providers.FISKER]: [Roles.CREATE],
[Providers.FISKER_QA]: [Roles.MANUFACTURE],
[Providers.MAGNA]: [Roles.MAGNAGROUP],
},
FiskerMagnaDelete: {
[Providers.FISKER]: [Roles.DELETE],
[Providers.FISKER_QA]: [Roles.MANUFACTURE], [Providers.FISKER_QA]: [Roles.MANUFACTURE],
[Providers.MAGNA]: [Roles.MAGNAGROUP], [Providers.MAGNA]: [Roles.MAGNAGROUP],
}, },

View File

@@ -103,7 +103,7 @@ describe("Roles Helper", () => {
it("Check FiskerMagnaCreate permission", () => { it("Check FiskerMagnaCreate permission", () => {
expect( expect(
hasRole([Roles.CREATE, Roles.DELETE], Permissions.FiskerMagnaCreate, [Providers.FISKER]) hasRole([Roles.CREATE], Permissions.FiskerMagnaCreate, [Providers.FISKER])
).toEqual(true); ).toEqual(true);
expect( expect(
hasRole([Roles.MAGNAGROUP], Permissions.FiskerMagnaCreate, [Providers.MAGNA]) hasRole([Roles.MAGNAGROUP], Permissions.FiskerMagnaCreate, [Providers.MAGNA])
@@ -113,6 +113,18 @@ describe("Roles Helper", () => {
).toEqual(true); ).toEqual(true);
}); });
it("Check FiskerMagnaDelete permission", () => {
expect(
hasRole([Roles.DELETE], Permissions.FiskerMagnaDelete, [Providers.FISKER])
).toEqual(true);
expect(
hasRole([Roles.MAGNAGROUP], Permissions.FiskerMagnaDelete, [Providers.MAGNA])
).toEqual(true);
expect(
hasRole([Roles.MANUFACTURE], Permissions.FiskerMagnaDelete, [Providers.FISKER_QA])
).toEqual(true);
});
it("Get groups", () => { it("Get groups", () => {
expect(getGroups(TEST_TOKEN)).toEqual(TEST_EXPECTED_GROUPS); expect(getGroups(TEST_TOKEN)).toEqual(TEST_EXPECTED_GROUPS);
}); });