mirror of
https://github.com/nasa/openmct.git
synced 2025-06-17 06:38:17 +00:00
[Forms] Add CompositeController
Add a controller for composite controls; this is used to flag contained controls as required when they have been partially filled in (to treat entering one of two such fields as invalid.) WTD-593.
This commit is contained in:
@ -40,6 +40,10 @@
|
||||
"key": "DateTimeController",
|
||||
"implementation": "controllers/DateTimeController.js",
|
||||
"depends": [ "$scope" ]
|
||||
},
|
||||
{
|
||||
"key": "CompositeController",
|
||||
"implementation": "controllers/CompositeController.js"
|
||||
}
|
||||
],
|
||||
"templates": [
|
||||
|
@ -1,7 +1,8 @@
|
||||
<ng-form name="mctFormItem" ng-repeat="item in structure.items">
|
||||
<span ng-controller="CompositeController as compositeCtrl">
|
||||
<ng-form name="mctFormItem" ng-repeat="item in structure.items">
|
||||
<mct-control key="item.control"
|
||||
ng-model="ngModel[field]"
|
||||
ng-required="ngRequired"
|
||||
ng-required="ngRequired || compositeCtrl.isNonEmpty(ngModel[field])"
|
||||
ng-pattern="ngPattern"
|
||||
options="item.options"
|
||||
structure="row"
|
||||
@ -10,4 +11,5 @@
|
||||
<span class="composite-control-label">
|
||||
{{item.name}}
|
||||
</span>
|
||||
</ng-form>
|
||||
</ng-form>
|
||||
</span>
|
27
platform/forms/src/controllers/CompositeController.js
Normal file
27
platform/forms/src/controllers/CompositeController.js
Normal file
@ -0,0 +1,27 @@
|
||||
/*global define*/
|
||||
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
function CompositeController() {
|
||||
function isDefined(element) {
|
||||
return typeof element !== 'undefined';
|
||||
}
|
||||
|
||||
function or(a, b) {
|
||||
return a || b;
|
||||
}
|
||||
|
||||
return {
|
||||
isNonEmpty: function (value) {
|
||||
return (value || []).map(isDefined).reduce(or, false);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return CompositeController;
|
||||
|
||||
}
|
||||
);
|
Reference in New Issue
Block a user