Skip to content

Commit 5c233e0

Browse files
committed
ui: Update vendor for with devices.
1 parent a88daa6 commit 5c233e0

File tree

5 files changed

+90
-10
lines changed

5 files changed

+90
-10
lines changed

interface/api/api.proto

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ message Vendor {
7272
string name = 2;
7373
uint32 lora_alliance_vendor_id = 3;
7474
repeated string ouis = 4;
75-
VendorMetadata metadata = 5;
75+
repeated string devices = 5;
76+
VendorMetadata metadata = 6;
7677
}
7778

7879
message VendorMetadata {

interface/api/grpc-web/api_pb.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ export class Vendor extends jspb.Message {
1818
clearOuisList(): Vendor;
1919
addOuis(value: string, index?: number): Vendor;
2020

21+
getDevicesList(): Array<string>;
22+
setDevicesList(value: Array<string>): Vendor;
23+
clearDevicesList(): Vendor;
24+
addDevices(value: string, index?: number): Vendor;
25+
2126
getMetadata(): VendorMetadata | undefined;
2227
setMetadata(value?: VendorMetadata): Vendor;
2328
hasMetadata(): boolean;
@@ -37,6 +42,7 @@ export namespace Vendor {
3742
name: string,
3843
loraAllianceVendorId: number,
3944
ouisList: Array<string>,
45+
devicesList: Array<string>,
4046
metadata?: VendorMetadata.AsObject,
4147
}
4248
}

interface/api/grpc-web/api_pb.js

Lines changed: 55 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -890,7 +890,7 @@ if (goog.DEBUG && !COMPILED) {
890890
* @private {!Array<number>}
891891
* @const
892892
*/
893-
proto.api.Vendor.repeatedFields_ = [4];
893+
proto.api.Vendor.repeatedFields_ = [4,5];
894894

895895

896896

@@ -927,6 +927,7 @@ proto.api.Vendor.toObject = function(includeInstance, msg) {
927927
name: jspb.Message.getFieldWithDefault(msg, 2, ""),
928928
loraAllianceVendorId: jspb.Message.getFieldWithDefault(msg, 3, 0),
929929
ouisList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f,
930+
devicesList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f,
930931
metadata: (f = msg.getMetadata()) && proto.api.VendorMetadata.toObject(includeInstance, f)
931932
};
932933

@@ -981,6 +982,10 @@ proto.api.Vendor.deserializeBinaryFromReader = function(msg, reader) {
981982
msg.addOuis(value);
982983
break;
983984
case 5:
985+
var value = /** @type {string} */ (reader.readString());
986+
msg.addDevices(value);
987+
break;
988+
case 6:
984989
var value = new proto.api.VendorMetadata;
985990
reader.readMessage(value,proto.api.VendorMetadata.deserializeBinaryFromReader);
986991
msg.setMetadata(value);
@@ -1042,10 +1047,17 @@ proto.api.Vendor.serializeBinaryToWriter = function(message, writer) {
10421047
f
10431048
);
10441049
}
1050+
f = message.getDevicesList();
1051+
if (f.length > 0) {
1052+
writer.writeRepeatedString(
1053+
5,
1054+
f
1055+
);
1056+
}
10451057
f = message.getMetadata();
10461058
if (f != null) {
10471059
writer.writeMessage(
1048-
5,
1060+
6,
10491061
f,
10501062
proto.api.VendorMetadata.serializeBinaryToWriter
10511063
);
@@ -1145,12 +1157,49 @@ proto.api.Vendor.prototype.clearOuisList = function() {
11451157

11461158

11471159
/**
1148-
* optional VendorMetadata metadata = 5;
1160+
* repeated string devices = 5;
1161+
* @return {!Array<string>}
1162+
*/
1163+
proto.api.Vendor.prototype.getDevicesList = function() {
1164+
return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 5));
1165+
};
1166+
1167+
1168+
/**
1169+
* @param {!Array<string>} value
1170+
* @return {!proto.api.Vendor} returns this
1171+
*/
1172+
proto.api.Vendor.prototype.setDevicesList = function(value) {
1173+
return jspb.Message.setField(this, 5, value || []);
1174+
};
1175+
1176+
1177+
/**
1178+
* @param {string} value
1179+
* @param {number=} opt_index
1180+
* @return {!proto.api.Vendor} returns this
1181+
*/
1182+
proto.api.Vendor.prototype.addDevices = function(value, opt_index) {
1183+
return jspb.Message.addToRepeatedField(this, 5, value, opt_index);
1184+
};
1185+
1186+
1187+
/**
1188+
* Clears the list making it empty but non-null.
1189+
* @return {!proto.api.Vendor} returns this
1190+
*/
1191+
proto.api.Vendor.prototype.clearDevicesList = function() {
1192+
return this.setDevicesList([]);
1193+
};
1194+
1195+
1196+
/**
1197+
* optional VendorMetadata metadata = 6;
11491198
* @return {?proto.api.VendorMetadata}
11501199
*/
11511200
proto.api.Vendor.prototype.getMetadata = function() {
11521201
return /** @type{?proto.api.VendorMetadata} */ (
1153-
jspb.Message.getWrapperField(this, proto.api.VendorMetadata, 5));
1202+
jspb.Message.getWrapperField(this, proto.api.VendorMetadata, 6));
11541203
};
11551204

11561205

@@ -1159,7 +1208,7 @@ proto.api.Vendor.prototype.getMetadata = function() {
11591208
* @return {!proto.api.Vendor} returns this
11601209
*/
11611210
proto.api.Vendor.prototype.setMetadata = function(value) {
1162-
return jspb.Message.setWrapperField(this, 5, value);
1211+
return jspb.Message.setWrapperField(this, 6, value);
11631212
};
11641213

11651214

@@ -1177,7 +1226,7 @@ proto.api.Vendor.prototype.clearMetadata = function() {
11771226
* @return {boolean}
11781227
*/
11791228
proto.api.Vendor.prototype.hasMetadata = function() {
1180-
return jspb.Message.getField(this, 5) != null;
1229+
return jspb.Message.getField(this, 6) != null;
11811230
};
11821231

11831232

interface/src/structs.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ impl From<&api::Vendor> for VendorConfiguration {
112112
name: value.name.clone(),
113113
id: value.lora_alliance_vendor_id,
114114
ouis: value.ouis.clone(),
115-
devices: Vec::new(),
115+
devices: value.devices.clone(),
116116
metadata: VendorMetadata {
117117
homepage: value.metadata.as_ref().map(|v| v.homepage.clone()),
118118
},
@@ -128,6 +128,7 @@ impl From<&VendorConfiguration> for api::Vendor {
128128
name: value.vendor.name.clone(),
129129
lora_alliance_vendor_id: value.vendor.id,
130130
ouis: value.vendor.ouis.clone(),
131+
devices: value.vendor.devices.clone(),
131132
metadata: Some(api::VendorMetadata {
132133
homepage: value.vendor.metadata.homepage.clone().unwrap_or_default(),
133134
}),

interface/ui/src/views/vendors/VendorForm.tsx

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
import { Form, Input, InputNumber, Button, } from "antd";
1+
import { useState, useEffect } from "react";
2+
3+
import { Form, Input, InputNumber, Button, Select } from "antd";
24
import { MinusCircleOutlined, PlusOutlined } from "@ant-design/icons";
35

4-
import { Vendor, VendorMetadata } from "@api/grpc-web/api_pb";
6+
import { Vendor, VendorMetadata, ListDevicesRequest, ListDevicesResponse, Device } from "@api/grpc-web/api_pb";
7+
import DeviceProfileStore from "../../stores/DeviceProfileStore";
58
import { slugify } from "../helpers";
69

710
interface IProps {
@@ -12,6 +15,17 @@ interface IProps {
1215

1316
function VendorForm(props: IProps) {
1417
const [form] = Form.useForm();
18+
const [devices, setDevices] = useState<Device[]>([]);
19+
20+
useEffect(() => {
21+
const v = props.initialValues;
22+
23+
const req = new ListDevicesRequest();
24+
req.setVendorDir(v.getDir());
25+
DeviceProfileStore.listDevices(req, (resp: ListDevicesResponse) => {
26+
setDevices(resp.getResultList());
27+
});
28+
}, [props.initialValues]);
1529

1630
const onFinish = (values: Vendor.AsObject) => {
1731
const v = Object.assign(props.initialValues.toObject(), values);
@@ -23,6 +37,7 @@ function VendorForm(props: IProps) {
2337
vendor.setName(v.name);
2438
vendor.setLoraAllianceVendorId(v.loraAllianceVendorId);
2539
vendor.setOuisList(v.ouisList);
40+
vendor.setDevicesList(v.devicesList);
2641

2742
vendorMetadata.setHomepage(v.metadata?.homepage || "");
2843
vendor.setMetadata(vendorMetadata);
@@ -60,6 +75,14 @@ function VendorForm(props: IProps) {
6075
<Form.Item label="LoRa Alliance Vendor ID" name="loraAllianceVendorId" tooltip="This ID is provided by the LoRa Alliance.">
6176
<InputNumber min={0} />
6277
</Form.Item>
78+
<Form.Item label="Devices" name="devicesList">
79+
<Select mode="multiple" options={devices.map((v) => {
80+
return {
81+
label: v.getFile(),
82+
value: v.getFile(),
83+
};
84+
})} />
85+
</Form.Item>
6386
<Form.List name="ouisList">
6487
{(fields, { add, remove }) => (
6588
<>

0 commit comments

Comments
 (0)