|
96 | 96 | </UrlDataProvider>
|
97 | 97 | </template>
|
98 | 98 |
|
99 |
| -<script> |
100 |
| -import { DatatypesMapperModel } from "components/Datatypes/model"; |
101 |
| -import LoadingSpan from "components/LoadingSpan"; |
102 |
| -import { UrlDataProvider } from "components/providers/UrlDataProvider"; |
103 |
| -import { getAppRoot } from "onload/loadConfig"; |
| 99 | +<script setup lang="ts"> |
| 100 | +import { computed, ref } from "vue"; |
| 101 | +
|
| 102 | +import { DatatypesMapperModel } from "@/components/Datatypes/model"; |
| 103 | +import { UrlDataProvider } from "@/components/providers/UrlDataProvider"; |
| 104 | +import { getAppRoot } from "@/onload/loadConfig"; |
104 | 105 |
|
105 | 106 | import HistoryDatasetAsImage from "./HistoryDatasetAsImage.vue";
|
| 107 | +import LoadingSpan from "@/components/LoadingSpan.vue"; |
106 | 108 |
|
107 |
| -export default { |
108 |
| - components: { |
109 |
| - LoadingSpan, |
110 |
| - UrlDataProvider, |
111 |
| - HistoryDatasetAsImage, |
112 |
| - }, |
113 |
| - props: { |
114 |
| - datasetId: { |
115 |
| - type: Number, |
116 |
| - required: true, |
117 |
| - }, |
118 |
| - embedded: { |
119 |
| - type: Boolean, |
120 |
| - default: false, |
121 |
| - }, |
122 |
| - }, |
123 |
| - data() { |
124 |
| - return { |
125 |
| - expanded: false, |
126 |
| - }; |
127 |
| - }, |
128 |
| - computed: { |
129 |
| - contentClass() { |
130 |
| - if (this.expanded) { |
131 |
| - return "embedded-dataset-expanded"; |
132 |
| - } else { |
133 |
| - return "embedded-dataset"; |
134 |
| - } |
135 |
| - }, |
136 |
| - datatypesUrl() { |
137 |
| - return "/api/datatypes/types_and_mapping"; |
138 |
| - }, |
139 |
| - downloadUrl() { |
140 |
| - return `${getAppRoot()}dataset/display?dataset_id=${this.datasetId}`; |
141 |
| - }, |
142 |
| - displayUrl() { |
143 |
| - return `${getAppRoot()}datasets/${this.datasetId}/display/?preview=True`; |
144 |
| - }, |
145 |
| - importUrl() { |
146 |
| - return `${getAppRoot()}dataset/imp?dataset_id=${this.datasetId}`; |
147 |
| - }, |
148 |
| - itemUrl() { |
149 |
| - return `/api/datasets/${this.datasetId}/get_content_as_text`; |
150 |
| - }, |
151 |
| - metaUrl() { |
152 |
| - return `/api/datasets/${this.datasetId}`; |
153 |
| - }, |
154 |
| - }, |
155 |
| - methods: { |
156 |
| - isSubTypeOfAny(child, parents, datatypesModel) { |
157 |
| - const datatypesMapper = new DatatypesMapperModel(datatypesModel); |
158 |
| - return datatypesMapper.isSubTypeOfAny(child, parents); |
159 |
| - }, |
160 |
| - getFields(metaData) { |
161 |
| - const fields = []; |
162 |
| - const columnNames = metaData.metadata_column_names || []; |
163 |
| - const columnCount = metaData.metadata_columns; |
164 |
| - for (let i = 0; i < columnCount; i++) { |
165 |
| - fields.push({ |
166 |
| - key: `${i}`, |
167 |
| - label: columnNames[i] || i, |
168 |
| - sortable: true, |
169 |
| - }); |
170 |
| - } |
171 |
| - return fields; |
172 |
| - }, |
173 |
| - getItems(textData, metaData) { |
174 |
| - const tableData = []; |
175 |
| - const delimiter = metaData.metadata_delimiter || "\t"; |
176 |
| - const comments = metaData.metadata_comment_lines || 0; |
177 |
| - const lines = textData.split("\n"); |
178 |
| - lines.forEach((line, i) => { |
179 |
| - if (i >= comments) { |
180 |
| - const tabs = line.split(delimiter); |
181 |
| - const rowData = {}; |
182 |
| - let hasData = false; |
183 |
| - tabs.forEach((cellData, j) => { |
184 |
| - const cellDataTrimmed = cellData.trim(); |
185 |
| - if (cellDataTrimmed) { |
186 |
| - hasData = true; |
187 |
| - } |
188 |
| - rowData[j] = cellDataTrimmed; |
189 |
| - }); |
190 |
| - if (hasData) { |
191 |
| - tableData.push(rowData); |
192 |
| - } |
| 109 | +const props = defineProps<{ |
| 110 | + datasetId: string; |
| 111 | + embedded?: boolean; |
| 112 | +}>(); |
| 113 | +
|
| 114 | +const expanded = ref(false); |
| 115 | +
|
| 116 | +const contentClass = computed(() => (expanded.value ? "embedded-dataset-expanded" : "embedded-dataset")); |
| 117 | +
|
| 118 | +const datatypesUrl = computed(() => "/api/datatypes/types_and_mapping"); |
| 119 | +const downloadUrl = computed(() => `${getAppRoot()}dataset/display?dataset_id=${props.datasetId}`); |
| 120 | +const displayUrl = computed(() => `${getAppRoot()}datasets/${props.datasetId}/display/?preview=True`); |
| 121 | +const importUrl = computed(() => `${getAppRoot()}dataset/imp?dataset_id=${props.datasetId}`); |
| 122 | +const itemUrl = computed(() => `/api/datasets/${props.datasetId}/get_content_as_text`); |
| 123 | +const metaUrl = computed(() => `/api/datasets/${props.datasetId}`); |
| 124 | +
|
| 125 | +function onExpand() { |
| 126 | + expanded.value = !expanded.value; |
| 127 | +} |
| 128 | +
|
| 129 | +function isSubTypeOfAny(child: string, parents: string[], datatypesModel: any) { |
| 130 | + const datatypesMapper = new DatatypesMapperModel(datatypesModel); |
| 131 | + return datatypesMapper.isSubTypeOfAny(child, parents); |
| 132 | +} |
| 133 | +
|
| 134 | +function getFields(metaData: any) { |
| 135 | + const fields = []; |
| 136 | + const columnNames = metaData.metadata_column_names || []; |
| 137 | + const columnCount = metaData.metadata_columns; |
| 138 | + for (let i = 0; i < columnCount; i++) { |
| 139 | + fields.push({ |
| 140 | + key: `${i}`, |
| 141 | + label: columnNames[i] || i, |
| 142 | + sortable: true, |
| 143 | + }); |
| 144 | + } |
| 145 | + return fields; |
| 146 | +} |
| 147 | +
|
| 148 | +function getItems(textData: string, metaData: any) { |
| 149 | + const tableData: any = []; |
| 150 | + const delimiter = metaData.metadata_delimiter || "\t"; |
| 151 | + const comments = metaData.metadata_comment_lines || 0; |
| 152 | + const lines = textData.split("\n"); |
| 153 | + lines.forEach((line, i) => { |
| 154 | + if (i >= comments) { |
| 155 | + const tabs = line.split(delimiter); |
| 156 | + const rowData: Record<string, string> = {}; |
| 157 | + let hasData = false; |
| 158 | + tabs.forEach((cellData, j) => { |
| 159 | + const cellDataTrimmed = cellData.trim(); |
| 160 | + if (cellDataTrimmed) { |
| 161 | + hasData = true; |
193 | 162 | }
|
| 163 | + rowData[j] = cellDataTrimmed; |
194 | 164 | });
|
195 |
| - return tableData; |
196 |
| - }, |
197 |
| - onExpand() { |
198 |
| - this.expanded = !this.expanded; |
199 |
| - }, |
200 |
| - }, |
201 |
| -}; |
| 165 | + if (hasData) { |
| 166 | + tableData.push(rowData); |
| 167 | + } |
| 168 | + } |
| 169 | + }); |
| 170 | + return tableData; |
| 171 | +} |
202 | 172 | </script>
|
| 173 | + |
203 | 174 | <style scoped>
|
204 | 175 | .embedded-dataset {
|
205 | 176 | max-height: 20rem;
|
|
0 commit comments