From 509b55901875825b48db6e2a89acee962d781876 Mon Sep 17 00:00:00 2001 From: Kyle Date: Fri, 17 May 2024 14:25:33 -0700 Subject: [PATCH 01/32] add task config form --- src/components/tasks/RegisterTask.vue | 79 +++++++++++++++++++-------- 1 file changed, 56 insertions(+), 23 deletions(-) diff --git a/src/components/tasks/RegisterTask.vue b/src/components/tasks/RegisterTask.vue index 4330db13e..09764c2a4 100644 --- a/src/components/tasks/RegisterTask.vue +++ b/src/components/tasks/RegisterTask.vue @@ -47,6 +47,20 @@ {{ t$.taskId.required.$message.replace('Value', 'Task ID') }} + +
+
+ + +
+
+ +
+
+ + +
+
@@ -67,37 +81,47 @@
- -
-
- - -
-
- -
-
- - -
-
-

Parameters / Configuration

+
+

Configure Task Parameters

+

Create the configurable parameters for variants of this task.

+
+
+ -
-
- + - + - + - + - + +
+
+
+ +
+

Configure URL Parameters

+

+ These parameters will be appended to the task URL to generate the variant URL for this task. +

+
+
+ + + + + - + + + + + +
@@ -305,6 +329,7 @@ const taskFields = reactive({ taskId: '', coverImage: '', description: '', + configuration: {}, // Based on type of account? external: true, }); @@ -313,8 +338,15 @@ const taskRules = { taskName: { required }, taskURL: { required: requiredIf(isExternalTask.value), url }, taskId: { required }, + configuration: { required }, }; +const taskConfig = ref({ + name: '', + value: '', + type: 'String', +}); + const taskParams = ref([ { name: '', @@ -380,6 +412,7 @@ const handleNewTaskSubmit = async (isFormValid) => { taskName: taskFields.taskName, taskDescription: taskFields.description, taskImage: taskFields.coverImage, + taskConfig: taskFields.configuration, variantParams: convertedParams, demoData: { task: isDemoData, variant: isDemoData }, testData: { task: isTestData, variant: isTestData }, From b4d07729597c38ace22d16dc6a1ad844e3984dda Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 20 May 2024 10:28:40 -0700 Subject: [PATCH 02/32] format --- src/components/tasks/RegisterTask.vue | 40 +++++++++++++++++++-------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/src/components/tasks/RegisterTask.vue b/src/components/tasks/RegisterTask.vue index 09764c2a4..fa7ab9972 100644 --- a/src/components/tasks/RegisterTask.vue +++ b/src/components/tasks/RegisterTask.vue @@ -84,9 +84,9 @@
-

Configure Task Parameters

-

Create the configurable parameters for variants of this task.

-
+

Configure Game Parameters

+

Create the configurable game parameters for variants of this task.

+
@@ -143,6 +143,10 @@
+
+ + +
@@ -271,6 +275,15 @@ value="isExternalVariant" /> +
+ + +
@@ -329,7 +342,7 @@ const taskFields = reactive({ taskId: '', coverImage: '', description: '', - configuration: {}, + gameConfig: {}, // Based on type of account? external: true, }); @@ -341,7 +354,7 @@ const taskRules = { configuration: { required }, }; -const taskConfig = ref({ +const gameConfig = ref({ name: '', value: '', type: 'String', @@ -400,22 +413,25 @@ const handleNewTaskSubmit = async (isFormValid) => { submitted.value = true; const isDemoData = !!taskCheckboxData.value?.find((item) => item === 'isDemoTask'); const isTestData = !!taskCheckboxData.value?.find((item) => item === 'isTestTask'); + const isRegisteredTask = !!taskCheckboxData.value?.find((item) => item === 'isRegisteredTask'); if (!isFormValid) { return; } - const convertedParams = convertParamsToObj(taskParams); + const convertedTaskParams = convertParamsToObj(taskParams); + const convertedGameConfig = convertParamsToObj(gameConfig); let newTaskObject = reactive({ taskId: taskFields.taskId, taskName: taskFields.taskName, taskDescription: taskFields.description, taskImage: taskFields.coverImage, - taskConfig: taskFields.configuration, - variantParams: convertedParams, + gameConfig: convertedGameConfig, + variantParams: convertedTaskParams, demoData: { task: isDemoData, variant: isDemoData }, testData: { task: isTestData, variant: isTestData }, + isRegisteredTask: isRegisteredTask, }); if (isExternalTask.value) { @@ -436,27 +452,29 @@ const handleVariantSubmit = async (isFormValid) => { const isDemoData = !!variantCheckboxData.value?.find((item) => item === 'isDemoVariant'); const isTestData = !!variantCheckboxData.value?.find((item) => item === 'isTestVariant'); const isExternalVariant = !!variantCheckboxData.value?.find((item) => item === 'isExternalVariant'); + const isRegisteredVariant = !!variantCheckboxData.value?.find((item) => item === 'isRegisteredVariant'); if (!isFormValid) { return; } - const convertedParams = convertParamsToObj(variantParams); + const convertedVariantParams = convertParamsToObj(variantParams); const newVariantObject = reactive({ taskId: variantFields.selectedGame.id, taskDescription: variantFields.selectedGame.description, taskImage: variantFields.selectedGame.image, variantName: variantFields.variantName, - variantParams: convertedParams, + variantParams: convertedVariantParams, // TODO: Check if this is the valid way to see demo/test data values demoData: { task: !!variantFields.selectedGame?.demoData, variant: isDemoData }, testData: { task: !!variantFields.selectedGame?.testData, variant: isTestData }, + isRegisteredVariant: isRegisteredVariant, }); if (isExternalVariant) { newVariantObject.variantParams = { - ...convertedParams, + ...convertedVariantParams, variantURL: buildTaskURL(variantFields.selectedGame?.taskURL || '', variantParams), }; } From 7cb4472d68a6d9454f50ac8dcead0d6ffb9dbbc3 Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 20 May 2024 11:45:52 -0700 Subject: [PATCH 03/32] refactor test, demo, registered flags for tasks and variants --- src/components/tasks/RegisterTask.vue | 36 ++++++++++++++++----------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/components/tasks/RegisterTask.vue b/src/components/tasks/RegisterTask.vue index fa7ab9972..4b9db4715 100644 --- a/src/components/tasks/RegisterTask.vue +++ b/src/components/tasks/RegisterTask.vue @@ -98,7 +98,7 @@ - +
@@ -126,7 +126,10 @@
-
+
+ +
+
@@ -312,6 +315,7 @@ const taskCheckboxData = ref(); const variantCheckboxData = ref(); const authStore = useAuthStore(); const { roarfirekit } = storeToRefs(authStore); + const isExternalTask = computed(() => !!taskCheckboxData.value?.find((item) => item === 'isExternalTask')); let unsubscribe; @@ -344,21 +348,22 @@ const taskFields = reactive({ description: '', gameConfig: {}, // Based on type of account? - external: true, + external: isExternalTask, }); const taskRules = { taskName: { required }, taskURL: { required: requiredIf(isExternalTask.value), url }, taskId: { required }, - configuration: { required }, }; -const gameConfig = ref({ - name: '', - value: '', - type: 'String', -}); +const gameConfig = ref([ + { + name: '', + value: '', + type: 'String', + }, +]); const taskParams = ref([ { @@ -413,14 +418,15 @@ const handleNewTaskSubmit = async (isFormValid) => { submitted.value = true; const isDemoData = !!taskCheckboxData.value?.find((item) => item === 'isDemoTask'); const isTestData = !!taskCheckboxData.value?.find((item) => item === 'isTestTask'); + const isExternalTask = !!taskCheckboxData.value?.find((item) => item === 'isExternalTask'); const isRegisteredTask = !!taskCheckboxData.value?.find((item) => item === 'isRegisteredTask'); if (!isFormValid) { return; } - const convertedTaskParams = convertParamsToObj(taskParams); const convertedGameConfig = convertParamsToObj(gameConfig); + const convertedTaskParams = isExternalTask ? convertParamsToObj(taskParams) : null; let newTaskObject = reactive({ taskId: taskFields.taskId, @@ -428,10 +434,10 @@ const handleNewTaskSubmit = async (isFormValid) => { taskDescription: taskFields.description, taskImage: taskFields.coverImage, gameConfig: convertedGameConfig, - variantParams: convertedTaskParams, - demoData: { task: isDemoData, variant: isDemoData }, - testData: { task: isTestData, variant: isTestData }, - isRegisteredTask: isRegisteredTask, + taskParams: convertedTaskParams, + demoData: isDemoData, + testData: isTestData, + registered: isRegisteredTask, }); if (isExternalTask.value) { @@ -469,7 +475,7 @@ const handleVariantSubmit = async (isFormValid) => { // TODO: Check if this is the valid way to see demo/test data values demoData: { task: !!variantFields.selectedGame?.demoData, variant: isDemoData }, testData: { task: !!variantFields.selectedGame?.testData, variant: isTestData }, - isRegisteredVariant: isRegisteredVariant, + registered: isRegisteredVariant, }); if (isExternalVariant) { From 81322048d6e9f4056dba0d35a7de2806de239c9a Mon Sep 17 00:00:00 2001 From: Kyle Date: Tue, 21 May 2024 13:42:01 -0700 Subject: [PATCH 04/32] build out initial components for managing tasks and variants through the dashboard --- .../{RegisterTask.vue => ManageTasks.vue} | 217 +++++++++++++----- src/helpers/query/tasks.js | 2 +- .../{RegisterGame.vue => ManageTasks.vue} | 6 +- src/router/index.js | 8 +- src/router/sidebarActions.js | 4 +- 5 files changed, 170 insertions(+), 67 deletions(-) rename src/components/tasks/{RegisterTask.vue => ManageTasks.vue} (73%) rename src/pages/{RegisterGame.vue => ManageTasks.vue} (85%) diff --git a/src/components/tasks/RegisterTask.vue b/src/components/tasks/ManageTasks.vue similarity index 73% rename from src/components/tasks/RegisterTask.vue rename to src/components/tasks/ManageTasks.vue index 4b9db4715..9a0f1c1e5 100644 --- a/src/components/tasks/RegisterTask.vue +++ b/src/components/tasks/ManageTasks.vue @@ -1,9 +1,9 @@ diff --git a/src/pages/ManageTasks.vue b/src/pages/ManageTasksVariants.vue similarity index 77% rename from src/pages/ManageTasks.vue rename to src/pages/ManageTasksVariants.vue index c33e83d1e..1ff4d37da 100644 --- a/src/pages/ManageTasks.vue +++ b/src/pages/ManageTasksVariants.vue @@ -9,14 +9,24 @@
Manage tasks and variants.
- + + + + + + + + +
diff --git a/src/components/tasks/ManageVariants.vue b/src/components/tasks/ManageVariants.vue index 9ac31b620..ce46d9d50 100644 --- a/src/components/tasks/ManageVariants.vue +++ b/src/components/tasks/ManageVariants.vue @@ -85,9 +85,8 @@ >
-
- -
+ +
@@ -117,14 +116,11 @@ id="inputParamValue" v-model="variantParams[param.name]" placeholder="Set game parameter to desired value" - button-layout="vertical" - show-buttons - style="width: 3em" />
- +
@@ -176,15 +172,169 @@ -
- + +
+ + +
+ +
+
+ +
+
+
+ + + + + + Delete +
+
+
+
+
+ + + + + + + Delete +
+
+ +
+ +
+ +
+
+ + + + + + Delete +
+
+
+
+ + + + + + Delete +
+
+ +
+
+ + Update Variant
diff --git a/src/helpers/query/tasks.js b/src/helpers/query/tasks.js index 23485524f..66ac6fdf3 100644 --- a/src/helpers/query/tasks.js +++ b/src/helpers/query/tasks.js @@ -5,6 +5,7 @@ import { convertValues, getAxiosInstance, mapFields } from './utils'; export const getTasksRequestBody = ({ registered = true, + allData = false, orderBy, aggregationQuery, pageLimit, @@ -24,9 +25,11 @@ export const getTasksRequestBody = ({ requestBody.structuredQuery.offset = page * pageLimit; } - requestBody.structuredQuery.select = { - fields: select.map((field) => ({ fieldPath: field })), - }; + if (!allData) { + requestBody.structuredQuery.select = { + fields: select.map((field) => ({ fieldPath: field })), + }; + } } requestBody.structuredQuery.from = [ @@ -63,13 +66,14 @@ export const getTasksRequestBody = ({ return requestBody; }; -export const taskFetcher = async (registered = true, select = ['name', 'gameConfig', 'testData', 'demoData']) => { +export const taskFetcher = async (registered = true, allData = false, select = ['name', 'testData', 'demoData']) => { const axiosInstance = getAxiosInstance('app'); const requestBody = getTasksRequestBody({ registered, + allData, aggregationQuery: false, paginate: false, - select: select, + select: allData ? '' : select, }); return axiosInstance.post(':runQuery', requestBody).then(({ data }) => mapFields(data)); diff --git a/src/pages/ManageTasksVariants.vue b/src/pages/ManageTasksVariants.vue index 1ff4d37da..10e2b4c4d 100644 --- a/src/pages/ManageTasksVariants.vue +++ b/src/pages/ManageTasksVariants.vue @@ -26,7 +26,6 @@ diff --git a/src/components/tasks/ManageVariants.vue b/src/components/tasks/ManageVariants.vue index 69e465e9f..1b34b840b 100644 --- a/src/components/tasks/ManageVariants.vue +++ b/src/components/tasks/ManageVariants.vue @@ -1,85 +1,92 @@