src/widgets/PlaceholderPlayer.js
author ymh <ymh.work@gmail.com>
Fri, 18 Oct 2024 10:24:57 +0200
changeset 1074 231ea5ea7de4
parent 1072 ac1eacb3aa33
permissions -rw-r--r--
change http to https for default thumb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
     1
/* This is a fake player, for when no video is available */
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
     2
import placeholderPlayerStyles from "./PlaceholderPlayer.module.css";
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
     3
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
     4
const PlaceholderPlayer = function (ns) {
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
     5
  return class extends ns.Widgets.Widget {
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
     6
    constructor(player, config) {
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
     7
      super(player, config);
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
     8
    }
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
     9
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    10
    static defaults = {
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    11
      autostart: false,
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    12
    };
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    13
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    14
    static template = '<div class="Ldt-PlaceholderPlayer">(loading)</div>';
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    15
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    16
    draw() {
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    17
      this.renderTemplate();
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    18
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    19
      var paused = true,
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    20
        timeDelta = 0,
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    21
        currentTime = new ns.Model.Time(0),
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    22
        media = this.media,
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    23
        sel = this.$.find(".Ldt-PlaceholderPlayer");
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    24
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    25
      function updateTime() {
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    26
        if (!paused) {
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    27
          currentTime = new ns.Model.Time(new Date().valueOf() - timeDelta);
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    28
          if (currentTime <= media.duration) {
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    29
            media.trigger("timeupdate", currentTime);
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    30
            setTimeout(updateTime, 100);
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    31
          } else {
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    32
            currentTime = media.duration;
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    33
            media.pause();
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    34
          }
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    35
        }
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    36
        sel.text(currentTime.toString(true));
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    37
      }
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    38
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    39
      // Binding functions to Popcorn
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    40
      media.on("setcurrenttime", function (_milliseconds) {
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    41
        timeDelta = new Date().valueOf() - _milliseconds;
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    42
        currentTime = new ns.Model.Time(_milliseconds);
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    43
        media.trigger("seeked");
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    44
        media.trigger("timeupdate", currentTime);
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    45
        sel.text(currentTime.toString(true));
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    46
      });
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    47
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    48
      media.on("setplay", function () {
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    49
        paused = false;
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    50
        timeDelta = new Date().valueOf() - currentTime;
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    51
        media.trigger("play");
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    52
        updateTime();
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    53
      });
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    54
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    55
      media.on("setpause", function () {
991
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    56
        paused = true;
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    57
        media.trigger("pause");
2b036bd80f6d Added a placeholder player for video-less tests
veltr
parents:
diff changeset
    58
        updateTime();
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    59
      });
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    60
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    61
      media.trigger("loadedmetadata");
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    62
      media.trigger("setcurrenttime", 0);
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    63
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    64
      if (this.autostart) {
1005
768bd0691ed1 Updated Jwplayer to v.6
veltr
parents: 991
diff changeset
    65
        media.trigger("setplay");
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    66
      }
1005
768bd0691ed1 Updated Jwplayer to v.6
veltr
parents: 991
diff changeset
    67
    }
1072
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    68
  };
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    69
};
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    70
ac1eacb3aa33 Migrate source and build to vite.js
ymh <ymh.work@gmail.com>
parents: 1013
diff changeset
    71
export { PlaceholderPlayer, placeholderPlayerStyles };