This commit is contained in:
2020-07-06 23:48:16 +00:00
parent 599711e5bb
commit d2c3e16c2f
6 changed files with 139 additions and 54 deletions

View File

@@ -4,29 +4,6 @@ PRIORITY - ALWAYS Lowest level stuff first, i.e. TODO at server, api route chang
=-=-=-=-
todo: error http://localhost:8080/adm-global-select-templates pick Customer get error at server:
Check other ones as well
2020-07-01 15:18:23.7324|ERROR|SERVER|Error=>System.NotImplementedException: PICKLIST NOT IMPLEMENTED
at AyaNova.PickList.PickListFactory.GetAyaPickList(AyaType ayaType) in C:\data\code\raven\server\AyaNova\PickList\PickListFactory.cs:line 26
at AyaNova.Biz.PickListBiz.GetAsync(AyaType ayaType, Boolean logTheGetEvent) in C:\data\code\raven\server\AyaNova\biz\PickListBiz.cs:line 58
at AyaNova.Api.Controllers.PickListController.GetPickListTemplate(AyaType ayaType) in C:\data\code\raven\server\AyaNova\Controllers\PickListController.cs:line 115
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
todo: customer logins should *NOT* get the evaluate page offered
todo: rename v8 export plugin to v8 Migrate
it's more accurate and easier to grasp for people (plus it rhymes)
todo: Migrate to v8 plugin needs to work with a trial database as well as a licensed database
It should check if a trial or not and give heavy warning if not
kind of cool if it checked for a recent backup before doing anything damaging
or triggered a checkpoint backup
todo: ability to mass tag items from list CLIENT UI
- See bulk jobs added to Attachment list
@@ -61,6 +38,10 @@ todo: notification
https://github.com/vuetifyjs/vuetify/blob/3513d76774ce4ed02c34220ba6389fa0f42467c1/packages/docs/src/components/app/Notifications.vue
todo: PickLists based on AyaPickList at server, need one for each type, so far have widget and user only
Not sure if should just make them all or...??
Maybe when I hit a form that uses it, that's when I really need it?
todo: rockfish, can't do purchase for raven or view it I think
todo: rockfish, upgrade to latest bootstrap, out of date Currently
todo: rockfish, trial license fetched On date not updating? (not showing in UI)

View File

