Skip to content

Commit

Permalink
Slight refactoring (#27)
Browse files Browse the repository at this point in the history
* fix: deleted unused worker functions

* fix: removed reports routes from server

* fix: deleted the reports page and the buttons leading to it

* fix: removed mapping of unnecessary ports

* refactor: renamed anomaly to object

* fix: added forgotten refactor

* fix: added forgotten refactor map and tiles

* fix: fixed wrong number of {}
  • Loading branch information
Saprigenie authored Nov 18, 2023
1 parent 93a7c2c commit f5c01ae
Show file tree
Hide file tree
Showing 44 changed files with 307 additions and 784 deletions.
6 changes: 2 additions & 4 deletions client/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,13 @@ import ToasterComponent from "@/components/common/ToasterComponent.vue";
const routes = [
routeNames.MapsList,
routeNames.Queue,
routeNames.ReportsList,
routeNames.AnomaliesList,
routeNames.ObjectsList,
routeNames.Upload,
];
const routesTranslation = {
[routeNames.MapsList]: "Карты",
[routeNames.Queue]: "Очередь",
[routeNames.ReportsList]: "Отчёты",
[routeNames.AnomaliesList]: "Аномалии",
[routeNames.ObjectsList]: "Объекты",
[routeNames.Upload]: "Загрузить",
};
</script>
Expand Down
10 changes: 5 additions & 5 deletions client/src/components/common/map/MapDisplay.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
<script setup lang="ts">
import {
getXMLinfo,
getAnomalies,
getObjects,
initMap,
addTileLayerMap,
addAnomalies,
addObjects,
} from "@/components/common/map/api";
import { onMounted } from "vue";
import L from "leaflet";
Expand All @@ -22,7 +22,7 @@ defineExpose({ addMarker, removeMarker, flyToCoordinates });
const props = defineProps<{ id: string }>();
const xmlImageInfoDoc = await getXMLinfo(props.id);
let anomaliesList = await getAnomalies(props.id);
let objectsList = await getObjects(props.id);
const emit = defineEmits<{ (e: "map-ready"): void }>();
Expand All @@ -40,8 +40,8 @@ onMounted(() => {
});
mapAndControl = initMap();
if (anomaliesList) {
addAnomalies(mapAndControl.map, mapAndControl.controlLayer, anomaliesList);
if (objectsList) {
addObjects(mapAndControl.map, mapAndControl.controlLayer, objectsList);
}
if (xmlImageInfoDoc) {
Expand Down
38 changes: 19 additions & 19 deletions client/src/components/common/map/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import axios, { AxiosError } from "axios";
import L, { LatLngExpression, Polygon } from "leaflet";

import { baseURL } from "@/api";
import { AnomaliesMapData } from "@/types/anomalies";
import { ObjectsMapData } from "@/types/objects";

export async function getXMLinfo(id: string): Promise<Document | void> {
return axios
Expand All @@ -18,11 +18,11 @@ export async function getXMLinfo(id: string): Promise<Document | void> {
});
}

export async function getAnomalies(
export async function getObjects(
id: string
): Promise<AnomaliesMapData[] | void> {
): Promise<ObjectsMapData[] | void> {
return (
await axios.get<AnomaliesMapData[]>(baseURL + "/images/anomalies/" + id)
await axios.get<ObjectsMapData[]>(baseURL + "/images/objects/" + id)
).data;
}

Expand Down Expand Up @@ -116,38 +116,38 @@ export function addTileLayerMap(
);
}

export function addAnomalies(
export function addObjects(
map: L.Map,
controlLayer: L.Control.Layers,
anomaliesList: AnomaliesMapData[]
objectsList: ObjectsMapData[]
) {
for (let i = 0; i < anomaliesList.length; i++) {
// Anomaly Polygon Layer.
const anomalyPolygon: Polygon = L.polygon(
anomaliesList[i].polygons as LatLngExpression[][],
{ color: anomaliesList[i].color, fillOpacity: 0.4 }
for (let i = 0; i < objectsList.length; i++) {
// Object Polygon Layer.
const objectPolygon: Polygon = L.polygon(
objectsList[i].polygons as LatLngExpression[][],
{ color: objectsList[i].color, fillOpacity: 0.4 }
);
const anomalyPolygonLayer: L.LayerGroup = L.layerGroup([anomalyPolygon]);
const objectPolygonLayer: L.LayerGroup = L.layerGroup([objectPolygon]);

// Add layer to map.
controlLayer.addOverlay(
anomalyPolygonLayer,
objectPolygonLayer,
"<span style='color: " +
anomaliesList[i].color +
objectsList[i].color +
"'> " +
anomaliesList[i].name +
objectsList[i].name +
" </span>"
);

// Fit to overlay bounds (SW and NE points with (lat, lon))
map.fitBounds([
[
anomaliesList[i].polygons[0][0][0], // miny
anomaliesList[i].polygons[0][0][1], // maxx
objectsList[i].polygons[0][0][0], // miny
objectsList[i].polygons[0][0][1], // maxx
],
[
anomaliesList[i].polygons[0][0][0], // maxy
anomaliesList[i].polygons[0][0][1], // minx
objectsList[i].polygons[0][0][0], // maxy
objectsList[i].polygons[0][0][1], // minx
],
]);
}
Expand Down
7 changes: 0 additions & 7 deletions client/src/components/routes/anomalies/api.ts

This file was deleted.

15 changes: 0 additions & 15 deletions client/src/components/routes/anomaly/api.ts

This file was deleted.

72 changes: 14 additions & 58 deletions client/src/components/routes/home/HomeComponent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<div class="container">
<h4 class="text-center mt-3">MSE 12 Ecology</h4>
<h5 class="text-center">
Сервис обработки спутниковых карт и поиска аномалий
Сервис обработки спутниковых карт и поиска объектов
</h5>

<div id="accordion" class="accordion mt-2">
Expand Down Expand Up @@ -97,19 +97,17 @@
class="accordion-button collapsed"
type="button"
data-bs-toggle="collapse"
data-bs-target="#reports"
data-bs-target="#objects"
>
Отчёты
Объекты
</button>
</h2>
<div id="reports" class="accordion-collapse collapse">
<div id="objects" class="accordion-collapse collapse">
<div class="accordion-body">
В разделе
<span class="text-primary">Отчёты</span>
находятся список отчётов уже обработанных карт, на которых найдены
аномалии. Здесь можно открыть карту изображения, к которому
относится отчет или перейти в просмотр самого отчёта по аномалиям
найденным на изображении.
<span class="text-primary">Объекты</span>
находятся все найденные области выделяемых объектов на полностью обработанных
изображениях. Там же можно открыть на просмотр один отдельный объект.
</div>
</div>
</div>
Expand All @@ -120,59 +118,17 @@
class="accordion-button collapsed"
type="button"
data-bs-toggle="collapse"
data-bs-target="#reports-view"
data-bs-target="#object"
>
Просмотр отчёта
Просмотр объекта
</button>
</h2>
<div id="reports-view" class="accordion-collapse collapse">
<div id="object" class="accordion-collapse collapse">
<div class="accordion-body">
В просмотре отчёта отображаются данные по всем найденным на
изображении аномалиям. Там же можно открыть на просмотр одну
отдельную аномалию или отобразить её на карте.
</div>
</div>
</div>

<div class="accordion-item">
<h2 class="accordion-header">
<button
class="accordion-button collapsed"
type="button"
data-bs-toggle="collapse"
data-bs-target="#anomalies"
>
Аномалии
</button>
</h2>
<div id="anomalies" class="accordion-collapse collapse">
<div class="accordion-body">
В разделе
<span class="text-primary">Аномалии</span>
находятся все найденные области аномалий на полностью обработанных
изображениях. Там же можно открыть на просмотр одну отдельную
аномалию.
</div>
</div>
</div>

<div class="accordion-item">
<h2 class="accordion-header">
<button
class="accordion-button collapsed"
type="button"
data-bs-toggle="collapse"
data-bs-target="#anomaly"
>
Просмотр аномалии
</button>
</h2>
<div id="anomaly" class="accordion-collapse collapse">
<div class="accordion-body">
В режиме просмотра аномалии можно посмотреть все параметры найденной
аномалии, отметить её на карте с помощью клавиши "Показать на
карте", а так же открыть отчет изображения, на котором была найдена
аномалия.
В режиме просмотра объекта можно посмотреть все параметры найденного
объекта, отметить его на карте с помощью клавиши "Показать на
карте", а так же открыть отчет изображения, на котором был найден
объект.
</div>
</div>
</div>
Expand Down
26 changes: 10 additions & 16 deletions client/src/components/routes/map/MapComponent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,7 @@
<div class="container-lg">
<h2 class="text-center mt-2 text-primary">Просмотр карты №{{ id }}</h2>
<div v-if="mapData && mapData.length" class="row justify-content-between">
<h3 class="col">Аномалии</h3>
<router-link
class="col-auto"
:to="{ name: routeNames.Report, params: { id: id } }"
>
<button class="btn btn-primary">Открыть отчёт</button>
</router-link>
<h3 class="col">Объекты</h3>
</div>
<AgGridVue
v-if="mapData && mapData.length"
Expand All @@ -29,7 +23,7 @@ import { ref } from "vue";
import { getMapData } from "@/components/routes/map/api";
import { AgGridVue } from "ag-grid-vue3";
import { ColDef, GridOptions } from "ag-grid-community";
import { AnomalyData } from "@/types/anomalies";
import { ObjectData } from "@/types/objects";
import {
fitActionsColumn,
getActionsColDef,
Expand All @@ -45,28 +39,28 @@ const router = useRouter();
const props = defineProps<{
id: string;
name?: string;
anomalyIndex?: string;
objectIndex?: string;
}>();
const mapDisplay = ref<InstanceType<typeof MapDisplay>>();
let lastMarker: L.Marker | undefined = undefined;
const columnDefs: ColDef<AnomalyData>[] = [
const columnDefs: ColDef<ObjectData>[] = [
{ headerName: "Id", field: "id", flex: 2, minWidth: 120 },
{ headerName: "Название", field: "name", flex: 4, minWidth: 180 },
{ headerName: "Площадь", field: "area", flex: 4, minWidth: 180 },
{
...getActionsColDef([
{
tooltip: "Открыть аномалию",
tooltip: "Открыть объект",
icon: "bi bi-radioactive",
button: "btn-danger",
onClicked: (action, data) =>
router.push({
name: routeNames.Anomaly,
name: routeNames.Object,
params: {
id: data.id,
name: data.name,
anomalyIndex: data.anomalyIndex,
objectIndex: data.objectIndex,
},
}),
},
Expand All @@ -86,20 +80,20 @@ const columnDefs: ColDef<AnomalyData>[] = [
},
];
const options: GridOptions<AnomalyData> = {
const options: GridOptions<ObjectData> = {
...getDefaultGridOptions(),
pagination: true,
paginationPageSize: 4,
domLayout: "autoHeight",
};
function onMapReady() {
if (props.name && props.anomalyIndex) {
if (props.name && props.objectIndex) {
let coordinates: [number, number] = [0, 0];
for (let i = 0; i < mapData.length; i++) {
if (
mapData[i].name === props.name &&
mapData[i].anomalyIndex == props.anomalyIndex
mapData[i].objectIndex == props.objectIndex
) {
coordinates = mapData[i].coordinates;
break;
Expand Down
6 changes: 3 additions & 3 deletions client/src/components/routes/map/api.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import axios from "axios";

import { baseURL } from "@/api";
import { AnomalyData } from "@/types/anomalies";
import { ObjectData } from "@/types/objects";

export async function getMapData(id: string): Promise<AnomalyData[]> {
return (await axios.get<AnomalyData[]>(baseURL + "/anomalies/" + id)).data;
export async function getMapData(id: string): Promise<ObjectData[]> {
return (await axios.get<ObjectData[]>(baseURL + "/objects/" + id)).data;
}
8 changes: 0 additions & 8 deletions client/src/components/routes/maps/MapsListComponent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -92,14 +92,6 @@ const columnDefs: ColDef<MapInfo>[] = [
onClicked: (action, data) =>
router.push({ name: routeNames.Map, params: { id: data.id } }),
},
{
tooltip: "Открыть отчёт",
icon: "bi bi-file-text",
button: "btn-primary",
hide: (data) => !data.ready,
onClicked: (action, data) =>
router.push({ name: routeNames.Report, params: { id: data.id } }),
},
{
tooltip: "Удалить карту",
icon: "bi bi-trash",
Expand Down
Loading

0 comments on commit f5c01ae

Please sign in to comment.