penambahan form input add data device
This commit is contained in:
		
							parent
							
								
									8f0c2fb913
								
							
						
					
					
						commit
						6c9b4f18b4
					
				| @ -1,196 +1,241 @@ | ||||
| <div class="app-content content"> | ||||
|     <div class="content-overlay"></div> | ||||
|     <div class="content-wrapper"> | ||||
|       <div class="content-header row"> | ||||
|       </div> | ||||
|       <div class="content-body"><!-- Hospital Info cards --> | ||||
| <div class="row"> | ||||
| <div class="col-xl-3 col-lg-6 col-md-6 col-12"> | ||||
|   <div class="card pull-up"> | ||||
|     <div class="card-content"> | ||||
|       <div class="card-body"> | ||||
|         <div class="media d-flex"> | ||||
|           <div class="align-self-center"> | ||||
|             <i class="la la-user-md font-large-2 success"></i> | ||||
|           </div> | ||||
|           <div class="media-body text-right"> | ||||
|             <h5 class="text-muted text-bold-500">Doctors Available</h5> | ||||
|             <h3 class="text-bold-600">122</h3> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| <div class="col-xl-3 col-lg-6 col-md-6 col-12"> | ||||
|   <div class="card pull-up"> | ||||
|     <div class="card-content"> | ||||
|       <div class="card-body"> | ||||
|         <div class="media d-flex"> | ||||
|           <div class="align-self-center"> | ||||
|             <i class="la la-stethoscope font-large-2 warning"></i> | ||||
|           </div> | ||||
|           <div class="media-body text-right"> | ||||
|             <h5 class="text-muted text-bold-500">Visiting Doctors</h5> | ||||
|             <h3 class="text-bold-600">34</h3> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| <div class="col-xl-3 col-lg-6 col-md-6 col-12"> | ||||
|   <div class="card pull-up"> | ||||
|     <div class="card-content"> | ||||
|       <div class="card-body"> | ||||
|         <div class="media d-flex"> | ||||
|           <div class="align-self-center"> | ||||
|             <i class="la la-calendar-check-o font-large-2 info"></i> | ||||
|           </div> | ||||
|           <div class="media-body text-right"> | ||||
|             <h5 class="text-muted text-bold-500">Today's Inquiry</h5> | ||||
|             <h3 class="text-bold-600">3.5K</h3> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| <div class="col-xl-3 col-lg-6 col-md-6 col-12"> | ||||
|   <div class="card pull-up"> | ||||
|     <div class="card-content"> | ||||
|       <div class="card-body"> | ||||
|         <div class="media d-flex"> | ||||
|           <div class="align-self-center"> | ||||
|             <i class="la la-bed font-large-2 danger"></i> | ||||
|           </div> | ||||
|           <div class="media-body text-right"> | ||||
|             <h5 class="text-muted text-bold-500">Rooms Available</h5> | ||||
|             <h3 class="text-bold-600">179</h3> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| </div> | ||||
| <!-- Hospital Info cards Ends --> | ||||
| 
 | ||||
| <!-- Appointment Bar Line Chart --> | ||||
| <div class="row"> | ||||
| <div class="col-12"> | ||||
|   <div class="card"> | ||||
|      <section id="chartjs-bar-charts"> | ||||
|   <div class="content-overlay"></div> | ||||
|   <div class="content-wrapper"> | ||||
|     <div class="content-header row"></div> | ||||
|     <div class="content-body"> | ||||
|       <!-- Hospital Info cards --> | ||||
|       <div class="row"> | ||||
|         <div class="col-12" *blockUI="'barCharts'; message: 'Loading'"> | ||||
|           <m-card [options]="options" (reloadFunction)="reloadBarCharts($event)"> | ||||
|             <ng-container mCardHeaderTitle> | ||||
|               Appointment | ||||
|             </ng-container> | ||||
|             <ng-container mCardBody> | ||||
|               <div class="z"> | ||||
|                 <canvas class="barchart" height="328" baseChart [datasets]="barChartData" [labels]="barChartLabels" | ||||
|                   [options]="barChartOptions" [legend]="barChartLegend" | ||||
|                   [chartType]="barChartType"></canvas> | ||||
|         <div class="col-xl-3 col-lg-6 col-md-6 col-12"> | ||||
|           <div class="card pull-up"> | ||||
|             <div class="card-content"> | ||||
|               <div class="card-body"> | ||||
|                 <div class="media d-flex"> | ||||
|                   <div class="align-self-center"> | ||||
|                     <i class="la la-user-md font-large-2 success"></i> | ||||
|                   </div> | ||||
|                   <div class="media-body text-right"> | ||||
|                     <h5 class="text-muted text-bold-500">Doctors Available</h5> | ||||
|                     <h3 class="text-bold-600">122</h3> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               </div> | ||||
|              </ng-container> | ||||
|           </m-card> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="col-xl-3 col-lg-6 col-md-6 col-12"> | ||||
|           <div class="card pull-up"> | ||||
|             <div class="card-content"> | ||||
|               <div class="card-body"> | ||||
|                 <div class="media d-flex"> | ||||
|                   <div class="align-self-center"> | ||||
|                     <i class="la la-stethoscope font-large-2 warning"></i> | ||||
|                   </div> | ||||
|                   <div class="media-body text-right"> | ||||
|                     <h5 class="text-muted text-bold-500">Visiting Doctors</h5> | ||||
|                     <h3 class="text-bold-600">34</h3> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="col-xl-3 col-lg-6 col-md-6 col-12"> | ||||
|           <div class="card pull-up"> | ||||
|             <div class="card-content"> | ||||
|               <div class="card-body"> | ||||
|                 <div class="media d-flex"> | ||||
|                   <div class="align-self-center"> | ||||
|                     <i class="la la-calendar-check-o font-large-2 info"></i> | ||||
|                   </div> | ||||
|                   <div class="media-body text-right"> | ||||
|                     <h5 class="text-muted text-bold-500">Today's Inquiry</h5> | ||||
|                     <h3 class="text-bold-600">3.5K</h3> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="col-xl-3 col-lg-6 col-md-6 col-12"> | ||||
|           <div class="card pull-up"> | ||||
|             <div class="card-content"> | ||||
|               <div class="card-body"> | ||||
|                 <div class="media d-flex"> | ||||
|                   <div class="align-self-center"> | ||||
|                     <i class="la la-bed font-large-2 danger"></i> | ||||
|                   </div> | ||||
|                   <div class="media-body text-right"> | ||||
|                     <h5 class="text-muted text-bold-500">Rooms Available</h5> | ||||
|                     <h3 class="text-bold-600">179</h3> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </section> | ||||
|   </div> | ||||
| </div> | ||||
| </div> | ||||
| <!-- Appointment Bar Line Chart Ends --> | ||||
|       <!-- Hospital Info cards Ends --> | ||||
| 
 | ||||
