jcloud/dashboard/src2/views/settings/FeatureFlags.vue

76 lines
1.6 KiB
Vue

<template>
<Card title="Advanced features" v-if="$account.hasRole('Jcloud Admin')">
<div class="flex flex-col space-y-4">
<FormControl
v-for="field in fields"
type="checkbox"
:label="field.label"
v-model="values[field.fieldname]"
/>
</div>
<div class="mt-4">
<Button
variant="solid"
v-if="isDirty"
@click="$resources.updateFeatureFlags.submit()"
:loading="$resources.updateFeatureFlags.loading"
>
Save changes
</Button>
</div>
</Card>
</template>
<script>
import { FormControl } from 'jingrow-ui';
let fields = [
{ label: 'Enable private benches', fieldname: 'benches_enabled' },
//{ label: 'Enable servers', fieldname: 'servers_enabled' },
//{
//label: 'Enable self-hosted servers',
//fieldname: 'self_hosted_servers_enabled'
//},
{
label: 'Enable security portal',
fieldname: 'security_portal_enabled'
}
];
export default {
name: 'FeatureFlags',
components: { FormControl },
data() {
let values = {};
for (let field of fields) {
values[field.fieldname] = Boolean(this.$account.team[field.fieldname]);
}
return {
values,
fields
};
},
resources: {
updateFeatureFlags() {
return {
url: 'jcloud.api.account.update_feature_flags',
params: {
values: this.values
},
onSuccess() {
this.$account.fetchAccount();
}
};
}
},
computed: {
isDirty() {
return Object.keys(this.values).some(
key => Number(this.values[key]) !== Number(this.$account.team[key])
);
}
}
};
</script>