prographs 0.12.0 → 0.13.0
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/CHANGELOG.md +9 -1
- package/README.md +6 -4
- package/dist/AutoGraph-PDPEAIXL.cjs +145 -0
- package/dist/GraphType.js +19 -0
- package/dist/autograph/chartIndex.js +521 -0
- package/dist/autograph/chartModules.js +2 -1
- package/dist/autograph/index.cjs +98 -93
- package/dist/catalog-DI4XZ46L.cjs +142 -0
- package/dist/catalog.js +2 -1
- package/dist/charts/biologycharts/BiologySamples.js +59 -0
- package/dist/charts/biologycharts/PunnettSquare.js +342 -0
- package/dist/charts/biologycharts/biologyEnums.js +22 -1
- package/dist/charts/biologycharts/index.js +5 -3
- package/dist/charts/doecharts/DoeSamples.js +78 -0
- package/dist/charts/doecharts/SipocDiagram.js +453 -0
- package/dist/charts/doecharts/index.js +4 -2
- package/dist/charts/fieldcharts/SpeciesAccumulationCurve.js +350 -0
- package/dist/charts/fieldcharts/fieldEnums.js +8 -1
- package/dist/charts/fieldcharts/index.js +5 -3
- package/dist/charts/signals/AntennaPatternChart.js +492 -0
- package/dist/charts/signals/SignalSamples.js +17 -0
- package/dist/charts/signals/index.js +5 -3
- package/dist/charts/softwarediagrams/ComponentDiagram.js +504 -0
- package/dist/charts/softwarediagrams/DeploymentDiagram.js +419 -0
- package/dist/charts/softwarediagrams/SoftwareSamples.js +283 -1
- package/dist/charts/softwarediagrams/index.js +7 -3
- package/dist/charts/softwarediagrams/softwareEnums.js +45 -1
- package/dist/charts/sportscharts/PowerDurationCurve.js +301 -0
- package/dist/charts/sportscharts/SportsSamples.js +102 -0
- package/dist/charts/sportscharts/TrainingLoadChart.js +325 -0
- package/dist/charts/sportscharts/index.js +6 -2
- package/dist/charts/strategycharts/BassDiffusionChart.js +362 -0
- package/dist/charts/strategycharts/BassModel.js +96 -0
- package/dist/charts/strategycharts/BurnRunwayChart.js +284 -0
- package/dist/charts/strategycharts/CapTableChart.js +366 -0
- package/dist/charts/strategycharts/KanbanBoard.js +324 -0
- package/dist/charts/strategycharts/OkrTree.js +339 -0
- package/dist/charts/strategycharts/StrategyPane.js +27 -0
- package/dist/charts/strategycharts/StrategySamples.js +251 -0
- package/dist/charts/strategycharts/index.js +15 -3
- package/dist/charts/threefields/BsfcMap3DChart.js +231 -0
- package/dist/charts/threefields/CompressorMap3DChart.js +217 -0
- package/dist/charts/threefields/FieldGrid.js +50 -0
- package/dist/charts/threefields/LossLandscape3DChart.js +201 -0
- package/dist/charts/threefields/MapSheet.js +77 -0
- package/dist/charts/threefields/TerrainRoute3DChart.js +201 -0
- package/dist/charts/threefields/TerrainRouteMath.js +40 -0
- package/dist/charts/threefields/ThreeFieldBase.js +117 -0
- package/dist/charts/threefields/ThreeFieldsSamples.js +80 -0
- package/dist/charts/threefields/WaferMap3DChart.js +218 -0
- package/dist/charts/threefields/index.js +19 -0
- package/dist/charts/threesurfaces/index.js +2 -2
- package/dist/charts/tradingcharts/KeltnerChannelChart.js +171 -0
- package/dist/charts/tradingcharts/TradingMath.js +20 -0
- package/dist/charts/tradingcharts/index.js +4 -2
- package/dist/{chunk-ZL6XDXMK.cjs → chunk-26PSLEP4.cjs} +8 -8
- package/dist/{chunk-W3US6EFP.cjs → chunk-2BO5DZUP.cjs} +12 -12
- package/dist/{chunk-5DP7OUSE.cjs → chunk-2GG5YYSC.cjs} +6 -6
- package/dist/{chunk-7FG4JSVO.cjs → chunk-2GL2VNJU.cjs} +253 -33
- package/dist/{chunk-LCWMRCLF.cjs → chunk-2PYOI7OY.cjs} +21 -21
- package/dist/{chunk-JFWJAEBD.cjs → chunk-3U4MCSKI.cjs} +4 -4
- package/dist/{chunk-CUPLHZRR.cjs → chunk-3ZMM3FSK.cjs} +4 -4
- package/dist/{chunk-L2AV62DP.cjs → chunk-4767WQJ7.cjs} +6 -6
- package/dist/{chunk-DA2EYIIP.cjs → chunk-4E7FSSBF.cjs} +1210 -168
- package/dist/{chunk-VS5LQEZB.cjs → chunk-526STI2S.cjs} +5 -5
- package/dist/{chunk-RXIMEK6C.cjs → chunk-55767YPI.cjs} +20 -20
- package/dist/{chunk-JXLSKIUV.cjs → chunk-5FBQOMMT.cjs} +26 -26
- package/dist/{chunk-27PZV5BR.cjs → chunk-5N4Z7MTS.cjs} +4 -4
- package/dist/{chunk-KEWCUIQA.cjs → chunk-5WEV6YWA.cjs} +22 -22
- package/dist/chunk-5XOVVC5X.cjs +3281 -0
- package/dist/{chunk-HK5J7Q2W.cjs → chunk-6HLXVWXU.cjs} +9 -9
- package/dist/{chunk-7JG47RW4.cjs → chunk-6LQT4WJ5.cjs} +25 -25
- package/dist/{chunk-OCVTI6X4.cjs → chunk-6YTWOUFD.cjs} +329 -36
- package/dist/{chunk-W7IQCAVN.cjs → chunk-7F6W6HKL.cjs} +11 -11
- package/dist/{chunk-F2DCJXDM.cjs → chunk-7L6KYU5A.cjs} +21 -21
- package/dist/{chunk-GTGR6LPR.cjs → chunk-A4GIN4FE.cjs} +17 -17
- package/dist/{chunk-B2CETSR6.cjs → chunk-A4US7SA7.cjs} +5 -5
- package/dist/{chunk-3DIF2YYW.cjs → chunk-AOXPBLPW.cjs} +10 -10
- package/dist/{chunk-7TTR4UF5.cjs → chunk-ATI45Z4M.cjs} +2 -2
- package/dist/{chunk-5BFCIX2V.cjs → chunk-CPPMO4IQ.cjs} +434 -148
- package/dist/{chunk-AYZZQ6AC.cjs → chunk-CZ5KGF6Q.cjs} +9 -9
- package/dist/{chunk-7THJ3ZBK.cjs → chunk-D4I35MCE.cjs} +2 -2
- package/dist/{chunk-MCPPFRLN.cjs → chunk-DCGAAN3Z.cjs} +2 -2
- package/dist/{chunk-VABL6CVX.cjs → chunk-DEY36N37.cjs} +21 -21
- package/dist/{chunk-RNCKGJCC.cjs → chunk-DXHXD3DK.cjs} +3 -3
- package/dist/{chunk-A56ZGMVZ.cjs → chunk-E7B45DBZ.cjs} +11 -11
- package/dist/{chunk-DOR6L4MT.cjs → chunk-EJC6EAC5.cjs} +18 -18
- package/dist/{chunk-UPGNM7MA.cjs → chunk-EULJOOMA.cjs} +11 -11
- package/dist/{chunk-G4AZL4GO.cjs → chunk-EYM6LEIF.cjs} +474 -70
- package/dist/{chunk-NJ4X6XGV.cjs → chunk-EZTYX2GH.cjs} +5 -5
- package/dist/chunk-FDD4UP73.cjs +521 -0
- package/dist/{chunk-WJ3VH2Q4.cjs → chunk-GEAIGM3J.cjs} +110 -615
- package/dist/{chunk-P3SBHF43.cjs → chunk-GRUYVXTS.cjs} +2 -2
- package/dist/{chunk-NX4Z5LMS.cjs → chunk-H3SZXND5.cjs} +5 -5
- package/dist/{chunk-EE4S4TOE.cjs → chunk-HS45TOFJ.cjs} +21 -21
- package/dist/chunk-INGOG6OV.cjs +899 -0
- package/dist/{chunk-UDKA6DGT.cjs → chunk-J3CDXZHF.cjs} +4 -4
- package/dist/{chunk-YO6G7TKI.cjs → chunk-JAU5ADEU.cjs} +11 -11
- package/dist/{chunk-22LBK4GA.cjs → chunk-JQEBSHX3.cjs} +4 -4
- package/dist/{chunk-RXX3U7VQ.cjs → chunk-KLXGLMFU.cjs} +10 -10
- package/dist/chunk-KVOX36J3.cjs +327 -0
- package/dist/chunk-L6BGNHFL.cjs +139 -0
- package/dist/{chunk-GMER35L3.cjs → chunk-L7TB7PU5.cjs} +20 -20
- package/dist/{chunk-AFXYNBL2.cjs → chunk-LBTRYEM2.cjs} +4 -4
- package/dist/{chunk-WYYCKIOD.cjs → chunk-LLULNJSP.cjs} +11 -11
- package/dist/{chunk-J27XOSLP.cjs → chunk-LSO46AFV.cjs} +8 -8
- package/dist/{chunk-5XJO45ES.cjs → chunk-LZ2KJ7ZX.cjs} +11 -11
- package/dist/chunk-M4IQ5LIZ.cjs +422 -0
- package/dist/{chunk-Y2KIUKJF.cjs → chunk-MPDHDKYZ.cjs} +11 -11
- package/dist/{chunk-4EMPKRZU.cjs → chunk-MRQ42ZJE.cjs} +3 -3
- package/dist/{chunk-EU5D2MF4.cjs → chunk-MYV4KZWP.cjs} +9 -9
- package/dist/{chunk-XD7KN4UN.cjs → chunk-MZXVLC24.cjs} +6 -6
- package/dist/{chunk-PPSONARU.cjs → chunk-NLBVDFIR.cjs} +41 -2
- package/dist/{chunk-L3PEGMGM.cjs → chunk-NY3TBZY4.cjs} +33 -33
- package/dist/{chunk-6YNYXXB6.cjs → chunk-OGVVSFAR.cjs} +3 -3
- package/dist/{chunk-MLV7QLB6.cjs → chunk-OMTQIQMN.cjs} +6 -6
- package/dist/{chunk-BEEOSNK7.cjs → chunk-PEJJ6TXJ.cjs} +15 -144
- package/dist/{chunk-SOKOWUF5.cjs → chunk-PPGWHIU7.cjs} +2 -2
- package/dist/{chunk-IELWOM2J.cjs → chunk-PPO6SDAN.cjs} +6 -6
- package/dist/{chunk-6JTZZCSL.cjs → chunk-PUMKX5F2.cjs} +3 -3
- package/dist/{chunk-RFOXFY2U.cjs → chunk-PXBYWCNB.cjs} +190 -799
- package/dist/{chunk-3BYXOISI.cjs → chunk-Q3HB3IX6.cjs} +4 -4
- package/dist/{chunk-RXCOVONX.cjs → chunk-RBMUOIXE.cjs} +289 -34
- package/dist/{chunk-MSBNHCSE.cjs → chunk-RJHGCUUD.cjs} +6 -6
- package/dist/{chunk-I6VG7F6Z.cjs → chunk-RSONDMYW.cjs} +708 -141
- package/dist/{chunk-GZDNPHMT.cjs → chunk-SHMPFCUE.cjs} +19 -19
- package/dist/{chunk-ZIBVCOW6.cjs → chunk-SN4FCXFC.cjs} +19 -19
- package/dist/{chunk-7KM52NMN.cjs → chunk-SN5T7WYO.cjs} +2 -2
- package/dist/{chunk-7MSZR65Z.cjs → chunk-SQJZGVDR.cjs} +7 -7
- package/dist/chunk-SYABFMD7.cjs +633 -0
- package/dist/{chunk-2RRFEYFH.cjs → chunk-TICB3MAC.cjs} +16 -16
- package/dist/{chunk-AOOKHUV5.cjs → chunk-U7Z7XYR2.cjs} +5 -5
- package/dist/{chunk-JEWQAXVG.cjs → chunk-UA2THQFV.cjs} +6 -6
- package/dist/{chunk-LHZPAHU3.cjs → chunk-VIK4L2YF.cjs} +112 -521
- package/dist/{chunk-4YWMAQ4J.cjs → chunk-VM2Y6BDY.cjs} +4 -4
- package/dist/{chunk-IRRKE2ZE.cjs → chunk-VMS3KWYI.cjs} +21 -21
- package/dist/{chunk-4SLARW6F.cjs → chunk-VU5NUD46.cjs} +17 -17
- package/dist/{chunk-XHY6TVYG.cjs → chunk-VV5CVOF7.cjs} +13 -13
- package/dist/{chunk-CCIBPGPZ.cjs → chunk-VYSAWPSS.cjs} +57 -57
- package/dist/{chunk-TTNEMQ2A.cjs → chunk-W7YRWEWQ.cjs} +22 -22
- package/dist/{chunk-C7MUOGEW.cjs → chunk-X7R5SY62.cjs} +6 -6
- package/dist/{chunk-ILR5KBMB.cjs → chunk-XOK3KTSS.cjs} +6 -6
- package/dist/{chunk-2CZM2I3T.cjs → chunk-XUIX45VU.cjs} +19 -19
- package/dist/{chunk-TGRMPS3A.cjs → chunk-XWH46PVJ.cjs} +165 -43
- package/dist/{chunk-WQYXXECR.cjs → chunk-Y5XVMK3K.cjs} +6 -6
- package/dist/{chunk-AK4TX2WG.cjs → chunk-YCNKEDTG.cjs} +13 -13
- package/dist/{chunk-PJJB24DU.cjs → chunk-YEF7SE3X.cjs} +20 -20
- package/dist/{chunk-RVLV4XW6.cjs → chunk-YMTVPMU3.cjs} +22 -22
- package/dist/data/index.cjs +2 -2
- package/dist/entries/autograph-lazy.cjs +2 -2
- package/dist/entries/charts/acoustictransport.cjs +3 -3
- package/dist/entries/charts/analysischarts.cjs +3 -3
- package/dist/entries/charts/astrocharts.cjs +3 -3
- package/dist/entries/charts/bars.cjs +3 -3
- package/dist/entries/charts/bayesiancharts.cjs +3 -3
- package/dist/entries/charts/biocharts.cjs +3 -3
- package/dist/entries/charts/biologycharts.cjs +11 -3
- package/dist/entries/charts/biologycharts.d.ts +1 -1
- package/dist/entries/charts/biologycharts.js +3 -2
- package/dist/entries/charts/business.cjs +3 -3
- package/dist/entries/charts/carecharts.cjs +3 -3
- package/dist/entries/charts/chemistrycharts.cjs +3 -3
- package/dist/entries/charts/civicscharts.cjs +3 -3
- package/dist/entries/charts/clinicalcharts.cjs +3 -3
- package/dist/entries/charts/comparison.cjs +3 -3
- package/dist/entries/charts/demography.cjs +3 -3
- package/dist/entries/charts/density.cjs +3 -3
- package/dist/entries/charts/diagrams.cjs +3 -3
- package/dist/entries/charts/distribution.cjs +3 -3
- package/dist/entries/charts/doecharts.cjs +13 -3
- package/dist/entries/charts/doecharts.d.ts +1 -1
- package/dist/entries/charts/doecharts.js +2 -1
- package/dist/entries/charts/earthscience.cjs +3 -3
- package/dist/entries/charts/economicscharts.cjs +3 -3
- package/dist/entries/charts/energycharts.cjs +3 -3
- package/dist/entries/charts/engineering.cjs +3 -3
- package/dist/entries/charts/fieldcharts.cjs +7 -3
- package/dist/entries/charts/fieldcharts.d.ts +1 -1
- package/dist/entries/charts/fieldcharts.js +3 -2
- package/dist/entries/charts/financial.cjs +3 -3
- package/dist/entries/charts/flow.cjs +3 -3
- package/dist/entries/charts/frameworks.cjs +3 -3
- package/dist/entries/charts/genomics.cjs +3 -3
- package/dist/entries/charts/geoflows.cjs +3 -3
- package/dist/entries/charts/geomaps.cjs +3 -3
- package/dist/entries/charts/geosciencecharts.cjs +3 -3
- package/dist/entries/charts/hierarchy.cjs +3 -3
- package/dist/entries/charts/indicators.cjs +3 -3
- package/dist/entries/charts/inferencecharts.cjs +3 -3
- package/dist/entries/charts/layoutcharts.cjs +3 -3
- package/dist/entries/charts/lifescience.cjs +4 -4
- package/dist/entries/charts/linesareas.cjs +3 -3
- package/dist/entries/charts/logisticscharts.cjs +3 -3
- package/dist/entries/charts/machinecharts.cjs +7 -3
- package/dist/entries/charts/machinecharts.d.ts +1 -1
- package/dist/entries/charts/machinecharts.js +2 -1
- package/dist/entries/charts/massive.cjs +3 -3
- package/dist/entries/charts/mathematical.cjs +3 -3
- package/dist/entries/charts/matrix.cjs +3 -3
- package/dist/entries/charts/medicalcharts.cjs +4 -4
- package/dist/entries/charts/mlcharts.cjs +4 -4
- package/dist/entries/charts/modelcharts.cjs +6 -5
- package/dist/entries/charts/multivariate.cjs +3 -3
- package/dist/entries/charts/musiccharts.cjs +3 -3
- package/dist/entries/charts/network.cjs +3 -3
- package/dist/entries/charts/physicscharts.cjs +3 -3
- package/dist/entries/charts/pictorial.cjs +4 -4
- package/dist/entries/charts/portfoliocharts.cjs +3 -3
- package/dist/entries/charts/productcharts.cjs +3 -3
- package/dist/entries/charts/proportion.cjs +3 -3
- package/dist/entries/charts/qualitycharts.cjs +3 -3
- package/dist/entries/charts/radial.cjs +3 -3
- package/dist/entries/charts/reliabilitycharts.cjs +5 -3
- package/dist/entries/charts/scatter.cjs +3 -3
- package/dist/entries/charts/scientific.cjs +3 -3
- package/dist/entries/charts/seriescharts.cjs +3 -3
- package/dist/entries/charts/signals.cjs +7 -3
- package/dist/entries/charts/signals.d.ts +1 -1
- package/dist/entries/charts/signals.js +2 -1
- package/dist/entries/charts/softwarediagrams.cjs +21 -3
- package/dist/entries/charts/softwarediagrams.d.ts +1 -1
- package/dist/entries/charts/softwarediagrams.js +4 -2
- package/dist/entries/charts/sportscharts.cjs +13 -3
- package/dist/entries/charts/sportscharts.d.ts +1 -1
- package/dist/entries/charts/sportscharts.js +3 -1
- package/dist/entries/charts/statistics.cjs +6 -6
- package/dist/entries/charts/strategycharts.cjs +30 -3
- package/dist/entries/charts/strategycharts.d.ts +1 -1
- package/dist/entries/charts/strategycharts.js +6 -1
- package/dist/entries/charts/structure.cjs +3 -3
- package/dist/entries/charts/surveycharts.cjs +3 -3
- package/dist/entries/charts/systemscharts.cjs +3 -3
- package/dist/entries/charts/textcharts.cjs +5 -5
- package/dist/entries/charts/thematicmaps.cjs +4 -4
- package/dist/entries/charts/threebars.cjs +3 -3
- package/dist/entries/charts/threefields.cjs +53 -0
- package/dist/entries/charts/threefields.d.ts +1 -0
- package/dist/entries/charts/threefields.js +6 -0
- package/dist/entries/charts/threeglobe.cjs +3 -3
- package/dist/entries/charts/threenetwork.cjs +3 -3
- package/dist/entries/charts/threestrata.cjs +3 -3
- package/dist/entries/charts/threesurfaces.cjs +7 -3
- package/dist/entries/charts/threesurfaces.d.ts +1 -1
- package/dist/entries/charts/threesurfaces.js +2 -1
- package/dist/entries/charts/threevolume.cjs +4 -4
- package/dist/entries/charts/timeline.cjs +3 -3
- package/dist/entries/charts/tracecharts.cjs +3 -3
- package/dist/entries/charts/trackscharts.cjs +3 -3
- package/dist/entries/charts/tradingcharts.cjs +6 -4
- package/dist/entries/charts/tradingcharts.d.ts +1 -1
- package/dist/entries/charts/tradingcharts.js +2 -1
- package/dist/entries/three.cjs +60 -20
- package/dist/entries/three.d.ts +1 -1
- package/dist/entries/three.js +7 -1
- package/dist/index.cjs +258 -97
- package/dist/index.d.cts +1953 -10
- package/dist/index.d.ts +1953 -10
- package/dist/index.js +26 -5
- package/dist/page/index.cjs +2 -2
- package/dist/react/components.js +58 -1
- package/dist/react/index.cjs +135 -92
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.js +2 -2
- package/package.json +1 -1
- package/dist/AutoGraph-XLBJQDRB.cjs +0 -140
- package/dist/catalog-O7XGDD2H.cjs +0 -137
- package/dist/chunk-77K2HTRC.cjs +0 -3220
- package/dist/chunk-XEK47TVD.cjs +0 -323
- /package/dist/{chunk-UMEKIIHJ.cjs → chunk-LNWTC72Y.cjs} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11; var _class12;
|
|
2
2
|
|
|
3
3
|
var _chunkITLUWFSUcjs = require('./chunk-ITLUWFSU.cjs');
|
|
4
4
|
|
|
@@ -20,7 +20,7 @@ var _chunkAL4XQZH6cjs = require('./chunk-AL4XQZH6.cjs');
|
|
|
20
20
|
var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
var
|
|
23
|
+
var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
|
|
24
24
|
|
|
25
25
|
// src/charts/doecharts/DoeRows.ts
|
|
26
26
|
var DoeRows = class _DoeRows {
|
|
@@ -176,9 +176,9 @@ var DoeMath = class _DoeMath {
|
|
|
176
176
|
const key = `${d.part}\0${d.operator}`;
|
|
177
177
|
(_nullishCoalesce(cells.get(key), () => ( cells.set(key, []).get(key)))).push(d.value);
|
|
178
178
|
}
|
|
179
|
-
const p = parts.length, o = operators.length,
|
|
179
|
+
const p = parts.length, o = operators.length, n2 = readings.length, errorDf = n2 - cells.size;
|
|
180
180
|
if (p < 2 || !o || errorDf < 1) return null;
|
|
181
|
-
const grand = _d3.mean.call(void 0, readings, (d) => d.value), trials =
|
|
181
|
+
const grand = _d3.mean.call(void 0, readings, (d) => d.value), trials = n2 / (p * o);
|
|
182
182
|
const spread = (keys, pick) => keys.reduce((sum, key) => sum + (_d3.mean.call(void 0, readings.filter((d) => pick(d) === key), (d) => d.value) - grand) ** 2, 0);
|
|
183
183
|
const ssPart = o * trials * spread(parts, (d) => d.part), ssOperator = p * trials * spread(operators, (d) => d.operator);
|
|
184
184
|
let ssCells = 0, ssError = 0;
|
|
@@ -284,35 +284,52 @@ var WORK = [
|
|
|
284
284
|
["Station 4", [["Leak test", 20, "Value added"], ["Wait for tester", 14, "Waste"], ["Label unit", 8, "Value added"], ["Search for labels", 10, "Waste"], ["Scan serial", 5, "Necessary"], ["Pack unit", 11, "Value added"]]],
|
|
285
285
|
["Station 5", [["Stack carton", 9, "Necessary"], ["Strap pallet", 15, "Value added"], ["Move pallet", 13, "Necessary"]]]
|
|
286
286
|
];
|
|
287
|
+
var SIPOC_SUPPLIERS = ["Fabrication cell", "Powder supplier", "Planning office", "Site services"];
|
|
288
|
+
var SIPOC_INPUTS = [
|
|
289
|
+
["Works order", "Planning office"],
|
|
290
|
+
["Cut brackets", "Fabrication cell"],
|
|
291
|
+
["Coating powder", "Powder supplier"],
|
|
292
|
+
["Racks and hooks", "Fabrication cell"],
|
|
293
|
+
["Gas and compressed air", "Site services"]
|
|
294
|
+
];
|
|
295
|
+
var SIPOC_STEPS = ["Rack the parts", "Degrease and rinse", "Apply powder", "Cure in oven", "Inspect finish", "Pack and label"];
|
|
296
|
+
var SIPOC_OUTPUTS = [
|
|
297
|
+
["Coated brackets", "Assembly line"],
|
|
298
|
+
["Coated brackets", "Spares store"],
|
|
299
|
+
["Inspection record", "Quality office"],
|
|
300
|
+
["Closed works order", "Planning office"],
|
|
301
|
+
["Scrap report", "Quality office"]
|
|
302
|
+
];
|
|
303
|
+
var SIPOC_CUSTOMERS = ["Planning office", "Assembly line", "Quality office", "Spares store"];
|
|
287
304
|
var DoeSamples = class {
|
|
288
305
|
/** A replicated 3 x 2 x 3 factorial on a moulding press: `{ temperature, pressure, resin, strength }`, 36 runs. */
|
|
289
306
|
static factorial(seed) {
|
|
290
|
-
const { n } =
|
|
307
|
+
const { n: n2 } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
291
308
|
const heat = [-3.2, 0.4, 2.8], squeeze = [-1.6, 1.6], grade = turn([1.9, -2.4, 0.5], seed);
|
|
292
|
-
return [180, 200, 220].flatMap((temperature, t) => [60, 90].flatMap((pressure, p) => ["Grade A", "Grade B", "Grade C"].flatMap((resin, r) => [0, 1].map(() => ({ temperature, pressure, resin, strength: round(48 + heat[t] + squeeze[p] + grade[r] + (t === 2 && p === 1 ? 1.4 : 0) +
|
|
309
|
+
return [180, 200, 220].flatMap((temperature, t) => [60, 90].flatMap((pressure, p) => ["Grade A", "Grade B", "Grade C"].flatMap((resin, r) => [0, 1].map(() => ({ temperature, pressure, resin, strength: round(48 + heat[t] + squeeze[p] + grade[r] + (t === 2 && p === 1 ? 1.4 : 0) + n2() * 1.1) })))));
|
|
293
310
|
}
|
|
294
311
|
/** A 2^3 factorial run twice on a reactor: `{ temperature, pressure, catalyst, yield }`, 16 runs. */
|
|
295
312
|
static twoLevel(seed) {
|
|
296
|
-
const { n } =
|
|
313
|
+
const { n: n2 } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
297
314
|
const boost = 4 + (seed - 1) % 3 * 2;
|
|
298
|
-
return [160, 180].flatMap((temperature, t) => [2, 4].flatMap((pressure, p) => ["A", "B"].flatMap((catalyst, c) => [0, 1].map(() => ({ temperature, pressure, catalyst, yield: round(62 + 11 * t + 3 * p - 2 * c + boost * t * c +
|
|
315
|
+
return [160, 180].flatMap((temperature, t) => [2, 4].flatMap((pressure, p) => ["A", "B"].flatMap((catalyst, c) => [0, 1].map(() => ({ temperature, pressure, catalyst, yield: round(62 + 11 * t + 3 * p - 2 * c + boost * t * c + n2() * 1.2) })))));
|
|
299
316
|
}
|
|
300
317
|
/** Effect estimates of an unreplicated 2^4 factorial: `{ term, effect }`, 15 terms from `A` to `ABCD`, three or four of them real. */
|
|
301
318
|
static effects(seed) {
|
|
302
|
-
const { n } =
|
|
319
|
+
const { n: n2 } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
303
320
|
const levels = [-1, 1];
|
|
304
321
|
const runs = levels.flatMap((A) => levels.flatMap((B) => levels.flatMap((C) => levels.map((D) => ({
|
|
305
322
|
A,
|
|
306
323
|
B,
|
|
307
324
|
C,
|
|
308
325
|
D,
|
|
309
|
-
response: 70 + 10.5 * A + 1.2 * B + 6.8 * C + (seed % 2 ? 3.6 : -3.6) * D - 8.6 * A * C +
|
|
326
|
+
response: 70 + 10.5 * A + 1.2 * B + 6.8 * C + (seed % 2 ? 3.6 : -3.6) * D - 8.6 * A * C + n2() * 1.6
|
|
310
327
|
})))));
|
|
311
328
|
return DoeMath.effects(runs, ["A", "B", "C", "D"], "response", "").map(({ term, effect }) => ({ term, effect: round(effect, 2) }));
|
|
312
329
|
}
|
|
313
330
|
/** Four latch concepts rated against the current design: `{ criterion, weight, option, rating }`, ratings -1, 0 or 1. */
|
|
314
331
|
static concepts(seed) {
|
|
315
|
-
const { u } =
|
|
332
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
316
333
|
return turn(CRITERIA, seed).flatMap(([criterion, weight]) => [
|
|
317
334
|
{ criterion, weight, option: "Current latch", rating: 0 },
|
|
318
335
|
...CONCEPTS.map(([option, lean]) => {
|
|
@@ -326,7 +343,7 @@ var DoeSamples = class {
|
|
|
326
343
|
* with strength 9, 3 or 1; roof rows are `{ characteristic, other, correlation }` with `++`, `+`, `-` or `--`.
|
|
327
344
|
*/
|
|
328
345
|
static house(seed) {
|
|
329
|
-
const { u } =
|
|
346
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
330
347
|
const importance = NEEDS.map(([, base]) => Math.max(1, Math.min(5, base + (u() < 0.3 ? -1 : 0))));
|
|
331
348
|
const relations = LINKS.filter(([, , strength]) => strength > 1 || u() < 0.8).map(([need, measure, strength]) => ({
|
|
332
349
|
need: NEEDS[need][0],
|
|
@@ -344,44 +361,60 @@ var DoeSamples = class {
|
|
|
344
361
|
}
|
|
345
362
|
/** A machine shop floor in metres with one shift of walking: nodes `{ id, x, y }`, links `{ source, target, value }` in trips. */
|
|
346
363
|
static floor(seed) {
|
|
347
|
-
const { u } =
|
|
364
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
348
365
|
return {
|
|
349
|
-
nodes: STATIONS.map(([
|
|
366
|
+
nodes: STATIONS.map(([id2, x, y]) => ({ id: id2, x, y })),
|
|
350
367
|
links: WALKS.map(([from, to, trips]) => ({ source: STATIONS[from][0], target: STATIONS[to][0], value: Math.max(1, trips + Math.round((u() - 0.5) * 4)) }))
|
|
351
368
|
};
|
|
352
369
|
}
|
|
353
370
|
/** Work elements timed at five stations of an assembly line: `{ operator, element, seconds, kind, takt }`, takt time 60 s. */
|
|
354
371
|
static workBalance(seed) {
|
|
355
|
-
const { u } =
|
|
372
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
356
373
|
return WORK.flatMap(([operator, elements]) => elements.map(([element, seconds, kind]) => ({ operator, element, seconds: Math.max(2, Math.round(seconds * (0.88 + u() * 0.24))), kind, takt: 60 })));
|
|
357
374
|
}
|
|
358
375
|
/** Ten two-week sprints of one team: `{ sprint, committed, completed }` in story points. */
|
|
359
376
|
static sprints(seed) {
|
|
360
|
-
const { u, n } =
|
|
377
|
+
const { u, n: n2 } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
361
378
|
let pace = 30 + u() * 6;
|
|
362
379
|
return Array.from({ length: 10 }, (_, i) => {
|
|
363
|
-
pace += 0.9 +
|
|
380
|
+
pace += 0.9 + n2() * 1.4;
|
|
364
381
|
const committed = Math.round(pace + 3 + u() * 5), dip = i === 3 || i === 7 ? 0.72 : 0.9 + u() * 0.14;
|
|
365
382
|
return { sprint: `Sprint ${i + 11}`, committed, completed: Math.min(committed + 2, Math.round(committed * dip)) };
|
|
366
383
|
});
|
|
367
384
|
}
|
|
368
385
|
/** A crossed gage study of a bore diameter: ten parts, three operators, three trials. `{ part, operator, trial, value }` in mm. */
|
|
369
386
|
static gageStudy(seed) {
|
|
370
|
-
const { n } =
|
|
387
|
+
const { n: n2 } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
371
388
|
const bias = turn([4e-3, -3e-3, 1e-3], seed);
|
|
372
389
|
return Array.from({ length: 10 }, (_, p) => {
|
|
373
|
-
const size = 12 +
|
|
374
|
-
return ["Operator A", "Operator B", "Operator C"].flatMap((operator, o) => [1, 2, 3].map((trial) => ({ part: `P${p + 1}`, operator, trial, value: round(size + bias[o] +
|
|
390
|
+
const size = 12 + n2() * 0.02;
|
|
391
|
+
return ["Operator A", "Operator B", "Operator C"].flatMap((operator, o) => [1, 2, 3].map((trial) => ({ part: `P${p + 1}`, operator, trial, value: round(size + bias[o] + n2() * 4e-3, 3) })));
|
|
375
392
|
}).flat();
|
|
376
393
|
}
|
|
377
394
|
/** Shaft diameters in 25 subgroups of five, drifting a little between subgroups: `{ subgroup, value, lsl, usl, target }` in mm. */
|
|
378
395
|
static shafts(seed) {
|
|
379
|
-
const { n } =
|
|
396
|
+
const { n: n2 } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
380
397
|
return Array.from({ length: 25 }, (_, g) => {
|
|
381
|
-
const shift = 6e-3 +
|
|
382
|
-
return Array.from({ length: 5 }, () => ({ subgroup: g + 1, value: round(25 + shift +
|
|
398
|
+
const shift = 6e-3 + n2() * 6e-3;
|
|
399
|
+
return Array.from({ length: 5 }, () => ({ subgroup: g + 1, value: round(25 + shift + n2() * 0.011, 3), lsl: 24.96, usl: 25.04, target: 25 }));
|
|
383
400
|
}).flat();
|
|
384
401
|
}
|
|
402
|
+
/**
|
|
403
|
+
* A SIPOC of a powder coating line: `{ stage, item, partner }`. An input names its supplier and an output its customer;
|
|
404
|
+
* an output with two customers takes two rows. The seed turns the order of suppliers and customers and adds a step or leaves one out.
|
|
405
|
+
*/
|
|
406
|
+
static sipoc(seed) {
|
|
407
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
408
|
+
const extra = ["Mask the threads", "Pre-heat the parts", ""][Math.floor(u() * 3)];
|
|
409
|
+
const steps = extra ? [...SIPOC_STEPS.slice(0, 2), extra, ...SIPOC_STEPS.slice(2)] : SIPOC_STEPS;
|
|
410
|
+
return [
|
|
411
|
+
...turn(SIPOC_SUPPLIERS, seed).map((item) => ({ stage: "Supplier", item, partner: null })),
|
|
412
|
+
...SIPOC_INPUTS.map(([item, partner]) => ({ stage: "Input", item, partner })),
|
|
413
|
+
...steps.map((item) => ({ stage: "Process", item, partner: null })),
|
|
414
|
+
...SIPOC_OUTPUTS.map(([item, partner]) => ({ stage: "Output", item, partner })),
|
|
415
|
+
...turn(SIPOC_CUSTOMERS, seed).map((item) => ({ stage: "Customer", item, partner: null }))
|
|
416
|
+
];
|
|
417
|
+
}
|
|
385
418
|
};
|
|
386
419
|
|
|
387
420
|
// src/charts/doecharts/AffinityDiagram.ts
|
|
@@ -1772,6 +1805,260 @@ var PughMatrix = (_class8 = class _PughMatrix extends _chunkEEF5WRRZcjs.Chart2D
|
|
|
1772
1805
|
}
|
|
1773
1806
|
}, _class8.__initStatic8(), _class8);
|
|
1774
1807
|
|
|
1808
|
+
// src/charts/doecharts/SipocDiagram.ts
|
|
1809
|
+
|
|
1810
|
+
var SipocLayout = /* @__PURE__ */ ((SipocLayout2) => {
|
|
1811
|
+
SipocLayout2["Columns"] = "columns";
|
|
1812
|
+
SipocLayout2["Rows"] = "rows";
|
|
1813
|
+
return SipocLayout2;
|
|
1814
|
+
})(SipocLayout || {});
|
|
1815
|
+
var SipocLink = /* @__PURE__ */ ((SipocLink2) => {
|
|
1816
|
+
SipocLink2["Curved"] = "curved";
|
|
1817
|
+
SipocLink2["Straight"] = "straight";
|
|
1818
|
+
SipocLink2["None"] = "none";
|
|
1819
|
+
return SipocLink2;
|
|
1820
|
+
})(SipocLink || {});
|
|
1821
|
+
var SipocStep = /* @__PURE__ */ ((SipocStep2) => {
|
|
1822
|
+
SipocStep2["Chevron"] = "chevron";
|
|
1823
|
+
SipocStep2["Box"] = "box";
|
|
1824
|
+
return SipocStep2;
|
|
1825
|
+
})(SipocStep || {});
|
|
1826
|
+
var SipocOrder = /* @__PURE__ */ ((SipocOrder2) => {
|
|
1827
|
+
SipocOrder2["Data"] = "data-order";
|
|
1828
|
+
SipocOrder2["Linked"] = "linked";
|
|
1829
|
+
return SipocOrder2;
|
|
1830
|
+
})(SipocOrder || {});
|
|
1831
|
+
var STAGES = ["Suppliers", "Inputs", "Process", "Outputs", "Customers"];
|
|
1832
|
+
var PARTNERS = ["Supplies", "From", "", "To", "Receives"];
|
|
1833
|
+
var PROCESS = 2;
|
|
1834
|
+
var HEAD2 = 24;
|
|
1835
|
+
var NOTE3 = 10.5;
|
|
1836
|
+
var LEAD2 = 13;
|
|
1837
|
+
var LEGIBLE = 24;
|
|
1838
|
+
var MIN_STEP = 16;
|
|
1839
|
+
var MIN_STEP_WIDE = 24;
|
|
1840
|
+
var MIN_CELL = 50;
|
|
1841
|
+
var HEAVY = 1.06;
|
|
1842
|
+
var MAX_CELL = 150;
|
|
1843
|
+
var MORE = 76;
|
|
1844
|
+
var n = (value) => +value.toFixed(2);
|
|
1845
|
+
var id = (stage, name) => `${stage}\0${name}`;
|
|
1846
|
+
var rect = (x, y, width, height, r = 4) => {
|
|
1847
|
+
const w = Math.max(0, width), h = Math.max(0, height), c = Math.min(r, w / 2, h / 2);
|
|
1848
|
+
return `M${n(x + c)},${n(y)}h${n(w - 2 * c)}a${n(c)},${n(c)} 0 0 1 ${n(c)},${n(c)}v${n(h - 2 * c)}a${n(c)},${n(c)} 0 0 1 ${n(-c)},${n(c)}h${n(-(w - 2 * c))}a${n(c)},${n(c)} 0 0 1 ${n(-c)},${n(-c)}v${n(-(h - 2 * c))}a${n(c)},${n(c)} 0 0 1 ${n(c)},${n(-c)}Z`;
|
|
1849
|
+
};
|
|
1850
|
+
var polygon = (points) => `M${points.map(([x, y]) => `${n(x)},${n(y)}`).join("L")}Z`;
|
|
1851
|
+
var SipocDiagram = (_class9 = class _SipocDiagram extends _chunkEEF5WRRZcjs.Chart2D {
|
|
1852
|
+
static __initStatic9() {this.meta = {
|
|
1853
|
+
id: "sipoc-diagram",
|
|
1854
|
+
name: "SIPOC diagram",
|
|
1855
|
+
family: "flow" /* Flow */,
|
|
1856
|
+
dimension: 2 /* Two */,
|
|
1857
|
+
shape: "table" /* Table */,
|
|
1858
|
+
description: "Sets out suppliers, inputs, process steps, outputs and customers in five columns, with the process as a chain of steps and links from suppliers to inputs and outputs to customers. The sample coating line is invented.",
|
|
1859
|
+
tags: ["sipoc", "six sigma", "dmaic", "define", "process scope", "suppliers", "customers", "lean"],
|
|
1860
|
+
sample: (seed) => DoeSamples.sipoc(seed),
|
|
1861
|
+
variants: {
|
|
1862
|
+
layout: Object.values(SipocLayout),
|
|
1863
|
+
link: Object.values(SipocLink),
|
|
1864
|
+
step: Object.values(SipocStep),
|
|
1865
|
+
order: Object.values(SipocOrder)
|
|
1866
|
+
},
|
|
1867
|
+
valid: ({ link, order }) => link !== "none" /* None */ || order === "data-order" /* Data */
|
|
1868
|
+
}}
|
|
1869
|
+
defaults() {
|
|
1870
|
+
return { stage: "stage", item: "item", partner: "partner", layout: "columns" /* Columns */, link: "curved" /* Curved */, step: "chevron" /* Chevron */, order: "data-order" /* Data */ };
|
|
1871
|
+
}
|
|
1872
|
+
plotMargin() {
|
|
1873
|
+
return { top: 8, right: 16, bottom: 10, left: 16 };
|
|
1874
|
+
}
|
|
1875
|
+
legendItems() {
|
|
1876
|
+
return [];
|
|
1877
|
+
}
|
|
1878
|
+
/** Which of the five stages a cell names, 0 for suppliers to 4 for customers, or null: its name, plural or not, or its initial. `Step` reads as process. */
|
|
1879
|
+
static stage(cell) {
|
|
1880
|
+
const text = DoeRows.name(cell).toLowerCase();
|
|
1881
|
+
if (text.startsWith("step")) return PROCESS;
|
|
1882
|
+
const at = text.length === 1 ? "sipoc".indexOf(text) : ["sup", "in", "pro", "out", "cus"].findIndex((start) => text.startsWith(start));
|
|
1883
|
+
return at < 0 ? null : at;
|
|
1884
|
+
}
|
|
1885
|
+
/** The items of each stage in drawn order, and the links between suppliers and inputs and between outputs and customers. */
|
|
1886
|
+
get model() {
|
|
1887
|
+
const { stage, item, partner, order } = this.options;
|
|
1888
|
+
const columns = STAGES.map(() => []), ties = [];
|
|
1889
|
+
const rows = DoeRows.list(this.options.data).flatMap((row) => {
|
|
1890
|
+
const at = _SipocDiagram.stage(row[stage]), name = DoeRows.name(row[item]);
|
|
1891
|
+
return at === null || !name ? [] : [{ at, name, other: DoeRows.name(row[partner]) }];
|
|
1892
|
+
});
|
|
1893
|
+
const add = (at, name) => {
|
|
1894
|
+
if (!columns[at].includes(name)) columns[at].push(name);
|
|
1895
|
+
};
|
|
1896
|
+
for (const { at, name } of rows) add(at, name);
|
|
1897
|
+
for (const { at, name, other } of rows) {
|
|
1898
|
+
if (!other || at === PROCESS) continue;
|
|
1899
|
+
const side = at < PROCESS ? 0 : 3, [from, to] = at === side ? [name, other] : [other, name];
|
|
1900
|
+
add(side, from);
|
|
1901
|
+
add(side + 1, to);
|
|
1902
|
+
if (!ties.some((tie) => tie.side === side && tie.from === from && tie.to === to)) ties.push({ side, from, to });
|
|
1903
|
+
}
|
|
1904
|
+
if (order === "linked" /* Linked */) for (const side of [0, 3]) {
|
|
1905
|
+
const from = columns[side], to = columns[side + 1];
|
|
1906
|
+
const score = new Map(to.map((name, i) => [name, _nullishCoalesce(_d3.mean.call(void 0, ties.filter((tie) => tie.side === side && tie.to === name), (tie) => from.indexOf(tie.from)), () => ( (i + 0.5) * from.length / to.length - 0.5))]));
|
|
1907
|
+
to.sort((a, b) => score.get(a) - score.get(b));
|
|
1908
|
+
}
|
|
1909
|
+
return { columns, ties };
|
|
1910
|
+
}
|
|
1911
|
+
/** How many links cross another on the same seam, given the order of the items on both sides. */
|
|
1912
|
+
static crossings({ columns, ties }) {
|
|
1913
|
+
const ends = ties.map((tie) => [tie.side, columns[tie.side].indexOf(tie.from), columns[tie.side + 1].indexOf(tie.to)]);
|
|
1914
|
+
return ends.reduce((total, a, i) => total + ends.slice(i + 1).filter((b) => a[0] === b[0] && (a[1] - b[1]) * (a[2] - b[2]) < 0).length, 0);
|
|
1915
|
+
}
|
|
1916
|
+
/**
|
|
1917
|
+
* The wrapped lines of each card in a stack `room` px tall, three lines at most. When the stack is too tall the
|
|
1918
|
+
* tallest cards give up lines first; when it still is, the cards that fit stay and leave room for a count of the rest.
|
|
1919
|
+
*/
|
|
1920
|
+
static stack(items, room, wrap) {
|
|
1921
|
+
const cut = (text, most2) => wrap < LEGIBLE ? [] : _chunkQ5A2TY2Acjs.FrameworkText.clamp(_chunkQ5A2TY2Acjs.FrameworkText.wrap(text, wrap, NOTE3), most2, wrap, NOTE3);
|
|
1922
|
+
const most = items.map((text) => Math.max(1, cut(text, 3).length)), tall = (lines) => lines * LEAD2 + 9;
|
|
1923
|
+
const total = () => most.reduce((sum, lines) => sum + tall(lines) + 5, -5);
|
|
1924
|
+
while (total() > room && most.some((lines) => lines > 1)) {
|
|
1925
|
+
const at = most.lastIndexOf(Math.max(...most));
|
|
1926
|
+
most[at] = most[at] - 1;
|
|
1927
|
+
}
|
|
1928
|
+
const all = total() <= room;
|
|
1929
|
+
let used = 0, shown = 0;
|
|
1930
|
+
for (const lines of most) {
|
|
1931
|
+
if (!all && used + tall(lines) > room - 14) break;
|
|
1932
|
+
used += tall(lines) + 5;
|
|
1933
|
+
shown++;
|
|
1934
|
+
}
|
|
1935
|
+
return items.slice(0, shown).map((text, i) => cut(text, most[i]));
|
|
1936
|
+
}
|
|
1937
|
+
/** The size of the five columns or bands along `length`, and where each starts: the two seams that links cross get `seam` px, the other two gaps `plain`. */
|
|
1938
|
+
static spans(length, seam, plain) {
|
|
1939
|
+
const size = Math.max(4, (length - 2 * seam - 2 * plain) / 5), gaps = [seam, plain, plain, seam];
|
|
1940
|
+
return { size, starts: STAGES.map((_, i) => i * size + gaps.slice(0, i).reduce((sum, gap) => sum + gap, 0)) };
|
|
1941
|
+
}
|
|
1942
|
+
/** A step's name on up to `most` lines, or its number where the name has no room. */
|
|
1943
|
+
static #step(text, index2, wrap, most) {
|
|
1944
|
+
return wrap < 30 ? [`${index2 + 1}`] : _chunkQ5A2TY2Acjs.FrameworkText.clamp(_chunkQ5A2TY2Acjs.FrameworkText.wrap(text, wrap, NOTE3), Math.max(1, most), wrap, NOTE3);
|
|
1945
|
+
}
|
|
1946
|
+
#rows(model, stage, name) {
|
|
1947
|
+
const partners = model.ties.filter((tie) => tie.side === (stage < PROCESS ? 0 : 3)).flatMap((tie) => stage === tie.side && tie.from === name ? [tie.to] : stage === tie.side + 1 && tie.to === name ? [tie.from] : []);
|
|
1948
|
+
if (stage === PROCESS) return [["Step", `${model.columns[PROCESS].indexOf(name) + 1} of ${model.columns[PROCESS].length}`]];
|
|
1949
|
+
return [["Column", STAGES[stage]], ...partners.length ? [[PARTNERS[stage], partners.join(", ")]] : []];
|
|
1950
|
+
}
|
|
1951
|
+
/** A stage's header. Every header prints its initial when one of the five names has no room, so they read S, I, P, O, C. */
|
|
1952
|
+
#head(ctx, model, stage, place, short) {
|
|
1953
|
+
const name = STAGES[stage];
|
|
1954
|
+
return { key: `head/${stage}`, sort: "head", title: name, d: rect(place.left, place.top, place.width, place.height), fill: ctx.palette.color(name), anchor: "middle", lines: [short ? name[0] : name], x: place.left + place.width / 2, y: place.top + place.height / 2 + 4, lead: LEAD2, rows: [["Items", model.columns[stage].length]] };
|
|
1955
|
+
}
|
|
1956
|
+
#columns(ctx, model) {
|
|
1957
|
+
const { step, link } = this.options, { palette, plot: { width, height } } = ctx;
|
|
1958
|
+
const plain = Math.max(6, Math.min(12, width * 0.02)), { size: wide, starts } = _SipocDiagram.spans(width, link === "none" /* None */ ? plain : Math.max(14, Math.min(34, width * 0.06)), plain);
|
|
1959
|
+
const wrap = wide - 14, top = HEAD2 + 8, room = Math.max(0, height - top), short = STAGES.some((name) => _chunkQ5A2TY2Acjs.FrameworkText.width(name, 11) * HEAVY > wide - 8);
|
|
1960
|
+
const scene = { boxes: [], notes: [], arrows: [], places: /* @__PURE__ */ new Map() };
|
|
1961
|
+
const more = (stage, hidden, y) => {
|
|
1962
|
+
if (hidden.length) scene.notes.push({ key: `more/${stage}`, text: _chunkQ5A2TY2Acjs.FrameworkText.fit(`+${hidden.length} more`, wide, NOTE3), title: hidden.join("; "), x: starts[stage] + 2, y: Math.min(height - 3, y + NOTE3) });
|
|
1963
|
+
};
|
|
1964
|
+
STAGES.forEach((name, stage) => {
|
|
1965
|
+
const left = starts[stage], names = model.columns[stage], fill = palette.color(name);
|
|
1966
|
+
scene.boxes.push(this.#head(ctx, model, stage, { left, top: 0, width: wide, height: HEAD2 }, short));
|
|
1967
|
+
if (stage !== PROCESS) {
|
|
1968
|
+
const stack = _SipocDiagram.stack(names, room, wrap);
|
|
1969
|
+
let y = top;
|
|
1970
|
+
stack.forEach((lines, i) => {
|
|
1971
|
+
const tall2 = Math.max(1, lines.length) * LEAD2 + 9;
|
|
1972
|
+
scene.boxes.push({ key: id(stage, names[i]), sort: "card", title: names[i], d: rect(left, y, wide, tall2), fill, anchor: "start", lines, x: left + 7, y: y + 5 + NOTE3 - 1, lead: LEAD2, rows: this.#rows(model, stage, names[i]) });
|
|
1973
|
+
scene.places.set(id(stage, names[i]), { left, top: y, width: wide, height: tall2 });
|
|
1974
|
+
y += tall2 + 5;
|
|
1975
|
+
});
|
|
1976
|
+
return more(stage, names.slice(stack.length), y);
|
|
1977
|
+
}
|
|
1978
|
+
const chevron = step === "chevron" /* Chevron */, between = chevron ? 3 : 12, tip = chevron ? 7 : 0;
|
|
1979
|
+
const fits = (count, footer) => (room - footer - tip - (count - 1) * between) / Math.max(1, count);
|
|
1980
|
+
const shown = fits(names.length, 0) >= MIN_STEP ? names.length : Math.max(1, Math.floor((room - 14 - tip + between) / (MIN_STEP + between)));
|
|
1981
|
+
const tall = Math.max(4, Math.min(48, fits(shown, shown < names.length ? 14 : 0))), point = Math.min(tip, tall * 0.3), middle = left + wide / 2;
|
|
1982
|
+
names.slice(0, shown).forEach((text, i) => {
|
|
1983
|
+
const y = top + i * (tall + between), notch = i ? point : 0, lines = _SipocDiagram.#step(text, i, wrap, Math.floor((tall - notch - 4) / LEAD2));
|
|
1984
|
+
const d = chevron ? polygon([[left, y], ...i ? [[middle, y + point]] : [], [left + wide, y], [left + wide, y + tall], [middle, y + tall + point], [left, y + tall]]) : rect(left, y, wide, tall);
|
|
1985
|
+
scene.boxes.push({ key: id(stage, text), sort: "step", title: text, d, fill, anchor: "middle", lines, x: middle, y: y + (tall + point + notch) / 2 - (lines.length - 1) * LEAD2 / 2 + 4, lead: LEAD2, rows: this.#rows(model, stage, text) });
|
|
1986
|
+
if (!chevron && i) scene.arrows.push(`M${n(middle)},${n(y - between + 2)}V${n(y - 6)}M${n(middle - 3.5)},${n(y - 7)}L${n(middle)},${n(y - 1.5)}L${n(middle + 3.5)},${n(y - 7)}Z`);
|
|
1987
|
+
});
|
|
1988
|
+
more(stage, names.slice(shown), top + shown * (tall + between) + point - between + 4);
|
|
1989
|
+
});
|
|
1990
|
+
return scene;
|
|
1991
|
+
}
|
|
1992
|
+
#bands(ctx, model) {
|
|
1993
|
+
const { step, link } = this.options, { palette, plot: { width, height } } = ctx;
|
|
1994
|
+
const plain = Math.max(6, Math.min(12, height * 0.03)), { size: tall, starts } = _SipocDiagram.spans(height, link === "none" /* None */ ? plain : Math.max(12, Math.min(30, height * 0.09)), plain);
|
|
1995
|
+
const full = Math.max(...STAGES.map((name) => _chunkQ5A2TY2Acjs.FrameworkText.width(name, 11))) * HEAVY + 16, short = width * 0.22 < full;
|
|
1996
|
+
const head = short ? 26 : full, start = head + 8, room = Math.max(0, width - start), most = Math.max(1, Math.floor((tall - 6) / LEAD2));
|
|
1997
|
+
const scene = { boxes: [], notes: [], arrows: [], places: /* @__PURE__ */ new Map() };
|
|
1998
|
+
STAGES.forEach((name, stage) => {
|
|
1999
|
+
const top = starts[stage], names = model.columns[stage], fill = palette.color(name), centre = top + tall / 2;
|
|
2000
|
+
scene.boxes.push(this.#head(ctx, model, stage, { left: 0, top, width: head, height: tall }, short));
|
|
2001
|
+
if (!names.length) return;
|
|
2002
|
+
const process = stage === PROCESS, chevron = process && step === "chevron" /* Chevron */, between = !process ? 6 : chevron ? 3 : 16, point = chevron ? Math.min(10, tall * 0.3) : 0, least = process ? MIN_STEP_WIDE : MIN_CELL;
|
|
2003
|
+
const fits = (count, footer) => (room - footer - point - (count - 1) * between) / count;
|
|
2004
|
+
const shown = fits(names.length, 0) >= least ? names.length : Math.max(1, Math.floor((room - MORE - point + between) / (least + between)));
|
|
2005
|
+
const wide = Math.max(4, Math.min(process ? 200 : MAX_CELL, fits(shown, shown < names.length ? MORE : 0)));
|
|
2006
|
+
names.slice(0, shown).forEach((text, i) => {
|
|
2007
|
+
const left = start + i * (wide + between), notch = i ? point : 0, wrap = wide - 14 - point;
|
|
2008
|
+
const lines = process ? _SipocDiagram.#step(text, i, wrap, most) : wrap < LEGIBLE ? [] : _chunkQ5A2TY2Acjs.FrameworkText.clamp(_chunkQ5A2TY2Acjs.FrameworkText.wrap(text, wrap, NOTE3), most, wrap, NOTE3);
|
|
2009
|
+
const d = chevron ? polygon([[left, top], [left + wide, top], [left + wide + point, centre], [left + wide, top + tall], [left, top + tall], ...i ? [[left + point, centre]] : []]) : rect(left, top, wide, tall);
|
|
2010
|
+
scene.boxes.push({
|
|
2011
|
+
key: id(stage, text),
|
|
2012
|
+
sort: process ? "step" : "card",
|
|
2013
|
+
title: text,
|
|
2014
|
+
d,
|
|
2015
|
+
fill,
|
|
2016
|
+
anchor: "middle",
|
|
2017
|
+
lines,
|
|
2018
|
+
x: left + (wide + point + notch) / 2,
|
|
2019
|
+
y: centre - (lines.length - 1) * LEAD2 / 2 + 4,
|
|
2020
|
+
lead: LEAD2,
|
|
2021
|
+
rows: this.#rows(model, stage, text)
|
|
2022
|
+
});
|
|
2023
|
+
scene.places.set(id(stage, text), { left, top, width: wide, height: tall });
|
|
2024
|
+
if (process && !chevron && i) scene.arrows.push(`M${n(left - between + 2)},${n(centre)}H${n(left - 6)}M${n(left - 7)},${n(centre - 3.5)}L${n(left - 1.5)},${n(centre)}L${n(left - 7)},${n(centre + 3.5)}Z`);
|
|
2025
|
+
});
|
|
2026
|
+
const hidden = names.slice(shown);
|
|
2027
|
+
if (hidden.length) scene.notes.push({ key: `more/${stage}`, text: _chunkQ5A2TY2Acjs.FrameworkText.fit(`+${hidden.length} more`, MORE - 18, NOTE3), title: hidden.join("; "), x: start + shown * (wide + between) + point + 4, y: centre + 4 });
|
|
2028
|
+
});
|
|
2029
|
+
return scene;
|
|
2030
|
+
}
|
|
2031
|
+
draw(ctx) {
|
|
2032
|
+
const { layout, link } = this.options, { theme, palette } = ctx;
|
|
2033
|
+
const model = this.model, across = layout === "columns" /* Columns */;
|
|
2034
|
+
for (const name of STAGES) palette.color(name);
|
|
2035
|
+
const filled = model.columns.some((column) => column.length);
|
|
2036
|
+
DoeRows.empty(ctx, filled ? null : "No items");
|
|
2037
|
+
const scene = !filled ? { boxes: [], notes: [], arrows: [], places: /* @__PURE__ */ new Map() } : across ? this.#columns(ctx, model) : this.#bands(ctx, model);
|
|
2038
|
+
const lines = link === "none" /* None */ ? [] : model.ties.flatMap(({ side, from, to }) => {
|
|
2039
|
+
const a = scene.places.get(id(side, from)), b = scene.places.get(id(side + 1, to));
|
|
2040
|
+
if (!a || !b) return [];
|
|
2041
|
+
const [x0, y0, x1, y1] = across ? [a.left + a.width + 1, a.top + a.height / 2, b.left - 1, b.top + b.height / 2] : [a.left + a.width / 2, a.top + a.height + 1, b.left + b.width / 2, b.top - 1];
|
|
2042
|
+
const bend = across ? `C${n((x0 + x1) / 2)},${n(y0)} ${n((x0 + x1) / 2)},${n(y1)} ` : `C${n(x0)},${n((y0 + y1) / 2)} ${n(x1)},${n((y0 + y1) / 2)} `;
|
|
2043
|
+
return [{ key: `${side}/${from}\0${to}`, from, to, color: palette.color(STAGES[side]), d: `M${n(x0)},${n(y0)}${link === "curved" /* Curved */ ? bend : "L"}${n(x1)},${n(y1)}` }];
|
|
2044
|
+
});
|
|
2045
|
+
const ties = ctx.marks("links", "path", lines, (d) => d.key).attr("fill", "none").attr("stroke", (d) => d.color).attr("stroke-width", 1.6).attr("stroke-opacity", 0.75).attr("stroke-linecap", "round");
|
|
2046
|
+
ctx.set(ties, { d: (d) => d.d });
|
|
2047
|
+
ctx.hover(ties, (d) => ({ title: `${d.from} \u2192 ${d.to}`, color: d.color }));
|
|
2048
|
+
const arrows = ctx.marks("axis-arrows", "path", scene.arrows).attr("fill", theme.axis).attr("stroke", theme.axis).attr("stroke-width", 1.5).attr("stroke-linejoin", "round");
|
|
2049
|
+
ctx.set(arrows, { d: (d) => d });
|
|
2050
|
+
const boxes = ctx.marks("cards", "g", scene.boxes, (d) => d.key);
|
|
2051
|
+
const plates = boxes.selectAll("path").data((d) => [d]).join("path").attr("fill", (d) => d.fill).attr("fill-opacity", (d) => d.sort === "card" ? 0.16 : 1);
|
|
2052
|
+
ctx.set(plates, { d: (d) => d.d });
|
|
2053
|
+
const words = boxes.selectAll("text").data((d) => [d]).join("text").attr("font-size", (d) => d.sort === "head" ? 11 : NOTE3).attr("font-weight", (d) => d.sort === "card" ? 400 : 600).attr("font-family", theme.fontFamily).attr("text-anchor", (d) => d.anchor).attr("pointer-events", "none").attr("fill", (d) => d.sort === "card" ? theme.ink : palette.inkOn(d.fill));
|
|
2054
|
+
_chunkQ5A2TY2Acjs.FrameworkText.write(ctx, words);
|
|
2055
|
+
ctx.hover(boxes, (d) => _chunkQ5A2TY2Acjs.FrameworkText.tip(d.title, d.rows, d.fill));
|
|
2056
|
+
const notes = ctx.text(ctx.marks("more", "text", scene.notes, (d) => d.key), NOTE3, "muted").text((d) => d.text);
|
|
2057
|
+
ctx.set(notes, { x: (d) => d.x, y: (d) => d.y });
|
|
2058
|
+
ctx.hover(notes, (d) => _chunkQ5A2TY2Acjs.FrameworkText.tip(d.title, []));
|
|
2059
|
+
}
|
|
2060
|
+
}, _class9.__initStatic9(), _class9);
|
|
2061
|
+
|
|
1775
2062
|
// src/charts/doecharts/SpaghettiDiagram.ts
|
|
1776
2063
|
|
|
1777
2064
|
var SpaghettiRouting = /* @__PURE__ */ ((SpaghettiRouting2) => {
|
|
@@ -1794,8 +2081,8 @@ var wobble = (a, b, c) => {
|
|
|
1794
2081
|
const v = Math.sin(a * 127.1 + b * 311.7 + c * 74.7) * 43758.5453;
|
|
1795
2082
|
return (v - Math.floor(v)) * 2 - 1;
|
|
1796
2083
|
};
|
|
1797
|
-
var SpaghettiDiagram = (
|
|
1798
|
-
static
|
|
2084
|
+
var SpaghettiDiagram = (_class10 = class extends _chunkEEF5WRRZcjs.Chart2D {
|
|
2085
|
+
static __initStatic10() {this.meta = {
|
|
1799
2086
|
id: "spaghetti-diagram",
|
|
1800
2087
|
name: "Spaghetti diagram",
|
|
1801
2088
|
family: "flow" /* Flow */,
|
|
@@ -1824,8 +2111,8 @@ var SpaghettiDiagram = (_class9 = class extends _chunkEEF5WRRZcjs.Chart2D {
|
|
|
1824
2111
|
const { data, x, y, routing } = this.options;
|
|
1825
2112
|
const stations = /* @__PURE__ */ new Map();
|
|
1826
2113
|
for (const node of Array.isArray(_optionalChain([data, 'optionalAccess', _28 => _28.nodes])) ? data.nodes : []) {
|
|
1827
|
-
const
|
|
1828
|
-
if (
|
|
2114
|
+
const id2 = DoeRows.name(_optionalChain([node, 'optionalAccess', _29 => _29.id])), px = DoeRows.number(_optionalChain([node, 'optionalAccess', _30 => _30[x]])), py = DoeRows.number(_optionalChain([node, 'optionalAccess', _31 => _31[y]]));
|
|
2115
|
+
if (id2 && px !== null && py !== null && !stations.has(id2)) stations.set(id2, { id: id2, x: px, y: py, px: 0, py: 0, width: 0, label: id2, out: 0, in: 0 });
|
|
1829
2116
|
}
|
|
1830
2117
|
const routes = /* @__PURE__ */ new Map();
|
|
1831
2118
|
for (const link of Array.isArray(_optionalChain([data, 'optionalAccess', _32 => _32.links])) ? data.links : []) {
|
|
@@ -1936,7 +2223,7 @@ var SpaghettiDiagram = (_class9 = class extends _chunkEEF5WRRZcjs.Chart2D {
|
|
|
1936
2223
|
const label = ctx.text(ctx.marks("axis-scale-name", "text", wide > 0 ? [`${DoeRows.format(length)} ${_nullishCoalesce(unit, () => ( ""))}`.trim()] : []), 10.5).attr("text-anchor", "end").text((d) => d);
|
|
1937
2224
|
ctx.set(label, { x: width - wide - 6, y: height - 4 });
|
|
1938
2225
|
}
|
|
1939
|
-
},
|
|
2226
|
+
}, _class10.__initStatic10(), _class10);
|
|
1940
2227
|
|
|
1941
2228
|
// src/charts/doecharts/VelocityChart.ts
|
|
1942
2229
|
|
|
@@ -1953,8 +2240,8 @@ var VelocityAverage = /* @__PURE__ */ ((VelocityAverage2) => {
|
|
|
1953
2240
|
})(VelocityAverage || {});
|
|
1954
2241
|
var PLAN = "Committed";
|
|
1955
2242
|
var DONE = "Completed";
|
|
1956
|
-
var VelocityChart = (
|
|
1957
|
-
static
|
|
2243
|
+
var VelocityChart = (_class11 = class extends _chunkSRQSXNSPcjs.BandChart {
|
|
2244
|
+
static __initStatic11() {this.meta = {
|
|
1958
2245
|
id: "velocity-chart",
|
|
1959
2246
|
name: "Velocity chart",
|
|
1960
2247
|
family: "project" /* Project */,
|
|
@@ -2041,7 +2328,7 @@ var VelocityChart = (_class10 = class extends _chunkSRQSXNSPcjs.BandChart {
|
|
|
2041
2328
|
text: share(sprint)
|
|
2042
2329
|
})) : []);
|
|
2043
2330
|
}
|
|
2044
|
-
},
|
|
2331
|
+
}, _class11.__initStatic11(), _class11);
|
|
2045
2332
|
|
|
2046
2333
|
// src/charts/doecharts/YamazumiChart.ts
|
|
2047
2334
|
var YamazumiOrder = /* @__PURE__ */ ((YamazumiOrder2) => {
|
|
@@ -2056,8 +2343,8 @@ var YamazumiKind = /* @__PURE__ */ ((YamazumiKind2) => {
|
|
|
2056
2343
|
return YamazumiKind2;
|
|
2057
2344
|
})(YamazumiKind || {});
|
|
2058
2345
|
var KINDS = Object.values(YamazumiKind);
|
|
2059
|
-
var YamazumiChart = (
|
|
2060
|
-
static
|
|
2346
|
+
var YamazumiChart = (_class12 = class _YamazumiChart extends _chunkSRQSXNSPcjs.BandChart {
|
|
2347
|
+
static __initStatic12() {this.meta = {
|
|
2061
2348
|
id: "yamazumi",
|
|
2062
2349
|
name: "Yamazumi chart",
|
|
2063
2350
|
family: "composition" /* Composition */,
|
|
@@ -2155,7 +2442,7 @@ var YamazumiChart = (_class11 = class _YamazumiChart extends _chunkSRQSXNSPcjs.B
|
|
|
2155
2442
|
ctx.hover(line4, (d) => ({ title: "Takt time", rows: [["Takt", `${DoeRows.format(d)}${this.unit()}`]] }));
|
|
2156
2443
|
this.endLabels(ctx, frame, totals ? this.#stacks.map((stack) => ({ key: stack.band, at: along(stack.band) + thick / 2, value: Math.max(stack.total, _nullishCoalesce(takt, () => ( 0))), text: `${DoeRows.format(stack.total)}${this.unit()}` })) : []);
|
|
2157
2444
|
}
|
|
2158
|
-
},
|
|
2445
|
+
}, _class12.__initStatic12(), _class12);
|
|
2159
2446
|
|
|
2160
2447
|
// src/charts/doecharts/index.ts
|
|
2161
2448
|
var doechartsCatalog = [
|
|
@@ -2169,7 +2456,8 @@ var doechartsCatalog = [
|
|
|
2169
2456
|
YamazumiChart,
|
|
2170
2457
|
VelocityChart,
|
|
2171
2458
|
GageRRChart,
|
|
2172
|
-
ProcessCapabilityChart
|
|
2459
|
+
ProcessCapabilityChart,
|
|
2460
|
+
SipocDiagram
|
|
2173
2461
|
];
|
|
2174
2462
|
|
|
2175
2463
|
|
|
@@ -2212,4 +2500,9 @@ var doechartsCatalog = [
|
|
|
2212
2500
|
|
|
2213
2501
|
|
|
2214
2502
|
|
|
2215
|
-
|
|
2503
|
+
|
|
2504
|
+
|
|
2505
|
+
|
|
2506
|
+
|
|
2507
|
+
|
|
2508
|
+
exports.AffinityLayout = AffinityLayout; exports.AffinitySort = AffinitySort; exports.AffinityLink = AffinityLink; exports.AffinityDiagram = AffinityDiagram; exports.CubePlotDesign = CubePlotDesign; exports.CubePlotCorner = CubePlotCorner; exports.CubePlotProjection = CubePlotProjection; exports.CubePlot = CubePlot; exports.GageRRView = GageRRView; exports.GageRRMetric = GageRRMetric; exports.GageRRPartLines = GageRRPartLines; exports.GageRRChart = GageRRChart; exports.HalfNormalForm = HalfNormalForm; exports.HalfNormalLimit = HalfNormalLimit; exports.HalfNormalLabels = HalfNormalLabels; exports.HalfNormalPlot = HalfNormalPlot; exports.HouseOfQualityMark = HouseOfQualityMark; exports.HouseOfQualityPriority = HouseOfQualityPriority; exports.HouseOfQuality = HouseOfQuality; exports.MainEffectsError = MainEffectsError; exports.MainEffectsOrder = MainEffectsOrder; exports.MainEffectsPlot = MainEffectsPlot; exports.CapabilityCurves = CapabilityCurves; exports.ProcessCapabilityChart = ProcessCapabilityChart; exports.PughScoring = PughScoring; exports.PughMark = PughMark; exports.PughSummary = PughSummary; exports.PughSort = PughSort; exports.PughMatrix = PughMatrix; exports.SipocLayout = SipocLayout; exports.SipocLink = SipocLink; exports.SipocStep = SipocStep; exports.SipocOrder = SipocOrder; exports.SipocDiagram = SipocDiagram; exports.SpaghettiRouting = SpaghettiRouting; exports.SpaghettiTrace = SpaghettiTrace; exports.SpaghettiDiagram = SpaghettiDiagram; exports.VelocityForm = VelocityForm; exports.VelocityAverage = VelocityAverage; exports.VelocityChart = VelocityChart; exports.YamazumiOrder = YamazumiOrder; exports.YamazumiKind = YamazumiKind; exports.YamazumiChart = YamazumiChart; exports.doechartsCatalog = doechartsCatalog;
|
|
@@ -13,7 +13,7 @@ var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
|
|
|
13
13
|
var _chunkPY4R3IFFcjs = require('./chunk-PY4R3IFF.cjs');
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
|
|
17
17
|
|
|
18
18
|
// src/charts/qualitycharts/QualitySamples.ts
|
|
19
19
|
var round = (value, digits = 1) => +value.toFixed(digits);
|
|
@@ -22,7 +22,7 @@ var weibull = (u, shape, scale) => scale * (-Math.log(1 - open(u))) ** (1 / shap
|
|
|
22
22
|
var QualitySamples = class {
|
|
23
23
|
/** Three designs on test: `{ time, design, suspended }`. Units still running at 1,500 h are suspended there. */
|
|
24
24
|
static lifeTest(seed) {
|
|
25
|
-
const { u } =
|
|
25
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
26
26
|
const designs = [["Design A", 1.3, 700], ["Design B", 2.4, 950], ["Design C", 3.6, 1250]];
|
|
27
27
|
const end = 1500;
|
|
28
28
|
return designs.flatMap(([design, shape, scale]) => Array.from({ length: 14 + Math.floor(u() * 5) }, () => {
|
|
@@ -33,7 +33,7 @@ var QualitySamples = class {
|
|
|
33
33
|
}
|
|
34
34
|
/** A fleet of 500 units under three competing risks: early defects in 12%, random shocks and wear-out. `{ time, failed }`, ending at 9,000 h. */
|
|
35
35
|
static fleet(seed) {
|
|
36
|
-
const { u } =
|
|
36
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
37
37
|
const end = 9e3;
|
|
38
38
|
return Array.from({ length: 500 }, () => {
|
|
39
39
|
const early = u() < 0.12 ? weibull(u, 0.5, 300) : Infinity;
|
|
@@ -43,7 +43,7 @@ var QualitySamples = class {
|
|
|
43
43
|
}
|
|
44
44
|
/** Reliability growth tests of two prototypes, as power-law processes: `{ time, system, failed }`. Each ends with a row at 2,000 h with `failed` 0. */
|
|
45
45
|
static growthTest(seed) {
|
|
46
|
-
const { u } =
|
|
46
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
47
47
|
const end = 2e3;
|
|
48
48
|
const systems = [["Prototype 1", 0.52, 26], ["Prototype 2", 0.78, 30]];
|
|
49
49
|
return systems.flatMap(([system, shape, expected]) => {
|
|
@@ -58,7 +58,7 @@ var QualitySamples = class {
|
|
|
58
58
|
}
|
|
59
59
|
/** Shaft diameters: four shifts, three pieces each, measured at three positions. `{ period, piece, position, value }`. */
|
|
60
60
|
static multiVari(seed) {
|
|
61
|
-
const { n } =
|
|
61
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
62
62
|
const positions = [["Top", 4e-3], ["Middle", 0], ["Bottom", -5e-3]];
|
|
63
63
|
return ["Shift 1", "Shift 2", "Shift 3", "Shift 4"].flatMap((period, p) => {
|
|
64
64
|
const drift = [0, 6e-3, -3e-3, 0.01][p] + n() * 2e-3;
|
|
@@ -70,7 +70,7 @@ var QualitySamples = class {
|
|
|
70
70
|
}
|
|
71
71
|
/** Three single sampling plans from the ANSI Z1.4 code-letter sizes: `{ plan, n, c, lot }`. */
|
|
72
72
|
static plans(seed) {
|
|
73
|
-
const { u } =
|
|
73
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
74
74
|
const sizes = [32, 50, 80, 125, 200];
|
|
75
75
|
const first = Math.floor(u() * 2);
|
|
76
76
|
return [0, 1, 2].map((i) => {
|
|
@@ -80,7 +80,7 @@ var QualitySamples = class {
|
|
|
80
80
|
}
|
|
81
81
|
/** Corrosion coupons: `{ ph, potential, coupon }`, potentials in volts against the standard hydrogen electrode. */
|
|
82
82
|
static coupons(seed) {
|
|
83
|
-
const { u, n } =
|
|
83
|
+
const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
84
84
|
return Array.from({ length: 10 }, (_, i) => {
|
|
85
85
|
const ph = 1 + u() * 12;
|
|
86
86
|
return { ph: round(ph, 2), potential: round(0.25 - 0.06 * ph + n() * 0.25, 3), coupon: `C-${i + 1}` };
|
|
@@ -88,7 +88,7 @@ var QualitySamples = class {
|
|
|
88
88
|
}
|
|
89
89
|
/** Two oxides measured by calorimetry: `{ reaction, temperature, dG }`, ΔG° in kJ per mol O₂ and temperature in °C. Centred on published Mn and Pb values. */
|
|
90
90
|
static oxides(seed) {
|
|
91
|
-
const { u, n } =
|
|
91
|
+
const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
92
92
|
const sets = [["2Mn + O\u2082 \u2192 2MnO", -770, 0.147], ["2Pb + O\u2082 \u2192 2PbO", -438, 0.2]];
|
|
93
93
|
return sets.flatMap(([reaction, a, b]) => Array.from({ length: 7 }, (_, i) => {
|
|
94
94
|
const temperature = 200 + i * 180 + u() * 60;
|
|
@@ -97,7 +97,7 @@ var QualitySamples = class {
|
|
|
97
97
|
}
|
|
98
98
|
/** Three isothermal treatments: `{ path, time, temperature }`, quenched from austenite to a hold, held, then cooled. */
|
|
99
99
|
static treatments(seed) {
|
|
100
|
-
const { u } =
|
|
100
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
101
101
|
const holds = [["Anneal hold", 660 + u() * 20, 2e3], ["Austemper", 340 + u() * 30, 2e4], ["Quench", 25, 0]];
|
|
102
102
|
return holds.flatMap(([path, hold, length]) => {
|
|
103
103
|
const points = length ? [[0.3, 780], [2, hold], [length, hold], [length * 3, 25]] : [[0.3, 780], [2, 25], [1e5, 25]];
|
|
@@ -106,13 +106,13 @@ var QualitySamples = class {
|
|
|
106
106
|
}
|
|
107
107
|
/** Two state ladders of an aromatic dye: `{ state, energy }` in eV above the ground state. */
|
|
108
108
|
static dye(seed) {
|
|
109
|
-
const { u } =
|
|
109
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
110
110
|
const s1 = 2.9 + 0.4 * u(), s2 = s1 + 0.9 + 0.3 * u(), t1 = s1 - 0.9 - 0.3 * u(), t2 = s1 - 0.3 - 0.15 * u();
|
|
111
111
|
return [["S0", 0], ["S1", s1], ["S2", s2], ["T1", t1], ["T2", t2]].map(([state, energy]) => ({ state, energy: round(energy, 2) }));
|
|
112
112
|
}
|
|
113
113
|
/** Two diatomic species to compare: `{ species }`. */
|
|
114
114
|
static diatomics(seed) {
|
|
115
|
-
const { u } =
|
|
115
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
116
116
|
const pairs = [["O2", "N2"], ["O2", "O2+"], ["N2", "CO"], ["C2", "F2"], ["O2-", "NO"], ["B2", "O2"]];
|
|
117
117
|
return pairs[Math.floor(u() * pairs.length)].map((species) => ({ species }));
|
|
118
118
|
}
|