@abi-software/map-side-bar 2.12.0-acupoints.2 → 2.12.2
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 +8388 -9007
- package/dist/map-side-bar.umd.cjs +63 -63
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/App.vue +1 -24
- package/src/components/DatasetExplorer.vue +5 -4
- package/src/components/SideBar.vue +3 -46
- package/src/components.d.ts +0 -5
- package/src/acupoints.js +0 -70
- package/src/components/AcupointsCard.vue +0 -215
- package/src/components/AcupointsInfoSearch.vue +0 -430
- package/src/services/flatmapKnowledge.js +0 -94
- package/src/services/flatmapQueries.js +0 -498
package/package.json
CHANGED
package/src/App.vue
CHANGED
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
<el-button @click="keywordSearch">keyword search</el-button>
|
|
19
19
|
<el-button @click="getFacets">Get facets</el-button>
|
|
20
20
|
<el-button @click="toggleCreateData">Create Data/Annotation</el-button>
|
|
21
|
-
<el-button @click="searchAcupoints">Search Acupoints</el-button>
|
|
22
21
|
<el-button @click="openConnectivitySearch()">Connectivity Search</el-button>
|
|
23
22
|
</div>
|
|
24
23
|
<SideBar
|
|
@@ -27,18 +26,14 @@
|
|
|
27
26
|
ref="sideBar"
|
|
28
27
|
:visible="sideBarVisibility"
|
|
29
28
|
:annotationEntry="annotationEntry"
|
|
30
|
-
:acupointsInfoList="acupoints"
|
|
31
29
|
:createData="createData"
|
|
32
30
|
:connectivityEntry="connectivityEntry"
|
|
33
31
|
:connectivityKnowledge="connectivityKnowledge"
|
|
34
32
|
:showVisibilityFilter="true"
|
|
35
|
-
:tabs="tabArray"
|
|
36
33
|
@search-changed="searchChanged($event)"
|
|
37
34
|
@hover-changed="hoverChanged($event)"
|
|
38
35
|
@connectivity-hovered="onConnectivityHovered"
|
|
39
36
|
@actionClick="action"
|
|
40
|
-
@acupoints-clicked="onAcupointsClicked"
|
|
41
|
-
@acupoints-hovered="onAcupointsHovered"
|
|
42
37
|
@connectivity-collapse-change="onConnectivityCollapseChange"
|
|
43
38
|
/>
|
|
44
39
|
</div>
|
|
@@ -47,7 +42,6 @@
|
|
|
47
42
|
<script>
|
|
48
43
|
/* eslint-disable no-alert, no-console */
|
|
49
44
|
// optionally import default styles
|
|
50
|
-
import { acupointEntries } from './acupoints.js'
|
|
51
45
|
import SideBar from './components/SideBar.vue'
|
|
52
46
|
import EventBus from './components/EventBus.js'
|
|
53
47
|
import exampleConnectivityInput from './exampleConnectivityInput.js'
|
|
@@ -127,14 +121,6 @@ export default {
|
|
|
127
121
|
},
|
|
128
122
|
data: function () {
|
|
129
123
|
return {
|
|
130
|
-
acupoints: acupointEntries,
|
|
131
|
-
contextArray: [null, null],
|
|
132
|
-
tabArray: [
|
|
133
|
-
{ title: 'Dataset Explorer', id: 1, type: 'datasetExplorer', closable: false },
|
|
134
|
-
{ title: 'Connectivity Explorer', id: 2, type: 'connectivityExplorer', closable: false },
|
|
135
|
-
{ title: 'Annotation', id: 3, type: 'annotation', closable: true },
|
|
136
|
-
{title: 'Acupoints', id: 4, type: 'acupoints' },
|
|
137
|
-
],
|
|
138
124
|
annotationEntry: [{
|
|
139
125
|
featureId: "epicardium",
|
|
140
126
|
resourceId: "https://mapcore-bucket1.s3-us-west-2.amazonaws.com/others/29_Jan_2020/heartICN_metadata.json",
|
|
@@ -170,12 +156,6 @@ export default {
|
|
|
170
156
|
}
|
|
171
157
|
},
|
|
172
158
|
methods: {
|
|
173
|
-
onAcupointsClicked: function (data) {
|
|
174
|
-
console.log("acupoints-clicked", data)
|
|
175
|
-
},
|
|
176
|
-
onAcupointsHovered: function (data) {
|
|
177
|
-
console.log("acupoints-hovered", data)
|
|
178
|
-
},
|
|
179
159
|
loadConnectivityKnowledge: async function () {
|
|
180
160
|
const sql = `select knowledge from knowledge
|
|
181
161
|
where source="${this.sckanVersion}"
|
|
@@ -252,9 +232,6 @@ export default {
|
|
|
252
232
|
'http://purl.obolibrary.org/obo/UBERON_0001103'
|
|
253
233
|
)
|
|
254
234
|
},
|
|
255
|
-
searchAcupoints: function() {
|
|
256
|
-
this.$refs.sideBar.openAcupointsSearch("LU 1")
|
|
257
|
-
},
|
|
258
235
|
singleFacets: function () {
|
|
259
236
|
this.$refs.sideBar.addFilter({
|
|
260
237
|
facet: 'Cardiovascular system',
|
|
@@ -429,4 +406,4 @@ body {
|
|
|
429
406
|
align-items: center;
|
|
430
407
|
gap: 0.5rem;
|
|
431
408
|
}
|
|
432
|
-
</style
|
|
409
|
+
</style>
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
<ul>
|
|
25
25
|
<li>
|
|
26
26
|
<strong>Multiple Terms:</strong> Separate terms with a comma (<code>,</code>).
|
|
27
|
-
This will find
|
|
27
|
+
This will find datasets that match any of the terms (an "OR" search).
|
|
28
28
|
</li>
|
|
29
29
|
<li>
|
|
30
|
-
<strong>Exact Phrase:</strong> Terms within a comma block will be matched as exact phrase.
|
|
30
|
+
<strong>Exact Phrase:</strong> Terms within a comma block will be matched as an exact phrase.
|
|
31
31
|
</li>
|
|
32
32
|
</ul>
|
|
33
33
|
<br/>
|
|
@@ -35,11 +35,12 @@
|
|
|
35
35
|
<ul>
|
|
36
36
|
<li>
|
|
37
37
|
<strong>To find by exact phrase:</strong>
|
|
38
|
-
Searching for <code>vagus nerve</code> will find any dataset containing <code>vagus nerve</code>.
|
|
38
|
+
Searching for <code>vagus nerve</code> will find any dataset containing <code>"vagus nerve"</code>.
|
|
39
39
|
</li>
|
|
40
40
|
<li>
|
|
41
41
|
<strong>To find by multiple terms:</strong>
|
|
42
|
-
Searching for <code>
|
|
42
|
+
Searching for <code>nerve, vagus</code> will find data that contains either <code>nerve</code> OR <code>vagus</code>.
|
|
43
|
+
<br/>
|
|
43
44
|
Due to the limitation of the search engine, space between words in a comma block will be treated as comma when multiple terms search is active.
|
|
44
45
|
</li>
|
|
45
46
|
</ul>
|
|
@@ -64,14 +64,6 @@
|
|
|
64
64
|
@connectivity-item-close="onConnectivityItemClose"
|
|
65
65
|
/>
|
|
66
66
|
</template>
|
|
67
|
-
<template v-else-if="tab.type === 'acupoints' && acupointsInfoList">
|
|
68
|
-
<acupoints-info-search
|
|
69
|
-
:ref="'acupointsTab_' + tab.id"
|
|
70
|
-
:entry="acupointsInfoList"
|
|
71
|
-
@on-acupoints-click="acupointClicked"
|
|
72
|
-
v-show="tab.id === activeTabId"
|
|
73
|
-
/>
|
|
74
|
-
</template>
|
|
75
67
|
<template v-else>
|
|
76
68
|
<DatasetExplorer
|
|
77
69
|
class="sidebar-content-container"
|
|
@@ -100,7 +92,6 @@ import { ElDrawer as Drawer, ElIcon as Icon } from 'element-plus'
|
|
|
100
92
|
import DatasetExplorer from './DatasetExplorer.vue'
|
|
101
93
|
import EventBus from './EventBus.js'
|
|
102
94
|
import Tabs from './Tabs.vue'
|
|
103
|
-
import AcupointsInfoSearch from './AcupointsInfoSearch.vue'
|
|
104
95
|
import AnnotationTool from './AnnotationTool.vue'
|
|
105
96
|
import ConnectivityExplorer from './ConnectivityExplorer.vue'
|
|
106
97
|
import { removeShowAllFacets } from '../algolia/utils.js'
|
|
@@ -160,13 +151,6 @@ export default {
|
|
|
160
151
|
type: Array,
|
|
161
152
|
default: [],
|
|
162
153
|
},
|
|
163
|
-
/**
|
|
164
|
-
* The acupoints info to show in sidebar.
|
|
165
|
-
*/
|
|
166
|
-
acupointsInfoList: {
|
|
167
|
-
type: Object,
|
|
168
|
-
default: null,
|
|
169
|
-
},
|
|
170
154
|
/**
|
|
171
155
|
* The annotation data to show in sidebar.
|
|
172
156
|
*/
|
|
@@ -220,13 +204,6 @@ export default {
|
|
|
220
204
|
}
|
|
221
205
|
},
|
|
222
206
|
methods: {
|
|
223
|
-
/**
|
|
224
|
-
* This event is emitted with a mouse click on acupoint card
|
|
225
|
-
* @arg data
|
|
226
|
-
*/
|
|
227
|
-
acupointClicked: function (data) {
|
|
228
|
-
this.$emit('acupoints-clicked', data)
|
|
229
|
-
},
|
|
230
207
|
onConnectivityCollapseChange: function (data) {
|
|
231
208
|
this.$emit('connectivity-collapse-change', data)
|
|
232
209
|
},
|
|
@@ -318,6 +295,9 @@ export default {
|
|
|
318
295
|
datasetExplorerTabRef.openSearch(facets, query);
|
|
319
296
|
})
|
|
320
297
|
},
|
|
298
|
+
/**
|
|
299
|
+
* Get the ref id of the tab by id and type.
|
|
300
|
+
*/
|
|
321
301
|
getTabRef: function (id, type, switchTab = false) {
|
|
322
302
|
const matchedTab = this.tabEntries.filter((tabEntry) => {
|
|
323
303
|
return (id === undefined || tabEntry.id === id) &&
|
|
@@ -427,14 +407,6 @@ export default {
|
|
|
427
407
|
updateConnectivityError: function (errorInfo) {
|
|
428
408
|
EventBus.emit('connectivity-error', errorInfo);
|
|
429
409
|
},
|
|
430
|
-
openAcupointsSearch: function (term) {
|
|
431
|
-
this.drawerOpen = true
|
|
432
|
-
// Because refs are in v-for, nextTick is needed here
|
|
433
|
-
this.$nextTick(() => {
|
|
434
|
-
const tabRef = this.getTabRef(undefined, 'acupoints', true);
|
|
435
|
-
tabRef.search(term);
|
|
436
|
-
})
|
|
437
|
-
},
|
|
438
410
|
/**
|
|
439
411
|
* Store available anatomy facets data for connectivity list component
|
|
440
412
|
*/
|
|
@@ -531,11 +503,6 @@ export default {
|
|
|
531
503
|
// This should respect the information provided by the property
|
|
532
504
|
tabEntries: function () {
|
|
533
505
|
return this.tabs.filter((tab) =>
|
|
534
|
-
(tab.type === "acupoints" &&
|
|
535
|
-
(
|
|
536
|
-
this.acupointsInfoList &&
|
|
537
|
-
Object.keys(this.acupointsInfoList).length > 0
|
|
538
|
-
)) ||
|
|
539
506
|
tab.type === "datasetExplorer" ||
|
|
540
507
|
tab.type === "connectivityExplorer" ||
|
|
541
508
|
(
|
|
@@ -598,16 +565,6 @@ export default {
|
|
|
598
565
|
this.$emit('connectivity-source-change', payLoad);
|
|
599
566
|
})
|
|
600
567
|
|
|
601
|
-
// Emit acupoints clicked event
|
|
602
|
-
EventBus.on('acupoints-clicked', (payLoad) => {
|
|
603
|
-
this.$emit('acupoints-clicked', payLoad);
|
|
604
|
-
})
|
|
605
|
-
|
|
606
|
-
// Emit acupoints hovered event
|
|
607
|
-
EventBus.on('acupoints-hovered', (payLoad) => {
|
|
608
|
-
this.$emit('acupoints-hovered', payLoad);
|
|
609
|
-
})
|
|
610
|
-
|
|
611
568
|
// Get available anatomy facets for the connectivity info
|
|
612
569
|
EventBus.on('available-facets', (payLoad) => {
|
|
613
570
|
this.availableAnatomyFacets = payLoad.find((facet) => facet.label === 'Anatomical Structure').children
|
package/src/components.d.ts
CHANGED
|
@@ -7,8 +7,6 @@ export {}
|
|
|
7
7
|
|
|
8
8
|
declare module 'vue' {
|
|
9
9
|
export interface GlobalComponents {
|
|
10
|
-
AcupointsCard: typeof import('./components/AcupointsCard.vue')['default']
|
|
11
|
-
AcupointsInfoSearch: typeof import('./components/AcupointsInfoSearch.vue')['default']
|
|
12
10
|
AnnotationTool: typeof import('./components/AnnotationTool.vue')['default']
|
|
13
11
|
BadgesGroup: typeof import('./components/BadgesGroup.vue')['default']
|
|
14
12
|
ConnectivityCard: typeof import('./components/ConnectivityCard.vue')['default']
|
|
@@ -21,8 +19,6 @@ declare module 'vue' {
|
|
|
21
19
|
ElCascader: typeof import('element-plus/es')['ElCascader']
|
|
22
20
|
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
|
23
21
|
ElCol: typeof import('element-plus/es')['ElCol']
|
|
24
|
-
ElCollapse: typeof import('element-plus/es')['ElCollapse']
|
|
25
|
-
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
|
|
26
22
|
ElDrawer: typeof import('element-plus/es')['ElDrawer']
|
|
27
23
|
ElDropdown: typeof import('element-plus/es')['ElDropdown']
|
|
28
24
|
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
|
|
@@ -42,7 +38,6 @@ declare module 'vue' {
|
|
|
42
38
|
ElPagination: typeof import('element-plus/es')['ElPagination']
|
|
43
39
|
ElPopover: typeof import('element-plus/es')['ElPopover']
|
|
44
40
|
ElRadio: typeof import('element-plus/es')['ElRadio']
|
|
45
|
-
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
|
|
46
41
|
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
|
47
42
|
ElRow: typeof import('element-plus/es')['ElRow']
|
|
48
43
|
ElSelect: typeof import('element-plus/es')['ElSelect']
|
package/src/acupoints.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
export const acupointEntries = {
|
|
2
|
-
"LU 1": {
|
|
3
|
-
"Acupoint": "LU 1",
|
|
4
|
-
"Label": "LU 1",
|
|
5
|
-
"Synonym": "Test data",
|
|
6
|
-
"UMLS CUI": "",
|
|
7
|
-
"Meridian": "LTest data",
|
|
8
|
-
"Chinese Name": "Zhongfu",
|
|
9
|
-
"English Name": "Central Treasury",
|
|
10
|
-
"Location": " z zxczc.",
|
|
11
|
-
"Reference": "Test data",
|
|
12
|
-
"Indications": "Test data",
|
|
13
|
-
"Acupuncture Method": "Test data",
|
|
14
|
-
"Vasculature": "Test data",
|
|
15
|
-
"Innervation": "Test data",
|
|
16
|
-
"Curated": false,
|
|
17
|
-
"onMRI": true
|
|
18
|
-
},
|
|
19
|
-
"LU 2": {
|
|
20
|
-
"Acupoint": "LU 2",
|
|
21
|
-
"Label": "LU 2",
|
|
22
|
-
"Synonym": "Test data",
|
|
23
|
-
"UMLS CUI": "",
|
|
24
|
-
"Meridian": "LTest data",
|
|
25
|
-
"Chinese Name": "Yunmen",
|
|
26
|
-
"English Name": "Cloud Gate",
|
|
27
|
-
"Location": " z zxczc.",
|
|
28
|
-
"Reference": "Test data",
|
|
29
|
-
"Indications": "Test data",
|
|
30
|
-
"Acupuncture Method": "Test data",
|
|
31
|
-
"Vasculature": "Test data",
|
|
32
|
-
"Innervation": "Test data",
|
|
33
|
-
"Curated": true,
|
|
34
|
-
"onMRI": true
|
|
35
|
-
},
|
|
36
|
-
"ST 3": {
|
|
37
|
-
"Acupoint": "ST 3",
|
|
38
|
-
"Label": "ST 3",
|
|
39
|
-
"Synonym": "Test data",
|
|
40
|
-
"UMLS CUI": "",
|
|
41
|
-
"Meridian": "STest data",
|
|
42
|
-
"Chinese Name": "Cheng Qi",
|
|
43
|
-
"English Name": "Not Available",
|
|
44
|
-
"Location": " z zxcxadadadzc.",
|
|
45
|
-
"Reference": "Test data",
|
|
46
|
-
"Indications": "Test data",
|
|
47
|
-
"Acupuncture Method": "Test data",
|
|
48
|
-
"Vasculature": "Test data",
|
|
49
|
-
"Innervation": "Test data",
|
|
50
|
-
"Curated": true,
|
|
51
|
-
"onMRI": false
|
|
52
|
-
},
|
|
53
|
-
"LR 4": {
|
|
54
|
-
"Acupoint": "LR 4",
|
|
55
|
-
"Label": "LR 4",
|
|
56
|
-
"Synonym": "Test data",
|
|
57
|
-
"UMLS CUI": "",
|
|
58
|
-
"Meridian": "STest data",
|
|
59
|
-
"Chinese Name": "Zhongfeng",
|
|
60
|
-
"English Name": "Not Available",
|
|
61
|
-
"Location": " z zxcxadadadzc.",
|
|
62
|
-
"Reference": "Test data",
|
|
63
|
-
"Indications": "Test data",
|
|
64
|
-
"Acupuncture Method": "Test data",
|
|
65
|
-
"Vasculature": "Test data",
|
|
66
|
-
"Innervation": "Test data",
|
|
67
|
-
"Curated": false,
|
|
68
|
-
"onMRI": false
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="dataset-card-container" ref="container">
|
|
3
|
-
<div class="dataset-card" ref="card">
|
|
4
|
-
<div class="seperator-path"></div>
|
|
5
|
-
<div class="card"
|
|
6
|
-
@click="cardClicked(entry)"
|
|
7
|
-
@mouseover="cardHovered(entry)"
|
|
8
|
-
@mouseleave="cardHovered(undefined)"
|
|
9
|
-
>
|
|
10
|
-
<div class="card-right">
|
|
11
|
-
<el-collapse class="collapse-card" v-model="expanded" @change="expandedChanged">
|
|
12
|
-
<el-collapse-item :title="entry.Acupoint" name="1" class="collapse-card">
|
|
13
|
-
<template v-for="field in displayFields" :key="field['name']">
|
|
14
|
-
<div class="details" >
|
|
15
|
-
<strong>{{ field['name'] }}: </strong>
|
|
16
|
-
<span
|
|
17
|
-
v-if="!field['isEditing']"
|
|
18
|
-
@click="field['isEditing'] = true"
|
|
19
|
-
>
|
|
20
|
-
{{ entry[field['name']] || 'Not Available' }}
|
|
21
|
-
</span>
|
|
22
|
-
<el-input
|
|
23
|
-
v-else
|
|
24
|
-
v-model="entry[field['name']]"
|
|
25
|
-
@blur="field['isEditing'] = false"
|
|
26
|
-
@keyup.enter="field['isEditing'] = false"
|
|
27
|
-
@vue:mounted="inputMounted"
|
|
28
|
-
type="textarea"
|
|
29
|
-
/>
|
|
30
|
-
</div>
|
|
31
|
-
</template>
|
|
32
|
-
</el-collapse-item>
|
|
33
|
-
</el-collapse>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
</template>
|
|
39
|
-
|
|
40
|
-
<script>
|
|
41
|
-
import EventBus from './EventBus.js'
|
|
42
|
-
/* eslint-disable no-alert, no-console */
|
|
43
|
-
|
|
44
|
-
export default {
|
|
45
|
-
data() {
|
|
46
|
-
return {
|
|
47
|
-
expanded: [],
|
|
48
|
-
displayFields: [
|
|
49
|
-
{name: "Synonym", isEditing: false},
|
|
50
|
-
{name: "Chinese Name", isEditing: false},
|
|
51
|
-
{name: "English Name", isEditing: false},
|
|
52
|
-
{name: "Reference", isEditing: false},
|
|
53
|
-
{name: "Indications", isEditing: false},
|
|
54
|
-
{name: "Acupuncture Method", isEditing: false},
|
|
55
|
-
{name: "Vasculature", isEditing: false},
|
|
56
|
-
{name: "Innervation", isEditing: false},
|
|
57
|
-
{name: "Notes", isEditing: false},
|
|
58
|
-
]
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
name: 'AcupointsCard',
|
|
62
|
-
props: {
|
|
63
|
-
/**
|
|
64
|
-
* Object containing information for
|
|
65
|
-
* the required viewing.
|
|
66
|
-
*/
|
|
67
|
-
entry: {
|
|
68
|
-
type: Object,
|
|
69
|
-
default: () => {},
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
methods: {
|
|
73
|
-
expandedChanged: function() {
|
|
74
|
-
if (this.expanded.length > 0) {
|
|
75
|
-
EventBus.emit('acupoints-clicked', this.entry);
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
cardClicked: function (data) {
|
|
79
|
-
EventBus.emit('acupoints-clicked', data);
|
|
80
|
-
},
|
|
81
|
-
cardHovered: function (data) {
|
|
82
|
-
EventBus.emit('acupoints-hovered', data);
|
|
83
|
-
},
|
|
84
|
-
inputMounted: function(event) {
|
|
85
|
-
event.el?.querySelector('textarea')?.focus();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
</script>
|
|
90
|
-
|
|
91
|
-
<style lang="scss" scoped>
|
|
92
|
-
|
|
93
|
-
:deep(.el-collapse-item__header) {
|
|
94
|
-
font-weight: bold;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
:deep(.el-collapse-item__content) {
|
|
98
|
-
padding-bottom: 4px;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
:deep(.el-collapse-item__wrap) {
|
|
102
|
-
border: none;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.collapse-card {
|
|
106
|
-
border-top: none;
|
|
107
|
-
:deep(.el-collapse-item__header) {
|
|
108
|
-
border-bottom: none;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.dataset-card {
|
|
113
|
-
padding-left: 5px;
|
|
114
|
-
padding-right: 5px;
|
|
115
|
-
position: relative;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
.title {
|
|
119
|
-
padding-bottom: 0.75rem;
|
|
120
|
-
font-family: Asap;
|
|
121
|
-
font-size: 14px;
|
|
122
|
-
font-weight: bold;
|
|
123
|
-
font-stretch: normal;
|
|
124
|
-
font-style: normal;
|
|
125
|
-
line-height: 1.5;
|
|
126
|
-
letter-spacing: 1.05px;
|
|
127
|
-
color: #484848;
|
|
128
|
-
cursor: pointer;
|
|
129
|
-
}
|
|
130
|
-
.card {
|
|
131
|
-
padding-top: 12px;
|
|
132
|
-
position: relative;
|
|
133
|
-
display: flex;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
.card-left {
|
|
137
|
-
flex: 1;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.card-right {
|
|
141
|
-
flex: 1.3;
|
|
142
|
-
padding-left: 6px;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
.button {
|
|
146
|
-
z-index: 10;
|
|
147
|
-
font-family: Asap;
|
|
148
|
-
font-size: 14px;
|
|
149
|
-
font-weight: normal;
|
|
150
|
-
font-stretch: normal;
|
|
151
|
-
font-style: normal;
|
|
152
|
-
line-height: normal;
|
|
153
|
-
letter-spacing: normal;
|
|
154
|
-
background-color: $app-primary-color;
|
|
155
|
-
border: $app-primary-color;
|
|
156
|
-
color: white;
|
|
157
|
-
cursor: pointer;
|
|
158
|
-
margin-top: 8px;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
.button:hover {
|
|
162
|
-
background-color: $app-primary-color;
|
|
163
|
-
color: white;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
.banner-img {
|
|
167
|
-
width: 128px;
|
|
168
|
-
height: 128px;
|
|
169
|
-
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.25);
|
|
170
|
-
background-color: #ffffff;
|
|
171
|
-
cursor: pointer;
|
|
172
|
-
}
|
|
173
|
-
.details {
|
|
174
|
-
font-family: Asap;
|
|
175
|
-
font-size: 14px;
|
|
176
|
-
font-weight: normal;
|
|
177
|
-
font-stretch: normal;
|
|
178
|
-
font-style: normal;
|
|
179
|
-
line-height: 1.5;
|
|
180
|
-
letter-spacing: 1.05px;
|
|
181
|
-
color: #484848;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
.badges-container {
|
|
185
|
-
margin-top: 0.75rem;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
.loading-icon {
|
|
189
|
-
z-index: 20;
|
|
190
|
-
width: 40px;
|
|
191
|
-
height: 40px;
|
|
192
|
-
left: 80px;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
.loading-icon :deep(.el-loading-mask) {
|
|
196
|
-
background-color: rgba(117, 190, 218, 0) !important;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
.loading-icon :deep(.el-loading-spinner .path) {
|
|
200
|
-
stroke: $app-primary-color;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
.float-button-container {
|
|
204
|
-
position: absolute;
|
|
205
|
-
bottom: 8px;
|
|
206
|
-
right: 16px;
|
|
207
|
-
opacity: 0;
|
|
208
|
-
visibility: hidden;
|
|
209
|
-
|
|
210
|
-
.card:hover & {
|
|
211
|
-
opacity: 1;
|
|
212
|
-
visibility: visible;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
</style>
|