123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <template>
- <modal v-if="show" @close="hideModal">
- <div slot="header">
- <div class="row-wrapper">
- <h3 class="title">{{ $t("edit_environment") }}</h3>
- <div>
- <button class="icon" @click="hideModal">
- <i class="material-icons">close</i>
- </button>
- </div>
- </div>
- </div>
- <div slot="body" class="flex flex-col">
- <label for="selectLabel">{{ $t("label") }}</label>
- <input
- type="text"
- id="selectLabel"
- v-model="name"
- :placeholder="editingEnvironment.name"
- @keyup.enter="saveEnvironment"
- />
- <div class="row-wrapper">
- <label for="variableList">{{ $t("env_variable_list") }}</label>
- <div>
- <button class="icon" @click="clearContent($event)" v-tooltip.bottom="$t('clear')">
- <i class="material-icons">clear_all</i>
- </button>
- </div>
- </div>
- <ul
- v-for="(variable, index) in this.editingEnvCopy.variables"
- :key="index"
- class="border-b border-dashed divide-y md:divide-x border-brdColor divide-dashed divide-brdColor md:divide-y-0"
- :class="{ 'border-t': index == 0 }"
- >
- <li>
- <input
- :placeholder="$t('parameter_count', { count: index + 1 })"
- :name="'param' + index"
- :value="variable.key"
- @change="
- $store.commit('postwoman/setVariableKey', {
- index,
- value: $event.target.value,
- })
- "
- autofocus
- />
- </li>
- <li>
- <input
- :placeholder="$t('value_count', { count: index + 1 })"
- :name="'value' + index"
- :value="
- typeof variable.value === 'string' ? variable.value : JSON.stringify(variable.value)
- "
- @change="
- $store.commit('postwoman/setVariableValue', {
- index,
- value: $event.target.value,
- })
- "
- />
- </li>
- <div>
- <li>
- <button
- class="icon"
- @click="removeEnvironmentVariable(index)"
- v-tooltip.bottom="$t('delete')"
- id="variable"
- >
- <i class="material-icons">delete</i>
- </button>
- </li>
- </div>
- </ul>
- <ul>
- <li>
- <button class="icon" @click="addEnvironmentVariable">
- <i class="material-icons">add</i>
- <span>{{ $t("add_new") }}</span>
- </button>
- </li>
- </ul>
- </div>
- <div slot="footer">
- <div class="row-wrapper">
- <span></span>
- <span>
- <button class="icon" @click="hideModal">
- {{ $t("cancel") }}
- </button>
- <button class="icon primary" @click="saveEnvironment">
- {{ $t("save") }}
- </button>
- </span>
- </div>
- </div>
- </modal>
- </template>
- <script>
- import { fb } from "~/helpers/fb"
- export default {
- props: {
- show: Boolean,
- editingEnvironment: Object,
- editingEnvironmentIndex: Number,
- },
- data() {
- return {
- name: undefined,
- doneButton: '<i class="material-icons">done</i>',
- }
- },
- watch: {
- editingEnvironment(update) {
- this.name =
- this.$props.editingEnvironment && this.$props.editingEnvironment.name
- ? this.$props.editingEnvironment.name
- : undefined
- this.$store.commit("postwoman/setEditingEnvironment", this.$props.editingEnvironment)
- },
- },
- computed: {
- editingEnvCopy() {
- return this.$store.state.postwoman.editingEnvironment
- },
- variableString() {
- const result = this.editingEnvCopy.variables
- return result === "" ? "" : JSON.stringify(result)
- },
- },
- methods: {
- syncEnvironments() {
- if (fb.currentUser !== null && fb.currentSettings[1]) {
- if (fb.currentSettings[1].value) {
- fb.writeEnvironments(JSON.parse(JSON.stringify(this.$store.state.postwoman.environments)))
- }
- }
- },
- clearContent({ target }) {
- this.$store.commit("postwoman/removeVariables", [])
- target.innerHTML = this.doneButton
- this.$toast.info(this.$t("cleared"), {
- icon: "clear_all",
- })
- setTimeout(() => (target.innerHTML = '<i class="material-icons">clear_all</i>'), 1000)
- },
- addEnvironmentVariable() {
- let value = { key: "", value: "" }
- this.$store.commit("postwoman/addVariable", value)
- this.syncEnvironments()
- },
- removeEnvironmentVariable(index) {
- let variableIndex = index
- const oldVariables = this.editingEnvCopy.variables.slice()
- const newVariables = this.editingEnvCopy.variables.filter(
- (variable, index) => variableIndex !== index
- )
- this.$store.commit("postwoman/removeVariable", newVariables)
- this.$toast.error(this.$t("deleted"), {
- icon: "delete",
- action: {
- text: this.$t("undo"),
- onClick: (e, toastObject) => {
- this.$store.commit("postwoman/removeVariable", oldVariables)
- toastObject.remove()
- },
- },
- })
- this.syncEnvironments()
- },
- saveEnvironment() {
- if (!this.$data.name) {
- this.$toast.info(this.$t("invalid_environment_name"))
- return
- }
- const environmentUpdated = {
- ...this.editingEnvCopy,
- name: this.$data.name,
- }
- this.$store.commit("postwoman/saveEnvironment", {
- environment: environmentUpdated,
- environmentIndex: this.$props.editingEnvironmentIndex,
- })
- this.$emit("hide-modal")
- this.syncEnvironments()
- },
- hideModal() {
- this.$emit("hide-modal")
- this.$data.name = undefined
- },
- },
- }
- </script>
|