Skip to content

Commit 58210c8

Browse files
committed
Fixes #19
1 parent 576456a commit 58210c8

File tree

6 files changed

+66
-51
lines changed

6 files changed

+66
-51
lines changed

README.md

+20
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,27 @@ Get column sort event with parameters.
9696
**_column[number]:_** Sort tiggered column.
9797

9898
**_type[string]:_** Sort type ascending(ASC) or descending (DESC).
99+
100+
#### columnRearranged [event]
101+
Get column re-arrange event with parameters.
102+
103+
**_HTML_**
104+
```html
105+
<data-grid [pagination]="pagination" [theme]="theme"
106+
[columnDefs]="columnDefs" [rowData]="rowData" (columnRearranged)="columnRearranged($event)" ></data-grid>
107+
```
108+
**_JavaScript_**
109+
```javascript
110+
columnRearranged(eventArgs){
111+
console.log("Change Triggered; Column:",eventArgs.column, " Moved To: ", eventArgs.movedTo);
112+
}
113+
114+
```
115+
##### Re-arrange Event Parameters
116+
**_column[number]:_** Re-arranged column number.
99117

118+
**_movedTo[number]:_** Final column index of the column.
119+
100120
### Themes
101121
* **theme [string]:** Theme based table. The available themes are as follows
102122
1. Matrial Theme (metrial-theme)

projects/angular-open-datagrid/README.md

+28-2
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,14 @@ Get data change event with parameters.
7070
}
7171
```
7272
##### Filter Change Event Parameters
73+
7374
**_isCommon[boolean]:_** If filter triggered through common filter.
75+
7476
**_column[number]:_** If the filter tiggered from any particular column. This field exists if only _isCommon=false_.
77+
7578
**_data[Array]:_** Filter values.
7679

80+
7781
#### dataSorted [event]
7882
Get column sort event with parameters.
7983

@@ -88,9 +92,31 @@ Get column sort event with parameters.
8892
console.log("Column: ",eventArgs.column, "Type: ",eventArgs.type );
8993
}
9094
```
91-
##### Filter Change Event Parameters
92-
**_column[number]:_** ISort tiggered column.
95+
##### Sorted Event Parameters
96+
**_column[number]:_** Sort tiggered column.
97+
9398
**_type[string]:_** Sort type ascending(ASC) or descending (DESC).
99+
100+
#### columnRearranged [event]
101+
Get column re-arrange event with parameters.
102+
103+
**_HTML_**
104+
```html
105+
<data-grid [pagination]="pagination" [theme]="theme"
106+
[columnDefs]="columnDefs" [rowData]="rowData" (columnRearranged)="columnRearranged($event)" ></data-grid>
107+
```
108+
**_JavaScript_**
109+
```javascript
110+
columnRearranged(eventArgs){
111+
console.log("Change Triggered; Column:",eventArgs.column, " Moved To: ", eventArgs.movedTo);
112+
}
113+
114+
```
115+
##### Re-arrange Event Parameters
116+
**_column[number]:_** Re-arranged column number.
117+
118+
**_movedTo[number]:_** Final column index of the column.
119+
94120
### Themes
95121
* **theme [string]:** Theme based table. The available themes are as follows
96122
1. Matrial Theme (metrial-theme)

