mirror of
https://github.com/home-assistant/frontend.git
synced 2025-08-01 13:37:47 +00:00
Fix setting aspect ratio in percentage (#2289)
* Fix setting aspect ratio in percentage * Use endsWith * Fix invalid test
This commit is contained in:
parent
71ed83ef07
commit
b3b9ca9c3f
@ -1,24 +1,30 @@
|
||||
export default function parseAspectRatio(input) {
|
||||
// Handle 16x9, 16:9, 1.78x1, 1.78:1, 1.78
|
||||
// Ignore everything else
|
||||
function parseOrThrow(num) {
|
||||
const parsed = parseFloat(num);
|
||||
if (isNaN(parsed)) {
|
||||
throw new Error(`${num} is not a number`);
|
||||
}
|
||||
return parsed;
|
||||
// Handle 16x9, 16:9, 1.78x1, 1.78:1, 1.78
|
||||
// Ignore everything else
|
||||
const parseOrThrow = (num) => {
|
||||
const parsed = parseFloat(num);
|
||||
if (isNaN(parsed)) {
|
||||
throw new Error(`${num} is not a number`);
|
||||
}
|
||||
return parsed;
|
||||
};
|
||||
|
||||
export default function parseAspectRatio(input: string) {
|
||||
if (!input) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
if (input) {
|
||||
const arr = input.replace(":", "x").split("x");
|
||||
if (arr.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return arr.length === 1
|
||||
? { w: parseOrThrow(arr[0]), h: 1 }
|
||||
: { w: parseOrThrow(arr[0]), h: parseOrThrow(arr[1]) };
|
||||
if (input.endsWith("%")) {
|
||||
return { w: 100, h: parseOrThrow(input.substr(0, input.length - 1)) };
|
||||
}
|
||||
|
||||
const arr = input.replace(":", "x").split("x");
|
||||
if (arr.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return arr.length === 1
|
||||
? { w: parseOrThrow(arr[0]), h: 1 }
|
||||
: { w: parseOrThrow(arr[0]), h: parseOrThrow(arr[1]) };
|
||||
} catch (err) {
|
||||
// Ignore the error
|
||||
}
|
||||
|
@ -31,9 +31,9 @@ describe("parseAspectRatio", () => {
|
||||
assert.deepEqual(r, ratio178);
|
||||
});
|
||||
|
||||
it("Skips null states", () => {
|
||||
const r = parseAspectRatio(null);
|
||||
assert.equal(r, null);
|
||||
it("Parses 23%", () => {
|
||||
const r = parseAspectRatio("23%");
|
||||
assert.deepEqual(r, { w: 100, h: 23 });
|
||||
});
|
||||
|
||||
it("Skips empty states", () => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user