export class DialogSelect extends Dialog {
  static extractIdNameImg(it) { return { id: it.id, name: it.name, img: it.img } }

  static async select(selectData, onSelectChoice) {
    const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/dialog-select.html", selectData)

    const dialogData = {
      title: selectData.title ?? selectData.label,
      content: html,
      buttons: {}
    }

    const dialogOptions = {
      classes: ["rdd-dialog-select"],
      width: 'fit-content',
      height: 'fit-content',
      'max-height': 600,
      'z-index': 99999
    }
    new DialogSelect(dialogData, dialogOptions, selectData, onSelectChoice).render(true)
  }

  constructor(dialogData, dialogOptions, selectionData, onSelectChoice) {
    super(dialogData, dialogOptions)
    this.selectionData = selectionData
    this.onSelectChoice = onSelectChoice
  }

  activateListeners(html) {
    super.activateListeners(html)
    this.html = html
    this.html.find("li.select-choice").click(event =>
      this.choiceSelected(this.html.find(event.currentTarget)?.data("id"))
    )
  }

  choiceSelected(selectedId) {
    const selected = this.selectionData.find(it => it.id == selectedId)
    this.close()
    if (selected) {
      this.onSelectChoice(selected)
    }
  }
}