Skip to content

Commit 3cd06d8

Browse files
committed
fix Datahandler with sequential requests on models
1 parent 2d9925c commit 3cd06d8

File tree

2 files changed

+57
-60
lines changed

2 files changed

+57
-60
lines changed

validation_service/app/js/controller.js

Lines changed: 19 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,12 @@ testApp.controller('HomeCtrl', ['$scope', '$rootScope', '$http', '$location', "S
1010
$scope.tests = [];
1111
$scope.total_models = 0;
1212

13-
$scope._load_other_models = function() {
14-
var i = 2;
15-
for (i; i <= $scope.nb_pages; i++) {
16-
DataHandler.loadModelsByPage({ app_id: $scope.app_id, page: i }).then(function(new_models) {
17-
$scope.models.models = $scope.models.models.concat(new_models.models);
18-
$scope.models.models = $scope.models.models.sort(_sort_array_by_timestamp_desc)
19-
$scope.$apply();
20-
})
21-
}
22-
}
23-
var _sort_array_by_timestamp_desc = function(a, b) {
24-
return new Date(b.creation_date) - new Date(a.creation_date);
25-
}
13+
$scope.$on('models_updated', function(event, models) {
14+
$scope.models = models;
15+
});
16+
17+
2618
Context.setService().then(function() {
27-
console.log('collab parameters setted')
2819

2920
$scope.Context = Context;
3021
$scope.ctx = Context.getCtx();
@@ -43,10 +34,7 @@ testApp.controller('HomeCtrl', ['$scope', '$rootScope', '$http', '$location', "S
4334
$scope.collab_data_modalities = CollabParameters.getParametersOrDefaultByType("data_modalities");
4435
$scope.collab_organization = CollabParameters.getParametersOrDefaultByType("organization");
4536

46-
//$scope.models = ScientificModelRest.get({ app_id: app_id }, function(data) {});
47-
//$scope.tests = ValidationTestDefinitionRest.get({ app_id: app_id }, function(data) {});
48-
// //for test
49-
// $scope.put_test1 = ValidationTestCodeRest.put({ app_id: app_id, test_definition_id: "53a7a2db-b18f-49ef-b1de-88bd48960c81", version: "1.1" });
37+
5038
DataHandler.loadModels({ app_id: $scope.app_id, page: 1 }).then(function(data) {
5139
$scope.total_models = data.total_models;
5240
$scope.nb_pages = data.total_nb_pages;
@@ -59,7 +47,11 @@ testApp.controller('HomeCtrl', ['$scope', '$rootScope', '$http', '$location', "S
5947
$('#preloader-models').delay(350).fadeOut('slow'); // will fade out the white DIV that covers the website.
6048
$('#models-panel').delay(350).css({ 'overflow': 'visible' });
6149

62-
$scope._load_other_models();
50+
51+
var status = DataHandler.getCurrentStatus();
52+
if (status != "up_to_date") {
53+
DataHandler.loadModelsByPage($scope.app_id, $scope.nb_pages);
54+
}
6355
});
6456

6557
DataHandler.loadTests({ app_id: $scope.app_id }).then(function(data) {
@@ -1126,21 +1118,9 @@ ModelCatalogApp.controller('ModelCatalogCtrl', [
11261118
return models
11271119
}
11281120

1129-
1130-
$scope._load_other_models = function() {
1131-
var i = 2;
1132-
for (i; i <= $scope.nb_pages; i++) {
1133-
DataHandler.loadModelsByPage({ app_id: $scope.app_id, page: i }).then(function(new_models) {
1134-
$scope.models.models = $scope.models.models.concat($scope._change_empty_organization_string(new_models).models);
1135-
$scope.models.models = $scope.models.models.sort(_sort_array_by_timestamp_desc)
1136-
$scope.$apply();
1137-
})
1138-
}
1139-
}
1140-
1141-
var _sort_array_by_timestamp_desc = function(a, b) {
1142-
return new Date(b.creation_date) - new Date(a.creation_date);
1143-
}
1121+
$scope.$on('models_updated', function(event, models) {
1122+
$scope.models = $scope._change_empty_organization_string(models);
1123+
});
11441124

11451125
Context.setService().then(function() {
11461126

@@ -1166,11 +1146,12 @@ ModelCatalogApp.controller('ModelCatalogCtrl', [
11661146
$('#preloader').delay(350).fadeOut('slow'); // will fade out the white DIV that covers the website.
11671147
$('body').delay(350).css({ 'overflow': 'visible' });
11681148

1169-
1170-
$scope._load_other_models();
1171-
1172-
1149+
var status = DataHandler.getCurrentStatus();
1150+
if (status != "up_to_date") {
1151+
DataHandler.loadModelsByPage($scope.app_id, $scope.nb_pages);
1152+
}
11731153
});
1154+
11741155
Context.sendState("model", "n");
11751156

11761157

validation_service/app/js/service.js

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -440,41 +440,52 @@ DataHandlerServices.service('DataHandler', ['$rootScope', 'ScientificModelRest',
440440
var temp_models = ScientificModelRest.get(dict_params);
441441
temp_models.$promise.then(function() {
442442
models = { date_last_load: new Date(), status: "loading", data: temp_models };
443-
resolve(models.data);
443+
resolve(models.data, models.status);
444444
});
445445

446446
} else {
447-
if (models.status == "up to date") {
447+
if (models.status == "up_to_date") {
448448
var data = _loadStoredModels();
449-
resolve(data);
449+
resolve(data, models.status);
450450
} else {
451451
var temp_models = ScientificModelRest.get(dict_params);
452452
temp_models.$promise.then(function() {
453-
if (temp_models.total_nb_pages == dict_params.page) {
454-
models = { date_last_load: new Date(), status: "loading", data: temp_models };
455-
} else {
456-
models = { date_last_load: new Date(), status: "up_to_date", data: temp_models };
457-
}
458-
resolve(models.data);
453+
models = { date_last_load: new Date(), status: "up_to_date", data: temp_models };
454+
resolve(models.data, models.status);
459455
});
460456
}
461457
}
462458
});
463459
};
464460

465-
var loadModelsByPage = function(dict_params) {
466-
return new Promise(function(resolve, reject) {
467-
var temp_models = ScientificModelRest.get(dict_params);
468-
//var temp_models = _get_models_sequentially(dict_params);
469-
temp_models.$promise.then(function() {
470-
if (temp_models.total_nb_pages == dict_params.page) {
471-
models = { date_last_load: new Date(), status: "loading", data: temp_models };
472-
} else {
473-
models = { date_last_load: new Date(), status: "up_to_date", data: temp_models };
474-
}
475-
resolve(models.data);
476-
});
477-
})
461+
var loadModelsByPage = function(app_id, nb_pages) {
462+
var i = 1;
463+
var pages_loaded = new Array();
464+
pages_loaded.push(1);
465+
466+
for (i; i <= nb_pages; i++) {
467+
if (pages_loaded.indexOf(i) == -1) {
468+
pages_loaded.push(i);
469+
ScientificModelRest.get({ app_id: app_id, page: i }).$promise.then(function(new_models) {
470+
models.data.models = models.data.models.concat(new_models.models);
471+
models.data.models = models.data.models.sort(_sort_array_by_timestamp_desc)
472+
473+
//fire event to update models
474+
$rootScope.$broadcast('models_updated', models.data);
475+
476+
//change status if last load is done
477+
if (pages_loaded.length == nb_pages.length) {
478+
models.date_last_load = new Date();
479+
models.status = "up_to_date";
480+
}
481+
})
482+
}
483+
484+
}
485+
}
486+
487+
var _sort_array_by_timestamp_desc = function(a, b) {
488+
return new Date(b.creation_date) - new Date(a.creation_date);
478489
}
479490
var _get_models_sequentially = function(dict_params) {
480491
//load 50 first elements should return also the number of pages
@@ -545,15 +556,20 @@ DataHandlerServices.service('DataHandler', ['$rootScope', 'ScientificModelRest',
545556
var getStoredTests = function() {
546557
return tests;
547558
}
559+
var getCurrentStatus = function() {
560+
return models.status
561+
}
548562

549563
return {
550564
loadModels: loadModels,
551565
loadModelsByPage: loadModelsByPage,
552566
loadTests: loadTests,
553567
getStoredModels: getStoredModels,
554568
getStoredTests: getStoredTests,
569+
getCurrentStatus: getCurrentStatus,
555570
setStoredModelsAsOutdated: setStoredModelsAsOutdated,
556571
setStoredTestsAsOutdated: setStoredTestsAsOutdated,
572+
557573
};
558574

559575
}

0 commit comments

Comments
 (0)