projects/angular-open-datagrid/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angular-open-datagrid",
3-
"version": "1.4.2",
3+
"version": "1.4.3",
44
"license": "(MIT)",
55
"homepage": "https://github.com/sowvikr/angular-open-datagrid-lilb",
66
"bugs": {

projects/angular-open-datagrid/src/lib/data-table/data-table.component.ts

+12-47
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,14 @@ interface DataFilteredEventData {
6767
isCommon: boolean,
6868
filterOptions: any
6969
}
70-
7170
interface DataSortedEventData {
7271
column: number,
7372
type: string,
7473
}
74+
interface ColumnRearrangedEventData {
75+
column: number,
76+
movedTo: number,
77+
}
7578

7679

7780
@Component({
@@ -100,6 +103,7 @@ export class DataTableComponent implements OnInit {
100103
@Output() dataChanged = new EventEmitter<DataChangeEventData>();
101104
@Output() dataFiltered = new EventEmitter<DataFilteredEventData>();
102105
@Output() dataSorted = new EventEmitter<DataSortedEventData>();
106+
@Output() columnRearranged = new EventEmitter<ColumnRearrangedEventData>();
103107
@Input() pagination;
104108
private pageSize;
105109
public dragTheme;
@@ -338,21 +342,6 @@ export class DataTableComponent implements OnInit {
338342
this.applyFilter(this.FilterData, this.TableRows);
339343
}
340344

341-
/*
342-
private getFilteredValue(column:number, filterOptions:Array<FilterOptions>, data:string) {
343-
let filtered = false;
344-
if (!filterOptions[column].values.length) {
345-
return true;
346-
}
347-
for (let i = 0; i < filterOptions[column].values.length; ++i) {
348-
if (filterOptions[column].operator == 'or') {
349-
filtered = filtered || filterOptions[column].comparator.call(data, filterOptions[column].values[i])
350-
}
351-
}
352-
return filtered;
353-
}
354-
*/
355-
356345

357346
private applyFilter(filterData:Array<FilterOptions>, tableRows:Array<any>) {
358347
let result = this.filterService.filter(filterData, tableRows);
@@ -463,7 +452,7 @@ export class DataTableComponent implements OnInit {
463452
private applySort(column:number, sortState:boolean) {
464453
const that:this = this;
465454
// Sort te table.
466-
this.TableRows.sort((a, b) => that.sortFunction(a, b, column, sortState));
455+
this.TableRows.sort((a, b) => DataTableComponent.sortFunction(a, b, column, sortState));
467456
let sortEventData:DataSortedEventData = {column: column, type: sortState ? "ASC" : "DESC"};
468457
this.dataSorted.emit(sortEventData);
469458
this.pagedRows();
@@ -472,7 +461,7 @@ export class DataTableComponent implements OnInit {
472461
}
473462

474463
// Sort function
475-
private sortFunction(a, b, columnValue, isAsc) {
464+
private static sortFunction(a, b, columnValue, isAsc) {
476465
if (a.data[columnValue] === b.data[columnValue]) {
477466
return 0;
478467
} else if (isAsc) {
@@ -545,7 +534,7 @@ export class DataTableComponent implements OnInit {
545534
}
546535

547536

548-
private getCommonFiliterIndex(filterDataValue:Array<FilterOption>):number {
537+
private static getCommonFiliterIndex(filterDataValue:Array<FilterOption>):number {
549538
for (let i = 0; i < filterDataValue.length; ++i) {
550539
if (filterDataValue[i].isCommon) {
551540
return i;
@@ -566,7 +555,7 @@ export class DataTableComponent implements OnInit {
566555
if (!this.FilterData[i]) {
567556
continue;
568557
}
569-
let index = this.getCommonFiliterIndex(this.FilterData[i].values);
558+
let index = DataTableComponent.getCommonFiliterIndex(this.FilterData[i].values);
570559
if (index >= 0) {
571560
this.FilterData[i].values.splice(index, 1);
572561
}
@@ -575,7 +564,7 @@ export class DataTableComponent implements OnInit {
575564
else {
576565
for (let i = 0; i < this.columnDefs.length; ++i) {
577566
this.FilterData[i] = this.FilterData[i] || {values: []};
578-
let index = this.getCommonFiliterIndex(this.FilterData[i].values);
567+
let index = DataTableComponent.getCommonFiliterIndex(this.FilterData[i].values);
579568
if (index >= 0) {
580569
this.FilterData[i].values[index].value = text;
581570
}
@@ -739,10 +728,11 @@ export class DataTableComponent implements OnInit {
739728
}
740729
}
741730
this.ref.detectChanges();
731+
this.columnRearranged.emit({column:previousIndex, movedTo:currentIndex});
742732
}
743733

744734
swapped(event:any) {
745-
let clientWidth = (event.container.element.nativeElement.clientWidth / this.columnDefs.length) - 10
735+
let clientWidth = (event.container.element.nativeElement.clientWidth / this.columnDefs.length) - 10;
746736
this.Moved = [];
747737
if (this.previousIndex === undefined)
748738
this.previousIndex = event.previousIndex;
@@ -773,31 +763,6 @@ export class DataTableComponent implements OnInit {
773763

774764
pasteData(pasteData:Array<Array<any>>) {
775765
let pasteRow = 0, pasteColumn = 0, prevCol;
776-
/*
777-
for (let i = 0; i < this.contextMenuData.length; ++i) {
778-
if (!this.contextMenuData[i])
779-
continue;
780-
let row = this.contextMenuData[i];
781-
for (let j = 0; j < row.length; ++j) {
782-
if (!row[j]) {
783-
continue;
784-
}
785-
if (!pasteData[pasteRow][pasteColumn]) {
786-
pasteColumn++;
787-
continue;
788-
}
789-
this.PagedRows[i].data[j] = pasteData[pasteRow][pasteColumn];
790-
if (!prevCol) {
791-
prevCol = j;
792-
}
793-
else if (prevCol !== j) {
794-
pasteColumn++;
795-
prevCol = j;
796-
}
797-
}
798-
pasteRow++;
799-
}
800-
*/
801766
let startRow, startColumn;
802767
for (let i = 0; i < this.contextMenuData.length; ++i) {
803768
if (!this.contextMenuData[i])
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
<div *ngFor="let dataTable of dataTables">
33
<data-grid [pagination]="dataTable.pagination" [theme]="dataTable.theme"
4-
[columnDefs]="dataTable.columnDefs" [rowData]="dataTable.rowData" (dataChanged)="valueChanged($event)"></data-grid>
4+
[columnDefs]="dataTable.columnDefs" [rowData]="dataTable.rowData" (dataChanged)="valueChanged($event)"
5+
(columnRearranged)="columnRearranged($event)"></data-grid>
56
</div>

src/app/pages/dark-theme/dark-theme.component.ts

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ export class DarkThemeComponent implements OnInit {
1010
valueChanged (valueChanged){
1111
console.log("Change Triggered",valueChanged);
1212
}
13+
columnRearranged(eventArgs){
14+
console.log("Change Triggered; Column:",eventArgs.column, " Moved To: ", eventArgs.movedTo);
15+
}
1316

1417
dataTables: Array<any> = [
1518
{

0 commit comments

Comments
 (0)