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 :

Exemple de l'utilisation de BaseFct.initObj() sur un écran modal

/**
 * @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.