artilleryio / report-viewer

Report viewer for @artilleryio built in @reactjs @getbootstrap @fontawesome ... Create an easy to read and understand report with crucial data highlights and graphs.
https://artillery.io
Mozilla Public License 2.0
27 stars 14 forks source link

Parse of .json report not working #12

Open eliezercazares opened 2 years ago

eliezercazares commented 2 years ago

Getting a few errors when uploading the file.

image

` react-jsx-dev-runtime.development.js:117 Warning: Each child in a list should have a unique "key" prop.

Check the render method of Summary. See https://reactjs.org/link/warning-keys for more information. at i at Summary (http://localhost:3000/static/js/bundle.js:3078:68) at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5) at PageHome at Routes (http://localhost:3000/static/js/bundle.js:68400:5) at Routing at div at div at div at div at Layout (http://localhost:3000/static/js/bundle.js:4541:5) at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5) at Router (http://localhost:3000/static/js/bundle.js:68333:15) at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5) at HostRouter printWarning @ react-jsx-dev-runtime.development.js:117 summary.tsx:97 Uncaught TypeError: Cannot read properties of undefined (reading 'mean') at Summary (summary.tsx:97:1) at renderWithHooks (react-dom.development.js:14985:1) at updateFunctionComponent (react-dom.development.js:17356:1) at beginWork (react-dom.development.js:19063:1) at HTMLUnknownElement.callCallback (react-dom.development.js:3945:1) at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:1) at invokeGuardedCallback (react-dom.development.js:4056:1) at beginWork$1 (react-dom.development.js:23964:1) at performUnitOfWork (react-dom.development.js:22776:1) at workLoopSync (react-dom.development.js:22707:1) latency.tsx:16 Uncaught TypeError: Cannot read properties of undefined (reading 'min') at Latency (latency.tsx:16:1) at renderWithHooks (react-dom.development.js:14985:1) at updateFunctionComponent (react-dom.development.js:17356:1) at beginWork (react-dom.development.js:19063:1) at HTMLUnknownElement.callCallback (react-dom.development.js:3945:1) at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:1) at invokeGuardedCallback (react-dom.development.js:4056:1) at beginWork$1 (react-dom.development.js:23964:1) at performUnitOfWork (react-dom.development.js:22776:1) at workLoopSync (react-dom.development.js:22707:1) codes.tsx:15 Uncaught TypeError: Cannot convert undefined or null to object at Function.getOwnPropertyNames () at Codes (codes.tsx:15:1) at renderWithHooks (react-dom.development.js:14985:1) at updateFunctionComponent (react-dom.development.js:17356:1) at beginWork (react-dom.development.js:19063:1) at HTMLUnknownElement.callCallback (react-dom.development.js:3945:1) at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:1) at invokeGuardedCallback (react-dom.development.js:4056:1) at beginWork$1 (react-dom.development.js:23964:1) at performUnitOfWork (react-dom.development.js:22776:1) errors.tsx:14 Uncaught TypeError: Cannot convert undefined or null to object at Function.getOwnPropertyNames () at Errors (errors.tsx:14:1) at renderWithHooks (react-dom.development.js:14985:1) at updateFunctionComponent (react-dom.development.js:17356:1) at beginWork (react-dom.development.js:19063:1) at HTMLUnknownElement.callCallback (react-dom.development.js:3945:1) at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:1) at invokeGuardedCallback (react-dom.development.js:4056:1) at beginWork$1 (react-dom.development.js:23964:1) at performUnitOfWork (react-dom.development.js:22776:1) phases.tsx:11 Uncaught TypeError: Cannot read properties of undefined (reading 'length') at Phases (phases.tsx:11:1) at renderWithHooks (react-dom.development.js:14985:1) at updateFunctionComponent (react-dom.development.js:17356:1) at beginWork (react-dom.development.js:19063:1) at HTMLUnknownElement.callCallback (react-dom.development.js:3945:1) at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:1) at invokeGuardedCallback (react-dom.development.js:4056:1) at beginWork$1 (react-dom.development.js:23964:1) at performUnitOfWork (react-dom.development.js:22776:1) at workLoopSync (react-dom.development.js:22707:1) graph-latency.tsx:25 Uncaught TypeError: Cannot read properties of undefined (reading 'toString') at graph-latency.tsx:25:1 at Array.forEach () at mapChartData (graph-latency.tsx:24:1) at GraphLatency (graph-latency.tsx:85:1) at renderWithHooks (react-dom.development.js:14985:1) at updateFunctionComponent (react-dom.development.js:17356:1) at beginWork (react-dom.development.js:19063:1) at HTMLUnknownElement.callCallback (react-dom.development.js:3945:1) at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:1) at invokeGuardedCallback (react-dom.development.js:4056:1) graph-reqload.tsx:19 Uncaught TypeError: Cannot read properties of undefined (reading 'toString') at graph-reqload.tsx:19:1 at Array.forEach () at mapChartData (graph-reqload.tsx:18:1) at GraphReqLoad (graph-reqload.tsx:55:1) at renderWithHooks (react-dom.development.js:14985:1) at updateFunctionComponent (react-dom.development.js:17356:1) at beginWork (react-dom.development.js:19063:1) at HTMLUnknownElement.callCallback (react-dom.development.js:3945:1) at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:1) at invokeGuardedCallback (react-dom.development.js:4056:1) graph-codes.tsx:26 Uncaught TypeError: Cannot read properties of undefined (reading 'toString') at graph-codes.tsx:26:1 at Array.forEach () at mapChartData (graph-codes.tsx:25:1) at GraphCodes (graph-codes.tsx:110:1) at renderWithHooks (react-dom.development.js:14985:1) at updateFunctionComponent (react-dom.development.js:17356:1) at beginWork (react-dom.development.js:19063:1) at HTMLUnknownElement.callCallback (react-dom.development.js:3945:1) at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:1) at invokeGuardedCallback (react-dom.development.js:4056:1) graph-totalcodes.tsx:65 Uncaught TypeError: Cannot convert undefined or null to object at Function.getOwnPropertyNames () at GraphTotalCodes (graph-totalcodes.tsx:65:1) at renderWithHooks (react-dom.development.js:14985:1) at updateFunctionComponent (react-dom.development.js:17356:1) at beginWork (react-dom.development.js:19063:1) at HTMLUnknownElement.callCallback (react-dom.development.js:3945:1) at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:1) at invokeGuardedCallback (react-dom.development.js:4056:1) at beginWork$1 (react-dom.development.js:23964:1) at performUnitOfWork (react-dom.development.js:22776:1) react-dom.development.js:20085 The above error occurred in the

component:

at Summary (http://localhost:3000/static/js/bundle.js:3078:68)
at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5)
at PageHome
at Routes (http://localhost:3000/static/js/bundle.js:68400:5)
at Routing
at div
at div
at div
at div
at Layout (http://localhost:3000/static/js/bundle.js:4541:5)
at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5)
at Router (http://localhost:3000/static/js/bundle.js:68333:15)
at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5)
at HostRouter

Consider adding an error boundary to your tree to customize error handling behavior. Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries. logCapturedError @ react-dom.development.js:20085 react-dom.development.js:20085 The above error occurred in the component:

at Latency (http://localhost:3000/static/js/bundle.js:2250:68)
at div
at div
at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5)
at PageHome
at Routes (http://localhost:3000/static/js/bundle.js:68400:5)
at Routing
at div
at div
at div
at div
at Layout (http://localhost:3000/static/js/bundle.js:4541:5)
at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5)
at Router (http://localhost:3000/static/js/bundle.js:68333:15)
at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5)
at HostRouter

Consider adding an error boundary to your tree to customize error handling behavior. Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries. logCapturedError @ react-dom.development.js:20085 react-dom.development.js:20085 The above error occurred in the component:

at Codes (http://localhost:3000/static/js/bundle.js:983:68)
at div
at div
at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5)
at PageHome
at Routes (http://localhost:3000/static/js/bundle.js:68400:5)
at Routing
at div
at div
at div
at div
at Layout (http://localhost:3000/static/js/bundle.js:4541:5)
at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5)
at Router (http://localhost:3000/static/js/bundle.js:68333:15)
at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5)
at HostRouter

Consider adding an error boundary to your tree to customize error handling behavior. Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries. logCapturedError @ react-dom.development.js:20085 react-dom.development.js:20085 The above error occurred in the component:

at Errors (http://localhost:3000/static/js/bundle.js:1128:68)
at div
at div
at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5)
at PageHome
at Routes (http://localhost:3000/static/js/bundle.js:68400:5)
at Routing
at div
at div
at div
at div
at Layout (http://localhost:3000/static/js/bundle.js:4541:5)
at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5)
at Router (http://localhost:3000/static/js/bundle.js:68333:15)
at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5)
at HostRouter

Consider adding an error boundary to your tree to customize error handling behavior. Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries. logCapturedError @ react-dom.development.js:20085 react-dom.development.js:20085 The above error occurred in the component:

at Phases (http://localhost:3000/static/js/bundle.js:2686:68)
at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5)
at PageHome
at Routes (http://localhost:3000/static/js/bundle.js:68400:5)
at Routing
at div
at div
at div
at div
at Layout (http://localhost:3000/static/js/bundle.js:4541:5)
at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5)
at Router (http://localhost:3000/static/js/bundle.js:68333:15)
at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5)
at HostRouter

Consider adding an error boundary to your tree to customize error handling behavior. Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries. logCapturedError @ react-dom.development.js:20085 react-dom.development.js:20085 The above error occurred in the component:

at GraphLatency (http://localhost:3000/static/js/bundle.js:1513:68)
at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5)
at PageHome
at Routes (http://localhost:3000/static/js/bundle.js:68400:5)
at Routing
at div
at div
at div
at div
at Layout (http://localhost:3000/static/js/bundle.js:4541:5)
at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5)
at Router (http://localhost:3000/static/js/bundle.js:68333:15)
at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5)
at HostRouter

Consider adding an error boundary to your tree to customize error handling behavior. Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries. logCapturedError @ react-dom.development.js:20085 react-dom.development.js:20085 The above error occurred in the component:

at GraphReqLoad (http://localhost:3000/static/js/bundle.js:1722:68)
at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5)
at PageHome
at Routes (http://localhost:3000/static/js/bundle.js:68400:5)
at Routing
at div
at div
at div
at div
at Layout (http://localhost:3000/static/js/bundle.js:4541:5)
at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5)
at Router (http://localhost:3000/static/js/bundle.js:68333:15)
at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5)
at HostRouter

Consider adding an error boundary to your tree to customize error handling behavior. Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries. logCapturedError @ react-dom.development.js:20085 react-dom.development.js:20085 The above error occurred in the component:

at GraphCodes (http://localhost:3000/static/js/bundle.js:1275:68)
at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5)
at PageHome
at Routes (http://localhost:3000/static/js/bundle.js:68400:5)
at Routing
at div
at div
at div
at div
at Layout (http://localhost:3000/static/js/bundle.js:4541:5)
at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5)
at Router (http://localhost:3000/static/js/bundle.js:68333:15)
at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5)
at HostRouter

Consider adding an error boundary to your tree to customize error handling behavior. Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries. logCapturedError @ react-dom.development.js:20085 react-dom.development.js:20085 The above error occurred in the component:

at GraphTotalCodes (http://localhost:3000/static/js/bundle.js:1901:68)
at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5)
at PageHome
at Routes (http://localhost:3000/static/js/bundle.js:68400:5)
at Routing
at div
at div
at div
at div
at Layout (http://localhost:3000/static/js/bundle.js:4541:5)
at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5)
at Router (http://localhost:3000/static/js/bundle.js:68333:15)
at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5)
at HostRouter

Consider adding an error boundary to your tree to customize error handling behavior. Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries. logCapturedError @ react-dom.development.js:20085 react-dom.development.js:67 Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function. at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5) at PageHome at Routes (http://localhost:3000/static/js/bundle.js:68400:5) at Routing at div at div at div at div at Layout (http://localhost:3000/static/js/bundle.js:4541:5) at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5) at Router (http://localhost:3000/static/js/bundle.js:68333:15) at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5) at HostRouter printWarning @ react-dom.development.js:67 react-dom.development.js:67 Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function. at LoaderPayload (http://localhost:3000/static/js/bundle.js:2421:68) at ReportProvider (http://localhost:3000/static/js/bundle.js:3860:5) at PageHome at Routes (http://localhost:3000/static/js/bundle.js:68400:5) at Routing at div at div at div at div at Layout (http://localhost:3000/static/js/bundle.js:4541:5) at ThemeProvider (http://localhost:3000/static/js/bundle.js:3994:5) at Router (http://localhost:3000/static/js/bundle.js:68333:15) at BrowserRouter (http://localhost:3000/static/js/bundle.js:67809:5) at HostRouter printWarning @ react-dom.development.js:67 `

