@@ -186,6 +187,7 @@ import VueListView from "../../components/dataViews/vueListView/VueListView.vue"
import defaultMixins from "./defaultMixins";
import Ellipsis from '../../components/utils/ellipsis.vue';
import ModalReassignCase from '../modal/ModalReassignCase.vue';
+import { Event } from 'vue-tables-2';
export default {
name: "Paused",
@@ -203,10 +205,15 @@ export default {
VueListView,
ModalReassignCase,
},
- props: ["defaultOption", "filters"],
+ props: ["defaultOption", "settings"],
data() {
let that = this;
return {
+ columMap: {
+ case_number: "APP_NUMBER",
+ case_title: "DEL_TITLE",
+ process_name: "PRO_TITLE"
+ },
newCase: {
title: this.$i18n.t("ID_NEW_CASE"),
class: "btn-success",
@@ -214,17 +221,35 @@ export default {
this.$refs["newRequest"].show();
},
},
- columns: [
- "detail",
- "case_number",
- "case_title",
- "process_name",
- "task",
- "due_date",
- "delegation_date",
- "priority",
- "actions",
- ],
+ // columns: [
+ // "detail",
+ // "case_number",
+ // "case_title",
+ // "process_name",
+ // "task",
+ // "due_date",
+ // "delegation_date",
+ // "priority",
+ // "actions",
+ // ],
+ filters:
+ this.settings && this.settings.filters
+ ? this.settings.filters
+ : {},
+ columns:
+ this.settings && this.settings.columns
+ ? this.settings.columns
+ : [
+ "detail",
+ "case_number",
+ "case_title",
+ "process_name",
+ "task",
+ "due_date",
+ "delegation_date",
+ "priority",
+ "actions"
+ ],
tableData: [],
options: {
filterable: false,
@@ -256,6 +281,8 @@ export default {
selectAllMode: "page",
programmatic: false,
},
+ sortable: ['case_number'],
+ orderBy: this.settings && this.settings.orderBy ? this.settings.orderBy: {},
requestFunction(data) {
return this.$parent.$parent.getCasesForVueTable(data);
},
@@ -291,10 +318,21 @@ export default {
this.initFilters();
},
mounted() {
+ let that = this;
// force to open case
this.openDefaultCase();
+ Event.$on('vue-tables.paused.sorted', function (data) {
+ that.$emit("updateUserSettings", "orderBy", data);
+ });
+ },
+ watch: {
+ columns: function (val) {
+ this.$emit("updateUserSettings", "columns", val);
+ },
+ filters: function (val) {
+ this.$emit("updateUserSettings", "filters", val);
+ },
},
- watch: {},
computed: {
/**
* Build our ProcessMaker apiClient
@@ -386,7 +424,8 @@ export default {
paged,
limit = data.limit,
start = data.page === 1 ? 0 : limit * (data.page - 1),
- filters = {};
+ filters = {},
+ sort = "";
paged = start + "," + limit;
filters = {
@@ -398,6 +437,10 @@ export default {
filters[item.filterVar] = item.value;
}
});
+ sort = that.prepareSortString(data);
+ if (sort) {
+ filters["sort"] = sort;
+ }
return new Promise((resolutionFunc, rejectionFunc) => {
api.cases
.paused(filters)
@@ -413,6 +456,18 @@ export default {
});
});
},
+ /**
+ * Prepare sort string to be sended in the service
+ * @param {object} data
+ * @returns {string}
+ */
+ prepareSortString(data){
+ let sort = "";
+ if (data.orderBy && this.columMap[data.orderBy]) {
+ sort = `${this.columMap[data.orderBy]},${data.ascending === 1 ? "ASC": "DESC"}`;
+ }
+ return sort;
+ },
/**
* Format Response API TODO to grid todo and columns
*/
@@ -489,7 +544,7 @@ export default {
},
onRemoveFilter(data) {},
onUpdateFilters(data) {
- this.$emit("onUpdateFilters", data.params);
+ this.filters = data.params;
if (data.refresh) {
this.$nextTick(() => {
if (this.typeView === "GRID") {
diff --git a/resources/assets/js/home/Paused/defaultMixins.js b/resources/assets/js/home/Paused/defaultMixins.js
index 70ed7e29c..d582a2165 100644
--- a/resources/assets/js/home/Paused/defaultMixins.js
+++ b/resources/assets/js/home/Paused/defaultMixins.js
@@ -86,9 +86,9 @@ export default {
};
_.forIn(this.filters, function (item, key) {
- if (item.value && item.value != "") {
- filters[item.filterVar] = item.value;
- }
+ if(filters && item.value) {
+ filters[item.filterVar] = item.value;
+ }
});
return new Promise((resolutionFunc, rejectionFunc) => {
api.cases
diff --git a/resources/assets/js/home/Unassigned/Unassigned.vue b/resources/assets/js/home/Unassigned/Unassigned.vue
index 32a6692f4..708dc3915 100644
--- a/resources/assets/js/home/Unassigned/Unassigned.vue
+++ b/resources/assets/js/home/Unassigned/Unassigned.vue
@@ -17,6 +17,7 @@
ref="vueTable"
@row-click="onRowClick"
:key="random"
+ name="unassigned"
>
@@ -181,6 +182,7 @@ import VueCardView from "../../components/dataViews/vueCardView/VueCardView.vue"
import VueListView from "../../components/dataViews/vueListView/VueListView.vue";
import defaultMixins from "./defaultMixins";
import ModalPauseCase from '../modal/ModalPauseCase.vue';
+import { Event } from 'vue-tables-2';
export default {
name: "Unassigned",
@@ -198,10 +200,15 @@ export default {
VueListView,
ModalPauseCase,
},
- props: ["defaultOption", "filters"],
+ props: ["defaultOption", "settings"],
data() {
let that = this;
return {
+ columMap: {
+ case_number: "APP_NUMBER",
+ case_title: "DEL_TITLE",
+ process_name: "PRO_TITLE"
+ },
newCase: {
title: this.$i18n.t("ID_NEW_CASE"),
class: "btn-success",
@@ -209,17 +216,24 @@ export default {
this.$refs["newRequest"].show();
},
},
- columns: [
- "detail",
- "case_number",
- "case_title",
- "process_name",
- "task",
- "due_date",
- "delegation_date",
- "priority",
- "actions",
- ],
+ filters:
+ this.settings && this.settings.filters
+ ? this.settings.filters
+ : {},
+ columns:
+ this.settings && this.settings.columns
+ ? this.settings.columns
+ : [
+ "detail",
+ "case_number",
+ "case_title",
+ "process_name",
+ "task",
+ "due_date",
+ "delegation_date",
+ "priority",
+ "actions"
+ ],
options: {
filterable: false,
headings: {
@@ -250,6 +264,8 @@ export default {
selectAllMode: "page",
programmatic: false,
},
+ sortable: ['case_number'],
+ orderBy: this.settings && this.settings.orderBy ? this.settings.orderBy: {},
requestFunction(data) {
return this.$parent.$parent.getCasesForVueTable(data);
},
@@ -282,9 +298,21 @@ export default {
};
},
mounted() {
+ let that = this;
this.initFilters();
+ // define sort event
+ Event.$on('vue-tables.unassigned.sorted', function (data) {
+ that.$emit("updateUserSettings", "orderBy", data);
+ });
+ },
+ watch: {
+ columns: function (val) {
+ this.$emit("updateUserSettings", "columns", val);
+ },
+ filters: function (val) {
+ this.$emit("updateUserSettings", "filters", val);
+ },
},
- watch: {},
computed: {
/**
* Build our ProcessMaker apiClient
@@ -350,7 +378,8 @@ export default {
paged,
limit = data.limit,
start = data.page === 1 ? 0 : limit * (data.page - 1),
- filters = {};
+ filters = {},
+ sort = "";
paged = start + "," + limit;
filters = {
@@ -362,6 +391,10 @@ export default {
filters[item.filterVar] = item.value;
}
});
+ sort = that.prepareSortString(data);
+ if (sort) {
+ filters["sort"] = sort;
+ }
return new Promise((resolutionFunc, rejectionFunc) => {
api.cases
.unassigned(filters)
@@ -377,6 +410,18 @@ export default {
});
});
},
+ /**
+ * Prepare sort string to be sended in the service
+ * @param {object} data
+ * @returns {string}
+ */
+ prepareSortString(data){
+ let sort = "";
+ if (data.orderBy && this.columMap[data.orderBy]) {
+ sort = `${this.columMap[data.orderBy]},${data.ascending === 1 ? "ASC": "DESC"}`;
+ }
+ return sort;
+ },
/**
* Format Response API TODO to grid todo and columns
*/
@@ -458,7 +503,7 @@ export default {
onRemoveFilter(data) {},
onUpdateFilters(data) {
if (data.params) {
- this.$emit("onUpdateFilters", data.params);
+ this.filters = data.params;
}
if (data.refresh) {
this.$nextTick(() => {
diff --git a/resources/assets/js/home/Unassigned/defaultMixins.js b/resources/assets/js/home/Unassigned/defaultMixins.js
index 50292a00f..0c29c1abe 100644
--- a/resources/assets/js/home/Unassigned/defaultMixins.js
+++ b/resources/assets/js/home/Unassigned/defaultMixins.js
@@ -86,7 +86,9 @@ export default {
};
_.forIn(this.filters, function (item, key) {
- filters[item.filterVar] = item.value;
+ if(filters && item.value) {
+ filters[item.filterVar] = item.value;
+ }
});
return new Promise((resolutionFunc, rejectionFunc) => {
api.cases