react-pivottable-plus 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/PivotTable.js +51 -0
- package/PivotTable.js.map +1 -0
- package/PivotTableUI.js +786 -0
- package/PivotTableUI.js.map +1 -0
- package/PlotlyRenderers.js +267 -0
- package/PlotlyRenderers.js.map +1 -0
- package/README.md +94 -0
- package/TableRenderers.js +417 -0
- package/TableRenderers.js.map +1 -0
- package/Utilities.js +868 -0
- package/Utilities.js.map +1 -0
- package/grouping.css +111 -0
- package/hooks/usePivot.js +176 -0
- package/hooks/usePivot.js.map +1 -0
- package/package.json +102 -0
- package/pivottable.css +441 -0
- package/renderers/RadixUI.js +381 -0
- package/renderers/RadixUI.js.map +1 -0
- package/renderers/ShadcnDashboardUI.js +425 -0
- package/renderers/ShadcnDashboardUI.js.map +1 -0
- package/renderers/TailwindUI.js +425 -0
- package/renderers/TailwindUI.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PivotTableUI.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_immutabilityHelper","_Utilities","_PivotTable","_reactDraggable","_core","_sortable","_utilities","_excluded","e","__esModule","t","WeakMap","r","n","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","Symbol","iterator","Array","from","isArray","_arrayLikeToArray","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","toPrimitive","String","Number","_objectWithoutProperties","_objectWithoutPropertiesLoose","indexOf","propertyIsEnumerable","_extends","assign","bind","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","a","toString","slice","constructor","name","test","l","u","next","done","DraggableAttribute","exports","React","forwardRef","_ref","ref","attrValues","valueFilter","sorter","menuLimit","setValuesInFilter","addValuesToFilter","moveFilterBoxToTop","removeValuesFromFilter","zIndex","dragHandleProps","isDragging","_useState","useState","_useState2","open","setOpen","_useState3","_useState4","filterText","setFilterText","nodeRef","useRef","toggleValue","matchesFilter","x","toLowerCase","trim","includes","selectOnly","stopPropagation","y","getFilterBox","showMenu","values","shown","sort","createElement","handle","className","style","display","cursor","onClick","type","placeholder","onChange","target","role","map","key","toggleFilterBox","filtered","opacity","displayName","SortableAttribute","_ref2","id","rest","_useSortable","useSortable","attributes","listeners","setNodeRef","transform","transition","CSS","Transform","Dropdown","_ref3","_ref3$zIndex","_ref3$open","toggle","current","_ref3$values","setValue","DnDCell","_ref4","items","classes","state","sorters","isHorizontal","strategy","horizontalListSortingStrategy","verticalListSortingStrategy","SortableContext","listStyle","padding","margin","getSort","zIndices","maxZIndex","PivotTableUI","props","_aggregators$aggregat","_aggregators$aggregat2","_aggregators$aggregat3","_aggregators$aggregat4","_useState5","unusedOrder","openDropdown","materializedInput","data","_useState6","setState","_useState7","_useState8","activeId","setActiveId","rows","cols","aggregatorName","aggregators","vals","rendererName","renderers","unusedOrientationCutoff","hiddenAttributes","hiddenFromAggregators","hiddenFromDragDrop","pagination","page","pageSize","rowOrder","colOrder","derivedAttributes","onChangeRef","useEffect","newState","recordsProcessed","PivotData","forEachRecord","record","_i","_Object$keys","attr","s","handleDuplicates","newAttrs","existingAttrs","dups","item","sendPropUpdate","useCallback","command","_onChangeRef$current","newProps","update","propUpdater","updateObj","$set","updatedCols","updatedRows","attribute","reduce","v","$unset","unusedAttrs","sortAs","unusedLength","horizUnused","colAttrs","rowAttrs","getZoneOfItem","getListByZone","zone","getUpdaterByZone","order","sensors","useSensors","useSensor","PointerSensor","activationConstraint","distance","handleDragStart","_ref5","active","handleDragOver","_ref6","_over$data$current$so","_over$data","over","activeZone","overZone","sortable","containerId","activeList","overList","activeIndex","overIndex","splice","insertAt","updateActiveZone","updateOverZone","handleDragEnd","_ref7","_over$data$current$so2","_over$data2","list","oldIndex","newIndex","arrayMove","isOpen","dropdown","numValsAllowed","numInputs","aggregatorCellOutlet","outlet","actualRendererName","sortIcons","key_a_to_z","rowSymbol","colSymbol","value_a_to_z","value_z_to_a","sharedCellProps","rendererCell","aggregatorCell","fill","_","concat","$splice","unusedAttrsCell","colAttrsCell","rowAttrsCell","renderFooter","pivotData","totalPivotRows","getRowKeys","totalRecords","totalPages","Math","ceil","disabled","min","max","val","parseInt","_onChangeRef$current2","newSize","outputCell","DndContext","collisionDetection","closestCorners","onDragStart","onDragOver","onDragEnd","Fragment","DragOverlay","propTypes","PropTypes","func","isRequired","arrayOf","string","number","defaultProps","_default"],"sources":["src/PivotTableUI.jsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport update from 'immutability-helper';\r\nimport { PivotData, sortAs, getSort } from './Utilities';\r\nimport PivotTable from './PivotTable';\r\nimport Draggable from 'react-draggable';\r\n\r\nimport {\r\n DndContext,\r\n DragOverlay,\r\n closestCorners,\r\n PointerSensor,\r\n useSensor,\r\n useSensors,\r\n} from '@dnd-kit/core';\r\nimport {\r\n SortableContext,\r\n useSortable,\r\n horizontalListSortingStrategy,\r\n verticalListSortingStrategy,\r\n arrayMove,\r\n} from '@dnd-kit/sortable';\r\nimport { CSS } from '@dnd-kit/utilities';\r\n\r\n// ─── DraggableAttribute ────────────────────────────────────────────────────────\r\n\r\nexport const DraggableAttribute = React.forwardRef(\r\n (\r\n {\r\n name,\r\n attrValues,\r\n valueFilter,\r\n sorter,\r\n menuLimit,\r\n setValuesInFilter,\r\n addValuesToFilter,\r\n moveFilterBoxToTop,\r\n removeValuesFromFilter,\r\n zIndex,\r\n // dnd-kit drag props pasados desde SortableAttribute\r\n dragHandleProps,\r\n isDragging,\r\n },\r\n ref\r\n ) => {\r\n const [open, setOpen] = useState(false);\r\n const [filterText, setFilterText] = useState('');\r\n const nodeRef = useRef(null);\r\n\r\n const toggleValue = value => {\r\n if (value in valueFilter) {\r\n removeValuesFromFilter(name, [value]);\r\n } else {\r\n addValuesToFilter(name, [value]);\r\n }\r\n };\r\n\r\n const matchesFilter = x =>\r\n x.toLowerCase().trim().includes(filterText.toLowerCase().trim());\r\n\r\n const selectOnly = (e, value) => {\r\n e.stopPropagation();\r\n setValuesInFilter(\r\n name,\r\n Object.keys(attrValues).filter(y => y !== value)\r\n );\r\n };\r\n\r\n const getFilterBox = () => {\r\n const showMenu = Object.keys(attrValues).length < menuLimit;\r\n const values = Object.keys(attrValues);\r\n const shown = values.filter(matchesFilter).sort(sorter);\r\n\r\n return (\r\n <Draggable handle=\".pvtDragHandle\" nodeRef={nodeRef}>\r\n <div\r\n ref={nodeRef}\r\n className=\"pvtFilterBox\"\r\n style={{ display: 'block', cursor: 'initial', zIndex }}\r\n onClick={() => moveFilterBoxToTop(name)}\r\n >\r\n <a onClick={() => setOpen(false)} className=\"pvtCloseX\">×</a>\r\n <span className=\"pvtDragHandle\">☰</span>\r\n <h4>{name}</h4>\r\n\r\n {showMenu || <p>(too many values to show)</p>}\r\n\r\n {showMenu && (\r\n <p>\r\n <input\r\n type=\"text\"\r\n placeholder=\"Filter values\"\r\n className=\"pvtSearch\"\r\n value={filterText}\r\n onChange={e => setFilterText(e.target.value)}\r\n />\r\n <br />\r\n <a\r\n role=\"button\"\r\n className=\"pvtButton\"\r\n onClick={() =>\r\n removeValuesFromFilter(\r\n name,\r\n Object.keys(attrValues).filter(matchesFilter)\r\n )\r\n }\r\n >\r\n Select {values.length === shown.length ? 'All' : shown.length}\r\n </a>{' '}\r\n <a\r\n role=\"button\"\r\n className=\"pvtButton\"\r\n onClick={() =>\r\n addValuesToFilter(\r\n name,\r\n Object.keys(attrValues).filter(matchesFilter)\r\n )\r\n }\r\n >\r\n Deselect {values.length === shown.length ? 'All' : shown.length}\r\n </a>\r\n </p>\r\n )}\r\n\r\n {showMenu && (\r\n <div className=\"pvtCheckContainer\">\r\n {shown.map(x => (\r\n <p\r\n key={x}\r\n onClick={() => toggleValue(x)}\r\n className={x in valueFilter ? '' : 'selected'}\r\n >\r\n <a className=\"pvtOnly\" onClick={e => selectOnly(e, x)}>only</a>\r\n <a className=\"pvtOnlySpacer\"> </a>\r\n {x === '' ? <em>null</em> : x}\r\n </p>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n </Draggable>\r\n );\r\n };\r\n\r\n const toggleFilterBox = () => {\r\n setOpen(o => !o);\r\n moveFilterBoxToTop(name);\r\n };\r\n\r\n const filtered = Object.keys(valueFilter).length !== 0 ? 'pvtFilteredAttribute' : '';\r\n\r\n return (\r\n <li\r\n ref={ref}\r\n data-id={name}\r\n style={{ opacity: isDragging ? 0.4 : 1 }}\r\n >\r\n <span className={'pvtAttr ' + filtered} {...dragHandleProps}>\r\n {name}\r\n <span\r\n className=\"pvtTriangle\"\r\n onClick={e => { e.stopPropagation(); toggleFilterBox(); }}\r\n >\r\n {' '}▾\r\n </span>\r\n </span>\r\n {open ? getFilterBox() : null}\r\n </li>\r\n );\r\n }\r\n);\r\nDraggableAttribute.displayName = 'DraggableAttribute';\r\n\r\n// ─── SortableAttribute: wrapper que conecta dnd-kit con DraggableAttribute ────\r\n\r\nconst SortableAttribute = ({ id, ...rest }) => {\r\n const {\r\n attributes,\r\n listeners,\r\n setNodeRef,\r\n transform,\r\n transition,\r\n isDragging,\r\n } = useSortable({ id });\r\n\r\n const style = {\r\n transform: CSS.Transform.toString(transform),\r\n transition,\r\n };\r\n\r\n return (\r\n <DraggableAttribute\r\n ref={setNodeRef}\r\n name={id}\r\n isDragging={isDragging}\r\n dragHandleProps={{ ...attributes, ...listeners, style }}\r\n {...rest}\r\n />\r\n );\r\n};\r\n\r\n// ─── Dropdown ─────────────────────────────────────────────────────────────────\r\n\r\nexport const Dropdown = ({ zIndex = 1, open = false, toggle, current, values = [], setValue }) => (\r\n <div className=\"pvtDropdown\" style={{ zIndex }}>\r\n <div\r\n onClick={e => { e.stopPropagation(); toggle(); }}\r\n className={'pvtDropdownValue pvtDropdownCurrent ' + (open ? 'pvtDropdownCurrentOpen' : '')}\r\n role=\"button\"\r\n >\r\n <div className=\"pvtDropdownIcon\">{open ? '×' : '▾'}</div>\r\n {current || <span> </span>}\r\n </div>\r\n {open && (\r\n <div className=\"pvtDropdownMenu\">\r\n {values.map(r => (\r\n <div\r\n key={r}\r\n role=\"button\"\r\n onClick={e => {\r\n e.stopPropagation();\r\n if (current === r) toggle();\r\n else { setValue(r); toggle(); }\r\n }}\r\n className={'pvtDropdownValue ' + (r === current ? 'pvtDropdownActiveValue' : '')}\r\n >\r\n {r}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n);\r\n\r\n// ─── DnDCell: lista sortable con dnd-kit ──────────────────────────────────────\r\n\r\nconst DnDCell = ({\r\n id, // identificador único de esta zona (ej: 'rows', 'cols', 'unused')\r\n items,\r\n classes,\r\n state,\r\n valueFilter,\r\n sorters,\r\n menuLimit,\r\n setValuesInFilter,\r\n addValuesToFilter,\r\n moveFilterBoxToTop,\r\n removeValuesFromFilter,\r\n isHorizontal,\r\n}) => {\r\n const strategy = isHorizontal\r\n ? horizontalListSortingStrategy\r\n : verticalListSortingStrategy;\r\n\r\n return (\r\n <td className={classes}>\r\n <SortableContext id={id} items={items} strategy={strategy}>\r\n <ul style={{ listStyle: 'none', padding: 0, margin: 0 }}>\r\n {items.map(x => (\r\n <SortableAttribute\r\n key={x}\r\n id={x}\r\n attrValues={state.attrValues[x] || {}}\r\n valueFilter={valueFilter[x] || {}}\r\n sorter={getSort(sorters, x)}\r\n menuLimit={menuLimit}\r\n setValuesInFilter={setValuesInFilter}\r\n addValuesToFilter={addValuesToFilter}\r\n moveFilterBoxToTop={moveFilterBoxToTop}\r\n removeValuesFromFilter={removeValuesFromFilter}\r\n zIndex={state.zIndices[x] || state.maxZIndex}\r\n />\r\n ))}\r\n </ul>\r\n </SortableContext>\r\n </td>\r\n );\r\n};\r\n\r\n// ─── PivotTableUI ─────────────────────────────────────────────────────────────\r\n\r\nconst PivotTableUI = props => {\r\n const [state, setState] = useState({\r\n unusedOrder: [],\r\n zIndices: {},\r\n maxZIndex: 1000,\r\n openDropdown: false,\r\n attrValues: {},\r\n materializedInput: [],\r\n data: null,\r\n });\r\n\r\n // activeId: el atributo que se está arrastrando\r\n const [activeId, setActiveId] = useState(null);\r\n\r\n const {\r\n data,\r\n onChange,\r\n rows,\r\n cols,\r\n aggregatorName,\r\n aggregators,\r\n vals,\r\n rendererName,\r\n renderers,\r\n valueFilter,\r\n sorters,\r\n menuLimit,\r\n unusedOrientationCutoff,\r\n hiddenAttributes,\r\n hiddenFromAggregators,\r\n hiddenFromDragDrop,\r\n pagination,\r\n page,\r\n pageSize,\r\n rowOrder,\r\n colOrder,\r\n derivedAttributes,\r\n } = props;\r\n\r\n const onChangeRef = useRef(onChange);\r\n useEffect(() => { onChangeRef.current = onChange; }, [onChange]);\r\n\r\n // ── Materializar datos ───────────────────────────────────────────────────────\r\n useEffect(() => {\r\n if (state.data === data) return;\r\n const newState = { data, attrValues: {}, materializedInput: [] };\r\n let recordsProcessed = 0;\r\n PivotData.forEachRecord(data, derivedAttributes, record => {\r\n newState.materializedInput.push(record);\r\n for (const attr of Object.keys(record)) {\r\n if (!(attr in newState.attrValues)) {\r\n newState.attrValues[attr] = {};\r\n if (recordsProcessed > 0) newState.attrValues[attr].null = recordsProcessed;\r\n }\r\n }\r\n for (const attr in newState.attrValues) {\r\n const value = attr in record ? record[attr] : 'null';\r\n if (!(value in newState.attrValues[attr])) newState.attrValues[attr][value] = 0;\r\n newState.attrValues[attr][value]++;\r\n }\r\n recordsProcessed++;\r\n });\r\n setState(s => ({ ...s, ...newState }));\r\n }, [data, derivedAttributes, state.data]);\r\n\r\n // ── Helpers ──────────────────────────────────────────────────────────────────\r\n const handleDuplicates = (newAttrs, existingAttrs) => {\r\n if (!newAttrs || !existingAttrs) return existingAttrs || [];\r\n const dups = newAttrs.filter(item => existingAttrs.includes(item));\r\n return dups.length > 0 ? existingAttrs.filter(item => !dups.includes(item)) : existingAttrs;\r\n };\r\n\r\n const sendPropUpdate = useCallback(command => {\r\n const newProps = update(props, command);\r\n onChangeRef.current?.(newProps);\r\n }, [props]);\r\n\r\n const propUpdater = useCallback(key => value => {\r\n const updateObj = { [key]: { $set: value } };\r\n if (key === 'rows') {\r\n const updatedCols = handleDuplicates(value, cols);\r\n if (updatedCols.length !== cols.length) updateObj.cols = { $set: updatedCols };\r\n } else if (key === 'cols') {\r\n const updatedRows = handleDuplicates(value, rows);\r\n if (updatedRows.length !== rows.length) updateObj.rows = { $set: updatedRows };\r\n }\r\n sendPropUpdate(updateObj);\r\n }, [cols, rows, sendPropUpdate]);\r\n\r\n const setValuesInFilter = useCallback((attribute, values) => {\r\n sendPropUpdate({\r\n valueFilter: {\r\n [attribute]: { $set: values.reduce((r, v) => { r[v] = true; return r; }, {}) },\r\n },\r\n });\r\n }, [sendPropUpdate]);\r\n\r\n const addValuesToFilter = useCallback((attribute, values) => {\r\n if (attribute in valueFilter) {\r\n sendPropUpdate({\r\n valueFilter: {\r\n [attribute]: values.reduce((r, v) => { r[v] = { $set: true }; return r; }, {}),\r\n },\r\n });\r\n } else {\r\n setValuesInFilter(attribute, values);\r\n }\r\n }, [sendPropUpdate, valueFilter, setValuesInFilter]);\r\n\r\n const removeValuesFromFilter = useCallback((attribute, values) => {\r\n sendPropUpdate({ valueFilter: { [attribute]: { $unset: values } } });\r\n }, [sendPropUpdate]);\r\n\r\n const moveFilterBoxToTop = useCallback(attribute => {\r\n setState(s => ({\r\n ...s,\r\n maxZIndex: s.maxZIndex + 1,\r\n zIndices: { ...s.zIndices, [attribute]: s.maxZIndex + 1 },\r\n }));\r\n }, []);\r\n\r\n // ── Listas de atributos ──────────────────────────────────────────────────────\r\n const unusedAttrs = Object.keys(state.attrValues)\r\n .filter(e => e && e.trim() !== '' && !rows.includes(e) && !cols.includes(e) && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e))\r\n .sort(sortAs(state.unusedOrder));\r\n\r\n const unusedLength = unusedAttrs.reduce((r, e) => r + e.length, 0);\r\n const horizUnused = unusedLength < unusedOrientationCutoff;\r\n\r\n const colAttrs = cols.filter(e => e && e.trim() !== '' && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e));\r\n const rowAttrs = rows.filter(e => e && e.trim() !== '' && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e));\r\n\r\n // ── Mapa de zona → lista actual ──────────────────────────────────────────────\r\n // Para saber a qué lista pertenece cada atributo durante el drag\r\n const getZoneOfItem = id => {\r\n if (rowAttrs.includes(id)) return 'rows';\r\n if (colAttrs.includes(id)) return 'cols';\r\n if (unusedAttrs.includes(id)) return 'unused';\r\n return null;\r\n };\r\n\r\n const getListByZone = zone => {\r\n if (zone === 'rows') return rowAttrs;\r\n if (zone === 'cols') return colAttrs;\r\n if (zone === 'unused') return unusedAttrs;\r\n return [];\r\n };\r\n\r\n const getUpdaterByZone = zone => {\r\n if (zone === 'rows') return propUpdater('rows');\r\n if (zone === 'cols') return propUpdater('cols');\r\n if (zone === 'unused') return order => setState(s => ({ ...s, unusedOrder: order }));\r\n return () => { };\r\n };\r\n\r\n // ── Sensores dnd-kit ─────────────────────────────────────────────────────────\r\n const sensors = useSensors(\r\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } })\r\n );\r\n\r\n // ── Handlers de dnd-kit ──────────────────────────────────────────────────────\r\n const handleDragStart = ({ active }) => {\r\n setActiveId(active.id);\r\n };\r\n\r\n const handleDragOver = ({ active, over }) => {\r\n if (!over) return;\r\n\r\n const activeZone = getZoneOfItem(active.id);\r\n const overZone = over.data?.current?.sortable?.containerId ?? getZoneOfItem(over.id);\r\n\r\n // Guardia 1: Ambos deben tener zona y ser distintas\r\n if (!activeZone || !overZone || activeZone === overZone) return;\r\n\r\n // Mover entre zonas en tiempo real (mientras se arrastra)\r\n const activeList = [...getListByZone(activeZone)];\r\n const overList = [...getListByZone(overZone)];\r\n\r\n const activeIndex = activeList.indexOf(active.id);\r\n const overIndex = overList.indexOf(over.id);\r\n\r\n // Guardia 2: El item debe existir en la lista de origen (evita splice -1)\r\n if (activeIndex === -1) return;\r\n\r\n // Guardia 3: Evitar duplicados en la lista de destino\r\n if (overList.includes(active.id)) return;\r\n\r\n activeList.splice(activeIndex, 1);\r\n const insertAt = overIndex >= 0 ? overIndex : overList.length;\r\n overList.splice(insertAt, 0, active.id);\r\n\r\n // Actualizar ambas listas\r\n const updateActiveZone = getUpdaterByZone(activeZone);\r\n const updateOverZone = getUpdaterByZone(overZone);\r\n\r\n updateActiveZone(activeList);\r\n updateOverZone(overList);\r\n };\r\n\r\n const handleDragEnd = ({ active, over }) => {\r\n setActiveId(null);\r\n if (!over) return;\r\n\r\n const activeZone = getZoneOfItem(active.id);\r\n const overZone = over.data?.current?.sortable?.containerId ?? getZoneOfItem(over.id);\r\n\r\n if (!activeZone || !overZone) return;\r\n\r\n if (activeZone === overZone) {\r\n // Reordenamiento dentro de la misma zona\r\n const list = getListByZone(activeZone);\r\n const oldIndex = list.indexOf(active.id);\r\n const newIndex = list.indexOf(over.id);\r\n if (oldIndex !== newIndex) {\r\n getUpdaterByZone(activeZone)(arrayMove(list, oldIndex, newIndex));\r\n }\r\n }\r\n // Si activeZone !== overZone, ya fue manejado en handleDragOver\r\n };\r\n\r\n // ── UI ───────────────────────────────────────────────────────────────────────\r\n const isOpen = dropdown => state.openDropdown === dropdown;\r\n const numValsAllowed = aggregators[aggregatorName]?.([])?.()?.numInputs || 0;\r\n const aggregatorCellOutlet = aggregators[aggregatorName]?.([])?.()?.outlet;\r\n const actualRendererName = rendererName in renderers ? rendererName : Object.keys(renderers)[0];\r\n\r\n const sortIcons = {\r\n key_a_to_z: { rowSymbol: '↕', colSymbol: '↔', next: 'value_a_to_z' },\r\n value_a_to_z: { rowSymbol: '↓', colSymbol: '→', next: 'value_z_to_a' },\r\n value_z_to_a: { rowSymbol: '↑', colSymbol: '←', next: 'key_a_to_z' },\r\n };\r\n\r\n const sharedCellProps = {\r\n state,\r\n valueFilter,\r\n sorters,\r\n menuLimit,\r\n setValuesInFilter,\r\n addValuesToFilter,\r\n moveFilterBoxToTop,\r\n removeValuesFromFilter,\r\n };\r\n\r\n const rendererCell = (\r\n <td className=\"pvtRenderers\">\r\n <Dropdown\r\n current={actualRendererName}\r\n values={Object.keys(renderers)}\r\n open={isOpen('renderer')}\r\n zIndex={isOpen('renderer') ? state.maxZIndex + 1 : 1}\r\n toggle={() => setState(s => ({ ...s, openDropdown: isOpen('renderer') ? false : 'renderer' }))}\r\n setValue={propUpdater('rendererName')}\r\n />\r\n </td>\r\n );\r\n\r\n const aggregatorCell = (\r\n <td className=\"pvtVals\">\r\n <Dropdown\r\n current={aggregatorName}\r\n values={Object.keys(aggregators)}\r\n open={isOpen('aggregators')}\r\n zIndex={isOpen('aggregators') ? state.maxZIndex + 1 : 1}\r\n toggle={() => setState(s => ({ ...s, openDropdown: isOpen('aggregators') ? false : 'aggregators' }))}\r\n setValue={propUpdater('aggregatorName')}\r\n />\r\n <a role=\"button\" className=\"pvtRowOrder\" onClick={() => propUpdater('rowOrder')(sortIcons[rowOrder].next)}>\r\n {sortIcons[rowOrder].rowSymbol}\r\n </a>\r\n <a role=\"button\" className=\"pvtColOrder\" onClick={() => propUpdater('colOrder')(sortIcons[colOrder].next)}>\r\n {sortIcons[colOrder].colSymbol}\r\n </a>\r\n {numValsAllowed > 0 && <br />}\r\n {new Array(numValsAllowed).fill(null).map((_, i) => [\r\n <Dropdown\r\n key={i}\r\n current={vals[i]}\r\n values={Object.keys(state.attrValues).filter(\r\n e => !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e)\r\n )}\r\n open={isOpen(`val${i}`)}\r\n zIndex={isOpen(`val${i}`) ? state.maxZIndex + 1 : 1}\r\n toggle={() => setState(s => ({ ...s, openDropdown: isOpen(`val${i}`) ? false : `val${i}` }))}\r\n setValue={value => sendPropUpdate({ vals: { $splice: [[i, 1, value]] } })}\r\n />,\r\n i + 1 !== numValsAllowed ? <br key={`br${i}`} /> : null,\r\n ])}\r\n {aggregatorCellOutlet && aggregatorCellOutlet(data)}\r\n </td>\r\n );\r\n\r\n const unusedAttrsCell = (\r\n <DnDCell\r\n id=\"unused\"\r\n items={unusedAttrs}\r\n classes={`pvtAxisContainer pvtUnused ${horizUnused ? 'pvtHorizList' : 'pvtVertList'}`}\r\n isHorizontal={horizUnused}\r\n {...sharedCellProps}\r\n />\r\n );\r\n\r\n const colAttrsCell = (\r\n <DnDCell\r\n id=\"cols\"\r\n items={colAttrs}\r\n classes=\"pvtAxisContainer pvtHorizList pvtCols\"\r\n isHorizontal\r\n {...sharedCellProps}\r\n />\r\n );\r\n\r\n const rowAttrsCell = (\r\n <DnDCell\r\n id=\"rows\"\r\n items={rowAttrs}\r\n classes=\"pvtAxisContainer pvtVertList pvtRows\"\r\n isHorizontal={false}\r\n {...sharedCellProps}\r\n />\r\n );\r\n\r\n // Footer de paginación\r\n const renderFooter = () => {\r\n const pivotData = new PivotData({ ...props, data: state.materializedInput });\r\n const totalPivotRows = pivotData.getRowKeys().length;\r\n const totalRecords = state.materializedInput.length;\r\n const totalPages = Math.ceil(totalPivotRows / pageSize);\r\n\r\n return (\r\n <div className=\"pvtFooter\">\r\n <div className=\"pvtFooterInfo\">\r\n Total registros: {totalRecords} | Filas: {totalPivotRows}\r\n </div>\r\n <div className=\"pvtFooterPagination\">\r\n <button className=\"pvtButton\" disabled={page <= 1} onClick={() => propUpdater('page')(1)}>«</button>\r\n <button className=\"pvtButton\" disabled={page <= 1} onClick={() => propUpdater('page')(page - 1)}>‹</button>\r\n <span>\r\n Página{' '}\r\n <input\r\n type=\"number\"\r\n className=\"pvtPageInput\"\r\n value={page}\r\n min={1}\r\n max={totalPages}\r\n onChange={e => {\r\n const val = parseInt(e.target.value, 10);\r\n if (val > 0 && val <= totalPages) propUpdater('page')(val);\r\n }}\r\n />{' '}\r\n de {totalPages}\r\n </span>\r\n <button className=\"pvtButton\" disabled={page >= totalPages} onClick={() => propUpdater('page')(page + 1)}>›</button>\r\n <button className=\"pvtButton\" disabled={page >= totalPages} onClick={() => propUpdater('page')(totalPages)}>»</button>\r\n <select\r\n className=\"pvtPageSize\"\r\n value={pageSize}\r\n onChange={e => {\r\n const newSize = parseInt(e.target.value, 10);\r\n onChangeRef.current?.(update(props, { pageSize: { $set: newSize }, page: { $set: 1 } }));\r\n }}\r\n >\r\n {[10, 20, 50, 100].map(n => (\r\n <option key={n} value={n}>{n} / pág</option>\r\n ))}\r\n </select>\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n const outputCell = (\r\n <td className=\"pvtOutput\">\r\n <PivotTable {...update(props, { data: { $set: state.materializedInput } })} />\r\n {pagination && renderFooter()}\r\n </td>\r\n );\r\n\r\n return (\r\n <DndContext\r\n sensors={sensors}\r\n collisionDetection={closestCorners}\r\n onDragStart={handleDragStart}\r\n onDragOver={handleDragOver}\r\n onDragEnd={handleDragEnd}\r\n >\r\n <table className=\"pvtUi\">\r\n <tbody onClick={() => setState(s => ({ ...s, openDropdown: false }))}>\r\n {horizUnused ? (\r\n <>\r\n <tr>{rendererCell}{unusedAttrsCell}</tr>\r\n <tr>{aggregatorCell}{colAttrsCell}</tr>\r\n <tr>{rowAttrsCell}{outputCell}</tr>\r\n </>\r\n ) : (\r\n <>\r\n <tr>{rendererCell}{aggregatorCell}{colAttrsCell}</tr>\r\n <tr>{unusedAttrsCell}{rowAttrsCell}{outputCell}</tr>\r\n </>\r\n )}\r\n </tbody>\r\n </table>\r\n\r\n {/* Overlay: muestra el atributo mientras se arrastra */}\r\n <DragOverlay>\r\n {activeId ? (\r\n <ul style={{ listStyle: 'none', padding: 0, margin: 0 }}>\r\n <li>\r\n <span className=\"pvtAttr\">{activeId}</span>\r\n </li>\r\n </ul>\r\n ) : null}\r\n </DragOverlay>\r\n </DndContext>\r\n );\r\n};\r\n\r\nPivotTableUI.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n hiddenAttributes: PropTypes.arrayOf(PropTypes.string),\r\n hiddenFromAggregators: PropTypes.arrayOf(PropTypes.string),\r\n hiddenFromDragDrop: PropTypes.arrayOf(PropTypes.string),\r\n unusedOrientationCutoff: PropTypes.number,\r\n menuLimit: PropTypes.number,\r\n};\r\n\r\nPivotTableUI.defaultProps = {\r\n hiddenAttributes: [],\r\n hiddenFromAggregators: [],\r\n hiddenFromDragDrop: [],\r\n unusedOrientationCutoff: 85,\r\n menuLimit: 500,\r\n};\r\n\r\nexport default PivotTableUI;"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = createPlotlyRenderers;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
+
var _Utilities = require("./Utilities");
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
12
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
13
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
14
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
15
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
16
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
17
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
18
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
19
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
20
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
21
|
+
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
|
|
22
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
23
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
24
|
+
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
25
|
+
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
26
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
27
|
+
/* eslint-disable react/prop-types */
|
|
28
|
+
// eslint can't see inherited propTypes!
|
|
29
|
+
|
|
30
|
+
function makeRenderer(PlotlyComponent) {
|
|
31
|
+
var traceOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
32
|
+
var layoutOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
33
|
+
var transpose = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
34
|
+
var Renderer = /*#__PURE__*/function (_React$PureComponent) {
|
|
35
|
+
function Renderer() {
|
|
36
|
+
_classCallCheck(this, Renderer);
|
|
37
|
+
return _callSuper(this, Renderer, arguments);
|
|
38
|
+
}
|
|
39
|
+
_inherits(Renderer, _React$PureComponent);
|
|
40
|
+
return _createClass(Renderer, [{
|
|
41
|
+
key: "render",
|
|
42
|
+
value: function render() {
|
|
43
|
+
var pivotData = new _Utilities.PivotData(this.props);
|
|
44
|
+
var rowKeys = pivotData.getRowKeys();
|
|
45
|
+
var colKeys = pivotData.getColKeys();
|
|
46
|
+
var traceKeys = transpose ? colKeys : rowKeys;
|
|
47
|
+
if (traceKeys.length === 0) {
|
|
48
|
+
traceKeys.push([]);
|
|
49
|
+
}
|
|
50
|
+
var datumKeys = transpose ? rowKeys : colKeys;
|
|
51
|
+
if (datumKeys.length === 0) {
|
|
52
|
+
datumKeys.push([]);
|
|
53
|
+
}
|
|
54
|
+
var fullAggName = this.props.aggregatorName;
|
|
55
|
+
var numInputs = this.props.aggregators[fullAggName]([])().numInputs || 0;
|
|
56
|
+
if (numInputs !== 0) {
|
|
57
|
+
fullAggName += " of ".concat(this.props.vals.slice(0, numInputs).join(', '));
|
|
58
|
+
}
|
|
59
|
+
var data = traceKeys.map(function (traceKey) {
|
|
60
|
+
var values = [];
|
|
61
|
+
var labels = [];
|
|
62
|
+
var _iterator = _createForOfIteratorHelper(datumKeys),
|
|
63
|
+
_step;
|
|
64
|
+
try {
|
|
65
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
66
|
+
var datumKey = _step.value;
|
|
67
|
+
var val = parseFloat(pivotData.getAggregator(transpose ? datumKey : traceKey, transpose ? traceKey : datumKey).value());
|
|
68
|
+
values.push(isFinite(val) ? val : null);
|
|
69
|
+
labels.push(datumKey.join('-') || ' ');
|
|
70
|
+
}
|
|
71
|
+
} catch (err) {
|
|
72
|
+
_iterator.e(err);
|
|
73
|
+
} finally {
|
|
74
|
+
_iterator.f();
|
|
75
|
+
}
|
|
76
|
+
var trace = {
|
|
77
|
+
name: traceKey.join('-') || fullAggName
|
|
78
|
+
};
|
|
79
|
+
if (traceOptions.type === 'pie') {
|
|
80
|
+
trace.values = values;
|
|
81
|
+
trace.labels = labels.length > 1 ? labels : [fullAggName];
|
|
82
|
+
} else {
|
|
83
|
+
trace.x = transpose ? values : labels;
|
|
84
|
+
trace.y = transpose ? labels : values;
|
|
85
|
+
}
|
|
86
|
+
return Object.assign(trace, traceOptions);
|
|
87
|
+
});
|
|
88
|
+
var titleText = fullAggName;
|
|
89
|
+
var hAxisTitle = transpose ? this.props.rows.join('-') : this.props.cols.join('-');
|
|
90
|
+
var groupByTitle = transpose ? this.props.cols.join('-') : this.props.rows.join('-');
|
|
91
|
+
if (hAxisTitle !== '') {
|
|
92
|
+
titleText += " vs ".concat(hAxisTitle);
|
|
93
|
+
}
|
|
94
|
+
if (groupByTitle !== '') {
|
|
95
|
+
titleText += " by ".concat(groupByTitle);
|
|
96
|
+
}
|
|
97
|
+
var layout = {
|
|
98
|
+
title: titleText,
|
|
99
|
+
hovermode: 'closest',
|
|
100
|
+
/* eslint-disable no-magic-numbers */
|
|
101
|
+
width: window.innerWidth / 1.5,
|
|
102
|
+
height: window.innerHeight / 1.4 - 50
|
|
103
|
+
/* eslint-enable no-magic-numbers */
|
|
104
|
+
};
|
|
105
|
+
if (traceOptions.type === 'pie') {
|
|
106
|
+
var columns = Math.ceil(Math.sqrt(data.length));
|
|
107
|
+
var rows = Math.ceil(data.length / columns);
|
|
108
|
+
layout.grid = {
|
|
109
|
+
columns: columns,
|
|
110
|
+
rows: rows
|
|
111
|
+
};
|
|
112
|
+
data.forEach(function (d, i) {
|
|
113
|
+
d.domain = {
|
|
114
|
+
row: Math.floor(i / columns),
|
|
115
|
+
column: i - columns * Math.floor(i / columns)
|
|
116
|
+
};
|
|
117
|
+
if (data.length > 1) {
|
|
118
|
+
d.title = d.name;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
if (data[0].labels.length === 1) {
|
|
122
|
+
layout.showlegend = false;
|
|
123
|
+
}
|
|
124
|
+
} else {
|
|
125
|
+
layout.xaxis = {
|
|
126
|
+
title: transpose ? fullAggName : null,
|
|
127
|
+
automargin: true
|
|
128
|
+
};
|
|
129
|
+
layout.yaxis = {
|
|
130
|
+
title: transpose ? null : fullAggName,
|
|
131
|
+
automargin: true
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
return /*#__PURE__*/_react["default"].createElement(PlotlyComponent, {
|
|
135
|
+
data: data,
|
|
136
|
+
layout: Object.assign(layout, layoutOptions, this.props.plotlyOptions),
|
|
137
|
+
config: this.props.plotlyConfig,
|
|
138
|
+
onUpdate: this.props.onRendererUpdate
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}]);
|
|
142
|
+
}(_react["default"].PureComponent);
|
|
143
|
+
Renderer.defaultProps = Object.assign({}, _Utilities.PivotData.defaultProps, {
|
|
144
|
+
plotlyOptions: {},
|
|
145
|
+
plotlyConfig: {}
|
|
146
|
+
});
|
|
147
|
+
Renderer.propTypes = Object.assign({}, _Utilities.PivotData.propTypes, {
|
|
148
|
+
plotlyOptions: _propTypes["default"].object,
|
|
149
|
+
plotlyConfig: _propTypes["default"].object,
|
|
150
|
+
onRendererUpdate: _propTypes["default"].func
|
|
151
|
+
});
|
|
152
|
+
return Renderer;
|
|
153
|
+
}
|
|
154
|
+
function makeScatterRenderer(PlotlyComponent) {
|
|
155
|
+
var Renderer = /*#__PURE__*/function (_React$PureComponent2) {
|
|
156
|
+
function Renderer() {
|
|
157
|
+
_classCallCheck(this, Renderer);
|
|
158
|
+
return _callSuper(this, Renderer, arguments);
|
|
159
|
+
}
|
|
160
|
+
_inherits(Renderer, _React$PureComponent2);
|
|
161
|
+
return _createClass(Renderer, [{
|
|
162
|
+
key: "render",
|
|
163
|
+
value: function render() {
|
|
164
|
+
var pivotData = new _Utilities.PivotData(this.props);
|
|
165
|
+
var rowKeys = pivotData.getRowKeys();
|
|
166
|
+
var colKeys = pivotData.getColKeys();
|
|
167
|
+
if (rowKeys.length === 0) {
|
|
168
|
+
rowKeys.push([]);
|
|
169
|
+
}
|
|
170
|
+
if (colKeys.length === 0) {
|
|
171
|
+
colKeys.push([]);
|
|
172
|
+
}
|
|
173
|
+
var data = {
|
|
174
|
+
x: [],
|
|
175
|
+
y: [],
|
|
176
|
+
text: [],
|
|
177
|
+
type: 'scatter',
|
|
178
|
+
mode: 'markers'
|
|
179
|
+
};
|
|
180
|
+
rowKeys.map(function (rowKey) {
|
|
181
|
+
colKeys.map(function (colKey) {
|
|
182
|
+
var v = pivotData.getAggregator(rowKey, colKey).value();
|
|
183
|
+
if (v !== null) {
|
|
184
|
+
data.x.push(colKey.join('-'));
|
|
185
|
+
data.y.push(rowKey.join('-'));
|
|
186
|
+
data.text.push(v);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
var layout = {
|
|
191
|
+
title: this.props.rows.join('-') + ' vs ' + this.props.cols.join('-'),
|
|
192
|
+
hovermode: 'closest',
|
|
193
|
+
/* eslint-disable no-magic-numbers */
|
|
194
|
+
xaxis: {
|
|
195
|
+
title: this.props.cols.join('-'),
|
|
196
|
+
automargin: true
|
|
197
|
+
},
|
|
198
|
+
yaxis: {
|
|
199
|
+
title: this.props.rows.join('-'),
|
|
200
|
+
automargin: true
|
|
201
|
+
},
|
|
202
|
+
width: window.innerWidth / 1.5,
|
|
203
|
+
height: window.innerHeight / 1.4 - 50
|
|
204
|
+
/* eslint-enable no-magic-numbers */
|
|
205
|
+
};
|
|
206
|
+
return /*#__PURE__*/_react["default"].createElement(PlotlyComponent, {
|
|
207
|
+
data: [data],
|
|
208
|
+
layout: Object.assign(layout, this.props.plotlyOptions),
|
|
209
|
+
config: this.props.plotlyConfig,
|
|
210
|
+
onUpdate: this.props.onRendererUpdate
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}]);
|
|
214
|
+
}(_react["default"].PureComponent);
|
|
215
|
+
Renderer.defaultProps = Object.assign({}, _Utilities.PivotData.defaultProps, {
|
|
216
|
+
plotlyOptions: {},
|
|
217
|
+
plotlyConfig: {}
|
|
218
|
+
});
|
|
219
|
+
Renderer.propTypes = Object.assign({}, _Utilities.PivotData.propTypes, {
|
|
220
|
+
plotlyOptions: _propTypes["default"].object,
|
|
221
|
+
plotlyConfig: _propTypes["default"].object,
|
|
222
|
+
onRendererUpdate: _propTypes["default"].func
|
|
223
|
+
});
|
|
224
|
+
return Renderer;
|
|
225
|
+
}
|
|
226
|
+
function createPlotlyRenderers(PlotlyComponent) {
|
|
227
|
+
return {
|
|
228
|
+
'Grouped Column Chart': makeRenderer(PlotlyComponent, {
|
|
229
|
+
type: 'bar'
|
|
230
|
+
}, {
|
|
231
|
+
barmode: 'group'
|
|
232
|
+
}),
|
|
233
|
+
'Stacked Column Chart': makeRenderer(PlotlyComponent, {
|
|
234
|
+
type: 'bar'
|
|
235
|
+
}, {
|
|
236
|
+
barmode: 'relative'
|
|
237
|
+
}),
|
|
238
|
+
'Grouped Bar Chart': makeRenderer(PlotlyComponent, {
|
|
239
|
+
type: 'bar',
|
|
240
|
+
orientation: 'h'
|
|
241
|
+
}, {
|
|
242
|
+
barmode: 'group'
|
|
243
|
+
}, true),
|
|
244
|
+
'Stacked Bar Chart': makeRenderer(PlotlyComponent, {
|
|
245
|
+
type: 'bar',
|
|
246
|
+
orientation: 'h'
|
|
247
|
+
}, {
|
|
248
|
+
barmode: 'relative'
|
|
249
|
+
}, true),
|
|
250
|
+
'Line Chart': makeRenderer(PlotlyComponent),
|
|
251
|
+
'Dot Chart': makeRenderer(PlotlyComponent, {
|
|
252
|
+
mode: 'markers'
|
|
253
|
+
}, {}, true),
|
|
254
|
+
'Area Chart': makeRenderer(PlotlyComponent, {
|
|
255
|
+
stackgroup: 1
|
|
256
|
+
}),
|
|
257
|
+
'Scatter Chart': makeScatterRenderer(PlotlyComponent),
|
|
258
|
+
'Multiple Pie Chart': makeRenderer(PlotlyComponent, {
|
|
259
|
+
type: 'pie',
|
|
260
|
+
scalegroup: 1,
|
|
261
|
+
hoverinfo: 'label+value',
|
|
262
|
+
textinfo: 'none'
|
|
263
|
+
}, {}, true)
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
module.exports = exports.default;
|
|
267
|
+
//# sourceMappingURL=PlotlyRenderers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlotlyRenderers.js","names":["_react","_interopRequireDefault","require","_propTypes","_Utilities","e","__esModule","_createForOfIteratorHelper","r","t","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","_classCallCheck","_defineProperties","enumerable","configurable","writable","Object","defineProperty","_toPropertyKey","key","_createClass","prototype","i","_toPrimitive","_typeof","toPrimitive","String","Number","_callSuper","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","apply","_assertThisInitialized","ReferenceError","Boolean","valueOf","setPrototypeOf","getPrototypeOf","bind","__proto__","_inherits","create","_setPrototypeOf","makeRenderer","PlotlyComponent","traceOptions","arguments","undefined","layoutOptions","transpose","Renderer","_React$PureComponent","render","pivotData","PivotData","props","rowKeys","getRowKeys","colKeys","getColKeys","traceKeys","push","datumKeys","fullAggName","aggregatorName","numInputs","aggregators","concat","vals","join","data","map","traceKey","values","labels","_iterator","_step","datumKey","val","parseFloat","getAggregator","isFinite","err","trace","type","x","y","assign","titleText","hAxisTitle","rows","cols","groupByTitle","layout","title","hovermode","width","window","innerWidth","height","innerHeight","columns","Math","ceil","sqrt","grid","forEach","d","domain","row","floor","column","showlegend","xaxis","automargin","yaxis","createElement","plotlyOptions","config","plotlyConfig","onUpdate","onRendererUpdate","React","PureComponent","defaultProps","propTypes","PropTypes","object","func","makeScatterRenderer","_React$PureComponent2","text","mode","rowKey","colKey","v","createPlotlyRenderers","barmode","orientation","stackgroup","scalegroup","hoverinfo","textinfo","module","exports","default"],"sources":["src/PlotlyRenderers.jsx"],"sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {PivotData} from './Utilities';\r\n\r\n/* eslint-disable react/prop-types */\r\n// eslint can't see inherited propTypes!\r\n\r\nfunction makeRenderer(\r\n PlotlyComponent,\r\n traceOptions = {},\r\n layoutOptions = {},\r\n transpose = false\r\n) {\r\n class Renderer extends React.PureComponent {\r\n render() {\r\n const pivotData = new PivotData(this.props);\r\n const rowKeys = pivotData.getRowKeys();\r\n const colKeys = pivotData.getColKeys();\r\n const traceKeys = transpose ? colKeys : rowKeys;\r\n if (traceKeys.length === 0) {\r\n traceKeys.push([]);\r\n }\r\n const datumKeys = transpose ? rowKeys : colKeys;\r\n if (datumKeys.length === 0) {\r\n datumKeys.push([]);\r\n }\r\n\r\n let fullAggName = this.props.aggregatorName;\r\n const numInputs =\r\n this.props.aggregators[fullAggName]([])().numInputs || 0;\r\n if (numInputs !== 0) {\r\n fullAggName += ` of ${this.props.vals.slice(0, numInputs).join(', ')}`;\r\n }\r\n\r\n const data = traceKeys.map(traceKey => {\r\n const values = [];\r\n const labels = [];\r\n for (const datumKey of datumKeys) {\r\n const val = parseFloat(\r\n pivotData\r\n .getAggregator(\r\n transpose ? datumKey : traceKey,\r\n transpose ? traceKey : datumKey\r\n )\r\n .value()\r\n );\r\n values.push(isFinite(val) ? val : null);\r\n labels.push(datumKey.join('-') || ' ');\r\n }\r\n const trace = {name: traceKey.join('-') || fullAggName};\r\n if (traceOptions.type === 'pie') {\r\n trace.values = values;\r\n trace.labels = labels.length > 1 ? labels : [fullAggName];\r\n } else {\r\n trace.x = transpose ? values : labels;\r\n trace.y = transpose ? labels : values;\r\n }\r\n return Object.assign(trace, traceOptions);\r\n });\r\n\r\n let titleText = fullAggName;\r\n const hAxisTitle = transpose\r\n ? this.props.rows.join('-')\r\n : this.props.cols.join('-');\r\n const groupByTitle = transpose\r\n ? this.props.cols.join('-')\r\n : this.props.rows.join('-');\r\n if (hAxisTitle !== '') {\r\n titleText += ` vs ${hAxisTitle}`;\r\n }\r\n if (groupByTitle !== '') {\r\n titleText += ` by ${groupByTitle}`;\r\n }\r\n\r\n const layout = {\r\n title: titleText,\r\n hovermode: 'closest',\r\n /* eslint-disable no-magic-numbers */\r\n width: window.innerWidth / 1.5,\r\n height: window.innerHeight / 1.4 - 50,\r\n /* eslint-enable no-magic-numbers */\r\n };\r\n\r\n if (traceOptions.type === 'pie') {\r\n const columns = Math.ceil(Math.sqrt(data.length));\r\n const rows = Math.ceil(data.length / columns);\r\n layout.grid = {columns, rows};\r\n data.forEach((d, i) => {\r\n d.domain = {\r\n row: Math.floor(i / columns),\r\n column: i - columns * Math.floor(i / columns),\r\n };\r\n if (data.length > 1) {\r\n d.title = d.name;\r\n }\r\n });\r\n if (data[0].labels.length === 1) {\r\n layout.showlegend = false;\r\n }\r\n } else {\r\n layout.xaxis = {\r\n title: transpose ? fullAggName : null,\r\n automargin: true,\r\n };\r\n layout.yaxis = {\r\n title: transpose ? null : fullAggName,\r\n automargin: true,\r\n };\r\n }\r\n\r\n return (\r\n <PlotlyComponent\r\n data={data}\r\n layout={Object.assign(\r\n layout,\r\n layoutOptions,\r\n this.props.plotlyOptions\r\n )}\r\n config={this.props.plotlyConfig}\r\n onUpdate={this.props.onRendererUpdate}\r\n />\r\n );\r\n }\r\n }\r\n\r\n Renderer.defaultProps = Object.assign({}, PivotData.defaultProps, {\r\n plotlyOptions: {},\r\n plotlyConfig: {},\r\n });\r\n Renderer.propTypes = Object.assign({}, PivotData.propTypes, {\r\n plotlyOptions: PropTypes.object,\r\n plotlyConfig: PropTypes.object,\r\n onRendererUpdate: PropTypes.func,\r\n });\r\n\r\n return Renderer;\r\n}\r\n\r\nfunction makeScatterRenderer(PlotlyComponent) {\r\n class Renderer extends React.PureComponent {\r\n render() {\r\n const pivotData = new PivotData(this.props);\r\n const rowKeys = pivotData.getRowKeys();\r\n const colKeys = pivotData.getColKeys();\r\n if (rowKeys.length === 0) {\r\n rowKeys.push([]);\r\n }\r\n if (colKeys.length === 0) {\r\n colKeys.push([]);\r\n }\r\n\r\n const data = {x: [], y: [], text: [], type: 'scatter', mode: 'markers'};\r\n\r\n rowKeys.map(rowKey => {\r\n colKeys.map(colKey => {\r\n const v = pivotData.getAggregator(rowKey, colKey).value();\r\n if (v !== null) {\r\n data.x.push(colKey.join('-'));\r\n data.y.push(rowKey.join('-'));\r\n data.text.push(v);\r\n }\r\n });\r\n });\r\n\r\n const layout = {\r\n title: this.props.rows.join('-') + ' vs ' + this.props.cols.join('-'),\r\n hovermode: 'closest',\r\n /* eslint-disable no-magic-numbers */\r\n xaxis: {title: this.props.cols.join('-'), automargin: true},\r\n yaxis: {title: this.props.rows.join('-'), automargin: true},\r\n width: window.innerWidth / 1.5,\r\n height: window.innerHeight / 1.4 - 50,\r\n /* eslint-enable no-magic-numbers */\r\n };\r\n\r\n return (\r\n <PlotlyComponent\r\n data={[data]}\r\n layout={Object.assign(layout, this.props.plotlyOptions)}\r\n config={this.props.plotlyConfig}\r\n onUpdate={this.props.onRendererUpdate}\r\n />\r\n );\r\n }\r\n }\r\n\r\n Renderer.defaultProps = Object.assign({}, PivotData.defaultProps, {\r\n plotlyOptions: {},\r\n plotlyConfig: {},\r\n });\r\n Renderer.propTypes = Object.assign({}, PivotData.propTypes, {\r\n plotlyOptions: PropTypes.object,\r\n plotlyConfig: PropTypes.object,\r\n onRendererUpdate: PropTypes.func,\r\n });\r\n\r\n return Renderer;\r\n}\r\n\r\nexport default function createPlotlyRenderers(PlotlyComponent) {\r\n return {\r\n 'Grouped Column Chart': makeRenderer(\r\n PlotlyComponent,\r\n {type: 'bar'},\r\n {barmode: 'group'}\r\n ),\r\n 'Stacked Column Chart': makeRenderer(\r\n PlotlyComponent,\r\n {type: 'bar'},\r\n {barmode: 'relative'}\r\n ),\r\n 'Grouped Bar Chart': makeRenderer(\r\n PlotlyComponent,\r\n {type: 'bar', orientation: 'h'},\r\n {barmode: 'group'},\r\n true\r\n ),\r\n 'Stacked Bar Chart': makeRenderer(\r\n PlotlyComponent,\r\n {type: 'bar', orientation: 'h'},\r\n {barmode: 'relative'},\r\n true\r\n ),\r\n 'Line Chart': makeRenderer(PlotlyComponent),\r\n 'Dot Chart': makeRenderer(PlotlyComponent, {mode: 'markers'}, {}, true),\r\n 'Area Chart': makeRenderer(PlotlyComponent, {stackgroup: 1}),\r\n 'Scatter Chart': makeScatterRenderer(PlotlyComponent),\r\n 'Multiple Pie Chart': makeRenderer(\r\n PlotlyComponent,\r\n {type: 'pie', scalegroup: 1, hoverinfo: 'label+value', textinfo: 'none'},\r\n {},\r\n true\r\n ),\r\n };\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
package/README.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# react-pivottable-plus
|
|
2
|
+
|
|
3
|
+
`react-pivottable-plus` es una versión moderna y extendida de [react-pivottable-grouping](https://github.com/jjagielka/react-pivottable-grouping) (a su vez un fork de [react-pivottable](https://github.com/plotly/react-pivottable)), actualizada para los estándares actuales de desarrollo web y con una interfaz de usuario significativamente mejorada.
|
|
4
|
+
|
|
5
|
+
Esta biblioteca permite la exploración y el análisis de datos mediante el resumen de un conjunto de datos en una tabla dinámica con una interfaz de arrastrar y soltar (drag'n'drop) intuitiva.
|
|
6
|
+
|
|
7
|
+
## 🚀 Novedades y Mejoras
|
|
8
|
+
|
|
9
|
+
### ⚛️ Soporte para React 19
|
|
10
|
+
Totalmente compatible con **React 19**, aprovechando las últimas mejoras de rendimiento y estabilidad del ecosistema.
|
|
11
|
+
|
|
12
|
+
### 🎨 Interfaces de Usuario Modernas
|
|
13
|
+
Se han incluido renderizadores de alta calidad basados en frameworks modernos:
|
|
14
|
+
- **Tailwind CSS**: Una interfaz limpia, moderna y altamente personalizable.
|
|
15
|
+
- **Shadcn/UI**: Diseño profesional basado en componentes de Radix UI y Tailwind.
|
|
16
|
+
- **Radix UI**: Soporte nativo para componentes accesibles y robustos.
|
|
17
|
+
|
|
18
|
+
### 📊 Paginación y Totalización (Nuevo Footer)
|
|
19
|
+
Se ha añadido un pie de página inteligente que incluye:
|
|
20
|
+
- **Paginación avanzada**: Control de página actual y tamaño de página (registros por página).
|
|
21
|
+
- **Totalización**: Visualización en tiempo real del total de registros procesados y el total de filas resultantes en la tabla dinámica.
|
|
22
|
+
|
|
23
|
+
### 📉 Agrupación y Subtotales
|
|
24
|
+
Incluye soporte nativo para la agrupación de filas y columnas con cálculo automático de **subtotales**, permitiendo colapsar y expandir secciones para un análisis de datos más profundo.
|
|
25
|
+
|
|
26
|
+
## 📦 Instalación
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install --save react-pivottable-plus react react-dom
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 🛠️ Uso Básico
|
|
33
|
+
|
|
34
|
+
```jsx
|
|
35
|
+
import React, { useState } from 'react';
|
|
36
|
+
import PivotTableUI from 'react-pivottable-plus/PivotTableUI';
|
|
37
|
+
import 'react-pivottable-plus/pivottable.css';
|
|
38
|
+
|
|
39
|
+
const data = [
|
|
40
|
+
{ producto: "Manzana", categoria: "Fruta", ventas: 100 },
|
|
41
|
+
{ producto: "Pera", categoria: "Fruta", ventas: 150 },
|
|
42
|
+
// ... más datos
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
function App() {
|
|
46
|
+
const [state, setState] = useState({});
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<PivotTableUI
|
|
50
|
+
data={data}
|
|
51
|
+
onChange={s => setState(s)}
|
|
52
|
+
{...state}
|
|
53
|
+
/>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## 🌈 Uso de Renderizadores Modernos (Tailwind / Shadcn / Radix)
|
|
59
|
+
|
|
60
|
+
Para utilizar las nuevas interfaces, importa el renderizador correspondiente desde la carpeta de renderers:
|
|
61
|
+
|
|
62
|
+
```jsx
|
|
63
|
+
import { TailwindUI } from 'react-pivottable-plus/renderers/TailwindUI';
|
|
64
|
+
// O bien:
|
|
65
|
+
// import { ShadcnDashboardUI } from 'react-pivottable-plus/renderers/ShadcnDashboardUI';
|
|
66
|
+
// import { RadixUI } from 'react-pivottable-plus/renderers/RadixUI';
|
|
67
|
+
|
|
68
|
+
// En tu componente:
|
|
69
|
+
<PivotTableUI
|
|
70
|
+
data={data}
|
|
71
|
+
rendererName="Table" // o el nombre que prefieras
|
|
72
|
+
renderers={{ Table: TailwindUI }}
|
|
73
|
+
{...state}
|
|
74
|
+
/>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 📑 Propiedades Principales
|
|
78
|
+
|
|
79
|
+
| Propiedad | Tipo | Descripción |
|
|
80
|
+
| :--- | :--- | :--- |
|
|
81
|
+
| `data` | Array / Object | Los datos a resumir (formato JSON o Array de Arrays). |
|
|
82
|
+
| `rows` | Array | Atributos para las filas. |
|
|
83
|
+
| `cols` | Array | Atributos para las columnas. |
|
|
84
|
+
| `vals` | Array | Atributos para los valores calculados. |
|
|
85
|
+
| `pagination` | Boolean | Activa/Desactiva el pie de página con paginación. |
|
|
86
|
+
| `pageSize` | Number | Cantidad de registros por página (Default: 20). |
|
|
87
|
+
| `hiddenAttributes` | Array | Atributos que no se mostrarán en la UI. |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
Este proyecto es un fork mantenido de `react-pivottable` con el objetivo de proporcionar una experiencia de usuario superior y compatibilidad con las últimas versiones de React.
|
|
92
|
+
|
|
93
|
+
## ✍️ Créditos y Autoría
|
|
94
|
+
Esta versión moderna y extendida (`react-pivottable-plus`) ha sido desarrollada y mantenida por **Jasp402**, quien ha liderado la implementación de las nuevas interfaces (Tailwind, Shadcn, Radix), la actualización a React 19 y la optimización del motor de arrastre y filtrado.
|