_comme un filtre: au changement d'une valeur, on rappelle une API avec un nouveau paramètre apiParam // C:\DEV\depot\Emed-front\src\app\current\views\donneesante\benef\cremod\benefdonneesantecremod.ctl.js
function getDataAndMeta(fct) {
/* api que l'on va rappeler lors du onChange */
fct.getParamDonneeSanteList = {
api: BenefDonneeSanteService,
getApi: BenefDonneeSanteService.getListFor,
apiParam: 0
};
[...]
// permet de savoir s'il y a des données pour le type de données sélectionné
fct.setDonneeList = function (typevalue) {
fct.getDonnees = function (filters, sort, limit, offset, champs, meta) {
return BenefDonneeSanteService.getListFor(filters, sort, limit, offset, champs, meta, typevalue);
};
// RG_BENEF_DONNEE_SANTE_005
fct.getDonnees().then(function (result) {
if (result && (result.status === 200)) {
if (angular.isArray(result.data.data) && (result.data.data.length > 0)) {
fct.hasDonneeList = true;
} else {
fct.hasDonneeList = false;
}
} else {
fct.hasDonneeList = false;
}
});
};
if (!fct.creation) { // en update
fct.afterLoadDataAndMeta = function(result) {
if (result && (result.status === 200)) {
fct.getParamDonneeSanteList.apiParam = result.data.data.refTypeDonneeSante_BenefDonneeSanteR;
if (result.data.data.refParamDonneeSante_BenefDonneeSanteR) {
fct.hasDonneeList = true;
} else {
if (result.data.data.refTypeDonneeSante_BenefDonneeSanteR === 4) {
fct.hasDonneeList = false;
} else {
fct.hasDonneeList = true;
}
}
}
};
} else { // création
// champ donnée en lecture seule avant toute modification
fct.onRefTypeChange = function (value) {
// si on change de type de donnée, on réinitialise la donnée à sélectionner
if ((fct.data.benefdonneesantecremod.refParamDonneeSante_BenefDonneeSanteR !== undefined) && (fct.data.benefdonneesantecremod.refParamDonneeSante_BenefDonneeSanteR !== null)) {
fct.data.benefdonneesantecremod.refParamDonneeSante_BenefDonneeSanteR = null;
}
/* affectation de la nouvelle valeur */
fct.getParamDonneeSanteList.apiParam = value;
/* rappel de l'api si cas particuliers à appliquer(voir fonction plus haut) car l'affectation d'apiParam suffit */
fct.setDonneeList(value);
/* refresh du champ - vérifier si nécessaire selon le type de champ */
fct.askChildRefresh('donnee');
};
}
}
autre exemple filtre
38_FILTRES / AFFICHAGE / ACTION
_filtres // C:\DEV\depot\Emed-front\src\app\current\views\donneesante\benef\benefdonneesantelist.ctl.js
function initList(fct) {
[...]
fct.filtre = {
type: null
};
fct.listParams.benefdonneesantelist = {
data: {liste: []},
meta: {liste: undefined},
api: ParamBenefDonneeSanteService,
getApi: ParamBenefDonneeSanteService.getListFor,
apiParam: $stateParams.idBeneficiaire,
ordre: [],
displayFields: [],
limit: 30,
searchFields: [],
filtres: [],
canLoad: true,
actions: undefined
};
fct.idTypeFiltreChoisi = null;
// RG_BENEF_DONNEE_SANTE_001
fct.onFiltreType = function (value) {
fct.filtre.type = value;
updateFiltre(fct);
};
// initialisation du commentaire
ParamBenefSanteService.getCommentUpdate($stateParams.idBeneficiaire).then(function (result) {
if (result && (result.status === 200)) {
fct.data.benefsante = result.data.data;
fct.meta.benefsante = result.data.meta;
}
});
}
function updateFiltre(fct) {
fct.listParams.benefdonneesantelist.filtres = [];
if (fct.filtre.type !== undefined && fct.filtre.type !== null) {
fct.listParams.benefdonneesantelist.filtres.push({
nomChampR: 'refTypeDonneeSante_BenefDonneeSanteR',
operateur: "EQUAL",
valeur: fct.filtre.type
});
}
fct.listParams.benefdonneesantelist.refresh(true);
}