|
|
@@ -73,12 +73,15 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
this.action = params['action'];
|
|
|
this.data = JSON.parse(params['data']);
|
|
|
});
|
|
|
- this.tasksData = JSON.parse(localStorage.getItem('tasks_bd')!);
|
|
|
+ this.tasksData = this._samwfService.getArray();
|
|
|
translate.setDefaultLang('es');
|
|
|
+
|
|
|
this.formGroup = this.createFormGroup();
|
|
|
}
|
|
|
|
|
|
ngOnInit(): void {
|
|
|
+ this.tasksData = this._samwfService.getArray();
|
|
|
+
|
|
|
this.getTasksWorkflow();
|
|
|
}
|
|
|
|
|
|
@@ -227,22 +230,22 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// Añadir al arreglo la informacion obtenida y separandolo por lo caminos si y no
|
|
|
for (let index = 0; index < arrTransform.length; index++) {
|
|
|
arrFormat.push(arrTransform[index].conditionalYes);
|
|
|
arrFormat.push(arrTransform[index].conditionalNo);
|
|
|
}
|
|
|
|
|
|
- // Si alguna tarea no encontro coincidencias quiere decir que su camino termina en la tarea
|
|
|
+ // Si alguna tarea no encontro coincidencias quiere decir que su camino termina en la tarea
|
|
|
// Que el usuario indico como referencia en el formulario
|
|
|
for (let index = 0; index < arrFormat.length; index++) {
|
|
|
if (arrFormat[index].nextSequence == null) {
|
|
|
arrFormat[index].nextSequence = this.nextSecuenceFlag;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // Para evitar problemas de datos repetidos, a la tarea principal seleccionada
|
|
|
+
|
|
|
+ // Para evitar problemas de datos repetidos, a la tarea principal seleccionada
|
|
|
// Se le asignan sus valores establecidos (secuencia, nextSequence y chagueSequence)
|
|
|
principalTask.sequence = this.newSequenceCalculate;
|
|
|
principalTask.nextSequence = arrFormat[0].sequence;
|
|
|
@@ -258,12 +261,11 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
for (let index = 0; index < arrCondtionals.length; index++) {
|
|
|
this.workflowTasks.push(arrCondtionals[index]);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// Al añadir la tarea principal, la tarea anterior debe tener la nueva referencia en su nextSequence
|
|
|
let positionTaskRegister = this.workflowTasks.findIndex((object: any) => {
|
|
|
return object.sequence == this.tasks?.value.sequence;
|
|
|
});
|
|
|
-
|
|
|
|
|
|
this.workflowTasks[positionTaskRegister - 1].nextSequence =
|
|
|
this.newSequenceCalculate;
|
|
|
@@ -273,12 +275,12 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
return this.workflowTasks.indexOf(item) === index;
|
|
|
});
|
|
|
|
|
|
- // Ordenar el arreglo de tareas por medio de la secuencia
|
|
|
+ // Ordenar el arreglo de tareas por medio de la secuencia
|
|
|
this.workflowTasks.sort((a: any, b: any) => a.sequence - b.sequence);
|
|
|
|
|
|
// Añadir las tareas al objeto del workflow en la referencia "tasks"
|
|
|
this.workflowObject.tasks = this.workflowTasks;
|
|
|
-
|
|
|
+
|
|
|
// Llamar al servicio para actualizar el flujo de trabajo
|
|
|
this.asingTaskWorkflow();
|
|
|
}
|
|
|
@@ -288,7 +290,7 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
// al registrar ordenar el nuevo arreglo
|
|
|
task.tasks.sequence = this.newSequenceCalculate;
|
|
|
task.tasks.nextSequence = this.nextSecuenceFlag;
|
|
|
-
|
|
|
+
|
|
|
// Añandir la tarea al arreglo de tareas original del workflow
|
|
|
this.workflowTasks.push(task.tasks);
|
|
|
|
|
|
@@ -296,8 +298,8 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
this.workflowTasks = this.workflowTasks.filter((item, index) => {
|
|
|
return this.workflowTasks.indexOf(item) === index;
|
|
|
});
|
|
|
-
|
|
|
- // Ordenar el arreglo de tareas por medio de la secuencia
|
|
|
+
|
|
|
+ // Ordenar el arreglo de tareas por medio de la secuencia
|
|
|
this.workflowTasks.sort((a: any, b: any) => a.sequence - b.sequence);
|
|
|
let positionTaskRegister = this.workflowTasks.findIndex((object: any) => {
|
|
|
return object.sequence == task.tasks.sequence;
|
|
|
@@ -328,8 +330,8 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
return object.sequence == this.data.sequence;
|
|
|
}
|
|
|
);
|
|
|
-
|
|
|
- // Ciclar el arreglo de condicionales enviado por el usuario contra el arreglo original
|
|
|
+
|
|
|
+ // Ciclar el arreglo de condicionales enviado por el usuario contra el arreglo original
|
|
|
// Encontrar los datos que no cuenten con una secuencia asignada y por medio de la posicion asignarsela nuevamente
|
|
|
for (let index = 0; index < this.conditionals.value.length; index++) {
|
|
|
if (this.conditionals.value[index].conditionalYes.sequence == null) {
|
|
|
@@ -354,17 +356,17 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
this.valueConditionalsArray[index].conditionalNo.changeSequence;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// Las tareas modificadas se agregan nuevamente
|
|
|
for (let index = 0; index < this.conditionals.value.length; index++) {
|
|
|
taskToArray.push(this.conditionals.value[index].conditionalYes);
|
|
|
taskToArray.push(this.conditionals.value[index].conditionalNo);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// La tarea principal pierde los valroes por lo que se busca dentro del arreglo y se asignan de nuevo los valores
|
|
|
taskToArray.push(this.tasks?.value);
|
|
|
let taskPrincipalAux = taskToArray.pop();
|
|
|
-
|
|
|
+
|
|
|
for (let index = 0; index < taskToArray.length; index++) {
|
|
|
let positionTask = this.workflowObject.tasks.findIndex((object: any) => {
|
|
|
return object.sequence == taskToArray[index].sequence;
|
|
|
@@ -402,7 +404,7 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
return object.sequence === this.data.changeSequence;
|
|
|
}
|
|
|
);
|
|
|
-
|
|
|
+
|
|
|
// Se crea un arreglo tomando como base la siguiente secuencia y el cambio de secuencia de la tarea principal
|
|
|
// Con este arreglo se tienen las tareas del camino principal positivo
|
|
|
filterFlow = this.workflowTasks.filter((object: any) => {
|
|
|
@@ -411,7 +413,7 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
object.sequence <= this.data.changeSequence
|
|
|
);
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
// Se ciclan las tareas para obtener el ultimo cambio de secuencia y realizar un filtro como el anterior
|
|
|
// Buscando obtener las tareas del camino negativo
|
|
|
for (let index = 0; index < this.workflowTasks.length; index++) {
|
|
|
@@ -442,7 +444,7 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// Con la posicion del ultimo cambio de secuencia se puede filtrar el arreglo para obtener las tareas del camino negativo
|
|
|
filterFlowAux = this.workflowTasks.filter((object: any) => {
|
|
|
return (
|
|
|
@@ -451,10 +453,10 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
this.workflowTasks[positionTaskChangeSequence].sequence
|
|
|
);
|
|
|
});
|
|
|
-
|
|
|
- // Union de los arreglos
|
|
|
+
|
|
|
+ // Union de los arreglos
|
|
|
filterFlow = filterFlow.concat(filterFlowAux);
|
|
|
-
|
|
|
+
|
|
|
// Al arreglo obtenido se realiza un filtro para obtener los niveles a los que pertenece cada tarea
|
|
|
filterFlow = this.filterFlowFor(filterFlow);
|
|
|
|
|
|
@@ -493,10 +495,12 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
});
|
|
|
|
|
|
if (positionTaskNo > -1 && positionTaskYes > -1) {
|
|
|
- filterFlow[positionTaskNo].indexPosition = this.arrayLettersForLevel[keyNum] + 1;
|
|
|
+ filterFlow[positionTaskNo].indexPosition =
|
|
|
+ this.arrayLettersForLevel[keyNum] + 1;
|
|
|
filterFlow[positionTaskNo].taskCurrent = filterFlow[index];
|
|
|
|
|
|
- filterFlow[positionTaskYes].indexPosition = this.arrayLettersForLevel[keyNum] + 1;
|
|
|
+ filterFlow[positionTaskYes].indexPosition =
|
|
|
+ this.arrayLettersForLevel[keyNum] + 1;
|
|
|
filterFlow[positionTaskYes].taskCurrent = filterFlow[index];
|
|
|
|
|
|
if (
|
|
|
@@ -505,18 +509,22 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
index == 6 &&
|
|
|
filterFlow[index].indexPosition.includes('2'))
|
|
|
) {
|
|
|
- filterFlow[positionTaskNo].indexPosition = this.arrayLettersForLevel[keyNum] + 2;
|
|
|
+ filterFlow[positionTaskNo].indexPosition =
|
|
|
+ this.arrayLettersForLevel[keyNum] + 2;
|
|
|
filterFlow[positionTaskNo].taskCurrent = filterFlow[index];
|
|
|
|
|
|
- filterFlow[positionTaskYes].indexPosition = this.arrayLettersForLevel[keyNum] + 2;
|
|
|
+ filterFlow[positionTaskYes].indexPosition =
|
|
|
+ this.arrayLettersForLevel[keyNum] + 2;
|
|
|
filterFlow[positionTaskYes].taskCurrent = filterFlow[index];
|
|
|
}
|
|
|
|
|
|
if (filterFlow[positionTaskNo].changeSequence != null) {
|
|
|
- filterFlow[positionTaskNo].indexPosition = this.arrayLettersForLevel[keyNum] + 2;
|
|
|
+ filterFlow[positionTaskNo].indexPosition =
|
|
|
+ this.arrayLettersForLevel[keyNum] + 2;
|
|
|
filterFlow[positionTaskNo].taskCurrent = filterFlow[index];
|
|
|
|
|
|
- filterFlow[positionTaskYes].indexPosition = this.arrayLettersForLevel[keyNum] + 2;
|
|
|
+ filterFlow[positionTaskYes].indexPosition =
|
|
|
+ this.arrayLettersForLevel[keyNum] + 2;
|
|
|
filterFlow[positionTaskYes].taskCurrent = filterFlow[index];
|
|
|
|
|
|
positionAuxiliarNo = filterFlow.findIndex((object: any) => {
|
|
|
@@ -584,7 +592,7 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
for (let index = 0; index < filterFlow.length; index++) {
|
|
|
let positionTaskYes = -1;
|
|
|
let positionTaskNo = -1;
|
|
|
-
|
|
|
+
|
|
|
// Ciclar el arreglo ordenado para añadirlas al formulario dinamico
|
|
|
|
|
|
if (filterFlow[index + 1] != undefined) {
|
|
|
@@ -628,10 +636,10 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
this.indexPositionAux++;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// Una vez creados los campos dinamicos setearles el valor
|
|
|
// !!! CON TAREAS DUPLICADAS EL SELECT QUITA EL VALOR DE LAS PRIMERAS Y DEJA LA ULTIMA
|
|
|
- // BUSCAR SOLUCION
|
|
|
+ // BUSCAR SOLUCION
|
|
|
for (let index = 0; index < this.conditionals.value.length; index++) {
|
|
|
this.conditionals.value[index] = arr[index];
|
|
|
this.conditionals.controls[index].setValue(arr[index]);
|
|
|
@@ -892,8 +900,12 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
conditionalYes: new FormControl(''),
|
|
|
conditionalNo: new FormControl(''),
|
|
|
taskCurrent: new FormControl(taskCurrent),
|
|
|
- indexYes: new FormControl(this.arrayLettersForLevel[this.indexPositionAux] + 1),
|
|
|
- indexNo: new FormControl(this.arrayLettersForLevel[this.indexPositionAux] + 2),
|
|
|
+ indexYes: new FormControl(
|
|
|
+ this.arrayLettersForLevel[this.indexPositionAux] + 1
|
|
|
+ ),
|
|
|
+ indexNo: new FormControl(
|
|
|
+ this.arrayLettersForLevel[this.indexPositionAux] + 2
|
|
|
+ ),
|
|
|
indexPosition: new FormControl('A'),
|
|
|
});
|
|
|
this.conditionals.push(conditionalsAux);
|
|
|
@@ -909,8 +921,12 @@ export class WorkflowPasosFormComponent implements OnInit {
|
|
|
conditionalNo: new FormControl(''),
|
|
|
taskCurrent: new FormControl(taskCurrent),
|
|
|
indexPosition: new FormControl(indice),
|
|
|
- indexYes: new FormControl(this.arrayLettersForLevel[this.indexPositionAux] + '1'),
|
|
|
- indexNo: new FormControl(this.arrayLettersForLevel[this.indexPositionAux] + '2'),
|
|
|
+ indexYes: new FormControl(
|
|
|
+ this.arrayLettersForLevel[this.indexPositionAux] + '1'
|
|
|
+ ),
|
|
|
+ indexNo: new FormControl(
|
|
|
+ this.arrayLettersForLevel[this.indexPositionAux] + '2'
|
|
|
+ ),
|
|
|
});
|
|
|
|
|
|
if (position <= -1) {
|