ng-metamagic-extensions
Version:
[](https://badge.fury.io/js/ng-metamagic-extensions) []() [ • 6.42 kB
text/typescript
import {AfterViewInit, Component, EventEmitter, Input, OnInit, Output,} from '@angular/core';
import {ItemSelectorService} from "./itemselector.service";
export class ItemSelectorComponent implements OnInit,AfterViewInit {
height: any;
httpUrl: string;
dataReader: string;
httpMethod: string;
ItemSelectBindData: any;
displayField : string;
valueField : string;
availableRecords: any = new EventEmitter<any>();
selectedRecords: any = new EventEmitter<any>();
availableData: any[];
selectedData: any[];
switchingObject: any;
objectIndex: any;
constructor(private itemSelectorService: ItemSelectorService) {
this.selectedData = [];
}
ngOnInit() {
}
ngAfterViewInit() {
if (this.httpMethod && this.httpUrl) {
this.itemSelectorService.fetchData(this, this.httpUrl, this.httpMethod);
}
else if (this.ItemSelectBindData) {
this.setData(this.ItemSelectBindData);
}
}
setStyles() {
let height : any;
if(this.height){
height = this.height+'px';
}else {
height = '300px';
}
let styles = {
'position': 'relative',
'height':height
};
return styles;
}
setData(httpResponse : any){
let responsedata = httpResponse;
let dr = this.dataReader.split(".");
for(let ir = 0 ; ir<dr.length; ir++){
responsedata = responsedata[dr[ir]];
}
responsedata.forEach((option : any,index : any)=>{
option['isSelected']=false;
});
this.availableData = responsedata;
}
itemCkick(data : any,index : any){
this.switchingObject= data;
this.objectIndex = index;
}
rightSwitch(){
if(this.switchingObject != null) {
if (!this.switchingObject.isSelected) {
this.selectedData.push(this.switchingObject);
this.switchingObject.isSelected = true;
this.availableData.forEach((option, index) => {
if (option.isSelected) {
this.availableData.splice(index, 1);
}
});
this.switchingObject = null;
this.dataEmitter();
}
}
}
leftSwitch(){
if(this.switchingObject != null){
if(this.switchingObject.isSelected){
this.availableData.push(this.switchingObject);
this.switchingObject.isSelected = false;
this.selectedData.forEach((option,index)=>{
if (!option.isSelected) {
this.selectedData.splice(index, 1);
}
});
this.switchingObject = null;
this.dataEmitter();
}
}
}
upSwitch(){
if(this.switchingObject != null) {
if (this.switchingObject.isSelected) {
let index = this.selectedData[this.objectIndex];
this.selectedData[this.objectIndex] = this.selectedData[this.objectIndex - 1];
this.selectedData[this.objectIndex - 1] = index;
this.switchingObject = null;
this.dataEmitter();
}
}
}
downSwitch(){
if(this.switchingObject != null) {
if (this.switchingObject.isSelected) {
if (this.selectedData.length - 1 != this.objectIndex) {
let index = this.selectedData[this.objectIndex];
this.selectedData[this.objectIndex] = this.selectedData[this.objectIndex + 1];
this.selectedData[this.objectIndex + 1] = index;
this.switchingObject = null;
this.dataEmitter();
}
}
}
}
moveTop(){
let tempArray : any =[];
if(this.switchingObject != null && this.switchingObject.isSelected){
if(this.selectedData.length>1) {
tempArray[0] = this.selectedData[this.objectIndex];
this.selectedData.splice(this.objectIndex, 1);
this.selectedData.forEach((option)=>{
tempArray.push(option)
});
this.selectedData = tempArray;
this.switchingObject = null;
this.dataEmitter();
}
}
}
moveDown(){
if(this.switchingObject != null) {
if (this.switchingObject.isSelected && this.selectedData.length > 1) {
this.selectedData.splice(this.objectIndex, 1);
this.selectedData[this.selectedData.length] = this.switchingObject;
}
}
this.switchingObject = null;
this.dataEmitter();
}
dataEmitter(){
this.availableRecords.emit(this.availableData);
this.selectedRecords.emit(this.selectedData);
}
}