@@ -122,16 +122,16 @@ export default {
});
}
//PLUGINS - for anything with a type but not necessarily an ID
if (!UTILITY_TYPES.includes(formAyaType)) {
vm.appBar.menuItems.push({
title: "More",
icon: "fa-puzzle-piece",
key: "app:plugin",
data: formAyaType,
recordId: formRecordId
});
}
// //PLUGINS - for anything with a type but not necessarily an ID
// if (!UTILITY_TYPES.includes(formAyaType)) {
// vm.appBar.menuItems.push({
// title: "More",
// icon: "fa-puzzle-piece",
// key: "app:plugin",
// data: formAyaType,
// recordId: formRecordId
// });
// }
//CUSTOMIZE
//set custom fields and link to translation text editor
@@ -292,12 +292,9 @@ export default {
// params: { ayatype: item.data.ayaType, recordid: item.data.recordId }
// });
// break;
// case "wiki":
// vm.$router.push({
// name: "ay-wiki",
// params: { ayatype: item.data.ayaType, recordid: item.data.recordId }
// });
// break;
case "plugin":
alert("STUB: plugin / more");
break;
case "review":
vm.$router.push({
name: "ay-review",

View File

@@ -722,7 +722,13 @@ function initNavPanel() {
}
//*** EVALUATION active trial license should always go to evaluation as home page
if (licenseState == 1) {
//as long as they are a normal User type and not a customer or subcontractor type
if (
(licenseState == 1) &
(window.$gz.store.state.userType == 1 ||
window.$gz.store.state.userType == 2 ||
window.$gz.store.state.userType == 3)
) {
addNavItem(
"Evaluate",
"fa-rocket",

View File

@@ -0,0 +1,83 @@
<template>
<v-dialog
fullscreen
hide-overlay
v-model="isVisible"
@keydown.esc="cancel"
:data-cy="!!$ay.dev ? 'plugin' : false"
>
<v-card>
<v-card-title>Plugins</v-card-title>
todo: show number of selected items, maybe id's? todo: find a name instead
of plugins and maybe alternate icon has to make sense both with accounting
and mass tagging and any possible grab bag ad-hoc stuff Joyce suggested
utilities, that might work, is accounting a utility? More kind of works
too as it implies you can do More
<v-divider></v-divider>
<v-card-text>
<v-expansion-panels focusable>
<v-expansion-panel v-for="(item, i) in 5" :key="i">
<v-expansion-panel-header>Item</v-expansion-panel-header>
<v-expansion-panel-content>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.
</v-expansion-panel-content>
</v-expansion-panel>
</v-expansion-panels>
</v-card-text>
<v-divider></v-divider>
<v-card-actions>
<v-btn text @click="cancel()">Cancel</v-btn>
<v-btn text @click="ok()">Save</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
export default {
data: () => ({
isVisible: false,
resolve: null,
reject: null
}),
props: {
ayaType: {
type: Number,
default: 0
},
selectedItems: {
type: Array
}
},
methods: {
open() {
// //get report list from server
// //for now we'll fake it
// let fakeReportList = [];
// for (let i = 0; i < 25; i++) {
// fakeReportList.push({
// name: "Fake report with the number " + i,
// id: i
// });
// }
// this.reportList = fakeReportList;
this.isVisible = true;
return new Promise((resolve, reject) => {
this.resolve = resolve;
this.reject = reject;
});
},
ok() {
this.isVisible = false;
this.resolve(null);
},
cancel() {
this.isVisible = false;
this.resolve(null);
}
}
};
</script>

View File

@@ -46,6 +46,7 @@ import currencyControl from "./components/currency-control.vue";
import decimalControl from "./components/decimal-control.vue";
import roleControl from "./components/role-control.vue";
import errorControl from "./components/error-control.vue";
import pluginsControl from "./components/plugins-control.vue";
import reportSelectorControl from "./components/report-selector-control.vue";
import reportViewerControl from "./components/report-viewer-control.vue";
import wikiControl from "./components/wiki-control.vue";
@@ -188,6 +189,7 @@ Vue.component("gz-role-picker", roleControl);
Vue.component("gz-error", errorControl);
Vue.component("gz-report-selector", reportSelectorControl);
Vue.component("gz-report-viewer", reportViewerControl);
Vue.component("gz-plugins", pluginsControl);
Vue.component("gz-wiki", wikiControl);
Vue.component("gz-attachments", attachmentControl);
Vue.component("gz-chart-line", chartLineControl);

View File

@@ -1,14 +1,18 @@
<template>
<gz-data-table
formKey="widget-list"
:dataListKey="dataListKey"
:dataListFilter="dataListFilter"
:dataListSort="dataListSort"
:showSelect="false"
:singleSelect="false"
v-on:selection-change="handleSelected"
>
</gz-data-table>
<div>
<gz-plugins :ayaType="ayType" :selectedItems="selectedItems" ref="plugins">
</gz-plugins>
<gz-data-table
formKey="widget-list"
:dataListKey="dataListKey"
:dataListFilter="dataListFilter"
:dataListSort="dataListSort"
:showSelect="rights.change"
:singleSelect="false"
v-on:selection-change="handleSelected"
>
</gz-data-table>
</div>
</template>
<script>
@@ -28,12 +32,14 @@ export default {
dataListKey: "TestWidgetDataList",
dataListFilter: "",
dataListSort: "",
rights: window.$gz.role.defaultRightsObject()
rights: window.$gz.role.defaultRightsObject(),
ayType: window.$gz.type.Widget,
selectedItems: []
};
},
methods: {
handleSelected(selectedItems) {
console.log(selectedItems);
handleSelected(selected) {
this.selectedItems = selected;
}
}
};
@@ -41,7 +47,7 @@ export default {
/////////////////////////////
//
//
function clickHandler(menuItem) {
async function clickHandler(menuItem) {
if (!menuItem) {
return;
}
@@ -54,6 +60,10 @@ function clickHandler(menuItem) {
params: { recordid: 0 }
});
break;
case "plugins":
let res = await m.vm.$refs.plugins.open();
break;
default:
window.$gz.eventBus.$emit(
"notify-warning",
@@ -104,6 +114,12 @@ function generateMenu(vm) {
vm: vm
});
menuOptions.menuItems.push({
title: "More",
icon: "fa-puzzle-piece",
key: FORM_KEY + ":plugins",
vm: vm
});
window.$gz.eventBus.$emit("menu-change", menuOptions);
}
</script>