Compare commits

...

6 Commits

  1. 1
      .gitignore
  2. 21
      bower.json
  3. 0
      css/bootstrap-theme.min.css
  4. 0
      css/bootstrap-theme.min.css.map
  5. 0
      css/bootstrap.min.css
  6. 0
      css/bootstrap.min.css.map
  7. 0
      css/materialize.css
  8. 0
      css/materialize.min.css
  9. 89
      css/stdb.css
  10. 0
      css/style.css
  11. 0
      font/material-design-icons/LICENSE.txt
  12. 0
      font/material-design-icons/Material-Design-Icons.eot
  13. 0
      font/material-design-icons/Material-Design-Icons.svg
  14. 0
      font/material-design-icons/Material-Design-Icons.ttf
  15. 0
      font/material-design-icons/Material-Design-Icons.woff
  16. 0
      font/material-design-icons/Material-Design-Icons.woff2
  17. 0
      font/roboto/Roboto-Bold.eot
  18. 0
      font/roboto/Roboto-Bold.ttf
  19. 0
      font/roboto/Roboto-Bold.woff
  20. 0
      font/roboto/Roboto-Bold.woff2
  21. 0
      font/roboto/Roboto-Light.eot
  22. 0
      font/roboto/Roboto-Light.ttf
  23. 0
      font/roboto/Roboto-Light.woff
  24. 0
      font/roboto/Roboto-Light.woff2
  25. 0
      font/roboto/Roboto-Medium.eot
  26. 0
      font/roboto/Roboto-Medium.ttf
  27. 0
      font/roboto/Roboto-Medium.woff
  28. 0
      font/roboto/Roboto-Medium.woff2
  29. 0
      font/roboto/Roboto-Regular.eot
  30. 0
      font/roboto/Roboto-Regular.ttf
  31. 0
      font/roboto/Roboto-Regular.woff
  32. 0
      font/roboto/Roboto-Regular.woff2
  33. 0
      font/roboto/Roboto-Thin.eot
  34. 0
      font/roboto/Roboto-Thin.ttf
  35. 0
      font/roboto/Roboto-Thin.woff
  36. 0
      font/roboto/Roboto-Thin.woff2
  37. 0
      fonts/roboto/Roboto-Bold.eot
  38. 0
      fonts/roboto/Roboto-Bold.ttf
  39. 0
      fonts/roboto/Roboto-Bold.woff
  40. 0
      fonts/roboto/Roboto-Bold.woff2
  41. 0
      fonts/roboto/Roboto-Light.eot
  42. 0
      fonts/roboto/Roboto-Light.ttf
  43. 0
      fonts/roboto/Roboto-Light.woff
  44. 0
      fonts/roboto/Roboto-Light.woff2
  45. 0
      fonts/roboto/Roboto-Medium.eot
  46. 0
      fonts/roboto/Roboto-Medium.ttf
  47. 0
      fonts/roboto/Roboto-Medium.woff
  48. 0
      fonts/roboto/Roboto-Medium.woff2
  49. 0
      fonts/roboto/Roboto-Regular.eot
  50. 0
      fonts/roboto/Roboto-Regular.ttf
  51. 0
      fonts/roboto/Roboto-Regular.woff
  52. 0
      fonts/roboto/Roboto-Regular.woff2
  53. 0
      fonts/roboto/Roboto-Thin.eot
  54. 0
      fonts/roboto/Roboto-Thin.ttf
  55. 0
      fonts/roboto/Roboto-Thin.woff
  56. 0
      fonts/roboto/Roboto-Thin.woff2
  57. 124
      index.html
  58. 259
      instrument.html
  59. 0
      js/bootstrap.js
  60. 0
      js/bootstrap.min.js
  61. 0
      js/jquery-3.0.0.min.js
  62. 0
      js/jwtDecode.min.js
  63. 0
      js/materialize.js
  64. 0
      js/materialize.min.js
  65. 0
      js/npm.js
  66. 561
      js/stdb.js
  67. 242
      login.html
  68. 0
      scss/style.scss
  69. 182
      stat.html

1
.gitignore vendored

@ -0,0 +1 @@
bower_components/*

21
bower.json

@ -0,0 +1,21 @@
{
"name": "stdb-webapp",
"authors": [
"sipp11 <sipp11@zzyzx.co>"
],
"description": "",
"main": "",
"moduleType": [],
"license": "MIT",
"homepage": "",
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"dependencies": {
"sweetalert": "^1.1.3"
}
}

0
css/bootstrap-theme.min.css vendored

0
css/bootstrap-theme.min.css.map

0
css/bootstrap.min.css vendored

0
css/bootstrap.min.css.map

0
css/materialize.css vendored

0
css/materialize.min.css vendored

89
css/stdb.css

@ -6,6 +6,39 @@ ul {
background-color: #333;
}
[type="radio"]:not(:checked), [type="radio"]:checked,
[type="checkbox"]:not(:checked), [type="checkbox"]:checked {
position: static;
left: auto;
opacity: 1;
}
.pull-right {
float: right;
}
.danger {
color: rgb(201, 0, 0);
z-index: 10;
}
a.hideBtn {
background: white;
padding: 2rem;
margin: 1rem;
}
span.tag {
background: #ccc;
margin: 0 5px;
border-radius: 3px;
padding: 0 1rem;
color: black;
}
ul.list-inline {
background: white;
}
li {
float: left;
}
@ -68,6 +101,7 @@ img{
width: 100%;
color:#FFF;
font-size:30px;
z-index:1;
}
.container{
margin-right: auto;
@ -155,7 +189,7 @@ img{
left: 0;
top: 0;
width: 100%;
height: 1000px;
height: 100%;
overflow: auto;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
@ -212,3 +246,56 @@ img{
border: 0px;
}
/* Author :: Apirak */
/* Add cover image to display */
/*.box-left {
width: 20%;
height: 100%;
display: inline-table;
}
.box-right {
float: right;
width: 80%;
height: 100%;
display: inline-table;
}*/
img.cover-img {
width: 120px;
height: 120px;
/*margin-top: -2%;*/
/*margin-left: 1%;*/
}
/* End */
/* upload img */
a.btn-edit{
position: relative;
margin-left: 70%;
margin-top: 15%;
padding-left: 5px;
padding-right: 5px;
background-color: rgba(0,0,0,0.13);
border-radius: 10px;
color: white;
}
.modal h2{
margin-left: -300%;
}
a.btn-edit#order0{
margin-top: -85%;
margin-left: 84%;
}
.upload{
z-index: -1;
}
iframe{
margin-left: 13%;
margin-top: -13%;
}
img.img-with-youtube{
height: 300px;
}

0
css/style.css

0
font/material-design-icons/LICENSE.txt

0
font/material-design-icons/Material-Design-Icons.eot

0
font/material-design-icons/Material-Design-Icons.svg

Before

Width:  |  Height:  |  Size: 322 KiB

After

Width:  |  Height:  |  Size: 322 KiB

0
font/material-design-icons/Material-Design-Icons.ttf

0
font/material-design-icons/Material-Design-Icons.woff

0
font/material-design-icons/Material-Design-Icons.woff2

0
font/roboto/Roboto-Bold.eot

0
font/roboto/Roboto-Bold.ttf

0
font/roboto/Roboto-Bold.woff

0
font/roboto/Roboto-Bold.woff2

0
font/roboto/Roboto-Light.eot

0
font/roboto/Roboto-Light.ttf

0
font/roboto/Roboto-Light.woff

0
font/roboto/Roboto-Light.woff2

0
font/roboto/Roboto-Medium.eot

0
font/roboto/Roboto-Medium.ttf

0
font/roboto/Roboto-Medium.woff

0
font/roboto/Roboto-Medium.woff2

0
font/roboto/Roboto-Regular.eot

