@@ -170,7 +170,7 @@ export function PaymentsListPaginated({
|
|||||||
}
|
}
|
||||||
setPaymentContext({
|
setPaymentContext({
|
||||||
actions: { refetch: refetch },
|
actions: { refetch: refetch },
|
||||||
context: apolloResults ? record : apolloResults,
|
context: apolloResults ? apolloResults : record,
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -2,12 +2,24 @@ import { Col, List, Space, Typography } from "antd";
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
const CardColorLegend = ({ bodyshop, cardSettings }) => {
|
const CardColorLegend = ({ bodyshop }) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const data = bodyshop.ssbuckets.map((size) => ({
|
const data = bodyshop.ssbuckets.map((bucket) => {
|
||||||
label: size.label,
|
let color = { r: 255, g: 255, b: 255 };
|
||||||
color: size.color?.hex ?? "white",
|
|
||||||
}));
|
if (bucket.color) {
|
||||||
|
color = bucket.color;
|
||||||
|
|
||||||
|
if (bucket.color.rgb) {
|
||||||
|
color = bucket.color.rgb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
label: bucket.label,
|
||||||
|
color,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Col>
|
<Col>
|
||||||
@@ -24,7 +36,7 @@ const CardColorLegend = ({ bodyshop, cardSettings }) => {
|
|||||||
style={{
|
style={{
|
||||||
width: "1.5rem",
|
width: "1.5rem",
|
||||||
aspectRatio: "1/1",
|
aspectRatio: "1/1",
|
||||||
backgroundColor: item.color,
|
backgroundColor: `rgba(${item.color.r},${item.color.g},${item.color.b},${item.color.a})`,
|
||||||
}}
|
}}
|
||||||
></div>
|
></div>
|
||||||
<div>{item.label}</div>
|
<div>{item.label}</div>
|
||||||
|
|||||||
@@ -24,18 +24,21 @@ const cardColor = (ssbuckets, totalHrs) => {
|
|||||||
bucket.gte <= totalHrs && (!!bucket.lt ? bucket.lt > totalHrs : true)
|
bucket.gte <= totalHrs && (!!bucket.lt ? bucket.lt > totalHrs : true)
|
||||||
)[0];
|
)[0];
|
||||||
|
|
||||||
if (bucket.color) {
|
let color = { r: 255, g: 255, b: 255 };
|
||||||
return bucket.color.hex;
|
|
||||||
|
if (bucket && bucket.color) {
|
||||||
|
color = bucket.color;
|
||||||
|
|
||||||
|
if (bucket.color.rgb) {
|
||||||
|
color = bucket.color.rgb;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return "";
|
return color;
|
||||||
};
|
};
|
||||||
|
|
||||||
function getContrastYIQ(hexColor) {
|
function getContrastYIQ(bgColor) {
|
||||||
const r = parseInt(hexColor.substr(1, 2), 16);
|
const yiq = (bgColor.r * 299 + bgColor.g * 587 + bgColor.b * 114) / 1000;
|
||||||
const g = parseInt(hexColor.substr(3, 2), 16);
|
|
||||||
const b = parseInt(hexColor.substr(5, 2), 16);
|
|
||||||
const yiq = (r * 299 + g * 587 + b * 114) / 1000;
|
|
||||||
|
|
||||||
return yiq >= 128 ? "black" : "white";
|
return yiq >= 128 ? "black" : "white";
|
||||||
}
|
}
|
||||||
@@ -85,7 +88,10 @@ export default function ProductionBoardCard(
|
|||||||
className="react-kanban-card imex-kanban-card"
|
className="react-kanban-card imex-kanban-card"
|
||||||
size="small"
|
size="small"
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: cardSettings && cardSettings.cardcolor && bgColor,
|
backgroundColor:
|
||||||
|
cardSettings &&
|
||||||
|
cardSettings.cardcolor &&
|
||||||
|
`rgba(${bgColor.r},${bgColor.g},${bgColor.b},${bgColor.a})`,
|
||||||
color:
|
color:
|
||||||
cardSettings && cardSettings.cardcolor && getContrastYIQ(bgColor),
|
cardSettings && cardSettings.cardcolor && getContrastYIQ(bgColor),
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ export default function ProductionBoardKanbanCardSettings({
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
return (
|
return (
|
||||||
<Popover content={overlay} visible={visible}>
|
<Popover content={overlay} visible={visible} placement="topRight">
|
||||||
<Button loading={loading} onClick={() => setVisible(true)}>
|
<Button loading={loading} onClick={() => setVisible(true)}>
|
||||||
{t("production.labels.cardsettings")}
|
{t("production.labels.cardsettings")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -396,7 +396,7 @@ export function ShopInfoROStatusComponent({ bodyshop, form }) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const ColorPicker = ({ value, onChange, style, ...restProps }) => {
|
export const ColorPicker = ({ value, onChange, style, ...restProps }) => {
|
||||||
const handleChange = (color) => {
|
const handleChange = (color) => {
|
||||||
if (onChange) onChange(color.rgb);
|
if (onChange) onChange(color.rgb);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import { useTranslation } from "react-i18next";
|
|||||||
import ColorpickerFormItemComponent from "../form-items-formatted/colorpicker-form-item.component";
|
import ColorpickerFormItemComponent from "../form-items-formatted/colorpicker-form-item.component";
|
||||||
import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component";
|
import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component";
|
||||||
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
||||||
|
import { ColorPicker } from "./shop-info.rostatus.component";
|
||||||
|
|
||||||
export default function ShopInfoSchedulingComponent({ form }) {
|
export default function ShopInfoSchedulingComponent({ form }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -278,25 +279,49 @@ export default function ShopInfoSchedulingComponent({ form }) {
|
|||||||
<InputNumber />
|
<InputNumber />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
<Form.Item
|
<Space direction="horizontal">
|
||||||
label={t("bodyshop.fields.ssbuckets.color")}
|
<Form.Item
|
||||||
key={`${index}color`}
|
label={
|
||||||
name={[field.name, "color"]}
|
<Space>
|
||||||
>
|
{t("bodyshop.fields.ssbuckets.color")}
|
||||||
<ColorpickerFormItemComponent />
|
<Button
|
||||||
</Form.Item>
|
size="small"
|
||||||
|
onClick={() => {
|
||||||
|
form.setFieldValue([
|
||||||
|
"ssbuckets",
|
||||||
|
field.name,
|
||||||
|
"color",
|
||||||
|
]);
|
||||||
|
|
||||||
<Space wrap>
|
form.setFields([
|
||||||
<DeleteFilled
|
{
|
||||||
onClick={() => {
|
name: ["ssbuckets", field.name, "color"],
|
||||||
remove(field.name);
|
touched: true,
|
||||||
}}
|
},
|
||||||
/>
|
]);
|
||||||
<FormListMoveArrows
|
}}
|
||||||
move={move}
|
>
|
||||||
index={index}
|
Reset
|
||||||
total={fields.length}
|
</Button>
|
||||||
/>
|
</Space>
|
||||||
|
}
|
||||||
|
key={`${index}color`}
|
||||||
|
name={[field.name, "color"]}
|
||||||
|
>
|
||||||
|
<ColorPicker />
|
||||||
|
</Form.Item>
|
||||||
|
<Space wrap>
|
||||||
|
<DeleteFilled
|
||||||
|
onClick={() => {
|
||||||
|
remove(field.name);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<FormListMoveArrows
|
||||||
|
move={move}
|
||||||
|
index={index}
|
||||||
|
total={fields.length}
|
||||||
|
/>
|
||||||
|
</Space>
|
||||||
</Space>
|
</Space>
|
||||||
</LayoutFormRow>
|
</LayoutFormRow>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ async function OpenSearchUpdateHandler(req, res) {
|
|||||||
clm_total
|
clm_total
|
||||||
comment
|
comment
|
||||||
ins_co_nm
|
ins_co_nm
|
||||||
|
owner_owing
|
||||||
ownr_co_nm
|
ownr_co_nm
|
||||||
ownr_fn
|
ownr_fn
|
||||||
ownr_ln
|
ownr_ln
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ async function OpenSearchUpdateHandler(req, res) {
|
|||||||
"clm_total",
|
"clm_total",
|
||||||
"comment",
|
"comment",
|
||||||
"ins_co_nm",
|
"ins_co_nm",
|
||||||
|
"owner_owing",
|
||||||
"ownr_co_nm",
|
"ownr_co_nm",
|
||||||
"ownr_fn",
|
"ownr_fn",
|
||||||
"ownr_ln",
|
"ownr_ln",
|
||||||
|
|||||||
Reference in New Issue
Block a user