| <!-- Appointment Table --> | ||||
| <div class="row" matchHeight="card"> | ||||
| <div class="col-12 col-md-4"> | ||||
|   <div class="card"> | ||||
|     <div class="card-header"> | ||||
|       <h4 class="card-title">Doctors Available</h4> | ||||
|     </div> | ||||
|     <div class="card-content"> | ||||
|       <div class="table-responsive"> | ||||
|         <table id="recent-orders" class="table table-hover table-xl mb-0"> | ||||
|         <tbody> | ||||
|           <tr *ngFor = "let doctor of doctors "> | ||||
|             <td class="text-truncate p-1 border-top-0"> | ||||
|               <div class="avatar avatar-md"> | ||||
|                 <img class="media-object rounded-circle" [src]= doctor.image | ||||
|                   alt="Avatar"> | ||||
|       <!-- Appointment Bar Line Chart --> | ||||
|       <div class="row"> | ||||
|         <div class="col-12"> | ||||
|           <div class="card"> | ||||
|             <section id="chartjs-bar-charts"> | ||||
|               <div class="row"> | ||||
|                 <div class="col-12" *blockUI="'barCharts'; message: 'Loading'"> | ||||
|                   <m-card | ||||
|                     [options]="options" | ||||
|                     (reloadFunction)="reloadBarCharts($event)" | ||||
|                   > | ||||
|                     <ng-container mCardHeaderTitle> Appointment </ng-container> | ||||
|                     <ng-container mCardBody> | ||||
|                       <div class="z"> | ||||
|                         <canvas | ||||
|                           class="barchart" | ||||
|                           height="328" | ||||
|                           baseChart | ||||
|                           [datasets]="barChartData" | ||||
|                           [labels]="barChartLabels" | ||||
|                           [options]="barChartOptions" | ||||
|                           [legend]="barChartLegend" | ||||
|                           [chartType]="barChartType" | ||||
|                         ></canvas> | ||||
|                       </div> | ||||
|                     </ng-container> | ||||
|                   </m-card> | ||||
|                 </div> | ||||
|               </div> | ||||
|             </td> | ||||
|             <td class="text-truncate pl-0 border-top-0"> | ||||
|               <div class="name">{{doctor.name}}</div> | ||||
|               <div class="designation text-light font-small-2">Dentist</div> | ||||
|             </td> | ||||
|             <td class="text-right border-top-0"> | ||||
|               <a href="hospital-book-appointment.html" class="btn btn-sm btn-outline-success">Book Appointment</a> | ||||
|             </td> | ||||
|           </tr> | ||||
|        | ||||
|         </tbody> | ||||
|         </table> | ||||
|             </section> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|       <!-- Appointment Bar Line Chart Ends --> | ||||
| 
 | ||||
