diff --git a/package-lock.json b/package-lock.json index 731cb10..fa36b7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2844,63 +2844,6 @@ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "ssri": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", @@ -2909,28 +2852,6 @@ "requires": { "minipass": "^3.1.1" } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.8.3", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", - "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - } } } }, @@ -12495,6 +12416,87 @@ } } }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "vue-meta": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/vue-meta/-/vue-meta-2.4.0.tgz", diff --git a/src/abstraction/repository/appSectionRepository.js b/src/abstraction/repository/appSectionRepository.js new file mode 100644 index 0000000..a151216 --- /dev/null +++ b/src/abstraction/repository/appSectionRepository.js @@ -0,0 +1,18 @@ +import axios from "axios"; +import url from '@/router/url'; +import { setData, getArray, getJson } from '../resources/appSectionResource'; +export default class AppSectionRepository { + async index({ modelType, modelId }) { + let response = await axios.get(url('indexAppSection', { model_type: modelType, model_id: modelId })); + if (response.status === 200) { + return getArray(response.data) + } + } + async update(data) { + let json = setData(data); + let response = await axios.post(url("updateAppSection"), json); + if (response.status === 201 || response.status === 200) { + return getJson(response.data.data); + } + } +} \ No newline at end of file diff --git a/src/abstraction/resources/appSectionResource.js b/src/abstraction/resources/appSectionResource.js new file mode 100644 index 0000000..5ce16e0 --- /dev/null +++ b/src/abstraction/resources/appSectionResource.js @@ -0,0 +1,22 @@ +export const getJson = data => ({ + id: data.id, + created_at: data.created_at, + model_type: data.model_type, + item_available: data.item_available, + page: data.page, + slug: data.slug, + sort: data.sort, + sub_title: data.sub_title, + title: data.title, + updated_at: data.updated_at, +}); + +export const getArray = ({ data }) => { + data = data.map(user => getJson(user)); + return { data }; +}; +export const setData = data => ({ + model_id: data.model_id, + model_type: data.model_type, + join_to: data.join_to, +}) \ No newline at end of file diff --git a/src/components/Global/Modal/AppSection.vue b/src/components/Global/Modal/AppSection.vue new file mode 100644 index 0000000..0467d48 --- /dev/null +++ b/src/components/Global/Modal/AppSection.vue @@ -0,0 +1,124 @@ + + + diff --git a/src/components/Programs/Item.vue b/src/components/Programs/Item.vue index 41eabf3..4cd6c91 100644 --- a/src/components/Programs/Item.vue +++ b/src/components/Programs/Item.vue @@ -4,7 +4,9 @@ product image @@ -14,8 +16,8 @@ v-if="role === 'admin'" @click="verifyProgram(program.id)" size="large" - class="custom-btn ml-1" - height="32" + class="custom-btn" + height="35" :icon="program.verified ? 'WMi-cancel' : 'WMi-ok'" /> @@ -38,17 +40,30 @@ > + @@ -96,7 +111,7 @@ import { mapActions, mapGetters } from "vuex"; import toast from "@/utils/toast"; import { UserStorage } from "@/utils/storage"; - +import AppSectionRepository from "@/abstraction/repository/appSectionRepository"; export default { data: () => ({ role: UserStorage.getRole() ? UserStorage.getRole() : null, @@ -110,7 +125,11 @@ export default { ...mapGetters("programs", ["getProgram"]), }, methods: { - ...mapActions("programs", ["verifyProgram", "deleteProgram", "loadProgram"]), + ...mapActions("programs", [ + "verifyProgram", + "deleteProgram", + "loadProgram", + ]), removeProgram(id) { console.log("this.program.active_trainee_count", this.program.active_trainee_count); if (this.program.active_trainee_count === 0) { diff --git a/src/components/Programs/Items.vue b/src/components/Programs/Items.vue index 32696ee..4a58a88 100644 --- a/src/components/Programs/Items.vue +++ b/src/components/Programs/Items.vue @@ -59,6 +59,7 @@ + @@ -67,6 +68,7 @@ import ProgramItem from "./Item.vue"; import FiltersModal from "./Modals/FiltersModal.vue"; import ProgramDetailModal from "./Modals/Detail.vue"; import UserDetailModal from "@/components/Users/Modals/Detail.vue"; +import AppSectionModal from "@/components/Global/Modal/AppSection.vue"; import { mapGetters, mapActions, mapMutations } from "vuex"; import { UserStorage } from "@/utils/storage"; export default { @@ -75,6 +77,7 @@ export default { FiltersModal, ProgramDetailModal, UserDetailModal, + AppSectionModal, }, data: () => ({ role: UserStorage.getRole() ? UserStorage.getRole() : null, diff --git a/src/components/Workouts/Item.vue b/src/components/Workouts/Item.vue index bba0568..e08f3c3 100644 --- a/src/components/Workouts/Item.vue +++ b/src/components/Workouts/Item.vue @@ -9,7 +9,9 @@ workout image @@ -39,24 +41,16 @@
- +
@@ -85,6 +86,8 @@