본문 바로가기

Django

2022-08-29 개발일기 [Django, Toast UI]

반응형

금일은 Django Queryset 데이터들을 처리한뒤 데이터 시각화를 진행했다. 애초에 Model에서 Filed를 Char로 잡지말고 Datetime으로 잡아버리면 훨씬 수월했을텐데.. DB를 내가 짠게 아니니깐 그냥 view단에서 데이터를 다시 변환시켜줬다!

Toast grid 관련 글은 조금 썻는데 다시 쓰는것도 좋을거같아 한번 끄적인다! 왜냐면 table 모듈중에서는 제일 편하고 좋은거같아서!

 

개발 [script]

$(document).ready(function () {
    const Grid = tui.Grid;
    Grid.applyTheme('default', {
        cell: {
            normal: {
                background: '#fff',
                border: '#222222',
                showVerticalBorder: true,
                showHorizontalBorder: true,
            },
            header: {
                background: '#f0f6f9',

            },
            selectedHeader: {
                background: '#e0e0e0'
            }
        }
    })
    Grid.setLanguage('ko')

    data = dataSource('{% url 'B2C:gridtableapi' %}', 'GET', {action: 'erplinkgrid'})
    const grid = erp_link_log(data)

    function erp_link_log(datasource) {
        return new tui.Grid({
            el: document.getElementById('grid'),
            scrollX: true,
            scrollY: true,
            data: datasource,

            columns: [
                {
                    header: '거래처',
                    name: 'mall_id',
                    align: 'center',
                    sortable: true,
                    filter: 'select',
                    className: 'bg-light'
                },
                {
                    header: '수주일',
                    name: 'order_date',
                    align: 'center',
                    sortable: true,
                    filter: 'select',
                    className: 'bg-light'
                },
                {
                    header: '작업일',
                    name: 'work_date',
                    align: 'center',
                    sortable: true,
                    filter: 'select',
                    className: 'bg-light'
                },
                {
                    header: '출하일',
                    name: 'dlv_date',
                    align: 'center',
                    sortable: true,
                    filter: 'select',
                    className: 'bg-light'
                },
                {
                    header: '품목코드',
                    name: 'ITEM_CD',
                    align: 'center',
                    sortable: true,
                    filter: 'select',
                    className: 'bg-light'
                },
                {
                    header: '품목명',
                    name: 'ITEM_NM',
                    align: 'center',
                    sortable: true,
                    filter: 'select',
                    className: 'bg-light'
                },
                {
                    header: '단위코드',
                    name: 'STD_UNIT_CD',
                    align: 'center',
                    sortable: true,
                    filter: 'select',
                    className: 'bg-light'
                },
                {
                    header: '수량',
                    name: 'ITEM_QT',
                    align: 'center',
                    sortable: true,
                    filter: 'select',
                    className: 'bg-light'
                },
                {
                    header: '결제액',
                    name: 'SELL_AMT',
                    align: 'center',
                    sortable: true,
                    filter: 'select',
                    className: 'bg-light'
                },
            ],
            columnOptions: {
                resizable: true,
            },
            pageOptions: {
                useClient: true,
                perPage: 20
            },
        });
    }

    $('#date1').change(function () {
        let searchdate = $(this).val()
        let newdate = searchdate.replace(/\-/g, '');
        const obj = {}
        obj['newdate'] = newdate
        obj['action'] = 'link_date'
        grid.readData(1, obj, false)
    })
});

개발 [View]

if req.get('action') == 'erplinkgrid':
    # today_date = datetime.today().date()
    today_date = "20220829"
    str_date = str(today_date)
    chara = "-"
    for x in range(len(chara)):
        str_date = str_date.replace(chara[x], "")
    data = Erplink_log.objects.filter(dlv_date=str_date)
    serializer = ErplinkSerializer(data, many=True)

    result = {
        "result": 'true',
        "data": {
            "contents": serializer.data,
        }
    }

if req.get('action') == 'link_date':
    link_list = Erplink_log.objects.all().order_by('-dlv_date')
    kwdate = req.get('newdate')

    link_list = link_list.filter(
         Q(dlv_date=kwdate)
    )

    result = {
        "result": 'true',
        "data": {
            "contents": list(link_list.values())
        }
    }
반응형