diff --git a/doc/html.md b/doc/html.md new file mode 100644 index 000000000..fbe5fe6c6 --- /dev/null +++ b/doc/html.md @@ -0,0 +1,4 @@ + +## Dev +
+>
diff --git a/gabinete-digital-fo.code-workspace b/gabinete-digital-fo.code-workspace index 2730d9669..f1b39c052 100644 --- a/gabinete-digital-fo.code-workspace +++ b/gabinete-digital-fo.code-workspace @@ -14,9 +14,6 @@ }, { "path": "../sih" - }, - { - "path": "../Ionic-Video-Capture-Play-main" } ], "settings": { diff --git a/src/app/pages/gabinete-digital/despachos/despacho/despacho.module.ts b/src/app/pages/gabinete-digital/despachos/despacho/despacho.module.ts index 0b0074654..36cacafbc 100644 --- a/src/app/pages/gabinete-digital/despachos/despacho/despacho.module.ts +++ b/src/app/pages/gabinete-digital/despachos/despacho/despacho.module.ts @@ -10,6 +10,7 @@ import { DespachoPage } from './despacho.page'; import { SharedModule } from 'src/app/shared/shared.module'; import { TaskDetailsPageModule } from 'src/app/shared/gabinete-digital/generic/task-details/task-details.module' import { ViewerAttachmentPageModule } from '../../viewer-attachment/viewer-attachment.module'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; @NgModule({ imports: [ @@ -19,7 +20,8 @@ import { ViewerAttachmentPageModule } from '../../viewer-attachment/viewer-attac DespachoPageRoutingModule, ViewerAttachmentPageModule, TaskDetailsPageModule, - SharedModule + SharedModule, + FontAwesomeModule, ], declarations: [ DespachoPage, diff --git a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html index 169b54b4d..a9a3de60b 100644 --- a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html +++ b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html @@ -18,23 +18,113 @@ -
-
- -

{{customDate}}

-
- -

{{ task.DeadlineType }}

-
- -

{{ task.activityInstanceName }}

-
-
-
-
-
- +
+
+ + +
+ +
+
+
+
+ +

{{customDate}}

+
+ +

{{ task.DeadlineType }}

+
+
+ + +

{{ task.activityInstanceName }}

+
+
+
+
+ +
+
Intervenientes
+ + +
+

{{task.Name}}

+
+
+
+
+
Com conhecimento
+ + +
+

{{c.Name}}

+
+
+
+
+
+
Detalhes
+ +
{{ fulltask.workflowInstanceDataFields.TaskMessage }} 
+
+
+
+ + +
+ +
Documentos Anexados
+ + +
+ +
+

{{ Document.Assunto || "Sem assunto" }} Rascunho

+

{{ Document.Sender}}{{ Document.DocDate | date: 'dd-MM-yyyy HH:mm' }}

+
+ +
+ +
+
+ +
+
+
+ +
+ + + + + + +
+ +
+ +
diff --git a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.scss b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.scss index 17bb8e5e6..369a6ec80 100644 --- a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.scss +++ b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.scss @@ -60,10 +60,13 @@ ion-button{ margin: 20px auto; } +.upper-content-margin { + margin-left: 36px; +} + .upper-content{ font-family: Roboto; margin-top: 15px; - margin-left: 36px; font-size: rem(18); .label{ @@ -219,3 +222,18 @@ ion-button{ padding-left: 4px; } } + + +.expand { + margin-left: -20px; + margin-right: -20px; + width: calc(100% + 40px); +} + + + +.selected-card { + border: 3px solid #ffb703; + color: #3498db; + +} diff --git a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts index 9f2d62f44..b1cb8407e 100644 --- a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts +++ b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts @@ -22,8 +22,7 @@ import { RouteService } from 'src/app/services/route.service'; import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { TaskService } from 'src/app/services/task.service' import { TinyMCEPage } from 'src/app/tiny-mce/tiny-mce.page'; - - +import { DeviceService } from "src/app/services/device.service" @Component({ selector: 'app-despacho', templateUrl: './despacho.page.html', @@ -50,6 +49,9 @@ export class DespachoPage implements OnInit { executadoText: string = "Executado"; gerarText: string = "Gerar" draftDocumentIds; + selectedIndex = 0 + + dropButton = false constructor(private activateRoute: ActivatedRoute, @@ -65,7 +67,8 @@ export class DespachoPage implements OnInit { private backgroundservice: BackgroundService, public ThemeService: ThemeService, private httpErrorHandle: HttpErrorHandle, - public TaskService: TaskService + public TaskService: TaskService, + public DeviceService: DeviceService ) { @@ -245,6 +248,10 @@ export class DespachoPage implements OnInit { // } + clickDocumentUPdateIndex(index) { + return this.selectedIndex = index + } + async viewDocument(docId: string, Document, content) { if (Document.content == "") { @@ -280,6 +287,11 @@ export class DespachoPage implements OnInit { + } + + + clickAttachment() { + } openMenu() { diff --git a/src/app/pages/gabinete-digital/viewer-attachment/prop.ts b/src/app/pages/gabinete-digital/viewer-attachment/prop.ts index 7cfd73739..3c78d1a7f 100644 --- a/src/app/pages/gabinete-digital/viewer-attachment/prop.ts +++ b/src/app/pages/gabinete-digital/viewer-attachment/prop.ts @@ -1,12 +1,18 @@ import { z } from "zod"; -const Bodyschema = z.object({ - SerialNumber: z.string(), - DispatchDocId: z.number(), - FolderID: z.any(), - Subject: z.string(), - Comment: z.string().optional(), - DelegatedUserEmail: z.string().email(), - UserId: z.any(), - DraftIds: z.string(), +export const ViewerAttachmentParams = z.object({ + ApplicationId: z.string().optional(), + Assunto: z.string({}).nonempty(), + DocDate: z.string(), + DocId: z.string().nonempty(), + DocNumber: z.string(), + FolderId: z.string(), + Sender: z.string(), + SourceDocId: z.string(), + content: z.string().nonempty(), + path: z.string().nonempty(), + ownerId: z.string().nonempty(), + status: z.string().nonempty(), }) + +export type ViewerAttachment = z.infer; diff --git a/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.html b/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.html index a1ed2b52d..4133b58c5 100644 --- a/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.html +++ b/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.html @@ -1,18 +1,26 @@
-
-
-
- Attachment 1 sdhnfjanshdfhnasdhfahsdfja shdf asdf - 123123 +
+ +
+
+ +
+ {{ attachment.Assunto }}Rascunho +
+ {{ attachment.Sender }} +
+ {{ attachment.DocDate | date: 'dd/MM/yy' }} +
+
-
-
Attachment 2
-
+
-
+
diff --git a/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.scss b/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.scss index 8d7dedb7a..4f9578617 100644 --- a/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.scss +++ b/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.scss @@ -1,13 +1,14 @@ .card-text { - width: 150px; - border: 1px solid black; - text-align: center; + max-width: 250px; + border: 1px solid #3498db; + color: #3498db; background: white; display: flex; justify-content: center; align-items: center; + cursor: pointer; p { margin: 0px; @@ -17,6 +18,16 @@ .selected-card { border: 3px solid #ffb703; - color: blue; + color: #3498db; } + +iframe { + height: 100%; + width: 100%; +} + + +.selected-attachment { + border: 2px solid #3498db; /* You can customize the border style and color */ +} diff --git a/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.ts b/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.ts index 91cde6e1d..091c6c70a 100644 --- a/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.ts +++ b/src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.ts @@ -1,6 +1,8 @@ -import { Component, OnInit, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core'; +import { Component, OnInit, CUSTOM_ELEMENTS_SCHEMA, Input, ViewChild, ElementRef } from '@angular/core'; import { IonicSlides } from '@ionic/angular'; - +import { ViewerAttachment, ViewerAttachmentParams } from './prop'; +import { MiddlewareRepositoryService } from "src/app/shared/repository/middleware/middleware-repository.service" +import { DeviceService } from "src/app/services/device.service" @Component({ selector: 'app-viewer-attachment', templateUrl: './viewer-attachment.page.html', @@ -8,12 +10,72 @@ import { IonicSlides } from '@ionic/angular'; }) export class ViewerAttachmentPage implements OnInit { + @Input() selectedIndex = 0; swiperModules = [IonicSlides]; - @Input() task: string; + @Input() taskViewerAttachment: ViewerAttachment[]; + viewer: {[key: string]: HTMLDivElement} = {} + @ViewChild('iframeContainer') iframeContainer: ElementRef; - constructor() { } + constructor( + public middlewareRepositoryService: MiddlewareRepositoryService, + public DeviceService: DeviceService + ) { } ngOnInit() { + this.validateParams() } + + clickDocumentUPdateIndex(index: number) { + // Update the selected index + this.selectedIndex = index; + } + + async clickDocument(viewerAttachment: ViewerAttachment) { + const hasIframe = this.iframeContainer.nativeElement.querySelector("iframe") + if(hasIframe) {} + + this.iframeContainer.nativeElement.innerHTML = "" + this.iframeContainer + + + const linkRequest = await this.middlewareRepositoryService.getViewerLink({ + ApplicationId: viewerAttachment.ApplicationId, + DocId: viewerAttachment.DocId + }) + + if(linkRequest.isOk()) { + + // Optionally, you can add new content or recreate the iframe + var newIframe = document.createElement('iframe'); + newIframe.src = linkRequest.value; + + newIframe.width = '100%' + newIframe.height = '100%' + + this.iframeContainer.nativeElement.appendChild(newIframe) + } + + } + + validateParams() { + console.log(this.taskViewerAttachment) + try { + const validatedObjects = this.taskViewerAttachment.map((item, index) => { + return ViewerAttachmentParams.parse(item); + }); + + console.log('Validation successful for all elements:', validatedObjects); + } catch (error) { + // console.error('Validation failed:', error, this.taskViewerAttachment); + } + } + + + ngOnChanges() { + this.clickDocumentUPdateIndex(this.selectedIndex) + const task = this.taskViewerAttachment[this.selectedIndex] + + this.clickDocument(task) + } } diff --git a/src/app/services/device.service.spec.ts b/src/app/services/device.service.spec.ts new file mode 100644 index 000000000..d55f5fb7d --- /dev/null +++ b/src/app/services/device.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { DeviceService } from './device.service'; + +describe('DeviceService', () => { + let service: DeviceService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(DeviceService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/device.service.ts b/src/app/services/device.service.ts new file mode 100644 index 000000000..bff5143c7 --- /dev/null +++ b/src/app/services/device.service.ts @@ -0,0 +1,21 @@ +import { Injectable } from '@angular/core'; +import { Platform } from '@ionic/angular'; + +@Injectable({ + providedIn: 'root' +}) +export class DeviceService { + + constructor( private platform: Platform,) { } + + + isTableDivice() { + + return false; + } + + isDesktop() { + + return true; + } +} diff --git a/src/app/shared/API/middleware/middleware-service.service.ts b/src/app/shared/API/middleware/middleware-service.service.ts index 4e58739d6..4211a26ad 100644 --- a/src/app/shared/API/middleware/middleware-service.service.ts +++ b/src/app/shared/API/middleware/middleware-service.service.ts @@ -182,4 +182,19 @@ export class MiddlewareServiceService { return this.http.post(`${geturl}`, formData, options) } + + + GetViewer(DocId: string, FsId: string) { + + const geturl = environment.apiURL + 'ecm/document/viewfile'; + let params = new HttpParams(); + + params = params.set("docId", DocId); + params = params.set("applicationId", FsId); + + let options = { + params: params + }; + return this.http.get(`${geturl}`, options); + } } diff --git a/src/app/shared/repository/CMAPI/cmapi.service.ts b/src/app/shared/repository/CMAPI/cmapi.service.ts index 5335174ab..bb72d96d0 100644 --- a/src/app/shared/repository/CMAPI/cmapi.service.ts +++ b/src/app/shared/repository/CMAPI/cmapi.service.ts @@ -20,7 +20,7 @@ export class CMAPIService { } catch (error) { return err(error) } - + } } diff --git a/src/app/shared/repository/middleware/middleware-repository.service.spec.ts b/src/app/shared/repository/middleware/middleware-repository.service.spec.ts new file mode 100644 index 000000000..b9ffd7e10 --- /dev/null +++ b/src/app/shared/repository/middleware/middleware-repository.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { MiddlewareRepositoryService } from './middleware-repository.service'; + +describe('MiddlewareRepositoryService', () => { + let service: MiddlewareRepositoryService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(MiddlewareRepositoryService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/shared/repository/middleware/middleware-repository.service.ts b/src/app/shared/repository/middleware/middleware-repository.service.ts new file mode 100644 index 000000000..f42f76285 --- /dev/null +++ b/src/app/shared/repository/middleware/middleware-repository.service.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import { MiddlewareServiceService } from "src/app/shared/API/middleware/middleware-service.service" +import { ok, err, Result } from 'neverthrow'; + +@Injectable({ + providedIn: 'root' +}) +export class MiddlewareRepositoryService { + + constructor(private MiddlewareServiceService: MiddlewareServiceService) { } + + + async getViewerLink({DocId, ApplicationId}): Promise> { + try { + const result = await this.MiddlewareServiceService.GetViewer(DocId, ApplicationId).toPromise(); + return ok(result.replace('//pdfjs/web/', '/pdfjs/web/')) + + } catch (error) { + return err(error) + } + + } +} diff --git a/tsconfig.json b/tsconfig.json index 7d035ff1f..d03089348 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -30,4 +30,4 @@ "src/sql", "src/connection", ] -} \ No newline at end of file +}