Commit abecd44b authored by Internship UKSW 2019's avatar Internship UKSW 2019

Initial commit

parent 0494aa8e
......@@ -59,14 +59,13 @@ export class DataTableManageUser extends Component {
let data = table.row($(this).parents("tr")).data();
let isDelete = window.confirm("Are you sure want to delete " + data[1] + "?");
if (isDelete) {
// process.env.REACT_APP_MAIN_APIURL
fetch(process.env.REACT_APP_MAIN_APIURL + '/user/', {
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
method: 'DELETE',
body: 'email=' + data[5]
}).then(res => {
window.location.reload();
alert("Data has been deleted!");
alert("Data has been successfully deleted!");
}).catch(err => {
alert(err + "");
})
......
import React, { Component } from 'react';
import axios from 'axios';
const $ = require('jquery');
$.DataTable = require('datatables.net');
......@@ -15,6 +16,7 @@ export class DataTableYourDocument extends Component {
{ title: "Status" },
{ title: "Tracking" },
{ title: "Creator" },
{ title: "Withdraw" }
],
columnDefs: [
{
......@@ -44,21 +46,70 @@ export class DataTableYourDocument extends Component {
{
orderable: false,
targets: 5
},
{
orderable: false,
targets: 6,
render: function (data, type, row) {
return "&nbsp;&nbsp;<svg style='width:24px;height:24px' viewBox='0 0 24 24'><path fill='currentColor' d='M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z' /></svg>";
}
}
],
order: [[ 1, "asc" ]],
order: [[1, "asc"]],
lengthMenu: [[25, 50, 75, 100], [25, 50, 75, 100]]
})
table.on("order.dt search.dt", function () {
table.column(0, {search:"applied", order:"applied"}).nodes().each( function (cell, i) {
cell.innerHTML = i+1;
} );
} ).draw();
table.column(0, { search: "applied", order: "applied" }).nodes().each(function (cell, i) {
cell.innerHTML = i + 1;
});
}).draw();
table.on("click", "a", function (e) {
e.preventDefault();
let data = table.row($(this).parents("tr")).data();
window.open("http://10.10.86.48:3000/previewdocument?subject=" + data[2], "_blank");
})
table.on("click", "svg", function (e) {
e.preventDefault();
let data = table.row($(this).parents("tr")).data();
var parseString = require('xml2js').parseString;
let isDelete = window.confirm("Are you sure want to withdraw document " + data[2] + "?");
if (isDelete) {
axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/document/' + data[2], { headers: { 'accept': 'application/xml' } })
.then(res => {
let dataDocument;
parseString(res.data, function (err, result) {
dataDocument = result.documentCollection.document;
})
let dataUpdate = {
"doc_code": dataDocument[0].doc_code[0],
"user_id": dataDocument[0].user_id[0],
"doc_type": dataDocument[0].doc_type[0],
"rev_date": dataDocument[0].rev_date[0],
"eff_date": dataDocument[0].eff_date[0],
"subject": dataDocument[0].subject[0],
"information": dataDocument[0].information[0],
"approver": null,
"doc_status": dataDocument[0].doc_status[0],
"cancelled": 1,
"doc_id": dataDocument[0].doc_id[0]
};
//
fetch(process.env.REACT_APP_MAIN_APIURL + '/document', {
headers: { 'Content-Type': 'application/json' },
method: 'PUT',
body: JSON.stringify(dataUpdate)
})
.then(res => {
window.location.reload();
alert("Data has been successfully withdraw!");
}).catch(err => {
alert(err + "");
})
}).catch(err => {
alert(err + "");
})
}
})
}
componentWillUnmount = () => {
this.$el.DataTable.destroy(true);
......
......@@ -22,6 +22,9 @@
.button-1 {
width: 90px;
}
.button-2 {
width: 100px;
}
.background-grey {
background: rgb(50, 50, 50);
width: 100%;
......
......@@ -15,7 +15,7 @@ class FormCreate extends Component {
checkedOptionScopes: [false, false, false],
pageScope: false,
pageReference: false,
businessUnit: "SAM",//doc
businessUnit: localStorage.getItem('loginUserDpt'),//doc
documentType: "",//doc
revisionCode: "R0",//doc
revisionDate: "-",//doc
......@@ -46,8 +46,6 @@ class FormCreate extends Component {
contents: [{ title: "", description: "" }],//cont
submitForm: false
};
//this.handleChangeContentDescription = this.handleChangeContentDescription.bind(this);
//this.handleChangeContentDescription = this.handleChangeContentDescription.bind(this);
}
changePage = (action, index) => {
let clonePage = this.state.page.slice();
......@@ -114,9 +112,18 @@ class FormCreate extends Component {
this.checkValidInputPage1();
}
handleChangeEffectiveDate = (e) => {
this.state.effectiveDate = e.target.value;
this.setState({ effectiveDate: this.state.effectiveDate })
this.checkValidInputPage1();
let q = new Date();
let todayDate = new Date(q.getFullYear(),q.getMonth(),q.getDate());
let inputDate = new Date(e.target.value);
if (todayDate > inputDate) {
alert("The input date must be bigger or equal to today date!");
return false;
} else {
this.state.effectiveDate = e.target.value;
this.setState({ effectiveDate: this.state.effectiveDate })
this.checkValidInputPage1();
return true;
}
}
handleChangeSubject = (e) => {
this.state.subject = e.target.value;
......@@ -1307,12 +1314,11 @@ class FormCreate extends Component {
&nbsp;{this.state.labelChangePage[0]}&nbsp;</Button>
</div>
<div className="col-xl-9 col-lg-9 col-md-9 col-sm-9 text-right">
<Button color="primary" disabled>&nbsp; Preview &nbsp;</Button>&nbsp;
<Button color="primary" onClick={() => this.handleSubmitForm()}>&nbsp;&nbsp;Submit
{
this.state.submitForm &&
<img src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" />
}&nbsp;&nbsp;&nbsp;</Button>&nbsp;
this.state.submitForm &&
<img src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" />
}&nbsp;&nbsp;&nbsp;</Button>&nbsp;
{/* <input type="submit" value="&nbsp;&nbsp;Submit&nbsp;&nbsp;&nbsp;" className="btn btn-primary" /> */}
</div>
</div>
......
import React, { Component } from 'react';
import { Button } from 'reactstrap';
import { connect } from 'react-redux';
import queryString from 'query-string';
import axios from 'axios';
import Navbar1 from './Navbar';
......@@ -12,7 +11,7 @@ class FormCreateUpdateRole extends Component {
this.state = {
isFetched: false,
isEdit: false,
optionRoles: ["Admin", "Approver", "Compliance Officer", "Creator", "Manager Representative", "View"],
optionRoles: ["Admin", "Approver", "Compliance Officer", "Creator", "Manager Representative", "Viewer"],
validFormUser: false,
userid: "",
username: "",
......@@ -115,6 +114,13 @@ class FormCreateUpdateRole extends Component {
this.setState({ email: this.state.email });
this.checkValidForm();
}
handleShowButtonName = () => {
let name = "Add User"
if (this.state.isEdit) {
name = "Save"
}
return name;
}
handleSubmitForm = async () => {
var js2xmlparser = require('js2xmlparser');
var parseString = require('xml2js').parseString;
......@@ -139,7 +145,9 @@ class FormCreateUpdateRole extends Component {
let postDataEdit = js2xmlparser.parse("_putuserupdate_user_id", dataEdit);
axios.put(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/userupdate/' + this.state.userid, postDataEdit, { headers: { 'Content-Type': 'text/xml' } })
.then(res => {
this.setState({ submitForm: false })
if (this.state.email == localStorage.getItem('loginEmail')) {
localStorage.setItem('loginUserRole', userRole1);
}
alert("User role has been successfully edited");
this.props.history.push("/manageuser")
})
......@@ -151,7 +159,6 @@ class FormCreateUpdateRole extends Component {
try {
await this.setState({ submitForm: true })
let responseCheckDataUser = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/userkey/' + this.state.email, { headers: { 'accept': 'application/xml' } })
console.log();
let checkDataUser;
parseString(responseCheckDataUser.data, function (err, result) {
checkDataUser = result.user_dataCollection.user_data;
......@@ -220,11 +227,11 @@ class FormCreateUpdateRole extends Component {
<div className="col-xl-12 col-lg-12 col-md-12 col-sm-12">
{
this.state.isEdit == true &&
<h2>Form Edit Data</h2>
<h2>Form Edit User</h2>
}
{
this.state.isEdit == false &&
<h2>Form Insert Data</h2>
<h2>Form Add User</h2>
}
</div>
</div>
......@@ -273,8 +280,8 @@ class FormCreateUpdateRole extends Component {
</div>
<div className="form-group row">
<div className="col-xl-12 col-lg-12 col-md-12 col-sm-12 text-right">
<Button className="center-block" color="danger" href="/manageuser">&nbsp;Cancel&nbsp;</Button> &nbsp;&nbsp;
<Button className="center-block" color="success" disabled={!this.state.validFormUser} onClick={() => this.handleSubmitForm()}>&nbsp;&nbsp; Save &nbsp;
<Button className="button-2 center-block" color="danger" href="/manageuser">Cancel</Button>&nbsp;
<Button className="button-2 center-block" color="success" disabled={!this.state.validFormUser} onClick={() => this.handleSubmitForm()}> {this.handleShowButtonName()}
{
this.state.submitForm &&
<img src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" />
......@@ -294,10 +301,4 @@ class FormCreateUpdateRole extends Component {
}
}
const mapStateToProps = (state) => {
return {
session: state.session
}
}
export default connect(mapStateToProps)(FormCreateUpdateRole);
\ No newline at end of file
export default FormCreateUpdateRole;
\ No newline at end of file
......@@ -50,6 +50,7 @@ class FormLogin extends Component {
})
if (dataUser != undefined) {
localStorage.setItem('loginUserDpt', dataUser[0].user_dpt[0]);
localStorage.setItem('loginEmail', dataUser[0].email[0]);
localStorage.setItem('loginUserRole', dataUser[0].user_role[0]);
let store = createStore(sessionReducer);
let todoAction = { type: "add_session", payload: responseDataLoginLDAP.data };
......
......@@ -25,7 +25,10 @@ const Navbar1 = (props) => {
</NavLink>
</NavItem>
{
localStorage.getItem("loginUserRole") != "View" &&
(localStorage.getItem("loginUserRole").includes("Approver") ||
localStorage.getItem("loginUserRole").includes("Compliance Officer") ||
localStorage.getItem("loginUserRole").includes("Creator") ||
localStorage.getItem("loginUserRole").includes("Manager Representative")) &&
<NavItem>
<NavLink className={"text-" + (props.menu == "yourdocument" ? "warning" : "light")} href="/yourdocument">
<SvgIcon>
......
......@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import { connect } from 'react-redux';
import queryString from 'query-string';
import axios from 'axios';
import { Button } from 'reactstrap';
import ReactLoading from 'react-loading';
import './DocumentManagement.css';
......@@ -145,7 +146,10 @@ class PreviewDocument extends Component {
this.state.isFetched == true && this.state.isDocumentNotFound == false &&
<div className="container">
<div className="row justify-content-center">
<div className="col-xl-9 col-lg-10 col-md-11 col-sm-12 border my-5 p-5">
<div className="col-xl-9 col-lg-10 col-md-11 col-sm-12 text-right my-2">
<Button color="primary">Download</Button>
</div>
<div className="col-xl-9 col-lg-10 col-md-11 col-sm-12 border p-5">
<img src="logo-visionet.png" alt="visionet" width="240px" height="120px" />
<h2 className="text-center">PT. VISIONET DATA INTERNASIONAL</h2><hr />
{this.handleShowDocumentType()}<br /><br />
......
......@@ -20,13 +20,11 @@ class YourDocument extends Component {
parseString(response1.data, function (err, result) {
user_id = result.user_dataCollection.user_data[0].user_id[0];
})
console.log("User id", user_id);
let response2 = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/yourdocument/' + user_id, { headers: { 'accept': 'application/xml' } });
let data;
parseString(response2.data, function (err, result) {
data = result.documentCollection.document;
})
console.log("Data", data);
if (data != undefined) {
for (let i = 0; i < data.length; i++) {
let datarow = [];
......
......@@ -7,7 +7,10 @@ const YourDocumentRoute = ({ component: Component, ...rest }) => {
{...rest}
render={
props =>
localStorage.getItem("user") && localStorage.getItem("loginUserRole") != "View" ? (
localStorage.getItem("user") && (localStorage.getItem("loginUserRole").includes("Approver") ||
localStorage.getItem("loginUserRole").includes("Compliance Officer") ||
localStorage.getItem("loginUserRole").includes("Creator") ||
localStorage.getItem("loginUserRole").includes("Manager Representative")) ? (
<Component {...props} />
) : (
<Redirect to={{ pathname: '/', state: { from: props.location } }} />
......
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