Development (#94)

* CEC-371 Car ECU display (#79)

* Merge Development (#53)

* Use responsive iframe control for charts (#49)

* Use responsive iframe control to charts

* Move external Grafana link to Dashboard page

* Remove unused embedded style class

* Add button label

* added delete button to deploy packages

* Fix unit test warning
Remove unused route from test

* Fix styling of button

* minor fixes per pr review

Co-authored-by: jcw-fisker <jwatson@fiskerinc.com>
Co-authored-by: John Cotten Watson <83605808+jcw-fisker@users.noreply.github.com>

* Development Merge (#57)

* CEC-287 Car connection status (#59) (#60)

* Car connection status

* Formatting

* Merge Development (#64)

* Add connection status to vehicles page

* ConnectedIcon control

* Handle Style

* Development (#67)

* preliminary map for vehicles

* weird zoom bug

* passing react tests

* fixing warnings and updating snapshots

* update node environment to 14

* addressing comments by changing variable types and adding styles to home page title

* adding CODEOWNERS file

* fixing token error

* CEC-371 Update car ECUs display (#78)

* Clean up className styles
Update car status page to show update and ECUs

* Add update ecu version button
Show all ECUs on car status page
Only show car ecus for search

Co-authored-by: jcw-fisker <jwatson@fiskerinc.com>
Co-authored-by: John Cotten Watson <83605808+jcw-fisker@users.noreply.github.com>
Co-authored-by: Drew Taylor <69828061+drew-fisker@users.noreply.github.com>

* CEC-394 Car update log (#81)

* CEC-394 Car update status control

* Remove Datadog RUM
Remove package update components
Move control components into Controls folder
Add Car update status page

* Display update status log
Clean up unused update package code

* Remove console.logs

* no vars

* adding timestamp to vehicle popup

* modifying vehicle data query

* removing extraneous code

* removing console log

* Clean up SonarCloud warnings (#83)

* Clean up SonarCloud warnings

* Bogus security warning

* Fix another warning

* Fix unauthorized locations request

* Fix update progress control

* CEC-563 New manifest format (#88)

* Add ManifestCreateContext
Update create manifest page

* Finish UI changes and API integration

* Fixes

* Fix test

* Remove manifest ECU file version and type

* Fixes

* Add manifest ecu file type control

* Fix Sonar warnings

* Fix test

* Update codeowners

* Formatting

* CEC-553 Change file type to string (#90)

* CEC-553 File type uses string enum

* Fix test timeout

* Fix

* Merge development

* Increase timeout

* Clean up (#95)

* Clean up
Mock missing methods

* Smell

Co-authored-by: jcw-fisker <jwatson@fiskerinc.com>
Co-authored-by: John Cotten Watson <83605808+jcw-fisker@users.noreply.github.com>
Co-authored-by: Drew Taylor <69828061+drew-fisker@users.noreply.github.com>
Co-authored-by: Drew Taylor <dtaylor@fiskerinc.com>
This commit is contained in:
John Wu
2021-10-14 12:23:16 -07:00
committed by GitHub
parent ba7611d6aa
commit 86eeaab869
32 changed files with 2293 additions and 866 deletions

View File

@@ -0,0 +1,101 @@
export const validateManifest = (data, accessToken) => {
const errors = [];
if (!accessToken || accessToken.length === 0) {
throw new Error("Access token required");
}
if (!data) {
throw new Error("Missing manifest data");
}
if (!data.name || data.name.length === 0) {
errors.push("name");
}
if (!data.version || data.version.length === 0) {
errors.push("version");
}
if (!data.description || data.description.length === 0) {
errors.push("description");
}
if (!data.releasenotes || data.releasenotes.length === 0) {
errors.push("release notes");
}
if (errors.length > 0)
throw new Error(`package ${errors.join(", ")} required`);
};
export const validateManifestECUs = (ecus) => {
const ecuKeys = {};
if (!ecus || ecus.length === 0) throw new Error("ECUs required");
ecus.forEach((ecu) => validateManifestECU(ecu, ecuKeys));
};
const validateManifestECU = (data, keys) => {
const errors = [];
const fileKeys = {};
if (!data) {
throw new Error("manifest ECU data required");
}
if (!data.name || data.name.length === 0) {
errors.push("name");
}
if (!data.version || data.version.length === 0) {
errors.push("version");
}
if (!data.part_number || data.part_number.length === 0) {
errors.push("part number");
}
if (!data.files || data.files.length === 0) {
errors.push("files");
}
const key = `${data.name} ${data.version} ${data.part_number}`;
if (!keys[key]) {
keys[key] = true;
} else {
throw new Error(`ECU ${key} already exists`);
}
if (errors.length > 0)
throw new Error(`ECU ${data.name} ${errors.join(", ")} required`);
data.files.forEach((file) => validateFile(data.name, file, fileKeys));
};
const validateFile = (ecu, file, keys) => {
const errors = [];
if (!file) {
throw new Error("File data required");
}
if (!file.filename || file.filename.length === 0) {
errors.push("filename");
}
if (!file.offset || file.offset.length === 0) {
errors.push("offset");
}
const key = `${file.filename} ${file.version}`;
if (!keys[key]) {
keys[key] = true;
} else {
throw new Error(`${ecu} ${key} already exists`);
}
if (errors.length > 0)
throw new Error(`${ecu} ${file.filename} ${errors.join(", ")} required`);
};