@yolanda-qn/eight-electrodes-report-lib
v1.4.1
Published
八电极报告
Downloads
79
Readme
八电极指标报告库
Usage
|名称|类型|必须|默认值|说明| |:--|:--|:--:|:--|:--| |measureData|measureData|Y||测量数据| |config|config|N||
- 返回
- type: Array<ReportItem>
示例:
在模块中
import getReports, { WeightUnitEnum, LangsEnum } from '@yolanda-qn/eight-electrodes-report-lib';
// 引入所有语言
import locales from '@yolanda-qn/eight-electrodes-report-lib/dist/locales';
// 设置所有语言。默认只有简体中文和英语
getReports.i18n.setLangPack(locales);
// 设置回退语言
getReports.i18n.setFallbackLang('en');
// 测量的数据
cosnt measureData = { height: 170, gender: 1, weight: 65 /* 其他字段 */ };
// 可不传
const config = {
weightUnit : WeightUnitEnum.kg, // 重量单位。默认 kg
lang : LangsEnum.zh_CN // 指定语言。默认 en
};
// 这里拿到的是原始的报告项数据,尚未进行重量单位转换
const reportItems = getReports(
measureData,
config,
); // ReportItems[]
// 这里的数据进行了单位转换。不做额外处理的话直接展示数据即可
const reportObjects = reportItems.map((r) => r.toObject());在浏览器中
<script src="./dist/index.umd.js"></script>
<!-- 引入所有语言 -->
<script src="./dist/locales/index.umd.js"></script>
<script>
// 设置完整的语言包,默认只包含简体中文和英语
window.QN_globalGetEightElectrodesReports.default.i18n.setLangPack(window.QN_globalEightElectrodesLocales);
// 获取报告数据
const reportItems = window.QN_globalGetEightElectrodesReports.default(measureData, config)
</script>
exports
// export { default as Big } from 'big.js';
export { default as ReportBuilder } from './ReportBuilder';
export { default as ReportItem } from './ReportItem';
export { default as builders } from './builders';
export { default as version } from './version';
export * as util from './util';
export { default as createI18n } from './i18n/createI18n';
export { default as genPageTemplateModel } from './genPageTemplateModel';
export { default } from './main';
// SECTION ======================== consts export ========================
export * as consts from './consts';
export {
StandardsEnum,
UserGenderEnum,
WeightUnitEnum,
WeightUnitTextEnum,
ReportBuilderOrderEnum,
ReportBuilderIdsEnum,
LevelColors,
LevelsMapping,
LangsEnum,
DefaultLang,
} from './consts';
// !SECTION
// SECTION ======================== typings export ========================
export type {
TypedUserGender,
TypedScaleData,
TypedConfig,
TypedLevels,
} from './typings.d';
export type {
TypeReportItemObject,
} from './ReportItem';
// !SECTION
measureData
|名称|类型|必须|说明|单位| |:--|:--|:--:|:--|:--| |gender |1和0 |Y|性别|| |birthday |string |Y|生日。例如:2021-06-17|| |height |double |Y|身体高度|cm| |bmi |int |Y|BMI|kg/m²| |bmr |double |Y|基础代谢量|kcal| |body_age |int |Y|体年龄|岁| |bodyfat |double |Y|体脂率|%| |bodyfat_left_arm |double |Y|体脂率(左上肢)|%| |bodyfat_left_leg |double |Y|体脂率(左下肢)|%| |bodyfat_right_arm |double |Y|体脂率(右上肢)|%| |bodyfat_right_leg |double |Y|体脂率(右下肢)|%| |bodyfat_trunk |double |Y|体脂率(躯干)|%| |bone|double |Y|骨量(又称无机盐)|kg| |lbm|double|Y|去脂体重|kg| |muscle |double |Y|骨骼肌率|%| |protein |double |Y|蛋白质|%| |subfat |double |Y|皮下脂肪|%| |visfat |double |Y|内脏脂肪|| |water |double |Y|体水分|%| |weight |double |Y|体重|kg| |sinew |double |Y|肌肉量|kg| |sinew_left_arm |double |Y|肌肉量(左上肢)|kg| |sinew_left_leg |double |Y|肌肉量(左下肢)|kg| |sinew_right_arm |double |Y|肌肉量(右上肢)|kg| |sinew_right_leg |double |Y|肌肉量(右下肢)|kg| |sinew_trunk |double |Y|肌肉量(躯干)|kg| |score|double|N|健康评分||
config
可选参数 |名称|类型|必须|默认值|说明| |:--|:--|:--:|:--|:--| |builderIds|Array<ReportBuilderIdsEnum>|N|全部|指定报告项| |weightUnit|WeightUnitEnum|N|kg|重量单位| |standard|StandardsEnum|N|asia|标准| |levelColors|Record<LevelColors, string>|N||自定义标准颜色| |lang|LangsEnum|N|en|语言| |fallbackLang|LangsEnum|N|en|回退语言|
handler
可选参数
class CunstomReportBuilder extends ReportBuilder {
static id = 'CunstomReportBuilder';
build() {
return new ReportItem();
}
}
getMeasureReports(measureData, config, ({ setBuilders }) => {
// 返回自定义指标构造器类表
setBuilders((builders) => {
return [
// 已有的指标构造器
...builders,
// 自定义构造函数
CunstomReportBuilder,
];
});
});ReportBuilderIdsEnum
|名称|值|单位|说明| |:--|:--|:--|:-| |Weight|Weight|WeightUnitTextEnum|体重| |WaterMass|WaterMass|WeightUnitTextEnum|体水分 |ProteinMass|ProteinMass|WeightUnitTextEnum|蛋白质 |Bone|Bone|WeightUnitTextEnum|骨量/无机盐 |MuscleMass|MuscleMass|WeightUnitTextEnum|骨骼肌量 |BMI|BMI|kg/m²|| |Visfat|Visfat||内脏脂肪等级| |Obesity|Obesity|%|肥胖度| |SinewMass|SinewMass|WeightUnitTextEnum|肌肉量| |SinewLeftArm|SinewLeftArm|%|左上肢肌肉率| |SinewRightArm|SinewRightArm|%|右上肢肌肉率| |SinewLeftLeg|SinewLeftLeg|%|左下肢肌肉率| |SinewRightLeg|SinewRightLeg|%|右下肢肌肉率| |SinewTrunk|SinewTrunk|%|躯干肌肉率| |Bodyfat|Bodyfat|%|体脂率| |BodyfatLeftArm|BodyfatLeftArm|%|左上肢体脂率| |BodyfatRightArm|BodyfatRightArm|%|右上肢体脂率| |BodyfatLeftLeg|BodyfatLeftLeg|%|左下肢体脂率| |BodyfatRightLeg|BodyfatRightLeg|%|右下肢体脂率| |BodyfatTrunk|BodyfatTrunk|%|躯干体脂率| |BodyfatMass|BodyfatMass|WeightUnitTextEnum|脂肪量| |Subfat|Subfat|%|皮下脂肪占比| |BMR|BMR|kcal|基础代谢量| |LBM|LBM|WeightUnitTextEnum|去脂体重| |BodyAge|BodyAge|岁|体年龄| |FattyLiver|FattyLiver||脂肪肝风险等级|
WeightUnitEnum
重量单位枚举
|名称|值|说明| |:--|:--|:--| |kg|kg|| |lb|lb|| |st|st|还外版新增st_only标识| |st_lb|st_lb|对应 海外版st标识| |jin|jin|斤|
WeightUnitTextEnum
重量单位展示文字
|名称|值|说明| |:--|:--|:--| |kg|kg|| |lb|lb|| |st|st|海外版新增st_only标识| |st_lb|st:lb|对应 海外版st标识。可能的展示方式为 10st:3lb| |jin|斤||
StandardsEnum
指标标准
|名称|值|说明| |:--|:--|:--| |asia|asia|亚洲。默认值| |ocean|ocean|海外欧美|
LevelColors
默认的等级颜色
|名称|值|说明| |:--|:--|:--| |ColorLower|#4FB1FB|偏低| |ColorStandard|#1CCDAA|标准| |ColorHigher|#FFC53D|超标准| |ColorHigher01|#FF9E3D|II级 脂肪肝风险等级| |ColorHigher02|#FF6E3D|III级 脂肪肝风险等级| |ColorHigher03|#F54531|IV级 脂肪肝风险等级|
LangsEnum
语种枚举。建议只使用英语和中文
|名称|值|说明| |:--|:--|:--| |zh_CN|zh_CN|简体中文| |en|en|英语| |zh_TW|zh_TW|繁体中文| |ko|ko|韩语| |jp|jp|日语| |de|de|德语| |fa|fa|法语| |rus|rus|俄语| |es|es|西班牙语| |pt|pt|葡萄牙语| |ar|ar|阿拉伯语| |csy|csy|捷克语| |it|it|意大利语| |tr|tr|土耳其语| |ro|ro|罗马尼亚语| |hu|hu|匈牙利语| |pl|pl|波兰语| |sk|sk|斯洛伐克语| |th|th|泰语| |nl|nl|荷兰语|
1.0.6 语种code变化
韩语 由 kr 变为 ko
法语 由 fr 变为 fa
俄语 由 ru 变为 rus
捷克语 由 cs 变为 csy
ReportItem
id
- type: string
- desc: 指标id。
nameI18nKey
- type: string
- default: ''
- desc: 当前名称对应语言的key
name
- type: string
- default: ''
- desc: 指标名
value
- type: string | number
- desc: 指标数值
stdValue
- since:
v1.3.2 - type: number
- default: 0
- desc: 标准值。有些指标会输出标准值。如果为0则表示未输出标准值
fixed
- type: number
- default: 2
- desc: 设定value,boundaries,min,max等保留的小数位
unit
- type: string
- default: '',
- desc: 单位。展示用。当使用toObject方法导出数据,默认unit的值为unitValue
unitValue
- type: string
- default: ''
- desc: 单位的值。例如 unitValue: jin。unit则为 斤。如果不是重量单位,unitValue一般为unit值的 i18nKey名
order
- type: number
- default: 0
- desc: 排序。10作为梯度
icon
- type: string
- default: ''
- desc: 图标名或地址
descI18nKey
- type: string
- default: ‘’
- desc: 来自levels中对应等级的descI18nKey
desc
- type: string
- default: ''
- desc: 来自levels中对应等级的desc
introI18nKey
- type: string
- default: ‘’
- desc: 指标介绍的i18nKey
intro
- type: string
- default: ''
- desc: 指标介绍
boundaries
- type: Array<string | number>
- default: []
- desc: 边界值数组
subBoundaries
- type: Array<string | number>
- default: []
- desc: 细分边界值数组
min
- type: string | number
- default: 0
- desc: 最小值
max
- type: string | number
- default: 9999
- desc: 最大值
levels
- type: Array<{ color: string; nameI18nKey: string; name: string; desc: string; descI18nKey: string; }>
- default: []
- desc: 等级描述
levelIndex
- type: number
- default: 0
- desc: 当前等级索引
progress
- type: number
- default: 0
- desc: 总进度。例如 50。 如果小于最小值则会为负数。 大于最大值则会超过100。 计算公式:(value - min) / (max - min)。 注意此字段不应该作为进度条展示依据。单条进度条百分比展示请使用 displayProgress 字段。
displayProgress
readonly
- since:
v1.3.0 - type: number
- desc: 可用于单条进度条百分比展示
levelProgress
- type: number
- default: 0
- desc: 在当前区间的进度。例如 30。 如果小于最小值则为 -100。 大于最大值为 100。 计算公式:(value - levelStart) / (levelEnd - levelStart)。 区间进度条分段展示可用此字段。
processBarVisible
- type: boolean
- default: false
- desc: 是否显示进度条。目前基本也用于是否显示等级区间
valueFormatter
- type: (ctx: ReportItem) => string
- desc: 对value值格式化展示。会根据重量单位进行数值转换以及toFixed
stdValueFormatter
- type: (ctx: ReportItem) => string
- desc: 对stdValue值格式化展示。会根据重量单位进行数值转换以及toFixed
minFormatter
- type: (ctx: ReportItem) => string
- desc: 对min值格式化展示。会根据重量单位进行数值转换以及toFixed
maxFormatter
- type: (ctx: ReportItem) => string
- desc: 对max值格式化展示。会根据重量单位进行数值转换以及toFixed
unitFormatter
- type: (ctx: ReportItem) => string
- desc: 对unit值格式化展示。会根据重量单位以及unitValue决定返回的文字
boundariesFormatter
- type: (ctx: ReportItem) => string
- desc: 对boundaries值格式化展示。会根据重量单位进行数值转换以及toFixed
subBoundariesFormatter
- type: (ctx: ReportItem) => string
- desc: 对subBoundaries值格式化展示。会根据重量单位进行数值转换以及toFixed
isNeedTransformWeightValueByUnit
- type: boolean
- default: false
- desc: 展示结果是否需要单位换算
constructor
- args
- params
- type: Partial<Pick<ReportItem, TypeAllowedProp>> | ReportItem
- default: {}
call
- args
- fn
- type: string
- desc: 方法名
- args
- type: any[]
- desc: 要传递的参数
- fn
toFixed
- args
- value
- type: string | number
- default: tihs.value
- fixed
- type: number
- default: this.fixed
- tz
- type: boolean
- default: true
- desc: 是否去掉小数位末尾的0
- rm
- type: number
- desc: round取值方式
- value
- example
value = 255.5;
toFixed(value, 5); // "255.5"
toFixed(value, 5, false); // "255.50000"toPrecision
固定位数
- args
- value
- type: string | number
- default: tihs.value
- precision
- type: number
- rm
- type: number
- desc: round取值方式
- value
- example
value = 255.5;
toPrecision(value, 5); // "255.50"toExponential
科学计数法结果
- args
- value
- type: string | number
- default: tihs.value
- dp
- type: number
- rm
- type: number
- desc: round取值方式
- value
- example
value = 255.5;
toExponential(value, 5); // "2.55500e+2"toObject
输出为普通对象
export type TypeReportItemObject = {
id: string;
nameI18nKey: string;
name: string;
value: string;
stdValue: string; // since v1.3.2
fixed: number;
unit: string;
unitValue: string;
order: number;
icon: string;
descI18nKey: string;
desc: string;
introI18nKey: string;
intro: string;
boundaries: string[];
subBoundaries: string[];
min: string;
max: string;
levels: TypedLevels[];
levelIndex: number;
progress: number;
levelProgress: number;
displayProgress: number; // since v1.3.0
processBarVisible: boolean;
};setter, getter
id,nameI18nKey,name,value,stdValue,fixed,unit,unitValue,order,icon,descI18nKey,desc,introI18nKey,intro,boundaries,subBoundaries,min,max,levelIndex,levels,progress,levelProgress,processBarVisible,valueFormatter,stdValueFormatter,minFormatter,maxFormatter,unitFormatter,boundariesFormatter,subBoundariesFormatter,isNeedTransformWeightValueByUnit
有对应的get和set方法。
例如:
getId()
setId('Weight')
extendGlobalBuilder
扩展全局指标构造器列表
import { ReportBuilder, ReportItem, extendGlobalBuilder } from '@yolanda-qn/eight-electrodes-report-lib';
class CunstomReportBuilder extends ReportBuilder {
static id = 'CunstomReportBuilder';
build() {
return new ReportItem();
}
}
extendGlobalBuilder(CunstomReportBuilder);removeGlobalBuilder
移除指定id的全局指标构造器
import { removeGlobalBuilder } from '@yolanda-qn/eight-electrodes-report-lib';
// builder id
removeGlobalBuilder('CunstomReportBuilder');