{{!--
SPDX-FileCopyrightText: 2021 Johannes Loher
SPDX-FileCopyrightText: 2021 Gesina Schwalbe

SPDX-License-Identifier: MIT
--}}

{{!-- ======================================================================== --}}
{{!-- INLINE PARTIAL DEFINITIONS --}}
{{!-- ======================================================================== --}}

{{!--
!-- Base template to display a value with unit.
!-- @param unitDatum: the object to display; must have a value and a unit attribute
!-- @param titleKey: The key of the localized title to use.
!-- @param unitNames: mapping of allowed unitDatum.unit values to localized unit name
!-- @param unitAbbrs: mapping of allowed unitDatum.unit values to unit abbreviation
--}}
{{#*inline "unit"}}
<div title="{{localize titleKey}} [{{lookup unitNames unitDatum.unit}}]">
    {{#if unitDatum.value }}
    {{unitDatum.value}}&thinsp;{{lookup unitAbbrs unitDatum.unit}}
    {{else}}-{{/if}}
</div>
{{/inline}}

{{!--
!-- Two templates based on the "unit" template for displaying values with unit.
!-- Both accept a `config` object holding the unitNames and unitAbbr instead of
!-- directly handing over the latter two.
!-- @param titleKey: The key of the localized title to use.
--}}
{{#*inline "temporalUnit"}}
{{> unit unitNames=config.i18n.temporalUnits unitAbbrs=config.i18n.temporalUnitsAbbr unitDatum=unitDatum
titleKey=titleKey}}
{{/inline}}

{{#*inline "distanceUnit"}}
{{> unit unitNames=config.i18n.distanceUnits unitAbbrs=config.i18n.distanceUnitsAbbr unitDatum=unitDatum
titleKey=titleKey}}
{{/inline}}


{{!-- ======================================================================== --}}


<div class="ds4-sheet-tab tab spells" data-group="primary" data-tab="spells">
    {{#unless (isEmpty itemsByType.spell)}}
    <ol class="ds4-embedded-document-list ds4-embedded-document-list--spell item-list">
        {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hideDescription=true
        type='spell'}}
        {{!-- spell type --}}
        <div class="ds4-embedded-document-list__clickable sort-items" data-data-path="system.spellType"
            title="{{localize 'DS4.SortBySpellType'}}">{{localize 'DS4.SpellTypeAbbr'}}</div>

        {{!-- spell modifier --}}
        <div class="ds4-embedded-document-list__clickable sort-items" data-data-path="system.spellModifier.complex"
            data-data-path2="system.spellModifier.numerical" title="{{localize 'DS4.SortBySpellModifier'}}">{{localize
            'DS4.SpellModifierAbbr'}}</div>

        {{!-- max. distance --}}
        <div title="{{localize 'DS4.SpellDistance'}}"><i class="fas fa-ruler"></i></div>

        {{!-- duration --}}
        <div title="{{localize 'DS4.SpellDuration'}}"><i class="far fa-clock"></i></div>

        {{!-- cooldown duration --}}
        <div title="{{localize 'DS4.CooldownDuration'}}"><i class="fas fa-hourglass-half"></i></div>
        {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}}

        {{#each itemsByType.spell as |item id|}}
        {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true
        hideDescription=true}}
        {{!-- spell type --}}
        <img class="ds4-embedded-document-list__image"
            src="{{lookup @root/config.icons.spellTypes item.system.spellType}}"
            title="{{lookup @root/config.i18n.spellTypes item.system.spellType}}" />

        {{!-- spell modifier --}}
        <div title="{{localize 'DS4.SpellModifier'}}">{{#if (eq item.system.spellModifier.complex
            '')}}{{item.system.spellModifier.numerical}}{{else}}{{item.system.spellModifier.complex}}{{/if}}
        </div>

        {{!-- max. distance --}}
        {{> distanceUnit titleKey='DS4.SpellDistance' unitDatum=item.system.maxDistance
        config=@root/config}}

        {{!-- duration --}}
        {{> temporalUnit titleKey='DS4.SpellDuration' unitDatum=item.system.duration config=@root/config}}

        {{!-- cooldown duration --}}
        <div title="{{localize 'DS4.CooldownDuration'}}">{{lookup @root/config.i18n.cooldownDurations
            item.system.cooldownDuration}}</div>

        {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}}
        {{/each}}
    </ol>
    {{/unless}}
    {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle'
    documentType='item' type='spell'}}
</div>
