Skip to content

Commit a70c0c4

Browse files
committed
added DO provider module
1 parent bd31030 commit a70c0c4

File tree

2 files changed

+90
-2
lines changed

2 files changed

+90
-2
lines changed

app/static/provider-do.vue

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<template>
2+
<div>
3+
<div class="form-group">
4+
<label for="id_do_token">
5+
Enter your API token. The token must have read and write permissions
6+
(<a href="https://cloud.digitalocean.com/settings/api/tokens" target="_blank" rel="noopener noreferrer">https://cloud.digitalocean.com/settings/api/tokens</a>):
7+
</label>
8+
<input
9+
type="text"
10+
class="form-control"
11+
id="id_do_token"
12+
name="do_token"
13+
v-model="do_token"
14+
@blur="load_do_regions"
15+
/>
16+
</div>
17+
<div class="form-group">
18+
<label
19+
v-if="do_regions.length > 0"
20+
for="id_region"
21+
>What region should the server be located in?</label>
22+
<label
23+
v-if="do_regions.length === 0"
24+
for="id_region"
25+
>Please enter API key above to select region</label>
26+
<label v-if="do_region_loading" for="id_region">Loading regions...</label>
27+
<select
28+
name="region"
29+
id="id_region"
30+
class="form-control"
31+
v-model="do_region"
32+
v-bind:disabled="do_region_loading"
33+
>
34+
<option value disabled>Select region</option>
35+
<option
36+
v-for="(region, i) in do_regions"
37+
v-bind:key="region.slug"
38+
v-bind:value="region.slug"
39+
>{{region.name}}</option>
40+
</select>
41+
</div>
42+
<button @click="submit" v-bind:disabled="!do_region" class="btn btn-primary" type="button">Next</button>
43+
</div>
44+
</template>
45+
46+
<script>
47+
module.exports = {
48+
data: function() {
49+
return {
50+
do_token: null,
51+
do_region: null,
52+
do_regions: [],
53+
do_region_loading: false
54+
}
55+
},
56+
methods: {
57+
load_do_regions: function () {
58+
this.do_region_loading = true;
59+
fetch("/do/regions", {
60+
method: "POST",
61+
headers: {
62+
"Content-Type": "application/json"
63+
},
64+
body: JSON.stringify({ token: this.do_token })
65+
})
66+
.then(r => r.json())
67+
.then(r => {
68+
this.do_regions = r.regions;
69+
})
70+
.finally(() => {
71+
this.do_region_loading = false;
72+
});
73+
},
74+
submit() {
75+
this.$emit('submit', {
76+
do_token: this.do_token,
77+
region: this.do_region
78+
})
79+
}
80+
}
81+
};
82+
</script>

app/static/provider-setup.vue

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
<a
1313
class="nav-link"
1414
href="#prodiver_id"
15-
v-bind:class="{ active: item.alias === provider && provider.alias }"
15+
v-bind:class="{ active: item.alias === (provider && provider.alias) }"
1616
@click="set_provider(item)"
1717
>{{item.name}}</a>
1818
</li>
1919
</ul>
2020
</div>
2121
<div class="col-8">
22-
{{ provider && provider.alias }}
22+
<component v-if="provider" v-bind:is="provider.alias" v-on:submit="on_provider_submit"></component>
2323
</div>
2424
</div>
2525
</template>
@@ -51,7 +51,13 @@ module.exports = {
5151
methods: {
5252
set_provider(provider) {
5353
this.provider = provider;
54+
},
55+
on_provider_submit(extra_args) {
56+
this.$emit('submit', Object.assign({provider: this.provider.alias}, extra_args));
5457
}
58+
},
59+
components: {
60+
'digitalocean': window.httpVueLoader('/static/provider-do.vue')
5561
}
5662
};
5763
</script>

0 commit comments

Comments
 (0)