Commit 25eae3f3 authored by Internship UKSW 2019's avatar Internship UKSW 2019

Initial commit

parent 55891008
REACT_APP_MAIN_APIURL = "http://10.10.86.48:9000"
\ No newline at end of file
REACT_APP_MAIN_APIURL = "http://10.10.88.12:9000"
\ No newline at end of file
......@@ -56,10 +56,15 @@ export class DataTableApprovalDocument extends Component {
render: function (data, type, row) {
return "<div>" + data + "</div>";
}
},
{
visible: false,
searchable: false,
orderable: false,
targets: 7
}
],
order: [[1, "asc"]],
lengthMenu: [[25, 50, 75, 100], [25, 50, 75, 100]]
order: [[1, "asc"]]
})
table.on("order.dt search.dt", function () {
table.column(0, { search: "applied", order: "applied" }).nodes().each(function (cell, i) {
......@@ -69,7 +74,7 @@ export class DataTableApprovalDocument extends Component {
table.on("click", "a", function (e) {
e.preventDefault();
let data = table.row($(this).parents("tr")).data();
window.open("http://10.10.86.48:3000/formapprover?subject=" + data[2], "_self");
window.open("http://" + localStorage.getItem('host') + "/formapprover?subject=" + data[2] + "&userid=" + data[7], "_self");
})
}
componentWillUnmount = () => {
......
......@@ -56,10 +56,15 @@ export class DataTableExpiredDocument extends Component {
render: function (data, type, row) {
return "<div>" + data + "</div>";
}
},
{
visible: false,
searchable: false,
orderable: false,
targets: 7
}
],
order: [[1, "asc"]],
lengthMenu: [[25, 50, 75, 100], [25, 50, 75, 100]]
order: [[1, "asc"]]
})
table.on("order.dt search.dt", function () {
table.column(0, { search: "applied", order: "applied" }).nodes().each(function (cell, i) {
......@@ -69,7 +74,7 @@ export class DataTableExpiredDocument extends Component {
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");
window.open("http://" + localStorage.getItem('host') + "/previewdocument?subject=" + data[2] + "&userid=" + data[7], "_blank");
})
}
componentWillUnmount = () => {
......
......@@ -60,6 +60,12 @@ export class DataTableHome extends Component {
render: function (data, type, row) {
return "<div>" + data + "</div>";
}
},
{
visible: false,
searchable: false,
orderable: false,
targets: 8
}
],
order: [[ 1, "asc" ]],
......@@ -73,7 +79,7 @@ export class DataTableHome extends Component {
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");
window.open("http://" + localStorage.getItem('host') + "/previewdocument?subject=" + data[2] + "&userid=" + data[8], "_blank");
})
}
componentWillUnmount = () => {
......
......@@ -58,16 +58,21 @@ export class DataTableMyDocument extends Component {
return "<div>" + data + "</div>";
}
},
{
visible: false,
searchable: false,
orderable: false,
targets: 7
},
{
orderable: false,
targets: 7,
targets: 8,
render: function (data, type, row) {
return "&nbsp;&nbsp;<a id='withdraw' class='text-decoration-none text-dark' href='#'><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></a>";
}
}
],
order: [[1, "asc"]],
lengthMenu: [[25, 50, 75, 100], [25, 50, 75, 100]]
order: [[1, "asc"]]
})
table.on("order.dt search.dt", function () {
table.column(0, { search: "applied", order: "applied" }).nodes().each(function (cell, i) {
......@@ -77,7 +82,7 @@ export class DataTableMyDocument extends Component {
table.on("click", "a#revision", function (e) {
e.preventDefault();
let data = table.row($(this).parents("tr")).data();
window.open("http://10.10.86.48:3000/formrevision?subject=" + data[2], "_self");
window.open("http://" + localStorage.getItem('host') + "/formrevision?subject=" + data[2] + "&userid=" + data[7], "_self");
})
table.on("click", "a#withdraw", function (e) {
e.preventDefault();
......
......@@ -56,10 +56,15 @@ export class DataTablePublishDocument extends Component {
render: function (data, type, row) {
return "<div>" + data + "</div>";
}
},
{
visible: false,
searchable: false,
orderable: false,
targets: 7
}
],
order: [[1, "asc"]],
lengthMenu: [[25, 50, 75, 100], [25, 50, 75, 100]]
order: [[1, "asc"]]
})
table.on("order.dt search.dt", function () {
table.column(0, { search: "applied", order: "applied" }).nodes().each(function (cell, i) {
......@@ -69,7 +74,7 @@ export class DataTablePublishDocument extends Component {
table.on("click", "a", function (e) {
e.preventDefault();
let data = table.row($(this).parents("tr")).data();
window.open("http://10.10.86.48:3000/formpublish?subject=" + data[2], "_self");
window.open("http://" + localStorage.getItem('host') +"/formpublish?subject=" + data[2] + "&userid=" + data[7], "_self");
})
}
componentWillUnmount = () => {
......
......@@ -29,6 +29,9 @@ body {
table-layout: fixed;
word-wrap: break-word;
}
.button-0 {
width: 80px;
}
.button-1 {
width: 90px;
}
......
This diff is collapsed.
......@@ -91,6 +91,7 @@ class FormCreate extends Component {
datarow.push(dataReferences[i].usr_dpt[0]);
datarow.push(dataReferences[i].subject[0]);
datarow.push(content);
datarow.push(dataReferences[i].user_id[0]);
this.state.dataReferences.push(datarow);
}
}
......@@ -204,6 +205,12 @@ class FormCreate extends Component {
render: function (data, type, row) {
return "<div>" + data + "</div>";
}
},
{
visible: false,
searchable: false,
orderable: false,
targets: 6
}
]
})
......@@ -225,7 +232,7 @@ class FormCreate extends Component {
tableReference.on("click", "a", function (e) {
e.preventDefault();
let data = tableReference.row($(this).parents("tr")).data();
window.open("http://10.10.86.48:3000/previewdocument?subject=" + data[1], "_blank");
window.open("http://" + localStorage.getItem('host') + "/previewdocument?subject=" + data[1] + "&userid=" + data[6], "_blank");
})
} catch (err) {
console.log(err + "");
......@@ -758,7 +765,7 @@ class FormCreate extends Component {
method: 'POST',
body: JSON.stringify(postdataDokumen)
})
//Get All Data Document
//Get Data Document By Subject
let responseDataDocument = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/document/' + this.state.subject, { headers: { 'accept': 'application/xml' } })
parseString(responseDataDocument.data, function (err, result) {
doc_id = result.documentCollection.document[0].doc_id[0];
......@@ -860,7 +867,7 @@ class FormCreate extends Component {
"emailcc": JSON.parse(localStorage.getItem("dataLogin")).email[0],
"emailsend": dataApprover[0].EMail[0],
"message": "<p>Dengan hormat,</p> \
<p>Terdapat pengajuan dokumen dengan No." + this.state.businessUnit + "-" + this.state.documentType + "-" + this.state.revisionCode + " " + this.state.subject + " yang diajukan oleh " + JSON.parse(localStorage.getItem("dataLDAP"))["Full Name"] + ".<br /> Untuk review dan approval silahkan klik link berikut ini <a href='http://10.10.86.48:3000' target='_blank'>Link Dokumen</a></p> \
<p>Terdapat pengajuan dokumen dengan No." + this.state.businessUnit + "-" + this.state.documentType + "-" + this.state.revisionCode + " " + this.state.subject + " yang diajukan oleh " + JSON.parse(localStorage.getItem("dataLDAP"))["Full Name"] + ".<br /> Untuk review dan approval silahkan klik link berikut ini <a href='http://" + localStorage.getItem('host') + "' target='_blank'>Link Dokumen</a></p> \
<p>Terimakasih</p> \
<p>Regards,</p> \
<p>Admin</p><br /> \
......
......@@ -150,6 +150,9 @@ class FormCreateUpdateRole extends Component {
}
}
}
if (JSON.parse(localStorage.getItem("dataLogin")).email[0] == this.state.email && JSON.parse(localStorage.getItem("dataLogin")).user_role[0].includes("Compliance Officer")) {
isValidComplianceOfficer = true;
}
if (isValidComplianceOfficer) {
let dataEdit = {
"user_name": this.state.username,
......@@ -170,10 +173,10 @@ class FormCreateUpdateRole extends Component {
localStorage.setItem('dataLogin', JSON.stringify(tempData));
}
alert("User role has been successfully edited");
this.props.history.push("/manageuser")
this.props.history.push("/manageuser");
})
} else {
await this.setState({ submitForm: false });
await this.setState({ submitForm: false, validFormUser: true });
alert("A user with compliance officer roles already exist");
}
} catch (error) {
......
......@@ -40,7 +40,7 @@ class FormLogin extends Component {
key: '2ffb2a00a3abe029fdebae5e1d417ebcb04b7e103a0cd8b54763051cef08bc55'
}
})
if (responseDataLoginLDAP.data.code == 401) {
if (responseDataLoginLDAP.data.code == 401 || responseDataLoginLDAP.data == "") {
this.setState({ isLoginFailed: true, loggingIn: false, errMessage: "Username or Password is Invalid!" })
} else {
var parseString = require('xml2js').parseString;
......@@ -50,6 +50,7 @@ class FormLogin extends Component {
dataUser = result.user_dataCollection.user_data;
})
if (dataUser != undefined) {
localStorage.setItem('host', '10.10.88.12:3000');
localStorage.setItem('dataLogin', JSON.stringify(dataUser[0]));
let store = createStore(sessionReducer);
let todoAction = { type: "add_session", payload: responseDataLoginLDAP.data };
......
This diff is collapsed.
This diff is collapsed.
......@@ -59,6 +59,7 @@ class Home extends Component {
datarow.push(new_effdate);
datarow.push(data[i].usr_dpt[0]);
datarow.push(content);
datarow.push(data[i].user_id[0]);
this.state.dataDocument.push(datarow);
}
}
......
......@@ -27,7 +27,7 @@ class Navbar1 extends Component {
e.preventDefault();
}
handleSignOut = () => {
localStorage.removeItem("user");
localStorage.removeItem("host");
localStorage.removeItem("dataLogin");
localStorage.removeItem("dataLDAP");
this.props.history.push("/");
......
......@@ -43,7 +43,7 @@ class PreviewDocument extends Component {
try {
if (this.props.location.search != "") {
let values = queryString.parse(this.props.location.search);
if (values.subject != undefined && values.subject != "") {
if (values.subject != undefined && values.subject != "" && values.userid != undefined && values.userid != "") {
await this.setState({ subject: values.subject })
var parseString = require('xml2js').parseString;
let responseDataDocument = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/document/' + this.state.subject, { headers: { 'accept': 'application/xml' } })
......@@ -52,8 +52,10 @@ class PreviewDocument extends Component {
dataDocument = result.documentCollection.document;
})
if (dataDocument != undefined) {
if (dataDocument[0].doc_status[0] == "Publish") {
let responseDataAuditTrail = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/trailkey/' + dataDocument[0].doc_id[0], { headers: { 'Content-Type': 'application/xml' } })
for (let i = 0; i < dataDocument.length; i++) {
if (dataDocument[i].user_id[0] == values.userid) {
if (dataDocument[i].doc_status[0] == "Publish") {
let responseDataAuditTrail = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/trailkey/' + dataDocument[i].doc_id[0], { headers: { 'Content-Type': 'application/xml' } })
let dataAuditTrail = responseDataAuditTrail.data.trailCollection.trail;
for (let i = 0; i < dataAuditTrail.length; i++) {
if (dataAuditTrail[i].user_role == "Approver" && dataAuditTrail[i].action == "Approve Document") {
......@@ -63,24 +65,31 @@ class PreviewDocument extends Component {
}
}
}
let responseDataRevision = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/revisionkey/' + dataDocument[0].doc_id[0], { headers: { 'accept': 'application/xml' } })
let responseDataRevision = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/revisionkey/' + dataDocument[i].doc_id[0], { headers: { 'accept': 'application/xml' } })
let dataRevision;
parseString(responseDataRevision.data, function (err, result) {
dataRevision = result.revisionCollection.revision;
})
let documentType = dataDocument[0].doc_type[0];
let documentCode = dataDocument[0].doc_code[0];
let revisionDate = this.convertToDateFormat(dataDocument[0].rev_date[0]);
let effectiveDate = this.convertToDateFormat(dataDocument[0].eff_date[0]);
let purpose = JSON.parse(dataDocument[0].information).purpose;
let scopes = JSON.parse(dataDocument[0].information).scopes;
let definitions = JSON.parse(dataDocument[0].information).definitions;
let references = JSON.parse(dataDocument[0].information).references;
if (revisionDate.includes("+00:00")) {
revisionDate = revisionDate.replace("+00:00", "");
let documentType = dataDocument[i].doc_type[0];
let documentCode = dataDocument[i].doc_code[0];
let revisionDate = this.convertToDateFormat(dataDocument[i].rev_date[0]);
let effectiveDate = this.convertToDateFormat(dataDocument[i].eff_date[0]);
let purpose = JSON.parse(dataDocument[i].information).purpose;
let scopes = JSON.parse(dataDocument[i].information).scopes;
let definitions = JSON.parse(dataDocument[i].information).definitions;
let references = JSON.parse(dataDocument[i].information).references;
let isShowRevisionDate = false;
let responseDataAuditTrail = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/trailkey/' + dataDocument[i].doc_id[0], { headers: { 'Content-Type': 'application/xml' } })
let dataAuditTrail = responseDataAuditTrail.data.trailCollection.trail;
for (let i = 0; i < dataAuditTrail.length; i++) {
if (dataAuditTrail[i].action == "Reject Document") {
isShowRevisionDate = true;
}
if (dataRevision.length == 1) {
}
if (isShowRevisionDate == false) {
revisionDate = "-";
} else if (revisionDate.includes("+00:00")) {
revisionDate = revisionDate.replace("+00:00", "");
}
if (effectiveDate.includes("+00:00")) {
effectiveDate = effectiveDate.replace("+00:00", "");
......@@ -97,7 +106,7 @@ class PreviewDocument extends Component {
}
this.state.revisions.push(datarow1);
}
let responseDataContent = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/contentkey/' + dataDocument[0].doc_id[0], { headers: { 'accept': 'application/xml' } })
let responseDataContent = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/contentkey/' + dataDocument[i].doc_id[0], { headers: { 'accept': 'application/xml' } })
let dataContent;
parseString(responseDataContent.data, function (err, result) {
dataContent = result.contentCollection.content;
......@@ -124,6 +133,9 @@ class PreviewDocument extends Component {
await this.setState({ isHeightPaper4Small: true, heightPaper4: heightPaper4 });
paper4.style.height = "1123px";
}
break;
}
}
} else {
await this.setState({ isFetched: true, isDocumentNotFound: true });
}
......@@ -263,6 +275,13 @@ class PreviewDocument extends Component {
pdf.save(title + ".pdf");
await this.setState({ clickedDownload: false });
}
showRemark = (remark) => {
if (remark == "") {
return "-"
} else {
return remark;
}
}
showApproval = (approval) => {
let approvalDocument;
this.state.approvalDocument.splice(0, this.state.approvalDocument.length);
......@@ -441,7 +460,7 @@ class PreviewDocument extends Component {
return (
<tr key={index}>
<td>{revision.revision_code}</td>
<td>{revision.remark}</td>
<td>{this.showRemark(revision.remark)}</td>
<td>{this.showApproval(revision.approval)}</td>
</tr>
)
......@@ -559,7 +578,7 @@ class PreviewDocument extends Component {
this.state.documentType == "FORM" &&
<div className="row">
<div className="col-xl-12 col-lg-12 col-md-12 col-sm-12">
<a className="text-decoration-none" href={this.state.contentForm.file} download={this.state.contentForm.title}>{this.state.contentForm.title}</a>
<a className="text-decoration-none text-dark" href={this.state.contentForm.file} download={this.state.contentForm.title}>{this.state.contentForm.title}</a>
</div>
</div>
}
......
......@@ -44,7 +44,7 @@ class YourDocument extends Component {
}
responseDataRevision = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/revisionkey/' + dataAllDocument[i].doc_id[0], { headers: { 'Content-Type': 'application/xml' } })
dataRevision = responseDataRevision.data.revisionCollection.revision;
if (dataAllDocument[i].user_id[0] == user_id && dataAllDocument[i].doc_status[0] == "New") {
if (dataAllDocument[i].user_id[0] == user_id && (dataAllDocument[i].doc_status[0] == "New" || dataAllDocument[i].doc_status[0] == "Publish")) {
let datarow = [];
let responseDataContent = await axios.get(process.env.REACT_APP_MAIN_APIURL + '/DocumentManagement/' + apiContent + '/' + dataAllDocument[i].doc_id[0], { headers: { 'accept': 'application/xml' } })
let dataContent;
......@@ -66,6 +66,7 @@ class YourDocument extends Component {
datarow.push(dataRevision[dataRevision.length - 1].status);
datarow.push(JSON.parse(localStorage.getItem("dataLDAP"))["Full Name"]);
datarow.push(content);
datarow.push(dataAllDocument[i].user_id);
this.state.dataDocument.push(datarow);
}
if ((dataRevision[dataRevision.length - 1].status.includes("Waiting for Approval") || dataRevision[dataRevision.length - 1].status.includes("Waiting for Approver") || dataRevision[dataRevision.length - 1].status.includes("Additional Approver")) && dataAllDocument[i].doc_status[0] == "New") {
......@@ -106,6 +107,7 @@ class YourDocument extends Component {
datarow2.push(dataRevision[dataRevision.length - 1].status);
datarow2.push(user_name);
datarow2.push(content);
datarow2.push(dataAllDocument[i].user_id);
this.state.dataApprovalDocument.push(datarow2);
}
}
......@@ -140,6 +142,7 @@ class YourDocument extends Component {
datarow3.push(dataRevision[dataRevision.length - 1].status);
datarow3.push(user_name2);
datarow3.push(content);
datarow3.push(dataAllDocument[i].user_id);
this.state.dataPublishDocument.push(datarow3);
}
if (dataAllDocument[i].doc_status[0] == "Unpublish" && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Compliance Officer")) {
......@@ -173,6 +176,7 @@ class YourDocument extends Component {
datarow4.push(dataRevision[dataRevision.length - 1].status);
datarow4.push(user_name3);
datarow4.push(content);
datarow4.push(dataAllDocument[i].user_id);
this.state.dataExpiredDocument.push(datarow4);
}
}
......@@ -228,6 +232,7 @@ class YourDocument extends Component {
{
this.state.fetchStatus == true && JSON.parse(localStorage.getItem('dataLogin')).user_role[0].includes("Creator") && this.state.fetchError == false &&
<div>
<hr />
<div className="form-group row">
<div className="col-xl-12 col-lg-12 col-md-12 col-sm-12">
<h3>My Document</h3>
......
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