답글

2일

article-vote.js

function appToast(message, type) {
    const element = document.createElement('div')
    element.className = 'app-toast'

    if(type) {
        element.className = element.className + ' ' + type
    }
    const text = document.createTextNode(message)
    element.appendChild(text)

    $(document.body).append($(element).fadeIn())

    setTimeout(function() {
        $(element).fadeOut('normal', function() {
            $(this).remove()
        })
    }, 1000)
}

function alDocumentAjaxCall(targetSrl, action, callback) {
    const params = {
        target_srl: targetSrl,
        cur_mid: window.current_mid,
        mid: window.current_mid,
        module: 'document',
        act: action,
        _rx_ajax_compat: 'JSON',
        _rx_csrf_token: getCSRFToken()
    }

    $.ajax({
        type: "POST",
        dataType: "json",
        url: request_uri,
        data: params,
        processData: (action !== 'raw'),
        success: callback,
        error: function(err) {
            console.log(err)
        }
    })
}

function alArticleVote(el) {
    console.log(el)
    const targetSrl = $(el).parent().attr('data-target-srl')
    const type = $(el).attr('data-type')
    const isActive = $(el).hasClass('active')


    if(type === 'down') {
        var transformedType = 'Down'
    } else {
        var transformedType = 'Up'
    }

    console.log(targetSrl, type, isActive)

    // 이미 액티브 상태인 경우 취소
    if(isActive) {
        var action = 'procDocumentVote' + transformedType + 'Cancel'
    } else {
        var action = 'procDocumentVote' + transformedType
    }

    // 콜백
    function callback(res) {
        if(res.error) {
            // console.log(el)
            // appToast(res.message, 'danger')
            return
        }

        var appliedCount = res.voted_count || res.blamed_count

        var getVoteCount = Number($(el).find('.app-article-vote__count').text())

        if(appliedCount) {
            var count = appliedCount

        } else if(getVoteCount > -1) {
            var count = getVoteCount -1

        } else {
            var count = getVoteCount + 1
        }

        $(el).find('.app-article-vote__count').text(count)
        $(el).toggleClass('active')

        // appToast(res.message)
    }

    alDocumentAjaxCall(targetSrl, action, callback)
}