mirror of
https://github.com/nasa/openmct.git
synced 2025-04-07 11:26:49 +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:
parent
6a6797bf53
commit
218f732dc2
@ -40,6 +40,10 @@
|
||||
"key": "DateTimeController",
|
||||
"implementation": "controllers/DateTimeController.js",
|
||||
"depends": [ "$scope" ]
|
||||
},
|
||||
{
|
||||
"key": "CompositeController",
|
||||
"implementation": "controllers/CompositeController.js"
|
||||
}
|
||||
],
|
||||
"templates": [
|
||||
|
@ -1,13 +1,15 @@
|
||||
<ng-form name="mctFormItem" ng-repeat="item in structure.items">
|
||||
<mct-control key="item.control"
|
||||
ng-model="ngModel[field]"
|
||||
ng-required="ngRequired"
|
||||
ng-pattern="ngPattern"
|
||||
options="item.options"
|
||||
structure="row"
|
||||
field="$index">
|
||||
</mct-control>
|
||||
<span class="composite-control-label">
|
||||
{{item.name}}
|
||||
</span>
|
||||
</ng-form>
|
||||
<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 || compositeCtrl.isNonEmpty(ngModel[field])"
|
||||
ng-pattern="ngPattern"
|
||||
options="item.options"
|
||||
structure="row"
|
||||
field="$index">
|
||||
</mct-control>
|
||||
<span class="composite-control-label">
|
||||
{{item.name}}
|
||||
</span>
|
||||
</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;
|
||||
|
||||
}
|
||||
);
|
Loading…
x
Reference in New Issue
Block a user