end user
This commit is contained in:
parent
4ab2fb801a
commit
6b9b7dbf3d
79
ng-seed/package-lock.json
generated
79
ng-seed/package-lock.json
generated
@ -305,6 +305,30 @@
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"sass-loader": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz",
|
||||
"integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"klona": "^2.0.4",
|
||||
"loader-utils": "^2.0.0",
|
||||
"neo-async": "^2.6.2",
|
||||
"schema-utils": "^3.0.0",
|
||||
"semver": "^7.3.2"
|
||||
}
|
||||
},
|
||||
"schema-utils": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
|
||||
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/json-schema": "^7.0.8",
|
||||
"ajv": "^6.12.5",
|
||||
"ajv-keywords": "^3.5.2"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.3.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
|
||||
@ -8224,8 +8248,7 @@
|
||||
"klona": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz",
|
||||
"integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
|
||||
"dev": true
|
||||
"integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA=="
|
||||
},
|
||||
"leaflet": {
|
||||
"version": "1.9.3",
|
||||
@ -9147,8 +9170,7 @@
|
||||
"neo-async": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
|
||||
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
|
||||
},
|
||||
"ng2-charts": {
|
||||
"version": "2.4.3",
|
||||
@ -12077,53 +12099,12 @@
|
||||
}
|
||||
},
|
||||
"sass-loader": {
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz",
|
||||
"integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==",
|
||||
"dev": true,
|
||||
"version": "13.2.0",
|
||||
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.2.0.tgz",
|
||||
"integrity": "sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg==",
|
||||
"requires": {
|
||||
"klona": "^2.0.4",
|
||||
"loader-utils": "^2.0.0",
|
||||
"neo-async": "^2.6.2",
|
||||
"schema-utils": "^3.0.0",
|
||||
"semver": "^7.3.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"yallist": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"schema-utils": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
|
||||
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/json-schema": "^7.0.8",
|
||||
"ajv": "^6.12.5",
|
||||
"ajv-keywords": "^3.5.2"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.3.8",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
|
||||
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lru-cache": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||
"dev": true
|
||||
}
|
||||
"neo-async": "^2.6.2"
|
||||
}
|
||||
},
|
||||
"saucelabs": {
|
||||
|
||||
@ -57,6 +57,7 @@
|
||||
"quill": "^1.3.7",
|
||||
"rxjs": "^6.6.6",
|
||||
"rxjs-compat": "^6.6.6",
|
||||
"sass-loader": "^13.2.0",
|
||||
"screenfull": "^5.1.0",
|
||||
"simple-line-icons": "^2.5.5",
|
||||
"sortablejs": "^1.13.0",
|
||||
|
||||
@ -32,20 +32,14 @@ export const AppRoutes: Routes = [{
|
||||
loadChildren: () => import('./appoinment/customers/customers.module').then(m => m.CustomersModule)
|
||||
},
|
||||
{
|
||||
path: 'consultants',
|
||||
loadChildren: () => import('./appoinment/consultants/consultants.module').then(m => m.ConsultantsModule)
|
||||
}, {
|
||||
path: 'users',
|
||||
loadChildren: () => import('./appoinment/user/user.module').then(m => m.UserModule)
|
||||
},
|
||||
{
|
||||
path: 'services',
|
||||
loadChildren: () => import('./appoinment/service-list-details/service-list.module').then(m => m.ServiceListModule)
|
||||
},
|
||||
{
|
||||
path: 'consultant-setting',
|
||||
loadChildren: () => import('./appoinment/consultant-setting/consultant-setting.module').then(m => m.ConsultantSettingModule)
|
||||
},
|
||||
|
||||
|
||||
]
|
||||
}, {
|
||||
|
||||
@ -1,15 +1,7 @@
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import { AppoinmentsListComponent } from './appoinments/appoinments-list/appoinments-list.component';
|
||||
import { AddBusinessListComponent } from './business/add-business-list/add-business-list.component';
|
||||
import { BusinessListComponent } from './business/business-list/business-list.component';
|
||||
import { CalendarListComponent } from './calendars/calendar-list/calendar-list.component';
|
||||
import { CustomersListComponent } from './customers/customers-list/customers-list.component';
|
||||
import { ServiceListComponent } from './service-list-details/service-list/service-list.component';
|
||||
import { AddUserListComponent } from './user/add-user-list/add-user-list.component';
|
||||
import { AddBusinessListComponent } from './business/add-business-list/add-business-list.component';
|
||||
import { UserListComponent } from './user/user-list/user-list.component';
|
||||
import { } from './service-list-details/service-list/service-list.component'
|
||||
import { ConsultantsListComponent } from './consultants/consultants-list/consultants-list.component';
|
||||
|
||||
|
||||
const routes: Routes = [ {
|
||||
|
||||
@ -1,16 +1,7 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { AppoinmentRoutingModule } from './appoinment-routing.module';
|
||||
import { BusinessModule } from './business/business.module';
|
||||
import { UserModule } from './user/user.module';
|
||||
import { CustomersModule } from './customers/customers.module';
|
||||
import { CalendarsModule } from './calendars/calendars.module';
|
||||
import { AppoinmentsModule } from './appoinments/appoinments.module';
|
||||
import { DemoMaterialModule } from 'app/shared/demo.module';
|
||||
import { MatCardModule } from '@angular/material/card';
|
||||
import { ServiceListComponent } from './service-list-details/service-list/service-list.component';
|
||||
import { ServiceListModule } from './service-list-details/service-list.module';
|
||||
import { ConsultantsModule } from './consultants/consultants.module';
|
||||
import { AppoinmentRoutingModule } from './appoinment-routing.module';
|
||||
import { DemoMaterialModule } from 'app/shared/demo.module';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
|
||||
@ -18,11 +18,11 @@ th.mat-header-cell, td.mat-cell, td.mat-footer-cell {
|
||||
overflow: hidden!important;
|
||||
background-color: #ffff;
|
||||
}
|
||||
::ng-deep .body-container {
|
||||
overflow-x: hidden;
|
||||
overflow-y: hidden!important;
|
||||
background-color: #ffff;
|
||||
}
|
||||
// ::ng-deep .body-container {
|
||||
// overflow-x: hidden;
|
||||
// overflow-y: hidden!important;
|
||||
// background-color: #ffff;
|
||||
// }
|
||||
::ng-deep .mat-expansion-panel:not([class*='mat-elevation-z']) {
|
||||
box-shadow: none!important;
|
||||
}
|
||||
@ -55,9 +55,9 @@ img {
|
||||
.delete:hover {
|
||||
color:#ff0000;
|
||||
}
|
||||
::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
|
||||
width: 180%;
|
||||
}
|
||||
// ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
|
||||
// width: 180%;
|
||||
// }
|
||||
|
||||
::ng-deep .mat-content {
|
||||
display: block!important;
|
||||
|
||||
@ -64,10 +64,10 @@
|
||||
line-height: 15px;
|
||||
font-size: 14px;
|
||||
}
|
||||
::ng-deep .mat-form-field-appearance-outline .mat-form-field-wrapper {
|
||||
margin: 0.25em 0;
|
||||
width: 175%!important;
|
||||
}
|
||||
// ::ng-deep .mat-form-field-appearance-outline .mat-form-field-wrapper {
|
||||
// margin: 0.25em 0;
|
||||
// width: 175%!important;
|
||||
// }
|
||||
.mate{
|
||||
width: 15% !important;
|
||||
}
|
||||
|
||||
@ -18,11 +18,11 @@ th.mat-header-cell, td.mat-cell, td.mat-footer-cell {
|
||||
overflow: hidden!important;
|
||||
background-color: #ffff;
|
||||
}
|
||||
::ng-deep .body-container {
|
||||
overflow-x: hidden;
|
||||
overflow-y: hidden;
|
||||
background-color: #ffff;
|
||||
}
|
||||
// ::ng-deep .body-container {
|
||||
// overflow-x: hidden;
|
||||
// overflow-y: hidden;
|
||||
// background-color: #ffff;
|
||||
// }
|
||||
::ng-deep .mat-expansion-panel:not([class*='mat-elevation-z']) {
|
||||
box-shadow: none!important;
|
||||
}
|
||||
@ -55,9 +55,9 @@ img {
|
||||
.delete:hover {
|
||||
color:#ff0000;
|
||||
}
|
||||
::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
|
||||
width: 180%;
|
||||
}
|
||||
// ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
|
||||
// width: 180%;
|
||||
// }
|
||||
|
||||
::ng-deep .mat-content {
|
||||
display: block!important;
|
||||
|
||||
@ -109,7 +109,7 @@ export class BusinessListComponent implements OnInit {
|
||||
openDialog(action,obj) {
|
||||
obj.action = action;
|
||||
const dialogRef = this.dialog.open(DialogBoxComponent, {
|
||||
width: '39%',
|
||||
width: '30%',
|
||||
height: '100%',
|
||||
// maxWidth: '38vw',
|
||||
position: { right: '0' },
|
||||
@ -130,7 +130,7 @@ export class BusinessListComponent implements OnInit {
|
||||
console.log('add')
|
||||
let addFormData = {
|
||||
address: row_obj.address,
|
||||
logo:row_obj.logo,
|
||||
image:row_obj.logo,
|
||||
// busId: 'abc123',
|
||||
city: row_obj.city,
|
||||
busName: row_obj.busName,
|
||||
@ -143,7 +143,8 @@ export class BusinessListComponent implements OnInit {
|
||||
};
|
||||
formValue.push(addFormData);
|
||||
}else if(result.event == 'Update'){
|
||||
console.log('Update')
|
||||
console.log('Update',row_obj)
|
||||
row_obj.image = row_obj.logo
|
||||
formValue.push(row_obj);
|
||||
}
|
||||
else if(result == 'Delete'){
|
||||
@ -161,9 +162,11 @@ export class BusinessListComponent implements OnInit {
|
||||
if (res.status == 200) {
|
||||
// this.customersList = res.data;
|
||||
this.getBusinessList()
|
||||
// if(result.event == 'Add' && row_obj.admin_checked == true){
|
||||
// this.router.navigate(['/add-user-list'])
|
||||
// }
|
||||
if(result.event == 'Add' && row_obj.admin_checked == true){
|
||||
localStorage.setItem('go_admin','0')
|
||||
localStorage.setItem('busName',row_obj.busName)
|
||||
this.router.navigate(['/users',])
|
||||
}
|
||||
}
|
||||
else{
|
||||
// this.customersList=[];
|
||||
|
||||
@ -46,9 +46,9 @@
|
||||
<mat-error *ngIf="myError('workingHrsJson', 'required')">Working Hrs is required</mat-error>
|
||||
<mat-error *ngIf="myError('workingHrsJson', 'maxlength')">Limit exceed</mat-error>
|
||||
</mat-form-field> -->
|
||||
<img class="image mb-2" [src]="url" height="50">
|
||||
<img *ngIf="imageViewStatus == true" class="image mb-2" [src]="url" height="50" width="50">
|
||||
<input type='file' (change)="onSelectFile($event)" formControlName="logo">
|
||||
<!-- <mat-checkbox class="example-margin mt-2" formControlName="admin_checked" (change)="showOptions($event)">Add Admin</mat-checkbox> -->
|
||||
<mat-checkbox class="example-margin mt-2" formControlName="admin_checked" (change)="showOptions($event)">Add Admin</mat-checkbox>
|
||||
|
||||
</div>
|
||||
</ng-scrollbar>
|
||||
|
||||
@ -19,6 +19,7 @@ export class DialogBoxComponent implements OnInit {
|
||||
action:string;
|
||||
local_data:any;
|
||||
url: string | ArrayBuffer;
|
||||
imageViewStatus: boolean = false;
|
||||
constructor(private router: Router,private formBuilder: FormBuilder,
|
||||
public dialogRef: MatDialogRef<DialogBoxComponent>,
|
||||
@Optional() @Inject(MAT_DIALOG_DATA) public data: UsersData) {
|
||||
@ -29,20 +30,27 @@ export class DialogBoxComponent implements OnInit {
|
||||
get f(){
|
||||
return this.form.controls;
|
||||
}
|
||||
// showOptions(event:MatCheckboxChange): void {
|
||||
// console.log(event.checked);
|
||||
// this.form['value'].admin_checked = event.checked
|
||||
// console.log(this.form['value'].admin_checked)
|
||||
// }
|
||||
showOptions(event:MatCheckboxChange): void {
|
||||
console.log(event.checked);
|
||||
this.form['value'].admin_checked = event.checked
|
||||
console.log(this.form['value'].admin_checked)
|
||||
}
|
||||
closeDialog(){
|
||||
this.dialogRef.close({event:'Cancel'});
|
||||
}
|
||||
onSelectFile(event) {
|
||||
console.log(event.target.files[0])
|
||||
if(event != null){
|
||||
this.imageViewStatus = true
|
||||
}
|
||||
|
||||
this.form['value'].logo = [event.target.files[0]]
|
||||
if (event.target.files && event.target.files[0]) {
|
||||
var reader = new FileReader();
|
||||
reader.readAsDataURL(event.target.files[0]);
|
||||
reader.onload = (event) => {
|
||||
this.url = event.target.result;
|
||||
console.log(this.url)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -52,8 +60,8 @@ export class DialogBoxComponent implements OnInit {
|
||||
ngOnInit() {
|
||||
let userrole = localStorage.getItem('user_role')
|
||||
this.form = new FormGroup({
|
||||
// admin_checked: new FormControl('', [Validators.required]),
|
||||
// workingHrsJson: new FormControl('', [Validators.required]),
|
||||
admin_checked: new FormControl('', [Validators.required]),
|
||||
workingHrsJson: new FormControl('', [Validators.required]),
|
||||
logo: new FormControl('', null),
|
||||
busName: new FormControl('', [Validators.required, Validators.maxLength(20)]),
|
||||
address: new FormControl('', [Validators.required, Validators.maxLength(50)]),
|
||||
|
||||
@ -1,16 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import { ConsultantsListComponent } from './consultants-list/consultants-list.component';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: ConsultantsListComponent
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forChild(routes)],
|
||||
exports: [RouterModule]
|
||||
})
|
||||
export class ConsultantsRoutingModule { }
|
||||
@ -1,25 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
|
||||
import { ConsultantsRoutingModule } from './consultants-routing.module';
|
||||
import { ConsultantsListComponent } from './consultants-list/consultants-list.component';
|
||||
import { DemoMaterialModule } from 'app/shared/demo.module';
|
||||
import { NgScrollbarModule } from 'ngx-scrollbar';
|
||||
import { ConsultantsDetailsComponent } from './consultants-details/consultants-details.component';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
ConsultantsListComponent,
|
||||
ConsultantsDetailsComponent,
|
||||
],
|
||||
imports: [
|
||||
DemoMaterialModule,
|
||||
CommonModule,
|
||||
ConsultantsRoutingModule,
|
||||
NgScrollbarModule
|
||||
],
|
||||
exports: [
|
||||
|
||||
]
|
||||
})
|
||||
export class ConsultantsModule { }
|
||||
@ -16,13 +16,13 @@ th.mat-header-cell, td.mat-cell, td.mat-footer-cell {
|
||||
}
|
||||
::ng-deep .mat-drawer-content {
|
||||
overflow: hidden!important;
|
||||
background-color: #ffff;
|
||||
}
|
||||
::ng-deep .body-container {
|
||||
overflow-x: hidden;
|
||||
overflow-y: hidden;
|
||||
background-color: #ffff;
|
||||
// background-color: #ffff;
|
||||
}
|
||||
// ::ng-deep .body-container {
|
||||
// overflow-x: hidden;
|
||||
// overflow-y: hidden;
|
||||
// background-color: #ffff;
|
||||
// }
|
||||
::ng-deep .mat-expansion-panel:not([class*='mat-elevation-z']) {
|
||||
box-shadow: none!important;
|
||||
}
|
||||
@ -55,9 +55,9 @@ img {
|
||||
.delete:hover {
|
||||
color:#ff0000;
|
||||
}
|
||||
::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
|
||||
width: 180%;
|
||||
}
|
||||
// ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
|
||||
// width: 180%;
|
||||
// }
|
||||
|
||||
::ng-deep .mat-content {
|
||||
display: block!important;
|
||||
|
||||
@ -1,34 +0,0 @@
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { environment } from 'environments/environment';
|
||||
import { Observable } from 'rxjs';
|
||||
import { catchError } from 'rxjs/operators';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class ApiServiceService {
|
||||
|
||||
private apiUrl = environment.apiEndpoint;
|
||||
constructor(private _http: HttpClient) { }
|
||||
|
||||
getServicesListDetails(): Observable<any> {
|
||||
console.log('IN')
|
||||
return this._http.get<any[]>(this.apiUrl + "getServicesDetails ")
|
||||
// .pipe(
|
||||
// catchError(this.handleError('role', []))
|
||||
// )
|
||||
}
|
||||
|
||||
addFormDetails(addParams): Observable<any> {
|
||||
return this._http.post(this.apiUrl + 'CreateService', addParams)
|
||||
// .pipe(
|
||||
// catchError(this.handleError('role', []))
|
||||
// )
|
||||
}
|
||||
|
||||
|
||||
handleError(arg0: string, arg1: undefined[]): (err: any, caught: Observable<any>) => import("rxjs").ObservableInput<any> {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import { ServiceListComponent } from './service-list/service-list.component';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: ServiceListComponent
|
||||
},
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forChild(routes)],
|
||||
exports: [RouterModule]
|
||||
})
|
||||
export class ServiceListRoutingModule { }
|
||||
@ -1,22 +0,0 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
|
||||
import { ServiceListRoutingModule } from './service-list-routing.module';
|
||||
import { ServiceListComponent } from './service-list/service-list.component';
|
||||
import { DemoMaterialModule } from 'app/shared/demo.module';
|
||||
import { DialogBoxComponent } from './dialog-box/dialog-box.component';
|
||||
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
ServiceListComponent,
|
||||
DialogBoxComponent
|
||||
],
|
||||
imports: [
|
||||
DemoMaterialModule,
|
||||
CommonModule,
|
||||
ServiceListRoutingModule,
|
||||
],
|
||||
|
||||
})
|
||||
export class ServiceListModule { }
|
||||
@ -1,26 +0,0 @@
|
||||
<button mat-button (click)="openDialog('Add',{})" class="buttons">Add Services</button><br>
|
||||
<div fxLayout="row wrap" >
|
||||
<div fxFlex.xs="100" fxFlex.sm="50" fxFlex.md="50" class="m-gap p-gap flx" *ngFor="let serviceListDetails of servicesList">
|
||||
<div class="Specialties-list-card">
|
||||
<mat-card class="mb-2 example-card d-flex Specialties-spContent">
|
||||
<div class="consultant-card-cover">
|
||||
<div>
|
||||
<div class="text-center consultant-thumb">
|
||||
<img class="img-responsive img-circle" src="https://prodaphstorage.blob.core.windows.net/specialties/bdf0cf0d-754e-4254-aaf7-fdc7aedd7c35.jpg" alt="Online Doctor Consultation - Allergist and Clinical Immunologist" width="120" height="120" alt="user list image">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<mat-card-title-group>
|
||||
<mat-card-title class="service-info mb">{{serviceListDetails.servicesName}}</mat-card-title>
|
||||
<mat-card-title class="info service-list">{{serviceListDetails.info}}</mat-card-title>
|
||||
<a (click)="openDialog('Update',serviceListDetails)" class="Specialties-rightUpdate"><span class="material-icons edit-color">edit</span></a>
|
||||
<a (click)="confirmBox('Delete',serviceListDetails)" class="Specialties-rightArrow"><span class="material-icons edit-color delete">delete</span></a>
|
||||
<!-- <span class="Specialties-rightArrow"><img src="https://newassets.apollo247.com/images/ic_arrow_right.svg" alt="Arrow Right - Online Doctor Consultation"></span> -->
|
||||
<mat-card-subtitle class="service-Specialties">{{serviceListDetails.specialties}}</mat-card-subtitle>
|
||||
|
||||
</mat-card-title-group>
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -5,7 +5,14 @@
|
||||
<ng-scrollbar class="scrollHV">
|
||||
<div mat-dialog-content class="my-table">
|
||||
<form [formGroup]="form" (ngSubmit)="submit()">
|
||||
<mat-form-field appearance="outline" class="mat-pane">
|
||||
<mat-form-field appearance="outline" *ngIf="action != 'Delete'; else elseTemplate" class="mat-pane">
|
||||
<mat-label>Business</mat-label>
|
||||
<input placeholder="Name" matInput formControlName="businessselect" readonly>
|
||||
<mat-error *ngIf="myError('businessselect', 'required')">Username is required</mat-error>
|
||||
<mat-error *ngIf="myError('businessselect', 'maxlength')">Limit exceed</mat-error>
|
||||
</mat-form-field>
|
||||
<!-- <mat-form-field appearance="outline" class="mat-pane">
|
||||
<mat-label>Business</mat-label>
|
||||
<mat-select placeholder="Select Business" formControlName="businessselect" required>
|
||||
<mat-option>--</mat-option>
|
||||
<mat-option *ngFor="let business of businessList" [value]="business.busId">
|
||||
@ -13,22 +20,28 @@
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="myError('businessselect', 'required')">role is required</mat-error>
|
||||
<!-- <mat-error *ngIf="businessselect.hasError('required')">Please Business</mat-error>
|
||||
<mat-error *ngIf="businessselect.hasError('invalidValue')">Please choose any other</mat-error> -->
|
||||
</mat-form-field>
|
||||
<mat-form-field appearance="outline" *ngIf="action != 'Delete'; else elseTemplate" class="mat-pane" [disabled]="true">
|
||||
<input placeholder="Role" matInput formControlName="role">
|
||||
<mat-error *ngIf="myError('role', 'required')">role is required</mat-error>
|
||||
<mat-error *ngIf="myError('role', 'maxlength')">Limit exceed</mat-error>
|
||||
|
||||
</mat-form-field> -->
|
||||
<mat-form-field appearance="outline" *ngIf="action != 'Delete'; else elseTemplate" class="mat-pane" [readonly]="true">
|
||||
<mat-label>Role</mat-label>
|
||||
<mat-select placeholder="Select Role" formControlName="businessselect" required>
|
||||
<mat-option>--</mat-option>
|
||||
<mat-option *ngFor="let roleNmae of role" [value]="roleNmae.name">
|
||||
{{roleNmae.name}}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="myError('businessselect', 'required')">role is required</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field appearance="outline" *ngIf="action != 'Delete'; else elseTemplate" class="mat-pane">
|
||||
<mat-label>Name</mat-label>
|
||||
<input placeholder="Name" matInput formControlName="userName">
|
||||
<mat-error *ngIf="myError('userName', 'required')">Username is required</mat-error>
|
||||
<mat-error *ngIf="myError('userName', 'maxlength')">Limit exceed</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field appearance="outline" *ngIf="action != 'Delete'; else elseTemplate" class="mat-pane">
|
||||
<input placeholder=" Email" matInput [(ngModel)]="local_data.email" formControlName="email">
|
||||
<mat-label>Email</mat-label>
|
||||
<input placeholder="Email" matInput [(ngModel)]="local_data.email" formControlName="email">
|
||||
<mat-error *ngIf="!form.get('email')?.errors?.required && (form.get('email')?.errors?.pattern)">
|
||||
Please enter a valid email address
|
||||
</mat-error>
|
||||
@ -36,12 +49,14 @@
|
||||
Email is required
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field>
|
||||
<mat-form-field appearance="outline" *ngIf="action != 'Delete'; else elseTemplate" class="mat-pane">
|
||||
<mat-label>Phone No</mat-label>
|
||||
<input matInput type="text" placeholder="Enter Phone No" formControlName="contactNo" id="contactNo">
|
||||
<mat-error *ngIf="myError('contactNo', 'required')">Contact No is required</mat-error>
|
||||
<mat-error *ngIf="myError('contactNo', 'maxlength')">Limit exceed</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field appearance="outline" *ngIf="action != 'Delete'; else elseTemplate" class="mat-pane">
|
||||
<mat-label>Password</mat-label>
|
||||
<input placeholder="Password" matInput formControlName="password">
|
||||
<mat-error *ngIf="myError('password', 'required')">Password is required</mat-error>
|
||||
<mat-error *ngIf="myError('password', 'maxlength')">Limit exceed</mat-error>
|
||||
|
||||
@ -21,6 +21,7 @@ export class UserDialogBoxComponent implements OnInit {
|
||||
local_data:any;
|
||||
url: string | ArrayBuffer;
|
||||
businessList: any;
|
||||
public role = [{'name':'BADMIN'},{'name':'CONSULT'},{'name':'FRONTDESK'}]
|
||||
constructor(private router: Router,private formBuilder: FormBuilder,
|
||||
public dialogRef: MatDialogRef<UserDialogBoxComponent>,
|
||||
@Optional() @Inject(MAT_DIALOG_DATA) public data: UsersData,public _bus:BusinessService) {
|
||||
@ -36,7 +37,10 @@ export class UserDialogBoxComponent implements OnInit {
|
||||
if (res.status == 200) {
|
||||
let businessFilter = res['data'].filter(val => val.busName)
|
||||
this.businessList = businessFilter;
|
||||
console.log(this.businessList)
|
||||
let data = localStorage.getItem('busName')
|
||||
this.form.controls['businessselect'].setValue(data)
|
||||
console.log(this.businessList)
|
||||
console.log(this.form['value'].businessselect)
|
||||
}
|
||||
}
|
||||
// , error => {this.errorMessage = <any> error});
|
||||
@ -71,7 +75,7 @@ export class UserDialogBoxComponent implements OnInit {
|
||||
let userrole = localStorage.getItem('user_role')
|
||||
this.form = new FormGroup({
|
||||
businessselect: new FormControl('',[Validators.required]),
|
||||
role: new FormControl('BADMIN', [Validators.required, Validators.maxLength(20)]),
|
||||
role: new FormControl('', [Validators.required, Validators.maxLength(20)]),
|
||||
userName: new FormControl('', [Validators.required, Validators.maxLength(20)]),
|
||||
contactNo: new FormControl('', [Validators.required, Validators.maxLength(20)]),
|
||||
// lastName: new FormControl('', [Validators.required, Validators.maxLength(20)]),
|
||||
|
||||
@ -47,12 +47,12 @@
|
||||
<td mat-cell *matCellDef="let element" class="element-spc"> {{element.password}} </td>
|
||||
</ng-container>
|
||||
|
||||
<!-- <ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef class="font-color"> Username </th>
|
||||
<td mat-cell *matCellDef="let element" class="element-spc"> {{element.Username}} </td>
|
||||
</ng-container> -->
|
||||
<ng-container matColumnDef="mobile_no">
|
||||
<th mat-header-cell *matHeaderCellDef class="font-color"> Mobile no </th>
|
||||
<td mat-cell *matCellDef="let element" class="element-spc"> {{element.contactNo}} </td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="FirstName">
|
||||
<!-- <ng-container matColumnDef="FirstName">
|
||||
<th mat-header-cell *matHeaderCellDef class="font-color"> First Name </th>
|
||||
<td mat-cell *matCellDef="let element" class="element-spc"> {{element.firstName}} </td>
|
||||
</ng-container>
|
||||
@ -60,7 +60,7 @@
|
||||
<ng-container matColumnDef="LastName">
|
||||
<th mat-header-cell *matHeaderCellDef class="font-color"> Last Name </th>
|
||||
<td mat-cell *matCellDef="let element" class="element-spc"> {{element.lastName}} </td>
|
||||
</ng-container>
|
||||
</ng-container> -->
|
||||
|
||||
<ng-container matColumnDef="email">
|
||||
<th mat-header-cell *matHeaderCellDef class="font-color"> Email </th>
|
||||
|
||||
@ -18,11 +18,11 @@ th.mat-header-cell, td.mat-cell, td.mat-footer-cell {
|
||||
overflow: hidden!important;
|
||||
background-color: #ffff;
|
||||
}
|
||||
::ng-deep .body-container {
|
||||
overflow-x: hidden;
|
||||
overflow-y: hidden;
|
||||
background-color: #ffff;
|
||||
}
|
||||
// ::ng-deep .body-container {
|
||||
// overflow-x: hidden;
|
||||
// overflow-y: hidden;
|
||||
// background-color: #ffff;
|
||||
// }
|
||||
::ng-deep .mat-expansion-panel:not([class*='mat-elevation-z']) {
|
||||
box-shadow: none!important;
|
||||
}
|
||||
@ -55,9 +55,9 @@ img {
|
||||
.delete:hover {
|
||||
color:#ff0000;
|
||||
}
|
||||
::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
|
||||
width: 180%;
|
||||
}
|
||||
// ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
|
||||
// width: 180%;
|
||||
// }
|
||||
|
||||
::ng-deep .mat-content {
|
||||
display: block!important;
|
||||
|
||||
@ -41,16 +41,21 @@ const ELEMENT_DATA: UsersData[] = [
|
||||
})
|
||||
export class UserListComponent implements OnInit {
|
||||
push: any;
|
||||
displayedColumns: string[] = ['id', 'role', 'Username', 'Password', 'FirstName', 'LastName', 'email', 'action'];
|
||||
displayedColumns: string[] = ['id', 'role', 'Username', 'Password', 'mobile_no', 'email', 'action'];
|
||||
dataSource: any;
|
||||
addFormData: any;
|
||||
public usersList:any = new MatTableDataSource();
|
||||
@ViewChild(MatTable,{static:true}) table: MatTable<any>;
|
||||
@ViewChild(MatPaginator) paginator: MatPaginator;
|
||||
|
||||
|
||||
|
||||
constructor(public dialog: MatDialog, public _use:UserService) { }
|
||||
constructor(public dialog: MatDialog, public _use:UserService) {
|
||||
let open_go_admin = localStorage.getItem('go_admin')
|
||||
if(open_go_admin == '0'){
|
||||
this.openDialog('Add',{})
|
||||
localStorage.setItem('go_admin','1')
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
// this.dataSource = new MatTableDataSource(ELEMENT_DATA)
|
||||
|
||||
@ -0,0 +1,71 @@
|
||||
<div fxLayout="row wrap" style="display: flex !important;">
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap">
|
||||
<h3 class="page-h">consultant List</h3>
|
||||
</div>
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap" fxLayoutAlign="end center">
|
||||
<mat-form-field appearance="fill">
|
||||
<mat-label>Search consultant</mat-label>
|
||||
<input type="text" [(ngModel)]="filterdata" matInput placeholder="Search Service">
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
<ng-scrollbar class="scrollHV">
|
||||
<div fxLayout="row wrap mt-2 mb-2" class="flexRow">
|
||||
<div fxFlex.xs="100" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="33.33" fxFlex.xl="33.33" class="m-gap p-gap flx" *ngFor="let businessDetails of businessList | searchFilter:filterdata : 'centers'">
|
||||
<div class="consultant-list-card" (click)="goToService(businessDetails.busId,'1')">
|
||||
<div class="consultant-content">
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="30" fxFlex.sm="30" fxFlex.md="30" fxFlex.lg="30" fxFlex.xl="30" class="m-gap p-gap">
|
||||
<div class="pad-wrap d-flex">
|
||||
<div class="consultant-card-cover">
|
||||
<div class="text-center consultant-thumb">
|
||||
<img class="img-responsive img-circle" src="assets/images/face6.jpg" width="120" height="120" alt="user list image">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div fxFlex.xs="70" fxFlex.sm="70" fxFlex.md="70" fxFlex.lg="70" fxFlex.xl="70" class="m-gap p-gap">
|
||||
<h5 class="mb-1">{{businessDetails.busName}}</h5>
|
||||
<span class="d-flex">
|
||||
<mat-icon>mail</mat-icon>
|
||||
<span class="consultant-language">{{businessDetails.email}}</span>
|
||||
</span>
|
||||
<span class="d-flex">
|
||||
<mat-icon>phone</mat-icon>
|
||||
<span class="consultant-language">{{businessDetails.contactNo}}</span>
|
||||
</span>
|
||||
<span class="d-flex">
|
||||
<mat-icon>location_on</mat-icon>
|
||||
<span class="consultant-language">{{businessDetails.address}} {{businessDetails.state}} {{businessDetails.city}}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div fxLayout="row wrap">
|
||||
<div fxFlex.xs="30" fxFlex.sm="30" fxFlex.md="30" fxFlex.lg="30" fxFlex.xl="30" class="m-gap p-gap">
|
||||
<span class="d-flex mb">
|
||||
<mat-icon class="mt-1">transcribe</mat-icon>
|
||||
<span class="mt-1 pl-1 consultant-language">{{consultant.language}}</span>
|
||||
</span>
|
||||
<span class="d-flex mb">
|
||||
<mat-icon>location_on</mat-icon>
|
||||
<span class="consultant-language pl-1">{{consultant.city}}</span>
|
||||
</span>
|
||||
<span class="d-flex mb">
|
||||
<mat-icon>access_time</mat-icon>
|
||||
<span class="consultant-language pl-1">{{consultant.time}}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div> -->
|
||||
<!-- <div class="align-self-center">
|
||||
|
||||
<button type="button" (click)="openDialog()" class="UserActions-editButton edit-button EdgeButton EdgeButton--tertiary btn-red" data-scribe-element="profile_edit_button">
|
||||
<span class="material-icons"> bookmark_add </span><span class="button-text">Book Appoinment</span>
|
||||
</button>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</ng-scrollbar>
|
||||
@ -0,0 +1,120 @@
|
||||
//colors
|
||||
$white: #fff;
|
||||
$black_10: rgba(0, 0, 0, 0.1);
|
||||
$black_30: rgba(0, 0, 0, 0.3);
|
||||
// $color_red_orange_approx: #207b68f2;
|
||||
$color_red_orange_approx: #4caf50;
|
||||
$black_60: rgba(0, 0, 0, 0.6);
|
||||
|
||||
.scrollHV {
|
||||
height: calc(100vh - 105px);
|
||||
}
|
||||
::ng-deep .mat-form-field-appearance-fill .mat-form-field-flex {
|
||||
background-color: #fff0 !important;
|
||||
}
|
||||
.flexRow{
|
||||
display: flex !important;
|
||||
}
|
||||
.page-h{
|
||||
color: #217e69;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
.consultant-list-card {
|
||||
background: $white;
|
||||
box-shadow: 0 2px 6px $black_10;
|
||||
transition: all 0.3s ease-in-out 0s;
|
||||
&:hover {
|
||||
box-shadow: 0 0 21px $black_30;
|
||||
cursor: pointer;
|
||||
transform: scale(1.04);
|
||||
}
|
||||
}
|
||||
.consultant-span{
|
||||
font-size: 10px;
|
||||
color: #0087ba;
|
||||
font-weight: 600;
|
||||
}
|
||||
.consultant-year{
|
||||
font-size: 12px;
|
||||
color: #0087ba;
|
||||
font-weight: 700;
|
||||
}
|
||||
.consultant-qualification{
|
||||
font-size: 12px;
|
||||
color: #658F9B;
|
||||
font-weight: 600;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.consultant-amount{
|
||||
color: #658F9B;
|
||||
margin: 0;
|
||||
font-size: 12px !important;
|
||||
line-height: normal;
|
||||
}
|
||||
.consultant-pay{
|
||||
color: #0087BA;
|
||||
font-size: 15px;
|
||||
}
|
||||
.consultant-language{
|
||||
color: #658F9B;
|
||||
padding: 2px 0;
|
||||
font-size: 12px;
|
||||
word-break: break-word;
|
||||
line-height: 16px;
|
||||
// white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.consultant-img {
|
||||
top: 25px;
|
||||
left: 25px;
|
||||
height: 24px;
|
||||
display: flex;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
border-radius: 6px;
|
||||
justify-content: center;
|
||||
}
|
||||
// .mb{
|
||||
// margin-bottom: 0.20rem;
|
||||
// }
|
||||
// .consultant-card-cover {
|
||||
// padding: 0rem 6rem;
|
||||
// position: relative;
|
||||
// background-size: cover;
|
||||
// margin-left: -8rem;
|
||||
// }
|
||||
.consultant-thumb {
|
||||
position: absolute;
|
||||
margin-top: 20px;
|
||||
img {
|
||||
border: 5px solid $white;
|
||||
border-radius: 100%;
|
||||
height: 75px;
|
||||
width: 75px;
|
||||
}
|
||||
}
|
||||
.btn-red {
|
||||
background-color: $color_red_orange_approx;
|
||||
color: $white;
|
||||
border: 1px solid $color_red_orange_approx;
|
||||
float: right;
|
||||
}
|
||||
|
||||
|
||||
// .user-list-wrapper>.user-card-w {
|
||||
// padding: 1rem;
|
||||
// }
|
||||
// ::ng-deep .body-container {
|
||||
// // overflow-x: hidden;
|
||||
// overflow-y: auto!important;
|
||||
// background-color: #ffff;
|
||||
// }
|
||||
// .consultant-profile{
|
||||
// margin-left: -2rem;
|
||||
// }
|
||||
mat-icon{
|
||||
color: #979797;
|
||||
font-size: 16px;
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { CentersListComponent } from './centers-list.component';
|
||||
|
||||
describe('CentersListComponent', () => {
|
||||
let component: CentersListComponent;
|
||||
let fixture: ComponentFixture<CentersListComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
declarations: [ CentersListComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(CentersListComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,28 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { BusinessService } from 'app/appoinment/business/business-service/business.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-centers-list',
|
||||
templateUrl: './centers-list.component.html',
|
||||
styleUrls: ['./centers-list.component.scss']
|
||||
})
|
||||
export class CentersListComponent implements OnInit {
|
||||
public filterdata = null;
|
||||
businessList: any;
|
||||
constructor(public _bus:BusinessService) { }
|
||||
|
||||
ngOnInit(): void {
|
||||
this.getServicesList()
|
||||
}
|
||||
|
||||
getServicesList() {
|
||||
//this._pd.getTabStatusPdDetails(this.tabStatus)
|
||||
this._bus.getBusinessListDetails().subscribe(res => {
|
||||
if (res.status == 200) {
|
||||
this.businessList = res.data;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -36,9 +36,9 @@ h6{
|
||||
::ng-deep .mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar {
|
||||
background-color: #658F9B!important;
|
||||
}
|
||||
::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
|
||||
width: 250%;
|
||||
}
|
||||
// ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
|
||||
// width: 250%;
|
||||
// }
|
||||
.success {
|
||||
background: #fff;
|
||||
box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
|
||||
@ -1,6 +1,18 @@
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="m-gap p-gap">
|
||||
<h3 class="page-h">consultant List</h3>
|
||||
</div>
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="m-gap p-gap" fxLayoutAlign="end center">
|
||||
<mat-form-field appearance="fill">
|
||||
<mat-label>Search consultant</mat-label>
|
||||
<input type="text" [(ngModel)]="filterdata" matInput placeholder="Search Service">
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
<ng-scrollbar class="scrollHV">
|
||||
<div fxLayout="row wrap mt-2 mb-2">
|
||||
<div fxFlex.xs="100" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="33.33" fxFlex.xl="33.33" class="m-gap p-gap" *ngFor="let consultant of consultants">
|
||||
<div fxFlex.xs="100" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="33.33" fxFlex.xl="33.33" class="m-gap p-gap" *ngFor="let consultant of consultants | searchFilter:filterdata : 'consultants'">
|
||||
<div class="consultant-list-card">
|
||||
<div class="consultant-content">
|
||||
<div class="pad-wrap d-flex">
|
||||
@ -39,7 +51,7 @@
|
||||
<!-- <button type="button" class="UserActions-editButton edit-button EdgeButton EdgeButton--tertiary" data-scribe-element="profile_edit_button">
|
||||
<span class="button-text">Accept</span>
|
||||
</button> -->
|
||||
<button type="button" (click)="openDialog()" class="UserActions-editButton edit-button EdgeButton EdgeButton--tertiary btn-red" data-scribe-element="profile_edit_button">
|
||||
<button type="button" (click)="goToSlotBooking()" class="UserActions-editButton edit-button EdgeButton EdgeButton--tertiary btn-red" data-scribe-element="profile_edit_button">
|
||||
<span class="material-icons"> bookmark_add </span><span class="button-text">Book Appoinment</span>
|
||||
</button>
|
||||
</div>
|
||||
@ -9,6 +9,10 @@ $black_60: rgba(0, 0, 0, 0.6);
|
||||
padding: 0rem 0.5rem 1rem;
|
||||
padding-bottom: 4rem;
|
||||
}
|
||||
.page-h{
|
||||
color: #217e69;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
.scrollHV {
|
||||
height: calc(100vh - 105px);
|
||||
}
|
||||
@ -98,11 +102,11 @@ $black_60: rgba(0, 0, 0, 0.6);
|
||||
// .user-list-wrapper>.user-card-w {
|
||||
// padding: 1rem;
|
||||
// }
|
||||
::ng-deep .body-container {
|
||||
// overflow-x: hidden;
|
||||
overflow-y: auto!important;
|
||||
background-color: #ffff;
|
||||
}
|
||||
// ::ng-deep .body-container {
|
||||
// // overflow-x: hidden;
|
||||
// overflow-y: auto!important;
|
||||
// background-color: #ffff;
|
||||
// }
|
||||
// .consultant-profile{
|
||||
// margin-left: -2rem;
|
||||
// }
|
||||
@ -1,5 +1,6 @@
|
||||
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { Router } from '@angular/router';
|
||||
import { ConsultantsDetailsComponent } from '../consultants-details/consultants-details.component';
|
||||
|
||||
@Component({
|
||||
@ -10,8 +11,8 @@ import { ConsultantsDetailsComponent } from '../consultants-details/consultants-
|
||||
export class ConsultantsListComponent implements OnInit {
|
||||
animal: string;
|
||||
name: string;
|
||||
|
||||
constructor(public dialog: MatDialog) {}
|
||||
public filterdata = null;
|
||||
constructor(private router:Router,public dialog: MatDialog) {}
|
||||
|
||||
openDialog(): void {
|
||||
const dialogRef = this.dialog.open(ConsultantsDetailsComponent, {
|
||||
@ -96,4 +97,7 @@ export class ConsultantsListComponent implements OnInit {
|
||||
img:'assets/images/stethoscope.png'
|
||||
}
|
||||
];
|
||||
goToSlotBooking(){
|
||||
this.router.navigate(['/slot-booking'])
|
||||
}
|
||||
}
|
||||
53
ng-seed/src/app/end-user/end-user-routing.module.ts
Normal file
53
ng-seed/src/app/end-user/end-user-routing.module.ts
Normal file
@ -0,0 +1,53 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import { CentersListComponent } from './business-centers/centers-list.component';
|
||||
import { ConsultantsListComponent } from './consultants/consultants-list.component';
|
||||
import { SearchCategoryComponent } from './search-category/search-category.component';
|
||||
import { ServiceListComponent } from './service-list-details/service-list.component';
|
||||
import { SlotBookingDetailsComponent } from './slot-booking/slot-booking-details.component';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: 'slot-booking',
|
||||
component: SlotBookingDetailsComponent
|
||||
},
|
||||
|
||||
{
|
||||
path: 'search-category',
|
||||
component: SearchCategoryComponent
|
||||
},
|
||||
{
|
||||
path: 'business-centers',
|
||||
component: CentersListComponent
|
||||
},
|
||||
{
|
||||
path: 'consultant-setting',
|
||||
component: ConsultantsListComponent
|
||||
},
|
||||
{
|
||||
path: 'services',
|
||||
component: ServiceListComponent
|
||||
},
|
||||
// {
|
||||
// path: 'calendar-list',
|
||||
// component: CalendarListComponent
|
||||
// },
|
||||
// {
|
||||
// path: 'calendar-list',
|
||||
// component: CalendarListComponent
|
||||
// },
|
||||
// {
|
||||
// path: 'services-list',
|
||||
// component: ServiceListComponent
|
||||
// },
|
||||
// {
|
||||
// path: 'consultants-list',
|
||||
// component: ConsultantsListComponent
|
||||
// }
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forChild(routes)],
|
||||
exports: [RouterModule]
|
||||
})
|
||||
export class EndUserRoutingModule { }
|
||||
35
ng-seed/src/app/end-user/end-user.module.ts
Normal file
35
ng-seed/src/app/end-user/end-user.module.ts
Normal file
@ -0,0 +1,35 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
|
||||
import { EndUserRoutingModule } from './end-user-routing.module';
|
||||
import { DemoMaterialModule } from 'app/shared/demo.module';
|
||||
import { NgScrollbarModule } from 'ngx-scrollbar';
|
||||
import { SharedModule } from 'app/shared/shared.module';
|
||||
import { SlotBookingDetailsComponent } from './slot-booking/slot-booking-details.component';
|
||||
import { ServiceListComponent } from './service-list-details/service-list.component';
|
||||
import { SearchCategoryComponent } from './search-category/search-category.component';
|
||||
import { CentersListComponent } from './business-centers/centers-list.component';
|
||||
import { ConsultantsListComponent } from './consultants/consultants-list.component';
|
||||
import { DialogBoxComponent } from './service-list-details/dialog-box/dialog-box.component';
|
||||
import { ConsultantsDetailsComponent } from './consultants/consultants-details/consultants-details.component';
|
||||
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
SlotBookingDetailsComponent,
|
||||
ServiceListComponent,
|
||||
SearchCategoryComponent,
|
||||
ConsultantsListComponent,
|
||||
CentersListComponent,
|
||||
DialogBoxComponent,
|
||||
ConsultantsDetailsComponent
|
||||
],
|
||||
imports: [
|
||||
CommonModule,
|
||||
EndUserRoutingModule,
|
||||
DemoMaterialModule,
|
||||
NgScrollbarModule,
|
||||
SharedModule
|
||||
]
|
||||
})
|
||||
export class EndUserModule { }
|
||||
@ -1,13 +1,13 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ApiServiceService } from './api-service.service';
|
||||
import { EndUserService } from './end-user.service';
|
||||
|
||||
describe('ApiServiceService', () => {
|
||||
let service: ApiServiceService;
|
||||
describe('EndUserService', () => {
|
||||
let service: EndUserService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
service = TestBed.inject(ApiServiceService);
|
||||
service = TestBed.inject(EndUserService);
|
||||
});
|
||||
|
||||
it('should be created', () => {
|
||||
9
ng-seed/src/app/end-user/end-user.service.ts
Normal file
9
ng-seed/src/app/end-user/end-user.service.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class EndUserService {
|
||||
|
||||
constructor() { }
|
||||
}
|
||||
@ -0,0 +1,220 @@
|
||||
<mat-card style="padding: 10px !important;">
|
||||
<div style="margin-top:1rem;" fxLayout="row wrap" fxLayoutAlign="center center">
|
||||
<mat-button-toggle-group name="alignment" class="mr-1 mb-1" [(ngModel)]="selectedValue">
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="33.33" fxFlex.lg="33.33" fxFlex.xl="33.33" class="p-gap" fxLayoutAlign="center center">
|
||||
<!-- <mat-form-field appearance="outline" class="mat-pane">
|
||||
<mat-label>Centers</mat-label>
|
||||
<input type="text" matInput placeholder="Search Service">
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field> -->
|
||||
<mat-button-toggle class="toggleSize" value="centers" (change)="onValChange($event.value)">Centers</mat-button-toggle>
|
||||
</div>
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="33.33" fxFlex.lg="33.33" fxFlex.xl="33.33" class="p-gap" fxLayoutAlign="center center">
|
||||
<!-- <mat-form-field appearance="outline" class="mat-pane">
|
||||
<mat-label>Service</mat-label>
|
||||
<input type="text" matInput placeholder="Search Service">
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field> -->
|
||||
<mat-button-toggle class="toggleSize" value="services" (change)="onValChange($event.value)">Services</mat-button-toggle>
|
||||
</div>
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="33.33" fxFlex.lg="33.33" fxFlex.xl="33.33" class="p-gap" fxLayoutAlign="center center">
|
||||
<!-- <mat-form-field appearance="outline" class="mat-pane">
|
||||
<mat-label>Consultant</mat-label>
|
||||
<input type="text" matInput placeholder="Search Service">
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field> -->
|
||||
<mat-button-toggle class="toggleSize" value="consultants" (change)="onValChange($event.value)">Pactioners</mat-button-toggle>
|
||||
</div>
|
||||
</mat-button-toggle-group>
|
||||
</div>
|
||||
</mat-card>
|
||||
|
||||
<div [ngSwitch]="eventData">
|
||||
<div *ngSwitchCase="'services'">
|
||||
<div class="serviceDesign mt-1">
|
||||
<ng-scrollbar class="scrollHV">
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap">
|
||||
<h3 class="page-h m-0">Service List</h3>
|
||||
</div>
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class=" p-gap" fxLayoutAlign="end center">
|
||||
<mat-form-field appearance="fill">
|
||||
<mat-label>Search Service</mat-label>
|
||||
<input type="text" [(ngModel)]="filterdata" matInput placeholder="Search Service">
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <button mat-button (click)="openDialog('Add',{})" class="buttons">Add Services</button><br> -->
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="50" fxFlex.lg="33.33" fxFlex.xl="33.33" class="m-gap p-gap flx" *ngFor="let serviceListDetails of servicesList | searchFilter:filterdata : 'service'">
|
||||
<div class="Specialties-list-card" (click)="goToService(serviceListDetails.serviceId,'2')">
|
||||
<mat-card class="example-card d-flex Specialties-spContent">
|
||||
<div class="consultant-card-cover">
|
||||
<div class="text-center consultant-thumb">
|
||||
<img class="img-responsive img-circle" src="https://prodaphstorage.blob.core.windows.net/specialties/bdf0cf0d-754e-4254-aaf7-fdc7aedd7c35.jpg" alt="Online Doctor Consultation - Allergist and Clinical Immunologist" width="120" height="120" alt="user list image">
|
||||
</div>
|
||||
</div>
|
||||
<mat-card-title-group>
|
||||
<mat-card-title class="service-info mb">{{serviceListDetails.servicesName}}</mat-card-title>
|
||||
<!-- <mat-card-title class="info service-list">{{serviceListDetails.info}}</mat-card-title> -->
|
||||
<!-- <a (click)="openDialog('Update',serviceListDetails)" class="Specialties-rightUpdate"><span class="material-icons edit-color">edit</span></a> -->
|
||||
<!-- <a (click)="confirmBox('Delete',serviceListDetails)" class="Specialties-rightArrow"><span class="material-icons edit-color delete">delete</span></a> -->
|
||||
<!-- <span class="Specialties-rightArrow"><img src="https://newassets.apollo247.com/images/ic_arrow_right.svg" alt="Arrow Right - Online Doctor Consultation"></span> -->
|
||||
<!-- <mat-card-subtitle class="service-Specialties">{{serviceListDetails.specialties}}</mat-card-subtitle> -->
|
||||
|
||||
</mat-card-title-group>
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ng-scrollbar>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngSwitchCase="'centers'">
|
||||
<div class="centersDesign mt-2">
|
||||
<div fxLayout="row wrap" style="display: flex !important;">
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap">
|
||||
<h3 class="page-h">consultant List</h3>
|
||||
</div>
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap" fxLayoutAlign="end center">
|
||||
<mat-form-field appearance="fill">
|
||||
<mat-label>Search consultant</mat-label>
|
||||
<input type="text" [(ngModel)]="filterdata" matInput placeholder="Search Service">
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
<ng-scrollbar class="scrollHV">
|
||||
<div fxLayout="row wrap mt-2 mb-2" class="flexRow">
|
||||
<div fxFlex.xs="100" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="33.33" fxFlex.xl="33.33" class="m-gap p-gap flx" *ngFor="let businessDetails of businessList | searchFilter:filterdata : 'centers'">
|
||||
<div class="consultant-list-card" (click)="goToService(businessDetails.busId,'1')">
|
||||
<div class="consultant-content">
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="30" fxFlex.sm="30" fxFlex.md="30" fxFlex.lg="30" fxFlex.xl="30" class="m-gap p-gap">
|
||||
<div class="pad-wrap d-flex">
|
||||
<div class="consultant-card-cover">
|
||||
<div class="text-center consultant-thumb">
|
||||
<img class="img-responsive img-circle" src="assets/images/face6.jpg" width="120" height="120" alt="user list image">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div fxFlex.xs="70" fxFlex.sm="70" fxFlex.md="70" fxFlex.lg="70" fxFlex.xl="70" class="m-gap p-gap">
|
||||
<h5 class="mb-1">{{businessDetails.busName}}</h5>
|
||||
<span class="d-flex">
|
||||
<mat-icon>mail</mat-icon>
|
||||
<span class="consultant-language">{{businessDetails.email}}</span>
|
||||
</span>
|
||||
<span class="d-flex">
|
||||
<mat-icon>phone</mat-icon>
|
||||
<span class="consultant-language">{{businessDetails.contactNo}}</span>
|
||||
</span>
|
||||
<span class="d-flex">
|
||||
<mat-icon>location_on</mat-icon>
|
||||
<span class="consultant-language">{{businessDetails.address}} {{businessDetails.state}} {{businessDetails.city}}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div fxLayout="row wrap">
|
||||
<div fxFlex.xs="30" fxFlex.sm="30" fxFlex.md="30" fxFlex.lg="30" fxFlex.xl="30" class="m-gap p-gap">
|
||||
<span class="d-flex mb">
|
||||
<mat-icon class="mt-1">transcribe</mat-icon>
|
||||
<span class="mt-1 pl-1 consultant-language">{{consultant.language}}</span>
|
||||
</span>
|
||||
<span class="d-flex mb">
|
||||
<mat-icon>location_on</mat-icon>
|
||||
<span class="consultant-language pl-1">{{consultant.city}}</span>
|
||||
</span>
|
||||
<span class="d-flex mb">
|
||||
<mat-icon>access_time</mat-icon>
|
||||
<span class="consultant-language pl-1">{{consultant.time}}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div> -->
|
||||
<!-- <div class="align-self-center">
|
||||
|
||||
<button type="button" (click)="openDialog()" class="UserActions-editButton edit-button EdgeButton EdgeButton--tertiary btn-red" data-scribe-element="profile_edit_button">
|
||||
<span class="material-icons"> bookmark_add </span><span class="button-text">Book Appoinment</span>
|
||||
</button>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</ng-scrollbar>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngSwitchCase="'consultants'">
|
||||
<div class="consultantDesign mt-2">
|
||||
<div fxLayout="row wrap " style="display: flex !important;">
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap">
|
||||
<h3 class="page-h">consultant List</h3>
|
||||
</div>
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap" fxLayoutAlign="end center">
|
||||
<mat-form-field appearance="fill">
|
||||
<mat-label>Search consultant</mat-label>
|
||||
<input type="text" [(ngModel)]="filterdata" matInput placeholder="Search Service">
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
<ng-scrollbar class="scrollHV">
|
||||
<div fxLayout="row wrap mt-2 mb-2">
|
||||
<div fxFlex.xs="100" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="33.33" fxFlex.xl="33.33" class="m-gap p-gap flx" *ngFor="let userDetails of usersList | searchFilter:filterdata : 'consultants'">
|
||||
<div class="consultant-list-card" (click)="goToService(userDetails.id,'3')">
|
||||
<div class="consultant-content">
|
||||
<div class="pad-wrap d-flex">
|
||||
<div class="consultant-img">
|
||||
<img src="https://newassets.apollo247.com/specialties/ic_oncology.png " alt="Online Doctor Consultation - Medical Oncology" style="width: 40px;">
|
||||
</div>
|
||||
<div class="consultant-card-cover">
|
||||
<div>
|
||||
<div class="text-center consultant-thumb">
|
||||
<img class="img-responsive img-circle" src="{{userDetails.image}}" width="120" height="120" alt="user list image">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="consultant-profile">
|
||||
<h5 class="text-primary">{{userDetails.name}}</h5>
|
||||
<span class="silk-block consultant-span">{{userDetails.specialist}}</span><br>
|
||||
<span class="silk-block mb-1 consultant-year">{{userDetails.year}}</span><br>
|
||||
<span class="silk-block mb-1 consultant-qualification">{{userDetails.qualification}}</span><br>
|
||||
<span class="silk-block mb-1 consultant-amount">Starts at <span class="consultant-pay">₹ {{userDetails.payment}}</span> </span><br>
|
||||
</div>
|
||||
</div>
|
||||
<span class="d-flex mb">
|
||||
<mat-icon class="mt-1">transcribe</mat-icon>
|
||||
<span class="mt-1 pl-1 consultant-language">{{userDetails.language}}</span>
|
||||
</span>
|
||||
<span class="d-flex mb">
|
||||
<mat-icon>location_on</mat-icon>
|
||||
<span class="consultant-language pl-1">{{userDetails.city}}</span>
|
||||
</span>
|
||||
<span class="d-flex mb">
|
||||
<mat-icon>access_time</mat-icon>
|
||||
<span class="consultant-language pl-1">{{userDetails.time}}</span>
|
||||
</span>
|
||||
<div class="align-self-center">
|
||||
<!-- <button type="button" class="UserActions-editButton edit-button EdgeButton EdgeButton--tertiary" data-scribe-element="profile_edit_button">
|
||||
<span class="button-text">Accept</span>
|
||||
</button> -->
|
||||
<button type="button" (click)="openOTP()" class="UserActions-editButton edit-button EdgeButton EdgeButton--tertiary btn-red" data-scribe-element="profile_edit_button">
|
||||
<span class="material-icons"> bookmark_add </span><span class="button-text">Book Appoinment</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</ng-scrollbar>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <app-centers-list [card]="category"></app-centers-list> -->
|
||||
<!-- <app-service-list *ngSwitchCase="'services'" [card]="category"></app-service-list> -->
|
||||
<!-- <app-consultants-list [card]="category"></app-consultants-list> -->
|
||||
@ -0,0 +1,364 @@
|
||||
$white: #fff;
|
||||
$black_10: rgba(0, 0, 0, 0.1);
|
||||
$black_30: rgba(0, 0, 0, 0.3);
|
||||
// $color_red_orange_approx: #207b68f2;
|
||||
$color_red_orange_approx: #4caf50;
|
||||
$black_60: rgba(0, 0, 0, 0.6);
|
||||
.toggleSize{
|
||||
width: 12rem;
|
||||
height: 4rem;
|
||||
border-radius: 5px !important;
|
||||
}
|
||||
.mat-button-toggle-appearance-standard {
|
||||
color: #fff !important;
|
||||
background: #15786abd !important;
|
||||
}
|
||||
.mat-button-toggle-checked {
|
||||
background-color: #74bc67 !important;
|
||||
}
|
||||
.mat-button-toggle-checked.mat-button-toggle-appearance-standard {
|
||||
color: #fff !important;
|
||||
}
|
||||
::ng-deep .mat-button-toggle-appearance-standard .mat-button-toggle-label-content {
|
||||
line-height: 63px !important;
|
||||
}
|
||||
.mat-button-toggle-group-appearance-standard {
|
||||
border: none !important;
|
||||
}
|
||||
.mat-card{
|
||||
border-radius: 10px !important;
|
||||
}
|
||||
.centersDesign{
|
||||
.scrollHV {
|
||||
height: calc(100vh - 380px);
|
||||
}
|
||||
.flexRow{
|
||||
display: flex !important;
|
||||
}
|
||||
.consultant-list-card {
|
||||
background: #fff;
|
||||
box-shadow: 0 2px 6px $black_10;
|
||||
transition: all 0.3s ease-in-out 0s;
|
||||
height: 100% !important;
|
||||
&:hover {
|
||||
box-shadow: 0 0 21px $black_30;
|
||||
cursor: pointer;
|
||||
transform: scale(1.04);
|
||||
}
|
||||
}
|
||||
.consultant-span{
|
||||
font-size: 10px;
|
||||
color: #0087ba;
|
||||
font-weight: 600;
|
||||
}
|
||||
.consultant-year{
|
||||
font-size: 12px;
|
||||
color: #0087ba;
|
||||
font-weight: 700;
|
||||
}
|
||||
.consultant-qualification{
|
||||
font-size: 12px;
|
||||
color: #658F9B;
|
||||
font-weight: 600;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.consultant-amount{
|
||||
color: #658F9B;
|
||||
margin: 0;
|
||||
font-size: 12px !important;
|
||||
line-height: normal;
|
||||
}
|
||||
.consultant-pay{
|
||||
color: #0087BA;
|
||||
font-size: 15px;
|
||||
}
|
||||
.consultant-language{
|
||||
color: #658F9B;
|
||||
padding: 2px 0;
|
||||
font-size: 12px;
|
||||
word-break: break-word;
|
||||
line-height: 16px;
|
||||
// white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.consultant-img {
|
||||
top: 25px;
|
||||
left: 25px;
|
||||
height: 24px;
|
||||
display: flex;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
border-radius: 6px;
|
||||
justify-content: center;
|
||||
}
|
||||
// .mb{
|
||||
// margin-bottom: 0.20rem;
|
||||
// }
|
||||
// .consultant-card-cover {
|
||||
// padding: 0rem 6rem;
|
||||
// position: relative;
|
||||
// background-size: cover;
|
||||
// margin-left: -8rem;
|
||||
// }
|
||||
.consultant-thumb {
|
||||
position: absolute;
|
||||
margin-top: 20px;
|
||||
img {
|
||||
border: 5px solid #fff;
|
||||
border-radius: 100%;
|
||||
height: 75px;
|
||||
width: 75px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// .user-list-wrapper>.user-card-w {
|
||||
// padding: 1rem;
|
||||
// }
|
||||
// ::ng-deep .body-container {
|
||||
// // overflow-x: hidden;
|
||||
// overflow-y: auto!important;
|
||||
// background-color: #ffff;
|
||||
// }
|
||||
// .consultant-profile{
|
||||
// margin-left: -2rem;
|
||||
// }
|
||||
mat-icon{
|
||||
color: #979797;
|
||||
font-size: 16px;
|
||||
}
|
||||
::ng-deep .mat-form-field-appearance-fill .mat-form-field-flex {
|
||||
background-color: #fff0 !important;
|
||||
}
|
||||
}
|
||||
.serviceDesign{
|
||||
.scrollHV {
|
||||
height: calc(100vh - 300px);
|
||||
}
|
||||
.Specialties-list-card {
|
||||
background: #fff;
|
||||
box-shadow: 0 2px 6px $black_10;
|
||||
transition: all 0.3s ease-in-out 0s;
|
||||
&:hover {
|
||||
box-shadow: 0 0 21px $black_30;
|
||||
cursor: pointer;
|
||||
transform: scale(1.04);
|
||||
}
|
||||
}
|
||||
.mat-card{
|
||||
margin: 0px !important;
|
||||
}
|
||||
.consultant-card-cover {
|
||||
// padding: 0rem 6rem;
|
||||
position: relative;
|
||||
background-size: cover;
|
||||
margin-left: 0.5rem;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
.page-h{
|
||||
color: #217e69;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
.consultant-thumb {
|
||||
// position: absolute;
|
||||
// margin-top: 20px;
|
||||
// margin-left: -45rem;
|
||||
img {
|
||||
border: 5px solid #fff;;
|
||||
border-radius: 100%;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
// margin-right: -8rem;
|
||||
}
|
||||
}
|
||||
.service-info{
|
||||
line-height: 1.5rem!important;
|
||||
}
|
||||
.info{
|
||||
font-size: 12px!important;
|
||||
font-weight: 500;
|
||||
color: rgba(2,71,91,.6);
|
||||
padding: 0 0 10px;
|
||||
max-height: 38px;
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
.service-Specialties{
|
||||
font-size: 10px;
|
||||
font-weight: 600;
|
||||
color: #02475b;
|
||||
padding: 10px 0 0;
|
||||
// border-top: 1px solid rgba(2,71,91,.3);
|
||||
}
|
||||
|
||||
.Specialties-rightArrow{
|
||||
top: 1rem;
|
||||
right: 0;
|
||||
position: absolute;
|
||||
padding-right: 0.5rem;
|
||||
}
|
||||
.flx{
|
||||
width: 47%;
|
||||
}
|
||||
.Specialties-spContent{
|
||||
width: 100%;
|
||||
// padding: 0 10px 0 0;
|
||||
position: relative;
|
||||
// min-height: 60px;
|
||||
height: 65px;
|
||||
}
|
||||
// .mb{
|
||||
// margin-bottom: 0.60rem;
|
||||
// }
|
||||
::ng-deep body .mat-card .mat-card-title {
|
||||
padding-left: 0rem!important;
|
||||
}
|
||||
::ng-deep body .mat-card .mat-card-subtitle {
|
||||
padding-left: 0rem!important;
|
||||
}
|
||||
.buttons{
|
||||
float: right;
|
||||
background-color: #4caf50;
|
||||
color: #ffff;
|
||||
}
|
||||
.edit-color{
|
||||
color: white;
|
||||
}
|
||||
.edit-color:hover {
|
||||
color: #4caf50;
|
||||
}
|
||||
.delete:hover {
|
||||
color:#ff0000;
|
||||
}
|
||||
.icon-lft{
|
||||
margin-left: 6rem;
|
||||
}
|
||||
.Specialties-rightUpdate{
|
||||
top: 1rem;
|
||||
right: 0;
|
||||
position: absolute;
|
||||
padding-right: 2.5rem;
|
||||
}
|
||||
::ng-deep .mat-form-field-appearance-fill .mat-form-field-flex {
|
||||
background-color: #fff0 !important;
|
||||
}
|
||||
}
|
||||
.consultantDesign{
|
||||
.consultant-content {
|
||||
padding: 0rem 0.5rem 1rem;
|
||||
padding-bottom: 4rem;
|
||||
}
|
||||
.page-h{
|
||||
color: #217e69;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
.scrollHV {
|
||||
height: calc(100vh - 390px);
|
||||
}
|
||||
.consultant-list-card {
|
||||
background: $white;
|
||||
box-shadow: 0 2px 6px $black_10;
|
||||
transition: all 0.3s ease-in-out 0s;
|
||||
&:hover {
|
||||
box-shadow: 0 0 21px $black_30;
|
||||
cursor: pointer;
|
||||
transform: scale(1.04);
|
||||
}
|
||||
}
|
||||
.consultant-span{
|
||||
font-size: 10px;
|
||||
color: #0087ba;
|
||||
font-weight: 600;
|
||||
}
|
||||
.consultant-year{
|
||||
font-size: 12px;
|
||||
color: #0087ba;
|
||||
font-weight: 700;
|
||||
}
|
||||
.consultant-qualification{
|
||||
font-size: 12px;
|
||||
color: #658F9B;
|
||||
font-weight: 600;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.consultant-amount{
|
||||
color: #658F9B;
|
||||
margin: 0;
|
||||
font-size: 12px !important;
|
||||
line-height: normal;
|
||||
}
|
||||
.consultant-pay{
|
||||
color: #0087BA;
|
||||
font-size: 15px;
|
||||
}
|
||||
.consultant-language{
|
||||
color: #658F9B;
|
||||
padding: 2px 0;
|
||||
font-size: 12px;
|
||||
word-break: break-word;
|
||||
line-height: 16px;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.consultant-img {
|
||||
top: 25px;
|
||||
left: 25px;
|
||||
height: 24px;
|
||||
display: flex;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
border-radius: 6px;
|
||||
justify-content: center;
|
||||
}
|
||||
// .mb{
|
||||
// margin-bottom: 0.20rem;
|
||||
// }
|
||||
.consultant-card-cover {
|
||||
padding: 0rem 6rem;
|
||||
position: relative;
|
||||
background-size: cover;
|
||||
margin-left: -8rem;
|
||||
}
|
||||
.consultant-thumb {
|
||||
position: absolute;
|
||||
margin-top: 20px;
|
||||
img {
|
||||
border: 5px solid $white;
|
||||
border-radius: 100%;
|
||||
height: 75px;
|
||||
width: 75px;
|
||||
}
|
||||
}
|
||||
.btn-red {
|
||||
background-color: $color_red_orange_approx;
|
||||
color: $white;
|
||||
border: 1px solid $color_red_orange_approx;
|
||||
float: right;
|
||||
}
|
||||
|
||||
// .user-list-wrapper>.user-card-w {
|
||||
// padding: 1rem;
|
||||
// }
|
||||
// ::ng-deep .body-container {
|
||||
// // overflow-x: hidden;
|
||||
// overflow-y: auto!important;
|
||||
// background-color: #ffff;
|
||||
// }
|
||||
// .consultant-profile{
|
||||
// margin-left: -2rem;
|
||||
// }
|
||||
mat-icon{
|
||||
color: #979797;
|
||||
font-size: 20px;
|
||||
}
|
||||
::ng-deep .mat-form-field-appearance-fill .mat-form-field-flex {
|
||||
background-color: #fff0 !important;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { SearchCategoryComponent } from './search-category.component';
|
||||
|
||||
describe('SearchCategoryComponent', () => {
|
||||
let component: SearchCategoryComponent;
|
||||
let fixture: ComponentFixture<SearchCategoryComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
declarations: [ SearchCategoryComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(SearchCategoryComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,150 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { Router } from '@angular/router';
|
||||
import { BusinessService } from 'app/appoinment/business/business-service/business.service';
|
||||
import { ApiServiceService } from 'app/appoinment/service-list-details/service-api-services/api-service.service';
|
||||
import { UserService } from 'app/appoinment/user/user-service/user.service';
|
||||
import { SessionService } from 'app/session-services/session.service';
|
||||
import { OtpComponent } from 'app/session/otp/otp.component';
|
||||
|
||||
@Component({
|
||||
selector: 'app-search-category',
|
||||
templateUrl: './search-category.component.html',
|
||||
styleUrls: ['./search-category.component.scss']
|
||||
})
|
||||
export class SearchCategoryComponent implements OnInit {
|
||||
selectedValue:any
|
||||
eventData: any;
|
||||
servicesList: any;
|
||||
public filterdata = null;
|
||||
businessList: any;
|
||||
usersList: any;
|
||||
public consultants = [{
|
||||
name: 'Dr. Suganya',
|
||||
specialist: 'ENT',
|
||||
year: '1 YRS EXP',
|
||||
qualification: 'MBBS, MS',
|
||||
payment: '800',
|
||||
language: 'TAMIL, ENGILSH',
|
||||
city: 'Apollo Hospital Chennai',
|
||||
image:'assets/images/face1.jpg',
|
||||
time: 'Available in 3 mins',
|
||||
img:'assets/images/stethoscope.png'
|
||||
|
||||
},{
|
||||
name: 'Dr. Indhu Mathi',
|
||||
specialist: 'ORTHOPAEDICS',
|
||||
year: '2 YRS EXP',
|
||||
qualification: 'MBBS, MS',
|
||||
payment: '800',
|
||||
language: 'TAMIL, ENGILSH',
|
||||
city: 'Apollo Hospital Chennai',
|
||||
image:'assets/images/face2.jpg',
|
||||
time: 'Available in 4 mins',
|
||||
img:'assets/images/stethoscope.png'
|
||||
},{
|
||||
name: 'Dr. Gaurav Kumar',
|
||||
specialist: 'BREAST SURGERY',
|
||||
year: '3 YRS EXP',
|
||||
qualification: 'MBBS, MS',
|
||||
payment: '800',
|
||||
language: 'TAMIL, ENGILSH',
|
||||
city: 'Apollo Hospital Chennai',
|
||||
image:'assets/images/face3.jpg',
|
||||
time: 'Available in 5 mins',
|
||||
img:'assets/images/stethoscope.png'
|
||||
},{
|
||||
name: 'Dr. Saloni Sinha',
|
||||
specialist: 'CARDIOLOGY',
|
||||
year: '4 YRS EXP',
|
||||
qualification: 'MBBS, MS',
|
||||
payment: '800',
|
||||
language: 'TAMIL, ENGILSH',
|
||||
city: 'Apollo Hospital Chennai',
|
||||
image:'assets/images/face4.jpg',
|
||||
time: 'Available in 6 mins',
|
||||
img:'assets/images/stethoscope.png'
|
||||
},{
|
||||
name: 'Dr. Padmaja',
|
||||
specialist: 'DIABETOLOGY',
|
||||
year: '5 YRS EXP',
|
||||
qualification: 'MBBS, MS',
|
||||
payment: '800',
|
||||
language: 'TAMIL, ENGILSH',
|
||||
city: 'Apollo Hospital Chennai',
|
||||
image:'assets/images/face5.jpg',
|
||||
time: 'Available in 7 mins',
|
||||
img:'assets/images/stethoscope.png'
|
||||
},{
|
||||
name: 'Dr. Pradeep ',
|
||||
specialist: 'ENDOCRINOLOGY',
|
||||
year: '6 YRS EXP',
|
||||
qualification: 'MBBS, MS',
|
||||
payment: '800',
|
||||
language: 'TAMIL, ENGILSH',
|
||||
city: 'Apollo Hospital Chennai',
|
||||
image:'assets/images/face6.jpg',
|
||||
time: 'Available in 8 mins',
|
||||
img:'assets/images/stethoscope.png'
|
||||
}
|
||||
]
|
||||
constructor(private router:Router,public dialog: MatDialog,public _api:ApiServiceService,public _bus:BusinessService,public _use:UserService) { }
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
|
||||
openOTP(): void {
|
||||
const dialogRef = this.dialog.open(OtpComponent, {
|
||||
width: '35%',
|
||||
// data: {name: this.name, animal: this.animal}
|
||||
});
|
||||
dialogRef.afterClosed().subscribe(result => {
|
||||
console.log('The dialog was closed');
|
||||
// this.animal = result;
|
||||
});
|
||||
}
|
||||
|
||||
onValChange(event){
|
||||
console.log(event)
|
||||
this.eventData = event;
|
||||
console.log(this.eventData)
|
||||
if(this.eventData == 'services'){
|
||||
//this._pd.getTabStatusPdDetails(this.tabStatus)
|
||||
this._api.getServicesListDetails().subscribe(res => {
|
||||
if (res.status == 200) {
|
||||
this.servicesList = res.data;
|
||||
}
|
||||
});
|
||||
}else if(this.eventData == 'centers'){
|
||||
//this._pd.getTabStatusPdDetails(this.tabStatus)
|
||||
this._bus.getBusinessListDetails().subscribe(res => {
|
||||
if (res.status == 200) {
|
||||
this.businessList = res.data;
|
||||
}
|
||||
});
|
||||
} else if(this.eventData == 'consultants'){
|
||||
this._use.getUsersListDetails().subscribe(res => {
|
||||
if (res.status == 200) {
|
||||
console.log(res)
|
||||
// let data = res['data'].filter(val => val.role == 'CONSULT')
|
||||
this.usersList = this.consultants;
|
||||
console.log(this.usersList)
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
goToService(id,event){
|
||||
console.log(id)
|
||||
if(event == '1'){
|
||||
this.router.navigate(['/services'])
|
||||
}else if(event == '2'){
|
||||
this.router.navigate(['/business-centers'])
|
||||
}else if(event == '3'){
|
||||
this.router.navigate(['/services'])
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="m-gap p-gap">
|
||||
<h3 class="page-h">Service List</h3>
|
||||
</div>
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="m-gap p-gap" fxLayoutAlign="end center">
|
||||
<mat-form-field appearance="fill">
|
||||
<mat-label>Search Service</mat-label>
|
||||
<input type="text" [(ngModel)]="filterdata" matInput placeholder="Search Service">
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <button mat-button (click)="openDialog('Add',{})" class="buttons">Add Services</button><br> -->
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="50" fxFlex.lg="33.33" fxFlex.xl="33.33" class="m-gap p-gap flx" *ngFor="let serviceListDetails of servicesList | searchFilter:filterdata : 'service'">
|
||||
<div class="Specialties-list-card">
|
||||
<mat-card class="example-card d-flex Specialties-spContent">
|
||||
<div class="consultant-card-cover">
|
||||
<div class="text-center consultant-thumb">
|
||||
<img class="img-responsive img-circle" src="https://prodaphstorage.blob.core.windows.net/specialties/bdf0cf0d-754e-4254-aaf7-fdc7aedd7c35.jpg" alt="Online Doctor Consultation - Allergist and Clinical Immunologist" width="120" height="120" alt="user list image">
|
||||
</div>
|
||||
</div>
|
||||
<mat-card-title-group>
|
||||
<mat-card-title class="service-info mb">{{serviceListDetails.servicesName}}</mat-card-title>
|
||||
<!-- <mat-card-title class="info service-list">{{serviceListDetails.info}}</mat-card-title> -->
|
||||
<!-- <a (click)="openDialog('Update',serviceListDetails)" class="Specialties-rightUpdate"><span class="material-icons edit-color">edit</span></a> -->
|
||||
<!-- <a (click)="confirmBox('Delete',serviceListDetails)" class="Specialties-rightArrow"><span class="material-icons edit-color delete">delete</span></a> -->
|
||||
<!-- <span class="Specialties-rightArrow"><img src="https://newassets.apollo247.com/images/ic_arrow_right.svg" alt="Arrow Right - Online Doctor Consultation"></span> -->
|
||||
<!-- <mat-card-subtitle class="service-Specialties">{{serviceListDetails.specialties}}</mat-card-subtitle> -->
|
||||
|
||||
</mat-card-title-group>
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -14,6 +14,9 @@ $main-color: #f44336;
|
||||
transform: scale(1.04);
|
||||
}
|
||||
}
|
||||
.mat-card{
|
||||
margin: 0px !important;
|
||||
}
|
||||
.consultant-card-cover {
|
||||
// padding: 0rem 6rem;
|
||||
position: relative;
|
||||
@ -21,6 +24,10 @@ $main-color: #f44336;
|
||||
margin-left: 0.5rem;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
.page-h{
|
||||
color: #217e69;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
.consultant-thumb {
|
||||
// position: absolute;
|
||||
// margin-top: 20px;
|
||||
@ -66,14 +73,14 @@ $main-color: #f44336;
|
||||
}
|
||||
.Specialties-spContent{
|
||||
width: 100%;
|
||||
padding: 0 10px 0 0;
|
||||
// padding: 0 10px 0 0;
|
||||
position: relative;
|
||||
// min-height: 60px;
|
||||
height: 65px;
|
||||
}
|
||||
.mb{
|
||||
margin-bottom: 0.60rem;
|
||||
}
|
||||
// .mb{
|
||||
// margin-bottom: 0.60rem;
|
||||
// }
|
||||
::ng-deep body .mat-card .mat-card-title {
|
||||
padding-left: 0rem!important;
|
||||
}
|
||||
@ -103,3 +110,6 @@ $main-color: #f44336;
|
||||
position: absolute;
|
||||
padding-right: 2.5rem;
|
||||
}
|
||||
::ng-deep .mat-form-field-appearance-fill .mat-form-field-flex {
|
||||
background-color: #fff0 !important;
|
||||
}
|
||||
@ -21,7 +21,9 @@ export class ServiceListComponent implements OnInit {
|
||||
push: any;
|
||||
id: number;
|
||||
serviceId: number;
|
||||
public filterdata = null;
|
||||
public servicesList:any = new MatTableDataSource();
|
||||
|
||||
constructor(public _api:ApiServiceService, public dialog: MatDialog) { }
|
||||
|
||||
ngOnInit(): void {
|
||||
@ -0,0 +1,92 @@
|
||||
<mat-card>
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap">
|
||||
<h3>Slot Availability</h3>
|
||||
</div>
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50" class="p-gap">
|
||||
<h6 class="mb-1">Date & Time: {{selected | date:'mediumDate'}}</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div fxLayout="row wrap" fxLayoutAlign="center center">
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="40" fxFlex.lg="40" fxFlex.xl="40" class="p-gap" fxLayoutAlign="center center">
|
||||
<div class="d-flex calender-time">
|
||||
<div class="calender">
|
||||
<mat-card class="demo-inline-calendar-card cardCalender">
|
||||
<mat-calendar [(selected)]="selected"></mat-calendar>
|
||||
</mat-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="60" fxFlex.lg="60" fxFlex.xl="60" class="p-gap" fxLayoutAlign="start center">
|
||||
<div class="time">
|
||||
<mat-tab-group class="">
|
||||
<mat-tab>
|
||||
<ng-template mat-tab-label>
|
||||
<a class="toolbar-avatar">
|
||||
<img src="assets/images/morning.png" class="img">
|
||||
</a>
|
||||
</ng-template>
|
||||
<mat-card-content>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 mt-1 primary">9:00AM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">9:30AM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">10:00AM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">10:30AM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">11:00AM</button><br>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">11:30AM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">12:00AM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">12:30AM</button>
|
||||
</mat-card-content>
|
||||
</mat-tab>
|
||||
<mat-tab>
|
||||
<ng-template mat-tab-label>
|
||||
<a class="toolbar-avatar">
|
||||
<img src="assets/images/sun.png" style="width: 33px;">
|
||||
</a>
|
||||
</ng-template>
|
||||
<mat-card-content>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 mt-1 primary">01:00PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">01:30PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">02:00PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">02:30PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">03:00PM</button><br>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">03:30PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">04:00PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">04:30PM</button>
|
||||
|
||||
</mat-card-content>
|
||||
</mat-tab>
|
||||
<mat-tab>
|
||||
<ng-template mat-tab-label>
|
||||
<a class="toolbar-avatar">
|
||||
<img src="assets/images/sunset.png" style="width: 40px;">
|
||||
</a>
|
||||
</ng-template>
|
||||
<mat-card-content>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 mt-1 primary">05:00PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">05:50PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">06:00PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">06:30PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary ">07:00PM</button><br>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">07:30PM</button>
|
||||
</mat-card-content>
|
||||
</mat-tab>
|
||||
<mat-tab>
|
||||
<ng-template mat-tab-label>
|
||||
<a class="toolbar-avatar">
|
||||
<img src="assets/images/moon.png" style="width: 30px;">
|
||||
</a>
|
||||
</ng-template>
|
||||
<mat-card-content>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 mt-1 primary">08:00PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">08:30PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">09:00PM</button>
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 primary">09:30PM</button>
|
||||
</mat-card-content>
|
||||
</mat-tab>
|
||||
</mat-tab-group>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button mat-raised-button mat-button-sm class="mr-1 mb-1 mt-1 btn-red" >PROCEED</button>
|
||||
</div>
|
||||
</mat-card>
|
||||
@ -0,0 +1,49 @@
|
||||
$color_red_orange_approx: #4caf50;
|
||||
$white: #fff;
|
||||
.button{
|
||||
margin-bottom: 1rem;
|
||||
background-color: #ffff !important;
|
||||
margin-top: -3rem;
|
||||
float: right;
|
||||
}
|
||||
.calender{
|
||||
margin-left: -1rem;
|
||||
padding-right: 6rem;
|
||||
}
|
||||
.cardCalender{
|
||||
width: 140%;
|
||||
}
|
||||
::ng-deep .mat-tab-label {
|
||||
margin-left: -3rem!important;
|
||||
}
|
||||
.img{
|
||||
width: 50px;
|
||||
}
|
||||
.btn-red {
|
||||
background-color: $color_red_orange_approx;
|
||||
color: $white;
|
||||
border: 1px solid $color_red_orange_approx;
|
||||
float: right;
|
||||
}
|
||||
h6{
|
||||
color: #0087ba;
|
||||
font-weight: 600;
|
||||
}
|
||||
.primary{
|
||||
background-color: #658F9B;
|
||||
color: white;
|
||||
}
|
||||
::ng-deep .mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar {
|
||||
background-color: #658F9B!important;
|
||||
}
|
||||
// ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper {
|
||||
// width: 250%;
|
||||
// }
|
||||
.success {
|
||||
background: #fff;
|
||||
box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
|
||||
padding: 5px;
|
||||
color: #0087ba;
|
||||
font-weight: 600;
|
||||
border-radius: 10px;
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { SlotBookingDetailsComponent } from './slot-booking-details.component';
|
||||
|
||||
describe('SlotBookingDetailsComponent', () => {
|
||||
let component: SlotBookingDetailsComponent;
|
||||
let fixture: ComponentFixture<SlotBookingDetailsComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
declarations: [ SlotBookingDetailsComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(SlotBookingDetailsComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,44 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
||||
|
||||
@Component({
|
||||
selector: 'app-slot-booking-details',
|
||||
templateUrl: './slot-booking-details.component.html',
|
||||
styleUrls: ['./slot-booking-details.component.scss']
|
||||
})
|
||||
export class SlotBookingDetailsComponent implements OnInit {
|
||||
form: FormGroup;
|
||||
local_data:any;
|
||||
selected: Date | null;
|
||||
name = 'Angular';
|
||||
date = new Date();
|
||||
control = new FormControl(
|
||||
{
|
||||
from: this.date,
|
||||
// to: new Date(this.date.getTime() + 1 * 24 * 60 * 60 * 1000),
|
||||
},
|
||||
Validators.required
|
||||
);
|
||||
workspace = new FormControl('', [Validators.required]);
|
||||
selects = [
|
||||
{workspace: 'test 1'},
|
||||
{workspace: 'test 2'},
|
||||
{workspace: 'test 3'},
|
||||
];
|
||||
constructor() { }
|
||||
|
||||
|
||||
ngOnInit(): void {
|
||||
this.form = new FormGroup({
|
||||
|
||||
workspace: new FormControl('', [Validators.required]),
|
||||
});
|
||||
console.log(this.local_data, this.selects)
|
||||
// this.form.controls['note'].setValue('Sample')
|
||||
this.form.patchValue(this.local_data)
|
||||
}
|
||||
submit(){
|
||||
console.log(this.form.value);
|
||||
}
|
||||
|
||||
}
|
||||
@ -10,8 +10,9 @@ export class RoleMenuItemsPipe implements PipeTransform {
|
||||
// // this is for horizontal menu filter
|
||||
// if(type=="1"){
|
||||
switch(localStorage.getItem('user_role')){
|
||||
case 'SADMIN': return value.filter(val=>val.state!="appoinments" && val.state!="customers" && val.state!="consultants" && val.state != "services" && val.state != "consultant-setting");
|
||||
case 'BADMIN': return value.filter(val=>val.state !="business" && val.state!="appoinments" && val.state!="consultants" && val.state != "users");
|
||||
case 'SADMIN': return value.filter(val=>val.state!="appoinments" && val.state!="customers" && val.state != "consultant-setting");
|
||||
case 'BADMIN': return value.filter(val=>val.state !="business" && val.state!="appoinments" && val.state!="customers" && val.state!="consultants" && val.state != "consultant-setting");
|
||||
case 'CONSULT': return value.filter(val=>val.state !="business" && val.state!="consultants" && val.state!="users" && val.state!="services");
|
||||
// case 'CONSULT':
|
||||
// case '3': return value.filter(val=>val.state!="settings");
|
||||
// case '4': return value.filter(val=>val.state!="settings" && val.state!="quality_check_discussion" && val.state!="reports" && val.state!="sales-pd-list");
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
|
||||
<h2 mat-dialog-title class="paragraph_change">
|
||||
<!-- <h2 mat-dialog-title class="paragraph_change">
|
||||
<div fxFlex="70" align="left" style="padding: 10px !important;">
|
||||
OTP
|
||||
</div>
|
||||
@ -9,21 +9,54 @@
|
||||
<mat-icon>close</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div>
|
||||
<mat-dialog-content>
|
||||
<mat-form-field style="width: 60%">
|
||||
<input matInput placeholder="Enter OTP" #otp type="text" maxlength="6">
|
||||
</mat-form-field>
|
||||
<span style="width: 25%">
|
||||
<button mat-raised-button color="primary" (click)="resendOTP()" >{{timeLeft == 0 ? 'Resend OTP' : timeLeft+' Seconds Left....' }} </button>
|
||||
</span>
|
||||
</mat-dialog-content>
|
||||
<mat-dialog-actions>
|
||||
<div fxFlex="100" align="right">
|
||||
<!--<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" mat-dialog-close matTooltip="Close" matTooltipPosition="below"><mat-icon>close</mat-icon></button>-->
|
||||
<button mat-raised-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="VERIFY" matTooltipPosition="below" style="background-color: #4CAF50;color:#fff;">VERIFY</button>
|
||||
</div>
|
||||
</mat-dialog-actions>
|
||||
</h2> -->
|
||||
<div [ngSwitch]="fieldData">
|
||||
<div *ngSwitchCase="1">
|
||||
<mat-dialog-content>
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50">
|
||||
<h3>Hi</h3>
|
||||
</div>
|
||||
<div fxFlex.xs="50" fxFlex.sm="50" fxFlex.md="50" fxFlex.lg="50" fxFlex.xl="50">
|
||||
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="Close" matTooltipPosition="right" mat-dialog-close>
|
||||
<mat-icon>close</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="100" fxFlex.sm="100" fxFlex.md="100" fxFlex.lg="100" fxFlex.xl="100">
|
||||
<p>Please enter your mobile number to login</p>
|
||||
</div>
|
||||
</div>
|
||||
<div fxLayout="row wrap">
|
||||
<div fxFlex.xs="80" fxFlex.sm="80" fxFlex.md="80" fxFlex.lg="80" fxFlex.xl="80">
|
||||
<mat-form-field style="width: 90%;">
|
||||
<input matInput placeholder="Enter Phone No" type="number" maxlength="6">
|
||||
</mat-form-field>
|
||||
<span>OTP will be sent to this number by SMS and whatsapp.</span>
|
||||
</div>
|
||||
<div fxFlex.xs="20" fxFlex.sm="20" fxFlex.md="20" fxFlex.lg="20" fxFlex.xl="20">
|
||||
<span>
|
||||
<button mat-fab class="mr-1 mb-1" (click)="getOTP(2)"><mat-icon>arrow_forward</mat-icon></button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</mat-dialog-content>
|
||||
</div>
|
||||
<div *ngSwitchCase="2">
|
||||
<mat-dialog-content>
|
||||
<mat-form-field style="width: 60%">
|
||||
<input matInput placeholder="Enter OTP" #otp type="text" maxlength="6">
|
||||
</mat-form-field>
|
||||
<span style="width: 25%">
|
||||
<button mat-raised-button color="primary" (click)="resendOTP()" >{{timeLeft == 0 ? 'Resend OTP' : timeLeft+' Seconds Left....' }} </button>
|
||||
</span>
|
||||
</mat-dialog-content>
|
||||
<mat-dialog-actions>
|
||||
<div fxFlex="100" align="right">
|
||||
<!--<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" type="button" mat-dialog-close matTooltip="Close" matTooltipPosition="below"><mat-icon>close</mat-icon></button>-->
|
||||
<button mat-raised-button class="mr-1 mb-1 hover-icon" type="button" matTooltip="VERIFY" matTooltipPosition="below" style="background-color: #4CAF50;color:#fff;">VERIFY</button>
|
||||
</div>
|
||||
</mat-dialog-actions>
|
||||
</div>
|
||||
|
||||
@ -14,6 +14,6 @@ mat-form-field {
|
||||
.mat-form-field-appearance-legacy .mat-hint{
|
||||
color:rgba(0, 0, 0, 0.8) !important;
|
||||
}
|
||||
::ng-deep .cdk-overlay-pane {
|
||||
width: 45%!important;
|
||||
}
|
||||
// ::ng-deep .cdk-overlay-pane {
|
||||
// width: 45%!important;
|
||||
// }
|
||||
|
||||
@ -24,6 +24,7 @@ export class OtpComponent implements OnInit {
|
||||
right: ''
|
||||
}
|
||||
};
|
||||
fieldData: any = 1;
|
||||
constructor(private dialogRef: MatDialogRef<OtpComponent>,@Inject(MAT_DIALOG_DATA) public data: any, private dialog: MatDialog) {
|
||||
// this.loggedEmailID = this.data;
|
||||
this.timeLeft = 60;
|
||||
@ -38,6 +39,10 @@ export class OtpComponent implements OnInit {
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
getOTP(param){
|
||||
console.log(param)
|
||||
this.fieldData = param;
|
||||
}
|
||||
|
||||
resendOTP() {
|
||||
this.timeLeft = 60;
|
||||
|
||||
@ -99,6 +99,24 @@ const HORIZONTALMENUITEMS = [
|
||||
name: 'My Settings',
|
||||
type: 'link',
|
||||
icon: 'settings_system_daydream'
|
||||
},
|
||||
{
|
||||
state: 'business-centers',
|
||||
name: 'Centers',
|
||||
type: 'link',
|
||||
icon: 'settings_system_daydream'
|
||||
},
|
||||
{
|
||||
state: 'search-category',
|
||||
name: 'search Category',
|
||||
type: 'link',
|
||||
icon: 'settings_system_daydream'
|
||||
},
|
||||
{
|
||||
state: 'slot-booking',
|
||||
name: 'Slot Booking',
|
||||
type: 'link',
|
||||
icon: 'settings_system_daydream'
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
@ -98,6 +98,24 @@ const MENUITEMS : Menu[] = [
|
||||
name: 'My Settings',
|
||||
type: 'link',
|
||||
icon: 'settings_system_daydream'
|
||||
},
|
||||
{
|
||||
state: 'business-centers',
|
||||
name: 'Centers',
|
||||
type: 'link',
|
||||
icon: 'settings_system_daydream'
|
||||
},
|
||||
{
|
||||
state: 'search-category',
|
||||
name: 'search Category',
|
||||
type: 'link',
|
||||
icon: 'settings_system_daydream'
|
||||
},
|
||||
{
|
||||
state: 'slot-booking',
|
||||
name: 'Slot Booking',
|
||||
type: 'link',
|
||||
icon: 'settings_system_daydream'
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
8
ng-seed/src/app/shared/pipe/search-filter.pipe.spec.ts
Normal file
8
ng-seed/src/app/shared/pipe/search-filter.pipe.spec.ts
Normal file
@ -0,0 +1,8 @@
|
||||
import { SearchFilterPipe } from './search-filter.pipe';
|
||||
|
||||
describe('SearchFilterPipe', () => {
|
||||
it('create an instance', () => {
|
||||
const pipe = new SearchFilterPipe();
|
||||
expect(pipe).toBeTruthy();
|
||||
});
|
||||
});
|
||||
27
ng-seed/src/app/shared/pipe/search-filter.pipe.ts
Normal file
27
ng-seed/src/app/shared/pipe/search-filter.pipe.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import { Pipe, PipeTransform } from '@angular/core';
|
||||
|
||||
@Pipe({
|
||||
name: 'searchFilter'
|
||||
})
|
||||
export class SearchFilterPipe implements PipeTransform {
|
||||
|
||||
transform(items: any[], filterdata: string, name:string): any[] {
|
||||
console.log(items,name)
|
||||
if(!items) return [];
|
||||
if(!filterdata) return items;
|
||||
console.log(filterdata);
|
||||
filterdata = filterdata.toString().toLowerCase();
|
||||
return items.filter( it => {
|
||||
console.log(it);
|
||||
if(name == 'service'){
|
||||
return it.servicesName.toLowerCase().includes(filterdata);
|
||||
}else if(name == 'centers'){
|
||||
return it.busName.toLowerCase().includes(filterdata);
|
||||
}else if(name == 'consultants'){
|
||||
return it.userName.toLowerCase().includes(filterdata);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@ -4,19 +4,22 @@ import { MenuItems } from './menu-items/menu-items';
|
||||
import { HorizontalMenuItems } from './menu-items/horizontal-menu-items';
|
||||
import { AccordionAnchorDirective, AccordionLinkDirective, AccordionDirective } from './accordion';
|
||||
import { ToggleFullscreenDirective } from './fullscreen/toggle-fullscreen.directive';
|
||||
import { SearchFilterPipe } from './pipe/search-filter.pipe';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AccordionAnchorDirective,
|
||||
AccordionLinkDirective,
|
||||
AccordionDirective,
|
||||
ToggleFullscreenDirective
|
||||
ToggleFullscreenDirective,
|
||||
SearchFilterPipe
|
||||
],
|
||||
exports: [
|
||||
AccordionAnchorDirective,
|
||||
AccordionLinkDirective,
|
||||
AccordionDirective,
|
||||
ToggleFullscreenDirective
|
||||
ToggleFullscreenDirective,
|
||||
SearchFilterPipe
|
||||
],
|
||||
providers: [ MenuItems, HorizontalMenuItems ]
|
||||
})
|
||||
|
||||
@ -31,7 +31,7 @@ $main-header-bg-color:#fff;
|
||||
$main-header-text-color:rgba(mat-color($foreground, base), 0.87);
|
||||
$card-spacing:1.5rem;
|
||||
$user-profile-name-color:#fff;
|
||||
$user-profile-thumb-border:4px solid rgba(255, 255, 255, 0.3);
|
||||
$user-profile-thumb-border:4px solid #1f7f6f;
|
||||
$profile-link:#fff;
|
||||
$main-bg-color:linear-gradient(58deg, #f44336, #673ab7);
|
||||
//
|
||||
|
||||
Loading…
Reference in New Issue
Block a user