diff --git a/src/abstraction/repository/sportCategoriesRepository.js b/src/abstraction/repository/sportCategoriesRepository.js
index cb7013e..efe63d6 100644
--- a/src/abstraction/repository/sportCategoriesRepository.js
+++ b/src/abstraction/repository/sportCategoriesRepository.js
@@ -8,4 +8,4 @@ export default class SportCategoriesRepository {
return getArray(response.data);
}
}
-}
+}
\ No newline at end of file
diff --git a/src/abstraction/repository/workoutRepository.js b/src/abstraction/repository/workoutRepository.js
index 7e08b88..c26b3bb 100644
--- a/src/abstraction/repository/workoutRepository.js
+++ b/src/abstraction/repository/workoutRepository.js
@@ -1,10 +1,22 @@
import axios from "axios";
import url from "@/router/url";
-import { setData } from "../resources/workoutResource.js";
+import { setData, getJson, getArray } from "../resources/workoutResource.js";
export default class WorkoutRepository {
+ async index() {
+ let response = await axios.get(url("indexWorkout"));
+ if (response.status === 200) {
+ return getArray(response.data);
+ }
+ }
async store(data) {
let json = setData(data);
let response = await axios.post(url("storeWorkout"), json);
- console.log('response', response);
+ console.log('kldsbhakjbg', response.data);
+ if (response.status === 201) {
+ return getJson(response.data);
+ }
+ }
+ async delete(workoutId) {
+ await axios.delete(url("destroyWorkout", { workout: workoutId }));
}
}
diff --git a/src/abstraction/resources/workoutResource.js b/src/abstraction/resources/workoutResource.js
index cc87dfb..0396846 100644
--- a/src/abstraction/resources/workoutResource.js
+++ b/src/abstraction/resources/workoutResource.js
@@ -1,9 +1,25 @@
import { objectToFormData } from "@/utils/objectToFormData";
+export const getJson = (data) => ({
+ id: data.id,
+ local_name: data.local_name,
+ name: data.name,
+ description: data.description,
+ suggestion_default: {
+ suggested_per_ste: data.suggestion_default.suggested_per_set,
+ suggested_set: data.suggestion_default.suggested_set,
+ suggested_time: data.suggestion_default.suggested_time,
+ },
+ tags: data.tags,
+ thumbnail: data.thumbnail,
+ title: data.title,
+ video: data.video,
+});
export const setData = (data, isUpdate = false) => {
let formData = {
workout_category_id: data.workout_category_id,
name: data.name,
local_name: data.local_name,
+ title: data.title,
description: data.description,
video: data.video,
suggested_per_set: data.suggested_per_set,
@@ -16,4 +32,9 @@ export const setData = (data, isUpdate = false) => {
formData["_method"] = "put";
}
return objectToFormData(formData);
-};
\ No newline at end of file
+};
+export const getArray = ({ data }) => {
+
+ data = data.map((workout) => getJson(workout));
+ return { data };
+};
diff --git a/src/components/AddWorkout/Main.vue b/src/components/AddWorkout/Main.vue
index 8c2cf91..dff3cc0 100644
--- a/src/components/AddWorkout/Main.vue
+++ b/src/components/AddWorkout/Main.vue
@@ -31,6 +31,7 @@
item-value="id"
label="workout category"
:items="getSportCategories"
+ v-model="form.sport_category_id"
@change="changeSportCategories"
>
@@ -122,18 +123,22 @@
-
+ persistent-hint
+ small-chips
+ dark
+ >
+
+ {{
+ item
+ }}
+
+
@@ -169,6 +174,7 @@ export default {
ImageCropper,
},
data: () => ({
+ search: null,
form: {
get() {
return this.value;
@@ -182,16 +188,21 @@ export default {
...mapGetters("sportCategories", ["getSportCategories"]),
...mapGetters("workoutCategories", ["getWorkoutCategories"]),
},
+ watch: {
+ "form.name"(val) {
+ this.form.local_name = val;
+ },
+ },
methods: {
...mapActions("workouts", ["addWorkout"]),
...mapActions("workoutCategories", ["loadWorkoutCategories"]),
...mapActions("sportCategories", ["loadSportCategories"]),
async add() {
+ console.log(this.form);
this.addWorkout(this.form);
},
changeSportCategories() {
- console.log("change");
- this.loadWorkoutCategories();
+ this.loadWorkoutCategories(this.form.sport_category_id);
},
},
created() {
@@ -220,4 +231,9 @@ export default {
.add__workout__picture--icon {
font-size: 40px;
}
+
+
\ No newline at end of file
diff --git a/src/components/Global/Input/ImageCropper.vue b/src/components/Global/Input/ImageCropper.vue
index 20d62cd..8de6db6 100644
--- a/src/components/Global/Input/ImageCropper.vue
+++ b/src/components/Global/Input/ImageCropper.vue
@@ -11,12 +11,32 @@
@@ -42,12 +53,16 @@
\ No newline at end of file
diff --git a/src/components/Workouts/Main.vue b/src/components/Workouts/Main.vue
index 2f960a6..f1d14a6 100644
--- a/src/components/Workouts/Main.vue
+++ b/src/components/Workouts/Main.vue
@@ -37,7 +37,7 @@
cols="12"
md="6"
class="mb-3"
- v-for="workout in workouts"
+ v-for="workout in getWorkouts"
:key="workout.id"
>
@@ -49,71 +49,23 @@
\ No newline at end of file
diff --git a/src/router/url.js b/src/router/url.js
index 760cb91..baaa020 100644
--- a/src/router/url.js
+++ b/src/router/url.js
@@ -5,10 +5,12 @@ const urls = {
register: "auth/register",
resetPassword: "auth/forget-password",
logout: "auth/logout",
- indexProgram: 'courses',
- indexSportCategories: 'admin/sport-categories',
- indexWorkoutCategories: 'admin/workout-categories',
- storeWorkout: "admin/workouts"
+ indexProgram: "courses",
+ indexSportCategories: "admin/sport-categories",
+ indexWorkoutCategories: "admin/workout-categories",
+ storeWorkout: "admin/workouts",
+ indexWorkout: "admin/workouts",
+ destroyWorkout: "admin/workouts/:workout",
};
export default urlGenerator(urls);
diff --git a/src/store/modules/workoutCategories.js/actions.js b/src/store/modules/workoutCategories.js/actions.js
index ad774cb..a263d0c 100644
--- a/src/store/modules/workoutCategories.js/actions.js
+++ b/src/store/modules/workoutCategories.js/actions.js
@@ -1,9 +1,8 @@
import WorkoutCategoriesRepository from "@/abstraction/repository/workoutCategoriesRepository";
export default {
- async loadWorkoutCategories({ commit }) {
- let data = { sorts: 'fasdfas' }
+ async loadWorkoutCategories({ commit }, id) {
let repository = new WorkoutCategoriesRepository();
- const resource = await repository.index(data);
+ const resource = await repository.index({filters:{sport_category_id: id}});
commit("SET_WORKOUT_CATEGORIES", resource.data);
}
};
diff --git a/src/store/modules/workouts/actions.js b/src/store/modules/workouts/actions.js
index 8edc0db..0ef8bc2 100644
--- a/src/store/modules/workouts/actions.js
+++ b/src/store/modules/workouts/actions.js
@@ -1,9 +1,19 @@
import workoutRepository from "@/abstraction/repository/workoutRepository";
export default {
+ async loadWorkouts({ commit }) {
+ let repository = new workoutRepository();
+ const resource = await repository.index();
+ commit("SET_WORKOUT", resource.data);
+ // commit("SET_PAGINATION", resource.pagination);
+ },
async addWorkout({ commit }, data) {
- console.log('data', data);
let repository = new workoutRepository();
const resource = await repository.store(data);
- commit("SET_WORKOUTS", resource.data);
+ commit("ADD_WORKOUT", resource.data);
+ },
+ async deleteWorkout({ commit }, workoutId) {
+ let repository = new workoutRepository();
+ await repository.delete(workoutId);
+ commit('DELETE_WORKOUT', workoutId);
}
};
diff --git a/src/store/modules/workouts/getters.js b/src/store/modules/workouts/getters.js
index e69de29..d399ec4 100644
--- a/src/store/modules/workouts/getters.js
+++ b/src/store/modules/workouts/getters.js
@@ -0,0 +1,3 @@
+export default {
+ getWorkouts: state => state.workouts
+}
\ No newline at end of file
diff --git a/src/store/modules/workouts/mutations.js b/src/store/modules/workouts/mutations.js
index fc05ec3..5b9aa6a 100644
--- a/src/store/modules/workouts/mutations.js
+++ b/src/store/modules/workouts/mutations.js
@@ -1,7 +1,13 @@
import Vue from "vue";
export default {
- SET_WORKOUTS(state, data) {
- Vue.set(state, "workout", data);
+ SET_WORKOUT(state, data) {
+ Vue.set(state, "workouts", data);
+ },
+ ADD_WORKOUT(state, data) {
+ state.workouts.push(data);
+ },
+ DELETE_WORKOUT(state, workoutId) {
+ const index = state.workouts.findIndex((x) => x.id === workoutId);
+ state.workouts.splice(index, 1);
},
};
-
\ No newline at end of file