summaryrefslogtreecommitdiff
path: root/widgets/jenkins_build_status/jenkins_build_status.coffee
blob: d7d863063e9064652b18ee3191801ac9831293da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Dashing.JenkinsBuildStatus extends Dashing.Widget

  lastPlayed: 0
  timeBetweenSounds: 300000

  onData: (data) ->
    if data.failed
      $(@node).find('div.build-failed').show()
      $(@node).find('div.build-succeeded').hide()
      $(@node).css("background-color", "red")

      if 'speechSynthesis' of window
        @playSoundForUser data.failedJobs[0].value if Date.now() - @lastPlayed > @timeBetweenSounds
    else
      $(@node).find('div.build-failed').hide()
      $(@node).find('div.build-succeeded').show()
      $(@node).css("background-color", "#12b0c5")

  playSoundForUser: (user) ->
    @lastPlayed = Date.now()
    texts = ["#{user} has broken the build.", "The build is broken by #{user}", "#{user} is great, but lacks some programming skills", "Oops, I did it again."]
    textNr = Math.floor((Math.random() * texts.length));
    @playSound texts[textNr]

  playSound: (text) ->
    msg = new SpeechSynthesisUtterance(text)
    msg.voice = speechSynthesis.getVoices()[0]
    speechSynthesis.speak msg