@yolanda-qn/eight-electrodes-report-lib
v1.4.1
Published
八电极报告
Downloads
43
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');