add Site creating

Signed-off-by: garionion <github@entr0py.de>
This commit is contained in:
garionion 2021-04-04 14:27:19 +02:00
parent 104d785d51
commit b8bbfff381
Signed by: garionion
GPG key ID: 53352FA607FA681A
3 changed files with 51 additions and 9 deletions

View file

@ -99,5 +99,5 @@ export async function getSites(): Promise<Site[]> {
} }
export async function createSite(site: Site) { export async function createSite(site: Site) {
return request<cSite>("/sites", { auth: true, method: HTTPMethod.POST }); return request<cSite>("/sites", { auth: true, method: HTTPMethod.POST }, site);
} }

View file

@ -12,7 +12,7 @@ export interface LoginResponse {
export interface Site { export interface Site {
default_prefix: string; default_prefix: string;
id: number; id?: number;
name: string; name: string;
} }

View file

@ -35,29 +35,71 @@
class="dark:text-white container mx-auto h-full flex justify-center items-center mt-12" class="dark:text-white container mx-auto h-full flex justify-center items-center mt-12"
> >
<h1 class="font-hairline mb-6 text-center">New Site</h1> <h1 class="font-hairline mb-6 text-center">New Site</h1>
<form> <form @submit.prevent="createSite">
<label <label
>Name >Name
<input type="text" placeholder="Name" /> <input
type="text"
class="text-black"
v-model="newSiteName"
placeholder="Name"
/>
</label> </label>
<label> <label>
Default Prefix Default Prefix
<input type="text" placeholder="Default Prefix" /> <input
type="text"
class="text-black"
v-model="newDefaultPrefix"
placeholder="Default Prefix"
/>
</label> </label>
<button
class="bg-green-600 hover:bg-green-400 text-white font-bold py-2 px-4 rounded"
type="submit"
>
Create!
</button>
</form> </form>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { getSites, Site } from "../api"; import {
getSites as apiGetSites,
Site,
createSite as apiCreateSite,
} from "../api";
import { ref } from "vue"; import { ref } from "vue";
export default { export default {
name: "Sites", name: "Sites",
setup() { async setup() {
const sites = ref<Site[]>([]); const sites = ref<Site[]>([]);
getSites().then((s) => void (sites.value = s)); async function getSites() {
return { sites }; apiGetSites().then((s) => void (sites.value = s));
}
await getSites();
const newSiteName = ref("");
const newDefaultPrefix = ref("");
async function createSite() {
try {
const site: Site = {
name: newSiteName.value,
default_prefix: newDefaultPrefix.value,
};
let newSite = await apiCreateSite(site);
console.log(newSite);
await getSites();
newSiteName.value = ""
newDefaultPrefix.value = ""
} catch (e) {
console.log(e);
}
}
return { sites, newSiteName, newDefaultPrefix, createSite };
}, },
}; };
</script> </script>