Sha256: 4f23741ad10a8fee08073d1f1dde5cb06aee217d642e308851a3cb4fd00aff78

Contents?: true

Size: 1.31 KB

Versions: 24

Compression:

Stored size: 1.31 KB

Contents

import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  static values = {
    src: String,
    interval: 60000
  }

  static targets = ["progressBar"]

  connect() {
    this.startRefreshProcess()
    if (this.hasProgressBarTarget) {
      this.resetProgressBar()
    } else {
      setTimeout(() => {
        this.resetProgressBar()
      }, 500)
    }
  }

  disconnect() {
    this.stopRefreshProcess()
  }

  startRefreshProcess() {
    this.intervalId = setInterval(() => {
      this.refreshContent()
    }, this.intervalValue)
  }

  stopRefreshProcess() {
    clearInterval(this.intervalId)
    clearInterval(this.countdownId)
  }

  refreshContent() {
    if (this.element.src) {
      this.element.reload()
    } else {
      this.element.setAttribute('src', this.srcValue)
    }
    this.resetProgressBar()
  }

  startProgressBar() {
    let percentage = 100
    this.progressBarTarget.style.width = `${percentage}%`

    const countdown = () => {
      percentage -= 100 / (this.intervalValue / 500)
      this.progressBarTarget.style.width = `${percentage}%`

      if (percentage <= 0) {
        clearInterval(this.countdownId)
      }
    }

    this.countdownId = setInterval(countdown, 500)
  }

  resetProgressBar() {
    clearInterval(this.countdownId)
    this.startProgressBar()
  }
}

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
mission_control-servers-0.4.0 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.3.3 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.3.2 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.3.1 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.3.0 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.2.8 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.2.6 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.2.5 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.2.4 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.2.3 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.2.2 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.2.1 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.2.0 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.1.6 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.1.5 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.1.4 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.1.3 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.1.2 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.1.1 app/javascript/mission_control/servers/controllers/refresh_controller.js
mission_control-servers-0.1.0 app/javascript/mission_control/servers/controllers/refresh_controller.js