API

Adresy zákazníka

<form class="address">
    <input type="text" name="firstName">
    <input type="text" name="lastName">
    <input type="text" name="street">
    <input type="text" name="city">
    <input type="text" name="region">
    <input type="text" name="zip">
    <input type="text" name="country">
    <input type="email" name="email">
    <input type="tel" name="phone">
    <input type="text" name="companyName">
    <input type="text" name="companyId">
    <input type="text" name="vatId">
</form>
document.querySelector('form.address').addEventListener('submit', function(event){
    event.preventDefault();

    // @todo loading
    api.user.address.add(new FormData(this))
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
        });
});

document.querySelector('form.address').addEventListener('submit', function(event){
    event.preventDefault();

    // @todo loading
    api.user.address.update(123456789, new FormData(this))
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
        });
});

document.querySelector('a.delete-address').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.user.address.delete(123456789)
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
        });
});

// @todo loading
api.user.address.get(123456789)
    .then(function(response){
        // fill form?
    })
    .catch(function(error){
        // display error
    });

Newsletter (přihlášený zákazník)

api.user.newsletter.unsubscribe

document.querySelector('a.customer-unsubscribe').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.user.newsletter.unsubscribe()
        .then(function(){
            // reload page?
        })
        .catch(function(error){
            // display error
        });
});

Objednávka

api.order.delete

document.querySelector('a.delete-order').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.order.delete()
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
        });
});

api.order.voucher.add

document.querySelector('a.add-voucher').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.order.voucher.add('XYZ1234')
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

api.order.voucher.delete

document.querySelector('a.delete-voucher').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.order.voucher.delete('XYZ1234')
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

api.order.item.changeAmount

document.querySelector('a.remove-change-amount').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.order.item.changeAmount(/* item id*/ 123, 7 /* new amount (cannot be zero)  */)
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error

            // Currently one of stock, unavailable, min_amount, max_amount, amount_multiple
            // More can be added later - always fallback to error message
            console.log(error.code);

            // translated error message
            console.log(error.message);

            // item name (useful if rule was triggered by bundle part)
            console.log(error.item.name);

            // correct amount for current validation (may not be valid for next validation)
            // zero for unavailable items
            console.log(error.recommendedAmount);
        });
});

api.order.item.remove

document.querySelector('a.remove-cart-item').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.order.item.delete(123)
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

Produkty

api.product.compare.add

document.querySelector('a.compare-product').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.product.compare.add(123)
        .then(function(response){
            response.count // počet produktů v porovnání
            response.url // URL na stránku se srovnání produktů
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

api.product.compare.remove

document.querySelector('a.compare-product').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.product.compare.remove(123)
        .then(function(response){
            response.count // počet produktů v porovnání
            response.url // URL na stránku se srovnání produktů
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

api.product.compare.clear

document.querySelector('a.compare-product').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.product.compare.remove()
        .then(function(response){
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

api.log.feature.used

Logování použití funkce je určené na sledování méně používaných funkcí a po omezenou dobu - například pro A/B test. Název může být libovolný - používá se jen pro debug reportování.

document.querySelector('a.compare-product').addEventListener('click', function(event){
    event.preventDefault();

    api.log.feature.used('product-added-to-compare');
});