* Add delete button in the toolbar for removing items * Mutate composition if there are no telemetry objects. Select the parent layout after deleting an item. * Saving work * Watch for index in the components and update it in the context. * Select the parent after a composition is removed. * Address reviewer's feedback. - Rename mutatComposition() to removeFromComposition(). - Inline logic for filtering composition - Use separate branches for each item type in trackItem(). * Address reviewer's requested changes
103 lines
3.1 KiB
Vue
103 lines
3.1 KiB
Vue
/*****************************************************************************
|
|
* Open MCT, Copyright (c) 2014-2018, 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>
|
|
<layout-frame :item="item"
|
|
:grid-size="gridSize"
|
|
@endDrag="(item, updates) => $emit('endDrag', item, updates)">
|
|
<div class="c-image-view"
|
|
:style="style">
|
|
</div>
|
|
</layout-frame>
|
|
</template>
|
|
|
|
<style lang="scss">
|
|
@import '~styles/sass-base';
|
|
|
|
.c-image-view {
|
|
background-size: cover;
|
|
background-repeat: no-repeat;
|
|
background-position: center;
|
|
|
|
.c-frame & {
|
|
@include abs();
|
|
border: 1px solid transparent;
|
|
}
|
|
}
|
|
</style>
|
|
|
|
<script>
|
|
import LayoutFrame from './LayoutFrame.vue'
|
|
|
|
export default {
|
|
makeDefinition(openmct, gridSize, element) {
|
|
return {
|
|
stroke: 'transparent',
|
|
x: 1,
|
|
y: 1,
|
|
width: 10,
|
|
height: 5,
|
|
url: element.url
|
|
};
|
|
},
|
|
inject: ['openmct'],
|
|
props: {
|
|
item: Object,
|
|
gridSize: Array,
|
|
index: Number,
|
|
initSelect: Boolean
|
|
},
|
|
components: {
|
|
LayoutFrame
|
|
},
|
|
computed: {
|
|
style() {
|
|
return {
|
|
backgroundImage: 'url(' + this.item.url + ')',
|
|
border: '1px solid ' + this.item.stroke
|
|
}
|
|
}
|
|
},
|
|
watch: {
|
|
index(newIndex) {
|
|
if (!this.context) {
|
|
return;
|
|
}
|
|
|
|
this.context.index = newIndex;
|
|
}
|
|
},
|
|
mounted() {
|
|
this.context = {
|
|
layoutItem: this.item,
|
|
index: this.index
|
|
};
|
|
this.removeSelectable = this.openmct.selection.selectable(
|
|
this.$el, this.context, this.initSelect);
|
|
},
|
|
destroyed() {
|
|
if (this.removeSelectable) {
|
|
this.removeSelectable();
|
|
}
|
|
}
|
|
}
|
|
</script> |