@rcsb/rcsb-statistics 0.3.9-dev.7 → 0.3.9-dev.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.html +1 -1
- package/build/static/js/630.55dc4277.chunk.js +69 -0
- package/build/static/js/{676.f1fb7ddf.chunk.js → 676.8f9bac55.chunk.js} +3 -3
- package/build/static/js/{main.cb5f0f7f.js → main.71d5d9b5.js} +2 -2
- package/package.json +1 -1
- package/build/static/js/630.a48fb2c0.chunk.js +0 -47
- /package/build/static/js/{main.cb5f0f7f.js.LICENSE.txt → main.71d5d9b5.js.LICENSE.txt} +0 -0
package/build/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="RCSB Protein Data Bank: A Resource for Studying Biological Macromolecules"/><title>RCSB Statistics</title><script defer="defer" src="/static/js/main.
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="RCSB Protein Data Bank: A Resource for Studying Biological Macromolecules"/><title>RCSB Statistics</title><script defer="defer" src="/static/js/main.71d5d9b5.js"></script><link href="/static/css/main.861341d0.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript sto run this app.</noscript><div id="statsroot"></div></body></html>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_rcsb_rcsb_statistics=self.webpackChunk_rcsb_rcsb_statistics||[]).push([[630],{1630:(e,t,r)=>{r.r(t),r.d(t,{default:()=>f});var o=r(6540),i=r(4976),n=r(7581);const a=n.Ay.ul`
|
|
2
|
+
padding: 10px;
|
|
3
|
+
max-height: 300px;
|
|
4
|
+
overflow-y: auto;
|
|
5
|
+
`,s=(0,n.Ay)(i.N_).attrs({className:"list-group-item"})`
|
|
6
|
+
padding: 0;
|
|
7
|
+
margin-bottom: 10px;
|
|
8
|
+
border: none;
|
|
9
|
+
color: #337ab7 !important;
|
|
10
|
+
font-weight: 400;
|
|
11
|
+
font-size: 14px;
|
|
12
|
+
cursor: pointer;
|
|
13
|
+
|
|
14
|
+
&:hover {
|
|
15
|
+
text-decoration: underline !important;
|
|
16
|
+
background: none !important;
|
|
17
|
+
}
|
|
18
|
+
`,l=e=>{let{items:t}=e;return o.createElement(a,null,t.map(((e,t)=>o.createElement(s,{key:t,to:e.link},e.description_menu))))},d=(n.Ay.label`
|
|
19
|
+
display: block;
|
|
20
|
+
font-size: 1.2em;
|
|
21
|
+
margin-bottom: 0.5em;
|
|
22
|
+
`,n.Ay.div`
|
|
23
|
+
width: 700px;
|
|
24
|
+
`),p=n.Ay.input`
|
|
25
|
+
flex: 1;
|
|
26
|
+
width: 100%;
|
|
27
|
+
height: 45px;
|
|
28
|
+
padding: 6px 12px;
|
|
29
|
+
font-size: 16px;
|
|
30
|
+
border: 1px solid #ccc;
|
|
31
|
+
border-radius: 4px;
|
|
32
|
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
|
|
33
|
+
line-height: 1.42857143;
|
|
34
|
+
color: #555;
|
|
35
|
+
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
|
|
36
|
+
`,c=n.Ay.div`
|
|
37
|
+
background-color: #f7f7f7;
|
|
38
|
+
padding: 10px;
|
|
39
|
+
display: flex;
|
|
40
|
+
justify-content: center;
|
|
41
|
+
margin-bottom: 1em;
|
|
42
|
+
`,u=n.Ay.div`
|
|
43
|
+
display: flex;
|
|
44
|
+
flex-wrap: wrap;
|
|
45
|
+
gap: 20px;
|
|
46
|
+
justify-content: flex-start;
|
|
47
|
+
padding: 10px;
|
|
48
|
+
`,x=n.Ay.div`
|
|
49
|
+
flex: 1 1 calc(33.333% - 20px);
|
|
50
|
+
min-height: 250px;
|
|
51
|
+
position: relative;
|
|
52
|
+
overflow: hidden;
|
|
53
|
+
border: 1px solid #ddd;
|
|
54
|
+
border-radius: 4px;
|
|
55
|
+
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
|
|
56
|
+
|
|
57
|
+
`,m=n.Ay.h3`
|
|
58
|
+
background-color: #325880;
|
|
59
|
+
color: #fff;
|
|
60
|
+
padding: 10px;
|
|
61
|
+
margin: 0;
|
|
62
|
+
font-weight: bold;
|
|
63
|
+
font-size: 1.1em;
|
|
64
|
+
border-bottom: 1px solid #ddd;
|
|
65
|
+
border-top-left-radius: 4px;
|
|
66
|
+
border-top-right-radius: 4px;
|
|
67
|
+
font-size: 16px;
|
|
68
|
+
font-weight: bold;
|
|
69
|
+
`;var b=r(637);const f=()=>{const[e,t]=(0,o.useState)(""),[r,i]=(0,o.useState)({});return(0,o.useEffect)((()=>{const t=b._1.filter((t=>(t.description_menu??"").toLowerCase().includes(e.toLowerCase()))).reduce(((e,t)=>{const r=t.displayCategory||"Uncategorized";return e[r]||(e[r]=[]),e[r].push(t),e}),{});i(t)}),[e]),o.createElement("article",null,o.createElement(c,null,o.createElement(d,null,o.createElement(p,{id:"statistics-filter",type:"text",placeholder:"Browse Statistics",value:e,onChange:e=>t(e.target.value)}))),o.createElement(u,null,Object.entries(r).map((e=>{let[t,r]=e;return o.createElement(x,{key:t},o.createElement(m,null,t),o.createElement(l,{items:r}))}))))}}}]);
|
|
@@ -180,11 +180,11 @@
|
|
|
180
180
|
&:hover {
|
|
181
181
|
background-color: #f1f1f1;
|
|
182
182
|
}
|
|
183
|
-
`,
|
|
183
|
+
`,_=f.Ay.span`
|
|
184
184
|
margin-left: 8px;
|
|
185
185
|
font-size: 14px;
|
|
186
186
|
color: #333;
|
|
187
|
-
`;var
|
|
187
|
+
`;var q=a(2195);const L=f.Ay.div`
|
|
188
188
|
.gridjs-pagination {
|
|
189
189
|
display: flex;
|
|
190
190
|
justify-content: space-between;
|
|
@@ -293,4 +293,4 @@
|
|
|
293
293
|
border-color: #9bc2f7;
|
|
294
294
|
box-shadow: 0 0 0 3px rgba(149, 189, 243, 0.5);
|
|
295
295
|
}
|
|
296
|
-
`,Y=e=>{let{data:t,title:a}=e;if(0===t.length)return n.createElement("p",null,"No data available.");const l=Object.keys(t[0]),r=t.map((e=>l.map((t=>e[t])))).sort(((e,t)=>t[0]-e[0]));return n.createElement(n.Fragment,null,a&&n.createElement(F,null,a),n.createElement(L,null,n.createElement(_.x,{columns:l,data:r,search:!1,pagination:{limit:10},sort:!0,style:{table:{border:"1px solid #ccc","border-radius":"8px",width:"100%","background-color":"#fff",color:"#000","font-family":"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif","font-size":"14px","text-align":"left"},th:{"background-color":"#f5f5f5",color:"#333","border-bottom":"2px solid #ccc",padding:"12px","font-weight":"bold"},td:{padding:"12px","border-bottom":"1px solid #eee",color:"#555","font-size":"13px"}}})))},M=e=>{let{chartType:t,handleChartTypeChange:a,isDistPlot:l}=e;const r=e=>{a(e)};return n.createElement(O,null,n.createElement(P,null,n.createElement(k,null,(()=>{switch(t){case"bar":default:return n.createElement(p.v$b,{size:15});case"line":return n.createElement(p.YYR,{size:15});case"pie":return n.createElement(p.qvi,{size:15})}})()),n.createElement("span",{className:"triangle"})),n.createElement(R,null,n.createElement(I,{onClick:()=>r("bar")},n.createElement(k,null,n.createElement(p.v$b,{size:15})),n.createElement(q,null,"Bar Chart")),!l&&n.createElement(I,{onClick:()=>r("line")},n.createElement(k,null,n.createElement(p.YYR,{size:15})),n.createElement(q,null,"Line Chart")),l&&n.createElement(I,{onClick:()=>r("pie")},n.createElement(k,null,n.createElement(p.qvi,{size:15})),n.createElement(q,null,"Pie Chart"))))};var H=a(637);o.t1.register(o.PP,o.kc,o.OJ,o.E8,o.No,o.Bs,o.FN,o.hE,o.m_,o.s$,i.Ay);const U=e=>{const t=e.datasets.map((e=>{const t=[];let a=0;return e.data.forEach((e=>{a+=e,t.push(a)})),{...e,data:t}}));return{...e,datasets:t}},B=e=>{let{data:t,plotName:a,setFullscreenContent:l}=e;const o=(0,n.useRef)(null),{handleOpenModal:i,handleCloseModal:f}=(0,g.h)(),{settings:h,updateCurrentInput:y,setConfig:x}=(0,b.t)(),v=h.colorScheme,F=H.jS.find((e=>e.key===a)),O="distribution"===F?.chartCategory,P=F?.chartOptions||{},R=O?h.config.chartType.distrubution:h.config.chartType.growth,I=h.config.chartType.scale,q=O?"non-cumulative":h.config.chartType.dataView,[_,L]=(0,n.useState)(t.datasets.map((e=>({label:e.label||"",visible:!0})))),[B,J]=(0,n.useState)("natural"),[W,Z]=(0,n.useState)((()=>"cumulative"===(O?"non-cumulative":q)?U(t):t)),G=t.datasets.map((e=>({label:e.label||"",visible:!0}))),V=O?"non-cumulative":"cumulative",K=()=>{L(G),J("natural"),x({chartType:{...h.config.chartType,[O?"distrubution":"growth"]:"bar",scale:"linear",dataView:V}}),Z("cumulative"===V?U(t):t)};(0,n.useEffect)((()=>{const e="cumulative"===q?U(t):t;Z(e)}),[q,t]),(0,n.useEffect)((()=>{if("cumulative"===q){const e=U(t);Z({labels:t.labels,datasets:e.datasets.map((e=>({...e,hidden:!_.find((t=>t.label===e.label))?.visible})))})}else Z({labels:t.labels,datasets:t.datasets.map((e=>({...e,hidden:!_.find((t=>t.label===e.label))?.visible})))})}),[q,t,_]),(0,n.useEffect)((()=>{if("distribution-source-organism"===a){const e=[],a=[],n=[];if(t?.datasets?.[0]?.objectConfig&&Array.isArray(t.labels)){t.datasets[0].objectConfig.forEach(((l,r)=>{if(l.label===B){const o=t.labels?.[r],i=t.datasets[0].data?.[r];o&&void 0!==i&&(e.push(o),a.push(i),n.push(l))}}));const l={...t.datasets[0],data:a,objectConfig:n};Z({labels:e,datasets:[l]})}}}),[B,t,a]),(0,n.useEffect)((()=>{JSON.stringify(h.currentInput)!==JSON.stringify(_)&&(a.includes("overall")||y(_))}),[_,y]);const Q=e=>{L((t=>t.map((t=>t.label===e?{...t,visible:!t.visible}:t))))},X=()=>{x({chartType:{...h.config.chartType,scale:"linear"===h.config.chartType.scale?"logarithmic":"linear"}})},ee=e=>{x({chartType:{...h.config.chartType,dataView:e}})},te=e=>{J(e)},ae=e=>{if(o.current){const a=(0,r.CK)(o.current,e);if(a.length>0&&t.labels){const{index:e}=a[0],n=t.labels[e];if(F&&F.getSearchObj){const e=F.getSearchObj(h,n),t=JSON.stringify(e),a=encodeURIComponent(t),l=`${h.config.searchAdvancedUrl}/search?request=${a}`;window.open(l,"_blank")}}}},ne={...P,scales:O||"line"!==R?P.scales:{...P.scales,x:{...P.scales?.x,stacked:!1},y:{...P.scales?.y,type:I,stacked:!1,min:"logarithmic"===I?1:void 0,ticks:{callback:function(e){return"logarithmic"===I?[1,10,100,1e3,1e4].includes(e)?e:null:e}},title:{display:!0,text:`${P?.scales?.y?.title?.text||"Y-Axis"} ${"logarithmic"===I?"(Logarithmic scale)":"(Linear scale)"}`}}},plugins:{...P.plugins,legend:{...P.plugins?.legend,onClick:(e,t,a)=>((e,t)=>{const a=t.datasetIndex,n=e.data.datasets[a].label;n&&Q(n)})(a.chart,t)}},elements:{line:{tension:.1,spanGaps:!0},point:{radius:0,hoverRadius:0}},animation:{duration:400,easing:"easeInOutQuart"},onHover:(e,t)=>{t.length?e.native.target.style.cursor="pointer":e.native.target.style.cursor="default"}},le=e=>{x({chartType:{...h.config.chartType,[O?"distrubution":"growth"]:e}})},re=(e,t)=>{const a=e.datasets[0],n=e.labels.map(((e,a)=>t[a%t.length]));return{labels:e.labels,datasets:[{data:a.data,backgroundColor:n,borderColor:n,borderWidth:1}]}},oe=e=>{const{title:t,legend:a,tooltips:n,responsive:l,plugins:r}=e,o={responsive:l??!0,maintainAspectRatio:!1,plugins:{...r,legend:{...a,display:!0,position:"bottom",onClick:(e,t,a)=>((e,t)=>{const a=e.getDatasetMeta(0),n=t.index;if(void 0!==n){const l=a.data[n].hidden;a.data[n].hidden=!l,t.hidden=a.data[n].hidden,e.options.plugins.legend.labels.generateLabels=e=>e.data.labels.map(((t,n)=>({text:t,fillStyle:e.data.datasets[0].backgroundColor[n],hidden:a.data[n].hidden,index:n}))),e.update()}})(a.chart,t)},tooltip:{...n,callbacks:{label:e=>{const{dataset:t,dataIndex:a,chart:n}=e,l=n.getDatasetMeta(0).data.map(((e,t)=>e.hidden?null:t)).filter((e=>null!==e)).map((e=>t.data[e])),r=t.data[a],o=(r/l.reduce(((e,t)=>e+t),0)*100).toFixed(2);return`${e.label}: ${r} - ${o}% (of shown data)`}}}},animation:{animateScale:!0,animateRotate:!0},elements:{arc:{hoverBorderWidth:3,hoverOffset:20,hoverBorderColor:"white"}},onHover:(e,t)=>{t.length?e.native.target.style.cursor="pointer":e.native.target.style.cursor="default"}};return o},ie=e=>{if(!e||!e.datasets||!Array.isArray(e.datasets))return{labels:[],datasets:[]};const t=e.datasets.map((e=>{const t=e.data.map((e=>"number"!=typeof e||isNaN(e)?null:e));return{...e,data:t,stack:void 0,fill:!1,borderColor:e.borderColor||"rgba(75, 192, 192, 1)",backgroundColor:e.backgroundColor||"rgba(75, 192, 192, 0.2)",borderWidth:3,pointRadius:0,pointHoverRadius:0,tension:.1}}));return{labels:e.labels||[],datasets:t}};return n.createElement(u.A,null,(e=>{const t={...ne,maintainAspectRatio:!1,plugins:{legend:{display:!1}}},l=(e,t,a)=>{if(!e?.datasets?.length||0===e.labels.length)return{columns:[],gridData:[]};if(t){const t=e.labels||[],n=e.datasets[0]||{},l=a.scales?.x?.title?.text||"Range",r=a.scales?.y?.title?.text||"Number of Entries";return{columns:"x"===a.indexAxis?[l,r]:[r,l],gridData:t.map(((e,t)=>[e,n.data[t]||0]))}}if(1===e.datasets.length)return{columns:["Year",a.scales?.y?.title?.text||"Data"],gridData:e.labels.map(((t,a)=>[t,e.datasets[0].data[a]||0]))};const n=e.datasets.filter((e=>_.find((t=>t.label===e.label))?.visible));return{columns:["Year",...n.map((e=>e.label))],gridData:e.labels.map(((e,t)=>{const a=[e];return n.forEach((e=>{a.push(e.data[t]||0)})),a}))}},u=l(W,O,P);if(0===u.columns.length||0===u.gridData.length)return n.createElement("p",null,"No data available for table.");const g=u.gridData.map((e=>{const t={};return u.columns.forEach(((a,n)=>{t[a]=e[n]})),t})),b={bar:n.createElement(r.yP,{ref:o,data:W,options:e?t:ne,onClick:ae}),line:n.createElement(r.N1,{ref:o,data:ie(W),options:e?t:ne}),pie:n.createElement(r.Fq,{ref:o,data:re(W,v),options:oe(e?t:ne),onClick:ae}),table:n.createElement(n.Fragment,null," ",n.createElement(Y,{data:g,title:ne.plugins.title.text}))};return n.createElement(d.A,null,n.createElement(s.A,{md:10},n.createElement(D,null,b[R])),n.createElement(s.A,{md:2},n.createElement(d.A,null,n.createElement(w,{md:2},n.createElement(C,null,!e&&n.createElement(n.Fragment,null,n.createElement(k,{onClick:()=>i("settings")},n.createElement(p.Pcn,{size:15})),n.createElement(M,{chartType:R,handleChartTypeChange:le,isDistPlot:O}),n.createElement(k,{onClick:()=>i("information"),disabled:!1},n.createElement(p.ELu,{size:15})),n.createElement(k,{disabled:!1,selected:"table"===R,onClick:()=>le("table")},n.createElement(p.ist,{size:15})),n.createElement(k,{onClick:()=>{const e=l(W,O,P),t=((e,t)=>[`Report: ${P.plugins.title.text}, Generated on: ${(new Date).toLocaleDateString()} ${(new Date).toLocaleTimeString()}`,e.join(","),...t.map((e=>e.join(",")))].join("\n"))(e.columns,e.gridData),a=new Blob([t],{type:"text/csv;charset=utf-8;"}),n=URL.createObjectURL(a),r=document.createElement("a");r.href=n,r.setAttribute("download","data-table.csv"),document.body.appendChild(r),r.click(),document.body.removeChild(r)},disabled:!1},n.createElement(p.$TP,{size:15})),!O&&"line"===R&&n.createElement(k,{onClick:X},"linear"===I?n.createElement(m.Ten,{size:15}):n.createElement(p.g0N,{size:15})),n.createElement(k,{onClick:K,disabled:!1},n.createElement(p.DIg,{size:15}))))),!e&&n.createElement(s.A,{md:10},n.createElement(E,null,n.createElement(n.Fragment,null,O?"distribution-source-organism"===a&&n.createElement($,null,n.createElement(N,null,"Data Set"),n.createElement(c.A.Check,{type:"radio",id:"view-natural",label:"Natural",name:"source-organism-view-switch",value:"natural",checked:"natural"===B,onChange:()=>te("natural")}),n.createElement(c.A.Check,{type:"radio",id:"view-genetically engineered",label:"Genetically Engineered",name:"source-organism-view-switch",value:"genetically engineered",checked:"genetically engineered"===B,onChange:()=>te("genetically engineered")}),n.createElement(c.A.Check,{type:"radio",id:"view-synthetic",label:"Synthetic",name:"source-organism-view-switch",value:"synthetic",checked:"synthetic"===B,onChange:()=>te("synthetic")})):n.createElement(n.Fragment,null,_.length>1&&n.createElement(n.Fragment,null,n.createElement(S,null,"Data Options"),n.createElement(T,null,n.createElement(N,null,"Data Shown"),_.map((e=>{const t="unique-protein-sequences"===a&&e.label?`Identity ${parseFloat(e.label).toFixed(0)}%`:e.label;return n.createElement(j,{key:e.label},n.createElement(A,{type:"checkbox",id:e.label,checked:e.visible,onChange:()=>Q(e.label)}),n.createElement(z,{htmlFor:e.label},t))})))),n.createElement($,null,n.createElement(N,null,"Data Set"),n.createElement(c.A.Check,{type:"radio",id:"view-annual",label:"Annual",name:"view-switch",value:"non-cumulative",checked:"non-cumulative"===q,onChange:()=>ee("non-cumulative")}),n.createElement(c.A.Check,{type:"radio",id:"view-cumulative",label:"Cumulative",name:"view-switch",value:"Cumulative",checked:"cumulative"===q,onChange:()=>ee("cumulative")})))))))))})(!1))};var J=a(3076),W=a(8533),Z=a(176),G=a(7704),V=a(8154),K=a(2543),Q=a(6061),X=a(8422);const ee=async function(e,t,a){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],l=arguments.length>4?arguments[4]:void 0,r=arguments.length>5?arguments[5]:void 0,o=arguments.length>6?arguments[6]:void 0;const i=(0,K.cloneDeep)(a.firstDim);a.secondDim&&(0,V.vw)(a.secondDim,i);const s={return_type:a.returnType,request_options:{paginate:{rows:0},facets:[i]}};r("searchRequest",s),r("stats_notes",l);const c=await(async(e,t)=>{const a=`${t.searchApiUrl}/rcsbsearch/v2/query`;return fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then((e=>{if(!e.ok)throw new Error(e.statusText);return e.json()})).catch((e=>{throw console.error("Error:",e),e}))})(s,o.config);if(!c)return[[]];const d=(0,G.z)(c);let u=d[0].data;const p={resolution:X.$Z,"r-free":X.$Z,"molecular-weight-structure":X.bl,"molecular-weight-entity":X.bl,"molecular-weight-small-molecules":X.QY,"atom-count":X.pF,"residue-count":X.pF},m=p[e]?p[e](u):u;if(p[e]&&(u=m),"distribution-source-organism"===e)return[d.filter((e=>"Source Organism"===e.name)).flatMap((e=>e.data.map((t=>({...t,labelPath:e.labelPath,objectConfig:{...t.objectConfig||{}}}))))).map(((e,a)=>({...e,objectConfig:{...e.objectConfig,color:t[a%t.length],label:e.labelPath.join(", ")}})))];if(n&&u.length>0){let e=0;return[u.map((e=>({...e,objectConfig:{...e.objectConfig,color:t[0%t.length],label:"Annual"}}))),u.map((a=>(e+=a.population,{...a,population:e,objectConfig:{objectId:[a.label,e],color:t[1%t.length],label:"Cumulative"}})))]}return a.secondDim?te(e,a,d.filter((e=>e.name===ae(a.secondDim))),t,o.config.searchAdvancedUrl,o.currentInput):[u.map((e=>({...e,objectConfig:{objectId:[e.label,e.population],color:t[0%t.length]}})))]},te=(e,t,a,n,l,r)=>{const o=new Set,i=[],s=new Map;a.forEach((e=>{const t=e.labelPath[0];i.push(t),e.data.forEach((e=>{o.add(e.label.toString()),s.has(t)||s.set(t,new Map),s.get(t)?.set(e.label.toString(),e.population)}))}));const c=Array.from(o),d=[];return c.forEach(((e,t)=>{const a=[];i.forEach((l=>{const r=s.get(l)?.get(e)??0;r>0&&a.push({label:l,population:r,objectConfig:{objectId:[l,e,r],color:n[t%n.length]}})})),a.length>0&&d.push(a)})),d},ae=e=>{if("name"in e)return e.name;if(!e.facets||1!==e.facets.length)throw new Error("Multiple facets are not allowed");return ae(e.facets[0])},ne=(e,t)=>{const{settings:a}=(0,b.t)(),{setProperty:n}=(0,Q.R)(),l=a.colorScheme.join("");return(0,Z.I)({queryKey:[e,t,l],queryFn:()=>(async(e,t,a,n)=>{const{stats_notes:l,query:r}=(e=>{const t=H.Tb.getStatisticsChartObject(e),a=t?.description,n=t?.query;return{stats_notes:a,query:n}})(e);if(!r)throw new Error(`Unknown chart key: ${e}`);return ee(e,t,r,!1,l,a,n)})(e,a.colorScheme,n,a),enabled:!!e})},le=e=>{let{setFullscreenContent:t}=e;const a=(0,l.g)().plotname||"",r=a||"",{data:o,isLoading:i,error:s}=ne(r),c=(0,Q.R)(),{settings:d}=(0,b.t)();if(i)return n.createElement(y,null,n.createElement(J.A,null));if(s)return n.createElement(y,null,n.createElement(W.A,{error:s}));const u=o&&o.length>0?("distribution-source-organism"===a&&console.log("chart data",o),{labels:o[0].map((e=>e.label)),datasets:o.map(((e,t)=>{const a={};return e.forEach((e=>{a[e.label]=e.population})),{label:e[0]?.objectConfig?.objectId?.[1]??`Dataset ${t+1}`,data:o[0].map((e=>a[e.label]||0)),backgroundColor:e[0]?.objectConfig?.color||"rgba(0, 0, 0, 0.1)",borderColor:e[0]?.objectConfig?.color||"rgba(0, 0, 0, 0.1)",borderWidth:1,objectConfig:e.map((e=>e.objectConfig))}}))}):null;return n.createElement(y,{key:a},u?n.createElement(n.Fragment,null,n.createElement(x,null,n.createElement(v,{onClick:()=>{const e=(0,X.h5)(c,d);e&&window.open(e,"_blank")}},n.createElement(p.Pcn,null)," Search API")),n.createElement(B,{data:u,plotName:a,setFullscreenContent:t})):n.createElement(y,null,n.createElement(W.A,{error:new Error("No data available")})))}}}]);
|
|
296
|
+
`,Y=e=>{let{data:t,title:a}=e;if(0===t.length)return n.createElement("p",null,"No data available.");const l=Object.keys(t[0]),r=t.map((e=>l.map((t=>e[t])))).sort(((e,t)=>t[0]-e[0]));return n.createElement(n.Fragment,null,a&&n.createElement(F,null,a),n.createElement(L,null,n.createElement(q.x,{columns:l,data:r,search:!1,pagination:{limit:10},sort:!0,style:{table:{border:"1px solid #ccc","border-radius":"8px",width:"100%","background-color":"#fff",color:"#000","font-family":"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif","font-size":"14px","text-align":"left"},th:{"background-color":"#f5f5f5",color:"#333","border-bottom":"2px solid #ccc",padding:"12px","font-weight":"bold"},td:{padding:"12px","border-bottom":"1px solid #eee",color:"#555","font-size":"13px"}}})))},M=e=>{let{chartType:t,handleChartTypeChange:a,isDistPlot:l}=e;const r=e=>{a(e)};return n.createElement(O,null,n.createElement(P,null,n.createElement(k,null,(()=>{switch(t){case"bar":default:return n.createElement(p.v$b,{size:15});case"line":return n.createElement(p.YYR,{size:15});case"pie":return n.createElement(p.qvi,{size:15})}})()),n.createElement("span",{className:"triangle"})),n.createElement(R,null,n.createElement(I,{onClick:()=>r("bar")},n.createElement(k,null,n.createElement(p.v$b,{size:15})),n.createElement(_,null,"Bar Chart")),!l&&n.createElement(I,{onClick:()=>r("line")},n.createElement(k,null,n.createElement(p.YYR,{size:15})),n.createElement(_,null,"Line Chart")),l&&n.createElement(I,{onClick:()=>r("pie")},n.createElement(k,null,n.createElement(p.qvi,{size:15})),n.createElement(_,null,"Pie Chart"))))};var H=a(637);o.t1.register(o.PP,o.kc,o.OJ,o.E8,o.No,o.Bs,o.FN,o.hE,o.m_,o.s$,i.Ay);const U=e=>{const t=e.datasets.map((e=>{const t=[];let a=0;return e.data.forEach((e=>{a+=e,t.push(a)})),{...e,data:t}}));return{...e,datasets:t}},B=e=>{let{data:t,plotName:a,setFullscreenContent:l}=e;const o=(0,n.useRef)(null),{handleOpenModal:i,handleCloseModal:f}=(0,g.h)(),{settings:h,updateCurrentInput:y,setConfig:x}=(0,b.t)(),v=h.colorScheme,F=H.jS.find((e=>e.key===a)),O="distribution"===F?.chartCategory,P=F?.chartOptions||{},R=O?h.config.chartType.distrubution:h.config.chartType.growth,I=h.config.chartType.scale,_=O?"non-cumulative":h.config.chartType.dataView,[q,L]=(0,n.useState)(t.datasets.map((e=>({label:e.label||"",visible:!0})))),[B,J]=(0,n.useState)("natural"),[W,Z]=(0,n.useState)((()=>"cumulative"===(O?"non-cumulative":_)?U(t):t)),G=t.datasets.map((e=>({label:e.label||"",visible:!0}))),V=O?"non-cumulative":"cumulative",K=()=>{L(G),J("natural"),x({chartType:{...h.config.chartType,[O?"distrubution":"growth"]:"bar",scale:"linear",dataView:V}}),Z("cumulative"===V?U(t):t)};(0,n.useEffect)((()=>{const e="cumulative"===_?U(t):t;Z(e)}),[_,t]),(0,n.useEffect)((()=>{if("cumulative"===_){const e=U(t);Z({labels:t.labels,datasets:e.datasets.map((e=>({...e,hidden:!q.find((t=>t.label===e.label))?.visible})))})}else Z({labels:t.labels,datasets:t.datasets.map((e=>({...e,hidden:!q.find((t=>t.label===e.label))?.visible})))})}),[_,t,q]),(0,n.useEffect)((()=>{if("distribution-source-organism"===a){const e=[],a=[],n=[];if(t?.datasets?.[0]?.objectConfig&&Array.isArray(t.labels)){t.datasets[0].objectConfig.forEach(((l,r)=>{if(l.label===B){const o=t.labels?.[r],i=t.datasets[0].data?.[r];o&&void 0!==i&&(e.push(o),a.push(i),n.push(l))}}));const l={...t.datasets[0],data:a,objectConfig:n};Z({labels:e,datasets:[l]})}}}),[B,t,a]),(0,n.useEffect)((()=>{JSON.stringify(h.currentInput)!==JSON.stringify(q)&&(a.includes("overall")||y(q))}),[q,y]);const Q=e=>{L((t=>t.map((t=>t.label===e?{...t,visible:!t.visible}:t))))},X=()=>{x({chartType:{...h.config.chartType,scale:"linear"===h.config.chartType.scale?"logarithmic":"linear"}})},ee=e=>{x({chartType:{...h.config.chartType,dataView:e}})},te=e=>{J(e)},ae=e=>{if(o.current){const a=(0,r.CK)(o.current,e);if(a.length>0&&t.labels){const{index:e}=a[0],n=t.labels[e];if(F&&F.getSearchObj){const e=F.getSearchObj(h,n),t=JSON.stringify(e),a=encodeURIComponent(t),l=`${h.config.searchAdvancedUrl}/search?request=${a}`;window.open(l,"_blank")}}}},ne={...P,scales:O||"line"!==R?P.scales:{...P.scales,x:{...P.scales?.x,stacked:!1},y:{...P.scales?.y,type:I,stacked:!1,min:"logarithmic"===I?1:void 0,ticks:{callback:function(e){return"logarithmic"===I?[1,10,100,1e3,1e4].includes(e)?e:null:e}},title:{display:!0,text:`${P?.scales?.y?.title?.text||"Y-Axis"} ${"logarithmic"===I?"(Logarithmic scale)":"(Linear scale)"}`}}},plugins:{...P.plugins,legend:{...P.plugins?.legend,onClick:(e,t,a)=>((e,t)=>{const a=t.datasetIndex,n=e.data.datasets[a].label;n&&Q(n)})(a.chart,t)}},elements:{line:{tension:.1,spanGaps:!0},point:{radius:0,hoverRadius:0}},animation:{duration:400,easing:"easeInOutQuart"},onHover:(e,t)=>{t.length?e.native.target.style.cursor="pointer":e.native.target.style.cursor="default"}},le=e=>{x({chartType:{...h.config.chartType,[O?"distrubution":"growth"]:e}})},re=(e,t)=>{const a=e.datasets[0],n=e.labels.map(((e,a)=>t[a%t.length]));return{labels:e.labels,datasets:[{data:a.data,backgroundColor:n,borderColor:n,borderWidth:1}]}},oe=e=>{const{title:t,legend:a,tooltips:n,responsive:l,plugins:r}=e,o={responsive:l??!0,maintainAspectRatio:!1,plugins:{...r,legend:{...a,display:!0,position:"bottom",onClick:(e,t,a)=>((e,t)=>{const a=e.getDatasetMeta(0),n=t.index;if(void 0!==n){const l=a.data[n].hidden;a.data[n].hidden=!l,t.hidden=a.data[n].hidden,e.options.plugins.legend.labels.generateLabels=e=>e.data.labels.map(((t,n)=>({text:t,fillStyle:e.data.datasets[0].backgroundColor[n],hidden:a.data[n].hidden,index:n}))),e.update()}})(a.chart,t)},tooltip:{...n,callbacks:{label:e=>{const{dataset:t,dataIndex:a,chart:n}=e,l=n.getDatasetMeta(0).data.map(((e,t)=>e.hidden?null:t)).filter((e=>null!==e)).map((e=>t.data[e])),r=t.data[a],o=(r/l.reduce(((e,t)=>e+t),0)*100).toFixed(2);return`${e.label}: ${r} - ${o}% (of shown data)`}}}},animation:{animateScale:!0,animateRotate:!0},elements:{arc:{hoverBorderWidth:3,hoverOffset:20,hoverBorderColor:"white"}},onHover:(e,t)=>{t.length?e.native.target.style.cursor="pointer":e.native.target.style.cursor="default"}};return o},ie=e=>{if(!e||!e.datasets||!Array.isArray(e.datasets))return{labels:[],datasets:[]};const t=e.datasets.map((e=>{const t=e.data.map((e=>"number"!=typeof e||isNaN(e)?null:e));return{...e,data:t,stack:void 0,fill:!1,borderColor:e.borderColor||"rgba(75, 192, 192, 1)",backgroundColor:e.backgroundColor||"rgba(75, 192, 192, 0.2)",borderWidth:3,pointRadius:0,pointHoverRadius:0,tension:.1}}));return{labels:e.labels||[],datasets:t}};return n.createElement(u.A,null,(e=>{const t={...ne,maintainAspectRatio:!1,plugins:{legend:{display:!1}}},l=()=>`Report: ${P.plugins.title.text}, Generated on: ${(new Date).toLocaleDateString()} ${(new Date).toLocaleTimeString()}`,u=(e,t,a)=>{if(!e?.datasets?.length||0===e.labels.length)return{columns:[],gridData:[]};if(t){const t=e.labels||[],n=e.datasets[0]||{},l=a.scales?.x?.title?.text||"Range",r=a.scales?.y?.title?.text||"Number of Entries";return{columns:"x"===a.indexAxis?[l,r]:[r,l],gridData:t.map(((e,t)=>[e,n.data[t]||0]))}}if(1===e.datasets.length)return{columns:["Year",a.scales?.y?.title?.text||"Data"],gridData:e.labels.map(((t,a)=>[t,e.datasets[0].data[a]||0]))};const n=e.datasets.filter((e=>q.find((t=>t.label===e.label))?.visible));return{columns:["Year",...n.map((e=>e.label))],gridData:e.labels.map(((e,t)=>{const a=[e];return n.forEach((e=>{a.push(e.data[t]||0)})),a}))}},g=u(W,O,P);if(0===g.columns.length||0===g.gridData.length)return n.createElement("p",null,"No data available for table.");const b=g.gridData.map((e=>{const t={};return g.columns.forEach(((a,n)=>{t[a]=e[n]})),t})),f={bar:n.createElement(r.yP,{ref:o,data:W,options:e?t:ne,onClick:ae}),line:n.createElement(r.N1,{ref:o,data:ie(W),options:e?t:ne}),pie:n.createElement(r.Fq,{ref:o,data:re(W,v),options:oe(e?t:ne),onClick:ae}),table:n.createElement(n.Fragment,null," ",n.createElement(Y,{data:b,title:ne.plugins.title.text}))};return n.createElement(d.A,null,n.createElement(s.A,{md:10},n.createElement(D,null,f[R])),n.createElement(s.A,{md:2},n.createElement(d.A,null,n.createElement(w,{md:2},n.createElement(C,null,!e&&n.createElement(n.Fragment,null,n.createElement(k,{onClick:()=>i("settings")},n.createElement(p.Pcn,{size:15})),n.createElement(M,{chartType:R,handleChartTypeChange:le,isDistPlot:O}),n.createElement(k,{onClick:()=>i("information"),disabled:!1},n.createElement(p.ELu,{size:15})),n.createElement(k,{disabled:!1,selected:"table"===R,onClick:()=>le("table")},n.createElement(p.ist,{size:15})),n.createElement(k,{onClick:()=>{const e=u(W,O,P),t=((e,t)=>[l(),e.join(","),...t.map((e=>e.join(",")))].join("\n"))(e.columns,e.gridData),a=new Blob([t],{type:"text/csv;charset=utf-8;"}),n=URL.createObjectURL(a),r=document.createElement("a");r.href=n;const o=`${l().replace(/[^a-z0-9]/gi,"_").toLowerCase()}.csv`;r.setAttribute("download",o),document.body.appendChild(r),r.click(),document.body.removeChild(r)},disabled:!1},n.createElement(p.$TP,{size:15})),!O&&"line"===R&&n.createElement(k,{onClick:X},"linear"===I?n.createElement(m.Ten,{size:15}):n.createElement(p.g0N,{size:15})),n.createElement(k,{onClick:K,disabled:!1},n.createElement(p.DIg,{size:15}))))),!e&&n.createElement(s.A,{md:10},n.createElement(E,null,n.createElement(n.Fragment,null,O?"distribution-source-organism"===a&&n.createElement($,null,n.createElement(N,null,"Data Set"),n.createElement(c.A.Check,{type:"radio",id:"view-natural",label:"Natural",name:"source-organism-view-switch",value:"natural",checked:"natural"===B,onChange:()=>te("natural")}),n.createElement(c.A.Check,{type:"radio",id:"view-genetically engineered",label:"Genetically Engineered",name:"source-organism-view-switch",value:"genetically engineered",checked:"genetically engineered"===B,onChange:()=>te("genetically engineered")}),n.createElement(c.A.Check,{type:"radio",id:"view-synthetic",label:"Synthetic",name:"source-organism-view-switch",value:"synthetic",checked:"synthetic"===B,onChange:()=>te("synthetic")})):n.createElement(n.Fragment,null,q.length>1&&n.createElement(n.Fragment,null,n.createElement(S,null,"Data Options"),n.createElement(T,null,n.createElement(N,null,"Data Shown"),q.map((e=>{const t="unique-protein-sequences"===a&&e.label?`Identity ${parseFloat(e.label).toFixed(0)}%`:e.label;return n.createElement(j,{key:e.label},n.createElement(A,{type:"checkbox",id:e.label,checked:e.visible,onChange:()=>Q(e.label)}),n.createElement(z,{htmlFor:e.label},t))})))),n.createElement($,null,n.createElement(N,null,"Data Set"),n.createElement(c.A.Check,{type:"radio",id:"view-annual",label:"Annual",name:"view-switch",value:"non-cumulative",checked:"non-cumulative"===_,onChange:()=>ee("non-cumulative")}),n.createElement(c.A.Check,{type:"radio",id:"view-cumulative",label:"Cumulative",name:"view-switch",value:"Cumulative",checked:"cumulative"===_,onChange:()=>ee("cumulative")})))))))))})(!1))};var J=a(3076),W=a(8533),Z=a(176),G=a(7704),V=a(8154),K=a(2543),Q=a(6061),X=a(8422);const ee=async function(e,t,a){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],l=arguments.length>4?arguments[4]:void 0,r=arguments.length>5?arguments[5]:void 0,o=arguments.length>6?arguments[6]:void 0;const i=(0,K.cloneDeep)(a.firstDim);a.secondDim&&(0,V.vw)(a.secondDim,i);const s={return_type:a.returnType,request_options:{paginate:{rows:0},facets:[i]}};r("searchRequest",s),r("stats_notes",l);const c=await(async(e,t)=>{const a=`${t.searchApiUrl}/rcsbsearch/v2/query`;return fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then((e=>{if(!e.ok)throw new Error(e.statusText);return e.json()})).catch((e=>{throw console.error("Error:",e),e}))})(s,o.config);if(!c)return[[]];const d=(0,G.z)(c);let u=d[0].data;const p={resolution:X.$Z,"r-free":X.$Z,"molecular-weight-structure":X.bl,"molecular-weight-entity":X.bl,"molecular-weight-small-molecules":X.QY,"atom-count":X.pF,"residue-count":X.pF},m=p[e]?p[e](u):u;if(p[e]&&(u=m),"distribution-source-organism"===e)return[d.filter((e=>"Source Organism"===e.name)).flatMap((e=>e.data.map((t=>({...t,labelPath:e.labelPath,objectConfig:{...t.objectConfig||{}}}))))).map(((e,a)=>({...e,objectConfig:{...e.objectConfig,color:t[a%t.length],label:e.labelPath.join(", ")}})))];if(n&&u.length>0){let e=0;return[u.map((e=>({...e,objectConfig:{...e.objectConfig,color:t[0%t.length],label:"Annual"}}))),u.map((a=>(e+=a.population,{...a,population:e,objectConfig:{objectId:[a.label,e],color:t[1%t.length],label:"Cumulative"}})))]}return a.secondDim?te(e,a,d.filter((e=>e.name===ae(a.secondDim))),t,o.config.searchAdvancedUrl,o.currentInput):[u.map((e=>({...e,objectConfig:{objectId:[e.label,e.population],color:t[0%t.length]}})))]},te=(e,t,a,n,l,r)=>{const o=new Set,i=[],s=new Map;a.forEach((e=>{const t=e.labelPath[0];i.push(t),e.data.forEach((e=>{o.add(e.label.toString()),s.has(t)||s.set(t,new Map),s.get(t)?.set(e.label.toString(),e.population)}))}));const c=Array.from(o),d=[];return c.forEach(((e,t)=>{const a=[];i.forEach((l=>{const r=s.get(l)?.get(e)??0;r>0&&a.push({label:l,population:r,objectConfig:{objectId:[l,e,r],color:n[t%n.length]}})})),a.length>0&&d.push(a)})),d},ae=e=>{if("name"in e)return e.name;if(!e.facets||1!==e.facets.length)throw new Error("Multiple facets are not allowed");return ae(e.facets[0])},ne=(e,t)=>{const{settings:a}=(0,b.t)(),{setProperty:n}=(0,Q.R)(),l=a.colorScheme.join("");return(0,Z.I)({queryKey:[e,t,l],queryFn:()=>(async(e,t,a,n)=>{const{stats_notes:l,query:r}=(e=>{const t=H.Tb.getStatisticsChartObject(e),a=t?.description,n=t?.query;return{stats_notes:a,query:n}})(e);if(!r)throw new Error(`Unknown chart key: ${e}`);return ee(e,t,r,!1,l,a,n)})(e,a.colorScheme,n,a),enabled:!!e})},le=e=>{let{setFullscreenContent:t}=e;const a=(0,l.g)().plotname||"",r=a||"",{data:o,isLoading:i,error:s}=ne(r),c=(0,Q.R)(),{settings:d}=(0,b.t)();if(i)return n.createElement(y,null,n.createElement(J.A,null));if(s)return n.createElement(y,null,n.createElement(W.A,{error:s}));const u=o&&o.length>0?("distribution-source-organism"===a&&console.log("chart data",o),{labels:o[0].map((e=>e.label)),datasets:o.map(((e,t)=>{const a={};return e.forEach((e=>{a[e.label]=e.population})),{label:e[0]?.objectConfig?.objectId?.[1]??`Dataset ${t+1}`,data:o[0].map((e=>a[e.label]||0)),backgroundColor:e[0]?.objectConfig?.color||"rgba(0, 0, 0, 0.1)",borderColor:e[0]?.objectConfig?.color||"rgba(0, 0, 0, 0.1)",borderWidth:1,objectConfig:e.map((e=>e.objectConfig))}}))}):null;return n.createElement(y,{key:a},u?n.createElement(n.Fragment,null,n.createElement(x,null,n.createElement(v,{onClick:()=>{const e=(0,X.h5)(c,d);e&&window.open(e,"_blank")}},n.createElement(p.Pcn,null)," Search API")),n.createElement(B,{data:u,plotName:a,setFullscreenContent:t})):n.createElement(y,null,n.createElement(W.A,{error:new Error("No data available")})))}}}]);
|