Skip to content

Commit

Permalink
feat: add COORDINATE_SYSTEM_12X8, CoordinateSystem12X8
Browse files Browse the repository at this point in the history
BREAKING CHANGE: rename COORDINATE_SYSTEM_96_WELL,CoordinateSystem96Well
  • Loading branch information
spawnia committed Oct 2, 2024
1 parent afb6970 commit b0a765b
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 56 deletions.
6 changes: 3 additions & 3 deletions src/ImageMap/index.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Story } from '@storybook/react';
import React from 'react';

import { Plate } from '../Plate';
import { COORDINATE_SYSTEM_96_WELL } from '../Plate/coordinateSystem96Well';
import { COORDINATE_SYSTEM_12X8 } from '../Plate/coordinateSystem12x8';
import { TecanLayout } from '../index';

import { HiddenArea } from './HiddenArea';
Expand All @@ -23,7 +23,7 @@ export const TecanLayoutExample: Story = function Default() {
content: (
<Plate
data={[{ coordinates: { row: 'A', column: 3 }, content: 'test' }]}
coordinateSystem={COORDINATE_SYSTEM_96_WELL}
coordinateSystem={COORDINATE_SYSTEM_12X8}
/>
),
},
Expand Down Expand Up @@ -56,7 +56,7 @@ export const Default: Story<ImageMapProps> = function Default(args) {
content={
<Plate
data={[{ coordinates: { row: 'A', column: 3 }, content: 'test' }]}
coordinateSystem={COORDINATE_SYSTEM_96_WELL}
coordinateSystem={COORDINATE_SYSTEM_12X8}
/>
}
/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { CoordinateSystem } from './types';

export const COORDINATE_SYSTEM_96_WELL = {
export const COORDINATE_SYSTEM_12X8 = {
rows: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
} as const satisfies CoordinateSystem;

export type CoordinateSystem96Well = typeof COORDINATE_SYSTEM_96_WELL;
export type CoordinateSystem12X8 = typeof COORDINATE_SYSTEM_12X8;
42 changes: 19 additions & 23 deletions src/Plate/index.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import React from 'react';
import { PALETTE } from '../theme';

import {
COORDINATE_SYSTEM_96_WELL,
CoordinateSystem96Well,
} from './coordinateSystem96Well';
COORDINATE_SYSTEM_12X8,
CoordinateSystem12X8,
} from './coordinateSystem12x8';
import { PlateProps, PlateWell } from './types';
import { allCoordinateSystemPositions, coordinatesForPosition } from './utils';

Expand All @@ -21,33 +21,33 @@ export default {
},
};

