2020-12-02 19:46:17 +00:00
|
|
|
<template>
|
2020-12-10 17:37:02 +00:00
|
|
|
<div
|
|
|
|
|
id="home"
|
|
|
|
|
:class="[{ collapsed: collapsed }, { onmobile: isOnMobile }]"
|
|
|
|
|
>
|
|
|
|
|
<div class="demo">
|
|
|
|
|
<div class="container">
|
|
|
|
|
<router-view />
|
|
|
|
|
</div>
|
|
|
|
|
<CustomSidebar
|
|
|
|
|
:menu="menu"
|
|
|
|
|
@OnClickSidebarItem="OnClickSidebarItem"
|
|
|
|
|
@onToggleCollapse="onToggleCollapse"
|
|
|
|
|
/>
|
|
|
|
|
<div
|
|
|
|
|
v-if="isOnMobile && !collapsed"
|
|
|
|
|
class="sidebar-overlay"
|
|
|
|
|
@click="collapsed = true"
|
|
|
|
|
/>
|
|
|
|
|
<component
|
|
|
|
|
v-bind:is="page"
|
|
|
|
|
ref="component"
|
2020-12-10 11:19:30 -04:00
|
|
|
:filters="filters"
|
2020-12-10 17:37:02 +00:00
|
|
|
:id="pageId"
|
|
|
|
|
:name="pageName"
|
|
|
|
|
@onSubmitFilter="onSubmitFilter"
|
|
|
|
|
@onRemoveFilter="onRemoveFilter"
|
2020-12-11 19:36:41 +00:00
|
|
|
@onUpdatePage="onUpdatePage"
|
|
|
|
|
@onUpdateDataCase="onUpdateDataCase"
|
2020-12-10 11:19:30 -04:00
|
|
|
@onLastPage="onLastPage"
|
|
|
|
|
@onUpdateFilters="onUpdateFilters"
|
2020-12-10 17:37:02 +00:00
|
|
|
></component>
|
|
|
|
|
</div>
|
2020-12-02 19:46:17 +00:00
|
|
|
</div>
|
2020-12-10 17:37:02 +00:00
|
|
|
</template>
|
2020-12-02 19:46:17 +00:00
|
|
|
<script>
|
|
|
|
|
import CustomSidebar from "./../components/menu/CustomSidebar";
|
|
|
|
|
import MyCases from "./MyCases";
|
2020-12-02 21:28:16 +00:00
|
|
|
import MyDocuments from "./MyDocuments";
|
2020-12-07 15:59:15 +00:00
|
|
|
import Todo from "./Todo";
|
|
|
|
|
import Draft from "./Draft";
|
|
|
|
|
import Paused from "./Paused";
|
|
|
|
|
import Unassigned from "./Unassigned";
|
2020-12-03 12:39:57 +00:00
|
|
|
import BatchRouting from "./BatchRouting";
|
2020-12-07 18:52:12 +00:00
|
|
|
import CaseDetail from "./CaseDetail";
|
2020-12-04 13:33:23 +00:00
|
|
|
import XCase from "./XCase";
|
2020-12-03 15:23:23 +00:00
|
|
|
import TaskReassignments from "./TaskReassignments";
|
2020-12-07 18:52:12 +00:00
|
|
|
import AdvancedSearch from "./AdvancedSearch";
|
2020-12-02 19:46:17 +00:00
|
|
|
|
2020-12-10 17:37:02 +00:00
|
|
|
import api from "./../api/index";
|
|
|
|
|
|
2020-12-02 19:46:17 +00:00
|
|
|
export default {
|
2020-12-10 17:37:02 +00:00
|
|
|
name: "Home",
|
|
|
|
|
components: {
|
|
|
|
|
CustomSidebar,
|
|
|
|
|
MyCases,
|
|
|
|
|
AdvancedSearch,
|
|
|
|
|
MyDocuments,
|
|
|
|
|
BatchRouting,
|
|
|
|
|
TaskReassignments,
|
|
|
|
|
XCase,
|
|
|
|
|
Todo,
|
|
|
|
|
Draft,
|
|
|
|
|
Paused,
|
|
|
|
|
Unassigned,
|
|
|
|
|
CaseDetail,
|
2020-12-02 19:46:17 +00:00
|
|
|
},
|
2020-12-10 17:37:02 +00:00
|
|
|
data() {
|
|
|
|
|
return {
|
2020-12-11 19:36:41 +00:00
|
|
|
lastPage: "MyCases",
|
2020-12-10 17:37:02 +00:00
|
|
|
page: "MyCases",
|
2020-12-10 11:19:30 -04:00
|
|
|
menu: [],
|
2020-12-10 17:37:02 +00:00
|
|
|
dataCase: {},
|
|
|
|
|
hideToggle: true,
|
|
|
|
|
collapsed: false,
|
|
|
|
|
selectedTheme: "",
|
|
|
|
|
isOnMobile: false,
|
|
|
|
|
sidebarWidth: "310px",
|
|
|
|
|
pageId: null,
|
|
|
|
|
pageName: null,
|
2020-12-10 11:19:30 -04:00
|
|
|
filters: {},
|
2020-12-10 17:37:02 +00:00
|
|
|
};
|
2020-12-04 13:33:23 +00:00
|
|
|
},
|
2020-12-10 17:37:02 +00:00
|
|
|
mounted() {
|
|
|
|
|
this.onResize();
|
|
|
|
|
window.addEventListener("resize", this.onResize);
|
|
|
|
|
this.getMenu();
|
2020-12-16 18:26:40 +00:00
|
|
|
this.listenerIframe();
|
2020-12-02 19:46:17 +00:00
|
|
|
},
|
2020-12-10 17:37:02 +00:00
|
|
|
methods: {
|
2020-12-16 18:26:40 +00:00
|
|
|
/**
|
|
|
|
|
* Listener for iframes childs
|
|
|
|
|
*/
|
|
|
|
|
listenerIframe(){
|
|
|
|
|
let that = this,
|
|
|
|
|
eventMethod = window.addEventListener? "addEventListener": "attachEvent",
|
|
|
|
|
eventer = window[eventMethod],
|
|
|
|
|
messageEvent = eventMethod === "attachEvent"? "onmessage": "message";
|
|
|
|
|
|
|
|
|
|
eventer(messageEvent, function (e) {
|
|
|
|
|
if (e.data === "redirect=todo" || e.message === "redirect=todo"){
|
|
|
|
|
that.page = "todo";
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
2020-12-10 17:37:02 +00:00
|
|
|
/**
|
|
|
|
|
* Gets the menu from the server
|
|
|
|
|
*/
|
|
|
|
|
getMenu() {
|
|
|
|
|
api.menu
|
|
|
|
|
.get()
|
|
|
|
|
.then((response) => {
|
2020-12-10 11:19:30 -04:00
|
|
|
this.menu = this.mappingMenu(response.data);
|
2020-12-10 17:37:02 +00:00
|
|
|
})
|
|
|
|
|
.catch((e) => {
|
|
|
|
|
console.error(e);
|
|
|
|
|
});
|
|
|
|
|
},
|
2020-12-10 11:19:30 -04:00
|
|
|
/**
|
|
|
|
|
* Do a mapping of vue view for menus
|
|
|
|
|
* @returns array
|
|
|
|
|
*/
|
|
|
|
|
mappingMenu(data) {
|
|
|
|
|
var i,
|
|
|
|
|
j,
|
|
|
|
|
newData = data,
|
|
|
|
|
auxId,
|
|
|
|
|
viewVue = {
|
|
|
|
|
CASES_MY_CASES: "MyCases",
|
|
|
|
|
CASES_SEARCH: "advanced-search",
|
|
|
|
|
CASES_INBOX: "todo",
|
|
|
|
|
CASES_DRAFT: "draft",
|
|
|
|
|
CASES_PAUSED: "paused",
|
|
|
|
|
CASES_SELFSERVICE: "unassigned",
|
|
|
|
|
CONSOLIDATED_CASES: "batch-routing",
|
|
|
|
|
CASES_TO_REASSIGN: "task-reassignments",
|
|
|
|
|
CASES_FOLDERS: "my-documents",
|
|
|
|
|
};
|
|
|
|
|
for (i = 0; i < data.length; i += 1) {
|
|
|
|
|
auxId = data[i].id || "";
|
|
|
|
|
if (auxId !== "" && viewVue[auxId]) {
|
|
|
|
|
newData[i].id = viewVue[auxId];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return newData;
|
|
|
|
|
},
|
2020-12-10 17:37:02 +00:00
|
|
|
OnClickSidebarItem(item) {
|
2020-12-10 11:19:30 -04:00
|
|
|
if (item.item.page && item.item.page === "/advanced-search") {
|
|
|
|
|
this.page = "advanced-search";
|
|
|
|
|
this.filters = item.item.filters;
|
|
|
|
|
this.pageId = item.item.id;
|
|
|
|
|
this.pageName = item.item.title;
|
|
|
|
|
} else {
|
|
|
|
|
this.page = item.item.id || "MyCases";
|
|
|
|
|
}
|
2020-12-10 17:37:02 +00:00
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* Update page component
|
|
|
|
|
*/
|
|
|
|
|
updatePage(data, page, callback) {
|
|
|
|
|
this.dataCase = data;
|
|
|
|
|
this.page = page;
|
|
|
|
|
if (this.$refs["component"] && this.$refs["component"].update) {
|
|
|
|
|
this.$refs["component"].update(data, callback);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
onResize() {
|
|
|
|
|
if (window.innerWidth <= 767) {
|
|
|
|
|
this.isOnMobile = true;
|
|
|
|
|
this.collapsed = true;
|
|
|
|
|
} else {
|
|
|
|
|
this.isOnMobile = false;
|
|
|
|
|
this.collapsed = false;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* Toggle sidebar handler
|
|
|
|
|
* @param {Boolean} collapsed - if sidebar is collapsed true|false
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
onToggleCollapse(collapsed) {
|
|
|
|
|
this.collapsed = collapsed;
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* Handle if filter was submited
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
onSubmitFilter(data) {
|
|
|
|
|
this.addMenuSearchChild(data);
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* Add a child submenu to search menu
|
|
|
|
|
* @param {object} data - cnotains theinfo to generate a menu
|
|
|
|
|
*/
|
|
|
|
|
addMenuSearchChild(data) {
|
|
|
|
|
let newMenu = this.menu;
|
|
|
|
|
let advSearch = _.find(newMenu, function(o) {
|
2020-12-10 11:19:30 -04:00
|
|
|
return o.id === "advanced-search";
|
2020-12-10 17:37:02 +00:00
|
|
|
});
|
2020-12-10 11:19:30 -04:00
|
|
|
if (advSearch) {
|
|
|
|
|
const index = advSearch.child.findIndex(function(o) {
|
|
|
|
|
return o.id === data.id;
|
|
|
|
|
});
|
|
|
|
|
if (index !== -1) {
|
|
|
|
|
advSearch.child[index].filters = data.filters;
|
|
|
|
|
} else {
|
|
|
|
|
if (!advSearch.hasOwnProperty("child")) {
|
|
|
|
|
advSearch["child"] = [];
|
|
|
|
|
}
|
|
|
|
|
advSearch.child.push({
|
|
|
|
|
filters: data.filters,
|
|
|
|
|
href: "/advanced-search/" + data.id,
|
|
|
|
|
title: data.name,
|
|
|
|
|
icon: "fas fa-circle",
|
|
|
|
|
id: data.id,
|
|
|
|
|
page: "/advanced-search",
|
|
|
|
|
});
|
|
|
|
|
}
|
2020-12-10 17:37:02 +00:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
onRemoveFilter(id) {
|
|
|
|
|
this.removeMenuSearchChild(id);
|
2020-12-10 11:19:30 -04:00
|
|
|
this.resetSettings();
|
|
|
|
|
},
|
|
|
|
|
resetSettings() {
|
2020-12-10 17:37:02 +00:00
|
|
|
this.page = "advanced-search";
|
|
|
|
|
this.pageId = null;
|
|
|
|
|
this.pageName = null;
|
2020-12-10 11:19:30 -04:00
|
|
|
this.filters = {};
|
2020-12-10 17:37:02 +00:00
|
|
|
},
|
2020-12-11 19:36:41 +00:00
|
|
|
onUpdatePage(page) {
|
|
|
|
|
this.lastPage = this.page;
|
|
|
|
|
this.page = page;
|
|
|
|
|
},
|
|
|
|
|
onUpdateDataCase(data) {
|
|
|
|
|
this.dataCase = data;
|
|
|
|
|
},
|
2020-12-10 11:19:30 -04:00
|
|
|
onLastPage() {
|
2020-12-11 19:36:41 +00:00
|
|
|
this.page = this.lastPage;
|
2020-12-10 11:19:30 -04:00
|
|
|
this.lastPage = "MyCases";
|
2020-12-11 19:36:41 +00:00
|
|
|
},
|
2020-12-10 17:37:02 +00:00
|
|
|
removeMenuSearchChild(id) {
|
|
|
|
|
let newMenu = this.menu;
|
|
|
|
|
let advSearch = _.find(newMenu, function(o) {
|
2020-12-10 11:19:30 -04:00
|
|
|
return o.id === "advanced-search";
|
2020-12-10 17:37:02 +00:00
|
|
|
});
|
2020-12-10 11:19:30 -04:00
|
|
|
if (advSearch) {
|
|
|
|
|
const index = advSearch.child.findIndex(function(o) {
|
|
|
|
|
return o.id === id;
|
|
|
|
|
});
|
|
|
|
|
if (index !== -1) advSearch.child.splice(index, 1);
|
|
|
|
|
}
|
2020-12-10 17:37:02 +00:00
|
|
|
},
|
2020-12-10 11:19:30 -04:00
|
|
|
onUpdateFilters(filters) {
|
|
|
|
|
this.filters = filters;
|
|
|
|
|
}
|
2020-12-02 19:46:17 +00:00
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
#home {
|
2020-12-10 17:37:02 +00:00
|
|
|
padding-left: 310px;
|
|
|
|
|
transition: 0.3s;
|
2020-12-02 19:46:17 +00:00
|
|
|
}
|
|
|
|
|
#home.collapsed {
|
2020-12-10 17:37:02 +00:00
|
|
|
padding-left: 50px;
|
2020-12-02 19:46:17 +00:00
|
|
|
}
|
|
|
|
|
#home.onmobile {
|
2020-12-10 17:37:02 +00:00
|
|
|
padding-left: 50px;
|
2020-12-02 19:46:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.container {
|
2020-12-10 17:37:02 +00:00
|
|
|
max-width: 1500px;
|
2020-12-02 19:46:17 +00:00
|
|
|
}
|
2020-12-10 17:37:02 +00:00
|
|
|
</style>
|