TopicElementPreview.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <template>
  2. <div class="topic-element-preview">
  3. <div
  4. :class="classes"
  5. :id="`preview-${data.id}`"
  6. :data-type="data.type"
  7. :style="styles"
  8. >
  9. <component :is="compName" :data="data" preview></component>
  10. </div>
  11. </div>
  12. </template>
  13. <script>
  14. import PreviewFillQuestion from "../elements/fill-question/ElemFillQuestion";
  15. import PreviewFillLine from "../elements/fill-line/ElemFillLine";
  16. import PreviewText from "../../../elements/text/ElemText";
  17. import PreviewImage from "../../../elements/image/ElemImage";
  18. import PreviewLine from "../../../elements/line/ElemLine";
  19. import PreviewLines from "../../../elements/lines/ElemLines";
  20. import PreviewGrids from "../../../elements/grids/ElemGrids";
  21. import PreviewPane from "../../../elements/pane/ElemPane";
  22. import PreviewBarcode from "../../../elements/barcode/ElemBarcode";
  23. import PreviewFillNumber from "../../../elements/fill-number/ElemFillNumber";
  24. import PreviewFillField from "../../../elements/fill-field/ElemFillField";
  25. import PreviewFillTable from "../../../elements/fill-table/ElemFillTable";
  26. import PreviewFillPane from "../../../elements/fill-pane/ElemFillPane";
  27. export default {
  28. name: "topic-element-preview",
  29. components: {
  30. PreviewFillQuestion,
  31. PreviewFillLine,
  32. PreviewFillNumber,
  33. PreviewFillField,
  34. PreviewFillTable,
  35. PreviewFillPane,
  36. PreviewText,
  37. PreviewImage,
  38. PreviewLine,
  39. PreviewLines,
  40. PreviewGrids,
  41. PreviewPane,
  42. PreviewBarcode
  43. },
  44. props: {
  45. data: {
  46. type: Object
  47. }
  48. },
  49. data() {
  50. return {};
  51. },
  52. computed: {
  53. elementName() {
  54. const name = this.data.type.toLowerCase().replace("_", "-");
  55. return name.includes("line-") ? "line" : name;
  56. },
  57. compName() {
  58. return `preview-${this.elementName}`;
  59. },
  60. classes() {
  61. return [
  62. "topic-preview",
  63. "element-item",
  64. `element-item-${this.elementName}`
  65. ];
  66. },
  67. styles() {
  68. return {
  69. left: this.data.x + "px",
  70. top: this.data.y + "px",
  71. width: this.data.w + "px",
  72. height: this.data.h + "px",
  73. zIndex: this.data.zindex
  74. };
  75. }
  76. },
  77. methods: {}
  78. };
  79. </script>