issues fixed
This commit is contained in:
@@ -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,
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -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"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -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={{
|
||||||
|
|||||||
@@ -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" },
|
||||||
|
|||||||
@@ -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],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user