diff --git a/src/App.vue b/src/App.vue
index d7848869..62786d79 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -24,7 +24,8 @@ const routeTitleI18nKeys = {
"adminlogin": ["header.operator_login"],
"guestHome": ["guest.home.title"],
"PwaDownload": ["guest.pwa.title"],
- "connectivity-issue": ["connectivity.title"]
+ "connectivity-issue": ["connectivity.title"],
+ "selfservestudio": ["admin.self_serve.title"]
};
const toReadableTitle = (value) => {
diff --git a/src/components/displays/department/moduleNavigation/DepartmentModulesDisplay.vue b/src/components/displays/department/moduleNavigation/DepartmentModulesDisplay.vue
index 2dfc659a..80452e50 100644
--- a/src/components/displays/department/moduleNavigation/DepartmentModulesDisplay.vue
+++ b/src/components/displays/department/moduleNavigation/DepartmentModulesDisplay.vue
@@ -124,6 +124,20 @@ const modules = computed(() => [
isSavingSelfServeEnabled.value = false;
}
}
+ },
+ {
+ id: 6,
+ name: 'Self-Serve Studio',
+ description: 'Configure questions, conditions, rules and tasks',
+ icon: "fas fa-project-diagram",
+ onClick: () => {
+ const departmentId = router.currentRoute.value.params.departmentId;
+ router.push(`/admin/${departmentId}/modules/self-serve/studio`);
+ },
+ onClickCount: () => {
+ this.onClick();
+ },
+ count: 0
}
/**
* {
diff --git a/src/components/displays/department/tables/SelfServeTryModal.vue b/src/components/displays/department/tables/SelfServeTryModal.vue
index 9ad58a96..0f495ff7 100644
--- a/src/components/displays/department/tables/SelfServeTryModal.vue
+++ b/src/components/displays/department/tables/SelfServeTryModal.vue
@@ -1,6 +1,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Scoped:
+ Lane #{{ scopedLaneId }}
+ Machine type {{ machineTypeName(scopedMachineTypeId) }}
+
+
+
+
+
+
+
+
+
+
+
+ | # |
+ Question |
+ If Condition |
+ Scope |
+ Actions |
+
+
+
+
+ | {{ item.order_priority }} |
+ {{ item.question }} |
+ {{ item.condition_id ? conditionName(item.condition_id) : "None" }} |
+ {{ scopeLabel(item) }} |
+
+
+
+ |
+
+
+ | No questions configured. |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | ID |
+ Name |
+ Scope |
+ Actions |
+
+
+
+
+ | {{ item.id }} |
+ {{ item.name }} |
+ {{ scopeLabel(item) }} |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
Rules
+
+
+
+
+
+ | Type |
+ Target |
+ Actions |
+
+
+
+
+ | {{ entry.type }} |
+ {{ entry.object_type === 'condition' ? conditionName(entry.object_id) : questionName(entry.object_id) }} |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | # |
+ Task |
+ Gate |
+ Scope |
+ Actions |
+
+
+
+
+ | {{ item.order_priority }} |
+ {{ item.task }} |
+ {{ taskGateLabel(item) }} |
+ {{ scopeLabel(item) }} |
+
+
+
+ |
+
+
+ | No tasks configured. |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Active source:
+ Published version #{{ activeConfig.version_id }}
+ Legacy fallback
+
+
+ Latest validation: {{ latestValidation.validation.valid ? 'valid' : 'errors found' }}
+
+
+
+
+ | ID |
+ Status |
+ Version # |
+ Published At |
+ Actions |
+
+
+
+
+ | #{{ entry.id }} |
+ {{ entry.status }} |
+ {{ entry.version_number }} |
+ {{ entry.published_at || '-' }} |
+
+
+ |
+
+
+ | No versions found. |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dashboards/departmentDashboard/modules/wash-lanes/DepartmentWashLane.vue b/src/views/dashboards/departmentDashboard/modules/wash-lanes/DepartmentWashLane.vue
index 31ef9f80..6b0379b3 100644
--- a/src/views/dashboards/departmentDashboard/modules/wash-lanes/DepartmentWashLane.vue
+++ b/src/views/dashboards/departmentDashboard/modules/wash-lanes/DepartmentWashLane.vue
@@ -29,6 +29,22 @@ const selectVehicleType = (vehicleType) => {
selectedVehicleType.value = vehicleType;
};
+const openStudio = () => {
+ const query = {
+ tab: "conditions",
+ lane_id: laneId,
+ };
+ if (lane.value?.machine_type_id) {
+ query.machine_type_id = lane.value.machine_type_id;
+ }
+
+ router.push({
+ name: "selfservestudio",
+ params: { departmentId },
+ query,
+ });
+};
+
const loadLane = async () => {
isLoading.value = true;
try {
@@ -55,6 +71,12 @@ onMounted(() => {
+
-
+
+ Open Studio
+