var selectedCell = []; //좌측 탭 조건 텍스트 function conditionText($this){ let name = $this.attr('name'); let trId = $this.closest('tr').attr('id'); if(name == 'type'){ value = $this.find('option:selected').text()+" - "; $("#text-"+trId+" .typeText").html(value); } if(name == 'type_value_status'){ $("#text-"+trId+" .typeValueText").text(''); value = $this.find('option:selected').text(); $("#text-"+trId+" .typeValueText").html(value); } if(name == 'type_value'){ $("#text-"+trId+" .typeValueText").text(''); value = $this.val(); $("#text-"+trId+" .typeValueText").html(value); } if(name == 'compare'){ $("#text-"+trId+" .compareText").text(''); value = $this.find('option:selected').text(); $("#text-"+trId+" .compareText").html(value); } } //조건 function addConditionRow(uniqueId){ var row = `
`; var rowText = `

`; $('#conditionTable tbody').append(row); $('#condition-tab').append(rowText); } //매체/분류/ID/제목/상태 table function getTargetAdvs(targetSearchData){ targetTable = $('#targetTable').DataTable({ "destroy": true, "autoWidth": true, "processing" : true, "serverSide" : true, "responsive": true, "searching": false, "ordering": true, "deferRender": false, 'lengthChange': false, 'pageLength': 10, "info": false, "ajax": { "url": "/automation/adv", "data": targetSearchData, "type": "GET", "contentType": "application/json", "dataType": "json", "dataSrc": function(res){ return res.data; } }, "columnDefs": [ { targets: [5], orderable: false}, ], "columns": [ { "data": "media", "width": "12%"}, { "data": "type", "width": "12%"}, { "data": "id", "width": "26%"}, { "data": "name", "width": "30%"}, { "data": "status", "width": "12%",}, { "data": null, "width": "8%", "render": function(){ let button = ''; return button; } }, ], "createdRow": function(row, data, dataIndex) { $(row).attr("data-id", data.media+"_"+data.type+"_"+data.id); }, "language": { url: '//cdn.datatables.net/plug-ins/1.13.4/i18n/ko.json', }, "drawCallback": function(settings) { if($('#targetCheckedTable tbody tr').length > 0){ $selectedTargetRow = $('#targetCheckedTable tbody tr').data('id'); $('#targetTable tbody tr[data-id="'+$selectedTargetRow+'"]').addClass('selected') }else if ($('#targetTable tbody tr').length === 0) { addNoDataMessage('targetTable', 6); } }, "initComplete": function(settings, json) { // 열 너비 강제 설정 $('#logTable').find('th, td').css('width', ''); } }); } function getExecAdvs(data){ execTable = $('#execTable').DataTable({ "destroy": true, "autoWidth": true, "processing" : true, "serverSide" : true, "responsive": true, "searching": false, "ordering": true, "deferRender": false, 'lengthChange': false, 'pageLength': 10, "info": false, "ajax": { "url": "/automation/adv", "data": data, "type": "GET", "contentType": "application/json", "dataType": "json", "dataSrc": function(res){ return res.data; } }, "columns": [ { "data": "media", "width": "10%"}, { "data": "type", "width": "10%"}, { "data": "id", "width": "30%"}, { "data": "name", "width": "40%"}, { "data": "status", "width": "10%"}, ], "createdRow": function(row, data, dataIndex) { $(row).attr("data-id", data.media+"_"+data.type+"_"+data.id); }, "language": { url: '//cdn.datatables.net/plug-ins/1.13.4/i18n/ko.json', }, }); } //유효성 검사 function validationData(){ let $operation = $('input[name=operation]:checked').length; let $selectTarget = $('#targetSelectTable tbody tr').length; let $selectExec = $('#execSelectTable tbody tr').length; let $target_create_type = $('input[name=target_create_type]:checked').val(); let $subject = $('#detailTable input[name=subject]').val(); let $slack_webhook = $('#slackSendTable input[name="slack_webhook"]').val(); let $slack_msg = $('#slackSendTable input[name="slack_msg"]').val(); if (!selectedCell || Object.keys(selectedCell).length === 0) { alert('일정을 지정해주세요.'); $('#schedule-tab').trigger('click'); return false; } //대상 선택항목이 있을경우 if($selectTarget > 0){ if(!$operation){ alert('일치조건을 선택해주세요.'); $('#condition-tab').trigger('click'); $('input[name=operation]').focus(); return false; } var eachValid = true; $('tr[id^="condition-"]').each(function() { var $row = $(this); var $conditionType = $row.find('select[name=type]').val(); var $conditionTypeValueStatus = $row.find('select[name=type_value_status]').val(); var $conditionTypeValue = $row.find('input[name=type_value]').val(); var $conditionCompare = $row.find('select[name=compare]').val(); if(!$conditionType){ alert('조건항목을 선택해주세요.'); $('#condition-tab').trigger('click'); $row.find('select[name=type]').focus(); eachValid = false; return false; } if($conditionType == 'status'){ if(!$conditionTypeValueStatus){ alert('상태값을 선택해주세요.'); $('#condition-tab').trigger('click'); $row.find('select[name=type_value_status]').focus(); eachValid = false; return false; } }else{ if(!$conditionTypeValue){ alert('조건값을 입력해주세요.'); $('#condition-tab').trigger('click'); $row.find('input[name=type_value]').focus(); eachValid = false; return false; } } if(!$conditionCompare){ alert('일치여부를 선택해주세요.'); $('#condition-tab').trigger('click'); $row.find('select[name=compare]').focus(); eachValid = false; return false; } }); if(!eachValid){ return false; } }else{ var hasValue = false; $('tr[id^="condition-"]').find('input, select').each(function() { if($(this).val()){ hasValue = true; return false; } }); if(hasValue){ alert('조건을 설정하기 위해서 대상을 적용해주세요.'); $('#condition-tab').trigger('click'); return false; } } if(!$selectExec > 0){ alert('실행항목을 추가해주세요.'); $('#preactice-tab').trigger('click'); $('#showExecAdv').focus(); return false; } var execCheck = true; var execCheckMsg = ''; var focusTarget = null; $('#execSelectTable tbody tr').each(function() { let exec_order = $(this).find('td:first input[name=exec_order]'); let exec_condition_type = $(this).find('select[name=exec_condition_type]'); let exec_condition_type_budget = $(this).find('select[name=exec_condition_type_budget]'); let exec_condition_value = ''; if(exec_order.val() == '') { execCheck = false; execCheckMsg = '순서를 입력해주세요.'; focusTarget = exec_order; return false; } if(exec_condition_type.val() == 'status'){ exec_condition_value_input = $(this).find('select[name=exec_condition_value_status]'); exec_condition_value = exec_condition_value_input.val(); }else if(exec_condition_type.val() == 'budget'){ exec_condition_value_input = $(this).find('input[name=exec_condition_value]'); exec_condition_value = exec_condition_value_input.val(); }else{ execCheck = false; execCheckMsg = '실행항목을 선택해주세요.'; focusTarget = exec_condition_type; return false; } if(exec_condition_value == '') { execCheck = false; execCheckMsg = '세부항목을 입력해주세요.'; focusTarget = exec_condition_value_input; return false; } if(exec_condition_type.val() == 'budget'){ if(exec_condition_type_budget.val() == ''){ execCheck = false; execCheckMsg = '단위를 선택해주세요.'; focusTarget = exec_condition_type_budget; return false; } } }); if(!execCheck){ $('#preactice-tab').trigger('click'); alert(execCheckMsg); focusTarget.focus(); return false; } if($target_create_type == 'target_seperate'){ let isMatchingRows = true; let targetRows = $('#targetSelectTable tbody tr'); let execRows = $('#execSelectTable tbody tr'); if(targetRows.length === 0 || execRows.length === 0) { $('#preactice-tab').trigger('click'); alert('대상 또는 실행 항목이 존재하지 않습니다.'); return false; } if(targetRows.length !== execRows.length) { $('#preactice-tab').trigger('click'); alert('개별 적용의 경우 대상과 실행 테이블의 모든 항목이 동일해야 합니다.'); return false; } targetRows.each(function() { let targetId = $(this).data('id').split('_').pop(); let correspondingExecRow = execRows.filter(function() { return $(this).data('id').split('_').pop() === targetId; }); if(correspondingExecRow.length === 0) { isMatchingRows = false; return false; } }); if (!isMatchingRows) { $('#preactice-tab').trigger('click'); alert('개별 적용의 경우 대상과 실행의 모든 항목이 동일해야합니다.'); return false; } } if (($slack_webhook && !$slack_msg) || (!$slack_webhook && $slack_msg)) { alert('웹훅 URL과 메세지 둘 다 입력해주세요.'); $('#preactice-tab').trigger('click'); if(!$('#slackSendTable input[name="slack_webhook"]').val()){ $('#slackSendTable input[name="slack_webhook"]').focus(); } else if(!$('#slackSendTable input[name="slack_msg"]').val()){ $('#slackSendTable input[name="slack_msg"]').focus(); } return false; } if(!$subject){ alert('제목을 추가해주세요.'); $('#detailTable input[name=subject]').focus(); return false; } return true; } function onlyNumberLeadingDashAndDot(inputElement) { inputElement.value = inputElement.value.replace(/[^0-9.-]/g, ''); } //실행 로우 DOM let executionDom = `
`; //대상 로우 DOM let targetDom = `
`; //모달 수정 세팅 function setModalData(data){ $('#createAutomationBtn').hide(); $('#updateAutomationBtn').show(); $('#automationModal input[name=seq]').val(data.aa_seq); let schedule = {}; $.each(data.aas_schedule_value, function(index, value){ if(index > 0){ schedule[index] = $.map(value, function(num){ return parseFloat(num, 10); }); } }); selectedCell = []; selectedCell = schedule; $('#scheduleTable').scheduler('val', schedule); if(data.aas_exec_once == '1'){ $('input[name=exec_once]').prop('checked', true); }else{ $('input[name=exec_once]').prop('checked', false); } if(data.targets){ //대상 탭 table tbody data.targets.forEach(function(target, index) { let targetIndex = index+1; //대상 table data 입력 let $targetData = $(targetDom).clone(); $targetData.attr('data-id', `${target.media}_${target.type}_${target.id}`).attr('id', `target-${targetIndex}`) .find('td:eq(0) ul').find('li:eq(0)').text(target.media) .next('li').text(target.type) .next('li').text(target.name); $targetData.find('td:eq(1)').text(target.status); //자동화 목록 대상 텍스트 입력되는 부분 let newTargetText = '

* '+target.type+' - '+target.media+'
'+target.name+'

'; $('#targetSelectTable tbody tr.nodata').remove(); $('#targetSelectTable tbody').append($targetData); $('#target-tab').append(newTargetText); }); } //조건 if (data.conditions) { data.conditions.forEach(function(condition, index) { if(index === 0) { if(condition.operation == 'and'){ $('input[type="radio"][value="and"]').prop('checked', true); }else{ $('input[type="radio"][value="or"]').prop('checked', true); } $('#condition-1 .conditionOrder').val(condition.order); $('#condition-1 .conditionOrder').val(condition.order); $('#condition-1 .conditionType').val(condition.type); if(condition.type == 'status'){ $('#condition-1 .conditionTypeValue').hide(); $('#condition-1 .conditionTypeValueStatus').val(condition.type_value).show(); var conditionTypeValueText = $('#condition-1 .conditionTypeValueStatus option:selected').text(); }else{ $('#condition-1 .conditionTypeValueStatus').hide(); $('#condition-1 .conditionTypeValue').val(condition.type_value).show(); var conditionTypeValueText = $('#condition-1 .conditionTypeValue').val(); } $('#condition-1 .conditionTypeValue').val(condition.type_value); var conditionTypeValueText = $('#condition-1 .conditionTypeValue').val(); $('#condition-1 .conditionCompare').val(condition.compare); $("#text-condition-1 .typeText").html($('#condition-1 .conditionType option:selected').text()); $("#text-condition-1 .typeValueText").html(conditionTypeValueText); $("#text-condition-1 .compareText").html($('#condition-1 .conditionCompare option:selected').text()); } else { // 그 외의 항목일 경우 var uniqueId = 'condition-' + (index + 1); addConditionRow(uniqueId); //$(`#${uniqueId} .conditionOrder`).val(condition.order); $(`#${uniqueId} .conditionType`).val(condition.type); if(condition.type == 'status'){ $(`#${uniqueId} .conditionTypeValue`).hide(); $(`#${uniqueId} .conditionTypeValueStatus`).val(condition.type_value).show(); var conditionTypeValueText = $("#"+uniqueId+" .conditionTypeValueStatus option:selected").text(); }else{ $(`#${uniqueId} .conditionTypeValueStatus`).hide(); $(`#${uniqueId} .conditionTypeValue`).val(condition.type_value).show(); var conditionTypeValueText = $("#"+uniqueId+" .conditionTypeValue").val(); } $(`#${uniqueId} .conditionTypeValue`).val(condition.type_value); var conditionTypeValueText = $("#"+uniqueId+" .conditionTypeValue").val(); $(`#${uniqueId} .conditionCompare`).val(condition.compare); $("#text-"+uniqueId+" .typeText").html($("#"+uniqueId+" .conditionType option:selected").text()); $("#text-"+uniqueId+" .typeValueText").html(conditionTypeValueText); $("#text-"+uniqueId+" .compareText").html($("#"+uniqueId+" .conditionCompare option:selected").text()); } }); } //실행 if (data.executions && Array.isArray(data.executions)) { data.executions.forEach(function(execution, index) { var execIndex = index+1; //실행 table data 입력 var $executionData = $(executionDom).clone(); $executionData .attr('data-id', `${execution.media}_${execution.type}_${execution.id}`).attr('id', `exec-${execIndex}`) .find('td:eq(0) input[name="exec_order"]').val(execution.order) $executionData .find('td:eq(1)').find('ul').find('li:eq(0)').text(execution.type) .next('li').text(execution.name) .next('li').text(execution.media); // var $executionData = $(executionData); // jQuery 객체로 변환 if(execution.exec_type == 'status'){ $executionData.find('input[name="exec_condition_value"]').hide(); $executionData.find('select[name="exec_condition_type_budget"]').hide(); $executionData.find('select[name="exec_condition_type"]').val(execution.exec_type); $executionData.find('select[name="exec_condition_value_status"]').val(execution.exec_value).show(); }else{ $executionData.find('select[name="exec_condition_value_status"]').hide(); $executionData.find('select[name="exec_condition_type"]').val(execution.exec_type); $executionData.find('input[name="exec_condition_value"]').val(execution.exec_value).show(); $executionData.find('select[name="exec_condition_type_budget"]').val(execution.exec_budget_type).show(); } $('#execSelectTable tbody tr.nodata').remove(); $('#execSelectTable tbody').append($executionData); var newExecText = '

