Added Checkboxes; Wireless Component; Seperators, Minor fixes
This commit is contained in:
parent
ec53bbd749
commit
b5ecc91b32
40
src/components/ActionFooter.vue
Normal file
40
src/components/ActionFooter.vue
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
|
import { watch, shallowRef } from 'vue';
|
||||||
|
|
||||||
|
const {excludedPages} = defineProps<{
|
||||||
|
excludedPages?: string[]
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
let showActionFooter = shallowRef(true);
|
||||||
|
|
||||||
|
const checkExluded = (path: string) => {
|
||||||
|
if(excludedPages){
|
||||||
|
for(let i = 0; i < excludedPages.length; i++) {
|
||||||
|
if(excludedPages[i] === path) {
|
||||||
|
showActionFooter.value = false;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
showActionFooter.value = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
checkExluded(route.path);
|
||||||
|
|
||||||
|
watch(() => route.path, (newPath) => {
|
||||||
|
checkExluded(newPath);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<footer id="footer" v-if="showActionFooter">
|
||||||
|
<h2>Save Changes?</h2>
|
||||||
|
<div>
|
||||||
|
<button class="apply">Apply</button>
|
||||||
|
<button>Cancel</button>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</template>
|
|
@ -1,5 +1,6 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import Navbar from '@/components/Navbar.vue';
|
import Navbar from '@/components/Navbar.vue';
|
||||||
|
import ActionFooter from '@/components/ActionFooter.vue'
|
||||||
|
|
||||||
interface NavbarItem {
|
interface NavbarItem {
|
||||||
name: string;
|
name: string;
|
||||||
|
@ -31,6 +32,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="basicComponents">
|
<div id="basicComponents">
|
||||||
<RouterView/>
|
<RouterView/>
|
||||||
|
<ActionFooter :excludedPages="['/basic']"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -3,61 +3,65 @@
|
||||||
<h2 class="title">Internet Setup</h2>
|
<h2 class="title">Internet Setup</h2>
|
||||||
<section id="internetSetupLogin">
|
<section id="internetSetupLogin">
|
||||||
<h3>Does your internet connection require a login?</h3>
|
<h3>Does your internet connection require a login?</h3>
|
||||||
<!-- There will be no input (keyboard) for the time being because that requires backend to handle. -->
|
<!-- Backend required to finish -->
|
||||||
<form>
|
<form>
|
||||||
<label>
|
<label class="selectOption">
|
||||||
<input type="radio" name="internetLoginOption" value="1">
|
<input type="radio" name="internetLoginOption" value="1">
|
||||||
Yes
|
Yes
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label class="selectOption">
|
||||||
<input type="radio" name="internetLoginOption" value="2">
|
<input type="radio" name="internetLoginOption" value="2">
|
||||||
No
|
No
|
||||||
</label>
|
</label>
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
|
<div class="seperator"></div>
|
||||||
<section id="internetSetupIP">
|
<section id="internetSetupIP">
|
||||||
<h3>Internet IP Address</h3>
|
<h3>Internet IP Address</h3>
|
||||||
<form>
|
<form>
|
||||||
<label>
|
<label class="selectOption">
|
||||||
<input type="radio" name="internetIPOption" value="1">
|
<input type="radio" name="internetIPOption" value="1">
|
||||||
Dynamic IP from ISP
|
Dynamic IP from ISP
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label class="selectOption">
|
||||||
<input type="radio" name="internetIPOption" value="2">
|
<input type="radio" name="internetIPOption" value="2">
|
||||||
Static IP from ISP
|
Static IP from ISP
|
||||||
</label>
|
</label>
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
|
<div class="seperator"></div>
|
||||||
<section>
|
<section>
|
||||||
<h3>DNS (Domain Name Server) Address</h3>
|
<h3>DNS (Domain Name Server) Address</h3>
|
||||||
<form>
|
<form>
|
||||||
<label>
|
<label class="selectOption">
|
||||||
<input type="radio" name="internetDNSOption" value="1">
|
<input type="radio" name="internetDNSOption" value="1">
|
||||||
Automatic DNS from ISP
|
Automatic DNS from ISP
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label class="selectOption">
|
||||||
<input type="radio" name="internetDNSOption" value="2">
|
<input type="radio" name="internetDNSOption" value="2">
|
||||||
Select DNS Servers
|
Select DNS Servers
|
||||||
</label>
|
</label>
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
|
<div class="seperator"></div>
|
||||||
<section>
|
<section>
|
||||||
<h3>Router MAC Address</h3>
|
<h3>Router MAC Address</h3>
|
||||||
<form>
|
<form>
|
||||||
<label>
|
<label class="selectOption">
|
||||||
<input type="radio" name="internetMACOption" value="1">
|
<input type="radio" name="internetMACOption" value="1">
|
||||||
Default Address
|
Default Address
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label class="selectOption">
|
||||||
<input type="radio" name="internetMACOption" value="2">
|
<input type="radio" name="internetMACOption" value="2">
|
||||||
Computer MAC Address
|
Computer MAC Address
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label class="selectOption">
|
||||||
<input type="radio" name="internetMACOption" value="2">
|
<input type="radio" name="internetMACOption" value="2">
|
||||||
Specific MAC Adress
|
Specific MAC Adress
|
||||||
</label>
|
</label>
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
|
<div class="seperator"></div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,169 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div id="wirelessSettingsComponent">
|
||||||
<h2 class="title">Wireless Settings</h2>
|
<h2 class="title">Wireless Settings</h2>
|
||||||
|
<!-- Backend required to finish -->
|
||||||
|
<section>
|
||||||
|
<h3>General Setup</h3>
|
||||||
|
<form>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="checkbox"/>
|
||||||
|
Enable AX (OFDMA Feature)
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="checkbox"/>
|
||||||
|
Enable OFDMA (2.4Ghz)
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="checkbox"/>
|
||||||
|
Enable OFDMA (5Ghz)
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="checkbox"/>
|
||||||
|
Enable automatic 2.4Ghz & 5Ghz switching
|
||||||
|
</label>
|
||||||
|
</form>
|
||||||
|
</section>
|
||||||
|
<div class="seperator"></div>
|
||||||
|
<section>
|
||||||
|
<h3>Wireless 2.4GHz</h3>
|
||||||
|
<form>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="checkbox">
|
||||||
|
Enable SSID Broadcast
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="checkbox">
|
||||||
|
Enable 20/40 MHz Coexistence
|
||||||
|
</label>
|
||||||
|
<label class="inputName">
|
||||||
|
<input type="text" name="wirelessName" value="SomeRandomNetwork"/>
|
||||||
|
Name (SSID)
|
||||||
|
</label>
|
||||||
|
<label class="dropdownBox">
|
||||||
|
<select>
|
||||||
|
<option valie="Auto">Auto</option>
|
||||||
|
<option value="01">01</option>
|
||||||
|
<option value="02">02</option>
|
||||||
|
<option value="03">03</option>
|
||||||
|
<option value="04">04</option>
|
||||||
|
<option value="05">05</option>
|
||||||
|
<option value="06">06</option>
|
||||||
|
<option value="07">07</option>
|
||||||
|
<option value="08">08</option>
|
||||||
|
<option value="09">09</option>
|
||||||
|
<option value="10">10</option>
|
||||||
|
<option value="11">11</option>
|
||||||
|
</select>
|
||||||
|
Channel
|
||||||
|
</label>
|
||||||
|
<label class="dropdownBox">
|
||||||
|
<select>
|
||||||
|
<option value="54">54 Mbps</option>
|
||||||
|
<option value="289">289 Mbps</option>
|
||||||
|
<option value="600">600 Mbps</option>
|
||||||
|
</select>
|
||||||
|
Mode
|
||||||
|
</label>
|
||||||
|
<label class="subSelect">
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="radio" name="securityOption" value="1">
|
||||||
|
None
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="radio" name="securityOption" value="2">
|
||||||
|
WPA2-personal [AES]
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="radio" name="securityOption" value="3">
|
||||||
|
WPA-Personal [TKIP] + WPA2-Personal [AES]
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="radio" name="securityOption" value="4">
|
||||||
|
WPA3-Personal [SAE]
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="radio" name="securityOption" value="5">
|
||||||
|
WPA2-personal [AES] + WPA3-Personal
|
||||||
|
</label>
|
||||||
|
Security Options
|
||||||
|
</label>
|
||||||
|
<label class="inputName">
|
||||||
|
<input type="password" name="wirelessName" value="SomeRandomPassword"/>
|
||||||
|
Password (Network)
|
||||||
|
</label>
|
||||||
|
</form>
|
||||||
|
</section>
|
||||||
|
<div class="seperator"></div>
|
||||||
|
<section>
|
||||||
|
<h3>Wireless 5GHz</h3>
|
||||||
|
<form>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="checkbox">
|
||||||
|
Enable SSID Broadcast
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="checkbox">
|
||||||
|
Enable 20/40 MHz Coexistence
|
||||||
|
</label>
|
||||||
|
<label class="inputName">
|
||||||
|
<input type="text" name="wirelessName" value="SomeRandomNetwork"/>
|
||||||
|
Name (SSID)
|
||||||
|
</label>
|
||||||
|
<label class="dropdownBox">
|
||||||
|
<select>
|
||||||
|
<option valie="Auto">Auto</option>
|
||||||
|
<option value="01">01</option>
|
||||||
|
<option value="02">02</option>
|
||||||
|
<option value="03">03</option>
|
||||||
|
<option value="04">04</option>
|
||||||
|
<option value="05">05</option>
|
||||||
|
<option value="06">06</option>
|
||||||
|
<option value="07">07</option>
|
||||||
|
<option value="08">08</option>
|
||||||
|
<option value="09">09</option>
|
||||||
|
<option value="10">10</option>
|
||||||
|
<option value="11">11</option>
|
||||||
|
</select>
|
||||||
|
Channel
|
||||||
|
</label>
|
||||||
|
<label class="dropdownBox">
|
||||||
|
<select>
|
||||||
|
<option value="54">54 Mbps</option>
|
||||||
|
<option value="289">289 Mbps</option>
|
||||||
|
<option value="600">600 Mbps</option>
|
||||||
|
</select>
|
||||||
|
Mode
|
||||||
|
</label>
|
||||||
|
<label class="subSelect">
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="radio" name="securityOption" value="1">
|
||||||
|
None
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="radio" name="securityOption" value="2">
|
||||||
|
WPA2-personal [AES]
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="radio" name="securityOption" value="3">
|
||||||
|
WPA-Personal [TKIP] + WPA2-Personal [AES]
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="radio" name="securityOption" value="4">
|
||||||
|
WPA3-Personal [SAE]
|
||||||
|
</label>
|
||||||
|
<label class="selectOption">
|
||||||
|
<input type="radio" name="securityOption" value="5">
|
||||||
|
WPA2-personal [AES] + WPA3-Personal
|
||||||
|
</label>
|
||||||
|
Security Options
|
||||||
|
</label>
|
||||||
|
<label class="inputName">
|
||||||
|
<input type="password" name="wirelessName" value="SomeRandomPassword"/>
|
||||||
|
Password (Network)
|
||||||
|
</label>
|
||||||
|
</form>
|
||||||
|
</section>
|
||||||
|
<div class="seperator"></div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ import BasicGuestNetwork from "../pages/basicDashboard/GuestNetwork.vue"
|
||||||
const routes = [
|
const routes = [
|
||||||
{
|
{
|
||||||
path: '/',
|
path: '/',
|
||||||
component: BasicDashboard,
|
redirect: '/basic'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/advance',
|
path: '/advance',
|
||||||
|
|
|
@ -109,45 +109,28 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#internetSetupComponent {
|
#internetSetupComponent, #wirelessSettingsComponent {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 20px;
|
gap: 20px;
|
||||||
|
align-items: center;
|
||||||
|
max-width: 70%;
|
||||||
|
margin: auto;
|
||||||
|
|
||||||
section {
|
section {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
max-width: 400px;
|
|
||||||
}
|
|
||||||
input[type="radio"] {
|
|
||||||
appearance: none;
|
|
||||||
-webkit-appearance: none;
|
|
||||||
|
|
||||||
width: 1.15em;
|
|
||||||
height:1.15em;
|
|
||||||
border: 0.15em solid #fff;
|
|
||||||
border-radius: 10%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
input[type="radio"]::before {
|
|
||||||
content: "";
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
|
||||||
border-radius: 10%;
|
|
||||||
transform: scale(0);
|
|
||||||
transition: 0.3s transform;
|
|
||||||
background-color: var(--dark-highlight-color);
|
|
||||||
}
|
}
|
||||||
input[type="radio"]:checked::before {
|
form {
|
||||||
transform: scale(1);
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 10px;
|
||||||
}
|
}
|
||||||
label {
|
|
||||||
margin-top: 5px;
|
.selectOption {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background-color: var(--dark-bg-alt-2-color);
|
background-color: var(--dark-bg-alt-2-color);
|
||||||
|
@ -156,5 +139,46 @@
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
|
user-select: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.inputName {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
input {
|
||||||
|
margin-top: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
background-color: var(--dark-bg-alt-2-color);
|
||||||
|
min-height: 50px;
|
||||||
|
width: 100%;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
border: none;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.dropdownBox {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
select {
|
||||||
|
margin-top: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
background-color: var(--dark-bg-alt-2-color);
|
||||||
|
min-height: 50px;
|
||||||
|
width: 100%;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
border: none;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.subSelect {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
gap: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -83,6 +83,40 @@ a {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
background-color: var(--dark-bg-alt-2-color);
|
||||||
|
width: 70%;
|
||||||
|
margin: 20px auto;
|
||||||
|
padding: 15px;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
div {
|
||||||
|
display: flex;
|
||||||
|
gap: 10px;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
color: inherit;
|
||||||
|
background-color: var(--dark-bg-alt-2-color);
|
||||||
|
border: none;
|
||||||
|
height: 40px;
|
||||||
|
width: 70px;
|
||||||
|
border-radius: 5px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 1rem;
|
||||||
|
text-underline-offset: 2px;
|
||||||
|
}
|
||||||
|
button:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.apply {
|
||||||
|
background-color: var(--dark-highlight-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.popup {
|
.popup {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: min-content;
|
height: min-content;
|
||||||
|
@ -121,3 +155,40 @@ a {
|
||||||
.bad-indicator {
|
.bad-indicator {
|
||||||
background-color: var(--bad-indicator) !important;
|
background-color: var(--bad-indicator) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.seperator {
|
||||||
|
background-color: #4c4c4c;
|
||||||
|
height: 2px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="radio"], input[type="checkbox"] {
|
||||||
|
appearance: none;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
width: 15px;
|
||||||
|
height:15px;
|
||||||
|
border: 2px solid #fff;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="radio"]::before, input[type="checkbox"]::before {
|
||||||
|
content: "";
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 50%;
|
||||||
|
transform: scale(0);
|
||||||
|
transition: 0.3s transform;
|
||||||
|
background-color: var(--dark-highlight-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="radio"]:checked::before, input[type="checkbox"]:checked::before {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"], input[type="checkbox"]::before {
|
||||||
|
border-radius: 10%;
|
||||||
|
}
|
Loading…
Reference in a new issue