const data: Array<PlateWell<CoordinateSystem96Well>> = [
const data: Array<PlateWell<CoordinateSystem12X8>> = [
{
coordinates: {
row: COORDINATE_SYSTEM_96_WELL.rows[0],
column: COORDINATE_SYSTEM_96_WELL.columns[6],
row: COORDINATE_SYSTEM_12X8.rows[0],
column: COORDINATE_SYSTEM_12X8.columns[6],
},
content: <i>It renders any ReactNode</i>,
},
{
coordinates: {
row: COORDINATE_SYSTEM_96_WELL.rows[0],
column: COORDINATE_SYSTEM_96_WELL.columns[7],
row: COORDINATE_SYSTEM_12X8.rows[0],
column: COORDINATE_SYSTEM_12X8.columns[7],
},
content: 'Test',
color: PALETTE.red,
},
{
coordinates: {
row: COORDINATE_SYSTEM_96_WELL.rows[1],
column: COORDINATE_SYSTEM_96_WELL.columns[2],
row: COORDINATE_SYSTEM_12X8.rows[1],
column: COORDINATE_SYSTEM_12X8.columns[2],
},
content: 'Some text',
},
{
coordinates: {
row: COORDINATE_SYSTEM_96_WELL.rows[2],
column: COORDINATE_SYSTEM_96_WELL.columns[2],
row: COORDINATE_SYSTEM_12X8.rows[2],
column: COORDINATE_SYSTEM_12X8.columns[2],
},
content: (
<>
Expand All @@ -61,31 +61,27 @@ const data: Array<PlateWell<CoordinateSystem96Well>> = [
];

const COORDINATE_SYSTEM_96_WELL_POSITIONS = allCoordinateSystemPositions(
COORDINATE_SYSTEM_96_WELL,
COORDINATE_SYSTEM_12X8,
);

const rowFlowData: Array<PlateWell<CoordinateSystem96Well>> =
const rowFlowData: Array<PlateWell<CoordinateSystem12X8>> =
COORDINATE_SYSTEM_96_WELL_POSITIONS.map((well) => ({
coordinates: coordinatesForPosition(well, 'row', COORDINATE_SYSTEM_96_WELL),
coordinates: coordinatesForPosition(well, 'row', COORDINATE_SYSTEM_12X8),
content: well,
}));

const columnFlowData: Array<PlateWell<CoordinateSystem96Well>> =
const columnFlowData: Array<PlateWell<CoordinateSystem12X8>> =
COORDINATE_SYSTEM_96_WELL_POSITIONS.map((well) => ({
coordinates: coordinatesForPosition(
well,
'column',
COORDINATE_SYSTEM_96_WELL,
),
coordinates: coordinatesForPosition(well, 'column', COORDINATE_SYSTEM_12X8),
content: well,
}));

const Template: Story<Partial<PlateProps<CoordinateSystem96Well>>> =
const Template: Story<Partial<PlateProps<CoordinateSystem12X8>>> =
function Template(args) {
return (
<Plate
data={null}
coordinateSystem={COORDINATE_SYSTEM_96_WELL}
coordinateSystem={COORDINATE_SYSTEM_12X8}
dndContextProps={{
onDragEnd: action('onDragEnd'), // dataLocation: `const sourceData = e.active.data.current; const targetData = e.over?.data.current;`
}}
Expand Down
4 changes: 2 additions & 2 deletions src/Plate/index.test.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { render } from '@testing-library/react';
import React from 'react';

import { COORDINATE_SYSTEM_96_WELL } from './coordinateSystem96Well';
import { COORDINATE_SYSTEM_12X8 } from './coordinateSystem12x8';

import { Plate } from './index';

describe('Plate', () => {
it('renders without data', () => {
render(<Plate data={null} coordinateSystem={COORDINATE_SYSTEM_96_WELL} />);
render(<Plate data={null} coordinateSystem={COORDINATE_SYSTEM_12X8} />);
});
});
2 changes: 1 addition & 1 deletion src/Plate/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {
} from './utils';

export * from './constants';
export * from './coordinateSystem96Well';
export * from './coordinateSystem12x8';
export * from './coordinateSystem2x16';
export * from './types';
export * from './utils';
Expand Down
43 changes: 18 additions & 25 deletions src/Plate/utils.test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {
COORDINATE_SYSTEM_96_WELL,
CoordinateSystem96Well,
} from './coordinateSystem96Well';
COORDINATE_SYSTEM_12X8,
CoordinateSystem12X8,
} from './coordinateSystem12x8';
import { Coordinates, CoordinateSystem } from './types';
import {
allCoordinateSystemCoordinates,
Expand Down Expand Up @@ -80,13 +80,13 @@ const data = [
describe.each(data)('rowForPosition', (dataSet) => {
it('provides the row for a position depending on the flow', () => {
expect(
rowForPosition(dataSet.rowFlowPosition, 'row', COORDINATE_SYSTEM_96_WELL),
rowForPosition(dataSet.rowFlowPosition, 'row', COORDINATE_SYSTEM_12X8),
).toBe(dataSet.row);
expect(
rowForPosition(
dataSet.columnFlowPosition,
'column',
COORDINATE_SYSTEM_96_WELL,
COORDINATE_SYSTEM_12X8,
),
).toBe(dataSet.row);
});
Expand All @@ -95,17 +95,13 @@ describe.each(data)('rowForPosition', (dataSet) => {
describe.each(data)('columnForPosition', (dataSet) => {
it('provides the column for a position depending on the flow', () => {
expect(
columnForPosition(
dataSet.rowFlowPosition,
'row',
COORDINATE_SYSTEM_96_WELL,
),
columnForPosition(dataSet.rowFlowPosition, 'row', COORDINATE_SYSTEM_12X8),
).toBe(dataSet.column);
expect(
columnForPosition(
dataSet.columnFlowPosition,
'column',
COORDINATE_SYSTEM_96_WELL,
COORDINATE_SYSTEM_12X8,
),
).toBe(dataSet.column);
});
Expand All @@ -116,7 +112,7 @@ describe.each(data)('convertPositionFromColumnToRowFlow', (dataSet) => {
expect(
convertPositionFromColumnToRowFlow(
dataSet.columnFlowPosition,
COORDINATE_SYSTEM_96_WELL,
COORDINATE_SYSTEM_12X8,
),
).toBe(dataSet.rowFlowPosition);
});
Expand All @@ -127,7 +123,7 @@ describe.each(data)('convertPositionFromRowToColumnFlow', (dataSet) => {
expect(
convertPositionFromRowToColumnFlow(
dataSet.rowFlowPosition,
COORDINATE_SYSTEM_96_WELL,
COORDINATE_SYSTEM_12X8,
),
).toBe(dataSet.columnFlowPosition);
});
Expand All @@ -136,43 +132,40 @@ describe.each(data)('convertPositionFromRowToColumnFlow', (dataSet) => {
describe('ensureCoordinatesInRange', () => {
it('throws on invalid rows', () => {
expect(() =>
ensureCoordinatesInRange(
{ row: 'X', column: 2 },
COORDINATE_SYSTEM_96_WELL,
),
ensureCoordinatesInRange({ row: 'X', column: 2 }, COORDINATE_SYSTEM_12X8),
).toThrow();
});

it('throws on invalid columns', () => {
expect(() =>
ensureCoordinatesInRange(
{ row: 'B', column: 23 },
COORDINATE_SYSTEM_96_WELL,
COORDINATE_SYSTEM_12X8,
),
).toThrow();
});

it('works with valid coordinates', () => {
const coordinates: Coordinates<CoordinateSystem96Well> = {
const coordinates: Coordinates<CoordinateSystem12X8> = {
row: 'A',
column: 3,
};
expect(
ensureCoordinatesInRange(coordinates, COORDINATE_SYSTEM_96_WELL),
).toBe(coordinates);
expect(ensureCoordinatesInRange(coordinates, COORDINATE_SYSTEM_12X8)).toBe(
coordinates,
);
});
});

describe('areEqualCoordinates', () => {
it('match', () => {
const a: Coordinates<CoordinateSystem96Well> = { row: 'A', column: 2 };
const a: Coordinates<CoordinateSystem12X8> = { row: 'A', column: 2 };
expect(areEqualCoordinates(a, a)).toBe(true);
expect(areEqualCoordinates(a, { ...a, foo: 'bar' })).toBe(true);
});

it('no match', () => {
const a: Coordinates<CoordinateSystem96Well> = { row: 'A', column: 2 };
const b: Coordinates<CoordinateSystem96Well> = { row: 'B', column: 3 };
const a: Coordinates<CoordinateSystem12X8> = { row: 'A', column: 2 };
const b: Coordinates<CoordinateSystem12X8> = { row: 'B', column: 3 };
expect(areEqualCoordinates(a, b)).toBe(false);
expect(areEqualCoordinates(a, { ...b, foo: 'bar' })).toBe(false);
});
Expand Down

0 comments on commit b0a765b

Please sign in to comment.