diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksController.js index f1a6d27212815f4fd26b02c0545d9419897d01fa..906b28d4d6fc22b894beaf38934f3b350d5a7de2 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksController.js +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksController.js @@ -39,6 +39,9 @@ function LinksController(title, sampleTypeHints, isDisabled, samplesToEdit, show // this.isValid = function() { if(sampleTypeHints) { + var sampleFromIdxOwner = mainController.currentView._sampleFormModel.sample; + var allOwnerAnnotations = FormUtil.getAnnotationsFromSample(sampleFromIdxOwner); + for(var typeIdx = 0; typeIdx < sampleTypeHints.length; typeIdx++) { var sampleTypeHint = sampleTypeHints[typeIdx]; var sampleTypeCode = sampleTypeHint["TYPE"]; @@ -52,9 +55,23 @@ function LinksController(title, sampleTypeHints, isDisabled, samplesToEdit, show if(sampleTypeCount > 0) { for(var sampleIdx = 0; sampleIdx < linksModel.samplesByType[sampleTypeCode].length; sampleIdx++) { - var sampleWithAnnotations = linksModel.samplesByType[sampleTypeCode][sampleIdx]; - for(var annotIdx = 0; annotIdx < sampleTypeAnnotations.length; annotIdx++) { - //TO-DO, Not enough information to validate required annotations here + var sampleFromIdx = linksModel.samplesByType[sampleTypeCode][sampleIdx]; + var sampleFromIdxAnnotations = null; + + if(allOwnerAnnotations && allOwnerAnnotations[sampleFromIdx.permId]) { + sampleFromIdxAnnotations = allOwnerAnnotations[sampleFromIdx.permId]; + } + + if(sampleFromIdxAnnotations) { + for(var annotIdx = 0; annotIdx < sampleTypeAnnotations.length; annotIdx++) { + var sampleTypeAnnotation = sampleTypeAnnotations[annotIdx]; + var sampleTypeAnnotationType = sampleTypeAnnotation["TYPE"]; + var sampleTypeAnnotationIsMandatory = sampleTypeAnnotation["MANDATORY"]; + if(sampleTypeAnnotationIsMandatory && !sampleFromIdxAnnotations[sampleTypeAnnotationType]) { + Util.showError("You are missing an annotation " + sampleTypeAnnotationType + " on " + sampleFromIdx.code +"."); + return false; + } + } } } }