Skip to content
Snippets Groups Projects
Select Git revision
  • ed762c5f9d82f07b1e247af9d493165b7af2aae1
  • master default
  • renovate/opencsv.version
  • renovate/org.springframework.boot-spring-boot-starter-parent-3.x
  • renovate/junit-jupiter-engine.version
  • renovate/selenium.version
  • renovate/testcontainer.version
  • demo
  • v1_8_1
  • v2.18.1
  • v2.18.0
  • v2.17.2
  • v2.17.1
  • v2.17.0
  • v2.16.1
  • v2.16.0
  • v2.15.1
  • v2.15.0
  • v2.14.0
  • v2.13.0
  • v2.12.0
  • v2.11.0
  • v2.10.0
  • v2.9.2
  • v2.9.1
  • v2.9.0
  • v2.8.0
  • testPipeline2
  • v2.7.0
29 results

accounts.js

Blame
  • accounts.js 3.65 KiB
    $(document).ready(function()
    {
        if($('#modalConfirmDelete').length)
        {
            $('#modalConfirmDelete').modal('open');
        }
    
        if($('#modalAccountNotDeletable').length)
        {
            $('#modalAccountNotDeletable').modal('open');
        }
    
        if($('#account-name').length)
        {
            document.getElementById('account-name').focus();
        }
    
        $('#button-remove-account-icon').click(function()
        {
            document.getElementById("account-icon-preview-icon").classList.toggle('hidden', true);
            document.getElementById("account-icon-placeholder").classList.toggle('hidden', false);
            document.getElementById("hidden-input-account-icon").value = '';
        });
    
        $('#button-account-icon-confirm').click(function()
        {
            let icon = document.querySelector('.account-icon-option.selected .account-icon-preview');
            if(icon === null)
            {
                return false;
            }
    
            let iconPath = icon.src;
            let iconId = icon.dataset.imageId;
    
            let previewIcon = document.getElementById("account-icon-preview-icon");
            previewIcon.src = iconPath;
    
            document.getElementById("account-icon-preview-icon").classList.toggle('hidden', false);
            document.getElementById("account-icon-placeholder").classList.toggle('hidden', true);
            document.getElementById("hidden-input-account-icon").value = iconId;
        });
    
        if($('#modalAccountIconSelect').length)
        {
            let modalAccountIconSelect = document.getElementById('modalAccountIconSelect');
            M.Modal.init(modalAccountIconSelect, {
                onCloseEnd: function f()
                {
                    document.getElementById('account-name').focus();
                }
            });
        }
    
        $('#account-icon-preview').click(function()
        {
            getAvailableImages(function()
            {
                let modalID = '#modalAccountIconSelect';
                $(modalID).modal();
                $(modalID).modal('open');
            });
        });
    
        $('#button-upload-new-image').click(function()
        {
            uploadImage();
        });
    });
    
    function getAvailableImages(callback)
    {
        $.ajax({
            type: 'GET',
            url: $('#account-icon-preview').attr('data-url'),
            data: {},
            success: function(data)
            {
                $('#available-images').html(data);
    
                // select an icon option
                $('.account-icon-option').click(function()
                {
                    selectIcon(this);
                });
    
                callback();
            }
        });
    }
    
    function selectIcon(item)
    {
        let allIconOptions = document.querySelectorAll('.account-icon-option');
        for(let i = 0; i < allIconOptions.length; i++)
        {
            allIconOptions[i].classList.remove('selected');
        }
    
        item.classList.add('selected');
    }
    
    function uploadImage()
    {
        let formID = 'form-upload-account-image';
        let form = document.getElementById(formID);
    
        $.ajax({
            url: form.action,
            enctype: 'multipart/form-data',
            type: 'post',
            processData: false,
            contentType: false,
            cache: false,
            data: new FormData(form),
            success: function(response)
            {
                let parsedData = JSON.parse(response);
                let isUploadSuccessful = parsedData['isUploadSuccessful']
                M.toast({
                    html: parsedData['localizedMessage'],
                    classes: isUploadSuccessful ? 'green' : 'red'
                });
    
                getAvailableImages(function()
                {
                });
            },
            error: function(response)
            {
                let parsedData = JSON.parse(response);
                M.toast({
                    html: parsedData['localizedMessage'],
                    classes: 'red'
                });
            }
        });
    }