Skip to content
Snippets Groups Projects
Commit c4e9441b authored by Hamza HRAMCHI's avatar Hamza HRAMCHI
Browse files

FIX #16084 TIME 0:45 clean code + refactoring

parent cb796cb6
No related branches found
No related tags found
No related merge requests found
......@@ -42,16 +42,6 @@ export class DocumentComponent implements OnInit {
@ViewChild('rightContent', { static: true }) rightContent: TemplateRef<any>;
@ViewChild('pagesList') pagesList: any;
posX: number = 0;
posY: number = 0;
enterApp: boolean = true;
detailMode: boolean = false;
pageNum: number = 1;
signaturesContent: any = [];
totalPages: number;
draggable: boolean;
currentDoc: number = 0;
docList: any = [];
actionsList: any = [
{
id: 2,
......@@ -75,12 +65,6 @@ export class DocumentComponent implements OnInit {
event: 'validateDocument'
},
];
pdfDataArr: any;
freezeSidenavClose: boolean = false;
startX: number = 0;
startY: number = 0;
widthDoc: string = '100%';
resetDragPos: boolean = false;
mainDocument: any = {
id: 0,
......@@ -89,45 +73,56 @@ export class DocumentComponent implements OnInit {
workflow: [],
};
loadingUI: any = false;
signaturesContent: any = [];
docList: any = [];
posX: number = 0;
posY: number = 0;
pageNum: number = 1;
currentDoc: number = 0;
totalPages: number;
detailMode: boolean = false;
draggable: boolean;
expandedNote: boolean = true;
hasWorkflowNotes: boolean = false;
currentTool = 'info';
load: HTMLIonLoadingElement = null;
dragging: boolean = false;
resizing: boolean = false;
pdfname: string = null;
loadingdocument: boolean = true;
loadingpdf: boolean = false;
loadingImage: boolean = true;
hasWorkflowNotes: boolean = false;
currentTool: string = 'info';
pdfname: string = null;
fileContent: string = '';
userMode: string = '';
constructor(private translate: TranslateService,
private router: Router,
private route: ActivatedRoute,
load: HTMLIonLoadingElement = null;
constructor(
public http: HttpClient,
public signaturesService: SignaturesContentService,
public notificationService: NotificationService,
private cookieService: CookieService,
public sanitizer: DomSanitizer,
public dialog: MatDialog,
private bottomSheet: MatBottomSheet,
public authService: AuthService,
private localStorage: LocalStorageService,
private menu: MenuController,
public actionSheetController: ActionSheetController,
public loadingController: LoadingController,
public viewContainerRef: ViewContainerRef,
public modalController: ModalController,
private pdfViewerService: NgxExtendedPdfViewerService,
public alertController: AlertController,
public signatureMethodService: SignatureMethodService,
public navCtrl: NavController,
public functionsService: FunctionsService,
public actionsService: ActionsService,
private translate: TranslateService,
private router: Router,
private route: ActivatedRoute,
private bottomSheet: MatBottomSheet,
private localStorage: LocalStorageService,
private menu: MenuController,
private pdfViewerService: NgxExtendedPdfViewerService,
private cookieService: CookieService,
) {
this.draggable = false;
}
......@@ -147,7 +142,6 @@ export class DocumentComponent implements OnInit {
getImageDimensions(ajustSize: boolean = false): void {
const img = new Image();
img.onload = (data: any) => {
const percent = (data.target.naturalWidth * 100) / this.signaturesService.workingAreaWidth;
this.signaturesService.workingAreaWidth = data.target.naturalWidth;
......@@ -156,33 +150,14 @@ export class DocumentComponent implements OnInit {
if (ajustSize) {
this.getAreaDimension();
}
/* if (percent !== Infinity) {
this.signatures.forEach(element => {
element.position.height = (percent * element.position.height) / 100;
element.position.width = (percent * element.position.width) / 100;
element.position.top = (percent * element.position.top) / 100;
element.position.left = (percent * element.position.left) / 100;
});
}*/
// this.originalSize = true;
};
img.src = this.docList[this.currentDoc].imgContent[this.pageNum];
}
getAreaDimension() {
const percent = (this.mainContent.el.offsetWidth * 100) / this.signaturesService.workingAreaWidth;
this.signaturesService.workingAreaWidth = (percent * this.signaturesService.workingAreaWidth) / 100;
this.signaturesService.workingAreaHeight = (percent * this.signaturesService.workingAreaHeight) / 100;
/* this.signatures.forEach(element => {
element.position.height = (percent * element.position.height) / 100;
element.position.width = (percent * element.position.width) / 100;
element.position.top = (percent * element.position.top) / 100;
element.position.left = (percent * element.position.left) / 100;
});*/
// this.originalSize = false;
}
async openAction(event: any) {
......@@ -217,25 +192,7 @@ export class DocumentComponent implements OnInit {
}
});
}
/* if (this.originalSize) {
buttons.push({
text: 'Zoom taille écran',
icon: 'contract-outline',
handler: () => {
this.getAreaDimension();
console.log('Share clicked');
}
});
} else {
buttons.push({
text: 'Zoom taille écran',
icon: 'contract-outline',
handler: () => {
this.getImageDimensions();
console.log('Share clicked');
}
});
} */
if (!this.checkEmptiness(true, true, true)) {
buttons.push({
text: this.translate.instant('lang.deleteAll'),
......@@ -335,109 +292,117 @@ export class DocumentComponent implements OnInit {
}).then((load: HTMLIonLoadingElement) => {
this.load = load;
this.load.present();
this.http.get('../rest/documents/' + params['id']).pipe(
tap((data: any) => {
this.mainDocument = data.document;
this.mainDocument.workflow = this.mainDocument.workflow.map((item: any) => {
if (item.note) {
this.hasWorkflowNotes = true;
}
item.signatureMode = item.userId === null && item.mode === 'sign' && item.signatureMode === 'stamp' ? 'sign' : item.signatureMode;
let modes = ['visa', 'sign'].concat(item.userSignatureModes);
if (item.signatureMode === 'otp_sign_yousign') {
modes = modes.concat(['otp_sign_yousign']);
}
if (item.signatureMode === 'otp_visa_yousign') {
modes = modes.concat(['otp_visa_yousign']);
}
return {
...item,
'role': item.mode === 'visa' ? 'visa' : item.signatureMode,
'modes': modes
};
});
this.initDocumentInfos(params);
});
}
});
}
this.totalPages = this.mainDocument.pages;
this.signaturesService.mainDocumentId = this.mainDocument.id;
this.signaturesService.totalPage = this.mainDocument.pages;
this.menu.enable(true, 'right-menu');
this.initDoc();
const realUserWorkflow = this.mainDocument.workflow.filter((line: { current: boolean }) => line.current === true);
this.mainDocument.isCertified = this.mainDocument.workflow.filter((line: any) => line.status !== 'REF' && line.status !== 'STOP' && line.mode.indexOf('sign') > -1 && line.signatureMode !== 'stamp' && line.processDate !== null).length > 0;
const externalUser: any = this.mainDocument.workflow.filter((user: any) => user.userId === null && user.current === true);
if (realUserWorkflow.length === 0 || this.mainDocument.readOnly || externalUser.length > 0) {
this.actionsList = [
{
id: 4,
label: 'lang.back',
color: 'medium',
logo: 'chevron-back-outline',
event: 'back'
},
];
this.detailMode = true;
} else {
this.signaturesService.stampLock = this.mainDocument.isCertified && ((realUserWorkflow[0].signatureMode === 'stamp' && realUserWorkflow[0].mode === 'sign') || (realUserWorkflow[0].mode === 'visa'));
if (realUserWorkflow[0].userId !== this.authService.user.id) {
this.http.get('../rest/users/' + realUserWorkflow[0].userId + '/signatures')
.subscribe((dataSign: any) => {
this.signaturesService.signaturesListSubstituted = dataSign.signatures;
});
} else {
this.signaturesService.signaturesListSubstituted = [];
}
if (realUserWorkflow[0].datePositions.length > 0 && this.functionsService.empty(this.signaturesService.datesContent)) {
realUserWorkflow[0].datePositions.forEach((date: any) => {
if (!this.signaturesService.datesContent[date.page]) {
this.signaturesService.datesContent[date.page] = [];
}
this.signaturesService.datesContent[date.page][0] = {
width: date.width,
height: date.height,
positionX: date.positionX,
positionY: date.positionY,
font: date.font,
size: date.size,
color: date.color,
format: date.format
};
});
}
}
initDocumentInfos(params: any) {
this.http.get('../rest/documents/' + params['id']).pipe(
tap((data: any) => {
this.mainDocument = data.document;
this.mainDocument.workflow = this.mainDocument.workflow.map((item: any) => {
if (item.note) {
this.hasWorkflowNotes = true;
}
item.signatureMode = item.userId === null && item.mode === 'sign' && item.signatureMode === 'stamp' ? 'sign' : item.signatureMode;
let modes = ['visa', 'sign'].concat(item.userSignatureModes);
if (item.signatureMode === 'otp_sign_yousign') {
modes = modes.concat(['otp_sign_yousign']);
}
if (item.signatureMode === 'otp_visa_yousign') {
modes = modes.concat(['otp_visa_yousign']);
}
return {
...item,
role: item.mode === 'visa' ? 'visa' : item.signatureMode,
modes: modes
};
});
this.docList.push({ 'id': this.mainDocument.id, 'title': this.mainDocument.title, 'pages': this.mainDocument.pages, 'imgContent': [], 'imgUrl': '../rest/documents/' + this.mainDocument.id + '/thumbnails' });
this.mainDocument.attachments.forEach((attach: any) => {
this.docList.push({ 'id': attach.id, 'title': attach.title, 'pages': attach.pages, 'imgContent': [], 'imgUrl': '../rest/attachments/' + attach.id + '/thumbnails' });
this.totalPages = this.mainDocument.pages;
this.signaturesService.mainDocumentId = this.mainDocument.id;
this.signaturesService.totalPage = this.mainDocument.pages;
this.menu.enable(true, 'right-menu');
this.initDoc();
const realUserWorkflow = this.mainDocument.workflow.filter((line: { current: boolean }) => line.current === true);
this.mainDocument.isCertified = this.mainDocument.workflow.filter((line: any) => line.status !== 'REF' && line.status !== 'STOP' && line.mode.indexOf('sign') > -1 && line.signatureMode !== 'stamp' && line.processDate !== null).length > 0;
const externalUser: any = this.mainDocument.workflow.filter((user: any) => user.userId === null && user.current === true);
if (realUserWorkflow.length === 0 || this.mainDocument.readOnly || externalUser.length > 0) {
this.actionsList = [
{
id: 4,
label: 'lang.back',
color: 'medium',
logo: 'chevron-back-outline',
event: 'back'
},
];
this.detailMode = true;
} else {
this.signaturesService.stampLock = this.mainDocument.isCertified && ((realUserWorkflow[0].signatureMode === 'stamp' && realUserWorkflow[0].mode === 'sign') || (realUserWorkflow[0].mode === 'visa'));
if (realUserWorkflow[0].userId !== this.authService.user.id) {
this.http.get('../rest/users/' + realUserWorkflow[0].userId + '/signatures')
.subscribe((dataSign: any) => {
this.signaturesService.signaturesListSubstituted = dataSign.signatures;
});
this.menu.enable(true, 'right-menu');
// this.renderPdf();
this.renderImage();
this.loadingdocument = false;
}),
catchError((err: any) => {
console.log('error', err);
setTimeout(() => {
this.load.dismiss();
}, 200);
this.notificationService.handleErrors(err);
this.router.navigate(['/home']);
return of(false);
})
).subscribe();
} else {
this.signaturesService.signaturesListSubstituted = [];
}
if (realUserWorkflow[0].datePositions.length > 0 && this.functionsService.empty(this.signaturesService.datesContent)) {
realUserWorkflow[0].datePositions.forEach((date: any) => {
if (!this.signaturesService.datesContent[date.page]) {
this.signaturesService.datesContent[date.page] = [];
}
this.signaturesService.datesContent[date.page][0] = {
width: date.width,
height: date.height,
positionX: date.positionX,
positionY: date.positionY,
font: date.font,
size: date.size,
color: date.color,
format: date.format
};
});
}
}
this.docList.push({ 'id': this.mainDocument.id, 'title': this.mainDocument.title, 'pages': this.mainDocument.pages, 'imgContent': [], 'imgUrl': '../rest/documents/' + this.mainDocument.id + '/thumbnails' });
this.mainDocument.attachments.forEach((attach: any) => {
this.docList.push({ 'id': attach.id, 'title': attach.title, 'pages': attach.pages, 'imgContent': [], 'imgUrl': '../rest/attachments/' + attach.id + '/thumbnails' });
});
}
});
this.menu.enable(true, 'right-menu');
// this.renderPdf();
this.renderImage();
this.loadingdocument = false;
}),
catchError((err: any) => {
console.log('error', err);
setTimeout(() => {
this.load.dismiss();
}, 200);
this.notificationService.handleErrors(err);
this.router.navigate(['/home']);
return of(false);
})
).subscribe();
}
renderPdf() {
this.http.get('../rest/documents/' + this.docList[this.currentDoc].id + '/content')
.subscribe((data: any) => {
this.http.get('../rest/documents/' + this.docList[this.currentDoc].id + '/content').pipe(
tap((data: any) => {
this.pdfname = 'data:application/pdf;base64,' + data.encodedDocument;
this.loadingpdf = true;
});
}),
catchError((err: any) => {
this.notificationService.handleErrors(err);
return of(false);
})
).subscribe();
}
async onPagesLoaded(ev: any) {
......@@ -509,55 +474,12 @@ export class DocumentComponent implements OnInit {
this.currentDoc = 0;
}
testDrag(event: any) {
const element = event.source.getRootElement();
const boundingClientRect = element.getBoundingClientRect();
const parentPosition = this.getPosition(element);
this.signaturesService.y = (boundingClientRect.y - parentPosition.top);
this.signaturesService.x = (boundingClientRect.x - parentPosition.left);
}
getPosition(el: any) {
let x = 0;
let y = 0;
while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {
x += el.offsetLeft - el.scrollLeft;
y += el.offsetTop - el.scrollTop;
el = el.offsetParent;
}
return { top: y, left: x };
}
zoomForNotes() {
this.widthDoc = '200%';
this.signaturesService.scale = 2;
$('.example-box').css({ 'transform': 'translate3d(' + this.signaturesService.x * this.signaturesService.scale + 'px, ' + this.signaturesService.y * this.signaturesService.scale + 'px, 0px)' });
this.signaturesService.workingAreaHeight *= this.signaturesService.scale;
this.signaturesService.workingAreaWidth *= this.signaturesService.scale;
}
zoomForView() {
this.resetDragPos = true;
this.widthDoc = '100%';
this.signaturesService.workingAreaHeight = this.signaturesService.workingAreaHeight / 2;
this.signaturesService.workingAreaWidth = this.signaturesService.workingAreaWidth / 2;
setTimeout(() => {
this.resetDragPos = false;
}, 200);
this.signaturesService.scale = 1;
}
prevPage() {
this.loadingImage = true;
this.pageNum--;
if (this.pageNum === 0) {
this.pageNum = 1;
} else {
}
if (this.currentDoc === 0) {
......@@ -606,15 +528,6 @@ export class DocumentComponent implements OnInit {
return Array(n);
}
initWorkingArea() {
/* if ((typeof this.signaturesService.workingAreaHeight !== 'number' || this.signaturesService.workingAreaHeight === 0) && (typeof this.signaturesService.workingAreaWidth !== 'number' || this.signaturesService.workingAreaWidth === 0)) {
this.img = document.querySelector('img.zoom');
const rect = this.img.getBoundingClientRect();
this.signaturesService.workingAreaHeight = rect.height;
this.signaturesService.workingAreaWidth = rect.width;
}*/
}
async refuseDocument(): Promise<void> {
let msg: string = this.translate.instant('lang.rejectDocumentWarning');
const mode: string = this.mainDocument.workflow.find((item: any) => item.current).mode;
......@@ -641,7 +554,6 @@ export class DocumentComponent implements OnInit {
handler: async (data: any) => {
this.signaturesService.signaturesContent = [];
const idsToProcess = await this.actionsService.checkGroupMail(this.mainDocument, 'reject');
const res = await this.signatureMethodService.launchDefaultMode(data.paragraph, idsToProcess);
if (!this.functionsService.empty(res)) {
......@@ -686,7 +598,6 @@ export class DocumentComponent implements OnInit {
handler: async (data: any) => {
const currentUserWorkflow = this.mainDocument.workflow.filter((line: { current: boolean }) => line.current === true)[0];
const idsToProcess = await this.actionsService.checkGroupMail(this.mainDocument, 'validate');
const res = await this.signatureMethodService.checkAuthenticationAndLaunchAction(currentUserWorkflow, data.paragraph, idsToProcess);
if (!this.functionsService.empty(res)) {
......@@ -811,18 +722,6 @@ export class DocumentComponent implements OnInit {
this.signaturesService.currentToobal = 'mainDocumentDetail';
}
deleteSubstution() {
const r = confirm(this.translate.instant('lang.deleteSubstitution') + ' ?');
if (r) {
this.http.put('../rest/users/' + this.authService.user.id + '/substitute', { substitute: null })
.subscribe(() => {
this.authService.updateUserInfoWithTokenRefresh();
this.notificationService.success('lang.substitutionDeleted');
});
}
}
back() {
this.navCtrl.back();
}
......@@ -839,15 +738,6 @@ export class DocumentComponent implements OnInit {
}
}
fromHex(hexString: any) {
const res = new Uint8Array(hexString.length / 2);
for (let i = 0; i < hexString.length; i = i + 2) {
const c = hexString.slice(i, i + 2);
res[i / 2] = parseInt(c, 16);
}
return res.buffer;
}
canShowActions() {
return this.currentDoc === 0 && !this.detailMode && !this.signaturesService.stampLock;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment