diff --git a/src/api/index.ts b/src/api/index.ts index fc734ea..dc8abf6 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -1,4 +1,11 @@ -import { cSite, LoginResponse, Site, token } from "./types"; +import { + AccessPoint, + AccessPointCreateResponse, + cSite, + LoginResponse, + Site, + token, +} from "./types"; import { get as idbGet, set as idbSet, del as idbDel } from "idb-keyval"; export * from "./types"; @@ -99,5 +106,36 @@ export async function getSites(): Promise { } export async function createSite(site: Site) { - return request("/sites", { auth: true, method: HTTPMethod.POST }, site); + return request( + "/sites", + { auth: true, method: HTTPMethod.POST }, + site + ); +} + +export async function getAccessPointDetails( + sideID?: number +): Promise { + const endpoint = `${sideID ? "/sites/" + sideID : ""}/aps`; + return request(endpoint, { + auth: true, + method: HTTPMethod.GET, + }); +} + +export async function getAccessPointByID(id: number): Promise { + return request(`/aps/${id}`, { + auth: true, + method: HTTPMethod.GET, + }); +} + +export async function createAccessPoint( + ap: AccessPoint +): Promise { + return request( + "/aps", + { auth: true, method: HTTPMethod.POST }, + ap + ); } diff --git a/src/api/types.ts b/src/api/types.ts index 8e1d705..465d4c9 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -19,3 +19,26 @@ export interface Site { export interface cSite { "site-id": number; } + +export interface AccessPoint { + id: number; + site_id: number; + ap_name: string; + serialnumber: string; + comment: string; + group: string; + location: string; + mac_address: string; + model: string; + appointment: Date; + new_switchport_id?: any; + new_userport_id?: any; + old_switchport_id?: any; + old_userport_id?: any; + registered_user_id?: any; + timestamp_registered?: any; +} + +export interface AccessPointCreateResponse { + "ap-id": number; +} diff --git a/src/components/VNav.vue b/src/components/VNav.vue index b3bccd9..d557241 100644 --- a/src/components/VNav.vue +++ b/src/components/VNav.vue @@ -146,6 +146,10 @@ export default { name: "Settings", to: "Settings", }, + { + name: "AccessPoints", + to: "AccessPoints", + }, ]); const route = useRoute(); const activeRoute = computed(() => route.name); diff --git a/src/router/index.ts b/src/router/index.ts index dd2cb9b..00de571 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,11 +1,12 @@ -import { createWebHistory, createRouter } from "vue-router"; +import { createWebHistory, createRouter, RouteRecordRaw } from "vue-router"; import Home from "../views/Home.vue"; const Settings = () => import("../views/Settings.vue"); const Login = () => import("../views/Login.vue"); const Sites = () => import("../views/Sites.vue"); +const AccessPoints = () => import("../views/AccessPoints.vue"); import { isLoggedIn } from "../api"; -const routes = [ +const routes: RouteRecordRaw[] = [ { path: "/", name: "Home", @@ -27,6 +28,12 @@ const routes = [ component: Login, props: (route) => ({ logout: route.query.logout }), }, + { + path: "/aps", + name: "AccessPoints", + component: AccessPoints, + props: (route) => ({ site: Number(route.query["site-id"]).valueOf() }), + }, ]; const router = createRouter({ diff --git a/src/views/AccessPoints.vue b/src/views/AccessPoints.vue new file mode 100644 index 0000000..dd7dde7 --- /dev/null +++ b/src/views/AccessPoints.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/src/views/Sites.vue b/src/views/Sites.vue index 9dc9c2a..5aea3bf 100644 --- a/src/views/Sites.vue +++ b/src/views/Sites.vue @@ -2,24 +2,21 @@
- +
- - - + @@ -27,6 +24,18 @@ +
+ Name + ID + Default Prefix + Actions +
{{ site.name }} {{ site.id }} {{ site.default_prefix }} + + Show APs +
@@ -77,7 +86,7 @@ export default { async setup() { const sites = ref([]); async function getSites() { - apiGetSites().then((s) => void (sites.value = s)); + await apiGetSites().then((s) => void (sites.value = s)); } await getSites(); @@ -92,8 +101,8 @@ export default { let newSite = await apiCreateSite(site); console.log(newSite); await getSites(); - newSiteName.value = "" - newDefaultPrefix.value = "" + newSiteName.value = ""; + newDefaultPrefix.value = ""; } catch (e) { console.log(e); }