김예미

add sms keyword analysis part(menu2)

This diff could not be displayed because it is too large.
...@@ -2466,6 +2466,11 @@ ...@@ -2466,6 +2466,11 @@
2466 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2466 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
2467 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 2467 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
2468 }, 2468 },
2469 + "python-shell": {
2470 + "version": "2.0.1",
2471 + "resolved": "https://registry.npmjs.org/python-shell/-/python-shell-2.0.1.tgz",
2472 + "integrity": "sha512-Ys+SiCinY9JrldIJxGWd2AMQSQZLU7PFzrCWY7HTawZ73tIthFdlLLU1Y6Y40Hwdutc+TmfMe5TXNU73s07Xyg=="
2473 + },
2469 "qs": { 2474 "qs": {
2470 "version": "6.5.2", 2475 "version": "6.5.2",
2471 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 2476 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
......
1 +import base64
2 +import sys
3 +import pymysql
4 +
5 +from konlpy.tag import Kkma
6 +
7 +conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
8 +
9 +def select():
10 + curs=conn.cursor()
11 + #sql="select * from calllog"
12 + #sql="select * from contact"
13 + sql="select * from sms"
14 + curs.execute(sql)
15 +
16 + rows=curs.fetchall()
17 + print(rows[0])
18 + #for row in rows:
19 + #analysis_keyword(row[0])
20 +
21 +def analysis_keyword(text):
22 + kkma = Kkma()
23 + result = kkma.nouns(text)
24 + result = str(result)
25 + print(base64.b64encode(result.encode('utf-8')))
26 +
27 +select()
28 +
29 +conn.close()
...\ No newline at end of file ...\ No newline at end of file
1 +import base64
2 +import sys
3 +import pymysql
4 +
5 +from konlpy.tag import Twitter
6 +
7 +conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
8 +
9 +def select():
10 + curs=conn.cursor()
11 + sql="select sms.type, sms.address, sms.date, sms.body, contact.name from sms left join contact on sms.address=contact.number;"
12 + curs.execute(sql)
13 +
14 + rows=curs.fetchall()
15 + for row in rows:
16 + return_data=" "
17 + if row[0]==1:
18 + return_data+="get|"
19 + else:
20 + return_data+="send|"
21 + if row[4] is None:
22 + return_data+=row[1]+" ( - )|"
23 + else:
24 + return_data+=row[1]+" ("+row[4]+")|"
25 + return_data+=row[2].strftime("%Y-%m-%d %H:%M:%S")+"|"
26 + return_data+=row[3]+"|"
27 + analysis_keyword(return_data, row[3])
28 +
29 +def analysis_keyword(return_data, text):
30 + twitter = Twitter()
31 + result = twitter.nouns(text)
32 + result=" ".join(str(x) for x in result)
33 + result=return_data+result
34 + print(base64.b64encode(result.encode('utf-8')))
35 +
36 +select()
37 +
38 +conn.close()
39 +
1 +import base64
2 +import sys
3 +import pymysql
4 +
5 +conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
6 +
7 +def select():
8 + curs=conn.cursor()
9 + sql="drop table if exists sms_bank;"
10 + curs.execute(sql)
11 + sql="create table sms_bank(date datetime not null, bname text, price int, paymentplan text, sname text, primary key (date));"
12 + curs.execute(sql)
13 + sql="select body,date from sms where address in (15881600,16445330,15888900,15881688);"
14 + curs.execute(sql)
15 +
16 + rows=curs.fetchall()
17 + for row in rows:
18 + body=row[0].replace("<재난지원금 사용>\n","").replace("누적",":")
19 + body=" ".join(body.split("\n"))
20 + body_split=body.split(' ')
21 + _bname=body_split[1][:-2]
22 + _price=body_split[3][:-1].replace(",","")
23 + _paymentplan=body_split[4]
24 + _date=row[1].strftime("%Y-%m-%d %H:%M:%S")
25 + _sname=' '.join(body_split[7:])
26 + _sname=_sname.split(":")[0]
27 + curs2=conn.cursor()
28 + sql2="insert into sms_bank(bname, price, paymentplan, date, sname) values (%s, %s, %s, %s, %s);"
29 + curs2.execute(sql2, (_bname, _price, _paymentplan, _date, _sname))
30 + conn.commit()
31 + #print(base64.b64encode("Conplete".encode('utf-8')))
32 +
33 +select()
34 +
35 +conn.close()
36 +
1 +import base64
2 +import sys
3 +import pymysql
4 +
5 +from konlpy.tag import Twitter
6 +from collections import Counter
7 +
8 +conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
9 +
10 +def select():
11 + curs=conn.cursor()
12 + sql="select sms.type, sms.address, sms.date, sms.body, contact.name from sms left join contact on sms.address=contact.number;"
13 + curs.execute(sql)
14 +
15 + rows=curs.fetchall()
16 + data=""
17 + for row in rows:
18 + data+=row[3]
19 +
20 + analysis_keyword(data)
21 +
22 +def analysis_keyword(text):
23 + twitter = Twitter()
24 + result = twitter.nouns(text)
25 + count=Counter(result)
26 + tag_count=[]
27 +
28 + for n, c in count.most_common(20):
29 + dics={'tag':n, 'count':c}
30 + tag_count.append(dics)
31 + for tag in tag_count:
32 + return_data=tag['tag']+"|"+str(tag['count'])
33 + print(base64.b64encode(return_data.encode('utf-8')))
34 +
35 +select()
36 +
37 +conn.close()
38 +
1 +import base64
2 +import sys
3 +import pymysql
4 +
5 +from konlpy.tag import Twitter
6 +from collections import Counter
7 +
8 +conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
9 +
10 +def select():
11 + curs=conn.cursor()
12 + 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]+"';"
13 + curs.execute(sql)
14 +
15 + rows=curs.fetchall()
16 + data=""
17 + for row in rows:
18 + data+=row[3]
19 +
20 + analysis_keyword(data)
21 +
22 +def analysis_keyword(text):
23 + twitter = Twitter()
24 + result = twitter.nouns(text)
25 + count=Counter(result)
26 + tag_count=[]
27 +
28 + for n, c in count.most_common(20):
29 + dics={'tag':n, 'count':c}
30 + tag_count.append(dics)
31 + for tag in tag_count:
32 + return_data=tag['tag']+"|"+str(tag['count'])
33 + print(base64.b64encode(return_data.encode('utf-8')))
34 +
35 +select()
36 +
37 +conn.close()
38 +
1 +import base64
2 +import sys
3 +import pymysql
4 +
5 +from konlpy.tag import Twitter
6 +from collections import Counter
7 +
8 +conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
9 +
10 +def select():
11 + curs=conn.cursor()
12 + 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;"
13 + curs.execute(sql)
14 +
15 + rows=curs.fetchall()
16 + data=""
17 + for row in rows:
18 + data+=row[3]
19 +
20 + analysis_keyword(data)
21 +
22 +def analysis_keyword(text):
23 + twitter = Twitter()
24 + result = twitter.nouns(text)
25 + count=Counter(result)
26 + tag_count=[]
27 +
28 + for n, c in count.most_common(20):
29 + dics={'tag':n, 'count':c}
30 + tag_count.append(dics)
31 + for tag in tag_count:
32 + return_data=tag['tag']+"|"+str(tag['count'])
33 + print(base64.b64encode(return_data.encode('utf-8')))
34 +
35 +select()
36 +
37 +conn.close()
...\ No newline at end of file ...\ No newline at end of file
1 +import base64
2 +import sys
3 +import pymysql
4 +
5 +from konlpy.tag import Twitter
6 +from collections import Counter
7 +
8 +conn=pymysql.connect(host='localhost',user='root',password='1234', db='dataextraction', charset='utf8')
9 +
10 +def select():
11 + curs=conn.cursor()
12 + 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]+");"
13 + curs.execute(sql)
14 +
15 + rows=curs.fetchall()
16 + data=""
17 + for row in rows:
18 + data+=row[3]
19 +
20 + analysis_keyword(data)
21 +
22 +def analysis_keyword(text):
23 + twitter = Twitter()
24 + result = twitter.nouns(text)
25 + count=Counter(result)
26 + tag_count=[]
27 +
28 + for n, c in count.most_common(20):
29 + dics={'tag':n, 'count':c}
30 + tag_count.append(dics)
31 + for tag in tag_count:
32 + return_data=tag['tag']+"|"+str(tag['count'])
33 + print(base64.b64encode(return_data.encode('utf-8')))
34 +
35 +select()
36 +
37 +conn.close()
38 +
1 +<!DOCTYPE html>
2 +<html lang="en">
3 +
4 +<head>
5 +
6 + <meta charset="utf-8">
7 + <meta http-equiv="X-UA-Compatible" content="IE=edge">
8 + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
9 + <meta name="description" content="">
10 + <meta name="author" content="">
11 +
12 + <title>Menu2</title>
13 +
14 + <link rel="stylesheet" href="../assets/css/menu2.css">
15 + <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script>
16 + <script src="https://cdnjs.cloudflare.com/ajax/libs/list.js/1.5.0/list.min.js"></script>
17 +
18 +</head>
19 +
20 +<body id="page-top">
21 + <div class="title">
22 + <h1 id="cc" onclick="location.href='menu.html'">SMS Analysis</h1>
23 + </div>
24 +
25 + <!-- Page Wrapper -->
26 + <div id="wrapper">
27 +
28 + <!-- Sidebar -->
29 + <ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
30 +
31 + <!-- Heading -->
32 + <div class="sidebar-heading">
33 + 키워드 분석
34 + </div>
35 +
36 + <!-- Nav Item - Dashboard -->
37 + <li class="nav-item active">
38 + <a class="nav-link" id="keyword" style="text-decoration:line-through">
39 + <i class="fas fa-fw"></i>
40 + <span>전체 문자 키워드 목록</span></a>
41 + </li>
42 +
43 + <!-- Nav Item - Dashboard -->
44 + <li class="nav-item active">
45 + <a class="nav-link" id="keyword1" style="text-decoration:line-through">
46 + <i class="fas fa-fw"></i>
47 + <span>최근 키워드 순위</span></a>
48 + </li>
49 +
50 + <!-- Nav Item - Dashboard -->
51 + <li class="nav-item active">
52 + <a class="nav-link" id="keyword2" style="text-decoration:line-through">
53 + <i class="fas fa-fw"></i>
54 + <span>전체 키워드 순위</span></a>
55 + </li>
56 +
57 + <!-- Nav Item - Dashboard -->
58 + <li class="nav-item active">
59 + <a class="nav-link" id="keyword3" style="text-decoration:line-through">
60 + <i class="fas fa-fw"></i>
61 + <span>특정 기간 키워드</span></a>
62 + </li>
63 +
64 + <form name="dateForm" method="post" id="dateForm">
65 + <input type="date" id="between_date_start" />
66 + ~
67 + <input type="date" id="between_date_end" />
68 + <input type="button" id="between_date_submit" value="》" onclick="get_date_keyword();" />
69 + </form>
70 +
71 + <!-- Nav Item - Dashboard -->
72 + <li class="nav-item active">
73 + <a class="nav-link" id="keyword4" style="text-decoration:line-through">
74 + <i class="fas fa-fw"></i>
75 + <span>특정 연락처 키워드</span></a>
76 + </li>
77 +
78 + <form name="numberForm" method="post" id="numberForm">
79 + <input type="text" id="number" />
80 + <input type="button" id="number_push" value="+" onclick="get_number_push();" />
81 + <input type="button" id="number_pop" value="-" onclick="get_number_pop();" />
82 + <input type="button" id="number_submit" value="》" onclick="get_number_keyword();" />
83 + </form>
84 + <li class="nav-item active" id="keyword4_list"></li>
85 +
86 + <!-- Divider -->
87 + <hr class="sidebar-divider">
88 +
89 + <!-- Heading -->
90 + <div class="sidebar-heading">
91 + 결제문자 분석
92 + </div>
93 +
94 + <!-- Nav Item - Dashboard -->
95 + <li class="nav-item active">
96 + <a class="nav-link" id="payment1">
97 + <i class="fas fa-fw"></i>
98 + <span>결제문자 목록</span></a>
99 + </li>
100 +
101 + <!-- Nav Item - Dashboard -->
102 + <li class="nav-item active">
103 + <a class="nav-link" id="payment2">
104 + <i class="fas fa-fw"></i>
105 + <span>전체 사용 금액 통계</span></a>
106 + </li>
107 +
108 + <!-- Nav Item - Dashboard -->
109 + <li class="nav-item active">
110 + <a class="nav-link" id="payment3">
111 + <i class="fas fa-fw"></i>
112 + <span>특정 기간 사용 금액 통계</span></a>
113 + </li>
114 +
115 + <form name="dateForm" method="post" id="dateForm">
116 + <input type="date" id="between_amount_date_start" />
117 + ~
118 + <input type="date" id="between_amount_date_end" />
119 + <input type="button" id="between_amount_date_submit" value="》" onclick="get_amount_date_payment();" />
120 + </form>
121 +
122 + <!-- Nav Item - Dashboard -->
123 + <li class="nav-item active">
124 + <a class="nav-link" id="payment4">
125 + <i class="fas fa-fw"></i>
126 + <span>결제 시간대</span></a>
127 + </li>
128 +
129 + <!-- Nav Item - Dashboard -->
130 + <li class="nav-item active">
131 + <a class="nav-link" id="payment5">
132 + <i class="fas fa-fw"></i>
133 + <span>특정 기간 결제 시간대</span></a>
134 + </li>
135 +
136 + <form name="dateForm" method="post" id="dateForm">
137 + <input type="date" id="between_payment_date_start" />
138 + ~
139 + <input type="date" id="between_payment_date_end" />
140 + <input type="button" id="between_payment_date_submit" value="》" onclick="get_payment_date_payment();" />
141 + </form>
142 +
143 + <!-- Nav Item - Dashboard -->
144 + <li class="nav-item active">
145 + <a class="nav-link" id="payment6">
146 + <i class="fas fa-fw"></i>
147 + <span>카드 이용 순위</span></a>
148 + </li>
149 +
150 + <!-- Nav Item - Dashboard -->
151 + <li class="nav-item active">
152 + <a class="nav-link" id="payment7">
153 + <i class="fas fa-fw"></i>
154 + <span>특정 기간 카드 이용 순위</span></a>
155 + </li>
156 +
157 + <form name="dateForm" method="post" id="dateForm">
158 + <input type="date" id="between_card_date_start" />
159 + ~
160 + <input type="date" id="between_card_date_end" />
161 + <input type="button" id="between_card_date_submit" value="》" onclick="get_card_date_payment();" />
162 + </form>
163 +
164 + <!-- Nav Item - Dashboard -->
165 + <li class="nav-item active">
166 + <a class="nav-link" id="payment8">
167 + <i class="fas fa-fw"></i>
168 + <span>사용처 순위</span></a>
169 + </li>
170 +
171 + <!-- Nav Item - Dashboard -->
172 + <li class="nav-item active">
173 + <a class="nav-link" id="payment9">
174 + <i class="fas fa-fw"></i>
175 + <span>특정 기간 사용처 순위</span></a>
176 + </li>
177 + <form name="dateForm" method="post" id="dateForm">
178 + <input type="date" id="between_store_date_start" />
179 + ~
180 + <input type="date" id="between_store_date_end" />
181 + <input type="button" id="between_store_date_submit" value="》" onclick="get_store_date_payment();" />
182 + </form>
183 + </ul>
184 + <!-- End of Sidebar -->
185 +
186 + <!-- Content Wrapper -->
187 + <div id="content-wrapper" class="d-flex flex-column">
188 +
189 + <!-- Main Content -->
190 + <div id="content">
191 +
192 + <!-- Begin Page Content -->
193 + <div class="container-fluid">
194 +
195 + <!-- Page Heading -->
196 + <div class="d-sm-flex align-items-center justify-content-between mb-4">
197 + <h1 class="h3 mb-0 text-gray-800" id="menu_name"></h1>
198 + </div>
199 +
200 + <div class="row">
201 + <div id="choice" style="display:none;">
202 + <ul id="choiceul">
203 + <li class="cr" id="type1"></li>
204 + <li class="cr" id="type2"></li>
205 + </ul>
206 + </div>
207 + </div>
208 + <!-- Content Row -->
209 +
210 + <div class="row">
211 +
212 + <!-- Area Chart -->
213 + <div class="col-xl-8 col-lg-7" id="chart" style="display:none;">
214 + <div class="card shadow mb-4">
215 + <!-- Card Header - Dropdown -->
216 + <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
217 + <h6 class="m-0 font-weight-bold text-primary" id="box_name"></h6>
218 + <div class="dropdown no-arrow">
219 + <a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
220 + <i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
221 + </a>
222 + <div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink">
223 + <div class="dropdown-header">Dropdown Header:</div>
224 + <a class="dropdown-item" href="#">Action</a>
225 + <a class="dropdown-item" href="#">Another action</a>
226 + <div class="dropdown-divider"></div>
227 + <a class="dropdown-item" href="#">Something else here</a>
228 + </div>
229 + </div>
230 + </div>
231 + <!-- Card Body -->
232 + <div class="card-body">
233 + <div class="chart-area">
234 + <canvas id="myChart" width="710" height="350" style="margin-left:4px; margin-top:4px;"></canvas>
235 + </div>
236 + </div>
237 + </div>
238 + </div>
239 + </div>
240 +
241 + <div class="row">
242 + <div id="keywordspace" style="display:none;">
243 + <div id="myList">
244 + <form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
245 + <div class="input-group">
246 + <input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
247 + </div>
248 + </form>
249 + <div id="myList_in">
250 + <li class="sort" data-sort="date"># 시간순</li>
251 + <li class="filterlabel"># 수신
252 + <input type="checkbox" class="filter0" id="filter0" data_value=" get" />
253 + </li>
254 + <li class="filterlabel"># 발신
255 + <input type="checkbox" class="filter0" id="filter0" data_value=" send" />
256 + </li>
257 + </div>
258 + </div>
259 + <ol class="list"></ol>
260 + </div>
261 +
262 + <div id="keyword1space" style="display:none;">
263 + <div id="myList">
264 + <form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
265 + <div class="input-group">
266 + <input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
267 + </div>
268 + </form>
269 + <div id="myList_in">
270 + <li class="sort" data-sort="date"># 시간순</li>
271 + <li class="filterlabel"># 수신
272 + <input type="checkbox" class="filter1" id="filter1" data_value=" get" />
273 + </li>
274 + <li class="filterlabel"># 발신
275 + <input type="checkbox" class="filter1" id="filter1" data_value=" send" />
276 + </li>
277 + </div>
278 + </div>
279 + <ol class="list"></ol>
280 + </div>
281 +
282 + <div id="keyword2space" style="display:none;">
283 + <div id="myList">
284 + <form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
285 + <div class="input-group">
286 + <input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
287 + </div>
288 + </form>
289 + <div id="myList_in">
290 + <li class="sort" data-sort="date"># 시간순</li>
291 + <li class="filterlabel"># 수신
292 + <input type="checkbox" class="filter2" id="filter2" data_value=" get" />
293 + </li>
294 + <li class="filterlabel"># 발신
295 + <input type="checkbox" class="filter2" id="filter2" data_value=" send" />
296 + </li>
297 + </div>
298 + </div>
299 + <ol class="list"></ol>
300 + </div>
301 +
302 + <div id="keyword3space" style="display:none;">
303 + <div id="myList">
304 + <form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
305 + <div class="input-group">
306 + <input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
307 + </div>
308 + </form>
309 + <div id="myList_in">
310 + <li class="sort" data-sort="date"># 시간순</li>
311 + <li class="filterlabel"># 수신
312 + <input type="checkbox" class="filter3" id="filter3" data_value=" get" />
313 + </li>
314 + <li class="filterlabel"># 발신
315 + <input type="checkbox" class="filter3" id="filter3" data_value=" send" />
316 + </li>
317 + </div>
318 + </div>
319 + <ol class="list"></ol>
320 + </div>
321 +
322 + <div id="keyword4space" style="display:none;">
323 + <div id="myList">
324 + <form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
325 + <div class="input-group">
326 + <input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
327 + </div>
328 + </form>
329 + <div id="myList_in">
330 + <li class="sort" data-sort="date"># 시간순</li>
331 + <li class="filterlabel"># 수신
332 + <input type="checkbox" class="filter4" id="filter4" data_value=" get" />
333 + </li>
334 + <li class="filterlabel"># 발신
335 + <input type="checkbox" class="filter4" id="filter4" data_value=" send" />
336 + </li>
337 + </div>
338 + </div>
339 + <ol class="list"></ol>
340 + </div>
341 +
342 + <div id="paymentspace" style="display:none;">
343 + <div id="myList">
344 + <form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
345 + <div class="input-group">
346 + <input type="text" class="search form-control bg-light border-0 small" placeholder="Search">
347 + </div>
348 + </form>
349 + <div id="myList_in">
350 + <li class="sort" data-sort="date"># 시간순</li>
351 + <li class="filterlabel"># 체크
352 + <input type="checkbox" class="filter5" id="filter5" data_filter="payment_" data_value="체크" />
353 + </li>
354 + <li class="filterlabel"># 일시불
355 + <input type="checkbox" class="filter5" id="filter5" data_filter="payment_" data_value="일시불" />
356 + </li>
357 + <li class="filterlabel"># 할부
358 + <input type="checkbox" class="filter5" id="filter5" data_filter="payment_" data_value="할부" />
359 + </li>
360 + <li class="filterlabel"># ~5만원
361 + <input type="checkbox" class="filter5" id="filter5" data_filter="amount" data_value="less5" />
362 + </li>
363 + <li class="filterlabel"># 5~10만원
364 + <input type="checkbox" class="filter5" id="filter5" data_filter="amount" data_value="5to10" />
365 + </li>
366 + <li class="filterlabel"># 10만원~
367 + <input type="checkbox" class="filter5" id="filter5" data_filter="amount" data_value="more10" />
368 + </li>
369 + </div>
370 + </div>
371 + <ol class="list"></ol>
372 + </div>
373 + </div>
374 + </div>
375 + <!-- /.container-fluid -->
376 +
377 + </div>
378 + <!-- End of Main Content -->
379 +
380 + <!-- Footer -->
381 + <footer class="sticky-footer bg-white">
382 + <div class="container my-auto">
383 + <div class="copyright text-center my-auto">
384 + <span>Copyright &copy; Mobile Forensic Tool / F-out</span>
385 + </div>
386 + </div>
387 + </footer>
388 + <!-- End of Footer -->
389 +
390 + </div>
391 + <!-- End of Content Wrapper -->
392 +
393 + </div>
394 + <!-- End of Page Wrapper -->
395 +
396 + <!-- Bootstrap core JavaScript-->
397 + <script src="../assets/jquery/jquery.min.js"></script>
398 + <script src="../assets/bootstrap/js/bootstrap.bundle.min.js"></script>
399 +
400 + <!-- Core plugin JavaScript-->
401 + <script src="../assets/jquery-easing/jquery.easing.min.js"></script>
402 +
403 + <!-- Custom scripts for all pages-->
404 + <script src="menu2.js"></script>
405 +
406 + <script>
407 + var myChart = new Chart(ctx, options_chart_1);
408 + window.myChart.destroy();
409 + </script>
410 +</body>
411 +
412 +</html>
1 +const {PythonShell}=require('python-shell');
2 +
3 +var choosed_menu="";
4 +var title_text="";
5 +var label_text_1=[];
6 +var label_text_2=[];
7 +var label_data_text_1="";
8 +var label_data_text_2="";
9 +var label_data_1=[];
10 +var label_data_2=[];
11 +
12 +
13 +var date_start="";
14 +var date_end="";
15 +var number=[];
16 +
17 +var keyword_1_list=[];
18 +var keyword_1_count=[];
19 +var keyword_all_list=[];
20 +var keyword_all_count=[];
21 +var keyword_between_list=[];
22 +var keyword_between_count=[];
23 +var keyword_with_list=[];
24 +var keyword_with_count=[];
25 +
26 +var payment_1_list=[];
27 +var payment_1_count=[];
28 +var payment_2_list=[];
29 +var payment_2_count=[];
30 +var payment_3_list=[];
31 +var payment_3_count=[];
32 +var payment_4_list=[];
33 +var payment_4_count=[];
34 +var payment_5_list=[];
35 +var payment_5_count=[];
36 +var payment_6_list=[];
37 +var payment_6_count=[];
38 +var payment_7_list=[];
39 +var payment_7_count=[];
40 +var payment_8_list=[];
41 +var payment_8_count=[];
42 +var payment_9_list=[];
43 +var payment_9_count=[];
44 +var payment_10_list=[];
45 +var payment_10_count=[];
46 +var payment_11_list=[];
47 +var payment_11_count=[];
48 +var payment_12_list=[];
49 +var payment_12_count=[];
50 +var payment_13_list=[];
51 +var payment_13_count=[];
52 +var payment_14_list=[];
53 +var payment_14_count=[];
54 +
55 +const canvas = document.getElementById("myChart")
56 +const ctx=canvas.getContext('2d');
57 +const choicespace = document.getElementById("choice");
58 +const chartspace = document.getElementById("chart");
59 +const keywordspace = document.getElementById("keywordspace");
60 +const keyword1space = document.getElementById("keyword1space");
61 +const keyword2space = document.getElementById("keyword2space");
62 +const keyword3space = document.getElementById("keyword3space");
63 +const keyword4space = document.getElementById("keyword4space");
64 +const between_submit = document.getElementById("between_date_submit");
65 +const with_submit = document.getElementById("number_submit");
66 +const paymentspace = document.getElementById("paymentspace");
67 +var keyword0 = document.getElementById('keyword');
68 +var keyword1 = document.getElementById('keyword1');
69 +var keyword2 = document.getElementById('keyword2');
70 +var keyword3 = document.getElementById('keyword3');
71 +var keyword4 = document.getElementById('keyword4');
72 +var payment1 = document.getElementById('payment1');
73 +var payment2 = document.getElementById('payment2');
74 +var payment3 = document.getElementById('payment3');
75 +var payment4 = document.getElementById('payment4');
76 +var payment5 = document.getElementById('payment5');
77 +var payment6 = document.getElementById('payment6');
78 +var payment7 = document.getElementById('payment7');
79 +var payment8 = document.getElementById('payment8');
80 +var payment9 = document.getElementById('payment9');
81 +
82 +var options_charts_1 = {
83 + responsive: false,
84 + title:{
85 + display:true,
86 + text:title_text
87 + },
88 + maintainAspectRatio: true,
89 + scales: {
90 + yAxes: [{
91 + ticks: {
92 + beginAtZero:true
93 + }
94 + }]
95 + }
96 +};
97 +
98 +var options_charts_2 = {
99 + responsive: false,
100 + title:{
101 + display:true,
102 + text:title_text
103 + },
104 + maintainAspectRatio: true,
105 + scales: {
106 + yAxes: [{
107 + ticks: {
108 + beginAtZero:true
109 + }
110 + }]
111 + }
112 +};
113 +
114 +var options_chart_1={
115 + type: 'bar',
116 + data: {
117 + labels: label_text_1,
118 + datasets:[{
119 + label:label_data_text_1,
120 + data:label_data_1,
121 + backgroundColor:'rgba(255, 206, 86, 0.2)',
122 + borderWidth: 1
123 + }]
124 + },
125 + options: options_charts_1
126 +};
127 +
128 +var options_chart_2={
129 + type: 'bar',
130 + data: {
131 + labels: label_text_2,
132 + datasets:[{
133 + label:label_data_text_2,
134 + data:label_data_2,
135 + backgroundColor:'rgba(75, 192, 192, 0.2)',
136 + borderWidth: 1
137 + }]
138 + },
139 + options: options_charts_2
140 +};
141 +
142 +var mysql = require('mysql');
143 +var connection = mysql.createConnection({
144 + host:'localhost',
145 + user:'root',
146 + password:'1234',
147 + database:'dataextraction',
148 + multipleStatements: true
149 +});
150 +
151 +connection.connect();
152 +
153 +connection.query('select MIN(date) "min", MAX(date) "max" from calllog;', function(err, rows,fields){
154 + if(!err){
155 + document.getElementById('between_date_start').min=(rows[0].min.toISOString().split("T")[0]);
156 + document.getElementById('between_date_start').max=(rows[0].max.toISOString().split("T")[0]);
157 + document.getElementById('between_date_end').min=(rows[0].min.toISOString().split("T")[0]);
158 + document.getElementById('between_date_end').max=(rows[0].max.toISOString().split("T")[0]);
159 + document.getElementById('between_amount_date_start').min=(rows[0].min.toISOString().split("T")[0]);
160 + document.getElementById('between_amount_date_start').max=(rows[0].max.toISOString().split("T")[0]);
161 + document.getElementById('between_amount_date_end').min=(rows[0].min.toISOString().split("T")[0]);
162 + document.getElementById('between_amount_date_end').max=(rows[0].max.toISOString().split("T")[0]);
163 + document.getElementById('between_payment_date_start').min=(rows[0].min.toISOString().split("T")[0]);
164 + document.getElementById('between_payment_date_start').max=(rows[0].max.toISOString().split("T")[0]);
165 + document.getElementById('between_payment_date_end').min=(rows[0].min.toISOString().split("T")[0]);
166 + document.getElementById('between_payment_date_end').max=(rows[0].max.toISOString().split("T")[0]);
167 + document.getElementById('between_card_date_start').min=(rows[0].min.toISOString().split("T")[0]);
168 + document.getElementById('between_card_date_start').max=(rows[0].max.toISOString().split("T")[0]);
169 + document.getElementById('between_card_date_end').min=(rows[0].min.toISOString().split("T")[0]);
170 + document.getElementById('between_card_date_end').max=(rows[0].max.toISOString().split("T")[0]);
171 + document.getElementById('between_store_date_start').min=(rows[0].min.toISOString().split("T")[0]);
172 + document.getElementById('between_store_date_start').max=(rows[0].max.toISOString().split("T")[0]);
173 + document.getElementById('between_store_date_end').min=(rows[0].min.toISOString().split("T")[0]);
174 + document.getElementById('between_store_date_end').max=(rows[0].max.toISOString().split("T")[0]);
175 +
176 + }
177 + else
178 + cc.innerHTML='Error-#0/minmax';
179 +});
180 +
181 +var options_list = {
182 + valueNames: [ 'type_cs', 'number', 'date','body', 'keyword' ],
183 + 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>'
184 +};
185 +
186 +
187 +var options_list_pay = {
188 + valueNames: [ 'bname','payment','payment_','price', 'amount', 'sname', 'date' ],
189 + 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>'
190 +};
191 +
192 +var values_list = [];
193 +var values_list_1 = [];
194 +var values_list_all = [];
195 +var values_list_between = [];
196 +var values_list_with = [];
197 +var values_payment_list_all = [];
198 +
199 +var myList;
200 +var myList1 = new List("keyword1space", options_list, values_list_1);
201 +var myList2 = new List("keyword2space", options_list, values_list_all);
202 +var myList3 = new List("keyword3space", options_list, values_list_between);
203 +var myList4 = new List("keyword4space", options_list, values_list_with);
204 +var myList5;
205 +
206 +connection.query('update contact set number=replace(number,"-","");', function(err, rows, fields){
207 + if(err)
208 + cc.innerHTML='Error-#1.0-contact replace';
209 +});
210 +
211 +let option = {
212 + mode: 'text',
213 + pythonPath: 'py',
214 + pythonOptions: ['-3.6'],
215 + scriptPath: '',
216 + args: [],
217 + encoding: 'utf8'
218 +};
219 +
220 +PythonShell.run('src/analysis_message.py', option, function(err, result){
221 + if(err)
222 + console.log(err);
223 + else{
224 + for(var i=0;i<result.length;i++){
225 + let data = result[i].replace(`b\'`, '').replace(`\'`, '');
226 + let buff = Buffer.from(data,'base64');
227 + let text=buff.toString('utf-8');
228 + var data_temp=text.split('|');
229 + values_list.push({type_cs:data_temp[0], number:data_temp[1], date:data_temp[2], body:data_temp[3], keyword:data_temp[4]});
230 + }
231 + myList = new List("keywordspace", options_list, values_list);
232 + //cc.innerHTML="[done] All List Keyword";
233 + keyword0.style="text-decoration:none";
234 + }
235 +});
236 +
237 +PythonShell.run('src/analysis_message_rank_recent.py', option, function(err, result){
238 + if(err)
239 + console.log(err);
240 + else{
241 + for(var i=0;i<result.length;i++){
242 + let data = result[i].replace(`b\'`, '').replace(`\'`, '');
243 + let buff = Buffer.from(data,'base64');
244 + let text=buff.toString('utf-8');
245 + var data_temp=text.split('|');
246 + keyword_1_list.push(data_temp[0]);
247 + keyword_1_count.push(data_temp[1]);
248 + }
249 + //cc.innerHTML="[done] recent Keyword";
250 + keyword1.style="text-decoration:none";
251 + }
252 +});
253 +
254 +PythonShell.run('src/analysis_message_rank_all.py', option, function(err, result){
255 + if(err)
256 + console.log(err);
257 + else{
258 + for(var i=0;i<result.length;i++){
259 + let data = result[i].replace(`b\'`, '').replace(`\'`, '');
260 + let buff = Buffer.from(data,'base64');
261 + let text=buff.toString('utf-8');
262 + var data_temp=text.split('|');
263 + keyword_all_list.push(data_temp[0]);
264 + keyword_all_count.push(data_temp[1]);
265 + }
266 + //cc.innerHTML="[done] recent Keyword";
267 + keyword2.style="text-decoration:none";
268 + }
269 +});
270 +
271 +PythonShell.run('src/analysis_message_bank.py', option, function(err, result){
272 + if(err)
273 + cc.innerHTML="Error-analysis_message_bank.py";
274 + else{
275 + connection.query('select * from sms_bank;', function(err, rows, fields){
276 + if(err)
277 + cc.innerHTML='Error-#2.0-payment select';
278 + else{
279 + for(var i=0;i<rows.length;i++){
280 + var date_temp=rows[i].date.toISOString().split("T")[0]+" "+rows[i].date.toISOString().split("T")[1].slice(0,8);
281 + var price_temp=rows[i].price;
282 + var amount_temp=""
283 + var bname_temp=rows[i].bname;
284 + var sname_temp=rows[i].sname;
285 + var payplan_temp=rows[i].paymentplan;
286 + var payplan__temp=rows[i].paymentplan;
287 + if (payplan__temp != "체크"&&payplan__temp!="일시불"){
288 + payplan__temp="할부";
289 + }
290 + if (price_temp < 50000){amount_temp="less5";}
291 + else if (price_temp >=50000 && price_temp <100000){amount_temp="5to10";}
292 + else{amount_temp="more10";}
293 + 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});
294 + }
295 + myList5 = new List("paymentspace", options_list_pay, values_payment_list_all);
296 + }
297 + });
298 +
299 + 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){
300 + if(!err){
301 + for(var i=0;i<rows.length;i++){
302 + var date=rows[i].date.slice(0,7);
303 + var sum=rows[i].sum;
304 + payment_1_list.push(date)
305 + payment_1_count.push(sum)
306 + }
307 + }
308 + else
309 + cc.innerHTML='Error-query-#payment_1';
310 + });
311 +
312 + 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){
313 + if(!err){
314 + for(var i=0;i<rows.length;i++){
315 + var date=rows[i].date.slice(0,7);
316 + var sum=rows[i].sum;
317 + payment_2_list.push(date)
318 + payment_2_count.push(sum)
319 + }
320 + }
321 + else
322 + cc.innerHTML='Error-query-#payment_2';
323 + });
324 +
325 + 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){
326 + if(!err){
327 + connection.query('select * from sms_bank_hour order by hour;', function(err, rows, fields){
328 + for(var i=0;i<rows.length;i++){
329 + var hour=rows[i].hour;
330 + var count=rows[i].smscount;
331 + payment_5_list.push(hour)
332 + payment_5_count.push(count)
333 + }
334 + });
335 + }
336 + else
337 + cc.innerHTML='Error-query-#payment_5';
338 + });
339 +
340 + connection.query('select bname, count(*) "count" from sms_bank group by bname order by count(*) desc;', function(err, rows, fields){
341 + if(!err){
342 + for(var i=0;i<rows.length;i++){
343 + var bname=rows[i].bname;
344 + var count=rows[i].count;
345 + payment_7_list.push(bname)
346 + payment_7_count.push(count)
347 + }
348 + }
349 + else
350 + cc.innerHTML='Error-query-#payment_7';
351 + });
352 +
353 + connection.query('select bname, sum(price) "sum" from sms_bank group by bname order by sum(price) desc;', function(err, rows, fields){
354 + if(!err){
355 + for(var i=0;i<rows.length;i++){
356 + var bname=rows[i].bname;
357 + var sum=rows[i].sum;
358 + payment_8_list.push(bname)
359 + payment_8_count.push(sum)
360 + }
361 + }
362 + else
363 + cc.innerHTML='Error-query-#payment_8';
364 + });
365 +
366 + connection.query('select sname, count(*) "count" from sms_bank group by sname order by count(*) desc;', function(err, rows, fields){
367 + if(!err){
368 + for(var i=0;i<rows.length;i++){
369 + var sname=rows[i].sname;
370 + var count=rows[i].count;
371 + payment_11_list.push(sname)
372 + payment_11_count.push(count)
373 + }
374 + }
375 + else
376 + cc.innerHTML='Error-query-#payment_11';
377 + });
378 +
379 + connection.query('select sname, sum(price) "sum" from sms_bank group by sname order by sum(price) desc;', function(err, rows, fields){
380 + if(!err){
381 + for(var i=0;i<rows.length;i++){
382 + var sname=rows[i].sname;
383 + var sum=rows[i].sum;
384 + payment_12_list.push(sname)
385 + payment_12_count.push(sum)
386 + }
387 + }
388 + else
389 + cc.innerHTML='Error-query-#payment_12';
390 + });
391 + }
392 +});
393 +
394 +function chartspaceview(){
395 + keywordspace.style="display:none";
396 + choicespace.style="display:none";
397 + chartspace.style="display:inline";
398 + keyword1space.style="display:none";
399 + keyword2space.style="display:none";
400 + keyword3space.style="display:none";
401 + keyword4space.style="display:none";
402 + paymentspace.style="display:none";
403 +}
404 +
405 +keyword0.addEventListener('click', function(){
406 + keywordspace.style="display:inline";
407 + choicespace.style="display:none";
408 + chartspace.style="display:none";
409 + keyword1space.style="display:none";
410 + keyword2space.style="display:none";
411 + keyword3space.style="display:none";
412 + keyword4space.style="display:none";
413 + paymentspace.style="display:none";
414 + menu_name.innerHTML="전체 문자의 키워드 목록";
415 +});
416 +
417 +keyword1.addEventListener('click', function(){
418 + choosed_menu="keyword1";
419 + chartspaceview();
420 + menu_name.innerHTML="최근 1개월 문자 키워드 순위";
421 + box_name.innerHTML="# 언급 횟수";
422 + options_chart_1.options.title.text="최근 1개월 문자 키워드";
423 + options_chart_1.data.labels=keyword_1_list;
424 + options_chart_1.data.datasets[0].label="언급 횟수";
425 + options_chart_1.data.datasets[0].data=keyword_1_count;
426 + window.myChart.destroy();
427 + window.myChart = new Chart(ctx, options_chart_1);
428 +});
429 +
430 +keyword2.addEventListener('click', function(){
431 + choosed_menu="keyword2";
432 + chartspaceview();
433 + menu_name.innerHTML="전체 문자 키워드 순위";
434 + box_name.innerHTML="# 언급 횟수";
435 + options_chart_1.options.title.text="전체 문자 키워드";
436 + options_chart_1.data.labels=keyword_all_list;
437 + options_chart_1.data.datasets[0].label="언급 횟수";
438 + options_chart_1.data.datasets[0].data=keyword_all_count;
439 + window.myChart.destroy();
440 + window.myChart = new Chart(ctx, options_chart_1);
441 +});
442 +
443 +keyword3.addEventListener('click', function(){
444 + choosed_menu="keyword3";
445 + chartspaceview();
446 + menu_name.innerHTML="특정 기간의 문자 키워드 순위";
447 + box_name.innerHTML="# 언급 횟수";
448 + options_chart_1.options.title.text="특정 기간의 문자 키워드";
449 + options_chart_1.data.labels=keyword_between_list;
450 + options_chart_1.data.datasets[0].label="언급 횟수";
451 + options_chart_1.data.datasets[0].data=keyword_between_count;
452 + window.myChart.destroy();
453 + window.myChart = new Chart(ctx, options_chart_1);
454 +});
455 +
456 +keyword4.addEventListener('click', function(){
457 + choosed_menu="keyword4";
458 + chartspaceview();
459 + menu_name.innerHTML="특정 연락처와의 문자 키워드 순위";
460 + box_name.innerHTML="# 언급 횟수";
461 + options_chart_1.options.title.text="특정 연락처와의 문자 키워드";
462 + options_chart_1.data.labels=keyword_with_list;
463 + options_chart_1.data.datasets[0].label="언급 횟수";
464 + options_chart_1.data.datasets[0].data=keyword_with_count;
465 + window.myChart.destroy();
466 + window.myChart = new Chart(ctx, options_chart_1);
467 +});
468 +
469 +payment1.addEventListener('click', function(){
470 + keywordspace.style="display:none";
471 + choicespace.style="display:none";
472 + chartspace.style="display:none";
473 + keyword1space.style="display:none";
474 + keyword2space.style="display:none";
475 + keyword3space.style="display:none";
476 + keyword4space.style="display:none";
477 + paymentspace.style="display:inline";
478 + menu_name.innerHTML="결제문자 목록";
479 +});
480 +
481 +payment2.addEventListener('click', function(){
482 + chartspaceview();
483 + type1.innerHTML="# 결제 금액";
484 + type2.innerHTML="# 누적 결제 금액";
485 + choicespace.style="display:inline";
486 + box_name.innerHTML="# 결제 금액";
487 + choosed_menu="payment2";
488 +
489 + menu_name.innerHTML="전체 기간의 결제 금액 통계";
490 + options_chart_1.options.title.text="전체 기간의 결제 금액 통계";
491 + options_chart_1.data.labels=payment_1_list;
492 + options_chart_1.data.datasets[0].label="결제 금액";
493 + options_chart_1.data.datasets[0].data=payment_1_count;
494 + options_charts_2.title.text="전체 기간의 누적 결제 금액 통계";
495 + options_chart_2.data.labels=payment_2_list;
496 + options_chart_2.data.datasets[0].label="누적 결제 금액";
497 + options_chart_2.data.datasets[0].data=payment_2_count;
498 + window.myChart.destroy();
499 + window.myChart = new Chart(ctx, options_chart_1);
500 +});
501 +
502 +payment3.addEventListener('click', function(){
503 + chartspaceview();
504 + type1.innerHTML="# 결제 금액";
505 + type2.innerHTML="# 누적 결제 금액";
506 + choicespace.style="display:inline";
507 + box_name.innerHTML="# 결제 금액";
508 + choosed_menu="payment3";
509 +
510 + menu_name.innerHTML="특정 기간의 결제 금액 통계";
511 + options_chart_1.options.title.text="특정 기간의 결제 금액 통계";
512 + options_chart_1.data.labels=payment_3_list;
513 + options_chart_1.data.datasets[0].label="결제 금액";
514 + options_chart_1.data.datasets[0].data=payment_3_count;
515 + options_charts_2.title.text="특정 기간의 누적 결제 금액 통계";
516 + options_chart_2.data.labels=payment_4_list;
517 + options_chart_2.data.datasets[0].label="누적 결제 금액";
518 + options_chart_2.data.datasets[0].data=payment_4_count;
519 + window.myChart.destroy();
520 + window.myChart = new Chart(ctx, options_chart_1);
521 +});
522 +
523 +payment4.addEventListener('click', function(){
524 + chartspaceview();
525 +
526 + menu_name.innerHTML="전체 기간의 결제 시간대";
527 + box_name.innerHTML="# 결제 횟수";
528 + options_chart_1.options.title.text="전체 기간의 결제 시간대";
529 + options_chart_1.data.labels=payment_5_list;
530 + options_chart_1.data.datasets[0].label="결제 횟수";
531 + options_chart_1.data.datasets[0].data=payment_5_count;
532 + window.myChart.destroy();
533 + window.myChart = new Chart(ctx, options_chart_1);
534 +});
535 +
536 +payment5.addEventListener('click', function(){
537 + chartspaceview();
538 +
539 + menu_name.innerHTML="특정 기간의 결제 시간대";
540 + box_name.innerHTML="# 결제 횟수";
541 + options_chart_1.options.title.text="특정 기간의 결제 시간대";
542 + options_chart_1.data.labels=payment_6_list;
543 + options_chart_1.data.datasets[0].label="결제 횟수";
544 + options_chart_1.data.datasets[0].data=payment_6_count;
545 + window.myChart.destroy();
546 + window.myChart = new Chart(ctx, options_chart_1);
547 +});
548 +
549 +payment6.addEventListener('click', function(){
550 + chartspaceview();
551 + type1.innerHTML="# 결제 횟수 기준";
552 + type2.innerHTML="# 결제 금액 기준";
553 + choicespace.style="display:inline";
554 + box_name.innerHTML="# 결제 횟수 기준";
555 + choosed_menu="payment6";
556 +
557 + menu_name.innerHTML="전체 기간의 카드 이용 순위";
558 + options_chart_1.options.title.text="전체 기간의 카드 이용 순위";
559 + options_chart_1.data.labels=payment_7_list;
560 + options_chart_1.data.datasets[0].label="결제 횟수";
561 + options_chart_1.data.datasets[0].data=payment_7_count;
562 + options_charts_2.title.text="전체 기간의 카드 이용 순위";
563 + options_chart_2.data.labels=payment_8_list;
564 + options_chart_2.data.datasets[0].label="결제 금액";
565 + options_chart_2.data.datasets[0].data=payment_8_count;
566 + window.myChart.destroy();
567 + window.myChart = new Chart(ctx, options_chart_1);
568 +});
569 +
570 +payment7.addEventListener('click', function(){
571 + chartspaceview();
572 + type1.innerHTML="# 결제 횟수 기준";
573 + type2.innerHTML="# 결제 금액 기준";
574 + choicespace.style="display:inline";
575 + box_name.innerHTML="# 결제 횟수 기준";
576 + choosed_menu="payment7";
577 +
578 + menu_name.innerHTML="특정 기간의 카드 이용 순위";
579 + options_chart_1.options.title.text="특정 기간의 카드 이용 순위";
580 + options_chart_1.data.labels=payment_9_list;
581 + options_chart_1.data.datasets[0].label="결제 횟수";
582 + options_chart_1.data.datasets[0].data=payment_9_count;
583 + options_charts_2.title.text="특정 기간의 카드 이용 순위";
584 + options_chart_2.data.labels=payment_10_list;
585 + options_chart_2.data.datasets[0].label="결제 금액";
586 + options_chart_2.data.datasets[0].data=payment_10_count;
587 + window.myChart.destroy();
588 + window.myChart = new Chart(ctx, options_chart_1);
589 +});
590 +
591 +payment8.addEventListener('click', function(){
592 + chartspaceview();
593 + type1.innerHTML="# 결제 횟수 기준";
594 + type2.innerHTML="# 결제 금액 기준";
595 + choicespace.style="display:inline";
596 + box_name.innerHTML="# 결제 횟수 기준";
597 + choosed_menu="payment8";
598 +
599 + menu_name.innerHTML="전체 기간의 사용처 순위";
600 + options_chart_1.options.title.text="전체 기간의 사용처 순위";
601 + options_chart_1.data.labels=payment_11_list;
602 + options_chart_1.data.datasets[0].label="결제 횟수";
603 + options_chart_1.data.datasets[0].data=payment_11_count;
604 + options_charts_2.title.text="전체 기간의 사용처 순위";
605 + options_chart_2.data.labels=payment_12_list;
606 + options_chart_2.data.datasets[0].label="결제 금액";
607 + options_chart_2.data.datasets[0].data=payment_12_count;
608 + window.myChart.destroy();
609 + window.myChart = new Chart(ctx, options_chart_1);
610 +});
611 +
612 +payment9.addEventListener('click', function(){
613 + chartspaceview();
614 + type1.innerHTML="# 결제 횟수 기준";
615 + type2.innerHTML="# 결제 금액 기준";
616 + choicespace.style="display:inline";
617 + box_name.innerHTML="# 결제 횟수 기준";
618 + choosed_menu="payment9";
619 +
620 + menu_name.innerHTML="특정 기간의 사용처 순위";
621 + options_chart_1.options.title.text="특정 기간의 사용처 순위";
622 + options_chart_1.data.labels=payment_13_list;
623 + options_chart_1.data.datasets[0].label="결제 횟수";
624 + options_chart_1.data.datasets[0].data=payment_13_count;
625 + options_charts_2.title.text="특정 기간의 사용처 순위";
626 + options_chart_2.data.labels=payment_14_list;
627 + options_chart_2.data.datasets[0].label="결제 금액";
628 + options_chart_2.data.datasets[0].data=payment_14_count;
629 + window.myChart.destroy();
630 + window.myChart = new Chart(ctx, options_chart_1);
631 +});
632 +
633 +var type1 = document.getElementById('type1');
634 +type1.addEventListener('click', function(){
635 + window.myChart.destroy();
636 + window.myChart = new Chart(ctx, options_chart_1);
637 + switch(choosed_menu){
638 + case 'payment2':
639 + case 'payment3':
640 + box_name.innerHTML="# 결제 금액";
641 + break;
642 + case 'payment6':
643 + case 'payment7':
644 + case 'payment8':
645 + case 'payment9':
646 + box_name.innerHTML="# 결제 횟수 기준";
647 + break;
648 + }
649 +});
650 +
651 +var type2 = document.getElementById('type2');
652 +type2.addEventListener('click', function(){
653 + window.myChart.destroy();
654 + window.myChart = new Chart(ctx, options_chart_2);
655 + switch(choosed_menu){
656 + case 'payment2':
657 + case 'payment3':
658 + box_name.innerHTML="# 누적 결제 금액";
659 + break;
660 + case 'payment6':
661 + case 'payment7':
662 + case 'payment8':
663 + case 'payment9':
664 + box_name.innerHTML="# 결제 금액 기준";
665 + break;
666 + }
667 +});
668 +
669 +function get_date_keyword(){
670 + keyword3.style="text-decoration:line-through";
671 + choosed_menu="keyword3";
672 + keywordspace.style="display:none";
673 + chartspace.style="display:none";
674 + keyword1space.style="display:none";
675 + keyword2space.style="display:none";
676 + keyword3space.style="display:none";
677 + between_submit.disabled=true;
678 + keyword4space.style="display:none";
679 + paymentspace.style="display:none";
680 +
681 + myList3.clear();
682 + keyword_between_list.length=0;
683 + keyword_between_count.length=0;
684 +
685 + date_start=document.getElementById('between_date_start').value+' 00:00:00';
686 + date_end=document.getElementById('between_date_end').value+' 23:59:59';
687 +
688 + let option_between = {
689 + mode: 'text',
690 + pythonPath: 'py',
691 + pythonOptions: ['-3.6'],
692 + scriptPath: '',
693 + args: [date_start, date_end],
694 + encoding: 'utf8'
695 + };
696 +
697 + PythonShell.run('src/analysis_message_rank_between.py', option_between, function(err, result){
698 + for(var i=0;i<result.length;i++){
699 + let data = result[i].replace(`b\'`, '').replace(`\'`, '');
700 + let buff = Buffer.from(data,'base64');
701 + let text=buff.toString('utf-8');
702 + var data_temp=text.split('|');
703 + keyword_between_list.push(data_temp[0]);
704 + keyword_between_count.push(data_temp[1]);
705 + }
706 + menu_name.innerHTML="특정 기간의 문자 키워드";
707 + options_chart_1.options.title.text="특정 기간의 문자 키워드";
708 + options_chart_1.data.labels=keyword_between_list;
709 + options_chart_1.data.datasets[0].label="언급 횟수";
710 + options_chart_1.data.datasets[0].data=keyword_between_count;
711 + window.myChart.destroy();
712 + window.myChart = new Chart(ctx, options_chart_1);
713 + chartspace.style="display:inline";
714 + //cc.innerHTML="[done] recent Keyword";
715 + keyword3.style="text-decoration:none";
716 + between_submit.disabled=false;
717 + });
718 + //connection.end();
719 +}
720 +
721 +function get_number_push(){
722 + number.push(document.getElementById('number').value);
723 + keyword4_list.innerHTML=number;
724 +}
725 +function get_number_pop(){
726 + number.splice(number.indexOf(document.getElementById('number').value),1);
727 + keyword4_list.innerHTML=number;
728 +}
729 +function get_number_keyword(){
730 + keyword4.style="text-decoration:line-through";
731 + choosed_menu="keyword4";
732 + keywordspace.style="display:none";
733 + chartspace.style="display:none";
734 + keyword1space.style="display:none";
735 + keyword2space.style="display:none";
736 + keyword3space.style="display:none";
737 + keyword4space.style="display:none";
738 + with_submit.disabled=true;
739 + paymentspace.style="display:none";
740 +
741 + myList4.clear();
742 + keyword_with_list.length=0;
743 + keyword_with_count.length=0;
744 +
745 + let option_between = {
746 + mode: 'text',
747 + pythonPath: 'py',
748 + pythonOptions: ['-3.6'],
749 + scriptPath: '',
750 + args: [number],
751 + encoding: 'utf8'
752 + };
753 +
754 + PythonShell.run('src/analysis_message_rank_with.py', option_between, function(err, result){
755 + for(var i=0;i<result.length;i++){
756 + let data = result[i].replace(`b\'`, '').replace(`\'`, '');
757 + let buff = Buffer.from(data,'base64');
758 + let text=buff.toString('utf-8');
759 + var data_temp=text.split('|');
760 + keyword_with_list.push(data_temp[0]);
761 + keyword_with_count.push(data_temp[1]);
762 + }
763 + menu_name.innerHTML="특정 연락처와의 문자 키워드";
764 + options_chart_1.options.title.text="특정 연락처와의 문자 키워드";
765 + options_chart_1.data.labels=keyword_with_list;
766 + options_chart_1.data.datasets[0].label="언급 횟수";
767 + options_chart_1.data.datasets[0].data=keyword_with_count;
768 + window.myChart.destroy();
769 + window.myChart = new Chart(ctx, options_chart_1);
770 + chartspace.style="display:inline";
771 + //cc.innerHTML="[done] recent Keyword";
772 + keyword4.style="text-decoration:none";
773 + with_submit.disabled=false;
774 + });
775 + //connection.end();
776 +}
777 +
778 +function get_amount_date_payment(){
779 + chartspaceview();
780 + type1.innerHTML="# 결제 금액";
781 + type2.innerHTML="# 누적 결제 금액";
782 + choicespace.style="display:inline";
783 + box_name.innerHTML="# 결제 금액";
784 + choosed_menu="payment3";
785 +
786 + date_start=document.getElementById('between_amount_date_start').value+' 00:00:00';
787 + date_end=document.getElementById('between_amount_date_end').value+' 23:59:59';
788 + console.log(date_start, date_end);
789 +
790 + payment_3_list.length=0;
791 + payment_3_count.length=0;
792 + payment_4_list.length=0;
793 + payment_4_count.length=0;
794 +
795 + 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){
796 + if(!err){
797 + for(var i=0;i<rows.length;i++){
798 + var date=rows[i].date.slice(0,7);
799 + var sum=rows[i].sum;
800 + payment_3_list.push(date);
801 + payment_3_count.push(sum);
802 + }
803 + }
804 + else
805 + cc.innerHTML='Error-query-#payment_3-1'+err;
806 + })
807 +
808 + 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){
809 + if(!err){
810 + for(var i=0;i<rows.length;i++){
811 + var date=rows[i].date.slice(0,7);
812 + var sum=rows[i].sum;
813 + payment_4_list.push(date);
814 + payment_4_count.push(sum);
815 + }
816 + }
817 + else
818 + cc.innerHTML='Error-query-#payment_3-2'+err;
819 + })
820 +
821 + menu_name.innerHTML="특정 기간의 결제 금액 통계";
822 + options_chart_1.options.title.text="특정 기간의 결제 금액 통계";
823 + options_chart_1.data.labels=payment_3_list;
824 + options_chart_1.data.datasets[0].label="결제 금액";
825 + options_chart_1.data.datasets[0].data=payment_3_count;
826 + options_charts_2.title.text="특정 기간의 누적 결제 금액 통계";
827 + options_chart_2.data.labels=payment_4_list;
828 + options_chart_2.data.datasets[0].label="누적 결제 금액";
829 + options_chart_2.data.datasets[0].data=payment_4_count;
830 + window.myChart.destroy();
831 +}
832 +
833 +function get_payment_date_payment(){
834 + chartspaceview();
835 +
836 + date_start=document.getElementById('between_payment_date_start').value+' 00:00:00';
837 + date_end=document.getElementById('between_payment_date_end').value+' 23:59:59';
838 +
839 + payment_6_list.length=0;
840 + payment_6_count.length=0;
841 +
842 + 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){
843 + if(!err){
844 + connection.query("select * from sms_bank_hour order by hour;",function(err, rows, fields){
845 + if(!err){
846 + for(var i=0;i<rows.length;i++){
847 + var hour=rows[i].hour;
848 + var count=rows[i].smscount;
849 + payment_6_list.push(hour);
850 + payment_6_count.push(count);
851 + }
852 + }
853 + else
854 + cc.innerHTML='Error-quert-#payment_5-1';
855 + });
856 + }
857 + else
858 + cc.innerHTML='Error-query-#payment_5';
859 + })
860 +
861 + menu_name.innerHTML="특정 기간의 결제 시간대";
862 + options_chart_1.options.title.text="특정 기간의 결제 시간대";
863 + options_chart_1.data.labels=payment_6_list;
864 + options_chart_1.data.datasets[0].label="결제 횟수";
865 + options_chart_1.data.datasets[0].data=payment_6_count;
866 + window.myChart.destroy();
867 +}
868 +
869 +function get_card_date_payment(){
870 + chartspaceview();
871 + type1.innerHTML="# 결제 횟수 기준";
872 + type2.innerHTML="# 결제 금액 기준";
873 + choicespace.style="display:inline";
874 + box_name.innerHTML="# 결제 횟수 기준";
875 + choosed_menu="payment7";
876 +
877 + date_start=document.getElementById('between_card_date_start').value+' 00:00:00';
878 + date_end=document.getElementById('between_card_date_end').value+' 23:59:59';
879 +
880 + payment_9_list.length=0;
881 + payment_9_count.length=0;
882 + payment_10_list.length=0;
883 + payment_10_count.length=0;
884 +
885 + 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){
886 + if(!err){
887 + for(var i=0;i<rows.length;i++){
888 + var bname=rows[i].bname;
889 + var count=rows[i].count;
890 + payment_9_list.push(bname);
891 + payment_9_count.push(count);
892 + }
893 + }
894 + else
895 + cc.innerHTML='Error-query-#payment_7-1';
896 + })
897 +
898 + 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){
899 + if(!err){
900 + for(var i=0;i<rows.length;i++){
901 + var bname=rows[i].bname;
902 + var sum=rows[i].sum;
903 + payment_10_list.push(bname);
904 + payment_10_count.push(sum);
905 + }
906 + }
907 + else
908 + cc.innerHTML='Error-query-#payment_7-2';
909 + })
910 +
911 + menu_name.innerHTML="특정 기간의 카드 이용 순위";
912 + options_chart_1.options.title.text="특정 기간의 카드 이용 순위";
913 + options_chart_1.data.labels=payment_9_list;
914 + options_chart_1.data.datasets[0].label="결제 횟수";
915 + options_chart_1.data.datasets[0].data=payment_9_count;
916 + options_charts_2.title.text="특정 기간의 카드 이용 순위";
917 + options_chart_2.data.labels=payment_10_list;
918 + options_chart_2.data.datasets[0].label="결제 금액";
919 + options_chart_2.data.datasets[0].data=payment_10_count;
920 + window.myChart.destroy();
921 +}
922 +
923 +function get_store_date_payment(){
924 + chartspaceview();
925 + type1.innerHTML="# 결제 횟수 기준";
926 + type2.innerHTML="# 결제 금액 기준";
927 + choicespace.style="display:inline";
928 + box_name.innerHTML="# 결제 횟수 기준";
929 + choosed_menu="payment9";
930 +
931 + date_start=document.getElementById('between_store_date_start').value+' 00:00:00';
932 + date_end=document.getElementById('between_store_date_end').value+' 23:59:59';
933 +
934 + payment_13_list.length=0;
935 + payment_13_count.length=0;
936 + payment_14_list.length=0;
937 + payment_14_count.length=0;
938 +
939 + 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){
940 + if(!err){
941 + for(var i=0;i<rows.length;i++){
942 + var sname=rows[i].sname;
943 + var count=rows[i].count;
944 + payment_13_list.push(sname);
945 + payment_13_count.push(count);
946 + }
947 + }
948 + else
949 + cc.innerHTML='Error-query-#payment_9-1';
950 + })
951 +
952 + 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){
953 + if(!err){
954 + for(var i=0;i<rows.length;i++){
955 + var sname=rows[i].sname;
956 + var sum=rows[i].sum;
957 + payment_14_list.push(sname);
958 + payment_14_count.push(sum);
959 + }
960 + }
961 + else
962 + cc.innerHTML='Error-query-#payment_9-2';
963 + })
964 +
965 + menu_name.innerHTML="특정 기간의 사용처 순위";
966 + options_chart_1.options.title.text="특정 기간의 사용처 순위";
967 + options_chart_1.data.labels=payment_13_list;
968 + options_chart_1.data.datasets[0].label="결제 횟수";
969 + options_chart_1.data.datasets[0].data=payment_13_count;
970 + options_charts_2.title.text="특정 기간의 사용처 순위";
971 + options_chart_2.data.labels=payment_14_list;
972 + options_chart_2.data.datasets[0].label="결제 금액";
973 + options_chart_2.data.datasets[0].data=payment_14_count;
974 + window.myChart.destroy();
975 +}
976 +
977 +/*
978 +connection.query('', function(err, rows, fields){
979 + if(!err){
980 + for(var i=0;i<rows.length;i++){
981 + var date=rows[i].date.toISOString().slice(0,7);
982 + var sum=rows[i].sum;
983 + payment_2_list.push(date)
984 + payment_2_count.push(sum)
985 + }
986 + }
987 + else
988 + cc.innerHTML='Error-query-#payment_1';
989 +});
990 +*/
991 +
992 +canvas.onclick=function(event){
993 + var activePoints = myChart.getElementsAtEvent(event);
994 + var chartData = activePoints[0]['_chart'].config.data;
995 + var idx=activePoints[0]['_index'];
996 + var label=chartData.labels[idx];
997 + var value=chartData.datasets[0].data[idx];
998 + console.log(chartData);
999 + if(choosed_menu=="keyword1"){
1000 + chartspace.style="display:none";
1001 + keyword1space.style="display:inline";
1002 + keyword2space.style="display:none";
1003 + myList1.clear();
1004 + values_list_1.length=0;
1005 +
1006 + for(var i=0;i<values_list.length;i++){
1007 + var keyword_str=values_list[i].keyword;
1008 + if(!keyword_str)
1009 + continue;
1010 + else{
1011 + if(keyword_str.includes(label)){
1012 + var data_temp=[];
1013 + data_temp.push(values_list[i].type_cs);
1014 + data_temp.push(values_list[i].number);
1015 + data_temp.push(values_list[i].date);
1016 + data_temp.push(values_list[i].body);
1017 + data_temp.push(values_list[i].keyword);
1018 + 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]});
1019 + }
1020 + }
1021 + }
1022 + menu_name.innerHTML="최근 1개월 키워드 순위 / "+label;
1023 + myList1 = new List("keyword1space", options_list, values_list_1);
1024 + }
1025 + else if(choosed_menu=="keyword2"){
1026 + chartspace.style="display:none";
1027 + keyword1space.style="display:none";
1028 + keyword2space.style="display:inline";
1029 + myList2.clear();
1030 + values_list_all.length=0;
1031 +
1032 + for(var i=0;i<values_list.length;i++){
1033 + var keyword_str=values_list[i].keyword;
1034 + if(!keyword_str)
1035 + continue;
1036 + else{
1037 + if(keyword_str.includes(label)){
1038 + var data_temp=[];
1039 + data_temp.push(values_list[i].type_cs);
1040 + data_temp.push(values_list[i].number);
1041 + data_temp.push(values_list[i].date);
1042 + data_temp.push(values_list[i].body);
1043 + data_temp.push(values_list[i].keyword);
1044 + 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]});
1045 + }
1046 + }
1047 + }
1048 + menu_name.innerHTML="전체 기간의 키워드 순위 / "+label;
1049 + myList2 = new List("keyword2space", options_list, values_list_all);
1050 + }
1051 + else if(choosed_menu=="keyword3"){
1052 + chartspace.style="display:none";
1053 + keyword1space.style="display:none";
1054 + keyword2space.style="display:none";
1055 + keyword3space.style="display:inline";
1056 + keyword4space.style="display:none";
1057 +
1058 + myList3.clear();
1059 + values_list_between.length=0;
1060 +
1061 + for(var i=0;i<values_list.length;i++){
1062 + var keyword_str=values_list[i].keyword;
1063 + if(!keyword_str||values_list[i].date>date_end||values_list[i].date<date_start)
1064 + continue;
1065 + else{
1066 + if(keyword_str.includes(label)){
1067 + var data_temp=[];
1068 + data_temp.push(values_list[i].type_cs);
1069 + data_temp.push(values_list[i].number);
1070 + data_temp.push(values_list[i].date);
1071 + data_temp.push(values_list[i].body);
1072 + data_temp.push(values_list[i].keyword);
1073 + 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]});
1074 + }
1075 + }
1076 + }
1077 + menu_name.innerHTML="특정 기간의 키워드 순위 / "+label;
1078 + myList3 = new List("keyword3space", options_list, values_list_between);
1079 + }
1080 + else if(choosed_menu=="keyword4"){
1081 + chartspace.style="display:none";
1082 + keyword1space.style="display:none";
1083 + keyword2space.style="display:none";
1084 + keyword3space.style="display:none";
1085 + keyword4space.style="display:inline";
1086 +
1087 + myList4.clear();
1088 + values_list_with.length=0;
1089 +
1090 + for(var i=0;i<values_list.length;i++){
1091 + var keyword_str=values_list[i].keyword;
1092 + if(!values_list[i].number)
1093 + continue;
1094 + if(!keyword_str||!number.includes(values_list[i].number.split(" ")[0]))
1095 + continue;
1096 + else{
1097 + if(keyword_str.includes(label)){
1098 + var data_temp=[];
1099 + data_temp.push(values_list[i].type_cs);
1100 + data_temp.push(values_list[i].number);
1101 + data_temp.push(values_list[i].date);
1102 + data_temp.push(values_list[i].body);
1103 + data_temp.push(values_list[i].keyword);
1104 + 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]});
1105 + }
1106 + }
1107 + }
1108 + menu_name.innerHTML="특정 연락처와의 키워드 순위 / "+label;
1109 + myList4 = new List("keyword4space", options_list, values_list_with);
1110 + }
1111 +};
1112 +
1113 +var filter0List=[];
1114 +var filter1List=[];
1115 +var filter2List=[];
1116 +var filter3List=[];
1117 +var filter4List=[];
1118 +var filter5List=[];
1119 +var filter0_element=document.getElementsByClassName("filter0");
1120 +var filter1_element=document.getElementsByClassName("filter1");
1121 +var filter2_element=document.getElementsByClassName("filter2");
1122 +var filter3_element=document.getElementsByClassName("filter3");
1123 +var filter4_element=document.getElementsByClassName("filter4");
1124 +var filter5_element=document.getElementsByClassName("filter5");
1125 +
1126 +function filter_listener(event){
1127 + var data_value_temp=event.target.getAttribute('data_value');
1128 + var data_filter_temp="type_cs";
1129 + var checked_temp=event.target.checked;
1130 +
1131 + switch(event.target.id){
1132 + case "filter0":
1133 + filter_action(filter0List, checked_temp, data_filter_temp, data_value_temp, myList);
1134 + break;
1135 + case "filter1":
1136 + filter_action(filter1List, checked_temp, data_filter_temp, data_value_temp, myList1);
1137 + break;
1138 + case "filter2":
1139 + filter_action(filter2List, checked_temp, data_filter_temp, data_value_temp, myList2);
1140 + break;
1141 + case "filter3":
1142 + filter_action(filter3List, checked_temp, data_filter_temp, data_value_temp, myList3);
1143 + break;
1144 + case "filter4":
1145 + filter_action(filter4List, checked_temp, data_filter_temp, data_value_temp, myList4);
1146 + break;
1147 + case "filter5":
1148 + data_filter_temp=event.target.getAttribute('data_filter');
1149 + filter_action(filter5List, checked_temp, data_filter_temp, data_value_temp, myList5);
1150 + break;
1151 + }
1152 +}
1153 +function filter_action(paramlist, checked_temp, filter_temp, value_temp, myList_temp){
1154 + var _filter_temp=filter_temp;
1155 + if (checked_temp){
1156 + paramlist.push(value_temp);
1157 +
1158 + myList_temp.filter(function (item) {
1159 + var check_all=true;
1160 + for(var i=0;i<paramlist.length;i++){
1161 + if(item.values()[_filter_temp] !== paramlist[i])
1162 + check_all=false;
1163 + }
1164 + if(check_all)
1165 + return true;
1166 + else
1167 + return false;
1168 + });
1169 + }
1170 + else{
1171 + paramlist.splice(paramlist.indexOf(value_temp),1);
1172 +
1173 + myList_temp.filter(function (item) {
1174 + var check_all=true;
1175 + for(var i=0;i<paramlist.length;i++){
1176 + if(item.values()[_filter_temp] !== paramlist[i])
1177 + check_all=false;
1178 + }
1179 + if(check_all)
1180 + return true;
1181 + else
1182 + return false;
1183 + });
1184 + }
1185 +};
1186 +
1187 +for (var i = 0; i < filter0_element.length; i++) {
1188 + filter0_element[i].addEventListener('click', filter_listener, false);
1189 +}
1190 +for (var i = 0; i < filter1_element.length; i++) {
1191 + filter1_element[i].addEventListener('click', filter_listener, false);
1192 +}
1193 +for (var i = 0; i < filter2_element.length; i++) {
1194 + filter2_element[i].addEventListener('click', filter_listener, false);
1195 +}
1196 +for (var i = 0; i < filter3_element.length; i++) {
1197 + filter3_element[i].addEventListener('click', filter_listener, false);
1198 +}
1199 +for (var i = 0; i < filter4_element.length; i++) {
1200 + filter4_element[i].addEventListener('click', filter_listener, false);
1201 +}
1202 +for (var i = 0; i < filter5_element.length; i++) {
1203 + filter5_element[i].addEventListener('click', filter_listener, false);
1204 +}
...\ No newline at end of file ...\ No newline at end of file