model.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. // element
  2. import { getModel as createLines } from "../../../elements/lines/model";
  3. import { getModel as createLine } from "../../../elements/line/model";
  4. import { getModel as createText } from "../../../elements/text/model";
  5. import { getModel as createImage } from "../../../elements/image/model";
  6. import { getModel as createGrids } from "../../../elements/grids/model";
  7. import { getModel as createPane } from "../../../elements/pane/model";
  8. import { getModel as createBarcode } from "../../../elements/barcode/model";
  9. import { getModel as createFillNumber } from "../../../elements/fill-number/model";
  10. import { getModel as createFillField } from "../../../elements/fill-field/model";
  11. import { getModel as createFillTable } from "../../../elements/fill-table/model";
  12. import { getModel as createFillPane } from "../../../elements/fill-pane/model";
  13. import { getModel as createFillQuestion } from "./fill-question/model";
  14. import { getModel as createFillLine } from "./fill-line/model";
  15. // available infos
  16. export const EDITABLE_ELEMENT = [
  17. "LINE_HORIZONTAL",
  18. "LINE_VERTICAL",
  19. "TEXT",
  20. "IMAGE",
  21. "PANE",
  22. "BARCODE"
  23. ];
  24. export const EDITABLE_TOPIC = [
  25. "FILL_QUESTION",
  26. "FILL_LINE",
  27. "FILL_NUMBER",
  28. "FILL_FIELD",
  29. "FILL_TABLE",
  30. "FILL_PANE",
  31. "LINES",
  32. "GRIDS"
  33. ];
  34. export const ELEMENT_INFOS = {
  35. LINES: {
  36. name: "多横线",
  37. getModel: createLines,
  38. getDesc: element => {
  39. return `多横线-行数:${element.lineCount}`;
  40. }
  41. },
  42. LINE_HORIZONTAL: {
  43. name: "横线",
  44. getModel: () => createLine("HORIZONTAL"),
  45. getDesc: () => {
  46. return `横线`;
  47. }
  48. },
  49. LINE_VERTICAL: {
  50. name: "竖线",
  51. getModel: () => createLine("VERTICAL"),
  52. getDesc: () => {
  53. return `竖线`;
  54. }
  55. },
  56. TEXT: {
  57. name: "文本",
  58. getModel: createText,
  59. getDesc: element => {
  60. return `文本-${element.content[0].content.substr(0, 20)}`;
  61. }
  62. },
  63. IMAGE: {
  64. name: "图片",
  65. getModel: createImage,
  66. getDesc: () => {
  67. return `图片`;
  68. }
  69. },
  70. GRIDS: {
  71. name: "网格",
  72. getModel: createGrids,
  73. getDesc: element => {
  74. return `网格-${element.columnCount}×${element.rowCount}`;
  75. }
  76. },
  77. PANE: {
  78. name: "方框",
  79. getModel: createPane,
  80. getDesc: () => {
  81. return `方框`;
  82. }
  83. },
  84. BARCODE: {
  85. name: "条形码",
  86. getModel: createBarcode,
  87. getDesc: element => {
  88. const name = (element.fields[0] && element.fields[0].name) || "";
  89. return `条形码-${name}`;
  90. }
  91. },
  92. FILL_QUESTION: {
  93. name: "选项填涂",
  94. getModel: createFillQuestion,
  95. getDesc: element => {
  96. const endNumber = element.startNumber + element.questionsCount - 1;
  97. return `选项填涂-${element.startNumber}~${endNumber}`;
  98. }
  99. },
  100. FILL_LINE: {
  101. name: "填空",
  102. getModel: createFillLine,
  103. getDesc: element => {
  104. const endNumber = element.startNumber + element.questionsCount - 1;
  105. return `填空-${element.startNumber}~${endNumber}`;
  106. }
  107. },
  108. FILL_NUMBER: {
  109. name: "号码填涂",
  110. getModel: createFillNumber,
  111. getDesc: element => {
  112. return `号码填涂-${element.name}`;
  113. }
  114. },
  115. FILL_FIELD: {
  116. name: "变量",
  117. getModel: createFillField,
  118. getDesc: element => {
  119. const fieldNames = element.fields.map(field => field.name).join(",");
  120. return `变量-${fieldNames}`;
  121. }
  122. },
  123. FILL_TABLE: {
  124. name: "表格",
  125. getModel: createFillTable,
  126. getDesc: element => {
  127. return `表格-${element.colCount}×${element.rowCount}`;
  128. }
  129. },
  130. FILL_PANE: {
  131. name: "方格组",
  132. getModel: createFillPane,
  133. getDesc: element => {
  134. return `方格组-${element.paneCount}`;
  135. }
  136. }
  137. };
  138. export const ELEMENT_LIST = EDITABLE_ELEMENT.map(type => {
  139. return {
  140. ...ELEMENT_INFOS[type],
  141. type
  142. };
  143. });
  144. export const TOPIC_LIST = EDITABLE_TOPIC.map(type => {
  145. return {
  146. ...ELEMENT_INFOS[type],
  147. type
  148. };
  149. });
  150. // 获取元件默认数据结构
  151. export const getElementModel = type => {
  152. return { ...ELEMENT_INFOS[type].getModel(), zindex: 9, desc: "" };
  153. };
  154. export const getElementName = type => {
  155. return ELEMENT_INFOS[type].name;
  156. };
  157. export const getElementDesc = element => {
  158. return ELEMENT_INFOS[element.type].getDesc(element);
  159. };