diff --git a/src/main/java/de/hsel/spm/baudas/web/Columns.java b/src/main/java/de/hsel/spm/baudas/web/Columns.java new file mode 100644 index 0000000..9b00650 --- /dev/null +++ b/src/main/java/de/hsel/spm/baudas/web/Columns.java @@ -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; + } +} diff --git a/src/main/java/de/hsel/spm/baudas/web/ShoppingCartDiagram.java b/src/main/java/de/hsel/spm/baudas/web/ShoppingCartDiagram.java new file mode 100644 index 0000000..9e62281 --- /dev/null +++ b/src/main/java/de/hsel/spm/baudas/web/ShoppingCartDiagram.java @@ -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 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> result = new HashMap<>(); + result = cart.getResult(); + + List col1 = new ArrayList<>(); + List col2 = new ArrayList<>(); + + for(Map.Entry, List> 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)); + } +} diff --git a/src/main/webapp/footer.jsp b/src/main/webapp/footer.jsp index 13abf8f..c6fa151 100644 --- a/src/main/webapp/footer.jsp +++ b/src/main/webapp/footer.jsp @@ -4,7 +4,6 @@ - <%@include file="theming.jsp"%> @@ -13,9 +12,7 @@ - -<%----%> - + diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index a438d9e..2f081a6 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -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 @@ + <<<<<<< HEAD
@@ -74,111 +75,127 @@
-
- - - - -
-
-
-
- Warenkorbanalyse -
-
-

Coming Soon

-
-
-
-
- - - -
-
-
-
-
-
- Werbung + +
+
+
+ Warenkorbanalyse +
+
+ +
+ >>>>>>> origin/SPM-24 +
-
-

- 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. -
-
- Analysen, die für Werbung nützlich sein könnten: - Clusteranalyse, Wochenübersicht, Verkaufszahlen -

+
+ + +
+ + +
+
+
+
+
+
+ Werbung +
+
+

+ 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. +
+
+ Analysen, die für Werbung nützlich sein könnten: + Clusteranalyse, Wochenübersicht, Verkaufszahlen +

+
+
+
+
+
+
+
+
+ Sortimentsveränderung +
+
+

+ 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. +
+
+ Analysen, die bei der Sortimentswahl nützlich sein könnten: + Verkaufszahlen, Clusterübersicht +

+
+
+
+
+
+
+
+
+
+
+ Rabatt +
+
+

+ 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. +
+
+ Analysen, die zur Platzierung von Rabatten nützlich sein können: + Wochenübersicht, Einkaufszeiten, Verkaufszahlen +

+
+
+
+
+
+
+
+
+ Produktplatzierung +
+
+

+ 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. +
+
+ Analysen, die bei der Produktplatzierung hilfreich sein könnten: + Warenkorbsanalyse, Verkaufszahlen +

+
+
+
-
-
-
-
-
- Sortimentsveränderung -
-
-

- 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. -
-
- Analysen, die bei der Sortimentswahl nützlich sein könnten: - Verkaufszahlen, Clusterübersicht -

-
-
-
-
-
-
-
-
-
-
- Rabatt -
-
-

- 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. -
-
- Analysen, die zur Platzierung von Rabatten nützlich sein können: - Wochenübersicht, Einkaufszeiten, Verkaufszahlen -

-
-
-
-
-
-
-
-
- Produktplatzierung -
-
-

- 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. -
-
- Analysen, die bei der Produktplatzierung hilfreich sein könnten: - Warenkorbsanalyse, Verkaufszahlen -

-
-
-
-
-
-
- -<%@include file="footer.jsp"%> \ No newline at end of file +<%@include file="footer.jsp" %> \ No newline at end of file diff --git a/src/main/webapp/js/cache.js b/src/main/webapp/js/cache.js index 705181b..a7acfb1 100644 --- a/src/main/webapp/js/cache.js +++ b/src/main/webapp/js/cache.js @@ -40,6 +40,7 @@ function updateAll(uuid) { updateShoppingTimesChart(uuid); updateTopFlopChart(uuid); updateClusters(uuid) + updateShoppingCartTable(uuid); //add new charts here. } diff --git a/src/main/webapp/js/shopping_cart.js b/src/main/webapp/js/shopping_cart.js new file mode 100644 index 0000000..8edb9c5 --- /dev/null +++ b/src/main/webapp/js/shopping_cart.js @@ -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 = $(""); + row.append(""); + row.append("Artikel"); + row.append("Wird häufig zusammen gekauft mit") + row.append(""); + row.append(""); + row.append(""); + for (x in shopping_cart_result){ + row.append(""); + row.append("" + shopping_cart_result[x].col1 + ""); + row.append("" + shopping_cart_result[x].col2 + ""); + row.append(""); + } + row.append(""); + $("#shopping_cart_table").append(row); +} +