wip
This commit is contained in:
@@ -14,8 +14,11 @@ class ServerController extends Controller
|
||||
{
|
||||
$servers = auth()->user()->servers()->latest()->paginate();
|
||||
|
||||
$providers = auth()->user()->package->providers()->pluck('label', 'id');
|
||||
|
||||
return inertia('Servers/Index', [
|
||||
'servers' => ServerResource::collection($servers)
|
||||
'servers' => ServerResource::collection($servers),
|
||||
'dataProviders' => $providers
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -51,4 +54,11 @@ class ServerController extends Controller
|
||||
|
||||
return redirect()->route('servers.index')->with('success', __('Your server is deleted'));
|
||||
}
|
||||
|
||||
public function regions(Request $request, $providerId)
|
||||
{
|
||||
$provider = $request->user()->package->providers()->findOrFail($providerId);
|
||||
|
||||
return $provider->regions()->pluck('label', 'id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,12 +34,12 @@ class ServerRequest extends FormRequest
|
||||
'provider' => [
|
||||
'required',
|
||||
'not_in:0',
|
||||
'exists:provider_plans,plan_id'
|
||||
'exists:provider_plans,id'
|
||||
],
|
||||
'region' => [
|
||||
'required',
|
||||
'not_in:0',
|
||||
'exists:provider_regions,region_id'
|
||||
'exists:provider_regions,id'
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
88
public/js/52.js
vendored
88
public/js/52.js
vendored
@@ -109,6 +109,11 @@ __webpack_require__.r(__webpack_exports__);
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
|
||||
|
||||
@@ -175,7 +180,8 @@ __webpack_require__.r(__webpack_exports__);
|
||||
DropdownListItemButton: _components_DropdownListItemButton__WEBPACK_IMPORTED_MODULE_27__["default"]
|
||||
},
|
||||
props: {
|
||||
servers: Object
|
||||
servers: Object,
|
||||
dataProviders: Object
|
||||
},
|
||||
computed: {
|
||||
shouldBePolling: function shouldBePolling() {
|
||||
@@ -199,6 +205,13 @@ __webpack_require__.r(__webpack_exports__);
|
||||
if (!this.pollingInterval) {
|
||||
this.startPollingInterval();
|
||||
}
|
||||
},
|
||||
'form.provider': function formProvider(value) {
|
||||
var _this = this;
|
||||
|
||||
window.axios.get(this.route('servers.regions', value)).then(function (response) {
|
||||
_this.regions = response.data;
|
||||
});
|
||||
}
|
||||
},
|
||||
data: function data() {
|
||||
@@ -208,6 +221,8 @@ __webpack_require__.r(__webpack_exports__);
|
||||
provider: null,
|
||||
region: null
|
||||
},
|
||||
providers: this.dataProviders,
|
||||
regions: [],
|
||||
pollingInterval: null,
|
||||
modalIsOpen: false,
|
||||
breadcrumbs: [{
|
||||
@@ -238,25 +253,26 @@ __webpack_require__.r(__webpack_exports__);
|
||||
});
|
||||
},
|
||||
submit: function submit() {
|
||||
var _this = this;
|
||||
var _this2 = this;
|
||||
|
||||
this.$inertia.post(this.route('servers.store'), this.form, {
|
||||
only: ['errors', 'flash', 'servers']
|
||||
}).then(function (response) {
|
||||
if (!Object.keys(_this.$page.errors).length) {
|
||||
_this.form.domain = null;
|
||||
_this.modalIsOpen = false;
|
||||
only: ['errors', 'flash', 'servers'],
|
||||
onFinish: function onFinish() {
|
||||
if (!Object.keys(_this2.$page.errors).length) {
|
||||
_this2.form.domain = null;
|
||||
_this2.modalIsOpen = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
confirmDelete: function confirmDelete(server) {
|
||||
var _this2 = this;
|
||||
var _this3 = this;
|
||||
|
||||
Object(_hooks_confirm_delete__WEBPACK_IMPORTED_MODULE_28__["useConfirmDelete"])({
|
||||
title: this.__('Are you sure?'),
|
||||
message: "Your server will be deleted completely, this action is irreversible.",
|
||||
onConfirm: function onConfirm() {
|
||||
return _this2["delete"](server);
|
||||
return _this3["delete"](server);
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -487,7 +503,15 @@ var render = function() {
|
||||
"FormSelect",
|
||||
{
|
||||
attrs: {
|
||||
errors: _vm.$page.errors.provider,
|
||||
label: _vm.__("Select provider")
|
||||
},
|
||||
model: {
|
||||
value: _vm.form.provider,
|
||||
callback: function($$v) {
|
||||
_vm.$set(_vm.form, "provider", $$v)
|
||||
},
|
||||
expression: "form.provider"
|
||||
}
|
||||
},
|
||||
[
|
||||
@@ -501,14 +525,33 @@ var render = function() {
|
||||
)
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
),
|
||||
_vm._v(" "),
|
||||
_vm._l(_vm.providers, function(name, id) {
|
||||
return _c(
|
||||
"option",
|
||||
{ domProps: { value: id } },
|
||||
[_vm._v(_vm._s(name))]
|
||||
)
|
||||
})
|
||||
],
|
||||
2
|
||||
),
|
||||
_vm._v(" "),
|
||||
_c(
|
||||
"FormSelect",
|
||||
{
|
||||
attrs: { label: _vm.__("Select region") }
|
||||
attrs: {
|
||||
errors: _vm.$page.errors.region,
|
||||
label: _vm.__("Select region")
|
||||
},
|
||||
model: {
|
||||
value: _vm.form.region,
|
||||
callback: function($$v) {
|
||||
_vm.$set(_vm.form, "region", $$v)
|
||||
},
|
||||
expression: "form.region"
|
||||
}
|
||||
},
|
||||
[
|
||||
_c(
|
||||
@@ -521,8 +564,17 @@ var render = function() {
|
||||
)
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
),
|
||||
_vm._v(" "),
|
||||
_vm._l(_vm.regions, function(name, id) {
|
||||
return _c(
|
||||
"option",
|
||||
{ domProps: { value: id } },
|
||||
[_vm._v(_vm._s(name))]
|
||||
)
|
||||
})
|
||||
],
|
||||
2
|
||||
)
|
||||
]
|
||||
},
|
||||
@@ -544,7 +596,7 @@ var render = function() {
|
||||
],
|
||||
null,
|
||||
false,
|
||||
1527714898
|
||||
3699054859
|
||||
)
|
||||
})
|
||||
: _vm._e()
|
||||
@@ -722,7 +774,11 @@ var render = function() {
|
||||
}
|
||||
}
|
||||
},
|
||||
[_vm._v("Delete")]
|
||||
[
|
||||
_vm._v(
|
||||
"\n Delete\n "
|
||||
)
|
||||
]
|
||||
)
|
||||
],
|
||||
1
|
||||
|
||||
748
public/js/76.js
vendored
748
public/js/76.js
vendored
File diff suppressed because one or more lines are too long
2
public/js/app.js
vendored
2
public/js/app.js
vendored
@@ -43,7 +43,7 @@
|
||||
/******/
|
||||
/******/ // script path function
|
||||
/******/ function jsonpScriptSrc(chunkId) {
|
||||
/******/ return __webpack_require__.p + "js/" + ({}[chunkId]||chunkId) + ".js?id=" + {"0":"0dcde053981f92959e59","1":"40f269324eb90e7c5005","2":"d2a49802291d427ca7c8","3":"a0f4c2f49863abbfe7f1","4":"27416beeac7dd90b6c9f","5":"fbfbcf45610d060d921e","6":"73fc0264b5cc06f5bd55","7":"140acb8c38018bb7c822","8":"3b0a87d878c97185a291","9":"3347d79d05ca0ac7a350","10":"47d8d4c4aa7f3eeae6b8","11":"8c5c9f6fa8b7aaec38ee","12":"03ffa63c616af52e9173","13":"1f917f9eb173c1c73c26","14":"d0c922727dbc8b127550","15":"b406efe2b2eb8988be0b","16":"ae392c0d7939c1834713","17":"031677a852ea3f5eb57a","18":"78c595d4f44ed93b16ae","19":"0cefe5adcf3c9c67917d","20":"c3aaa3a8880c1323f5b9","21":"c6824027cf77f1875e86","22":"bb6e0db11ce8cea1ea15","23":"0924f149c1e3f1ccc23b","24":"e0139a753b3037348bd3","25":"523a459f15606706e0f4","26":"78ea723a4d8f6c925287","27":"61b4c089c608f7f27b57","28":"df81cbcdc7dddac9a1cf","29":"205fcb561832fdca3613","30":"34254d5ab54e1b77af57","31":"b24fe053d9586525bd04","32":"d40da2a9d0dfcdfcf40e","33":"4ee1d57db25ce73da07a","34":"a1dc60cf9b240735c524","35":"13384dcc57163b2c15fb","36":"07128eb2197b6a6d9955","37":"8b8ab95aeaa851c57033","38":"d123e29b59d771ee7750","39":"fe834feb15b9160591f0","40":"90e1e3b80ac15780aa45","41":"26e0438c5430defefcb4","42":"f7e025a8a96b2e66d300","43":"c6cbbb84bf085e916af4","44":"837f8f061ed475f2c043","45":"1311d0b2659eb428a007","46":"96963330e5744696f861","47":"b9dd7aafbd529e03b008","48":"303c80c25410a7039819","49":"080bb4762ce606a20938","50":"6a2be057a821819e0f3f","51":"31ee010f65a984f2b422","52":"ef659bf7acfc733ae0e8","53":"327b50ce903b0f348341","54":"cb30fead7b74df252e66","55":"0953446db22303519e08","56":"6bc136b4c9a35e9a1836","57":"3f7b6082e37f0f114055","58":"a1668de9111dbf09572b","59":"b6ab5d03b46b7ae139a7","60":"37d00800b71f79260df7","61":"7799c0088535883cfcdc","62":"5e0875a9e333d029edcb","63":"3fbf8bbeb22bdf1a3538","64":"35e94b96c17d9176fdd1","65":"c40d3bc7ae4294705195","66":"54405ebd171bf0a0be8a","67":"0cf2c9062ba4048c4d16","68":"47e5da1f84b24bfeab25","69":"6258b9920cf545ad6043","70":"cf0dc959ae07c017ed3e","71":"a82af2a3c60b498c6b10","72":"adda6ceb50c78f5aae68","73":"884f5978ac8bcb4fdc45","74":"cf1ca882da11e35bea7c","75":"7e7c004989bdfef01a71"}[chunkId] + ""
|
||||
/******/ return __webpack_require__.p + "js/" + ({}[chunkId]||chunkId) + ".js?id=" + {"0":"0dcde053981f92959e59","1":"40f269324eb90e7c5005","2":"d2a49802291d427ca7c8","3":"a0f4c2f49863abbfe7f1","4":"27416beeac7dd90b6c9f","5":"fbfbcf45610d060d921e","6":"73fc0264b5cc06f5bd55","7":"140acb8c38018bb7c822","8":"3b0a87d878c97185a291","9":"3347d79d05ca0ac7a350","10":"47d8d4c4aa7f3eeae6b8","11":"8c5c9f6fa8b7aaec38ee","12":"03ffa63c616af52e9173","13":"1f917f9eb173c1c73c26","14":"d0c922727dbc8b127550","15":"b406efe2b2eb8988be0b","16":"ae392c0d7939c1834713","17":"031677a852ea3f5eb57a","18":"78c595d4f44ed93b16ae","19":"0cefe5adcf3c9c67917d","20":"c3aaa3a8880c1323f5b9","21":"c6824027cf77f1875e86","22":"bb6e0db11ce8cea1ea15","23":"0924f149c1e3f1ccc23b","24":"e0139a753b3037348bd3","25":"523a459f15606706e0f4","26":"78ea723a4d8f6c925287","27":"61b4c089c608f7f27b57","28":"df81cbcdc7dddac9a1cf","29":"205fcb561832fdca3613","30":"34254d5ab54e1b77af57","31":"b24fe053d9586525bd04","32":"d40da2a9d0dfcdfcf40e","33":"4ee1d57db25ce73da07a","34":"a1dc60cf9b240735c524","35":"13384dcc57163b2c15fb","36":"07128eb2197b6a6d9955","37":"8b8ab95aeaa851c57033","38":"d123e29b59d771ee7750","39":"fe834feb15b9160591f0","40":"90e1e3b80ac15780aa45","41":"26e0438c5430defefcb4","42":"f7e025a8a96b2e66d300","43":"c6cbbb84bf085e916af4","44":"837f8f061ed475f2c043","45":"1311d0b2659eb428a007","46":"96963330e5744696f861","47":"b9dd7aafbd529e03b008","48":"303c80c25410a7039819","49":"080bb4762ce606a20938","50":"6a2be057a821819e0f3f","51":"31ee010f65a984f2b422","52":"8b80af5beb017ef9538e","53":"327b50ce903b0f348341","54":"cb30fead7b74df252e66","55":"0953446db22303519e08","56":"6bc136b4c9a35e9a1836","57":"3f7b6082e37f0f114055","58":"a1668de9111dbf09572b","59":"b6ab5d03b46b7ae139a7","60":"37d00800b71f79260df7","61":"7799c0088535883cfcdc","62":"5e0875a9e333d029edcb","63":"3fbf8bbeb22bdf1a3538","64":"35e94b96c17d9176fdd1","65":"c40d3bc7ae4294705195","66":"54405ebd171bf0a0be8a","67":"0cf2c9062ba4048c4d16","68":"47e5da1f84b24bfeab25","69":"6258b9920cf545ad6043","70":"cf0dc959ae07c017ed3e","71":"a82af2a3c60b498c6b10","72":"adda6ceb50c78f5aae68","73":"884f5978ac8bcb4fdc45","74":"cf1ca882da11e35bea7c","75":"7e7c004989bdfef01a71"}[chunkId] + ""
|
||||
/******/ }
|
||||
/******/
|
||||
/******/ // The require function
|
||||
|
||||
@@ -8,12 +8,15 @@
|
||||
<template #form>
|
||||
<FormInput :label="__('Name')" :errors="$page.errors.name" v-model="form.name"/>
|
||||
|
||||
<FormSelect :label="__('Select provider')">
|
||||
<FormSelect :errors="$page.errors.provider" :label="__('Select provider')"
|
||||
v-model="form.provider">
|
||||
<option :value="`${null}`">{{ __('Select random provider') }}</option>
|
||||
<option v-for="(name, id) in providers" :value="id">{{ name }}</option>
|
||||
</FormSelect>
|
||||
|
||||
<FormSelect :label="__('Select region')">
|
||||
<FormSelect :errors="$page.errors.region" :label="__('Select region')" v-model="form.region">
|
||||
<option :value="`${null}`">{{ __('Select random region') }}</option>
|
||||
<option v-for="(name, id) in regions" :value="id">{{ name }}</option>
|
||||
</FormSelect>
|
||||
</template>
|
||||
|
||||
@@ -38,7 +41,7 @@
|
||||
</PageHeader>
|
||||
|
||||
<PageBody>
|
||||
<EmptyImage v-if="!servers.meta.total" />
|
||||
<EmptyImage v-if="!servers.meta.total"/>
|
||||
<List>
|
||||
<ListItem v-for="server in servers.data" :key="server.id">
|
||||
<template #prefix>
|
||||
@@ -52,12 +55,14 @@
|
||||
<template #suffix>
|
||||
<Dropdown v-slot="{ isOpen, toggle, position }">
|
||||
<IconButton @click="toggle">
|
||||
<IconMore class="w-5 h-5" />
|
||||
<IconMore class="w-5 h-5"/>
|
||||
</IconButton>
|
||||
|
||||
<DropdownList :position="position" v-if="isOpen">
|
||||
<DropdownListItem :to="route('servers.show', server.id)">View</DropdownListItem>
|
||||
<DropdownListItemButton class="text-danger" @click="confirmDelete(server)">Delete</DropdownListItemButton>
|
||||
<DropdownListItemButton class="text-danger" @click="confirmDelete(server)">
|
||||
Delete
|
||||
</DropdownListItemButton>
|
||||
</DropdownList>
|
||||
</Dropdown>
|
||||
</template>
|
||||
@@ -141,6 +146,7 @@ export default {
|
||||
|
||||
props: {
|
||||
servers: Object,
|
||||
dataProviders: Object,
|
||||
},
|
||||
|
||||
computed: {
|
||||
@@ -151,8 +157,8 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
mounted(){
|
||||
if(this.shouldBePolling){
|
||||
mounted() {
|
||||
if (this.shouldBePolling) {
|
||||
this.startPollingInterval();
|
||||
}
|
||||
},
|
||||
@@ -165,9 +171,16 @@ export default {
|
||||
return;
|
||||
}
|
||||
|
||||
if(!this.pollingInterval){
|
||||
if (!this.pollingInterval) {
|
||||
this.startPollingInterval();
|
||||
}
|
||||
},
|
||||
|
||||
'form.provider': function(value) {
|
||||
window.axios.get(this.route('servers.regions', value))
|
||||
.then(response => {
|
||||
this.regions = response.data;
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
@@ -179,6 +192,9 @@ export default {
|
||||
region: null,
|
||||
},
|
||||
|
||||
providers: this.dataProviders,
|
||||
regions: [],
|
||||
|
||||
pollingInterval: null,
|
||||
|
||||
modalIsOpen: false,
|
||||
@@ -196,13 +212,13 @@ export default {
|
||||
},
|
||||
|
||||
methods: {
|
||||
startPollingInterval(){
|
||||
startPollingInterval() {
|
||||
this.pollingInterval = setInterval(function () {
|
||||
this.poll();
|
||||
}.bind(this), 3000);
|
||||
},
|
||||
|
||||
clearPollingInterval(){
|
||||
clearPollingInterval() {
|
||||
clearTimeout(this.pollingInterval);
|
||||
this.pollingInterval = null;
|
||||
},
|
||||
@@ -216,14 +232,14 @@ export default {
|
||||
|
||||
submit() {
|
||||
this.$inertia.post(this.route('servers.store'), this.form, {
|
||||
only: ['errors', 'flash', 'servers']
|
||||
})
|
||||
.then((response) => {
|
||||
only: ['errors', 'flash', 'servers'],
|
||||
onFinish: () => {
|
||||
if (!Object.keys(this.$page.errors).length) {
|
||||
this.form.domain = null;
|
||||
this.modalIsOpen = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
confirmDelete(server) {
|
||||
@@ -239,7 +255,7 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
beforeDestroy(){
|
||||
beforeDestroy() {
|
||||
this.clearPollingInterval();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,6 +74,7 @@ Route::group(['middleware' => ['auth', 'auth.blocked']], function () {
|
||||
// Server routes
|
||||
Route::group(['prefix' => 'servers', 'as' => 'servers.'], function () {
|
||||
Route::get('/', 'ServerController@index')->name('index');
|
||||
Route::get('{provider}/regions', 'ServerController@regions')->name('regions');
|
||||
Route::get('{server}', 'ServerController@show')->name('show');
|
||||
Route::get('{server}/settings', 'ServerController@show')->name('show');
|
||||
Route::post('/', 'ServerController@store')->name('store');
|
||||
|
||||
Reference in New Issue
Block a user