123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <template>
- <div class="elem-explain-element elem-explain-element-edit">
- <element-resize
- v-model="elemData"
- :class="{ 'element-resize-act': curElement.id === data.id }"
- :active="active"
- :transform-fit="transformFit"
- :element-pk="data.id"
- isCompact
- @resize-over="resizeOver"
- @on-click="activeCurElement"
- >
- <div
- :class="classes"
- :style="styles"
- :id="data.id"
- :data-type="data.type"
- >
- <component :is="compName" :data="data"></component>
- </div>
- </element-resize>
- </div>
- </template>
- <script>
- import { mapState, mapMutations } from "vuex";
- import { objAssign } from "../../plugins/utils";
- import ElementResize from "../../components/common/ElementResize";
- import ElemText from "../text/ElemText";
- import ElemImage from "../image/ElemImage";
- import ElemLine from "../line/ElemLine";
- import ElemLines from "../lines/ElemLines";
- import ElemGrids from "../grids/ElemGrids";
- export default {
- name: "elem-explain-element-edit",
- components: {
- ElemText,
- ElemImage,
- ElemLine,
- ElemLines,
- ElemGrids,
- ElementResize
- },
- props: {
- data: {
- type: Object
- },
- transformFit: {
- type: Function,
- default() {
- return {};
- }
- }
- },
- data() {
- return {
- elemData: {
- x: 0,
- y: 0,
- w: 0,
- h: 0
- },
- styles: {},
- actives: {
- TEXT: ["r", "rb", "b", "lb", "l", "lt", "t", "rt"],
- IMAGE: ["r", "rb", "b", "lb", "l", "lt", "t", "rt"],
- LINES: ["r", "rb", "b", "lb", "l", "lt", "t", "rt"],
- GRIDS: ["r", "rb", "b", "lb", "l", "lt", "t", "rt"],
- LINE_HORIZONTAL: ["l", "r"],
- LINE_VERTICAL: ["t", "b"]
- }
- };
- },
- computed: {
- ...mapState("card", ["curElement"]),
- compName() {
- if (this.data.type.includes("LINE_")) return "elem-line";
- return `elem-${this.data.type.toLowerCase()}`;
- },
- elementName() {
- return this.data.type.toLowerCase().replace("_", "-");
- },
- classes() {
- return ["explain-element-body", `explain-element-${this.elementName}`];
- },
- active() {
- return this.actives[this.data.type];
- }
- },
- created() {
- this.init();
- },
- methods: {
- ...mapMutations("card", ["setCurElement"]),
- init() {
- this.elemData = objAssign(this.elemData, this.data);
- this.styles = {
- left: this.data.x + "px",
- top: this.data.y + "px",
- width: this.data.w + "px",
- height: this.data.h + "px"
- };
- },
- resizeOver() {
- this.$emit("resize-over", Object.assign({}, this.data, this.elemData));
- },
- activeCurElement() {
- this.setCurElement(this.data);
- }
- }
- };
- </script>
|