bvportalui's People
bvportalui's Issues
Invoice Bug -> On change of client, employee and project load in product section
Add Employee basic info
Add State management NGRX
Invoice Flow Update
Invoice Bug -> On change of client, term shoul blank with error message for assign client term from client
NGRX for application
Code Cleanup
project assignment -> search is not working
set Employee Per Hour
UI UX betterment
Timesheet Flow
Employee will submit timesheet and Manager or admin or HR will approve/Reject.
Timesheet is in weekly form.
Employee will add new timesheet as per the manager comment in case of reject.
Explore charts
Refer Flow
Refer will done by Employee so refer table will contain ReferBy(EmployeeId from Employee Table). Same Employee Id will saved in the Candidate table as ReferBy.
Login Page
Timesheet not working
Filter and page design change NEW UI CHANGES FOR ALL THE FORMS (ASSET DONE)
NEW UI CHANGES FOR ALL THE FORMS (ASSET DONE)
STEP 1: ADD PAGE NAME IN STORE in asset.component.ts
CONSTRUCTOR PARAMETER
private store: Store
CONSTRUCTOR BODY(Change Assets to respective page name)
this.store.dispatch(increment({message:"Assets"}));
ADD IMPORTS ON TOP
import { Store } from '@ngrx/store';
import { increment } from 'src/app/core/store/counter.actions';
STEP 2: ADD BOTTOMSHEET FOR FILTER in asset.component.ts
UPDATE TemplateRef in @angular/core
import { Component, ElementRef, OnInit, TemplateRef, ViewChild } from '@angular/core';
ADD MatBottomSheet IMPORT
import { MatBottomSheet } from '@angular/material/bottom-sheet';
CONSTRUCTOR PARAMETER
private bottomSheet: MatBottomSheet
ADD VIEWCHILD
@ViewChild('templateBottomSheet') TemplateBottomSheet: TemplateRef | undefined;
CALL loadSearchHistory IN OnInit
this.loadSearchHistory();
CREATE METHODS (Change asset-search to -search) add after last method
public openSearchFilter(){
if(this.TemplateBottomSheet)
this.bottomSheet.open(this.TemplateBottomSheet);
}
public closeSearchFilter(){
this.bottomSheet.dismiss();
}
searchHistory:string[] =[]
public onSearchFilter(data:any){
if(data.trim() != ""){
this.searchHistory =[]
this.loadSearchHistory()
if(!this.searchHistory.includes(data)){
this.searchHistory.push(data);
} else {
this.searchHistory = this.searchHistory.filter(i => i !== data)
this.searchHistory.push(data);
}
localStorage.setItem("asset-search", JSON.stringify(this.searchHistory));
}
if (!this.dataSource) {
return;
}
this.dataSource.filter = data;
this.bottomSheet.dismiss();
}
public loadSearchHistory(){
if (localStorage.getItem("asset-search") != null) {
this.searchHistory = JSON.parse(localStorage.getItem("asset-search")!.toString());
}
}
public onClearSearchHistory(){
localStorage.removeItem("asset-search")
this.searchHistory=[]
}
STEP 3: asset.component.html changes
COMMENT FILTER AND RELOAD DIV
ADD SEARCH & SHOW ALL RECORDS JUST BELOW ADD NEW BUTTON
<a href="javascript:;" (click)="openSearchFilter()">Search</a>
<a href="javascript:;" (click)="onSearchFilter('')" style="margin-left:4px">Show all records</a>
ADD BOTTOMSHEET TEMPLATE IN END
<ng-template let-bottomSheetRef="bottomSheetRef" #templateBottomSheet>
<button mat-raised-button (click)="closeSearchFilter()" color="warn" class="cancelBtn">X</button>
<mat-form-field appearance="outline">
<mat-label>Search</mat-label>
<input matInput #filter>
</mat-form-field>
<button mat-raised-button color="primary" (click)="onSearchFilter(filter.value)" >Search</button><br/>
<a href="javascript:;" (click)="onSearchFilter('')">Show all records</a>
<hr/>
<div *ngIf="searchHistory.length==0">
No Search History
</div>
<div *ngIf="searchHistory.length>0" style="width:480px">
<div style="width:100%">
<label>Search History</label>
<a href="javascript:;" (click)="onClearSearchHistory()" *ngIf="searchHistory.length>0" style="float:right">Clear Search History</a>
</div>
<mat-chip *ngFor="let item of searchHistory.reverse()" (click)="filter.value=item" style="margin-right:4px" >{{item}}</mat-chip>
</div>
</ng-template>
STEP 3: asset.component.css changes
.cancelBtn{
float: right;
min-width: 38px !important;
}
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.