* '+execution.type+' - '+execution.media+'
'+execution.name+'

'; $('#preactice-tab').append(newExecText); }); } if(data.aa_slack_webhook){ $('#slackSendTable input[name=slack_webhook]').val(data.aa_slack_webhook); } if(data.aa_slack_msg){ $('#slackSendTable input[name=slack_msg]').val(data.aa_slack_msg); } $('#detailTable input[name=subject]').val(data.aa_subject); if(data.aa_description){ $('#detailTable textarea[name=description]').val(data.aa_description); } $('#detailText #subjectText').text(data.aa_subject); $('#detailText #descriptionText').text(data.aa_description); conditionStatusHide(); } //대상/실행 table 데이터가 없을 경우 function addNoDataMessage(tableId, colspanWid) { let notargetData = `데이터가 없습니다.`; $(`#${tableId} tbody`).append(notargetData); } const notargetJs = () => addNoDataMessage('targetSelectTable', 6); //대상table const noexecJs = () => addNoDataMessage('execSelectTable', 9); //실행table //모달 초기화 function reset(){ selectedCell = []; $('.scheduler-reset').trigger('click'); $('input[name=exec_once]').prop('checked', false); $('#automationModal input[name=seq]').val(''); $('#conditionTable tbody tr:not(#condition-1)').remove() $('#targetCheckedTable tbody tr, #targetSelectTable tbody tr, #execSelectTable tbody tr').remove(); $('#condition-1 input[name=type_value]').show(); $('#condition-1 select[name=type_value_status]').hide(); $('#myTab li').each(function(index){ let $pTags = $(this).find('p'); if(index === 1 || index === 3){ $pTags.remove(); }else if (index === 2 || index === 4) { $pTags.first().find('span').text(''); }else{ $pTags.first().text(''); } $pTags.not(':first').remove(); }) $('#automationModal').find('select').each(function() { $(this).prop('selectedIndex', 0); }); $('#automationModal').find('input[type=text], input[type=hidden], textarea').each(function() { $(this).val(''); }); $('input[name=operation]').prop('checked', false); $('#searchAll').prop('checked', false); $('#showTargetAdv').prop('disabled', false); $('#condition-tab p').show(); if ($.fn.DataTable.isDataTable('#targetTable')) { targetTable = $('#targetTable').DataTable(); targetTable.destroy(); } if ($.fn.DataTable.isDataTable('#execTable')) { execTable = $('#execTable').DataTable(); execTable.destroy(); } $('#targetTable tbody tr, #execTable tbody tr').remove(); $('#schedule-tab').trigger('click'); } function setProcData(){ let $onceExecution = $('input[name=exec_once]').prop('checked'); let $target_create_type = $('input[name=target_create_type]:checked').val(); let $operation = $('input[name=operation]:checked').val(); let $targets = []; let $conditions = []; let $executions = []; $('#targetSelectTable tbody tr').each(function(){ let $row = $(this); let info = $row.data('id').split('_'); let media = info[0]; let type = info[1]; let id = info[2]; $targets.push({ media: media, type: type, id: id, }); }); $('#conditionTable tbody tr[id^="condition-"]').each(function(){ let $row = $(this); let type = $row.find('select[name=type]').val(); let type_value = ''; if(type == 'status'){ type_value = $row.find('select[name=type_value_status]').val(); }else{ type_value = $row.find('input[name=type_value]').val(); } let compare = $row.find('select[name=compare]').val(); if(type){ $conditions.push({ type: type, type_value: type_value, compare: compare, operation: $operation }); } }); $('#execSelectTable tbody tr').each(function(){ let $row = $(this); let info = $row.data('id').split('_'); let order = $row.find('input[name=exec_order]').val(); let media = info[0]; let type = info[1]; let id = info[2]; let exec_type = $row.find('select[name=exec_condition_type]').val(); let exec_value = ''; if(exec_type == 'status'){ exec_value = $row.find('select[name=exec_condition_value_status]').val(); }else if(exec_type == 'budget'){ exec_value = $row.find('input[name=exec_condition_value]').val(); } let exec_budget_type = $row.find('select[name=exec_condition_type_budget]').val(); $executions.push({ order: order, media: media, type: type, id: id, exec_type: exec_type, exec_value: exec_value, exec_budget_type: exec_budget_type }); }); let $subject = $('#detailTable input[name=subject]').val(); let $description = $('#detailTable textarea[name=description]').val(); let $slack_webhook = $('#slackSendTable input[name=slack_webhook]').val(); let $slack_msg = $('#slackSendTable input[name=slack_msg]').val(); let $data = { 'schedule': { 'exec_once': $onceExecution, 'schedule_value': selectedCell }, 'execution': $executions, 'detail': { 'subject': $subject, 'description': $description, 'slack_webhook': $slack_webhook, 'slack_msg': $slack_msg, } }; if ($('#targetSelectTable tbody tr').length > 0) { $data['target_create_type'] = $target_create_type; $data['target'] = $targets; $data['condition'] = $conditions; } return $data; } function conditionStatusHide(){ let targetCount = $('#targetSelectTable tbody tr').length; if (targetCount > 1) { $('#conditionTable select option[value=status]').hide(); }else{ $('#conditionTable select option[value=status]').show(); } } function setTargetExec(data) { data.forEach(function(target, index) { let targetIndex = index+1; //통합광고관리 대상 tab let $targetData = $(targetDom).clone(); $targetData.attr('data-id', `${target.media}_${target.type}_${target.id}`).attr('id', `target-${targetIndex}`) .find('td:eq(0) ul').find('li:eq(0)').text(target.media) .next('li').text(target.type) .next('li').text(target.name); $targetData.find('td:eq(1)').text(target.status); //통합 광고 관리 대상 텍스트 입력되는 부분 let newTargetText = '

