aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modern/src/common/attributes/useCommandAttributes.js202
-rw-r--r--modern/src/settings/CommandSendPage.js2
-rw-r--r--modern/src/settings/components/BaseCommandView.js46
3 files changed, 236 insertions, 14 deletions
diff --git a/modern/src/common/attributes/useCommandAttributes.js b/modern/src/common/attributes/useCommandAttributes.js
index 1212d283..189a0e2e 100644
--- a/modern/src/common/attributes/useCommandAttributes.js
+++ b/modern/src/common/attributes/useCommandAttributes.js
@@ -8,4 +8,206 @@ export default (t) => useMemo(() => ({
type: 'string',
},
],
+ positionPeriodic: [
+ {
+ key: 'frequency',
+ name: t('commandFrequency'),
+ type: 'number',
+ },
+ ],
+ setTimezone: [
+ {
+ key: 'timezone',
+ name: t('commandTimezone'),
+ type: 'string',
+ },
+ ],
+ sendSms: [
+ {
+ key: 'phone',
+ name: t('commandPhone'),
+ type: 'string',
+ },
+ {
+ key: 'message',
+ name: t('commandMessage'),
+ type: 'string',
+ },
+ ],
+ message: [
+ {
+ key: 'message',
+ name: t('commandMessage'),
+ type: 'string',
+ },
+ ],
+ sendUssd: [
+ {
+ key: 'phone',
+ name: t('commandPhone'),
+ type: 'string',
+ },
+ ],
+ sosNumber: [
+ {
+ key: 'index',
+ name: t('commandIndex'),
+ type: 'number',
+ },
+ {
+ key: 'phone',
+ name: t('commandPhone'),
+ type: 'string',
+ },
+ ],
+ silenceTime: [
+ {
+ key: 'data',
+ name: t('commandData'),
+ type: 'string',
+ },
+ ],
+ setPhonebook: [
+ {
+ key: 'data',
+ name: t('commandData'),
+ type: 'string',
+ },
+ ],
+ voiceMessage: [
+ {
+ key: 'data',
+ name: t('commandData'),
+ type: 'string',
+ },
+ ],
+ outputControl: [
+ {
+ key: 'index',
+ name: t('commandIndex'),
+ type: 'number',
+ },
+ {
+ key: 'data',
+ name: t('commandData'),
+ type: 'string',
+ },
+ ],
+ voiceMonitoring: [
+ {
+ key: 'enable',
+ name: t('commandEnable'),
+ type: 'boolean',
+ },
+ ],
+ setAgps: [
+ {
+ key: 'enable',
+ name: t('commandEnable'),
+ type: 'boolean',
+ },
+ ],
+ setIndicator: [
+ {
+ key: 'data',
+ name: t('commandData'),
+ type: 'string',
+ },
+ ],
+ configuration: [
+ {
+ key: 'data',
+ name: t('commandData'),
+ type: 'string',
+ },
+ ],
+ setConnection: [
+ {
+ key: 'server',
+ name: t('commandServer'),
+ type: 'string',
+ },
+ {
+ key: 'port',
+ name: t('commandPort'),
+ type: 'number',
+ },
+ ],
+ setOdometer: [
+ {
+ key: 'data',
+ name: t('commandData'),
+ type: 'string',
+ },
+ ],
+ modePowerSaving: [
+ {
+ key: 'enable',
+ name: t('commandEnable'),
+ type: 'boolean',
+ },
+ ],
+ modeDeepSleep: [
+ {
+ key: 'enable',
+ name: t('commandEnable'),
+ type: 'boolean',
+ },
+ ],
+ alarmGeofence: [
+ {
+ key: 'radius',
+ name: t('commandRadius'),
+ type: 'number',
+ },
+ ],
+ alarmBattery: [
+ {
+ key: 'enable',
+ name: t('commandEnable'),
+ type: 'boolean',
+ },
+ ],
+ alarmSos: [
+ {
+ key: 'enable',
+ name: t('commandEnable'),
+ type: 'boolean',
+ },
+ ],
+ alarmRemove: [
+ {
+ key: 'enable',
+ name: t('commandEnable'),
+ type: 'boolean',
+ },
+ ],
+ alarmClock: [
+ {
+ key: 'data',
+ name: t('commandData'),
+ type: 'string',
+ },
+ ],
+ alarmSpeed: [
+ {
+ key: 'data',
+ name: t('commandData'),
+ type: 'string',
+ },
+ ],
+ alarmFall: [
+ {
+ key: 'enable',
+ name: t('commandEnable'),
+ type: 'boolean',
+ },
+ ],
+ alarmVibration: [
+ {
+ key: 'data',
+ name: t('commandData'),
+ type: 'string',
+ },
+ ],
}), [t]);
diff --git a/modern/src/settings/CommandSendPage.js b/modern/src/settings/CommandSendPage.js
index a817e11d..cc0dae63 100644
--- a/modern/src/settings/CommandSendPage.js
+++ b/modern/src/settings/CommandSendPage.js
@@ -88,7 +88,7 @@ const CommandSendPage = () => {
variant="filled"
/>
{!savedId && (
- <BaseCommandView item={item} setItem={setItem} />
+ <BaseCommandView item={item} setItem={setItem} />
)}
</AccordionDetails>
</Accordion>
diff --git a/modern/src/settings/components/BaseCommandView.js b/modern/src/settings/components/BaseCommandView.js
index b422e153..836e8789 100644
--- a/modern/src/settings/components/BaseCommandView.js
+++ b/modern/src/settings/components/BaseCommandView.js
@@ -34,19 +34,39 @@ const BaseCommandView = ({ item, setItem }) => {
label={t('sharedType')}
variant="filled"
/>
- {attributes.map((attribute) => (
- <TextField
- margin="normal"
- value={item.attributes[attribute.key]}
- onChange={(e) => {
- const updateItem = { ...item, attributes: { ...item.attributes } };
- updateItem.attributes[attribute.key] = e.target.value;
- setItem(updateItem);
- }}
- label={attribute.name}
- variant="filled"
- />
- ))}
+ {attributes.map(({ key, name, type }) => {
+ if (type === 'boolean') {
+ return (
+ <FormControlLabel
+ control={(
+ <Checkbox
+ checked={item.attributes[key]}
+ onChange={(e) => {
+ const updateItem = { ...item, attributes: { ...item.attributes } };
+ updateItem.attributes[key] = e.target.checked;
+ setItem(updateItem);
+ }}
+ />
+ )}
+ label={name}
+ />
+ );
+ }
+ return (
+ <TextField
+ margin="normal"
+ type={type === 'number' ? 'number' : 'text'}
+ value={item.attributes[key]}
+ onChange={(e) => {
+ const updateItem = { ...item, attributes: { ...item.attributes } };
+ updateItem.attributes[key] = type === 'number' ? Number(e.target.value) : e.target.value;
+ setItem(updateItem);
+ }}
+ label={name}
+ variant="filled"
+ />
+ );
+ })}
<FormControlLabel
control={<Checkbox checked={item.textChannel} onChange={(event) => setItem({ ...item, textChannel: event.target.checked })} />}
label={t('commandSendSms')}