@sjcrh/proteinpaint-client 2.76.0 → 2.76.1

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.
Files changed (218) hide show
  1. package/dist/{2dmaf-74b99126.js → 2dmaf-593951c7.js} +1 -1
  2. package/dist/{AppHeader-cecb39c2.js → AppHeader-29b88e14.js} +1 -1
  3. package/dist/{ColorScale-21cab8d2.js → ColorScale-3d3c42dc.js} +1 -1
  4. package/dist/{DEanalysis-95bad59a.js → DEanalysis-f81e0f19.js} +1 -1
  5. package/dist/{Disco-a6e921a0.js → Disco-db386f7a.js} +1 -1
  6. package/dist/{Disco.UI-9ad999ed.js → Disco.UI-8ed9cb39.js} +1 -1
  7. package/dist/{DragControls-e3b6a937.js → DragControls-d6250d18.js} +1 -1
  8. package/dist/{DziViewer-354a790d.js → DziViewer-9352e224.js} +1 -1
  9. package/dist/{FilterRxComp-701a1480.js → FilterRxComp-0f35b322.js} +1 -1
  10. package/dist/{FilterStateless-54c0b763.js → FilterStateless-b1c6ee04.js} +1 -1
  11. package/dist/{HicApp-d5a946bf.js → HicApp-14b94b20.js} +1 -1
  12. package/dist/{OrbitControls-694652cd.js → OrbitControls-45f56ed4.js} +1 -1
  13. package/dist/{WSIViewer-dc7f8eb0.js → WSIViewer-80f60272.js} +1 -1
  14. package/dist/{adSandbox-f438e388.js → adSandbox-94424b88.js} +1 -1
  15. package/dist/app-2cd97738.js +1 -0
  16. package/dist/{app-3320ab6f.js → app-686b9547.js} +1 -1
  17. package/dist/app-f031940d.js +1 -0
  18. package/dist/app.js +1 -1
  19. package/dist/{bam-431875ef.js → bam-6631640f.js} +1 -1
  20. package/dist/barchart-3c5d734c.js +1 -0
  21. package/dist/{barchart.events-da29c90d.js → barchart.events-df44e666.js} +1 -1
  22. package/dist/{bars.renderer-dcfdd59b.js → bars.renderer-b232d882.js} +1 -1
  23. package/dist/{block-6aedd569.js → block-4134e823.js} +1 -1
  24. package/dist/block.lazyload-eda77d9b.js +1 -0
  25. package/dist/{block.legend-d3f61ef7.js → block.legend-d2b7f1cb.js} +1 -1
  26. package/dist/{block.mds-3ad17dfa.js → block.mds-ebe7b58d.js} +1 -1
  27. package/dist/{block.mds.cnv-857ba868.js → block.mds.cnv-99f0a414.js} +1 -1
  28. package/dist/{block.mds.expressionrank-7e3b208c.js → block.mds.expressionrank-96bf864b.js} +1 -1
  29. package/dist/{block.mds.expressionstat-f2d31c86.js → block.mds.expressionstat-dcab3fd1.js} +1 -1
  30. package/dist/{block.mds.geneboxplot-f0fbaf12.js → block.mds.geneboxplot-e5b2a4ce.js} +1 -1
  31. package/dist/{block.mds.junction-7f87f48f.js → block.mds.junction-534eef9b.js} +1 -1
  32. package/dist/{block.mds.svcnv-ac035c12.js → block.mds.svcnv-de6a3c7d.js} +1 -1
  33. package/dist/{block.mds.svcnv.share-886d9479.js → block.mds.svcnv.share-2c2c16db.js} +1 -1
  34. package/dist/{block.mds2-7852c1ee.js → block.mds2-373fcb4d.js} +1 -1
  35. package/dist/{block.svg-9b916fa6.js → block.svg-be5d741d.js} +1 -1
  36. package/dist/{block.tk.aicheck-6770e333.js → block.tk.aicheck-f2da5e81.js} +1 -1
  37. package/dist/{block.tk.ase-ee807e59.js → block.tk.ase-ef848944.js} +1 -1
  38. package/dist/{block.tk.bam-00fba6e8.js → block.tk.bam-11fcba17.js} +1 -1
  39. package/dist/{block.tk.bedgraphdot-7fda78e9.js → block.tk.bedgraphdot-a81b0709.js} +1 -1
  40. package/dist/{block.tk.bigwig.ui-cc1a42f3.js → block.tk.bigwig.ui-f8e5ba71.js} +1 -1
  41. package/dist/{block.tk.hicstraw-526470e3.js → block.tk.hicstraw-e7072b25.js} +1 -1
  42. package/dist/{block.tk.junction-b43a4cda.js → block.tk.junction-1c9a7854.js} +1 -1
  43. package/dist/{block.tk.junction.textmatrixui-a60ed78a.js → block.tk.junction.textmatrixui-ffecbb16.js} +1 -1
  44. package/dist/{block.tk.ld-d15bde41.js → block.tk.ld-274c3a82.js} +1 -1
  45. package/dist/{block.tk.menu-3aeb93c6.js → block.tk.menu-e970cd4a.js} +1 -1
  46. package/dist/{block.tk.pgv-9af2bd64.js → block.tk.pgv-f4d4dbf7.js} +1 -1
  47. package/dist/{boxplot-e17a17b7.js → boxplot-44d3b48f.js} +1 -1
  48. package/dist/{brainImaging-bf2ceee9.js → brainImaging-2eaa419d.js} +1 -1
  49. package/dist/{brush-aa175142.js → brush-bb4ae2fb.js} +1 -1
  50. package/dist/{categorical-a52014a1.js → categorical-db9b0175.js} +1 -1
  51. package/dist/{condition-c646e357.js → condition-4e788f7d.js} +1 -1
  52. package/dist/{controls-287e6efa.js → controls-3c1691d7.js} +1 -1
  53. package/dist/{controls.btns-79b805dd.js → controls.btns-5b1240c8.js} +1 -1
  54. package/dist/controls.config-81cd5749.js +1 -0
  55. package/dist/cuminc-c4db28f0.js +1 -0
  56. package/dist/{customdata.inputui-dc49d94b.js → customdata.inputui-f9234d1f.js} +1 -1
  57. package/dist/{dataDownload-3a3d4f33.js → dataDownload-a4dfa2d0.js} +1 -1
  58. package/dist/{databrowser.ui-d8d3f8fd.js → databrowser.ui-a64bab0c.js} +1 -1
  59. package/dist/{density-a82a8b1c.js → density-69a732f6.js} +1 -1
  60. package/dist/{dictionary-c5a19d90.js → dictionary-e2232e84.js} +1 -1
  61. package/dist/{drag-7b30ba17.js → drag-d8daa62f.js} +1 -1
  62. package/dist/{e2pca-82765817.js → e2pca-f9324654.js} +1 -1
  63. package/dist/{ep-d017ec2f.js → ep-a5c1ee3a.js} +1 -1
  64. package/dist/{facet-a9b44ef3.js → facet-98971c68.js} +1 -1
  65. package/dist/{fusion.parse-d40d0b9d.js → fusion.parse-466ded6d.js} +1 -1
  66. package/dist/{geneExpClustering-34c3f518.js → geneExpClustering-66c05fb1.js} +1 -1
  67. package/dist/{geneExpression-0d1b7244.js → geneExpression-5685eae2.js} +1 -1
  68. package/dist/{geneExpression-589f485b.js → geneExpression-b5d0261f.js} +1 -1
  69. package/dist/{geneExpression-7d14983f.js → geneExpression-ff46a389.js} +1 -1
  70. package/dist/{geneORA-903a780f.js → geneORA-f1a90d02.js} +1 -1
  71. package/dist/{geneVariant-92c4e870.js → geneVariant-1cf17b3b.js} +1 -1
  72. package/dist/{geneVariant-89601b34.js → geneVariant-d0b9e1cb.js} +1 -1
  73. package/dist/{genefusion.ui-7e22e811.js → genefusion.ui-89a727ea.js} +1 -1
  74. package/dist/{genesearch-a4e19f0d.js → genesearch-41cb55ce.js} +1 -1
  75. package/dist/{geneset-108a39d2.js → geneset-b63496eb.js} +1 -1
  76. package/dist/{genomeBrowser-12f86a36.js → genomeBrowser-ec8fbddc.js} +1 -1
  77. package/dist/{genomeBrowser.controls-d5067811.js → genomeBrowser.controls-2dcaf4f5.js} +1 -1
  78. package/dist/{groupsetting-b4416a96.js → groupsetting-3fef59f9.js} +1 -1
  79. package/dist/{gsea-543dab25.js → gsea-3075c82c.js} +1 -1
  80. package/dist/{hierCluster-26e14090.js → hierCluster-33a828a1.js} +1 -1
  81. package/dist/hierCluster.config-fa799d06.js +1 -0
  82. package/dist/{hierCluster.interactivity-e56f6542.js → hierCluster.interactivity-6d453881.js} +1 -1
  83. package/dist/{hierCluster.renderers-74a64cf5.js → hierCluster.renderers-6279d7fb.js} +1 -1
  84. package/dist/{html.legend-a3f4ebfe.js → html.legend-fac5cb07.js} +1 -1
  85. package/dist/{imagePlot-b9eae4ae.js → imagePlot-38254245.js} +1 -1
  86. package/dist/{lasso-f767f634.js → lasso-e8b9500e.js} +1 -1
  87. package/dist/{launch.adhoc-abca6af3.js → launch.adhoc-2799109b.js} +1 -1
  88. package/dist/{leftlabel.sample-24c2388d.js → leftlabel.sample-afcdcefd.js} +1 -1
  89. package/dist/{legacyDataset-e0e201ab.js → legacyDataset-3b08c91a.js} +1 -1
  90. package/dist/{log-99af3443.js → log-4d84c357.js} +1 -1
  91. package/dist/{lollipop-806f8fa4.js → lollipop-64c5cdfc.js} +1 -1
  92. package/dist/{maf-b06579e4.js → maf-fd4ffbd0.js} +1 -1
  93. package/dist/{maftimeline-4840a380.js → maftimeline-3e892da7.js} +1 -1
  94. package/dist/{matrix-00bb50ff.js → matrix-e371888a.js} +1 -1
  95. package/dist/{matrix.cells-914dd0c6.js → matrix.cells-eb4110a7.js} +1 -1
  96. package/dist/{matrix.cluster-783ceab0.js → matrix.cluster-0df274ed.js} +1 -1
  97. package/dist/{matrix.config-6ce74dfe.js → matrix.config-3ef822b9.js} +1 -1
  98. package/dist/{matrix.controls-7b2a6f95.js → matrix.controls-42bb2063.js} +1 -1
  99. package/dist/{matrix.data-dac4f1b7.js → matrix.data-27b8e3a9.js} +1 -1
  100. package/dist/{matrix.dom-4e10bbe9.js → matrix.dom-1bbe1f39.js} +1 -1
  101. package/dist/{matrix.groups-b9fca14a.js → matrix.groups-67606700.js} +1 -1
  102. package/dist/{matrix.interactivity-84169b43.js → matrix.interactivity-cdcc56c9.js} +1 -1
  103. package/dist/{matrix.layout-dd5a44fd.js → matrix.layout-857cd336.js} +1 -1
  104. package/dist/{matrix.legend-ac6d45e6.js → matrix.legend-09f6dc57.js} +1 -1
  105. package/dist/{matrix.renderers-78010275.js → matrix.renderers-d392fb69.js} +1 -1
  106. package/dist/{matrix.serieses-9b4fd744.js → matrix.serieses-b03b62aa.js} +1 -1
  107. package/dist/{matrix.sort-014d798d.js → matrix.sort-9440c86a.js} +1 -1
  108. package/dist/{matrix.sorterUi-9bf7e6f9.js → matrix.sorterUi-2c5eb35f.js} +1 -1
  109. package/dist/{mavb-c6be46fc.js → mavb-9d86df89.js} +1 -1
  110. package/dist/{mds.fimo-bff6a1ed.js → mds.fimo-bffccb9f.js} +1 -1
  111. package/dist/{mds.samplescatterplot-9a02b9fb.js → mds.samplescatterplot-b3908cc7.js} +1 -1
  112. package/dist/{mds.survivalplot-055549f4.js → mds.survivalplot-9ad7dabc.js} +1 -1
  113. package/dist/{metaboliteIntensity-fac92f8b.js → metaboliteIntensity-ec3176f4.js} +1 -1
  114. package/dist/niceNumLabels-5f45218a.js +1 -0
  115. package/dist/{nodrag-16ad4b03.js → nodrag-ab7d5a9f.js} +1 -1
  116. package/dist/{notify-224cccbd.js → notify-59f61230.js} +1 -1
  117. package/dist/{numeric-b0b17185.js → numeric-4853b665.js} +1 -1
  118. package/dist/{numeric.binary-1f9e93f2.js → numeric.binary-1dd9a2b4.js} +1 -1
  119. package/dist/{numeric.continuous-ebcd0567.js → numeric.continuous-ed132eea.js} +1 -1
  120. package/dist/{numeric.discrete-7b97044a.js → numeric.discrete-d780d076.js} +1 -1
  121. package/dist/{numeric.spline-1be88f3d.js → numeric.spline-abe07708.js} +1 -1
  122. package/dist/{numeric.toggle-7fa2a770.js → numeric.toggle-647423dd.js} +1 -1
  123. package/dist/oncomatrix-7ac995a2.js +1 -0
  124. package/dist/{parseData-21fe9822.js → parseData-567f3d70.js} +1 -1
  125. package/dist/{plot.2dvaf-18a35e4b.js → plot.2dvaf-4016e75e.js} +1 -1
  126. package/dist/plot.app-d6fe76e2.js +1 -0
  127. package/dist/plot.barplot-d2fc5020.js +1 -0
  128. package/dist/{plot.boxplot-fe3046c6.js → plot.boxplot-76229491.js} +1 -1
  129. package/dist/{plot.brainImaging-2ceb6023.js → plot.brainImaging-39b80a1c.js} +1 -1
  130. package/dist/{plot.disco-6011f87f.js → plot.disco-9a544f9a.js} +1 -1
  131. package/dist/{plot.dzi-6728a7c8.js → plot.dzi-f1658ebf.js} +1 -1
  132. package/dist/{plot.ssgq-5581dc56.js → plot.ssgq-aeb2dabc.js} +1 -1
  133. package/dist/{plot.vaf2cov-b2284c64.js → plot.vaf2cov-ba8332ed.js} +1 -1
  134. package/dist/{plot.wsi-9a9d4034.js → plot.wsi-2d802557.js} +1 -1
  135. package/dist/{profileBarchart-0476f1f8.js → profileBarchart-72adc533.js} +1 -1
  136. package/dist/{profileHome-32eb9b50.js → profileHome-37fd52e5.js} +1 -1
  137. package/dist/{profilePlot-c7e099e8.js → profilePlot-0b897a05.js} +1 -1
  138. package/dist/profilePolar-a7248d48.js +1 -0
  139. package/dist/profileRadar-1ba5d8fd.js +1 -0
  140. package/dist/profileRadarFacility-452e76ef.js +1 -0
  141. package/dist/{profileSummary-b114204f.js → profileSummary-7f0eacf0.js} +1 -1
  142. package/dist/{recover-49e09de0.js → recover-74f2e965.js} +1 -1
  143. package/dist/{regression.inputs-a761f40d.js → regression.inputs-ff00f74e.js} +1 -1
  144. package/dist/{regression.inputs.values.table-5929d25a.js → regression.inputs.values.table-1753d56b.js} +1 -1
  145. package/dist/{regression.results-69bc42d0.js → regression.results-6f85a5dc.js} +1 -1
  146. package/dist/{renderPvalueTable-dc5d15f2.js → renderPvalueTable-17558d6a.js} +1 -1
  147. package/dist/{sampleScatter-2d0ed680.js → sampleScatter-97917406.js} +1 -1
  148. package/dist/{sampleScatter.rendererThree-0b12ac61.js → sampleScatter.rendererThree-4649d1ec.js} +2 -2
  149. package/dist/{sampleView-484ab133.js → sampleView-f86dc5ea.js} +1 -1
  150. package/dist/{samplelst-689796e6.js → samplelst-4a5512df.js} +1 -1
  151. package/dist/{samplematrix-2b137a05.js → samplematrix-1192e5e2.js} +1 -1
  152. package/dist/{scatter-205e013f.js → scatter-cc1b0d07.js} +1 -1
  153. package/dist/{select2Terms-b21e184a.js → select2Terms-d4f6ed9e.js} +1 -1
  154. package/dist/{selectGenomeWithTklst-466995b4.js → selectGenomeWithTklst-b5cfd153.js} +1 -1
  155. package/dist/{singleCellCellType-5db730bb.js → singleCellCellType-d8c58253.js} +1 -1
  156. package/dist/{singleCellGeneExpression-7147a2d0.js → singleCellGeneExpression-b7209531.js} +1 -1
  157. package/dist/{singleCellPlot-73b2738f.js → singleCellPlot-e6f83b2a.js} +1 -1
  158. package/dist/{singlecell-bca774ed.js → singlecell-321dd973.js} +1 -1
  159. package/dist/{singlecell-24409b72.js → singlecell-879235b3.js} +1 -1
  160. package/dist/snp-541ec14d.js +1 -0
  161. package/dist/{snp-a8388ce4.js → snp-b046b7e6.js} +1 -1
  162. package/dist/snplocus-61ff1c10.js +1 -0
  163. package/dist/{spliceevent.a53ss.diagram-e2eab72b.js → spliceevent.a53ss.diagram-1a84db58.js} +1 -1
  164. package/dist/{spliceevent.exonskip.diagram-4d5df3a1.js → spliceevent.exonskip.diagram-da10648b.js} +1 -1
  165. package/dist/{spliceevent.exonskip.getdefault-a94aad6e.js → spliceevent.exonskip.getdefault-8028e522.js} +1 -1
  166. package/dist/{spliceevent.noeventdiagram-ea97b0fb.js → spliceevent.noeventdiagram-1d6d790d.js} +1 -1
  167. package/dist/{spliceevent.phrase-c5832470.js → spliceevent.phrase-2ca0ce59.js} +1 -1
  168. package/dist/{stattable-7c5ecc2f.js → stattable-c5f12d9c.js} +1 -1
  169. package/dist/{style.gdc-131f3c77.js → style.gdc-5b7d90c6.js} +1 -1
  170. package/dist/summary-0624f5e6.js +1 -0
  171. package/dist/{sunburst-533902a7.js → sunburst-30295714.js} +1 -1
  172. package/dist/{survival-e16e068f.js → survival-816e055a.js} +1 -1
  173. package/dist/{survival-92250664.js → survival-fcc7719f.js} +1 -1
  174. package/dist/{svg.download-35926549.js → svg.download-e89a7369.js} +1 -1
  175. package/dist/{svg.legend-8d490df2.js → svg.legend-c93f2980.js} +1 -1
  176. package/dist/{svgraph-6fac8cbc.js → svgraph-6ab3011b.js} +1 -1
  177. package/dist/{svmr-d07ff695.js → svmr-3ad3d600.js} +1 -1
  178. package/dist/{table-ad744310.js → table-4d3a771e.js} +1 -1
  179. package/dist/{table-29d5a973.js → table-f50a9344.js} +1 -1
  180. package/dist/{termInfo-bf99a37e.js → termInfo-d0a9e65f.js} +1 -1
  181. package/dist/{termdb.bins-8b656cc3.js → termdb.bins-01e8cce6.js} +1 -1
  182. package/dist/{termsetting-33ea66f1.js → termsetting-ad8c4f3a.js} +1 -1
  183. package/dist/{tk-071a7550.js → tk-e74c9beb.js} +1 -1
  184. package/dist/{toggleButtons-dbdbad01.js → toggleButtons-04c5ad7c.js} +1 -1
  185. package/dist/{tp.ui-9c2e9fc5.js → tp.ui-7b24f0ef.js} +1 -1
  186. package/dist/{tvs.density-f6128793.js → tvs.density-b2790080.js} +1 -1
  187. package/dist/{tvs.geneVariant-ca4bdbb1.js → tvs.geneVariant-418ed4ff.js} +1 -1
  188. package/dist/{tvs.numeric-0260a825.js → tvs.numeric-de14101f.js} +1 -1
  189. package/dist/{tvs.samplelst-cb71b3bf.js → tvs.samplelst-15bb62f1.js} +1 -1
  190. package/dist/{uiUtils-f1bd2bcc.js → uiUtils-ff2d4a6a.js} +1 -1
  191. package/dist/{variantBrowser-7c540224.js → variantBrowser-261373bf.js} +1 -1
  192. package/dist/{vcf-5cc55588.js → vcf-145bf5dd.js} +1 -1
  193. package/dist/violin-e647aac9.js +1 -0
  194. package/dist/{violin.interactivity-4da6d7a9.js → violin.interactivity-30a239fe.js} +1 -1
  195. package/dist/{violin.renderer-ce024265.js → violin.renderer-e29d2700.js} +1 -1
  196. package/dist/{violinRenderer-f7c96a60.js → violinRenderer-08b3b58c.js} +1 -1
  197. package/dist/{viridis-01ab20c5.js → viridis-d86ad99b.js} +1 -1
  198. package/dist/{y-67939f83.js → y-06b0d47c.js} +1 -1
  199. package/dist/{zoom-25dce8b9.js → zoom-d6ef6f3f.js} +1 -1
  200. package/package.json +1 -1
  201. package/dist/app-649f8357.js +0 -1
  202. package/dist/app-b369b169.js +0 -1
  203. package/dist/barchart-8277ed43.js +0 -1
  204. package/dist/block.lazyload-87b12654.js +0 -1
  205. package/dist/controls.config-28d6d6a8.js +0 -1
  206. package/dist/cuminc-9e275854.js +0 -1
  207. package/dist/hierCluster.config-98e82dff.js +0 -1
  208. package/dist/niceNumLabels-238aabce.js +0 -1
  209. package/dist/oncomatrix-351af2a0.js +0 -1
  210. package/dist/plot.app-30c4b8e5.js +0 -1
  211. package/dist/plot.barplot-7c4865a2.js +0 -1
  212. package/dist/profilePolar-6b981e63.js +0 -1
  213. package/dist/profileRadar-bca1cc03.js +0 -1
  214. package/dist/profileRadarFacility-bbb1ecd8.js +0 -1
  215. package/dist/snp-37d06246.js +0 -1
  216. package/dist/snplocus-7a1ea8c9.js +0 -1
  217. package/dist/summary-5ec455d3.js +0 -1
  218. package/dist/violin-2ba509eb.js +0 -1