cfryerdev commented 2 years ago

Can you provide the json file by chance?

eliezercazares commented 2 years ago

Can you provide the json file by chance?

Nothing to hide on it :D

{
  "aggregate": {
    "counters": {
      "vusers.created_by_name.0": 600,
      "vusers.created": 600,
      "socketio.emit": 6280,
      "errors.Error: websocket error": 600,
      "vusers.failed": 600
    },
    "rates": {
      "socketio.emit_rate": 100
    },
    "firstCounterAt": 1654195119273,
    "firstHistogramAt": 1654195119316,
    "lastCounterAt": 1654195179187,
    "lastHistogramAt": 1654195179187,
    "firstMetricAt": 1654195119273,
    "lastMetricAt": 1654195179187,
    "period": 1654195170000,
    "summaries": {
      "socketio.response_time": {
        "min": 0,
        "max": 1.6,
        "count": 6280,
        "p50": 0.1,
        "median": 0.1,
        "p75": 0.1,
        "p90": 0.2,
        "p95": 0.2,
        "p99": 0.3,
        "p999": 1
      }
    }
  },
  "intermediate": [
    {
      "counters": {
        "vusers.created_by_name.0": 10,
        "vusers.created": 10,
        "socketio.emit": 10
      },
      "rates": {
        "socketio.emit_rate": 10
      },
      "socketio.emit_rate": null,
      "firstCounterAt": 1654195119273,
      "firstHistogramAt": 1654195119316,
      "lastCounterAt": 1654195119328,
      "lastHistogramAt": 1654195119329,
      "firstMetricAt": 1654195119273,
      "lastMetricAt": 1654195119329,
      "period": "1654195110000",
      "summaries": {
        "socketio.response_time": {
          "min": 0.9,
          "max": 1.2,
          "count": 10,
          "p50": 1,
          "median": 1,
          "p75": 1,
          "p90": 1,
          "p95": 1,
          "p99": 1,
          "p999": 1
        }
      }
    },
    {
      "counters": {
        "vusers.created_by_name.0": 100,
        "vusers.created": 100,
        "socketio.emit": 140
      },
      "rates": {
        "socketio.emit_rate": 20
      },
      "socketio.emit_rate": null,
      "firstCounterAt": 1654195120272,
      "firstHistogramAt": 1654195120278,
      "lastCounterAt": 1654195129336,
      "lastHistogramAt": 1654195129336,
      "firstMetricAt": 1654195120272,
      "lastMetricAt": 1654195129336,
      "period": "1654195120000",
      "summaries": {
        "socketio.response_time": {
          "min": 0.1,
          "max": 1.6,
          "count": 140,
          "p50": 0.3,
          "median": 0.3,
          "p75": 0.3,
          "p90": 0.4,
          "p95": 0.6,
          "p99": 0.9,
          "p999": 1
        }
      }
    },
    {
      "counters": {
        "vusers.created_by_name.0": 100,
        "vusers.created": 100,
        "socketio.emit": 480
      },
      "rates": {
        "socketio.emit_rate": 50
      },
      "socketio.emit_rate": null,
      "firstCounterAt": 1654195130272,
      "firstHistogramAt": 1654195130280,
      "lastCounterAt": 1654195139351,
      "lastHistogramAt": 1654195139352,
      "firstMetricAt": 1654195130272,
      "lastMetricAt": 1654195139352,
      "period": "1654195130000",
      "summaries": {
        "socketio.response_time": {
          "min": 0.1,
          "max": 0.8,
          "count": 480,
          "p50": 0.1,
          "median": 0.1,
          "p75": 0.2,
          "p90": 0.2,
          "p95": 0.2,
          "p99": 0.3,
          "p999": 0.4
        }
      }
    },
    {
      "counters": {
        "vusers.created_by_name.0": 100,
        "vusers.created": 100,
        "socketio.emit": 880
      },
      "rates": {
        "socketio.emit_rate": 97
      },
      "socketio.emit_rate": null,
      "firstCounterAt": 1654195140272,
      "firstHistogramAt": 1654195140278,
      "lastCounterAt": 1654195149911,
      "lastHistogramAt": 1654195149911,
      "firstMetricAt": 1654195140272,
      "lastMetricAt": 1654195149911,
      "period": "1654195140000",
      "summaries": {
        "socketio.response_time": {
          "min": 0.1,
          "max": 0.7,
          "count": 880,
          "p50": 0.1,
          "median": 0.1,
          "p75": 0.1,
          "p90": 0.2,
          "p95": 0.2,
          "p99": 0.2,
          "p999": 0.7
        }
      }
    },
    {
      "counters": {
        "vusers.created_by_name.0": 100,
        "vusers.created": 100,
        "socketio.emit": 1270
      },
      "rates": {
        "socketio.emit_rate": 130
      },
      "socketio.emit_rate": null,
      "firstCounterAt": 1654195150272,
      "firstHistogramAt": 1654195150276,
      "lastCounterAt": 1654195159847,
      "lastHistogramAt": 1654195159847,
      "firstMetricAt": 1654195150272,
      "lastMetricAt": 1654195159847,
      "period": "1654195150000",
      "summaries": {
        "socketio.response_time": {
          "min": 0.1,
          "max": 0.6,
          "count": 1270,
          "p50": 0.1,
          "median": 0.1,
          "p75": 0.1,
          "p90": 0.2,
          "p95": 0.2,
          "p99": 0.2,
          "p999": 0.4
        }
      }
    },
    {
      "counters": {
        "vusers.created_by_name.0": 100,
        "vusers.created": 100,
        "socketio.emit": 1680
      },
      "rates": {
        "socketio.emit_rate": 170
      },
      "socketio.emit_rate": null,
      "firstCounterAt": 1654195160272,
      "firstHistogramAt": 1654195160277,
      "lastCounterAt": 1654195169955,
      "lastHistogramAt": 1654195169955,
      "firstMetricAt": 1654195160272,
      "lastMetricAt": 1654195169955,
      "period": "1654195160000",
      "summaries": {
        "socketio.response_time": {
          "min": 0,
          "max": 0.4,
          "count": 1680,
          "p50": 0.1,
          "median": 0.1,
          "p75": 0.1,
          "p90": 0.2,
          "p95": 0.2,
          "p99": 0.3,
          "p999": 0.4
        }
      }
    },
    {
      "counters": {
        "vusers.created_by_name.0": 90,
        "vusers.created": 90,
        "socketio.emit": 1820,
        "errors.Error: websocket error": 600,
        "vusers.failed": 600
      },
      "rates": {
        "socketio.emit_rate": 209
      },
      "socketio.emit_rate": null,
      "firstCounterAt": 1654195170272,
      "firstHistogramAt": 1654195170277,
      "lastCounterAt": 1654195179187,
      "lastHistogramAt": 1654195179187,
      "firstMetricAt": 1654195170272,
      "lastMetricAt": 1654195179187,
      "period": "1654195170000",
      "summaries": {
        "socketio.response_time": {
          "min": 0,
          "max": 0.7,
          "count": 1820,
          "p50": 0.1,
          "median": 0.1,
          "p75": 0.1,
          "p90": 0.2,
          "p95": 0.2,
          "p99": 0.2,
          "p999": 0.3
        }
      }
    }
  ]
}
cfryerdev commented 2 years ago