* '+target.type+' - '+target.media+'
'+target.name+'

'; $('#targetSelectTable tbody').append($targetData); $('#target-tab').append(newTargetText); }); } function getTargetAdv(data){ $.ajax({ type: "GET", url: "/advertisements/get-adv", data: data, dataType: "json", contentType: 'application/json; charset=utf-8', success: function(data){ setTargetExec(data); }, error: function(error, status, msg){ alert("상태코드 " + status + "에러메시지" + msg ); } }); } // 미디어 버튼 클릭 이벤트 수정 $('body').on('click', '.media_btn', function() { $(this).toggleClass('active'); }); //모달 보기 $('#automationModal').on('show.bs.modal', function(e) { $('#execSearchWrap').show(); var $btn = $(e.relatedTarget); if ($btn.hasClass('updateBtn')) { $('#automationModal #targetCreateType').hide(); var id = $btn.closest('tr').data('id'); $.ajax({ type: "GET", url: "/automation/get-automation", data: {'id':id}, dataType: "json", contentType: 'application/json; charset=utf-8', success: function(data){ setModalData(data); }, error: function(error, status, msg){ alert("상태코드 " + status + "에러메시지" + msg ); } }); }else{ if ($btn.hasClass('advAutomationCreateBtn')) { let selected = []; let clickBtn = $($btn).closest('tr').data('id'); selected.push(clickBtn); let data = { 'check': selected, 'type': $('.tab-link.active').val(), }; getTargetAdv(data); } if ($btn.hasClass('checkAdvAutomationCreateBtn')) { if($('.dataTable tbody tr.selected').length == 0){ alert('자동화를 등록할 대상을 선택해주세요.'); return false; } let selected = $('.dataTable tbody tr.selected').map(function(){return $(this).data('id');}).get(); let data = { 'check': selected, 'type': $('.tab-link.active').val(), }; getTargetAdv(data); } conditionStatusHide(); $('#automationModal #targetCreateType').show(); $('#automationModal input[type="radio"][value="target_sum"]').prop('checked', true); $('#automationModal input[type="radio"][value="and"]').prop('checked', true); $('#createAutomationBtn').show(); $('#updateAutomationBtn').hide(); } })//모달 닫기 .on('hidden.bs.modal', function(e) { reset(); }); $.fn.scheduler.locales['ko'] = { AM:'오전', PM:'오후', TIME_TITLE:'시간', WEEK_TITLE:'요일', WEEK_DAYS: ['월요일','화요일','수요일','목요일','금요일','토요일','일요일'], DRAG_TIP: '시간을 드래그해주세요.', RESET: '초기화' }; $('#scheduleTable').scheduler({ accuracy: 2, locale: 'ko', onSelect: function (d) { selectedCell = d; } }); $('form[name="search-target-form"]').bind('submit', function() { let data = { 'tab': $('#targetTab li.active').data('tab'), 'stx': $('#showTargetAdv').val(), } getTargetAdvs(data); return false; }); $('form[name="search-exec-form"]').bind('submit', function() { let searchAll = $('#searchAll').is(':checked'); let targets = $('#targetSelectTable tbody tr').length; let adv = []; if (!searchAll && !targets) { alert('대상이 없을 경우 전체검색을 체크해주세요.'); $('#searchAll').focus(); return false; } $('#targetSelectTable tbody tr').each(function() { let dataId = $(this).data('id'); adv.push(dataId); }); let data = { 'tab': $('#execTab li.active').data('tab'), 'stx': $('#showExecAdv').val(), 'adv': searchAll ? null : adv, } getExecAdvs(data); return false; }); $('body').on('click', '.target-btn', function(e){ e.stopPropagation(); let $row = $(this).closest('tr'); let $td = $row.children('td'); let media = $td.eq(0).text(); let type = $td.eq(1).text(); let mediaNumber = $td.eq(2).text(); let mediaTitle = $td.eq(3).text(); let mediaStatus = $td.eq(4).text(); let newRowIdNumber = $('#targetSelectTable tbody tr').length + 1; if ($('#targetSelectTable tbody td:contains("' + mediaTitle + '")').length > 0) { alert("중복된 행이 존재합니다."); return; } var $targetData = $(targetDom).clone(); $targetData .attr('data-id', `${media}_${type}_${mediaNumber}`).attr('id', `target-${newRowIdNumber}`) $targetData .find('td:eq(0) ul li:eq(0)').text(media) .next('li').text(type) .next('li').text(mediaTitle); $targetData.find('td:eq(1)').text(mediaStatus); $('#targetSelectTable tbody tr.nodata').remove(); $targetData.appendTo('#targetSelectTable'); //자동화 목록 대상 텍스트 입력되는 부분 let newTargetText = '

