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
}