Commit d801bc34 authored by Phạm Duy Phi's avatar Phạm Duy Phi

no message

parent a54be6c7
2019-06-10 10:27:20 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-12 23:53:58 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-12 23:55:38 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-12 23:56:35 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-12 23:56:51 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-13 00:04:52 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-13 00:06:11 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-13 09:21:21 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-13 09:21:35 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-13 11:27:55 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-13 11:28:21 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-13 11:28:42 INFO EmployeeController:106 - Rest request to get a page of Employee
2019-06-16 16:59:24 INFO ProjectGroupBussinessImpl:58 - saveEmployeeProject
2019-06-16 16:59:41 INFO ProjectGroupBussinessImpl:58 - saveEmployeeProject
2019-06-16 16:59:41 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 16:59:41 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 16:59:52 INFO ProjectGroupBussinessImpl:88 - updateEmployeeProject
2019-06-16 16:59:52 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 16:59:52 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 16:59:55 INFO ProjectGroupBussinessImpl:122 - deleteEmployeeProject
2019-06-16 16:59:55 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 16:59:55 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:00:05 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:00:05 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:01:57 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:01:57 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:06:16 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:06:16 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:06:23 INFO ProjectGroupBussinessImpl:113 - Lỗi update EProject null
2019-06-16 17:06:24 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:06:24 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:06:25 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:06:25 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:14:49 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:14:49 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:14:58 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:14:58 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:15:11 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:15:11 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:15:32 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:15:32 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:16:49 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:16:49 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:17:59 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:17:59 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:26:27 INFO ProjectBussinessImpl:110 - deleteProjectById
2019-06-16 17:48:52 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:48:52 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:54:10 INFO ProjectBussinessImpl:56 - Lỗi updatecould not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement
2019-06-16 17:54:43 INFO ProjectBussinessImpl:110 - deleteProjectById
2019-06-16 17:55:09 INFO ProjectBussinessImpl:56 - Lỗi updatecould not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement
2019-06-16 17:57:09 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:57:09 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 17:57:16 INFO ProjectBussinessImpl:110 - deleteProjectById
2019-06-16 18:00:43 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:00:43 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:02:39 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:02:39 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:02:42 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:02:42 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:03:12 INFO ProjectGroupBussinessImpl:58 - saveEmployeeProject
2019-06-16 18:03:13 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:03:13 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:03:21 INFO ProjectGroupBussinessImpl:88 - updateEmployeeProject
2019-06-16 18:03:21 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:03:21 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:08:24 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:08:24 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:08:27 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:08:35 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:08:53 INFO ProjectGroupBussinessImpl:88 - updateEmployeeProject
2019-06-16 18:08:53 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:13:03 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:13:13 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:13:37 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:15:46 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:16:56 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-16 18:17:19 INFO ProjectGroupBussinessImpl:58 - saveEmployeeProject
2019-06-16 18:17:39 INFO ProjectGroupBussinessImpl:58 - saveEmployeeProject
2019-06-16 18:17:39 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:11:47 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:12:05 INFO ProjectGroupBussinessImpl:58 - saveEmployeeProject
2019-06-17 12:12:05 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:12:14 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:16:58 INFO ProjectBussinessImpl:56 - Lỗi updatecould not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement
2019-06-17 12:17:32 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:19:21 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:19:41 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:19:55 INFO ProjectGroupBussinessImpl:58 - saveEmployeeProject
2019-06-17 12:19:56 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:20:09 INFO ProjectGroupBussinessImpl:58 - saveEmployeeProject
2019-06-17 12:20:09 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:20:19 INFO ProjectGroupBussinessImpl:58 - saveEmployeeProject
2019-06-17 12:20:33 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:20:44 INFO ProjectGroupBussinessImpl:88 - updateEmployeeProject
2019-06-17 12:20:44 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:20:47 INFO ProjectGroupBussinessImpl:122 - deleteEmployeeProject
2019-06-17 12:20:47 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:20:59 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:21:47 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:22:41 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:22:45 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:22:49 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:22:56 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:23:10 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:23:20 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:45:19 INFO ProjectBussinessImpl:110 - deleteProjectById
2019-06-17 12:45:22 INFO ProjectBussinessImpl:110 - deleteProjectById
2019-06-17 12:45:23 INFO ProjectBussinessImpl:110 - deleteProjectById
2019-06-17 12:45:25 INFO ProjectBussinessImpl:110 - deleteProjectById
2019-06-17 12:45:26 INFO ProjectBussinessImpl:110 - deleteProjectById
2019-06-17 12:45:28 INFO ProjectBussinessImpl:110 - deleteProjectById
2019-06-17 12:50:50 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 12:50:52 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 13:09:19 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
2019-06-17 13:09:31 INFO ProjectGroupBussinessImpl:58 - saveEmployeeProject
2019-06-17 13:10:06 INFO ProjectGroupBussinessImpl:58 - saveEmployeeProject
2019-06-17 13:10:07 INFO ProjectGroupBussinessImpl:36 - getGroupByProjectId
Manifest-Version: 1.0
Implementation-Title: quantrivanphong
Implementation-Version: 1.0
Built-By: damdt
Implementation-Vendor-Id: com.itsol
Created-By: IntelliJ IDEA
Build-Jdk: 1.8.0_181
Main-Class: ${start-class}
#server.port=8081
# ===============================
# DATABASE CONNECTION
# ===============================
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3308/quantrivanphong
spring.datasource.username=root
spring.datasource.password= 123456
# ===============================
# JPA / HIBERNATE
# ===============================
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
#spring.jpa.properties.hibernate.default_schema=qlns_itsol
## Fix Postgres JPA Error:
## Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented.
#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
# ===============================
# SEND EMAIL
# ==============================
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=
spring.mail.password=
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.writetimeout=5000
## App Properties
app.jwtSecret= JWTSuperSecretKey
app.jwtExpirationInMs = 604800000
# Root logger option
log4j.rootLogger=DEBUG, stdout, file
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:\\application1.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
\ No newline at end of file
<!-- Sticky Footer -->
<footer class="sticky-footer">
<div class="container my-auto">
<div class="copyright text-center my-auto">
<span>PS: Phung Van Dung</span>
</div>
</div>
</footer>
\ No newline at end of file
<nav class="navbar navbar-expand navbar-dark bg-dark static-top">
<a class="navbar-brand mr-1" href="index.html">Trang Quản Trị</a>
<!-- Navbar Search -->
<form class="d-none d-md-inline-block form-inline ml-auto mr-0 mr-md-3 my-2 my-md-0">
</form>
<!-- Navbar -->
<ul class="navbar-nav ml-auto ml-md-0">
<li class="nav-item dropdown no-arrow">
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
<i class="fas fa-user-circle fa-fw"></i>Admin
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="userDropdown">
<a class="dropdown-item" href="#">Profile</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal">Logout</a>
</div>
</li>
</ul>
</nav>
\ No newline at end of file
<div id="wrapper">
<!-- Sidebar -->
<ul class="sidebar navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="pagesDropdown" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
<i class="fas fa-fw fa-folder"></i>
<span>Quản Trị Văn Phòng</span>
</a>
<div class="dropdown-menu" aria-labelledby="pagesDropdown">
<h6 class="dropdown-header">Quản Trị</h6>
<a class="dropdown-item" data-ng-href="/project/danh-sach-tat-ca-du-an.html">Dự Án</a>
<a class="dropdown-item" href="#">Nhân Viên</a>
<a class="dropdown-item" href="#">Báo Cáo</a>
<a class="dropdown-item" href="#">Tin Tức</a>
<div class="dropdown-divider">aaa</div>
<h6 class="dropdown-header">Báo Cáo</h6>
<a class="dropdown-item" href="#">Xin Phép</a>
<a class="dropdown-item" href="#">Time Sheet</a>
<a class="dropdown-item" href="#">Quản lý Issuses</a>
</div>
</li>
</ul>
</div>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
\ No newline at end of file
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
}
a:active,
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
h1 {
margin: .67em 0;
font-size: 2em;
}
mark {
color: #000;
background: #ff0;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -.5em;
}
sub {
bottom: -.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
height: 0;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
margin: 0;
font: inherit;
color: inherit;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
-webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
fieldset {
padding: .35em .625em .75em;
margin: 0 2px;
border: 1px solid #c0c0c0;
}
legend {
padding: 0;
border: 0;
}
textarea {
overflow: auto;
}
optgroup {
font-weight: bold;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
td,
th {
padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
*,
*:before,
*:after {
color: #000 !important;
text-shadow: none !important;
background: transparent !important;
-webkit-box-shadow: none !important;
box-shadow: none !important;
}
a,
a:visited {
text-decoration: underline;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
a[href^="#"]:after,
a[href^="javascript:"]:after {
content: "";
}
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
thead {
display: table-header-group;
}
tr,
img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
select {
background: #fff !important;
}
.navbar {
display: none;
}
.btn > .caret,
.dropup > .btn > .caret {
border-top-color: #000 !important;
}
.label {
border: 1px solid #000;
}
.table {
border-collapse: collapse !important;
}
.table td,
.table th {
background-color: #fff !important;
}
.table-bordered th,
.table-bordered td {
border: 1px solid #ddd !important;
}
}
.blue-button {
background: #25A6E1;
padding: 3px 5px;
color: #fff;
font-family: 'Helvetica Neue', sans-serif;
font-size: 12px;
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 4px;
border: 1px solid #1A87B9
}
.red-button {
background: #CD5C5C;
padding: 3px 5px;
color: #fff;
font-family: 'Helvetica Neue', sans-serif;
font-size: 12px;
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 4px;
border: 1px solid #CD5C5C
}
table {
font-family: "Helvetica Neue", Helvetica, sans-serif;
width: 50%;
}
caption {
text-align: left;
color: silver;
font-weight: bold;
text-transform: uppercase;
padding: 5px;
}
th {
background: SteelBlue;
color: white;
}
tbody tr:nth-child(even) {
background: WhiteSmoke;
}
tbody tr td:nth-child(2) {
text-align: center;
}
tbody tr td:nth-child(3), tbody tr td:nth-child(4) {
text-align: center;
font-family: monospace;
}
tfoot {
background: SeaGreen;
color: white;
text-align: right;
}
tfoot tr th:last-child {
font-family: monospace;
}
td, th {
border: 1px solid gray;
width: 25%;
text-align: left;
padding: 5px 10px;
}
\ No newline at end of file
<!DOCTYPE HTML>
<html>
<head>
<link href="css/bootstrap.css" rel='stylesheet' type='text/css'/>
<!-- Custom Theme files -->
<link href="https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700" rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/css?family=Open+Sans" type='text/css'>
<link href="css/style.css" rel='stylesheet' type='text/css'/>
<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/angular.js"></script>
<script src="js/app.js"></script>
<script src="js/angular-route.js"></script>
<script src="js/angular-ui-router.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="pages/employee/js/app.js"></script>
<script src="pages/employee/js/employeeController.js"></script>
</head>
<body ng-app="myApp">
<h1>Trang chủ</h1>
<h2>Menu</h2>
<!--Phần content-->
<div ui-view>
</div>
</body>
</html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
*
*/
angular.module("myApp", ["ui.router"]).config(function($stateProvider, $urlRouterProvider,$locationProvider) {
$locationProvider.hashPrefix('');
$urlRouterProvider.otherwise("/index");
$stateProvider
//index layout riêng
.state("index", {
url: "/index",
views:{
"index":{
templateUrl: "pages/index/index.htm",
controller: "indexController"
},
"banner":{
templateUrl: "pages/index/banner.htm"
}
}
})
// State chứa layout chung cho các trang
.state('app', {
abstract: true,
views: {
'main_layout': {
templateUrl: 'main_layout.html',
}
}
})
// Các state bên dưới kế thừa state app
.state("tintuc", { // Khai báo một state
parent: 'app',
url: "/tintuc", // URL hiển thị
views:{
"content":{
templateUrl: "pages/tintuc/tintuc.htm",
controller: "tintucController" // khai báo controller
}
}
})
.state("tuyendung", {
parent: 'app',
url: "/tuyendung",
views:{
"content":{
templateUrl: "pages/tuyendung/tuyendung.htm",
controller: "tuyendungController"
}
}
})
// .state("lienhe", {
// parent: 'app',
// url: "/lienhe",
// views:{
// "content":{
// templateUrl: "pages/lienhe/lienhe.htm",
// controller: "lienheController"
// }
// }
// })
.state("gioithieu", {
parent: 'app',
url: "/gioithieu",
views:{
"content":{
templateUrl: "pages/gioithieu/gioithieu.htm",
controller: "gioithieuController"
}
}
})
});
\ No newline at end of file
<div class="container">
<div class="row">
<div class="col-md-8">
<div>
<legend>Employee Details</legend>
<table>
<tr>
<td><label>User Name</label></td>
<td>
<input type="text" maxlength="29" ng-model="emp.username"/>
</td>
</tr>
<tr>
<td><label>First Name</label></td>
<td>
<input type="text" maxlength="29" ng-model="emp.firstName"/>
</td>
</tr>
<tr>
<td><label>Last Name</label></td>
<td>
<input type="text" maxlength="29" ng-model="emp.lastName"/>
</td>
</tr>
<tr>
<td><label id="email" for="email">Email</label> </td>
<td>
<input type="email" maxlength="150" ng-model="emp.emailAddress"/>
</td>
</tr>
<tr>
<td><label>Phone</label></td>
<td>
<input type="text" maxlength="10" value="" ng-model="emp.phoneNumber"/>
</td>
</tr>
<tr>
<td><label>education:</label></td>
<td>
<input ng-model="emp.education"/>
</td>
</tr>
<tr>
<td><label >home town:</label></td>
<td> <input type="text" ng-model="emp.homeTown"/></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="submit" value="submit" ng-click="save();"/>
<input type="submit" name="clear" value="clear" ng-click=" emp = null"/>
</td>
</tr>
</table>
</div>
<div>
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>User Name</th>
<th>First Name</th>
<th>Last Name</th>
<th>EmailAddress</th>
<th>Phone</th>
<th>Education</th>
<th>Home Town</th>
</tr>
</thead>
<tbody>
<tr class="vide" ng-repeat="emp in employess">
<td>{{$index + 1}}</td>
<td>{{emp.username}}</td>
<td>{{emp.firstName}}</td>
<td>{{emp.lastName}}</td>
<td>{{emp.emailAddress}}</td>
<td>{{emp.phoneNumber}}</td>
<td>{{emp.education}}</td>
<td>{{emp.homeTown}}</td>
<td><a href="#" ng-click="update(emp);">Update</a>
<td><a href="#" confirmed-click="delete(employee);" ng-confirm-click=" Do you want to delete this user?">Delete</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
var myApp = angular.module('myApp',['ui.router']);
myApp.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/home');
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'pages/employee/html/welcome.html',
controller:'employeeController'
});
});
myApp.directive('ngConfirmClick', [ function() {
return {
link : function(scope, element, attr) {
var msg = attr.ngConfirmClick || "Are you sure?";
var clickAction = attr.confirmedClick;
element.bind('click', function(event) {
if (window.confirm(msg)) {
scope.$eval(clickAction)
}
});
}
};
} ])
/**
*
*/
angular.module("myApp",[]).controller("employeeController", function($scope, $http,$window) {
console.log("Employee controller");
$scope.emp= {
"username": "",
"password": "",
"firstName": "",
"lastName": "",
"emailAddress": "",
"phoneNumber": "",
"homeTown": "",
"education": ""
};
$scope.save = save;
function save(){
console.log($scope.emp);
$http({
method : 'POST',
url : "http://localhost:8080/api/list_employee/",
data: $scope.emp
}).then(function successCallback(response) {
console.log(response);
$window.location.href ='http://localhost:8080/#/tintuc';
}, function errorCallback(response) {
console.log(response)
});
}
$scope.update = update;
function update(employee){
$scope.employee = employee;
list_employee();
}
$scope.deleteEmployee = function (employee) {
$http({
method : 'DELETE',
url : 'http://localhost:8080/api/deleteEmployee/' + employee.id
}).then(_success, _error);
}
$http({
method : 'GET',
url : "http://localhost:8080/api/list_employee/",
}).then(function successCallback(response) {
console.log(response)
$scope.employess=response.data;
}, function errorCallback(response) {
console.log(response)
});
});
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Nhóm Dự Án</title>
</head>
<body>
</body>
</html>
\ No newline at end of file
<div class="card-header">
<i class="fas fa-table"></i> Thêm mới dự án
</div>
<div class="card-body" ng-app="insertProjectModule">
<form ng-controller="insertProject">
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="lstProject.name" id="name" class="form-control"
placeholder="Tên Dự Án"
required="required" autofocus="autofocus">
<label for="name">Tên Dự Án</label>
<span>{{lstProject.name}}</span>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="lstProject.descriptions" id="descriptions"
class="form-control"
placeholder="Mô tả ngắn"
required="required">
<label for="descriptions">Mô tả ngắn</label>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="form-row">
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="lstProject.startDate" id="startDate" class="form-control"
placeholder="Ngày Bắt Đầu" required="required">
<label for="startDate">Ngày Bắt Đầu</label>
</div>
</div>
<div class="col-md-6">
<div class="form-label-group">
<input type="text" ng-model="lstProject.endDate" id="endDate" class="form-control"
placeholder="nick skype" required="required">
<label for="endDate">Ngày Kết Thuc</label>
</div>
</div>
</div>
</div>
<div>
<input ng-click="insert_project()" type="submit" value="Lưu">
<input type="reset" value="Reset">
</div>
</form>
</div>
<script src="components/project/projectAddController.js"></script>
\ No newline at end of file
<div class="card mb-3">
<div class="card-header">
<i class="fas fa-table"></i> Danh Sách Dự Án
</div>
<div class="card-body" ng-app="GetAPI">
<div class="table-responsive" ng-controller="showProject">
<a href="#" class="btn btn-primary btn-circle btn-sm" style="margin-bottom: 10px;"> Thêm </a>
<table class="table table-bordered" id="dataTable" width="100%"
cellspacing="0">
<thead>
<tr>
<th>Tên Dự Án</th>
<th>Mô tả ngắn</th>
<th>Ngày bắt đầu</th>
<th>Hạn giao</th>
<th>Trạng Thái</th>
<th>Thao Tác</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="project in listProject">
<td>{{ project.name }}</td>
<td>{{ project.descriptions }}</td>
<td>{{ project.startDate | date:"dd/MM/yyyy" }}</td>
<td>{{ project.endDate | date:"dd/MM/yyyy" }}</td>
<td>{{ project.statusGet }}</td>
<td><a data-ng-href="#" class="btn btn-info btn-circle btn-sm">
Xem </a> <a data-ng-href="#" class="btn btn-warning btn-circle btn-sm">
Sửa </a> <a data-ng-href="#" class="btn btn-danger btn-circle btn-sm">Xóa</a>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!--angular js-->
<script src="components/project/projectController.js"></script>
\ No newline at end of file
table.dataTable {
clear: both;
margin-top: 6px !important;
margin-bottom: 6px !important;
max-width: none !important;
border-collapse: separate !important;
border-spacing: 0;
}
table.dataTable td,
table.dataTable th {
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
table.dataTable td.dataTables_empty,
table.dataTable th.dataTables_empty {
text-align: center;
}
table.dataTable.nowrap th,
table.dataTable.nowrap td {
white-space: nowrap;
}
div.dataTables_wrapper div.dataTables_length label {
font-weight: normal;
text-align: left;
white-space: nowrap;
}
div.dataTables_wrapper div.dataTables_length select {
width: auto;
display: inline-block;
}
div.dataTables_wrapper div.dataTables_filter {
text-align: right;
}
div.dataTables_wrapper div.dataTables_filter label {
font-weight: normal;
white-space: nowrap;
text-align: left;
}
div.dataTables_wrapper div.dataTables_filter input {
margin-left: 0.5em;
display: inline-block;
width: auto;
}
div.dataTables_wrapper div.dataTables_info {
padding-top: 0.85em;
white-space: nowrap;
}
div.dataTables_wrapper div.dataTables_paginate {
margin: 0;
white-space: nowrap;
text-align: right;
}
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
margin: 2px 0;
white-space: nowrap;
justify-content: flex-end;
}
div.dataTables_wrapper div.dataTables_processing {
position: absolute;
top: 50%;
left: 50%;
width: 200px;
margin-left: -100px;
margin-top: -26px;
text-align: center;
padding: 1em 0;
}
table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
table.dataTable thead > tr > td.sorting_asc,
table.dataTable thead > tr > td.sorting_desc,
table.dataTable thead > tr > td.sorting {
padding-right: 30px;
}
table.dataTable thead > tr > th:active,
table.dataTable thead > tr > td:active {
outline: none;
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
cursor: pointer;
position: relative;
}
table.dataTable thead .sorting:before, table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:before,
table.dataTable thead .sorting_desc:after,
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:before,
table.dataTable thead .sorting_desc_disabled:after {
position: absolute;
bottom: 0.9em;
display: block;
opacity: 0.3;
}
table.dataTable thead .sorting:before,
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_desc:before,
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_desc_disabled:before {
right: 1em;
content: "\2191";
}
table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:after,
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:after {
right: 0.5em;
content: "\2193";
}
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_desc:after {
opacity: 1;
}
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_desc_disabled:after {
opacity: 0;
}
div.dataTables_scrollHead table.dataTable {
margin-bottom: 0 !important;
}
div.dataTables_scrollBody table {
border-top: none;
margin-top: 0 !important;
margin-bottom: 0 !important;
}
div.dataTables_scrollBody table thead .sorting:before,
div.dataTables_scrollBody table thead .sorting_asc:before,
div.dataTables_scrollBody table thead .sorting_desc:before,
div.dataTables_scrollBody table thead .sorting:after,
div.dataTables_scrollBody table thead .sorting_asc:after,
div.dataTables_scrollBody table thead .sorting_desc:after {
display: none;
}
div.dataTables_scrollBody table tbody tr:first-child th,
div.dataTables_scrollBody table tbody tr:first-child td {
border-top: none;
}
div.dataTables_scrollFoot > .dataTables_scrollFootInner {
box-sizing: content-box;
}
div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
margin-top: 0 !important;
border-top: none;
}
@media screen and (max-width: 767px) {
div.dataTables_wrapper div.dataTables_length,
div.dataTables_wrapper div.dataTables_filter,
div.dataTables_wrapper div.dataTables_info,
div.dataTables_wrapper div.dataTables_paginate {
text-align: center;
}
}
table.dataTable.table-sm > thead > tr > th {
padding-right: 20px;
}
table.dataTable.table-sm .sorting:before,
table.dataTable.table-sm .sorting_asc:before,
table.dataTable.table-sm .sorting_desc:before {
top: 5px;
right: 0.85em;
}
table.dataTable.table-sm .sorting:after,
table.dataTable.table-sm .sorting_asc:after,
table.dataTable.table-sm .sorting_desc:after {
top: 5px;
}
table.table-bordered.dataTable th,
table.table-bordered.dataTable td {
border-left-width: 0;
}
table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
table.table-bordered.dataTable td:last-child,
table.table-bordered.dataTable td:last-child {
border-right-width: 0;
}
table.table-bordered.dataTable tbody th,
table.table-bordered.dataTable tbody td {
border-bottom-width: 0;
}
div.dataTables_scrollHead table.table-bordered {
border-bottom-width: 0;
}
div.table-responsive > div.dataTables_wrapper > div.row {
margin: 0;
}
div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child {
padding-left: 0;
}
div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child {
padding-right: 0;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
/*! DataTables Bootstrap 4 integration
* ©2011-2017 SpryMedia Ltd - datatables.net/license
*/
/**
* DataTables integration for Bootstrap 4. This requires Bootstrap 4 and
* DataTables 1.10 or newer.
*
* This file sets the defaults and adds options to DataTables to style its
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
* for further information.
*/
(function( factory ){
if ( typeof define === 'function' && define.amd ) {
// AMD
define( ['static/admin/js/jquery', 'datatables.net'], function ($ ) {
return factory( $, window, document );
} );
}
else if ( typeof exports === 'object' ) {
// CommonJS
module.exports = function (root, $) {
if ( ! root ) {
root = window;
}
if ( ! $ || ! $.fn.dataTable ) {
// Require DataTables, which attaches to jQuery, including
// jQuery if needed and have a $ property so we can access the
// jQuery object that is used
$ = require('datatables.net')(root, $).$;
}
return factory( $, root, root.document );
};
}
else {
// Browser
factory( jQuery, window, document );
}
}(function( $, window, document, undefined ) {
'use strict';
var DataTable = $.fn.dataTable;
/* Set the defaults for DataTables initialisation */
$.extend( true, DataTable.defaults, {
dom:
"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
renderer: 'bootstrap'
} );
/* Default class modification */
$.extend( DataTable.ext.classes, {
sWrapper: "dataTables_wrapper dt-bootstrap4",
sFilterInput: "form-control form-control-sm",
sLengthSelect: "custom-select custom-select-sm form-control form-control-sm",
sProcessing: "dataTables_processing card",
sPageButton: "paginate_button page-item"
} );
/* Bootstrap paging button renderer */
DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
var api = new DataTable.Api( settings );
var classes = settings.oClasses;
var lang = settings.oLanguage.oPaginate;
var aria = settings.oLanguage.oAria.paginate || {};
var btnDisplay, btnClass, counter=0;
var attach = function( container, buttons ) {
var i, ien, node, button;
var clickHandler = function ( e ) {
e.preventDefault();
if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
api.page( e.data.action ).draw( 'page' );
}
};
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
button = buttons[i];
if ( $.isArray( button ) ) {
attach( container, button );
}
else {
btnDisplay = '';
btnClass = '';
switch ( button ) {
case 'ellipsis':
btnDisplay = '&#x2026;';
btnClass = 'disabled';
break;
case 'first':
btnDisplay = lang.sFirst;
btnClass = button + (page > 0 ?
'' : ' disabled');
break;
case 'previous':
btnDisplay = lang.sPrevious;
btnClass = button + (page > 0 ?
'' : ' disabled');
break;
case 'next':
btnDisplay = lang.sNext;
btnClass = button + (page < pages-1 ?
'' : ' disabled');
break;
case 'last':
btnDisplay = lang.sLast;
btnClass = button + (page < pages-1 ?
'' : ' disabled');
break;
default:
btnDisplay = button + 1;
btnClass = page === button ?
'active' : '';
break;
}
if ( btnDisplay ) {
node = $('<li>', {
'class': classes.sPageButton+' '+btnClass,
'id': idx === 0 && typeof button === 'string' ?
settings.sTableId +'_'+ button :
null
} )
.append( $('<a>', {
'href': '#',
'aria-controls': settings.sTableId,
'aria-label': aria[ button ],
'data-dt-idx': counter,
'tabindex': settings.iTabIndex,
'class': 'page-link'
} )
.html( btnDisplay )
)
.appendTo( container );
settings.oApi._fnBindAction(
node, {action: button}, clickHandler
);
counter++;
}
}
}
};
// IE9 throws an 'unknown error' if document.activeElement is used
// inside an iframe or frame.
var activeEl;
try {
// Because this approach is destroying and recreating the paging
// elements, focus is lost on the select button which is bad for
// accessibility. So we want to restore focus once the draw has
// completed
activeEl = $(host).find(document.activeElement).data('dt-idx');
}
catch (e) {}
attach(
$(host).empty().html('<ul class="pagination"/>').children('ul'),
buttons
);
if ( activeEl !== undefined ) {
$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
}
};
return DataTable;
}));
/*!
DataTables Bootstrap 4 integration
©2011-2017 SpryMedia Ltd - datatables.net/license
*/
(function(b){"function"===typeof define&&define.amd?define(["static/admin/js/jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a, d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b, a, d, m){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
renderer:"bootstrap"});b.extend(f.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,s,j,n){var o=new f.Api(a),t=a.oClasses,k=a.oLanguage.oPaginate,u=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();
!b(a.currentTarget).hasClass("disabled")&&o.page()!=a.data.action&&o.page(a.data.action).draw("page")};l=0;for(h=f.length;l<h;l++)if(c=f[l],b.isArray(c))q(d,c);else{g=e="";switch(c){case "ellipsis":e="&#x2026;";g="disabled";break;case "first":e=k.sFirst;g=c+(0<j?"":" disabled");break;case "previous":e=k.sPrevious;g=c+(0<j?"":" disabled");break;case "next":e=k.sNext;g=c+(j<n-1?"":" disabled");break;case "last":e=k.sLast;g=c+(j<n-1?"":" disabled");break;default:e=c+1,g=j===c?"active":""}e&&(i=b("<li>",
{"class":t.sPageButton+" "+g,id:0===r&&"string"===typeof c?a.sTableId+"_"+c:null}).append(b("<a>",{href:"#","aria-controls":a.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:a.iTabIndex,"class":"page-link"}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(v){}q(b(h).empty().html('<ul class="pagination"/>').children("ul"),s);i!==m&&b(h).find("[data-dt-idx="+i+"]").focus()};return f});
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment