Compare commits
7 Commits
vista-r4.9
...
vista-r4.9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f70ab7dd3 | ||
|
|
7f73e1e765 | ||
|
|
ea7cf080c3 | ||
|
|
9b0762f201 | ||
|
|
31aa291672 | ||
|
|
65e8d8b23c | ||
|
|
fdb35094f4 |
@@ -1,5 +1,6 @@
|
||||
import AutoCompleteField from './components/controls/AutoCompleteField.vue';
|
||||
import ClockDisplayFormatField from './components/controls/ClockDisplayFormatField.vue';
|
||||
import CheckBoxField from './components/controls/CheckBoxField.vue';
|
||||
import Datetime from './components/controls/Datetime.vue';
|
||||
import FileInput from './components/controls/FileInput.vue';
|
||||
import Locator from './components/controls/Locator.vue';
|
||||
@@ -12,6 +13,7 @@ import Vue from 'vue';
|
||||
|
||||
export const DEFAULT_CONTROLS_MAP = {
|
||||
'autocomplete': AutoCompleteField,
|
||||
'checkbox': CheckBoxField,
|
||||
'composite': ClockDisplayFormatField,
|
||||
'datetime': Datetime,
|
||||
'file-input': FileInput,
|
||||
|
||||
@@ -172,7 +172,9 @@ export default class FormsAPI {
|
||||
|
||||
function onFormSave(save) {
|
||||
return () => {
|
||||
overlay.dismiss();
|
||||
if (overlay) {
|
||||
overlay.dismiss();
|
||||
}
|
||||
|
||||
if (save) {
|
||||
save(changes);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*****************************************************************************
|
||||
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||
* Open MCT, Copyright (c) 2014-2022, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
@@ -24,49 +24,60 @@
|
||||
<div class="c-form">
|
||||
<div class="c-overlay__top-bar c-form__top-bar">
|
||||
<div class="c-overlay__dialog-title">{{ model.title }}</div>
|
||||
<div class="c-overlay__dialog-hint hint">All fields marked <span class="req icon-asterisk"></span> are required.</div>
|
||||
<div
|
||||
v-if="hasRequiredFields"
|
||||
class="c-overlay__dialog-hint hint"
|
||||
>All fields marked <span class="req icon-asterisk"></span> are required.</div>
|
||||
</div>
|
||||
<form name="mctForm"
|
||||
class="c-form__contents"
|
||||
autocomplete="off"
|
||||
@submit.prevent
|
||||
<form
|
||||
name="mctForm"
|
||||
class="c-form__contents"
|
||||
autocomplete="off"
|
||||
@submit.prevent
|
||||
>
|
||||
<div v-for="section in formSections"
|
||||
:key="section.id"
|
||||
class="c-form__section"
|
||||
:class="section.cssClass"
|
||||
<div
|
||||
v-for="section in formSections"
|
||||
:key="section.id"
|
||||
class="c-form__section"
|
||||
:class="section.cssClass"
|
||||
>
|
||||
<h2 v-if="section.name"
|
||||
<h2
|
||||
v-if="section.name"
|
||||
class="c-form__section-header"
|
||||
>
|
||||
{{ section.name }}
|
||||
</h2>
|
||||
<div v-for="(row, index) in section.rows"
|
||||
:key="row.id"
|
||||
class="u-contents"
|
||||
<div
|
||||
v-for="(row, index) in section.rows"
|
||||
:key="row.id"
|
||||
class="u-contents"
|
||||
>
|
||||
<FormRow :css-class="section.cssClass"
|
||||
:first="index < 1"
|
||||
:row="row"
|
||||
@onChange="onChange"
|
||||
<FormRow
|
||||
:css-class="section.cssClass"
|
||||
:first="index < 1"
|
||||
:row="row"
|
||||
@onChange="onChange"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="mct-form__controls c-overlay__button-bar c-form__bottom-bar">
|
||||
<button tabindex="0"
|
||||
:disabled="isInvalid"
|
||||
class="c-button c-button--major"
|
||||
@click="onSave"
|
||||
<button
|
||||
tabindex="0"
|
||||
:disabled="isInvalid"
|
||||
class="c-button c-button--major"
|
||||
@click="onSave"
|
||||
>
|
||||
OK
|
||||
{{ submitLabel }}
|
||||
</button>
|
||||
<button tabindex="0"
|
||||
class="c-button"
|
||||
@click="onDismiss"
|
||||
<button
|
||||
v-if="!hideCancel"
|
||||
tabindex="0"
|
||||
class="c-button"
|
||||
@click="onDismiss"
|
||||
>
|
||||
Cancel
|
||||
{{ cancelLabel }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -100,11 +111,42 @@ export default {
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
hasRequiredFields() {
|
||||
return this.model.sections.some(section =>
|
||||
section.rows.some(row => row.required));
|
||||
},
|
||||
isInvalid() {
|
||||
return Object.entries(this.invalidProperties)
|
||||
.some(([key, value]) => {
|
||||
return value;
|
||||
});
|
||||
},
|
||||
submitLabel() {
|
||||
if (
|
||||
this.model.buttons
|
||||
&& this.model.buttons.submit
|
||||
&& this.model.buttons.submit.label
|
||||
) {
|
||||
return this.model.buttons.submit.label;
|
||||
}
|
||||
|
||||
return 'OK';
|
||||
},
|
||||
cancelLabel() {
|
||||
if (
|
||||
this.model.buttons
|
||||
&& this.model.buttons.cancel
|
||||
&& this.model.buttons.cancel.label
|
||||
) {
|
||||
return this.model.buttons.submit.label;
|
||||
}
|
||||
|
||||
return 'Cancel';
|
||||
},
|
||||
hideCancel() {
|
||||
return this.model.buttons
|
||||
&& this.model.buttons.cancel
|
||||
&& this.model.buttons.cancel.hide === true;
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
@@ -75,10 +75,12 @@ export default {
|
||||
rowClass() {
|
||||
let cssClass = this.cssClass;
|
||||
|
||||
if (this.row.required) {
|
||||
cssClass = `${cssClass} req`;
|
||||
if (!this.row.required) {
|
||||
return;
|
||||
}
|
||||
|
||||
cssClass = `${cssClass} req`;
|
||||
|
||||
if (this.visited && this.valid !== undefined) {
|
||||
if (this.valid === true) {
|
||||
cssClass = `${cssClass} valid`;
|
||||
|
||||
62
src/api/forms/components/controls/CheckBoxField.vue
Normal file
62
src/api/forms/components/controls/CheckBoxField.vue
Normal file
@@ -0,0 +1,62 @@
|
||||
/*****************************************************************************
|
||||
* Open MCT, Copyright (c) 2014-2022, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
* Open MCT is licensed under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
* Open MCT includes source code licensed under additional open source
|
||||
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
|
||||
<template>
|
||||
<span class="form-control shell">
|
||||
<span
|
||||
class="field control"
|
||||
:class="model.cssClass"
|
||||
>
|
||||
<input
|
||||
type="checkbox"
|
||||
:checked="isChecked"
|
||||
@input="toggleCheckBox"
|
||||
>
|
||||
</span>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
model: {
|
||||
type: Object,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isChecked: this.model.value
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
toggleCheckBox() {
|
||||
this.isChecked = !this.isChecked;
|
||||
const data = {
|
||||
model: this.model,
|
||||
value: this.isChecked
|
||||
};
|
||||
this.$emit('onChange', data);
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
@@ -334,7 +334,7 @@ export class TelemetryCollection extends EventEmitter {
|
||||
this.timeKey = domain.source;
|
||||
} else {
|
||||
this._warn(ERRORS.TIMESYSTEM_KEY);
|
||||
this.openmct.notifications.warn(TIMESYSTEM_KEY_NOTIFICATION)
|
||||
this.openmct.notifications.alert(ERRORS.TIMESYSTEM_KEY_NOTIFICATION)
|
||||
}
|
||||
|
||||
let metadataValue = this.metadata.value(timeSystem.key) || { format: timeSystem.key };
|
||||
|
||||
Reference in New Issue
Block a user