* '+type+' - '+media+'
'+mediaTitle+'

'; $('#target-tab').append(newTargetText); conditionStatusHide(); }); $('body').on('click', '.callTargetBtn', function(){ let isTargetPresent = false; $('#targetSelectTable tbody tr').each(function() { let media = $(this).find('td:eq(0) ul li:eq(1)').text(); if (media === '캠페인' || media === '광고그룹' || media === '광고') { isTargetPresent = true; return false; } }); if (!isTargetPresent) { alert('불러올 대상이 존재하지 않습니다.'); return false; } $('#targetSelectTable tbody tr').each(function() { let trId = $(this).data('id'); let existingIds = $('#execSelectTable tbody tr').map(function() { return $(this).data('id'); }).get(); if (existingIds.includes(trId)) { alert('중복된 행이 존재합니다.'); return false; } let data = trId.split('_'); let media = data[0]; let type = data[1]; let mediaNumber = data[2]; let mediaTitle = $(this).find('td:eq(0) ul li:eq(2)').text(); if (type == '캠페인' || type == '광고그룹' || type == '광고') { $('#execSelectTable tbody tr.nodata').remove(); let newRowIdNumber = $('#execSelectTable tbody tr').length + 1; var $executionData = $(executionDom).clone(); $executionData .attr('data-id', `${media}_${type}_${mediaNumber}`).attr('id', `exec-${newRowIdNumber}`) .find('td:eq(0) input[name="exec_order"]').val(newRowIdNumber) $executionData .find('td:eq(1)').find('ul').find('li:eq(0)').text(type) .next('li').text(mediaTitle) .next('li').text(media); $executionData.find('input[name="exec_condition_value"]').hide(); $executionData.find('select[name="exec_condition_type_budget"]').hide(); if (type === '광고' || (media == '구글' && type == '광고그룹')) { $executionData.find('select[name="exec_condition_type"] option[value="budget"]').hide(); $executionData.find('select[name="exec_condition_value_status"]').show(); }else{ $executionData.find('select[name="exec_condition_value_status"]').hide(); } $executionData.appendTo('#execSelectTable tbody'); let newExecText = '

