This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
83
ayanova/src/components/plugins-control.vue
Normal file
83
ayanova/src/components/plugins-control.vue
Normal 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>
|
||||
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user