Rev 4932 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ page import="com.google.appengine.api.datastore.DatastoreServiceFactory" %><%@ page import="com.google.appengine.api.datastore.DatastoreService" %><%@ page import="com.google.appengine.api.datastore.Query" %><%@ page import="com.google.appengine.api.datastore.Entity" %><%@ page import="com.google.appengine.api.datastore.PreparedQuery" %><%@ page import="com.google.appengine.api.datastore.Query.SortDirection"%><%@ page import="java.util.Calendar"%><%@ page import="java.util.Map"%><%@ page import="java.util.LinkedHashMap"%><%@ page import="java.util.Map.Entry"%><%@ page import="java.text.ParseException"%><%@ page import="java.util.TimeZone"%><%@ page import="java.util.Date"%><%@ page import="java.util.Set"%><%@ page import="java.util.Calendar"%><%@ page import="java.text.SimpleDateFormat"%><%@ page import="in.shop2020.model.Category"%><html><head><script>var dataArray = [];</script><script type="text/javascript" language="javascript" src="/DataTables/media/js/jquery.js"></script><script type="text/javascript" language="javascript" src="/DataTables/media/js/jquery.dataTables.min.js"></script><script type="text/javascript" charset="utf-8" src="/DataTables/extras/TableTools/media/js/ZeroClipboard.js"></script><script type="text/javascript" charset="utf-8" src="/DataTables/extras/TableTools/media/js/TableTools.js"></script><script src="/js/flot/jquery.flot.js" ></script><script type="text/javascript" src = "/js/flot/jquery.flot.navigate.js"></script><link rel="stylesheet" href="/DataTables/media/css/demo_table.css" type="text/css" /><link rel="stylesheet" href="/DataTables/extras/TableTools/media/css/TableTools.css" type="text/css" /><title>Search Analysis</title></head><body><%Date toDate = new Date();Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("IST"));cal.add(Calendar.DAY_OF_MONTH, -2);Date fromDate = cal.getTime();SimpleDateFormat iSdf = new SimpleDateFormat("yyyyMMdd");String toDateStr = request.getParameter("toDate");String fromDateStr = request.getParameter("fromDate");if (fromDateStr == null || fromDateStr.isEmpty()) {fromDateStr = iSdf.format(fromDate);}if (toDateStr == null || toDateStr.isEmpty()) {toDateStr = iSdf.format(toDate);}String eventType = "PRODUCT_SEARCH";String productQuery = request.getParameter("productQuery");%><form id="searchfilter" name="searchfilter" method="post" action="/jsp/productSearch.jsp"><label>From Date(YYYYMMDD) : </label> <input type="text" name="fromDate" id="fromDate" value="<%= fromDateStr %>"/><label>To Date(YYYYMMDD) : </label> <input type="text" name="toDate" id="toDate" value="<%= toDateStr %>"/><% if(productQuery!=null){%><input type="text" name="productQuery" style = "display:none "value="<%= productQuery %>"/><% } %><input type="Submit" id="Submit" name="Submit" value="Submit" /></form><%try {if (fromDateStr != null) {fromDate = iSdf.parse(fromDateStr);}if (toDateStr != null) {toDate = iSdf.parse(toDateStr);}}catch (ParseException pe) {%><span>Invalid Date Format</span><%}SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");sdf.setTimeZone(TimeZone.getTimeZone("IST"));//Initializing Date variables for calculation of graph dataMap<Long, Long> graphData = new LinkedHashMap<Long, Long>();long previousDate = fromDate.getTime();graphData.put(previousDate, new Long(0));Calendar currentRecordDate = Calendar.getInstance();currentRecordDate.setTimeInMillis(fromDate.getTime());Calendar previousrecordDate = Calendar.getInstance();previousrecordDate.setTimeInMillis(fromDate.getTime());DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();Query query = new Query("DataLog");query.addFilter("eventType", Query.FilterOperator.EQUAL, "PRODUCT_SEARCH");query.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, fromDate);query.addFilter("date", Query.FilterOperator.LESS_THAN_OR_EQUAL, toDate);if(productQuery!=null){query.addFilter("query",Query.FilterOperator.EQUAL,productQuery);}PreparedQuery pq = datastore.prepare(query);%><table cellpadding="0" cellspacing="0" border="0" class="display" id="searchData"><thead><tr><th>Date</th><th>UserId</th><th>Session</th><th>Query String</th><th>Category</th><th>Number of Results</th></tr></thead><tbody><%for (Entity result : pq.asIterable()) {currentRecordDate.setTime((Date)(result.getProperty("date")));if((currentRecordDate.getTimeInMillis() - previousDate) >= 86400000) {long dayDiff = (currentRecordDate.getTimeInMillis() - previousrecordDate.getTimeInMillis()) / 86400000;for(int i = 1; i <= dayDiff; i ++) {previousDate = previousDate + 86400000;previousrecordDate.add(Calendar.DAY_OF_MONTH, 1);graphData.put(previousDate, new Long(0));}graphData.put(previousDate, new Long(1));} else {graphData.put(previousDate, graphData.get(previousDate) + 1);}%><tr><td><%=sdf.format((Date) (result.getProperty("date")))%></td><td><a href="/jsp/user-activity.jsp?email=<%=result.getProperty("email").toString()%>"><%= result.getProperty("email").toString() %></a></td><td><a href="/jsp/session-activity.jsp?sessionId=<%=result.getProperty("sessionId").toString()%>">View Session</a></td><td><%=(result.getProperty("query")) %></td><td><%=Category.findByValue(Integer.parseInt(result.getProperty("categoryId").toString())) %></td><td><%=(result.getProperty("totalResults")) %></td></tr><%}%></tbody></table><br/><br/><br/><div id = "zoombuttonholder"></div><%Set<Long> dateSet = graphData.keySet();for(Long date : dateSet){%><script>//Putting Graph data in javascript arraydataArray.push([<%=date%>,<%=graphData.get(date)%>]);</script><%} %><div id="placeholder" style="position:relative;width:950px;height:300px"></div><br><h3><a href= "/jsp/productSearchFrequency.jsp?toDate=<%=toDateStr%>&fromDate=<%=fromDateStr%>">Go back to Product Search Frequencies</a></h3><script type="text/javascript" charset="utf-8">$(document).ready(function() {$('#searchData').dataTable({"sPaginationType": "full_numbers","bProcessing": true,"bStateSave": true,"sDom": 'T<"clear">lfrtip',"bFilter": false,"oTableTools": {"sSwfPath": "/DataTables/extras/TableTools/media/swf/copy_cvs_xls_pdf.swf"},"aoColumns": [null,null,null,null,null,null]});var options = {legend: {show: true,margin: 10,backgroundOpacity: 0.5},points: {show: true,},lines: {show: true,lineWidth: 1,fill: true,fillColor: { colors: [ "#87CEFA",{ opacity: 0.05 } ] }},xaxis: {mode:"time",timeformat: "%y/%m/%d",panRange: [<%=fromDate.getTime()%>,<%=toDate.getTime()%>]},yaxis: {panRange: [0,5000]},fill: true,zoom: {interactive: true},pan: {interactive: true},};var data = [{label: "Product Search Frequency",data: dataArray,}];//Generating the graph with specified "data" & "options" in div "placeholder"var plot = $.plot($("#placeholder"),data,options);// add zoom out button$('<div class="button" style="width:75px;color:#999;left:800px;cursor:pointer;background-color:#eee;padding:2px">zoom out</div>').appendTo($('#zoombuttonholder')).click(function (e) {e.preventDefault();plot.zoomOut();});} );</script></body></html>