Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Development/src/components/ParameterRegisters.js
Original file line number Diff line number Diff line change
Expand Up @@ -175,4 +175,7 @@ export const TRANSPORTS = {
'urn:x-nmos:transport:websocket': {
label: 'WebSocket',
},
'urn:x-nmos:transport:mxl': {
label: 'MXL',
},
};
3 changes: 3 additions & 0 deletions Development/src/components/makeConnection.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ const oneToOneTransportParams = {
'connection_authorization',
'connection_uri',
],
'urn:x-nmos:transport:mxl': ['mxl_domain_id', 'mxl_flow_id'],
};

// create an array mapping receiver leg to sender leg
Expand Down Expand Up @@ -140,6 +141,8 @@ const makePatchDataWithTransportParams = (data, options) => {
break;
case 'urn:x-nmos:transport:websocket':
break;
case 'urn:x-nmos:transport:mxl':
break;
default:
break;
}
Expand Down
8 changes: 6 additions & 2 deletions Development/src/dataProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -667,8 +667,10 @@ const getConnectionResourceEndpoints = (addresses, resource, id) => {
if (response.ok) {
return response.text();
}
return null;
})
.then(text => {
if (text === null) return null;
try {
return JSON.parse(text);
} catch (e) {
Expand All @@ -680,8 +682,10 @@ const getConnectionResourceEndpoints = (addresses, resource, id) => {
[`$${endpoint.slice(0, -1)}`]: data,
});
})
.catch(error => {
throw error;
.catch(() => {
endpointData.push({
[`$${endpoint.slice(0, -1)}`]: null,
});
})
)
).then(() => {
Expand Down
70 changes: 70 additions & 0 deletions Development/src/pages/receivers/ReceiverTransportParams.js
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,72 @@ const WebSocketReceiverEdit = ({ record }) => {
);
};

const MXLReceiver = ({ data }) => (
<Grid container spacing={2}>
{Object.keys(data).map(i => (
<Grid item sm key={i}>
<MXLReceiverLeg data={data[i]} />
</Grid>
))}
</Grid>
);

const MXLReceiverLeg = ({ data }) => {
const params_ext = Object.keys(data).filter(x => x.startsWith('ext_'));
return (
<Card elevation={3}>
<CardContent>
<SimpleShowLayout record={data}>
{has(data, 'mxl_domain_id') && (
<TextField
source="mxl_domain_id"
label="MXL Domain ID"
/>
)}
{has(data, 'mxl_flow_id') && (
<TextField source="mxl_flow_id" label="MXL Flow ID" />
)}
{params_ext.length !== 0 && <SanitizedDivider />}
{params_ext.map(param => (
<TextField
source={param}
label={labelize(param)}
key={param}
/>
))}
</SimpleShowLayout>
</CardContent>
</Card>
);
};

const MXLReceiverEdit = ({ record }) => {
const data = get(record, '$staged.transport_params');
const uniqueKeys = Object.keys(
data.reduce((result, obj) => Object.assign(result, obj), {})
);
const params_ext = uniqueKeys.filter(x => x.startsWith('ext_'));
return (
<ArrayInput
label="Transport Parameters"
source="$staged.transport_params"
>
<CardFormIterator disableRemove disableAdd>
<TextInput source="mxl_domain_id" label="MXL Domain ID" />
<TextInput source="mxl_flow_id" label="MXL Flow ID" />
{params_ext.length !== 0 && <SanitizedDivider />}
{params_ext.map(param => (
<TextInput
source={param}
label={labelize(param)}
key={param}
/>
))}
</CardFormIterator>
</ArrayInput>
);
};

const ReceiverTransportParamsCardsGrid = ({ ids, record }) => {
const type = get(record, '$transporttype');
const data = [];
Expand All @@ -430,6 +496,8 @@ const ReceiverTransportParamsCardsGrid = ({ ids, record }) => {
return <RTPReceiver data={data} />;
case 'urn:x-nmos:transport:websocket':
return <WebSocketReceiver data={data} />;
case 'urn:x-nmos:transport:mxl':
return <MXLReceiver data={data} />;
default:
return <b>Unknown Type</b>;
}
Expand All @@ -441,6 +509,8 @@ const ReceiverTransportParamsCardsGrid = ({ ids, record }) => {
return <RTPReceiverEdit record={record} />;
case 'urn:x-nmos:transport:websocket':
return <WebSocketReceiverEdit record={record} />;
case 'urn:x-nmos:transport:mxl':
return <MXLReceiverEdit record={record} />;
default:
return <b>Unknown Type</b>;
}
Expand Down
70 changes: 70 additions & 0 deletions Development/src/pages/senders/SenderTransportParams.js
Original file line number Diff line number Diff line change
Expand Up @@ -497,6 +497,72 @@ const WebSocketSenderEdit = ({ record }) => {
);
};

const MXLSender = ({ data }) => (
<Grid container spacing={2}>
{Object.keys(data).map(i => (
<Grid item sm key={i}>
<MXLSenderLeg data={data[i]} />
</Grid>
))}
</Grid>
);

const MXLSenderLeg = ({ data }) => {
const params_ext = Object.keys(data).filter(x => x.startsWith('ext_'));
return (
<Card elevation={3}>
<CardContent>
<SimpleShowLayout record={data}>
{has(data, 'mxl_domain_id') && (
<TextField
source="mxl_domain_id"
label="MXL Domain ID"
/>
)}
{has(data, 'mxl_flow_id') && (
<TextField source="mxl_flow_id" label="MXL Flow ID" />
)}
{params_ext.length !== 0 && <SanitizedDivider />}
{params_ext.map(param => (
<TextField
source={param}
label={labelize(param)}
key={param}
/>
))}
</SimpleShowLayout>
</CardContent>
</Card>
);
};

const MXLSenderEdit = ({ record }) => {
const data = get(record, '$staged.transport_params');
const uniqueKeys = Object.keys(
data.reduce((result, obj) => Object.assign(result, obj), {})
);
const params_ext = uniqueKeys.filter(x => x.startsWith('ext_'));
return (
<ArrayInput
label="Transport Parameters"
source="$staged.transport_params"
>
<CardFormIterator disableRemove disableAdd>
<TextInput source="mxl_domain_id" label="MXL Domain ID" />
<TextInput source="mxl_flow_id" label="MXL Flow ID" />
{params_ext.length !== 0 && <SanitizedDivider />}
{params_ext.map(param => (
<TextInput
source={param}
label={labelize(param)}
key={param}
/>
))}
</CardFormIterator>
</ArrayInput>
);
};

const SenderTransportParamsCardsGrid = ({ ids, record }) => {
const type = get(record, '$transporttype');
const data = [];
Expand All @@ -511,6 +577,8 @@ const SenderTransportParamsCardsGrid = ({ ids, record }) => {
return <RTPSender data={data} />;
case 'urn:x-nmos:transport:websocket':
return <WebSocketSender data={data} />;
case 'urn:x-nmos:transport:mxl':
return <MXLSender data={data} />;
default:
return <b>Unknown Type</b>;
}
Expand All @@ -522,6 +590,8 @@ const SenderTransportParamsCardsGrid = ({ ids, record }) => {
return <RTPSenderEdit record={record} />;
case 'urn:x-nmos:transport:websocket':
return <WebSocketSenderEdit record={record} />;
case 'urn:x-nmos:transport:mxl':
return <MXLSenderEdit record={record} />;
default:
return <b>Unknown Type</b>;
}
Expand Down
Loading