김예미

add sms keyword analysis part(menu2)

This diff could not be displayed because it is too large.
......@@ -2466,6 +2466,11 @@
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
"python-shell": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/python-shell/-/python-shell-2.0.1.tgz",
"integrity": "sha512-Ys+SiCinY9JrldIJxGWd2AMQSQZLU7PFzrCWY7HTawZ73tIthFdlLLU1Y6Y40Hwdutc+TmfMe5TXNU73s07Xyg=="
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
......
import base64
import sys
import pymysql
from konlpy.tag import Kkma
conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
def select():
curs=conn.cursor()
#sql="select * from calllog"
#sql="select * from contact"
sql="select * from sms"
curs.execute(sql)
rows=curs.fetchall()
print(rows[0])
#for row in rows:
#analysis_keyword(row[0])
def analysis_keyword(text):
kkma = Kkma()
result = kkma.nouns(text)
result = str(result)
print(base64.b64encode(result.encode('utf-8')))
select()
conn.close()
\ No newline at end of file
import base64
import sys
import pymysql
from konlpy.tag import Twitter
conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
def select():
curs=conn.cursor()
sql="select sms.type, sms.address, sms.date, sms.body, contact.name from sms left join contact on sms.address=contact.number;"
curs.execute(sql)
rows=curs.fetchall()
for row in rows:
return_data=" "
if row[0]==1:
return_data+="get|"
else:
return_data+="send|"
if row[4] is None:
return_data+=row[1]+" ( - )|"
else:
return_data+=row[1]+" ("+row[4]+")|"
return_data+=row[2].strftime("%Y-%m-%d %H:%M:%S")+"|"
return_data+=row[3]+"|"
analysis_keyword(return_data, row[3])
def analysis_keyword(return_data, text):
twitter = Twitter()
result = twitter.nouns(text)
result=" ".join(str(x) for x in result)
result=return_data+result
print(base64.b64encode(result.encode('utf-8')))
select()
conn.close()
import base64
import sys
import pymysql
conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
def select():
curs=conn.cursor()
sql="drop table if exists sms_bank;"
curs.execute(sql)
sql="create table sms_bank(date datetime not null, bname text, price int, paymentplan text, sname text, primary key (date));"
curs.execute(sql)
sql="select body,date from sms where address in (15881600,16445330,15888900,15881688);"
curs.execute(sql)
rows=curs.fetchall()
for row in rows:
body=row[0].replace("<재난지원금 사용>\n","").replace("누적",":")
body=" ".join(body.split("\n"))
body_split=body.split(' ')
_bname=body_split[1][:-2]
_price=body_split[3][:-1].replace(",","")
_paymentplan=body_split[4]
_date=row[1].strftime("%Y-%m-%d %H:%M:%S")
_sname=' '.join(body_split[7:])
_sname=_sname.split(":")[0]
curs2=conn.cursor()
sql2="insert into sms_bank(bname, price, paymentplan, date, sname) values (%s, %s, %s, %s, %s);"
curs2.execute(sql2, (_bname, _price, _paymentplan, _date, _sname))
conn.commit()
#print(base64.b64encode("Conplete".encode('utf-8')))
select()
conn.close()
import base64
import sys
import pymysql
from konlpy.tag import Twitter
from collections import Counter
conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
def select():
curs=conn.cursor()
sql="select sms.type, sms.address, sms.date, sms.body, contact.name from sms left join contact on sms.address=contact.number;"
curs.execute(sql)
rows=curs.fetchall()
data=""
for row in rows:
data+=row[3]
analysis_keyword(data)
def analysis_keyword(text):
twitter = Twitter()
result = twitter.nouns(text)
count=Counter(result)
tag_count=[]
for n, c in count.most_common(20):
dics={'tag':n, 'count':c}
tag_count.append(dics)
for tag in tag_count:
return_data=tag['tag']+"|"+str(tag['count'])
print(base64.b64encode(return_data.encode('utf-8')))
select()
conn.close()
import base64
import sys
import pymysql
from konlpy.tag import Twitter
from collections import Counter
conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
def select():
curs=conn.cursor()
sql="select sms.type, sms.address, sms.date, sms.body, contact.name from sms left join contact on sms.address=contact.number where date between '"+sys.argv[1]+"' and '"+sys.argv[2]+"';"
curs.execute(sql)
rows=curs.fetchall()
data=""
for row in rows:
data+=row[3]
analysis_keyword(data)
def analysis_keyword(text):
twitter = Twitter()
result = twitter.nouns(text)
count=Counter(result)
tag_count=[]
for n, c in count.most_common(20):
dics={'tag':n, 'count':c}
tag_count.append(dics)
for tag in tag_count:
return_data=tag['tag']+"|"+str(tag['count'])
print(base64.b64encode(return_data.encode('utf-8')))
select()
conn.close()
import base64
import sys
import pymysql
from konlpy.tag import Twitter
from collections import Counter
conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
def select():
curs=conn.cursor()
sql="select sms.type, sms.address, sms.date, sms.body, contact.name from sms left join contact on sms.address=contact.number where timestampdiff(month,now(),sms.date)>-1;"
curs.execute(sql)
rows=curs.fetchall()
data=""
for row in rows:
data+=row[3]
analysis_keyword(data)
def analysis_keyword(text):
twitter = Twitter()
result = twitter.nouns(text)
count=Counter(result)
tag_count=[]
for n, c in count.most_common(20):
dics={'tag':n, 'count':c}
tag_count.append(dics)
for tag in tag_count:
return_data=tag['tag']+"|"+str(tag['count'])
print(base64.b64encode(return_data.encode('utf-8')))
select()
conn.close()
\ No newline at end of file
import base64
import sys
import pymysql
from konlpy.tag import Twitter
from collections import Counter
conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
def select():
curs=conn.cursor()
sql="select sms.type, sms.address, sms.date, sms.body, contact.name from sms left join contact on sms.address=contact.number where address in ("+sys.argv[1]+");"
curs.execute(sql)
rows=curs.fetchall()
data=""
for row in rows:
data+=row[3]
analysis_keyword(data)
def analysis_keyword(text):
twitter = Twitter()
result = twitter.nouns(text)
count=Counter(result)
tag_count=[]
for n, c in count.most_common(20):
dics={'tag':n, 'count':c}
tag_count.append(dics)
for tag in tag_count:
return_data=tag['tag']+"|"+str(tag['count'])
print(base64.b64encode(return_data.encode('utf-8')))
select()
conn.close()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Menu2</title>
<link rel="stylesheet" href="../assets/css/menu2.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/list.js/1.5.0/list.min.js"></script>
</head>
<body id="page-top">
<div class="title">
<h1 id="cc" onclick="location.href='menu.html'">SMS Analysis</h1>
</div>
<!-- Page Wrapper -->
<div id="wrapper">
<!-- Sidebar -->
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Heading -->
<div class="sidebar-heading">
키워드 분석
</div>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="keyword" style="text-decoration:line-through">
<i class="fas fa-fw"></i>
<span>전체 문자 키워드 목록</span></a>
</li>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="keyword1" style="text-decoration:line-through">
<i class="fas fa-fw"></i>
<span>최근 키워드 순위</span></a>
</li>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="keyword2" style="text-decoration:line-through">
<i class="fas fa-fw"></i>
<span>전체 키워드 순위</span></a>
</li>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="keyword3" style="text-decoration:line-through">
<i class="fas fa-fw"></i>
<span>특정 기간 키워드</span></a>
</li>
<form name="dateForm" method="post" id="dateForm">
<input type="date" id="between_date_start" />
~
<input type="date" id="between_date_end" />
<input type="button" id="between_date_submit" value="》" onclick="get_date_keyword();" />
</form>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="keyword4" style="text-decoration:line-through">
<i class="fas fa-fw"></i>
<span>특정 연락처 키워드</span></a>
</li>
<form name="numberForm" method="post" id="numberForm">
<input type="text" id="number" />
<input type="button" id="number_push" value="+" onclick="get_number_push();" />
<input type="button" id="number_pop" value="-" onclick="get_number_pop();" />
<input type="button" id="number_submit" value="》" onclick="get_number_keyword();" />
</form>
<li class="nav-item active" id="keyword4_list"></li>
<!-- Divider -->
<hr class="sidebar-divider">
<!-- Heading -->
<div class="sidebar-heading">
결제문자 분석
</div>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="payment1">
<i class="fas fa-fw"></i>
<span>결제문자 목록</span></a>
</li>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="payment2">
<i class="fas fa-fw"></i>
<span>전체 사용 금액 통계</span></a>
</li>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="payment3">
<i class="fas fa-fw"></i>
<span>특정 기간 사용 금액 통계</span></a>
</li>
<form name="dateForm" method="post" id="dateForm">
<input type="date" id="between_amount_date_start" />
~
<input type="date" id="between_amount_date_end" />
<input type="button" id="between_amount_date_submit" value="》" onclick="get_amount_date_payment();" />
</form>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="payment4">
<i class="fas fa-fw"></i>
<span>결제 시간대</span></a>
</li>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="payment5">
<i class="fas fa-fw"></i>
<span>특정 기간 결제 시간대</span></a>
</li>
<form name="dateForm" method="post" id="dateForm">
<input type="date" id="between_payment_date_start" />
~
<input type="date" id="between_payment_date_end" />
<input type="button" id="between_payment_date_submit" value="》" onclick="get_payment_date_payment();" />
</form>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="payment6">
<i class="fas fa-fw"></i>
<span>카드 이용 순위</span></a>
</li>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="payment7">
<i class="fas fa-fw"></i>
<span>특정 기간 카드 이용 순위</span></a>
</li>
<form name="dateForm" method="post" id="dateForm">
<input type="date" id="between_card_date_start" />
~
<input type="date" id="between_card_date_end" />
<input type="button" id="between_card_date_submit" value="》" onclick="get_card_date_payment();" />
</form>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="payment8">
<i class="fas fa-fw"></i>
<span>사용처 순위</span></a>
</li>
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" id="payment9">
<i class="fas fa-fw"></i>
<span>특정 기간 사용처 순위</span></a>
</li>
<form name="dateForm" method="post" id="dateForm">
<input type="date" id="between_store_date_start" />
~
<input type="date" id="between_store_date_end" />
<input type="button" id="between_store_date_submit" value="》" onclick="get_store_date_payment();" />
</form>
</ul>
<!-- End of Sidebar -->
<!-- Content Wrapper -->
<div id="content-wrapper" class="d-flex flex-column">
<!-- Main Content -->
<div id="content">
<!-- Begin Page Content -->
<div class="container-fluid">
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800" id="menu_name"></h1>
</div>
<div class="row">
<div id="choice" style="display:none;">
<ul id="choiceul">
<li class="cr" id="type1"></li>
<li class="cr" id="type2"></li>
</ul>
</div>
</div>
<!-- Content Row -->
<div class="row">
<!-- Area Chart -->
<div class="col-xl-8 col-lg-7" id="chart" style="display:none;">
<div class="card shadow mb-4">
<!-- Card Header - Dropdown -->
<div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary" id="box_name"></h6>
<div class="dropdown no-arrow">
<a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
</a>
<div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink">
<div class="dropdown-header">Dropdown Header:</div>
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
</div>
<!-- Card Body -->
<div class="card-body">
<div class="chart-area">
<canvas id="myChart" width="710" height="350" style="margin-left:4px; margin-top:4px;"></canvas>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div id="keywordspace" style="display:none;">
<div id="myList">
<form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
<div class="input-group">
<input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
</div>
</form>
<div id="myList_in">
<li class="sort" data-sort="date"># 시간순</li>
<li class="filterlabel"># 수신
<input type="checkbox" class="filter0" id="filter0" data_value=" get" />
</li>
<li class="filterlabel"># 발신
<input type="checkbox" class="filter0" id="filter0" data_value=" send" />
</li>
</div>
</div>
<ol class="list"></ol>
</div>
<div id="keyword1space" style="display:none;">
<div id="myList">
<form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
<div class="input-group">
<input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
</div>
</form>
<div id="myList_in">
<li class="sort" data-sort="date"># 시간순</li>
<li class="filterlabel"># 수신
<input type="checkbox" class="filter1" id="filter1" data_value=" get" />
</li>
<li class="filterlabel"># 발신
<input type="checkbox" class="filter1" id="filter1" data_value=" send" />
</li>
</div>
</div>
<ol class="list"></ol>
</div>
<div id="keyword2space" style="display:none;">
<div id="myList">
<form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
<div class="input-group">
<input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
</div>
</form>
<div id="myList_in">
<li class="sort" data-sort="date"># 시간순</li>
<li class="filterlabel"># 수신
<input type="checkbox" class="filter2" id="filter2" data_value=" get" />
</li>
<li class="filterlabel"># 발신
<input type="checkbox" class="filter2" id="filter2" data_value=" send" />
</li>
</div>
</div>
<ol class="list"></ol>
</div>
<div id="keyword3space" style="display:none;">
<div id="myList">
<form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
<div class="input-group">
<input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
</div>
</form>
<div id="myList_in">
<li class="sort" data-sort="date"># 시간순</li>
<li class="filterlabel"># 수신
<input type="checkbox" class="filter3" id="filter3" data_value=" get" />
</li>
<li class="filterlabel"># 발신
<input type="checkbox" class="filter3" id="filter3" data_value=" send" />
</li>
</div>
</div>
<ol class="list"></ol>
</div>
<div id="keyword4space" style="display:none;">
<div id="myList">
<form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
<div class="input-group">
<input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
</div>
</form>
<div id="myList_in">
<li class="sort" data-sort="date"># 시간순</li>
<li class="filterlabel"># 수신
<input type="checkbox" class="filter4" id="filter4" data_value=" get" />
</li>
<li class="filterlabel"># 발신
<input type="checkbox" class="filter4" id="filter4" data_value=" send" />
</li>
</div>
</div>
<ol class="list"></ol>
</div>
<div id="paymentspace" style="display:none;">
<div id="myList">
<form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
<div class="input-group">
<input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
</div>
</form>
<div id="myList_in">
<li class="sort" data-sort="date"># 시간순</li>
<li class="filterlabel"># 체크
<input type="checkbox" class="filter5" id="filter5" data_filter="payment_" data_value="체크" />
</li>
<li class="filterlabel"># 일시불
<input type="checkbox" class="filter5" id="filter5" data_filter="payment_" data_value="일시불" />
</li>
<li class="filterlabel"># 할부
<input type="checkbox" class="filter5" id="filter5" data_filter="payment_" data_value="할부" />
</li>
<li class="filterlabel"># ~5만원
<input type="checkbox" class="filter5" id="filter5" data_filter="amount" data_value="less5" />
</li>
<li class="filterlabel"># 5~10만원
<input type="checkbox" class="filter5" id="filter5" data_filter="amount" data_value="5to10" />
</li>
<li class="filterlabel"># 10만원~
<input type="checkbox" class="filter5" id="filter5" data_filter="amount" data_value="more10" />
</li>
</div>
</div>
<ol class="list"></ol>
</div>
</div>
</div>
<!-- /.container-fluid -->
</div>
<!-- End of Main Content -->
<!-- Footer -->
<footer class="sticky-footer bg-white">
<div class="container my-auto">
<div class="copyright text-center my-auto">
<span>Copyright &copy; Mobile Forensic Tool / F-out</span>
</div>
</div>
</footer>
<!-- End of Footer -->
</div>
<!-- End of Content Wrapper -->
</div>
<!-- End of Page Wrapper -->
<!-- Bootstrap core JavaScript-->
<script src="../assets/jquery/jquery.min.js"></script>
<script src="../assets/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Core plugin JavaScript-->
<script src="../assets/jquery-easing/jquery.easing.min.js"></script>
<!-- Custom scripts for all pages-->
<script src="menu2.js"></script>
<script>
var myChart = new Chart(ctx, options_chart_1);
window.myChart.destroy();
</script>
</body>
</html>
const {PythonShell}=require('python-shell');
var choosed_menu="";
var title_text="";
var label_text_1=[];
var label_text_2=[];
var label_data_text_1="";
var label_data_text_2="";
var label_data_1=[];
var label_data_2=[];
var date_start="";
var date_end="";
var number=[];
var keyword_1_list=[];
var keyword_1_count=[];
var keyword_all_list=[];
var keyword_all_count=[];
var keyword_between_list=[];
var keyword_between_count=[];
var keyword_with_list=[];
var keyword_with_count=[];
var payment_1_list=[];
var payment_1_count=[];
var payment_2_list=[];
var payment_2_count=[];
var payment_3_list=[];
var payment_3_count=[];
var payment_4_list=[];
var payment_4_count=[];
var payment_5_list=[];
var payment_5_count=[];
var payment_6_list=[];
var payment_6_count=[];
var payment_7_list=[];
var payment_7_count=[];
var payment_8_list=[];
var payment_8_count=[];
var payment_9_list=[];
var payment_9_count=[];
var payment_10_list=[];
var payment_10_count=[];
var payment_11_list=[];
var payment_11_count=[];
var payment_12_list=[];
var payment_12_count=[];
var payment_13_list=[];
var payment_13_count=[];
var payment_14_list=[];
var payment_14_count=[];
const canvas = document.getElementById("myChart")
const ctx=canvas.getContext('2d');
const choicespace = document.getElementById("choice");
const chartspace = document.getElementById("chart");
const keywordspace = document.getElementById("keywordspace");
const keyword1space = document.getElementById("keyword1space");
const keyword2space = document.getElementById("keyword2space");
const keyword3space = document.getElementById("keyword3space");
const keyword4space = document.getElementById("keyword4space");
const between_submit = document.getElementById("between_date_submit");
const with_submit = document.getElementById("number_submit");
const paymentspace = document.getElementById("paymentspace");
var keyword0 = document.getElementById('keyword');
var keyword1 = document.getElementById('keyword1');
var keyword2 = document.getElementById('keyword2');
var keyword3 = document.getElementById('keyword3');
var keyword4 = document.getElementById('keyword4');
var payment1 = document.getElementById('payment1');
var payment2 = document.getElementById('payment2');
var payment3 = document.getElementById('payment3');
var payment4 = document.getElementById('payment4');
var payment5 = document.getElementById('payment5');
var payment6 = document.getElementById('payment6');
var payment7 = document.getElementById('payment7');
var payment8 = document.getElementById('payment8');
var payment9 = document.getElementById('payment9');
var options_charts_1 = {
responsive: false,
title:{
display:true,
text:title_text
},
maintainAspectRatio: true,
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
};
var options_charts_2 = {
responsive: false,
title:{
display:true,
text:title_text
},
maintainAspectRatio: true,
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
};
var options_chart_1={
type: 'bar',
data: {
labels: label_text_1,
datasets:[{
label:label_data_text_1,
data:label_data_1,
backgroundColor:'rgba(255, 206, 86, 0.2)',
borderWidth: 1
}]
},
options: options_charts_1
};
var options_chart_2={
type: 'bar',
data: {
labels: label_text_2,
datasets:[{
label:label_data_text_2,
data:label_data_2,
backgroundColor:'rgba(75, 192, 192, 0.2)',
borderWidth: 1
}]
},
options: options_charts_2
};
var mysql = require('mysql');
var connection = mysql.createConnection({
host:'localhost',
user:'root',
password:'1234',
database:'dataextraction',
multipleStatements: true
});
connection.connect();
connection.query('select MIN(date) "min", MAX(date) "max" from calllog;', function(err, rows,fields){
if(!err){
document.getElementById('between_date_start').min=(rows[0].min.toISOString().split("T")[0]);
document.getElementById('between_date_start').max=(rows[0].max.toISOString().split("T")[0]);
document.getElementById('between_date_end').min=(rows[0].min.toISOString().split("T")[0]);
document.getElementById('between_date_end').max=(rows[0].max.toISOString().split("T")[0]);
document.getElementById('between_amount_date_start').min=(rows[0].min.toISOString().split("T")[0]);
document.getElementById('between_amount_date_start').max=(rows[0].max.toISOString().split("T")[0]);
document.getElementById('between_amount_date_end').min=(rows[0].min.toISOString().split("T")[0]);
document.getElementById('between_amount_date_end').max=(rows[0].max.toISOString().split("T")[0]);
document.getElementById('between_payment_date_start').min=(rows[0].min.toISOString().split("T")[0]);
document.getElementById('between_payment_date_start').max=(rows[0].max.toISOString().split("T")[0]);
document.getElementById('between_payment_date_end').min=(rows[0].min.toISOString().split("T")[0]);
document.getElementById('between_payment_date_end').max=(rows[0].max.toISOString().split("T")[0]);
document.getElementById('between_card_date_start').min=(rows[0].min.toISOString().split("T")[0]);
document.getElementById('between_card_date_start').max=(rows[0].max.toISOString().split("T")[0]);
document.getElementById('between_card_date_end').min=(rows[0].min.toISOString().split("T")[0]);
document.getElementById('between_card_date_end').max=(rows[0].max.toISOString().split("T")[0]);
document.getElementById('between_store_date_start').min=(rows[0].min.toISOString().split("T")[0]);
document.getElementById('between_store_date_start').max=(rows[0].max.toISOString().split("T")[0]);
document.getElementById('between_store_date_end').min=(rows[0].min.toISOString().split("T")[0]);
document.getElementById('between_store_date_end').max=(rows[0].max.toISOString().split("T")[0]);
}
else
cc.innerHTML='Error-#0/minmax';
});
var options_list = {
valueNames: [ 'type_cs', 'number', 'date','body', 'keyword' ],
item: '<div class="col-xl-3 col-md-6 mb-4"><div class="card border-left-success shadow h-100 py-2"><div class="card-body"><div class="row no-gutters align-items-center"><div class="col mr-2"><li id="listrow"><div id="m2"><p id="listrow_number" class="number"></p><p id="listrow_date" class="date"></p></div><p id="listrow_body" class="body"></p><p id="listrow_keyword" class="keyword"></p></li></div></div></div></div></div>'
};
var options_list_pay = {
valueNames: [ 'bname','payment','payment_','price', 'amount', 'sname', 'date' ],
item: '<div class="col-xl-3 col-md-6 mb-4"><div class="card border-left-success shadow h-100 py-2"><div class="card-body"><div class="row no-gutters align-items-center"><div class="col mr-2"><li id="listrow"><p id="listrow_bname" class="bname"></p><div id="m2"><p id="listrow_price" class="price"></p><p id="listrow_sname" class="sname"></p></div><div id="m2"><p id="listrow_payment" class="payment"></p><p id="listrow_date" class="date"></p></div></li></div></div></div></div></div>'
};
var values_list = [];
var values_list_1 = [];
var values_list_all = [];
var values_list_between = [];
var values_list_with = [];
var values_payment_list_all = [];
var myList;
var myList1 = new List("keyword1space", options_list, values_list_1);
var myList2 = new List("keyword2space", options_list, values_list_all);
var myList3 = new List("keyword3space", options_list, values_list_between);
var myList4 = new List("keyword4space", options_list, values_list_with);
var myList5;
connection.query('update contact set number=replace(number,"-","");', function(err, rows, fields){
if(err)
cc.innerHTML='Error-#1.0-contact replace';
});
let option = {
mode: 'text',
pythonPath: 'py',
pythonOptions: ['-3.6'],
scriptPath: '',
args: [],
encoding: 'utf8'
};
PythonShell.run('src/analysis_message.py', option, function(err, result){
if(err)
console.log(err);
else{
for(var i=0;i<result.length;i++){
let data = result[i].replace(`b\'`, '').replace(`\'`, '');
let buff = Buffer.from(data,'base64');
let text=buff.toString('utf-8');
var data_temp=text.split('|');
values_list.push({type_cs:data_temp[0], number:data_temp[1], date:data_temp[2], body:data_temp[3], keyword:data_temp[4]});
}
myList = new List("keywordspace", options_list, values_list);
//cc.innerHTML="[done] All List Keyword";
keyword0.style="text-decoration:none";
}
});
PythonShell.run('src/analysis_message_rank_recent.py', option, function(err, result){
if(err)
console.log(err);
else{
for(var i=0;i<result.length;i++){
let data = result[i].replace(`b\'`, '').replace(`\'`, '');
let buff = Buffer.from(data,'base64');
let text=buff.toString('utf-8');
var data_temp=text.split('|');
keyword_1_list.push(data_temp[0]);
keyword_1_count.push(data_temp[1]);
}
//cc.innerHTML="[done] recent Keyword";
keyword1.style="text-decoration:none";
}
});
PythonShell.run('src/analysis_message_rank_all.py', option, function(err, result){
if(err)
console.log(err);
else{
for(var i=0;i<result.length;i++){
let data = result[i].replace(`b\'`, '').replace(`\'`, '');
let buff = Buffer.from(data,'base64');
let text=buff.toString('utf-8');
var data_temp=text.split('|');
keyword_all_list.push(data_temp[0]);
keyword_all_count.push(data_temp[1]);
}
//cc.innerHTML="[done] recent Keyword";
keyword2.style="text-decoration:none";
}
});
PythonShell.run('src/analysis_message_bank.py', option, function(err, result){
if(err)
cc.innerHTML="Error-analysis_message_bank.py";
else{
connection.query('select * from sms_bank;', function(err, rows, fields){
if(err)
cc.innerHTML='Error-#2.0-payment select';
else{
for(var i=0;i<rows.length;i++){
var date_temp=rows[i].date.toISOString().split("T")[0]+" "+rows[i].date.toISOString().split("T")[1].slice(0,8);
var price_temp=rows[i].price;
var amount_temp=""
var bname_temp=rows[i].bname;
var sname_temp=rows[i].sname;
var payplan_temp=rows[i].paymentplan;
var payplan__temp=rows[i].paymentplan;
if (payplan__temp != "체크"&&payplan__temp!="일시불"){
payplan__temp="할부";
}
if (price_temp < 50000){amount_temp="less5";}
else if (price_temp >=50000 && price_temp <100000){amount_temp="5to10";}
else{amount_temp="more10";}
values_payment_list_all.push({bname:bname_temp, payment:payplan_temp ,payment_:payplan__temp ,price:price_temp+"원",amount:amount_temp,sname:sname_temp, date:date_temp});
}
myList5 = new List("paymentspace", options_list_pay, values_payment_list_all);
}
});
connection.query('SELECT date_format(date, "%Y-%m-02 00:00:00") "date", sum(price) "sum" FROM sms_bank group by date_format(date, "%Y-%m-02 00:00:00") order by date_format(date, "%Y-%m-02 00:00:00");', function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var date=rows[i].date.slice(0,7);
var sum=rows[i].sum;
payment_1_list.push(date)
payment_1_count.push(sum)
}
}
else
cc.innerHTML='Error-query-#payment_1';
});
connection.query('SELECT s1.date "date", sum(s2.sum) "sum" FROM (SELECT date_format(date, "%Y-%m-02 00:00:00") "date", sum(price) "sum" FROM sms_bank group by date_format(date, "%Y-%m-02 00:00:00") order by date_format(date, "%Y-%m-02 00:00:00")) s1, (SELECT date_format(date, "%Y-%m-02 00:00:00") "date", sum(price) "sum" FROM sms_bank group by date_format(date, "%Y-%m-02 00:00:00") order by date_format(date, "%Y-%m-02 00:00:00")) s2 where s1.date>=s2.date group by s1.date order by s1.date;', function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var date=rows[i].date.slice(0,7);
var sum=rows[i].sum;
payment_2_list.push(date)
payment_2_count.push(sum)
}
}
else
cc.innerHTML='Error-query-#payment_2';
});
connection.query('drop table if exists sms_bank_hour; create table sms_bank_hour(hour int not null, smscount int, primary key(hour)); set @hour:=-1; insert into sms_bank_hour(hour, smscount) (select (@hour:=@hour+1) "hour", (select count(*) from sms_bank where hour(date)=@hour) "count" from sms where @hour<23);', function(err, rows, fields){
if(!err){
connection.query('select * from sms_bank_hour order by hour;', function(err, rows, fields){
for(var i=0;i<rows.length;i++){
var hour=rows[i].hour;
var count=rows[i].smscount;
payment_5_list.push(hour)
payment_5_count.push(count)
}
});
}
else
cc.innerHTML='Error-query-#payment_5';
});
connection.query('select bname, count(*) "count" from sms_bank group by bname order by count(*) desc;', function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var bname=rows[i].bname;
var count=rows[i].count;
payment_7_list.push(bname)
payment_7_count.push(count)
}
}
else
cc.innerHTML='Error-query-#payment_7';
});
connection.query('select bname, sum(price) "sum" from sms_bank group by bname order by sum(price) desc;', function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var bname=rows[i].bname;
var sum=rows[i].sum;
payment_8_list.push(bname)
payment_8_count.push(sum)
}
}
else
cc.innerHTML='Error-query-#payment_8';
});
connection.query('select sname, count(*) "count" from sms_bank group by sname order by count(*) desc;', function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var sname=rows[i].sname;
var count=rows[i].count;
payment_11_list.push(sname)
payment_11_count.push(count)
}
}
else
cc.innerHTML='Error-query-#payment_11';
});
connection.query('select sname, sum(price) "sum" from sms_bank group by sname order by sum(price) desc;', function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var sname=rows[i].sname;
var sum=rows[i].sum;
payment_12_list.push(sname)
payment_12_count.push(sum)
}
}
else
cc.innerHTML='Error-query-#payment_12';
});
}
});
function chartspaceview(){
keywordspace.style="display:none";
choicespace.style="display:none";
chartspace.style="display:inline";
keyword1space.style="display:none";
keyword2space.style="display:none";
keyword3space.style="display:none";
keyword4space.style="display:none";
paymentspace.style="display:none";
}
keyword0.addEventListener('click', function(){
keywordspace.style="display:inline";
choicespace.style="display:none";
chartspace.style="display:none";
keyword1space.style="display:none";
keyword2space.style="display:none";
keyword3space.style="display:none";
keyword4space.style="display:none";
paymentspace.style="display:none";
menu_name.innerHTML="전체 문자의 키워드 목록";
});
keyword1.addEventListener('click', function(){
choosed_menu="keyword1";
chartspaceview();
menu_name.innerHTML="최근 1개월 문자 키워드 순위";
box_name.innerHTML="# 언급 횟수";
options_chart_1.options.title.text="최근 1개월 문자 키워드";
options_chart_1.data.labels=keyword_1_list;
options_chart_1.data.datasets[0].label="언급 횟수";
options_chart_1.data.datasets[0].data=keyword_1_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
keyword2.addEventListener('click', function(){
choosed_menu="keyword2";
chartspaceview();
menu_name.innerHTML="전체 문자 키워드 순위";
box_name.innerHTML="# 언급 횟수";
options_chart_1.options.title.text="전체 문자 키워드";
options_chart_1.data.labels=keyword_all_list;
options_chart_1.data.datasets[0].label="언급 횟수";
options_chart_1.data.datasets[0].data=keyword_all_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
keyword3.addEventListener('click', function(){
choosed_menu="keyword3";
chartspaceview();
menu_name.innerHTML="특정 기간의 문자 키워드 순위";
box_name.innerHTML="# 언급 횟수";
options_chart_1.options.title.text="특정 기간의 문자 키워드";
options_chart_1.data.labels=keyword_between_list;
options_chart_1.data.datasets[0].label="언급 횟수";
options_chart_1.data.datasets[0].data=keyword_between_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
keyword4.addEventListener('click', function(){
choosed_menu="keyword4";
chartspaceview();
menu_name.innerHTML="특정 연락처와의 문자 키워드 순위";
box_name.innerHTML="# 언급 횟수";
options_chart_1.options.title.text="특정 연락처와의 문자 키워드";
options_chart_1.data.labels=keyword_with_list;
options_chart_1.data.datasets[0].label="언급 횟수";
options_chart_1.data.datasets[0].data=keyword_with_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
payment1.addEventListener('click', function(){
keywordspace.style="display:none";
choicespace.style="display:none";
chartspace.style="display:none";
keyword1space.style="display:none";
keyword2space.style="display:none";
keyword3space.style="display:none";
keyword4space.style="display:none";
paymentspace.style="display:inline";
menu_name.innerHTML="결제문자 목록";
});
payment2.addEventListener('click', function(){
chartspaceview();
type1.innerHTML="# 결제 금액";
type2.innerHTML="# 누적 결제 금액";
choicespace.style="display:inline";
box_name.innerHTML="# 결제 금액";
choosed_menu="payment2";
menu_name.innerHTML="전체 기간의 결제 금액 통계";
options_chart_1.options.title.text="전체 기간의 결제 금액 통계";
options_chart_1.data.labels=payment_1_list;
options_chart_1.data.datasets[0].label="결제 금액";
options_chart_1.data.datasets[0].data=payment_1_count;
options_charts_2.title.text="전체 기간의 누적 결제 금액 통계";
options_chart_2.data.labels=payment_2_list;
options_chart_2.data.datasets[0].label="누적 결제 금액";
options_chart_2.data.datasets[0].data=payment_2_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
payment3.addEventListener('click', function(){
chartspaceview();
type1.innerHTML="# 결제 금액";
type2.innerHTML="# 누적 결제 금액";
choicespace.style="display:inline";
box_name.innerHTML="# 결제 금액";
choosed_menu="payment3";
menu_name.innerHTML="특정 기간의 결제 금액 통계";
options_chart_1.options.title.text="특정 기간의 결제 금액 통계";
options_chart_1.data.labels=payment_3_list;
options_chart_1.data.datasets[0].label="결제 금액";
options_chart_1.data.datasets[0].data=payment_3_count;
options_charts_2.title.text="특정 기간의 누적 결제 금액 통계";
options_chart_2.data.labels=payment_4_list;
options_chart_2.data.datasets[0].label="누적 결제 금액";
options_chart_2.data.datasets[0].data=payment_4_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
payment4.addEventListener('click', function(){
chartspaceview();
menu_name.innerHTML="전체 기간의 결제 시간대";
box_name.innerHTML="# 결제 횟수";
options_chart_1.options.title.text="전체 기간의 결제 시간대";
options_chart_1.data.labels=payment_5_list;
options_chart_1.data.datasets[0].label="결제 횟수";
options_chart_1.data.datasets[0].data=payment_5_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
payment5.addEventListener('click', function(){
chartspaceview();
menu_name.innerHTML="특정 기간의 결제 시간대";
box_name.innerHTML="# 결제 횟수";
options_chart_1.options.title.text="특정 기간의 결제 시간대";
options_chart_1.data.labels=payment_6_list;
options_chart_1.data.datasets[0].label="결제 횟수";
options_chart_1.data.datasets[0].data=payment_6_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
payment6.addEventListener('click', function(){
chartspaceview();
type1.innerHTML="# 결제 횟수 기준";
type2.innerHTML="# 결제 금액 기준";
choicespace.style="display:inline";
box_name.innerHTML="# 결제 횟수 기준";
choosed_menu="payment6";
menu_name.innerHTML="전체 기간의 카드 이용 순위";
options_chart_1.options.title.text="전체 기간의 카드 이용 순위";
options_chart_1.data.labels=payment_7_list;
options_chart_1.data.datasets[0].label="결제 횟수";
options_chart_1.data.datasets[0].data=payment_7_count;
options_charts_2.title.text="전체 기간의 카드 이용 순위";
options_chart_2.data.labels=payment_8_list;
options_chart_2.data.datasets[0].label="결제 금액";
options_chart_2.data.datasets[0].data=payment_8_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
payment7.addEventListener('click', function(){
chartspaceview();
type1.innerHTML="# 결제 횟수 기준";
type2.innerHTML="# 결제 금액 기준";
choicespace.style="display:inline";
box_name.innerHTML="# 결제 횟수 기준";
choosed_menu="payment7";
menu_name.innerHTML="특정 기간의 카드 이용 순위";
options_chart_1.options.title.text="특정 기간의 카드 이용 순위";
options_chart_1.data.labels=payment_9_list;
options_chart_1.data.datasets[0].label="결제 횟수";
options_chart_1.data.datasets[0].data=payment_9_count;
options_charts_2.title.text="특정 기간의 카드 이용 순위";
options_chart_2.data.labels=payment_10_list;
options_chart_2.data.datasets[0].label="결제 금액";
options_chart_2.data.datasets[0].data=payment_10_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
payment8.addEventListener('click', function(){
chartspaceview();
type1.innerHTML="# 결제 횟수 기준";
type2.innerHTML="# 결제 금액 기준";
choicespace.style="display:inline";
box_name.innerHTML="# 결제 횟수 기준";
choosed_menu="payment8";
menu_name.innerHTML="전체 기간의 사용처 순위";
options_chart_1.options.title.text="전체 기간의 사용처 순위";
options_chart_1.data.labels=payment_11_list;
options_chart_1.data.datasets[0].label="결제 횟수";
options_chart_1.data.datasets[0].data=payment_11_count;
options_charts_2.title.text="전체 기간의 사용처 순위";
options_chart_2.data.labels=payment_12_list;
options_chart_2.data.datasets[0].label="결제 금액";
options_chart_2.data.datasets[0].data=payment_12_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
payment9.addEventListener('click', function(){
chartspaceview();
type1.innerHTML="# 결제 횟수 기준";
type2.innerHTML="# 결제 금액 기준";
choicespace.style="display:inline";
box_name.innerHTML="# 결제 횟수 기준";
choosed_menu="payment9";
menu_name.innerHTML="특정 기간의 사용처 순위";
options_chart_1.options.title.text="특정 기간의 사용처 순위";
options_chart_1.data.labels=payment_13_list;
options_chart_1.data.datasets[0].label="결제 횟수";
options_chart_1.data.datasets[0].data=payment_13_count;
options_charts_2.title.text="특정 기간의 사용처 순위";
options_chart_2.data.labels=payment_14_list;
options_chart_2.data.datasets[0].label="결제 금액";
options_chart_2.data.datasets[0].data=payment_14_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
});
var type1 = document.getElementById('type1');
type1.addEventListener('click', function(){
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
switch(choosed_menu){
case 'payment2':
case 'payment3':
box_name.innerHTML="# 결제 금액";
break;
case 'payment6':
case 'payment7':
case 'payment8':
case 'payment9':
box_name.innerHTML="# 결제 횟수 기준";
break;
}
});
var type2 = document.getElementById('type2');
type2.addEventListener('click', function(){
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_2);
switch(choosed_menu){
case 'payment2':
case 'payment3':
box_name.innerHTML="# 누적 결제 금액";
break;
case 'payment6':
case 'payment7':
case 'payment8':
case 'payment9':
box_name.innerHTML="# 결제 금액 기준";
break;
}
});
function get_date_keyword(){
keyword3.style="text-decoration:line-through";
choosed_menu="keyword3";
keywordspace.style="display:none";
chartspace.style="display:none";
keyword1space.style="display:none";
keyword2space.style="display:none";
keyword3space.style="display:none";
between_submit.disabled=true;
keyword4space.style="display:none";
paymentspace.style="display:none";
myList3.clear();
keyword_between_list.length=0;
keyword_between_count.length=0;
date_start=document.getElementById('between_date_start').value+' 00:00:00';
date_end=document.getElementById('between_date_end').value+' 23:59:59';
let option_between = {
mode: 'text',
pythonPath: 'py',
pythonOptions: ['-3.6'],
scriptPath: '',
args: [date_start, date_end],
encoding: 'utf8'
};
PythonShell.run('src/analysis_message_rank_between.py', option_between, function(err, result){
for(var i=0;i<result.length;i++){
let data = result[i].replace(`b\'`, '').replace(`\'`, '');
let buff = Buffer.from(data,'base64');
let text=buff.toString('utf-8');
var data_temp=text.split('|');
keyword_between_list.push(data_temp[0]);
keyword_between_count.push(data_temp[1]);
}
menu_name.innerHTML="특정 기간의 문자 키워드";
options_chart_1.options.title.text="특정 기간의 문자 키워드";
options_chart_1.data.labels=keyword_between_list;
options_chart_1.data.datasets[0].label="언급 횟수";
options_chart_1.data.datasets[0].data=keyword_between_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
chartspace.style="display:inline";
//cc.innerHTML="[done] recent Keyword";
keyword3.style="text-decoration:none";
between_submit.disabled=false;
});
//connection.end();
}
function get_number_push(){
number.push(document.getElementById('number').value);
keyword4_list.innerHTML=number;
}
function get_number_pop(){
number.splice(number.indexOf(document.getElementById('number').value),1);
keyword4_list.innerHTML=number;
}
function get_number_keyword(){
keyword4.style="text-decoration:line-through";
choosed_menu="keyword4";
keywordspace.style="display:none";
chartspace.style="display:none";
keyword1space.style="display:none";
keyword2space.style="display:none";
keyword3space.style="display:none";
keyword4space.style="display:none";
with_submit.disabled=true;
paymentspace.style="display:none";
myList4.clear();
keyword_with_list.length=0;
keyword_with_count.length=0;
let option_between = {
mode: 'text',
pythonPath: 'py',
pythonOptions: ['-3.6'],
scriptPath: '',
args: [number],
encoding: 'utf8'
};
PythonShell.run('src/analysis_message_rank_with.py', option_between, function(err, result){
for(var i=0;i<result.length;i++){
let data = result[i].replace(`b\'`, '').replace(`\'`, '');
let buff = Buffer.from(data,'base64');
let text=buff.toString('utf-8');
var data_temp=text.split('|');
keyword_with_list.push(data_temp[0]);
keyword_with_count.push(data_temp[1]);
}
menu_name.innerHTML="특정 연락처와의 문자 키워드";
options_chart_1.options.title.text="특정 연락처와의 문자 키워드";
options_chart_1.data.labels=keyword_with_list;
options_chart_1.data.datasets[0].label="언급 횟수";
options_chart_1.data.datasets[0].data=keyword_with_count;
window.myChart.destroy();
window.myChart = new Chart(ctx, options_chart_1);
chartspace.style="display:inline";
//cc.innerHTML="[done] recent Keyword";
keyword4.style="text-decoration:none";
with_submit.disabled=false;
});
//connection.end();
}
function get_amount_date_payment(){
chartspaceview();
type1.innerHTML="# 결제 금액";
type2.innerHTML="# 누적 결제 금액";
choicespace.style="display:inline";
box_name.innerHTML="# 결제 금액";
choosed_menu="payment3";
date_start=document.getElementById('between_amount_date_start').value+' 00:00:00';
date_end=document.getElementById('between_amount_date_end').value+' 23:59:59';
console.log(date_start, date_end);
payment_3_list.length=0;
payment_3_count.length=0;
payment_4_list.length=0;
payment_4_count.length=0;
connection.query("SELECT date_format(date, '%Y-%m-02 00:00:00') 'date', sum(price) 'sum' FROM sms_bank where date between ? and ? group by date_format(date, '%Y-%m-02 00:00:00') order by date_format(date, '%Y-%m-02 00:00:00');",[date_start, date_end], function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var date=rows[i].date.slice(0,7);
var sum=rows[i].sum;
payment_3_list.push(date);
payment_3_count.push(sum);
}
}
else
cc.innerHTML='Error-query-#payment_3-1'+err;
})
connection.query("SELECT s1.date 'date', sum(s2.sum) 'sum' FROM (SELECT date_format(date, '%Y-%m-02 00:00:00') 'date', sum(price) 'sum' FROM sms_bank where date between ? and ? group by date_format(date, '%Y-%m-02 00:00:00') order by date_format(date, '%Y-%m-02 00:00:00')) s1, (SELECT date_format(date, '%Y-%m-02 00:00:00') 'date', sum(price) 'sum' FROM sms_bank where date between ? and ? group by date_format(date, '%Y-%m-02 00:00:00') order by date_format(date, '%Y-%m-02 00:00:00')) s2 where s1.date>=s2.date group by s1.date order by s1.date;",[date_start, date_end, date_start, date_end], function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var date=rows[i].date.slice(0,7);
var sum=rows[i].sum;
payment_4_list.push(date);
payment_4_count.push(sum);
}
}
else
cc.innerHTML='Error-query-#payment_3-2'+err;
})
menu_name.innerHTML="특정 기간의 결제 금액 통계";
options_chart_1.options.title.text="특정 기간의 결제 금액 통계";
options_chart_1.data.labels=payment_3_list;
options_chart_1.data.datasets[0].label="결제 금액";
options_chart_1.data.datasets[0].data=payment_3_count;
options_charts_2.title.text="특정 기간의 누적 결제 금액 통계";
options_chart_2.data.labels=payment_4_list;
options_chart_2.data.datasets[0].label="누적 결제 금액";
options_chart_2.data.datasets[0].data=payment_4_count;
window.myChart.destroy();
}
function get_payment_date_payment(){
chartspaceview();
date_start=document.getElementById('between_payment_date_start').value+' 00:00:00';
date_end=document.getElementById('between_payment_date_end').value+' 23:59:59';
payment_6_list.length=0;
payment_6_count.length=0;
connection.query("drop table if exists sms_bank_hour; create table sms_bank_hour(hour int not null, smscount int, primary key(hour)); set @hour:=-1; insert into sms_bank_hour(hour, smscount) (select (@hour:=@hour+1) 'hour', (select count(*) 'smscount' from sms_bank where date between ? and ? and hour(date)=@hour) 'count' from sms where @hour<23);",[date_start, date_end], function(err, rows, fields){
if(!err){
connection.query("select * from sms_bank_hour order by hour;",function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var hour=rows[i].hour;
var count=rows[i].smscount;
payment_6_list.push(hour);
payment_6_count.push(count);
}
}
else
cc.innerHTML='Error-quert-#payment_5-1';
});
}
else
cc.innerHTML='Error-query-#payment_5';
})
menu_name.innerHTML="특정 기간의 결제 시간대";
options_chart_1.options.title.text="특정 기간의 결제 시간대";
options_chart_1.data.labels=payment_6_list;
options_chart_1.data.datasets[0].label="결제 횟수";
options_chart_1.data.datasets[0].data=payment_6_count;
window.myChart.destroy();
}
function get_card_date_payment(){
chartspaceview();
type1.innerHTML="# 결제 횟수 기준";
type2.innerHTML="# 결제 금액 기준";
choicespace.style="display:inline";
box_name.innerHTML="# 결제 횟수 기준";
choosed_menu="payment7";
date_start=document.getElementById('between_card_date_start').value+' 00:00:00';
date_end=document.getElementById('between_card_date_end').value+' 23:59:59';
payment_9_list.length=0;
payment_9_count.length=0;
payment_10_list.length=0;
payment_10_count.length=0;
connection.query("select bname, count(*) 'count' from sms_bank where date between ? and ? group by bname order by count(*) desc;",[date_start, date_end], function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var bname=rows[i].bname;
var count=rows[i].count;
payment_9_list.push(bname);
payment_9_count.push(count);
}
}
else
cc.innerHTML='Error-query-#payment_7-1';
})
connection.query("select bname, sum(price) 'sum' from sms_bank where date between ? and ? group by bname order by sum(price) desc;",[date_start, date_end], function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var bname=rows[i].bname;
var sum=rows[i].sum;
payment_10_list.push(bname);
payment_10_count.push(sum);
}
}
else
cc.innerHTML='Error-query-#payment_7-2';
})
menu_name.innerHTML="특정 기간의 카드 이용 순위";
options_chart_1.options.title.text="특정 기간의 카드 이용 순위";
options_chart_1.data.labels=payment_9_list;
options_chart_1.data.datasets[0].label="결제 횟수";
options_chart_1.data.datasets[0].data=payment_9_count;
options_charts_2.title.text="특정 기간의 카드 이용 순위";
options_chart_2.data.labels=payment_10_list;
options_chart_2.data.datasets[0].label="결제 금액";
options_chart_2.data.datasets[0].data=payment_10_count;
window.myChart.destroy();
}
function get_store_date_payment(){
chartspaceview();
type1.innerHTML="# 결제 횟수 기준";
type2.innerHTML="# 결제 금액 기준";
choicespace.style="display:inline";
box_name.innerHTML="# 결제 횟수 기준";
choosed_menu="payment9";
date_start=document.getElementById('between_store_date_start').value+' 00:00:00';
date_end=document.getElementById('between_store_date_end').value+' 23:59:59';
payment_13_list.length=0;
payment_13_count.length=0;
payment_14_list.length=0;
payment_14_count.length=0;
connection.query("select sname, count(*) 'count' from sms_bank where date between ? and ? group by sname order by count(*) desc;",[date_start, date_end], function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var sname=rows[i].sname;
var count=rows[i].count;
payment_13_list.push(sname);
payment_13_count.push(count);
}
}
else
cc.innerHTML='Error-query-#payment_9-1';
})
connection.query("select sname, sum(price) 'sum' from sms_bank where date between ? and ? group by sname order by sum(price) desc;",[date_start, date_end], function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var sname=rows[i].sname;
var sum=rows[i].sum;
payment_14_list.push(sname);
payment_14_count.push(sum);
}
}
else
cc.innerHTML='Error-query-#payment_9-2';
})
menu_name.innerHTML="특정 기간의 사용처 순위";
options_chart_1.options.title.text="특정 기간의 사용처 순위";
options_chart_1.data.labels=payment_13_list;
options_chart_1.data.datasets[0].label="결제 횟수";
options_chart_1.data.datasets[0].data=payment_13_count;
options_charts_2.title.text="특정 기간의 사용처 순위";
options_chart_2.data.labels=payment_14_list;
options_chart_2.data.datasets[0].label="결제 금액";
options_chart_2.data.datasets[0].data=payment_14_count;
window.myChart.destroy();
}
/*
connection.query('', function(err, rows, fields){
if(!err){
for(var i=0;i<rows.length;i++){
var date=rows[i].date.toISOString().slice(0,7);
var sum=rows[i].sum;
payment_2_list.push(date)
payment_2_count.push(sum)
}
}
else
cc.innerHTML='Error-query-#payment_1';
});
*/
canvas.onclick=function(event){
var activePoints = myChart.getElementsAtEvent(event);
var chartData = activePoints[0]['_chart'].config.data;
var idx=activePoints[0]['_index'];
var label=chartData.labels[idx];
var value=chartData.datasets[0].data[idx];
console.log(chartData);
if(choosed_menu=="keyword1"){
chartspace.style="display:none";
keyword1space.style="display:inline";
keyword2space.style="display:none";
myList1.clear();
values_list_1.length=0;
for(var i=0;i<values_list.length;i++){
var keyword_str=values_list[i].keyword;
if(!keyword_str)
continue;
else{
if(keyword_str.includes(label)){
var data_temp=[];
data_temp.push(values_list[i].type_cs);
data_temp.push(values_list[i].number);
data_temp.push(values_list[i].date);
data_temp.push(values_list[i].body);
data_temp.push(values_list[i].keyword);
values_list_1.push({type_cs:data_temp[0], number:data_temp[1], date:data_temp[2], body:data_temp[3], keyword:data_temp[4]});
}
}
}
menu_name.innerHTML="최근 1개월 키워드 순위 / "+label;
myList1 = new List("keyword1space", options_list, values_list_1);
}
else if(choosed_menu=="keyword2"){
chartspace.style="display:none";
keyword1space.style="display:none";
keyword2space.style="display:inline";
myList2.clear();
values_list_all.length=0;
for(var i=0;i<values_list.length;i++){
var keyword_str=values_list[i].keyword;
if(!keyword_str)
continue;
else{
if(keyword_str.includes(label)){
var data_temp=[];
data_temp.push(values_list[i].type_cs);
data_temp.push(values_list[i].number);
data_temp.push(values_list[i].date);
data_temp.push(values_list[i].body);
data_temp.push(values_list[i].keyword);
values_list_all.push({type_cs:data_temp[0], number:data_temp[1], date:data_temp[2], body:data_temp[3], keyword:data_temp[4]});
}
}
}
menu_name.innerHTML="전체 기간의 키워드 순위 / "+label;
myList2 = new List("keyword2space", options_list, values_list_all);
}
else if(choosed_menu=="keyword3"){
chartspace.style="display:none";
keyword1space.style="display:none";
keyword2space.style="display:none";
keyword3space.style="display:inline";
keyword4space.style="display:none";
myList3.clear();
values_list_between.length=0;
for(var i=0;i<values_list.length;i++){
var keyword_str=values_list[i].keyword;
if(!keyword_str||values_list[i].date>date_end||values_list[i].date<date_start)
continue;
else{
if(keyword_str.includes(label)){
var data_temp=[];
data_temp.push(values_list[i].type_cs);
data_temp.push(values_list[i].number);
data_temp.push(values_list[i].date);
data_temp.push(values_list[i].body);
data_temp.push(values_list[i].keyword);
values_list_between.push({type_cs:data_temp[0], number:data_temp[1], date:data_temp[2], body:data_temp[3], keyword:data_temp[4]});
}
}
}
menu_name.innerHTML="특정 기간의 키워드 순위 / "+label;
myList3 = new List("keyword3space", options_list, values_list_between);
}
else if(choosed_menu=="keyword4"){
chartspace.style="display:none";
keyword1space.style="display:none";
keyword2space.style="display:none";
keyword3space.style="display:none";
keyword4space.style="display:inline";
myList4.clear();
values_list_with.length=0;
for(var i=0;i<values_list.length;i++){
var keyword_str=values_list[i].keyword;
if(!values_list[i].number)
continue;
if(!keyword_str||!number.includes(values_list[i].number.split(" ")[0]))
continue;
else{
if(keyword_str.includes(label)){
var data_temp=[];
data_temp.push(values_list[i].type_cs);
data_temp.push(values_list[i].number);
data_temp.push(values_list[i].date);
data_temp.push(values_list[i].body);
data_temp.push(values_list[i].keyword);
values_list_with.push({type_cs:data_temp[0], number:data_temp[1], date:data_temp[2], body:data_temp[3], keyword:data_temp[4]});
}
}
}
menu_name.innerHTML="특정 연락처와의 키워드 순위 / "+label;
myList4 = new List("keyword4space", options_list, values_list_with);
}
};
var filter0List=[];
var filter1List=[];
var filter2List=[];
var filter3List=[];
var filter4List=[];
var filter5List=[];
var filter0_element=document.getElementsByClassName("filter0");
var filter1_element=document.getElementsByClassName("filter1");
var filter2_element=document.getElementsByClassName("filter2");
var filter3_element=document.getElementsByClassName("filter3");
var filter4_element=document.getElementsByClassName("filter4");
var filter5_element=document.getElementsByClassName("filter5");
function filter_listener(event){
var data_value_temp=event.target.getAttribute('data_value');
var data_filter_temp="type_cs";
var checked_temp=event.target.checked;
switch(event.target.id){
case "filter0":
filter_action(filter0List, checked_temp, data_filter_temp, data_value_temp, myList);
break;
case "filter1":
filter_action(filter1List, checked_temp, data_filter_temp, data_value_temp, myList1);
break;
case "filter2":
filter_action(filter2List, checked_temp, data_filter_temp, data_value_temp, myList2);
break;
case "filter3":
filter_action(filter3List, checked_temp, data_filter_temp, data_value_temp, myList3);
break;
case "filter4":
filter_action(filter4List, checked_temp, data_filter_temp, data_value_temp, myList4);
break;
case "filter5":
data_filter_temp=event.target.getAttribute('data_filter');
filter_action(filter5List, checked_temp, data_filter_temp, data_value_temp, myList5);
break;
}
}
function filter_action(paramlist, checked_temp, filter_temp, value_temp, myList_temp){
var _filter_temp=filter_temp;
if (checked_temp){
paramlist.push(value_temp);
myList_temp.filter(function (item) {
var check_all=true;
for(var i=0;i<paramlist.length;i++){
if(item.values()[_filter_temp] !== paramlist[i])
check_all=false;
}
if(check_all)
return true;
else
return false;
});
}
else{
paramlist.splice(paramlist.indexOf(value_temp),1);
myList_temp.filter(function (item) {
var check_all=true;
for(var i=0;i<paramlist.length;i++){
if(item.values()[_filter_temp] !== paramlist[i])
check_all=false;
}
if(check_all)
return true;
else
return false;
});
}
};
for (var i = 0; i < filter0_element.length; i++) {
filter0_element[i].addEventListener('click', filter_listener, false);
}
for (var i = 0; i < filter1_element.length; i++) {
filter1_element[i].addEventListener('click', filter_listener, false);
}
for (var i = 0; i < filter2_element.length; i++) {
filter2_element[i].addEventListener('click', filter_listener, false);
}
for (var i = 0; i < filter3_element.length; i++) {
filter3_element[i].addEventListener('click', filter_listener, false);
}
for (var i = 0; i < filter4_element.length; i++) {
filter4_element[i].addEventListener('click', filter_listener, false);
}
for (var i = 0; i < filter5_element.length; i++) {
filter5_element[i].addEventListener('click', filter_listener, false);
}
\ No newline at end of file