La factory BaseFct contient des fonctions de base pour les écrans (initialisation, enregistrement, annulation, redirection...)
L'élément core BaseFct contient par défaut les services suivants :
Paramètres de la fonction baseFct.initObj :
/**
* @ngdoc module
* @name app.views.admin.controlequalite.controleplan.cremod.popup.typezone
* @description
* Ecran
*/
angular.module('app.views.admin.controlequalite.controleplan.cremod.popup.typezone', ['core.base.fct', 'services.type',
'core.directives.select', 'core.directives.refresher', 'core.base.modal.fct', 'services.admin.controlequalite.controleplan.typezone',
'services.admin.paramtypezone'
])
/**
* @ngdoc controller
* @name ControlePlanTypeZoneCtl
* @description
* Controller lié à l'écran de modification de type zone
* @param {factory} ControlePlanTypeZoneFct factory liée
*/
.controller('ControlePlanTypeZoneCtl',function ControlePlanTypeZoneCtl(ControlePlanTypeZoneFct, $scope, close, $element, msPopupParams, msId, msUpdating) {
'ngInject';
'use strict';
var controlePlanTypeZoneCtl =this;
controlePlanTypeZoneCtl.fct = ControlePlanTypeZoneFct.init($scope, close, $element, msPopupParams, msId, msUpdating);
controlePlanTypeZoneCtl.fct.doSave =function() {ControlePlanTypeZoneFct.save(controlePlanTypeZoneCtl.fct);};
})
/**
* @ngdoc factory
* @name ControlePlanTypeZoneFct
* @description
* Factory lié à l'écran
* @param {factory} BaseFct factory de base
*/
.factory('ControlePlanTypeZoneFct',function ControlePlanTypeZoneFct(BaseFct, $stateParams, ToastService, BaseModalFct, LibelleService,
ControlePlanTypeZoneAdminService, ParamTypeZoneAdminService) {
'ngInject';
'use strict';
var controlePlanTypeZoneFct = {};
controlePlanTypeZoneFct.init =function (scope, close, element, msPopupParams, msId, msUpdating) {
var fct = BaseFct.initObj({
params: $stateParams,
scope: scope,
service: ControlePlanTypeZoneAdminService,
formName: 'form',
beanName: 'cptypezone',
getByIdParam : (msUpdating ? msId :null),
ids: ['id_ControlePlanTZoneR', 'refTypeZone_ControlePlanTZoneR', 'refControlePlan_ControlePlanTZoneR'],
defaultBean: {
refTypeZone_ControlePlanTZoneR:null,
refControlePlan_ControlePlanTZoneR: $stateParams.id,
id_ControlePlanTZoneR:null,
nb_ControlePlanTZoneR:null},
getMetaCreateForParam:undefined,
functions:undefined,
noLoad:false,
controllerName: 'controlePlanTypeZoneCtl',
});
if (!$stateParams.resume) {
BaseModalFct.init(fct, close, msUpdating, msId, element, msPopupParams, 'app.views.admin.controlequalite.controleplan.popup.detail');
getDataAndMeta(fct);
}
return fct;
};
function getDataAndMeta(fct) {
// il n'est pas obligatoire de déclarer cette fonction ici si on utilise fct.form car elle existe par défaut dans le BaseFct.
// utiliser la forme 2 ci-dessous
// vérification que la sortie du formulaire est OK
fct.confOnExit =function(){
/* forme 1 */
return fct.form.$dirty && fct.confOnSubmit;
};
/* forme 2 */
/* si le formulaire a un nom différent de getController().fct.form, on applique
return fct.getForm("nomDuForm").$dirty && fct.confOnSubmit; */
fct.typeZoneAPI = {
api: ParamTypeZoneAdminService,
getApi: ParamTypeZoneAdminService.get};
if ($stateParams.id) {
fct.onControlePlanTypeZoneUpdate =function(result){
if ((result.status ===200) || (result == 'NO_UPDATE')) {
ToastService.success(fct.sucessLib, fct.msgLib);
// gestion de la validation du formulaire
fct.confOnSubmit =false;
fct.closeModalWithResult();
}
};
}
}
/**
* @ngdoc method
* @name save
* @description enregistrement du type zone
*/
controlePlanTypeZoneFct.save =function (fct) {
if (fct.msUpdating){
var id = ['id_ControlePlanTZoneR'];
ControlePlanTypeZoneAdminService.update(id, fct.data.cptypezone, fct.meta.cptypezone, fct.onControlePlanTypeZoneUpdate);
}else {
ControlePlanTypeZoneAdminService.create(fct.data.cptypezone).then(function (result) {
if (result && result.status ===201) {
ToastService.success(fct.sucessLib, fct.msgLib);
fct.confOnSubmit=false;
fct.closeModalWithResult();
}
});
}
};
return controlePlanTypeZoneFct;
});
On n'initialise rien dans le getDataAndMeta, l'initObj se charge de le faire tout seul. (Cas quand il n'y a rien de spécifique)Si on veut initialiser de façon spécifique, on passe noLoad à true.