hayun-vite 0.0.3 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/styles-test.css +90 -90
- package/assets/styles.css +90 -90
- package/data/formData1.js +42 -42
- package/data/officesObjStore.js +56 -56
- package/data/patientsObjStore.js +73 -73
- package/data/sampleData.js +94 -94
- package/index.js +11 -11
- package/package.json +1 -1
- package/src/Audiogram/Audiogram.js +194 -197
- package/src/Audiogram/dims.js +83 -83
- package/src/Form/Form.js +268 -276
- package/src/Form/Form_N.js +158 -158
- package/src/Form/Forms-Test.html +124 -124
- package/src/Form/Forms.js +121 -134
- package/src/Form/Header.js +91 -91
- package/src/Form/Reflex.js +141 -141
- package/src/Form/Sections.js +71 -71
- package/src/Form/Speech.js +132 -132
- package/src/Form/TextBox.js +66 -82
- package/src/Form/Tympanogram.js +355 -355
- package/src/Form/formStyles.css +122 -122
- package/src/Form/globalinfo.js +68 -68
- package/src/Form/grid/drawGrid.js +84 -84
- package/src/Form/grid/hideGrid.js +8 -8
- package/src/Form/printForm.js +122 -75
- package/src/Form/templates/combo.js +248 -248
- package/src/Form/templates/dims.js +204 -204
- package/src/Form/templates/rasaAud.js +287 -287
- package/src/Symbol/Symbols.js +29 -29
- package/src/Symbol/createSymbolSVG.js +240 -240
- package/src/Symbol/getAllSymbolsSVG.js +21 -21
- package/src/Symbol/insertSymbol.js +10 -10
- package/src/Symbol/symbolChart.js +47 -47
- package/src/common/putLine.js +16 -16
- package/src/common/putPoint.js +12 -12
- package/src/common/putRect.js +13 -13
- package/src/common/putText.js +17 -16
- package/src/common/putTopLayer.js +17 -17
- package/src/main.js +88 -87
- package/src/note.css +62 -0
- package/src/style.css +189 -156
- package/src/note.html +0 -1
package/src/Form/Reflex.js
CHANGED
@@ -1,142 +1,142 @@
|
|
1
|
-
import putRect from "../common/putRect.js";
|
2
|
-
import putText from "../common/putText.js";
|
3
|
-
|
4
|
-
const svgNS = "http://www.w3.org/2000/svg";
|
5
|
-
|
6
|
-
export default class Reflex {
|
7
|
-
constructor({ container }) {
|
8
|
-
this.container = container;
|
9
|
-
// this.left = dims.pad.left;
|
10
|
-
// this.top = dims.pad.top;
|
11
|
-
}
|
12
|
-
|
13
|
-
draw({ dims }) {
|
14
|
-
let width = dims.width;
|
15
|
-
let height = dims.height;
|
16
|
-
let x = dims.margin.left;
|
17
|
-
let y = dims.margin.top;
|
18
|
-
let style;
|
19
|
-
// جدولی با ۳ سطر و ۵ ستون
|
20
|
-
|
21
|
-
// تقسیم بر ۶ کردم تا با عرض باکسهای گفتار یکی باشه. وگرنه اینجا ۵ تا ستون داریم. یک ستون میدیم کپشن عمودی ستون اول
|
22
|
-
const cw = width / 6; // پهنای هر خانه
|
23
|
-
const ch = height / 3; // ارتفاع هر خانه
|
24
|
-
|
25
|
-
const svg = document.createElementNS(svgNS, "svg");
|
26
|
-
// svg.setAttribute("id", id);
|
27
|
-
svg.setAttribute("x", x);
|
28
|
-
svg.setAttribute("y", y);
|
29
|
-
svg.setAttribute("width", width);
|
30
|
-
svg.setAttribute("height", height);
|
31
|
-
svg.setAttribute("class", "reflex");
|
32
|
-
|
33
|
-
let lable = ["", "500", "1000", "2000", "4000"]; // مقادیر برچسبهای سطر اول
|
34
|
-
let cw1 = width / 6; // پهنای خانههای سطر اول
|
35
|
-
let ch1 = height / 3; // ارتفاع خانههای سطر اول
|
36
|
-
let ch2 = height / 3; // ارتفاع خانههای سطر دوم
|
37
|
-
|
38
|
-
// چاپ برچسبهای سطر اول
|
39
|
-
style = `
|
40
|
-
user-select: none;
|
41
|
-
direction: ltr !important;
|
42
|
-
/* text-align: center; */
|
43
|
-
font-family: Arial, Helvetica, sans-serif !important;
|
44
|
-
font-size: 0.8mm;
|
45
|
-
font-weight: bold;
|
46
|
-
text-anchor: middle; /*تراز افقی*/
|
47
|
-
dominant-baseline: middle; /* تراز عمودی*/
|
48
|
-
`;
|
49
|
-
lable.forEach((value, i) => {
|
50
|
-
if (value != "") {
|
51
|
-
let x = cw1 / 2 + cw1 * (i + 1);
|
52
|
-
let y = ch1 / 2;
|
53
|
-
// putText(value, x, y, "", "middle", "middle"); // با استایل تراز عمودی پایین نسبت به خط پایه
|
54
|
-
putText({ container: svg, value, x, y, style })
|
55
|
-
}
|
56
|
-
});
|
57
|
-
|
58
|
-
// مقادیر برچسبهای ستون اول
|
59
|
-
style = `
|
60
|
-
user-select: none;
|
61
|
-
direction: ltr !important;
|
62
|
-
/* text-align: center; */
|
63
|
-
font-family: Arial, Helvetica, sans-serif !important;
|
64
|
-
font-size: 0.8mm;
|
65
|
-
font-weight: bold;
|
66
|
-
text-anchor: end; /*تراز افقی*/
|
67
|
-
dominant-baseline: middle; /* تراز عمودی*/
|
68
|
-
`;
|
69
|
-
lable = ["Freq", "IPSI", "CONTRA"];
|
70
|
-
// چاپ برچسبهای ستون اول
|
71
|
-
putText({ container: svg, value: "Freq", x: cw1 * 2, y: ch1 / 2, style: style })
|
72
|
-
putText({ container: svg, value: "IPSI", x: cw1 * 2, y: ch1 * 3 / 2, style: style })
|
73
|
-
putText({ container: svg, value: "CONTRA", x: cw1 * 2, y: ch1 * 5 / 2, style: style })
|
74
|
-
|
75
|
-
//چاپ ده باکس سطر دوم و سوم
|
76
|
-
for (let j = 1; j <= 2; j++) {
|
77
|
-
for (let i = 2; i <= 5; i++) {
|
78
|
-
let x = cw1 / 2 + cw1 * i;
|
79
|
-
let y = ch1 * j + ch2 / 2;
|
80
|
-
let bw = cw1 * 0.80; // پهنای هر باکس
|
81
|
-
let bh = ch2 * 0.80; // ارتفاع هر باکس
|
82
|
-
//رسم باکس با مختصات مرکز باکس
|
83
|
-
putBox(x, y, bw, bh);
|
84
|
-
}
|
85
|
-
}
|
86
|
-
|
87
|
-
style = `
|
88
|
-
user-select: none;
|
89
|
-
direction: ltr !important;
|
90
|
-
/* text-align: center; */
|
91
|
-
font-family: Arial, Helvetica, sans-serif !important;
|
92
|
-
font-size: 0.8mm;
|
93
|
-
text-anchor: middle; /*تراز افقی*/
|
94
|
-
dominant-baseline: middle; /* تراز عمودی*/
|
95
|
-
`;
|
96
|
-
let names = ["IPSI_500", "IPSI_1000", "IPSI_2000", "IPSI_4000"];
|
97
|
-
for (let index = 0; index < 4; index++) {
|
98
|
-
x = cw1 / 2 + cw1 * (index + 2);
|
99
|
-
y = ch1 + ch2 / 2;
|
100
|
-
putText({ container: svg, value: "", x: x, y: y, style: style, name: names[index] })
|
101
|
-
}
|
102
|
-
|
103
|
-
// المنتهای تکست خالی با آیدی یکتا در سطر سوم
|
104
|
-
// آرایه نام آیدی یکتا برای المنت تکست مقادیر برای استفاده تابع آپدیت
|
105
|
-
names = ["CONTRA_500", "CONTRA_1000", "CONTRA_2000", "CONTRA_4000"];
|
106
|
-
|
107
|
-
for (let index = 0; index < 4; index++) {
|
108
|
-
// const idValue = idValues[index];
|
109
|
-
x = cw1 / 2 + cw1 * (index + 2);
|
110
|
-
y = ch1 * 2 + ch2 / 2;
|
111
|
-
putText({ container: svg, value: "", x: x, y: y, style: style, name: names[index] })
|
112
|
-
}
|
113
|
-
// مربع احاطهکننده کل جدول برای راهنمای توسعه
|
114
|
-
style = 'fill: transparent; stroke: green; stroke-width: 0.5;';
|
115
|
-
putRect({ container: svg, x: 0, y: 0, width, height, style, name: dims.name })
|
116
|
-
this.container.appendChild(svg);
|
117
|
-
this.chart = svg;
|
118
|
-
// return svg;
|
119
|
-
|
120
|
-
// توابع داخلی مورد نیاز
|
121
|
-
function putBox(x, y, w, h) {
|
122
|
-
let rect = document.createElementNS(svgNS, "rect");
|
123
|
-
rect.setAttribute("x", x - w / 2);
|
124
|
-
rect.setAttribute("y", y - h / 2);
|
125
|
-
rect.setAttribute("width", w);
|
126
|
-
rect.setAttribute("height", h);
|
127
|
-
rect.setAttribute("style", "fill: transparent; stroke: black; stroke-width: 0.2;");
|
128
|
-
svg.appendChild(rect);
|
129
|
-
}
|
130
|
-
}
|
131
|
-
|
132
|
-
update(data) {
|
133
|
-
this.chart.querySelector(`text[data-name="IPSI_500"]`).innerHTML = data?.IPSI?.["500"] || "";
|
134
|
-
this.chart.querySelector(`text[data-name="IPSI_1000"]`).innerHTML = data?.IPSI?.["1000"] || "";
|
135
|
-
this.chart.querySelector(`text[data-name="IPSI_2000"]`).innerHTML = data?.IPSI?.["2000"] || "";
|
136
|
-
this.chart.querySelector(`text[data-name="IPSI_4000"]`).innerHTML = data?.IPSI?.["4000"] || "";
|
137
|
-
this.chart.querySelector(`text[data-name="CONTRA_500"]`).innerHTML = data?.CONTRA?.["500"] || "";
|
138
|
-
this.chart.querySelector(`text[data-name="CONTRA_1000"]`).innerHTML = data?.CONTRA?.["1000"] || "";
|
139
|
-
this.chart.querySelector(`text[data-name="CONTRA_2000"]`).innerHTML = data?.CONTRA?.["2000"] || "";
|
140
|
-
this.chart.querySelector(`text[data-name="CONTRA_4000"]`).innerHTML = data?.CONTRA?.["4000"] || "";
|
141
|
-
}
|
1
|
+
import putRect from "../common/putRect.js";
|
2
|
+
import putText from "../common/putText.js";
|
3
|
+
|
4
|
+
const svgNS = "http://www.w3.org/2000/svg";
|
5
|
+
|
6
|
+
export default class Reflex {
|
7
|
+
constructor({ container }) {
|
8
|
+
this.container = container;
|
9
|
+
// this.left = dims.pad.left;
|
10
|
+
// this.top = dims.pad.top;
|
11
|
+
}
|
12
|
+
|
13
|
+
draw({ dims }) {
|
14
|
+
let width = dims.width;
|
15
|
+
let height = dims.height;
|
16
|
+
let x = dims.margin.left;
|
17
|
+
let y = dims.margin.top;
|
18
|
+
let style;
|
19
|
+
// جدولی با ۳ سطر و ۵ ستون
|
20
|
+
|
21
|
+
// تقسیم بر ۶ کردم تا با عرض باکسهای گفتار یکی باشه. وگرنه اینجا ۵ تا ستون داریم. یک ستون میدیم کپشن عمودی ستون اول
|
22
|
+
const cw = width / 6; // پهنای هر خانه
|
23
|
+
const ch = height / 3; // ارتفاع هر خانه
|
24
|
+
|
25
|
+
const svg = document.createElementNS(svgNS, "svg");
|
26
|
+
// svg.setAttribute("id", id);
|
27
|
+
svg.setAttribute("x", x);
|
28
|
+
svg.setAttribute("y", y);
|
29
|
+
svg.setAttribute("width", width);
|
30
|
+
svg.setAttribute("height", height);
|
31
|
+
svg.setAttribute("class", "reflex");
|
32
|
+
|
33
|
+
let lable = ["", "500", "1000", "2000", "4000"]; // مقادیر برچسبهای سطر اول
|
34
|
+
let cw1 = width / 6; // پهنای خانههای سطر اول
|
35
|
+
let ch1 = height / 3; // ارتفاع خانههای سطر اول
|
36
|
+
let ch2 = height / 3; // ارتفاع خانههای سطر دوم
|
37
|
+
|
38
|
+
// چاپ برچسبهای سطر اول
|
39
|
+
style = `
|
40
|
+
user-select: none;
|
41
|
+
direction: ltr !important;
|
42
|
+
/* text-align: center; */
|
43
|
+
font-family: Arial, Helvetica, sans-serif !important;
|
44
|
+
font-size: 0.8mm;
|
45
|
+
font-weight: bold;
|
46
|
+
text-anchor: middle; /*تراز افقی*/
|
47
|
+
dominant-baseline: middle; /* تراز عمودی*/
|
48
|
+
`;
|
49
|
+
lable.forEach((value, i) => {
|
50
|
+
if (value != "") {
|
51
|
+
let x = cw1 / 2 + cw1 * (i + 1);
|
52
|
+
let y = ch1 / 2;
|
53
|
+
// putText(value, x, y, "", "middle", "middle"); // با استایل تراز عمودی پایین نسبت به خط پایه
|
54
|
+
putText({ container: svg, value, x, y, style })
|
55
|
+
}
|
56
|
+
});
|
57
|
+
|
58
|
+
// مقادیر برچسبهای ستون اول
|
59
|
+
style = `
|
60
|
+
user-select: none;
|
61
|
+
direction: ltr !important;
|
62
|
+
/* text-align: center; */
|
63
|
+
font-family: Arial, Helvetica, sans-serif !important;
|
64
|
+
font-size: 0.8mm;
|
65
|
+
font-weight: bold;
|
66
|
+
text-anchor: end; /*تراز افقی*/
|
67
|
+
dominant-baseline: middle; /* تراز عمودی*/
|
68
|
+
`;
|
69
|
+
lable = ["Freq", "IPSI", "CONTRA"];
|
70
|
+
// چاپ برچسبهای ستون اول
|
71
|
+
putText({ container: svg, value: "Freq", x: cw1 * 2, y: ch1 / 2, style: style })
|
72
|
+
putText({ container: svg, value: "IPSI", x: cw1 * 2, y: ch1 * 3 / 2, style: style })
|
73
|
+
putText({ container: svg, value: "CONTRA", x: cw1 * 2, y: ch1 * 5 / 2, style: style })
|
74
|
+
|
75
|
+
//چاپ ده باکس سطر دوم و سوم
|
76
|
+
for (let j = 1; j <= 2; j++) {
|
77
|
+
for (let i = 2; i <= 5; i++) {
|
78
|
+
let x = cw1 / 2 + cw1 * i;
|
79
|
+
let y = ch1 * j + ch2 / 2;
|
80
|
+
let bw = cw1 * 0.80; // پهنای هر باکس
|
81
|
+
let bh = ch2 * 0.80; // ارتفاع هر باکس
|
82
|
+
//رسم باکس با مختصات مرکز باکس
|
83
|
+
putBox(x, y, bw, bh);
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
style = `
|
88
|
+
user-select: none;
|
89
|
+
direction: ltr !important;
|
90
|
+
/* text-align: center; */
|
91
|
+
font-family: Arial, Helvetica, sans-serif !important;
|
92
|
+
font-size: 0.8mm;
|
93
|
+
text-anchor: middle; /*تراز افقی*/
|
94
|
+
dominant-baseline: middle; /* تراز عمودی*/
|
95
|
+
`;
|
96
|
+
let names = ["IPSI_500", "IPSI_1000", "IPSI_2000", "IPSI_4000"];
|
97
|
+
for (let index = 0; index < 4; index++) {
|
98
|
+
x = cw1 / 2 + cw1 * (index + 2);
|
99
|
+
y = ch1 + ch2 / 2;
|
100
|
+
putText({ container: svg, value: "", x: x, y: y, style: style, name: names[index] })
|
101
|
+
}
|
102
|
+
|
103
|
+
// المنتهای تکست خالی با آیدی یکتا در سطر سوم
|
104
|
+
// آرایه نام آیدی یکتا برای المنت تکست مقادیر برای استفاده تابع آپدیت
|
105
|
+
names = ["CONTRA_500", "CONTRA_1000", "CONTRA_2000", "CONTRA_4000"];
|
106
|
+
|
107
|
+
for (let index = 0; index < 4; index++) {
|
108
|
+
// const idValue = idValues[index];
|
109
|
+
x = cw1 / 2 + cw1 * (index + 2);
|
110
|
+
y = ch1 * 2 + ch2 / 2;
|
111
|
+
putText({ container: svg, value: "", x: x, y: y, style: style, name: names[index] })
|
112
|
+
}
|
113
|
+
// مربع احاطهکننده کل جدول برای راهنمای توسعه
|
114
|
+
style = 'fill: transparent; stroke: green; stroke-width: 0.5;';
|
115
|
+
putRect({ container: svg, x: 0, y: 0, width, height, style, name: dims.name })
|
116
|
+
this.container.appendChild(svg);
|
117
|
+
this.chart = svg;
|
118
|
+
// return svg;
|
119
|
+
|
120
|
+
// توابع داخلی مورد نیاز
|
121
|
+
function putBox(x, y, w, h) {
|
122
|
+
let rect = document.createElementNS(svgNS, "rect");
|
123
|
+
rect.setAttribute("x", x - w / 2);
|
124
|
+
rect.setAttribute("y", y - h / 2);
|
125
|
+
rect.setAttribute("width", w);
|
126
|
+
rect.setAttribute("height", h);
|
127
|
+
rect.setAttribute("style", "fill: transparent; stroke: black; stroke-width: 0.2;");
|
128
|
+
svg.appendChild(rect);
|
129
|
+
}
|
130
|
+
}
|
131
|
+
|
132
|
+
update(data) {
|
133
|
+
this.chart.querySelector(`text[data-name="IPSI_500"]`).innerHTML = data?.IPSI?.["500"] || "";
|
134
|
+
this.chart.querySelector(`text[data-name="IPSI_1000"]`).innerHTML = data?.IPSI?.["1000"] || "";
|
135
|
+
this.chart.querySelector(`text[data-name="IPSI_2000"]`).innerHTML = data?.IPSI?.["2000"] || "";
|
136
|
+
this.chart.querySelector(`text[data-name="IPSI_4000"]`).innerHTML = data?.IPSI?.["4000"] || "";
|
137
|
+
this.chart.querySelector(`text[data-name="CONTRA_500"]`).innerHTML = data?.CONTRA?.["500"] || "";
|
138
|
+
this.chart.querySelector(`text[data-name="CONTRA_1000"]`).innerHTML = data?.CONTRA?.["1000"] || "";
|
139
|
+
this.chart.querySelector(`text[data-name="CONTRA_2000"]`).innerHTML = data?.CONTRA?.["2000"] || "";
|
140
|
+
this.chart.querySelector(`text[data-name="CONTRA_4000"]`).innerHTML = data?.CONTRA?.["4000"] || "";
|
141
|
+
}
|
142
142
|
}
|
package/src/Form/Sections.js
CHANGED
@@ -1,72 +1,72 @@
|
|
1
|
-
export default class Sections {
|
2
|
-
constructor({ container, dims }) {
|
3
|
-
this.dims = dims
|
4
|
-
// console.log(this.dims.sections);
|
5
|
-
this.container = container;
|
6
|
-
this.margins = dims.margin;
|
7
|
-
|
8
|
-
this.width = dims.width;
|
9
|
-
this.height = dims.height;
|
10
|
-
|
11
|
-
this.left = 0; // برای این فعلا برنامه ای ندارم وقتی دو سکشن در یک خط لازم شد میام سراغش
|
12
|
-
this.top = 0;
|
13
|
-
// از پایینی برای رسم تاپ لایر استفاده میکنم
|
14
|
-
this.cords = []; // آرایه نگهداری مختصات و طول و عرض هر سکشن
|
15
|
-
|
16
|
-
// یک حلقه آرایه ایجاد میکنیم همه سکشن ها رسم شود
|
17
|
-
this.create()
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
}
|
22
|
-
// ایجاد سکشنها
|
23
|
-
create() {
|
24
|
-
// console.log(this.dims.sections);
|
25
|
-
const margins = this.margins;
|
26
|
-
|
27
|
-
this.dims.sections.forEach(section => {
|
28
|
-
let name = section.name;
|
29
|
-
let width = section.w;
|
30
|
-
let height = section.h;
|
31
|
-
const display = section.display;
|
32
|
-
// اگر مقدار دیسپلی اینلاین بود به بلوک بعد نمیره
|
33
|
-
|
34
|
-
// یک کادر چهارگوش با نام
|
35
|
-
const svgNS = "http://www.w3.org/2000/svg";
|
36
|
-
// const w = dims.header.width, h = dims.header.height;
|
37
|
-
const svg = document.createElementNS(svgNS, "svg");
|
38
|
-
svg.setAttribute("data-name", name);
|
39
|
-
svg.setAttribute("width", width);
|
40
|
-
svg.setAttribute("height", height);
|
41
|
-
svg.setAttribute("x", this.left);
|
42
|
-
svg.setAttribute("y", this.top);
|
43
|
-
|
44
|
-
// نگهداری مختصات رسم بوردر هر سکشن برای استفاده در متد داخلی رسم بودر تاپ لایر
|
45
|
-
this.cords.push({ name: name, width: width, height: height, x: this.left, y: this.top });
|
46
|
-
|
47
|
-
// بوردر راهنما
|
48
|
-
let rect = document.createElementNS(svgNS, "rect");
|
49
|
-
rect.setAttribute("x", 0);
|
50
|
-
rect.setAttribute("y", 0);
|
51
|
-
rect.setAttribute("width", width);
|
52
|
-
rect.setAttribute("height", height);
|
53
|
-
rect.setAttribute("fill", "transparent");
|
54
|
-
rect.setAttribute("stroke", "blue");
|
55
|
-
rect.setAttribute("stroke-width", "0.1mm");
|
56
|
-
rect.setAttribute("data-name", "section-border");
|
57
|
-
svg.appendChild(rect);
|
58
|
-
this[name] = svg;
|
59
|
-
this.container.appendChild(svg)
|
60
|
-
|
61
|
-
// به روز کردن ارتفاع نقطه خالی برای رسم سکشن بعدی
|
62
|
-
// با توجه بلاک یا اینلاین بودن سکشن بالا و چپ را تغییر بده
|
63
|
-
// else { this.left = margins.left; this.top += height; }
|
64
|
-
if (display === 'block') { this.left = 0; this.top += height; }
|
65
|
-
if (display === 'inline') { this.left += width; }
|
66
|
-
|
67
|
-
|
68
|
-
// if (this.left >= this.width) { this.left = margins.left; this.top += height; }
|
69
|
-
});
|
70
|
-
}
|
71
|
-
|
1
|
+
export default class Sections {
|
2
|
+
constructor({ container, dims }) {
|
3
|
+
this.dims = dims
|
4
|
+
// console.log(this.dims.sections);
|
5
|
+
this.container = container;
|
6
|
+
this.margins = dims.margin;
|
7
|
+
|
8
|
+
this.width = dims.width;
|
9
|
+
this.height = dims.height;
|
10
|
+
|
11
|
+
this.left = 0; // برای این فعلا برنامه ای ندارم وقتی دو سکشن در یک خط لازم شد میام سراغش
|
12
|
+
this.top = 0;
|
13
|
+
// از پایینی برای رسم تاپ لایر استفاده میکنم
|
14
|
+
this.cords = []; // آرایه نگهداری مختصات و طول و عرض هر سکشن
|
15
|
+
|
16
|
+
// یک حلقه آرایه ایجاد میکنیم همه سکشن ها رسم شود
|
17
|
+
this.create()
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
}
|
22
|
+
// ایجاد سکشنها
|
23
|
+
create() {
|
24
|
+
// console.log(this.dims.sections);
|
25
|
+
const margins = this.margins;
|
26
|
+
|
27
|
+
this.dims.sections.forEach(section => {
|
28
|
+
let name = section.name;
|
29
|
+
let width = section.w;
|
30
|
+
let height = section.h;
|
31
|
+
const display = section.display;
|
32
|
+
// اگر مقدار دیسپلی اینلاین بود به بلوک بعد نمیره
|
33
|
+
|
34
|
+
// یک کادر چهارگوش با نام
|
35
|
+
const svgNS = "http://www.w3.org/2000/svg";
|
36
|
+
// const w = dims.header.width, h = dims.header.height;
|
37
|
+
const svg = document.createElementNS(svgNS, "svg");
|
38
|
+
svg.setAttribute("data-name", name);
|
39
|
+
svg.setAttribute("width", width);
|
40
|
+
svg.setAttribute("height", height);
|
41
|
+
svg.setAttribute("x", this.left);
|
42
|
+
svg.setAttribute("y", this.top);
|
43
|
+
|
44
|
+
// نگهداری مختصات رسم بوردر هر سکشن برای استفاده در متد داخلی رسم بودر تاپ لایر
|
45
|
+
this.cords.push({ name: name, width: width, height: height, x: this.left, y: this.top });
|
46
|
+
|
47
|
+
// بوردر راهنما
|
48
|
+
let rect = document.createElementNS(svgNS, "rect");
|
49
|
+
rect.setAttribute("x", 0);
|
50
|
+
rect.setAttribute("y", 0);
|
51
|
+
rect.setAttribute("width", width);
|
52
|
+
rect.setAttribute("height", height);
|
53
|
+
rect.setAttribute("fill", "transparent");
|
54
|
+
rect.setAttribute("stroke", "blue");
|
55
|
+
rect.setAttribute("stroke-width", "0.1mm");
|
56
|
+
rect.setAttribute("data-name", "section-border");
|
57
|
+
svg.appendChild(rect);
|
58
|
+
this[name] = svg;
|
59
|
+
this.container.appendChild(svg)
|
60
|
+
|
61
|
+
// به روز کردن ارتفاع نقطه خالی برای رسم سکشن بعدی
|
62
|
+
// با توجه بلاک یا اینلاین بودن سکشن بالا و چپ را تغییر بده
|
63
|
+
// else { this.left = margins.left; this.top += height; }
|
64
|
+
if (display === 'block') { this.left = 0; this.top += height; }
|
65
|
+
if (display === 'inline') { this.left += width; }
|
66
|
+
|
67
|
+
|
68
|
+
// if (this.left >= this.width) { this.left = margins.left; this.top += height; }
|
69
|
+
});
|
70
|
+
}
|
71
|
+
|
72
72
|
}
|