@abi-software/map-side-bar 2.14.1-acupoint.0 → 2.14.1-beta.1
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/dist/map-side-bar.js +488 -471
- package/dist/map-side-bar.umd.cjs +34 -34
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/components/AcupointsCard.vue +39 -9
package/package.json
CHANGED
|
@@ -26,15 +26,18 @@
|
|
|
26
26
|
</div>
|
|
27
27
|
</template>
|
|
28
28
|
<template v-for="field in displayFields" :key="field['name']">
|
|
29
|
-
<div class="details"
|
|
29
|
+
<div class="details">
|
|
30
30
|
<strong>{{ field['name'] }}: </strong>
|
|
31
|
-
<template v-if="field['name'] === '
|
|
32
|
-
<a :href="entry['
|
|
31
|
+
<template v-if="field['name'] === 'Acupoint Curie'">
|
|
32
|
+
<a :href="entry['Acupoint IRI']" target="_blank">
|
|
33
33
|
<span>
|
|
34
|
-
|
|
34
|
+
{{ entry['Acupoint Curie'] }}
|
|
35
35
|
</span>
|
|
36
36
|
</a>
|
|
37
37
|
</template>
|
|
38
|
+
<template v-else-if="field['name'] === 'Reference'">
|
|
39
|
+
<div v-html="formatReference(entry[field['name']])"></div>
|
|
40
|
+
</template>
|
|
38
41
|
<template v-else>
|
|
39
42
|
<span
|
|
40
43
|
v-if="!field['isEditing']"
|
|
@@ -81,16 +84,24 @@ export default {
|
|
|
81
84
|
expanded: [],
|
|
82
85
|
tags: [],
|
|
83
86
|
displayFields: [
|
|
87
|
+
{name: "Acupoint Curie", isEditing: false},
|
|
88
|
+
{name: "Acupoint", isEditing: false},
|
|
89
|
+
{name: "Acupoint Category", isEditing: false},
|
|
84
90
|
{name: "Synonym", isEditing: false},
|
|
91
|
+
{name: "Pinyin Name", isEditing: false},
|
|
85
92
|
{name: "Chinese Name", isEditing: false},
|
|
86
|
-
{name: "English Name", isEditing: false},
|
|
87
93
|
{name: "Meridian", isEditing: false},
|
|
88
|
-
{name: "
|
|
89
|
-
{name: "
|
|
94
|
+
{name: "Special Point Role", isEditing: false},
|
|
95
|
+
{name: "Location", isEditing: false},
|
|
96
|
+
{name: "Location Anatomy", isEditing: false},
|
|
90
97
|
{name: "Acupuncture Method", isEditing: false},
|
|
91
|
-
{name: "
|
|
98
|
+
{name: "Indications", isEditing: false},
|
|
92
99
|
{name: "Innervation", isEditing: false},
|
|
93
|
-
{name: "
|
|
100
|
+
{name: "Nearby Nerve", isEditing: false},
|
|
101
|
+
{name: "Vasculature", isEditing: false},
|
|
102
|
+
{name: "Nearby Artery", isEditing: false},
|
|
103
|
+
{name: "Nearby Vein", isEditing: false},
|
|
104
|
+
{name: "Reference", isEditing: false},
|
|
94
105
|
//{name: "Notes", isEditing: false},
|
|
95
106
|
]
|
|
96
107
|
}
|
|
@@ -139,6 +150,25 @@ export default {
|
|
|
139
150
|
inputMounted: function(event) {
|
|
140
151
|
event.el?.querySelector('textarea')?.focus();
|
|
141
152
|
},
|
|
153
|
+
formatReference: function(text) {
|
|
154
|
+
if (!text) {
|
|
155
|
+
return 'Not Available';
|
|
156
|
+
}
|
|
157
|
+
// Escape HTML first so only the markup added below is rendered
|
|
158
|
+
const escaped = String(text)
|
|
159
|
+
.replace(/&/g, '&')
|
|
160
|
+
.replace(/</g, '<')
|
|
161
|
+
.replace(/>/g, '>')
|
|
162
|
+
.replace(/"/g, '"')
|
|
163
|
+
.replace(/'/g, ''');
|
|
164
|
+
return escaped
|
|
165
|
+
// Bold and italicise square-bracketed labels, e.g. [Acupoint Location, Pinyin Label]
|
|
166
|
+
.replace(/\[([^\]\n]+)\]/g, '<strong><em>[$1]</em></strong>')
|
|
167
|
+
// Turn http(s) URLs into links, leaving trailing punctuation outside
|
|
168
|
+
.replace(/https?:\/\/[^\s<]+?(?=[.,;:!?)]*(?:\s|<|$))/g,
|
|
169
|
+
(url) => `<a href="${url}" target="_blank" rel="noopener noreferrer">${url}</a>`)
|
|
170
|
+
.replace(/\n/g, '<br>');
|
|
171
|
+
},
|
|
142
172
|
setFieldToEditing: function(field) {
|
|
143
173
|
if (this.allowEditing) {
|
|
144
174
|
field['isEditing'] = true;
|