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
|
todo: ability to mass tag items from list CLIENT UI
|
||||||
- See bulk jobs added to Attachment list
|
- 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
|
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, can't do purchase for raven or view it I think
|
||||||
todo: rockfish, upgrade to latest bootstrap, out of date Currently
|
todo: rockfish, upgrade to latest bootstrap, out of date Currently
|
||||||
todo: rockfish, trial license fetched On date not updating? (not showing in UI)
|
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
|
// //PLUGINS - for anything with a type but not necessarily an ID
|
||||||
if (!UTILITY_TYPES.includes(formAyaType)) {
|
// if (!UTILITY_TYPES.includes(formAyaType)) {
|
||||||
vm.appBar.menuItems.push({
|
// vm.appBar.menuItems.push({
|
||||||
title: "More",
|
// title: "More",
|
||||||
icon: "fa-puzzle-piece",
|
// icon: "fa-puzzle-piece",
|
||||||
key: "app:plugin",
|
// key: "app:plugin",
|
||||||
data: formAyaType,
|
// data: formAyaType,
|
||||||
recordId: formRecordId
|
// recordId: formRecordId
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
//CUSTOMIZE
|
//CUSTOMIZE
|
||||||
//set custom fields and link to translation text editor
|
//set custom fields and link to translation text editor
|
||||||
@@ -292,12 +292,9 @@ export default {
|
|||||||
// params: { ayatype: item.data.ayaType, recordid: item.data.recordId }
|
// params: { ayatype: item.data.ayaType, recordid: item.data.recordId }
|
||||||
// });
|
// });
|
||||||
// break;
|
// break;
|
||||||
// case "wiki":
|
case "plugin":
|
||||||
// vm.$router.push({
|
alert("STUB: plugin / more");
|
||||||
// name: "ay-wiki",
|
break;
|
||||||
// params: { ayatype: item.data.ayaType, recordid: item.data.recordId }
|
|
||||||
// });
|
|
||||||
// break;
|
|
||||||
case "review":
|
case "review":
|
||||||
vm.$router.push({
|
vm.$router.push({
|
||||||
name: "ay-review",
|
name: "ay-review",
|
||||||
|
|||||||
@@ -722,7 +722,13 @@ function initNavPanel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//*** EVALUATION active trial license should always go to evaluation as home page
|
//*** 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(
|
addNavItem(
|
||||||
"Evaluate",
|
"Evaluate",
|
||||||
"fa-rocket",
|
"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 decimalControl from "./components/decimal-control.vue";
|
||||||
import roleControl from "./components/role-control.vue";
|
import roleControl from "./components/role-control.vue";
|
||||||
import errorControl from "./components/error-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 reportSelectorControl from "./components/report-selector-control.vue";
|
||||||
import reportViewerControl from "./components/report-viewer-control.vue";
|
import reportViewerControl from "./components/report-viewer-control.vue";
|
||||||
import wikiControl from "./components/wiki-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-error", errorControl);
|
||||||
Vue.component("gz-report-selector", reportSelectorControl);
|
Vue.component("gz-report-selector", reportSelectorControl);
|
||||||
Vue.component("gz-report-viewer", reportViewerControl);
|
Vue.component("gz-report-viewer", reportViewerControl);
|
||||||
|
Vue.component("gz-plugins", pluginsControl);
|
||||||
Vue.component("gz-wiki", wikiControl);
|
Vue.component("gz-wiki", wikiControl);
|
||||||
Vue.component("gz-attachments", attachmentControl);
|
Vue.component("gz-attachments", attachmentControl);
|
||||||
Vue.component("gz-chart-line", chartLineControl);
|
Vue.component("gz-chart-line", chartLineControl);
|
||||||
|
|||||||
@@ -1,14 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<gz-data-table
|
<div>
|
||||||
formKey="widget-list"
|
<gz-plugins :ayaType="ayType" :selectedItems="selectedItems" ref="plugins">
|
||||||
:dataListKey="dataListKey"
|
</gz-plugins>
|
||||||
:dataListFilter="dataListFilter"
|
<gz-data-table
|
||||||
:dataListSort="dataListSort"
|
formKey="widget-list"
|
||||||
:showSelect="false"
|
:dataListKey="dataListKey"
|
||||||
:singleSelect="false"
|
:dataListFilter="dataListFilter"
|
||||||
v-on:selection-change="handleSelected"
|
:dataListSort="dataListSort"
|
||||||
>
|
:showSelect="rights.change"
|
||||||
</gz-data-table>
|
:singleSelect="false"
|
||||||
|
v-on:selection-change="handleSelected"
|
||||||
|
>
|
||||||
|
</gz-data-table>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -28,12 +32,14 @@ export default {
|
|||||||
dataListKey: "TestWidgetDataList",
|
dataListKey: "TestWidgetDataList",
|
||||||
dataListFilter: "",
|
dataListFilter: "",
|
||||||
dataListSort: "",
|
dataListSort: "",
|
||||||
rights: window.$gz.role.defaultRightsObject()
|
rights: window.$gz.role.defaultRightsObject(),
|
||||||
|
ayType: window.$gz.type.Widget,
|
||||||
|
selectedItems: []
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleSelected(selectedItems) {
|
handleSelected(selected) {
|
||||||
console.log(selectedItems);
|
this.selectedItems = selected;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -41,7 +47,7 @@ export default {
|
|||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
function clickHandler(menuItem) {
|
async function clickHandler(menuItem) {
|
||||||
if (!menuItem) {
|
if (!menuItem) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -54,6 +60,10 @@ function clickHandler(menuItem) {
|
|||||||
params: { recordid: 0 }
|
params: { recordid: 0 }
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
case "plugins":
|
||||||
|
let res = await m.vm.$refs.plugins.open();
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
window.$gz.eventBus.$emit(
|
window.$gz.eventBus.$emit(
|
||||||
"notify-warning",
|
"notify-warning",
|
||||||
@@ -104,6 +114,12 @@ function generateMenu(vm) {
|
|||||||
vm: 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);
|
window.$gz.eventBus.$emit("menu-change", menuOptions);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user