* '+type+' - '+media+'
'+mediaTitle+''; $('#preactice-tab').append(newExecText); } }); }); //실행 자동화 table 20240711 $('body').on('click', '#execTable tbody tr', function(){ if ($(this).hasClass('selected')) { $(this).removeClass('selected'); }else { $(this).addClass('selected'); let trId = $(this).data('id'); $('#execSelectTable tbody tr.nodata').remove(); let newRowIdNumber = $('#execSelectTable tbody tr').length + 1; let existingIds = $('#execSelectTable tbody tr').map(function() { return $(this).data('id'); }).get(); if (existingIds.includes(trId)) { alert('중복된 행이 존재합니다.'); return false; } let media = $(this).find('td:eq(0)').text(); let type = $(this).find('td:eq(1)').text(); let mediaNumber = $(this).find('td:eq(2)').text(); let mediaTitle = $(this).find('td:eq(3)').text(); var $executionData = $(executionDom).clone(); $executionData .attr('data-id', `${media}_${type}_${mediaNumber}`).attr('id', `exec-${newRowIdNumber}`) .find('td:eq(0) input[name="exec_order"]').val(newRowIdNumber) $executionData .find('td:eq(1)').find('ul').find('li:eq(0)').text(type) .next('li').text(mediaTitle) .next('li').text(media); $executionData.find('input[name="exec_condition_value"]').hide(); $executionData.find('select[name="exec_condition_type_budget"]').hide(); if (type === '광고' || (media == '구글' && type == '광고그룹')) { $executionData.find('select[name="exec_condition_type"] option[value="budget"]').hide(); $executionData.find('select[name="exec_condition_value_status"]').show(); }else{ $executionData.find('select[name="exec_condition_value_status"]').hide(); } $executionData.appendTo('#execSelectTable tbody'); let selectedMediaTd = $(this).children('td').eq(0).text(); let selectedTypeTd = $(this).children('td').eq(1).text(); let selectedNameTd = $(this).children('td').eq(3).text(); let newExecText = '

