Исправлена ошибка наложения телеметрий при активных скважинах

This commit is contained in:
Александр Сироткин 2022-11-07 05:38:31 +05:00
parent 683ccb1c03
commit bf2d6d6d36

View File

@ -140,6 +140,7 @@ export const normalizeData = (data) => data?.map(item => ({
const dateSorter = makeDateSorter('date')
const TelemetryView = memo(() => {
const [currentWellId, setCurrentWellId] = useState(null)
const [dataSaub, setDataSaub] = useState([])
const [dataSpin, setDataSpin] = useState([])
const [chartInterval, setChartInterval] = useState(defaultPeriod)
@ -154,11 +155,11 @@ const TelemetryView = memo(() => {
const saubSubject$ = useMemo(() => new BehaviorSubject(), [])
const spinSubject$ = useMemo(() => new BehaviorSubject(), [])
const handleDataSaub = useCallback((data) => {
const handleDataSaub = useCallback((data, replace = false) => {
if (data) {
const dataSaub = normalizeData(data)
setDataSaub((prev) => {
const out = [...prev, ...dataSaub]
const out = replace ? [...dataSaub] : [...prev, ...dataSaub]
out.sort(dateSorter)
return out
})
@ -184,20 +185,22 @@ const TelemetryView = memo(() => {
}, [spinSubject$])
useEffect(() => {
if (currentWellId == well.id) return
setCurrentWellId(well.id)
invokeWebApiWrapperAsync(
async () => {
const flowChart = await DrillFlowChartService.getByIdWell(well.id)
const dataSaub = await TelemetryDataSaubService.getData(well.id, null, chartInterval)
const dataSpin = await TelemetryDataSpinService.getData(well.id, null, chartInterval)
setFlowChartData(flowChart ?? [])
handleDataSaub(dataSaub)
handleDataSpin(dataSpin)
handleDataSaub(dataSaub, true)
setDataSpin(Array.isArray(dataSpin) ? dataSpin : [])
},
null,
`Не удалось получить данные`,
{ actionName: 'Получение данных по скважине', well }
)
}, [well, chartInterval, handleDataSpin, handleDataSaub])
}, [well, chartInterval, currentWellId, handleDataSaub])
useEffect(() => {
const unsubscribe = Subscribe(