This commit is contained in:
2020-12-08 19:43:00 +00:00
parent 1ffd008086
commit 012112f5b3
2 changed files with 104 additions and 203 deletions

View File

@@ -16,7 +16,7 @@
:showSelect="rights.change"
:metaView="metaView"
v-on:selection-change="handleSelected"
data-cy="insideUsersTable"
data-cy="usersTable"
>
</gz-data-table>
</div>

View File

@@ -1,154 +1,67 @@
<template>
<div>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-data-table
v-model="selected"
:headers="headers"
:items="obj"
class="elevation-1"
:disable-pagination="true"
:disable-filtering="true"
hide-default-footer
@click:row="rowClick"
:sort-by="['name']"
show-select
:header-props="{ sortByText: $ay.t('Sort') }"
<gz-report-selector ref="reportSelector"></gz-report-selector>
<gz-extensions
:ayaType="ayType"
:selectedItems="selectedItems"
ref="extensions"
>
</gz-extensions>
<gz-data-table
ref="gzdatatable"
formKey="adm-users"
:dataListKey="dataListKey"
:dataListFilter="dataListFilter"
:dataListSort="dataListSort"
:showSelect="rights.change"
:metaView="metaView"
v-on:selection-change="handleSelected"
data-cy="custUsersTable"
>
<template v-slot:[`item.active`]="{ item }">
<v-simple-checkbox v-model="item.active" disabled></v-simple-checkbox>
</template>
</v-data-table>
</gz-data-table>
</div>
</template>
<script>
const FORM_KEY = "cust-users";
export default {
async created() {
let vm = this;
try {
await initForm(vm);
created() {
//outside users only
this.metaView = JSON.stringify([
{
fld: "usertype",
filter: {
items: [
{ op: "=", value: 3 },
{ op: "=", value: 4 }
],
any: true
}
}
]);
vm.rights = window.$gz.role.getRights(window.$gz.type.User);
vm.formState.readOnly = !vm.rights.change;
vm.formState.ready = true;
window.$gz.eventBus.$on("menu-click", clickHandler);
await vm.getDataFromApi();
vm.formState.loading = false;
} catch (err) {
vm.formState.ready = true;
window.$gz.errorHandler.handleFormError(err, vm);
}
this.rights = window.$gz.role.getRights(window.$gz.type.User);
window.$gz.eventBus.$on("menu-click", clickHandler);
generateMenu(this);
},
beforeDestroy() {
window.$gz.eventBus.$off("menu-click", clickHandler);
},
data() {
return {
obj: [],
headers: [],
selected: [],
formState: {
ready: false,
loading: true,
errorBoxMessage: null,
appError: null,
serverError: {}
},
currentListViewId: 1,
dataListKey: "OutsideUserDataList",
dataListFilter: "",
dataListSort: "",
metaView: undefined,
rights: window.$gz.role.defaultRightsObject(),
availableRoles: [],
timeZoneName: window.$gz.locale.getBrowserTimeZoneName(),
languageName: window.$gz.locale.getBrowserLanguages(),
hour12: window.$gz.locale.getHour12()
ayType: window.$gz.type.User,
selectedItems: []
};
},
methods: {
rowClick(item) {
window.$gz.eventBus.$emit("openobject", {
type: window.$gz.type.User,
id: item.id,
inside: false
});
},
rolesDisplayFromRoles(roles) {
let roleNames = [];
if (roles != null && roles != 0) {
for (let i = 0; i < this.availableRoles.length; i++) {
let role = this.availableRoles[i];
if (!!(roles & role.id)) {
roleNames.push(role.name);
}
}
}
return roleNames.join(", ");
},
async getDataFromApi() {
let vm = this;
vm.formState.loading = true;
window.$gz.form.deleteAllErrorBoxErrors(vm);
try {
let res = await window.$gz.api.get("user/outlist");
if (res.error) {
if (res.error.code == "2010") {
window.$gz.form.handleObjectNotFound(vm);
}
vm.formState.serverError = res.error;
window.$gz.form.setErrorBoxErrors(vm);
} else {
if (res.data) {
/* Id = z.Id,
Active = z.Active,
Name = z.Name,
UserType = z.UserType,
LastLogin = z.LastLogin */
let ret = [];
for (let i = 0; i < res.data.length; i++) {
let o = res.data[i];
ret.push({
id: o.id,
name: o.name,
organization: o.organization,
emailAddress: o.emailAddress,
phone1: o.phone1,
phone2: o.phone2,
phone3: o.phone3,
active: o.active,
userType: window.$gz.enums.get("outsideusertype", o.userType),
lastLogin: window.$gz.locale.utcDateToShortDateAndTimeLocalized(
o.lastLogin,
this.timeZoneName,
this.languageName,
this.hour12
),
roles: this.rolesDisplayFromRoles(o.roles)
});
}
vm.obj = ret;
} else {
vm.rawObj = [];
vm.obj = [];
}
window.$gz.form.setFormState({
vm: vm,
dirty: false,
valid: true,
loading: false
});
generateMenu(vm);
}
} catch (error) {
window.$gz.form.setFormState({
vm: vm,
loading: false
});
window.$gz.errorHandler.handleFormError(error, vm);
}
handleSelected(selected) {
this.selectedItems = selected;
}
}
};
@@ -169,19 +82,54 @@ async function clickHandler(menuItem) {
params: { recordid: 0 }
});
break;
// case "extensions":
// let res = await m.vm.$refs.extensions.open();
// break;
case "extensions":
let res = await m.vm.$refs.extensions.open(
m.vm.$refs.gzdatatable.getDataListSelection(window.$gz.type.User)
);
break;
case "report":
if (m.id != null) {
//last report selected is in m.id
m.vm.$router.push({
name: "ay-report",
params: { recordid: m.id, ayatype: window.$gz.type.User }
});
} else {
//general report selector chosen
let res = await m.vm.$refs.reportSelector.open(
m.vm.$refs.gzdatatable.getDataListSelection(window.$gz.type.User)
);
//if null for no selection
//just bail out
if (res == null) {
return;
}
//persist last report selected
window.$gz.form.setLastReport(FORM_KEY, res);
//Now open the report viewer...
m.vm.$router.push({
name: "ay-report",
params: { recordid: res.id, ayatype: window.$gz.type.User }
});
}
break;
case "directnotify":
//nav to direct notify with list of users appended to route
if (m.vm.selected.length == 0) {
let selected = m.vm.$refs.gzdatatable.getDataListSelection(
window.$gz.type.User
).selectedRowIds;
if (selected.length == 0) {
m.vm.$router.push({
name: "home-notify-direct"
});
} else {
m.vm.$router.push({
name: "home-notify-direct",
params: { userIdList: m.vm.selected.map(z => z.id).toString() }
params: { userIdList: selected.toString() }
//params: { userIdList: m.vm.selected.map(z => z.id).toString() }
});
}
break;
@@ -202,8 +150,11 @@ function generateMenu(vm) {
isMain: true,
icon: "$ayiUsers",
title: "Contacts",
helpUrl: "form-cust-users",
menuItems: []
helpUrl: "form-acustdm-users",
menuItems: [],
formData: {
ayaType: window.$gz.type.User
}
};
if (vm.rights.change) {
@@ -216,7 +167,7 @@ function generateMenu(vm) {
});
}
//STUB REPORTS
//REPORTS
//Report not Print, print is a further option
menuOptions.menuItems.push({
title: "Report",
@@ -225,20 +176,24 @@ function generateMenu(vm) {
vm: vm
});
//get last report selected
let lastReport = window.$gz.form.getLastReport(FORM_KEY);
if (lastReport != null) {
menuOptions.menuItems.push({
title: lastReport.name,
icon: "$ayiFileAlt",
key: FORM_KEY + ":report:" + lastReport.id,
vm: vm
});
}
menuOptions.menuItems.push({
title: "stub: Last report used",
icon: "$ayiFileAlt",
key: FORM_KEY + ":report:STUBlastusedreportid",
title: "Extensions",
icon: "$ayiPuzzlePiece",
key: FORM_KEY + ":extensions",
vm: vm
});
// menuOptions.menuItems.push({
// title: "Extensions",
// icon: "fa - puzzle-piece",
// key: FORM_KEY + ":extensions",
// vm: vm
// });
menuOptions.menuItems.push({
title: "DirectNotification",
icon: "$ayiCommentAlt",
@@ -248,58 +203,4 @@ function generateMenu(vm) {
window.$gz.eventBus.$emit("menu-change", menuOptions);
}
/////////////////////////////////
//
//
async function initForm(vm) {
await fetchTranslatedText(vm);
await cacheEnums(vm);
await createTableHeaders(vm);
}
//////////////////////////////////////////////////////////
//
// Ensures UI translated text is available
//
async function fetchTranslatedText(vm) {
await window.$gz.translation.cacheTranslations([
"User",
"Active",
"UserType",
"LastLogin",
"UserEmailAddress",
"UserPhone1",
"UserPhone2",
"UserPageAddress",
"Organization"
]);
}
//////////////////////
//
//
async function cacheEnums(vm) {
//ensure the enum values required are pre-fetched
await window.$gz.enums.fetchEnumList("outsideusertype");
await window.$gz.enums.fetchEnumList("AuthorizationRoles");
vm.availableRoles = window.$gz.enums.getSelectionList("AuthorizationRoles");
}
//////////////////////
//
//
async function createTableHeaders(vm) {
vm.headers = [
{ text: vm.$ay.t("User"), value: "name" },
{ text: vm.$ay.t("Organization"), value: "organization" },
{ text: vm.$ay.t("UserEmailAddress"), value: "emailAddress" },
{ text: vm.$ay.t("UserPhone1"), value: "phone1" },
{ text: vm.$ay.t("UserPhone2"), value: "phone2" },
{ text: vm.$ay.t("UserPageAddress"), value: "phone3" },
{ text: vm.$ay.t("Active"), value: "active" },
{ text: vm.$ay.t("UserType"), value: "userType" },
{ text: vm.$ay.t("LastLogin"), value: "lastLogin" }
];
}
</script>