JavaScript Integrated Drilling Operations Center (iDOC) Dashboard

This dashboard provides a real-time overview of drilling operations, monitoring downhole mechanics, directional trajectory, and overall drilling efficiency.

While this specific demo simulates a live feed using historical data, the application is built from the ground up to handle true real-time data streaming from active rigs. Under the hood, it is highly optimized to share a single memory source across all charts (such as ROP, WOB, Torque, and Speed), ensuring smooth, lag-free visualization even with high-frequency data.

Additionally, the dashboard features an automated diagnostic system that triggers color-coded alerts for critical conditions, alongside a 3D wellbore map and a polar chart for tracking lateral vibration.

if (targetSlowIndex > currentSlowIndex) {
    const newSlowChunk = slowData.slice(currentSlowIndex, targetSlowIndex)
    // Single Memory Update: Appending to the shared DataSet automatically
    dataSetSlow.appendJSON(newSlowChunk) 
    // State updates for the Drill Bit and Projected Beam
    const currentPos = newSlowChunk[newSlowChunk.length - 1]
    const currentPos3D = { x: currentPos.East, y: currentPos.Tvd, z: currentPos.North }
    const projectedPos3D = calculateBitProjection(currentPos, targetPos3D.y)
    beamSeries.clear().appendJSON([currentPos3D, projectedPos3D])
    bitSeries.clear().appendJSON([currentPos3D]) 
    // Centralized UI, Diagnostics, and Alarm Synchronization
    const newLogs = eventLogs.filter(log => log.time > currentSlowIndex && log.time <= targetSlowIndex)
    newLogs.forEach(log => showLogs(log.timestamp, log.message, log.isWarning))
    updateDashboardPanel(targetSlowIndex, elapsedTimeSec, ropNow, slowData)
    currentSlowIndex = targetSlowIndex
}