Ill start looking at it, seems a lot is missing from the report output so at the very least ill add some nullchecks

eliezercazares commented 2 years ago

Ill start looking at it, seems a lot is missing from the report output so at the very least ill add some nullchecks

I see... tbh I thought that was the standard output, I even added extendedMetrics to see if it improved in detail hehe.

This is my test, btw...

config:
  extendedMetrics: true
  target: "ws://localhost:50000"
  ensure:
    max: 2000 # fail if max response time exceeds x ms
    maxErrorRate: 1 # fail if error rate exceeds 1%
  socketio:
    transports: ["websocket"]
  processor: "./custom.js" # set a custom processor to load dynamic scenario data
  phases:
    - duration: 60 # Run phase for s seconds
      arrivalRate: 10 # Create x virtual users per second
      # rampTo: 15
      name: "Loading users per second and ramping up their numbers for x seconds"
scenarios:
  - engine: "socketio"
    flow:
      - function: "getScenarioData" # load variables
      - emit:
          channel: "setProfile"
          data: "{{ setProfileData }}"
      - think: 7 # do nothing for x seconds, then disconnect
      - emit:
          channel: "rejoinPlace"
          data: "{{ rejoinPlace }}"
      - think: 3 # do nothing for x seconds, then disconnect
      - loop:
        - emit:
            channel: "messageSent"
            data: "{{ messageSent }}"
        - think: 3 # do nothing for x seconds, then disconnect
        - emit:
            channel: "messageReply"
            data: "{{ messageSentReply }}"
        - think: 2 # do nothing for x seconds, then disconnect
          count: 10
