Commit bf8a6933 authored by phùng văn dung's avatar phùng văn dung

Merge branch 'dungpv'

# Conflicts:
#	src/main/resources/public/index.html
#	src/main/resources/public/js/app.js
parents 70c05cbb 88c1bc04
......@@ -17,6 +17,7 @@
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
......@@ -24,7 +25,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
......@@ -35,21 +35,18 @@
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
......
......@@ -5,6 +5,8 @@ import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO;
import java.util.List;
public interface ProjectBussiness {
// Danh sách dự án phân theo trang
List<ProjectDTO> findProjectPage(String property, Object value, String sortExperssion, String sortDirection, Integer offset, Integer limit);
// Danh sách dự án tất cả các dự án
List<ProjectDTO> findAllProject();
// upload thông tin dự án
......
......@@ -7,6 +7,7 @@ import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
......@@ -17,6 +18,14 @@ public class ProjectBussinessImpl implements ProjectBussiness {
@Autowired
private ProjectRepository projectRepository;
@Override
public List<ProjectDTO> findProjectPage(String property, Object value, String sortExperssion, String sortDirection, Integer offset, Integer limit) {
List<ProjectDTO> projectDTOList = new ArrayList<ProjectDTO>();
Object[] objects = projectRepository.getEntityPage(property,value,sortExperssion,sortDirection,offset,limit);
projectDTOList = lstDTO((List<Project>) objects[1]);
return projectDTOList;
}
@Override
public List<ProjectDTO> findAllProject() {
try {
......@@ -58,7 +67,7 @@ public class ProjectBussinessImpl implements ProjectBussiness {
} else if (dto.getEndDate() == null) {
views = "ngày dự kiếm kết thúc dự án không được null";
} else {
dto.setStatusPost(0);
dto.setStatus(0);
projectRepository.saveEntity(dtoParseModels(dto));
views = "thêm thành công project !";
}
......@@ -123,13 +132,7 @@ public class ProjectBussinessImpl implements ProjectBussiness {
dto.setDescriptions(model.getDescriptions());
dto.setStartDate(model.getStartDate());
dto.setEndDate(model.getEndDate());
if(model.getStatus()==0){
dto.setStatusGet("Dự Kiến");
}else if(model.getStatus()==1){
dto.setStatusGet("Đang Tiến Hành");
}else{
dto.setStatusGet("Đã Hoàn Thành");
}
dto.setStatus(model.getStatus());
return dto;
}
......@@ -141,7 +144,7 @@ public class ProjectBussinessImpl implements ProjectBussiness {
project.setDescriptions(projectDTO.getDescriptions());
project.setStartDate(projectDTO.getStartDate());
project.setEndDate(projectDTO.getEndDate());
project.setStatus(projectDTO.getStatusPost());
project.setStatus(projectDTO.getStatus());
return project;
}
}
......@@ -4,6 +4,7 @@ import com.itsol.quantrivanphong.report.issue.common.SystemConstants;
import com.itsol.quantrivanphong.manager.project.project.bussiness.ProjectBussiness;
import com.itsol.quantrivanphong.manager.project.project.dto.ProjectDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
......@@ -16,6 +17,12 @@ public class ProjectController {
@Autowired
private ProjectBussiness projectBussiness;
@GetMapping(value = "/danh-sach-du-an/{offset}/{limit}")
public ResponseEntity<List<ProjectDTO>> getProjectPage(@PathVariable("offset") Integer offset,@PathVariable("limit") Integer limit){
return ResponseEntity.ok(projectBussiness.findProjectPage(null,null,null,null,offset,limit));
}
@GetMapping(value = "/danh-sach-du-an")
public ResponseEntity<List<ProjectDTO>> getAllProject(){
return ResponseEntity.ok(projectBussiness.findAllProject());
......@@ -28,12 +35,12 @@ public class ProjectController {
@PostMapping(value = "/them-du-an",consumes = SystemConstants.TYPE_JSON)
public ResponseEntity saveProject(@RequestBody ProjectDTO projectDTO){
String views = projectBussiness.saveProject(projectDTO);
return ResponseEntity.ok(views);
return ResponseEntity.ok(new WrapperResult(200, views));
}
@PutMapping(value = "/sua-du-an",consumes = SystemConstants.TYPE_JSON)
public ResponseEntity updateProject(@RequestBody ProjectDTO projectDTO){
String views = projectBussiness.updateProject(projectDTO);
return ResponseEntity.ok(views);
return ResponseEntity.ok(new WrapperResult(200, views));
}
@DeleteMapping(value = "/xoa-danh-sach-du-an",consumes = SystemConstants.TYPE_JSON)
public ResponseEntity deleteProject(@RequestBody ProjectDTO projectDTO){
......@@ -53,6 +60,32 @@ public class ProjectController {
}else{
views="không tồn tại";
}
return ResponseEntity.ok(views);
return ResponseEntity.ok(new WrapperResult(200, views));
}
static class WrapperResult{
private int status;
private String message;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public WrapperResult(int status, String message) {
this.status = status;
this.message = message;
}
}
}
......@@ -20,9 +20,7 @@ public class ProjectDTO {
//ngày kết thúc dự án
private Timestamp endDate;
//trạng thái thêm vào dataBase
private Integer statusPost;
//trạng thái lấy dữ liệu lên cline
private String statusGet;
private Integer status;
// danh sách id
private Integer[] ids;
}
......@@ -15,4 +15,6 @@ public interface ProjectGroupBussiness {
ProjectGroupDTO findEmployeeProject(String username);
// thành viên out dự án
String outProjectGroup(Integer[]ids);
// thành viên out dự án
String deleteEmployeeProject(Integer id);
}
......@@ -7,6 +7,7 @@ import com.itsol.quantrivanphong.manager.project.projectgroup.common.ProjectGrou
import com.itsol.quantrivanphong.manager.project.projectgroup.dto.ProjectGroupDTO;
import com.itsol.quantrivanphong.model.Eproject;
import com.itsol.quantrivanphong.manager.project.projectgroup.repository.ProjectGroupRepository;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -14,7 +15,7 @@ import java.util.List;
@Service
public class ProjectGroupBussinessImpl implements ProjectGroupBussiness {
Logger logger = Logger.getLogger(ProjectGroupBussinessImpl.class);
@Autowired
private ProjectGroupRepository projectGroupRepository;
......@@ -29,6 +30,7 @@ public class ProjectGroupBussinessImpl implements ProjectGroupBussiness {
@Override
public List<ProjectGroupDTO> getGroupByProjectId(Integer projectId) {
logger.info("getGroupByProjectId");
Project project = projectRepository.findByEmtityId(projectId);
if (project != null) {
List<Eproject> lstModels = projectGroupRepository.finByProperty("project", project, "joinDate", "DESC");
......@@ -37,21 +39,35 @@ public class ProjectGroupBussinessImpl implements ProjectGroupBussiness {
}
return null;
}
public boolean checkEmployeeInGroupProject(ProjectGroupDTO dto){
List<Eproject> lst = projectGroupRepository.finByProperty("project",projectRepository.findByEmtityId(dto.getProjectId()),null,null);
for (Eproject eproject:lst) {
if(eproject.getEmployee().getId()==dto.getUserId()){
return true;
}
}
return false;
}
@Override
public String saveEmployeeProject(ProjectGroupDTO dto) {
logger.info("saveEmployeeProject");
String views = "";
try{
projectGroupRepository.saveEntity(utils.Model(dto));
views="thêm thành công nhân viên vào nhóm dự án";
}catch (Exception e){
views="thêm không thành công!";
if(!checkEmployeeInGroupProject(dto)) {
try {
projectGroupRepository.saveEntity(utils.Model(dto));
views = "thêm thành công nhân viên vào nhóm dự án";
} catch (Exception e) {
views = "thêm không thành công!";
}
}else {
views = "thành viên đã tồn tại";
}
return views;
}
@Override
public String updateEmployeeProject(ProjectGroupDTO dto) {
logger.info("updateEmployeeProject");
String views="";
Eproject eproject = projectGroupRepository.findByEmtityId(dto.getId());
if(eproject!=null){
......@@ -72,6 +88,7 @@ public class ProjectGroupBussinessImpl implements ProjectGroupBussiness {
@Override
public String outProjectGroup(Integer[] ids) {
logger.info("outProjectGroup");
String views = "";
int count=0;
count = projectGroupRepository.deleteEntity(ids);
......@@ -82,4 +99,18 @@ public class ProjectGroupBussinessImpl implements ProjectGroupBussiness {
}
return views;
}
@Override
public String deleteEmployeeProject(Integer id) {
logger.info("deleteEmployeeProject");
String views = "";
int count=0;
count = projectGroupRepository.deleteEntityByID(id);
if(count!=0){
views="Bạn đã cho "+count+" thoát ra khỏi nhóm";
}else{
views=" thành viên không tồn tại";
}
return views;
}
}
package com.itsol.quantrivanphong.manager.project.projectgroup.controller;
import com.itsol.quantrivanphong.manager.project.project.controller.ProjectController;
import com.itsol.quantrivanphong.report.issue.common.SystemConstants;
import com.itsol.quantrivanphong.manager.project.projectgroup.bussiness.ProjectGroupBussiness;
import com.itsol.quantrivanphong.manager.project.projectgroup.dto.ProjectGroupDTO;
......@@ -27,7 +28,7 @@ public class ProjectGroupController {
@PostMapping(value = "/them-thanh-vien", consumes = SystemConstants.TYPE_JSON, produces = SystemConstants.TYPE_JSON)
public ResponseEntity addMemberProject(@RequestBody ProjectGroupDTO projectGroupDTO) {
String views = projectGroupBussiness.saveEmployeeProject(projectGroupDTO);
return ResponseEntity.ok(views);
return ResponseEntity.ok(new WrapperResult(200, views));
}
// cập nhật thông tin thành viên
......@@ -41,9 +42,40 @@ public class ProjectGroupController {
// xóa thành viên ra khỏi dự án
@DeleteMapping(value = "/thanh-vien-out-du-an")
public ResponseEntity deleteMemberProject(@RequestBody ProjectGroupDTO projectGroupDTO){
public ResponseEntity deleteMembersProject(@RequestBody ProjectGroupDTO projectGroupDTO){
String views = projectGroupBussiness.outProjectGroup(projectGroupDTO.getIds());
return ResponseEntity.ok(views);
}
@DeleteMapping(value = "/xoa-thanh-vien-du-an")
public ResponseEntity deleteMemberProject(@RequestBody ProjectGroupDTO projectGroupDTO){
String views = projectGroupBussiness.deleteEmployeeProject(projectGroupDTO.getId());
return ResponseEntity.ok(new WrapperResult(200, views));
}
static class WrapperResult{
private int status;
private String message;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public WrapperResult(int status, String message) {
this.status = status;
this.message = message;
}
}
}
package com.itsol.quantrivanphong.report.issue.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AbstractDao<T> {
private List<T> lstResult = new ArrayList<T>();
// Số page đang đứng
private Integer page;
// Tổng sô page trong 1 item
private Integer maxPageItem;
// Tổng số page hiện tại
private Integer totalPage;
// Tổng số item
private Integer totalItem;
// kiểu sort
private String sortName;
// sort theo
private String sortBy;
}
......@@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
......@@ -181,8 +182,64 @@ public class AbstractEntityManagerDao<ID extends Serializable, T> implements Gen
entityManager.getTransaction().rollback();
log.info(e.getMessage());
}finally {
entityManager.close();
if (entityManager != null) {
entityManager.close();
}
}
return list;
}
@Override
public Object[] getEntityPage(String property, Object value, String sortExperssion, String sortDirection, Integer offset, Integer limit) {
List<T> list = new ArrayList<T>();
Object totalItem = 0;
try {
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
// HQL
StringBuilder sql = new StringBuilder("from ");
sql.append(getPersistenceClass());
if (property != null && value != null) {
sql.append(" where ").append(property).append(" = ?1");
}
if (sortExperssion != null && sortDirection != null) {
sql.append(" order by ").append(sortExperssion);
sql.append(" " + (sortDirection.equals("ASC") ? "asc" : "desc"));
}
TypedQuery<T> query1 = entityManager.createQuery(sql.toString(),persistenceClass);
if (value != null) {
query1.setParameter(1,value);
}
if(offset!=null &&offset>=0){
query1.setFirstResult(offset);
}
if(limit!=null && limit>0){
query1.setMaxResults(limit);
}
list = query1.getResultList();
// số phần tử trong list
// StringBuilder sql2 = new StringBuilder("Select count(*) from ");
// sql2.append(getPersistenceClass());
// if (value != null && property != null) {
// sql2.append(" where ").append(property).append("= ?1");
// }
// TypedQuery<T> query2 = entityManager.createQuery(sql2.toString(),persistenceClass);
// if (value != null) {
// query2.setParameter(1,value);
// }
//
//// trả về size
totalItem = finAllEntity().size();
entityManager.getTransaction().commit();
} catch (HibernateException e) {
entityManager.getTransaction().rollback();
} finally {
if (entityManager != null) {
entityManager.close();
}
}
return new Object[]{totalItem, list};
}
}
......@@ -11,4 +11,6 @@ public interface GennericeEntityManagerDao<ID extends Serializable,T> {
Integer deleteEntityByID(Integer id);
T findByEmtityId(ID id);
List<T> finByProperty(String property, Object value, String sortExperssion, String sortDirection);
Object[] getEntityPage(String property, Object value, String sortExperssion, String sortDirection,Integer offset, Integer limit);
// Integer getCount();
}
package com.itsol.quantrivanphong.report.issue.common;
public interface Pageble {
Integer getPage();
Integer getOffset();
Integer getLimit();
Sorter getSorter();
}
package com.itsol.quantrivanphong.report.issue.common;
public class PagebleRequest implements Pageble {
private Integer page;
private Integer maxPageItem;
private Sorter sorter;
@Override
public Integer getPage() {
return this.page;
}
public PagebleRequest(Integer page, Integer maxPageItem, Sorter sorter) {
this.page = page;
this.maxPageItem = maxPageItem;
this.sorter = sorter;
}
@Override
public Integer getOffset() {
// tính vị trí đầu của 1 page
if (this.page != null && this.maxPageItem != null) {
return ((this.page - 1) * this.maxPageItem);
}
return null;
}
@Override
public Integer getLimit() {
return (this.getOffset() + this.maxPageItem);
}
@Override
public Sorter getSorter() {
return this.sorter;
}
}
package com.itsol.quantrivanphong.report.issue.common;
public class Sorter {
private String sortName;
private String sortBy;
public Sorter(String sortName, String sortBy) {
this.sortName = sortName;
this.sortBy = sortBy;
}
public String getSortName() {
return sortName;
}
public void setSortName(String sortName) {
this.sortName = sortName;
}
public String getSortBy() {
return sortBy;
}
public void setSortBy(String sortBy) {
this.sortBy = sortBy;
}
}
package com.itsol.quantrivanphong.report.issue.common;
public class WrapperResult {
private int status;
private String message;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public WrapperResult(int status, String message) {
this.status = status;
this.message = message;
}
}
package com.itsol.quantrivanphong.report.issue.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AbstractPage<T> {
// tổng số item trong 1 trang
private int maxPageItems;
// tổng số item trả về list đó
private int totalItems=0;
// phần tử cuối cùng của 1 trang
private int firstItem=0;
private String sortExpression;
private String sortDirection;
// vị trí trang đang đứng
private int page = 1;
}
server.port=8080
server.port=8081
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/qtvp_01
spring.datasource.username=root
spring.datasource.password=12345678
......@@ -8,7 +8,8 @@ spring.datasource.password=12345678
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
server.servlet.session.timeout=30s
# ===============================
......@@ -18,7 +19,7 @@ spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=hieunv2496@gmail.com
spring.mail.password=anhieu1996
>>>>>>> master
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
(function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],function($){return factory($)})}else if(typeof module==="object"&&typeof module.exports==="object"){exports=factory(require("jquery"))}else{factory(jQuery)}})(function($){$.easing.jswing=$.easing.swing;var pow=Math.pow,sqrt=Math.sqrt,sin=Math.sin,cos=Math.cos,PI=Math.PI,c1=1.70158,c2=c1*1.525,c3=c1+1,c4=2*PI/3,c5=2*PI/4.5;function bounceOut(x){var n1=7.5625,d1=2.75;if(x<1/d1){return n1*x*x}else if(x<2/d1){return n1*(x-=1.5/d1)*x+.75}else if(x<2.5/d1){return n1*(x-=2.25/d1)*x+.9375}else{return n1*(x-=2.625/d1)*x+.984375}}$.extend($.easing,{def:"easeOutQuad",swing:function(x){return $.easing[$.easing.def](x)},easeInQuad:function(x){return x*x},easeOutQuad:function(x){return 1-(1-x)*(1-x)},easeInOutQuad:function(x){return x<.5?2*x*x:1-pow(-2*x+2,2)/2},easeInCubic:function(x){return x*x*x},easeOutCubic:function(x){return 1-pow(1-x,3)},easeInOutCubic:function(x){return x<.5?4*x*x*x:1-pow(-2*x+2,3)/2},easeInQuart:function(x){return x*x*x*x},easeOutQuart:function(x){return 1-pow(1-x,4)},easeInOutQuart:function(x){return x<.5?8*x*x*x*x:1-pow(-2*x+2,4)/2},easeInQuint:function(x){return x*x*x*x*x},easeOutQuint:function(x){return 1-pow(1-x,5)},easeInOutQuint:function(x){return x<.5?16*x*x*x*x*x:1-pow(-2*x+2,5)/2},easeInSine:function(x){return 1-cos(x*PI/2)},easeOutSine:function(x){return sin(x*PI/2)},easeInOutSine:function(x){return-(cos(PI*x)-1)/2},easeInExpo:function(x){return x===0?0:pow(2,10*x-10)},easeOutExpo:function(x){return x===1?1:1-pow(2,-10*x)},easeInOutExpo:function(x){return x===0?0:x===1?1:x<.5?pow(2,20*x-10)/2:(2-pow(2,-20*x+10))/2},easeInCirc:function(x){return 1-sqrt(1-pow(x,2))},easeOutCirc:function(x){return sqrt(1-pow(x-1,2))},easeInOutCirc:function(x){return x<.5?(1-sqrt(1-pow(2*x,2)))/2:(sqrt(1-pow(-2*x+2,2))+1)/2},easeInElastic:function(x){return x===0?0:x===1?1:-pow(2,10*x-10)*sin((x*10-10.75)*c4)},easeOutElastic:function(x){return x===0?0:x===1?1:pow(2,-10*x)*sin((x*10-.75)*c4)+1},easeInOutElastic:function(x){return x===0?0:x===1?1:x<.5?-(pow(2,20*x-10)*sin((20*x-11.125)*c5))/2:pow(2,-20*x+10)*sin((20*x-11.125)*c5)/2+1},easeInBack:function(x){return c3*x*x*x-c1*x*x},easeOutBack:function(x){return 1+c3*pow(x-1,3)+c1*pow(x-1,2)},easeInOutBack:function(x){return x<.5?pow(2*x,2)*((c2+1)*2*x-c2)/2:(pow(2*x-2,2)*((c2+1)*(x*2-2)+c2)+2)/2},easeInBounce:function(x){return 1-bounceOut(1-x)},easeOutBounce:bounceOut,easeInOutBounce:function(x){return x<.5?(1-bounceOut(1-2*x))/2:(1+bounceOut(2*x-1))/2}})});
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -4,36 +4,55 @@
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<!-- <meta http-equiv="X-UA-Compatible" content="ie=edge">-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Document</title>
<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'/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<!-- Custom fonts for this template-->
<link href="https://use.fontawesome.com/releases/v5.6.3/css/all.css"
rel="stylesheet" type="text/css">
<link href="common/css/all.min.css" rel="stylesheet"
type="text/css">
<!-- Page level plugin CSS-->
<link href="common/css/dataTables.bootstrap4.css"
rel="stylesheet">
<!-- Custom styles for this template-->
<link href="common/css/sb-admin.css" rel="stylesheet">
<!-- angular -->
<script src="js/angular.js"></script>
<script src="js/angular-ui-router.min.js"></script>
<script src="js/app.js"></script>
<script src="pages/employee/employeeController.js"></script>
<script src="pages/project/projectController.js"></script>
<script src="pages/report/reportController.js"></script>
<script src="pages/testlayout/testlayoutController.js"></script>
<script src="pages/project/groupproject/groupProjectController.js"></script>
</head>
<body ng-app="myApp">
<div ui-view="layout">
<div ui-view="layout"></div>
<!-- Js -->
<!-- Bootstrap core JavaScript-->
<script src="pages/employee/employeeController.js"></script>
<script src="pages/project/project/projectController.js"></script>
<script src="pages/login/loginsController.js"></script>
<script src="pages/adminhome/admin.js"></script>
<script src="common/js/jquery.min.js"></script>
<script src="common/js/bootstrap.bundle.min.js"></script>
<!-- Core plugin JavaScript-->
<script src="common/js/jquery.easing.min.js"></script>
</div>
<!-- Page level plugin JavaScript-->
<script src="common/js/Chart.min.js"></script>
<script src="common/js/jquery.dataTables.js"></script>
<script src="common/js/dataTables.bootstrap4.js"></script>
<!-- Custom scripts for all pages-->
<script src="common/js/sb-admin.min.js"></script>
</body>
</html>
\ No newline at end of file
This diff is collapsed.
<div>
layout2
Không có menu
<div ui-view="content"></div>
</div>
\ No newline at end of file
<!-- layout menu -->
<!-- header -->
<nav class="navbar navbar-expand navbar-dark bg-dark static-top">
......@@ -33,7 +35,7 @@
<!-- 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"
<a class="nav-link dropdown-toggle" 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>
......
<!--Layout Login-->
<div class="container">
Project works
</div>
<div ui-view="content"/>
</div>
\ No newline at end of file
<div class="container" style="text-align: center">
<h1>Chào Mừng bạn đến với trang ADMIN</h1>
</div>
\ No newline at end of file
angular.module("myApp").controller("adminController", function($scope, $http,$window) {
console.log("adminController");
});
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
angular.module("myApp").controller("loginController", function($scope, $http,$window) {
console.log("loginController");
});
\ No newline at end of file
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