0
font/roboto/Roboto-Regular.ttf

0
font/roboto/Roboto-Regular.woff

0
font/roboto/Roboto-Regular.woff2

0
font/roboto/Roboto-Thin.eot

0
font/roboto/Roboto-Thin.ttf

0
font/roboto/Roboto-Thin.woff

0
font/roboto/Roboto-Thin.woff2

0
fonts/roboto/Roboto-Bold.eot

0
fonts/roboto/Roboto-Bold.ttf

0
fonts/roboto/Roboto-Bold.woff

0
fonts/roboto/Roboto-Bold.woff2

0
fonts/roboto/Roboto-Light.eot

0
fonts/roboto/Roboto-Light.ttf

0
fonts/roboto/Roboto-Light.woff

0
fonts/roboto/Roboto-Light.woff2

0
fonts/roboto/Roboto-Medium.eot

0
fonts/roboto/Roboto-Medium.ttf

0
fonts/roboto/Roboto-Medium.woff

0
fonts/roboto/Roboto-Medium.woff2

0
fonts/roboto/Roboto-Regular.eot

0
fonts/roboto/Roboto-Regular.ttf

0
fonts/roboto/Roboto-Regular.woff

0
fonts/roboto/Roboto-Regular.woff2

0
fonts/roboto/Roboto-Thin.eot

0
fonts/roboto/Roboto-Thin.ttf

0
fonts/roboto/Roboto-Thin.woff

0
fonts/roboto/Roboto-Thin.woff2

124
index.html

@ -3,115 +3,53 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
content="width=device-width, initial-scale=1, user-scalable=0, maximum-scale=1, minimum-scale=1">
<title>Login Form</title>
<link rel="stylesheet" href="css/style.css">
<title>Traffy</title>
<link type="text/css" rel="stylesheet" href="css/materialize.min.css" media="screen,projection"/>
<link type="text/css" rel="stylesheet" href="css/stdb.css" media="screen,projection"/>
<link rel="shortcut icon" type="image/png" href="https://avatars1.githubusercontent.com/u/17867603?v=3&s=200"/>
<script src="js/jquery-3.0.0.min.js"></script>
<!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<style>
.flexCenter {
display:flex;
height: 550px;
justify-content: center;
align-items:center;
html {
height: 100%;
}
body {
min-height: 100%;
}
a:active {
-webkit-text-fill-color: #000000;
-webkit-text-stroke-width: 2px;
-webkit-text-stroke-color: #000000;
}
</style>
</head>
<body>
<section id="boxlogin" class="container">
<body class="flexCenter" style="background-color:#0ca3d2;">
</section>
</body>
<script language="javascript">
var token = ''
<div >
<div>
<a href="login.html" style="font-size:100px;color:#F0F0F0;" >LOGIN</a>
<h style="font-size:200px;color:#F0F0F0;" >|</h>
<a href="stat.html" style="font-size:100px;color:#F0F0F0;" >STAT</a>
</div>
</div>
function pasuser(form) {
var data = {"username": form.login.value, "password": form.password.value}
// console.log(form.login.value)
// console.log(form.password.value)
// console.log(data)
$.ajax({
type: "POST",
url: 'http://www.serv.stdb.most.go.th/api-token-auth/',
data: data,
success: success,
dataType: 'json'
});
}
function success(respone) {
// console.log(respone)
// console.log(respone.token)
localStorage.setItem("token", respone.token);
getToken();
}
function getToken(){
sesToken = sessionStorage.getItem('token');
if( sesToken === null){
token = localStorage.getItem("token")
// console.log(token)
// console.log('==================')
if( token != null ){
$.ajax({
type: "POST",
url: 'http://www.serv.stdb.most.go.th/api-token-verify/',
data: { "token" : token },
header: {
Authorization: 'Bearer '+ token,
},
success: checkToken,
dataType: 'json'
});
}
else{
loginPage();
}
}
else{
window.location.href = 'login.html';
}
}
</body>
function checkToken(tokenrespone) {
sessionStorage.getItem('token',tokenrespone.token);
try {
if( tokenrespone.token === token ){
window.location.href = 'login.html';
// console.log('go to page');
// console.log(tokenrespone.token);
}
}
catch(err) {
// console.log(err.message);
loginPage();
}
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
}
ga('create', 'UA-72505920-2', 'auto');
ga('send', 'pageview');
function loginPage(){
localStorage.removeItem('token');
var loginTag = '<div class="login">'
+'<h1>Login to STDB</h1>'
+'<form method="post" >'
+'<p><input type="text" name="login" value="" placeholder="Username or Email"></p>'
+'<p><input type="password" name="password" value="" placeholder="Password"></p>'
+'<p class="remember_me">'
+'<label>'
+'<input type="checkbox" name="remember_me" id="remember_me">'
+'Remember me on this computer'
+'</label>'
+'</p>'
+' <p class="submit"><input type="button" value="Login" onClick="pasuser(this.form)"></p>'
+'</form>'
+'</div>'
document.getElementById("boxlogin").innerHTML = loginTag
}
getToken()
</script>
</html>

259
instrument.html

@ -0,0 +1,259 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- <meta name="viewport"
content="width=device-width, initial-scale=1, user-scalable=0, maximum-scale=1, minimum-scale=1"> -->
<title>Traffy STDB</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="//api.traffy.xyz/static/font-awesome/css/font-awesome.min.css" />
<link rel="shortcut icon" type="image/png" href="https://avatars1.githubusercontent.com/u/17867603?v=3&s=200"/>
<script src="//api.traffy.xyz/static/jquery/dist/jquery.min.js"></script>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script src="//api.traffy.xyz/static/underscore/underscore-min.js"></script>
<script type="text/javascript" src="js/materialize.min.js"></script>
<script type="text/javascript" src="js/jwtDecode.min.js"></script>
<link type="text/css" rel="stylesheet" href="css/materialize.min.css" media="screen,projection"/>
<link type="text/css" rel="stylesheet" href="css/stdb.css" media="screen,projection"/>
<link rel="stylesheet" type="text/css" href="/bower_components/sweetalert/dist/sweetalert.css">
<!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<style>
div.tags {
margin: 0 auto;
padding: 10px 3rem;
background: rgba(0, 153, 204, 1);
}
div.tags>ul.list-inline {
background: rgba(0, 153, 204, 1);
}
#is-filter {
background: white;
padding-left: 10rem;
padding-right: 10rem;
}
#is-filter label {
padding: 0 1rem;
font-size: 1.1rem;
color: rgba(91, 91, 91, 1);
}
.box_ {
display: flex;
flex-direction: row;
}
.box-left {
width: 140px;
display: flex;
align-items: center;
justify-content: center;
}
.box-right {
flex: 1;
}
.box-right .card-title {
padding-right: 20px;
}
</style>
</head>
<body>
<div>
<ul class="titleIn">
<center>
<li><a href="javascript:history.go(0)" class="active">Instrument</a></li>
<li style="float:right;font-size:18px"><a onClick="LogoutPage()">Logout</a></li>
<li style="float:right;font-size:18px"><a onClick="modalItem('add')">Add Instrument</a></li>
<li style="float:right;"><a class="material-icons" onclick="modalItem('search')" style="color:#FFF;">search</a></li>
</center>
</ul>
</div>
<div class="boxShow">
<div id="nameOrgan" class="flexCenter" style="margin-top:120px;font-size:40px;color:#F0F0F0"></div>
</div>
<div class="boxShow">
<!-- like -->
<div style="margin-top:20px;">
<li class="cardData" >
<div>
<i class="medium material-icons " style="">thumb_up</i>
<div class="flexCenter" style="font-size:18px;" id='like'></div>
<div style="font-size:14px;color:#868686" id='like'>(Last 7 day)</div>
</div>
</li>
<!-- status -->
<li class="cardData" >
<div>
<i class="medium material-icons " style="color:#4CAF50">trending_up</i>
<div class="flexCenter" style="font-size:18px;" id='status'></div>
<div style="font-size:14px;color:#868686" id='like'>(Last 7 day)</div>
</div>
</li>
<!-- accountActive -->
<li class="cardData" >
<div>
<i class="medium material-icons " style="">people</i>
<div class="flexCenter" style="font-size:18px;" id='accountActive'></div>
<div style="font-size:14px;color:#868686" id='like'>(Last 7 day)</div>
</div>
</li>
<!-- equipment -->
<li class="cardData" style="width: 300px;display:block;" >
<center><h1 style="font-size:18px;margin-top:10px;margin-bottom:15px">ปกรณ</h1></center>
<div class="flexCenterSpace">
<i class="medium material-icons ">featured_play_list</i>
<i class="medium material-icons ">photo</i>
</div>
<div class="flexCenterSpace" style="margin-top:-3px;">
<i style='margin-right:15px'>งหมด</i>
<i style='margin-right:10px'></i>
</div>
<div class="flexCenterSpace" style="margin-top:-5px;">
<i id="numAll" style='margin-right:15px'></i>
<i id="numPhoto" style='margin-right:10px'></i>
</div>
</li>
</div>
</div>
<div class="boxShow" id="is-filter">
<ul class="list-inline">
<li><label>
<input type="checkbox" name="is" value="has_photo">
</label></li>
<li><label>
<input type="checkbox" name="is" value="missing">
อมลไมครบ
</label></li>
<li><label>
<input type="checkbox" name="is" value="completed">
อมลครบถวน
</label></li>
</ul>
</div>
<div class="boxShow" id="any-filter">
</div>
<div id="card" class="container" style="max-width:800px"></div>
<div id="modalAll" ></div>
<div id="more" class="container" style="max-width:800px;height:80px"> </div >
<div id="modaladd" class="modal" style="max-height: 100%;display: none;padding-top:10px;">
<div class="modal-content cardStyle" >
<div class="flexCenter">
<div class="flexCenter bgImage">
<div class="flexCenter">
<img id="myImg0add" src="" alt=""/>
<div class="bgImage flexCenter"><h2>ไมปภาพ</h2></div>
</div>
<div class="column bgMiniImage" style="margin-left:10px">
<img id="myImg1add" class="miniImage" src="" alt=""/>
<h6 class="miniImage flexCenter" >ไมปภาพ</h6>
<img id="myImg2add" class="miniImage" src="" alt=""/>
<h6 class="miniImage flexCenter" >ไมปภาพ</h6>
<img id="myImg3add" class="miniImage" style="margin-top:5px" src="" alt=""/>
<h6 class="miniImage flexCenter" style="margin-top:5px">ไมปภาพ</h6>
</div>
</div>
</div>
<div class="flexCenter" style="margin-top:5px;">
<div class="upload flexCenter">
<a style="font-size:18px">Upload</a></div>
<input type="file" name="upload" onclick="uploadImage('add')"/>'
</div>'
<div>
<div style="font-size:20px;margin-top:10px">อครณฑทยาศาสตร</div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="nameI" name="nameI" value="" placeholder="ชอครณฑทยาศาสตร"></div>
</div>
<div>
<div style="font-size:20px;margin-top:10px">ดประสงคและลกษณะการใชงาน</div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="noteI" name="noteI" value="" placeholder="จดประสงคและลกษณะการใชงาน"></div>
</div>
<div>
<div style="font-size:20px;margin-top:10px">เลขครณฑ</div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="idI" name="idI" value="" placeholder="เลขครณฑ"></div>
</div>
<div>
<div style="font-size:20px;margin-top:10px">แล</div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="CrI" name="CrI" value="" placeholder="ชอ นามสกล"></div>
</div>
<div>
<div style="font-size:20px;margin-top:10px">สถานท</div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="LcI" name="LcI" value="" placeholder="สถานท"></div>
</div>
<div>
<div style="font-size:20px;margin-top:10px"></div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="makeI" name="makeI" value="" placeholder="ยอ"></div>
</div>
<div>
<div style="font-size:20px;margin-top:10px"></div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="modelI" name="modelI" value="" placeholder="รน"></div>
</div>
<div>
<div style="font-size:20px;margin-top:10px">โอ(youtube)</div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="YlI" name="YlI" value="" placeholder="https://www.youtube.com/watch?v=xxxxx"></div>
</div>
<div class="flexCenterSpace" style="margin-top:20px">
<input type="button" onclick="addData('add')" class="buttonUpdate" value="Add">
<input type="button" onclick="backData('add')" class="buttonBack" value="Back">
</div>
</div>
</div>
<div id="modalsearch" class="modal" style="max-height: 100%;display: none;padding-top:100px;">
<div class="modal-content cardStyle" >
<div>
<input type="text" class="cardSearch" id="searchId" value="" placeholder="Search">
<div class="flexEnd">
<button class="buttonSearch flexCenter" onclick="searchItem('search')">
<a class="material-icons" style="color:#FFF;">search</a>
</button>
</div>
</div>
</div>
</div>
<script type="text/template" class="template" id="tag-list">
<div class="tags">
<ul class="list-inline"><% for (i in items) {%>
<li><label>
<input type="checkbox" name="tags" value="<%- items[i][0] %>"
<%- (selected.indexOf(items[i][0]) > -1 ? "checked": "") %>
>
<span class="tag"><%- items[i][0] %></span>
</label></li>
<% } %></ul>
<div>
</script>
<script src="/bower_components/sweetalert/dist/sweetalert.min.js"></script>
<script type="text/javascript" src="js/stdb.js"></script>
</body>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-72505920-2', 'auto');
ga('send', 'pageview');
</script>
<script language="javascript">
function searchItem(idSearch){
var modal = document.getElementById('modal'+idSearch);
modal.style.display = "none";
getUser('search')
}
</script>
</html>

0
js/bootstrap.js vendored

0
js/bootstrap.min.js vendored

0
js/jquery-3.0.0.min.js vendored

0
js/jwtDecode.min.js vendored

0
js/materialize.js vendored

0
js/materialize.min.js vendored

561
js/stdb.js

@ -6,15 +6,175 @@ var dataInstrument = []
var start = 0
var nextUrl = ''
htmlText = ''
var dataUri = []
var dataUri = [];
var processingNext = false;
var clickOnHideButton = false;
var xhr = null;
var tagsTmpl = _.template($("script#tag-list").html());
function getStartPage(){
var hideItem = function(itemId, divBox) {
var html = divBox.html();
divBox.html('<i class="fa fa-4x fa-spin fa-spinner"></i>')
data = {'hide': true};
token = sessionStorage.getItem('token')
$.ajax({
type: "PATCH",
url: 'http://www.serv.stdb.most.go.th/api/v2/instrument/'+ itemId +'/',
data: JSON.stringify(data),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token,
},
success: function(respone) {
divBox.html('ลบเรยบรอยแลว ...').delay(2000).fadeOut(500);
},
fail: function() {
divBox.html('มญหาขดของ ...').delay(1000).html(html);
},
dataType: 'json'
});
}
var reloadCardListener = function() {
$('.hideBtn').click(function(evt) {
clickOnHideButton = true;
setTimeout(function() {
clickOnHideButton = false;
}, 1000);
evt.stopPropagation();
var that = $(this);
var itemId = that.data('id');
var $parent = that.closest('.cardStyle');
swal(
{
title: "ลบ?",
text: "ไมใชครณฑทยาศาสตร",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "ลบเลย!"
}, function(yes) {
if (yes)
hideItem(itemId, $parent)
}
);
});
}
var reloadItem = function() {
if (xhr)
xhr.abort();
// reset stuff
start = 0
$('#modalAll').html('');
$('#card').html('');
htmlText = '';
modalText = '';
dataInstrument = [];
/// start doing new onw
var orgId = sessionStorage.getItem('orgId');
if (!orgId) {
alert('something is wrong, try reloading');
}
var token = sessionStorage.getItem('token');
var tagFilter = '';
if (localStorage.getItem('selFilters')) {
tagFilter = localStorage.getItem('selFilters').split(',');
tagFilter = '&tags=' + tagFilter;
}
var isFilter = '';
if (localStorage.getItem('selIsFilters')) {
isFilter = localStorage.getItem('selIsFilters').split(',');
isFilter = '&is=' + isFilter;
}
var url = 'http://www.serv.stdb.most.go.th/api/v2/instrument/?organization='+orgId+tagFilter+isFilter;
xhr = $.ajax({
type: "GET",
url: url,
headers :{
Authorization: 'Bearer '+ token,
Accept: 'application/json, text/javascript',
'Accept-Language' : 'en-US,en;q=0.8,th;q=0.6',
},
success: getData,
dataType: 'json',
});
}
var reloadFilterListener = function() {
var selectedFilter = [];
if (localStorage.getItem('selFilters')) {
selectedFilter = localStorage.getItem('selFilters').split(',');
}
$('input[name="tags"]').change(
function() {
var n = $(this).val();
if ($(this).is(':checked')) {
selectedFilter = [n];
localStorage.setItem('selFilters', selectedFilter.join(','));
$('input[name="tags"]').each(function() {
if ($(this).val() != n)
$(this).prop('checked', false);
});
} else {
selectedFilter = [];
localStorage.removeItem('selFilters');
$('input[name="tags"]').prop('checked', false);
}
reloadItem();
});
$('input[name="is"]').change(
function() {
var n = $(this).val();
if ($(this).is(':checked')) {
selectedIsFilter = [n];
localStorage.setItem('selIsFilters', selectedIsFilter.join(','));
$('input[name="is"]').each(function() {
if ($(this).val() != n)
$(this).prop('checked', false);
});
} else {
selectedIsFilter = [];
localStorage.removeItem('selIsFilters');
$('input[name="is"]').prop('checked', false);
}
reloadItem();
});
}
var getOrgTags = function(orgId) {
var url = `//www.serv.stdb.most.go.th/api/v2/organization/${orgId}/tags/`;
var promise = $.get(url);
var $box = $('#any-filter');
promise.fail(function() {
$box.html('');
});
promise.done(function(resp) {
var selectedFilter = [];
if (localStorage.getItem('selFilters')) {
selectedFilter = localStorage.getItem('selFilters').split(',');
}
$box.html(tagsTmpl({
items: resp,
selected: selectedFilter
}));
reloadFilterListener();
});
}
function getStartPage() {
sesToken = sessionStorage.getItem('token');
if( sesToken === null){
if( sesToken === null) {
token = localStorage.getItem("token")
// console.log(token)
// console.log('==================')
if( token != null ){
if( token != null ) {
$.ajax({
type: "POST",
url: 'http://www.serv.stdb.most.go.th/api-token-verify/',
@ -22,7 +182,7 @@ function getStartPage(){
header: {
Authorization: 'Bearer '+ token,
},
success: function(respone){
success: function(respone) {
sessionStorage.setItem("token",respone.token)
getStat();
},
@ -30,7 +190,7 @@ function getStartPage(){
});
}
else{
window.location.href = 'index.html'
window.location.href = 'login.html'
}
}
else{
@ -38,20 +198,20 @@ function getStartPage(){
}
}
function LogoutPage(){
function LogoutPage() {
localStorage.removeItem('token');
sessionStorage.removeItem('token');
window.location.href = 'index.html'
}
function getStat(){
function getStat() {
token = sessionStorage.getItem("token")
// console.log(token)
// console.log('======== 2 ======')
dataUser = jwt_decode(token)
userId = dataUser.user_id
if( token != null ){
if( token != null ) {
$.ajax({
type: "GET",
url: 'http://www.serv.stdb.most.go.th/api/v2/instrument/stats/',
@ -64,43 +224,51 @@ function getStat(){
}
}
function getUser(status){
token = sessionStorage.getItem("token")
// console.log(token)
// console.log('======== 2 ======')
dataUser = jwt_decode(token)
userId = dataUser.user_id.toString()
function getUser(status) {
token = sessionStorage.getItem("token");
dataUser = jwt_decode(token);
userId = dataUser.user_id.toString();
$.ajax({
type: "GET",
url: 'http://www.serv.stdb.most.go.th/api/v2/user/'+userId+'/',
headers :{
Authorization: 'Bearer '+ token,
},
success: function(respone){
// console.log(respone)
success: function(respone) {
userData = respone
organ = '<div>'+respone.organizations[0].name+'</div>'
document.getElementById("nameOrgan").innerHTML = organ
token = sessionStorage.getItem("token")
var searchText = ''
if (status === 'search'){
console.log("search")
if (status === 'search') {
// console.log("search")
dataInstrument = []
searchText = '&search='+document.getElementById("searchId").value
start = 0
$('#modalAll').html('');
$('#card').html("");
$('#card').html('');
htmlText = '';
modalText = '';
dataInstrument = [];
console.log(' >> end of search button');
console.log(dataInstrument)
console.log($('#card').html());
}
var url = 'http://www.serv.stdb.most.go.th/api/v2/instrument/?organization='+respone.organizations[0].id+searchText;
console.log('url = ' + url)
$.ajax({
var tagFilter = '';
if (localStorage.getItem('selFilters')) {
tagFilter = localStorage.getItem('selFilters').split(',');
tagFilter = '&tags=' + tagFilter;
}
var isFilter = '';
if (localStorage.getItem('selIsFilters')) {
isFilter = localStorage.getItem('selIsFilters').split(',');
isFilter = '&is=' + isFilter;
}
sessionStorage.setItem('orgId', respone.organizations[0].id);
var url = 'http://www.serv.stdb.most.go.th/api/v2/instrument/?organization='+respone.organizations[0].id+searchText+tagFilter+isFilter;
getOrgTags(respone.organizations[0].id);
xhr = $.ajax({
type: "GET",
url: url,
headers :{
@ -117,10 +285,9 @@ function getUser(status){
}
function getDataStat(respone){
function getDataStat(respone) {
getUser('first');
// console.log(respone)
document.getElementById("like").innerHTML = '0'
document.getElementById("like").innerHTML = respone.items.completed
document.getElementById("status").innerHTML = '+'+respone.items.recent_update
document.getElementById("accountActive").innerHTML = respone.users.active
document.getElementById("numAll").innerHTML = respone.items.all
@ -128,26 +295,43 @@ function getDataStat(respone){
}
function getData(respone) {
// console.log(dataInstrument)
// console.log(respone)
// console.log(respone.results)
console.log(dataInstrument)
dataInstrument = dataInstrument.concat(respone.results)
console.log('*******ฬฬฬฬฬฬฬฬฬ*********')
console.log(respone.results)
var htmlText = ''
var modalText = ''
for (i=start;i<dataInstrument.length;i++ ){
console.log('========='+i+'==========')
// console.log(dataInstrument[i].name)
htmlText = htmlText+"<div id='"+i.toString()+"'' class='cardStyle' onclick='modalItem("+i.toString()+")'>"
+'<h3 style="font-size:26px;margin-left:20px " >'+dataInstrument[i].name+'</h3>'
+'<h3 style="color:#9E9E9E;font-size:22px;margin-left:20px " >#'+dataInstrument[i].custom_id+'</h3>'
+'<h3 style="color:#9E9E9E;font-size:22px;margin-left:20px " >@'+dataInstrument[i].caretaker+'</h3>'
for (i=start;i<dataInstrument.length;i++ ) {
var item = dataInstrument[i];
var imageInstrument = ''
if (dataInstrument[i].clips.length != 0) {
var cover_img = getCoverImg(dataInstrument[i].clips);
imageInstrument = '<div class="box-left">'
+'<img src="'+cover_img+'" class="cover-img">'
+'</div>'
}
var tagsHtml = '<ul class="list-inline">';
for (var k=0; k<item.tags.length; k++) {
tagsHtml += `<li><span class="tag">${item.tags[k]}</span><li>`;
}
tagsHtml += '</ul>';
htmlText = htmlText+"<div data-id=\"" + item.id + "\" id='"+i.toString()+"'' class='cardStyle cardBox' onClick='modalItem("+i.toString()+");'>"
// Author :: Apirak
+ '<span class="pull-right"><button data-id="' + item.id + '" class="hideBtn"><i class="fa fa-4x fa-times danger"></i></button></span>'
+ '<div class="box_">'
+ imageInstrument
// end of left
+ '<div class="box-right">'
+ '<h3 class="card-title" style="font-size:26px;margin-left:20px " >'
+ dataInstrument[i].name+'</h3>'
+ '<h3 style="color:#9E9E9E;font-size:22px;margin-left:20px " >#'+dataInstrument[i].custom_id+'</h3>'
+ '<h3 style="color:#9E9E9E;font-size:22px;margin-left:20px " >@'+dataInstrument[i].caretaker+'</h3>'
+ tagsHtml
+'</div>'// end of right
+ '</div>'
// End
+'</div>';
if(dataInstrument[i].clips.length === 0){
var backup = dataInstrument[i].clips;
dataInstrument[i].clips = addNullData(dataInstrument[i].clips);
if(dataInstrument[i].clips.length === 0) {
imageTag = '<div class="flexCenter">'
+'<div class="flexCenter bgImage">'
+'<div class="flexCenter">'
@ -171,43 +355,55 @@ function getData(respone) {
+'</div>'
}
else{
if(dataInstrument[i].clips.length > 1){
var style4 = ''
if(dataInstrument[i].clips.length >= 2) {
var tagMiniImage = ''
var loopImage = dataInstrument[i].clips.length
var style4 = ''
for(j=1;j<loopImage-1;j++){
if (j==3){
style4 = 'style="margin-top:5px"'
if (loopImage > 4) {
loopImage = 4
}
for(j=1;j<loopImage;j++) {
if (j==3) {
style4 = 'margin-top:5px'
}
var imgUrl = '';
if (dataInstrument[i].clips[j].photo) {
imgUrl = dataInstrument[i].clips[j]['thumbnail']['sm'];
}
tagMiniImage = tagMiniImage
+'<img id="myImg'+j+''+i+'" class="miniImage" '+style4+' src="'+dataInstrument[i].clips[j].photo+'" alt=""/>'
+'<h6 class="miniImage flexCenter" ></h6>';
+'<img id="myImg'+j+''+i+'" class="miniImage" style="'+style4+'" src="'+imgUrl+'" alt=""/>'
+'<h6 class="miniImage flexCenter" >ไมปภาพ</h6>';
}
for(j=loopImage-1;j<3;j++){
if (j==3){
style4 = 'style="margin-top:5px"'
for(j=loopImage;j<4;j++) {
if (j==3) {
style4 = 'margin-top:5px'
}
tagMiniImage = tagMiniImage
+'<img id="myImg'+j+''+i+'" class="miniImage" '+style4+' src="" alt=""/>'
+'<img id="myImg'+j+''+i+'" class="miniImage" style="'+style4+'" src="" alt=""/>'
+'<h6 class="miniImage flexCenter" >ไมปภาพ</h6>';
}
}
else{
for(j=1;j<4;j++){
if (j==3){
style4 = 'style="margin-top:5px"'
var tagMiniImage = ''
for(j=1;j<4;j++) {
if (j==3) {
style4 = 'margin-top:5px'
}
tagMiniImage = tagMiniImage
+'<img id="myImg'+j+''+i+'" class="miniImage" '+style4+' src="" alt=""/>'
+'<img id="myImg'+j+''+i+'" class="miniImage" style="'+style4+'" src="" alt=""/>'
+'<h6 class="miniImage flexCenter" >ไมปภาพ</h6>';
}
}
console.log(dataInstrument)
var imgUrl = '';
if (dataInstrument[i].clips[0].photo) {
imgUrl = dataInstrument[i].clips[0]['thumbnail']['sm'];
}
imageTag = '<div class="flexCenter">'
+'<div class="flexCenter bgImage">'
+'<div class="flexCenter">'
+'<img id="myImg0'+i+'" src="'+dataInstrument[i].clips[0].photo+'" alt=""/>'
+'<div class="bgImage flexCenter"><h2></h2></div>'
+'<img id="myImg0'+i+'" src="'+imgUrl+'" alt=""/>'
+'<div class="bgImage flexCenter"><h2>ไมปภาพ</h2></div>'
+'</div>'
+'<div class="column bgMiniImage" style="margin-left:10px">'
+tagMiniImage
@ -220,16 +416,18 @@ function getData(respone) {
+'<input type="file" name="upload" onclick="uploadImage('+i.toString()+')"/>'
+'</div>'
}
var youtube_tag = getYoutubeTag(dataInstrument[i].model,i);
modalText = modalText+'<div id="modal'+i.toString()+'" class="modal" style="max-height: 100%;display: none;padding-top:10px;">'
+'<div class="modal-content cardStyle" >'
+imageTag
+youtube_tag
+'<div>'
+'<div style="font-size:20px;margin-top:20px">ชอครณฑทยาศาสตร</div>'
+'<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="name'+i+'" name="name'+i+'" placeholder="เลขครณฑ" value="'+dataInstrument[i].name+'"></div>'
+'<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="name'+i+'" name="name'+i+'" placeholder="อครณฑทยาศาสตร" value="'+dataInstrument[i].name+'"></div>'
+'</div>'
+'<div>'
+'<div style="font-size:20px;margin-top:20px">จดประสงคการใชงาน</div>'
+'<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="note'+i+'" name="note'+i+'" placeholder="เลขครณฑ" value="'+dataInstrument[i].note+'"></div>'
+'<div style="font-size:20px;margin-top:20px">จดประสงคและลกษณะการใชงาน</div>'
+'<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="note'+i+'" name="note'+i+'" placeholder="ดประสงคและลกษณะการใชงาน" value="'+dataInstrument[i].note+'"></div>'
+'</div>'
+'<div>'
+'<div style="font-size:20px;margin-top:20px">เลขครณฑ</div>'
@ -237,7 +435,23 @@ function getData(respone) {
+'</div>'
+'<div>'
+'<div style="font-size:20px;margin-top:20px">ผแล</div>'
+'<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="cr'+i+'" name="cr'+i+'" placeholder="เลขครณฑ" value="'+dataInstrument[i].caretaker+'"></div>'
+'<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="cr'+i+'" name="cr'+i+'" placeholder="ผแล" value="'+dataInstrument[i].caretaker+'"></div>'
+'</div>'
+'<div>'
+'<div style="font-size:20px;margin-top:20px">สถานท</div>'
+'<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="lc'+i+'" name="lc'+i+'" placeholder="สถานท" value="'+dataInstrument[i].location+'"></div>'
+'</div>'
+'<div>'
+'<div style="font-size:20px;margin-top:20px">ยอ</div>'
+'<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="make'+i+'" name="make'+i+'" placeholder="ยอ" value="'+dataInstrument[i].make+'"></div>'
+'</div>'
+'<div>'
+'<div style="font-size:20px;margin-top:20px">รน</div>'
+'<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="model'+i+'" name="model'+i+'" placeholder="รน" value="'+dataInstrument[i].model+'"></div>'
+'</div>'
+'<div>'
+'<div style="font-size:20px;margin-top:20px">วโอ(youtube)</div>'
+'<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="yl'+i+'" name="yl'+i+'" placeholder="https://www.youtube.com/watch?v=xxxxx" value="'+dataInstrument[i].video+'"></div>'
+'</div>'
+'<div class="flexCenterSpace" style="margin-top:20px">'
+'<input type="button" onclick="updateData('+i+')" class="buttonUpdate" value="Update">'
@ -246,23 +460,80 @@ function getData(respone) {
+'</div>'
+'</div>'
+'</div>';
dataInstrument[i].clips = backup;
}
if(respone.next != null){
if(respone.next != null) {
nextUrl = ''
moreText = ''
moreText = "<div class='cardStyle flexCenter' style='margin-bottom:10px;height:60px;background-color: #E0E0E0;' onClick='getNextUrl()'>"
+"<h4>More</h4>"
+"<h4 id='moreText'>More</h4>"
+"</div>";
nextUrl = respone.next
document.getElementById("more").innerHTML = moreText;
}
else{
nextUrl = ''
moreText = ''
document.getElementById("more").innerHTML = moreText;
}
processingNext = false;
start = dataInstrument.length
document.getElementById("modalAll").innerHTML = document.getElementById("modalAll").innerHTML+modalText
document.getElementById("card").innerHTML = document.getElementById("card").innerHTML+htmlText
reloadCardListener();
/* Apirak */
$("img[id*='myImg']").each(function() {
var id = $(this).attr('id');
var order = id.substring(5,6);
var idInstrument = id.substring(6,7);
if(idInstrument == 'a') {idInstrument='add';}
$("<a id='order"+order+"' class='btn-edit' onclick='uploadWithOrder("+order+",\""+idInstrument+"\")'>Edit</a>").insertAfter( $(this) );
$(this).parent().css({"position": "relative"});
$(this).css({"margin-top": "0px"});
});
$("iframe").each(function() {
var index = $(this).attr('id');
index = index.replace("youtube-","");
$("img#myImg0"+index).addClass("img-with-youtube");
});
}
function uploadWithOrder(order,idInstrument) {
$("#modal"+idInstrument+" input[name='upload']").attr('order',order);
$("#modal"+idInstrument+" input[name='upload']").click();
}
function getYoutubeTag(link,index) {
//https://www.youtube.com/watch?v=hYgTVD-bxOY
//http://www.youtube.com/v/hYgTVD-bxOY
link = link.replace("https","http");
link = link.replace("watch?v=","v/");
var youtube_tag = '';
if( youtube_tag.indexOf("http") < 0 ) {return youtube_tag;}
if(link != '')
{
youtube_tag = '<iframe width="420" height="315" src="'+link+'" frameborder="0" class="youtube" id="youtube-'+index+'" allowfullscreen></iframe>';
$("iframe").css("margin-left","13%");
$("iframe").css("margin-top","-13%");
}
else{
youtube_tag="";
}
return youtube_tag;
}
function getNextUrl(){
// console.log('==================')
function getNextUrl(x) {
if (processingNext) {
return;
}
processingNext = true;
$('#moreText').html('<i class="fa fa-spin fa-spinner"></i>');
token = sessionStorage.getItem('token')
$.ajax({
type: "GET",
@ -277,16 +548,40 @@ function getNextUrl(){
});
}
function modalItem(idCard){
function addNullData(arr) {
var temp_arr = [{content_type:'',id:'',object_id:'',order:'',photo:"",user:''},
{content_type:'',id:'',object_id:'',order:'',photo:"",user:''},
{content_type:'',id:'',object_id:'',order:'',photo:"",user:''},
{content_type:'',id:'',object_id:'',order:'',photo:"",user:''}];
$.each(arr,function(index,obj) {
temp_arr[obj.order] = obj;
});
return temp_arr;
}
function getCoverImg(arr) {
var link="";
$.each(arr,function(index,obj) {
if(obj.order == 0)
{
link=obj.thumbnail.sm;
}
});
return link;
}
function modalItem(idCard) {
if (clickOnHideButton) {
return;
}
var modal = document.getElementById('modal'+idCard);
// console.log(modal)
var btn = document.getElementById(idCard);
// console.log(btn)
modal.style.display = "block";
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
if(idCard != 'search'){
if(idCard != 'search') {
removeImage(idCard)
}
dataUri = []
@ -296,66 +591,77 @@ function modalItem(idCard){
function uploadImage(idImage) {
var check = 0
var order = $("#modal"+idImage+" input[name='upload']").attr('order');
$(":file").change(function () {
if (this.files && this.files[0] && check===0) {
var reader = new FileReader();
console.log(reader)
// console.log(reader)
reader.onload = function(e) {
instrument = dataInstrument[parseInt(idImage)]
var uriAdd = [{'uri':e.target.result}];
// console.log(instrument)
// console.log('-------------xxxx-------------')
var uriAdd = [{'uri':e.target.result,'order':parseInt(order)}];
dataUri = dataUri.concat(uriAdd);
if(idImage == 'add'){
if(idImage == 'add') {
loopImage = 0
}
else{
var loopImage = instrument.clips.length
for(idImg=0;idImg<loopImage;idImg++){
$('#myImg'+idImg+''+idImage).attr('src', dataInstrument[idData].clips[idImg].photo);
for(idImg=0;idImg<loopImage;idImg++) {
var imgUrl = dataInstrument[idImage].clips[idImg]['thumbnail']['sm'];
$('#myImg'+idImg+''+idImage).attr('src', imgUrl);
}
}
console.log(idImage)
// console.log(idImage)
var dataUriSort = dataUri
idloopImage = loopImage
if(loopImage==0){
loopImage = 1
if(loopImage==0) {
idloopImage = 0
}
var idUri = 0
console.log(loopImage-1)
for(idImg=loopImage-1;idImg<idloopImage+dataUri.length;idImg++){
$('#myImg'+idImg+''+idImage).attr('src', dataUri[idUri].uri);
idUri += 1
}
console.log('---------------------------')
console.log(dataUri)
check += 1
var idUri = 0;
$.each(dataUri,function(index,obj) {
$('#myImg'+obj.order+''+idImage).attr('src', obj.uri);
});
check += 1;
};
reader.readAsDataURL(this.files[0]);
}
});
}
function addData(){
function addData() {
data = {
'name':document.getElementById("nameI").value,
'organization': userData.organizations[0].id,
}
if(document.getElementById("noteI").value != ''){
data.caretaker = document.getElementById("idI").value
if(document.getElementById("CrI").value != '') {
data.caretaker = document.getElementById("CrI").value
}
if(document.getElementById("noteI").value != ''){
data.instrument_id = document.getElementById("CrI").value
if(document.getElementById("idI").value != '') {
data.instrument_id = document.getElementById("idI").value
}
if(document.getElementById("noteI").value != ''){
if(document.getElementById("noteI").value != '') {
data.note = document.getElementById("noteI").value
}
if(dataUri.length != 0){
if(document.getElementById("LcI").value != '') {
data.location = document.getElementById("LcI").value
}
if(document.getElementById("YlI").value != '') {
data.video = document.getElementById("YlI").value
}
if(document.getElementById("makeI").value != '') {
data.make = document.getElementById("makeI").value
}
if(document.getElementById("modelI").value != '') {
data.model = document.getElementById("modelI").value
}
if(dataUri.length != 0) {
data.clips = dataUri
}
console.log(data)
// console.log(data)
data = JSON.stringify(data)
console.log(data)
// console.log(data)
token = sessionStorage.getItem('token')
$.ajax({
type: "POST",
@ -366,26 +672,26 @@ function addData(){
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token,
},
success: function(respone){
console.log(respone)
success: function(respone) {
// console.log(respone)
window.location.reload(true);
},
dataType: 'json'
});
}
function updateData(idData){
console.log(document.getElementById("name"+idData))
console.log(document.getElementById("note"+idData))
console.log(document.getElementById("id"+idData))
console.log(document.getElementById("cr"+idData))
function updateData(idData) {
dataUpdate = {
'name':document.getElementById("name"+idData).value,
'note':document.getElementById("note"+idData).value,
'caretaker':document.getElementById("id"+idData).value,
'instrument_id':document.getElementById("cr"+idData).value,
}
if(dataUri.length != 0){
'caretaker':document.getElementById("cr"+idData).value,
'location':document.getElementById("lc"+idData).value,
'instrument_id':document.getElementById("id"+idData).value,
'make':document.getElementById("make"+idData).value,
'model':document.getElementById("model"+idData).value,
'video':document.getElementById("yl"+idData).value,
}
if(dataUri.length != 0) {
dataUpdate.clips = dataUri
}
idInstrument = dataInstrument[parseInt(idData)].id
@ -398,15 +704,15 @@ function updateData(idData){
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token,
},
success: function(respone){
console.log(respone)
success: function(respone) {
// console.log(respone)
window.location.reload(true);
},
dataType: 'json'
});
}
function deleteData(idData){
function deleteData(idData) {
instrument = dataInstrument[parseInt(idData)]
data = {'hide':true}
token = sessionStorage.getItem('token')
@ -419,34 +725,39 @@ function deleteData(idData){
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token,
},
success: function(respone){
console.log(respone)
success: function(respone) {
// console.log(respone)
window.location.reload(true);
},
dataType: 'json'
});
}
function backData(idData){
function backData(idData) {
var modal = document.getElementById('modal'+idData);
modal.style.display = "none";
removeImage(idData)
dataUri = []
}
function removeImage(idData){
function removeImage(idData) {
var tagMiniImage = ''
var style4 = ''
if(idData == 'add'){
if(idData == 'add') {
loopImage = 1
}
else{
var loopImage = dataInstrument[idData].clips.length
for(j=0;j<loopImage;j++){
$('#myImg'+j+''+idData).attr('src', loopImage[j]);
var time = new Date()
var loopImage = dataInstrument[idData].clips.length;
for(j=0;j<loopImage;j++) {
var imgUrl = '';
if (dataInstrument[idData].clips[j].photo) {
imgUrl = dataInstrument[idData].clips[j]['thumbnail']['sm'];
}
document.getElementById("myImg"+j+''+idData).src = imgUrl+'?'+time;
}
}
for(j=loopImage-1;j<4;j++){
for(j=loopImage;j<4;j++) {
$('#myImg'+j+''+idData).attr('src','');
}
}

242
login.html

@ -3,158 +3,126 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
content="width=device-width, initial-scale=1, user-scalable=0, maximum-scale=1, minimum-scale=1">
<title>Login Form</title>
<title>Login</title>
<link rel="stylesheet" href="css/style.css">
<link rel="shortcut icon" type="image/png" href="https://avatars1.githubusercontent.com/u/17867603?v=3&s=200"/>
<script src="js/jquery-3.0.0.min.js"></script>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script type="text/javascript" src="js/materialize.min.js"></script>
<script type="text/javascript" src="js/jwtDecode.min.js"></script>
<script type="text/javascript" src="js/stdb.js"></script>
<link type="text/css" rel="stylesheet" href="css/materialize.min.css" media="screen,projection"/>
<link type="text/css" rel="stylesheet" href="css/stdb.css" media="screen,projection"/>
<!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<style>
</style>
<style>
.flexCenter {
display:flex;
height: 550px;
justify-content: center;
align-items:center;
}
</style>
</head>
<body>
<div>
<ul class="titleIn">
<center>
<li><a href="javascript:history.go(0)" class="active">Instrument</a></li>
<li style="float:right;font-size:18px"><a onClick="LogoutPage()">Logout</a></li>
<li style="float:right;font-size:18px"><a onClick="modalItem('add')">Add Instrument</a></li>
<li style="float:right;"><a class="material-icons" onclick="modalItem('search')" style="color:#FFF;">search</a></li>
</center>
</ul>
</div>
<div class="boxShow">
<div id="nameOrgan" class="flexCenter" style="margin-top:120px;font-size:40px;color:#F0F0F0"></div>
</div>
<div class="boxShow">
<!-- like -->
<div style="margin-top:20px;">
<li class="cardData" >
<div>
<i class="medium material-icons " style="">thumb_up</i>
<div class="flexCenter" style="font-size:18px;" id='like'></div>
</div>
</li>
<!-- status -->
<li class="cardData" >
<div>
<i class="medium material-icons " style="color:#4CAF50">trending_up</i>
<div class="flexCenter" style="font-size:18px;" id='status'></div>
</div>
</li>
<!-- accountActive -->
<li class="cardData" >
<div>
<i class="medium material-icons " style="">people</i>
<div class="flexCenter" style="font-size:18px;" id='accountActive'></div>
</div>
</li>
<!-- equipment -->
<li class="cardData" style="width: 300px;display:block;" >
<center><h1 style="font-size:18px;margin-top:10px;margin-bottom:15px">ปกรณ</h1></center>
<div class="flexCenterSpace">
<i class="medium material-icons ">featured_play_list</i>
<i class="medium material-icons ">photo</i>
</div>
<div class="flexCenterSpace" style="margin-top:-3px;">
<i style='margin-right:15px'>งหมด</i>
<i style='margin-right:10px'></i>
</div>
<div class="flexCenterSpace" style="margin-top:-5px;">
<i id="numAll" style='margin-right:15px'>0</i>
<i id="numPhoto" style='margin-right:10px'>0</i>
</div>
</li>
</div>
</div>
<div id="card" class="container" style="max-width:800px"></div>
<body>
<section id="boxlogin" class="container">
<div id="modalAll" ></div>
</section>
</body>
<script language="javascript">
<div id="more" class="container" style="max-width:800px;height:80px"> </div >
var token = ''
<div id="modaladd" class="modal" style="max-height: 100%;display: none;padding-top:10px;">
<div class="modal-content cardStyle" >
<div class="flexCenter">
<div class="flexCenter bgImage">
<div class="flexCenter">
<img id="myImg0add" src="" alt=""/>
<div class="bgImage flexCenter"><h2>ไมปภาพ</h2></div>
</div>
<div class="column bgMiniImage" style="margin-left:10px">
<img id="myImg1add" class="miniImage" src="" alt=""/>
<h6 class="miniImage flexCenter" >ไมปภาพ</h6>
<img id="myImg2add" class="miniImage" src="" alt=""/>
<h6 class="miniImage flexCenter" >ไมปภาพ</h6>
<img id="myImg3add" class="miniImage" style="margin-top:5px" src="" alt=""/>
<h6 class="miniImage flexCenter" style="margin-top:5px">ไมปภาพ</h6>
</div>
</div>
</div>
<div class="flexCenter" style="margin-top:5px;">
<div class="upload flexCenter">
<a style="font-size:18px">Upload</a></div>
<input type="file" name="upload" onclick="uploadImage('add')"/>'
</div>'
<div>
<div style="font-size:20px;margin-top:10px">อครณฑทยาศาสตร</div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="nameI" name="nameI" value="" placeholder="ชอครณฑทยาศาสตร"></div>
</div>
<div>
<div style="font-size:20px;margin-top:10px">ดประสงคการใชงาน</div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="noteI" name="noteI" value="" placeholder="จดประสงคการใชงาน"></div>
</div>
<div>
<div style="font-size:20px;margin-top:10px">เลขครณฑ</div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="idI" name="idI" value="" placeholder="เลขครณฑ"></div>
</div>
<div>
<div style="font-size:20px;margin-top:10px">แล</div>
<div style="font-size:16px;margin-top:5px;margin-left:5px"><input type="text" id="CrI" name="CrI" value="" placeholder="ชอ นามสกล"></div>
</div>
<div class="flexCenterSpace" style="margin-top:20px">
<input type="button" onclick="addData('add')" class="buttonUpdate" value="Add">
<input type="button" onclick="backData('add')" class="buttonBack" value="Back">
</div>
</div>
</div>
function pasuser(form) {
var data = {"username": form.login.value, "password": form.password.value}
// console.log(form.login.value)
// console.log(form.password.value)
// console.log(data)
$.ajax({
type: "POST",
url: 'http://www.serv.stdb.most.go.th/api-token-auth/',
data: data,
success: success,
dataType: 'json'
});
}
<div id="modalsearch" class="modal" style="max-height: 100%;display: none;padding-top:100px;">
<div class="modal-content cardStyle" >
<div>
<input type="text" class="cardSearch" id="searchId" value="" placeholder="Search">
<div class="flexEnd">
<button class="buttonSearch flexCenter" onclick="searchItem('search')">
<a class="material-icons" style="color:#FFF;">search</a>
</button>
</div>
</div>
</div>
</div>
function success(respone) {
// console.log(respone)
// console.log(respone.token)
localStorage.setItem("token", respone.token);
getToken();
}
function getToken(){
sesToken = sessionStorage.getItem('token');
if( sesToken === null){
token = localStorage.getItem("token")
// console.log(token)
// console.log('==================')
if( token != null ){
$.ajax({
type: "POST",
url: 'http://www.serv.stdb.most.go.th/api-token-verify/',
data: { "token" : token },
header: {
Authorization: 'Bearer '+ token,
},
success: checkToken,
error: tokenError,
dataType: 'json'
});
}
else{
loginPage();
}
}
else{
window.location.href = 'instrument.html';
}
}
</body>
<script language="javascript">
function checkToken(tokenrespone) {
sessionStorage.getItem('token',tokenrespone.token);
try {
if( tokenrespone.token === token ){
window.location.href = 'instrument.html';
// console.log('go to page');
// console.log(tokenrespone.token);
}
}
catch(err) {
// console.log(err.message);
loginPage();
}
function searchItem(idSearch){
var modal = document.getElementById('modal'+idSearch);
modal.style.display = "none";
getUser('search')
}
function tokenError(){
loginPage();
}
function loginPage(){
localStorage.removeItem('token');
var loginTag = '<div class="login">'
+'<h1>Login to STDB</h1>'
+'<form method="post" >'
+'<p><input type="text" name="login" value="" placeholder="Username or Email"></p>'
+'<p><input type="password" name="password" value="" placeholder="Password"></p>'
+'<p class="remember_me">'
+'<label>'
+'<input type="checkbox" name="remember_me" id="remember_me">'
+'Remember me on this computer'
+'</label>'
+'</p>'
+' <p class="submit"><input type="button" value="Login" onClick="pasuser(this.form)"></p>'
+'</form>'
+'</div>'
document.getElementById("boxlogin").innerHTML = loginTag
}
getToken()
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-72505920-2', 'auto');
ga('send', 'pageview');
</script>
</html>

0
scss/style.scss

182
stat.html

@ -0,0 +1,182 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Traffy STDB Stat</title>
<link rel="shortcut icon" type="image/png" href="https://avatars1.githubusercontent.com/u/17867603?v=3&s=200"/>
<link rel="stylesheet" href="//api.traffy.xyz/static/font-awesome/css/font-awesome.min.css" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script src="js/jquery-3.0.0.min.js"></script>
<script type="text/javascript" src="js/materialize.min.js"></script>
<script src="//api.traffy.xyz/static/underscore/underscore-min.js"></script>
<link type="text/css" rel="stylesheet" href="css/materialize.min.css" media="screen,projection"/>
<link type="text/css" rel="stylesheet" href="css/stdb.css" media="screen,projection"/>
<style>
html {
height: 100%;
}
body {
min-height: 100%;
}
a:active {
-webkit-text-fill-color: #000000;
-webkit-text-stroke-width: 2px;
-webkit-text-stroke-color: #000000;
}
.column {
-webkit-flex-direction: column;
flex-direction: column;
float: left;
}
.column li {
background: deepskyblue;
}
.flex-container {
padding: 0;
margin: 0;
list-style: none;
-ms-box-orient: horizontal;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: flex;
}
.tag-container {
padding: 1rem;
}
ul.list-inline {
background: white;
}
ul.list-inline li {
margin: 0 1rem 0 5px;
}
span.tag {
background: #ccc;
margin: 0 5px;
border-radius: 3px;
padding: 0 1rem;
}
</style>
</head>
<body class="flexCenter" style="background-color:#0ca3d2;">
<div>
<div style="max-width:800px;color:#F0F0F0;">
<div class="flexCenter">
<h1>หนวยงานทงหมด</h1>
</div>
</div>
<div id="organiz" style="max-width:800px">
<div class="text-center">
<i class="fa fa-4x fa-spin fa-spinner"></i>
</div>
</div>
</div>
</body>
<script type="text/template" class="template" id="each-org">
<div class="cardStyle organization"
id="org-<%- organization.id %>"
data-org="<%- organization.id %>"
style="width:800px">
<h3 style="font-size:26px;margin-left:20px "><%- organization.name %> (<%- organization.abbv_en %>)</h3>
<div class="flexCenterSpace">
<div class="flex-container column flexCenter">
<i class="medium material-icons " style="">thumb_up</i>
<i class="" style="">อมลครบ</i>
<i class="" style=""><%- items.completed %></i>
</div>
<div class="flex-container column flexCenter">
<i class="medium material-icons " style="">trending_up</i>
<i class="" style="">อมลอพเดท</i>
<i class="" style=""><%- items.recent_update %></i>
</div>
<div class="flex-container column flexCenter">
<i class="medium material-icons " style="">featured_play_list</i>
<i class="" style="">งหมด</i>
<i class="" style=""><%- items.all %></i>
</div>
<div class="flex-container column flexCenter">
<i class="medium material-icons " style="">photo</i>
<i class="" style=""></i>
<i class="" style=""><%- items.photos %></i>
</div>
</div>
<div class="tag-container">
<i class="fa fa-spin fa-spinner"></i>
</div>
</div>
</script>
<script type="text/template" class="template" id="tag-list">
<div class="tags">
<ul class="list-inline"><% for (i in items) {%>
<li><span class="tag"><%- items[i][0] %></span> <%- items[i][1] %></li>
<% } %></ul>
<div>
</script>
<script>
var orgTmpl = _.template($("script#each-org").html());
var tagsTmpl = _.template($("script#tag-list").html());
var getOrgTags = function(orgId) {
var url = `//www.serv.stdb.most.go.th/api/v2/organization/${orgId}/tags/`;
var promise = $.get(url);
var $box = $('#org-' + orgId);
promise.fail(function() {
$box.find('.tag-container').html('');
});
promise.done(function(resp) {
console.log(resp);
$box.find('.tag-container').html(tagsTmpl({items: resp}));
});
}
var getStatAll = function() {
urlStat = '//www.serv.stdb.most.go.th/api/v2/organization/stats/';
var promise = $.get(urlStat)
promise.fail(function() {
document.getElementById("organiz").innerHTML = 'Try reloading';
});
promise.done(function(resp) {
var htmlText = ''
for (i=0;i<resp.length;i++ ) {
htmlText += orgTmpl(resp[i]);
}
document.getElementById("organiz").innerHTML = htmlText;
setTimeout(function() {
for (i=0;i<resp.length;i++ ) {
getOrgTags(resp[i].organization.id);
}
}, 500);
});
};
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
getStatAll();
ga('create', 'UA-72505920-2', 'auto');
ga('send', 'pageview');
</script>
</html>
Loading…
Cancel
Save