parent
dc8070b021
commit
de517c5bff
@ -0,0 +1,4 @@
|
|||||||
|
> 1%
|
||||||
|
last 2 versions
|
||||||
|
not dead
|
||||||
|
not ie 11
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
# geoshop-frontend
|
||||||
|
|
||||||
|
## Project setup
|
||||||
|
```
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compiles and hot-reloads for development
|
||||||
|
```
|
||||||
|
npm run serve
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compiles and minifies for production
|
||||||
|
```
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Customize configuration
|
||||||
|
See [Configuration Reference](https://cli.vuejs.org/config/).
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"module": "esnext",
|
||||||
|
"baseUrl": "./",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"paths": {
|
||||||
|
"@/*": [
|
||||||
|
"src/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"lib": [
|
||||||
|
"esnext",
|
||||||
|
"dom",
|
||||||
|
"dom.iterable",
|
||||||
|
"scripthost"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "geoshop-frontend",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"serve": "vue-cli-service serve",
|
||||||
|
"build": "vue-cli-service build"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"vue": "^3.2.13",
|
||||||
|
"vuestic-ui": "^1.4.7"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@vue/cli-service": "~5.0.0",
|
||||||
|
"vue-cli-plugin-vuestic-ui": "~1.0.8"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 4.2 KiB |
@ -0,0 +1,18 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro&family=Source+Sans+Pro:wght@400;700&display=swap"
|
||||||
|
rel="stylesheet">
|
||||||
|
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<title>Vue 3 course</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<!-- built files will be auto injected -->
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@ -0,0 +1,90 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app">
|
||||||
|
<va-navbar shape>
|
||||||
|
<template #left>
|
||||||
|
<va-navbar-item class="top-icon">
|
||||||
|
<va-icon size="3rem">🌍</va-icon>
|
||||||
|
</va-navbar-item>
|
||||||
|
</template>
|
||||||
|
<template #right>
|
||||||
|
<va-navbar-item class="top-icon">
|
||||||
|
<va-icon size="3rem">👤</va-icon>
|
||||||
|
</va-navbar-item>
|
||||||
|
</template>
|
||||||
|
</va-navbar>
|
||||||
|
<div class="central-view">
|
||||||
|
<va-sidebar color="primary" text-color="white" gradient class="sidebar-proper">
|
||||||
|
<va-sidebar-item active>
|
||||||
|
<va-sidebar-item-content class="sidebar-item">
|
||||||
|
<va-icon class="sidebar-icon" size="2rem" name="fact_check" />
|
||||||
|
<va-sidebar-item-title class="sidebar-title">Active Schema</va-sidebar-item-title>
|
||||||
|
</va-sidebar-item-content>
|
||||||
|
</va-sidebar-item>
|
||||||
|
<va-sidebar-item>
|
||||||
|
<va-sidebar-item-content class="sidebar-item">
|
||||||
|
<va-icon class="sidebar-icon" size="2rem" name="dashboard" />
|
||||||
|
<va-sidebar-item-title class="sidebar-title">Review Data</va-sidebar-item-title>
|
||||||
|
</va-sidebar-item-content>
|
||||||
|
</va-sidebar-item>
|
||||||
|
<va-sidebar-item>
|
||||||
|
<va-sidebar-item-content class="sidebar-item">
|
||||||
|
<va-icon class="sidebar-icon" size="2rem" name="file_upload" />
|
||||||
|
<va-sidebar-item-title class="sidebar-title">Upload</va-sidebar-item-title>
|
||||||
|
</va-sidebar-item-content>
|
||||||
|
</va-sidebar-item>
|
||||||
|
</va-sidebar>
|
||||||
|
<div class="main-view">
|
||||||
|
<!-- <upload-screen /> -->
|
||||||
|
<active-schema-screen />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import UploadScreen from '@/components/UploadScreen.vue'
|
||||||
|
import ActiveSchemaScreen from './components/ActiveSchemaScreen.vue'
|
||||||
|
export default {
|
||||||
|
components: { UploadScreen, ActiveSchemaScreen }
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style lang="css">
|
||||||
|
.app {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.central-view {
|
||||||
|
height: 100vh;
|
||||||
|
margin: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-proper {
|
||||||
|
position: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-item {
|
||||||
|
height: 4rem;
|
||||||
|
display: flex;
|
||||||
|
padding: 1rem 0.5rem;
|
||||||
|
position: relative;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-icon {
|
||||||
|
margin: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-view {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,88 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 style="font-size: 3rem; margin: 1rem;">Active Schema</h1>
|
||||||
|
<h2 style="margin-left: 1rem;">(coordinated format)</h2>
|
||||||
|
<va-radio
|
||||||
|
class="radio-switcher"
|
||||||
|
v-for="(option, index) in viewOptions"
|
||||||
|
:key="index"
|
||||||
|
v-model="selectedOption"
|
||||||
|
:option="option"
|
||||||
|
></va-radio>
|
||||||
|
<va-data-table :items="items" v-if="selectedOption === 'table-view'" />
|
||||||
|
<va-list v-else-if="selectedOption === 'list-view'">
|
||||||
|
<va-list-item v-for="(_, header, index) in items[0]" :key="index" class="header-list">
|
||||||
|
<va-list-item-section icon>
|
||||||
|
<va-icon name="circle" color="gray" size="small"></va-icon>
|
||||||
|
</va-list-item-section>
|
||||||
|
<va-list-item-section>
|
||||||
|
<va-list-item-label class="header-item" caption:lines="index+1">{{ header }}</va-list-item-label>
|
||||||
|
</va-list-item-section>
|
||||||
|
</va-list-item>
|
||||||
|
</va-list>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { defineComponent } from "vue";
|
||||||
|
export default defineComponent({
|
||||||
|
data() {
|
||||||
|
const dummytable = [
|
||||||
|
{
|
||||||
|
"fadr": "",
|
||||||
|
"Уникальный номер образца": "",
|
||||||
|
"кордината X": "",
|
||||||
|
"координата Y": "",
|
||||||
|
"Категория в ГИС\nGeology - керн, каменный материал\nSoil - почва, грунты, морские осадки\n Material - искуственные материалы, минералы": "",
|
||||||
|
"Категория (Археология, Биология, Минералы)": "",
|
||||||
|
"Бассейн": "",
|
||||||
|
"Месторождение": "",
|
||||||
|
"№ скважины": "",
|
||||||
|
"Глубина, интервал, привязка": "",
|
||||||
|
"Свита\\пласт": "",
|
||||||
|
"Хозяин (ФИО)": "",
|
||||||
|
"Организация": "",
|
||||||
|
"Контакты хозяина": "",
|
||||||
|
"перечень объектов/образцов": "",
|
||||||
|
"Описание объекта": "",
|
||||||
|
"Форма, размер": "",
|
||||||
|
"Перечень данных": "",
|
||||||
|
"Разрешение, µm": "",
|
||||||
|
"Дата съёмки": "",
|
||||||
|
"Дополнительная информация": "",
|
||||||
|
"Томограф": "",
|
||||||
|
"комментарий": "",
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
return {
|
||||||
|
items: dummytable,
|
||||||
|
viewOptions: [
|
||||||
|
"table-view",
|
||||||
|
"list-view",
|
||||||
|
"mosaic-view",
|
||||||
|
],
|
||||||
|
selectedOption: "list-view"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style lang="css" scoped>
|
||||||
|
.radio-switcher {
|
||||||
|
margin: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .header-list {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.header-item {
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1 style="font-size: 3rem; margin: 1rem;">Upload</h1>
|
||||||
|
<div class="upload-dashboard">
|
||||||
|
<va-file-upload dropzone></va-file-upload>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "upload-screen"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style lang="css" scoped>
|
||||||
|
.upload-dashboard {
|
||||||
|
margin: 2rem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,54 @@
|
|||||||
|
import { createApp } from 'vue'
|
||||||
|
import App from './App.vue'
|
||||||
|
import {
|
||||||
|
createVuesticEssential,
|
||||||
|
VaButton,
|
||||||
|
VaInput,
|
||||||
|
VaForm,
|
||||||
|
VaNavbar,
|
||||||
|
VaNavbarItem,
|
||||||
|
VaSidebar,
|
||||||
|
VaSidebarItem,
|
||||||
|
VaSidebarItemContent,
|
||||||
|
VaSidebarItemTitle,
|
||||||
|
VaIcon,
|
||||||
|
VaFileUpload,
|
||||||
|
VaRadio,
|
||||||
|
VaDataTable,
|
||||||
|
VaList,
|
||||||
|
VaListItem,
|
||||||
|
VaListItemSection,
|
||||||
|
VaListItemLabel,
|
||||||
|
} from 'vuestic-ui'
|
||||||
|
import 'vuestic-ui/styles/essential.css'
|
||||||
|
import 'vuestic-ui/styles/grid.css'
|
||||||
|
import 'vuestic-ui/styles/reset.css'
|
||||||
|
import 'vuestic-ui/styles/typography.css'
|
||||||
|
import 'vuestic-ui/dist/vuestic-ui.css'
|
||||||
|
|
||||||
|
|
||||||
|
const app = createApp(App);
|
||||||
|
app.use(createVuesticEssential({
|
||||||
|
components:
|
||||||
|
{
|
||||||
|
VaButton,
|
||||||
|
VaInput,
|
||||||
|
VaForm,
|
||||||
|
VaNavbar,
|
||||||
|
VaNavbarItem,
|
||||||
|
VaSidebar,
|
||||||
|
VaSidebarItem,
|
||||||
|
VaSidebarItemContent,
|
||||||
|
VaSidebarItemTitle,
|
||||||
|
VaIcon,
|
||||||
|
VaFileUpload,
|
||||||
|
VaRadio,
|
||||||
|
VaDataTable,
|
||||||
|
VaList,
|
||||||
|
VaListItem,
|
||||||
|
VaListItemSection,
|
||||||
|
VaListItemLabel,
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
app.mount('#app');
|
||||||
Reference in new issue