Merge branch '17-change-reporting-service-rest-parameter' into 'master'
authorDavid Kaufmann <david.kaufmann@student.tuwien.ac.at>
Sun, 25 Nov 2018 21:46:13 +0000 (22:46 +0100)
committerDavid Kaufmann <david.kaufmann@student.tuwien.ac.at>
Sun, 25 Nov 2018 21:46:13 +0000 (22:46 +0100)
Resolve "Change reporting-service rest parameter"

Closes #17

See merge request aic18/G6T4!16

service-reporting/Controllers/PdfController.cs
service-reporting/Models/Term.cs [moved from service-reporting/Models/Tweet.cs with 69% similarity]
service-reporting/README.md [new file with mode: 0644]
service-reporting/Utility/TemplateGenerator.cs
service-reporting/readme.md [deleted file]

index a47cbb1281898a0aca5a8390b6b496ac8e8bea86..4b679c6351849dfcb0cc524afd3675b039d84b74 100644 (file)
@@ -34,11 +34,11 @@ namespace PdfService.Controllers
             var objectSettings = new ObjectSettings
             {
                 PagesCount = true,
-                HtmlContent = TemplateGenerator.GetHTMLString(new Tweet[]{
-                    new Tweet("Test", "Good"),
-                    new Tweet("Test2", "Bad"),
-                    new Tweet("Another Tweet", "Bad"),
-                    new Tweet("Another bad Tweet", "Bad")
+                HtmlContent = TemplateGenerator.GetHTMLString(new Term[]{
+                    new Term("Good Term", 0.9),
+                    new Term("Term 1", 0.5),
+                    new Term("Another Term", 0.3),
+                    new Term("Another bad Tweet", 0.1)
                     }),
                 WebSettings = { DefaultEncoding = "utf-8", UserStyleSheet =  Path.Combine(Directory.GetCurrentDirectory(), "assets", "bulma.min.css") }
             };
@@ -56,7 +56,7 @@ namespace PdfService.Controllers
         // GET /generatePDF
         [Route("generatePDF")]
         [HttpPost]
-        public ActionResult GeneratePdf([FromBody] Tweet[] tweets)
+        public ActionResult GeneratePdf([FromBody] Term[] terms)
         {
             // check parameters
             if (!ModelState.IsValid)
@@ -64,9 +64,9 @@ namespace PdfService.Controllers
                 return BadRequest(ModelState);
             }
 
-            // check for emptyString
-            foreach(Tweet tweet in tweets) {
-                if(tweet.Name.Length<1 || tweet.Sentiment.Length<1){
+            // check parameter if they have correct form
+            foreach(Term term in terms) {
+                if(term.Name.Length<1 || term.Sentiment<0.0 || term.Sentiment>1.0){
                     return BadRequest(ModelState);
                 }
             }
@@ -83,7 +83,7 @@ namespace PdfService.Controllers
             var objectSettings = new ObjectSettings
             {
                 PagesCount = true,
-                HtmlContent = TemplateGenerator.GetHTMLString(tweets),
+                HtmlContent = TemplateGenerator.GetHTMLString(terms),
                 WebSettings = { DefaultEncoding = "utf-8", UserStyleSheet =  Path.Combine(Directory.GetCurrentDirectory(), "assets", "bulma.min.css") }
             };
  
similarity index 69%
rename from service-reporting/Models/Tweet.cs
rename to service-reporting/Models/Term.cs
index 6889d1453297de3c5d89479e4374381af0c4312d..bb6289036aa49bfa77c966bd8bc63d8120de2461 100644 (file)
@@ -3,13 +3,13 @@ namespace PdfService.Models
 {
     // represents the data got from sentiment analysis.
     // TODO: adapt to real data from sentiment analysis
-    public class Tweet
+    public class Term
     {
-        public Tweet(string Name, string Sentiment) {
+        public Term(string Name, double Sentiment) {
             this.Name = Name;
             this.Sentiment = Sentiment;
         }
         public string Name { get; set; }
-        public string Sentiment { get; set; }
+        public double Sentiment { get; set; }
     }
 }
\ No newline at end of file
diff --git a/service-reporting/README.md b/service-reporting/README.md
new file mode 100644 (file)
index 0000000..08ec2e9
--- /dev/null
@@ -0,0 +1,43 @@
+# PDF Service
+
+Provides a REST-API to generate PDF reports for terms and their sentiment analysis results. The service uses an .NET Core wrapper for the wkhtmltopdf library to generate pdf out of html code.
+
+`GET`: `/` Shows a demo page  
+- param: none
+- return: pdf file
+
+`POST`: `/generatePDF/` Generates a pdf report for the given terms
+- param: Term[] as Content-Type: `application/json`  
+e.g. body of request
+```json
+[
+  {
+    "name": "term 1",
+    "sentiment": 0.1
+  },
+  {
+    "name": "term 2",
+    "sentiment": 0.3
+  },
+  {
+    "name": "term 3",
+    "sentiment": 0.7
+  }
+]
+``` 
+- return: pdf file
+
+### Tweet model
+Term(string `Name`, double `Sentiment`)
+
+## run with docker
+
+- `docker build -t service-reporting .`    
+- `docker run -p YOUR_PORT:8083 service-reporting:latest`
+
+## run local
+### requirements
+- .net core 2.2
+- download [libwkhtml library](https://github.com/rdvojmoc/DinkToPdf/tree/master/v0.12.4) depending on your operating system and put it into `service-reporting` root folder
+### commands
+- `dotnet run`
\ No newline at end of file
index fa2ff9f0660fc6bab52f4694ce7ae3fec446ca37..5a7127399f646661aaf375b1ebddf2138f52dde9 100644 (file)
@@ -5,7 +5,7 @@ namespace PdfService.Utility
 {
     public static class TemplateGenerator
     {
-        public static string GetHTMLString(Tweet[] tweets)
+        public static string GetHTMLString(Term[] terms)
         {
             var sb = new StringBuilder();
             sb.Append(@"
@@ -25,21 +25,28 @@ namespace PdfService.Utility
                                     </div>
                                 </div>
                                 </section>
-                                <div class='notification'>
-                                    Generated report only contains mocked data. Will be changed later.
-                                </div> 
-                                <div class='container' style='margin-left:3em'>
+                                <div class='container' style='margin-left:3em; margin-right:3em'>
 
                                 ");
  
-            foreach (var tweet in tweets)
+            foreach (Term term in terms)
             {
+                string color = "";
+                if(term.Sentiment < 0.33)
+                    color = "is-danger";
+                else if(term.Sentiment < 0.66)
+                    color = "is-warning";
+                else 
+                    color = "is-success";
+
                 sb.AppendFormat(@"<div class='container' style='margin-top:3em;'>  
                             <p class='title is-5'>{0}</p>
                     <div class='content'>
-                    {1}
+                    Sentiment Analysis Result:
+                        <div class='column'><progress class='progress {2}' value='{1}' max='100'>{1}%</progress></div>
+                    
                     </div>
-                </div>", tweet.Name, tweet.Sentiment);
+                </div>", term.Name, System.Math.Ceiling(term.Sentiment*100), color);
             }
  
             sb.Append(@" </div>
diff --git a/service-reporting/readme.md b/service-reporting/readme.md
deleted file mode 100644 (file)
index 7a08567..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-# PDF Service
-
-Provides an API interface to generate PDF reports for tweets and their sentiment analysis results. The service uses an .NET Core wrapper for the wkhtmltopdf library to generate pdf out of html code.
-
-`GET`: `/` Shows a demo page  
-- param: none
-- return: pdf file
-
-`POST`: `/generatePDF/` Generates a pdf report for the given tweets
-- param: Tweet[] as Content-Type: `application/json`  
-- return: pdf file
-
-### Tweet model
-Tweet(string `Name`, string `Sentiment`)
-
-## run with docker
-
-- `docker build -t service-reporting .`    
-- `docker run -p YOUR_PORT:8083 service-reporting:latest`
-
-## run local
-### requirements
-- .net core 2.2
-- download [libwkhtml library](https://github.com/rdvojmoc/DinkToPdf/tree/master/v0.12.4) depending on your operating system and put it into `service-reporting` root folder
-### commands
-- `dotnet run`
\ No newline at end of file