This commit is contained in:
flaskfarm
2022-10-25 12:12:04 +09:00
parent b19a5072ba
commit 26835c2cbb
14 changed files with 545 additions and 548 deletions

View File

@@ -130,6 +130,175 @@ $("body").on('click', '#globalCliboardBtn', function(e) {
});
// 사용 on / off
$("body").on('change', '#globalSchedulerSwitchBtn', function(e) {
e.preventDefault();
var ret = $(this).prop('checked');
$.ajax({
url: '/'+PACKAGE_NAME+'/ajax/' + MODULE_NAME + '/scheduler',
type: "POST",
cache: false,
data: {scheduler : ret},
dataType: "json",
success: function () {}
});
});
$("body").on('change', '#globalSchedulerSwitchPageBtn', function(e) {
var ret = $(this).prop('checked');
$.ajax({
url: '/'+PACKAGE_NAME+'/ajax/' + MODULE_NAME + '/' + PAGE_NAME + '/scheduler',
type: "POST",
cache: false,
data: {scheduler : ret},
dataType: "json",
success: function () {}
});
});
$("body").on('click', '#globalOneExecuteBtn', function(e) {
e.preventDefault();
$.ajax({
url: '/'+PACKAGE_NAME+'/ajax/' + MODULE_NAME + '/one_execute',
type: "POST",
cache: false,
data: {},
dataType: "json",
success: function (ret) {
if (ret=='scheduler' || ret=='thread') {
$.notify('<strong>작업을 시작하였습니다. ('+ret+')</strong>', {
type: 'success'
});
} else if (ret == 'is_running') {
$.notify('<strong>작업중입니다.</strong>', {
type: 'warning'
});
} else {
$.notify('<strong>작업 시작에 실패하였습니다.</strong>', {
type: 'warning'
});
}
}
});
});
$("body").on('click', '#globalOneExecutePageBtn', function(e) {
e.preventDefault();
$.ajax({
url: '/'+PACKAGE_NAME+'/ajax/' + MODULE_NAME + '/' + PAGE_NAME + '/one_execute',
type: "POST",
cache: false,
data: {sub:sub},
dataType: "json",
success: function (ret) {
if (ret=='scheduler' || ret=='thread') {
$.notify('<strong>작업을 시작하였습니다. ('+ret+')</strong>', {
type: 'success'
});
} else if (ret == 'is_running') {
$.notify('<strong>작업중입니다.</strong>', {
type: 'warning'
});
} else {
$.notify('<strong>작업 시작에 실패하였습니다.</strong>', {
type: 'warning'
});
}
}
});
});
$("body").on('click', '#globalImmediatelyExecuteBtn', function(e){
e.preventDefault();
$.ajax({
url: '/'+PACKAGE_NAME+'/ajax/' + MODULE_NAME + '/immediately_execute',
type: "POST",
cache: false,
data: {},
dataType: "json",
success: function (ret) {
if (ret.msg != null) notify(ret.msg, ret.ret);
}
});
});
$("body").on('click', '#globalImmediatelyExecutePageBtn', function(e){
e.preventDefault();
$.ajax({
url: '/'+PACKAGE_NAME+'/ajax/' + MODULE_NAME + '/' + PAGE_NAME + '/immediately_execute',
type: "POST",
cache: false,
data: {},
dataType: "json",
success: function (ret) {
if (ret.msg != null) notify(ret.msg, ret.ret);
}
});
});
$("body").on('click', '#globalDbDeleteBtn', function(e){
e.preventDefault();
document.getElementById("confirm_title").innerHTML = "DB 삭제";
document.getElementById("confirm_body").innerHTML = "전체 목록을 삭제 하시겠습니까?";
$('#confirm_button').attr('onclick', "globalDbDelete();");
$("#confirm_modal").modal();
return;
});
function globalDbDelete() {
$.ajax({
url: '/'+PACKAGE_NAME+'/ajax/' + MODULE_NAME + '/reset_db',
type: "POST",
cache: false,
data: {},
dataType: "json",
success: function (data) {
if (data) {
$.notify('<strong>삭제하였습니다.</strong>', {
type: 'success'
});
} else {
$.notify('<strong>삭제에 실패하였습니다.</strong>',{
type: 'warning'
});
}
}
});
}
$("body").on('click', '#globalDbDeletePageBtn', function(e){
e.preventDefault();
document.getElementById("confirm_title").innerHTML = "DB 삭제";
document.getElementById("confirm_body").innerHTML = "전체 목록을 삭제 하시겠습니까?";
$('#confirm_button').attr('onclick', "globalDbDeletePage();");
$("#confirm_modal").modal();
return;
});
function globalDbDeletePage() {
$.ajax({
url: '/'+PACKAGE_NAME+'/ajax/' + MODULE_NAME + '/' + PAGE_NAME + '/reset_db',
type: "POST",
cache: false,
data: {sub:sub},
dataType: "json",
success: function (data) {
if (data) {
$.notify('<strong>삭제하였습니다.</strong>', {
type: 'success'
});
} else {
$.notify('<strong>삭제에 실패하였습니다.</strong>',{
type: 'warning'
});
}
}
});
}
///////////////////////////////////////
// Global - 함수
///////////////////////////////////////
@@ -180,6 +349,88 @@ function shutdown_confirm() {
}
///////////////////////////////////////
// 리스트 화면 기본
///////////////////////////////////////
function globalRequestSearch(page, move_top=true) {
var formData = getFormdata('#form_search')
formData += '&page=' + page;
$.ajax({
url: '/' + PACKAGE_NAME + '/ajax/' + MODULE_NAME + '/web_list',
type: "POST",
cache: false,
data: formData,
dataType: "json",
success: function (data) {
current_data = data;
if (move_top)
window.scrollTo(0,0);
make_list(data.list)
make_page_html(data.paging)
}
});
}
function make_page_html(data) {
str = ' \
<div class="d-inline-block"></div> \
<div class="row mb-3"> \
<div class="col-sm-12"> \
<div class="btn-toolbar" style="justify-content: center;" role="toolbar" aria-label="Toolbar with button groups" > \
<div class="btn-group btn-group-sm mr-2" role="group" aria-label="First group">'
if (data.prev_page) {
str += '<button id="gloablSearchPageBtn" data-page="' + (data.start_page-1) + '" type="button" class="btn btn-secondary">&laquo;</button>'
}
for (var i = data.start_page ; i <= data.last_page ; i++) {
str += '<button id="gloablSearchPageBtn" data-page="' + i +'" type="button" class="btn btn-secondary" ';
if (i == data.current_page) {
str += 'disabled';
}
str += '>'+i+'</button>';
}
if (data.next_page) {
str += '<button id="gloablSearchPageBtn" data-page="' + (data.last_page+1) + '" type="button" class="btn btn-secondary">&raquo;</button>'
}
str += '</div> \
</div> \
</div> \
</div> \
'
document.getElementById("page1").innerHTML = str;
document.getElementById("page2").innerHTML = str;
}
$("body").on('click', '#gloablSearchPageBtn', function(e){
e.preventDefault();
globalRequestSearch($(this).data('page'), false);
});
$("body").on('click', '#globalSearchSearchBtn', function(e){
e.preventDefault();
globalRequestSearch(1, false);
});
$("body").on('click', '#globalSearchResetBtn', function(e){
e.preventDefault();
$("#order").val('desc');
$("#option1").val('all');
$("#option2").val('all');
$("#keyword").val('');
globalRequestSearch(1, false);
});
///////////////////////////////////////
// 파일 선택 모달
///////////////////////////////////////

