You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
783 B

  1. <script lang="ts">
  2. import EveryMinute from "./EveryMinute.svelte";
  3. import Progress from "./Progress.svelte";
  4. export let startTime: string | Date;
  5. export let endTime: string | Date;
  6. let msLength: number;
  7. let msElapsed: number;
  8. let now = Date.now();
  9. $: {
  10. const start = (startTime instanceof Date) ? startTime.getTime() : Date.parse(startTime)
  11. const length = ((endTime instanceof Date) ? endTime.getTime() : Date.parse(endTime)) - start;
  12. msLength = length;
  13. msElapsed = 0;
  14. if (now > start) {
  15. if (now > start + length) {
  16. msElapsed = length;
  17. } else {
  18. msElapsed = Math.round(now - start);
  19. }
  20. }
  21. }
  22. </script>
  23. <EveryMinute bind:now={now} />
  24. <Progress thinner gray count={msElapsed} target={msLength} titleTime />