skill-calorie 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +477 -123
- package/dist/.gen-inputs.json +170 -0
- package/dist/analysis/commands.d.ts +62 -0
- package/dist/analysis/commands.d.ts.map +1 -0
- package/dist/analysis/commands.js +386 -0
- package/dist/analysis/commands.js.map +1 -0
- package/dist/analysis/contraindications.d.ts.map +1 -1
- package/dist/analysis/contraindications.js +16 -12
- package/dist/analysis/contraindications.js.map +1 -1
- package/dist/analysis/cross.d.ts +3 -0
- package/dist/analysis/cross.d.ts.map +1 -1
- package/dist/analysis/cross.js +57 -29
- package/dist/analysis/cross.js.map +1 -1
- package/dist/analysis/dashboard.d.ts.map +1 -1
- package/dist/analysis/dashboard.js +3 -2
- package/dist/analysis/dashboard.js.map +1 -1
- package/dist/analysis/exerciseReview.js +1 -1
- package/dist/analysis/exerciseReview.js.map +1 -1
- package/dist/analysis/healthPlate.d.ts +21 -0
- package/dist/analysis/healthPlate.d.ts.map +1 -0
- package/dist/analysis/healthPlate.js +41 -0
- package/dist/analysis/healthPlate.js.map +1 -0
- package/dist/analysis/historyStore.d.ts +30 -0
- package/dist/analysis/historyStore.d.ts.map +1 -0
- package/dist/analysis/historyStore.js +32 -0
- package/dist/analysis/historyStore.js.map +1 -0
- package/dist/analysis/index.d.ts +23 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +23 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/multiTrend.d.ts +67 -0
- package/dist/analysis/multiTrend.d.ts.map +1 -0
- package/dist/analysis/multiTrend.js +106 -0
- package/dist/analysis/multiTrend.js.map +1 -0
- package/dist/analysis/multiTrendPage.d.ts +4 -0
- package/dist/analysis/multiTrendPage.d.ts.map +1 -0
- package/dist/analysis/multiTrendPage.js +502 -0
- package/dist/analysis/multiTrendPage.js.map +1 -0
- package/dist/analysis/reportDoc.d.ts +12 -0
- package/dist/analysis/reportDoc.d.ts.map +1 -0
- package/dist/analysis/reportDoc.js +244 -0
- package/dist/analysis/reportDoc.js.map +1 -0
- package/dist/analysis/reportDocBmi.d.ts +4 -0
- package/dist/analysis/reportDocBmi.d.ts.map +1 -0
- package/dist/analysis/reportDocBmi.js +104 -0
- package/dist/analysis/reportDocBmi.js.map +1 -0
- package/dist/analysis/reportDocParts.d.ts +77 -0
- package/dist/analysis/reportDocParts.d.ts.map +1 -0
- package/dist/analysis/reportDocParts.js +249 -0
- package/dist/analysis/reportDocParts.js.map +1 -0
- package/dist/analysis/reportDocScore.d.ts +8 -0
- package/dist/analysis/reportDocScore.d.ts.map +1 -0
- package/dist/analysis/reportDocScore.js +223 -0
- package/dist/analysis/reportDocScore.js.map +1 -0
- package/dist/analysis/reportDocScoreSeries.d.ts +3 -0
- package/dist/analysis/reportDocScoreSeries.d.ts.map +1 -0
- package/dist/analysis/reportDocScoreSeries.js +27 -0
- package/dist/analysis/reportDocScoreSeries.js.map +1 -0
- package/dist/analysis/reportDocTracked.d.ts +10 -0
- package/dist/analysis/reportDocTracked.d.ts.map +1 -0
- package/dist/analysis/reportDocTracked.js +195 -0
- package/dist/analysis/reportDocTracked.js.map +1 -0
- package/dist/analysis/reportPlate.d.ts +163 -0
- package/dist/analysis/reportPlate.d.ts.map +1 -0
- package/dist/analysis/reportPlate.js +251 -0
- package/dist/analysis/reportPlate.js.map +1 -0
- package/dist/analysis/routes.d.ts +18 -0
- package/dist/analysis/routes.d.ts.map +1 -0
- package/dist/analysis/routes.js +178 -0
- package/dist/analysis/routes.js.map +1 -0
- package/dist/analysis/series.d.ts +31 -6
- package/dist/analysis/series.d.ts.map +1 -1
- package/dist/analysis/series.js +124 -27
- package/dist/analysis/series.js.map +1 -1
- package/dist/analysis/simulate.d.ts.map +1 -1
- package/dist/analysis/simulate.js +17 -6
- package/dist/analysis/simulate.js.map +1 -1
- package/dist/analysis/simulate2.d.ts.map +1 -1
- package/dist/analysis/simulate2.js +43 -11
- package/dist/analysis/simulate2.js.map +1 -1
- package/dist/analysis/trend.d.ts +9 -1
- package/dist/analysis/trend.d.ts.map +1 -1
- package/dist/analysis/trend.js +24 -8
- package/dist/analysis/trend.js.map +1 -1
- package/dist/analysis/utils.d.ts +50 -1
- package/dist/analysis/utils.d.ts.map +1 -1
- package/dist/analysis/utils.js +73 -1
- package/dist/analysis/utils.js.map +1 -1
- package/dist/body/bodyDocs.d.ts +4 -0
- package/dist/body/bodyDocs.d.ts.map +1 -0
- package/dist/body/bodyDocs.js +284 -0
- package/dist/body/bodyDocs.js.map +1 -0
- package/dist/body/bodyPlate.d.ts +145 -0
- package/dist/body/bodyPlate.d.ts.map +1 -0
- package/dist/body/bodyPlate.js +243 -0
- package/dist/body/bodyPlate.js.map +1 -0
- package/dist/body/bodyReadUi.d.ts +47 -0
- package/dist/body/bodyReadUi.d.ts.map +1 -0
- package/dist/body/bodyReadUi.js +164 -0
- package/dist/body/bodyReadUi.js.map +1 -0
- package/dist/body/commands.d.ts +29 -0
- package/dist/body/commands.d.ts.map +1 -0
- package/dist/body/commands.js +18 -0
- package/dist/body/commands.js.map +1 -0
- package/dist/body/compare.d.ts +62 -0
- package/dist/body/compare.d.ts.map +1 -0
- package/dist/body/compare.js +162 -0
- package/dist/body/compare.js.map +1 -0
- package/dist/body/compareCompositionDoc.d.ts +3 -0
- package/dist/body/compareCompositionDoc.d.ts.map +1 -0
- package/dist/body/compareCompositionDoc.js +99 -0
- package/dist/body/compareCompositionDoc.js.map +1 -0
- package/dist/body/compareMeasureDoc.d.ts +3 -0
- package/dist/body/compareMeasureDoc.d.ts.map +1 -0
- package/dist/body/compareMeasureDoc.js +91 -0
- package/dist/body/compareMeasureDoc.js.map +1 -0
- package/dist/body/compareUi.d.ts +12 -0
- package/dist/body/compareUi.d.ts.map +1 -0
- package/dist/body/compareUi.js +27 -0
- package/dist/body/compareUi.js.map +1 -0
- package/dist/body/index.d.ts +21 -0
- package/dist/body/index.d.ts.map +1 -0
- package/dist/body/index.js +22 -0
- package/dist/body/index.js.map +1 -0
- package/dist/body/log.d.ts +29 -0
- package/dist/body/log.d.ts.map +1 -0
- package/dist/body/log.js +196 -0
- package/dist/body/log.js.map +1 -0
- package/dist/body/receipt.d.ts +52 -0
- package/dist/body/receipt.d.ts.map +1 -0
- package/dist/body/receipt.js +248 -0
- package/dist/body/receipt.js.map +1 -0
- package/dist/body/receiptData.d.ts +46 -0
- package/dist/body/receiptData.d.ts.map +1 -0
- package/dist/body/receiptData.js +107 -0
- package/dist/body/receiptData.js.map +1 -0
- package/dist/body/receiptUi.d.ts +9 -0
- package/dist/body/receiptUi.d.ts.map +1 -0
- package/dist/body/receiptUi.js +75 -0
- package/dist/body/receiptUi.js.map +1 -0
- package/dist/body/remove.d.ts +21 -0
- package/dist/body/remove.d.ts.map +1 -0
- package/dist/body/remove.js +78 -0
- package/dist/body/remove.js.map +1 -0
- package/dist/body/routes.d.ts +10 -0
- package/dist/body/routes.d.ts.map +1 -0
- package/dist/body/routes.js +20 -0
- package/dist/body/routes.js.map +1 -0
- package/dist/body/view.d.ts +21 -0
- package/dist/body/view.d.ts.map +1 -0
- package/dist/body/view.js +50 -0
- package/dist/body/view.js.map +1 -0
- package/dist/body/wizard.d.ts +14 -0
- package/dist/body/wizard.d.ts.map +1 -0
- package/dist/body/wizard.js +21 -0
- package/dist/body/wizard.js.map +1 -0
- package/dist/body/wizardDocs.d.ts +4 -0
- package/dist/body/wizardDocs.d.ts.map +1 -0
- package/dist/body/wizardDocs.js +260 -0
- package/dist/body/wizardDocs.js.map +1 -0
- package/dist/body/wizardPlate.d.ts +146 -0
- package/dist/body/wizardPlate.d.ts.map +1 -0
- package/dist/body/wizardPlate.js +260 -0
- package/dist/body/wizardPlate.js.map +1 -0
- package/dist/body/wizardPrompt.d.ts +52 -0
- package/dist/body/wizardPrompt.d.ts.map +1 -0
- package/dist/body/wizardPrompt.js +146 -0
- package/dist/body/wizardPrompt.js.map +1 -0
- package/dist/body/wizardUi.d.ts +11 -0
- package/dist/body/wizardUi.d.ts.map +1 -0
- package/dist/body/wizardUi.js +35 -0
- package/dist/body/wizardUi.js.map +1 -0
- package/dist/cli/cmd_read.d.ts +7 -21
- package/dist/cli/cmd_read.d.ts.map +1 -1
- package/dist/cli/cmd_read.js +45 -1044
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/delivery.d.ts +34 -0
- package/dist/cli/delivery.d.ts.map +1 -0
- package/dist/cli/delivery.js +223 -0
- package/dist/cli/delivery.js.map +1 -0
- package/dist/cli/keys.d.ts +305 -163
- package/dist/cli/keys.d.ts.map +1 -1
- package/dist/cli/keys.js +101 -74
- package/dist/cli/keys.js.map +1 -1
- package/dist/cli/legacy/index.d.ts +25 -0
- package/dist/cli/legacy/index.d.ts.map +1 -0
- package/dist/cli/legacy/index.js +37 -0
- package/dist/cli/legacy/index.js.map +1 -0
- package/dist/cli/legacy/routes/index.d.ts +8 -0
- package/dist/cli/legacy/routes/index.d.ts.map +1 -0
- package/dist/cli/legacy/routes/index.js +23 -0
- package/dist/cli/legacy/routes/index.js.map +1 -0
- package/dist/cli/legacy/routes/scene-01.d.ts +12 -0
- package/dist/cli/legacy/routes/scene-01.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-01.js +2 -0
- package/dist/cli/legacy/routes/scene-01.js.map +1 -0
- package/dist/cli/legacy/routes/scene-02.d.ts +18 -0
- package/dist/cli/legacy/routes/scene-02.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-02.js +2 -0
- package/dist/cli/legacy/routes/scene-02.js.map +1 -0
- package/dist/cli/legacy/routes/scene-03.d.ts +13 -0
- package/dist/cli/legacy/routes/scene-03.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-03.js +2 -0
- package/dist/cli/legacy/routes/scene-03.js.map +1 -0
- package/dist/cli/legacy/routes/scene-04.d.ts +10 -0
- package/dist/cli/legacy/routes/scene-04.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-04.js +2 -0
- package/dist/cli/legacy/routes/scene-04.js.map +1 -0
- package/dist/cli/legacy/routes/scene-05.d.ts +10 -0
- package/dist/cli/legacy/routes/scene-05.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-05.js +2 -0
- package/dist/cli/legacy/routes/scene-05.js.map +1 -0
- package/dist/cli/legacy/routes/scene-06.d.ts +10 -0
- package/dist/cli/legacy/routes/scene-06.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-06.js +2 -0
- package/dist/cli/legacy/routes/scene-06.js.map +1 -0
- package/dist/cli/legacy/routes/scene-07.d.ts +10 -0
- package/dist/cli/legacy/routes/scene-07.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-07.js +2 -0
- package/dist/cli/legacy/routes/scene-07.js.map +1 -0
- package/dist/cli/legacy/routes/scene-08.d.ts +12 -0
- package/dist/cli/legacy/routes/scene-08.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-08.js +2 -0
- package/dist/cli/legacy/routes/scene-08.js.map +1 -0
- package/dist/cli/legacy/routes/scene-09.d.ts +12 -0
- package/dist/cli/legacy/routes/scene-09.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-09.js +2 -0
- package/dist/cli/legacy/routes/scene-09.js.map +1 -0
- package/dist/cli/legacy/routes/scene-10.d.ts +10 -0
- package/dist/cli/legacy/routes/scene-10.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-10.js +2 -0
- package/dist/cli/legacy/routes/scene-10.js.map +1 -0
- package/dist/cli/legacy/scene-01.d.ts +13 -0
- package/dist/cli/legacy/scene-01.d.ts.map +1 -0
- package/dist/cli/legacy/scene-01.js +2 -0
- package/dist/cli/legacy/scene-01.js.map +1 -0
- package/dist/cli/legacy/scene-02.d.ts +12 -0
- package/dist/cli/legacy/scene-02.d.ts.map +1 -0
- package/dist/cli/legacy/scene-02.js +2 -0
- package/dist/cli/legacy/scene-02.js.map +1 -0
- package/dist/cli/legacy/scene-03.d.ts +14 -0
- package/dist/cli/legacy/scene-03.d.ts.map +1 -0
- package/dist/cli/legacy/scene-03.js +2 -0
- package/dist/cli/legacy/scene-03.js.map +1 -0
- package/dist/cli/legacy/scene-04.d.ts +12 -0
- package/dist/cli/legacy/scene-04.d.ts.map +1 -0
- package/dist/cli/legacy/scene-04.js +2 -0
- package/dist/cli/legacy/scene-04.js.map +1 -0
- package/dist/cli/legacy/scene-05.d.ts +14 -0
- package/dist/cli/legacy/scene-05.d.ts.map +1 -0
- package/dist/cli/legacy/scene-05.js +2 -0
- package/dist/cli/legacy/scene-05.js.map +1 -0
- package/dist/cli/legacy/scene-06.d.ts +15 -0
- package/dist/cli/legacy/scene-06.d.ts.map +1 -0
- package/dist/cli/legacy/scene-06.js +2 -0
- package/dist/cli/legacy/scene-06.js.map +1 -0
- package/dist/cli/legacy/scene-07.d.ts +15 -0
- package/dist/cli/legacy/scene-07.d.ts.map +1 -0
- package/dist/cli/legacy/scene-07.js +2 -0
- package/dist/cli/legacy/scene-07.js.map +1 -0
- package/dist/cli/legacy/scene-08.d.ts +13 -0
- package/dist/cli/legacy/scene-08.d.ts.map +1 -0
- package/dist/cli/legacy/scene-08.js +2 -0
- package/dist/cli/legacy/scene-08.js.map +1 -0
- package/dist/cli/legacy/scene-09.d.ts +13 -0
- package/dist/cli/legacy/scene-09.d.ts.map +1 -0
- package/dist/cli/legacy/scene-09.js +2 -0
- package/dist/cli/legacy/scene-09.js.map +1 -0
- package/dist/cli/legacy/scene-10.d.ts +13 -0
- package/dist/cli/legacy/scene-10.d.ts.map +1 -0
- package/dist/cli/legacy/scene-10.js +2 -0
- package/dist/cli/legacy/scene-10.js.map +1 -0
- package/dist/cli/legacy/types.d.ts +16 -0
- package/dist/cli/legacy/types.d.ts.map +1 -0
- package/dist/cli/legacy/types.js +2 -0
- package/dist/cli/legacy/types.js.map +1 -0
- package/dist/cli/readArgs.d.ts +21 -0
- package/dist/cli/readArgs.d.ts.map +1 -0
- package/dist/cli/readArgs.js +72 -0
- package/dist/cli/readArgs.js.map +1 -0
- package/dist/cli/registry.d.ts +12 -0
- package/dist/cli/registry.d.ts.map +1 -0
- package/dist/cli/registry.js +38 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli/write.d.ts +17 -15
- package/dist/cli/write.d.ts.map +1 -1
- package/dist/cli/write.js +38 -902
- package/dist/cli/write.js.map +1 -1
- package/dist/diet/commands.d.ts +37 -0
- package/dist/diet/commands.d.ts.map +1 -0
- package/dist/diet/commands.js +44 -0
- package/dist/diet/commands.js.map +1 -0
- package/dist/diet/dietEngine.d.ts +79 -0
- package/dist/diet/dietEngine.d.ts.map +1 -0
- package/dist/diet/dietEngine.js +171 -0
- package/dist/diet/dietEngine.js.map +1 -0
- package/dist/diet/dietUi.d.ts +9 -0
- package/dist/diet/dietUi.d.ts.map +1 -0
- package/dist/diet/dietUi.js +45 -0
- package/dist/diet/dietUi.js.map +1 -0
- package/dist/diet/edit.d.ts +22 -0
- package/dist/diet/edit.d.ts.map +1 -0
- package/dist/diet/edit.js +96 -0
- package/dist/diet/edit.js.map +1 -0
- package/dist/diet/fieldLabels.d.ts +5 -0
- package/dist/diet/fieldLabels.d.ts.map +1 -0
- package/dist/diet/fieldLabels.js +44 -0
- package/dist/diet/fieldLabels.js.map +1 -0
- package/dist/diet/index.d.ts +26 -0
- package/dist/diet/index.d.ts.map +1 -0
- package/dist/diet/index.js +22 -0
- package/dist/diet/index.js.map +1 -0
- package/dist/diet/library.d.ts +20 -0
- package/dist/diet/library.d.ts.map +1 -0
- package/dist/diet/library.js +52 -0
- package/dist/diet/library.js.map +1 -0
- package/dist/diet/libraryDocs.d.ts +7 -0
- package/dist/diet/libraryDocs.d.ts.map +1 -0
- package/dist/diet/libraryDocs.js +361 -0
- package/dist/diet/libraryDocs.js.map +1 -0
- package/dist/diet/libraryPlate.d.ts +41 -0
- package/dist/diet/libraryPlate.d.ts.map +1 -0
- package/dist/diet/libraryPlate.js +57 -0
- package/dist/diet/libraryPlate.js.map +1 -0
- package/dist/diet/log.d.ts +18 -0
- package/dist/diet/log.d.ts.map +1 -0
- package/dist/diet/log.js +152 -0
- package/dist/diet/log.js.map +1 -0
- package/dist/diet/nutrition.d.ts +37 -0
- package/dist/diet/nutrition.d.ts.map +1 -0
- package/dist/diet/nutrition.js +135 -0
- package/dist/diet/nutrition.js.map +1 -0
- package/dist/diet/nutritionPort.d.ts +129 -0
- package/dist/diet/nutritionPort.d.ts.map +1 -0
- package/dist/diet/nutritionPort.js +246 -0
- package/dist/diet/nutritionPort.js.map +1 -0
- package/dist/diet/nutritionPortDocs.d.ts +106 -0
- package/dist/diet/nutritionPortDocs.d.ts.map +1 -0
- package/dist/diet/nutritionPortDocs.js +651 -0
- package/dist/diet/nutritionPortDocs.js.map +1 -0
- package/dist/diet/precheck.d.ts +7 -0
- package/dist/diet/precheck.d.ts.map +1 -0
- package/dist/diet/precheck.js +194 -0
- package/dist/diet/precheck.js.map +1 -0
- package/dist/diet/precheckLabel.d.ts +4 -0
- package/dist/diet/precheckLabel.d.ts.map +1 -0
- package/dist/diet/precheckLabel.js +191 -0
- package/dist/diet/precheckLabel.js.map +1 -0
- package/dist/diet/precheckParts.d.ts +49 -0
- package/dist/diet/precheckParts.d.ts.map +1 -0
- package/dist/diet/precheckParts.js +69 -0
- package/dist/diet/precheckParts.js.map +1 -0
- package/dist/diet/precheckPort.d.ts +82 -0
- package/dist/diet/precheckPort.d.ts.map +1 -0
- package/dist/diet/precheckPort.js +176 -0
- package/dist/diet/precheckPort.js.map +1 -0
- package/dist/diet/productImport.d.ts +28 -0
- package/dist/diet/productImport.d.ts.map +1 -0
- package/dist/diet/productImport.js +152 -0
- package/dist/diet/productImport.js.map +1 -0
- package/dist/diet/productStore.d.ts +62 -0
- package/dist/diet/productStore.d.ts.map +1 -0
- package/dist/diet/productStore.js +73 -0
- package/dist/diet/productStore.js.map +1 -0
- package/dist/diet/products.d.ts +15 -0
- package/dist/diet/products.d.ts.map +1 -0
- package/dist/diet/products.js +87 -0
- package/dist/diet/products.js.map +1 -0
- package/dist/diet/ranking.d.ts +18 -0
- package/dist/diet/ranking.d.ts.map +1 -0
- package/dist/diet/ranking.js +23 -0
- package/dist/diet/ranking.js.map +1 -0
- package/dist/diet/rankingDocs.d.ts +13 -0
- package/dist/diet/rankingDocs.d.ts.map +1 -0
- package/dist/diet/rankingDocs.js +341 -0
- package/dist/diet/rankingDocs.js.map +1 -0
- package/dist/diet/rankingPlate.d.ts +42 -0
- package/dist/diet/rankingPlate.d.ts.map +1 -0
- package/dist/diet/rankingPlate.js +96 -0
- package/dist/diet/rankingPlate.js.map +1 -0
- package/dist/diet/receipt.d.ts +34 -0
- package/dist/diet/receipt.d.ts.map +1 -0
- package/dist/diet/receipt.js +371 -0
- package/dist/diet/receipt.js.map +1 -0
- package/dist/diet/review.d.ts +36 -0
- package/dist/diet/review.d.ts.map +1 -0
- package/dist/diet/review.js +152 -0
- package/dist/diet/review.js.map +1 -0
- package/dist/diet/reviewDocs.d.ts +72 -0
- package/dist/diet/reviewDocs.d.ts.map +1 -0
- package/dist/diet/reviewDocs.js +312 -0
- package/dist/diet/reviewDocs.js.map +1 -0
- package/dist/diet/routes.d.ts +12 -0
- package/dist/diet/routes.d.ts.map +1 -0
- package/dist/diet/routes.js +108 -0
- package/dist/diet/routes.js.map +1 -0
- package/dist/diet/sourceStatsDocs.d.ts +3 -0
- package/dist/diet/sourceStatsDocs.d.ts.map +1 -0
- package/dist/diet/sourceStatsDocs.js +115 -0
- package/dist/diet/sourceStatsDocs.js.map +1 -0
- package/dist/diet/today.d.ts +14 -0
- package/dist/diet/today.d.ts.map +1 -0
- package/dist/diet/today.js +87 -0
- package/dist/diet/today.js.map +1 -0
- package/dist/diet/todayDocs.d.ts +53 -0
- package/dist/diet/todayDocs.d.ts.map +1 -0
- package/dist/diet/todayDocs.js +238 -0
- package/dist/diet/todayDocs.js.map +1 -0
- package/dist/exercise/cardio.d.ts +11 -0
- package/dist/exercise/cardio.d.ts.map +1 -0
- package/dist/exercise/cardio.js +14 -0
- package/dist/exercise/cardio.js.map +1 -0
- package/dist/exercise/categoryColors.d.ts +23 -0
- package/dist/exercise/categoryColors.d.ts.map +1 -0
- package/dist/exercise/categoryColors.js +28 -0
- package/dist/exercise/categoryColors.js.map +1 -0
- package/dist/exercise/commands.d.ts +20 -0
- package/dist/exercise/commands.d.ts.map +1 -0
- package/dist/exercise/commands.js +22 -0
- package/dist/exercise/commands.js.map +1 -0
- package/dist/exercise/distribution.d.ts +11 -0
- package/dist/exercise/distribution.d.ts.map +1 -0
- package/dist/exercise/distribution.js +14 -0
- package/dist/exercise/distribution.js.map +1 -0
- package/dist/exercise/edit.d.ts +22 -0
- package/dist/exercise/edit.d.ts.map +1 -0
- package/dist/exercise/edit.js +148 -0
- package/dist/exercise/edit.js.map +1 -0
- package/dist/exercise/exerciseStore.d.ts +87 -0
- package/dist/exercise/exerciseStore.d.ts.map +1 -0
- package/dist/exercise/exerciseStore.js +287 -0
- package/dist/exercise/exerciseStore.js.map +1 -0
- package/dist/exercise/fieldLabels.d.ts +5 -0
- package/dist/exercise/fieldLabels.d.ts.map +1 -0
- package/dist/exercise/fieldLabels.js +34 -0
- package/dist/exercise/fieldLabels.js.map +1 -0
- package/dist/exercise/goal.d.ts +16 -0
- package/dist/exercise/goal.d.ts.map +1 -0
- package/dist/exercise/goal.js +46 -0
- package/dist/exercise/goal.js.map +1 -0
- package/dist/exercise/index.d.ts +22 -0
- package/dist/exercise/index.d.ts.map +1 -0
- package/dist/exercise/index.js +22 -0
- package/dist/exercise/index.js.map +1 -0
- package/dist/exercise/log.d.ts +19 -0
- package/dist/exercise/log.d.ts.map +1 -0
- package/dist/exercise/log.js +102 -0
- package/dist/exercise/log.js.map +1 -0
- package/dist/exercise/precheck.d.ts +19 -0
- package/dist/exercise/precheck.d.ts.map +1 -0
- package/dist/exercise/precheck.js +127 -0
- package/dist/exercise/precheck.js.map +1 -0
- package/dist/exercise/recap.d.ts +11 -0
- package/dist/exercise/recap.d.ts.map +1 -0
- package/dist/exercise/recap.js +14 -0
- package/dist/exercise/recap.js.map +1 -0
- package/dist/exercise/receipt.d.ts +43 -0
- package/dist/exercise/receipt.d.ts.map +1 -0
- package/dist/exercise/receipt.js +401 -0
- package/dist/exercise/receipt.js.map +1 -0
- package/dist/exercise/records.d.ts +60 -0
- package/dist/exercise/records.d.ts.map +1 -0
- package/dist/exercise/records.js +317 -0
- package/dist/exercise/records.js.map +1 -0
- package/dist/exercise/routes.d.ts +21 -0
- package/dist/exercise/routes.d.ts.map +1 -0
- package/dist/exercise/routes.js +38 -0
- package/dist/exercise/routes.js.map +1 -0
- package/dist/exercise/sportUi.d.ts +77 -0
- package/dist/exercise/sportUi.d.ts.map +1 -0
- package/dist/exercise/sportUi.js +268 -0
- package/dist/exercise/sportUi.js.map +1 -0
- package/dist/exercise/strength.d.ts +11 -0
- package/dist/exercise/strength.d.ts.map +1 -0
- package/dist/exercise/strength.js +14 -0
- package/dist/exercise/strength.js.map +1 -0
- package/dist/exercise/trend.d.ts +11 -0
- package/dist/exercise/trend.d.ts.map +1 -0
- package/dist/exercise/trend.js +14 -0
- package/dist/exercise/trend.js.map +1 -0
- package/dist/fetch/audit.d.ts +2 -0
- package/dist/fetch/audit.d.ts.map +1 -1
- package/dist/fetch/audit.js +11 -10
- package/dist/fetch/audit.js.map +1 -1
- package/dist/fetch/batch.js +1 -1
- package/dist/fetch/batch.js.map +1 -1
- package/dist/fetch/body.d.ts +104 -1
- package/dist/fetch/body.d.ts.map +1 -1
- package/dist/fetch/body.js +200 -31
- package/dist/fetch/body.js.map +1 -1
- package/dist/fetch/cli.js +11 -5
- package/dist/fetch/cli.js.map +1 -1
- package/dist/fetch/exercise.d.ts.map +1 -1
- package/dist/fetch/exercise.js +7 -3
- package/dist/fetch/exercise.js.map +1 -1
- package/dist/fetch/index.d.ts +5 -7
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +7 -6
- package/dist/fetch/index.js.map +1 -1
- package/dist/fetch/nutritionGoal.d.ts.map +1 -1
- package/dist/fetch/nutritionGoal.js +15 -4
- package/dist/fetch/nutritionGoal.js.map +1 -1
- package/dist/fetch/profile.d.ts +24 -3
- package/dist/fetch/profile.d.ts.map +1 -1
- package/dist/fetch/profile.js +43 -14
- package/dist/fetch/profile.js.map +1 -1
- package/dist/fetch/xunji-catalog.d.ts +5 -0
- package/dist/fetch/xunji-catalog.d.ts.map +1 -1
- package/dist/fetch/xunji-catalog.js +22 -1
- package/dist/fetch/xunji-catalog.js.map +1 -1
- package/dist/goal/commands.d.ts +31 -0
- package/dist/goal/commands.d.ts.map +1 -0
- package/dist/goal/commands.js +20 -0
- package/dist/goal/commands.js.map +1 -0
- package/dist/goal/goalExtraPlate.d.ts +45 -0
- package/dist/goal/goalExtraPlate.d.ts.map +1 -0
- package/dist/goal/goalExtraPlate.js +95 -0
- package/dist/goal/goalExtraPlate.js.map +1 -0
- package/dist/goal/goalHistory.d.ts +24 -0
- package/dist/goal/goalHistory.d.ts.map +1 -0
- package/dist/goal/goalHistory.js +51 -0
- package/dist/goal/goalHistory.js.map +1 -0
- package/dist/goal/goalPlate.d.ts +24 -0
- package/dist/goal/goalPlate.d.ts.map +1 -0
- package/dist/goal/goalPlate.js +34 -0
- package/dist/goal/goalPlate.js.map +1 -0
- package/dist/goal/goalPlates.d.ts +66 -0
- package/dist/goal/goalPlates.d.ts.map +1 -0
- package/dist/goal/goalPlates.js +114 -0
- package/dist/goal/goalPlates.js.map +1 -0
- package/dist/goal/goalRecommendDoc.d.ts +6 -0
- package/dist/goal/goalRecommendDoc.d.ts.map +1 -0
- package/dist/goal/goalRecommendDoc.js +107 -0
- package/dist/goal/goalRecommendDoc.js.map +1 -0
- package/dist/goal/goalStore.d.ts +56 -0
- package/dist/goal/goalStore.d.ts.map +1 -0
- package/dist/goal/goalStore.js +111 -0
- package/dist/goal/goalStore.js.map +1 -0
- package/dist/goal/goalWeightDoc.d.ts +7 -0
- package/dist/goal/goalWeightDoc.d.ts.map +1 -0
- package/dist/goal/goalWeightDoc.js +107 -0
- package/dist/goal/goalWeightDoc.js.map +1 -0
- package/dist/goal/index.d.ts +17 -0
- package/dist/goal/index.d.ts.map +1 -0
- package/dist/goal/index.js +21 -0
- package/dist/goal/index.js.map +1 -0
- package/dist/goal/nutritionGoal.d.ts +115 -0
- package/dist/goal/nutritionGoal.d.ts.map +1 -0
- package/dist/goal/nutritionGoal.js +165 -0
- package/dist/goal/nutritionGoal.js.map +1 -0
- package/dist/goal/precheck.d.ts +14 -0
- package/dist/goal/precheck.d.ts.map +1 -0
- package/dist/goal/precheck.js +213 -0
- package/dist/goal/precheck.js.map +1 -0
- package/dist/goal/read.d.ts +53 -0
- package/dist/goal/read.d.ts.map +1 -0
- package/dist/goal/read.js +154 -0
- package/dist/goal/read.js.map +1 -0
- package/dist/goal/receipt.d.ts +38 -0
- package/dist/goal/receipt.d.ts.map +1 -0
- package/dist/goal/receipt.js +290 -0
- package/dist/goal/receipt.js.map +1 -0
- package/dist/goal/resultDocs.d.ts +23 -0
- package/dist/goal/resultDocs.d.ts.map +1 -0
- package/dist/goal/resultDocs.js +279 -0
- package/dist/goal/resultDocs.js.map +1 -0
- package/dist/goal/routes.d.ts +12 -0
- package/dist/goal/routes.d.ts.map +1 -0
- package/dist/goal/routes.js +29 -0
- package/dist/goal/routes.js.map +1 -0
- package/dist/goal/set.d.ts +97 -0
- package/dist/goal/set.d.ts.map +1 -0
- package/dist/goal/set.js +103 -0
- package/dist/goal/set.js.map +1 -0
- package/dist/goal/write.d.ts +30 -0
- package/dist/goal/write.d.ts.map +1 -0
- package/dist/goal/write.js +102 -0
- package/dist/goal/write.js.map +1 -0
- package/dist/help-missing.json +35 -0
- package/dist/home/commands.d.ts +11 -0
- package/dist/home/commands.d.ts.map +1 -0
- package/dist/home/commands.js +8 -0
- package/dist/home/commands.js.map +1 -0
- package/dist/home/exercise.d.ts +27 -0
- package/dist/home/exercise.d.ts.map +1 -0
- package/dist/home/exercise.js +60 -0
- package/dist/home/exercise.js.map +1 -0
- package/dist/home/goalProgressDocs.d.ts +27 -0
- package/dist/home/goalProgressDocs.d.ts.map +1 -0
- package/dist/home/goalProgressDocs.js +363 -0
- package/dist/home/goalProgressDocs.js.map +1 -0
- package/dist/home/home.d.ts +38 -0
- package/dist/home/home.d.ts.map +1 -0
- package/dist/home/home.js +78 -0
- package/dist/home/home.js.map +1 -0
- package/dist/home/homeDocs.d.ts +8 -0
- package/dist/home/homeDocs.d.ts.map +1 -0
- package/dist/home/homeDocs.js +307 -0
- package/dist/home/homeDocs.js.map +1 -0
- package/dist/home/homeViewParts.d.ts +42 -0
- package/dist/home/homeViewParts.d.ts.map +1 -0
- package/dist/home/homeViewParts.js +316 -0
- package/dist/home/homeViewParts.js.map +1 -0
- package/dist/home/index.d.ts +14 -0
- package/dist/home/index.d.ts.map +1 -0
- package/dist/home/index.js +13 -0
- package/dist/home/index.js.map +1 -0
- package/dist/home/routes.d.ts +10 -0
- package/dist/home/routes.d.ts.map +1 -0
- package/dist/home/routes.js +47 -0
- package/dist/home/routes.js.map +1 -0
- package/dist/home/today.d.ts +50 -0
- package/dist/home/today.d.ts.map +1 -0
- package/dist/home/today.js +255 -0
- package/dist/home/today.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/migrate/migrate.js +1 -1
- package/dist/output.d.ts +31 -16
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +118 -143
- package/dist/output.js.map +1 -1
- package/dist/photo/commands.d.ts +55 -0
- package/dist/photo/commands.d.ts.map +1 -0
- package/dist/photo/commands.js +25 -0
- package/dist/photo/commands.js.map +1 -0
- package/dist/photo/compare.d.ts +24 -0
- package/dist/photo/compare.d.ts.map +1 -0
- package/dist/photo/compare.js +48 -0
- package/dist/photo/compare.js.map +1 -0
- package/dist/photo/compareDoc.d.ts +5 -0
- package/dist/photo/compareDoc.d.ts.map +1 -0
- package/dist/photo/compareDoc.js +221 -0
- package/dist/photo/compareDoc.js.map +1 -0
- package/dist/photo/dir.d.ts +5 -0
- package/dist/photo/dir.d.ts.map +1 -0
- package/dist/photo/dir.js +22 -0
- package/dist/photo/dir.js.map +1 -0
- package/dist/photo/gallery.d.ts +16 -0
- package/dist/photo/gallery.d.ts.map +1 -0
- package/dist/photo/gallery.js +45 -0
- package/dist/photo/gallery.js.map +1 -0
- package/dist/photo/galleryDoc.d.ts +12 -0
- package/dist/photo/galleryDoc.d.ts.map +1 -0
- package/dist/photo/galleryDoc.js +291 -0
- package/dist/photo/galleryDoc.js.map +1 -0
- package/dist/photo/gif.d.ts +28 -0
- package/dist/photo/gif.d.ts.map +1 -0
- package/dist/photo/gif.js +281 -0
- package/dist/photo/gif.js.map +1 -0
- package/dist/photo/gifDoc.d.ts +52 -0
- package/dist/photo/gifDoc.d.ts.map +1 -0
- package/dist/photo/gifDoc.js +311 -0
- package/dist/photo/gifDoc.js.map +1 -0
- package/dist/photo/help.d.ts +4 -0
- package/dist/photo/help.d.ts.map +1 -0
- package/dist/photo/help.js +87 -0
- package/dist/photo/help.js.map +1 -0
- package/dist/photo/helpCenter.d.ts +137 -0
- package/dist/photo/helpCenter.d.ts.map +1 -0
- package/dist/photo/helpCenter.js +475 -0
- package/dist/photo/helpCenter.js.map +1 -0
- package/dist/photo/helpDoc.d.ts +5 -0
- package/dist/photo/helpDoc.d.ts.map +1 -0
- package/dist/photo/helpDoc.js +205 -0
- package/dist/photo/helpDoc.js.map +1 -0
- package/dist/photo/helpDocContent.d.ts +77 -0
- package/dist/photo/helpDocContent.d.ts.map +1 -0
- package/dist/photo/helpDocContent.js +120 -0
- package/dist/photo/helpDocContent.js.map +1 -0
- package/dist/photo/helpDocCss.d.ts +5 -0
- package/dist/photo/helpDocCss.d.ts.map +1 -0
- package/dist/photo/helpDocCss.js +119 -0
- package/dist/photo/helpDocCss.js.map +1 -0
- package/dist/photo/helpFile.d.ts +26 -0
- package/dist/photo/helpFile.d.ts.map +1 -0
- package/dist/photo/helpFile.js +90 -0
- package/dist/photo/helpFile.js.map +1 -0
- package/dist/photo/helpLookup.d.ts +18 -0
- package/dist/photo/helpLookup.d.ts.map +1 -0
- package/dist/photo/helpLookup.js +58 -0
- package/dist/photo/helpLookup.js.map +1 -0
- package/dist/photo/helpPaths.d.ts +22 -0
- package/dist/photo/helpPaths.d.ts.map +1 -0
- package/dist/photo/helpPaths.js +22 -0
- package/dist/photo/helpPaths.js.map +1 -0
- package/dist/photo/index.d.ts +17 -0
- package/dist/photo/index.d.ts.map +1 -0
- package/dist/photo/index.js +21 -0
- package/dist/photo/index.js.map +1 -0
- package/dist/photo/manage.d.ts +13 -0
- package/dist/photo/manage.d.ts.map +1 -0
- package/dist/photo/manage.js +64 -0
- package/dist/photo/manage.js.map +1 -0
- package/dist/photo/photo.d.ts +118 -0
- package/dist/photo/photo.d.ts.map +1 -0
- package/dist/photo/photo.js +279 -0
- package/dist/photo/photo.js.map +1 -0
- package/dist/photo/photoThumb.d.ts +38 -0
- package/dist/photo/photoThumb.d.ts.map +1 -0
- package/dist/photo/photoThumb.js +83 -0
- package/dist/photo/photoThumb.js.map +1 -0
- package/dist/photo/photoUi.d.ts +39 -0
- package/dist/photo/photoUi.d.ts.map +1 -0
- package/dist/photo/photoUi.js +233 -0
- package/dist/photo/photoUi.js.map +1 -0
- package/dist/photo/photos.d.ts +76 -0
- package/dist/photo/photos.d.ts.map +1 -0
- package/dist/photo/photos.js +193 -0
- package/dist/photo/photos.js.map +1 -0
- package/dist/photo/picker.d.ts +41 -0
- package/dist/photo/picker.d.ts.map +1 -0
- package/dist/photo/picker.js +132 -0
- package/dist/photo/picker.js.map +1 -0
- package/dist/photo/pickerDoc.d.ts +12 -0
- package/dist/photo/pickerDoc.d.ts.map +1 -0
- package/dist/photo/pickerDoc.js +231 -0
- package/dist/photo/pickerDoc.js.map +1 -0
- package/dist/photo/receipt.d.ts +23 -0
- package/dist/photo/receipt.d.ts.map +1 -0
- package/dist/photo/receipt.js +331 -0
- package/dist/photo/receipt.js.map +1 -0
- package/dist/photo/receiptUi.d.ts +42 -0
- package/dist/photo/receiptUi.d.ts.map +1 -0
- package/dist/photo/receiptUi.js +147 -0
- package/dist/photo/receiptUi.js.map +1 -0
- package/dist/photo/routes.d.ts +10 -0
- package/dist/photo/routes.d.ts.map +1 -0
- package/dist/photo/routes.js +29 -0
- package/dist/photo/routes.js.map +1 -0
- package/dist/photo/store.d.ts +10 -0
- package/dist/photo/store.d.ts.map +1 -0
- package/dist/photo/store.js +44 -0
- package/dist/photo/store.js.map +1 -0
- package/dist/photo/viewerDoc.d.ts +5 -0
- package/dist/photo/viewerDoc.d.ts.map +1 -0
- package/dist/photo/viewerDoc.js +255 -0
- package/dist/photo/viewerDoc.js.map +1 -0
- package/dist/photo/wizard.d.ts +15 -0
- package/dist/photo/wizard.d.ts.map +1 -0
- package/dist/photo/wizard.js +25 -0
- package/dist/photo/wizard.js.map +1 -0
- package/dist/photo/wizardUi.d.ts +24 -0
- package/dist/photo/wizardUi.d.ts.map +1 -0
- package/dist/photo/wizardUi.js +101 -0
- package/dist/photo/wizardUi.js.map +1 -0
- package/dist/profile/commands.d.ts +28 -0
- package/dist/profile/commands.d.ts.map +1 -0
- package/dist/profile/commands.js +10 -0
- package/dist/profile/commands.js.map +1 -0
- package/dist/profile/index.d.ts +23 -0
- package/dist/profile/index.d.ts.map +1 -0
- package/dist/profile/index.js +22 -0
- package/dist/profile/index.js.map +1 -0
- package/dist/profile/labels.d.ts +10 -0
- package/dist/profile/labels.d.ts.map +1 -0
- package/dist/profile/labels.js +52 -0
- package/dist/profile/labels.js.map +1 -0
- package/dist/profile/read.d.ts +13 -0
- package/dist/profile/read.d.ts.map +1 -0
- package/dist/profile/read.js +24 -0
- package/dist/profile/read.js.map +1 -0
- package/dist/profile/receipt.d.ts +10 -0
- package/dist/profile/receipt.d.ts.map +1 -0
- package/dist/profile/receipt.js +19 -0
- package/dist/profile/receipt.js.map +1 -0
- package/dist/profile/routes.d.ts +8 -0
- package/dist/profile/routes.d.ts.map +1 -0
- package/dist/profile/routes.js +9 -0
- package/dist/profile/routes.js.map +1 -0
- package/dist/profile/setup.d.ts +67 -0
- package/dist/profile/setup.d.ts.map +1 -0
- package/dist/profile/setup.js +396 -0
- package/dist/profile/setup.js.map +1 -0
- package/dist/profile/update.d.ts +5 -0
- package/dist/profile/update.d.ts.map +1 -0
- package/dist/profile/update.js +85 -0
- package/dist/profile/update.js.map +1 -0
- package/dist/profile/view.d.ts +64 -0
- package/dist/profile/view.d.ts.map +1 -0
- package/dist/profile/view.js +204 -0
- package/dist/profile/view.js.map +1 -0
- package/dist/profile/write.d.ts +16 -0
- package/dist/profile/write.d.ts.map +1 -0
- package/dist/profile/write.js +75 -0
- package/dist/profile/write.js.map +1 -0
- package/dist/render/analysisPlate.d.ts +1 -1
- package/dist/render/analysisPlate.d.ts.map +1 -1
- package/dist/render/analysisPlate.js +1 -1
- package/dist/render/analysisPlate.js.map +1 -1
- package/dist/render/dietDocs.d.ts +19 -19
- package/dist/render/dietDocs.d.ts.map +1 -1
- package/dist/render/dietDocs.js +173 -435
- package/dist/render/dietDocs.js.map +1 -1
- package/dist/render/exercisePort.d.ts +3 -1
- package/dist/render/exercisePort.d.ts.map +1 -1
- package/dist/render/exercisePort.js +4 -3
- package/dist/render/exercisePort.js.map +1 -1
- package/dist/render/goalExtra.d.ts.map +1 -1
- package/dist/render/goalExtra.js +2 -1
- package/dist/render/goalExtra.js.map +1 -1
- package/dist/render/goalPlate.d.ts +2 -2
- package/dist/render/goalPlate.d.ts.map +1 -1
- package/dist/render/goalPlate.js +3 -3
- package/dist/render/goalPlate.js.map +1 -1
- package/dist/render/helpCenter.d.ts.map +1 -1
- package/dist/render/helpCenter.js +4 -2
- package/dist/render/helpCenter.js.map +1 -1
- package/dist/render/helpFile.d.ts +26 -0
- package/dist/render/helpFile.d.ts.map +1 -0
- package/dist/render/helpFile.js +60 -0
- package/dist/render/helpFile.js.map +1 -0
- package/dist/render/helpPaths.d.ts +22 -0
- package/dist/render/helpPaths.d.ts.map +1 -0
- package/dist/render/helpPaths.js +22 -0
- package/dist/render/helpPaths.js.map +1 -0
- package/dist/render/helpShell.d.ts +16 -0
- package/dist/render/helpShell.d.ts.map +1 -0
- package/dist/render/helpShell.js +27 -0
- package/dist/render/helpShell.js.map +1 -0
- package/dist/render/html.d.ts +37 -21
- package/dist/render/html.d.ts.map +1 -1
- package/dist/render/html.js +37 -45
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +37 -33
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +32 -18
- package/dist/render/index.js.map +1 -1
- package/dist/render/insightPlate.d.ts +17 -0
- package/dist/render/insightPlate.d.ts.map +1 -1
- package/dist/render/insightPlate.js +109 -1
- package/dist/render/insightPlate.js.map +1 -1
- package/dist/render/nutritionPortDocs.d.ts.map +1 -1
- package/dist/render/nutritionPortDocs.js +41 -48
- package/dist/render/nutritionPortDocs.js.map +1 -1
- package/dist/render/pageChromeCss.d.ts +24 -0
- package/dist/render/pageChromeCss.d.ts.map +1 -0
- package/dist/render/pageChromeCss.js +45 -0
- package/dist/render/pageChromeCss.js.map +1 -0
- package/dist/render/planCopyBlock.d.ts +32 -0
- package/dist/render/planCopyBlock.d.ts.map +1 -0
- package/dist/render/planCopyBlock.js +34 -0
- package/dist/render/planCopyBlock.js.map +1 -0
- package/dist/render/planEditor.d.ts +94 -0
- package/dist/render/planEditor.d.ts.map +1 -0
- package/dist/render/planEditor.js +38 -0
- package/dist/render/planEditor.js.map +1 -0
- package/dist/render/planEditorCss.d.ts +13 -0
- package/dist/render/planEditorCss.d.ts.map +1 -0
- package/dist/render/planEditorCss.js +140 -0
- package/dist/render/planEditorCss.js.map +1 -0
- package/dist/render/planEditorDocs.d.ts +7 -0
- package/dist/render/planEditorDocs.d.ts.map +1 -0
- package/dist/render/planEditorDocs.js +56 -0
- package/dist/render/planEditorDocs.js.map +1 -0
- package/dist/render/planEditorPort.d.ts +45 -0
- package/dist/render/planEditorPort.d.ts.map +1 -0
- package/dist/render/planEditorPort.js +217 -0
- package/dist/render/planEditorPort.js.map +1 -0
- package/dist/render/planEditorRuntime.d.ts +15 -0
- package/dist/render/planEditorRuntime.d.ts.map +1 -0
- package/dist/render/planEditorRuntime.js +427 -0
- package/dist/render/planEditorRuntime.js.map +1 -0
- package/dist/render/planPlate.d.ts +84 -4
- package/dist/render/planPlate.d.ts.map +1 -1
- package/dist/render/planPlate.js +155 -7
- package/dist/render/planPlate.js.map +1 -1
- package/dist/render/planWizardCss.d.ts +21 -0
- package/dist/render/planWizardCss.d.ts.map +1 -0
- package/dist/render/planWizardCss.js +121 -0
- package/dist/render/planWizardCss.js.map +1 -0
- package/dist/render/planWizardDocs.d.ts +8 -0
- package/dist/render/planWizardDocs.d.ts.map +1 -0
- package/dist/render/planWizardDocs.js +151 -0
- package/dist/render/planWizardDocs.js.map +1 -0
- package/dist/render/receipt.d.ts +4 -0
- package/dist/render/receipt.d.ts.map +1 -1
- package/dist/render/receipt.js +4 -1
- package/dist/render/receipt.js.map +1 -1
- package/dist/render/reviewDocs.d.ts +3 -0
- package/dist/render/reviewDocs.d.ts.map +1 -0
- package/dist/render/reviewDocs.js +222 -0
- package/dist/render/reviewDocs.js.map +1 -0
- package/dist/render/reviewDocsCss.d.ts +5 -0
- package/dist/render/reviewDocsCss.d.ts.map +1 -0
- package/dist/render/reviewDocsCss.js +128 -0
- package/dist/render/reviewDocsCss.js.map +1 -0
- package/dist/render/sportDocs.d.ts +17 -12
- package/dist/render/sportDocs.d.ts.map +1 -1
- package/dist/render/sportDocs.js +370 -497
- package/dist/render/sportDocs.js.map +1 -1
- package/dist/render/sportPortDocs.d.ts +3 -2
- package/dist/render/sportPortDocs.d.ts.map +1 -1
- package/dist/render/sportPortDocs.js +825 -397
- package/dist/render/sportPortDocs.js.map +1 -1
- package/dist/render/trendDocs.d.ts +16 -6
- package/dist/render/trendDocs.d.ts.map +1 -1
- package/dist/render/trendDocs.js +310 -262
- package/dist/render/trendDocs.js.map +1 -1
- package/dist/render/trendMiscPort.d.ts +9 -24
- package/dist/render/trendMiscPort.d.ts.map +1 -1
- package/dist/render/trendMiscPort.js +7 -30
- package/dist/render/trendMiscPort.js.map +1 -1
- package/dist/render/trendMiscPortDocs.d.ts +1 -2
- package/dist/render/trendMiscPortDocs.d.ts.map +1 -1
- package/dist/render/trendMiscPortDocs.js +303 -133
- package/dist/render/trendMiscPortDocs.js.map +1 -1
- package/dist/render/trendPredictDocs.d.ts +16 -0
- package/dist/render/trendPredictDocs.d.ts.map +1 -0
- package/dist/render/trendPredictDocs.js +1131 -0
- package/dist/render/trendPredictDocs.js.map +1 -0
- package/dist/render/wizardPort.d.ts +9 -62
- package/dist/render/wizardPort.d.ts.map +1 -1
- package/dist/render/wizardPort.js +20 -180
- package/dist/render/wizardPort.js.map +1 -1
- package/dist/render/wizardPortDocs.d.ts +5 -5
- package/dist/render/wizardPortDocs.d.ts.map +1 -1
- package/dist/render/wizardPortDocs.js +282 -234
- package/dist/render/wizardPortDocs.js.map +1 -1
- package/dist/render/workoutMovementTable.d.ts +10 -0
- package/dist/render/workoutMovementTable.d.ts.map +1 -0
- package/dist/render/workoutMovementTable.js +153 -0
- package/dist/render/workoutMovementTable.js.map +1 -0
- package/dist/render/workoutPlanCss.d.ts +15 -0
- package/dist/render/workoutPlanCss.d.ts.map +1 -0
- package/dist/render/workoutPlanCss.js +217 -0
- package/dist/render/workoutPlanCss.js.map +1 -0
- package/dist/render/workoutPlanDocs.d.ts +23 -0
- package/dist/render/workoutPlanDocs.d.ts.map +1 -0
- package/dist/render/workoutPlanDocs.js +244 -0
- package/dist/render/workoutPlanDocs.js.map +1 -0
- package/dist/render/workoutPlanLook.d.ts +16 -0
- package/dist/render/workoutPlanLook.d.ts.map +1 -0
- package/dist/render/workoutPlanLook.js +135 -0
- package/dist/render/workoutPlanLook.js.map +1 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +11 -0
- package/dist/schema.js.map +1 -1
- package/dist/shared/commandSpec.d.ts +73 -0
- package/dist/shared/commandSpec.d.ts.map +1 -0
- package/dist/shared/commandSpec.js +2 -0
- package/dist/shared/commandSpec.js.map +1 -0
- package/dist/shared/conclusionLine.d.ts +3 -0
- package/dist/shared/conclusionLine.d.ts.map +1 -0
- package/dist/shared/conclusionLine.js +21 -0
- package/dist/shared/conclusionLine.js.map +1 -0
- package/dist/shared/contentSuffix.d.ts +17 -0
- package/dist/shared/contentSuffix.d.ts.map +1 -0
- package/dist/shared/contentSuffix.js +125 -0
- package/dist/shared/contentSuffix.js.map +1 -0
- package/dist/shared/copyArea.d.ts +73 -0
- package/dist/shared/copyArea.d.ts.map +1 -0
- package/dist/shared/copyArea.js +144 -0
- package/dist/shared/copyArea.js.map +1 -0
- package/dist/shared/docPage.d.ts +42 -0
- package/dist/shared/docPage.d.ts.map +1 -0
- package/dist/shared/docPage.js +129 -0
- package/dist/shared/docPage.js.map +1 -0
- package/dist/shared/emptyGuide.d.ts +9 -0
- package/dist/shared/emptyGuide.d.ts.map +1 -0
- package/dist/shared/emptyGuide.js +31 -0
- package/dist/shared/emptyGuide.js.map +1 -0
- package/dist/shared/fieldLabel.d.ts +5 -0
- package/dist/shared/fieldLabel.d.ts.map +1 -0
- package/dist/shared/fieldLabel.js +42 -0
- package/dist/shared/fieldLabel.js.map +1 -0
- package/dist/shared/operationHead.d.ts +21 -0
- package/dist/shared/operationHead.d.ts.map +1 -0
- package/dist/shared/operationHead.js +73 -0
- package/dist/shared/operationHead.js.map +1 -0
- package/dist/shared/pageKit.d.ts +25 -0
- package/dist/shared/pageKit.d.ts.map +1 -0
- package/dist/shared/pageKit.js +56 -0
- package/dist/shared/pageKit.js.map +1 -0
- package/dist/shared/params.d.ts +54 -0
- package/dist/shared/params.d.ts.map +1 -0
- package/dist/shared/params.js +176 -0
- package/dist/shared/params.js.map +1 -0
- package/dist/shared/receiptParts.d.ts +9 -0
- package/dist/shared/receiptParts.d.ts.map +1 -0
- package/dist/shared/receiptParts.js +40 -0
- package/dist/shared/receiptParts.js.map +1 -0
- package/dist/shared/sceneEnvelope.d.ts +32 -0
- package/dist/shared/sceneEnvelope.d.ts.map +1 -0
- package/dist/shared/sceneEnvelope.js +12 -0
- package/dist/shared/sceneEnvelope.js.map +1 -0
- package/dist/shared/sourceLine.d.ts +10 -0
- package/dist/shared/sourceLine.d.ts.map +1 -0
- package/dist/shared/sourceLine.js +37 -0
- package/dist/shared/sourceLine.js.map +1 -0
- package/dist/shared/writeParts.d.ts +61 -0
- package/dist/shared/writeParts.d.ts.map +1 -0
- package/dist/shared/writeParts.js +79 -0
- package/dist/shared/writeParts.js.map +1 -0
- package/dist/triggers/help-lookup.d.ts +41 -5
- package/dist/triggers/help-lookup.d.ts.map +1 -1
- package/dist/triggers/help-lookup.js +100 -51
- package/dist/triggers/help-lookup.js.map +1 -1
- package/dist/triggers/index.js +1 -1
- package/dist/triggers/routeSpec.d.ts +66 -0
- package/dist/triggers/routeSpec.d.ts.map +1 -0
- package/dist/triggers/routeSpec.js +21 -0
- package/dist/triggers/routeSpec.js.map +1 -0
- package/dist/triggers/routes.generated.d.ts +17 -0
- package/dist/triggers/routes.generated.d.ts.map +1 -0
- package/dist/triggers/routes.generated.js +519 -0
- package/dist/triggers/routes.generated.js.map +1 -0
- package/dist/triggers/routing.d.ts +17 -38
- package/dist/triggers/routing.d.ts.map +1 -1
- package/dist/triggers/routing.js +13 -527
- package/dist/triggers/routing.js.map +1 -1
- package/dist/triggers/scene-01-home.js +9 -9
- package/dist/triggers/scene-01-home.js.map +1 -1
- package/dist/triggers/scene-02-diet.js +62 -62
- package/dist/triggers/scene-02-diet.js.map +1 -1
- package/dist/triggers/scene-03-weight.js +54 -54
- package/dist/triggers/scene-03-weight.js.map +1 -1
- package/dist/triggers/scene-04-exercise.js +33 -33
- package/dist/triggers/scene-04-exercise.js.map +1 -1
- package/dist/triggers/scene-05-workout.js +32 -32
- package/dist/triggers/scene-05-workout.js.map +1 -1
- package/dist/triggers/scene-06-goal.d.ts +1 -1
- package/dist/triggers/scene-06-goal.d.ts.map +1 -1
- package/dist/triggers/scene-06-goal.js +25 -24
- package/dist/triggers/scene-06-goal.js.map +1 -1
- package/dist/triggers/scene-07-profile.js +4 -4
- package/dist/triggers/scene-07-profile.js.map +1 -1
- package/dist/triggers/scene-08-body.js +10 -10
- package/dist/triggers/scene-08-body.js.map +1 -1
- package/dist/triggers/scene-09-photo.js +10 -10
- package/dist/triggers/scene-09-photo.js.map +1 -1
- package/dist/triggers/scene-10-analysis.js +176 -176
- package/dist/triggers/scene-10-analysis.js.map +1 -1
- package/dist/triggers/wake-assets.d.ts +47 -0
- package/dist/triggers/wake-assets.d.ts.map +1 -0
- package/dist/triggers/wake-assets.js +4725 -0
- package/dist/triggers/wake-assets.js.map +1 -0
- package/dist/weight/commands.d.ts +21 -0
- package/dist/weight/commands.d.ts.map +1 -0
- package/dist/weight/commands.js +18 -0
- package/dist/weight/commands.js.map +1 -0
- package/dist/weight/compare.d.ts +60 -0
- package/dist/weight/compare.d.ts.map +1 -0
- package/dist/weight/compare.js +570 -0
- package/dist/weight/compare.js.map +1 -0
- package/dist/weight/edit.d.ts +13 -0
- package/dist/weight/edit.d.ts.map +1 -0
- package/dist/weight/edit.js +87 -0
- package/dist/weight/edit.js.map +1 -0
- package/dist/weight/fieldLabels.d.ts +5 -0
- package/dist/weight/fieldLabels.d.ts.map +1 -0
- package/dist/weight/fieldLabels.js +23 -0
- package/dist/weight/fieldLabels.js.map +1 -0
- package/dist/weight/figures.d.ts +87 -0
- package/dist/weight/figures.d.ts.map +1 -0
- package/dist/weight/figures.js +219 -0
- package/dist/weight/figures.js.map +1 -0
- package/dist/weight/history.d.ts +85 -0
- package/dist/weight/history.d.ts.map +1 -0
- package/dist/weight/history.js +771 -0
- package/dist/weight/history.js.map +1 -0
- package/dist/weight/index.d.ts +27 -0
- package/dist/weight/index.d.ts.map +1 -0
- package/dist/weight/index.js +23 -0
- package/dist/weight/index.js.map +1 -0
- package/dist/weight/log.d.ts +40 -0
- package/dist/weight/log.d.ts.map +1 -0
- package/dist/weight/log.js +355 -0
- package/dist/weight/log.js.map +1 -0
- package/dist/weight/logReceipt.d.ts +28 -0
- package/dist/weight/logReceipt.d.ts.map +1 -0
- package/dist/weight/logReceipt.js +259 -0
- package/dist/weight/logReceipt.js.map +1 -0
- package/dist/weight/plate.d.ts +77 -0
- package/dist/weight/plate.d.ts.map +1 -0
- package/dist/weight/plate.js +60 -0
- package/dist/weight/plate.js.map +1 -0
- package/dist/weight/plateDocs.d.ts +83 -0
- package/dist/weight/plateDocs.d.ts.map +1 -0
- package/dist/weight/plateDocs.js +179 -0
- package/dist/weight/plateDocs.js.map +1 -0
- package/dist/weight/receipt.d.ts +23 -0
- package/dist/weight/receipt.d.ts.map +1 -0
- package/dist/weight/receipt.js +178 -0
- package/dist/weight/receipt.js.map +1 -0
- package/dist/weight/records.d.ts +109 -0
- package/dist/weight/records.d.ts.map +1 -0
- package/dist/weight/records.js +210 -0
- package/dist/weight/records.js.map +1 -0
- package/dist/weight/review.d.ts +114 -0
- package/dist/weight/review.d.ts.map +1 -0
- package/dist/weight/review.js +651 -0
- package/dist/weight/review.js.map +1 -0
- package/dist/weight/routes.d.ts +7 -0
- package/dist/weight/routes.d.ts.map +1 -0
- package/dist/weight/routes.js +68 -0
- package/dist/weight/routes.js.map +1 -0
- package/dist/weight/volatility.d.ts +78 -0
- package/dist/weight/volatility.d.ts.map +1 -0
- package/dist/weight/volatility.js +203 -0
- package/dist/weight/volatility.js.map +1 -0
- package/dist/weight/volatilityDoc.d.ts +10 -0
- package/dist/weight/volatilityDoc.d.ts.map +1 -0
- package/dist/weight/volatilityDoc.js +395 -0
- package/dist/weight/volatilityDoc.js.map +1 -0
- package/dist/weight/weightCompare.d.ts +70 -0
- package/dist/weight/weightCompare.d.ts.map +1 -0
- package/dist/weight/weightCompare.js +221 -0
- package/dist/weight/weightCompare.js.map +1 -0
- package/dist/weight/weightCompare2.d.ts +66 -0
- package/dist/weight/weightCompare2.d.ts.map +1 -0
- package/dist/weight/weightCompare2.js +218 -0
- package/dist/weight/weightCompare2.js.map +1 -0
- package/dist/weight/weightCompare3.d.ts +18 -0
- package/dist/weight/weightCompare3.d.ts.map +1 -0
- package/dist/weight/weightCompare3.js +222 -0
- package/dist/weight/weightCompare3.js.map +1 -0
- package/dist/weight/weightUi.d.ts +114 -0
- package/dist/weight/weightUi.d.ts.map +1 -0
- package/dist/weight/weightUi.js +256 -0
- package/dist/weight/weightUi.js.map +1 -0
- package/dist/workout/commands.d.ts +29 -0
- package/dist/workout/commands.d.ts.map +1 -0
- package/dist/workout/commands.js +35 -0
- package/dist/workout/commands.js.map +1 -0
- package/dist/workout/contraindication.d.ts +11 -0
- package/dist/workout/contraindication.d.ts.map +1 -0
- package/dist/workout/contraindication.js +11 -0
- package/dist/workout/contraindication.js.map +1 -0
- package/dist/workout/dayPhrase.d.ts +13 -0
- package/dist/workout/dayPhrase.d.ts.map +1 -0
- package/dist/workout/dayPhrase.js +15 -0
- package/dist/workout/dayPhrase.js.map +1 -0
- package/dist/workout/fieldLabels.d.ts +5 -0
- package/dist/workout/fieldLabels.d.ts.map +1 -0
- package/dist/workout/fieldLabels.js +45 -0
- package/dist/workout/fieldLabels.js.map +1 -0
- package/dist/workout/index.d.ts +30 -0
- package/dist/workout/index.d.ts.map +1 -0
- package/dist/workout/index.js +34 -0
- package/dist/workout/index.js.map +1 -0
- package/dist/workout/land.d.ts +45 -0
- package/dist/workout/land.d.ts.map +1 -0
- package/dist/workout/land.js +280 -0
- package/dist/workout/land.js.map +1 -0
- package/dist/workout/landBatch.d.ts +60 -0
- package/dist/workout/landBatch.d.ts.map +1 -0
- package/dist/workout/landBatch.js +225 -0
- package/dist/workout/landBatch.js.map +1 -0
- package/dist/workout/landBatchPages.d.ts +31 -0
- package/dist/workout/landBatchPages.d.ts.map +1 -0
- package/dist/workout/landBatchPages.js +132 -0
- package/dist/workout/landBatchPages.js.map +1 -0
- package/dist/workout/landPages.d.ts +41 -0
- package/dist/workout/landPages.d.ts.map +1 -0
- package/dist/workout/landPages.js +153 -0
- package/dist/workout/landPages.js.map +1 -0
- package/dist/workout/landRunner.d.ts +42 -0
- package/dist/workout/landRunner.d.ts.map +1 -0
- package/dist/workout/landRunner.js +155 -0
- package/dist/workout/landRunner.js.map +1 -0
- package/dist/workout/movementType.d.ts +14 -0
- package/dist/workout/movementType.d.ts.map +1 -0
- package/dist/workout/movementType.js +16 -0
- package/dist/workout/movementType.js.map +1 -0
- package/dist/workout/plan.d.ts +21 -0
- package/dist/workout/plan.d.ts.map +1 -0
- package/dist/workout/plan.js +44 -0
- package/dist/workout/plan.js.map +1 -0
- package/dist/workout/planStore.d.ts +157 -0
- package/dist/workout/planStore.d.ts.map +1 -0
- package/dist/workout/planStore.js +282 -0
- package/dist/workout/planStore.js.map +1 -0
- package/dist/workout/precheckPrompt.d.ts +7 -0
- package/dist/workout/precheckPrompt.d.ts.map +1 -0
- package/dist/workout/precheckPrompt.js +35 -0
- package/dist/workout/precheckPrompt.js.map +1 -0
- package/dist/workout/progress.d.ts +12 -0
- package/dist/workout/progress.d.ts.map +1 -0
- package/dist/workout/progress.js +16 -0
- package/dist/workout/progress.js.map +1 -0
- package/dist/workout/receipt.d.ts +15 -0
- package/dist/workout/receipt.d.ts.map +1 -0
- package/dist/workout/receipt.js +128 -0
- package/dist/workout/receipt.js.map +1 -0
- package/dist/workout/review.d.ts +12 -0
- package/dist/workout/review.d.ts.map +1 -0
- package/dist/workout/review.js +15 -0
- package/dist/workout/review.js.map +1 -0
- package/dist/workout/routes.d.ts +13 -0
- package/dist/workout/routes.d.ts.map +1 -0
- package/dist/workout/routes.js +49 -0
- package/dist/workout/routes.js.map +1 -0
- package/dist/workout/wizard.d.ts +14 -0
- package/dist/workout/wizard.d.ts.map +1 -0
- package/dist/workout/wizard.js +20 -0
- package/dist/workout/wizard.js.map +1 -0
- package/dist/workout/write.d.ts +78 -0
- package/dist/workout/write.d.ts.map +1 -0
- package/dist/workout/write.js +607 -0
- package/dist/workout/write.js.map +1 -0
- package/dist/workout/xunjiBackfill.d.ts +36 -0
- package/dist/workout/xunjiBackfill.d.ts.map +1 -0
- package/dist/workout/xunjiBackfill.js +198 -0
- package/dist/workout/xunjiBackfill.js.map +1 -0
- package/dist/workout/xunjiPush.d.ts +33 -0
- package/dist/workout/xunjiPush.d.ts.map +1 -0
- package/dist/workout/xunjiPush.js +236 -0
- package/dist/workout/xunjiPush.js.map +1 -0
- package/dist/workout/xunjiRunner.d.ts +29 -0
- package/dist/workout/xunjiRunner.d.ts.map +1 -0
- package/dist/workout/xunjiRunner.js +110 -0
- package/dist/workout/xunjiRunner.js.map +1 -0
- package/dist/xunji/backfill.d.ts +63 -0
- package/dist/xunji/backfill.d.ts.map +1 -0
- package/dist/xunji/backfill.js +150 -0
- package/dist/xunji/backfill.js.map +1 -0
- package/dist/xunji/catalog.d.ts +53 -0
- package/dist/xunji/catalog.d.ts.map +1 -0
- package/dist/xunji/catalog.js +126 -0
- package/dist/xunji/catalog.js.map +1 -0
- package/dist/xunji/cli.d.ts +3 -0
- package/dist/xunji/cli.d.ts.map +1 -0
- package/dist/xunji/cli.js +15 -0
- package/dist/xunji/cli.js.map +1 -0
- package/dist/xunji/exitMap.d.ts +37 -0
- package/dist/xunji/exitMap.d.ts.map +1 -0
- package/dist/xunji/exitMap.js +42 -0
- package/dist/xunji/exitMap.js.map +1 -0
- package/dist/xunji/fetch.d.ts +77 -0
- package/dist/xunji/fetch.d.ts.map +1 -0
- package/dist/xunji/fetch.js +160 -0
- package/dist/xunji/fetch.js.map +1 -0
- package/dist/xunji/index.d.ts +21 -0
- package/dist/xunji/index.d.ts.map +1 -0
- package/dist/xunji/index.js +18 -0
- package/dist/xunji/index.js.map +1 -0
- package/dist/xunji/key.d.ts +77 -0
- package/dist/xunji/key.d.ts.map +1 -0
- package/dist/xunji/key.js +160 -0
- package/dist/xunji/key.js.map +1 -0
- package/dist/xunji/overlay-plan.d.ts +79 -0
- package/dist/xunji/overlay-plan.d.ts.map +1 -0
- package/dist/xunji/overlay-plan.js +145 -0
- package/dist/xunji/overlay-plan.js.map +1 -0
- package/dist/xunji/planSource.d.ts +40 -0
- package/dist/xunji/planSource.d.ts.map +1 -0
- package/dist/xunji/planSource.js +78 -0
- package/dist/xunji/planSource.js.map +1 -0
- package/dist/xunji/push.d.ts +55 -0
- package/dist/xunji/push.d.ts.map +1 -0
- package/dist/xunji/push.js +69 -0
- package/dist/xunji/push.js.map +1 -0
- package/dist/xunji/rateLimit.d.ts +44 -0
- package/dist/xunji/rateLimit.d.ts.map +1 -0
- package/dist/xunji/rateLimit.js +99 -0
- package/dist/xunji/rateLimit.js.map +1 -0
- package/dist/xunji/request.d.ts +48 -0
- package/dist/xunji/request.d.ts.map +1 -0
- package/dist/xunji/request.js +60 -0
- package/dist/xunji/request.js.map +1 -0
- package/dist/xunji/retry.d.ts +50 -0
- package/dist/xunji/retry.d.ts.map +1 -0
- package/dist/xunji/retry.js +106 -0
- package/dist/xunji/retry.js.map +1 -0
- package/dist/xunji/rows.d.ts +32 -0
- package/dist/xunji/rows.d.ts.map +1 -0
- package/dist/xunji/rows.js +74 -0
- package/dist/xunji/rows.js.map +1 -0
- package/dist/xunji/run-sync.d.ts +106 -0
- package/dist/xunji/run-sync.d.ts.map +1 -0
- package/dist/xunji/run-sync.js +223 -0
- package/dist/xunji/run-sync.js.map +1 -0
- package/dist/xunji/run.d.ts +56 -0
- package/dist/xunji/run.d.ts.map +1 -0
- package/dist/xunji/run.js +300 -0
- package/dist/xunji/run.js.map +1 -0
- package/dist/xunji/store.d.ts +31 -0
- package/dist/xunji/store.d.ts.map +1 -0
- package/dist/xunji/store.js +60 -0
- package/dist/xunji/store.js.map +1 -0
- package/dist/xunji/subcommands.d.ts +64 -0
- package/dist/xunji/subcommands.d.ts.map +1 -0
- package/dist/xunji/subcommands.js +203 -0
- package/dist/xunji/subcommands.js.map +1 -0
- package/dist/xunji/upsert.d.ts +61 -0
- package/dist/xunji/upsert.d.ts.map +1 -0
- package/dist/xunji/upsert.js +100 -0
- package/dist/xunji/upsert.js.map +1 -0
- package/package.json +7 -3
- package/src/xunji/data//350/256/255/350/256/260/345/256/230/346/226/271/345/212/250/344/275/234.json +1099 -0
- package/templates/help.html +1 -1
- package/workflows/08-/350/272/253/344/275/223/347/273/206/350/212/202.md +60 -0
- package/workflows/09-/350/272/253/346/235/220/347/205/247/347/211/207.md +98 -0
- package/dist/render/profilePlate.d.ts +0 -17
- package/dist/render/profilePlate.d.ts.map +0 -1
- package/dist/render/profilePlate.js +0 -18
- package/dist/render/profilePlate.js.map +0 -1
package/dist/render/sportDocs.js
CHANGED
|
@@ -1,540 +1,413 @@
|
|
|
1
|
-
/** #109 ·
|
|
1
|
+
/** #109 · 运动域全文档装配(数据→区块→填充器);#452 换融合版式;**#523 去分隔符形状化 + 文案去冗余**。
|
|
2
2
|
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `
|
|
7
|
-
* (weight_compare 子集)/`calorie.view.weight-review`(weight_review)/
|
|
8
|
-
* `calorie.view.volatility`(weight_volatility_v2)/`calorie.view.body-composition`
|
|
9
|
-
* (body_composition_view)/`calorie.view.body-measure`(body_measurements_view)。
|
|
10
|
-
* 不碰:exercise_cardio/distribution/recap/review/strength/trend 6 项需移植(→ #111),
|
|
11
|
-
* 训练计划/向导(→ #86),体脂/围度对比 helpers(无 CLI 键,随组合分析消费),
|
|
12
|
-
* 缺口/组合/异常/禁忌(→ #110),饮食域(#108 已关)。
|
|
3
|
+
* 范围(#353 后:身体两页已迁 `src/body/bodyDocs.ts`,本件只留运动两页):`calorie.view.exercise`
|
|
4
|
+
* (汇总:KPI 四格/每日消耗折线/类型消耗分布/逐日与按类型明细)/`calorie.view.exercise-goal`
|
|
5
|
+
* (对照目标:环卡/判决胶囊/差距文案)。不碰:运动 6 项需移植(→ #111)、训练计划与向导(→ #86)、
|
|
6
|
+
* 缺口/组合/异常/禁忌(→ #110)、饮食域(#108 已关)。体重五页在 `src/weight/plateDocs.ts`(#294)。
|
|
13
7
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
8
|
+
* #452 融合(地图 #156 第 3 票,形状照已验样板 #423):① 页头写人话(无命令键/票号/工序词);
|
|
9
|
+
* ② 汇总页四块逐块判空,长窗口**截断明示**;③ 目标页环取 `min(pct,100)`+判决胶囊两态,目标缺席
|
|
10
|
+
* 走专门空态不画空环;④ 口径行走 #420 `renderCaliberLine`;⑤ 来源脚注走 #422;⑥ 可打印走
|
|
11
|
+
* `assembleDocPage` 的 `printable` 透传位(#448)。
|
|
12
|
+
*
|
|
13
|
+
* ── #523 三样债(分隔符/机器词/重复事实)+ 手机端同档,本件落法 ──
|
|
14
|
+
* ① **分隔符**:可见文本零硬串分隔符(探针口径见 #508)。落点四处——
|
|
15
|
+
* · 页头眉标 `运动 · 汇总` → `运动汇总`(类别+页族两个字都在,只是不用 `·` 串);
|
|
16
|
+
* · `<title>` 的品牌 `·` → 空格(照 #401 样板先例);
|
|
17
|
+
* · KPI 卡 `detail` 槽的 `·` 串 → 一条事实只写一处(另一条撤给同页别的卡,不是删);
|
|
18
|
+
* · 页脚来源行**不再走 `src/shared/sourceLine.ts`**(那件的 `·` 串是跨场景共用位,
|
|
19
|
+
* 本族改用 `sportUi.factStrip()` 的键值行承接;共用层口径统一归 **#470**,本票吸收其一角);
|
|
20
|
+
* · 口径行里 `;` 串 → 每条事实一个 `renderCaliberLine`(公共层既有件,不重造形状)。
|
|
21
|
+
* ② **机器词上屏**:来源名从库表名改成读者看得懂的话;`月/日` 这类数值列走显示层取整。
|
|
22
|
+
* ③ **重复事实**:窗口与天数只在窗口条/H1 各出现一次;截断三数拆成一句一事
|
|
23
|
+
* (表标题只报本窗天数,可见行数与被截天数只住截断明示一句);类型分布由柱状图改分布条
|
|
24
|
+
* (长分类名在 x 轴上重叠越界);目标页「已达成」只住判决胶囊一处,环下键值行已撤
|
|
25
|
+
* (目标/实际/差额只在数值四格一处)。#523 返修落点。
|
|
26
|
+
* **返修 R5(终审席 P2-7/P2-8,I1/I2)**:① 逐日表的表题不再复读窗口天数——表题收成
|
|
27
|
+
* 「按日消耗」,天数只留页头窗口条一处(被截窗把本窗天数并进截断明示那一句);
|
|
28
|
+
* ② 两张表的三个数值列都带上单位(「2 次」「800 卡」「90 分钟」),与同页分布条/折叠体同一种写法。
|
|
29
|
+
* ④ **手机端同档**:页内形状件的 820 段+触摸面在 `src/exercise/sportUi.ts`(本件正文首项放它的样式)。
|
|
30
|
+
*
|
|
31
|
+
* 取数仍由调用方备齐(`home/exercise.ts`/`render/planPlate.ts`);本层不查库、不返空。
|
|
21
32
|
*/
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
33
|
+
import { renderCaliberLine, renderChartBlock, renderDataTable, renderDisclosure, renderDistributionRows, renderKpiGrid, renderListRows, renderTocBlock, } from 'base-paint/blocks';
|
|
34
|
+
import { escapeHtml } from 'base-paint';
|
|
35
|
+
import { assembleDocPage, metricsOf } from '../shared/docPage.js';
|
|
36
|
+
import { copyArea, copyLog } from '../shared/copyArea.js';
|
|
37
|
+
import { emptyGuide } from '../shared/emptyGuide.js';
|
|
38
|
+
import { commandLine } from '../shared/writeParts.js';
|
|
39
|
+
import { nowStamp } from './receipt.js';
|
|
40
|
+
import { inferCategory } from '../exercise/exerciseStore.js';
|
|
41
|
+
import { exerciseUiCss, factStrip, fmtNum, windowStrip } from '../exercise/sportUi.js';
|
|
25
42
|
/** envelope 头(值冻结对齐 cli/keys.ts ENVELOPE_VERSION/CALORIE_SKILL;测试钉死一致)。 */
|
|
26
43
|
const DOC_VERSION = '0.1.0';
|
|
27
44
|
const DOC_SKILL = 'calorie';
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
/** 本文件各页共用的 head 标题(整页模板住 `src/shared/docPage.ts`,标题走参数)。
|
|
46
|
+
* #523:品牌名里的 `·` 去掉——`·` 是分隔符债,`<title>` 也是可见文本(探针按 `#401` 样板加了这条锁)。 */
|
|
47
|
+
const DOC_TITLE = '卡路里 运动';
|
|
48
|
+
/** 逐日明细表最多摆几行(超上限**逐条明示**:表标题只报本窗天数,可见行数只报这一截)。
|
|
49
|
+
* 口径取全仓既有上限写法(`copyArea` 的 100 条 caption 同数),不静默截数。 */
|
|
50
|
+
const DAILY_CAP = 100;
|
|
51
|
+
/** 分布条最多列几类(#523 返修):类型名的柱状图 x 轴在 9 个长分类名下互相重叠、右端越出画布
|
|
52
|
+
* (`把手式蝴蝶机飞鸟` 8 个字以 `x≈288` 居中,横跨约 248~328,画布宽只有 320),故柱状图不再画,
|
|
53
|
+
* 改走公共层 `renderDistributionRows`(名称 | 条 | 数值,HTML 横排,全称照印、窄屏自然换行)。
|
|
54
|
+
* 其余逐条仍归下方「按类型明细」表(条给一眼,表给逐条)。 */
|
|
55
|
+
const DIST_TOP = 8;
|
|
56
|
+
/** 人话眉标(页头不许出现命令键;两页各一句)。
|
|
57
|
+
* #523:`运动 · 汇总` 的 `·` 去掉——类别(运动)与页族(汇总)两个字都在,只是不拿符号串。
|
|
58
|
+
* #523 返修 R3:眉标原来与 H1(`运动汇总`)**逐字全同**——#552 把 H1 的日期摘掉之后两者撞成同一个串,
|
|
59
|
+
* 视觉复评 R2 在汇总族两页各记 −5「眉标与 H1 逐字同名」。现眉标退回**类别词**「运动」、页族「汇总」
|
|
60
|
+
* 由 H1 承载:两件事实都还在页头,眉标不再复读页名(与明细族「眉标=运动记录/H1=运动记录明细」同构)。 */
|
|
61
|
+
const SUMMARY_EYEBROW = '运动';
|
|
62
|
+
const GOAL_EYEBROW = '运动对照目标';
|
|
63
|
+
/** 来源脚注上给**读者看**的来源名:可见文本零 snake_case(库表名只留在复制日志的「来源」段里,
|
|
64
|
+
* 那是给复核的人照抄用的技术原件,不上页面)。
|
|
65
|
+
* #552 去文:SOURCE_LOGGED 已删(运动汇总来源块整块消失后本件只剩目标页用 SOURCE_GOAL;
|
|
66
|
+
* 用户裁决“口径/来源块消失”——见票面判据)。 */
|
|
67
|
+
const SOURCE_GOAL = '每日目标 + 运动记录';
|
|
68
|
+
/** 数值的展示写形一律走 `sportUi.fmtNum()`(显示层取整,见 #523);本件不再另立一个 `fmt`。 */
|
|
69
|
+
/** 窗内天数(闭区间;只做天数差,不当取数口径)。 */
|
|
70
|
+
function daysIn(start, end) {
|
|
71
|
+
return Math.round((Date.parse(end) - Date.parse(start)) / 86400000) + 1;
|
|
72
|
+
}
|
|
73
|
+
/** 日期链的展示写形:`起 ~ 止`(`~` 是日期区间的既有写法,见 #508 的豁免清单,不算并列分隔符)。 */
|
|
74
|
+
const rangeText = (start, end) => start + ' ~ ' + end;
|
|
75
|
+
function shell(c) { return '<section id="' + c.id + '">' + c.html + '</section>'; }
|
|
76
|
+
/** 页面级小件的类名(融合件:#421/#452 的页内构件都落这一族;样式随 `pageShell` 区落盘)。 */
|
|
77
|
+
function part(name) { return 'ilife-block-' + name; }
|
|
78
|
+
/** 页内导航:锚点清单由卡片表派生(不手抄第二份 id)。 */
|
|
79
|
+
function tocOf(cards) {
|
|
80
|
+
return renderTocBlock({ items: cards.map((c) => ({ id: c.id, text: c.label })) });
|
|
81
|
+
}
|
|
82
|
+
/** 页内一张卡(锚点 id + 区块 HTML)——页内导航与正文都吃它。 */
|
|
83
|
+
function card(id, label, html) { return { id, label, html }; }
|
|
84
|
+
/** 来源脚注(#523 形状化 + #460 诚实口径):键值行「数据来源/窗口/窗口天数」,
|
|
85
|
+
* `·` 串已去(口径归 #470);取数面无条数字段,天数不再冒充条数,第三格如实报天。 */
|
|
86
|
+
function footFacts(source, start, end, days) {
|
|
87
|
+
return factStrip([
|
|
88
|
+
{ k: '数据来源', v: source },
|
|
89
|
+
{ k: '窗口', v: start + ' → ' + end },
|
|
90
|
+
{ k: '窗口天数', v: '共 ' + fmtNum(days, 0) + ' 天' },
|
|
91
|
+
]);
|
|
92
|
+
}
|
|
93
|
+
/** 复制区(两页共用):三格式数据 + 复制日志(命令/来源/时刻/版本)。 */
|
|
94
|
+
function docCopy(env, command, source) {
|
|
95
|
+
return copyArea({
|
|
96
|
+
data: { envelope: env },
|
|
97
|
+
log: { envelope: env, copyLog: copyLog({ command, source, actionAt: nowStamp(), version: DOC_VERSION }) },
|
|
51
98
|
});
|
|
52
|
-
return fillTemplate({ template: charts ? DOC_SHELL_CHARTS : DOC_SHELL, assets, content: body }).html;
|
|
53
99
|
}
|
|
54
|
-
|
|
55
|
-
|
|
100
|
+
/** 壳内正文顺序(两页共用):页内样式 → 锚点导航 → 卡片 → 口径行 → 来源脚注 → 复制区。
|
|
101
|
+
* 页内样式恒为第一项(`assembleDocPage` 没有页内 CSS 入口,做法同 `src/weight/weightUi.ts`)。 */
|
|
102
|
+
function pageBody(cards, caliber, source, copy) {
|
|
103
|
+
return [
|
|
104
|
+
exerciseUiCss(),
|
|
105
|
+
tocOf(cards),
|
|
106
|
+
cards.map(shell).join(''),
|
|
107
|
+
caliber.map((t) => renderCaliberLine(t)).join(''),
|
|
108
|
+
source,
|
|
109
|
+
copy,
|
|
110
|
+
].join('');
|
|
56
111
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
112
|
+
/* ══════════ 一、运动汇总(exercise_summary.html 的 mode=summary 一支:KPI+折线+分布+明细) ══════════ */
|
|
113
|
+
/** KPI 四格(#523 去重复事实:四条各报一件事,同一个数不在两张卡上各写一遍)。
|
|
114
|
+
* 窗口三处(H1/窗口条/页脚)已各有一份,卡里不再复读。 */
|
|
115
|
+
function summaryKpi(v) {
|
|
116
|
+
const r = v.review;
|
|
117
|
+
return [
|
|
118
|
+
{ label: '总消耗', value: fmtNum(r.totalBurned, 0), unit: '卡' },
|
|
119
|
+
{ label: '总时长', value: fmtNum(r.totalMinutes, 0), unit: '分钟',
|
|
120
|
+
detail: '每次平均 ' + fmtNum(r.totalMinutes / Math.max(1, r.sessions), 0) + ' 分钟' },
|
|
121
|
+
{ label: '次数', value: String(r.sessions), unit: '次', detail: '活跃 ' + r.activeDays + ' 天' },
|
|
122
|
+
{ label: '日均', value: fmtNum(v.avgBurnedPerLoggedDay, 0), unit: '卡', detail: '按有记录的天数算' },
|
|
123
|
+
];
|
|
61
124
|
}
|
|
62
|
-
/**
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
125
|
+
/** #389 · 汇总页目标对照位(目标/对比目标在汇总页的落点)。
|
|
126
|
+
* 口径复用目标页同一套(每日目标+完成度+差额经 `home/exercise.ts` 的目标公开接口来,不在本件重算)。
|
|
127
|
+
* 形状守 #452/#552:只加一张卡(`sec-goal`),不加口径行、不加来源脚注,故汇总页口径行仍 0、来源仍无。
|
|
128
|
+
* 存量直构造(未带目标字段)回 null=不加卡,旧快照逐字节不变;显式 null=未设目标,走未设指引。 */
|
|
129
|
+
function goalCard(v) {
|
|
130
|
+
if (!('dailyGoal' in v))
|
|
131
|
+
return null;
|
|
132
|
+
const daily = v.dailyGoal ?? null;
|
|
133
|
+
const total = v.goalTotal ?? null;
|
|
134
|
+
const pct = v.goalPct ?? null;
|
|
135
|
+
const gap = v.goalGap ?? null;
|
|
136
|
+
const achieved = v.goalAchieved ?? null;
|
|
137
|
+
if (daily === null || total === null || pct === null || gap === null || achieved === null) {
|
|
138
|
+
return card('sec-goal', '目标对照', '<h2 style="margin:0;font-size:15px;font-weight:700">目标对照</h2>' + emptyGuide({
|
|
139
|
+
icon: '🎯', text: '还没设每日运动消耗目标',
|
|
140
|
+
hint: '先说一句「定运动目标」把每日运动消耗目标定下来,再看对照。',
|
|
141
|
+
}));
|
|
68
142
|
}
|
|
69
|
-
|
|
143
|
+
const verdict = '<span class="' + part('verdict') + ' ' + (achieved ? 'ok' : 'no') + '">'
|
|
144
|
+
+ (achieved ? '✓ 已达成目标' : '✕ 还差 ' + fmtNum(Math.abs(gap), 0) + ' 卡') + '</span>';
|
|
145
|
+
return card('sec-goal', '目标对照', '<h2 style="margin:0;font-size:15px;font-weight:700">目标对照</h2>'
|
|
146
|
+
+ renderKpiGrid([
|
|
147
|
+
{ label: '目标', value: fmtNum(total, 0), unit: '卡' },
|
|
148
|
+
{ label: '实际', value: fmtNum(v.review.totalBurned, 0), unit: '卡' },
|
|
149
|
+
{ label: '完成度', value: fmtNum(pct) + '%' },
|
|
150
|
+
{ label: '差额', value: fmtNum(Math.abs(gap), 0), unit: '卡', detail: gap >= 0 ? '超出目标' : '还差这么多' },
|
|
151
|
+
]) + verdict);
|
|
152
|
+
}
|
|
153
|
+
/** 逐日表的截断口径(一处算):**表题只报这张表是什么**,天数与截断三数全住截断明示那一句。
|
|
154
|
+
* #523 返修:原来 caption 与 `sui-note` 把「表被截断、看折线」各说一遍,现拆成一句一事。
|
|
155
|
+
* **R5 打回项 I2(终审席 P2-8)**:表题原来写「按日消耗(本窗共 N 天)」,那个 N 天与**页头窗口条
|
|
156
|
+
* 右端那颗「N 天」胶囊是同一条事实**(同一页说两遍)。现表题收成「按日消耗」,天数只留页头窗口条
|
|
157
|
+
* 一处;被截窗里本窗天数并进截断明示那一句(「本窗共 N 天 + 显示最近 100 天 + 其余 M 天」三数同句),
|
|
158
|
+
* 读者在一个句子里就能对齐「窗共几天/表列几天/少了几」。
|
|
159
|
+
* 返回的 `note` 只在超上限时出,且**必带「截断」二字**(#452 的回归判据读它)。 */
|
|
160
|
+
function truncation(days) {
|
|
161
|
+
if (days <= DAILY_CAP)
|
|
162
|
+
return { visible: false, note: '' };
|
|
163
|
+
return {
|
|
164
|
+
visible: true,
|
|
165
|
+
note: '逐日表已截断:本窗共 ' + days + ' 天,显示最近 ' + DAILY_CAP + ' 天,其余 ' + (days - DAILY_CAP) + ' 天见上方折线',
|
|
166
|
+
};
|
|
70
167
|
}
|
|
71
|
-
|
|
72
|
-
|
|
168
|
+
/** 逐日消耗表:窗内**每天都有一行**(无记录日留空,不断 0);超上限时只摆最近一截并明示。
|
|
169
|
+
* 表标题不再复读窗口(窗口住页头窗口条与 H1),也不复读写法说明(住页底口径行)。
|
|
170
|
+
* 单元格走 `fmtNum`——库里的 `153.60000000000002` 那样的原值不上屏。
|
|
171
|
+
* **R5 打回项 I1(终审席 P2-7)**:消耗列原来是裸数(`1250`),而同页分布条写「1250 卡」——
|
|
172
|
+
* 一页两套单位写法、读者还要自己猜这一列是卡还是分钟。现单元格直接带单位「1250 卡」,
|
|
173
|
+
* 与该页分布条/折叠体同一种写法(同族记录级明细页的四列本来就带单位,两族由此一致)。 */
|
|
174
|
+
function seriesCard(v) {
|
|
175
|
+
if (v.series.length === 0)
|
|
176
|
+
return null;
|
|
177
|
+
const rows = v.series.map((d) => ({
|
|
178
|
+
date: d.date, burn: d.exerciseKcal === null ? '—' : fmtNum(d.exerciseKcal, 0) + ' 卡',
|
|
179
|
+
}));
|
|
180
|
+
const cut = truncation(rows.length);
|
|
181
|
+
const table = renderDataTable({
|
|
182
|
+
columns: [{ key: 'date', label: '日期' }, { key: 'burn', label: '消耗', align: 'right' }],
|
|
183
|
+
rows: cut.visible ? rows.slice(rows.length - DAILY_CAP) : rows,
|
|
184
|
+
caption: '按日消耗',
|
|
185
|
+
emptyText: '本窗无按日消耗',
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
id: 'sec-series', label: '按日消耗',
|
|
189
|
+
html: (cut.note === '' ? '' : '<p class="sui-note">' + escapeHtml(cut.note) + '</p>') + table,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/** 按类型明细表(力量/有氧筛选子集:同窗不同类直出,无类切换页)。
|
|
193
|
+
* #523:表标题只留类数,删掉「力量/有氧筛选子集同窗直出」那句读者用不上的工序话;
|
|
194
|
+
* 数值一律走显示层取整(库里 `1680.8000000000004` 那样的原值不上屏)。
|
|
195
|
+
* **R5 打回项 I1**:三列数值原来都是裸数(次数 `2`、消耗 `800`、时长 `90`)且表头不带单位,
|
|
196
|
+
* 读者要自己猜这两列是卡还是分钟;现与逐日表、分布条、折叠体统一成「值 + 单位」
|
|
197
|
+
* (折叠体本来就写「2 次」「2200 卡」,三处同一写法)。 */
|
|
198
|
+
function typeCard(v) {
|
|
199
|
+
const byType = v.review.byType;
|
|
200
|
+
if (byType.length === 0)
|
|
201
|
+
return null;
|
|
202
|
+
return {
|
|
203
|
+
id: 'sec-type',
|
|
204
|
+
label: '按类型明细',
|
|
205
|
+
html: renderDataTable({
|
|
206
|
+
columns: [
|
|
207
|
+
{ key: 'type', label: '类型' }, { key: 'cat', label: '分类' }, { key: 'sessions', label: '次数', align: 'right' },
|
|
208
|
+
{ key: 'burned', label: '消耗', align: 'right' }, { key: 'minutes', label: '时长', align: 'right' },
|
|
209
|
+
],
|
|
210
|
+
rows: byType.map((t) => ({
|
|
211
|
+
type: t.type, cat: inferCategory(t.type), sessions: t.sessions + ' 次',
|
|
212
|
+
burned: fmtNum(t.burned, 0) + ' 卡', minutes: fmtNum(t.minutes, 0) + ' 分钟',
|
|
213
|
+
})),
|
|
214
|
+
caption: '按类型明细(共 ' + byType.length + ' 类)',
|
|
215
|
+
emptyText: '本窗无类型明细',
|
|
216
|
+
}),
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
/** 汇总页的卡片清单(页内导航与正文走**同一份清单**,锚点不会指到不存在的 id):
|
|
220
|
+
* 四格 KPI / 目标对照 / 每日消耗折线 / 类型消耗分布 / 逐日明细 / 按类型明细 / 按分类汇总,逐块判空。 */
|
|
221
|
+
function summaryCards(v) {
|
|
73
222
|
const r = v.review;
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
},
|
|
82
|
-
])];
|
|
83
|
-
let charts = false;
|
|
84
|
-
const loggedDays = v.series.filter((d) => d.exerciseKcal !== null);
|
|
85
|
-
if (loggedDays.length > 0) {
|
|
86
|
-
parts.push(renderChartBlock({
|
|
223
|
+
const cards = [{ id: 'sec-kpi', label: '核心数字', html: '<h2 style="margin:0;font-size:15px;font-weight:700">核心数字</h2>' + renderKpiGrid(summaryKpi(v)) }];
|
|
224
|
+
const goal = goalCard(v);
|
|
225
|
+
if (goal !== null)
|
|
226
|
+
cards.push(goal);
|
|
227
|
+
const logged = v.series.filter((d) => d.exerciseKcal !== null);
|
|
228
|
+
if (logged.length > 0) {
|
|
229
|
+
cards.push(card('sec-trend', '每日消耗', renderChartBlock({
|
|
87
230
|
kind: 'line',
|
|
88
231
|
title: '每日消耗',
|
|
89
232
|
input: {
|
|
90
|
-
items: v.series.map((d) => ({ label: d.date.slice(5), value: d.exerciseKcal })),
|
|
91
|
-
options: { markLine: { value: v.avgBurnedPerLoggedDay ?? undefined, label: '日均' } },
|
|
233
|
+
items: v.series.map((d) => ({ label: (v.start.slice(0, 4) !== v.end.slice(0, 4) ? d.date : d.date.slice(5)), value: d.exerciseKcal })),
|
|
234
|
+
options: { markLine: { value: v.avgBurnedPerLoggedDay ?? undefined, label: '日均' }, showDots: true },
|
|
92
235
|
},
|
|
93
|
-
}));
|
|
94
|
-
charts = true;
|
|
236
|
+
})));
|
|
95
237
|
}
|
|
96
238
|
if (r.byType.length > 0) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
239
|
+
// #523 返修:类型消耗分布不再画柱状图(长分类名在 x 轴上重叠越界),改走分布条——
|
|
240
|
+
// 全称照印、窄屏自然换行;只列消耗最高的这几类,超上限时用一句注明去向(该句只出现一次)。
|
|
241
|
+
const top = [...r.byType].sort((a, b) => b.burned - a.burned).slice(0, DIST_TOP);
|
|
242
|
+
const max = top.length === 0 || !Number.isFinite(top[0].burned) || top[0].burned <= 0 ? 0 : top[0].burned;
|
|
243
|
+
const distNote = r.byType.length > DIST_TOP
|
|
244
|
+
? '<p class="sui-note">' + escapeHtml('只列消耗最高的 ' + DIST_TOP + ' 类,逐类消耗见下方按类型明细表') + '</p>'
|
|
245
|
+
: '';
|
|
246
|
+
cards.push(card('sec-dist', '类型消耗分布', '<h2 style="margin:0;font-size:15px;font-weight:700">类型消耗分布</h2>' + renderDistributionRows({
|
|
247
|
+
rows: top.map((t) => ({
|
|
248
|
+
label: t.type,
|
|
249
|
+
value: fmtNum(t.burned, 0) + ' 卡',
|
|
250
|
+
pct: max === 0 ? 0 : Math.max(0, Math.min(100, (t.burned / max) * 100)),
|
|
251
|
+
})),
|
|
252
|
+
}) + distNote));
|
|
103
253
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
caption: '按日消耗(' + v.start + ' ~ ' + v.end + ',无记录日留空,不断 0)',
|
|
111
|
-
emptyText: '本窗无按日消耗',
|
|
112
|
-
}));
|
|
113
|
-
parts.push(renderDataTable({
|
|
114
|
-
columns: [
|
|
115
|
-
{ key: 'type', label: '类型' },
|
|
116
|
-
{ key: 'cat', label: '分类' },
|
|
117
|
-
{ key: 'sessions', label: '次数', align: 'right' },
|
|
118
|
-
{ key: 'burned', label: '消耗', align: 'right' },
|
|
119
|
-
{ key: 'minutes', label: '时长', align: 'right' },
|
|
120
|
-
],
|
|
121
|
-
rows: r.byType.map((t) => ({
|
|
122
|
-
type: t.type, cat: inferCategory(t.type), sessions: t.sessions, burned: t.burned, minutes: t.minutes,
|
|
123
|
-
})),
|
|
124
|
-
caption: '按类型明细(力量/有氧筛选子集:同窗不同类直出,无类切换页)',
|
|
125
|
-
emptyText: '本窗无类型明细',
|
|
126
|
-
}));
|
|
254
|
+
const series = seriesCard(v);
|
|
255
|
+
if (series !== null)
|
|
256
|
+
cards.push(series);
|
|
257
|
+
const type = typeCard(v);
|
|
258
|
+
if (type !== null)
|
|
259
|
+
cards.push(type);
|
|
127
260
|
const cats = Object.entries(r.byCategory);
|
|
128
261
|
if (cats.length > 0) {
|
|
129
|
-
|
|
262
|
+
cards.push(card('sec-cat', '按分类汇总', renderDisclosure({
|
|
130
263
|
title: '按分类汇总(共 ' + cats.length + ' 类)',
|
|
131
264
|
contentHtml: renderListRows({
|
|
132
|
-
items: cats.map(([cat, s]) => ({ left: cat, main: s.sessions + ' 次', right: s.burned + ' 卡' })),
|
|
265
|
+
items: cats.map(([cat, s]) => ({ left: cat, main: s.sessions + ' 次', right: fmtNum(s.burned, 0) + ' 卡' })),
|
|
133
266
|
}),
|
|
134
|
-
}));
|
|
267
|
+
})));
|
|
135
268
|
}
|
|
136
|
-
|
|
137
|
-
envelope: {
|
|
138
|
-
version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.exercise',
|
|
139
|
-
data: {
|
|
140
|
-
metrics: metricsOf({
|
|
141
|
-
totalBurned: r.totalBurned, totalMinutes: r.totalMinutes, sessions: r.sessions,
|
|
142
|
-
activeDays: r.activeDays, totalBurnedSeries: v.totalBurnedSeries,
|
|
143
|
-
avgBurnedPerLoggedDay: v.avgBurnedPerLoggedDay, seriesActiveDays: v.activeDays,
|
|
144
|
-
}),
|
|
145
|
-
},
|
|
146
|
-
},
|
|
147
|
-
}));
|
|
148
|
-
return assemble('运动总览 ' + v.start + ' ~ ' + v.end, 'calorie.view.exercise · 运动身体域', '类型分布/力量有氧明细同窗直出(交互筛选归宿主)', parts.join(''), charts);
|
|
269
|
+
return cards;
|
|
149
270
|
}
|
|
150
|
-
/*
|
|
151
|
-
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
{
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
title: '目标 vs 实际',
|
|
164
|
-
input: { items: [{ label: '目标', value: v.goalTotal }, { label: '实际', value: v.actual }] },
|
|
165
|
-
}));
|
|
166
|
-
parts.push(copyBlock('复制数据', {
|
|
167
|
-
envelope: {
|
|
168
|
-
version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.exercise-goal',
|
|
169
|
-
data: {
|
|
170
|
-
metrics: metricsOf({
|
|
171
|
-
dailyGoal: v.dailyGoal, goalTotal: v.goalTotal, actual: v.actual,
|
|
172
|
-
pct: v.pct, gap: v.gap, achieved: v.achieved ? 1 : 0, days: v.days,
|
|
173
|
-
}),
|
|
174
|
-
},
|
|
271
|
+
/* #552 去文:summaryCalibers 整函数删(仅此处用;用户裁决“口径/来源块消失”——见票面判据)。 */
|
|
272
|
+
function summaryEnvelope(v) {
|
|
273
|
+
const r = v.review;
|
|
274
|
+
return {
|
|
275
|
+
version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: '运动汇总',
|
|
276
|
+
data: {
|
|
277
|
+
metrics: metricsOf({
|
|
278
|
+
totalBurned: r.totalBurned, totalMinutes: r.totalMinutes, sessions: r.sessions,
|
|
279
|
+
activeDays: r.activeDays, totalBurnedSeries: v.totalBurnedSeries,
|
|
280
|
+
avgBurnedPerLoggedDay: v.avgBurnedPerLoggedDay, seriesActiveDays: v.activeDays,
|
|
281
|
+
dailyGoal: v.dailyGoal ?? undefined, goalTotal: v.goalTotal ?? undefined,
|
|
282
|
+
goalPct: v.goalPct ?? undefined, goalGap: v.goalGap ?? undefined,
|
|
283
|
+
}),
|
|
175
284
|
},
|
|
176
|
-
}
|
|
177
|
-
return assemble('运动目标 ' + v.start + ' ~ ' + v.end, 'calorie.view.exercise-goal · 运动身体域', v.achieved ? '已达成(实际 ≥ 目标)' : '未达成(还差 ' + Math.abs(v.gap) + ' 卡)', parts.join(''), true);
|
|
285
|
+
};
|
|
178
286
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
kind: 'line',
|
|
198
|
-
title: '体重曲线',
|
|
199
|
-
input: { items: t.logs.map((l) => ({ label: l.date.slice(5), value: l.weightKg })) },
|
|
200
|
-
}));
|
|
201
|
-
charts = true;
|
|
287
|
+
/** 运动汇总整页(只读页:数据由调用方 `buildExerciseView` 备齐;零记录走空态指引)。
|
|
288
|
+
* #552 去文(用户裁决“标题无日期;副题元素消失;口径/来源块消失”——见票面判据):
|
|
289
|
+
* 标题只留“运动汇总”(窗口由 windowStrip 承载);副题整行删(传 subtitle:null);
|
|
290
|
+
* 口径/来源整块消失(pageBody 传 [] 与空串)。 */
|
|
291
|
+
export function buildExerciseDoc(v, cmd) {
|
|
292
|
+
const env = summaryEnvelope(v);
|
|
293
|
+
const copy = docCopy(env, cmd ?? commandLine('calorie.view.exercise', { start: v.start, end: v.end }), 'exercise_log(只读汇总)');
|
|
294
|
+
const title = '运动汇总';
|
|
295
|
+
if (v.series.length === 0) {
|
|
296
|
+
// 零窗(装配层构造)=一整页空态指引:不留空 KPI 卡、不出空折线。
|
|
297
|
+
return assembleDocPage({
|
|
298
|
+
docTitle: DOC_TITLE, title, eyebrow: SUMMARY_EYEBROW, subtitle: '本段时间没有运动记录',
|
|
299
|
+
content: exerciseUiCss() + '<section id="sec-empty">' + emptyGuide({
|
|
300
|
+
icon: '🏃', text: '本段时间没有运动记录',
|
|
301
|
+
hint: '先说一句「记运动」把这一次补上,或把窗口换成最近 7 天再看。',
|
|
302
|
+
}) + '</section>',
|
|
303
|
+
printable: true,
|
|
304
|
+
}) + copy;
|
|
202
305
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
})
|
|
213
|
-
parts.push(copyBlock('复制数据', {
|
|
214
|
-
envelope: {
|
|
215
|
-
version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.weight',
|
|
216
|
-
data: {
|
|
217
|
-
metrics: metricsOf({
|
|
218
|
-
recordCount: t.recordCount, avgWeight: t.avgWeight,
|
|
219
|
-
maxWeight: t.maxWeight, minWeight: t.minWeight,
|
|
220
|
-
firstWeight: t.firstWeight, lastWeight: t.lastWeight,
|
|
221
|
-
changeKg: t.changeKg, dailyChangeG: t.dailyChangeG,
|
|
222
|
-
weightGoal: w.weightGoal, gapKg: w.gapKg,
|
|
223
|
-
}),
|
|
224
|
-
},
|
|
225
|
-
},
|
|
226
|
-
}));
|
|
227
|
-
return assemble('体重盘 ' + w.start + ' ~ ' + w.end, 'calorie.view.weight · 运动身体域', '趋势' + t.trendCn, parts.join(''), charts);
|
|
306
|
+
const cards = summaryCards(v);
|
|
307
|
+
return assembleDocPage({
|
|
308
|
+
docTitle: DOC_TITLE, title, eyebrow: SUMMARY_EYEBROW,
|
|
309
|
+
subtitle: null,
|
|
310
|
+
// 窗口条(#523):起止两枚日期块 + 天数胶囊,替掉原来挤在副标题/表标题里的 `·` 串。
|
|
311
|
+
// #552 去文:窗口只由 windowStrip 承载(用户裁决“窗口由 windowStrip 承载”——见票面判据)。
|
|
312
|
+
content: windowStrip(v.start, v.end, daysIn(v.start, v.end) + ' 天')
|
|
313
|
+
+ pageBody(cards, [], '', copy),
|
|
314
|
+
charts: true, printable: true,
|
|
315
|
+
});
|
|
228
316
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
title: '体重曲线',
|
|
245
|
-
input: { items: asc.map((r) => ({ label: r.date.slice(5), value: r.weight_kg })) },
|
|
246
|
-
}));
|
|
247
|
-
charts = true;
|
|
248
|
-
}
|
|
249
|
-
parts.push(renderDataTable({
|
|
250
|
-
columns: [
|
|
251
|
-
{ key: 'date', label: '日期' },
|
|
252
|
-
{ key: 'time', label: '时间' },
|
|
253
|
-
{ key: 'kg', label: '体重', align: 'right' },
|
|
254
|
-
{ key: 'bmi', label: 'BMI', align: 'right' },
|
|
255
|
-
{ key: 'note', label: '备注' },
|
|
256
|
-
],
|
|
257
|
-
rows: h.rows.map((r) => ({
|
|
258
|
-
date: r.date, time: r.time ?? '', kg: r.weight_kg, bmi: r.bmi ?? '', note: r.note ?? '',
|
|
259
|
-
})),
|
|
260
|
-
caption: '体重历史 ' + h.range + '(共 ' + h.rows.length + ' 条)',
|
|
261
|
-
emptyText: '本窗无体重记录',
|
|
262
|
-
}));
|
|
263
|
-
parts.push(copyBlock('复制数据', {
|
|
264
|
-
envelope: {
|
|
265
|
-
version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.weight-history',
|
|
266
|
-
data: {
|
|
267
|
-
metrics: metricsOf({
|
|
268
|
-
rows: h.rows.length,
|
|
269
|
-
spanDays: h.change?.spanDays, first: h.change?.first, last: h.change?.last,
|
|
270
|
-
delta: h.change?.delta, dailyAvg: h.change?.dailyAvg,
|
|
271
|
-
}),
|
|
272
|
-
},
|
|
273
|
-
},
|
|
274
|
-
}));
|
|
275
|
-
return assemble('体重历史 ' + h.range, 'calorie.view.weight-history · 运动身体域', null, parts.join(''), charts);
|
|
317
|
+
/** 环卡:`min(pct,100)` 给环,实际百分比由文字承载(超额不把环画爆)。
|
|
318
|
+
* #523 返修:环下那行「目标/实际/差距」键值行已撤——这三个数在下方「数值对照」四格各有一处,
|
|
319
|
+
* 环旁只留判决胶囊(同一事实一页一处;「差距/差额」两名一数也随之收成「差额」一名)。
|
|
320
|
+
* 环心只留百分比读数,判语(已达成/还需再练)只住胶囊一处。 */
|
|
321
|
+
function ringCard(v, pct) {
|
|
322
|
+
const deg = Math.max(0, Math.min(100, Math.min(pct, 100)));
|
|
323
|
+
return '<div class="' + part('ring-card') + '">'
|
|
324
|
+
+ '<div class="' + part('ring-wrap') + '" role="img" aria-label="运动目标完成度 ' + fmtNum(v.pct) + '%">'
|
|
325
|
+
+ '<div style="position:absolute;inset:0;border-radius:50%;background:conic-gradient(var(--blue) 0 ' + deg + '%, var(--line) ' + deg + '% 100%)"></div>'
|
|
326
|
+
+ '<div class="' + part('ring-center') + '">'
|
|
327
|
+
+ '<div class="' + part('ring-pct') + '">' + fmtNum(v.pct) + '%</div>'
|
|
328
|
+
+ '</div></div>'
|
|
329
|
+
+ '<div class="' + part('ring-side') + '">'
|
|
330
|
+
+ verdictPill(v)
|
|
331
|
+
+ '</div></div>';
|
|
276
332
|
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
{ key: 'avg', label: '均值', align: 'right' },
|
|
282
|
-
{ key: 'first', label: '期首', align: 'right' },
|
|
283
|
-
{ key: 'last', label: '期末', align: 'right' },
|
|
284
|
-
{ key: 'change', label: '变化', align: 'right' },
|
|
285
|
-
];
|
|
286
|
-
export function buildWeightCompareDoc(v) {
|
|
287
|
-
const c = v.compare;
|
|
288
|
-
const parts = [renderKpiGrid([
|
|
289
|
-
{
|
|
290
|
-
label: '体重对比', value: (c.avgDiff >= 0 ? '+' : '') + c.avgDiff + ' kg',
|
|
291
|
-
detail: c.direction === 'down' ? '下降' : '上升',
|
|
292
|
-
},
|
|
293
|
-
{ label: '本期', value: String(c.currentPeriod.avgWeight), unit: 'kg', detail: v.start + ' ~ ' + v.end },
|
|
294
|
-
{ label: '对比期', value: String(c.comparePeriod.avgWeight), unit: 'kg', detail: v.compareStart + ' ~ ' + v.compareEnd },
|
|
295
|
-
{ label: '节奏', value: c.speedLabel },
|
|
296
|
-
])];
|
|
297
|
-
const rowOf = (name, s, range) => ({
|
|
298
|
-
period: name, range, avg: s.avgWeight, first: s.firstWeight, last: s.lastWeight, change: s.changeKg,
|
|
299
|
-
});
|
|
300
|
-
parts.push(renderDataTable({
|
|
301
|
-
columns: [...COMPARE_COLUMNS],
|
|
302
|
-
rows: [
|
|
303
|
-
rowOf('本期', c.currentPeriod, v.start + ' ~ ' + v.end),
|
|
304
|
-
rowOf('对比期', c.comparePeriod, v.compareStart + ' ~ ' + v.compareEnd),
|
|
305
|
-
],
|
|
306
|
-
caption: '两期对比(均值差 ' + (c.avgDiff >= 0 ? '+' : '') + c.avgDiff + ' kg)',
|
|
307
|
-
emptyText: '对比期无数据',
|
|
308
|
-
}));
|
|
309
|
-
parts.push(copyBlock('复制数据', {
|
|
310
|
-
envelope: {
|
|
311
|
-
version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.weight-compare',
|
|
312
|
-
data: {
|
|
313
|
-
metrics: {
|
|
314
|
-
avgDiff: c.avgDiff,
|
|
315
|
-
currentAvg: c.currentPeriod.avgWeight, compareAvg: c.comparePeriod.avgWeight,
|
|
316
|
-
currentChange: c.currentPeriod.changeKg, compareChange: c.comparePeriod.changeKg,
|
|
317
|
-
},
|
|
318
|
-
},
|
|
319
|
-
},
|
|
320
|
-
}));
|
|
321
|
-
return assemble('体重对比', 'calorie.view.weight-compare · 运动身体域', '本期 ' + v.start + ' ~ ' + v.end + ' vs 对比期 ' + v.compareStart + ' ~ ' + v.compareEnd, parts.join(''), false);
|
|
333
|
+
/** 判决胶囊:达成 `ok`/未达成 `no`(两态同一个类的两个档)。 */
|
|
334
|
+
function verdictPill(v) {
|
|
335
|
+
const text = v.achieved ? '✓ 已达成目标' : '✕ 还差 ' + fmtNum(Math.abs(v.gap), 0) + ' 卡';
|
|
336
|
+
return '<span class="' + part('verdict') + ' ' + (v.achieved ? 'ok' : 'no') + '">' + text + '</span>';
|
|
322
337
|
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
{ label: '差距', value: (m.gapKg >= 0 ? '+' : '') + m.gapKg + ' kg' },
|
|
333
|
-
{
|
|
334
|
-
label: '预计达成', value: m.estDate ?? '—',
|
|
335
|
-
detail: m.estDays === null || m.estDays === undefined ? m.status : m.estDays + ' 天 · ' + m.status,
|
|
336
|
-
},
|
|
337
|
-
])];
|
|
338
|
-
parts.push(renderListRows({
|
|
339
|
-
items: [
|
|
340
|
-
{ left: '状态', main: m.status },
|
|
341
|
-
{
|
|
342
|
-
left: '日均变化', main: m.actualDailyChangeKg === null ? '—(记录不足)' : String(m.actualDailyChangeKg) + ' kg/天',
|
|
343
|
-
},
|
|
344
|
-
{
|
|
345
|
-
left: '热量调整', main: m.calorieAdjustment === null ? '—' : String(m.calorieAdjustment) + ' 卡',
|
|
346
|
-
},
|
|
347
|
-
],
|
|
348
|
-
}));
|
|
349
|
-
parts.push(copyBlock('复制数据', {
|
|
350
|
-
envelope: {
|
|
351
|
-
version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.weight-review',
|
|
352
|
-
data: {
|
|
353
|
-
metrics: metricsOf({
|
|
354
|
-
currentWeight: m.currentWeight, weightGoal: m.weightGoal,
|
|
355
|
-
gapKg: m.gapKg, actualDailyChangeKg: m.actualDailyChangeKg,
|
|
356
|
-
estDays: m.estDays, calorieAdjustment: m.calorieAdjustment,
|
|
357
|
-
}),
|
|
358
|
-
},
|
|
359
|
-
},
|
|
360
|
-
}));
|
|
361
|
-
return assemble('体重复核 ' + v.today, 'calorie.view.weight-review · 运动身体域', m.status, parts.join(''), false);
|
|
338
|
+
/** 目标页数值四格(本页「目标/实际/完成度/差额」唯一的落点:环只给一眼的完成度,逐项对照全在这里)。
|
|
339
|
+
* #523 返修:判决只住胶囊一处(窗口条后的状态徽标与环心判语两处已撤,不再一页三遍);**#602 补题**:本块原只有裸 KPI 卡格、块内无可见标题(终审 #268 §2.6 N1 的页枚举漏了 23/24 两页),现照同件 `sec-kpi`/`sec-dist` 同形,把题作为 `<section>` 首个子节点补上——题词与页内导航同源(都取 `card()` 的 label「数值对照」,两处不会走散),风格同档(15px/700)。 */
|
|
340
|
+
function goalFigures(v, goalTotal) {
|
|
341
|
+
return renderKpiGrid([
|
|
342
|
+
{ label: '目标', value: fmtNum(goalTotal, 0), unit: '卡' },
|
|
343
|
+
{ label: '实际', value: fmtNum(v.actual, 0), unit: '卡' },
|
|
344
|
+
{ label: '完成度', value: fmtNum(v.pct) + '%', detail: '环最高画到 100%' },
|
|
345
|
+
{ label: '差额', value: fmtNum(Math.abs(v.gap), 0), unit: '卡', detail: v.gap >= 0 ? '超出目标' : '还差这么多' },
|
|
346
|
+
]);
|
|
362
347
|
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
label: '阈值', value: '黄±' + o.thresholds.yellow + ' 红±' + o.thresholds.red + ' kg',
|
|
370
|
-
detail: 'σ=' + o.baselineSigma + 'kg · ' + v.baselineMode + '基线',
|
|
371
|
-
},
|
|
372
|
-
{ label: '预警', value: o.earlyWarning.level, detail: o.earlyWarning.message },
|
|
373
|
-
{
|
|
374
|
-
label: '近期异常', value: String(o.recentAnomalies.length), unit: '个',
|
|
375
|
-
detail: '共 ' + o.points.length + ' 点',
|
|
376
|
-
},
|
|
377
|
-
])];
|
|
378
|
-
let charts = false;
|
|
379
|
-
if (o.points.length > 0) {
|
|
380
|
-
parts.push(renderChartBlock({
|
|
381
|
-
kind: 'line',
|
|
382
|
-
title: '偏离基线',
|
|
383
|
-
input: { items: o.points.map((p) => ({ label: p.date.slice(5), value: p.deviationKg })) },
|
|
384
|
-
}));
|
|
385
|
-
charts = true;
|
|
386
|
-
}
|
|
387
|
-
parts.push(renderDataTable({
|
|
388
|
-
columns: [
|
|
389
|
-
{ key: 'date', label: '日期' },
|
|
390
|
-
{ key: 'kg', label: '体重', align: 'right' },
|
|
391
|
-
{ key: 'dev', label: '偏离', align: 'right' },
|
|
392
|
-
{ key: 'level', label: '级别' },
|
|
393
|
-
],
|
|
394
|
-
rows: o.recentAnomalies.map((p) => ({ date: p.date, kg: p.kg, dev: p.deviationKg, level: p.level })),
|
|
395
|
-
caption: '近期异常点(共 ' + o.recentAnomalies.length + ' 个,黄/红阈上)',
|
|
396
|
-
emptyText: '近期无异常点(基线 ' + o.baselineValue + ' kg,黄±' + o.thresholds.yellow + ' 红±' + o.thresholds.red + ')',
|
|
397
|
-
}));
|
|
398
|
-
parts.push(copyBlock('复制数据', {
|
|
399
|
-
envelope: {
|
|
400
|
-
version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: 'calorie.view.volatility',
|
|
401
|
-
data: {
|
|
402
|
-
metrics: {
|
|
403
|
-
baselineValue: o.baselineValue, baselineSigma: o.baselineSigma,
|
|
404
|
-
yellow: o.thresholds.yellow, red: o.thresholds.red,
|
|
405
|
-
points: o.points.length, anomalies: o.recentAnomalies.length,
|
|
406
|
-
deviationKg: o.earlyWarning.deviationKg,
|
|
407
|
-
},
|
|
408
|
-
},
|
|
409
|
-
},
|
|
410
|
-
}));
|
|
411
|
-
return assemble('波动分析 ' + v.start + ' ~ ' + v.end, 'calorie.view.volatility · 运动身体域', o.earlyWarning.message, parts.join(''), charts);
|
|
348
|
+
/** 周口径那句:**全仓只在本件算一处(days === 7 时才对周口径负责)、写一处**。
|
|
349
|
+
* 返回 `null` = 本窗不是整周,不出这句(免得把日口径页也印成周口径)。 */
|
|
350
|
+
function weekCaliberLine(v, goalTotal) {
|
|
351
|
+
if (v.days !== 7)
|
|
352
|
+
return null;
|
|
353
|
+
return '周目标口径=每日目标 × 7:每日目标 ' + fmtNum(v.dailyGoal, 0) + ' 卡 × 7 = ' + fmtNum(goalTotal, 0) + ' 卡';
|
|
412
354
|
}
|
|
413
|
-
|
|
414
|
-
|
|
355
|
+
/** 目标页口径行(#523 一条事实一行;周口径那句只走这里一处)。 */
|
|
356
|
+
function goalCalibers(v, goalTotal) {
|
|
415
357
|
const parts = [
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
}),
|
|
420
|
-
renderKpiGrid([
|
|
421
|
-
{ label: '体成分看', value: v.source ?? '全部来源', detail: '共 ' + v.total + ' 条' },
|
|
422
|
-
{ label: '最新体脂', value: v.latestPct === null ? '—' : String(v.latestPct) + '%' },
|
|
423
|
-
{ label: '趋势点', value: String(v.trend.length), unit: '天' },
|
|
424
|
-
]),
|
|
358
|
+
'完成度=实际 ÷ 目标',
|
|
359
|
+
'差额=实际 − 目标',
|
|
360
|
+
'每日目标 ' + fmtNum(v.dailyGoal, 0) + ' 卡',
|
|
425
361
|
];
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
title: '体脂趋势',
|
|
431
|
-
input: { items: v.trend.map((t) => ({ label: t.date.slice(5), value: t.avgPct })) },
|
|
432
|
-
}));
|
|
433
|
-
charts = true;
|
|
362
|
+
if (goalTotal !== null) {
|
|
363
|
+
const week = weekCaliberLine(v, goalTotal);
|
|
364
|
+
if (week !== null)
|
|
365
|
+
parts.push(week);
|
|
434
366
|
}
|
|
435
|
-
|
|
436
|
-
const d = r;
|
|
437
|
-
return {
|
|
438
|
-
date: typeof d.date === 'string' ? d.date : '',
|
|
439
|
-
pct: typeof d.body_fat_pct === 'number' ? d.body_fat_pct : '',
|
|
440
|
-
source: typeof d.source === 'string' ? d.source : '',
|
|
441
|
-
note: typeof d.note === 'string' ? d.note : '',
|
|
442
|
-
};
|
|
443
|
-
});
|
|
444
|
-
parts.push(renderDataTable({
|
|
445
|
-
columns: [
|
|
446
|
-
{ key: 'date', label: '日期' },
|
|
447
|
-
{ key: 'pct', label: '体脂', align: 'right' },
|
|
448
|
-
{ key: 'source', label: '来源' },
|
|
449
|
-
{ key: 'note', label: '备注' },
|
|
450
|
-
],
|
|
451
|
-
rows,
|
|
452
|
-
caption: '体成分记录(共 ' + v.total + ' 条)',
|
|
453
|
-
emptyText: '无体成分记录',
|
|
454
|
-
}));
|
|
455
|
-
parts.push(copyBlock('复制数据', {
|
|
456
|
-
envelope: {
|
|
457
|
-
version: DOC_VERSION, skill: DOC_SKILL, shape: 'list', key: 'calorie.view.body-composition',
|
|
458
|
-
data: { items: rows, total: v.total },
|
|
459
|
-
},
|
|
460
|
-
}));
|
|
461
|
-
return assemble('体成分看', 'calorie.view.body-composition · 运动身体域', null, parts.join(''), charts);
|
|
367
|
+
return parts;
|
|
462
368
|
}
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
export function buildBodyMeasureDoc(v) {
|
|
471
|
-
const parts = [
|
|
472
|
-
renderParamForm({
|
|
473
|
-
fields: [{ name: 'metric', label: '围度项', value: v.metric ?? '' }],
|
|
474
|
-
description: '13 围度项按名筛选(空=全部;趋势需指定单项;两期对比归组合分析)',
|
|
475
|
-
}),
|
|
476
|
-
renderKpiGrid([
|
|
477
|
-
{ label: '围度看', value: v.metric ? (MEASURE_ZH[v.metric] ?? v.metric) : '全部围度', detail: '共 ' + v.total + ' 条' },
|
|
478
|
-
{ label: '最新', value: v.latestVal === null ? '—' : String(v.latestVal) + 'cm', detail: v.metric ? (MEASURE_ZH[v.metric] ?? v.metric) : '' },
|
|
479
|
-
{ label: '趋势点', value: String(v.trend.length), unit: '天' },
|
|
480
|
-
]),
|
|
481
|
-
];
|
|
482
|
-
let charts = false;
|
|
483
|
-
if (v.metric && v.trend.length > 0) {
|
|
484
|
-
parts.push(renderChartBlock({
|
|
485
|
-
kind: 'line',
|
|
486
|
-
title: (MEASURE_ZH[v.metric] ?? v.metric) + '趋势',
|
|
487
|
-
input: { items: v.trend.map((t) => ({ label: t.date.slice(5), value: t.avgVal })) },
|
|
488
|
-
}));
|
|
489
|
-
charts = true;
|
|
490
|
-
}
|
|
491
|
-
if (v.metric) {
|
|
492
|
-
const mkey = v.metric;
|
|
493
|
-
parts.push(renderDataTable({
|
|
494
|
-
columns: [
|
|
495
|
-
{ key: 'date', label: '日期' },
|
|
496
|
-
{ key: 'val', label: (MEASURE_ZH[mkey] ?? mkey) + '(cm)', align: 'right' },
|
|
497
|
-
{ key: 'note', label: '备注' },
|
|
498
|
-
],
|
|
499
|
-
rows: v.items.map((r) => {
|
|
500
|
-
const val = r[mkey];
|
|
501
|
-
return {
|
|
502
|
-
date: typeof r['date'] === 'string' ? r['date'] : '',
|
|
503
|
-
val: typeof val === 'number' ? val : '',
|
|
504
|
-
note: typeof r['note'] === 'string' ? r['note'] : '',
|
|
505
|
-
};
|
|
369
|
+
function goalEnvelope(v) {
|
|
370
|
+
return {
|
|
371
|
+
version: DOC_VERSION, skill: DOC_SKILL, shape: 'stat', key: '运动目标',
|
|
372
|
+
data: {
|
|
373
|
+
metrics: metricsOf({
|
|
374
|
+
dailyGoal: v.dailyGoal, goalTotal: v.goalTotal, actual: v.actual,
|
|
375
|
+
pct: v.pct, gap: v.gap, achieved: v.achieved ? 1 : 0, days: v.days,
|
|
506
376
|
}),
|
|
507
|
-
caption: (MEASURE_ZH[mkey] ?? mkey) + '记录(共 ' + v.total + ' 条)',
|
|
508
|
-
emptyText: '该项目无记录',
|
|
509
|
-
}));
|
|
510
|
-
}
|
|
511
|
-
else {
|
|
512
|
-
const numOrEmpty = (x) => (typeof x === 'number' ? x : '');
|
|
513
|
-
const strOrEmpty = (x) => (typeof x === 'string' ? x : '');
|
|
514
|
-
parts.push(renderDataTable({
|
|
515
|
-
columns: [
|
|
516
|
-
{ key: 'date', label: '日期' },
|
|
517
|
-
{ key: 'chest', label: '胸', align: 'right' },
|
|
518
|
-
{ key: 'waist', label: '腰', align: 'right' },
|
|
519
|
-
{ key: 'abdomen', label: '腹', align: 'right' },
|
|
520
|
-
{ key: 'hip', label: '臀', align: 'right' },
|
|
521
|
-
{ key: 'note', label: '备注' },
|
|
522
|
-
],
|
|
523
|
-
rows: v.items.map((r) => ({
|
|
524
|
-
date: strOrEmpty(r['date']), chest: numOrEmpty(r['chest_cm']), waist: numOrEmpty(r['waist_cm']),
|
|
525
|
-
abdomen: numOrEmpty(r['abdomen_cm']), hip: numOrEmpty(r['hip_cm']), note: strOrEmpty(r['note']),
|
|
526
|
-
})),
|
|
527
|
-
caption: '围度记录(共 ' + v.total + ' 条;全量 13 项见复制数据)',
|
|
528
|
-
emptyText: '无围度记录',
|
|
529
|
-
}));
|
|
530
|
-
}
|
|
531
|
-
const rows = v.items.map((r) => ({ ...r }));
|
|
532
|
-
parts.push(copyBlock('复制数据', {
|
|
533
|
-
envelope: {
|
|
534
|
-
version: DOC_VERSION, skill: DOC_SKILL, shape: 'list', key: 'calorie.view.body-measure',
|
|
535
|
-
data: { items: rows, total: v.total },
|
|
536
377
|
},
|
|
537
|
-
}
|
|
538
|
-
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
/** 运动目标整页:目标缺席(`goalTotal`/`pct` 为 `null`)=专门空态、**不画空环**;
|
|
381
|
+
* 有目标=环卡(`min(pct,100)`)+判决胶囊两态+差距文案。 */
|
|
382
|
+
export function buildExerciseGoalDoc(v, cmd) {
|
|
383
|
+
const env = goalEnvelope(v);
|
|
384
|
+
const copy = docCopy(env, cmd ?? commandLine('calorie.view.exercise-goal', { start: v.start, end: v.end }), v.source ?? 'daily_goal + exercise_log(只读对照)');
|
|
385
|
+
// #523 返修 R3:单日窗原来印成「运动目标 2026-09-15 ~ 2026-09-15」——同一天在 H1 里写两遍
|
|
386
|
+
// (窗口条与来源脚注再各一份,视觉复评 R2 记 −3)。起止同日只印一次,与窗口条的退化分支同口径。
|
|
387
|
+
const title = '运动目标 ' + (v.start === v.end ? v.start : rangeText(v.start, v.end));
|
|
388
|
+
if (v.goalTotal === null || v.pct === null) {
|
|
389
|
+
return assembleDocPage({
|
|
390
|
+
docTitle: DOC_TITLE, title, eyebrow: GOAL_EYEBROW, subtitle: '还没设每日运动消耗目标',
|
|
391
|
+
content: exerciseUiCss() + '<section id="sec-empty">' + emptyGuide({
|
|
392
|
+
icon: '🎯', text: '还没设每日运动消耗目标',
|
|
393
|
+
hint: '先说一句「定营养目标」把每日运动消耗目标定下来,再看这张对照页。',
|
|
394
|
+
}) + '</section>',
|
|
395
|
+
printable: true,
|
|
396
|
+
}) + copy;
|
|
397
|
+
}
|
|
398
|
+
const goalTotal = v.goalTotal;
|
|
399
|
+
const cards = [
|
|
400
|
+
card('sec-ring', '目标环', ringCard(v, v.pct)),
|
|
401
|
+
card('sec-figures', '数值对照', '<h2 style="margin:0;font-size:15px;font-weight:700">数值对照</h2>' + goalFigures(v, goalTotal)),
|
|
402
|
+
];
|
|
403
|
+
const source = footFacts(SOURCE_GOAL, v.start, v.end, v.days);
|
|
404
|
+
return assembleDocPage({
|
|
405
|
+
docTitle: DOC_TITLE, title, eyebrow: GOAL_EYEBROW,
|
|
406
|
+
subtitle: '这段时间的运动消耗与每日目标的对照',
|
|
407
|
+
content: windowStrip(v.start, v.end, v.days + ' 天')
|
|
408
|
+
+ pageBody(cards, goalCalibers(v, goalTotal), source, copy),
|
|
409
|
+
printable: true,
|
|
410
|
+
});
|
|
539
411
|
}
|
|
412
|
+
/* ── 身体两页已迁出(#353):体成分/围度整页文档原样迁入 `src/body/bodyDocs.ts`,本件只留运动页。 ── */
|
|
540
413
|
//# sourceMappingURL=sportDocs.js.map
|