127 lines
3 KiB
TypeScript
127 lines
3 KiB
TypeScript
import { cloneDeep } from "lodash";
|
|
import { pond } from "protobuf-ts/pond";
|
|
import { or } from "utils/types";
|
|
|
|
export class FieldMarker {
|
|
public settings: pond.FieldMarkerSettings = pond.FieldMarkerSettings.create();
|
|
public status: pond.FieldMarkerStatus = pond.FieldMarkerStatus.create();
|
|
|
|
public static create(hm?: pond.FieldMarker): FieldMarker {
|
|
let my = new FieldMarker();
|
|
if (hm) {
|
|
my.settings = pond.FieldMarkerSettings.fromObject(cloneDeep(or(hm.settings, {})));
|
|
my.status = pond.FieldMarkerStatus.fromObject(cloneDeep(or(hm.status, {})));
|
|
}
|
|
return my;
|
|
}
|
|
|
|
public static clone(other?: FieldMarker): FieldMarker {
|
|
if (other) {
|
|
return FieldMarker.create(
|
|
pond.FieldMarker.fromObject({
|
|
settings: cloneDeep(other.settings),
|
|
status: cloneDeep(other.status)
|
|
})
|
|
);
|
|
}
|
|
return FieldMarker.create();
|
|
}
|
|
|
|
public static any(data: any): FieldMarker {
|
|
return FieldMarker.create(pond.FieldMarker.fromObject(cloneDeep(data)));
|
|
}
|
|
|
|
public key(): string {
|
|
return this.settings.key;
|
|
}
|
|
|
|
public long(): number {
|
|
return this.settings.longitude;
|
|
}
|
|
|
|
public lat(): number {
|
|
return this.settings.latitude;
|
|
}
|
|
|
|
public description(): string {
|
|
return this.settings.description;
|
|
}
|
|
|
|
public name(): string {
|
|
return this.settings.name;
|
|
}
|
|
|
|
public severity(): number {
|
|
return this.settings.severity;
|
|
}
|
|
|
|
public severityColour(): string {
|
|
switch (this.settings.severity) {
|
|
case 1:
|
|
return "#58d68d";
|
|
case 2:
|
|
return "#FFC300";
|
|
case 3:
|
|
return "#FF5733";
|
|
case 4:
|
|
return "#FF0000";
|
|
default:
|
|
return "#229954";
|
|
}
|
|
}
|
|
|
|
public severityString(): string {
|
|
switch (this.settings.severity) {
|
|
case 1:
|
|
return "Mild";
|
|
case 2:
|
|
return "Moderate";
|
|
case 3:
|
|
return "High";
|
|
case 4:
|
|
return "Severe";
|
|
default:
|
|
return "Low";
|
|
}
|
|
}
|
|
|
|
public area(): number {
|
|
return this.settings.affectedArea;
|
|
}
|
|
|
|
public type(): pond.FieldMarkerType {
|
|
return this.settings.type;
|
|
}
|
|
|
|
public typeString(): string {
|
|
switch (this.settings.type) {
|
|
case pond.FieldMarkerType.FIELD_MARKER_TYPE_WEEDS:
|
|
return "Weeds";
|
|
case pond.FieldMarkerType.FIELD_MARKER_TYPE_PESTS:
|
|
return "Pests";
|
|
case pond.FieldMarkerType.FIELD_MARKER_TYPE_DISEASE:
|
|
return "Disease";
|
|
case pond.FieldMarkerType.FIELD_MARKER_TYPE_OTHER:
|
|
return "Other";
|
|
case pond.FieldMarkerType.FIELD_MARKER_TYPE_ROCKS:
|
|
return "Rocks";
|
|
default:
|
|
return "Invalid Type";
|
|
}
|
|
}
|
|
|
|
public defaultColor(): string {
|
|
switch (this.settings.type) {
|
|
case pond.FieldMarkerType.FIELD_MARKER_TYPE_WEEDS:
|
|
return "green";
|
|
case pond.FieldMarkerType.FIELD_MARKER_TYPE_PESTS:
|
|
return "blue";
|
|
case pond.FieldMarkerType.FIELD_MARKER_TYPE_DISEASE:
|
|
return "yellow";
|
|
case pond.FieldMarkerType.FIELD_MARKER_TYPE_ROCKS:
|
|
return "grey";
|
|
default:
|
|
return "red";
|
|
}
|
|
}
|
|
}
|