@eeacms/react-chart-editor
Version:
plotly.js chart editor react component UI
2 lines • 6.77 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _PlotlyFold=_interopRequireDefault(require("./PlotlyFold"));var _TraceRequiredPanel=_interopRequireDefault(require("./TraceRequiredPanel"));var _PlotlyPanel=_interopRequireDefault(require("./PlotlyPanel"));var _propTypes=_interopRequireDefault(require("prop-types"));var _react=_interopRequireWildcard(require("react"));var _constants=require("../../lib/constants");var _lib=require("../../lib");var _reactTabs=require("react-tabs");var _traceTypes=require("../../lib/traceTypes");var _PanelEmpty=require("./PanelEmpty");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(i.get||i.set)?o(f,t,i):f[t]=e[t]);return f})(e,t)}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}(function(){var enterModule=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.enterModule:undefined;enterModule&&enterModule(module)})();var __signature__=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.default.signature:function(a){return a};const TraceFold=(0,_lib.connectTraceToPlot)(_PlotlyFold.default);class TraceAccordion extends _react.Component{constructor(props,context){super(props,context);this.setLocals(props,context)}UNSAFE_componentWillReceiveProps(nextProps,nextContext){this.setLocals(nextProps,nextContext)}setLocals(props,context){const base=props.canGroup?context.fullData:context.data;const traceFilterCondition=this.props.traceFilterCondition||(()=>true);this.filteredTracesDataIndexes=[];this.filteredTraces=[];if(base&&base.length&&context.fullData.length){this.filteredTraces=base.filter((t,i)=>{const fullTrace=props.canGroup?t:context.fullData.filter(tr=>tr.index===i)[0];if(fullTrace){const trace=context.data[fullTrace.index];if(traceFilterCondition(trace,fullTrace)){this.filteredTracesDataIndexes.push(fullTrace.index);return true}}return false})}}renderGroupedTraceFolds(){if(!this.filteredTraces.length||this.filteredTraces.length<=1){return null}const{localize:_}=this.context;const dataArrayPositionsByTraceType={};const fullDataArrayPositionsByTraceType={};this.filteredTraces.forEach(trace=>{const traceType=(0,_lib.plotlyTraceToCustomTrace)(trace);if(!dataArrayPositionsByTraceType[traceType]){dataArrayPositionsByTraceType[traceType]=[]}if(!fullDataArrayPositionsByTraceType[traceType]){fullDataArrayPositionsByTraceType[traceType]=[]}dataArrayPositionsByTraceType[traceType].push(trace.index);fullDataArrayPositionsByTraceType[traceType].push(trace._expandedIndex||trace.index)});return Object.keys(fullDataArrayPositionsByTraceType).map((type,index)=>_react.default.createElement(TraceFold,{key:index,traceIndexes:dataArrayPositionsByTraceType[type],name:(0,_traceTypes.traceTypes)(_).find(t=>t.value===type).label,fullDataArrayPosition:fullDataArrayPositionsByTraceType[type]},this.props.children))}renderUngroupedTraceFolds(){if(this.filteredTraces.length){return this.filteredTraces.map((d,i)=>_react.default.createElement(TraceFold,{key:i,traceIndexes:[d.index],canDelete:this.props.canAdd,fullDataArrayPosition:[d._expandedIndex||d.index]},this.props.children))}return null}renderTraceFolds(){if(this.filteredTraces.length){return this.filteredTraces.map((d,i)=>_react.default.createElement(TraceFold,{key:i,traceIndexes:[this.filteredTracesDataIndexes[i]],canDelete:this.props.canAdd},this.props.children))}return null}renderTracePanelHelp(){const _=this.context.localize;return _react.default.createElement(_PanelEmpty.PanelMessage,{heading:_("Trace your data.")},_react.default.createElement("p",null,_("Traces of various types like bar and line are the building blocks of your figure.")),_react.default.createElement("p",null,_("You can add as many as you like, mixing and matching types and arranging them into subplots.")),_react.default.createElement("p",null,_("Click on the + button above to add a trace.")))}render(){const{canAdd,canGroup,canReorder}=this.props;const _=this.context.localize;if(canAdd){const addAction={label:_("Trace"),handler:_ref=>{let{onUpdate}=_ref;if(onUpdate){onUpdate({type:_constants.EDITOR_ACTIONS.ADD_TRACE})}}};const traceFolds=this.renderTraceFolds();return _react.default.createElement(_PlotlyPanel.default,{addAction:addAction,canReorder:canReorder},traceFolds?traceFolds:this.renderTracePanelHelp())}if(canGroup){if(this.filteredTraces.length===1){return _react.default.createElement(_TraceRequiredPanel.default,null,this.renderUngroupedTraceFolds())}if(this.filteredTraces.length>1){return _react.default.createElement(_TraceRequiredPanel.default,{noPadding:true},_react.default.createElement(_reactTabs.Tabs,null,_react.default.createElement(_reactTabs.TabList,null,_react.default.createElement(_reactTabs.Tab,null,_("Individually")),_react.default.createElement(_reactTabs.Tab,null,_("By Type"))),_react.default.createElement(_reactTabs.TabPanel,null,_react.default.createElement(_PlotlyPanel.default,null,this.renderUngroupedTraceFolds())),_react.default.createElement(_reactTabs.TabPanel,null,_react.default.createElement(_PlotlyPanel.default,null,this.renderGroupedTraceFolds()))))}}return _react.default.createElement(_TraceRequiredPanel.default,null,this.renderTraceFolds())}__reactstandin__regenerateByEval(key,code){this[key]=eval(code)}}TraceAccordion.contextTypes={fullData:_propTypes.default.array,data:_propTypes.default.array,localize:_propTypes.default.func};TraceAccordion.propTypes={canAdd:_propTypes.default.bool,canGroup:_propTypes.default.bool,canReorder:_propTypes.default.bool,children:_propTypes.default.node,traceFilterCondition:_propTypes.default.func};const _default=TraceAccordion;var _default2=exports.default=_default;;(function(){var reactHotLoader=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.default:undefined;if(!reactHotLoader){return}reactHotLoader.register(TraceFold,"TraceFold","/react-chart-editor/src/components/containers/TraceAccordion.js");reactHotLoader.register(TraceAccordion,"TraceAccordion","/react-chart-editor/src/components/containers/TraceAccordion.js");reactHotLoader.register(_default,"default","/react-chart-editor/src/components/containers/TraceAccordion.js")})();;(function(){var leaveModule=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.leaveModule:undefined;leaveModule&&leaveModule(module)})();
//# sourceMappingURL=TraceAccordion.js.map