CEC-4524: add bulk delete action (#364)

* CEC-4524: add bulk delete action
This commit is contained in:
Tristan Timblin
2023-06-20 14:27:26 -07:00
committed by GitHub
parent 7c358a6052
commit 4632958a24
3 changed files with 33 additions and 1 deletions

View File

@@ -12658,6 +12658,7 @@ exports[`App Route /vehicles authenticated 1`] = `
<div <div
data-testid="transform-modal" data-testid="transform-modal"
/> />
<div />
</div> </div>
</div> </div>
</main> </main>

View File

@@ -482,6 +482,7 @@ exports[`VehicleTable Render 1`] = `
</tfoot> </tfoot>
</table> </table>
</div> </div>
<div />
</div> </div>
</div> </div>
</div> </div>

View File

@@ -17,6 +17,7 @@ import TransformModal from "../../TransformModal";
import { useLocalStorage } from "../../useLocalStorage"; import { useLocalStorage } from "../../useLocalStorage";
import useStyles from "../../useStyles"; import useStyles from "../../useStyles";
import TaskRunner from "../../../utils/taskRunner"; import TaskRunner from "../../../utils/taskRunner";
import GeneralConfirmation from "../../GeneralConfirmation";
const MainForm = () => { const MainForm = () => {
const classes = useStyles(); const classes = useStyles();
@@ -93,6 +94,23 @@ const MainForm = () => {
.catch((error) => setMessage(error.message)); .catch((error) => setMessage(error.message));
}; };
const handleDelete = async (fn) => {
const taskRunner = new TaskRunner(5);
const request = (vin) => {
return async () => {
return fn(vin, token)
.then(() => {
setMessage(`Deleted ${selectedVins.length} vehicles`);
setSelectedVins([]);
})
.catch((error) => {
setMessage(error.message);
})
}
}
selectedVins.forEach((vin) => taskRunner.push(request(vin)));
};
const actions = [ const actions = [
{ {
name: "Update Configs", name: "Update Configs",
@@ -103,7 +121,12 @@ const MainForm = () => {
name: "Add Tags", name: "Add Tags",
disabled: selectedVins.length === 0, disabled: selectedVins.length === 0,
trigger: () => setActiveModal("addTags"), trigger: () => setActiveModal("addTags"),
} },
{
name: "Delete",
disabled: selectedVins.length === 0,
trigger: () => setActiveModal("delete"),
},
]; ];
const handleOnlineHMI = (event) => { const handleOnlineHMI = (event) => {
@@ -187,6 +210,13 @@ const MainForm = () => {
setData={setTagsToAdd} setData={setTagsToAdd}
submit={() => handleAddTags(context.addTags)} submit={() => handleAddTags(context.addTags)}
/> />
<GeneralConfirmation
open={activeModal === "delete"}
close={() => setActiveModal(null)}
title="Delete"
message={`You are about to delete the following VINs: ${selectedVins.join(", ")}`}
actionFunction={() => handleDelete(context.deleteVehicle)}
/>
</>)} </>)}
</VehicleConsumer> </VehicleConsumer>
</div> </div>