@@ -1 +0,0 @@
1
- import{h as t,Q as e,P as s,C as i,r,z as a,d as o,U as n}from"./app-b369b169.js";import l from"./bars.settings-64bb4642.js";import c from"./bars.renderer-dcfdd59b.js";import{h as d}from"./html.legend-a3f4ebfe.js";import{s as h}from"./svg.legend-8d490df2.js";import p from"./barchart.events-da29c90d.js";import{term0_term2_defaultQ as m,controlsInit as f}from"./controls-287e6efa.js";import{r as g}from"./table-29d5a973.js";import{f as u,i as b}from"./termsetting-33ea66f1.js";import"./axis-747c801e.js";import"./log-99af3443.js";import"./FilterRxComp-701a1480.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-8b656cc3.js";import"./controls.btns-79b805dd.js";import"./controls.config-28d6d6a8.js";import"./tslib.es6-c3c2d88f.js";import"path";class y{constructor(t){this.type="barchart"}preApiFreeze(t){t.download=this.download}async init(t){const e=this.opts;const s=this.opts.controls?null:e.holder.append("div");const i=e.controls?e.holder:e.holder.append("div");this.dom={loadingDiv:i.append("div").style("position","absolute").style("display","none").style("padding","20px").html("Loading ..."),header:e.header,controls:s,holder:i,banner:i.append("div").style("display","none").style("text-align","center").style("padding","24px").style("font-size","16px").style("color","#aaa"),barDiv:i.append("div"),legendDiv:i.append("div").style("margin","5px 5px 15px 5px")};if(this.dom.header)this.dom.header.html("Barchart");this.settings=JSON.parse(l);D(this);C(this);this.renderers={};this.legendRenderer=d(this.dom.legendDiv,{settings:{legendOrientation:"vertical"},handlers:this.handlers},this.dom.barDiv);this.controls={};this.term2toColor={};await this.setControls(this.getState(t));if(this.opts.bar_click_override);else if(!this.opts.bar_click_opts){this.opts.bar_click_opts=["hide_bar"];if(this.app.getState().nav.header_mode==="with_tabs")this.opts.bar_click_opts.push("add_filter")}}async setControls(t){if(this.opts.controls){this.opts.controls.on("downloadClick.barchart",this.download)}else{this.dom.holder.attr("class","pp-termdb-plot-viz").style("display","inline-block").style("min-width","300px").style("margin-left","50px");const t=[{type:"term",configKey:"term",chartType:"barchart",usecase:{target:"barchart",detail:"term"},vocabApi:this.app.vocabApi,menuOptions:"edit"},{type:"term",configKey:"term2",chartType:"barchart",usecase:{target:"barchart",detail:"term2"},title:"Overlay data",label:"Overlay",vocabApi:this.app.vocabApi,numericEditMenuVersion:this.opts.numericEditMenuVersion,defaultQ4fillTW:m},{type:"term",configKey:"term0",chartType:"barchart",usecase:{target:"barchart",detail:"term0"},title:"Divide by data",label:"Divide by",vocabApi:this.app.vocabApi,numericEditMenuVersion:this.opts.numericEditMenuVersion,defaultQ4fillTW:m},{label:"Orientation",type:"radio",chartType:"barchart",settingsKey:"orientation",options:[{label:"Vertical",value:"vertical"},{label:"Horizontal",value:"horizontal"}]},{label:"Scale",type:"radio",chartType:"barchart",settingsKey:"unit",options:[{label:"Linear",value:"abs"},{label:"Log",value:"log",getDisplayStyle:t=>t.term2?"none":"inline-block"},{label:"Proportion",value:"pct",getDisplayStyle:t=>t.term2?"inline-block":"none"}]},{label:"Multicolor bars",title:"Color bars using the colors preassigned if available, otherwise generates a color",type:"checkbox",chartType:"barchart",settingsKey:"colorBars",boxLabel:"Yes",getDisplayStyle:t=>t.term2?"none":"table-row"},{label:"Deduplicate",title:"Use separate bars samples that has multiple values or belong to multiple groups",type:"checkbox",chartType:"barchart",settingsKey:"dedup",boxLabel:"Yes",getDisplayStyle:t=>this.chartsData.charts.find((t=>t.serieses.length!=t.dedupedSerieses.length))?"table-row":"none"},{label:"Default color",title:"Default color for bars when there is no overlay",type:"color",chartType:"barchart",settingsKey:"defaultColor"}];if(this.app.getState().termdbConfig.multipleTestingCorrection){t.push({label:"Asterisks",boxLabel:"Visible",type:"checkbox",chartType:"barchart",settingsKey:"asterisksVisible",title:"Display the asterisks"})}this.components={controls:await f({app:this.app,id:this.id,holder:this.dom.controls.attr("class","pp-termdb-plot-controls").style("display","inline-block"),inputs:t})};this.components.controls.on("downloadClick.barchart",this.download)}}reactsTo(t){if(t.type.startsWith("plot_")){return t.id===this.id&&(!t.config.childType||t.config.childType==this.type)}return true}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{nav:{header_mode:t.nav.header_mode},termfilter:t.termfilter,config:Object.assign({},e,{settings:{barchart:e.settings.barchart,common:e.settings.common},displaySampleIds:t.termdbConfig.displaySampleIds&&this.app.vocabApi.hasVerifiedToken()}),multipleTestingCorrection:t.termdbConfig.multipleTestingCorrection,bar_click_menu:t.bar_click_menu||{}}}async main(){const t=this.state.config;if(t.chartType!=this.type&&t.childType!=this.type)return;try{this.config=structuredClone(t);if(!this.currServerData)this.dom.barDiv.style("max-width",window.innerWidth+"px");this.prevConfig=this.config||{};if(this.dom.header)this.dom.header.html(this.config.term.term.name+` <span style="opacity:.6;font-size:.7em;margin-left:10px;">BARCHART</span>`);this.toggleLoadingDiv();const e=this.getDataRequestOpts();await this.getDescrStats();const s=await this.app.vocabApi.getNestedChartSeriesData(e);const r=s.data;this.sampleType=s.sampleType;this.bins=s.bins;this.toggleLoadingDiv("none");this.app.vocabApi.syncTermData(this.config,r,this.prevConfig);this.currServerData=r;if(this.currServerData.refs&&this.currServerData.refs.q){for(const t of this.currServerData.refs.q){if(t.error)throw t.error}}this.term1toColor={};this.term2toColor={};this.updateSettings(this.config);this.colorScale=i(this.config.term2?this.settings.rows.length:this.settings.cols.length);this.chartsData=this.processData(this.currServerData);this.render()}catch(t){throw t}}getDataRequestOpts(){const t=this.config;const e={term:t.term,filter:this.state.termfilter.filter};if(this.state.termfilter.filter0)e.filter0=this.state.termfilter.filter0;if(t.term2)e.term2=t.term2;if(t.term0)e.term0=t.term0;return e}async getDescrStats(){const t=[this.config.term];if(this.config.term2)t.push(this.config.term2);if(this.config.term0)t.push(this.config.term0);for(const e of t){if(b(e.term)){const t=await this.app.vocabApi.getDescrStats(e,this.state.termfilter);if(t.error)throw t.error;e.q.descrStats=t.values}}}updateSettings(t){if(!t)return;this.state;const e={term0:t.term0?t.term0.term.id:"",term1:t.term.term.id,term2:t.term2?t.term2.term.id:"",unit:t.settings.barchart.unit,orientation:t.settings.barchart.orientation,asterisksVisible:t.settings.barchart.asterisksVisible,defaultColor:t.settings.barchart.defaultColor,colorBars:t.settings.barchart.colorBars,dedup:t.settings.barchart.dedup,colw:t.settings.common.barwidth,rowh:t.settings.common.barwidth,colspace:t.settings.common.barspace,rowspace:t.settings.common.barspace};this.setExclude(this.config.term,this.config.term2);Object.assign(this.settings,e,this.currServerData.refs||{},{exclude:this.settings.exclude});this.settings.cols=this.settings.dedup?this.currServerData.refs.dedupCols:this.currServerData.refs.cols;this.settings.numCharts=this.currServerData.charts?this.currServerData.charts.length:0;if(!t.term2&&this.settings.unit=="pct"){this.settings.unit="abs"}}mayResetHidden(t,e,s){const i=(t&&t.term.id)+";;"+(e&&e.term.id)+";;"+(s&&s.term.id);if(i===this.currCombinedTermIds)return;for(const s of this.currServerData.charts){if(t.q&&t.q.hiddenValues){this.mayEditHiddenValues(t,s.serieses.length,"term")}if(e&&e.q&&e.q.hiddenValues){for(const t of s.serieses){this.mayEditHiddenValues(e,t.data.length,"term2")}}}this.currCombinedTermIds=i}mayEditHiddenValues(t,e,s){const i=Object.keys(t.q.hiddenValues).filter((e=>t.q.hiddenValues[e])).length;if(i<e)return;for(const e in t.q.hiddenValues){if(!t.q.hiddenValues[e])return;delete t.q.hiddenValues[e]}this.app.save({type:"plot_edit",id:this.id,config:{[s]:t}})}setExclude(t,e){this.settings.exclude.cols=Object.keys(t.q?.hiddenValues||{}).filter((e=>t.q.hiddenValues[e])).map((e=>t.term.type=="categorical"?e:this.settings.cols?.includes(e)?e:t.term.values[e]?.label?t.term.values[e].label:e));this.settings.exclude.rows=!e?.q?.hiddenValues?[]:Object.keys(e.q.hiddenValues).filter((t=>e.q.hiddenValues[t])).map((t=>e.term.type=="categorical"?t:this.settings.rows?.includes(t)?t:e.term.values[t]?.label?e.term.values[t].label:t))}processData(t){this.seriesOrder=this.setMaxVisibleTotals(t);if(!t.charts.length){this.seriesOrder=[]}else if(t.refs.useColOrder){this.seriesOrder=this.settings.cols}const e=t.refs.rows;this.barSorter=(t,e)=>this.seriesOrder.indexOf(t)-this.seriesOrder.indexOf(e);this.overlaySorter=t.refs.useRowOrder?(t,s)=>e.indexOf(t.dataId)-e.indexOf(s.dataId):(t,e)=>this.totalsByDataId[e.dataId]>this.totalsByDataId[t.dataId]?1:this.totalsByDataId[e.dataId]<this.totalsByDataId[t.dataId]?-1:t.dataId<e.dataId?-1:1;this.visibleCharts=t.charts.filter((t=>t.visibleSerieses.length));const s=this.config.term;const i=this.config.term2;const r=t.tests;for(const t in r){const e=r[t];for(const t of e){const e=s.term.values&&t.term1comparison in s.term.values?s.term.values[t.term1comparison].label:t.term1comparison;t.term1Label=e;for(const e of t.term2tests){const t=i.term.values&&e.term2id in i.term.values?i.term.values[e.term2id].label:e.term2id;e.term2Label=t}}}return t}setMaxVisibleTotals(t){this.totalsByDataId={};const e=this.config.term;const s=this.config.term2;const i={};let r=0;for(const a of t.charts){if(!a.settings)a.settings=JSON.parse(l);Object.assign(a.settings,this.settings);a.visibleTotal=0;const t=this.settings.dedup?a.dedupedSerieses:a.serieses;a.visibleSerieses=t.filter((t=>{if(a.settings.exclude.cols.includes(t.seriesId))return false;t.visibleData=t.data.filter((t=>!a.settings.exclude.rows.includes(t.dataId)));t.visibleTotal=t.visibleData.reduce(((t,e)=>t+e.total),0);if(!t.visibleTotal)return false;a.visibleTotal+=t.visibleTotal;if(!(t.seriesId in i))i[t.seriesId]=t.visibleTotal;for(const i of t.data){i.seriesId=t.seriesId;if(e.term.type=="geneVariant"&&e.q.type=="values"||s?.term.type=="geneVariant"&&s?.q.type=="values"){if(!(i.dataId in this.totalsByDataId)){this.totalsByDataId[i.dataId]={}}this.totalsByDataId[i.dataId][a.chartId]=this.totalsByDataId[i.dataId][a.chartId]?this.totalsByDataId[i.dataId][a.chartId]+i.total:0+i.total}else{if(!(i.dataId in this.totalsByDataId)){this.totalsByDataId[i.dataId]=0}this.totalsByDataId[i.dataId]+=i.total}}return true}));a.settings.colLabels=a.visibleSerieses.map((t=>{const i=t.seriesId;const r=e.term.values&&i in e.term.values?e.term.values[i].label:i;const a=t&&"AF"in t?", AF="+t.AF:"";const o=s&&s.term.type=="condition"&&s.q.value_by_computable_grade?"":`, n=${t.visibleTotal}`;return{id:i,label:r+a+o}}));a.maxVisibleSeriesTotal=a.visibleSerieses.reduce(((t,e)=>e.visibleTotal>t?e.visibleTotal:t),0);if(a.maxVisibleSeriesTotal>r){r=a.maxVisibleSeriesTotal}}for(const e of t.charts){e.maxVisibleAcrossCharts=r}return Object.keys(i).sort(((t,e)=>i[e]-i[t]))}sortStacking(t,e,s){this.term1toColor[t.seriesId]=this.settings.colorBars?this.getColor(this.config.term.term,t.seriesId,this.bins?.[1]):this.settings.defaultColor;t.visibleData.sort(this.overlaySorter);let i=0;for(const r of t.visibleData){r.colgrp="-";r.rowgrp="-";r.chartId=e.chartId;r.seriesId=t.seriesId;if(s.tests){r.groupPvalues=s.tests[e.chartId].find((e=>e.term1comparison===t.seriesId))}r.seriesTotal=t.total;r.chartTotal=e.visibleTotal;r.logTotal=Math.log10(r.total);i+=r.logTotal;this.setTerm2Color(r);r.color=this.term2toColor[r.dataId]||this.term1toColor[t.seriesId]}if(i>e.maxSeriesLogTotal){e.maxSeriesLogTotal=i}for(const e of t.data){if(e.color)continue;this.setTerm2Color(e);e.color=this.term2toColor[e.dataId]||this.term1toColor[t.seriesId]}}setTerm2Color(t){if(!this.config.term2)return;this.term2toColor[t.dataId]=this.getColor(this.config.term2,t.dataId,this.bins?.[2])}getColor(t,e,s){if(!t.term)return;if(t.term.values){for(const[s,i]of Object.entries(t.term.values)){if(!i.color)continue;if(s===e)return i.color;if(i.label===e)return i.color}}const i=s?.find((t=>t.label==e));if(i?.color)return i.color;if(t.term.type=="geneVariant"&&t.q.type=="values")return this.getMutationColor(e);return r(this.colorScale(e)).toString()}getMutationColor(t){for(const e of Object.values(a))if(e.label===t&&e.color)return e.color;for(const e in a){if(a[e].label===t&&a[e].color)return a[e].color}}getLegendGrps(){const t=this.config.term;const e=this.config.term2;if(t.term.type=="geneVariant"&&t.q.type=="values"||e?.term.type=="geneVariant"&&e?.q.type=="values"){const t=[];for(const e of this.chartsData.charts){t.push(this.getOneLegendGrps(e))}return t}return this.getOneLegendGrps()}getOneLegendGrps(t){const e=[];const s=this.settings;const i=this.config.term;const r=this.config.term2;const a="color: #aaa; font-weight: 400";if(i.q.descrStats){const t=i.q.descrStats.map((t=>({text:`${t.label}: ${t.value}`,noIcon:true})));const s=r?`Descriptive statistics: ${i.term.name}`:"Descriptive statistics";const o=`<span style="${a}">${s}</span>`;e.push({name:o,items:t})}if(r?.q.descrStats){const t=r.q.descrStats.map((t=>({text:`${t.label}: ${t.value}`,noIcon:true})));const s=`Descriptive statistics: ${r.term.name}`;const i=`<span style="${a}">${s}</span>`;e.push({name:i,items:t})}if(s.cols&&s.exclude.cols.length){const o=(t,e)=>t+e.total;const n=s.exclude.cols.filter((t=>s.cols.includes(t))).flatMap((e=>{const s=t=>t.seriesId==e;const a=r?.term?.type=="condition"?0:i.term.type=="geneVariant"&&i.q.type=="values"||r?.term.type=="geneVariant"&&r?.q.type=="values"?t.serieses.filter(s).reduce(o,0):this.currServerData.charts.reduce(((t,e)=>t+e.serieses.filter(s).reduce(o,0)),0);if(!a&&!r?.term?.type)return[];const n=i.term.values&&e in i.term.values?i.term.values[e].label:e;const l=a?", n="+a:"";return[{id:e,text:n+l,color:"#fff",textColor:"#000",border:"1px solid #333",noIcon:true,type:"col",isHidden:true,hiddenOpacity:1}]})).sort(this.barSorter);if(n.length){const t=r?i.term.name:"Other categories";e.push({name:`<span style="${a}">${t}</span>`,items:n})}}if(s.rows&&!s.hidelegend&&r&&this.term2toColor){const i=r.term.type!="condition"||!r.q?"":r.q.value_by_max_grade?"max. grade":r.q.value_by_most_recent?"most recent":"";e.push({name:`<span style="${a}">`+r.term.name+(i?", "+i:"")+"</span>",items:s.rows.flatMap((e=>{const i=t?this.totalsByDataId[e]?.[t.chartId]:this.totalsByDataId[e];if(!i)return[];const a=i?", n="+i:"";const o=r.term.values&&e in r.term.values?r.term.values[e].label:e;return[{dataId:e,text:o+a,color:this.term2toColor[e],type:"row",isHidden:s.exclude.rows.includes(e)}]})).sort(this.overlaySorter)})}if(r&&this.state.multipleTestingCorrection){let t=0;for(const e in this.chartsData.tests){t+=this.chartsData.tests[e].reduce(((t,e)=>t+e.term2tests.filter((t=>!t.skipped)).length),0)}const s=t>1?[{text:`* p-value < (0.05 / ${t} tests)`,noEditColor:true}]:[{text:`* p-value < 0.05`,noEditColor:true}];e.push({name:`<span style="${a}">Statistical Significance</span>`,items:s})}return e}toggleLoadingDiv(t=""){if(t!="none"){this.dom.loadingDiv.style("opacity",0).style("display",t).transition().duration("loadingWait"in this?this.loadingWait:0).style("opacity",1)}else{this.dom.loadingDiv.style("display",t)}this.loadingWait=1e3}}const v=t(y);const x=v;function D(t){t.render=function(){const e=t.dom.barDiv.selectAll(".pp-sbar-div").data(t.visibleCharts,(t=>t.chartId));e.exit().each(t.exitChart);e.each(t.updateChart);e.enter().append("div").each(t.addChart);t.dom.holder.selectAll(".pp-chart-title").style("display",t.visibleCharts.length<2?"none":"block");const s=t.getLegendGrps();t.legendRenderer(s);if(!t.visibleCharts.length){const e=t.settings.exclude.cols.length||t.settings.exclude.rows.length?`<br/><span>click on a legend label below to display the barchart</span>`:"";t.dom.banner.html(`<span>No visible barchart data to render</span>${e}`).style("display","block");t.dom.legendDiv.selectAll("*").remove()}else{t.dom.banner.text("").style("display","none")}};t.exitChart=function(e){delete t.renderers[e.chartId];o(this).remove()};t.updateChart=function(s){s.settings.cols.sort(t.barSorter);s.maxAcrossCharts=t.chartsData.maxAcrossCharts;s.handlers=t.handlers;s.maxSeriesLogTotal=0;s.visibleSerieses.forEach((e=>t.sortStacking(e,s,t.chartsData)));t.renderers[s.chartId](s);const i=o(this);i.select(".pp-sbar-div-chartLengends").selectAll("*").remove();if(t.chartsData.tests&&t.chartsData.tests[s.chartId]){e(s,i)}};t.addChart=function(s,i){const r=o(this).attr("class","pp-sbar-div").style("display","inline-block").style("padding","20px").style("vertical-align","top");t.renderers[s.chartId]=c(t,o(this));s.settings.cols.sort(t.barSorter);s.maxAcrossCharts=t.chartsData.maxAcrossCharts;s.handlers=t.handlers;s.maxSeriesLogTotal=0;s.visibleSerieses.forEach((e=>t.sortStacking(e,s,t.chartsData)));t.renderers[s.chartId](s);r.append("div").attr("class","pp-sbar-div-chartLengends").attr("data-testid","sjpcb-bars-chartLengends").style("vertical-align","top").style("margin","10px 10px 10px 30px").style("display","none");if(t.chartsData.tests&&t.chartsData.tests[s.chartId]){e(s,r)}};function e(e,i){const r=i.select(".pp-sbar-div-chartLengends").style("display","inline-block").style("vertical-align","top").style("text-align","center").append("div");t.chartsData.tests[e.chartId].sort((function(e,s){return t.settings.cols.indexOf(e.term1comparison)-t.settings.cols.indexOf(s.term1comparison)}));for(const s of t.chartsData.tests[e.chartId]){s.term2tests.sort((function(e,s){return t.chartsData.refs.rows.indexOf(e.term2id)-t.chartsData.refs.rows.indexOf(s.term2id)}))}const a=[{label:"Row 1"},{label:"Row 2"},{label:"Column 1"},{label:"Column 2"},{label:"P-value"}];const o=t.chartsData.tests[e.chartId].every((t=>t.term2tests.every((t=>!t.skipped))));const n=[];const l=t.chartsData.tests[e.chartId].filter((t=>e.visibleSerieses.some((e=>e.seriesId===t.term1comparison))));for(const[t,i]of l.entries()){if(l.length==2&&t==1){break}const r=e.visibleSerieses.find((t=>t.seriesId===i.term1comparison));const a=i.term2tests.filter((t=>r.visibleData.some((e=>e.dataId===t.term2id))));for(const[t,e]of a.entries()){if(a.length==2&&t==1){break}n.push([{value:`${i.term1Label}`},{value:l.length==2?l[1].term1Label:s(i.term1Label)},{value:e.term2Label},{value:a.length==2?a[1].term2Label:s(e.term2Label)},{html:e.skipped?"N/A":e.pvalue>1e-4?Number(e.pvalue.toFixed(4)):Number(e.pvalue.toPrecision(4)).toExponential()}])}}r.append("div").style("font-weight","bold").style("padding-bottom","0.5em").html("2x2 Association test (Fisher's exact test)").style("font-size","0.9em");const c=r.append("div").style("font-size","0.9em");g({columns:a,rows:n,div:c,showLines:false,maxWidth:"70vw",maxHeight:`${e.svgh-100}px`,resize:true});c.append("div").style("margin-top","10px").style("text-align","left").style("font-size","10px").style("font-weight","normal").html(o?"":"N/A: association test skipped because of limited sample size <br>")}function s(t){if(t.toUpperCase().startsWith("NOT ")){return t.substring(4)}else{return"not "+t}}}function C(t){t.handlers=p(t);t.download=function(){if(!t.state)return;const e=[];const s={x:undefined,y:undefined};const i=[];let r=0,a=0,l=0;let c=0,d=0;t.dom.barDiv.selectAll(".sjpcb-bars-mainG").each((function(){e.push(this);const t=this.getBBox();if(t.width>r)r=t.width;if(t.height>a)a=t.height;const n=Math.round(this.parentNode.parentNode.getBoundingClientRect().y);if(!d){c=n;d++}else if(Math.abs(n-c)<5){d++}const h=o(this).attr("transform").split("translate(")[1].split(")")[0].split(",").map((t=>+t.trim()));if(s.x===undefined||h[0]>s.x)s.x=+h[0];if(s.y===undefined||h[1]>s.y)s.y=+h[1];const p=this.parentNode.parentNode.firstChild;const m=p.getBoundingClientRect();if(m.width>r)r=m.width;if(m.height>l)l=m.height;i.push({text:p.innerText,styles:window.getComputedStyle(p)})}));r+=30;a+=30;const p=document.createElementNS("http://www.w3.org/2000/svg","svg");const m=o(p).style("display","block").style("opacity",1).attr("width",d*r).attr("height",Math.floor(e.length/d)*a);const f=window.getComputedStyle(document.querySelector(".pp-bars-svg"));for(const t of f){if(t.startsWith("font"))m.style(t,f.getPropertyValue(t))}e.forEach(((t,e)=>{const n=t.cloneNode(true);const c=e%d;const h=Math.floor(e/d);const m={x:c*r+s.x,y:h*a+s.y};const f=o(p).append("text").attr("transform","translate("+m.x+","+m.y+")").text(i[e].text);for(const t of i[e].styles){if(t.startsWith("font"))f.style(t,i[e].styles.getPropertyValue(t))}o(n).attr("transform","translate("+m.x+","+(m.y+l)+")");p.appendChild(n)}));const g=o("body").append("div").style("opacity",0);g.node().appendChild(p);t.svgLegendRenderer=h({holder:m.append("g"),rectFillFxn:t=>t.color,iconStroke:"#aaa"});t.settings;const u=t.dom.barDiv.select("svg").node().getBoundingClientRect();let b=t.getLegendGrps();b.forEach((t=>{t.name=t.name.replace(/<[^>]*>?/gm,"");if(t.items)t.items=t.items.filter((t=>!t.isHidden))}));b=b.filter((t=>t.items.length&&!t.name.includes("tatistic")));const y=14;t.svgLegendRenderer(b,{settings:Object.assign({ontop:false,lineh:25,padx:5,padleft:0,padright:20,padbtm:30,fontsize:y,iconh:y-2,iconw:y-2,hangleft:1,linesep:false},{svgw:t.visibleCharts.length*u.width,svgh:u.height,dimensions:{xOffset:50},padleft:50})});const v=t.dom.legendDiv.node().getBoundingClientRect();o(p).attr("height",u.height+v.height+30);if(v.width>u.width)o(p).attr("width",v.width);g.remove();const x=t.config.term.term.name+" barchart";n(p,x,{apply_dom_styles:true})}}function w(t){return{orientation:"horizontal",unit:"abs",overlay:"none",divideBy:"none",rowlabelw:250,asterisksVisible:t?.getState()?.termdbConfig?.multipleTestingCorrection?true:false,defaultColor:e,colorBars:false,dedup:false}}async function I(t,e){if(!t.term)throw"barchart getPlotConfig: opts.term{} missing";try{await u(t.term,e.vocabApi);if(t.term2)await u(t.term2,e.vocabApi);if(t.term0)await u(t.term0,e.vocabApi)}catch(t){throw`${t} [barchart getPlotConfig()]`}const i={id:t.term.term.id,settings:{controls:{term2:null,term0:null},common:{use_logscale:false,use_percentage:false,barheight:300,barwidth:20,barspace:2},barchart:w(e)}};return s(i,t)}export{v as barInit,x as componentInit,w as getDefaultBarSettings,I as getPlotConfig};
@@ -1 +0,0 @@
1
- let n;async function t(t){if(!n){const t=await import("./block-6aedd569.js").then((function(n){return n.c}));n=t.Block}return new n(t)}export{t as b};
@@ -1 +0,0 @@
1
- import{d as t,h as e,K as s,r as n}from"./app-b369b169.js";import{h as i,T as l}from"./termsetting-33ea66f1.js";import"./tslib.es6-c3c2d88f.js";import"path";function a(e){const s=e.holder.selectAll("div").data(e.options,(t=>t.value)).style("display","block");s.exit().each((function(e){t(this).on("input",null).on("click",null).remove()}));const n=s.enter().append("div").attr("aria-label",(t=>t.title)).style("display","block").style("padding",e.styles&&"padding"in e.styles?e.styles.padding:"5px").append("label");if(e.styles){for(const t in e.styles){n.style(t,e.styles[t])}}const i=n.append("input").attr("type","radio").attr("name",e.name).attr("value",(t=>t.value)).style("vertical-align","top").style("margin-top","2px").style("margin-right",0).property("checked",e.isCheckedFxn).on("mouseup",e.listeners.input).on("keyup",e.listeners.input);n.append("span").style("vertical-align","top").html((t=>"&nbsp;"+t.label)).on("mouseup",e.listeners.input).on("keyup",e.listeners.input);function l(t){return t.value==a.currValue}const a={main(t){a.currValue=t;i.property("checked",l)},dom:{divs:e.holder.selectAll("div"),labels:e.holder.selectAll("label").select("span"),inputs:n.selectAll("input")}};return a}let o=0;class p{constructor(t){this.type="controlsConfig";this.app=t.app;this.id=t.id;this.instanceNum=o++;d(this)}async init(){try{const t=this.app.dispatch;const e=this.setDom();const n=this.opts.debug;this.inputs={};const i={};for(const e of this.opts.inputs){if(typeof e=="object"){const s=e;if(s.type in x){this.inputs[s.settingsKey||s.configKey]=await x[s.type](Object.assign({},s,{holder:this.dom.table.append("tr"),dispatch:t,id:this.id,instanceNum:this.instanceNum,debug:this.opts.debug,parent:this}))}}else if(e in x){this.inputs[e]=await x[e]({holder:this.dom.table.append("tr"),dispatch:t,id:this.id,instanceNum:this.instanceNum,debug:this.opts.debug,parent:this})}else{throw`unsupported opts.inputs[] entry of '${e}' for controlsInit()`}}this.components=await s(i)}catch(t){throw t}}setDom(){this.dom={holder:this.opts.holder.style("max-width","50px").style("height",0).style("vertical-align","top").style("transition","0.2s ease-in-out").style("visibility","hidden").style("transition","0.2s")};this.dom.table=this.dom.holder.append("table").attr("cellpadding",0).attr("cellspacing",0);return this.dom.table}getState(t){const e=t.plots.find((t=>t.id===this.id));return{genome:t.genome,dslabel:t.dslabel,activeCohort:t.activeCohort,termfilter:t.termfilter,config:e,isOpen:this.opts.isOpen()}}main(){const t=this.state.config;const e=this.opts.isOpen();this.render(e);for(const e in this.inputs){const s=this.inputs[e];s.main(s.usestate?this.state:t)}}render(t){this.dom.holder.style("visibility",t?"visible":"hidden").style("max-width",t?"700px":"50px").style("height",t?"":0).style("resize",t?"both":"none");this.dom.table.selectAll("tr").filter(this.rowIsVisible).selectAll("td").style("border-top","2px solid #FFECDD").style("padding","5px 10px");if(this.inputs.term){T(this.inputs.term,this.state.config)}}}const r=e(p);function d(t){t.rowIsVisible=function(){return this.style.display!="none"}}function c(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label").attr("aria-label",t.title),inputs:{}},values:{}};if(!t.inputs)t.inputs=[{min:t.min,max:t.max,step:t.step,width:t.width,settingsKey:t.settingsKey}];const s=t.debounceInterval||("debounceInterval"in t.parent?.app.opts?t.parent?.app.opts.debounceInterval:100);for(const i of t.inputs){let l;function a(t=false){if(l)clearTimeout(l);if(!t)l=setTimeout(o,s)}function o(){let s=Number(e.dom.inputs[i.settingsKey].property("value"));if(i.max&&i.max<s)s=i.max;if(i.min&&i.min>s)s=i.min;if(t.callback)t.callback(s);else{t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[i.settingsKey]:t.processInput?t.processInput(s):s}}}})}}const p=t.holder.append("td").style("text-align",t.align||"").attr("colspan",t.colspan||"");if(!i.settingsKey){p.style("color","#999").style("cursor","default").html(i.label)}else{e.dom.inputs[i.settingsKey]=p.append("input").attr("type","number").attr("min","min"in i?i.min:null).attr("max","max"in i?i.max:null).attr("step",i.step||t.step||null).style("width",(i.width||t.width||100)+"px").on("keyup",(s=>{const n=e.values[t.settingsKey]!==Number(e.dom.inputs[i.settingsKey].property("value"));a(s.key!=="Enter"&&n)})).on("change",(t=>{a(false)}))}}const n={main(s){const n=t.getDisplayStyle?.(s)||"table-row";t.holder.style("display",n);for(const n in e.dom.inputs){const i=s.settings[t.chartType][n];e.dom.inputs[n].property("value",i);e.values[n]=i}}};if(t.debug)n.Inner=e;return Object.freeze(n)}function u(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label").attr("aria-label",t.title).attr("overflow","visible"),inputTd:t.holder.append("td")}};const s={};e.dom.input=e.dom.inputTd.append("input").attr("type","text").style("width",(t.width||100)+"px").on("change",(()=>{const n=e.dom.input.property("value");const i=Number(n);if(isNaN(i))throw`non-numeric value for ${t.settingsKey}='${n}'`;s[i]=n;t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[t.settingsKey]:i}}}})}));const n={main(n){const i=n.settings[t.chartType][t.settingsKey];const l=typeof i=="number"?i:Number(i);if(typeof i!="number")s[l]=i;e.dom.input.property("value",i in s?s[l]:i)}};if(t.debug)n.Inner=e;return Object.freeze(n)}function y(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label").attr("aria-label",t.title),inputTd:t.holder.append("td")}};e.dom.input=e.dom.inputTd.append("input").attr("type","text").attr("placeholder",t.placeholder).style("width",(t.width||100)+"px").on("change",(()=>{const s=e.dom.input.property("value");t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[t.settingsKey]:t.processInput?t.processInput(s):s}}}})}));const s={main(s){e.dom.input.property("value",s.settings[t.chartType][t.settingsKey])}};if(t.debug)s.Inner=e;return Object.freeze(s)}function h(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").attr("aria-label",t.title).html(t.label).attr("class","sja-termdb-config-row-label"),inputTd:t.holder.append("td").attr("colspan",t.colspan||"").style("text-align",t.align||"")}};e.dom.input=e.dom.inputTd.append("input").attr("type","color").on("change",(()=>{const s=e.dom.input.property("value");t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[t.settingsKey]:t.processInput?t.processInput(s):s}}}})}));const s={main(s){const i=s.settings[t.chartType][t.settingsKey];e.dom.input.property("value",n(i).formatHex());t.holder.style("display",t.getDisplayStyle?.(s)||"table-row")}};if(t.debug)s.Inner=e;return Object.freeze(s)}function m(t){const e={dom:{row:t.holder,labelTdb:t.holder.append("td").html(t.label).attr("aria-label",t.title).attr("class","sja-termdb-config-row-label")},inputs:{}};const s=t.inputs?t.inputs:[{settingsKey:t.settingsKey,options:t.options}];if(!("instanceNum"in t))t.instanceNum=`sjpp-${Math.random().toString().slice(-7)}-${Date.now()}`;const n=t.styles||{};for(const i of s){e.inputs[i.settingsKey]=a({name:`pp-control-${i.settingsKey}-${t.instanceNum}`,holder:t.holder.append("td").attr("colspan",t.colspan||"").style("text-align",t.align||""),options:i.options,getDisplayStyle:()=>"block",styles:n,listeners:{input(e,s){if(e.key&&e.key!=="Enter")return;if(t.callback){t.callback(s.value)}else{t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[i.settingsKey]:s.value}}}})}}}})}const i={main(s){const n=t.getDisplayStyle?.(s)||"table-row";e.dom.row.style("display",n);if(n=="none")return;for(const n in e.inputs){const i=e.inputs[n];i.main(s.settings[t.chartType][n]);i.dom.divs.style("display",(e=>e.getDisplayStyle?e.getDisplayStyle(s):t.labelDisplay||"inline-block"));if(t.setRadioLabel)i.dom.labels.html(t.setRadioLabel)}}};if(t.debug)i.Inner=e;return Object.freeze(i)}function b(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label"),inputTd:t.holder.append("td")}};e.dom.select=e.dom.inputTd.append("select").property("disabled",t.disabled).on("change",(()=>{const s=e.dom.select.property("value");if(t.callback)t.callback(s);else t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[t.settingsKey]:s}}}})}));e.dom.select.style("max-width","300px");e.dom.select.selectAll("option").data(t.options).enter().append("option").property("disabled",(t=>t.disabled)).attr("value",(t=>t.value)).attr("selected",(t=>t.selected)).html((t=>"&nbsp;"+t.label+"&nbsp;"));const s={main(s){t.holder.style("display",t.getDisplayStyle?.(s)||"table-row");e.dom.select.property("value",s.settings[t.chartType][t.settingsKey])}};if(t.debug)s.Inner=e;return Object.freeze(s)}function g(t){const e={dom:{row:t.holder.style("display","table-row"),labelTdb:t.holder.append("td").attr("aria-label",t.title).html(t.label).attr("class","sja-termdb-config-row-label"),inputTd:t.holder.append("td").attr("colspan",t.colspan||"").style("text-align",t.align||"")}};const s=e.dom.inputTd.append("label");e.dom.input=s.append("input").attr("type","checkbox").on("change",(()=>{const s=e.dom.input.property("checked");if(t.callback)t.callback(s);t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[t.settingsKey]:t.processInput?t.processInput(s):s}}}})}));s.append("span").html("&nbsp;"+t.boxLabel);const n={main(s){const n=s.settings[t.chartType][t.settingsKey];e.dom.input.property("checked",t.processInput?t.processInput(n):n);t.holder.style("display",t.getDisplayStyle?.(s)||"table-row")}};if(t.debug)n.Inner=e;return Object.freeze(n)}function f(e){const s={dom:{row:e.holder.style("display","table-row"),labelTdb:e.holder.append("td").attr("aria-label",e.title).html(e.label).attr("class","sja-termdb-config-row-label"),inputTd:e.holder.append("td").attr("colspan",e.colspan||"").style("padding","5px").style("text-align",e.align||"")}};s.dom.labels=s.dom.inputTd.selectAll("label").data(e.options).enter().append("label").style("margin-right","8px").each((function(n){const i=t(this);s.dom.input=i.append("input").attr("type","checkbox").attr("value",(t=>t.value)).on("change",(()=>{const t=[];s.dom.labels.selectAll("input").each((function(e){if(this.checked)t.push(e.value)}));e.dispatch({type:"plot_edit",id:e.id,config:{settings:{[e.chartType]:{[e.settingsKey]:t}}}})}));i.append("span").html(n.label)}));s.dom.inputs=s.dom.labels.selectAll("input");const n={main(t){const n=t.settings[e.chartType][e.settingsKey];s.dom.inputs.property("checked",(t=>n.includes(t.value)));s.dom.labels.style("display",(e=>e.getDisplayStyle?.(t)||""));e.holder.style("display",e.getDisplayStyle?.(t)||"table-row")}};if(e.debug)n.Inner=s;return Object.freeze(n)}function v(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label").attr("aria-label",t.title).style("vertical-align","top"),inputTd:t.holder.append("td")}};e.api=t.init(e);if(t.debug)e.api.Inner=e;return Object.freeze(e.api)}async function w(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label").attr("aria-label",t.title),inputTd:t.holder.append("td")}};const s=await i({menuOptions:t.menuOptions||"*",numericEditMenuVersion:t.numericEditMenuVersion||["continuous","discrete"],vocabApi:t.vocabApi,vocab:t.state?.vocab,activeCohort:t.state?.activeCohort,holder:e.dom.inputTd.append("div"),debug:t.debug,usecase:t.usecase,getBodyParams:t.getBodyParams,defaultQ4fillTW:t.defaultQ4fillTW,callback:async e=>{if(t.parent.dom.loadingDiv&&t.parent.dom.svg){t.parent.dom.loadingDiv.selectAll("*").remove();t.parent.dom.loadingDiv.html("").style("display","").style("position","relative").style("left","45%");t.parent.dom.loadingDiv.html("Processing data ...");t.parent.dom.svg.style("opacity",.1).style("pointer-events","none")}if(e&&!e.q)throw"data.q{} missing from pill callback";if(t.processInput)await t.processInput(e);await s.main(e?e:{term:null,q:null});const n={[t.configKey]:e};if(t.processConfig)t.processConfig(n);t.dispatch({type:"plot_edit",id:t.id,config:n})}});const n={usestate:true,main(e){const n=t.getDisplayStyle?.(e)||"table-row";t.holder.style("display",n);const{config:i,activeCohort:l,termfilter:a}=JSON.parse(JSON.stringify(e));const o=e[t.configKey]||i&&i[t.configKey]||{};const p={term:o.term||null,q:o.q,activeCohort:l,filter:a&&a.filter};if("$id"in o)p.$id=o.$id;s.main(p)}};if(t.debug)n.Inner=e;return Object.freeze(n)}function T(t,e){const s=t.Inner.dom.labelTd;if(s.text())return;const n=e.term;switch(n.term.type){case l.CATEGORICAL:s.text("Group categories");break;case l.INTEGER:case l.FLOAT:s.text("Customize bins");break;case l.GENE_VARIANT:s.text("Group variants");break;case l.SNP:s.text("Group genotypes");break;default:s.text("Customize")}}const x={number:c,math:u,text:y,color:h,radio:m,dropdown:b,checkbox:g,multiCheckbox:f,custom:v,term:w};export{r as configUiInit,x as initByInput};
@@ -1 +0,0 @@
1
- import{P as e,M as t,a8 as s,af as i,r as n,h as a,d as r,I as c}from"./app-b369b169.js";import{term0_term2_defaultQ as o,controlsInit as l}from"./controls-287e6efa.js";import{f as d}from"./termsetting-33ea66f1.js";import{s as p}from"./legacy-d3-polyfill-bdb2d792.js";import{h}from"./html.legend-a3f4ebfe.js";import{c as m}from"./partjson.esm-b3f1fc21.js";import{s as u,r as g,a as f,g as y}from"./renderPvalueTable-dc5d15f2.js";import{l as v}from"./line-264f8f9e.js";import{a as x}from"./area-f56e50f9.js";import{a as b,b as I}from"./axis-747c801e.js";import"./controls.btns-79b805dd.js";import"./controls.config-28d6d6a8.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./pointer-c7475677.js";import"./constant-426a1483.js";class k{constructor(s){this.type="cuminc";this.pj=O(this);this.state={config:e({settings:JSON.parse(D)},s.config)};const i=s.holder;this.dom={holder:i,chartsDiv:i.append("div").style("margin","10px"),legendDiv:i.append("div").style("margin","5px"),hiddenDiv:i.append("div").style("margin","5px 5px 15px 5px")};this.tip=new t({padding:"5px"});this.lineFxn=v().curve(u).x((e=>e.scaledX)).y((e=>e.scaledY));this.hidePlotTitle=true;j(this);this.legendRenderer=h(this.dom.legendDiv,{settings:{legendOrientation:"vertical"},handlers:{legend:{click:e=>this.legendClick(e.target.__data__,e.clientX,e.clientY)}}})}main(e){this.config=structuredClone(this.state.config);if(this.config.term.term.type!="condition")throw"cuminc term is not a condition term";this.settings=this.config.settings.cuminc;this.settings.xTitleLabel="Years since entry into the cohort";this.settings.atRiskVisible=false;this.processResults(e);this.pj.refresh({data:this.currData});this.setTerm2Color(this.pj.tree.charts);this.render()}processResults(e){const t=Object.keys(e);if(t.length!=1)throw"must be a single chart";const s=t[0];const i=e[s];this.currData=[];this.uniqueSeriesIds=new Set;for(const e in i.estimates){const t=i.estimates[e];for(const i of t){const{time:t,est:n,low:a,up:r,nrisk:c,nevent:o,ncensor:l}=i;const d={chartId:s,seriesId:e,time:t,cuminc:n*100,low:a*100,high:r*100,nrisk:c,nevent:o,ncensor:l};this.currData.push(d);this.uniqueSeriesIds.add(d.seriesId)}}this.tests={};if(i.tests?.length!=1)throw"must have a single test";const n=i.tests[0];this.tests[s]=[{pvalue:{id:"pvalue",text:n.permutation?n.pvalue+"*":n.pvalue},series1:{id:n.series1},series2:{id:n.series2},permutation:n.permutation}];this.refs={}}setTerm2Color(e){if(!e)return;if(e.length!=1)throw"should be a single chart";const t=e[0];this.term2toColor={};this.colorScale=this.uniqueSeriesIds.size<11?s(i):s(p);const a=[];for(const e of t.serieses){const t=this.config.term2?.term.values?.[e.seriesId]?.color;const s={orig:t||(e.seriesId==""?this.settings.defaultColor:this.colorScale(e.seriesId))};s.rgb=n(s.orig);s.adjusted=s.rgb.toString();this.term2toColor[e.seriesId]=s;if(!a.find((t=>t.seriesId==e.seriesId))){a.push({seriesId:e.seriesId,text:e.seriesLabel,color:this.term2toColor[e.seriesId].adjusted})}}if(this.config.term2&&a.length){this.legendData=[{name:this.config.term2.term.name,items:a}]}else{this.legendData=[]}const r=this.tests[t.chartId];if(r.length!=1)throw"should have one test";const c=r[0];for(const e in c){if(e=="pvalue"){c[e].color="#000"}else if(e.startsWith("series")){const t=a.find((t=>t.seriesId==c[e].id));c[e].color=t.color;c[e].text=t.text}else{continue}}}}class S{constructor(e){this.type="cuminc";this.chartIncrement=0}async init(e){const s=this.opts;const i=this.opts.controls?null:s.holder.append("div");const n=s.controls?s.holder:s.holder.append("div");this.dom={loadingDiv:n.append("div").style("position","absolute").style("display","none").style("padding","20px").html("Loading ..."),header:s.header,controls:i,holder:n,chartsDiv:n.append("div").style("margin","10px"),legendDiv:n.append("div").style("margin","5px"),hiddenDiv:n.append("div").style("margin","5px 5px 15px 5px")};this.tip=new t({padding:"5px"});if(this.dom.header)this.dom.header.html("Cumulative Incidence Plot");this.settings=Object.assign({},this.opts.settings);this.pj=O(this);this.lineFxn=v().curve(u).x((e=>e.scaledX)).y((e=>e.scaledY));C(this);j(this);this.legendRenderer=h(this.dom.legendDiv,{settings:{legendOrientation:"vertical"},handlers:{legend:{click:e=>this.legendClick(e.target.__data__,e.clientX,e.clientY)}}});this.hiddenRenderer=h(this.dom.hiddenDiv,{settings:{legendOrientation:"vertical"},handlers:{legend:{click:e=>this.hideLegendItem(e.target.__data__)}}});await this.setControls(e)}async setControls(e){const t=e.plots.find((e=>e.id===this.id));if(this.opts.controls){this.opts.controls.on("downloadClick.boxplot",this.download)}else{this.dom.holder.attr("class","pp-termdb-plot-viz").style("display","inline-block").style("min-width","300px").style("margin-left","50px");const e=[];for(const s in t.term.term.values){const i=t.term.term.values[s];if(i.uncomputable)continue;e.push({label:i.label,value:s})}const s=structuredClone(o);Object.assign(s,{numeric:{mode:"discrete",type:"custom-bin",preferredBins:"median"}});this.components={controls:await l({app:this.app,id:this.id,holder:this.dom.controls.attr("class","pp-termdb-plot-controls").style("display","inline-block"),inputs:[{type:"term",configKey:"term",chartType:"cuminc",usecase:{target:"cuminc",detail:"term"},vocabApi:this.app.vocabApi,menuOptions:"edit"},{type:"term",configKey:"term2",chartType:"cuminc",usecase:{target:"cuminc",detail:"term2"},title:"Overlay data",label:"Overlay",vocabApi:this.app.vocabApi,numericEditMenuVersion:["discrete"],defaultQ4fillTW:s},{type:"term",configKey:"term0",chartType:"cuminc",usecase:{target:"cuminc",detail:"term0"},title:"Divide by data",label:"Divide by",vocabApi:this.app.vocabApi,numericEditMenuVersion:["discrete"],defaultQ4fillTW:s},{label:"Minimum sample size of series",type:"number",chartType:"cuminc",settingsKey:"minSampleSize"},{label:"Minimum at-risk count of event",type:"number",chartType:"cuminc",settingsKey:"minAtRisk"},{label:"Chart width",type:"number",chartType:"cuminc",settingsKey:"svgw",title:"The internal width of the chart plot"},{label:"Chart height",type:"number",chartType:"cuminc",settingsKey:"svgh",title:"The internal height of the chart plot"},{label:"X-axis ticks",type:"text",chartType:"cuminc",settingsKey:"xTickValues",placeholder:"tick,tick,...",processInput:e=>e?e.split(",").map(Number):[]},{label:"Y-axis ticks",type:"text",chartType:"cuminc",settingsKey:"yTickValues",placeholder:"tick,tick,...",processInput:e=>e?e.split(",").map(Number):[]},{label:"At-risk counts",boxLabel:"Visible",type:"checkbox",chartType:"cuminc",settingsKey:"atRiskVisible",title:"Display the at-risk counts"},{label:"95% confidence interval",boxLabel:"Visible",type:"checkbox",chartType:"cuminc",settingsKey:"ciVisible"},{label:"Default color",type:"color",chartType:"cuminc",settingsKey:"defaultColor"}]})};this.components.controls.on("downloadClick.boxplot",this.download)}}getState(e){const t=e.plots.find((e=>e.id===this.id));if(!t){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{genome:this.app.vocabApi.vocab.genome,dslabel:this.app.vocabApi.vocab.dslabel,activeCohort:e.activeCohort,termfilter:e.termfilter,config:{term:JSON.parse(JSON.stringify(t.term)),term0:t.term0?JSON.parse(JSON.stringify(t.term0)):null,term2:t.term2?JSON.parse(JSON.stringify(t.term2)):null,settings:t.settings.cuminc}}}async main(){try{this.config=structuredClone(this.state.config);if(this.dom.header)this.dom.header.html(this.state.config.term.term.name+' <span style="opacity:.6;font-size:.7em;margin-left:10px;">CUMULATIVE INCIDENCE</span>');if(this.config.term.term.type!="condition")throw"cuminc term is not a condition term";this.toggleLoadingDiv();Object.assign(this.settings,this.config.settings);this.settings.defaultHidden=this.getDefaultHidden();this.settings.hidden=this.settings.customHidden||this.settings.defaultHidden;this.settings.xTitleLabel="Years since diagnosis";const e=this.getDataRequestOpts();const t=await this.app.vocabApi.getNestedChartSeriesData(e);if(t.error)throw t.error;this.toggleLoadingDiv("none");this.app.vocabApi.syncTermData(this.config,t);this.processResults(t);this.pj.refresh({data:this.currData});this.sortSerieses(this.pj.tree.charts);this.setTerm2Color(this.pj.tree.charts);this.render()}catch(e){console.error(e)}}getDataRequestOpts(){const e=this.config;const t={chartType:"cuminc",term:e.term,filter:this.state.termfilter.filter,minSampleSize:e.settings.minSampleSize};if(e.term2)t.term2=e.term2;if(e.term0)t.term0=e.term0;if(this.state.ssid)t.ssid=this.state.ssid;return t}getDefaultHidden(){const e=[];const t=this.config.term2;if(!t)return e;const s=t.q.hiddenValues;if(s&&Object.keys(s).length){for(const i in s){e.push(t.term.values[i].label)}}return e}processResults(e){const t=this.settings;const s=this.config;const i={};const n={};const a=e.lowSampleSize;const r=e.noEvents;this.currData=[];this.uniqueSeriesIds=new Set;this.tests={};this.noData=[];this.refs=e.refs;for(const s in e.data){const a=e.data[s];if(a.estimates){for(const e in a.estimates){const n=a.estimates[e];if(!n.filter((e=>e.nrisk>=t.minAtRisk&&e.est>0)).length){s in r?r[s].push(e):r[s]=[e];continue}s in i?i[s][e]=n:i[s]={[e]:n}}if(!(s in i))this.noData.push(s)}else{this.noData.push(s)}if(a.tests){n[s]=a.tests.filter((e=>e.series1 in i[s]&&e.series2 in i[s]&&!t.hidden.includes(e.series1)&&!t.hidden.includes(e.series2)))}}for(const e in i){const s=i[e];for(const i in s){const n=s[i];for(const s of n){const{time:n,est:a,low:r,up:c,nrisk:o,nevent:l,ncensor:d}=s;const p={chartId:e,seriesId:i,time:n,cuminc:a*100,low:r*100,high:c*100,nrisk:o,nevent:l,ncensor:d};if(p.nrisk<t.minAtRisk){this.currData.push(p);break}this.currData.push(p);this.uniqueSeriesIds.add(p.seriesId)}}}for(const e in n){for(const t of n[e]){const s={pvalue:{id:"pvalue",text:t.permutation?t.pvalue+"*":t.pvalue},series1:{id:t.series1},series2:{id:t.series2},permutation:t.permutation};e in this.tests?this.tests[e].push(s):this.tests[e]=[s]}}this.lowSampleSize={};for(const e in a){this.lowSampleSize[e]=a[e].map((e=>s.term2?.term.values?.[e]?.label||e))}this.noEvents={};for(const e in r){this.noEvents[e]=r[e].map((e=>s.term2?.term.values?.[e]?.label||e))}}sortSerieses(e){if(!e)return;for(const t of e){const e=t.serieses.map((e=>e.seriesId));const s=[...e.filter((e=>!this.settings.defaultHidden.includes(e))),...e.filter((e=>this.settings.defaultHidden.includes(e)))];t.serieses.sort(((e,t)=>s.indexOf(e.seriesId)-s.indexOf(t.seriesId)))}}setTerm2Color(e){if(!e){this.legendData=[];return}this.term2toColor={};this.colorScale=this.uniqueSeriesIds.size<11?s(i):s(p);const t=[];for(const s of e){for(const e of s.serieses){const s=this.config.term2?.term.values?.[e.seriesId]?.color;const i={orig:s||(e.seriesId==""?this.settings.defaultColor:this.colorScale(e.seriesId))};i.rgb=n(i.orig);i.adjusted=i.rgb.toString();this.term2toColor[e.seriesId]=i;if(!t.find((t=>t.seriesId==e.seriesId))){t.push({seriesId:e.seriesId,text:e.seriesLabel,color:this.term2toColor[e.seriesId].adjusted,isHidden:this.settings.hidden.includes(e.seriesId)})}}}if(this.config.term2&&t.length){this.legendData=[{name:this.config.term2.term.name,items:t.filter((e=>!e.isHidden))}];this.hiddenData=[{name:`<span style='color:#aaa; font-weight:400'><span>Hidden categories</span><span style='font-size:0.8rem'> CLICK TO SHOW</span></span>`,items:t.filter((e=>e.isHidden)).map((e=>Object.assign({},e,{isHidden:false})))}]}else{this.legendData=[]}for(const e in this.tests){const s=this.tests[e];for(const e of s){for(const s in e){if(s=="pvalue"){e[s].color="#000"}else if(s.startsWith("series")){const i=t.find((t=>t.seriesId==e[s].id));e[s].color=i.color;e[s].text=i.text}else{continue}}}}}toggleLoadingDiv(e=""){if(e!="none"){this.dom.loadingDiv.style("opacity",0).style("display",e).transition().duration("loadingWait"in this?this.loadingWait:0).style("opacity",1)}else{this.dom.loadingDiv.style("display",e)}this.loadingWait=1e3}}const w=a(S);const T=w;function j(e){e.render=function(){const t=e.pj.tree.charts||[{}];if(e.noData?.length){t.push(...e.noData.map((t=>{let s=t;const i=e.config.term0;if(i.q?.type=="predefined-groupset"||i.q?.type=="custom-groupset")return{chartId:t,chartTitle:s};if(i.term.values){const e=i.term.values[t];if(e&&e.label)s=e.label}return{chartId:t,chartTitle:s}})))}const s=e.dom.chartsDiv.selectAll(".pp-cuminc-chart").data(t,(e=>e.chartId));s.exit().remove();s.each(e.updateCharts);s.enter().each(e.addCharts);e.dom.holder.style("display","inline-block");e.dom.chartsDiv.on("mouseover",e.mouseover).on("mouseout",e.mouseout);e.legendRenderer(e.settings.atRiskVisible?[]:e.legendData);if(!e.hiddenData?.[0]?.items.length||!e.config.term2)e.dom.hiddenDiv.style("display","none");else{e.dom.hiddenDiv.style("display","");e.hiddenRenderer(e.hiddenData)}};e.addCharts=function(n){const a=e.settings;const c=r(this).append("div").attr("class","pp-cuminc-chart").style("opacity",n.serieses?0:1).style("display","inline-block").style("margin",a.chartMargin+"px").style("padding","10px").style("top",0).style("left",0).style("text-align","center").style("vertical-align","top").style("background",n.color);c.append("div").attr("class","sjpcb-cuminc-title").style("text-align","center").style("width",`${a.svgw+50}px`).style("height",a.chartTitleDivHt+"px").style("font-weight","600").style("margin","5px").datum(n.chartId).html(n.chartTitle);if(e.hidePlotTitle)c.select(".sjpcb-cuminc-title").style("display","none");c.append("div").attr("class","pp-cuminc-chart-noData").style("display","none").style("width",`${a.svgw+50}px`).style("margin","40px 5px").text("No cumulative incidence data");if(n.serieses){t(n,a);const e=c.append("svg").attr("class","pp-cuminc-svg");s(e,n,a);c.style("opacity",1)}else{c.select(".pp-cuminc-chart-noData").style("display","block")}c.append("div").attr("class","pp-cuminc-chartLegends").style("vertical-align","top").style("text-align",n.serieses?"left":"center").style("margin",n.serieses?"10px 30px 0px 20px":"0px").style("display","none");if(e.tests&&n.chartId in e.tests){const t=c.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");g({title:"Group comparisons (Gray's test)",holder:t,plot:"cuminc",tests:e.tests[n.chartId],s:a,bins:e.refs.bins})}if(e.noEvents&&n.chartId in e.noEvents){const t=c.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (no events)";i(t,s,e.noEvents[n.chartId],a)}if(e.lowSampleSize&&n.chartId in e.lowSampleSize){const t=c.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (low sample size)";i(t,s,e.lowSampleSize[n.chartId],a)}};function t(e,t){e.visibleSerieses=t.hidden?e.serieses.filter((e=>!t.hidden.includes(e.seriesId))):e.serieses}e.updateCharts=function(n){const a=e.settings;const c=r(this);c.style("background",n.color);c.select(".sjpcb-cuminc-title").style("width",`${a.svgw+50}px`).style("height",a.chartTitleDivHt+"px").datum(n.chartId).html(n.chartTitle);if(e.hidePlotTitle)c.select(".sjpcb-cuminc-title").style("display","none");c.selectAll(".sjpcb-lock-icon").style("display",a.scale=="byChart"?"block":"none");c.selectAll(".sjpcb-unlock-icon").style("display",a.scale=="byChart"?"none":"block");if(n.serieses){c.select(".pp-cuminc-chart-noData").style("display","none");t(n,a);s(c.select("svg"),n,a)}else{c.select(".pp-cuminc-chart-noData").style("display","block").style("width",`${a.svgw+50}px`);c.select("svg").remove();c.select(".pp-cuminc-chartLegends").style("text-align","center").style("margin","0px")}c.select(".pp-cuminc-chartLegends").selectAll("*").remove();if(e.tests&&n.chartId in e.tests){const t=c.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");g({title:"Group comparisons (Gray's test)",holder:t,plot:"cuminc",tests:e.tests[n.chartId],s:a,bins:e.refs.bins})}if(e.noEvents&&n.chartId in e.noEvents){const t=c.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (no events)";i(t,s,e.noEvents[n.chartId],a)}if(e.lowSampleSize&&n.chartId in e.lowSampleSize){const t=c.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (low sample size)";i(t,s,e.lowSampleSize[n.chartId],a)}};function s(t,s,i){const o=i.atRiskVisible?i.axisTitleFontSize+4+s.visibleSerieses.length*2*i.axisTitleFontSize:0;t.attr("width",i.svgw).attr("height",i.svgh+o).style("overflow","visible").style("padding-left","20px");const[l,d,p,h,m,u,g,y,v,x,b]=n(t);l.attr("x",0).attr("width",i.svgw-i.svgPadding.left-i.svgPadding.right).attr("y",0).attr("height",i.svgh-i.svgPadding.top-i.svgPadding.bottom+i.xAxisOffset);const I=i.svgPadding.left;p.attr("transform","translate("+I+","+i.svgPadding.top+")");const k=h.selectAll(".sjpcb-cuminc-series").data(s.visibleSerieses,(e=>e&&e[0]?e[0].seriesId:""));k.exit().remove();k.each((function(e,t){a(r(this),e,i)}));k.enter().append("g").attr("class","sjpcb-cuminc-series").each((function(e,t){a(r(this),e,i)}));c(u,y,g,v,i,s);f({g:x,s:i,chart:s,term2values:e.config.term2?.values,term2toColor:e.term2toColor,onSerieClick:e.legendClick});b.attr("x",0).attr("width",i.svgw-i.svgPadding.left-i.svgPadding.right).attr("y",0).attr("height",i.svgh-i.svgPadding.top-i.svgPadding.bottom+i.xAxisOffset);t.seriesTip.update({xScale:s.xScale,xTitleLabel:i.xTitleLabel,decimals:i.seriesTipDecimals,serieses:s.visibleSerieses.map((t=>{const s=t.seriesLabel?`${t.seriesLabel}:`:"Cumulative Incidence:";const i=e.term2toColor[t.seriesId].adjusted;return{data:t.data.map((e=>({x:e.x,html:`<span style='color: ${i}'>`+`${s} ${e.y.toFixed(2)} (${e.low.toFixed(2)} - ${e.high.toFixed(2)})`+`</span>`})))}}))})}function i(e,t,s,i){const n=i.axisTitleFontSize-2;e.selectAll("*").remove();e.append("div").style("padding-bottom","5px").style("font-size",n+"px").style("font-weight","bold").text(t);const a=e.append("div").style("padding-bottom","5px").style("font-size",n+"px");a.selectAll("div").data(s).enter().append("div").attr("class","pp-cuminc-chartLegends-skipped").text((e=>e))}function n(t,s){let i,n,a,r,c,o,l,d,p,h,m,u;if(!t.select(".sjpcb-cuminc-mainG").size()){const s=`${e.id}-${e.chartIncrement++}`;i=t.append("defs").append("clipPath").attr("id",s).append("rect");n=t.append("g").attr("class","sjpcb-cuminc-clipG");a=t.append("g").attr("class","sjpcb-cuminc-mainG").attr("data-testid","sja-cuminc-main-g");r=a.append("g").attr("class","sjpcb-cuminc-seriesesG").attr("clip-path",`url(#${s})`);c=a.append("g").attr("class","sjpcb-cuminc-axis");o=c.append("g").attr("class","sjpcb-cuminc-x-axis");l=c.append("g").attr("class","sjpcb-cuminc-y-axis");d=c.append("g").attr("class","sjpcb-cuminc-x-title");p=c.append("g").attr("class","sjpcb-cuminc-y-title");h=a.append("g").attr("class","sjpp-cuminc-atrisk");u=a.append("line").attr("class","sjpcb-plot-tip-line").attr("stroke","#000").attr("stroke-width","2px");m=a.append("rect").attr("class","sjpcb-plot-tip-rect").style("fill","transparent")}else{i=t.select("defs clipPath rect");n=t.select(".sjpcb-cuminc-clipG");a=t.select(".sjpcb-cuminc-mainG");r=a.select(".sjpcb-cuminc-seriesesG");c=a.select(".sjpcb-cuminc-axis");o=c.select(".sjpcb-cuminc-x-axis");l=c.select(".sjpcb-cuminc-y-axis");d=c.select(".sjpcb-cuminc-x-title");p=c.select(".sjpcb-cuminc-y-title");h=a.select(".sjpp-cuminc-atrisk");m=a.select(".sjpcb-plot-tip-rect");u=a.select(".sjpcb-plot-tip-line")}if(!t.seriesTip){t.seriesTip=y(u,m,e.app?.tip)}return[i,n,a,r,c,o,l,d,p,h,m]}function a(t,s,i){t.selectAll("path").remove();t.append("path").attr("d",e.lineFxn(s.data.map((e=>({scaledX:e.scaledX,scaledY:e.scaledY[0]}))))).style("fill","none").style("stroke",e.term2toColor[s.seriesId].adjusted).style("stroke-width",2).style("stroke-linecap","square").style("opacity",1).style("stroke-opacity",1);t.append("path").attr("d",x().curve(u).x((e=>e.scaledX)).y0((e=>e.scaledY[1])).y1((e=>e.scaledY[2]))(s.data)).style("display",i.ciVisible?"":"none").style("fill",e.term2toColor[s.seriesId].adjusted).style("opacity","0.15").style("stroke","none")}function c(e,t,s,i,n,a){const r=b(a.xScale).tickValues(a.xTickValues);const c=I(a.yScale).tickValues(a.yTickValues);const o=-.5;e.attr("transform",`translate(${o}, ${n.svgh-n.svgPadding.top-n.svgPadding.bottom+n.xAxisOffset+o})`).call(r);s.attr("transform",`translate(${n.yAxisOffset+o}, ${o})`).call(c);t.select("text, title").remove();t.attr("transform","translate("+(n.svgw-n.svgPadding.left-n.svgPadding.right)/2+","+(n.svgh-n.axisTitleFontSize-4)+")").append("text").style("text-anchor","middle").style("font-size",n.axisTitleFontSize+"px").text(n.xTitleLabel);const l="Cumulative Incidence (%)";i.select("text, title").remove();i.attr("transform","translate("+(-n.svgPadding.left/2-n.axisTitleFontSize)+","+(n.svgh-n.svgPadding.top-n.svgPadding.bottom)/2+")rotate(-90)").append("text").style("text-anchor","middle").style("font-size",n.axisTitleFontSize+"px").text(l)}}function C(e){e.mouseover=function(e){e.target.__data__};e.mouseout=function(){e.app.tip.hide()};e.legendClick=function(t,s,i){if(t===undefined)return;const a=e.tip.clear();if(e.config.term2==null){const t=n(e.settings.defaultColor).formatHex();const r=a.d.append("div").attr("class","sja_sharp_border").style("padding","0px 10px").text("Edit color:");const c=r.append("input").attr("type","color").attr("value",t).on("change",(()=>{const t=c.node().value;e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{cuminc:{defaultColor:t}}}});a.hide()}));a.show(s,i);return}if(!t.seriesId)return;a.d.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Hide`).on("click",(async s=>{a.hide();e.hideLegendItem(t)}));let r=e.term2toColor[t.seriesId]?.adjusted;if(r){r=n(r).formatHex();const s=a.d.append("div").attr("class","sja_sharp_border").style("padding","0px 10px").text("Edit color:");const i=s.append("input").attr("type","color").attr("value",r).on("change",(()=>{const s=e.config.term2;const n=structuredClone(s);if(!n.term.values)n.term.values={[t.seriesId]:{}};else if(!n.term.values[t.seriesId])n.term.values[t.seriesId]={};n.term.values[t.seriesId].color=i.node().value;e.app.dispatch({type:"plot_edit",id:e.id,config:{term2:n}});a.hide()}))}a.show(event.clientX,event.clientY)};e.hideLegendItem=function(t){const s=e.settings.hidden.slice();const i=s.indexOf(t.seriesId);i==-1?s.push(t.seriesId):s.splice(i,1);e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{cuminc:{customHidden:s}}}})}}const D=JSON.stringify({controls:{term2:null,term0:null},cuminc:{minSampleSize:10,minAtRisk:10,atRiskVisible:true,atRiskLabelOffset:-10,seriesTipDecimals:0,ciVisible:true,radius:5,fill:"#fff",stroke:"#000",fillOpacity:0,chartMargin:10,svgw:400,svgh:300,svgPadding:{top:20,left:55,right:20,bottom:50},axisTitleFontSize:16,xAxisOffset:5,yAxisOffset:-5,defaultColor:"#2077b4"}});async function _(t,s){if(!t.term)throw"cuminc: opts.term{} missing";try{await d(t.term,s.vocabApi,{condition:{mode:"cuminc"}});if(t.term2)await d(t.term2,s.vocabApi);if(t.term0)await d(t.term0,s.vocabApi)}catch(e){throw`${e} [cuminc getPlotConfig()]`}const i={id:t.term.term.id,settings:JSON.parse(D)};return e(i,t)}function O(e){const t=new m({template:{xMin:">=x()",xMax:"<=x()",yMin:">=yMin()",yMax:"<=yMax()",charts:[{chartId:"@key",chartTitle:"=chartTitle()",xMin:">=x()",xMax:"<=x()","__:xTickValues":"=xTickValues()","__:yTickValues":"=yTickValues()","__:xScale":"=xScale()","__:yScale":"=yScale()",yMin:">=yMin()",yMax:"<=yMax()",serieses:[{chartId:"@parent.@parent.@key",seriesId:"@key","__:seriesLabel":"=seriesLabel()",data:[{"__:seriesId":"@parent.@parent.seriesId",x:"$time",y:"$cuminc",low:"$low",high:"$high","_1:scaledX":"=scaledX()","_1:scaledY":"=scaledY()",nrisk:"$nrisk",nevent:"$nevent",ncensor:"$ncensor"},"$time"]},"$seriesId"],"@done()":"=sortSerieses()"},"$chartId"]},"=":{chartTitle(t){if(!e.state?.config?.term)return t.chartId;e.settings;const s=e.config.term.q.breaks[0];if(!t.chartId||t.chartId=="-"){return s==5?"CTCAE grade 5":`CTCAE grade ${s}-5`}const i=e.config.term0;if(!i||!i.term.values)return t.chartId;if(i.q?.type=="predefined-groupset"||i.q?.type=="custom-groupset")return t.chartId;const n=e.config.term0.term.values[t.chartId];return n&&n.label?n.label:t.chartId},seriesLabel(t,s){const i=e.config?.term2;if(!i)return s.self.seriesId;const n=s.self.seriesId;if(i?.q?.type=="predefined-groupset"||i?.q?.type=="custom-groupset")return n;if(i&&i.term.values&&n in i.term.values)return i.term.values[n].label;return n},x(t){if(e.settings.hidden?.includes(t.seriesId))return;return t.time},yMin(t){if(e.settings.hidden?.includes(t.seriesId))return;return e.settings.ciVisible?t.low:t.cuminc},yMax(t){if(e.settings.hidden?.includes(t.seriesId))return;return e.settings.ciVisible?t.high:t.cuminc},xTickValues(t,s){const i=e.settings;if(i.xTickValues?.length){return i.xTickValues}else{const e=s.root.xMin;const t=s.root.xMax;return A(e,t)}},xScale(t,s){const i=e.settings;const n=Math.min(...s.self.xTickValues);const a=Math.max(...s.self.xTickValues);return c().domain([n,a]).range([0,i.svgw-i.svgPadding.left-i.svgPadding.right])},scaledX(e,t){const s=t.context.context.context.parent.xScale.clamp(false);return s(t.self.x)},yTickValues(t,s){const i=e.settings;if(i.yTickValues?.length){return i.yTickValues}else{const e=s.root.yMin;const t=s.root.yMax;return A(e,t)}},yScale(t,s){const i=e.settings;const n=Math.min(...s.self.yTickValues);const a=Math.max(...s.self.yTickValues);return c().domain([a,n]).range([0,i.svgh-i.svgPadding.top-i.svgPadding.bottom])},scaledY(e,t){const s=t.context.context.context.parent.yScale.clamp(false);const i=t.self;return[s(i.y),s(i.low),s(i.high)]},sortSerieses(t){if(!e.refs.bins)return;const s=e.refs.bins.map((e=>e.label));t.serieses.sort(((e,t)=>s.indexOf(e.seriesId)-s.indexOf(t.seriesId)))}}});return t}function A(e,t){const s=(t-e)/5;const i=Math.floor(Math.log10(s));const n=Math.round(s/(5*10**i))*(5*10**i)||1*10**i;const a=[];let r=e;while(r<=Math.min(100,t+n)){a.push(r);r=r+n}if(!a.includes(0))a.unshift(0);return a}export{k as Cuminc,T as componentInit,w as cumincInit,_ as getPlotConfig};
@@ -1 +0,0 @@
1
- import{P as e}from"./app-b369b169.js";import{getPlotConfig as t}from"./matrix.config-6ce74dfe.js";import{T as r,f as s}from"./termsetting-33ea66f1.js";import"./matrix.sort-014d798d.js";import"./tslib.es6-c3c2d88f.js";import"path";async function i(i={},a){i.chartType="hierCluster";const o=await t(i,a);delete o.genes;o.settings.hierCluster={dataType:o.dataType,clusterSamples:true,clusterMethod:"average",distanceMethod:"euclidean",zScoreCap:5,xDendrogramHeight:100,yDendrogramHeight:200,colorScale:"blueWhiteRed"};const n=a.vocabApi.termdbConfig.hierCluster||{};e(o.settings.hierCluster,n.settings,i.settings?.hierCluster||{});{const e=o.settings.hierCluster.colorScale;if(!e)throw"colorScale missing"}o.settings.matrix.collabelpos="top";const p=o.settings.hierCluster.termGroupName;const m=o.termgroups.find((e=>e.type=="hierCluster"||e.name==p))||{name:p};m.type="hierCluster";if(!m.lst?.length){if(!Array.isArray(i.terms))throw"opts.terms[] not array (may show geneset edit ui)";const e=[];for(const t of i.terms){const i=t.term?t:{term:t};if(!i.term.type){if(o.dataType==r.GENE_EXPRESSION||o.dataType==r.METABOLITE_INTENSITY){i.term.type=o.dataType}else{throw`term type missing and cannot be assigned by dataType`}}else if(!["geneExpression","metaboliteIntensity","float"].includes(i.term.type)){throw"term type not supported in hierCluster"}else if(o.dataType&&i.term.type!==o.dataType){throw`cannot have term type ${i.term.type} in ${o.dataType} term group`}e.push(s(i,a.vocabApi))}m.lst=await Promise.all(e);if(o.termgroups.indexOf(m)==-1)o.termgroups.unshift(m)}o.settings.matrix.maxSample=1e5;return o}export{i as getPlotConfig};
@@ -1 +0,0 @@
1
- import{j as t}from"./termsetting-33ea66f1.js";function n(n){const o=n.sort(((t,n)=>t-n));const s=Math.abs(o[0]-o[o.length-1]);const e=t(s);const r=s>=10?0:s>=1?1:e+2;return n.map((t=>Number(t.toFixed(r))))}export{n};
@@ -1 +0,0 @@
1
- import{appInit as t}from"./plot.app-30c4b8e5.js";import{d as e,P as r,b as i}from"./app-b369b169.js";import{f as s}from"./termsetting-33ea66f1.js";import{v as a}from"./FilterRxComp-701a1480.js";import"./recover-49e09de0.js";import"./FilterStateless-54c0b763.js";import"./app-3320ab6f.js";import"./termInfo-bf99a37e.js";import"./tslib.es6-c3c2d88f.js";import"./toggleButtons-dbdbad01.js";import"path";import"./table-29d5a973.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-8b656cc3.js";import"./genesearch-a4e19f0d.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";const o="hg38";const n="GDC";async function p(i,p,c){const m=c[o];try{if(!m)throw o+" missing";const p=i.settings||{};if(typeof p!="object")throw"arg.settings{} not object";if(!p.matrix)p.matrix={};if(typeof p.matrix!="object")throw"arg.settings.matrix{} not object";if(!p.matrix.geneFilter)p.matrix.geneFilter="CGC";if(!Number.isInteger(p.matrix.maxGenes))p.matrix.maxGenes=50;if(i.filter0&&typeof i.filter0!="object")throw"arg.filter0 not object";const c=await a({state:{vocab:{genome:o,dslabel:n}}});c.getTermdbConfig();const f=await t({holder:e(i.holder).select(".sja_root_holder"),genome:m,state:{genome:o,dslabel:n,termfilter:{filter0:i.filter0},plots:[{chartType:"geneset",toolName:"OncoMatrix",settings:{maxGenes:p.matrix.maxGenes,geneFilter:p.matrix.geneFilter}}]},app:i.opts?.app||{},geneset:{mode:"geneVariant",genome:m,genes:i.genes,reactsTo(t){if(t.type.startsWith("plot_"))return t.id===this.id;if(t.type.startsWith("filter"))return true;if(t.type=="app_refresh")return true},showWaitMessage(t){t.style("margin","20px");t.append("div").text("Loading the top mutated genes in the current cohort...")},async callback(t,e){if(!t)return;g=t;if(!d){const t=f.getState().plots.find((t=>t.chartType=="matrix"));if(t)d=f.getComponents(`plots.${t.id}`)}const r=[...i.termgroups||[],{lst:e}];if(d){f.dispatch({type:"plot_edit",id:d.id,config:{termgroups:r}})}else{f.dispatch({type:"plot_create",config:{chartType:"matrix",termgroups:r,divideBy:i.divideBy||undefined,settings:p}})}}},recover:{undoHtml:"Undo",redoHtml:"Redo",resetHtml:"Restore",hide(t){return t.plots[0]?.chartType!="matrix"},adjustTrackedState:t=>{const e=structuredClone(t);delete e.termfilter.filter0;if(e.plots){for(const t of e.plots){if(!t.termgroups)continue;for(const e of t.termgroups){if(!e.lst)continue;for(const t of e.lst){if(!t?.term)continue;delete t.term.category2samplecount;delete t.term.values}}}}return e}},matrix:r({reactsTo(t){if(t.type.startsWith("plot_"))return t.id===this.id;if(t.type.startsWith("filter"))return true;if(t.type=="app_refresh")return true},customInputs:{genes:[{label:`Maximum # Genes`,title:"Limit the number of displayed genes",type:"number",chartType:"matrix",settingsKey:"maxGenes",callback:async t=>{for(const t in i.opts?.app?.callbacks){if(t.startsWith("preDispatch")){i.opts?.app?.callbacks[t]();break}}const e=await l(i,{maxGenes:t,geneFilter:p.matrix.geneFilter},c);u.update({termgroups:[{lst:e}],settings:{matrix:{maxGenes:t}}})}}]},callbacks:{"firstRender.gdcMatrix":async t=>{t.on("firstRender.gdcMatrix",null);if(!g)return;f.dispatch({type:"plot_delete",id:g.id});g=undefined}}},i.opts?.matrix||{})});let d,g;const u={update:async t=>{if(!d){const t=f.getState().plots.find((t=>t.chartType=="matrix"));if(t)d=f.getComponents(`plots.${t.id}`)}if(t.genes){f.dispatch({type:"plot_edit",id:d.id,config:{termgroups:[{lst:await Promise.all(t.genes.map((async t=>await s({term:{gene:t.gene,type:"geneVariant",name:t.gene}},c))))}]}})}else if("filter0"in t){f.dispatch({type:"filter_replace",filter0:t.filter0})}else if(d){f.dispatch({type:"plot_edit",id:d.id,config:t})}}};return u}catch(t){throw t}}async function l(t,e,r){const a={maxGenes:e.maxGenes,geneFilter:e.geneFilter};if(t.filter0)a.filter0=t.filter0;const o=await i("gdc/topMutatedGenes",{body:a});if(o.error)throw o.error;if(!o.genes)return;return await Promise.all(o.genes.map((async t=>await s({term:{gene:t.gene,type:"geneVariant"}},r))))}export{p as init};
@@ -1 +0,0 @@
1
- import{o as t,M as s,y as r}from"./app-b369b169.js";import{s as e,r as o}from"./recover-49e09de0.js";import{v as i}from"./FilterRxComp-701a1480.js";import"./termsetting-33ea66f1.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./FilterStateless-54c0b763.js";import"./app-3320ab6f.js";import"./termInfo-bf99a37e.js";import"./toggleButtons-dbdbad01.js";import"./table-29d5a973.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-8b656cc3.js";import"./genesearch-a4e19f0d.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";function a(t){switch(t){case"../plots/DEanalysis.js":return import("./DEanalysis-95bad59a.js");case"../plots/Disco.js":return import("./Disco-a6e921a0.js");case"../plots/DziViewer.js":return import("./DziViewer-354a790d.js");case"../plots/WSIViewer.js":return import("./WSIViewer-dc7f8eb0.js");case"../plots/barchart.data.js":return import("./FilterRxComp-701a1480.js").then((function(t){return t.j}));case"../plots/barchart.events.js":return import("./barchart.events-da29c90d.js");case"../plots/barchart.js":return import("./barchart-8277ed43.js");case"../plots/bars.renderer.js":return import("./bars.renderer-dcfdd59b.js");case"../plots/bars.settings.js":return import("./bars.settings-64bb4642.js");case"../plots/boxplot.js":return import("./boxplot-e17a17b7.js");case"../plots/brainImaging.js":return import("./brainImaging-bf2ceee9.js");case"../plots/controls.btns.js":return import("./controls.btns-79b805dd.js");case"../plots/controls.config.js":return import("./controls.config-28d6d6a8.js");case"../plots/controls.js":return import("./controls-287e6efa.js");case"../plots/cuminc.js":return import("./cuminc-9e275854.js");case"../plots/dataDownload.js":return import("./dataDownload-3a3d4f33.js");case"../plots/dictionary.js":return import("./dictionary-c5a19d90.js");case"../plots/facet.js":return import("./facet-a9b44ef3.js");case"../plots/geneExpression.js":return import("./geneExpression-589f485b.js");case"../plots/geneORA.js":return import("./geneORA-903a780f.js");case"../plots/geneset.js":return import("./geneset-108a39d2.js");case"../plots/genomeBrowser.controls.js":return import("./genomeBrowser.controls-d5067811.js");case"../plots/genomeBrowser.js":return import("./genomeBrowser-12f86a36.js");case"../plots/gsea.js":return import("./gsea-543dab25.js");case"../plots/hierCluster.config.js":return import("./hierCluster.config-98e82dff.js");case"../plots/hierCluster.interactivity.js":return import("./hierCluster.interactivity-e56f6542.js").then((function(t){return t.i}));case"../plots/hierCluster.js":return import("./hierCluster-26e14090.js");case"../plots/hierCluster.renderers.js":return import("./hierCluster.renderers-74a64cf5.js").then((function(t){return t.r}));case"../plots/imagePlot.js":return import("./imagePlot-b9eae4ae.js");case"../plots/matrix.cells.js":return import("./matrix.cells-914dd0c6.js");case"../plots/matrix.cluster.js":return import("./matrix.cluster-783ceab0.js");case"../plots/matrix.config.js":return import("./matrix.config-6ce74dfe.js");case"../plots/matrix.controls.js":return import("./matrix.controls-7b2a6f95.js");case"../plots/matrix.data.js":return import("./matrix.data-dac4f1b7.js").then((function(t){return t.m}));case"../plots/matrix.dom.js":return import("./matrix.dom-4e10bbe9.js");case"../plots/matrix.groups.js":return import("./matrix.groups-b9fca14a.js").then((function(t){return t.m}));case"../plots/matrix.interactivity.js":return import("./matrix.interactivity-84169b43.js");case"../plots/matrix.js":return import("./matrix-00bb50ff.js");case"../plots/matrix.layout.js":return import("./matrix.layout-dd5a44fd.js").then((function(t){return t.m}));case"../plots/matrix.legend.js":return import("./matrix.legend-ac6d45e6.js").then((function(t){return t.m}));case"../plots/matrix.renderers.js":return import("./matrix.renderers-78010275.js");case"../plots/matrix.serieses.js":return import("./matrix.serieses-9b4fd744.js").then((function(t){return t.m}));case"../plots/matrix.sort.js":return import("./matrix.sort-014d798d.js");case"../plots/matrix.sorterUi.js":return import("./matrix.sorterUi-9bf7e6f9.js");case"../plots/plot.app.js":return Promise.resolve().then((function(){return c}));case"../plots/plot.brainImaging.js":return import("./plot.brainImaging-2ceb6023.js");case"../plots/plot.disco.js":return import("./plot.disco-6011f87f.js");case"../plots/plot.ssgq.js":return import("./plot.ssgq-5581dc56.js");case"../plots/profileBarchart.js":return import("./profileBarchart-0476f1f8.js");case"../plots/profilePlot.js":return import("./profilePlot-c7e099e8.js");case"../plots/profilePolar.js":return import("./profilePolar-6b981e63.js");case"../plots/profileRadar.js":return import("./profileRadar-bca1cc03.js");case"../plots/profileRadarFacility.js":return import("./profileRadarFacility-bbb1ecd8.js");case"../plots/profileSummary.js":return import("./profileSummary-b114204f.js");case"../plots/regression.inputs.js":return import("./regression.inputs-a761f40d.js").then((function(t){return t.b}));case"../plots/regression.inputs.term.js":return import("./regression.inputs-a761f40d.js").then((function(t){return t.a}));case"../plots/regression.inputs.values.table.js":return import("./regression.inputs.values.table-5929d25a.js");case"../plots/regression.js":return import("./regression.inputs-a761f40d.js").then((function(t){return t.r}));case"../plots/regression.results.js":return import("./regression.results-69bc42d0.js").then((function(t){return t.r}));case"../plots/sampleScatter.interactivity.js":return import("./sampleScatter-2d0ed680.js").then((function(t){return t.a}));case"../plots/sampleScatter.js":return import("./sampleScatter-2d0ed680.js").then((function(t){return t.b}));case"../plots/sampleScatter.renderer.js":return import("./sampleScatter-2d0ed680.js").then((function(t){return t.s}));case"../plots/sampleScatter.rendererThree.js":return import("./sampleScatter.rendererThree-0b12ac61.js").then((function(t){return t.c}));case"../plots/sampleView.js":return import("./sampleView-484ab133.js");case"../plots/scatter.js":return import("./scatter-205e013f.js");case"../plots/singleCellPlot.js":return import("./singleCellPlot-73b2738f.js");case"../plots/stattable.js":return import("./stattable-7c5ecc2f.js");case"../plots/summary.js":return import("./summary-5ec455d3.js");case"../plots/survival.js":return import("./survival-92250664.js");case"../plots/table.js":return import("./table-ad744310.js");case"../plots/variantBrowser.js":return import("./variantBrowser-7c540224.js");case"../plots/violin.interactivity.js":return import("./violin.interactivity-4da6d7a9.js");case"../plots/violin.js":return import("./violin-2ba509eb.js");case"../plots/violin.renderer.js":return import("./violin.renderer-ce024265.js");default:return new Promise((function(s,r){(typeof queueMicrotask==="function"?queueMicrotask:setTimeout)(r.bind(null,new Error("Unknown variable dynamic import: "+t)))}))}}class n{constructor(t){this.type="app";const s=t.violin?.mode=="minimal"?null:t.holder.append("div").style("white-space","nowrap");this.dom={holder:t.holder,errdiv:t.holder.append("div"),plotDiv:t.holder.append("div")};if(s){this.dom.plotControls=s.append("div").style("display","inline-block");this.dom.recoverControls=s.append("div").style("display","inline-block")}}validateOpts(t={}){if(!t.holder)throw`missing opts.holder in the MassApp constructor argument`;if(!t.callbacks)t.callbacks={};return t}async preApiFreeze(t){try{t.tip=new s({padding:"5px"});t.printError=t=>this.printError(t);const r=this.opts.state.vocab;t.vocabApi=this.opts.vocabApi?this.opts.vocabApi:await i({app:t,state:{vocab:{genome:r?.genome||this.opts.state.genome,dslabel:r?.dslabel||this.opts.state.dslabel,terms:r?.terms}},fetchOpts:this.opts.fetchOpts});this.opts.state.vocab=t.vocabApi.vocab}catch(t){throw t}}async init(){try{this.opts.state.nav={header_mode:"hidden"};this.store=await e({app:this.api,state:this.opts.state});this.state=await this.store.copyState();this.components={plots:{}};if(this.opts.app?.features?.includes("recover"))this.components.recover=await o({app:this.api,holder:this.dom.recoverControls,getState:t=>t,maxHistoryLen:10});await this.api.dispatch()}catch(t){this.printError(t);throw t}}async main(){this.api.vocabApi.main();for(const t in this.components.plots){const s=this.components.plots[t];if(!this.state.plots.find((t=>t.id===s.id))){s.destroy();delete this.components.plots[t]}}for(const[t,s]of this.state.plots.entries()){if(!this.components.plots[s.id]){const t=this.opts?.app?.getPlotHolder?this.opts.app.getPlotHolder(s,this.dom.holder):this.dom.holder.append("div");if(!this.dom.plotDiv)this.dom.plotDiv=t;const r=await a(`../plots/${s.chartType}.js`);const e=await r.componentInit({id:s.id,app:this.api,holder:t,controls:this.dom.plotControls});this.components.plots[s.id]=e}}}printError(t){r(this.dom.errdiv,"Error: "+(t.message||t));if(t.stack)console.log(t.stack);this.bus.emit("error")}destroy(){this.dom.holder.selectAll("*").remove()}}const p=t(n);var c=Object.freeze({__proto__:null,appInit:p});export{p as appInit};
@@ -1 +0,0 @@
1
- import{Z as t,U as a,ah as e,I as o,W as n,ag as i}from"./app-b369b169.js";import{c as l}from"./axis-747c801e.js";function r(a,e,o,n){const i=t({x:n.left+200,y:n.top});i.body.style("padding","10px");i.header.html(o);a.sort(((t,a)=>a.size-t.size));s({lst:a,holder:i.body,barcolor:e,limit:Math.min(a.length,20)})}function s(t){t.holder.selectAll("*").remove();const r=t.holder.append("div").style("margin-bottom","10px");r.append("button").text("more").on("click",(()=>{t.limit=Math.min(t.lst.length,t.limit+10);s(t)}));r.append("button").text("less").on("click",(()=>{t.limit=Math.max(1,t.limit-10);s(t)}));r.append("button").text("screenshot").on("click",(()=>a(b.node(),"barplot")));let m=20,c=300,d=5,p=m+5,h=m/8,x=0,f=0;const b=t.holder.append("svg");const g=b.append("g");for(let a=0;a<t.limit;a++){let o=t.lst[a];f=Math.max(f,o.size);b.append("text").text(o.name).attr("font-size",m-2).attr("font-family",e).each((function(){x=Math.max(x,this.getBBox().width)})).remove()}b.attr("width",x+d+c+d).attr("height",p+d+t.limit*(m+h));g.attr("transform","translate("+(x+d)+","+p+")").call(l().scale(o().domain([0,f]).range([0,c])).tickFormat(n("d")));i({axis:g,showline:true,fontsize:m*.8,color:"black"});let y=p+d;const u=c/f;for(let a=0;a<t.limit;a++){const o=t.lst[a];b.append("text").text(o.name).attr("x",x).attr("y",y+m/2).attr("text-anchor","end").attr("font-size",m-2).attr("font-family",e).attr("dominant-baseline","central");b.append("rect").attr("x",x+d).attr("y",y).attr("width",u*o.size).attr("height",m-1).attr("fill",t.barcolor);y+=m+h}}export{r as default};
@@ -1 +0,0 @@
1
- import{P as t,h as e}from"./app-b369b169.js";import{m as s}from"./termsetting-33ea66f1.js";import{getDefaultProfilePlotSettings as o,loadFilterTerms as r,profilePlot as i}from"./profilePlot-c7e099e8.js";import{r as a}from"./table-29d5a973.js";import{d as n}from"./arc-3d6751aa.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./svg.download-35926549.js";import"./FilterRxComp-701a1480.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-8b656cc3.js";import"./controls-287e6efa.js";import"./controls.btns-79b805dd.js";import"./controls.config-28d6d6a8.js";import"./recover-49e09de0.js";import"./FilterStateless-54c0b763.js";import"./app-3320ab6f.js";import"./termInfo-bf99a37e.js";import"./toggleButtons-dbdbad01.js";import"./genesearch-a4e19f0d.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";import"./constant-426a1483.js";import"./math-2fb199c6.js";class l extends i{constructor(){super();this.type="profilePolar";this.radius=250}async init(t){await super.init(t);const e=t.plots.find((t=>t.id===this.id));this.twLst=[];for(const[t,s]of e.terms.entries()){this.twLst.push(s.score);this.twLst.push(s.maxScore)}this.arcGenerator=n().innerRadius(0)}async main(){await super.main();await this.setControls();this.angle=Math.PI*2/this.config.terms.length;this.plot()}onMouseOut(t){if(t.target.tagName=="path"){const e=t.target;e.setAttribute("stroke","white");if(e.getAttribute("stroke-opacity")==0)e.setAttribute("stroke-opacity",1)}this.tip.hide()}onMouseOver(t){if(t.target.tagName=="path"){const e=t.target;e.setAttribute("stroke-opacity",0);const s=e.__data__;const o=this.tip.clear();const r=this.getPercentage(s);o.d.text(`${s.module} ${r}%`);o.show(t.clientX,t.clientY,true,true)}else this.onMouseOut(t)}plot(){const t=this.config;this.dom.plotDiv.selectAll("*").remove();const e=1e3;const s=700;this.svg=this.dom.plotDiv.append("div").style("display","inline-block").append("svg").attr("width",e).attr("height",s);this.dom.tableDiv=this.dom.plotDiv.append("div").style("display","inline-block").style("vertical-align","top").style("margin","45px 20px");if(!this.settings.comparison)this.svg.append("text").attr("transform",`translate(130, ${40})`).attr("font-weight","bold").text(t.title);const o=[];const r=[{label:"Color"},{label:"Module"},{label:"Score",align:"center"}];const i=this.radius;const n=280;const l=330;const c=this.svg.append("g").attr("transform",`translate(${n},${l})`);this.polarG=c;this.legendG=this.svg.append("g").attr("transform",`translate(${n+280}, ${l-200})`);this.filterG=this.svg.append("g").attr("transform",`translate(${n+260},${l+170})`);for(let t=0;t<=10;t++)h(t*10);const p=this.angle;let d=0;for(let e of t.terms){const t=e.module;e.i=d;const s=e.score.term.color;const r=this.getPercentage(e);o.push([{color:s,disabled:true},{value:t},{value:r}]);c.append("g").append("path").datum(e).attr("fill",s).attr("stroke","white").attr("d",this.arcGenerator({outerRadius:r/100*i,startAngle:d*p,endAngle:(d+1)*p})).on("click",(t=>this.onMouseOver(t)));d++}this.dom.tableDiv.selectAll("*").remove();if(this.settings.showTable)a({rows:o,columns:r,div:this.dom.tableDiv,showLines:true,resize:true,maxHeight:"50vh"});h(50,"C");h(75,"B");h(100,"A");for(let t=0;t<=10;t++){const e=t*10;c.append("text").attr("transform",`translate(-10, ${-e/100*i+5})`).attr("text-anchor","end").style("font-size","0.8rem").text(`${e}%`).attr("pointer-events","none")}this.legendG.append("text").attr("text-anchor","left").style("font-weight","bold").text("Overall Score").attr("transform",`translate(0, -5)`);this.addLegendItem("A","More than 75% of possible scorable items",1);this.addLegendItem("B","50-75% of possible scorable items",2);this.addLegendItem("C","Less than 50% of possible scorable items",3);this.addFilterLegend();function h(t,e=null){const s=c.append("circle").attr("r",t/100*i).style("fill","none").style("opacity","0.5");if(t!=50)s.style("stroke","#aaa");if(e){if(t!=100)s.style("stroke-dasharray","5, 5").style("stroke-width","2").style("stroke","black");c.append("text").attr("transform",`translate(15, ${-(t/100-.125)*i+10})`).attr("text-anchor","middle").text(e).style("font-weight","bold").style("font-size","24px").attr("pointer-events","none")}}}}async function c(e,i){try{const a=i.vocabApi.termdbConfig?.chartConfigByType?.profilePolar;a.settings={profilePolar:o()};if(!a)throw"default config not found in termdbConfig.chartConfigByType.profilePolar";const n=t(structuredClone(a),e);n.settings.controls={isOpen:false};const l=[];for(const t of n.terms){const e=t.score;const s=t.maxScore;e.q={mode:"continuous"};s.q={mode:"continuous"};l.push(e);l.push(s)}await s(l,i.vocabApi);await r(n,i);return n}catch(t){throw`${t} [profilePolar getPlotConfig()]`}}const p=e(l);const d=p;export{d as componentInit,c as getPlotConfig,p as profilePolarInit};
@@ -1 +0,0 @@
1
- import{P as t,h as e}from"./app-b369b169.js";import{m as s}from"./termsetting-33ea66f1.js";import{getDefaultProfilePlotSettings as r,loadFilterTerms as a,profilePlot as o}from"./profilePlot-c7e099e8.js";import{r as n}from"./table-29d5a973.js";import{l as i}from"./line-264f8f9e.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./svg.download-35926549.js";import"./FilterRxComp-701a1480.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-8b656cc3.js";import"./controls-287e6efa.js";import"./controls.btns-79b805dd.js";import"./controls.config-28d6d6a8.js";import"./recover-49e09de0.js";import"./FilterStateless-54c0b763.js";import"./app-3320ab6f.js";import"./termInfo-bf99a37e.js";import"./toggleButtons-dbdbad01.js";import"./genesearch-a4e19f0d.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";import"./constant-426a1483.js";class l extends o{constructor(){super();this.type="profileRadar";this.radius=250}async init(t){await super.init(t);const e=t.plots.find((t=>t.id===this.id));this.lineGenerator=i();this.twLst=[];this.terms=e[e.plot].terms;for(const t of this.terms){this.twLst.push(t.term1.score);if(t.term1.maxScore.term)this.twLst.push(t.term1.maxScore);this.twLst.push(t.term2.score);if(t.term2.maxScore.term)this.twLst.push(t.term2.maxScore)}}async main(){await super.main();await this.setControls();this.angle=Math.PI*2/this.terms.length;this.plot()}plot(){const t=this.config;this.dom.plotDiv.selectAll("*").remove();if(this.data.lst.length==0)return;const e=1200;const s=800;this.svg=this.dom.plotDiv.append("div").style("display","inline-block").append("svg").attr("width",e).attr("height",s);this.tableDiv=this.dom.plotDiv.append("div").style("display","inline-block").style("vertical-align","top").style("margin-top","45px");const r=[];const a=[{label:"Color"},{label:"Module"},{label:t[t.plot].term1.abbrev},{label:t[t.plot].term2.abbrev},{label:"Diff"}];const o=this.radius;const i=370;const l=340;if(!this.settings.comparison)this.svg.append("text").attr("transform",`translate(40, ${40})`).attr("font-weight","bold").attr("font-size","0.9rem").text(t[t.plot].title);const p=this.svg.append("g").attr("transform",`translate(${i},${l})`);this.polarG=p;this.legendG=this.svg.append("g").attr("transform",`translate(${i+320},${l+240})`);this.filterG=this.svg.append("g").attr("transform",`translate(${40},${l+340})`);for(let t=0;t<=10;t++)this.addPoligon(t*10);let d=0;const c=[],h=[];for(let{module:t,term1:e,term2:s}of this.terms){const a=d*this.angle-Math.PI/2;this.addData("term2",a,d,h);this.addData("term1",a,d,c);const n=e.score.term.color;const i=this.getPercentage(e);const l=this.getPercentage(s);const m=Math.abs(i-l);const f={value:m};if(m>=20)f.color=l>i?"red":"blue";r.push([{color:n,disabled:true},{value:t},{value:i},{value:l},f]);d++;const g=a>Math.PI/2&&a<=3/2*Math.PI;let u=o*1.1*Math.cos(a);let b=o*1.1*Math.sin(a)-10;const x=p.append("text").attr("x",`${u}px`).attr("y",`${b}px`);const v=t.split(" ");let y;v.forEach(((t,e)=>{if(t!="and"){b+=15;y=x.append("tspan").attr("x",`${u}px`).attr("y",`${b}px`).text(t+"")}else y.append("tspan").text(" and")}));if(g)x.attr("text-anchor","end")}if(this.settings.showTable)n({rows:r,columns:a,div:this.tableDiv,showLines:true,resize:true,maxHeight:"60vh"});c.push(c[0]);h.push(h[0]);const m="blue",f="gray";p.append("g").append("path").style("stroke",m).attr("fill","none").attr("stroke-width","2px").attr("d",this.lineGenerator(c));p.append("g").append("path").style("stroke",f).attr("fill","none").style("stroke-dasharray","5, 5").attr("stroke-width","2px").attr("d",this.lineGenerator(h));for(let t=0;t<=10;t++){const e=t*10;p.append("text").attr("transform",`translate(-10, ${-e/100*o+5})`).attr("text-anchor","end").style("font-size","0.8rem").text(`${e}%`).attr("pointer-events","none")}if(!this.settings.comparison){this.legendG.append("text").attr("text-anchor","left").style("font-weight","bold").text(`Legend`);let e=t[t.plot].term1.abbrev?`(${t[t.plot].term1.abbrev})`:"";const s=`${t[t.plot].term1.name} ${e}`;this.addLegendItem(s,m,0,"none");e=t[t.plot].term2.abbrev?`(${t[t.plot].term2.abbrev})`:"";const r=`${t[t.plot].term2.name} ${e}`;this.addLegendItem(r,f,1,"5, 5");if(this.state.dslabel=="ProfileAbbrev")this.addEndUserImpressionNote(this.legendG.append("g").attr("transform",`translate(0, -15)`));else this.addPOCNote(this.legendG.append("g").attr("transform",`translate(0, -15)`))}this.addFilterLegend()}addData(t,e,s,r){const a=this.terms[s];const o=this.getPercentage(a[t]);const n=o/100*this.radius;let i=n*Math.cos(e);let l=n*Math.sin(e);const p=t=="term1"?"blue":"#aaa";const d=this.polarG.append("g").attr("transform",`translate(${i}, ${l})`).append("circle").attr("r",4).attr("fill",p);d.datum({module:a.module,percentage:o}).on("click",(t=>this.onMouseOver(t)));r.push([i,l])}addPoligon(t){const e=[];for(let s=0;s<this.terms.length;s++){const r=s*this.angle-Math.PI/2;const a=t/100*this.radius;const o=a*Math.cos(r);const n=a*Math.sin(r);e.push([o,n])}e.push(e[0]);this.polarG.append("g").append("path").style("stroke","#aaa").attr("fill","none").attr("d",this.lineGenerator(e)).style("opacity","0.5")}addLegendItem(t,e,s,r){const a=25;const o=a+s*a;const n=35;this.legendG.append("path").attr("stroke",e).style("stroke-dasharray",r).attr("stroke-width","2px").attr("d",this.lineGenerator([[0,o-5],[n,o-5]]));this.legendG.append("g").attr("transform",`translate(${0}, ${o-5})`).append("circle").attr("r",4).attr("fill",e);const i=this.legendG.append("text").attr("font-size","0.9em").attr("transform",`translate(${n+5}, ${o})`).attr("text-anchor","left");i.append("tspan").text(t)}onMouseOver(t){if(t.target.tagName=="circle"){const e=t.target;const s=e.__data__;const r=this.tip.clear();const a=s.percentage;r.d.text(`${s.module} ${a}%`);r.show(t.clientX,t.clientY,true,true)}else this.onMouseOut(t)}onMouseOut(t){this.tip.hide()}}async function p(e,o){try{const n=o.vocabApi.termdbConfig?.chartConfigByType?.profileRadar;n.settings={profileRadar:r()};if(!n)throw"default config not found in termdbConfig.chartConfigByType.profileRadar";const i=t(structuredClone(n),e);i.settings.controls={isOpen:false};const l=i[e.plot].terms;const p=[];for(const t of l){t.term1.score.q={mode:"continuous"};p.push(t.term1.score);if(t.term1.maxScore.id){t.term1.maxScore.q={mode:"continuous"};p.push(t.term1.maxScore)}t.term2.score.q={mode:"continuous"};p.push(t.term2.score);if(t.term2.maxScore.id){t.term2.maxScore.q={mode:"continuous"};p.push(t.term2.maxScore)}}await s(p,o.vocabApi);await a(i,o);return i}catch(t){throw`${t} [profileRadar getPlotConfig()]`}}const d=e(l);const c=d;export{c as componentInit,p as getPlotConfig,d as profileRadarInit};
@@ -1 +0,0 @@
1
- import{P as t,h as e}from"./app-b369b169.js";import{m as s}from"./termsetting-33ea66f1.js";import{r as a}from"./table-29d5a973.js";import{getDefaultProfilePlotSettings as o,loadFilterTerms as r,profilePlot as i}from"./profilePlot-c7e099e8.js";import{l as n}from"./line-264f8f9e.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./svg.download-35926549.js";import"./FilterRxComp-701a1480.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-8b656cc3.js";import"./controls-287e6efa.js";import"./controls.btns-79b805dd.js";import"./controls.config-28d6d6a8.js";import"./recover-49e09de0.js";import"./FilterStateless-54c0b763.js";import"./app-3320ab6f.js";import"./termInfo-bf99a37e.js";import"./toggleButtons-dbdbad01.js";import"./genesearch-a4e19f0d.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";import"./constant-426a1483.js";class l extends i{constructor(){super();this.type="profileRadarFacility";this.radius=250}async init(t){await super.init(t);const e=t.plots.find((t=>t.id===this.id));this.twLst=[];this.terms=e[e.plot].terms;for(const t of this.terms){this.rowCount++;this.twLst.push(t.score);this.twLst.push(t.maxScore)}this.lineGenerator=n()}async main(){await super.main();await this.setControls();this.angle=Math.PI*2/this.terms.length;this.plot()}plot(){this.dom.plotDiv.selectAll("*").remove();if(this.data.lst.length==0)return;const t=1300;const e=650;this.svg=this.dom.plotDiv.append("div").style("display","inline-block").append("svg").attr("width",t).attr("height",e);this.tableDiv=this.dom.plotDiv.append("div").style("display","inline-block").style("vertical-align","top").style("margin-top","45px");this.svg.append("text").attr("transform",`translate(110, ${40})`).attr("font-weight","bold").text(this.config[this.config.plot].title);const s=this.radius;const o=370;const r=340;const i=this.svg.append("g").attr("transform",`translate(${o},${r})`);this.polarG=i;this.legendG=this.svg.append("g").attr("transform",`translate(${o+420},${r-180})`);this.filterG=this.svg.append("g").attr("transform",`translate(${o+420},${r+10})`);const n=[];const l=[{label:"Color"},{label:"Module"},{label:`Facility`},{label:"Global"},{label:"Diff"}];for(let t=0;t<=10;t++)this.addPoligon(t*10);let p=0;const c=[],d=[];for(const t of this.terms){const e=p*this.angle-Math.PI/2;this.addData(e,p,d,true);this.addData(e,p,c,false);const a=t.score.term.color;const o=this.getPercentage(t);const r=this.getPercentage(t,true);const l=Math.abs(o-r);const h={value:l};if(l>=20)h.color=r>o?"red":"blue";const f=[{color:a,disabled:true},{value:t.module},{value:o},{value:r},h];n.push(f);p++;const m=e>Math.PI/2&&e<=3/2*Math.PI;let g=s*1.1*Math.cos(e);let u=s*1.1*Math.sin(e)-10;const b=i.append("text").attr("x",`${g}px`).attr("y",`${u}px`);const y=t.module.split(" ");let x;y.forEach(((t,e)=>{if(t!="and"){u+=15;x=b.append("tspan").attr("x",`${g}px`).attr("y",`${u}px`).text(t+"")}else x.append("tspan").text(" and")}));if(m)b.attr("text-anchor","end")}if(this.settings.showTable)a({rows:n,columns:l,div:this.tableDiv,showLines:true,resize:true,maxHeight:"60vh"});c.push(c[0]);d.push(d[0]);const h="gray",f="blue";i.append("g").append("path").style("stroke",h).attr("fill","none").style("stroke-dasharray","5, 5").attr("stroke-width","2px").attr("d",this.lineGenerator(c));if(this.state.logged){i.append("g").append("path").style("stroke",f).attr("fill","none").attr("stroke-width","2px").attr("d",this.lineGenerator(d))}for(let t=0;t<=10;t++){const e=t*10;i.append("text").attr("transform",`translate(-10, ${-e/100*s+5})`).attr("text-anchor","end").style("font-size","0.8rem").text(`${e}%`).attr("pointer-events","none")}this.addFilterLegend();this.legendG.append("text").attr("text-anchor","left").style("font-weight","bold").text("Legend");const m=this.sites.find((t=>t.value==this.settings.site)).label;this.addLegendItem(m,f,0,"none");this.addLegendItem(this.config[this.config.plot].score,h,1,"5, 5")}addData(t,e,s,a){const o=this.terms[e];const r=a?this.getPercentage(o):this.getPercentage(o,true);const i=r/100*this.radius;let n=i*Math.cos(t);let l=i*Math.sin(t);const p=a?"blue":"#aaa";const c=this.polarG.append("g").attr("transform",`translate(${n}, ${l})`).append("circle").attr("r",4).attr("fill",p).on("click",(t=>this.onMouseOver(t)));s.push([n,l]);c.datum({module:o.module,percentage:r})}addPoligon(t){const e=[];for(let s=0;s<this.terms.length;s++){const a=s*this.angle-Math.PI/2;const o=t/100*this.radius;const r=o*Math.cos(a);const i=o*Math.sin(a);e.push([r,i])}e.push(e[0]);this.polarG.append("g").append("path").style("stroke","#aaa").attr("fill","none").attr("d",this.lineGenerator(e)).style("opacity","0.5")}addLegendItem(t,e,s,a){const o=25;const r=o+s*o;const i=35;this.legendG.append("path").attr("stroke",e).style("stroke-dasharray",a).attr("stroke-width","2px").attr("d",this.lineGenerator([[0,r-5],[i,r-5]]));this.legendG.append("g").attr("transform",`translate(${0}, ${r-5})`).append("circle").attr("r",4).attr("fill",e);const n=this.legendG.append("text").attr("font-size","0.9em").attr("transform",`translate(${i+5}, ${r})`).attr("text-anchor","left");n.append("tspan").text(t)}onMouseOver(t){if(t.target.tagName=="circle"){const e=t.target;const s=e.__data__;const a=this.tip.clear();const o=s.percentage;a.d.text(`${s.module} ${o}%`);a.show(t.clientX,t.clientY,true,true)}else this.onMouseOut(t)}onMouseOut(t){this.tip.hide()}}async function p(e,a){try{const i=a.vocabApi.termdbConfig?.chartConfigByType?.profileRadarFacility;if(!i)throw"default config not found in termdbConfig.chartConfigByType.profileRadarFacility";let n=t(structuredClone(i),e);const l=o();n.settings={profileRadarFacility:l,controls:{isOpen:false}};const p=n[e.plot].terms;const c=[];for(const t of p){t.score.q=t.maxScore.q={mode:"continuous"};c.push(t.score);c.push(t.maxScore)}await s(c,a.vocabApi);await r(n,a);return n}catch(t){throw`${t} [profileRadarFacility getPlotConfig()]`}}const c=e(l);const d=c;export{d as componentInit,p as getPlotConfig,c as profileRadarFacilityInit};
@@ -1 +0,0 @@
1
- import{_ as s}from"./tslib.es6-c3c2d88f.js";import{M as t}from"./app-b369b169.js";import{a as o}from"./genesearch-a4e19f0d.js";class a{init(s){this.callback=s.callback;const a=o({tip:new t({padding:"0px"}),genome:s.genomeObj,row:s.holder,searchOnly:"snp",allowVariant:true,callback:()=>this.selectSnp(a)})}selectSnp(t){return s(this,void 0,void 0,(function*(){const{chr:s,ref:o,alt:a,fromWhat:e}=t;if(!s||!o||!a||!e)throw"missing chr, ref, alt, or fromWhat of snp";let r,i;if(!t.start&&!t.stop){if(t.pos){r=t.pos-1;i=t.pos}else{throw"missing coordinate of snp"}}else{r=t.start;i=t.stop}const n={id:e,chr:s,start:r,stop:i,name:e,ref:o,alt:typeof a=="string"?[a]:a,type:"snp"};this.callback(n)}))}}export{a as SearchHandler};
@@ -1 +0,0 @@
1
- import{_ as t}from"./tslib.es6-c3c2d88f.js";import{mayRestrictAncestry as e,makeSnpSelect as i}from"./snplst-6865d7c7.js";import{f as r}from"./FilterStateless-54c0b763.js";import{g as n}from"./FilterRxComp-701a1480.js";import"./termsetting-33ea66f1.js";import"./app-b369b169.js";import{a}from"./genesearch-a4e19f0d.js";import"./snplst.sampleSum-e47d05f0.js";import"./table-29d5a973.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-8b656cc3.js";import"path";const s="Variants in a locus";function o(e){return{getPillName(){return e.term.name},getPillStatus(){if(!e.term||!e.q)return;if(!e.term.snps)throw`Missing term.snps [snplocs.ts getPillStatus()]`;let t=`${e.q.chr}:${e.q.start}-${e.q.stop}, ${e.term.snps.length} variant${e.term.snps.length>1?"s":""}`;if(e.term.reachedVariantLimit){t+='<span style="margin-left: 6px; background:#aaa; font-size:1em;font-style: normal; border-radius: 7px;color:white;padding:0px 5px;">&#9888;<span>'}return{text:t}},validateQ(t){d(t)},showEditMenu(i){return t(this,void 0,void 0,(function*(){yield l(e,i)}))}}}function l(r,o){var l;return t(this,void 0,void 0,(function*(){const d=o.append("div").style("margin","15px");const c=yield e(r,d);const u=a({genome:r.opts.genomeObj,tip:r.dom.tip2,row:d.append("div").style("margin-top","20px"),defaultCoord:r.q&&r.q.chr?{chr:r.q.chr,start:r.q.start,stop:r.q.stop}:undefined});d.select(".sja_genesearchinput").style("margin","0px");d.append("span").style("margin","5px 0px").style("display","inline-block").style("opacity",.4).style("font-size",".7em").html('"Gene": Gene name (e.g. AKT1)</br>"Position": chr:start-stop (e.g. chr1:5000-6000)</br>"dbSNP": dbSNP accession (e.g. rs1042522)');yield f(r,(l=r.q)===null||l===void 0?void 0:l.variant_filter,d);const[v,h,y]=i(d.append("div").attr("class","sjpp-snp-select").style("margin-top","15px"),r,"snplocus");if(r.usecase.target=="dataDownload")d.select(".sjpp-snp-select").style("display","none");const g=d.append("div").style("margin-top","15px");g.append("button").style("margin-top","15px").text("Submit").on("click",(e=>t(this,void 0,void 0,(function*(){if(!u.chr)return window.alert("Invalid coordinate");e.target.disabled=true;e.target.innerHTML="Validating input...";if(r.term);else{r.term={id:m()}}if(!r.q)r.q={};r.term.type="snplocus";r.q.chr=u.chr;r.q.start=u.start;r.q.stop=u.stop;r.term.name=s;delete r.term.snps;r.q.variant_filter=n(r.variantFilter.active);yield p(r);{const t=Number(v.property("value"));r.q.AFcutoff=t<0||t>=100?5:t}r.q.alleleType=h.property("selectedIndex");r.q.geneticModel=y.property("selectedIndex");if(c){r.q.restrictAncestry=c.node().options[c.property("selectedIndex")].__ancestry_obj}r.runCallback()}))));g.append("span").style("padding-left","15px").style("opacity",.8).style("font-size",".8em").text(r.usecase.target=="dataDownload"?"":"Variants will be treated individually in separate regression models")}))}function p(e){return t(this,void 0,void 0,(function*(){const t=yield e.vocabApi.validateSnps(e.q);if(t.error)throw t.error;e.q.cacheid=t.cacheid;e.term.snps=t.snps;e.term.reachedVariantLimit=t.reachedVariantLimit}))}function d(t){const e=t.q;if(!Number.isFinite(e.AFcutoff))throw"AFcutoff is not number";if(e.AFcutoff<0||e.AFcutoff>100)throw"AFcutoff is not within 0 to 100";if(![0,1].includes(e.alleleType))throw"alleleType value is not one of 0/1";if(![0,1,2,3].includes(e.geneticModel))throw"geneticModel value is not one of 0/1";if(!e.chr)throw"chr missing";if(!Number.isInteger(e.start))throw"start coordinate is not integer";if(!Number.isInteger(e.stop))throw"stop coordinate is not integer";if(e.start<0)throw"start < 0";if(e.stop<=e.start)throw"stop <= start"}function c(e,i){return t(this,void 0,void 0,(function*(){try{d(e)}catch(t){throw"snplocus validateQ(): "+t}if(!e.term.name)e.term.name=s;if(e.id==undefined||e.id==""){if(e.term.id==undefined||e.term.id==""){e.term.id=m()}e.id=e.term.id}else{if(e.term.id==undefined||e.term.id==""){e.term.id=e.id}}yield p({term:e.term,q:e.q,vocabApi:i})}))}function m(){return"snplocus"+Math.random()}function f(e,i,n,a){return t(this,void 0,void 0,(function*(){if(!e.variantFilter){e.variantFilter=yield e.vocabApi.get_variantFilter()}if(!e.variantFilter.terms){return}if(!e.variantFilter.opts)throw"variantFilter.opts{} missing";if(!e.variantFilter.filter)throw".filter missing from variantFilter{}";if(!Array.isArray(e.variantFilter.terms)||e.variantFilter.terms.length==0)throw"variantFilter.terms[] is not non-empty array";if(i){e.variantFilter.active=JSON.parse(JSON.stringify(i))}else{e.variantFilter.active=JSON.parse(JSON.stringify(e.variantFilter.filter))}const s=n.append("div").style("margin-top","15px");s.append("span").text("VARIANT FILTERS").style("font-size",".8em").style("opacity",.5);const o=s.append("div");r({joinWith:e.variantFilter.opts.joinWith,emptyLabel:"+Variant Filter",holder:o,vocab:{terms:e.variantFilter.terms},callback:i=>t(this,void 0,void 0,(function*(){e.variantFilter.active=i;if(a)yield a()}))}).main(e.variantFilter.active)}))}export{c as fillTW,o as getHandler};
@@ -1 +0,0 @@
1
- import{h as t,P as e,M as i}from"./app-b369b169.js";import{f as o,i as r}from"./termsetting-33ea66f1.js";import{r as s}from"./recover-49e09de0.js";import{getDefaultViolinSettings as a}from"./violin-2ba509eb.js";import{getDefaultBarSettings as n}from"./barchart-8277ed43.js";import{g as p}from"./sampleScatter-2d0ed680.js";import{T as l}from"./toggleButtons-dbdbad01.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./FilterRxComp-701a1480.js";import"./table-29d5a973.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-8b656cc3.js";import"./FilterStateless-54c0b763.js";import"./app-3320ab6f.js";import"./termInfo-bf99a37e.js";import"./genesearch-a4e19f0d.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";import"./controls-287e6efa.js";import"./controls.btns-79b805dd.js";import"./controls.config-28d6d6a8.js";import"./violin.renderer-ce024265.js";import"./brush-aa175142.js";import"./pointer-c7475677.js";import"./nodrag-16ad4b03.js";import"./axis-747c801e.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";import"./log-99af3443.js";import"./html.legend-a3f4ebfe.js";import"./violin.interactivity-4da6d7a9.js";import"./niceNumLabels-238aabce.js";import"./bars.settings-64bb4642.js";import"./bars.renderer-dcfdd59b.js";import"./svg.legend-8d490df2.js";import"./barchart.events-da29c90d.js";import"./zoom-25dce8b9.js";import"./lasso-f767f634.js";import"./drag-7b30ba17.js";import"./downloadTextfile-5723af95.js";import"./sampleView-484ab133.js";import"./select2Terms-b21e184a.js";import"./svg.download-35926549.js";import"./sampleScatter.rendererThree-0b12ac61.js";class c{constructor(t){this.type="summary";this.components={recover:{},plots:{}};this.chartsByType={}}async init(t){const e=this.getState(t);const i=structuredClone(e.config);m(this);this.initUi(this.opts,i);this.components.recover=await s({app:this.app,holder:this.dom.localRecoverDiv,getState:t=>this.getState(t),reactsTo:t=>t.id==this.id&&t.type=="plot_edit"&&t._scope_!="none",plot_id:this.id,maxHistoryLen:10,margin:"5px 10px"})}reactsTo(t){if(t.type.includes("cache_termq"))return true;if(t.type.startsWith("plot_")){return t.id===this.id}if(t.type.startsWith("filter"))return true;if(t.type.startsWith("cohort"))return true;if(t.type=="app_refresh")return true}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{config:e,_scope_:t._scope_}}async main(){this.dom.errdiv.style("display","none");this.config=structuredClone(this.state.config);if(!this.components.plots[this.config.childType]){await this.setComponent(this.config)}for(const t in this.components.plots){this.components.plots[t]}this.render();const t=this.tabsData.findIndex((t=>t.childType==this.config.childType));this.chartToggles.update(t,this.config)}async setComponent(t){let e;if(t.childType=="barchart")e=await import("./barchart-8277ed43.js");else if(t.childType=="violin")e=await import("./violin-2ba509eb.js");else if(t.childType=="table")e=await import("./table-ad744310.js");else if(t.childType=="boxplot")e=await import("./boxplot-e17a17b7.js");else if(t.childType=="sampleScatter")e=await import("./sampleScatter-2d0ed680.js").then((function(t){return t.b}));else throw`unsupported childType='${t.childType}'`;this.dom.plotDivs[t.childType]=this.dom.viz.append("div");this.components.plots[t.childType]=await e.componentInit({app:this.app,holder:this.dom.plotDivs[t.childType],id:this.id,parent:this.api})}destroy(){this.dom.holder.app_div.selectAll("*").remove();this.dom.holder.app_div.remove();for(const t in this.dom){delete this.dom[t]}}}const d=t(c);function m(t){t.initUi=function(e,o){const s=e.holder;try{t.dom={tip:new i({padding:"0px"}),holder:s,body:s.body.style("white-space","nowrap").style("overflow-x","auto"),errdiv:s.body.append("div").style("display","none").style("padding","5px").style("background-color","rgba(255,100,100,0.2)"),viz:s.body.append("div"),plotDivs:{}};s.header.style("padding",0);t.dom.paneTitleDiv=t.dom.holder.header.append("div").style("display","inline-block").style("color","#999").style("padding-left","7px");t.dom.paneTitleDiv.append("div").classed("sjpp-term-header",true).style("display","inline-block").style("vertical-align","sub").html(o.term.term.name);t.tabsData=[{childType:"barchart",label:"Barchart",isVisible:()=>true,disabled:t=>false,getConfig:async()=>{if(!t.config)return;const e={id:t.id,childType:"barchart"};const i=t.config?.term;const o=t.config?.term2;if(i){const o=r(i?.term)?"discrete":i?.q.mode||"discrete";e.term=await t.getWrappedTermCopy(i,o)}if(o){const i=r(o.term)?"discrete":o.q.mode||"discrete";e.term2=await t.getWrappedTermCopy(o,i)}return e},active:true,callback:t.tabClickCallback},{childType:"violin",label:"Violin",disabled:t=>false,isVisible:()=>r(t.config?.term?.term)||r(t.config?.term2?.term),getConfig:async()=>{const e=t.config?.term;const i=t.config.term2;let o,s;r(e?.term)?t.violinContTerm="term":t.violinContTerm="term2";if(t.violinContTerm&&t.violinContTerm==="term"||e.q?.mode=="continuous"){o=await t.getWrappedTermCopy(e,"continuous");s=await t.getWrappedTermCopy(i,"discrete");t.violinContTerm="term"}else if(t.violinContTerm&&t.violinContTerm==="term2"||i?.q?.mode=="continuous"){o=await t.getWrappedTermCopy(e,"discrete");s=await t.getWrappedTermCopy(i,"continuous");t.violinContTerm="term2"}else if(i?.q?.mode=="discrete"){o=await t.getWrappedTermCopy(e,"discrete");s=await t.getWrappedTermCopy(i,"continuous");t.violinContTerm="term2"}else{o=await t.getWrappedTermCopy(e,"continuous");s=await t.getWrappedTermCopy(i,"discrete");t.violinContTerm="term"}const a={childType:"violin",term:o,term2:s};return a},active:false,callback:t.tabClickCallback},{childType:"table",label:"Crosstab - in development",disabled:t=>true,isVisible:()=>false,active:false,callback:t.tabClickCallback},{childType:"boxplot",label:"Boxplot - TODO",disabled:t=>true,isVisible:()=>false,active:false,callback:t.tabClickCallback},{childType:"sampleScatter",label:"Scatter",disabled:t=>false,isVisible:()=>r(t.config?.term.term)&&r(t.config?.term2?.term),getConfig:async()=>{const e=await t.getWrappedTermCopy(t.config?.term,"continuous");const i=await t.getWrappedTermCopy(t.config?.term2,"continuous");let o={childType:"sampleScatter",term:e,term2:i,groups:[],term0:t.config.term0};return o},active:false,callback:t.tabClickCallback}];t.dom.chartToggles=t.dom.paneTitleDiv.append("div").style("display","inline-block").style("margin-left","10px");t.chartToggles=new l({holder:t.dom.chartToggles,tabs:t.tabsData,noContent:true});t.chartToggles.main();t.dom.localRecoverDiv=t.dom.paneTitleDiv.append("div").style("display","inline-block")}catch(t){throw t}};t.tabClickCallback=async(e,i)=>{if(!i||!i.getConfig)return;const o=await i.getConfig();if(o)t.app.dispatch({type:"plot_edit",id:t.id,config:o})};t.getWrappedTermCopy=async function(e,i){if(!e)return;const r=structuredClone(e);r.q.mode=i;await o(r,t.app.vocabApi);return r};t.render=function(){for(const e in t.components.plots){const i=t.components.plots[e];if(i.type!=t.config.childType){t.dom.plotDivs[i.type].style("display","none")}}t.dom.plotDivs[t.config.childType].style("display","")}}async function h(t,i){if(!t.term)throw"summary getPlotConfig: opts.term{} missing";try{await o(t.term,i.vocabApi);if(t.term2)await o(t.term2,i.vocabApi);if(t.term0)await o(t.term0,i.vocabApi)}catch(t){throw`${t} [summary getPlotConfig()]`}const r={chartType:"summary",childType:"barchart",term:t.term,groups:[],settings:{controls:{isOpen:false},common:{use_logscale:false,use_percentage:false,barheight:300,barwidth:20,barspace:2},barchart:n(i),violin:a(),sampleScatter:p()},mayAdjustConfig(t,e={}){if(!e.childType){if(t.term?.q?.mode=="continuous"&&t.term2?.q?.mode=="continuous"){t.childType="sampleScatter"}else if(t.term?.q?.mode=="continuous"||t.term2?.q?.mode=="continuous")t.childType="violin";else t.childType="barchart"}}};return e(r,t)}export{h as getPlotConfig,d as summaryInit};
@@ -1 +0,0 @@
1
- import{h as t,P as i,Q as e}from"./app-b369b169.js";import{term0_term2_defaultQ as s,controlsInit as o}from"./controls-287e6efa.js";import n from"./violin.renderer-ce024265.js";import{h as a}from"./html.legend-a3f4ebfe.js";import{f as l,i as r}from"./termsetting-33ea66f1.js";import{setInteractivity as p}from"./violin.interactivity-4da6d7a9.js";import"./controls.btns-79b805dd.js";import"./controls.config-28d6d6a8.js";import"./brush-aa175142.js";import"./pointer-c7475677.js";import"./nodrag-16ad4b03.js";import"./table-29d5a973.js";import"./tslib.es6-c3c2d88f.js";import"./axis-747c801e.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";import"./log-99af3443.js";import"path";import"./FilterRxComp-701a1480.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-8b656cc3.js";import"./niceNumLabels-238aabce.js";class d{constructor(t){this.type="violin"}async init(t){const i=this.opts.holder.append("div").attr("class","sjpp-plot-controls").style("display","inline-block");t.plots.find((t=>t.id===this.id));const e=this.opts.holder.append("div").style("display","inline-block").style("padding",this.opts.mode!="minimal"?"5px":"0px").style("padding-left",this.opts.mode!="minimal"?"45px":"0px").attr("id","sjpp-vp-holder");this.dom={header:this.opts.header,loadingDiv:this.opts.holder.append("div").style("position","absolute").style("display",this.opts.mode!="minimal"?"inline-block":"none").style("padding-left","10px").style("padding-top","20px").text("Loading ..."),controls:i,violinDiv:e.append("div").attr("class","sjpp-vp-violinDiv").style("padding-left",this.opts.mode!="minimal"?"10px":"0px"),legendDiv:e.append("div").classed("sjpp-vp-legend",true).style("padding-left","5px"),tableHolder:this.opts.holder.append("div").classed("sjpp-tableHolder",true).style("display","inline-block").style("padding","10px").style("vertical-align","top").style("margin-left","0px").style("margin-top","30px").style("margin-right","30px")};n(this);p(this);if(this.opts.mode!="minimal"){this.legendRenderer=a(this.dom.legendDiv,{settings:{legendOrientation:"vertical"},handlers:{}})}await this.setControls()}async setControls(){this.components={};if(this.opts.mode=="minimal")return;const t=[{type:"term",configKey:"term",chartType:"violin",usecase:{target:"violin",detail:"term"},vocabApi:this.app.vocabApi,menuOptions:"edit"},{type:"term",configKey:"term2",chartType:"violin",usecase:{target:"violin",detail:"term2"},title:"Overlay data",label:"Overlay",vocabApi:this.app.vocabApi,numericEditMenuVersion:this.opts.numericEditMenuVersion,defaultQ4fillTW:s},{label:"Orientation",title:"Orientation of the chart",type:"radio",chartType:"violin",settingsKey:"orientation",options:[{label:"Vertical",value:"vertical"},{label:"Horizontal",value:"horizontal"}]},{label:"Method",title:`If selected uses the KDE method, otherwise uses a histogram`,type:"radio",chartType:"violin",settingsKey:"method",options:[{label:"KDE",value:0},{label:"Histogram",value:1}]},{label:"Data symbol",title:"Symbol type",type:"radio",chartType:"violin",settingsKey:"datasymbol",options:[{label:"Ticks",value:"rug"},{label:"Circles",value:"bean"},{label:"Off",value:"none"}]},{label:"Scale",title:"Axis scale",type:"radio",chartType:"violin",settingsKey:"unit",options:[{label:"Linear",value:"abs"},{label:"Log",value:"log"}]},{label:"Symbol size",type:"number",chartType:"violin",settingsKey:"radius",step:1,max:15,min:3},{label:"Stroke width",title:"Size of Symbol stroke",type:"number",chartType:"violin",settingsKey:"strokeWidth",step:.1,max:2,min:.1},{label:"Bins",type:"number",chartType:"violin",settingsKey:"ticks",title:"Number of bins used to build the plot",min:1,max:50},{label:"Plot length",title:"Length of the plot",type:"number",chartType:"violin",settingsKey:"svgw",step:10,max:1e3,min:500,debounceInterval:1e3},{label:"Plot thickness",title:"Thickness of plots, can be between 40 and 200",type:"number",chartType:"violin",settingsKey:"plotThickness",step:10,max:500,min:40,debounceInterval:1e3},{label:"Median length",title:"Length of median",type:"number",chartType:"violin",settingsKey:"medianLength",step:1,max:15,min:3,debounceInterval:1e3},{label:"Median thickness",title:"Width of median",type:"number",chartType:"violin",settingsKey:"medianThickness",step:1,max:10,min:3,debounceInterval:100},{label:"Default color",type:"color",chartType:"violin",settingsKey:"defaultColor"}];this.components.controls=await o({app:this.app,id:this.id,holder:this.dom.controls,inputs:t});this.components.controls.on("downloadClick.violin",this.download)}reactsTo(t){if(t.type.startsWith("plot_")){return t.id===this.id&&(!t.config.childType||t.config.childType==this.type)}return true}getState(t){const i=t.plots.find((t=>t.id===this.id));if(!i){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{termfilter:t.termfilter,config:i,displaySampleIds:t.termdbConfig.displaySampleIds,hasVerifiedToken:this.app.vocabApi.hasVerifiedToken()}}async main(){this.config=structuredClone(this.state.config);this.settings=this.config.settings.violin;if(this.config.chartType!=this.type&&this.config.childType!=this.type)return;if(this.dom.header)this.dom.header.html(this.config.term.term.name+` <span style="opacity:.6;font-size:1em;margin-left:10px;">Violin Plot</span>`);await this.getDescrStats();const t=this.validateArgs();this.data=await this.app.vocabApi.getViolinPlotData(t);if(this.settings.plotThickness==undefined){const t=this.data.plots.length==1?200:150;this.settings.plotThickness=Math.min(1400/this.data.plots.length,t)}if(this.data.error)throw this.data.error;this.toggleLoadingDiv(this.opts.mode=="minimal"?"none":"");setTimeout((()=>{this.render();this.renderPvalueTable()}),this.opts.mode=="minimal"?0:500);this.toggleLoadingDiv("none")}async getDescrStats(){const t=[this.config.term];if(this.config.term2)t.push(this.config.term2);if(this.config.term0)t.push(this.config.term0);for(const i of t){if(r(i.term)){const t=await this.app.vocabApi.getDescrStats(i,this.state.termfilter,this.config.settings?.violin?.unit=="log");if(t.error)throw t.error;i.q.descrStats=t.values}}}validateArgs(){const{term:t,term2:i,settings:e}=this.config;const s=this.settings;const o={filter:this.state.termfilter.filter,filter0:this.state.termfilter.filter0,svgw:s.svgw/window.devicePixelRatio,orientation:s.orientation,devicePixelRatio:window.devicePixelRatio,datasymbol:s.datasymbol,radius:s.radius,strokeWidth:s.strokeWidth,axisHeight:s.axisHeight,rightMargin:s.rightMargin,unit:s.unit,isKDE:s.method==0,ticks:s.ticks};if(this.opts.mode=="minimal"){o.tw=t;if(i)throw"only a single term allowed for minimal plot";if(t.q.mode=="spline"){s.lines=t.q.knots.map((t=>Number(t.value)))}else{s.lines=[]}if(t.q.scale){o.scale=t.q.scale}}else if(r(t.term)&&t.q.mode==="continuous"){o.tw=t;if(i)o.divideTw=i}else if(r(i?.term)&&i.q.mode==="continuous"){o.tw=i;o.divideTw=t}else{throw"both term1 and term2 are not numeric/continuous"}return o}}const m=t(d);const h=m;function c(t,i={}){const s={orientation:"horizontal",rowlabelw:250,brushRange:null,svgw:500,datasymbol:"rug",radius:3,strokeWidth:.2,axisHeight:60,rightMargin:50,lines:[],unit:"abs",plotThickness:undefined,medianLength:7,medianThickness:3,ticks:20,defaultColor:e,method:0};return Object.assign(s,i)}async function g(t,e){if(!t.term)throw"violin getPlotConfig: opts.term{} missing";try{await l(t.term,e.vocabApi);if(t.term2)await l(t.term2,e.vocabApi);if(t.term0)await l(t.term0,e.vocabApi)}catch(t){throw`${t} [violin getPlotConfig()]`}const s={id:t.term.term.id,settings:{controls:{term2:null,term0:null},violin:c()}};return i(s,t)}export{h as componentInit,c as getDefaultViolinSettings,g as getPlotConfig,m as violinInit};