use angularJS to visualize data
static directory change /public to / add nodemodules angularjs
Showing
7 changed files
with
76 additions
and
66 deletions
| ... | @@ -7,11 +7,11 @@ var http = require('http'); | ... | @@ -7,11 +7,11 @@ var http = require('http'); |
| 7 | var app= express(); | 7 | var app= express(); |
| 8 | 8 | ||
| 9 | app.locals.pretty = true; | 9 | app.locals.pretty = true; |
| 10 | -app.engine('html', require('ejs').renderFile); | 10 | +app.use(express.static(__dirname)); |
| 11 | -app.use(express.static('public')); | ||
| 12 | app.use('/user',express.static('uploads')); | 11 | app.use('/user',express.static('uploads')); |
| 13 | -app.set('views','./views'); | 12 | +app.set('views', __dirname + '/views'); |
| 14 | app.set('view engine', 'html'); | 13 | app.set('view engine', 'html'); |
| 14 | +app.engine('html', require('ejs').renderFile); | ||
| 15 | app.use(bodyParser.urlencoded({extended:false})); | 15 | app.use(bodyParser.urlencoded({extended:false})); |
| 16 | 16 | ||
| 17 | var storage = multer.diskStorage({ //이 객체의 프로퍼티는 2개갖고 있다. | 17 | var storage = multer.diskStorage({ //이 객체의 프로퍼티는 2개갖고 있다. |
| ... | @@ -25,15 +25,13 @@ var storage = multer.diskStorage({ //이 객체의 프로퍼티는 2개갖고 | ... | @@ -25,15 +25,13 @@ var storage = multer.diskStorage({ //이 객체의 프로퍼티는 2개갖고 |
| 25 | }); | 25 | }); |
| 26 | var upload = multer({ storage: storage}); | 26 | var upload = multer({ storage: storage}); |
| 27 | 27 | ||
| 28 | - | ||
| 29 | - | ||
| 30 | // Replace <Subscription Key> with your valid subscription key. | 28 | // Replace <Subscription Key> with your valid subscription key. |
| 31 | var subscriptionKey = '61650f4a2941462ea2dba74eabefd114'; | 29 | var subscriptionKey = '61650f4a2941462ea2dba74eabefd114'; |
| 32 | // You must use the same location in your REST call as you used to get your | 30 | // You must use the same location in your REST call as you used to get your |
| 33 | // subscription keys. For example, if you got your subscription keys from | 31 | // subscription keys. For example, if you got your subscription keys from |
| 34 | // westus, replace "westcentralus" in the URL below with "westus". | 32 | // westus, replace "westcentralus" in the URL below with "westus". |
| 35 | var uriBase = 'https://eastasia.api.cognitive.microsoft.com/face/v1.0/detect'; | 33 | var uriBase = 'https://eastasia.api.cognitive.microsoft.com/face/v1.0/detect'; |
| 36 | -var imageUrl = 'http://54.180.159.73:8080/user/mypic.jpg'; | 34 | +var imageUrl = 'http://54.180.159.73/user/mypic.jpg'; |
| 37 | // Request parameters. | 35 | // Request parameters. |
| 38 | var params = { | 36 | var params = { |
| 39 | 'returnFaceId': 'true', | 37 | 'returnFaceId': 'true', |
| ... | @@ -51,13 +49,18 @@ var options = { | ... | @@ -51,13 +49,18 @@ var options = { |
| 51 | } | 49 | } |
| 52 | }; | 50 | }; |
| 53 | 51 | ||
| 52 | + | ||
| 54 | app.get('/home', function(req,res){ | 53 | app.get('/home', function(req,res){ |
| 55 | console.log("home"); | 54 | console.log("home"); |
| 56 | res.render('upload'); | 55 | res.render('upload'); |
| 57 | }); | 56 | }); |
| 57 | + | ||
| 58 | app.post('/uploads', upload.single('userfile'),function(req,res){ | 58 | app.post('/uploads', upload.single('userfile'),function(req,res){ |
| 59 | - res.render("facedetection") | 59 | + res.render("facedetection"); |
| 60 | - console.log(req.file.path) | 60 | + |
| 61 | +}); | ||
| 62 | +app.get('/send2api', function (req, res) { | ||
| 63 | + console.log("aa") | ||
| 61 | request.post(options, (error, response, body) => { | 64 | request.post(options, (error, response, body) => { |
| 62 | if (error) { | 65 | if (error) { |
| 63 | console.log('Error: ', error); | 66 | console.log('Error: ', error); |
| ... | @@ -65,9 +68,9 @@ app.post('/uploads', upload.single('userfile'),function(req,res){ | ... | @@ -65,9 +68,9 @@ app.post('/uploads', upload.single('userfile'),function(req,res){ |
| 65 | } | 68 | } |
| 66 | let jsonResponse = JSON.stringify(JSON.parse(body), null, ' '); | 69 | let jsonResponse = JSON.stringify(JSON.parse(body), null, ' '); |
| 67 | console.log('JSON Response\n'); | 70 | console.log('JSON Response\n'); |
| 68 | - console.log(jsonResponse); | 71 | + res.send(jsonResponse); |
| 69 | }); | 72 | }); |
| 70 | -}); | 73 | +}) |
| 71 | 74 | ||
| 72 | app.listen(8080,function(){ | 75 | app.listen(8080,function(){ |
| 73 | console.log("connect 8080"); | 76 | console.log("connect 8080"); | ... | ... |
app/app.js
0 → 100644
| 1 | +var mainApp = angular.module('mainApp',[ | ||
| 2 | + 'ngRoute' | ||
| 3 | +]); | ||
| 4 | + | ||
| 5 | +mainApp.controller('mainAdminController', ['$scope', '$http', | ||
| 6 | + function ($scope, $http, angularTable) { | ||
| 7 | + $http({ | ||
| 8 | + method: 'GET', | ||
| 9 | + url: 'send2api' | ||
| 10 | + }) | ||
| 11 | + .then(function (response) { | ||
| 12 | + $scope.data = response.data; | ||
| 13 | + $scope.age = response.data[0].faceAttributes.age; | ||
| 14 | + $scope.emotion = response.data[0].faceAttributes.emotion; | ||
| 15 | + $scope.gender = response.data[0].faceAttributes.gender; | ||
| 16 | + $scope.hair = response.data[0].faceAttributes.hair.bald; | ||
| 17 | + console.log(response.data[0]) | ||
| 18 | + }); | ||
| 19 | + } | ||
| 20 | +]); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -20,6 +20,8 @@ | ... | @@ -20,6 +20,8 @@ |
| 20 | }, | 20 | }, |
| 21 | "homepage": "https://github.com/jun-hu/Facestimation_using_nodejs#readme", | 21 | "homepage": "https://github.com/jun-hu/Facestimation_using_nodejs#readme", |
| 22 | "dependencies": { | 22 | "dependencies": { |
| 23 | + "angular": "^1.7.5", | ||
| 24 | + "angular-route": "^1.7.5", | ||
| 23 | "body-parser": "^1.17.2", | 25 | "body-parser": "^1.17.2", |
| 24 | "ejs": "^2.6.1", | 26 | "ejs": "^2.6.1", |
| 25 | "express": "^4.15.3", | 27 | "express": "^4.15.3", | ... | ... |
| 1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
| 2 | -<html> | 2 | +<html ng-app="mainApp"> |
| 3 | <head> | 3 | <head> |
| 4 | <title>Age Detection</title> | 4 | <title>Age Detection</title> |
| 5 | <meta charset="utf-8" /> | 5 | <meta charset="utf-8" /> |
| 6 | + <script src="/node_modules/angular/angular.js"></script> | ||
| 7 | + <script src="/node_modules/angular-route/angular-route.js"></script> | ||
| 6 | <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> | 8 | <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> |
| 9 | + <script src="/app/app.js"></script> | ||
| 10 | + <style> | ||
| 11 | + .left-box { | ||
| 12 | + float: left; | ||
| 13 | + width: 50%; | ||
| 14 | + } | ||
| 15 | + .right-box { | ||
| 16 | + float: right; | ||
| 17 | + width: 50%; | ||
| 18 | + } | ||
| 19 | + </style> | ||
| 7 | </head> | 20 | </head> |
| 8 | -<body> | 21 | +<body ng-controller="mainAdminController"> |
| 9 | - <img src="http://54.180.159.73:8080/user/mypic.jpg"></img> | 22 | + <div class="left-box"> |
| 10 | - <button onclick="test()">완료</button> | 23 | + <img src="http://54.180.159.73:8080/user/mypic.jpg"> |
| 11 | - | 24 | + </div> |
| 12 | -<script type="text/javascript"> | ||
| 13 | - | ||
| 14 | - function test(){ | ||
| 15 | - | ||
| 16 | 25 | ||
| 26 | + <div class="right-box"> | ||
| 27 | + <div ng-repeat="row in data"> | ||
| 28 | + <p>age : {{ row.faceAttributes.age }}</p> | ||
| 29 | + <p>emotion : {{ row.faceAttributes.emotion }}</p> | ||
| 30 | + <p>gender : {{ row.faceAttributes.gender }}</p> | ||
| 31 | + <p>bald : {{ row.faceAttributes.hair.bald }}</p> | ||
| 32 | + </div> | ||
| 17 | 33 | ||
| 18 | - var params = { | 34 | + </div> |
| 19 | - // Request parameters <img src="http://54.180.159.73:8080/user/mypic.jpg"></img> | ||
| 20 | - "returnFaceId": "true", | ||
| 21 | - "returnFaceLandmarks": "false", | ||
| 22 | - "returnFaceAttributes": "age,gender", | ||
| 23 | - }; | ||
| 24 | 35 | ||
| 25 | - $.ajax({ | ||
| 26 | - // NOTE: You must use the same location in your REST call as you used to obtain your subscription keys. | ||
| 27 | - // For example, if you obtained your subscription keys from westus, replace "westcentralus" in the | ||
| 28 | - // URL below with "westus". | ||
| 29 | - url: "https://eastasia.api.cognitive.microsoft.com/face/v1.0/detect?" + $.param(params), | ||
| 30 | - beforeSend: function(xhrObj){ | ||
| 31 | - // Request headers | ||
| 32 | - xhrObj.setRequestHeader("Content-Type","application/json"); | ||
| 33 | - | ||
| 34 | - // NOTE: Replace the "Ocp-Apim-Subscription-Key" value with a valid subscription key. | ||
| 35 | - xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","61650f4a2941462ea2dba74eabefd114"); | ||
| 36 | - }, | ||
| 37 | - type: "POST", | ||
| 38 | - | ||
| 39 | - | ||
| 40 | - // Request body. | ||
| 41 | - data: '{"url":"http://localhost:8080/user/mypic.jpg"}', | ||
| 42 | - }) | ||
| 43 | - .done(function(data) { | ||
| 44 | - alert(JSON.stringify(data)); | ||
| 45 | - }) | ||
| 46 | - .fail(function(data) { | ||
| 47 | - alert(JSON.stringify(data)); | ||
| 48 | - }); | ||
| 49 | - } | ||
| 50 | -</script> | ||
| 51 | </body> | 36 | </body> |
| 52 | </html> | 37 | </html> | ... | ... |
| ... | @@ -18,13 +18,13 @@ | ... | @@ -18,13 +18,13 @@ |
| 18 | 18 | ||
| 19 | <title>Age Detection</title> | 19 | <title>Age Detection</title> |
| 20 | 20 | ||
| 21 | -<link rel ="stylesheet" href="http://54.180.159.73:8080/assets/css/upload.css"> | 21 | +<link rel ="stylesheet" href="http://54.180.159.73:8080/public/assets/css/upload.css"> |
| 22 | -<link rel="stylesheet" href="http://54.180.159.73:8080/assets/css/bootstrap.min.css"> | 22 | +<link rel="stylesheet" href="http://54.180.159.73:8080/public/assets/css/bootstrap.min.css"> |
| 23 | -<link rel="stylesheet" href="http://54.180.159.73:8080/assets/css/animate.css"> | 23 | +<link rel="stylesheet" href="http://54.180.159.73:8080/public/assets/css/animate.css"> |
| 24 | -<link rel="stylesheet" href="http://54.180.159.73:8080/assets/css/magnific-popup.css"> | 24 | +<link rel="stylesheet" href="http://54.180.159.73:8080/public/assets/css/magnific-popup.css"> |
| 25 | -<link rel="stylesheet" href="http://54.180.159.73:8080/assets/css/font-awesome.min.css"> | 25 | +<link rel="stylesheet" href="http://54.180.159.73:8080/public/assets/css/font-awesome.min.css"> |
| 26 | <!-- MAIN CSS --> | 26 | <!-- MAIN CSS --> |
| 27 | -<link rel="stylesheet" href="http://54.180.159.73:8080/assets/css/tooplate-style.css"> | 27 | +<link rel="stylesheet" href="http://54.180.159.73:8080/public/assets/css/tooplate-style.css"> |
| 28 | 28 | ||
| 29 | <!-- 이 태그를 head 태그에 배치하거나 닫는 body 태그 바로 앞에 배치하세요. --> | 29 | <!-- 이 태그를 head 태그에 배치하거나 닫는 body 태그 바로 앞에 배치하세요. --> |
| 30 | <script src="https://apis.google.com/js/platform.js" async defer> | 30 | <script src="https://apis.google.com/js/platform.js" async defer> |
| ... | @@ -112,14 +112,14 @@ | ... | @@ -112,14 +112,14 @@ |
| 112 | </footer> | 112 | </footer> |
| 113 | 113 | ||
| 114 | <!-- SCRIPTS --> | 114 | <!-- SCRIPTS --> |
| 115 | -<script src="http://54.180.159.73:8080/assets/js/jquery.js"></script> | 115 | +<script src="http://54.180.159.73:8080/public/assets/js/jquery.js"></script> |
| 116 | -<script src="http://54.180.159.73:8080/assets/js/bootstrap.min.js"></script> | 116 | +<script src="http://54.180.159.73:8080/public/assets/js/bootstrap.min.js"></script> |
| 117 | -<script src="http://54.180.159.73:8080/assets/js/jquery.parallax.js"></script> | 117 | +<script src="http://54.180.159.73:8080/public/assets/js/jquery.parallax.js"></script> |
| 118 | -<script src="http://54.180.159.73:8080/assets/js/smoothscroll.js"></script> | 118 | +<script src="http://54.180.159.73:8080/public/assets/js/smoothscroll.js"></script> |
| 119 | -<script src="http://54.180.159.73:8080/assets/js/jquery.magnific-popup.min.js"></script> | 119 | +<script src="http://54.180.159.73:8080/public/assets/js/jquery.magnific-popup.min.js"></script> |
| 120 | -<script src="http://54.180.159.73:8080/assets/js/magnific-popup-options.js"></script> | 120 | +<script src="http://54.180.159.73:8080/public/assets/js/magnific-popup-options.js"></script> |
| 121 | -<script src="http://54.180.159.73:8080/assets/js/wow.min.js"></script> | 121 | +<script src="http://54.180.159.73:8080/public/assets/js/wow.min.js"></script> |
| 122 | -<script src="http://54.180.159.73:8080/assets/js/custom.js"></script> | 122 | +<script src="http://54.180.159.73:8080/public/assets/js/custom.js"></script> |
| 123 | 123 | ||
| 124 | <script>/* | 124 | <script>/* |
| 125 | document.getElementById('userfile').onchange = function(){ | 125 | document.getElementById('userfile').onchange = function(){ | ... | ... |
| ... | @@ -96,7 +96,7 @@ | ... | @@ -96,7 +96,7 @@ |
| 96 | 96 | ||
| 97 | 97 | ||
| 98 | var params = { | 98 | var params = { |
| 99 | - // Request parameters <img src="http://localhost:8080/user/mypic.jpg"></img> | 99 | + // Request parameters <img src="http://54.180.159.73:8080/user/mypic.jpg"></img> |
| 100 | "returnFaceId": "true", | 100 | "returnFaceId": "true", |
| 101 | "returnFaceLandmarks": "false", | 101 | "returnFaceLandmarks": "false", |
| 102 | "returnFaceAttributes": "age,gender", | 102 | "returnFaceAttributes": "age,gender", | ... | ... |
-
Please register or login to post a comment