<?php
namespace nur\v\plugins;

use nur\v\BasePlugin;

class autorefreshPlugin extends BasePlugin {
  const HAVE_JQUERY = true;

  const CHECKED = true;

  const TEXT = "Rafraîchir cette page automatiquement";

  /** @var int délai en secondes avant le rafraichissement */
  const DELAY = 15;

  function __construct(?array $params=null) {
    $this->checked = $params["checked"] ?? static::CHECKED;
    $this->text = $params["text"] ?? static::TEXT;
    $this->delay = intval($params["delay"] ?? static::DELAY) * 1000;
  }

  protected bool $checked;

  protected string $text;

  protected int $delay;

  function printJquery(): void {
    ?>
<script type="text/javascript">
jQuery.noConflict()(function($) {
  var autorefreshTimeout = null;
  function autorefreshEnabled() {
    return $("#autorefresh").is(":checked");
  }
  function autorefreshUpdate(enabled) {
    if (typeof(enabled) === 'undefined') enabled = autorefreshEnabled();
    if (enabled && autorefreshTimeout == null) {
      autorefreshTimeout = setTimeout(function() { location.reload(); }, <?=$this->delay?>);
    } else if (!enabled && autorefreshTimeout != null) {
      clearTimeout(autorefreshTimeout);
      autorefreshTimeout = null;
    }
  }
  if ($("#autorefresh").length > 0) {
    $("#autorefresh").click(function() {
      autorefreshUpdate($(this).is(":checked"));
    });
    autorefreshUpdate();
  }
});
</script>
<?php
  }

  function print(): void {
    ?>
<label>
<input type="checkbox" id="autorefresh"<?=$this->checked? " checked": false?>/>
<?=htmlspecialchars($this->text)?>
</label>
<?php
  }
}
