PageSourceSearch

https://insights.dsij.in/_next/static/chunks/9886.7ec90fc3b132da47.js

js dsij.in collected 2026-10-01 12:08:36 UTC 9,254 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9886],{10927:function(e,t,n){var r=n(2265),o=n(56661);o=o.Chart?o:window.CanvasJS;class a extends r.Component{constructor(e){super(e),this.options=e.options?e.options:{},this.containerProps=e.containerProps?{...e.containerProps}:{width:"100%",position:"relative"},this.containerProps.height=e.containerProps&&e.containerProps.height?e.containerProps.height:this.options.height?this.options.height+"px":"400px",this.containerRef=r.createRef()}componentDidMount(){this.chart=new o.Chart(this.containerRef.current,this.options),this.chart.render(),this.props.onRef&&this.props.onRef(this.chart)}shouldComponentUpdate(e,t){return e.options!==this.options}componentDidUpdate(){this.chart.options=this.props.options,this.chart.render()}componentWillUnmount(){this.chart&&this.chart.destroy(),this.props.onRef&&this.props.onRef(void 0)}render(){return r.createElement("div",{id:this.props.id,ref:this.containerRef,style:this.containerProps})}}var i={CanvasJSChart:a,CanvasJS:o};t.Z=i},49886:function(e,t,n){n.r(t),n.d(t,{default:function(){return m}});var r=n(57437),o=n(2265),a=n(10927),i=n(20341),s=n(42586);let l=a.Z.CanvasJSChart;function c(e){let[t]=e.split("T"),[n,r,o]=t.split("-").map(Number);return new Date(n,r-1,o)}function u(e){let t=Math.abs(e),n=e<0?"-":"";if(t<1e3)return"".concat(n).concat(Math.round(t));for(let e of[{v:1e9,s:"B"},{v:1e6,s:"M"},{v:1e3,s:"K"}])if(t>=e.v){let r=t/e.v,o=r>=10?Math.round(r):Math.round(10*r)/10;return"".concat(n).concat(o).concat(e.s)}return"".concat(n).concat(Math.round(t))}function h(e){let t=e.priceData.map(e=>({x:c(e.pricedate),y:Number(e.closeprice)})).sort((e,t)=>e.x.getTime()-t.x.getTime()),n=t.length>=2,r=n?t[0].y:0,o=n?t[t.length-1].y:0,a=n&&r>0?t.map(t=>({x:t.x,y:e.quantity*t.y})):[],i=n?o*e.quantity:0,s=n?r*e.quantity:0;return{run:e,points:t,valueSeries:a,computed:{hasEnough:n,entryPrice:r,exitPrice:o,finalValue:i,profit:i-s}}}async function d(e,t){let n=await (0,i.l7)("1.00",e,t);return(Array.isArray(n)?n:Array.isArray(null==n?void 0:n.data)?n.data:[]).map(e=>({pricedate:String(e.pricedate),closeprice:Number(e.closeprice)})).filter(e=>!!e.pricedate&&Number.isFinite(e.closeprice)).sort((e,t)=>c(e.pricedate).getTime()-c(t.pricedate).getTime())}function m(e){let{runs:t,minDate:n,maxDate:i,active:m}=e,p=(0,s.useTranslations)("PortfolioBacktest"),g=(0,o.useRef)(null);(0,o.useEffect)(()=>{m&&setTimeout(()=>{var e;null===(e=g.current)||void 0===e||e.render()},200)},[m]);let[f,x]=(0,o.useState)("share-price"),[v,y]=(0,o.useState)([]),[b,T]=(0,o.useState)(!1),[S,w]=(0,o.useState)(""),C=(0,o.useMemo)(()=>t.map(h),[t]),[k,M]=(0,o.useState)("");(0,o.useEffect)(()=>{if("sensex"!==f||!n||!i)return;let e="".concat(n,"_").concat(i);if(k===e&&v.length>0)return;let t=new AbortController;return T(!0),w(""),d(n,i).then(t=>{y(t),M(e),t.length||w("No Sensex data available for the selected date range.")}).catch(e=>{e instanceof DOMException&&"AbortError"===e.name||(y([]),M(""),w(e instanceof Error?e.message:"Failed to load Sensex data."))}).finally(()=>{t.signal.aborted||T(!1)}),()=>t.abort()},[f,n,i,k,v.length]);let N=(0,o.useMemo)(()=>{let e=[];
1return C.forEach(t=>{t.points.forEach(t=>e.push(t.x.getTime()))}),Array.from(new Set(e)).sort((e,t)=>e-t)},[C]),F=(0,o.useMemo)(()=>{let e=new Map;return C.forEach(t=>{t.valueSeries.forEach(t=>{let n=t.x.getTime();e.set(n,(e.get(n)||0)+t.y)})}),Array.from(e.entries()).map(e=>{let[t,n]=e;return{x:new Date(t),y:Math.round(100*n)/100}}).sort((e,t)=>e.x.getTime()-t.x.getTime())},[C]),P=(0,o.useMemo)(()=>v.map(e=>({x:c(e.pricedate),y:Number(e.closeprice)})),[v]),E=(0,o.useMemo)(()=>(function(e){let t=e.map(e=>{var t,n,r,o,a,i,s,l;let c=[...e.valueSeries].sort((e,t)=>e.x.getTime()-t.x.getTime());return{points:c,cursor:-1,lastValue:0,startTime:null!==(a=null===(t=c[0])||void 0===t?void 0:t.x.getTime())&&void 0!==a?a:0,endTime:null!==(i=null===(n=c[c.length-1])||void 0===n?void 0:n.x.getTime())&&void 0!==i?i:0,initialInvestment:e.run.investedAmount>0?e.run.investedAmount:null!==(s=null===(r=c[0])||void 0===r?void 0:r.y)&&void 0!==s?s:0,finalValue:null!==(l=null===(o=c[c.length-1])||void 0===o?void 0:o.y)&&void 0!==l?l:0}}).filter(e=>e.points.length>0),n=Array.from(new Set(t.flatMap(e=>e.points.map(e=>e.x.getTime())))).sort((e,t)=>e-t),r=0;return n.map((e,o)=>{let a=0,i=0,s=0;t.forEach(t=>{for(;t.cursor+1<t.points.length&&t.points[t.cursor+1].x.getTime()<=e;)t.cursor+=1,t.lastValue=t.points[t.cursor].y;
1t.cursor>=0&&e>=t.startTime&&e<=t.endTime&&(a+=t.lastValue),t.startTime===e&&(i+=t.initialInvestment),o>0&&n[o-1]===t.endTime&&e>t.endTime&&(s+=t.finalValue)});let l=0;return o>0&&r>0&&(l=((a+s-i)/r-1)*100),r=a,{x:new Date(e),y:Math.round(100*l)/100}})})(C),[C]),D=(0,o.useMemo)(()=>(function(e){let t=[...e].filter(e=>e.x instanceof Date&&!Number.isNaN(e.x.getTime())&&Number.isFinite(e.y)).sort((e,t)=>e.x.getTime()-t.x.getTime());return t.map((e,n)=>{if(0===n)return{x:e.x,y:0};let r=t[n-1].y;if(!r)return{x:e.x,y:0};let o=(e.y/r-1)*100;return{x:e.x,y:Math.round(100*o)/100}})})(P),[P]),A=(0,o.useMemo)(()=>n?c(n):N.length?new Date(N[0]):new Date(2015,0,1),[n,N]),j=(0,o.useMemo)(()=>i?c(i):N.length?new Date(N[N.length-1]):new Date,[i,N]),R=A.getFullYear(),z=j.getFullYear()-R,L=z>30?5:z>20?3:z>15?2:1,Y=["#3498db","#e74c3c","#2ecc71","#f39c12","#9b59b6","#1abc9c","#e67e22","#34495e","#e84393","#16a085"],I=(0,o.useMemo)(()=>({animationEnabled:!0,theme:"light2",exportEnabled:!0,exportFileName:"sensex"===f?"portfolio-vs-sensex":"portfolio-value-growth",backgroundColor:"#fff",legend:{verticalAlign:"bottom",horizontalAlign:"center",fontSize:12},axisX:{minimum:A,maximum:j,intervalType:"year",interval:1,tickLength:6,tickThickness:1,tickColor:"#6c757d",lineThickness:1,lineColor:"#ced4da",labelFontColor:"#6c757d",labelFontSize:11,labelAngle:z>=10?-35:0,labelFormatter:e=>{let t=new Date(e.value).getFullYear();return(t-R)%L==0?String(t):""},gridColor:"#e5e7eb",gridThickness:1},axisY:"sensex"===f?{tickLength:0,gridColor:"#e9ecef",lineThickness:0,labelFontColor:"#6c757d",labelFontSize:12,includeZero:!0,labelFormatter:e=>{let t=Number(e.value);return"".concat(t>0?"+":"").concat(parseFloat(t.toFixed(2)),"%")}}:{tickLength:0,gridColor:"#e9ecef",lineThickness:0,labelFontColor:"#6c757d",labelFontSize:12,labelFormatter:e=>"₹".concat(u(Number(e.value)))},..."share-price"===f?{axisY2:{tickLength:0,gridColor:"#f3f4f6",lineThickness:0,labelFontColor:"#6c757d",labelFontSize:12,labelFormatter:e=>"₹".concat(u(Number(e.value)))}}:{},data:"sensex"===f?[{type:"line",name:"Portfolio Return",showInLegend:!0,markerSize:0,lineThickness:2,color:"green",dataPoints:E},{type:"line",name:"BSE Sensex Return",showInLegend:!0,markerSize:0,lineThickness:2,color:"#e74c3c",dataPoints:D}]:[{type:"line",name:"Total Portfolio Value",showInLegend:!0,markerSize:0,lineThickness:3,color:"green",dataPoints:F},...C.map((e,t)=>({type:"line",axisYType:"secondary",name:e.run.company.companyname,showInLegend:!0,markerSize:0,lineThickness:2,color:function(e,t){if(e<Y.length)return Y[e];let n=0;for(let e=0;e<t.length;e++)n=t.charCodeAt(e)+((n<<5)-n);let r=Math.abs(n)%360;return r>=60&&r<=160&&(r=(r+180)%360),"hsl(".concat(r,", ").concat(65,"%, ").concat(50,"%)")}(t,e.run.company.companycode||e.run.company.companyname),dataPoints:e.points}))],toolTip:{shared:!0,contentFormatter:e=>{var t,n,r;let o=null===(r=e.entries)||void 0===r?void 0:null===(n=r[0])||void 0===n?void 0:null===(t=n.dataPoint)||void 0===t?void 0:t.x,i="<strong>".concat(a.Z.CanvasJS.formatDate(o,"DD MMM YY"),"</strong><br/>");return e.entries.forEach(e=>{let t=e.dataSeries.name,n=Number(e.dataPoint.y);"sensex"===f?i+="".concat(t,": ").concat(n>0?"+":"").concat(n.toFixed(2),"%<br/>"):i+="".concat(t,": ₹").concat(n.toLocaleString("en-IN"),"<br/>")}),i}}}),[A,j,z,R,L,F,C,f,E,D]);return F.length?(C.forEach(e=>{console.log(e.run.company.companyname),console.log("first valueSeries point:",e.valueSeries[0]),console.log("last valueSeries point:",e.valueSeries[e.valueSeries.length-1]),console.log("points length:",e.points.length),console.log("valueSeries length:",e.valueSeries.length)}),(0,r.jsxs)("div",{className:"mt-3 w-100",children:[(0,r.jsx)("h3",{className:"text-center",children:p("sensex"===f?"ChartTitle2":"ChartTitle1")}),(0,r.jsxs)("select",{className:"form-select form-select-sm w-auto mx-auto mb-3 border border-primary text-dark",value:f,onChange:e=>x(e.target.value),children:[(0,r.jsxs)("option",{value:"share-price",children:[" ",p("ChartTitle3")]}),(0,r.jsxs)("option",{value:"sensex",children:[" ",p("ChartTitle2")]})]}),"sensex"===f&&b&&(0,r.jsx)("div",{className:"text-center text-danger fs-15 mb-2",children:p("Loading")}),"sensex"===f&&S&&(0,r.jsx)("div",{className:"alert alert-warning py-1 text-center fs-13",children:S}),(0,r.jsxs)("div",{className:"d-flex justify-content-between fs-12 mb-2 text-dark",children:[(0,r.jsx)("span",{children:"sensex"===f?"Period Return (%)":"Portfolio Value"}),(0,r.jsx)("span",{children:"sensex"===f?"":"Share Price"})]}),(0,r.jsx)(l,{options:I,onRef:e=>g.current=e,containerProps:{width:"100%"}})]})):(0,r.jsx)("div",{className:"alert alert-warning mt-3",children:"No data available for the selected ranges. Try a wider range."})}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.