123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import { getElementId, randomCode } from "../../plugins/utils";
- import { BOOLEAN_TYPE } from "../../enumerate";
- const MODEL = {
- type: "FILL_QUESTION",
- x: 0,
- y: 0,
- w: 0,
- h: 138,
- minHeight: 138,
- sign: "objective",
- topicName: "",
- topicNo: null,
- startNumber: 1,
- questionsCount: 10,
- optionCount: 4,
- questionCountPerGroup: 5,
- groupPerLine: 4,
- optionDirection: "horizontal",
- questionDirection: "vertical",
- questionGap: 8,
- groupGap: 30,
- optionGap: 12,
- isBoolean: false,
- booleanType: BOOLEAN_TYPE[0],
- isMultiply: false,
- isCovered: false,
- fontSize: "14px"
- };
- const getModel = () => {
- return {
- id: getElementId(),
- key: randomCode(),
- ...MODEL
- };
- };
- const getFullModel = (model, { pageSize, columnNumber }) => {
- const parent = { ...model };
-
-
- const numberPerChildren = {
- A3: {
- 2: [0, 0, 6, 5, 4, 3, 3, 2, 2, 2, 2, 1, 1],
- 3: [0, 0, 4, 3, 2, 2, 2, 1],
- 4: [0, 0, 3, 2, 2, 1]
- },
- A4: {
- 1: [0, 0, 6, 5, 4, 3, 3, 2, 2, 2, 2, 1, 1],
- 2: [0, 0, 3, 2, 2, 1]
- }
- };
-
-
-
-
-
-
- const numList = numberPerChildren[pageSize][columnNumber];
- const groupPerLine =
- model.optionCount > numList.length
- ? numList.pop()
- : numList[model.optionCount];
- const numPerLine = groupPerLine * model.questionCountPerGroup;
- const total = Math.ceil(model.questionsCount / numPerLine);
- let elements = [];
- for (let i = 0; i < total; i++) {
- let child = Object.assign({}, parent, {
- id: getElementId(),
- key: randomCode(),
- groupPerLine,
- startNumber: model.startNumber + i * numPerLine,
- questionsCount:
- i === total - 1 ? model.questionsCount - numPerLine * i : numPerLine,
- parent,
- isLast: i === total - 1
- });
- const optionCount =
- model.questionDirection === "vertical"
- ? Math.min(child.questionsCount, model.questionCountPerGroup)
- : Math.ceil(child.questionsCount / groupPerLine);
- const optionsHeight =
- 14 * optionCount + (optionCount - 1) * model.questionGap + 36;
- child.h = i ? optionsHeight : optionsHeight + 34;
- child.minHeight = child.h;
- elements[i] = child;
- }
- return elements;
- };
- export { MODEL, getModel, getFullModel };
|