diff --git a/src/app/util.ts b/src/app/util.ts index a8fbfd5723fa756d191d574510cf9c183af16267..f4a315c757893052b55945bb875d07959c28371d 100644 --- a/src/app/util.ts +++ b/src/app/util.ts @@ -1,7 +1,7 @@ import { NgParameter } from "./formulaire/elements/ngparam"; import { ServiceFactory } from "./services/service-factory"; -import { formattedValue } from "jalhyd"; +import { formattedValue, Nub, ParamDefinition, ParamValues } from "jalhyd"; export function logObject(obj: {}, m?: string) { // évite le message "Value below was evaluated just now" dans le debugger de Chrome @@ -48,20 +48,26 @@ export function decodeHtml(html: string): string { * @param varParams */ export function longestVarParam(varParams: NgParameter[]): { param: NgParameter, index: number, size: number } { - let i = 0; - let longest = 0; - let size = 0; - for (const v of varParams) { - const s = v.valuesIterator.count(); - if (s > size) { - size = s; - longest = i; + const variated: { param: ParamDefinition, values: ParamValues }[] = []; + for (const vp of varParams) { + variated.push({ + param: vp.paramDefinition, + values: vp.paramDefinition.paramValues + }); + } + const { size, longest, minLinkedResultParam } = Nub.findVariatedSize(variated); + let realSize = size; + // if at least one linked variated result was found + if (minLinkedResultParam !== undefined) { + // if the size limited by linked variated results is shorter + // than the size of the longest variating element, limit it + if (minLinkedResultParam.values.valuesIterator.count() < realSize) { + realSize = minLinkedResultParam.values.valuesIterator.count(); } - i++; } return { param: varParams[longest], index: longest, - size: size + size: realSize }; } diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 89299e905e34a05ab622ab2e235644fb14677939..90fafec0d23ab1cd7162a0adf7c5f7f52c82c058 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -510,5 +510,6 @@ "WARNING_SECTION_OVERFLOW": "Overflow: water elevation exceeds embankment elevation", "WARNING_SECTION_OVERFLOW_ABSC": "Overflow: water elevation exceeds embankment elevation between abscissae %xa% et %xb%", "WARNING_SESSION_LOAD_NOTES_MERGED": "Notes have been merged", - "WARNING_VALUE_ROUNDED_TO_INTEGER": "Value of %symbol% was rounded to %rounded%" + "WARNING_VALUE_ROUNDED_TO_INTEGER": "Value of %symbol% was rounded to %rounded%", + "WARNING_VARIATED_LENGTH_LIMITED_BY_LINKED_RESULT": "Number of results is limited by linked result %symbol%" } diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index b9c0993eead0be88891b6d6a105045feb2bc9348..db945e3145fcb22c883d51f7848061fd7d9877bb 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -509,5 +509,6 @@ "WARNING_SECTION_OVERFLOW": "Débordement: la cote de l'eau dépasse la cote de berge", "WARNING_SECTION_OVERFLOW_ABSC": "Débordement: la cote de l'eau dépasse la cote de berge entre les abscisses %xa% et %xb%", "WARNING_SESSION_LOAD_NOTES_MERGED": "Les notes ont été fusionnées", - "WARNING_VALUE_ROUNDED_TO_INTEGER": "La valeur de %symbol% a été arrondie à %rounded%" + "WARNING_VALUE_ROUNDED_TO_INTEGER": "La valeur de %symbol% a été arrondie à %rounded%", + "WARNING_VARIATED_LENGTH_LIMITED_BY_LINKED_RESULT": "Le nombre de résultats est limité par le résultat lié %symbol%" }