Merge remote-tracking branch 'origin/SPM-24'
This commit is contained in:
commit
f15ea28af3
|
@ -0,0 +1,11 @@
|
|||
package de.hsel.spm.baudas.web;
|
||||
|
||||
public class Columns {
|
||||
private String col1; //NOPMD
|
||||
private String col2; //NOPMD
|
||||
|
||||
public Columns(String col1, String col2){
|
||||
this.col1 = col1;
|
||||
this.col2 = col2;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
package de.hsel.spm.baudas.web;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import de.hsel.spm.baudas.analysis.ShoppingCart;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Changes data to readable format for table
|
||||
*
|
||||
* @author Karsten Eden
|
||||
* @version 0.1
|
||||
* @since 0.1
|
||||
*/
|
||||
@WebServlet("/shopping_cart")
|
||||
public class ShoppingCartDiagram extends HttpServlet {
|
||||
|
||||
private static final long serialVersionUID = 5026732432605473505L;
|
||||
|
||||
protected void doGet(@NotNull HttpServletRequest req, @NotNull HttpServletResponse resp) throws IOException {
|
||||
req.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
||||
resp.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
||||
resp.setContentType("application/json");
|
||||
PrintWriter out = resp.getWriter();
|
||||
|
||||
Gson gson = new Gson();
|
||||
List<Columns> colList = new ArrayList<>();
|
||||
|
||||
if (req.getParameter("id") == null) {
|
||||
out.print(gson.toJson(colList));
|
||||
return;
|
||||
}
|
||||
|
||||
UUID uuid = UUID.fromString(req.getParameter("id"));
|
||||
File file = Data.get(uuid);
|
||||
|
||||
ShoppingCart cart = new ShoppingCart(file);
|
||||
Map<List<String>, List<String>> result = new HashMap<>();
|
||||
result = cart.getResult();
|
||||
|
||||
List<String> col1 = new ArrayList<>();
|
||||
List<String> col2 = new ArrayList<>();
|
||||
|
||||
for(Map.Entry<List<String>, List<String>> entry : result.entrySet()){
|
||||
col1.add(entry.getKey().toString());
|
||||
col2.add(entry.getValue().toString());
|
||||
}
|
||||
|
||||
for(int i = 0; i < col1.size(); i++ ){
|
||||
colList.add(new Columns(col1.get(i).replaceAll("\\[", "").replaceAll("\\]", ""), col2.get(i).replaceAll("\\[", "").replaceAll("\\]", "")));
|
||||
}
|
||||
|
||||
out.print(gson.toJson(colList));
|
||||
}
|
||||
}
|
|
@ -4,7 +4,6 @@
|
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.min.js"
|
||||
integrity="sha256-xKeoJ50pzbUGkpQxDYHD7o7hxe0LaOGeguUidbq6vis=" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
|
||||
<%@include file="theming.jsp"%>
|
||||
|
||||
|
@ -13,9 +12,7 @@
|
|||
<script src="js/shopping_times.js"></script>
|
||||
<script src="js/top_flop.js"></script>
|
||||
<script src="js/clusters.js"></script>
|
||||
|
||||
<%--<script src="js/sold_articles.js"></script>--%>
|
||||
|
||||
<script src="js/shopping_cart.js"></script>
|
||||
|
||||
<!--Ende Skriptbereich-->
|
||||
</body>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<%@ page import="java.nio.charset.StandardCharsets" %>
|
||||
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||
<%@include file="menu.jsp"%>
|
||||
<%@include file="menu.jsp" %>
|
||||
<% response.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
||||
<% request.setCharacterEncoding(StandardCharsets.UTF_8.name()); %>
|
||||
|
||||
|
@ -63,6 +63,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!--Gruppenübersicht-->
|
||||
<div class="col s12 m12">
|
||||
<div id="group_overview" class="card white">
|
||||
|
@ -74,111 +75,127 @@
|
|||
<table id="cluster_table">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--Warenkorbanlyse-->
|
||||
<div id="shopping_card_analysis" class="col s12 m6">
|
||||
<div class="card white">
|
||||
<div class="card-content">
|
||||
<div class="center">
|
||||
<span class="card-title center">Warenkorbanalyse</span>
|
||||
</div>
|
||||
<div>
|
||||
<p>Coming Soon</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!--Marketing-Cards-->
|
||||
<div id="marketing" class="row container">
|
||||
<div class="row">
|
||||
<div class="col s12 m6">
|
||||
<div id="marketing_tip_3" class="card white">
|
||||
<div class="card-content">
|
||||
<div class="center">
|
||||
<span class="card-title center">Werbung</span>
|
||||
<!--Warenkorbanlyse-->
|
||||
<div id="shopping_card_analysis" class="col s12 m12">
|
||||
<div class="card white">
|
||||
<div class="center">
|
||||
<span class="card-title center">Warenkorbanalyse</span>
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<table id="shopping_cart_table">
|
||||
</table>
|
||||
>>>>>>> origin/SPM-24
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
Werbung dient dazu, auf bestimmte Produkte, Angebote oder den Markt im Allgemeinen aufmerksam zu machen. Sie kann über verschiedene Wege verbreitet werden, etwa das Internet, Zeitungsannoncen oder auch per TV/Radio.
|
||||
Im Gegensatz zu Rabatten (die zeitabhängig am besten funktionieren) ist Werbung stark von der Zielgruppe abhängig. Insbesondere in der Kombination mit anderen Marketingmaßnahmen kann sie so ihre volle Wirkung entfalten.
|
||||
<br>
|
||||
<br>
|
||||
Analysen, die für Werbung nützlich sein könnten:
|
||||
Clusteranalyse, Wochenübersicht, Verkaufszahlen
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!--Marketing-Cards-->
|
||||
<div id="marketing" class="row container">
|
||||
<div class="row">
|
||||
<div class="col s12 m6">
|
||||
<div id="marketing_tip_3" class="card white">
|
||||
<div class="card-content">
|
||||
<div class="center">
|
||||
<span class="card-title center">Werbung</span>
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
Werbung dient dazu, auf bestimmte Produkte, Angebote oder den Markt im
|
||||
Allgemeinen aufmerksam zu machen. Sie kann über verschiedene Wege verbreitet
|
||||
werden, etwa das Internet, Zeitungsannoncen oder auch per TV/Radio.
|
||||
Im Gegensatz zu Rabatten (die zeitabhängig am besten funktionieren) ist Werbung
|
||||
stark von der Zielgruppe abhängig. Insbesondere in der Kombination mit anderen
|
||||
Marketingmaßnahmen kann sie so ihre volle Wirkung entfalten.
|
||||
<br>
|
||||
<br>
|
||||
Analysen, die für Werbung nützlich sein könnten:
|
||||
Clusteranalyse, Wochenübersicht, Verkaufszahlen
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s12 m6">
|
||||
<div id="marketing_tip_4" class="card white">
|
||||
<div class="card-content">
|
||||
<div class="center">
|
||||
<span class="card-title center">Sortimentsveränderung</span>
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
Gibt es eine Produktgruppe, die sich besonders gut verkauft, so sollte unter
|
||||
Umständen über die Erweiterung des Sortiments innerhalb dieser Gruppe
|
||||
nachgedacht werden.
|
||||
Im Umkehrschluss dazu bietet sich an, schlecht verkaufte Produkte, welche keinen
|
||||
hohen Gewinn abwerfen aus dem täglichen Verkaufsgeschäft wieder zu entfernen.
|
||||
Dies verringert die Bildung von „Ladenhütern“ und schafft Platz für neue, sich
|
||||
besser verkaufende Produkte.
|
||||
<br>
|
||||
<br>
|
||||
Analysen, die bei der Sortimentswahl nützlich sein könnten:
|
||||
Verkaufszahlen, Clusterübersicht
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col s12 m6">
|
||||
<div id="marketing_tip_1" class="card white">
|
||||
<div class="card-content">
|
||||
<div class="center">
|
||||
<span class="card-title center">Rabatt</span>
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
Rabatte können z.B. an Tagen angeboten werden, an denen nur wenige Kunden
|
||||
erscheinen. Dadurch wird einerseits an dieses Tagen oder Uhrzeiten das
|
||||
Kaufverhalten angeregt, als auch der Andrang an anderen reduziert. Dies dient
|
||||
insbesondere der Entzerrung des zeitabhängigen Kaufverhaltens.
|
||||
Des Weiteren können durch Rabatte weniger gut laufende Produkte in den
|
||||
Vordergrund gerückt du vergünstigt angeboten werden.
|
||||
Zusätzlich dazu können sich gut verkaufende Produkte mit einem (vermeintlich)
|
||||
verringerten Preis versehen werden. Dies kann beim Kunden den „inneren
|
||||
Schnäppchenjäger“ wecken und dafür sorgen, dass er sich dieses gute Angebot
|
||||
nicht entgehen lassen kann.
|
||||
<br>
|
||||
<br>
|
||||
Analysen, die zur Platzierung von Rabatten nützlich sein können:
|
||||
Wochenübersicht, Einkaufszeiten, Verkaufszahlen
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s12 m6">
|
||||
<div id="marketing_tip_2" class="card white">
|
||||
<div class="card-content">
|
||||
<div class="center">
|
||||
<span class="card-title center">Produktplatzierung </span>
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
Es gibt bestimmte Produkte, die werden häufig zusammen erworben. Sind diese
|
||||
Produkte quer durch den Laden verstreut, so müssen die Kunden zusätzlich zu
|
||||
ihren Wunschprodukten auch an anderen Auslagen vorbei und die Anzahl an
|
||||
Spontankäufen eben jener weiteren Produkte steigt.
|
||||
<br>
|
||||
<br>
|
||||
Analysen, die bei der Produktplatzierung hilfreich sein könnten:
|
||||
Warenkorbsanalyse, Verkaufszahlen
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s12 m6">
|
||||
<div id="marketing_tip_4" class="card white">
|
||||
<div class="card-content">
|
||||
<div class="center">
|
||||
<span class="card-title center">Sortimentsveränderung</span>
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
Gibt es eine Produktgruppe, die sich besonders gut verkauft, so sollte unter Umständen über die Erweiterung des Sortiments innerhalb dieser Gruppe nachgedacht werden.
|
||||
Im Umkehrschluss dazu bietet sich an, schlecht verkaufte Produkte, welche keinen hohen Gewinn abwerfen aus dem täglichen Verkaufsgeschäft wieder zu entfernen. Dies verringert die Bildung von „Ladenhütern“ und schafft Platz für neue, sich besser verkaufende Produkte.
|
||||
<br>
|
||||
<br>
|
||||
Analysen, die bei der Sortimentswahl nützlich sein könnten:
|
||||
Verkaufszahlen, Clusterübersicht
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col s12 m6">
|
||||
<div id="marketing_tip_1" class="card white">
|
||||
<div class="card-content">
|
||||
<div class="center">
|
||||
<span class="card-title center">Rabatt</span>
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
Rabatte können z.B. an Tagen angeboten werden, an denen nur wenige Kunden erscheinen. Dadurch wird einerseits an dieses Tagen oder Uhrzeiten das Kaufverhalten angeregt, als auch der Andrang an anderen reduziert. Dies dient insbesondere der Entzerrung des zeitabhängigen Kaufverhaltens.
|
||||
Des Weiteren können durch Rabatte weniger gut laufende Produkte in den Vordergrund gerückt du vergünstigt angeboten werden.
|
||||
Zusätzlich dazu können sich gut verkaufende Produkte mit einem (vermeintlich) verringerten Preis versehen werden. Dies kann beim Kunden den „inneren Schnäppchenjäger“ wecken und dafür sorgen, dass er sich dieses gute Angebot nicht entgehen lassen kann.
|
||||
<br>
|
||||
<br>
|
||||
Analysen, die zur Platzierung von Rabatten nützlich sein können:
|
||||
Wochenübersicht, Einkaufszeiten, Verkaufszahlen
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s12 m6">
|
||||
<div id="marketing_tip_2" class="card white">
|
||||
<div class="card-content">
|
||||
<div class="center">
|
||||
<span class="card-title center">Produktplatzierung </span>
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
Es gibt bestimmte Produkte, die werden häufig zusammen erworben. Sind diese Produkte quer durch den Laden verstreut, so müssen die Kunden zusätzlich zu ihren Wunschprodukten auch an anderen Auslagen vorbei und die Anzahl an Spontankäufen eben jener weiteren Produkte steigt.
|
||||
<br>
|
||||
<br>
|
||||
Analysen, die bei der Produktplatzierung hilfreich sein könnten:
|
||||
Warenkorbsanalyse, Verkaufszahlen
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<%@include file="footer.jsp"%>
|
||||
<%@include file="footer.jsp" %>
|
|
@ -40,6 +40,7 @@ function updateAll(uuid) {
|
|||
updateShoppingTimesChart(uuid);
|
||||
updateTopFlopChart(uuid);
|
||||
updateClusters(uuid)
|
||||
updateShoppingCartTable(uuid);
|
||||
//add new charts here.
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
let shopping_cart_result;
|
||||
|
||||
function updateShoppingCartTable(id) {
|
||||
if(typeof id !== 'undefined') {
|
||||
request('shopping_cart', id).then(function (data) {
|
||||
shopping_cart_result = data;
|
||||
drawShoppingCartTable();
|
||||
});
|
||||
}else request('shopping_cart_result').then(function(data) {
|
||||
shopping_cart_result = data;
|
||||
drawShoppingCartTable();
|
||||
});
|
||||
}
|
||||
|
||||
function drawShoppingCartTable(){
|
||||
let table = document.getElementById("shopping_cart_table");
|
||||
while(table.hasChildNodes()){
|
||||
table.removeChild(table.firstChild);
|
||||
}
|
||||
|
||||
let row = $("<thead>");
|
||||
row.append("<tr>");
|
||||
row.append("<th>Artikel</th>");
|
||||
row.append("<th>Wird häufig zusammen gekauft mit</th>")
|
||||
row.append("</tr>");
|
||||
row.append("</thead>");
|
||||
row.append("<tbody>");
|
||||
for (x in shopping_cart_result){
|
||||
row.append("<tr>");
|
||||
row.append("<td>" + shopping_cart_result[x].col1 + "</td>");
|
||||
row.append("<td>" + shopping_cart_result[x].col2 + "</td>");
|
||||
row.append("</tr>");
|
||||
}
|
||||
row.append("</tbody>");
|
||||
$("#shopping_cart_table").append(row);
|
||||
}
|
||||
|
Loading…
Reference in New Issue