From adeae6cff88b669737dd0fffd6b6916fc6ec05ce Mon Sep 17 00:00:00 2001 From: "tiago.kayaya" Date: Thu, 4 Mar 2021 11:22:24 +0100 Subject: [PATCH 01/16] save --- config.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/config.xml b/config.xml index 64e69955e..fb127b687 100644 --- a/config.xml +++ b/config.xml @@ -1,6 +1,6 @@ - - MyApp + + gabinete digital An awesome Ionic/Cordova app. Ionic Framework Team @@ -142,4 +142,5 @@ en /adapters/MobileAPIProxy 2 + From cf01c79ac65f34369bf781220d4073bfd5bbe44c Mon Sep 17 00:00:00 2001 From: "tiago.kayaya" Date: Thu, 4 Mar 2021 15:24:47 +0100 Subject: [PATCH 02/16] save --- src/app/pages/chat/chat.page.html | 147 ++++++++++++++++-------------- 1 file changed, 79 insertions(+), 68 deletions(-) diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index ba44667da..290779158 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -2,9 +2,9 @@ - + - + -
- - - - Conversas - - - Grupos - - - - - - -
- - - -
-
- -
-
-
-
- - - {{user}} - - +
+ +
+ +
+

Chat

+ + + + Conversas + + + Grupos + + + +
+
+ + + +
+
+ +
+
+
+
+ + + {{user}} + + +
+
{{dm._updatedAt | date: 'HH:mm'}}
+
+
+ {{dm.lastMessage.msg}} +
+
-
{{dm._updatedAt | date: 'HH:mm'}}
-
-
- {{dm.lastMessage.msg}} -
-
-
- - - - - - -
-
- -
-
-
-
- {{group.name.split('-').join(' ')}} -
-
{{group.lastMessage._updatedAt | date: 'HH:mm'}}
-
-
- {{group.lastMessage.u.name}}: {{group.lastMessage.msg}} -
-
-
-
-
- -
+ + + + + + +
+
+ +
+
+
+
+ {{group.name.split('-').join(' ')}} +
+
{{group.lastMessage._updatedAt | date: 'HH:mm'}}
+
+
+ {{group.lastMessage.u.name}}: {{group.lastMessage.msg}} +
+
+
+
+
+ +
+
+
+
+ +
+ NONE + +
+
-
From f71f732bebd388e031bc004a378d4b91dbb28f83 Mon Sep 17 00:00:00 2001 From: "tiago.kayaya" Date: Thu, 4 Mar 2021 18:49:50 +0100 Subject: [PATCH 03/16] save --- src/app/shared/chat/messages/messages.page.ts | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 src/app/shared/chat/messages/messages.page.ts diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts new file mode 100644 index 000000000..dd5bc7664 --- /dev/null +++ b/src/app/shared/chat/messages/messages.page.ts @@ -0,0 +1,144 @@ +import { AfterViewChecked, Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { ModalController, NavParams, PopoverController } from '@ionic/angular'; +import { Status } from 'src/app/models/chat/status.model'; +import { ContactsPage } from 'src/app/pages/chat/messages/contacts/contacts.page'; +import { AuthService } from 'src/app/services/auth.service'; +import { ChatService } from 'src/app/services/chat.service'; +import { ChatOptionsPopoverPage } from 'src/app/shared/popover/chat-options-popover/chat-options-popover.page'; +import { MessagesOptionsPage } from 'src/app/shared/popover/messages-options/messages-options.page'; + +@Component({ + selector: 'app-messages', + templateUrl: './messages.page.html', + styleUrls: ['./messages.page.scss'], +}) +export class MessagesPage implements OnInit, AfterViewChecked { + showLoader: boolean; + + @ViewChild('scrollMe') private myScrollContainer: ElementRef; + + loggedUser: any; + + message = ''; + messages:any; + dm:any; + userPresence=''; + dmUsers:any; + + + constructor( + public popoverController: PopoverController, + private modalController: ModalController, + private navParams: NavParams, + private chatService: ChatService, + private authService: AuthService, + ) { + this.dm = this.navParams.get('dm'); + } + + ngOnInit() { + + this.scrollToBottom(); + + this.authService.userData$.subscribe((res:any)=>{ + this.loggedUser=res; + console.log(this.loggedUser); + }); + + /* setInterval(()=>{ */ + this.load(); + /* }, 9000); */ + + } + load(){ + this.loadMessages(); + this.getChatMembers(); + } + doRefresh(ev:any){ + this.load(); + ev.target.complete(); + } + + ngAfterViewChecked() { + this.scrollToBottom(); + } + scrollToBottom(): void { + try { + this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + } catch(err) { } + } + loadMoreMessages(ev:any){ + + } + + sendMessage(){ + + let body = { + "message": + { + "rid": this.dm._id, "msg": this.message + } + } + + this.chatService.sendMessage(body).subscribe(res=> { + this.loadMessages(); + }); + this.message = ""; + } + + loadMessages(){ + this.showLoader = true; + this.chatService.getRoomMessages(this.dm._id).subscribe(res => { + /* console.log(res); */ + this.messages = res['messages'].reverse(); + console.log(this.messages); + this.showLoader = false; + }) + } + getChatMembers(){ + this.showLoader = true; + this.chatService.getMembers(this.dm._id).subscribe(res=> { + this.dmUsers = res['members'].filter(data => data.username != this.loggedUser.me.username) + console.log(res); + console.log(this.dmUsers); + this.showLoader = false; + }); + } + + async openMessagesOptions(ev: any) { + const popover = await this.popoverController.create({ + component: MessagesOptionsPage, + componentProps: { + roomId: this.dm._id, + }, + cssClass: 'messages-options', + event: ev, + translucent: true, + }); + return await popover.present(); + } + + async addContacts(){ + const modal = await this.modalController.create({ + component: ContactsPage, + componentProps: {}, + cssClass: 'contacts', + backdropDismiss: false + }); + + await modal.present(); + + modal.onDidDismiss(); + } + + async openChatOptions(ev: any) { + const popover = await this.popoverController.create({ + component: ChatOptionsPopoverPage, + cssClass: 'chat-options-popover', + event: ev, + translucent: true + }); + return await popover.present(); + } + +} From 570ccabb2674bf8545c077c74506d6e5309e4e35 Mon Sep 17 00:00:00 2001 From: "tiago.kayaya" Date: Thu, 4 Mar 2021 18:50:26 +0100 Subject: [PATCH 04/16] add new components for chat in shared --- src/app/app-routing.module.ts | 6 +- src/app/pages/chat/chat.page.html | 27 +-- src/app/pages/chat/chat.page.scss | 33 ++- src/app/pages/chat/chat.page.ts | 19 +- .../gabinete-digital.page.scss | 1 + .../group-contacts-routing.module.ts | 17 ++ .../group-contacts/group-contacts.module.ts | 24 ++ .../group-contacts/group-contacts.page.html | 59 +++++ .../group-contacts/group-contacts.page.scss | 141 +++++++++++ .../group-contacts.page.spec.ts | 24 ++ .../group-contacts/group-contacts.page.ts | 211 +++++++++++++++++ .../group-messages-routing.module.ts | 21 ++ .../group-messages/group-messages.module.ts | 24 ++ .../group-messages/group-messages.page.html | 76 ++++++ .../group-messages/group-messages.page.scss | 174 ++++++++++++++ .../group-messages.page.spec.ts | 24 ++ .../group-messages/group-messages.page.ts | 200 ++++++++++++++++ .../contacts/contacts-routing.module.ts | 17 ++ .../chat/messages/contacts/contacts.module.ts | 24 ++ .../chat/messages/contacts/contacts.page.html | 46 ++++ .../chat/messages/contacts/contacts.page.scss | 136 +++++++++++ .../messages/contacts/contacts.page.spec.ts | 24 ++ .../chat/messages/contacts/contacts.page.ts | 153 ++++++++++++ .../chat/messages/messages-routing.module.ts | 21 ++ .../shared/chat/messages/messages.module.ts | 22 ++ .../shared/chat/messages/messages.page.html | 82 +++++++ .../shared/chat/messages/messages.page.scss | 223 ++++++++++++++++++ .../chat/messages/messages.page.spec.ts | 24 ++ .../contacts/contacts-routing.module.ts | 17 ++ .../new-group/contacts/contacts.module.ts | 22 ++ .../new-group/contacts/contacts.page.html | 53 +++++ .../new-group/contacts/contacts.page.scss | 127 ++++++++++ .../new-group/contacts/contacts.page.spec.ts | 24 ++ .../chat/new-group/contacts/contacts.page.ts | 152 ++++++++++++ .../group-chat/group-chat-routing.module.ts | 17 ++ .../new-group/group-chat/group-chat.module.ts | 22 ++ .../new-group/group-chat/group-chat.page.html | 17 ++ .../new-group/group-chat/group-chat.page.scss | 0 .../group-chat/group-chat.page.spec.ts | 24 ++ .../new-group/group-chat/group-chat.page.ts | 15 ++ .../new-group/new-group-routing.module.ts | 25 ++ .../shared/chat/new-group/new-group.module.ts | 22 ++ .../shared/chat/new-group/new-group.page.html | 39 +++ .../shared/chat/new-group/new-group.page.scss | 151 ++++++++++++ .../chat/new-group/new-group.page.spec.ts | 24 ++ .../shared/chat/new-group/new-group.page.ts | 187 +++++++++++++++ src/global.scss | 13 + 47 files changed, 2778 insertions(+), 26 deletions(-) create mode 100644 src/app/shared/chat/group-messages/group-contacts/group-contacts-routing.module.ts create mode 100644 src/app/shared/chat/group-messages/group-contacts/group-contacts.module.ts create mode 100644 src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html create mode 100644 src/app/shared/chat/group-messages/group-contacts/group-contacts.page.scss create mode 100644 src/app/shared/chat/group-messages/group-contacts/group-contacts.page.spec.ts create mode 100644 src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts create mode 100644 src/app/shared/chat/group-messages/group-messages-routing.module.ts create mode 100644 src/app/shared/chat/group-messages/group-messages.module.ts create mode 100644 src/app/shared/chat/group-messages/group-messages.page.html create mode 100644 src/app/shared/chat/group-messages/group-messages.page.scss create mode 100644 src/app/shared/chat/group-messages/group-messages.page.spec.ts create mode 100644 src/app/shared/chat/group-messages/group-messages.page.ts create mode 100644 src/app/shared/chat/messages/contacts/contacts-routing.module.ts create mode 100644 src/app/shared/chat/messages/contacts/contacts.module.ts create mode 100644 src/app/shared/chat/messages/contacts/contacts.page.html create mode 100644 src/app/shared/chat/messages/contacts/contacts.page.scss create mode 100644 src/app/shared/chat/messages/contacts/contacts.page.spec.ts create mode 100644 src/app/shared/chat/messages/contacts/contacts.page.ts create mode 100644 src/app/shared/chat/messages/messages-routing.module.ts create mode 100644 src/app/shared/chat/messages/messages.module.ts create mode 100644 src/app/shared/chat/messages/messages.page.html create mode 100644 src/app/shared/chat/messages/messages.page.scss create mode 100644 src/app/shared/chat/messages/messages.page.spec.ts create mode 100644 src/app/shared/chat/new-group/contacts/contacts-routing.module.ts create mode 100644 src/app/shared/chat/new-group/contacts/contacts.module.ts create mode 100644 src/app/shared/chat/new-group/contacts/contacts.page.html create mode 100644 src/app/shared/chat/new-group/contacts/contacts.page.scss create mode 100644 src/app/shared/chat/new-group/contacts/contacts.page.spec.ts create mode 100644 src/app/shared/chat/new-group/contacts/contacts.page.ts create mode 100644 src/app/shared/chat/new-group/group-chat/group-chat-routing.module.ts create mode 100644 src/app/shared/chat/new-group/group-chat/group-chat.module.ts create mode 100644 src/app/shared/chat/new-group/group-chat/group-chat.page.html create mode 100644 src/app/shared/chat/new-group/group-chat/group-chat.page.scss create mode 100644 src/app/shared/chat/new-group/group-chat/group-chat.page.spec.ts create mode 100644 src/app/shared/chat/new-group/group-chat/group-chat.page.ts create mode 100644 src/app/shared/chat/new-group/new-group-routing.module.ts create mode 100644 src/app/shared/chat/new-group/new-group.module.ts create mode 100644 src/app/shared/chat/new-group/new-group.page.html create mode 100644 src/app/shared/chat/new-group/new-group.page.scss create mode 100644 src/app/shared/chat/new-group/new-group.page.spec.ts create mode 100644 src/app/shared/chat/new-group/new-group.page.ts diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 5dfb7a7e9..def598b45 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -9,7 +9,11 @@ const routes: Routes = [ { path: '', loadChildren: () => import('./home/home.module').then( m => m.HomePageModule) - } + }, { + path: 'messages', + loadChildren: () => import('./shared/chat/messages/messages.module').then( m => m.MessagesPageModule) + } + ]; @NgModule({ imports: [ diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index 290779158..90c64b523 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -1,22 +1,6 @@ - - - + + - @@ -27,9 +11,10 @@
+ -
-

Chat

+
+

Chat

@@ -96,7 +81,7 @@
- NONE +
diff --git a/src/app/pages/chat/chat.page.scss b/src/app/pages/chat/chat.page.scss index 2d381ea85..43032bb06 100644 --- a/src/app/pages/chat/chat.page.scss +++ b/src/app/pages/chat/chat.page.scss @@ -1,4 +1,9 @@ - +ion-content{ + --background: transparent; + } + :host{ + background: #0782c9; + } .main-header{ width: 100%; /* 400px */ height: 100%; @@ -38,13 +43,15 @@ } } .main-content{ - width: 100%; /* 400px */ + width: 100%; height: 100%; font-family: Roboto; margin: 0 auto; background-color: #fff; overflow:auto; padding: 15px 20px 0 20px; + border-top-left-radius: 25px; + border-top-right-radius: 25px; .iconschatnew-group{ width: 30px; @@ -102,3 +109,25 @@ color: #000; } } + +@media only screen and (min-width: 1024px) { + .main-content{ + .aside-wrapper{ + border: 1px solid red; + justify-content: flex-start !important; + .aside-title{ + font-family: Roboto; + font-size: 25px; + text-align: left; + } + } + .aside{ + width: 340px; + } + .aside-content{ + display: flex !important; + background-color: white; + } + } + +} diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 3a163d5f9..f23ded448 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -38,6 +38,10 @@ export class ChatPage implements OnInit { result:any; dmUsers:any; + desktopComponent: any = { + messages: false, + } + constructor( private http:HttpClient, private chatService: ChatService, @@ -49,9 +53,12 @@ export class ChatPage implements OnInit { this.headers = new HttpHeaders(); /* this.headers = this.headers.set('X-User-Id', 'GqjNWiLrGEHRna7Zn'); this.headers = this.headers.set('X-Auth-Token', 'SJwIgtlqfloPK696fpc2VBvyDluipuIHKB_0Q6-9ycJ'); */ - } - + closeAllDesktopComponent(){ + this.desktopComponent = { + messages: false, + } + } ngOnInit() { this.segment = "Contactos"; @@ -164,6 +171,14 @@ export class ChatPage implements OnInit { modal.onDidDismiss(); } async openMessages(dm:any){ + this.closeAllDesktopComponent(); + + let classs; + if( window.innerWidth <= 1024){ + classs = 'modal' + } else { + classs = 'chat-mobile-modal-to-Desktop' + } console.log(dm); const modal = await this.modalController.create({ diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.scss b/src/app/pages/gabinete-digital/gabinete-digital.page.scss index 33cf81731..b44ff407b 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.scss +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.scss @@ -154,6 +154,7 @@ ion-content{ .main-content{ .aside-wrapper{ + border: 1px solid red; justify-content: flex-start !important; .aside-title{ font-family: Roboto; diff --git a/src/app/shared/chat/group-messages/group-contacts/group-contacts-routing.module.ts b/src/app/shared/chat/group-messages/group-contacts/group-contacts-routing.module.ts new file mode 100644 index 000000000..c998741ed --- /dev/null +++ b/src/app/shared/chat/group-messages/group-contacts/group-contacts-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { GroupContactsPage } from './group-contacts.page'; + +const routes: Routes = [ + { + path: '', + component: GroupContactsPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class GroupContactsPageRoutingModule {} diff --git a/src/app/shared/chat/group-messages/group-contacts/group-contacts.module.ts b/src/app/shared/chat/group-messages/group-contacts/group-contacts.module.ts new file mode 100644 index 000000000..1828ecb73 --- /dev/null +++ b/src/app/shared/chat/group-messages/group-contacts/group-contacts.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { GroupContactsPageRoutingModule } from './group-contacts-routing.module'; + +import { GroupContactsPage } from './group-contacts.page'; +import { SharedModule } from 'src/app/shared/shared.module'; +import { PipesModule } from 'src/app/pipes/pipes.module'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + PipesModule, + GroupContactsPageRoutingModule + ], + declarations: [GroupContactsPage] +}) +export class GroupContactsPageModule {} diff --git a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html new file mode 100644 index 000000000..f63a629a8 --- /dev/null +++ b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html @@ -0,0 +1,59 @@ + + +
+
+
+ +
+
+ Contactos +
+ +
+
+
+ + + +
+ + + + + + + + + + + +
+
+ Contactos selecção: + +
+ +

{{user.name}}

+ +
+
+
+ + + +
+ {{header}} +
+ +
+ +

{{user.name}}

+ +
+ +
+ +
+
diff --git a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.scss b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.scss new file mode 100644 index 000000000..829026a52 --- /dev/null +++ b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.scss @@ -0,0 +1,141 @@ +.header-toolbar{ + --background:transparent; + --opacity: 1; + + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .div-icon{ + width: 40px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + } + + .back-icon{ + width: 37px; + float: left; + font-size: 35px; + overflow: auto; + + } + .div-title{ + width: 221px; + padding: 0!important; + float: left; + margin: 2.5px 0 0 5px; + } + .title{ + font-size: 25px; + } + } + } + .toolbar-search{ + --padding-top:0 !important; + --padding-bottom:0 !important; + --padding-start:0 !important; + --padding-end:0 !important; + + .search{ + border: 1px solid #ebebeb; + margin: 5px 20px 5px 20px; + border-radius: 5px; + } + .search ion-searchbar{ + /* border: 1px solid green; */ + width: 100%; + margin: 0 !important; + padding: 0 !important; + --border-radius: 5px; + --box-shadow: none; + overflow: auto; + --icon-color:#0d89d1; + } + + } + ion-content{ + --background:transparent; + } + .main-content{ + width: 100%; + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 0 0 0 0; + + .members-label{ + margin: 10px 20px 10px 20px !important; + /* font-size: 15px; */ + font-weight: bold; + } + + .members-checkbox{ + display: flex; + margin: .5px 20px .5px 20px !important; + overflow: auto; + align-items: center; + + } + + .item-divider{ + background: #ebebeb; + font-size: 15px; + margin: 10px 0 10px 0; + padding:5px 0 5px 20px; + + } + + .item-checkbox{ + display: flex; + margin: 10px 20px 10px 20px !important; + overflow: auto; + align-items: center; + + } + + .item-checkbox ion-checkbox, .members-checkbox ion-checkbox{ + --border-color: #0d89d1; + --background-checked:#0d89d1; + float: left; + } + + .item-checkbox p, .members-checkbox p{ + display: block; + margin: 0 !important; + width: 330px; + padding-left: 10px; + font-size: 15px; + color: #0d89d1; + float: left; + } + .item-checkbox ion-icon, .members-checkbox ion-icon{ + font-size: 10px; + float: left; + color:#99e47b; + margin-left: 10px; + } + } + + \ No newline at end of file diff --git a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.spec.ts b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.spec.ts new file mode 100644 index 000000000..dde2043a8 --- /dev/null +++ b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { GroupContactsPage } from './group-contacts.page'; + +describe('GroupContactsPage', () => { + let component: GroupContactsPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GroupContactsPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(GroupContactsPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts new file mode 100644 index 000000000..c1fdc3618 --- /dev/null +++ b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts @@ -0,0 +1,211 @@ +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { ModalController, NavParams } from '@ionic/angular'; +import * as _ from 'lodash'; +import { AuthService } from 'src/app/services/auth.service'; +import { ChatService } from 'src/app/services/chat.service'; +import { NewGroupPage } from '../../new-group/new-group.page'; +import { GroupMessagesPage } from '../group-messages.page'; + +@Component({ + selector: 'app-group-contacts', + templateUrl: './group-contacts.page.html', + styleUrls: ['./group-contacts.page.scss'], +}) +export class GroupContactsPage implements OnInit { + showLoader: boolean; + loggedUser: any; + users = []; + + contact: string[] = [" Ana M.", "Andre F.", "Bruno G.", "Catarina T", "Tiago"]; + + headers: HttpHeaders; + options:any; + listContacts: any[]; + contacts: any; + textSearch:string; + room:any; + members:any; + dm:any; + isGroupCreated:boolean; + groupName:string; + selectedUserList:any; + + constructor( + private modalController: ModalController, + private http: HttpClient, + private chatService: ChatService, + private authService: AuthService, + private navParams: NavParams, + ) + { + this.authService.userData$.subscribe((res:any)=>{ + this.loggedUser=res; + }); + this.textSearch=""; + this.dm=null; + this.room=null; + this.isGroupCreated = this.navParams.get('isCreated'); + this.groupName = this.navParams.get('name'); + this.room = this.navParams.get('room'); + this.members = this.navParams.get('members'); + } + + ngOnInit() { + this.loadUsers(); + console.log(this.groupName); + console.log(this.isGroupCreated); + } + + loadUsers(){ + this.options = { + headers: this.headers, + }; + this.chatService.getAllUsers().subscribe((res:any)=>{ + if(this.members){ + this.contacts = res.users.filter(f => !this.members.some(item => item._id === f._id)); + } + else{ + this.contacts = res.users.filter(data => data.username != this.loggedUser.me.username); + } + + this.users = this.contacts.sort((a,b) => { + if(a.name < b.name){ + return -1; + } + if(a.name > b.name){ + return 1; + } + return 0; + }); + console.log(this.users); + + this.showLoader = false; + }); + } + + separateLetter(record, recordIndex, records){ + if(recordIndex == 0){ + return record.name[0]; + } + + let first_prev = records[recordIndex - 1].name[0]; + let first_current = record.name[0]; + + if(first_prev != first_current){ + return first_current; + } + return null; + } + + doRefresh(event){ + + } + + async close(){ + this.modalController.dismiss(); + if(this.isGroupCreated){ + console.log('go to conversa'); + } + else{ + this.modalController.dismiss(); + console.log('go to new group page'); + const modal = await this.modalController.create({ + component: NewGroupPage, + componentProps: { + name:this.groupName, + duration:'', + }, + cssClass: 'new-group', + backdropDismiss: false, + }); + await modal.present(); + + } + + } + onChange(event){ + this.textSearch = event.detail.value; + } + clicked(){ + console.log('clicked'); + + } + selectedContact(user:any){ + /* this.groupName = this.room.name; */ + user.isChecked = !user.isChecked; + + + } + addContacts(room:any){ + console.log(room); + this.selectedUserList = this.users.filter(function(contact) { + return contact.isChecked == true; + }); + console.log( this.selectedUserList); + this.selectedUserList.forEach(user=>{ + let body ={ + "roomId":room._id, + "userId":user._id, + + } + this.chatService.addUserToGroup(body).subscribe(res=>{ + console.log(res['success']); + }); + }); + } + + createGroup(){ + if(!this.isGroupCreated){ + /* this.close(); */ + let body = { "name":this.groupName, } + this.chatService.addGroup(body).subscribe(res=>{ + console.log('group created'); + console.log(res['group']); + this.addContacts(res['group']); + this.openGroupMessages(res['group']); + + }); + + } + else{ + this.addContacts(this.room); + this.close(); + /* this.openGroupMessages(this.room); */ + /* this.chatService.getGroupInfo(this.room._id).subscribe(res=>{ + console.log(res); + + this.addContacts(res['group']); + this.openGroupMessages(res['group']); + }) */ + + } + } + + async newGroup(){ + this.close(); + const modal = await this.modalController.create({ + component: NewGroupPage, + cssClass: 'new-group', + backdropDismiss: false, + }); + await modal.present(); + modal.onDidDismiss(); + } + + async openGroupMessages(room:any){ + this.close(); + const modal = await this.modalController.create({ + component: GroupMessagesPage, + componentProps: { + room: room, + }, + cssClass: 'group-messages', + backdropDismiss: false + }); + + await modal.present(); + modal.onDidDismiss(); + } + +} diff --git a/src/app/shared/chat/group-messages/group-messages-routing.module.ts b/src/app/shared/chat/group-messages/group-messages-routing.module.ts new file mode 100644 index 000000000..708ec8d8f --- /dev/null +++ b/src/app/shared/chat/group-messages/group-messages-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { GroupMessagesPage } from './group-messages.page'; + +const routes: Routes = [ + { + path: '', + component: GroupMessagesPage + }, { + path: 'group-contacts', + loadChildren: () => import('./group-contacts/group-contacts.module').then( m => m.GroupContactsPageModule) + } + +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class GroupMessagesPageRoutingModule {} diff --git a/src/app/shared/chat/group-messages/group-messages.module.ts b/src/app/shared/chat/group-messages/group-messages.module.ts new file mode 100644 index 000000000..204590b92 --- /dev/null +++ b/src/app/shared/chat/group-messages/group-messages.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { GroupMessagesPageRoutingModule } from './group-messages-routing.module'; + +import { GroupMessagesPage } from './group-messages.page'; +import { SharedModule } from 'src/app/shared/shared.module'; +import { PopoverModule } from 'src/app/shared/popover/chat-popover/popover.modules'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + PopoverModule, + GroupMessagesPageRoutingModule + ], + declarations: [GroupMessagesPage] +}) +export class GroupMessagesPageModule {} diff --git a/src/app/shared/chat/group-messages/group-messages.page.html b/src/app/shared/chat/group-messages/group-messages.page.html new file mode 100644 index 000000000..0f69171a8 --- /dev/null +++ b/src/app/shared/chat/group-messages/group-messages.page.html @@ -0,0 +1,76 @@ + + +
+
+ +
+ {{roomName}} +
+
+ +
+
+
+
+ +
+
+ + {{member.name}}, + +
+
+
+
+
+ + + + + + + + +
+ Esta conversa passou a grupo
+ A conversa original mantêm-se como chat individual +
+
+
+
+ {{msg.u.name}} + {{msg._updatedAt | date: 'HH:mm' }} +
+
+ {{msg.msg}} +
+
+
+ Alterou o assunto de para "{{msg.msg.split('-').join(' ')}}"
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/shared/chat/group-messages/group-messages.page.scss b/src/app/shared/chat/group-messages/group-messages.page.scss new file mode 100644 index 000000000..08390cfcc --- /dev/null +++ b/src/app/shared/chat/group-messages/group-messages.page.scss @@ -0,0 +1,174 @@ +@import '~src/function.scss'; +.header-toolbar{ + --background:transparent; + --opacity: 1; + + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .header-top{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + background: #fff; + .middle{ + padding: 0!important; + float: left; + width: 280px; + margin: 2.5px 0 0 5px; + } + .right{ + padding: 0!important; + float: right; + font-size: 25px; + color: #0782c9; + margin: 5px 0 0 0; + } + } + .header-bottom{ + width: 310px; + overflow: auto; + margin: 0 auto; + + .header-bottom-icon{ + width: 30px; + font-size: 25px; + float: left; + padding: 2px; + + } + .header-bottom-contacts{ + width: 275px; + font-size: 15px; + color: #797979; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + float: left; + padding: 5px; + margin: 1px; + } + } + + .title{ + font-size: 25px; + } + .div-icon{ + width: 40px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } + } + } + ion-content{ + .welcome-text{ + /* width: 322px; */ + width: em(422px); + background: #ebebeb; + text-align: center; + font-size: 13px; + color: #797979; + padding: 10px; + margin: 0 auto; + line-height: 1.2rem; + margin: 20px 39px 25px; + border-radius: 8px; + } + .info-text{ + /* width: 322px; */ + width: em(422px); + background: #fef4c5; + text-align: center; + font-size: 13px; + color: #262420; + padding: 10px; + margin: 10px auto; + line-height: 1.2rem; + /* margin: 15px 0px 15px 0px; */ + border-radius: 8px; + } + .messages{ + font-size: 13px; + font-family: Roboto; + overflow: auto; + + .incoming-true, .incoming-false{ + width: 305px; + padding: 15px 20px; + border-radius: 10px; + } + + .incoming-true{ + margin: 10px 75px 10px 20px; + background: #ebebeb; + float: left; + } + } + .incoming-false{ + margin: 10px 20px 10px 75px; + background: #e4f4fe; + float: right; + } + .title{ + color: #0782c9; + + font-weight: bold; + margin-bottom: 5px; + + .time{ + color: #797979; + text-align: right; + float: right; + } + } + } + + ion-footer{ + .row{ + width: 380px; + margin: 0 auto; + } + + .chat-icon-options{ + display:block !important; + font-size: 25px; + float: right !important; + margin-top: 10px; + } + + .chat-icon-send{ + font-size: 45px; + margin: 0 auto; + margin-top: 4px; + } + + .type-message{ + display: flex; + border: 1px solid #ebebeb; + border-radius: 25px; + padding-left: 15px; + align-items: center; + overflow: auto; + + ion-textarea{ + margin: 0 !important; + align-self: center; + } + } + } \ No newline at end of file diff --git a/src/app/shared/chat/group-messages/group-messages.page.spec.ts b/src/app/shared/chat/group-messages/group-messages.page.spec.ts new file mode 100644 index 000000000..62c380096 --- /dev/null +++ b/src/app/shared/chat/group-messages/group-messages.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { GroupMessagesPage } from './group-messages.page'; + +describe('GroupMessagesPage', () => { + let component: GroupMessagesPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GroupMessagesPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(GroupMessagesPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/chat/group-messages/group-messages.page.ts b/src/app/shared/chat/group-messages/group-messages.page.ts new file mode 100644 index 000000000..7c2a62965 --- /dev/null +++ b/src/app/shared/chat/group-messages/group-messages.page.ts @@ -0,0 +1,200 @@ +import { Component, OnInit } from '@angular/core'; +import { ActionSheetController, MenuController, ModalController, NavParams, PopoverController } from '@ionic/angular'; +import { AuthService } from 'src/app/services/auth.service'; +import { ChatService } from 'src/app/services/chat.service'; +import { ChatOptionsPopoverPage } from 'src/app/shared/popover/chat-options-popover/chat-options-popover.page'; +import { ChatPopoverPage } from 'src/app/shared/popover/chat-popover/chat-popover.page'; +import { ContactsPage } from '../new-group/contacts/contacts.page'; +import { NewGroupPage } from '../new-group/new-group.page'; +import { GroupContactsPage } from './group-contacts/group-contacts.page'; + +@Component({ + selector: 'app-group-messages', + templateUrl: './group-messages.page.html', + styleUrls: ['./group-messages.page.scss'], +}) +export class GroupMessagesPage implements OnInit { + showLoader: boolean; + isGroupCreated:boolean; + loggedUser: any; + message:any; + messages:any; + + + room:any; + roomName:any; + members:any; + contacts: string[] = [" Ana M.", "Andre F.", "Bruno G.", "Catarina T", "Tiago"]; + + constructor( + private menu: MenuController, + private modalController: ModalController, + private actionSheetController: ActionSheetController, + public popoverController: PopoverController, + private chatService: ChatService, + private navParams: NavParams, + private authService: AuthService, + ) { + this.isGroupCreated = true; + this.room = this.navParams.get('room'); + this.roomName = this.room.name.split('-').join(' '); + } + + ngOnInit() { + this.authService.userData$.subscribe((res:any)=>{ + this.loggedUser=res; + console.log(this.loggedUser); + }); + this.load(); + } + load(){ + this.getGroupContacts(); + this.loadGroupMessages(); + } + + close(){ + this.modalController.dismiss(); + } + + doRefresh(ev:any){ + this.load(); + ev.target.complete(); + } + + getGroupContacts(){ + this.showLoader = true; + //If group is private call getGroupMembers + if(this.room.t === 'p'){ + this.chatService.getGroupMembers(this.room._id).subscribe(res=>{ + console.log(res); + this.members = res['members']; + this.showLoader = false; + }); + } + //Otherwise call getChannelMembers for públic groups + else{ + this.chatService.getChannelMembers(this.room._id).subscribe(res=>{ + console.log(res); + this.members = res['members']; + this.showLoader = false; + }); + } + } + loadGroupMessages(){ + this.showLoader = true; + //If group is private call getGroupMembers + if(this.room.t === 'p'){ + this.chatService.getPrivateGroupMessages(this.room._id).subscribe(res=>{ + console.log(res); + let msgOnly = res['messages'].filter(data => data.t != 'au'); + this.messages = msgOnly.reverse(); + this.showLoader = false; + }); + } + //Otherwise call getChannelMembers for públic groups + else{ + this.chatService.getPublicGroupMessages(this.room._id).subscribe(res=>{ + console.log(res); + this.messages = res['messages'].reverse(); + }); + } + } + sendMessage(){ + + let body = { + "message": + { + "rid": this.room._id, "msg": this.message + } + } + + this.chatService.sendMessage(body).subscribe(res=> { + this.loadGroupMessages(); + }); + this.message = ""; + } + + async openOptions(ev: any) { + const popover = await this.popoverController.create({ + component: ChatPopoverPage, + cssClass: 'chat-popover', + event: ev, + componentProps: { + room: this.room, + }, + translucent: true + }); + await popover.present(); + popover.onDidDismiss().then(res=>{ + console.log(res); + if(res.data){ + this.roomName = res.data.name.split('-').join(' '); + console.log(this.roomName); + + this.load(); + /* this.modalController.dismiss(); */ + }; + + }); + } + async openChatOptions(ev: any) { + const popover = await this.popoverController.create({ + component: ChatOptionsPopoverPage, + cssClass: 'chat-options-popover', + event: ev, + componentProps: { + room: this.room, + }, + translucent: true + }); + return await popover.present(); + } + async addContacts(){ + console.log(this.members); + + const modal = await this.modalController.create({ + component: GroupContactsPage, + componentProps: { + isCreated: this.isGroupCreated, + room: this.room, + members: this.members, + name: this.room.name, + }, + cssClass: 'contacts', + backdropDismiss: false + }); + + await modal.present(); + + modal.onDidDismiss().then(()=>{ + this.load(); + }); + } + + /* async actionSheet() { + const actionSheet = await this.actionSheetController.create({ + cssClass: 'my-custom-class', + buttons: [{ + text: 'Sair do grupo', + handler: () => { + console.log('Delete clicked'); + } + }, { + text: 'Alterar nome do grupo1', + handler: () => { + console.log('Alterar nome do grupo'); + this.openChangeGroupName() + } + }, { + text: 'Apagar o grupo', + handler: () => { + console.log('Play clicked'); + } + }, + ] + }); + await actionSheet.present(); + } + */ + +} diff --git a/src/app/shared/chat/messages/contacts/contacts-routing.module.ts b/src/app/shared/chat/messages/contacts/contacts-routing.module.ts new file mode 100644 index 000000000..fb8c7a5ea --- /dev/null +++ b/src/app/shared/chat/messages/contacts/contacts-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ContactsPage } from './contacts.page'; + +const routes: Routes = [ + { + path: '', + component: ContactsPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ContactsPageRoutingModule {} diff --git a/src/app/shared/chat/messages/contacts/contacts.module.ts b/src/app/shared/chat/messages/contacts/contacts.module.ts new file mode 100644 index 000000000..8284984be --- /dev/null +++ b/src/app/shared/chat/messages/contacts/contacts.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { ContactsPageRoutingModule } from './contacts-routing.module'; + +import { ContactsPage } from './contacts.page'; +import { SharedModule } from 'src/app/shared/shared.module'; +import { PipesModule } from 'src/app/pipes/pipes.module'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + PipesModule, + ContactsPageRoutingModule + ], + declarations: [ContactsPage] +}) +export class ContactsPageModule {} diff --git a/src/app/shared/chat/messages/contacts/contacts.page.html b/src/app/shared/chat/messages/contacts/contacts.page.html new file mode 100644 index 000000000..b2f8e9705 --- /dev/null +++ b/src/app/shared/chat/messages/contacts/contacts.page.html @@ -0,0 +1,46 @@ + + +
+
+
+ +
+
+ Nova Conversa +
+
+
+
+ + + +
+ + + + + + + +
+ + + +
+ {{header}} +
+ +
+

{{user.name}}

+ + + + +
+ +
+ +
+
diff --git a/src/app/shared/chat/messages/contacts/contacts.page.scss b/src/app/shared/chat/messages/contacts/contacts.page.scss new file mode 100644 index 000000000..1eb104bdb --- /dev/null +++ b/src/app/shared/chat/messages/contacts/contacts.page.scss @@ -0,0 +1,136 @@ + +.header-toolbar{ + --background:transparent; + --opacity: 1; + + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .div-icon{ + width: 40px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + } + + .back-icon{ + width: 37px; + float: left; + font-size: 35px; + overflow: auto; + + } + .div-title{ + width: 221px; + padding: 0!important; + float: left; + margin: 2.5px 0 0 5px; + } + .title{ + font-size: 25px; + } + } + } + .toolbar-search{ + --padding-top:0 !important; + --padding-bottom:0 !important; + --padding-start:0 !important; + --padding-end:0 !important; + + .search{ + border: 1px solid #ebebeb; + margin: 5px 20px 5px 20px; + border-radius: 5px; + height: auto; + padding: 0 !important; + } + .search ion-searchbar{ + /* border: 1px solid green; */ + width: 100%; + margin: 0 !important; + padding: 0 !important; + --border-radius: 5px; + --box-shadow: none; + overflow: hidden; + --icon-color:#0d89d1; + } + + } + ion-content{ + --background:transparent; + } + .main-content{ + width: 100%; + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 0 0 0 0; + + .item-divider{ + background: #ebebeb; + font-size: 15px; + margin: 10px 0 10px 0; + padding:5px 0 5px 20px; + + } + + .item-user{ + display: flex; + margin: 10px 20px 10px 20px !important; + overflow: auto; + align-items: center; + } + + .item-user p{ + display: block; + margin: 0 !important; + width: 90%; + font-size: 15px; + color: #0d89d1; + float: left; + } + .item-user .icon{ + width: 10%; + font-size: 10px; + display: block; + text-align: right; + overflow: auto; + } + .online{ + color:#99e47b; + } + .offline{ + color:#cbced1; + } + .away{ + color:#ffd21f; + } + .invisible{ + color:#cbced1; + } + .busy{ + color:#f5455c; + } + } \ No newline at end of file diff --git a/src/app/shared/chat/messages/contacts/contacts.page.spec.ts b/src/app/shared/chat/messages/contacts/contacts.page.spec.ts new file mode 100644 index 000000000..8f263232b --- /dev/null +++ b/src/app/shared/chat/messages/contacts/contacts.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { ContactsPage } from './contacts.page'; + +describe('ContactsPage', () => { + let component: ContactsPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ContactsPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(ContactsPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/chat/messages/contacts/contacts.page.ts b/src/app/shared/chat/messages/contacts/contacts.page.ts new file mode 100644 index 000000000..ff86e8d5b --- /dev/null +++ b/src/app/shared/chat/messages/contacts/contacts.page.ts @@ -0,0 +1,153 @@ +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { ModalController } from '@ionic/angular'; +import { AuthService } from 'src/app/services/auth.service'; +import { ChatService } from 'src/app/services/chat.service'; +import { GroupMessagesPage } from '../../group-messages/group-messages.page'; +import { MessagesPage } from '../messages.page'; + +@Component({ + selector: 'app-contacts', + templateUrl: './contacts.page.html', + styleUrls: ['./contacts.page.scss'], +}) +export class ContactsPage implements OnInit { + showLoader: boolean; + loggedUser: any; + users = []; + + headers: HttpHeaders; + options:any; + contacts:any; + textSearch:string; + room:any; + dm:any; + + constructor( + private modalController: ModalController, + private http: HttpClient, + private chatService: ChatService, + private authService: AuthService, + ) + { + this.authService.userData$.subscribe((res:any)=>{ + this.loggedUser=res; + }); + this.textSearch=""; + this.dm=null; + this.room=null; + } + + ngOnInit() { + this.loadUsers(); + + } + onChange(event){ + this.textSearch = event.detail.value; + } + + loadUsers(){ + this.options = { + headers: this.headers, + }; + this.chatService.getAllUsers().subscribe((res:any)=>{ + console.log(res.users); + this.contacts = res.users.filter(data => data.username != this.loggedUser.me.username); + this.users = this.contacts.sort((a,b) => { + if(a.name < b.name){ + return -1; + } + if(a.name > b.name){ + return 1; + } + return 0; + }); + this.showLoader = false; + }); + } + + separateLetter(record, recordIndex, records){ + if(recordIndex == 0){ + return record.name[0]; + } + + let first_prev = records[recordIndex - 1].name[0]; + let first_current = record.name[0]; + + if(first_prev != first_current){ + return first_current; + } + return null; + } + + doRefresh(event){ + } + + close(){ + this.modalController.dismiss(); + } + + clicked(){ + console.log('clicked'); + } + + createRoom(username:string){ + let body = { + username: username, + } + this.chatService.createRoom(body).subscribe(res => { + console.log(res); + this.room = res['room']; + this.getDirectMessage(this.room._id); + }); + } + getDirectMessage(roomId:any){ + console.log(roomId); + + this.chatService.getAllDirectMessages().subscribe(res=>{ + let result = res['ims'].filter(data => data._id == roomId); + this.dm = result[0]; + console.log(this.dm); + this.openModal(this.dm); + }); + } + async openModal(dm:any){ + this.close(); + console.log(dm); + + const modal = await this.modalController.create({ + component: MessagesPage, + cssClass: 'group-messages', + backdropDismiss: false, + componentProps: { + dm: dm, + }, + }); + await modal.present(); + modal.onDidDismiss(); + } + + async openMessages(username:string){ + /* this.close(); */ + + let dm:any; + //Create new room + this.createRoom(username); + //Get direct messages (dm) + /* this.getDirectMessage(this.room._id); */ + console.log(this.dm); + + + /* const modal = await this.modalController.create({ + component: MessagesPage, + cssClass: 'group-messages', + backdropDismiss: false, + componentProps: { + dm: dm, + }, + }); + await modal.present(); + modal.onDidDismiss(); */ + } + +} diff --git a/src/app/shared/chat/messages/messages-routing.module.ts b/src/app/shared/chat/messages/messages-routing.module.ts new file mode 100644 index 000000000..c00bd5ccb --- /dev/null +++ b/src/app/shared/chat/messages/messages-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { MessagesPage } from './messages.page'; + +const routes: Routes = [ + { + path: '', + component: MessagesPage + }, { + path: 'contacts', + loadChildren: () => import('./contacts/contacts.module').then( m => m.ContactsPageModule) + } + +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class MessagesPageRoutingModule {} diff --git a/src/app/shared/chat/messages/messages.module.ts b/src/app/shared/chat/messages/messages.module.ts new file mode 100644 index 000000000..c933f79fe --- /dev/null +++ b/src/app/shared/chat/messages/messages.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { MessagesPageRoutingModule } from './messages-routing.module'; + +import { MessagesPage } from './messages.page'; +import { SharedModule } from 'src/app/shared/shared.module'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + MessagesPageRoutingModule + ], + declarations: [MessagesPage] +}) +export class MessagesPageModule {} diff --git a/src/app/shared/chat/messages/messages.page.html b/src/app/shared/chat/messages/messages.page.html new file mode 100644 index 000000000..e8f28dce2 --- /dev/null +++ b/src/app/shared/chat/messages/messages.page.html @@ -0,0 +1,82 @@ + + +
+
+ +
+ {{users.name}} + +
+
+ +
+
+
+
+ +
+
+ Adicionar contacto +
+
+
+
+
+ + + + + + + +
+ + +
+
+ {{msg.u.name}} + {{msg._updatedAt | date: 'HH:mm' }} +
+
+ {{msg.msg}} +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/shared/chat/messages/messages.page.scss b/src/app/shared/chat/messages/messages.page.scss new file mode 100644 index 000000000..72515a71d --- /dev/null +++ b/src/app/shared/chat/messages/messages.page.scss @@ -0,0 +1,223 @@ +@import '~src/function.scss'; +.header-toolbar{ + --background:transparent; + --opacity: 1; + + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .header-top{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + background: #fff; + .middle{ + padding: 0!important; + float: left; + width: 280px; + margin: 2.5px 0 0 5px; + display: flex; + align-items: center; + + } + .right{ + padding: 0!important; + float: right; + font-size: 25px; + color: #0782c9; + margin: 5px 0 0 0; + } + } + .header-bottom{ + width: 310px; + overflow: auto; + margin: 0 auto; + + .header-bottom-icon{ + width: 30px; + font-size: 25px; + float: left; + padding: 2px; + + } + .header-bottom-contacts{ + width: 275px; + font-size: 15px; + color: #797979; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + float: left; + padding: 5px; + margin: 1px; + } + } + + .title{ + font-size: 25px; + overflow: auto; + float: left; + } + .div-icon{ + width: 40px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } + } + } + ion-content{ + .welcome-text{ + /* width: 322px; */ + width: em(422px); + background: #ebebeb; + text-align: center; + font-size: 13px; + color: #797979; + padding: 10px; + margin: 0 auto; + line-height: 1.2rem; + margin: 20px 39px 25px; + border-radius: 8px; + } + .messages{ + font-size: 13px; + font-family: Roboto; + overflow: auto; + + //set scroll do bottom + position: absolute; + top: 0; + left: 0; + overflow-x: hidden; + overflow-y: auto; + width: 100%; + height: 100%; + word-wrap: break-word; + -webkit-overflow-scrolling: touch; + + + .incoming-true, .incoming-false{ + width: 305px; + padding: 15px 20px; + border-radius: 10px; + } + + .incoming-true{ + margin: 10px 75px 10px 20px; + background: #ebebeb; + float: left; + } + } + .incoming-false{ + margin: 10px 20px 10px 75px; + background: #e4f4fe; + float: right; + } + .title{ + display: inline; + color: #0782c9; + font-weight: bold; + margin-bottom: 5px; + + .time{ + color: #797979; + text-align: right; + float: right; + } + } + } + + ion-footer{ + .row{ + width: 380px; + margin: 0 auto; + } + + .chat-icon-options{ + display:block !important; + font-size: 25px; + float: right !important; + margin-top: 10px; + } + + .chat-icon-send{ + font-size: 45px; + margin: 0 auto; + margin-top: 4px; + } + + .type-message{ + display: flex; + border: 1px solid #ebebeb; + border-radius: 25px; + padding-left: 15px; + align-items: center; + overflow: auto; + + ion-textarea{ + margin: 0 !important; + align-self: center; + } + } + + } + + .text-color-blue{ + font-size: 15px; + color: #0782c9; + font-weight: 500; + letter-spacing: normal; + } + .user-status-online{ + display: block; + float: left; + color:#99e47b; + padding-left: 10px; + } + .online{ + display: block; + float: left; + color:#99e47b; + padding-left: 10px; +} +.offline{ + color:#cbced1; + display: block; + float: left; + padding-left: 10px; +} +.away{ +color:#ffd21f; +display: block; + float: left; + padding-left: 10px; +} +.invisible{ + color:#cbced1; + display: block; + float: left; + padding-left: 10px; +} +.busy{ + color:#f5455c; + display: block; + float: left; + padding-left: 10px; +} + \ No newline at end of file diff --git a/src/app/shared/chat/messages/messages.page.spec.ts b/src/app/shared/chat/messages/messages.page.spec.ts new file mode 100644 index 000000000..826962a23 --- /dev/null +++ b/src/app/shared/chat/messages/messages.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { MessagesPage } from './messages.page'; + +describe('MessagesPage', () => { + let component: MessagesPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MessagesPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(MessagesPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/chat/new-group/contacts/contacts-routing.module.ts b/src/app/shared/chat/new-group/contacts/contacts-routing.module.ts new file mode 100644 index 000000000..fb8c7a5ea --- /dev/null +++ b/src/app/shared/chat/new-group/contacts/contacts-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ContactsPage } from './contacts.page'; + +const routes: Routes = [ + { + path: '', + component: ContactsPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ContactsPageRoutingModule {} diff --git a/src/app/shared/chat/new-group/contacts/contacts.module.ts b/src/app/shared/chat/new-group/contacts/contacts.module.ts new file mode 100644 index 000000000..13749fd57 --- /dev/null +++ b/src/app/shared/chat/new-group/contacts/contacts.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { ContactsPageRoutingModule } from './contacts-routing.module'; + +import { ContactsPage } from './contacts.page'; +import { SharedModule } from 'src/app/shared/shared.module'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + ContactsPageRoutingModule + ], + declarations: [ContactsPage] +}) +export class ContactsPageModule {} diff --git a/src/app/shared/chat/new-group/contacts/contacts.page.html b/src/app/shared/chat/new-group/contacts/contacts.page.html new file mode 100644 index 000000000..5120198ad --- /dev/null +++ b/src/app/shared/chat/new-group/contacts/contacts.page.html @@ -0,0 +1,53 @@ + + +
+
+
+ +
+
+ Contactos +
+ +
+
+
+ + + +
+ + + + + + + +
+ + + + + +
+ {{header}} +
+ +
+ +

{{user.first}} {{user.last}}

+ +
+ +
+ +
+
+ + diff --git a/src/app/shared/chat/new-group/contacts/contacts.page.scss b/src/app/shared/chat/new-group/contacts/contacts.page.scss new file mode 100644 index 000000000..c97008f82 --- /dev/null +++ b/src/app/shared/chat/new-group/contacts/contacts.page.scss @@ -0,0 +1,127 @@ + +.header-toolbar{ + --background:transparent; + --opacity: 1; + + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .div-icon{ + width: 40px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + } + + .back-icon{ + width: 37px; + float: left; + font-size: 35px; + overflow: auto; + + } + .div-title{ + width: 221px; + padding: 0!important; + float: left; + margin: 2.5px 0 0 5px; + } + .title{ + font-size: 25px; + } + } +} +.toolbar-search{ + --padding-top:0 !important; + --padding-bottom:0 !important; + --padding-start:0 !important; + --padding-end:0 !important; + + .search{ + border: 1px solid #ebebeb; + margin: 5px 20px 5px 20px; + border-radius: 5px; + } + .search ion-searchbar{ + /* border: 1px solid green; */ + width: 100%; + margin: 0 !important; + padding: 0 !important; + --border-radius: 5px; + --box-shadow: none; + overflow: auto; + --icon-color:#0d89d1; + } + +} +ion-content{ + --background:transparent; +} +.main-content{ + width: 100%; + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 0 0 0 0; + + .item-divider{ + background: #ebebeb; + font-size: 15px; + margin: 10px 0 10px 0; + padding:5px 0 5px 20px; + + } + + .item-checkbox{ + display: flex; + margin: 10px 20px 10px 20px !important; + overflow: auto; + align-items: center; + + } + + .item-checkbox ion-checkbox{ + --border-color: #0d89d1; + --background-checked:#0d89d1; + float: left; + } + + .item-checkbox p{ + display: block; + margin: 0 !important; + width: 330px; + padding-left: 10px; + font-size: 15px; + color: #0d89d1; + float: left; + } + .item-checkbox ion-icon{ + font-size: 10px; + float: left; + color:#99e47b; + margin-left: 10px; + } + } + diff --git a/src/app/shared/chat/new-group/contacts/contacts.page.spec.ts b/src/app/shared/chat/new-group/contacts/contacts.page.spec.ts new file mode 100644 index 000000000..8f263232b --- /dev/null +++ b/src/app/shared/chat/new-group/contacts/contacts.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { ContactsPage } from './contacts.page'; + +describe('ContactsPage', () => { + let component: ContactsPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ContactsPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(ContactsPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/chat/new-group/contacts/contacts.page.ts b/src/app/shared/chat/new-group/contacts/contacts.page.ts new file mode 100644 index 000000000..b2d114651 --- /dev/null +++ b/src/app/shared/chat/new-group/contacts/contacts.page.ts @@ -0,0 +1,152 @@ +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { ModalController } from '@ionic/angular'; +import { GroupMessagesPage } from '../../group-messages/group-messages.page'; + +@Component({ + selector: 'app-contacts', + templateUrl: './contacts.page.html', + styleUrls: ['./contacts.page.scss'], +}) +export class ContactsPage implements OnInit { + showLoader: boolean; + users = []; + + contact: string[] = [" Ana M.", "Andre F.", "Bruno G.", "Catarina T", "Tiago"]; + + headers: HttpHeaders; + options:any; + + contacts: Contact[] = [ + { + first: 'Ana', + last: 'Manuel', + url: 'https://randomuser.me/api/portraits/med/women/54.jpg', + }, + { + first: 'Abdullah', + last: 'Hill', + url: 'https://randomuser.me/api/portraits/med/women/54.jpg', + }, + { + first: 'Batur', + last: 'Oymen', + url: 'https://randomuser.me/api/portraits/med/women/54.jpg', + }, + { + first: 'Bianca', + last: 'Costa', + url: 'https://randomuser.me/api/portraits/med/women/54.jpg', + }, + { + first: 'Zaya', + last: 'Mary', + url: 'https://randomuser.me/api/portraits/med/women/54.jpg', + }, + { + first: 'Tiago', + last: 'Kayaya', + url: 'https://randomuser.me/api/portraits/med/women/54.jpg', + } +]; + + constructor( + private modalController: ModalController, + private http: HttpClient, + ) + { + this.headers = new HttpHeaders(); + this.headers = this.headers.set('Access-Control-Allow-Origin' , '*'); + this.headers = this.headers.set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT'); + this.headers = this.headers.set('Accept','application/json'); + this.headers = this.headers.set('content-type','application/json'); + + + } + + ngOnInit() { + this.loadUsers(); + + } + + loadUsers(){ + this.options = { + headers: this.headers, + }; + /* this.http.get('https://randomuser.me/api/?results=100', this.options) + .subscribe(res => { + this.users = res['results'].sort((a,b) => { + if(a.name.first < b.name.first){ + return -1; + } + if(a.name.first > b.name.first){ + return 1; + } + return 0; + }); + console.log(res); + console.log(this.users); + }); */ + this.users = this.contacts.sort((a,b) => { + if(a.first < b.first){ + return -1; + } + if(a.first > b.first){ + return 1; + } + return 0; + }); + } + + separateLetter(record, recordIndex, records){ + /* if(recordIndex == 0){ + return record.name.first[0]; + } + + let first_prev = records[recordIndex - 1].name.first[0]; + let first_current = record.name.first[0]; + + if(first_prev != first_current){ + return first_current; + } + return null; */ + if(recordIndex == 0){ + return record.first[0]; + } + + let first_prev = records[recordIndex - 1].first[0]; + let first_current = record.first[0]; + + if(first_prev != first_current){ + return first_current; + } + return null; + } + + doRefresh(event){ + + } + close(){ + this.modalController.dismiss(); + } + onChange(event){ + + } + clicked(){ + console.log('clicked'); + + } + async groupMessages(){ + const modal = await this.modalController.create({ + component: GroupMessagesPage, + componentProps: {}, + cssClass: 'contacts', + backdropDismiss: false + }); + + await modal.present(); + + modal.onDidDismiss(); + } + +} diff --git a/src/app/shared/chat/new-group/group-chat/group-chat-routing.module.ts b/src/app/shared/chat/new-group/group-chat/group-chat-routing.module.ts new file mode 100644 index 000000000..d88c349d7 --- /dev/null +++ b/src/app/shared/chat/new-group/group-chat/group-chat-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { GroupChatPage } from './group-chat.page'; + +const routes: Routes = [ + { + path: '', + component: GroupChatPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class GroupChatPageRoutingModule {} diff --git a/src/app/shared/chat/new-group/group-chat/group-chat.module.ts b/src/app/shared/chat/new-group/group-chat/group-chat.module.ts new file mode 100644 index 000000000..a86458890 --- /dev/null +++ b/src/app/shared/chat/new-group/group-chat/group-chat.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { GroupChatPageRoutingModule } from './group-chat-routing.module'; + +import { GroupChatPage } from './group-chat.page'; +import { SharedModule } from 'src/app/shared/shared.module'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + GroupChatPageRoutingModule + ], + declarations: [GroupChatPage] +}) +export class GroupChatPageModule {} diff --git a/src/app/shared/chat/new-group/group-chat/group-chat.page.html b/src/app/shared/chat/new-group/group-chat/group-chat.page.html new file mode 100644 index 000000000..4dfad122a --- /dev/null +++ b/src/app/shared/chat/new-group/group-chat/group-chat.page.html @@ -0,0 +1,17 @@ + + +
+
+ +
+ Novo Grupo +
+ +
+
+
+
+ + + + diff --git a/src/app/shared/chat/new-group/group-chat/group-chat.page.scss b/src/app/shared/chat/new-group/group-chat/group-chat.page.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/shared/chat/new-group/group-chat/group-chat.page.spec.ts b/src/app/shared/chat/new-group/group-chat/group-chat.page.spec.ts new file mode 100644 index 000000000..641898e82 --- /dev/null +++ b/src/app/shared/chat/new-group/group-chat/group-chat.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { GroupChatPage } from './group-chat.page'; + +describe('GroupChatPage', () => { + let component: GroupChatPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GroupChatPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(GroupChatPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/chat/new-group/group-chat/group-chat.page.ts b/src/app/shared/chat/new-group/group-chat/group-chat.page.ts new file mode 100644 index 000000000..c34b5eec7 --- /dev/null +++ b/src/app/shared/chat/new-group/group-chat/group-chat.page.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-group-chat', + templateUrl: './group-chat.page.html', + styleUrls: ['./group-chat.page.scss'], +}) +export class GroupChatPage implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/shared/chat/new-group/new-group-routing.module.ts b/src/app/shared/chat/new-group/new-group-routing.module.ts new file mode 100644 index 000000000..42b9b7e24 --- /dev/null +++ b/src/app/shared/chat/new-group/new-group-routing.module.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { NewGroupPage } from './new-group.page'; + +const routes: Routes = [ + { + path: '', + component: NewGroupPage + }, + { + path: 'contacts', + loadChildren: () => import('./contacts/contacts.module').then( m => m.ContactsPageModule) + }, + { + path: 'group-chat', + loadChildren: () => import('./group-chat/group-chat.module').then( m => m.GroupChatPageModule) + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class NewGroupPageRoutingModule {} diff --git a/src/app/shared/chat/new-group/new-group.module.ts b/src/app/shared/chat/new-group/new-group.module.ts new file mode 100644 index 000000000..97006324c --- /dev/null +++ b/src/app/shared/chat/new-group/new-group.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { NewGroupPageRoutingModule } from './new-group-routing.module'; + +import { NewGroupPage } from './new-group.page'; +import { SharedModule } from 'src/app/shared/shared.module'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SharedModule, + NewGroupPageRoutingModule + ], + declarations: [NewGroupPage] +}) +export class NewGroupPageModule {} diff --git a/src/app/shared/chat/new-group/new-group.page.html b/src/app/shared/chat/new-group/new-group.page.html new file mode 100644 index 000000000..b53fdda69 --- /dev/null +++ b/src/app/shared/chat/new-group/new-group.page.html @@ -0,0 +1,39 @@ + + +
+
+
+ +
+
+ Novo Grupo +
+ +
+
+
+
+ + +
+
+ +
+
+ + Grupo Ultra-secreto +
+ +
+
+
+ +
+
+ +
+
+
+ +
+
diff --git a/src/app/shared/chat/new-group/new-group.page.scss b/src/app/shared/chat/new-group/new-group.page.scss new file mode 100644 index 000000000..428f62e08 --- /dev/null +++ b/src/app/shared/chat/new-group/new-group.page.scss @@ -0,0 +1,151 @@ +ion-content{ + --background:transparent; +} +.header-toolbar{ + --background:transparent; + --opacity: 1; +} +.div-top-header{ + width: 400px; + margin: 0 auto; + background-color: #0782c9; + overflow: auto; + padding-top: 15px; + border: 0!important; + + .div-search{ + font-size: 45px; + float: left; + margin: 0 0 0 10px + } + .div-logo{ + background: transparent; + width: 140px; + margin: 5px 0 0px 71px; + float: left; + } + .div-logo img{ + width: 100%; + } + .div-profile{ + font-size: 45px; + float: right; + margin-right: 10px; + } + + } + .main-header{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + background-color: #fff; + overflow:hidden; + padding: 30px 20px 0px 20px; + color:#000; + transform: translate3d(0, 1px, 0); + + .title-content{ + width: 360px; + margin: 0px auto; + overflow: auto; + padding: 0 !important; + background: #fff; + + .left{ + width: 37px; + float: left; + font-size: 35px; + overflow: auto; + } + .middle{ + padding: 0!important; + float: left; + width: 221px; + margin: 2.5px 0 0 5px; + } + .right{ + padding: 0!important; + float: right; + font-size: 15px; + color: #0782c9; + margin: 8px 0 0 5px; + } + } + + .title{ + font-size: 25px; + } + .div-icon{ + width: 40px; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } + + + } + .main-content{ + width: 100%; /* 400px */ + height: 100%; + font-family: Roboto; + margin: 0 auto; + background-color: #fff; + overflow:auto; + padding: 15px 20px 0 20px; + + .item-container{ + width: 360px; + margin: 15px auto; + border: 1px solid #ebebeb; + border-radius: 5px; + padding-left: 10px; + } + + .item-container-no-border{ + display: flex; + width: 360px; + margin: 25px auto; + border-radius: 5px; + align-items: center; + } + + .item-container-no-border ion-label{ + padding-left: 10px; + font-size: 12px; + color: #000; + } + } + + .container-div{ + margin-bottom: 15px; + overflow: auto; + + .ion-item-class-2{ + width: 360px; + margin: 0px auto; + + .ion-icon-class{ + width: 45px; + height: 45px; + float: left; + padding: 10px; + font-size: 25px; + } + } + .ion-input-class{ + width: 315px; + height: 45px; + border: 1px solid #ebebeb; + border-radius: 5px; + padding-left: 5px; + padding-right: 10px; + float: left; + } + } diff --git a/src/app/shared/chat/new-group/new-group.page.spec.ts b/src/app/shared/chat/new-group/new-group.page.spec.ts new file mode 100644 index 000000000..2cb166ecd --- /dev/null +++ b/src/app/shared/chat/new-group/new-group.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { NewGroupPage } from './new-group.page'; + +describe('NewGroupPage', () => { + let component: NewGroupPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NewGroupPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(NewGroupPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/chat/new-group/new-group.page.ts b/src/app/shared/chat/new-group/new-group.page.ts new file mode 100644 index 000000000..6774503b1 --- /dev/null +++ b/src/app/shared/chat/new-group/new-group.page.ts @@ -0,0 +1,187 @@ +import { analyzeAndValidateNgModules } from '@angular/compiler'; +import { Component, OnInit } from '@angular/core'; +import { ModalController, NavParams, PickerController, PopoverController } from '@ionic/angular'; +import { GroupDurationPage } from 'src/app/shared/popover/group-duration/group-duration.page'; +import { GroupContactsPage } from '../group-messages/group-contacts/group-contacts.page'; + +@Component({ + selector: 'app-new-group', + templateUrl: './new-group.page.html', + styleUrls: ['./new-group.page.scss'], +}) +export class NewGroupPage implements OnInit { + isGroupCreated:boolean; + showLoader: boolean; + displayDuration: any; + showDuration: boolean; + selectedDuration = ['','','']; + groupName:string; + + constructor( + private pickerController: PickerController, + private popoverController: PopoverController, + private modalController: ModalController, + private navParams: NavParams, + ) + { + this.isGroupCreated = false; + this.groupName = this.navParams.get('name'); + } + + ngOnInit() { + + } + _ionChange(event){ + this.showDuration = event.detail.checked; + } + close(){ + this.modalController.dismiss(); + } + + async addContacts(){ + this.close(); + + let name = this.groupName.split(' ').join('-'); + console.log(name); + + const modal = await this.modalController.create({ + component: GroupContactsPage, + componentProps: { + isCreated:this.isGroupCreated, + name: name, + duration:'', + }, + cssClass: 'contacts', + backdropDismiss: false + }); + + await modal.present(); + modal.onDidDismiss(); + } + + async setDuration(ev: any) { + const popover = await this.popoverController.create({ + component: GroupDurationPage, + cssClass: 'group-duration', + event: ev, + translucent: true + }); + return await popover.present(); + } + + async showPicker(){ + const picker = await this.pickerController.create({ + cssClass: '', + buttons: [ + { + text: 'Cancelar', role: 'cancel', cssClass: 'btn-cancel' + }, + { + text: 'Ok', + cssClass: 'btn-cancel', + handler:(value:any)=>{ + console.log('button done pressed'); + this.selectedDuration = [ + value.days.value, + value.hours.value, + value.minutes.value, + ] + console.log(this.selectedDuration); + if(value.days.value != null && value.hours.value != null && value.minutes.value != null){ + if(value.days.value > 0){ + if(value.days.value == 1){ + if(value.hours.value == 1){ + this.displayDuration = value.days.value + " day " + + value.hours.value + " hora " + + value.minutes.value + " minutos"; + } + else{ + this.displayDuration = value.days.value + " days " + + value.hours.value + " horas " + + value.minutes.value + " minutos"; + } + } + else{ + if(value.hours.value == 1){ + this.displayDuration = value.days.value + " days " + + value.hours.value + " hora " + + value.minutes.value + " minutos"; + } + else{ + this.displayDuration = value.days.value + " days " + + value.hours.value + " horas " + + value.minutes.value + " minutos"; + } + } + } + else{ + if(value.hours.value == 1){ + this.displayDuration = value.hours.value + " hora " + + value.minutes.value + " minutos"; + } + else{ + this.displayDuration = value.hours.value + " horas " + + value.minutes.value + " minutos"; + } + } + } + }, + }, + ], + columns: [ + { + name: 'days', + prefix: 'Dias', + options: [ + { text: '0', value: 0 }, + { text: '1', value: 1 }, + { text: '2', value: 2 }, + { text: '3', value: 3 }, + { text: '4', value: 4 }, + ] + }, + { + name: 'hours', + prefix: 'Horas', + options: [ + { text: '0', value: 0 }, + { text: '1', value: 1 }, + { text: '2', value: 2 }, + { text: '3', value: 3 }, + { text: '4', value: 4 }, + { text: '5', value: 5 }, + { text: '6', value: 6 }, + { text: '7', value: 7 }, + { text: '8', value: 8 }, + ] + }, + { + name: 'minutes', + prefix: 'Minutos', + selectedIndex: 3, + options: [ + { text: '0', value: 0 }, + { text: '5', value: 5 }, + { text: '10', value: 10 }, + { text: '15', value: 15 }, + { text: '20', value: 20 }, + { text: '25', value: 25 }, + { text: '30', value: 30 }, + { text: '35', value: 35 }, + { text: '45', value: 45 }, + { text: '50', value: 50 }, + { text: '55', value: 55 }, + ] + } + ] + }); + await picker.present(); + picker.onDidDismiss().then(async data =>{ + let day = await picker.getColumn('days'); + let hour = await picker.getColumn('hours'); + let minutes = await picker.getColumn('minutes'); + }); + + } + +} diff --git a/src/global.scss b/src/global.scss index 0bf20164c..665aa4d4b 100644 --- a/src/global.scss +++ b/src/global.scss @@ -315,3 +315,16 @@ td.monthview-secondary-with-event, td.monthview-secondary-with-event[_ngcontent- box-shadow: none !important; } } + +.chat-mobile-modal-to-Desktop{ + top: 75px; + left: 340px; + ion-backdrop{ + display: none; + } + .modal-wrapper{ + width: 100%; + height: 100%; + box-shadow: none !important; + } +} From ccc7593cca4ec47d6f4e1b0fdfd5d5675d350b3f Mon Sep 17 00:00:00 2001 From: "tiago.kayaya" Date: Thu, 4 Mar 2021 19:12:42 +0100 Subject: [PATCH 05/16] save --- src/app/pages/chat/chat.page.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index f23ded448..24dd04f12 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -183,7 +183,7 @@ export class ChatPage implements OnInit { const modal = await this.modalController.create({ component: MessagesPage, - cssClass: 'group-messages', + cssClass: classs, backdropDismiss: false, componentProps: { dm: dm, @@ -192,12 +192,19 @@ export class ChatPage implements OnInit { await modal.present(); modal.onDidDismiss(); } + async openGroupMessages(room:any){ + let classs; + if( window.innerWidth <= 1024){ + classs = 'modal' + } else { + classs = 'chat-mobile-modal-to-Desktop' + } console.log(room); const modal = await this.modalController.create({ component: GroupMessagesPage, - cssClass: 'group-messages', + cssClass: classs, backdropDismiss: false, componentProps: { room: room, From aac9a0288d390292857dd74b6a5476a6ca6209d0 Mon Sep 17 00:00:00 2001 From: "tiago.kayaya" Date: Fri, 5 Mar 2021 11:58:59 +0100 Subject: [PATCH 06/16] save --- src/app/pages/chat/chat.page.html | 42 +++++++++++++++++++++---------- src/app/pages/chat/chat.page.scss | 25 +++++++++++++++--- src/app/pages/chat/chat.page.ts | 7 +++--- src/global.scss | 2 +- 4 files changed, 55 insertions(+), 21 deletions(-) diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index 90c64b523..c1b141ebc 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -8,14 +8,11 @@ -
- -
- - +
+

Chat

- + Conversas @@ -26,11 +23,11 @@
-
+
-
+
@@ -50,6 +47,26 @@
+
+
+ +
+
+
+
+ + + Tiago + + +
+
23/03/202 12:20
+
+
+ oI... +
+
+
@@ -79,12 +96,11 @@
- -
- - + +
+ +
-
diff --git a/src/app/pages/chat/chat.page.scss b/src/app/pages/chat/chat.page.scss index 43032bb06..1969c6ff5 100644 --- a/src/app/pages/chat/chat.page.scss +++ b/src/app/pages/chat/chat.page.scss @@ -53,6 +53,10 @@ ion-content{ border-top-left-radius: 25px; border-top-right-radius: 25px; + .aside-wrapper{ + justify-content: flex-start !important; + } + .iconschatnew-group{ width: 30px; height: 30px; @@ -65,6 +69,7 @@ ion-content{ object-fit: contain; margin: 0 5px 0 5px; } + } .item{ @@ -109,25 +114,37 @@ ion-content{ color: #000; } } - @media only screen and (min-width: 1024px) { .main-content{ + border: 1px solid blue; + overflow: auto; + .aside-wrapper{ + width: 40%; border: 1px solid red; - justify-content: flex-start !important; .aside-title{ - font-family: Roboto; - font-size: 25px; text-align: left; + font-size: 25px; + } } .aside{ width: 340px; } .aside-content{ + width: 60%; display: flex !important; background-color: white; } + .item{ + .item-icon{ + width: 10%; + } + .item-content{ + width: 90%; + } + } + } } diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 24dd04f12..968ce8bd9 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -39,7 +39,8 @@ export class ChatPage implements OnInit { dmUsers:any; desktopComponent: any = { - messages: false, + showMessages: false, + showGroupMessages: false, } constructor( @@ -56,7 +57,7 @@ export class ChatPage implements OnInit { } closeAllDesktopComponent(){ this.desktopComponent = { - messages: false, + showMessages: false, } } ngOnInit() { @@ -192,7 +193,7 @@ export class ChatPage implements OnInit { await modal.present(); modal.onDidDismiss(); } - + async openGroupMessages(room:any){ let classs; if( window.innerWidth <= 1024){ diff --git a/src/global.scss b/src/global.scss index 0f361a714..41d57aff6 100644 --- a/src/global.scss +++ b/src/global.scss @@ -324,7 +324,7 @@ td.monthview-secondary-with-event, td.monthview-secondary-with-event[_ngcontent- .chat-mobile-modal-to-Desktop{ top: 75px; - left: 340px; + left: 31%; transform: none !important; ion-backdrop{ display: none; From d63c4fc8fa8fa24d4a94d5cce53f6036cba37d8b Mon Sep 17 00:00:00 2001 From: "tiago.kayaya" Date: Fri, 5 Mar 2021 16:43:07 +0100 Subject: [PATCH 07/16] save --- src/app/pages/chat/chat.page.html | 37 +++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index c1b141ebc..446951486 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -10,9 +10,18 @@
-
-

Chat

- +
+ +
+
+ Chat +
+
+ + +
+
+ Conversas @@ -31,7 +40,7 @@
-
+
@@ -51,7 +60,11 @@
-
+
@@ -93,13 +106,23 @@ +
- - + +
+ +
+
+ +
From 304151f2fdcff9ab05f207f779673f837b69dc0e Mon Sep 17 00:00:00 2001 From: "tiago.kayaya" Date: Fri, 5 Mar 2021 16:43:17 +0100 Subject: [PATCH 08/16] save --- src/app/app-routing.module.ts | 48 +++++++------- src/app/home/home-routing.module.ts | 26 +++++++- src/app/pages/chat/chat-routing.module.ts | 54 ++++++++++----- src/app/pages/chat/chat.module.ts | 2 + src/app/pages/chat/chat.page.scss | 65 ++++++++----------- .../pages/chat/test/test-routing.module.ts | 17 +++++ src/app/pages/chat/test/test.module.ts | 20 ++++++ src/app/pages/chat/test/test.page.html | 9 +++ src/app/pages/chat/test/test.page.scss | 0 src/app/pages/chat/test/test.page.spec.ts | 24 +++++++ src/app/pages/chat/test/test.page.ts | 15 +++++ src/app/pages/events/events.page.html | 4 +- .../shared/chat/messages/messages.module.ts | 3 +- 13 files changed, 206 insertions(+), 81 deletions(-) create mode 100644 src/app/pages/chat/test/test-routing.module.ts create mode 100644 src/app/pages/chat/test/test.module.ts create mode 100644 src/app/pages/chat/test/test.page.html create mode 100644 src/app/pages/chat/test/test.page.scss create mode 100644 src/app/pages/chat/test/test.page.spec.ts create mode 100644 src/app/pages/chat/test/test.page.ts diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index def598b45..7fd5e228a 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,24 +1,26 @@ -import { NgModule } from '@angular/core'; -import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; - -const routes: Routes = [ - { - path: '', - loadChildren: () => import('./index/index.module').then(m => m.IndexPageModule) - }, - { - path: '', - loadChildren: () => import('./home/home.module').then( m => m.HomePageModule) - }, { - path: 'messages', - loadChildren: () => import('./shared/chat/messages/messages.module').then( m => m.MessagesPageModule) - } +import { NgModule } from '@angular/core'; +import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; +import { MessagesPage } from './pages/chat/messages/messages.page'; -]; -@NgModule({ - imports: [ - RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }) - ], - exports: [RouterModule] -}) -export class AppRoutingModule {} +const routes: Routes = [ + { + path: '', + loadChildren: () => import('./index/index.module').then(m => m.IndexPageModule) + }, + { + path: '', + loadChildren: () => import('./home/home.module').then( m => m.HomePageModule) + }, + /* { + path: 'messages', + component: MessagesPage + } */ + +]; +@NgModule({ + imports: [ + RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }) + ], + exports: [RouterModule] +}) +export class AppRoutingModule {} diff --git a/src/app/home/home-routing.module.ts b/src/app/home/home-routing.module.ts index 203119606..63aeaa50a 100644 --- a/src/app/home/home-routing.module.ts +++ b/src/app/home/home-routing.module.ts @@ -1,6 +1,9 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { HomeGuard } from '../guards/home.guard'; +import { GroupMessagesPage } from '../pages/chat/group-messages/group-messages.page'; +import { MessagesPage } from '../pages/chat/messages/messages.page'; +import { TestPage } from '../pages/chat/test/test.page'; import { UserDataResolver } from '../resolvers/userData.resolver'; import { HomePage } from './home.page'; @@ -150,7 +153,28 @@ const routes: Routes = [ { path:'', loadChildren: ()=> import('../pages/chat/chat.module').then(m => m.ChatPageModule) - } + }, + { + path:'messages', + children: [ + { + path:'', + outlet:'message', + loadChildren: ()=> import('../pages/chat/messages/messages.module').then(m => m.MessagesPageModule) + }, + ] + }, + /* { + path:'messages', + outlet:'message', + component: MessagesPage + }, */ + { + path:'test', + outlet:'test', + component: TestPage + }, + ] }, ] diff --git a/src/app/pages/chat/chat-routing.module.ts b/src/app/pages/chat/chat-routing.module.ts index 7e318d35b..da6f2db29 100644 --- a/src/app/pages/chat/chat-routing.module.ts +++ b/src/app/pages/chat/chat-routing.module.ts @@ -1,13 +1,28 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { ChatPage } from './chat.page'; - -const routes: Routes = [ - { - path: '', - component: ChatPage - }, { +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ChatPage } from './chat.page'; +import { GroupMessagesPage } from './group-messages/group-messages.page'; +import { MessagesPage } from './messages/messages.page'; + +const routes: Routes = [ + { + path: '', + component: ChatPage, + children: [ + { + path:'messages', + outlet:'message', + component: MessagesPage + }, + { + path:'groups', + outlet:'group', + component: GroupMessagesPage + }, + ] + }, + { path: 'conversation', loadChildren: () => import('./conversation/conversation.module').then( m => m.ConversationPageModule) }, @@ -30,12 +45,17 @@ const routes: Routes = [ { path: 'edit-group', loadChildren: () => import('./edit-group/edit-group.module').then( m => m.EditGroupPageModule) + }, + { + path: 'test', + outlet:'test', + loadChildren: () => import('./test/test.module').then( m => m.TestPageModule) } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ChatPageRoutingModule {} +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ChatPageRoutingModule {} diff --git a/src/app/pages/chat/chat.module.ts b/src/app/pages/chat/chat.module.ts index d4f756504..7fcc73c71 100644 --- a/src/app/pages/chat/chat.module.ts +++ b/src/app/pages/chat/chat.module.ts @@ -8,6 +8,7 @@ import { ChatPageRoutingModule } from './chat-routing.module'; import { ChatPage } from './chat.page'; import { SharedModule } from 'src/app/shared/shared.module'; +import { RouterModule } from '@angular/router'; @NgModule({ imports: [ @@ -16,6 +17,7 @@ import { SharedModule } from 'src/app/shared/shared.module'; IonicModule, SharedModule, ChatPageRoutingModule, + RouterModule, ], declarations: [ChatPage], schemas: [CUSTOM_ELEMENTS_SCHEMA] diff --git a/src/app/pages/chat/chat.page.scss b/src/app/pages/chat/chat.page.scss index 1969c6ff5..cb800df51 100644 --- a/src/app/pages/chat/chat.page.scss +++ b/src/app/pages/chat/chat.page.scss @@ -4,44 +4,35 @@ ion-content{ :host{ background: #0782c9; } -.main-header{ - width: 100%; /* 400px */ - height: 100%; - font-family: Roboto; - border-top-left-radius: 25px; - border-top-right-radius: 25px; - background-color: #fff; - overflow:hidden; - padding: 30px 20px 0px 20px; - color:#000; - transform: translate3d(0, 1px, 0); - + .title-content{ - width: 360px; - margin: 0px auto; + width: 100%; + margin-bottom: 15px; overflow: auto; padding: 0 !important; background: #fff; + + .div-title{ + padding: 0!important; + float: left; + } + .title{ + font-size: 25px; + } + .div-icon{ + width: 60%; + float: right; + font-size: 35px; + overflow: auto; + padding: 1px; + } + .div-icon ion-icon{ + float: right; + padding-left: 20px; + } } - .div-title{ - padding: 0!important; - float: left; - } - .title{ - font-size: 25px; - } - .div-icon{ - width: 112px; - float: right; - font-size: 35px; - overflow: auto; - padding: 1px; - } - .div-icon ion-icon{ - float: right; - padding-left: 20px; - } -} + + .main-content{ width: 100%; height: 100%; @@ -49,12 +40,13 @@ ion-content{ margin: 0 auto; background-color: #fff; overflow:auto; - padding: 15px 20px 0 20px; + padding: 30px 20px 0 20px; border-top-left-radius: 25px; border-top-right-radius: 25px; .aside-wrapper{ - justify-content: flex-start !important; + padding: 0 !important; + margin: 0 !important; } .iconschatnew-group{ @@ -121,11 +113,8 @@ ion-content{ .aside-wrapper{ width: 40%; - border: 1px solid red; .aside-title{ - text-align: left; font-size: 25px; - } } .aside{ diff --git a/src/app/pages/chat/test/test-routing.module.ts b/src/app/pages/chat/test/test-routing.module.ts new file mode 100644 index 000000000..7f8abfd58 --- /dev/null +++ b/src/app/pages/chat/test/test-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { TestPage } from './test.page'; + +const routes: Routes = [ + { + path: '', + component: TestPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class TestPageRoutingModule {} diff --git a/src/app/pages/chat/test/test.module.ts b/src/app/pages/chat/test/test.module.ts new file mode 100644 index 000000000..ce5e6f2ad --- /dev/null +++ b/src/app/pages/chat/test/test.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { TestPageRoutingModule } from './test-routing.module'; + +import { TestPage } from './test.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + TestPageRoutingModule + ], + declarations: [TestPage] +}) +export class TestPageModule {} diff --git a/src/app/pages/chat/test/test.page.html b/src/app/pages/chat/test/test.page.html new file mode 100644 index 000000000..53118ae47 --- /dev/null +++ b/src/app/pages/chat/test/test.page.html @@ -0,0 +1,9 @@ + + + test + + + + + + diff --git a/src/app/pages/chat/test/test.page.scss b/src/app/pages/chat/test/test.page.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/pages/chat/test/test.page.spec.ts b/src/app/pages/chat/test/test.page.spec.ts new file mode 100644 index 000000000..d721f93a1 --- /dev/null +++ b/src/app/pages/chat/test/test.page.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { TestPage } from './test.page'; + +describe('TestPage', () => { + let component: TestPage; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TestPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(TestPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/chat/test/test.page.ts b/src/app/pages/chat/test/test.page.ts new file mode 100644 index 000000000..d91f99324 --- /dev/null +++ b/src/app/pages/chat/test/test.page.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-test', + templateUrl: './test.page.html', + styleUrls: ['./test.page.scss'], +}) +export class TestPage implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/pages/events/events.page.html b/src/app/pages/events/events.page.html index a21ed4f54..b75a20e64 100644 --- a/src/app/pages/events/events.page.html +++ b/src/app/pages/events/events.page.html @@ -55,9 +55,11 @@
+
  • + [routerLink]="['/home/events', event.EventId, 'events']" + >
    {{event.StartDate | date: 'HH:mm'}}
    diff --git a/src/app/shared/chat/messages/messages.module.ts b/src/app/shared/chat/messages/messages.module.ts index c933f79fe..4c0daa3e8 100644 --- a/src/app/shared/chat/messages/messages.module.ts +++ b/src/app/shared/chat/messages/messages.module.ts @@ -17,6 +17,7 @@ import { SharedModule } from 'src/app/shared/shared.module'; SharedModule, MessagesPageRoutingModule ], - declarations: [MessagesPage] + declarations: [MessagesPage], + exports: [MessagesPage] }) export class MessagesPageModule {} From f71c867d8eff4f5c68947cf9543eac705597cbe6 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Mon, 8 Mar 2021 10:01:23 +0000 Subject: [PATCH 09/16] main.scss edited online with Bitbucket --- src/style/main.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/style/main.scss b/src/style/main.scss index d03d89d95..fc357f2a7 100644 --- a/src/style/main.scss +++ b/src/style/main.scss @@ -311,6 +311,8 @@ .m-l-auto {margin-left: auto;} .m-auto {margin: 0 auto;} +.ml-auto, .mx-auto {margin-left: auto!important;} +.mr-auto, .mx-auto {margin-right: auto!important;} .text-bold {font-weight: 700;} .text-bold {font-weight: 700;} From 5cbe512f953931cb14888512e59cebcb5bbde090 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Thu, 11 Mar 2021 10:31:46 +0100 Subject: [PATCH 10/16] Improve search page --- .../organic-entity/organic-entity.page.scss | 2 +- src/app/pages/search/search.page.html | 27 +++++++++---------- src/app/pages/search/search.page.scss | 6 +++-- src/app/pages/search/search.page.ts | 21 ++++++++++++--- src/app/pages/search/sender/sender.page.scss | 2 +- src/app/shared/header/header.page.ts | 12 ++++++--- src/assets/images/eraser-solid.svg | 1 + src/global.scss | 20 ++++++++++++++ 8 files changed, 67 insertions(+), 24 deletions(-) create mode 100644 src/assets/images/eraser-solid.svg diff --git a/src/app/pages/search/organic-entity/organic-entity.page.scss b/src/app/pages/search/organic-entity/organic-entity.page.scss index 1623ab266..45c90a641 100644 --- a/src/app/pages/search/organic-entity/organic-entity.page.scss +++ b/src/app/pages/search/organic-entity/organic-entity.page.scss @@ -26,7 +26,7 @@ margin: 0px; padding-top: 10px; li{ - padding-top: 5px; + padding-top: 10px; padding-bottom: 10px; margin: 0px; padding-bottom: 10px; diff --git a/src/app/pages/search/search.page.html b/src/app/pages/search/search.page.html index 417ece95a..a7e0a6a00 100644 --- a/src/app/pages/search/search.page.html +++ b/src/app/pages/search/search.page.html @@ -1,10 +1,11 @@ - + +
    - - -
    + + +
    @@ -20,7 +21,7 @@
    -
    +
    @@ -30,7 +31,7 @@
    -
  • @@ -70,7 +71,7 @@
    -
    @@ -86,7 +87,7 @@
    -
    @@ -96,18 +97,16 @@ - - -
    +
    -
    -
    +

    Palavras mais pesquisadas

    -
    +
    diff --git a/src/app/pages/search/search.page.scss b/src/app/pages/search/search.page.scss index d5ef5aded..79a489d33 100644 --- a/src/app/pages/search/search.page.scss +++ b/src/app/pages/search/search.page.scss @@ -200,7 +200,9 @@ ion-slide{ @media only screen and (min-width: 1024px) { - + .advance-search{ + max-width: 47%; + } } @@ -249,4 +251,4 @@ ion-slide{ .swiper-container{ width: 100%; -} \ No newline at end of file +} \ No newline at end of file diff --git a/src/app/pages/search/search.page.ts b/src/app/pages/search/search.page.ts index ad09cccb8..b394d7491 100644 --- a/src/app/pages/search/search.page.ts +++ b/src/app/pages/search/search.page.ts @@ -346,9 +346,16 @@ export class SearchPage implements OnInit { async openAdvanceSearchSelection() { + let classs; + if( window.innerWidth <= 1024){ + classs = 'modal modal-desktop' + } else { + classs = 'search-desktop-modal search-submodal' + } + const modal = await this.modalController.create({ component: SenderPage, - cssClass: 'modal modal-desktop', + cssClass: classs, componentProps: { } }); @@ -364,9 +371,17 @@ export class SearchPage implements OnInit { async openOrganicEntitySelection(){ + let classs; + if( window.innerWidth <= 1024){ + classs = 'modal modal-desktop' + } else { + classs = 'search-desktop-modal search-submodal' + } + + const modal = await this.modalController.create({ component: OrganicEntityPage, - cssClass: 'modal modal-desktop', + cssClass: classs, componentProps: { } }); @@ -433,7 +448,7 @@ export class SearchPage implements OnInit { componentProps:{ publicationId: publicationId, }, - cssClass: 'publication-detail modal modal-desktop', + cssClass: 'publication-detail modal modal-desktop ', backdropDismiss: false }); diff --git a/src/app/pages/search/sender/sender.page.scss b/src/app/pages/search/sender/sender.page.scss index abda67839..27b075310 100644 --- a/src/app/pages/search/sender/sender.page.scss +++ b/src/app/pages/search/sender/sender.page.scss @@ -27,7 +27,7 @@ margin: 0px; padding-top: 10px; li{ - padding-top: 5px; + padding-top: 10px; padding-bottom: 10px; margin: 0px; padding-bottom: 10px; diff --git a/src/app/shared/header/header.page.ts b/src/app/shared/header/header.page.ts index 7457655b9..7b587864e 100644 --- a/src/app/shared/header/header.page.ts +++ b/src/app/shared/header/header.page.ts @@ -23,6 +23,13 @@ export class HeaderPage implements OnInit { this.profile = profile; } + + router.events.subscribe((val) => { + this.showSearch=false; + this.modalController.dismiss() + }); + + } ngOnInit() { @@ -77,7 +84,7 @@ export class HeaderPage implements OnInit { enterAnimation, leaveAnimation, component: ProfileComponent, - cssClass: 'model profile-modal', + cssClass: 'model profile-modal search-submodal', componentProps: { } }); @@ -91,8 +98,7 @@ export class HeaderPage implements OnInit { async closeSearch(){ - document.querySelectorAll('.search-modal').forEach((e)=>e.remove()) - + this.modalController.dismiss() } /** diff --git a/src/assets/images/eraser-solid.svg b/src/assets/images/eraser-solid.svg new file mode 100644 index 000000000..64273ad02 --- /dev/null +++ b/src/assets/images/eraser-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/global.scss b/src/global.scss index b9faf370f..96c86704f 100644 --- a/src/global.scss +++ b/src/global.scss @@ -296,6 +296,15 @@ td.monthview-secondary-with-event, td.monthview-secondary-with-event[_ngcontent- } } +.search-desktop-modal{ + .modal-wrapper{ + position: absolute; + right: 0px; + height: 100%; + width: 400px; + } +} + .footer-container{ padding: 10px 20px; @@ -337,6 +346,17 @@ td.monthview-secondary-with-event, td.monthview-secondary-with-event[_ngcontent- } } } + + .search-modal{ + ion-backdrop{ + display: none; + } + } + + + .search-submodal{ + background-color: rgb(0 0 0 / 55%); + } } From 081f731503a5346402ee2ef8867f19626bde41a9 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Thu, 11 Mar 2021 12:01:14 +0100 Subject: [PATCH 11/16] Convert gabinete digital mobile to desktop --- .../approve-event-modal/approve-event-modal.page.ts | 2 ++ .../pages/gabinete-digital/event-list/event-list.page.ts | 9 ++++++++- src/app/pages/search/search.page.html | 2 +- src/global.scss | 4 ++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.ts b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.ts index 15ca40eef..d88b2a1ef 100644 --- a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.ts +++ b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.ts @@ -51,6 +51,8 @@ export class ApproveEventModalPage implements OnInit { ngOnInit() { this.getTask(); this.getAttachments(); + + } diff --git a/src/app/pages/gabinete-digital/event-list/event-list.page.ts b/src/app/pages/gabinete-digital/event-list/event-list.page.ts index 11f2c739c..666145b04 100644 --- a/src/app/pages/gabinete-digital/event-list/event-list.page.ts +++ b/src/app/pages/gabinete-digital/event-list/event-list.page.ts @@ -67,12 +67,19 @@ S async openApproveModal(eventSerialNumber){ + let classs; + if( window.innerWidth <= 1024){ + classs = 'cal-modal modal modal-desktop' + } else { + classs = 'gabinete-digital-mobile-modal-to-Desktop' + } + const modal = await this.modalController.create({ component: ApproveEventModalPage, componentProps:{ serialNumber: eventSerialNumber, }, - cssClass: 'cal-modal modal modal-desktop', + cssClass: classs, backdropDismiss: false }); diff --git a/src/app/pages/search/search.page.html b/src/app/pages/search/search.page.html index a7e0a6a00..333d8b741 100644 --- a/src/app/pages/search/search.page.html +++ b/src/app/pages/search/search.page.html @@ -155,7 +155,7 @@
    - +
    diff --git a/src/global.scss b/src/global.scss index 96c86704f..bf4f3103d 100644 --- a/src/global.scss +++ b/src/global.scss @@ -374,4 +374,8 @@ td.monthview-secondary-with-event, td.monthview-secondary-with-event[_ngcontent- } } } +} + +.gabinete-digital-mobile-modal-to-Desktop{ + border-top-right-radius: 27px; } \ No newline at end of file From c6e4d0899482bf79756433910efaf3202a0c2f40 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Thu, 11 Mar 2021 14:57:17 +0100 Subject: [PATCH 12/16] Improve gabinete digital page --- .../approve-event-modal/approve-event-modal.page.html | 4 ++-- .../approve-event-modal/approve-event-modal.page.scss | 1 - .../pages/gabinete-digital/event-list/event-list.page.html | 2 +- .../pages/gabinete-digital/event-list/event-list.page.scss | 1 - .../shared/agenda/approve-event/approve-event.component.html | 2 +- src/app/shared/header/header.page.ts | 1 - 6 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html index a0e503485..47245336b 100644 --- a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html +++ b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html @@ -1,9 +1,9 @@ -
    +
    -
    +
    diff --git a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.scss b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.scss index e2bd9995d..1e8379f6c 100644 --- a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.scss +++ b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.scss @@ -8,7 +8,6 @@ ion-menu{ --height: 225px; } .header-content{ - width: 360px; overflow: auto; margin: 25px auto; } diff --git a/src/app/pages/gabinete-digital/event-list/event-list.page.html b/src/app/pages/gabinete-digital/event-list/event-list.page.html index 3214e4875..ee8fc849c 100644 --- a/src/app/pages/gabinete-digital/event-list/event-list.page.html +++ b/src/app/pages/gabinete-digital/event-list/event-list.page.html @@ -1,4 +1,4 @@ - +
    diff --git a/src/app/pages/gabinete-digital/event-list/event-list.page.scss b/src/app/pages/gabinete-digital/event-list/event-list.page.scss index f36fe4665..de6e94ceb 100644 --- a/src/app/pages/gabinete-digital/event-list/event-list.page.scss +++ b/src/app/pages/gabinete-digital/event-list/event-list.page.scss @@ -1,5 +1,4 @@ .header-content{ - width: 360px; overflow: auto; margin: 0 auto; padding-top: 25px; diff --git a/src/app/shared/agenda/approve-event/approve-event.component.html b/src/app/shared/agenda/approve-event/approve-event.component.html index 1e7343919..3dd5efff9 100644 --- a/src/app/shared/agenda/approve-event/approve-event.component.html +++ b/src/app/shared/agenda/approve-event/approve-event.component.html @@ -4,7 +4,7 @@
    - +
    diff --git a/src/app/shared/header/header.page.ts b/src/app/shared/header/header.page.ts index 7b587864e..c3b00bd9f 100644 --- a/src/app/shared/header/header.page.ts +++ b/src/app/shared/header/header.page.ts @@ -92,7 +92,6 @@ export class HeaderPage implements OnInit { } async dynamicSearch(){ - console.log('dynamic') window['dynamicSearch'](this.searchSubject) } From fc8235035f100a92a7f95d8cae0ca5d27848d0bd Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Thu, 11 Mar 2021 15:44:19 +0100 Subject: [PATCH 13/16] Improve publication page --- .../pages/publications/publications.page.html | 124 +++++++++++------- .../pages/publications/publications.page.scss | 3 +- src/style/main.scss | 62 ++++++++- 3 files changed, 137 insertions(+), 52 deletions(-) diff --git a/src/app/pages/publications/publications.page.html b/src/app/pages/publications/publications.page.html index a9f782b08..3313f7168 100644 --- a/src/app/pages/publications/publications.page.html +++ b/src/app/pages/publications/publications.page.html @@ -1,56 +1,84 @@ - + - - -
    -
    -
    - Ações Presidenciais -
    -
    - -
    -
    -
    -
    -
    - - - - -
    -
    -
    - -
    -
    - - -

    {{viagem.Description}}

    -

    {{viagem.Detail}}

    -
    -
    + + + + + + +
    +
    + + +
    +
    +
    + Ações Presidenciais +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    + +
    +
    + + +

    {{viagem.Description}}

    +

    {{viagem.Detail}}

    +
    +
    +
    +
    +
    + +
    +
    + + +

    {{evento.Description}}

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

    {{evento.Description}}

    -
    -
    + +
    + + +
    +
    +
    + Header +
    +
    +
    +
    + + +
    + 123 +
    -
    + +
    + + diff --git a/src/app/pages/publications/publications.page.scss b/src/app/pages/publications/publications.page.scss index a93051499..c182e3f6d 100644 --- a/src/app/pages/publications/publications.page.scss +++ b/src/app/pages/publications/publications.page.scss @@ -11,8 +11,8 @@ ion-toolbar{ --padding-right: 0px !important; --padding-end: 0px !important; } + .div-top-header{ - width: 400px; margin: 0 auto; background-color: #0782c9; overflow: auto; @@ -57,7 +57,6 @@ ion-toolbar{ transform: translate3d(0, 1px, 0); .title-content{ - width: 360px; margin: 0px auto; overflow: auto; padding: 0 !important; diff --git a/src/style/main.scss b/src/style/main.scss index fc357f2a7..ccb5ab9e9 100644 --- a/src/style/main.scss +++ b/src/style/main.scss @@ -185,6 +185,30 @@ } } + + +.width-md-100{width: 100%;} +.width-md-90{width: 90%;} +.width-md-80{width: 80%;} +.width-md-70{width: 70%;} +.width-md-60{width: 60%;} +.width-md-50{width: 50%;} +.width-md-40{width: 40%;} +.width-md-30{width: 30%;} +.width-md-20{width: 20%;} +.width-md-10{width: 10%;} + +.max-width-md-100{max-width: 100%;} +.max-width-md-90{max-width: 90%;} +.max-width-md-80{max-width: 80%;} +.max-width-md-70{max-width: 70%;} +.max-width-md-60{max-width: 60%;} +.max-width-md-50{max-width: 50%;} +.max-width-md-40{max-width: 40%;} +.max-width-md-30{max-width: 30%;} +.max-width-md-20{max-width: 20%;} +.max-width-md-10{max-width: 10%;} + } @media only screen and (min-width: 1366px) { @@ -332,11 +356,45 @@ .background-black {background: black;} .text-center {text-align: center;} +.tex-left{ text-align: left;} +.text-right{text-align: right;} .width-100{width: 100%;} -.height-100{height: 100%;} -.height-fit-content{height: fit-content;} +.width-90{width: 90%;} +.width-80{width: 80%;} +.width-70{width: 70%;} +.width-60{width: 60%;} .width-50{width: 50%;} +.width-40{width: 40%;} +.width-30{width: 30%;} +.width-20{width: 20%;} +.width-10{width: 10%;} + +.max-width-100{max-width: 100%;} +.max-width-90{max-width: 90%;} +.max-width-80{max-width: 80%;} +.max-width-70{max-width: 70%;} +.max-width-60{max-width: 60%;} +.max-width-50{max-width: 50%;} +.max-width-40{max-width: 40%;} +.max-width-30{max-width: 30%;} +.max-width-20{max-width: 20%;} +.max-width-10{max-width: 10%;} + + +.height-100{height: 100%;} +.height-90{height: 90%;} +.height-80{height: 80%;} +.height-70{width: 70%;} +.height-60{height: 60%;} +.height-50{height: 50%;} +.height-40{height: 40%;} +.height-30{height: 30%;} +.height-20{height: 20%;} +.height-10{height: 10%;} + +.height-fit-content{height: fit-content;} + .border-t-radius{ border-top-left-radius: 25px; From e4353b5d59b79899b6cb9b1e3b1ff09e342179b2 Mon Sep 17 00:00:00 2001 From: "tiago.kayaya" Date: Thu, 11 Mar 2021 16:21:09 +0100 Subject: [PATCH 14/16] working in responsiveness --- src/app/app-routing.module.ts | 7 +- src/app/app.module.ts | 5 +- src/app/home/home-routing.module.ts | 16 ++-- src/app/pages/chat/chat-routing.module.ts | 17 +---- src/app/pages/chat/chat.module.ts | 11 ++- src/app/pages/chat/chat.page.html | 47 ++---------- src/app/pages/chat/chat.page.scss | 11 +-- src/app/pages/chat/chat.page.ts | 58 ++++++++++++++- .../group-messages/group-messages.page.html | 4 +- .../group-messages/group-messages.page.ts | 73 ++++++++++++------- .../pages/chat/messages/messages.page.html | 2 + .../pages/chat/messages/messages.page.scss | 10 ++- src/app/pages/chat/messages/messages.page.ts | 28 +++++-- src/app/pages/chat/test/test.page.html | 2 +- src/app/services/chat.service.ts | 10 +++ 15 files changed, 191 insertions(+), 110 deletions(-) diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 7fd5e228a..8ea73ab47 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,5 +1,6 @@ import { NgModule } from '@angular/core'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; +import { ChatPage } from './pages/chat/chat.page'; import { MessagesPage } from './pages/chat/messages/messages.page'; const routes: Routes = [ @@ -11,9 +12,9 @@ const routes: Routes = [ path: '', loadChildren: () => import('./home/home.module').then( m => m.HomePageModule) }, - /* { - path: 'messages', - component: MessagesPage + /* { + path: 'chat', + component: ChatPage } */ ]; diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 5048c8574..adaccc9db 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -28,11 +28,12 @@ import { FormsModule } from '@angular/forms'; import { CalendarModule, DateAdapter } from 'angular-calendar'; import { adapterFactory } from 'angular-calendar/date-adapters/date-fns'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { MessagesPage } from './pages/chat/messages/messages.page'; @NgModule({ - declarations: [AppComponent], - entryComponents: [], + declarations: [AppComponent,MessagesPage,], + entryComponents: [MessagesPage], imports: [BrowserModule, CommonModule, FormsModule, diff --git a/src/app/home/home-routing.module.ts b/src/app/home/home-routing.module.ts index 63aeaa50a..0818b3d90 100644 --- a/src/app/home/home-routing.module.ts +++ b/src/app/home/home-routing.module.ts @@ -3,7 +3,6 @@ import { Routes, RouterModule } from '@angular/router'; import { HomeGuard } from '../guards/home.guard'; import { GroupMessagesPage } from '../pages/chat/group-messages/group-messages.page'; import { MessagesPage } from '../pages/chat/messages/messages.page'; -import { TestPage } from '../pages/chat/test/test.page'; import { UserDataResolver } from '../resolvers/userData.resolver'; import { HomePage } from './home.page'; @@ -159,20 +158,21 @@ const routes: Routes = [ children: [ { path:'', - outlet:'message', - loadChildren: ()=> import('../pages/chat/messages/messages.module').then(m => m.MessagesPageModule) + /* outlet:'message', */ + component: MessagesPage + //loadChildren: ()=> import('../pages/chat/messages/messages.module').then(m => m.MessagesPageModule) }, ] }, - /* { + { path:'messages', outlet:'message', component: MessagesPage - }, */ + }, { - path:'test', - outlet:'test', - component: TestPage + path:'groups', + outlet:'group', + component: GroupMessagesPage }, ] diff --git a/src/app/pages/chat/chat-routing.module.ts b/src/app/pages/chat/chat-routing.module.ts index da6f2db29..6ed809178 100644 --- a/src/app/pages/chat/chat-routing.module.ts +++ b/src/app/pages/chat/chat-routing.module.ts @@ -9,20 +9,8 @@ const routes: Routes = [ { path: '', component: ChatPage, - children: [ - { - path:'messages', - outlet:'message', - component: MessagesPage - }, - { - path:'groups', - outlet:'group', - component: GroupMessagesPage - }, - ] }, - { + /* { path: 'conversation', loadChildren: () => import('./conversation/conversation.module').then( m => m.ConversationPageModule) }, @@ -40,6 +28,7 @@ const routes: Routes = [ }, { path: 'messages', + outlet:'message', loadChildren: () => import('./messages/messages.module').then( m => m.MessagesPageModule) }, { @@ -50,7 +39,7 @@ const routes: Routes = [ path: 'test', outlet:'test', loadChildren: () => import('./test/test.module').then( m => m.TestPageModule) - } + } */ ]; diff --git a/src/app/pages/chat/chat.module.ts b/src/app/pages/chat/chat.module.ts index 7fcc73c71..0bcb62c12 100644 --- a/src/app/pages/chat/chat.module.ts +++ b/src/app/pages/chat/chat.module.ts @@ -9,6 +9,8 @@ import { ChatPageRoutingModule } from './chat-routing.module'; import { ChatPage } from './chat.page'; import { SharedModule } from 'src/app/shared/shared.module'; import { RouterModule } from '@angular/router'; +import { MessagesPage } from './messages/messages.page'; +import { GroupMessagesPage } from './group-messages/group-messages.page'; @NgModule({ imports: [ @@ -19,7 +21,12 @@ import { RouterModule } from '@angular/router'; ChatPageRoutingModule, RouterModule, ], - declarations: [ChatPage], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + declarations: [ + ChatPage, + MessagesPage, + GroupMessagesPage, + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], + entryComponents: [MessagesPage, GroupMessagesPage] }) export class ChatPageModule {} diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index 446951486..aec4ab243 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -40,7 +40,7 @@
    -
    +
    @@ -56,30 +56,6 @@
    -
    -
    - -
    -
    -
    -
    - - - Tiago - - -
    -
    23/03/202 12:20
    -
    -
    - oI... -
    -
    -
    @@ -90,7 +66,7 @@
    -
    +
    {{group.name.split('-').join(' ')}} @@ -106,23 +82,16 @@ -
    -
    - -
    - -
    -
    - -
    +
    + + +
    diff --git a/src/app/pages/chat/chat.page.scss b/src/app/pages/chat/chat.page.scss index cb800df51..f1883eb21 100644 --- a/src/app/pages/chat/chat.page.scss +++ b/src/app/pages/chat/chat.page.scss @@ -39,8 +39,8 @@ ion-content{ font-family: Roboto; margin: 0 auto; background-color: #fff; - overflow:auto; - padding: 30px 20px 0 20px; + //overflow:auto; + //padding: 30px 20px 0 20px; border-top-left-radius: 25px; border-top-right-radius: 25px; @@ -109,7 +109,7 @@ ion-content{ @media only screen and (min-width: 1024px) { .main-content{ border: 1px solid blue; - overflow: auto; + .aside-wrapper{ width: 40%; @@ -117,13 +117,14 @@ ion-content{ font-size: 25px; } } - .aside{ + /* .aside{ width: 340px; - } + } */ .aside-content{ width: 60%; display: flex !important; background-color: white; + border: 1px solid green; } .item{ .item-icon{ diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 968ce8bd9..630c8f131 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -1,5 +1,14 @@ import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; -import { Component, OnInit } from '@angular/core'; +import { + Component, + OnInit, + ViewChild, + ViewContainerRef, + ComponentFactoryResolver, + ComponentRef, + ComponentFactory, + Output +} from '@angular/core'; import { ModalController } from '@ionic/angular'; import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; @@ -43,12 +52,23 @@ export class ChatPage implements OnInit { showGroupMessages: false, } + @ViewChild('messagecontainer', { read: ViewContainerRef }) entry: ViewContainerRef; + //@ViewChild('groupMessages') child:GroupMessagesPage; + componentRef: any; + + roomId:any; + showMessages=false; + showGroupMessages=false; + + @Output() getRoomInfo; + constructor( private http:HttpClient, private chatService: ChatService, private modalController: ModalController, private authService: AuthService, private storage:Storage, + private resolver: ComponentFactoryResolver, ) { this.headers = new HttpHeaders(); @@ -73,8 +93,44 @@ export class ChatPage implements OnInit { this.load(); }) + console.log(this.roomId); + + } + destroyComponent() { + this.showMessages=false; + this.showGroupMessages=false; + } + openMessagesPage(rid) { + this.destroyComponent(); + this.roomId = rid; + this.showMessages=true; + /* this.entry.clear(); + const factory = this.resolver.resolveComponentFactory(MessagesPage); + this.componentRef = this.entry.createComponent(factory); + this.componentRef.instance.message = message; */ + } + openGroupMessagesPage(rid) { + this.destroyComponent(); + //console.log(this.child.roomId); + this.roomId = rid; + this.showGroupMessages=true; + console.log(rid); + /* this.showGroupMessages=true; */ + + /* this.entry.clear(); + const factory = this.resolver.resolveComponentFactory(GroupMessagesPage); + this.componentRef = this.entry.createComponent(factory); + this.componentRef.instance.message = message; + let comp: GroupMessagesPage; + comp = this.componentRef; + comp.message = '123'; + console.log(comp); + console.log('1'); */ + + } + onSegmentChange(){ this.load(); diff --git a/src/app/pages/chat/group-messages/group-messages.page.html b/src/app/pages/chat/group-messages/group-messages.page.html index 0f69171a8..b08b65bd6 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.html +++ b/src/app/pages/chat/group-messages/group-messages.page.html @@ -4,7 +4,7 @@
    - {{roomName}} + {{room.name}}
    @@ -32,7 +32,7 @@
    - Esta conversa passou a grupo
    + {{message}} Esta conversa passou a grupo
    A conversa original mantêm-se como chat individual
    diff --git a/src/app/pages/chat/group-messages/group-messages.page.ts b/src/app/pages/chat/group-messages/group-messages.page.ts index 7c2a62965..16dde4548 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.ts +++ b/src/app/pages/chat/group-messages/group-messages.page.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { AfterViewChecked, Component, OnChanges, OnInit, Input, SimpleChanges, Output } from '@angular/core'; import { ActionSheetController, MenuController, ModalController, NavParams, PopoverController } from '@ionic/angular'; import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; @@ -13,7 +13,7 @@ import { GroupContactsPage } from './group-contacts/group-contacts.page'; templateUrl: './group-messages.page.html', styleUrls: ['./group-messages.page.scss'], }) -export class GroupMessagesPage implements OnInit { +export class GroupMessagesPage implements OnInit, OnChanges { showLoader: boolean; isGroupCreated:boolean; loggedUser: any; @@ -24,7 +24,8 @@ export class GroupMessagesPage implements OnInit { room:any; roomName:any; members:any; - contacts: string[] = [" Ana M.", "Andre F.", "Bruno G.", "Catarina T", "Tiago"]; + + @Input() roomId:string; constructor( private menu: MenuController, @@ -32,12 +33,15 @@ export class GroupMessagesPage implements OnInit { private actionSheetController: ActionSheetController, public popoverController: PopoverController, private chatService: ChatService, - private navParams: NavParams, + /* private navParams: NavParams, */ private authService: AuthService, ) { this.isGroupCreated = true; - this.room = this.navParams.get('room'); - this.roomName = this.room.name.split('-').join(' '); + /* this.room = this.navParams.get('room'); */ + /* this.roomName = this.room.name.split('-').join(' '); */ + } + ngOnChanges(changes: SimpleChanges): void { + this.getRoomInfo(); } ngOnInit() { @@ -45,11 +49,8 @@ export class GroupMessagesPage implements OnInit { this.loggedUser=res; console.log(this.loggedUser); }); - this.load(); - } - load(){ - this.getGroupContacts(); - this.loadGroupMessages(); + this.getRoomInfo(); + console.log(this.roomId); } close(){ @@ -57,15 +58,30 @@ export class GroupMessagesPage implements OnInit { } doRefresh(ev:any){ - this.load(); + this.getRoomInfo(); ev.target.complete(); } + get watch(){ + this.getRoomInfo(); + console.log('here watching'); + + return this.roomId; + } + getRoomInfo(){ + this.showLoader = true; + this.chatService.getRoomInfo(this.roomId).subscribe(room=>{ + this.room = room['room']; + this.getGroupContacts(this.room); + this.loadGroupMessages(this.room); + this.showLoader = false; + }); + } - getGroupContacts(){ + getGroupContacts(room:any){ this.showLoader = true; //If group is private call getGroupMembers - if(this.room.t === 'p'){ - this.chatService.getGroupMembers(this.room._id).subscribe(res=>{ + if(room.t === 'p'){ + this.chatService.getGroupMembers(this.roomId).subscribe(res=>{ console.log(res); this.members = res['members']; this.showLoader = false; @@ -73,27 +89,33 @@ export class GroupMessagesPage implements OnInit { } //Otherwise call getChannelMembers for públic groups else{ - this.chatService.getChannelMembers(this.room._id).subscribe(res=>{ + this.chatService.getChannelMembers(this.roomId).subscribe(res=>{ console.log(res); this.members = res['members']; this.showLoader = false; }); } } - loadGroupMessages(){ + loadGroupMessages(room:any){ + console.log('here'+room.t); + this.showLoader = true; //If group is private call getGroupMembers - if(this.room.t === 'p'){ - this.chatService.getPrivateGroupMessages(this.room._id).subscribe(res=>{ + if(room.t === 'p'){ + console.log('private'); + + this.chatService.getPrivateGroupMessages(this.roomId).subscribe(res=>{ console.log(res); let msgOnly = res['messages'].filter(data => data.t != 'au'); this.messages = msgOnly.reverse(); + console.log(res); + this.showLoader = false; }); } //Otherwise call getChannelMembers for públic groups else{ - this.chatService.getPublicGroupMessages(this.room._id).subscribe(res=>{ + this.chatService.getPublicGroupMessages(this.roomId).subscribe(res=>{ console.log(res); this.messages = res['messages'].reverse(); }); @@ -104,17 +126,18 @@ export class GroupMessagesPage implements OnInit { let body = { "message": { - "rid": this.room._id, "msg": this.message + "rid": this.roomId, "msg": this.message } } this.chatService.sendMessage(body).subscribe(res=> { - this.loadGroupMessages(); + /* this.loadGroupMessages(); */ + this.getRoomInfo(); }); this.message = ""; } - async openOptions(ev: any) { + /* async openOptions(ev: any) { const popover = await this.popoverController.create({ component: ChatPopoverPage, cssClass: 'chat-popover', @@ -132,7 +155,7 @@ export class GroupMessagesPage implements OnInit { console.log(this.roomName); this.load(); - /* this.modalController.dismiss(); */ + //this.modalController.dismiss(); }; }); @@ -170,7 +193,7 @@ export class GroupMessagesPage implements OnInit { this.load(); }); } - + */ /* async actionSheet() { const actionSheet = await this.actionSheetController.create({ cssClass: 'my-custom-class', diff --git a/src/app/pages/chat/messages/messages.page.html b/src/app/pages/chat/messages/messages.page.html index e8f28dce2..586a9172b 100644 --- a/src/app/pages/chat/messages/messages.page.html +++ b/src/app/pages/chat/messages/messages.page.html @@ -57,6 +57,8 @@
    + + diff --git a/src/app/pages/chat/messages/messages.page.scss b/src/app/pages/chat/messages/messages.page.scss index 72515a71d..4d0a0e6f9 100644 --- a/src/app/pages/chat/messages/messages.page.scss +++ b/src/app/pages/chat/messages/messages.page.scss @@ -2,6 +2,7 @@ .header-toolbar{ --background:transparent; --opacity: 1; + border: 1px solid red; .main-header{ width: 100%; /* 400px */ @@ -82,9 +83,13 @@ } } ion-content{ + width: 100%; + height: 100%; + border: 1px solid red; .welcome-text{ /* width: 322px; */ - width: em(422px); + /* width: em(422px); */ + width: 100%; background: #ebebeb; text-align: center; font-size: 13px; @@ -94,6 +99,7 @@ line-height: 1.2rem; margin: 20px 39px 25px; border-radius: 8px; + } .messages{ font-size: 13px; @@ -144,6 +150,8 @@ } ion-footer{ + width: 100%; + border: 1px solid red; .row{ width: 380px; margin: 0 auto; diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index 98ddb095e..1d6e26169 100644 --- a/src/app/pages/chat/messages/messages.page.ts +++ b/src/app/pages/chat/messages/messages.page.ts @@ -1,4 +1,4 @@ -import { AfterViewChecked, Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { AfterViewChecked, Component, ElementRef, Input, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core'; import { ModalController, NavParams, PopoverController } from '@ionic/angular'; import { Status } from 'src/app/models/chat/status.model'; import { AuthService } from 'src/app/services/auth.service'; @@ -12,7 +12,7 @@ import { ContactsPage } from '../new-group/contacts/contacts.page'; templateUrl: './messages.page.html', styleUrls: ['./messages.page.scss'], }) -export class MessagesPage implements OnInit, AfterViewChecked { +export class MessagesPage implements OnInit, AfterViewChecked, OnChanges { showLoader: boolean; @ViewChild('scrollMe') private myScrollContainer: ElementRef; @@ -25,15 +25,22 @@ export class MessagesPage implements OnInit, AfterViewChecked { userPresence=''; dmUsers:any; + @Input() roomId:string; constructor( public popoverController: PopoverController, private modalController: ModalController, - private navParams: NavParams, + /* private navParams: NavParams, */ private chatService: ChatService, private authService: AuthService, ) { - this.dm = this.navParams.get('dm'); + /* this.dm = this.navParams.get('dm'); */ + } + ngOnChanges(changes: SimpleChanges): void { + console.log(this.roomId); + this.load(); + + //throw new Error('Method not implemented.'); } ngOnInit() { @@ -48,12 +55,16 @@ export class MessagesPage implements OnInit, AfterViewChecked { /* setInterval(()=>{ */ this.load(); /* }, 9000); */ + console.log(this.roomId); + } load(){ this.loadMessages(); this.getChatMembers(); } + + doRefresh(ev:any){ this.load(); ev.target.complete(); @@ -61,6 +72,7 @@ export class MessagesPage implements OnInit, AfterViewChecked { ngAfterViewChecked() { this.scrollToBottom(); + console.log(this.roomId); } scrollToBottom(): void { try { @@ -76,7 +88,7 @@ export class MessagesPage implements OnInit, AfterViewChecked { let body = { "message": { - "rid": this.dm._id, "msg": this.message + "rid": this.roomId, "msg": this.message } } @@ -88,7 +100,7 @@ export class MessagesPage implements OnInit, AfterViewChecked { loadMessages(){ this.showLoader = true; - this.chatService.getRoomMessages(this.dm._id).subscribe(res => { + this.chatService.getRoomMessages(this.roomId).subscribe(res => { /* console.log(res); */ this.messages = res['messages'].reverse(); console.log(this.messages); @@ -96,8 +108,10 @@ export class MessagesPage implements OnInit, AfterViewChecked { }) } getChatMembers(){ + console.log(this.roomId); + this.showLoader = true; - this.chatService.getMembers(this.dm._id).subscribe(res=> { + this.chatService.getMembers(this.roomId).subscribe(res=> { this.dmUsers = res['members'].filter(data => data.username != this.loggedUser.me.username) console.log(res); console.log(this.dmUsers); diff --git a/src/app/pages/chat/test/test.page.html b/src/app/pages/chat/test/test.page.html index 53118ae47..63ea42680 100644 --- a/src/app/pages/chat/test/test.page.html +++ b/src/app/pages/chat/test/test.page.html @@ -5,5 +5,5 @@ - +TESTE diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts index f205bc1cd..6d68c7b70 100644 --- a/src/app/services/chat.service.ts +++ b/src/app/services/chat.service.ts @@ -67,6 +67,16 @@ export class ChatService { getAllRooms(){ return this.http.get(environment.apiChatUrl+'rooms.get', this.options); } + getRoomInfo(roomId:any){ + let params = new HttpParams(); + params = params.set("roomId", roomId); + let opts = { + headers: this.headers, + params: params + } + return this.http.get(environment.apiChatUrl+'rooms.info', opts); + + } customsRooms(params:any){ let opts = { headers: this.headers, From a848c816b4a65901753aa3d1d0fcf5d064ef0f4a Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Thu, 11 Mar 2021 16:23:46 +0100 Subject: [PATCH 15/16] Improve box sizing --- src/app/pages/gabinete-digital/gabinete-digital.page.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.html b/src/app/pages/gabinete-digital/gabinete-digital.page.html index e73c948d1..f3a77d799 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.html +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.html @@ -13,9 +13,9 @@
    -
    +

    Gabinete Digital

    -
    +
    @@ -23,7 +23,7 @@

    Eventos para Aprovação

    {{count_ev_md+count_ev_pr}} Documentos

    -
    +
    From 86d849c1e7a55c0b991ec8b438d0b0a03ad1e96b Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Thu, 11 Mar 2021 16:29:08 +0100 Subject: [PATCH 16/16] Fix chat box sizing --- src/app/pages/chat/chat.page.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index aec4ab243..4d55e180b 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -90,7 +90,7 @@ - +