cfryerdev commented 2 years ago

Ah yeah, I dont have much support for sockets in general, certainly not socketio. I can look into the support required though.

kumichou commented 2 years ago

Since it's reporting the error in summary.tsx, this is what I found corrects the issue.

At the bottom of the file near 'Overall Rating' change:

{Array(getEmptyStars()).fill(<i className="far fa-star text-muted"></i>)}

to:

{Array.from(Array(getEmptyStars()), (_, i) => <i key={i} className="far fa-star text-muted"></i>)}

Fill spits out a bunch of the spans, which require keys and fill can't generate keys, so... also, you can use .map() if you want instead of .from()

eliezercazares commented 2 years ago

Since it's reporting the error in summary.tsx, this is what I found corrects the issue.

At the bottom of the file near 'Overall Rating' change:

{Array(getEmptyStars()).fill(<i className="far fa-star text-muted"></i>)}

to:

{Array.from(Array(getEmptyStars()), (_, i) => <i key={i} className="far fa-star text-muted"></i>)}

Fill spits out a bunch of the spans, which require keys and fill can't generate keys, so... also, you can use .map() if you want instead of .from()

Hi kumichou, I will give it a shot tonight... I guess this would be in Extended plugin source code, in file summary.tsx

Thanks so much for looking into this :)

kumichou commented 2 years ago

I just ran into the same basic problem as you :) I fixed it in src/components/summary.tsx