angular-gantt
Version:
Gantt chart component for AngularJS
80 lines (70 loc) • 2 kB
text/typescript
export default class GanttArrays {
moveToIndex (array: any[], oldIndex: number, newIndex: number) {
if (newIndex >= array.length) {
let k = newIndex - array.length
while ((k--) + 1) {
array.push(undefined)
}
}
array.splice(newIndex, 0, array.splice(oldIndex, 1)[0])
return array
}
getRemovedIds<T> (newArray: T[], oldArray: T[], idProperty = 'id') {
let i
let l
let removedIds = []
if (oldArray !== undefined) {
for (i = 0, l = oldArray.length; i < l; i++) {
removedIds.push(oldArray[i][idProperty])
}
}
if (newArray !== undefined) {
for (i = 0, l = newArray.length; i < l; i++) {
let newObject = newArray[i]
if (newObject[idProperty] !== undefined) {
let newObjectIndex = removedIds.indexOf(newObject[idProperty])
if (newObjectIndex > -1) {
removedIds.splice(newObjectIndex, 1)
}
}
}
}
return removedIds
}
indexOfId<T> (array: T[], value: T, idProperties: string|string[] = 'id') {
let i
if (idProperties instanceof Array) {
for (i = array.length - 1; i >= 0; i--) {
let arrayValue = array[i]
// tslint:disable:one-variable-per-declaration
for (let k = 0, l = idProperties.length; k < l; k++) {
arrayValue = arrayValue[idProperties[k]]
}
if (arrayValue === value) {
return i
}
}
return -1
}
for (i = array.length - 1; i >= 0; i--) {
if (array[i][idProperties] === value) {
return i
}
}
return -1
}
removeId<T> (array: T[], value: T, idProperties?: string|string[]) {
let indexOf = this.indexOfId(array, value, idProperties)
if (indexOf > -1) {
return array.splice(indexOf, 1)[0]
}
}
remove<T> (array: T[], value: T) {
let index = array.indexOf(value)
if (index > -1) {
array.splice(index, 1)
return true
}
return false
}
}