298 lines
9.0 KiB
JavaScript
298 lines
9.0 KiB
JavaScript
import moment from 'moment'
|
|
|
|
export function getG(svg, translateX, translateY) {
|
|
return svg
|
|
.append('g')
|
|
.attr('transform', `translate(${translateX},${translateY})`)
|
|
}
|
|
|
|
// function generatePointer ({ pathData, type, yScaleInstance }) {
|
|
// return (event) => {
|
|
// var index = Math.round(
|
|
// (d3.pointer(event)[0] - step - textLeftMargin) / xScale.step()
|
|
// )
|
|
// var val = xScale.domain()[index]
|
|
// const i = d3.bisectCenter(d3.range(pathData.length), val)
|
|
// console.log(val, index, '=====', pathData[i], 'pathData[i]')
|
|
// const yPos = yScaleInstance(pathData[i].value) + marginTop + HEAD_HEIGHT
|
|
// console.log(`translate(${xScale(i)},${yPos})`)
|
|
// tooltip.style('display', null)
|
|
// tooltip.attr('class', 'myTooltip')
|
|
// tooltip.attr('transform', `translate(${xScale(i) + micoStep},${yPos})`)
|
|
|
|
// const path = tooltip
|
|
// .selectAll('path')
|
|
// .data(['', ''])
|
|
// .join('path')
|
|
// .attr('fill', 'white')
|
|
// .attr('stroke', 'black')
|
|
|
|
// const text = tooltip
|
|
// .selectAll('text')
|
|
// .data(['', ''])
|
|
// .join('text')
|
|
// .call((text) =>
|
|
// text
|
|
// .selectAll('tspan')
|
|
// .data([`${type}: ${pathData[i].value}`, `${pathData[i].date}`])
|
|
// .join('tspan')
|
|
// .attr('x', 0)
|
|
// .attr('y', (_, i) => `${i * 1.2}em`)
|
|
// .attr('font-weight', (_, i) => (i ? null : 'bold'))
|
|
// .text((d) => d)
|
|
// )
|
|
|
|
// const { x, y, width: w, height: h } = text.node().getBBox()
|
|
// text.attr('transform', `translate(${-w / 2},${15 - y})`)
|
|
// path.attr(
|
|
// 'd',
|
|
// `M${-w / 2 - 10},5H-5l5,-5l5,5H${w / 2 + 10}v${h + 20}h-${w + 20}z`
|
|
// )
|
|
// }
|
|
// }
|
|
export function getTypeDatas(typeData, beginDate) {
|
|
const types = typeData.sort((a, b) => new Date(a.date) - new Date(b.date))
|
|
return types.map(item => {
|
|
return {
|
|
index: getIndex(beginDate, item.date, '00:00:00') / 6,
|
|
times: 0,
|
|
date: item.date,
|
|
typeCode: item.typeCode,
|
|
typeValue: (item.typeValue) || null
|
|
}
|
|
})
|
|
}
|
|
|
|
export function getTypeData(type, allData = [], isNumber = true, beginDate) {
|
|
const getList = allData
|
|
.map((rowBOSItem, index) => {
|
|
const rowBOS = rowBOSItem.rowBOS
|
|
const cur =
|
|
rowBOS.find((item) => {
|
|
return item.typeCode === type
|
|
}) || {}
|
|
return {
|
|
index: getIndex(beginDate, cur.date, cur.times),
|
|
date: cur.date,
|
|
value: (isNumber ? +cur.typeValue : cur.typeValue) || null
|
|
}
|
|
})
|
|
.map((item) => {
|
|
if (item.value) {
|
|
// item.value = NaN
|
|
}
|
|
return item
|
|
})
|
|
return getList.sort((a, b) => a.index - b.index)
|
|
}
|
|
// 获取不升
|
|
export function getType(type, allData = [], beginDate) {
|
|
const getList = allData
|
|
.map((rowBOSItem, index) => {
|
|
const rowBOS = rowBOSItem.rowBOS
|
|
const cur =
|
|
rowBOS.find((item) => {
|
|
return item.typeCode === type
|
|
}) || {}
|
|
return {
|
|
index: getIndex(beginDate, cur.date, cur.times),
|
|
date: cur.date,
|
|
value: cur.typeValue !== '' ? (parseFloat(cur.typeValue) <= 35 ? '不升' : null) : null
|
|
}
|
|
})
|
|
.map((item) => {
|
|
if (item.value) {
|
|
// item.value = NaN
|
|
}
|
|
return item
|
|
})
|
|
return getList.sort((a, b) => a.index - b.index)
|
|
}
|
|
// 合并标记内容
|
|
export function setMergeTag(ymbolTextArr = [], symbolContent = []) {
|
|
const arr = []
|
|
ymbolTextArr.forEach(item => {
|
|
symbolContent.forEach(res => {
|
|
if (item.index === res.index) {
|
|
arr.push({ ...item, ...res, value: (item.value !== null ? item.value : '') + (res.value !== null ? res.value : '') })
|
|
}
|
|
})
|
|
})
|
|
return arr
|
|
}
|
|
// 筛选手术产后日数
|
|
export function postpartumDays(type, arr) {
|
|
return arr.filter(item => item.typeCode === type).map(i => i.typeValue)
|
|
}
|
|
// 筛选体温
|
|
export function getTypeAnimalHeat(type, allData = [], code, beginDate) {
|
|
const getList = allData
|
|
.map((rowBOSItem, index) => {
|
|
console.log(rowBOSItem.rowBOS, 'rowBOSItem.rowBOS')
|
|
const rowBOS = rowBOSItem.rowBOS
|
|
const curList = // 改为 filter 来获取所有符合条件的项
|
|
rowBOS.filter((item) => {
|
|
return item.typeCode === type
|
|
}) || []
|
|
|
|
// 针对每个 cur 处理并生成新的对象数组
|
|
return curList.map((cur) => ({
|
|
index: getIndex(beginDate, cur.date, cur.times),
|
|
date: cur.date,
|
|
value: (+cur.collectionMode === +code ? +cur.typeValue : null) || null
|
|
}))
|
|
})
|
|
.flat() // 将二维数组展平为一维数组
|
|
.map((item) => {
|
|
if (item.value) {
|
|
// item.value = NaN
|
|
}
|
|
return item
|
|
})
|
|
console.log(getList, 'getList')
|
|
return getList.sort((a, b) => a.index - b.index)
|
|
}
|
|
// 设置折线
|
|
export function getBrokenLine(type, allData = [], arr = [], list = [], topList = [], beginDate) {
|
|
const result = []
|
|
const getList = allData
|
|
.map((rowBOSItem, index) => {
|
|
const rowBOS = rowBOSItem.rowBOS
|
|
const cur =
|
|
rowBOS.find((item) => {
|
|
return item.typeCode === type
|
|
}) || {}
|
|
return {
|
|
index: getIndex(beginDate, cur.date, cur.times),
|
|
date: cur.date,
|
|
value: +cur.typeValue
|
|
}
|
|
})
|
|
.map((item) => {
|
|
if (item.value) {
|
|
// item.value = NaN
|
|
}
|
|
return item
|
|
})
|
|
const _a = arr.filter(item => item.value)
|
|
const _b = list.filter(item => item.value)
|
|
const _c = topList.filter(item => item.value)
|
|
const mergingData = [..._a, ..._b, ..._c, { index: 50 }].sort((a, b) => a.index - b.index)
|
|
let start = 0
|
|
mergingData.forEach(item => {
|
|
const _p = getList.sort((a, b) => a.index - b.index).slice(start, item.index)
|
|
start = item.index + 1
|
|
result.push(_p)
|
|
})
|
|
return result
|
|
}
|
|
// 处理脉搏心率
|
|
export function getHeartRate(type, allData = [], arr = [], topList = [], isNumber = true, beginDate) {
|
|
const result = []
|
|
const getList = allData
|
|
.map((rowBOSItem, index) => {
|
|
const rowBOS = rowBOSItem.rowBOS
|
|
const cur =
|
|
rowBOS.find((item) => {
|
|
return item.typeCode === type
|
|
}) || {}
|
|
return {
|
|
index: getIndex(beginDate, cur.date, cur.times),
|
|
date: cur.date,
|
|
value: (isNumber ? +cur.typeValue : cur.typeValue) || null
|
|
}
|
|
})
|
|
.map((item) => {
|
|
if (item.value) {
|
|
// item.value = NaN
|
|
}
|
|
return item
|
|
})
|
|
const _a = arr.filter(item => item.value)
|
|
const _c = topList.filter(item => item.value)
|
|
const mergingData = [..._a, ..._c, { index: 50 }].sort((a, b) => a.index - b.index)
|
|
let start = 0
|
|
mergingData.forEach(item => {
|
|
const _p = getList.slice(start, item.index).sort((a, b) => { return a.index - b.index })
|
|
start = item.index
|
|
result.push(_p)
|
|
})
|
|
return result
|
|
}
|
|
function getIndex(beginDate, date, time) {
|
|
if (beginDate === undefined || date === undefined) return
|
|
const diffTime = moment(date.substring(0, 10)).diff(moment(beginDate.substring(0, 10))) / 1000 / 3600 / 24
|
|
const diffIndex = parseInt(time.substring(0, 2))
|
|
return diffTime * 6 + Math.floor(diffIndex / 4)
|
|
}
|
|
// 筛选35和40~42数据
|
|
export function degreesOnline(allData, data, type) {
|
|
const arr = allData.map((item, index) => {
|
|
const cur = data?.find(res => item.value === res.name && +res.isShowPlace === type) || null
|
|
return {
|
|
index: index,
|
|
date: item.date,
|
|
value: cur?.name || null
|
|
}
|
|
})
|
|
return arr
|
|
}
|
|
// 35或42上断开的事件
|
|
export function disconnectEvents(allData, data, code, type) {
|
|
const arr = allData.map((item, index) => {
|
|
const cur = data?.find(res => item.value === res.name && +res.isShowPlace === type && +res[code] === 1) || null
|
|
return {
|
|
index: index,
|
|
date: item.date,
|
|
value: cur?.name || null
|
|
}
|
|
})
|
|
return arr
|
|
}
|
|
|
|
export function getDrawCoolData(type, allData = [], isNumber = true, beginDate) {
|
|
const getList = allData
|
|
.map((rowBOSItem, index) => {
|
|
const rowBOS = rowBOSItem.rowBOS
|
|
const cur =
|
|
rowBOS.find((item) => {
|
|
return item.typeCode === type
|
|
}) || {}
|
|
return {
|
|
index: getIndex(beginDate, cur.date, cur.times),
|
|
date: cur.date + cur.times,
|
|
value: (isNumber ? +cur.typeValue : cur.typeValue) || null
|
|
}
|
|
})
|
|
.map((item) => {
|
|
if (item.value) {
|
|
// item.value = NaN
|
|
}
|
|
return item
|
|
})
|
|
return getList.sort((a, b) => a.index - b.index)
|
|
}
|
|
// 筛选降温getDrawData
|
|
export function getDrawData(type, allData = [], code, beginDate) {
|
|
const getList = allData
|
|
.map((rowBOSItem, index) => {
|
|
const rowBOS = rowBOSItem.rowBOS
|
|
const cur =
|
|
rowBOS.find((item) => {
|
|
return item.typeCode === type
|
|
}) || {}
|
|
return {
|
|
index: getIndex(beginDate, cur.date, cur.times),
|
|
date: cur.date + cur.times,
|
|
value: (+cur.collectionMode === +code ? +cur.typeValue : null) || null
|
|
}
|
|
})
|
|
.map((item) => {
|
|
if (item.value) {
|
|
// item.value = NaN
|
|
}
|
|
return item
|
|
})
|
|
return getList.sort((a, b) => a.index - b.index)
|
|
}
|