Skip to content

Commit 6fc7a41

Browse files
authored
Merge pull request #122 from prafull-opensignlabs/staging
add progess bar for file_upload
2 parents 789c4bd + d823696 commit 6fc7a41

File tree

5 files changed

+151
-86
lines changed

5 files changed

+151
-86
lines changed

apps/OpenSign/src/components/dashboard/DashboardCard.js

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,35 @@ const DashboardCard = (props) => {
156156
if (props.Data.key !== "count") {
157157
setresponse(res.data.results[0][props.Data.key]);
158158
} else {
159-
setresponse(res.data[props.Data.key]);
159+
if (props.Label === "Need your Signature") {
160+
const listData = res.data?.results.filter(
161+
(x) => x.Signers.length > 0
162+
);
163+
let arr = [];
164+
for (const obj of listData) {
165+
const isSigner = obj.Signers.some(
166+
(item) => item.UserId.objectId === currentUser.id
167+
);
168+
if (isSigner) {
169+
let isRecord;
170+
if (obj?.AuditTrail && obj?.AuditTrail.length > 0) {
171+
isRecord = obj?.AuditTrail.some(
172+
(item) =>
173+
item?.UserPtr?.UserId?.objectId === currentUser.id &&
174+
item.Activity === "Signed"
175+
);
176+
} else {
177+
isRecord = false;
178+
}
179+
if (isRecord === false) {
180+
arr.push(obj);
181+
}
182+
}
183+
}
184+
setresponse(arr.length);
185+
} else {
186+
setresponse(res.data[props.Data.key]);
187+
}
160188
}
161189
} else {
162190
setresponse(0);

apps/OpenSign/src/components/dashboard/DashboardReport.js

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,39 @@ function DashboardReport(props) {
3434
"X-Parse-Session-Token": localStorage.getItem("accesstoken")
3535
};
3636
try {
37-
const url = `${serverURL}?where=${strParams}&keys=${strKeys}&order=${orderBy}`;
37+
const url = `${serverURL}?where=${strParams}&keys=${strKeys}&order=${orderBy}&include=AuditTrail.UserPtr`;
3838
const res = await axios.get(url, { headers: headers });
3939
// console.log("res ", res.data?.results);
40-
setList(res.data?.results);
40+
if (id === "5Go51Q7T8r") {
41+
const currentUser = Parse.User.current().id;
42+
const listData = res.data?.results.filter(
43+
(x) => x.Signers.length > 0
44+
);
45+
let arr = [];
46+
for (const obj of listData) {
47+
const isSigner = obj.Signers.some(
48+
(item) => item.UserId.objectId === currentUser
49+
);
50+
if (isSigner) {
51+
let isRecord;
52+
if (obj?.AuditTrail && obj?.AuditTrail.length > 0) {
53+
isRecord = obj?.AuditTrail.some(
54+
(item) =>
55+
item?.UserPtr?.UserId?.objectId === currentUser &&
56+
item.Activity === "Signed"
57+
);
58+
} else {
59+
isRecord = false;
60+
}
61+
if (isRecord === false) {
62+
arr.push(obj);
63+
}
64+
}
65+
}
66+
setList(arr);
67+
} else {
68+
setList(res.data?.results);
69+
}
4170
setIsLoader(false);
4271
} catch (err) {
4372
console.log("err ", err);

apps/OpenSign/src/components/fields/FileUpload.js

Lines changed: 52 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import React, { useState, useEffect } from "react";
22
import { SaveFileSize } from "../../constant/saveFileSize";
3-
import Parse from "parse";
4-
import sanitizeFileName from "../../primitives/sanitizeFileName";
3+
// import Parse from "parse";
4+
// import sanitizeFileName from "../../primitives/sanitizeFileName";
5+
import axios from "axios";
56

67
const FileUpload = (props) => {
78
const [parseBaseUrl] = useState(localStorage.getItem("baseUrl"));
@@ -11,7 +12,7 @@ const FileUpload = (props) => {
1112

1213
const [localValue, setLocalValue] = useState("");
1314
const [Message] = useState(false);
14-
const [percentage] = useState(0);
15+
const [percentage, setpercentage] = useState(0);
1516

1617
const REQUIRED_FIELD_SYMBOL = "*";
1718

@@ -68,33 +69,50 @@ const FileUpload = (props) => {
6869
};
6970

7071
const handleFileUpload = async (file) => {
71-
Parse.serverURL = parseBaseUrl;
72-
Parse.initialize(parseAppId);
73-
const size = file.size;
74-
const fileName = file.name;
75-
const name = sanitizeFileName(fileName);
7672
setfileload(true);
77-
const pdfFile = file;
78-
const parseFile = new Parse.File(name, pdfFile);
73+
const file_url = parseBaseUrl.slice(0, -4);
74+
const url = `${file_url}file_upload`;
75+
const formData = new FormData();
76+
formData.append("file", file);
77+
const config = {
78+
headers: {
79+
"content-type": "multipart/form-data",
80+
"X-Parse-Application-Id": parseAppId
81+
},
82+
onUploadProgress: function (progressEvent) {
83+
var percentCompleted = Math.round(
84+
(progressEvent.loaded * 100) / progressEvent.total
85+
);
86+
setpercentage(percentCompleted);
87+
}
88+
};
7989

8090
try {
81-
const response = await parseFile.save();
82-
83-
setFileUpload(response.url());
84-
props.onChange(response.url());
85-
setfileload(false);
86-
// The response object will contain information about the uploaded file
87-
// console.log("File uploaded:", response);
88-
89-
// You can access the URL of the uploaded file using response.url()
90-
// console.log("File URL:", response.url());
91-
if (response.url()) {
92-
SaveFileSize(size, response.url());
91+
await axios
92+
.post(url, formData, config)
93+
.then((res) => {
94+
if (res.data.status === "Error") {
95+
alert(res.data.message);
96+
}
97+
setFileUpload(res.data.imageUrl);
98+
props.onChange(res.data.imageUrl);
99+
setfileload(false);
100+
setpercentage(0);
93101

94-
return response.url();
95-
}
102+
if (res.data.imageUrl) {
103+
SaveFileSize(file.size, res.data.imageUrl);
104+
return res.data.imageUrl;
105+
}
106+
})
107+
.catch((err) => {
108+
alert(`${err.message}`);
109+
setfileload(false);
110+
setpercentage(0);
111+
});
96112
} catch (error) {
97-
console.error("Error uploading file:", error);
113+
alert(error.message);
114+
setfileload(false);
115+
setpercentage(0);
98116
}
99117
};
100118

@@ -106,7 +124,7 @@ const FileUpload = (props) => {
106124
<a
107125
href={props.formData}
108126
title={props.formData}
109-
style={{ paddingBottom: "10px", color: "blue" }}
127+
style={{ paddingBottom: "10px", color: "blue"}}
110128
>
111129
Download
112130
</a>
@@ -133,12 +151,14 @@ const FileUpload = (props) => {
133151
<span className="required">{REQUIRED_FIELD_SYMBOL}</span>
134152
)}
135153
{fileload ? (
136-
<div className="progress pull-right">
137-
<div
138-
className="progress__bar"
139-
style={{ width: `${percentage}%` }}
140-
></div>
141-
<span className="progress__value">{percentage}%</span>
154+
<div className="flex items-center gap-x-2">
155+
<div className="h-2 rounded-full w-[200px] md:w-[400px] bg-gray-200">
156+
<div
157+
className="h-2 rounded-full bg-blue-500"
158+
style={{ width: `${percentage}%` }}
159+
></div>
160+
</div>
161+
<span className="text-black text-sm">{percentage}%</span>
142162
</div>
143163
) : (
144164
Message && (

apps/OpenSign/src/json/ReportJson.js

Lines changed: 8 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import Parse from "parse";
22
export default function reportJson(id) {
33
const currentUserId = Parse.User.current().id;
4-
// const extendedCls = localStorage.getItem("Extand_Class");
5-
// const json = JSON.parse(extendedCls)?.[0];
64
// console.log("json ", json);
75

86
switch (id) {
@@ -55,36 +53,17 @@ export default function reportJson(id) {
5553
ExpiryDate: {
5654
$gt: { __type: "Date", iso: new Date().toISOString() }
5755
},
58-
$and: [
59-
{
60-
"AuditTrail.UserPtr": {
61-
$ne: {
62-
__type: "Pointer",
63-
className: "contracts_Users",
64-
objectId: "CkpaR0F6mj"
65-
}
66-
}
67-
},
68-
{ "AuditTrail.Activity": { $ne: "Signed" } }
69-
],
70-
Placeholders: { $ne: null },
71-
Signers: {
72-
$in: [
73-
{
74-
__type: "Pointer",
75-
className: "contracts_Users",
76-
objectId: "CkpaR0F6mj"
77-
}
78-
]
79-
}
56+
Placeholders: { $ne: null }
8057
},
8158
keys: [
8259
"Name",
8360
"Note",
8461
"Folder.Name",
8562
"URL",
8663
"ExtUserPtr.Name",
87-
"Signers.Name"
64+
"Signers.Name",
65+
"Signers.UserId",
66+
"AuditTrail"
8867
],
8968
orderBy: "-updatedAt",
9069
actions: [
@@ -342,36 +321,17 @@ export default function reportJson(id) {
342321
ExpiryDate: {
343322
$gt: { __type: "Date", iso: new Date().toISOString() }
344323
},
345-
$and: [
346-
{
347-
"AuditTrail.UserPtr": {
348-
$ne: {
349-
__type: "Pointer",
350-
className: "contracts_Users",
351-
objectId: "CkpaR0F6mj"
352-
}
353-
}
354-
},
355-
{ "AuditTrail.Activity": { $ne: "Signed" } }
356-
],
357-
Placeholders: { $ne: null },
358-
Signers: {
359-
$in: [
360-
{
361-
__type: "Pointer",
362-
className: "contracts_Users",
363-
objectId: "CkpaR0F6mj"
364-
}
365-
]
366-
}
324+
Placeholders: { $ne: null }
367325
},
368326
keys: [
369327
"Name",
370328
"Note",
371329
"Folder.Name",
372330
"URL",
373331
"ExtUserPtr.Name",
374-
"Signers.Name"
332+
"Signers.Name",
333+
"Signers.UserId",
334+
"AuditTrail"
375335
],
376336
orderBy: "-updatedAt",
377337
actions: [

apps/OpenSign/src/routes/Report.js

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const Report = () => {
2727
const { className, params, keys, orderBy } = json;
2828
Parse.serverURL = localStorage.getItem("BaseUrl12");
2929
Parse.initialize(localStorage.getItem("AppID12"));
30+
const currentUser = Parse.User.current().id;
3031
const serverURL =
3132
localStorage.getItem("BaseUrl12") + "classes/" + className;
3233

@@ -38,10 +39,37 @@ const Report = () => {
3839
"X-Parse-Session-Token": localStorage.getItem("accesstoken")
3940
};
4041
try {
41-
const url = `${serverURL}?where=${strParams}&keys=${strKeys}&order=${orderBy}`;
42+
const url = `${serverURL}?where=${strParams}&keys=${strKeys}&order=${orderBy}&include=AuditTrail.UserPtr`;
4243
const res = await axios.get(url, { headers: headers });
43-
// console.log("res ", res.data?.results);
44-
setList(res.data?.results);
44+
if (id === "4Hhwbp482K") {
45+
const listData = res.data?.results.filter(
46+
(x) => x.Signers.length > 0
47+
);
48+
let arr = [];
49+
for (const obj of listData) {
50+
const isSigner = obj.Signers.some(
51+
(item) => item.UserId.objectId === currentUser
52+
);
53+
if (isSigner) {
54+
let isRecord;
55+
if (obj?.AuditTrail && obj?.AuditTrail.length > 0) {
56+
isRecord = obj?.AuditTrail.some(
57+
(item) =>
58+
item?.UserPtr?.UserId?.objectId === currentUser &&
59+
item.Activity === "Signed"
60+
);
61+
} else {
62+
isRecord = false;
63+
}
64+
if (isRecord === false) {
65+
arr.push(obj);
66+
}
67+
}
68+
}
69+
setList(arr);
70+
} else {
71+
setList(res.data?.results);
72+
}
4573
setIsLoader(false);
4674
} catch (err) {
4775
console.log("err ", err);

0 commit comments

Comments
 (0)