64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
import axios from "axios";
|
|
import {API_URL} from "./constants";
|
|
|
|
/**
|
|
* Fetches the set of segments for a rail system.
|
|
* @param {Number} rsId
|
|
* @returns {Promise<[Object]>}
|
|
*/
|
|
export function getSegments(rsId) {
|
|
return new Promise((resolve, reject) => {
|
|
axios.get(`${API_URL}/rs/${rsId}/s`)
|
|
.then(response => resolve(response.data))
|
|
.catch(error => reject(error));
|
|
});
|
|
}
|
|
|
|
export function refreshSegments(rs) {
|
|
return new Promise(resolve => {
|
|
getSegments(rs.id)
|
|
.then(segments => {
|
|
rs.segments = segments;
|
|
resolve();
|
|
})
|
|
.catch(error => console.error(error));
|
|
});
|
|
}
|
|
|
|
export function createSegment(rs, name) {
|
|
return new Promise((resolve, reject) => {
|
|
axios.post(`${API_URL}/rs/${rs.id}/s`, {name: name})
|
|
.then(() => {
|
|
refreshSegments(rs)
|
|
.then(() => resolve())
|
|
.catch(error => reject(error));
|
|
})
|
|
.catch(error => reject(error));
|
|
});
|
|
}
|
|
|
|
export function removeSegment(rs, segmentId) {
|
|
return new Promise((resolve, reject) => {
|
|
axios.delete(`${API_URL}/rs/${rs.id}/s/${segmentId}`)
|
|
.then(() => {
|
|
refreshSegments(rs)
|
|
.then(() => resolve())
|
|
.catch(error => reject(error));
|
|
})
|
|
.catch(error => reject(error));
|
|
});
|
|
}
|
|
|
|
export function toggleOccupied(rs, segmentId) {
|
|
return new Promise((resolve, reject) => {
|
|
axios.patch(`${API_URL}/rs/${rs.id}/s/${segmentId}/occupied`)
|
|
.then(response => {
|
|
const updatedSegment = response.data;
|
|
const segment = rs.segments.find(s => s.id === updatedSegment.id);
|
|
segment.occupied = updatedSegment.occupied;
|
|
resolve();
|
|
})
|
|
.catch(reject);
|
|
})
|
|
}
|