You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.6 KiB
60 lines
1.6 KiB
import { CATEGORIES, STATUSES } from "../../../config";
|
|
import {
|
|
commonPopupConfig,
|
|
residentialPopupConfig,
|
|
rivalsConfig,
|
|
workingPointFields,
|
|
} from "./config";
|
|
import { Col, Row } from "antd";
|
|
import { twMerge } from "tailwind-merge";
|
|
import { LAYER_IDS } from "../../Layers/constants";
|
|
import { isNil } from "../../../utils.js";
|
|
|
|
export const FeatureProperties = ({ feature, dynamicStatus, postamatId }) => {
|
|
const isResidential = feature.properties.category === CATEGORIES.residential;
|
|
const isWorking = feature.properties.status === STATUSES.working;
|
|
const isRivals =
|
|
feature.layer.id === LAYER_IDS.pvz || feature.layer.id === LAYER_IDS.other;
|
|
|
|
const getConfig = () => {
|
|
if (isRivals) {
|
|
return rivalsConfig;
|
|
}
|
|
|
|
const config = isResidential ? residentialPopupConfig : commonPopupConfig;
|
|
return isWorking ? [...config, ...workingPointFields] : config;
|
|
};
|
|
|
|
const getValue = ({ field, render, empty }) => {
|
|
let value = feature.properties[field];
|
|
|
|
if (field === "status" && dynamicStatus) {
|
|
value = dynamicStatus;
|
|
}
|
|
|
|
if (field === "postamat_id" && postamatId) {
|
|
value = postamatId;
|
|
}
|
|
|
|
value = render ? render(value) : value;
|
|
value = isNil(value) && empty ? empty : value;
|
|
|
|
return value;
|
|
};
|
|
|
|
return (
|
|
<div>
|
|
{getConfig().map((row) => {
|
|
return (
|
|
<Row className={twMerge("p-1")} key={row.field}>
|
|
<Col className={"font-semibold"} span={12}>
|
|
{row.name}
|
|
</Col>
|
|
<Col span={12}>{getValue(row)}</Col>
|
|
</Row>
|
|
);
|
|
})}
|
|
</div>
|
|
);
|
|
};
|