* '+selectedTypeTd+' - '+selectedMediaTd+'
'+selectedNameTd+''; $('#preactice-tab').append(newExecText); } }); $('body').on('click', '#targetTab li', function(){ $('#targetTab li').removeClass('active'); $(this).addClass('active'); let $selectRow = $('#targetCheckedTable tbody tr').data('id'); let $selectRowCount = $('#targetCheckedTable tbody tr').length; if($selectRowCount > 0){ let adv = []; adv.push($selectRow); let data = { 'tab': $('#targetTab li.active').data('tab'), 'adv': adv } getTargetAdvs(data); } }); //합산적용, 개별적용 $('body').on('change', '#targetCreateType input[name=target_create_type]', function() { //상태 선택 let type = $(this).val(); if(type == 'target_seperate'){ $('#execSearchWrap').hide(); }else{ $('#execSearchWrap').show(); } }); $('body').on('click', '#execTab li', function(){ $('#execTab li').removeClass('active'); $(this).addClass('active'); }); $('body').on('click', '#conditionTable .btn-add', function(){ let currentRowCount = $('#conditionTable tbody tr').length; let uniqueId = 'condition-' + (currentRowCount + 1); addConditionRow(uniqueId); }); $('body').on('change', '#conditionTable select[name=type]', function() { //상태 선택 let type = $(this).val(); let rowId = $(this).closest('tr').attr('id'); if(type == 'status'){ $('#text-'+rowId+" .typeValueText").text(''); $(this).siblings('input[name=type_value]').val('').hide(); $(this).closest('tr').find('select[name=compare]').children('option:not([value="equal"], [value="not_equal"])').hide(); $(this).siblings('select[name=type_value_status]').show(); }else{ if($('#text-'+rowId+" .typeValueText").text() == 'ON' || $('#text-'+rowId+" .typeValueText").text() == 'OFF'){ $('#text-'+rowId+" .typeValueText").text(''); } $(this).siblings('select[name=type_value_status]').val('').hide(); $(this).closest('tr').find('select[name=compare]').children('option').show(); $(this).siblings('input[name=type_value]').show(); } }); $('body').on('change', '#conditionTable input, #conditionTable select', function() { let $this = $(this); conditionText($this); }); $('body').on('change', '#execSelectTable tbody tr select[name=exec_condition_type]', function() { let value = $(this).val(); if(value == 'status'){ $(this).closest('tr').find('input[name=exec_condition_value]').val('').hide(); $(this).closest('tr').find('select[name=exec_condition_type_budget]').val('').hide(); $(this).closest('tr').find('select[name=exec_condition_value_status]').show(); }else if(value == 'budget'){ $(this).closest('tr').find('select[name=exec_condition_value_status]').val('').hide(); $(this).closest('tr').find('input[name=exec_condition_value]').show(); $(this).closest('tr').find('select[name=exec_condition_type_budget]').show(); } }); $('body').on('change', '#execSelectTable tfoot select[name=all_exec_condition_type]', function(){ let value = $(this).val(); if(value == 'status'){ $('#execSelectTable tbody select[name=exec_condition_type]').val(value); $('#execSelectTable tbody select[name=exec_condition_type]').trigger('change'); $(this).closest('tr').find('input[name=all_exec_condition_value]').val('').hide(); $(this).closest('tr').find('select[name=all_exec_condition_type_budget]').val('').hide(); $(this).closest('tr').find('select[name=all_exec_condition_value_status]').show(); }else if(value == 'budget'){ $('#execSelectTable tbody tr').each(function() { let media = $(this).find('td').eq(1).text(); let type = $(this).find('td').eq(2).text(); if(type == '광고' || (media == '구글' && type == '광고그룹')) { return; }else{ $(this).find('select[name=exec_condition_type]').val(value).trigger('change'); } }); $(this).closest('tr').find('select[name=all_exec_condition_value_status]').val('').hide(); $(this).closest('tr').find('input[name=all_exec_condition_value]').show(); $(this).closest('tr').find('select[name=all_exec_condition_type_budget]').show(); } }); $('body').on('change', '#execSelectTable tfoot select[name=all_exec_condition_value_status]', function(){ let value = $(this).val(); $('#execSelectTable tbody tr').each(function() { let $select = $(this).find('select[name=exec_condition_type]'); let selectedOption = $select.find('option:selected').val(); if(selectedOption === 'status') { $(this).find('select[name=exec_condition_value_status]').val(value); } }); }); $('body').on('input', '#execSelectTable tfoot input[name=all_exec_condition_value]', function(){ let value = $(this).val(); $('#execSelectTable tbody tr').each(function() { let $select = $(this).find('select[name=exec_condition_type]'); let selectedOption = $select.find('option:selected').val(); if(selectedOption === 'budget') { $(this).find('input[name=exec_condition_value]').val(value); } }); }); $('body').on('change', '#execSelectTable tfoot select[name=all_exec_condition_type_budget]', function(){ let value = $(this).val(); $('#execSelectTable tbody tr').each(function() { let $select = $(this).find('select[name=exec_condition_type]'); let selectedOption = $select.find('option:selected').val(); if(selectedOption === 'budget') { $(this).find('select[name=exec_condition_type_budget]').val(value); } }); }); $('body').on('click', '.set_target_except_btn', function() { let rowId = $(this).closest('tr').attr('id'); $(this).closest('tr').remove(); $('#target-tab #text-'+rowId).remove(); if($('#targetSelectTable tbody tr').length === 0) { notargetJs(); } conditionStatusHide(); }); $('body').on('click', '.exec_condition_except_btn', function() { $(this).closest('tr').remove(); let rowId = $(this).closest('tr').attr('id'); $('#preactice-tab #text-'+rowId).remove(); if($('#execSelectTable tbody tr').length === 0) { noexecJs(); } }); $('body').on('click', '.deleteBtn', function() { $(this).closest('tr').remove(); let rowId = $(this).closest('tr').attr('id'); $('#condition-tab #text-'+rowId).remove(); }); $('body').on('focusout', '#detailTable input[name=subject]', function() { let detailTextSubject = $(this).val(); $('#detailText #subjectText').text(detailTextSubject); }); $('body').on('focusout', '#detailTable textarea[name=description]', function() { let detailTextDescription = $(this).val(); $('#detailText #descriptionText').text(detailTextDescription); }); $('body').on('click', '#createAutomationBtn', function() { if(validationData()){ let procData = setProcData(); $.ajax({ type: "POST", url: "/automation/create", data: procData, dataType: "json", contentType: 'application/json; charset=utf-8', success: function(data){ if(data == true){ dataTable.ajax.reload(); $('#automationModal').modal('hide'); } }, error: function(error, status, msg){ var errorMessages = error.responseJSON.messages.msg; var firstErrorMessage = Object.values(errorMessages)[0]; alert(firstErrorMessage); } }); }; }); $('body').on('click', '#updateAutomationBtn', function() { if(validationData()){ let procData = setProcData(); procData.seq = $('input[name=seq]').val(); $.ajax({ type: "PUT", url: "/automation/update", data: procData, dataType: "json", contentType: 'application/json; charset=utf-8', success: function(data){ if(data == true){ dataTable.ajax.reload(); $('#automationModal').modal('hide'); } }, error: function(error, status, msg){ var errorMessages = error.responseJSON.messages.msg; var firstErrorMessage = Object.values(errorMessages)[0]; alert(firstErrorMessage); } }); }; }); //등록 부분 끝