Skip to content

Commit

Permalink
support wrong deeper focus path
Browse files Browse the repository at this point in the history
  • Loading branch information
simon louvet committed May 31, 2024
1 parent fccebb6 commit 1205426
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 72 deletions.
39 changes: 26 additions & 13 deletions core/lib/fragment_lib.js
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,9 @@ module.exports = {
if(keepArray && dfobTable.length==0){
fragmentSelected = [{
frag : newFrag,
relativHistoryTableSelected: relativHistoryTable
//relativHistoryTable is [] cause by copyDataUntilPath call or dafault.
relativHistoryTableSelected: relativHistoryTable,
relativDfobTable: []
}];
}

Expand Down Expand Up @@ -570,15 +572,17 @@ module.exports = {
const isDfobFragmentSelected = processedData.dfobFragmentSelected&&processedData.dfobFragmentSelected.length>0;


const fragVerif = await fragmentModelInstance.findOne({_id: newFrag.id}).exec();
// const fragVerif = await fragmentModelInstance.findOne({_id: newFrag.id}).exec();
// console.log('__copyFragUntilPath fragVerif',JSON.stringify(fragVerif))

return {
data : processedData.data,
dfobFragmentSelected:isDfobFragmentSelected ? processedData.dfobFragmentSelected : {
//if no processedData.dfobFragmentSelected but algo is here, that means this step create fragment
dfobFragmentSelected:isDfobFragmentSelected ? processedData.dfobFragmentSelected : [{
frag : newFrag,
relativHistoryTableSelected: processedData.relativHistoryTableSelected
},
relativHistoryTableSelected: processedData.relativHistoryTableSelected,
relativDfobTable: dfobTable
}],
rootFrag :newFrag.rootFrag,
newFrag :newFrag
};
Expand Down Expand Up @@ -627,10 +631,11 @@ module.exports = {
}else{

let relativHistoryTableCopy =[...relativHistoryTable]
let fragmentSelected;
let fragmentSelected=[];
let relativHistoryTableSelected=[];
for (let key in data) {
// console.log('___0.1',key,data)
// console.log('______key',key)
// console.log('______dfobTable',dfobTable)
let dfobTableCurrent = [...dfobTable];
let dfobTableCopy = [...dfobTable];
let dfobMarker = false;
Expand All @@ -641,42 +646,50 @@ module.exports = {
}else{
dfobTableCurrent=[];
}
console.log('____relativHistoryTableCopy 1',relativHistoryTableCopy)
if (data[key] && data[key] != null && data[key]._frag) {
if(dfobTableCurrent.length>0){
const persitedFrag = await this.copyFragUntilPath(data[key]._frag, dfobTableCopy, keepArray, [], callerFrag)
data[key] = {
_frag:persitedFrag.newFrag._id.toString()
};
fragmentSelected=persitedFrag.dfobFragmentSelected;
if(persitedFrag.dfobFragmentSelected){
fragmentSelected=fragmentSelected.concat(persitedFrag.dfobFragmentSelected);
}
}
} else {
// console.log('_',key,data[key])
const processedData = await this.copyDataUntilPath(data[key], dfobTableCopy, keepArray, relativHistoryTableCopy,callerFrag);

data[key] = processedData.data;
data = this.replaceMongoNotSupportedKey(data, false);
fragmentSelected=processedData.dfobFragmentSelected?processedData.dfobFragmentSelected:undefined;
if(processedData.dfobFragmentSelected){
fragmentSelected=fragmentSelected.concat(processedData.dfobFragmentSelected)
}
// fragmentSelected=processedData.dfobFragmentSelected?processedData.dfobFragmentSelected:undefined;
// console.log('__->',processedData.relativHistoryTableSelected,relativHistoryTableCopy)
if (processedData?.relativHistoryTableSelected?.length>relativHistoryTableSelected.length){
relativHistoryTableSelected=processedData.relativHistoryTableSelected;
relativHistoryTableCopy = relativHistoryTableSelected
}else{
console.log('____relativHistoryTableCopy 2',relativHistoryTableCopy)
relativHistoryTableSelected = relativHistoryTableCopy
}
// relativHistoryTableSelected=processedData?.relativHistoryTableSelected?.length>relativHistoryTableSelected.length?processedData.relativHistoryTableSelected:relativHistoryTableCopy;
}
// console.log('___________processedData',data);
}
// console.log('_____ return data',JSON.stringify(data));
// console.log('_____________________________relativHistoryTableSelected',relativHistoryTableSelected)
console.log('_____________________________relativHistoryTableSelected',relativHistoryTableSelected)
// console.log('_____________________________dfobTableCopy',dfobTableCopy)
console.log('_____________________________dfobTable',dfobTable)
return {
data,
relativHistoryTableSelected:relativHistoryTableSelected,
dfobFragmentSelected:fragmentSelected
relativHistoryTableSelected : relativHistoryTableSelected,
dfobFragmentSelected : fragmentSelected
};
}
} else {
console.log('AAAAALLLLLLOOO')
return {
data,
relativHistoryTable
Expand Down
129 changes: 70 additions & 59 deletions engine/services/engine.js
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,8 @@ class Engine {
keepArray
)

console.log('__dfobFragmentFlow',dfobFragmentFlow.dfobFragmentSelected)

const newFrag = dfobFragmentFlow.newFrag;
let dfobFragmentSelected = dfobFragmentFlow.dfobFragmentSelected;

Expand Down Expand Up @@ -421,7 +423,7 @@ class Engine {
return [
processingNode,
item.frag,
{dfobTable:item.relativHistoryTableSelected||[],pipeNb, keepArray},
{dfobTable:item.relativDfobTable||[],pipeNb, keepArray},
componentFlow.primaryflow,
secondaryFlowDefraged
]
Expand Down Expand Up @@ -721,15 +723,19 @@ class Engine {
let currentdFob = newDfobPathTab.shift()
let flowOfKey = currentFlow[currentdFob]

// TODO complex algorythm, To improve
if (newDfobPathTab.length > 0) {
return (this.buildDfobFlow(flowOfKey, newDfobPathTab, currentdFob, keepArray))
} else {
if (Array.isArray(flowOfKey) && keepArray != true) {
if(flowOfKey){
// TODO complex algorythm, To improve
if (newDfobPathTab.length > 0) {
return (this.buildDfobFlow(flowOfKey, newDfobPathTab, currentdFob, keepArray))
} else {
return (this.buildDfobFlow(currentFlow, newDfobPathTab, currentdFob, keepArray))
if (Array.isArray(flowOfKey) && keepArray != true) {
return (this.buildDfobFlow(flowOfKey, newDfobPathTab, currentdFob, keepArray))
} else {
return (this.buildDfobFlow(currentFlow, newDfobPathTab, currentdFob, keepArray))
}
}
}else{
throw new Error(`dfobPath '${dfobPathTab}' isn't achievable`)
}
}
} else {
Expand Down Expand Up @@ -779,63 +785,68 @@ class Engine {
if(needDfob){
// console.log('WITH DFOB',dfobTable);
// if (this.config.quietLog != true) console.time("build-DfobFlow");
const dfobFlow = this.buildDfobFlow(
rebuildData,
dfobTable,
undefined,
keepArray
)
let paramArray = dfobFlow.map(item => {
var recomposedFlow = [];

recomposedFlow = recomposedFlow.concat([{
data: item.key != undefined ? item.objectToProcess[item.key] : item.objectToProcess,
componentId: primaryflow.componentId
}]);
recomposedFlow = recomposedFlow.concat(secondaryFlow);

return [
processingNode.component,
recomposedFlow,
processingNode.queryParams == undefined ? undefined : processingNode.queryParams.queryParams
]
});
// if (this.config.quietLog != true) console.timeEnd("build-DfobFlow");
// if (this.config.quietLog != true) console.time("work");
const componentFlowDfob = await this.promiseOrchestrator.execute(module, module.pull, paramArray, {
beamNb: pipeNb,
logIteration: true,
continueChekFunction: async () => {
const process = await this.workspace_lib.getCurrentProcess(this.processId);
if (process.state == 'stop') {
return false
} else {
return true
}
}
}, this.config);
// if (this.config.quietLog != true) console.timeEnd("work");
// if (this.config.quietLog != true) console.time("recompose-DfobFlow");

for (var componentFlowDfobKey in componentFlowDfob) {
if ('data' in componentFlowDfob[componentFlowDfobKey]) {
if (dfobFlow[componentFlowDfobKey].key != undefined) {
dfobFlow[componentFlowDfobKey].objectToProcess[dfobFlow[componentFlowDfobKey].key] =
componentFlowDfob[componentFlowDfobKey].data
} else {
// all keys to replace because no key defined because root dfob
for (let key of Object.keys(dfobFlow[componentFlowDfobKey].objectToProcess)) {
dfobFlow[componentFlowDfobKey].objectToProcess[key] = undefined;
try {
const dfobFlow = this.buildDfobFlow(
rebuildData,
dfobTable,
undefined,
keepArray
)
let paramArray = dfobFlow.map(item => {
var recomposedFlow = [];

recomposedFlow = recomposedFlow.concat([{
data: item.key != undefined ? item.objectToProcess[item.key] : item.objectToProcess,
componentId: primaryflow.componentId
}]);
recomposedFlow = recomposedFlow.concat(secondaryFlow);

return [
processingNode.component,
recomposedFlow,
processingNode.queryParams == undefined ? undefined : processingNode.queryParams.queryParams
]
});
// if (this.config.quietLog != true) console.timeEnd("build-DfobFlow");
// if (this.config.quietLog != true) console.time("work");
const componentFlowDfob = await this.promiseOrchestrator.execute(module, module.pull, paramArray, {
beamNb: pipeNb,
logIteration: true,
continueChekFunction: async () => {
const process = await this.workspace_lib.getCurrentProcess(this.processId);
if (process.state == 'stop') {
return false
} else {
return true
}
for (let key of Object.keys(componentFlowDfob[componentFlowDfobKey].data)) {
dfobFlow[componentFlowDfobKey].objectToProcess[key] = componentFlowDfob[componentFlowDfobKey].data[key];
}
}, this.config);
// if (this.config.quietLog != true) console.timeEnd("work");
// if (this.config.quietLog != true) console.time("recompose-DfobFlow");

for (var componentFlowDfobKey in componentFlowDfob) {
if ('data' in componentFlowDfob[componentFlowDfobKey]) {
if (dfobFlow[componentFlowDfobKey].key != undefined) {
dfobFlow[componentFlowDfobKey].objectToProcess[dfobFlow[componentFlowDfobKey].key] =
componentFlowDfob[componentFlowDfobKey].data
} else {
// all keys to replace because no key defined because root dfob
for (let key of Object.keys(dfobFlow[componentFlowDfobKey].objectToProcess)) {
dfobFlow[componentFlowDfobKey].objectToProcess[key] = undefined;
}
for (let key of Object.keys(componentFlowDfob[componentFlowDfobKey].data)) {
dfobFlow[componentFlowDfobKey].objectToProcess[key] = componentFlowDfob[componentFlowDfobKey].data[key];
}
}
} else if (componentFlowDfob[componentFlowDfobKey].error != undefined) {
dfobFlow[componentFlowDfobKey].objectToProcess[dfobFlow[componentFlowDfobKey].key] =
componentFlowDfob[componentFlowDfobKey]
}
} else if (componentFlowDfob[componentFlowDfobKey].error != undefined) {
dfobFlow[componentFlowDfobKey].objectToProcess[dfobFlow[componentFlowDfobKey].key] =
componentFlowDfob[componentFlowDfobKey]
}
} catch (error) {
//if exception during buildDfobFlow or other buildDfobFlow is not impact
}

// if (this.config.quietLog != true) console.timeEnd("recompose-DfobFlow");
} else {
// console.log('WITHOUT DFOB');
Expand Down

0 comments on commit 1205426

Please sign in to comment.