View File

@@ -84,6 +84,14 @@ function j_row_info(left, right, l=2, r=8) {
return str;
}
function j_progress(id, width, label) {
var str = '';
str += '<div class="progress" style="height: 25px;">'
str += '<div id="'+id+'" class="progress-bar" style="background-color:yellow;width:'+width+'%"></div>';
str += '<div id="'+id+'_label" class="justify-content-center d-flex w-100 position-absolute" style="margin-top:2px">'+label+'</div>';
str += '</div>'
return str;
}
@@ -110,6 +118,19 @@ function j_row_info(left, right, l=2, r=8) {
function make_log(key, value, left=2, right=10) {
row = m_col(left, key, aligh='right');
row += m_col(right, value, aligh='left');
return row;
}
@@ -118,16 +139,106 @@ function text_color(text, color='red') {
return '<span style="color:'+color+'; font-weight:bold">' + text + '</span>';
}
function m_table(id, heads) {
str += '<table id="result_table" class="table table-sm tableRowHover " ><thead class="thead-dark"><tr> \
<th style="width:10%;text-align:center;">NO</th> \
<th style="width:15%;text-align:center;">물어본 숫자</th> \
<th style="width:10%;text-align:center;">스트라이크</th> \
<th style="width:10%;text-align:center;">볼</th> \
<th style="width:15%;text-align:center;">가능한 숫자 수</th> \
<th style="width:40%;text-align:center;">Action</th> \
</tr></thead><tbody id="list">';
}
///////////////////////////////////////
// UI - 확장설정 - dropdown
///////////////////////////////////////
document.addEventListener("DOMContentLoaded", function(){
/////// Prevent closing from click inside dropdown
document.querySelectorAll('.dropdown-menu').forEach(function(element){
element.addEventListener('click', function (e) {
e.stopPropagation();
});
})
// make it as accordion for smaller screens
if (window.innerWidth < 992) {
// close all inner dropdowns when parent is closed
document.querySelectorAll('.navbar .dropdown').forEach(function(everydropdown){
everydropdown.addEventListener('hidden.bs.dropdown', function () {
// after dropdown is hidden, then find all submenus
this.querySelectorAll('.submenu').forEach(function(everysubmenu){
// hide every submenu as well
everysubmenu.style.display = 'none';
});
})
});
document.querySelectorAll('.dropdown-menu a').forEach(function(element){
element.addEventListener('click', function (e) {
let nextEl = this.nextElementSibling;
if(nextEl && nextEl.classList.contains('submenu')) {
// prevent opening link if link needs to open dropdown
e.preventDefault();
console.log(nextEl);
if(nextEl.style.display == 'block'){
nextEl.style.display = 'none';
} else {
nextEl.style.display = 'block';
}
}
});
})
}
// end if innerWidth
});
// DOMContentLoaded end
///////////////////////////////////////
@@ -218,14 +329,7 @@ function m_tab_content(name, content, active) {
return str;
}
function m_progress(id, width, label) {
var str = '';
str += '<div class="progress" style="height: 25px;">'
str += '<div id="'+id+'" class="progress-bar" style="background-color:yellow;width:'+width+'%"></div>';
str += '<div id="'+id+'_label" class="justify-content-center d-flex w-100 position-absolute" style="margin-top:2px">'+label+'</div>';
str += '</div>'
return str;
}
function m_progress2(id, width, label) {
@@ -239,94 +343,12 @@ function m_progress2(id, width, label) {
function make_page_html(data) {
str = ' \
<div class="d-inline-block"></div> \
<div class="row mb-3"> \
<div class="col-sm-12"> \
<div class="btn-toolbar" style="justify-content: center;" role="toolbar" aria-label="Toolbar with button groups" > \
<div class="btn-group btn-group-sm mr-2" role="group" aria-label="First group">'
if (data.prev_page) {
str += '<button id="page" data-page="' + (data.start_page-1) + '" type="button" class="btn btn-secondary">&laquo;</button>'
}
for (var i = data.start_page ; i <= data.last_page ; i++) {
str += '<button id="page" data-page="' + i +'" type="button" class="btn btn-secondary" ';
if (i == data.current_page) {
str += 'disabled';
}
str += '>'+i+'</button>';
}
if (data.next_page) {
str += '<button id="page" data-page="' + (data.last_page+1) + '" type="button" class="btn btn-secondary">&raquo;</button>'
}
str += '</div> \
</div> \
</div> \
</div> \
'
document.getElementById("page1").innerHTML = str;
document.getElementById("page2").innerHTML = str;
}
function make_log(key, value, left=2, right=10) {
row = m_col(left, key, aligh='right');
row += m_col(right, value, aligh='left');
return row;
}
///////////////////////////////////////
// UI - 확장설정 - dropdown
///////////////////////////////////////
document.addEventListener("DOMContentLoaded", function(){
/////// Prevent closing from click inside dropdown
document.querySelectorAll('.dropdown-menu').forEach(function(element){
element.addEventListener('click', function (e) {
e.stopPropagation();
});
})
// make it as accordion for smaller screens
if (window.innerWidth < 992) {
// close all inner dropdowns when parent is closed
document.querySelectorAll('.navbar .dropdown').forEach(function(everydropdown){
everydropdown.addEventListener('hidden.bs.dropdown', function () {
// after dropdown is hidden, then find all submenus
this.querySelectorAll('.submenu').forEach(function(everysubmenu){
// hide every submenu as well
everysubmenu.style.display = 'none';
});
})
});
document.querySelectorAll('.dropdown-menu a').forEach(function(element){
element.addEventListener('click', function (e) {
let nextEl = this.nextElementSibling;
if(nextEl && nextEl.classList.contains('submenu')) {
// prevent opening link if link needs to open dropdown
e.preventDefault();
console.log(nextEl);
if(nextEl.style.display == 'block'){
nextEl.style.display = 'none';
} else {
nextEl.style.display = 'block';
}
}
});
})
}
// end if innerWidth
});
// DOMContentLoaded end
///////////////////////////////////////

View File

@@ -193,202 +193,14 @@ function streaming_kill(command, data={}) {
// Global.. JS 파일로 뺄것
///////////////////////////////////////////////////////////////////////////////
// 사용 on / off
$('#global_scheduler').change(function() {
var ret = $(this).prop('checked');
$.ajax({
url: '/'+package_name+'/ajax/scheduler',
type: "POST",
cache: false,
data: {scheduler : ret},
dataType: "json",
success: function (list) {
}
});
});
$('#global_scheduler_sub').change(function() {
var ret = $(this).prop('checked');
$.ajax({
url: '/'+package_name+'/ajax/scheduler',
type: "POST",
cache: false,
data: {scheduler : ret, sub:sub},
dataType: "json",
success: function (list) {
}
});
});
function global_setting_save_function() {
var formData = getFormdata('#setting');
$.ajax({
url: '/'+package_name+'/ajax/setting_save',
type: "POST",
cache: false,
data: formData,
dataType: "json",
success: function (ret) {
if (ret) {
$.notify('<strong>설정을 저장하였습니다.</strong>', {
type: 'success'
});
} else {
$.notify('<strong>설정 저장에 실패하였습니다.</strong>', {
type: 'warning'
});
}
}
});
}
$("#global_one_execute_btn").click(function(e) {
//$("body").on('click', '#one_execute_btn', function(e){
e.preventDefault();
$.ajax({
url: '/' + package_name + '/ajax/one_execute',
type: "POST",
cache: false,
data: {},
dataType: "json",
success: function (ret) {
if (ret=='scheduler' || ret=='thread') {
$.notify('<strong>작업을 시작하였습니다. ('+ret+')</strong>', {
type: 'success'
});
} else if (ret == 'is_running') {
$.notify('<strong>작업중입니다.</strong>', {
type: 'warning'
});
} else {
$.notify('<strong>작업 시작에 실패하였습니다.</strong>', {
type: 'warning'
});
}
}
});
});
$("#global_one_execute_sub_btn").click(function(e) {
//$("body").on('click', '#one_execute_btn', function(e){
e.preventDefault();
$.ajax({
url: '/' + package_name + '/ajax/one_execute',
type: "POST",
cache: false,
data: {sub:sub},
dataType: "json",
success: function (ret) {
if (ret=='scheduler' || ret=='thread') {
$.notify('<strong>작업을 시작하였습니다. ('+ret+')</strong>', {
type: 'success'
});
} else if (ret == 'is_running') {
$.notify('<strong>작업중입니다.</strong>', {
type: 'warning'
});
} else {
$.notify('<strong>작업 시작에 실패하였습니다.</strong>', {
type: 'warning'
});
}
}
});
});
$("body").on('click', '#global_immediately_execute_sub_btn', function(e){
e.preventDefault();
$.ajax({
url: '/' + package_name + '/ajax/immediately_execute',
type: "POST",
cache: false,
data: {sub:sub},
dataType: "json",
success: function (ret) {
if (ret.msg != null) notify(ret.msg, ret.ret);
}
});
});
$("body").on('click', '#global_reset_db_btn', function(e){
e.preventDefault();
document.getElementById("confirm_title").innerHTML = "DB 삭제";
document.getElementById("confirm_body").innerHTML = "전체 목록을 삭제 하시겠습니까?";
$('#confirm_button').attr('onclick', "global_db_delete();");
$("#confirm_modal").modal();
return;
});
function global_db_delete() {
$.ajax({
url: '/' + package_name + '/ajax/reset_db',
type: "POST",
cache: false,
data: {},
dataType: "json",
success: function (data) {
if (data) {
$.notify('<strong>삭제하였습니다.</strong>', {
type: 'success'
});
} else {
$.notify('<strong>삭제에 실패하였습니다.</strong>',{
type: 'warning'
});
}
}
});
}
$("body").on('click', '#global_reset_db_sub_btn', function(e){
e.preventDefault();
document.getElementById("confirm_title").innerHTML = "DB 삭제";
document.getElementById("confirm_body").innerHTML = "전체 목록을 삭제 하시겠습니까?";
$('#confirm_button').attr('onclick', "global_db_delete_sub();");
$("#confirm_modal").modal();
return;
});
function global_db_delete_sub() {
$.ajax({
url: '/' + package_name + '/ajax/reset_db',
type: "POST",
cache: false,
data: {sub:sub},
dataType: "json",
success: function (data) {
if (data) {
$.notify('<strong>삭제하였습니다.</strong>', {
type: 'success'
});
} else {
$.notify('<strong>삭제에 실패하였습니다.</strong>',{
type: 'warning'
});
}
}
});
}
function global_sub_request_search(page, move_top=true) {
var formData = getFormdata('#form_search')
formData += '&page=' + page;
$.ajax({
url: '/' + package_name + '/ajax/' + sub + '/web_list',
type: "POST",
cache: false,
data: formData,
dataType: "json",
success: function (data) {
current_data = data;
if (move_top)
window.scrollTo(0,0);
make_list(data.list)
make_page_html(data.paging)
}
});
}
$("body").on('click', '#global_json_btn', function(e){
@@ -438,79 +250,11 @@ $("body").on('click', '#global_remove_btn', function(e) {
//#######################################################
//플러그인 - 모듈 - 서브 구조하에서 서브 관련 함수
function global_send_command_sub(command, arg1, arg2, arg3, modal_title, callback) {
$.ajax({
url: '/' + package_name + '/ajax/' + sub + '/' + sub2 + '/command',
type: "POST",
cache: false,
data:{command:command, arg1:arg1, arg2:arg2, arg3},
dataType: "json",
success: function (ret) {
console.log(ret);
if (ret.msg != null) notify(ret.msg, ret.ret);
if (ret.modal != null) m_modal(ret.modal, modal_title, false);
if (ret.json != null) m_modal(ret.json, modal_title, true);
if (callback != null) callback(ret);
}
});
}
$("body").on('click', '#global_one_execute_sublogic_btn', function(e){
e.preventDefault();
$.ajax({
url: '/' + package_name + '/ajax/' + sub + '/' + sub2 + '/one_execute',
type: "POST",
cache: false,
data: {},
dataType: "json",
success: function (ret) {
if (ret=='scheduler' || ret=='thread') {
$.notify('<strong>작업을 시작하였습니다. ('+ret+')</strong>', {
type: 'success'
});
} else if (ret == 'is_running') {
$.notify('<strong>작업중입니다.</strong>', {
type: 'warning'
});
} else {
$.notify('<strong>작업 시작에 실패하였습니다.</strong>', {
type: 'warning'
});
}
}
});
});
$("body").on('click', '#global_immediately_execute_sublogic_btn', function(e){
e.preventDefault();
$.ajax({
url: '/' + package_name + '/ajax/' + sub + '/' + sub2 + '/immediately_execute',
type: "POST",
cache: false,
data: {},
dataType: "json",
success: function (ret) {
if (ret.msg != null) notify(ret.msg, ret.ret);
}
});
});
$('#global_scheduler_sublogic').change(function() {
var ret = $(this).prop('checked');
$.ajax({
url: '/'+package_name+'/ajax/' + sub + '/' + sub2 + '/scheduler',
type: "POST",
cache: false,
data: {scheduler : ret},
dataType: "json",
success: function (list) {
}
});
});
@@ -615,50 +359,3 @@ $('#global_scheduler_sublogic').change(function() {
// 이동한 함수
function global_send_command(command, data={}) {
data['command'] = command;
$.ajax({
url: '/' + package_name + '/ajax/' + sub + '/command',
type: "POST",
cache: false,
data:data,
dataType: "json",
success: function (data) {
notify(data['msg'], data['ret']);
}
});
}
function global_send_command2(command, arg1, arg2, arg3, modal_title, callback) {
$.ajax({
url: '/' + package_name + '/ajax/' + sub + '/command',
type: "POST",
cache: false,
data:{command:command, arg1:arg1, arg2:arg2, arg3},
dataType: "json",
success: function (ret) {
if (ret.msg != null) notify(ret.msg, ret.ret);
if (ret.modal != null) m_modal(ret.modal, modal_title, false);
if (ret.json != null) m_modal(ret.json, modal_title, true);
if (callback != null) callback(ret);
}
});
}

View File

@@ -97,57 +97,7 @@ function m_tab_content(name, content, active) {
return str;
}
function m_progress(id, width, label) {
var str = '';
str += '<div class="progress" style="height: 25px;">'
str += '<div id="'+id+'" class="progress-bar" style="background-color:yellow;width:'+width+'%"></div>';
str += '<div id="'+id+'_label" class="justify-content-center d-flex w-100 position-absolute" style="margin-top:2px">'+label+'</div>';
str += '</div>'
return str;
}
function m_progress2(id, width, label) {
var str = '';
str += '<div class="progress" style="height: 25px;">'
str += '<div id="'+id+'" class="progress-bar" style="background-color:yellow;width:'+width+'%"></div>';
str += '<div id="'+id+'_label" class="justify-content-center d-flex w-100 position-absolute" style="margin:0px; margin-top:2px">'+label+'</div>';
str += '</div>'
return str;
}
function make_page_html(data) {
str = ' \
<div class="d-inline-block"></div> \
<div class="row mb-3"> \
<div class="col-sm-12"> \
<div class="btn-toolbar" style="justify-content: center;" role="toolbar" aria-label="Toolbar with button groups" > \
<div class="btn-group btn-group-sm mr-2" role="group" aria-label="First group">'
if (data.prev_page) {
str += '<button id="page" data-page="' + (data.start_page-1) + '" type="button" class="btn btn-secondary">&laquo;</button>'
}
for (var i = data.start_page ; i <= data.last_page ; i++) {
str += '<button id="page" data-page="' + i +'" type="button" class="btn btn-secondary" ';
if (i == data.current_page) {
str += 'disabled';
}
str += '>'+i+'</button>';
}
if (data.next_page) {
str += '<button id="page" data-page="' + (data.last_page+1) + '" type="button" class="btn btn-secondary">&raquo;</button>'
}
str += '</div> \
</div> \
</div> \
</div> \
'
document.getElementById("page1").innerHTML = str;
document.getElementById("page2").innerHTML = str;
}