|       <!-- Appointment Table --> | ||||
|       <div class="row" matchHeight="card"> | ||||
|         <div class="col-12 col-md-4"> | ||||
|           <div class="card"> | ||||
|             <div class="card-header"> | ||||
|               <h4 class="card-title">Doctors Available</h4> | ||||
|             </div> | ||||
|             <div class="card-content"> | ||||
|               <div class="table-responsive"> | ||||
|                 <table | ||||
|                   id="recent-orders" | ||||
|                   class="table table-hover table-xl mb-0" | ||||
|                 > | ||||
|                   <tbody> | ||||
|                     <tr *ngFor="let doctor of doctors"> | ||||
|                       <td class="text-truncate p-1 border-top-0"> | ||||
|                         <div class="avatar avatar-md"> | ||||
|                           <img | ||||
|                             class="media-object rounded-circle" | ||||
|                             [src]="doctor.image" | ||||
|                             alt="Avatar" | ||||
|                           /> | ||||
|                         </div> | ||||
|                       </td> | ||||
|                       <td class="text-truncate pl-0 border-top-0"> | ||||
|                         <div class="name">{{ doctor.name }}</div> | ||||
|                         <div class="designation text-light font-small-2"> | ||||
|                           Dentist | ||||
|                         </div> | ||||
|                       </td> | ||||
|                       <td class="text-right border-top-0"> | ||||
|                         <a | ||||
|                           href="hospital-book-appointment.html" | ||||
|                           class="btn btn-sm btn-outline-success" | ||||
|                           >Book Appointment</a | ||||
|                         > | ||||
|                       </td> | ||||
|                     </tr> | ||||
|                   </tbody> | ||||
|                 </table> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div id="recent-appointments" class="col-12 col-md-8"> | ||||
|           <div class="card"> | ||||
|             <div class="card-header"> | ||||
|               <h4 class="card-title">Recent Appointments</h4> | ||||
|               <a class="heading-elements-toggle" | ||||
|                 ><i class="la la-ellipsis-v font-medium-3"></i | ||||
|               ></a> | ||||
|               <div class="heading-elements"> | ||||
|                 <ul class="list-inline mb-0"> | ||||
|                   <li> | ||||
|                     <a | ||||
|                       class="btn btn-sm btn-danger box-shadow-2 round btn-min-width pull-right" | ||||
|                       href="hospital-book-appointment.html" | ||||
|                       target="_blank" | ||||
|                       >View all</a | ||||
|                     > | ||||
|                   </li> | ||||
|                 </ul> | ||||
|               </div> | ||||
|             </div> | ||||
|             <div class="card-content mt-1"> | ||||
|               <div class="table-responsive"> | ||||
|                 <table | ||||
|                   id="recent-orders-doctors" | ||||
|                   class="table table-hover table-xl mb-0" | ||||
|                 > | ||||
|                   <thead> | ||||
|                     <tr> | ||||
|                       <th class="border-top-0">Doctor</th> | ||||
|                       <th class="border-top-0">Patients</th> | ||||
|                       <th class="border-top-0">Specialities</th> | ||||
|                       <th class="border-top-0">Timings</th> | ||||
|                       <th class="border-top-0">Amount</th> | ||||
|                     </tr> | ||||
|                   </thead> | ||||
|                   <tbody> | ||||
|                     <tr class="pull-up" *ngFor="let doctor of doctorList"> | ||||
|                       <td class="text-truncate">{{ doctor.name }}</td> | ||||
|                       <td class="text-truncate p-1"> | ||||
|                         <ul class="list-unstyled users-list m-0"> | ||||
|                           <li | ||||
|                             data-toggle="tooltip" | ||||
|                             data-popup="tooltip-custom" | ||||
|                             data-original-title="Kimberly Simmons" | ||||
|                             class="avatar avatar-sm pull-up" | ||||
|                             *ngFor="let imageUrl of doctor.image" | ||||
|                           > | ||||
|                             <img | ||||
|                               class="media-object rounded-circle" | ||||
|                               [src]="imageUrl" | ||||
|                               alt="Avatar" | ||||
|                             /> | ||||
|                           </li> | ||||
| 
 | ||||
