refactor(ui): global environment

This commit is contained in:
liyasthomas
2021-08-18 02:29:05 +05:30
parent 91fee8d2d0
commit f312ed32be
3 changed files with 47 additions and 15 deletions

View File

@@ -10,6 +10,7 @@
class="input floating-input" class="input floating-input"
placeholder=" " placeholder=" "
type="text" type="text"
:disabled="editingEnvironmentIndex === 'global'"
@keyup.enter="saveEnvironment" @keyup.enter="saveEnvironment"
/> />
<label for="selectLabelEnvEdit"> <label for="selectLabelEnvEdit">
@@ -101,8 +102,11 @@
<script lang="ts"> <script lang="ts">
import clone from "lodash/clone" import clone from "lodash/clone"
import { defineComponent, PropType } from "@nuxtjs/composition-api" import { defineComponent, PropType } from "@nuxtjs/composition-api"
import type { Environment } from "~/newstore/environments" import {
import { updateEnvironment } from "~/newstore/environments" Environment,
setGlobalEnvVariables,
updateEnvironment,
} from "~/newstore/environments"
export default defineComponent({ export default defineComponent({
props: { props: {
@@ -111,7 +115,10 @@ export default defineComponent({
type: Object as PropType<Environment | null>, type: Object as PropType<Environment | null>,
default: null, default: null,
}, },
editingEnvironmentIndex: { type: Number, default: null }, editingEnvironmentIndex: {
type: [Number, String] as PropType<number | "global">,
default: null,
},
}, },
data() { data() {
return { return {
@@ -161,7 +168,9 @@ export default defineComponent({
variables: this.vars, variables: this.vars,
} }
updateEnvironment(this.editingEnvironmentIndex, environmentUpdated) if (this.editingEnvironmentIndex === "global")
setGlobalEnvVariables(environmentUpdated.variables)
else updateEnvironment(this.editingEnvironmentIndex, environmentUpdated)
this.hideModal() this.hideModal()
}, },
hideModal() { hideModal() {

View File

@@ -40,6 +40,7 @@
" "
/> />
<SmartItem <SmartItem
v-if="!(environmentIndex === 'global')"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
:label="$t('delete')" :label="$t('delete')"
@@ -60,13 +61,17 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { PropType } from "@nuxtjs/composition-api"
import Vue from "vue" import Vue from "vue"
import { deleteEnvironment } from "~/newstore/environments" import { deleteEnvironment } from "~/newstore/environments"
export default Vue.extend({ export default Vue.extend({
props: { props: {
environment: { type: Object, default: () => {} }, environment: { type: Object, default: () => {} },
environmentIndex: { type: Number, default: null }, environmentIndex: {
type: [Number, String] as PropType<number | "global">,
default: null,
},
}, },
data() { data() {
return { return {
@@ -75,7 +80,8 @@ export default Vue.extend({
}, },
methods: { methods: {
removeEnvironment() { removeEnvironment() {
deleteEnvironment(this.environmentIndex) if (this.environmentIndex !== "global")
deleteEnvironment(this.environmentIndex)
this.$toast.error(this.$t("deleted").toString(), { this.$toast.error(this.$t("deleted").toString(), {
icon: "delete", icon: "delete",
}) })

View File

@@ -75,6 +75,21 @@
:show="showModalImportExport" :show="showModalImportExport"
@hide-modal="displayModalImportExport(false)" @hide-modal="displayModalImportExport(false)"
/> />
<div class="flex flex-col">
<EnvironmentsEnvironment
environment-index="global"
:environment="globalEnvironment"
class="border-b border-dashed border-dividerLight"
@edit-environment="editEnvironment(globalEnvironment, 'global')"
/>
<EnvironmentsEnvironment
v-for="(environment, index) in environments"
:key="`environment-${index}`"
:environment-index="index"
:environment="environment"
@edit-environment="editEnvironment(environment, index)"
/>
</div>
<div <div
v-if="environments.length === 0" v-if="environments.length === 0"
class="flex flex-col text-secondaryLight p-4 items-center justify-center" class="flex flex-col text-secondaryLight p-4 items-center justify-center"
@@ -88,15 +103,6 @@
@click.native="displayModalAdd(true)" @click.native="displayModalAdd(true)"
/> />
</div> </div>
<div class="flex flex-col">
<EnvironmentsEnvironment
v-for="(environment, index) in environments"
:key="`environment-${index}`"
:environment-index="index"
:environment="environment"
@edit-environment="editEnvironment(environment, index)"
/>
</div>
</AppSection> </AppSection>
</template> </template>
@@ -108,12 +114,23 @@ import {
setCurrentEnvironment, setCurrentEnvironment,
selectedEnvIndex$, selectedEnvIndex$,
Environment, Environment,
globalEnv$,
} from "~/newstore/environments" } from "~/newstore/environments"
export default defineComponent({ export default defineComponent({
setup() { setup() {
const globalEnv = useReadonlyStream(globalEnv$, [])
const globalEnvName = {
name: "Global",
}
const globalEnvVariables = {
variables: globalEnv.value,
}
const globalEnvironment = Object.assign(globalEnvName, globalEnvVariables)
return { return {
environments: useReadonlyStream(environments$, []), environments: useReadonlyStream(environments$, []),
globalEnvironment,
selectedEnvironmentIndex: useStream( selectedEnvironmentIndex: useStream(
selectedEnvIndex$, selectedEnvIndex$,
-1, -1,