|                           <li class="avatar avatar-sm"> | ||||
|                             <span class="badge badge-info">{{ | ||||
|                               doctor.bagde | ||||
|                             }}</span> | ||||
|                           </li> | ||||
|                         </ul> | ||||
|                       </td> | ||||
|                       <td> | ||||
|                         <button | ||||
|                           type="button" | ||||
|                           class="btn btn-sm btn-outline-{{ doctor.type }} round" | ||||
|                         > | ||||
|                           {{ doctor.designation }} | ||||
|                         </button> | ||||
|                       </td> | ||||
|                       <td class="text-truncate">{{ doctor.time }}</td> | ||||
|                       <td class="text-truncate">{{ doctor.amount }}</td> | ||||
|                     </tr> | ||||
|                   </tbody> | ||||
|                 </table> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|       <!-- Appointment Table Ends --> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| <div id="recent-appointments" class="col-12 col-md-8"> | ||||
|   <div class="card"> | ||||
|     <div class="card-header"> | ||||
|       <h4 class="card-title">Recent Appointments</h4> | ||||
|       <a class="heading-elements-toggle"><i class="la la-ellipsis-v font-medium-3"></i></a> | ||||
|       <div class="heading-elements"> | ||||
|         <ul class="list-inline mb-0"> | ||||
|           <li><a class="btn btn-sm btn-danger box-shadow-2 round btn-min-width pull-right" href="hospital-book-appointment.html" | ||||
|               target="_blank">View all</a></li> | ||||
|         </ul> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div class="card-content mt-1"> | ||||
|       <div class="table-responsive"> | ||||
|           <table id="recent-orders-doctors" class="table table-hover table-xl mb-0"> | ||||
|               <thead> | ||||
|           <tr> | ||||
|             <th class="border-top-0">Doctor</th> | ||||
|             <th class="border-top-0">Patients</th> | ||||
|             <th class="border-top-0">Specialities</th> | ||||
|             <th class="border-top-0">Timings</th> | ||||
|             <th class="border-top-0">Amount</th> | ||||
|           </tr> | ||||
|               </thead> | ||||
|               <tbody> | ||||
|           <tr class="pull-up" *ngFor="let doctor of doctorList"> | ||||
|             <td class="text-truncate">{{doctor.name}}</td> | ||||
|             <td class="text-truncate p-1"> | ||||
|               <ul class="list-unstyled users-list m-0"> | ||||
|                 <li data-toggle="tooltip" data-popup="tooltip-custom" data-original-title="Kimberly Simmons" class="avatar avatar-sm pull-up" *ngFor="let imageUrl of doctor.image"> | ||||
|                     <img class="media-object rounded-circle" [src]="imageUrl" alt="Avatar"> | ||||
|                     | ||||
|                 </li> | ||||
|                 | ||||
|                 <li class="avatar avatar-sm"> | ||||
|                   <span class="badge badge-info">{{doctor.bagde}}</span> | ||||
|                 </li> | ||||
|               </ul> | ||||
|             </td> | ||||
|             <td> | ||||
|               <button type="button" class="btn btn-sm btn-outline-{{doctor.type}} round">{{doctor.designation}}</button> | ||||
|             </td> | ||||
|             <td class="text-truncate">{{doctor.time}}</td> | ||||
|             <td class="text-truncate">{{doctor.amount}}</td> | ||||
|           </tr> | ||||
|      | ||||
|             </tbody> | ||||
|           </table> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| </div> | ||||
| <!-- Appointment Table Ends --> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
|   <!-- END: Content--> | ||||
| <!-- END: Content--> | ||||
|  | ||||
| @ -1,261 +1,232 @@ | ||||
| <section id="basic-form-layouts"> | ||||
|   <div class="row" matchHeight="card"> | ||||
|     <div class="col-md-6" *blockUI="'projectInfo'; message: 'Loading'"> | ||||
|       <m-card [options]="options" (reloadFunction)="reloadProjectInfo($event)"> | ||||
|         <ng-container mCardHeaderTitle> | ||||
|           Project Info (Reactive Forms Validation) | ||||
|         </ng-container> | ||||
|         <ng-container mCardBody> | ||||
|           <div class="card-text"> | ||||
|             <p> | ||||
|               This is the most basic and default form having form sections. To | ||||
|               add form section use | ||||
|               <code>.form-section</code> | ||||
|               class with any heading tags. This form has the buttons on the | ||||
|               bottom left corner which is the default position. | ||||
|             </p> | ||||
|           </div> | ||||
|           <form [formGroup]="projectInfo" (ngSubmit)="onProjectInfoSubmit()"> | ||||
|             <div class="form-body"> | ||||
|               <h4 class="form-section"> | ||||
|                 <i class="feather ft-user"></i> Personal Info | ||||
|               </h4> | ||||
|               <div class="row"> | ||||
|                 <div class="col-md-6"> | ||||
|                   <div class="form-group"> | ||||
|                     <label for="projectinput1">First Name *</label> | ||||
|                     <input | ||||
|                       type="text" | ||||
|                       id="projectinput1" | ||||
|                       class="form-control" | ||||
|                       formControlName="firstName" | ||||
|                       placeholder="First Name" | ||||
|                       [ngClass]="{ | ||||
|                         'is-invalid': submitted && f.firstName.errors | ||||
|                       }" | ||||
|                     /> | ||||
|                     <small | ||||
|                       class="form-text text-muted danger" | ||||
|                       *ngIf="submitted && f.firstName.errors" | ||||
|                       class="invalid-feedback" | ||||
|                     > | ||||
|                       <div *ngIf="f.firstName.errors.required"> | ||||
|                         First Name is required | ||||
|                       </div> | ||||
|                     </small> | ||||
|                   </div> | ||||
|                 </div> | ||||
|                 <div class="col-md-6"> | ||||
|                   <div class="form-group"> | ||||
|                     <label for="projectinput2">Last Name *</label> | ||||
|                     <input | ||||
|                       type="text" | ||||
|                       id="projectinput2" | ||||
|                       class="form-control" | ||||
|                       formControlName="lastName" | ||||
|                       placeholder="Last Name" | ||||
|                       [ngClass]="{ | ||||
|                         'is-invalid': submitted && f.lastName.errors | ||||
|                       }" | ||||
|                     /> | ||||
|                     <small | ||||
|                       class="form-text text-muted danger" | ||||
|                       *ngIf="submitted && f.lastName.errors" | ||||
|                       class="invalid-feedback" | ||||
|                     > | ||||
|                       <div *ngIf="f.lastName.errors.required"> | ||||
|                         Last Name is required | ||||
|                       </div> | ||||
|                     </small> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               </div> | ||||
|               <div class="row"> | ||||
|                 <div class="col-md-6"> | ||||
|                   <div class="form-group"> | ||||
|                     <label for="projectinput3">E-mail *</label> | ||||
|                     <input | ||||
|                       type="text" | ||||
|                       id="projectinput3" | ||||
|                       class="form-control" | ||||
|                       formControlName="email" | ||||
|                       placeholder="E-mail" | ||||
|                       [ngClass]="{ 'is-invalid': submitted && f.email.errors }" | ||||
|                     /> | ||||
|                     <small | ||||
|                       class="form-text text-muted danger" | ||||
|                       *ngIf="submitted && f.email.errors" | ||||
|                       class="invalid-feedback" | ||||
|                     > | ||||
|                       <div *ngIf="f.email.errors.required"> | ||||
|                         Email is required | ||||
|                       </div> | ||||
|                       <div *ngIf="f.email.errors.email"> | ||||
|                         Email must be a valid email address | ||||
|                       </div> | ||||
|                     </small> | ||||
|                   </div> | ||||
|                 </div> | ||||
|                 <div class="col-md-6"> | ||||
|                   <div class="form-group"> | ||||
|                     <label for="projectinput4">Contact Number *</label> | ||||
|                     <input | ||||
|                       type="text" | ||||
|                       id="projectinput4" | ||||
|                       class="form-control" | ||||
|                       formControlName="phone" | ||||
|                       placeholder="Phone" | ||||
|                       [ngClass]="{ 'is-invalid': submitted && f.phone.errors }" | ||||
|                       (keypress)="keyPress($event)" | ||||
|                     /> | ||||
|                     <small | ||||
|                       class="form-text text-muted danger" | ||||
|                       *ngIf="submitted && f.phone.errors" | ||||
|                       class="invalid-feedback" | ||||
|                     > | ||||
|                       <div *ngIf="f.phone.errors.required"> | ||||
|                         phone is required | ||||
|                       </div> | ||||
|                     </small> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               </div> | ||||
|               <h4 class="form-section"> | ||||
|                 <i class="la la-paperclip"></i> Requirements | ||||
|               </h4> | ||||
|               <div class="form-group"> | ||||
|                 <label for="companyName">Company *</label> | ||||
|                 <input | ||||
|                   type="text" | ||||
|                   id="companyName" | ||||
|                   class="form-control" | ||||
|                   formControlName="company" | ||||
|                   placeholder="Company Name" | ||||
|                   [ngClass]="{ 'is-invalid': submitted && f.company.errors }" | ||||
|                 /> | ||||
|                 <small | ||||
|                   class="form-text text-muted danger" | ||||
|                   *ngIf="submitted && f.company.errors" | ||||
|                   class="invalid-feedback" | ||||
| <div class="app-content content"> | ||||
|   <div class="content-overlay"></div> | ||||
|   <div class="content-wrapper"> | ||||
|     <div class="content-header row"></div> | ||||
|     <div class="content-body"> | ||||
|       <section id="basic-form-layouts"> | ||||
|         <div class="row" matchHeight="card"> | ||||
|           <div class="col-md-6" *blockUI="'projectInfo'; message: 'Loading'"> | ||||
|             <m-card | ||||
|               [options]="options" | ||||
|               (reloadFunction)="reloadProjectInfo($event)" | ||||
|             > | ||||
|               <ng-container mCardHeaderTitle> | ||||
|                 Project Info (Reactive Forms Validation) | ||||
|               </ng-container> | ||||
|               <ng-container mCardBody> | ||||
|                 <form | ||||
|                   [formGroup]="projectInfo" | ||||
|                   (ngSubmit)="onProjectInfoSubmit()" | ||||
|                 > | ||||
|                   <div *ngIf="f.company.errors.required"> | ||||
|                     Company is required | ||||
|                   </div> | ||||
|                 </small> | ||||
|               </div> | ||||
|               <div class="row"> | ||||
|                 <div class="col-md-6"> | ||||
|                   <div class="form-group"> | ||||
|                     <label for="projectinput5">Interested in *</label> | ||||
|                     <select | ||||
|                       id="projectinput5" | ||||
|                       class="form-control" | ||||
|                       formControlName="interestedIn" | ||||
|                       [ngClass]="{ | ||||
|                         'is-invalid': submitted && f.interestedIn.errors | ||||
|                       }" | ||||
|                     > | ||||
|                       <option | ||||
|                         *ngFor="let interest of interestedIn" | ||||
|                         [value]="interest" | ||||
|                   <div class="form-body"> | ||||
|                     <h4 class="form-section"> | ||||
|                       <i class="feather ft-user"></i> General Information | ||||
|                     </h4> | ||||
|                     <div class="row"> | ||||
|                       <div class="col-md-6"> | ||||
|                         <div class="form-group"> | ||||
|                           <label for="projectinput1">First Name *</label> | ||||
|                           <input | ||||
|                             type="text" | ||||
|                             id="projectinput1" | ||||
|                             class="form-control" | ||||
|                             formControlName="firstName" | ||||
|                             placeholder="First Name" | ||||
|                             [ngClass]="{ | ||||
|                               'is-invalid': submitted && f.firstName.errors | ||||
|                             }" | ||||
|                           /> | ||||
|                           <small | ||||
|                             class="form-text text-muted danger" | ||||
|                             *ngIf="submitted && f.firstName.errors" | ||||
|                             class="invalid-feedback" | ||||
|                           > | ||||
|                             <div *ngIf="f.firstName.errors.required"> | ||||
|                               First Name is required | ||||
|                             </div> | ||||
|                           </small> | ||||
|                         </div> | ||||
|                       </div> | ||||
|                       <div class="col-md-6"> | ||||
|                         <div class="form-group"> | ||||
|                           <label for="projectinput2">Last Name *</label> | ||||
|                           <input | ||||
|                             type="text" | ||||
|                             id="projectinput2" | ||||
|                             class="form-control" | ||||
|                             formControlName="lastName" | ||||
|                             placeholder="Last Name" | ||||
|                             [ngClass]="{ | ||||
|                               'is-invalid': submitted && f.lastName.errors | ||||
|                             }" | ||||
|                           /> | ||||
|                           <small | ||||
|                             class="form-text text-muted danger" | ||||
|                             *ngIf="submitted && f.lastName.errors" | ||||
|                             class="invalid-feedback" | ||||
|                           > | ||||
|                             <div *ngIf="f.lastName.errors.required"> | ||||
|                               Last Name is required | ||||
|                             </div> | ||||
|                           </small> | ||||
|                         </div> | ||||
|                       </div> | ||||
|                     </div> | ||||
|                     <div class="row"> | ||||
|                       <div class="col-md-6"> | ||||
|                         <div class="form-group"> | ||||
|                           <label for="projectinput3">E-mail *</label> | ||||
|                           <input | ||||
|                             type="text" | ||||
|                             id="projectinput3" | ||||
|                             class="form-control" | ||||
|                             formControlName="email" | ||||
|                             placeholder="E-mail" | ||||
|                             [ngClass]="{ | ||||
|                               'is-invalid': submitted && f.email.errors | ||||
|                             }" | ||||
|                           /> | ||||
|                           <small | ||||
|                             class="form-text text-muted danger" | ||||
|                             *ngIf="submitted && f.email.errors" | ||||
|                             class="invalid-feedback" | ||||
|                           > | ||||
|                             <div *ngIf="f.email.errors.required"> | ||||
|                               Email is required | ||||
|                             </div> | ||||
|                             <div *ngIf="f.email.errors.email"> | ||||
|                               Email must be a valid email address | ||||
|                             </div> | ||||
|                           </small> | ||||
|                         </div> | ||||
|                       </div> | ||||
|                       <div class="col-md-6"> | ||||
|                         <div class="form-group"> | ||||
|                           <label for="projectinput4">Contact Number *</label> | ||||
|                           <input | ||||
|                             type="text" | ||||
|                             id="projectinput4" | ||||
|                             class="form-control" | ||||
|                             formControlName="phone" | ||||
|                             placeholder="Phone" | ||||
|                             [ngClass]="{ | ||||
|                               'is-invalid': submitted && f.phone.errors | ||||
|                             }" | ||||
|                             (keypress)="keyPress($event)" | ||||
|                           /> | ||||
|                           <small | ||||
|                             class="form-text text-muted danger" | ||||
|                             *ngIf="submitted && f.phone.errors" | ||||
|                             class="invalid-feedback" | ||||
|                           > | ||||
|                             <div *ngIf="f.phone.errors.required"> | ||||
|                               phone is required | ||||
|                             </div> | ||||
|                           </small> | ||||
|                         </div> | ||||
|                       </div> | ||||
|                     </div> | ||||
|                     <h4 class="form-section"> | ||||
|                       <i class="la la-paperclip"></i> Energy Information | ||||
|                     </h4> | ||||
|                     <div class="form-group"> | ||||
|                       <label for="companyName">Company *</label> | ||||
|                       <input | ||||
|                         type="text" | ||||
|                         id="companyName" | ||||
|                         class="form-control" | ||||
|                         formControlName="company" | ||||
|                         placeholder="Company Name" | ||||
|                         [ngClass]="{ | ||||
|                           'is-invalid': submitted && f.company.errors | ||||
|                         }" | ||||
|                       /> | ||||
|                       <small | ||||
|                         class="form-text text-muted danger" | ||||
|                         *ngIf="submitted && f.company.errors" | ||||
|                         class="invalid-feedback" | ||||
|                       > | ||||
|                         {{ interest }} | ||||
|                       </option> | ||||
|                     </select> | ||||
|                     <small | ||||
|                       class="form-text text-muted danger" | ||||
|                       *ngIf="submitted && f.interestedIn.errors" | ||||
|                       class="invalid-feedback" | ||||
|                     > | ||||
|                       <div *ngIf="f.interestedIn.errors.required"> | ||||
|                         Interest is required | ||||
|                         <div *ngIf="f.company.errors.required"> | ||||
|                           Company is required | ||||
|                         </div> | ||||
|                       </small> | ||||
|                     </div> | ||||
|                     <div class="row"> | ||||
|                       <div class="col-md-6"> | ||||
|                         <div class="form-group"> | ||||
|                           <label for="projectinput5">Interested in *</label> | ||||
|                           <select | ||||
|                             id="projectinput5" | ||||
|                             class="form-control" | ||||
|                             formControlName="interestedIn" | ||||
|                             [ngClass]="{ | ||||
|                               'is-invalid': submitted && f.interestedIn.errors | ||||
|                             }" | ||||
|                           > | ||||
|                             <option | ||||
|                               *ngFor="let interest of interestedIn" | ||||
|                               [value]="interest" | ||||
|                             > | ||||
|                               {{ interest }} | ||||
|                             </option> | ||||
|                           </select> | ||||
|                           <small | ||||
|                             class="form-text text-muted danger" | ||||
|                             *ngIf="submitted && f.interestedIn.errors" | ||||
|                             class="invalid-feedback" | ||||
|                           > | ||||
|                             <div *ngIf="f.interestedIn.errors.required"> | ||||
|                               Interest is required | ||||
|                             </div> | ||||
|                           </small> | ||||
|                         </div> | ||||
|                       </div> | ||||
|                     </small> | ||||
|                   </div> | ||||
|                 </div> | ||||
|                 <div class="col-md-6"> | ||||
|                   <div class="form-group"> | ||||
|                     <label for="projectinput6">Budget *</label> | ||||
|                     <select | ||||
|                       id="projectinput6" | ||||
|                       class="form-control" | ||||
|                       formControlName="budget" | ||||
|                       [ngClass]="{ 'is-invalid': submitted && f.budget.errors }" | ||||
|                     > | ||||
|                       <option *ngFor="let range of budget" [value]="range"> | ||||
|                         {{ range }} | ||||
|                       </option> | ||||
|                     </select> | ||||
|                     <small | ||||
|                       class="form-text text-muted danger" | ||||
|                       *ngIf="submitted && f.budget.errors" | ||||
|                       class="invalid-feedback" | ||||
|                     > | ||||
|                       <div *ngIf="f.budget.errors.required"> | ||||
|                         Budget is required | ||||
|                       <div class="col-md-6"> | ||||
|                         <div class="form-group"> | ||||
|                           <label for="projectinput6">Budget *</label> | ||||
|                           <select | ||||
|                             id="projectinput6" | ||||
|                             class="form-control" | ||||
|                             formControlName="budget" | ||||
|                             [ngClass]="{ | ||||
|                               'is-invalid': submitted && f.budget.errors | ||||
|                             }" | ||||
|                           > | ||||
|                             <option | ||||
|                               *ngFor="let range of budget" | ||||
|                               [value]="range" | ||||
|                             > | ||||
|                               {{ range }} | ||||
|                             </option> | ||||
|                           </select> | ||||
|                           <small | ||||
|                             class="form-text text-muted danger" | ||||
|                             *ngIf="submitted && f.budget.errors" | ||||
|                             class="invalid-feedback" | ||||
|                           > | ||||
|                             <div *ngIf="f.budget.errors.required"> | ||||
|                               Budget is required | ||||
|                             </div> | ||||
|                           </small> | ||||
|                         </div> | ||||
|                       </div> | ||||
|                     </small> | ||||
|                     </div> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               </div> | ||||
|               <div class="form-group"> | ||||
|                 <label>Select File</label> | ||||
|                 <label id="projectinput7" class="file center-block"> | ||||
|                   <input | ||||
|                     type="file" | ||||
|                     id="file" | ||||
|                     formControlName="selectFile" | ||||
|                     [ngClass]="{ | ||||
|                       'is-invalid': submitted && f.selectFile.errors | ||||
|                     }" | ||||
|                     style="margin-left: 3px" | ||||
|                   /> | ||||
|                   <span class="file-custom"></span> | ||||
|                 </label> | ||||
|                 <small | ||||
|                   class="form-text text-muted danger" | ||||
|                   *ngIf="submitted && f.selectFile.errors" | ||||
|                   class="invalid-feedback" | ||||
|                 > | ||||
|                   <div *ngIf="f.selectFile.errors.required"> | ||||
|                     File is required | ||||
|                   <div class="form-actions"> | ||||
|                     <button type="button" class="btn btn-warning mr-1" (click)="cancel()"> | ||||
|                       <i class="feather ft-x"></i> Cancel | ||||
|                     </button> | ||||
|                     <button type="submit" class="btn btn-primary"> | ||||
|                       <i class="la la-check"></i> Save | ||||
|                     </button> | ||||
|                   </div> | ||||
|                 </small> | ||||
|               </div> | ||||
|               <div class="form-group"> | ||||
|                 <label for="projectinput8">About Project *</label> | ||||
|                 <textarea | ||||
|                   id="projectinput8" | ||||
|                   rows="5" | ||||
|                   class="form-control" | ||||
|                   formControlName="aboutProject" | ||||
|                   [ngClass]="{ | ||||
|                     'is-invalid': submitted && f.aboutProject.errors | ||||
|                   }" | ||||
|                   placeholder="About Project" | ||||
|                 ></textarea> | ||||
|                 <small | ||||
|                   class="form-text text-muted danger" | ||||
|                   *ngIf="submitted && f.aboutProject.errors" | ||||
|                   class="invalid-feedback" | ||||
|                 > | ||||
|                   <div *ngIf="f.aboutProject.errors.required"> | ||||
|                     Project Description is required | ||||
|                   </div> | ||||
|                 </small> | ||||
|               </div> | ||||
|             </div> | ||||
|             <div class="form-actions"> | ||||
|               <button type="button" class="btn btn-warning mr-1"> | ||||
|                 <i class="feather ft-x"></i> Cancel | ||||
|               </button> | ||||
|               <button type="submit" class="btn btn-primary"> | ||||
|                 <i class="la la-check"></i> Save | ||||
|               </button> | ||||
|             </div> | ||||
|           </form> | ||||
|         </ng-container> | ||||
|       </m-card> | ||||
|                 </form> | ||||
|               </ng-container> | ||||
|             </m-card> | ||||
|           </div> | ||||
|         </div> | ||||
|       </section> | ||||
|     </div> | ||||
|   </div> | ||||
| </section> | ||||
| </div> | ||||
| <!-- END: Content--> | ||||
|  | ||||
| @ -1,4 +1,7 @@ | ||||
| import { Component } from '@angular/core'; | ||||
| import { Component, ViewChild } from '@angular/core'; | ||||
| import { FormBuilder, FormGroup, NgForm, Validators } from '@angular/forms'; | ||||
| import { Router } from '@angular/router'; | ||||
| import { BlockUI, NgBlockUI } from 'ng-block-ui'; | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'app-add-edit-device', | ||||
| @ -6,9 +9,106 @@ import { Component } from '@angular/core'; | ||||
|   styleUrls: ['./add-edit-device.component.css'] | ||||
| }) | ||||
| export class AddEditDeviceComponent { | ||||
|    | ||||
| 
 | ||||
|   constructor() { } | ||||
|   @ViewChild('f', { read: true }) userProfileForm: NgForm; | ||||
| 
 | ||||
|   model: any = {}; | ||||
| 
 | ||||
|   @BlockUI('projectInfo') blockUIProjectInfo: NgBlockUI; | ||||
|   @BlockUI('userProfile') blockUIUserProfile: NgBlockUI; | ||||
| 
 | ||||
|   options = { | ||||
|     minimize: true, | ||||
|     reload: true, | ||||
|     expand: true, | ||||
|     close: true | ||||
|   }; | ||||
|   public breadcrumb: any; | ||||
| 
 | ||||
|   projectInfo: FormGroup; | ||||
| 
 | ||||
|   submitted = false; | ||||
| 
 | ||||
|   interestedIn = ['design', 'development', 'illustration', 'branding', 'video']; | ||||
|   budget = ['less than 5000$', '5000$ - 10000$', '10000$ - 20000$', 'more than 20000$']; | ||||
|   priority = ['Low', 'Medium', 'High']; | ||||
|   status = ['Not Started', 'Started', 'Fixed']; | ||||
| 
 | ||||
|   constructor(private formBuilder: FormBuilder, private router: Router) { } | ||||
| 
 | ||||
|   ngOnInit() { | ||||
|     this.breadcrumb = { | ||||
|       'mainlabel': 'Basic Forms', | ||||
|       'links': [ | ||||
|         { | ||||
|           'name': 'Home', | ||||
|           'isLink': true, | ||||
|           'link': '/dashboard/sales' | ||||
|         }, | ||||
|         { | ||||
|           'name': 'Form Layouts', | ||||
|           'isLink': true, | ||||
|           'link': '#' | ||||
|         }, | ||||
|         { | ||||
|           'name': 'Basic Forms', | ||||
|           'isLink': false | ||||
|         } | ||||
|       ] | ||||
|     }; | ||||
| 
 | ||||
|     this.projectInfo = this.formBuilder.group({ | ||||
|       firstName: ['', Validators.required], | ||||
|       lastName: ['', Validators.required], | ||||
|       email: ['', [Validators.required, Validators.email]], | ||||
|       phone: ['', Validators.required], | ||||
|       company: ['', Validators.required], | ||||
|       interestedIn: ['', Validators.required], | ||||
|       budget: ['', Validators.required], | ||||
|       selectFile: [, Validators.required], | ||||
|       aboutProject: ['', Validators.required], | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   get f() { | ||||
|     return this.projectInfo.controls; | ||||
|   } | ||||
| 
 | ||||
|   onProjectInfoSubmit() { | ||||
|     this.submitted = true; | ||||
| 
 | ||||
|     if (this.projectInfo.invalid) { | ||||
|       return; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   reloadProjectInfo() { | ||||
|     this.blockUIProjectInfo.start('Loading..'); | ||||
| 
 | ||||
|     setTimeout(() => { | ||||
|       this.blockUIProjectInfo.stop(); | ||||
|     }, 2500); | ||||
|   } | ||||
| 
 | ||||
|   reloadUserProfile() { | ||||
|     this.blockUIUserProfile.start('Loading..'); | ||||
| 
 | ||||
|     setTimeout(() => { | ||||
|       this.blockUIUserProfile.stop(); | ||||
|     }, 2500); | ||||
|   } | ||||
| 
 | ||||
|   keyPress(event: any) { | ||||
|     const pattern = /[0-9\+\-\ ]/; | ||||
| 
 | ||||
|     const inputChar = String.fromCharCode(event.charCode); | ||||
|     if (event.keyCode !== 8 && !pattern.test(inputChar)) { | ||||
|       event.preventDefault(); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   cancel() { | ||||
|     this.router.navigate(['/device']);  // Adjust the path as per your routing setup
 | ||||
|   } | ||||
|    | ||||
| } | ||||
|  | ||||
| @ -13,13 +13,10 @@ | ||||
|               (reloadFunction)="reloadAddRows($event)" | ||||
|             > | ||||
|               <ng-container mCardBody> | ||||
|                 <!-- <p class="card-text">New rows can be added to a DataTable very easily using the | ||||
|                     (addFieldValue()) function. | ||||
|                   </p> --> | ||||
|                 <button | ||||
|                   id="addRow" | ||||
|                   class="btn btn-secondary my-1 mb-2" | ||||
|                   (click)="addFieldValue()" | ||||
|                   [routerLink]="['/device/add-row']" | ||||
|                 > | ||||
|                   <i class="feather ft-plus"></i>  Add new row | ||||
|                 </button> | ||||
|  | ||||
| @ -40,6 +40,10 @@ import { ModalAddEditComponent } from './modal-add-edit/modal-add-edit.component | ||||
|       { | ||||
|         path: '', | ||||
|         component: DeviceComponent | ||||
|       }, | ||||
|       { | ||||
|         path: 'add-row', | ||||
|         component: AddEditDeviceComponent | ||||
|       } | ||||
|     ]) | ||||
|   ] | ||||
|  | ||||
| @ -7,7 +7,7 @@ | ||||
|     <a class="heading-elements-toggle" (click)="toggleMobileMenu()"><i class="la la-ellipsis-v font-medium-3"></i></a> | ||||
|     <div class="heading-elements" #mCardHeaderTools> | ||||
|       <ng-content select="[mCardHeaderTools]"></ng-content> | ||||
|       <ul class="list-inline mb-0"> | ||||
|       <!-- <ul class="list-inline mb-0"> | ||||
|         <li *ngIf="options && options.minimize"><a data-action="collapse"><i class="feather ft-minus" | ||||
|               (click)="toggleCollpase($event)"></i></a></li> | ||||
|         <li *ngIf="options && options.reload"><a data-action="reload"><i class="feather ft-rotate-cw" | ||||
| @ -16,7 +16,7 @@ | ||||
|               (click)="toggleExpand($event)"></i></a></li> | ||||
|         <li *ngIf="options && options.close"><a data-action="close"><i class="feather ft-x" (click)="close($event)"></i></a> | ||||
|         </li> | ||||
|       </ul> | ||||
|       </ul> --> | ||||
|     </div> | ||||
|   </div> | ||||
|   <div class="card-content collpase show" #mCardContent> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user