This commit is contained in:
2020-10-07 15:30:34 +00:00
parent 2eb32a4fd8
commit 0185b6941c
12 changed files with 480 additions and 291 deletions

View File

@@ -2,13 +2,18 @@
@@@@@@@@@@@@@@@ ROADMAP STAGE 4 - REPORTING / DASHBOARD / KPI
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
todo: deploy and ui test login page for build 71, send to joyce, ask about fixup shirt logo if possible
todo: deploy and ui test login page for build 71,
todo: known issues has some efficiency settings for themes and good stuff to know, check it: https://github.com/vuetifyjs/vuetify/releases/tag/v2.3.0#user-content-known-issues
todo: is notifynewcount request double sending? It seems like it appears twice at the same moment in the log
todo: lodash, according to lighthouse it's vulnerable version and needs update
can I just remove it and replace the functionality with built in javascript methods now?
window.$gz._
pick-list.vue uses the debounce function which can be replicated with this code here:
https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_debounce
todo: libs outside of package.json, check if they are outdated or need updating or can be replaced / removed
@@ -444,6 +449,8 @@ https://www.youtube.com/watch?v=zZVoo5AbANI
Nothing to do here, it's an obvious one, just delete this later, it's to percolate in brain a bit
maybe under license
PLAIN TEXT EMAILS / ONBOARDING
https://blog.palabra.io/great-onboarding-plain-text
MARKETING
Analytics alternatives to Google:

File diff suppressed because it is too large Load Diff

View File

@@ -13,9 +13,9 @@
"myLint": "npm run lint"
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.31",
"@fortawesome/free-regular-svg-icons": "^5.15.0",
"@fortawesome/free-solid-svg-icons": "^5.15.0",
"@fortawesome/fontawesome-svg-core": "^1.2.32",
"@fortawesome/free-regular-svg-icons": "^5.15.1",
"@fortawesome/free-solid-svg-icons": "^5.15.1",
"@fortawesome/vue-fontawesome": "^2.0.0",
"chart.js": "^2.9.3",
"chartjs-adapter-luxon": "^0.2.2",
@@ -33,21 +33,21 @@
"vue": "^2.6.12",
"vue-chartjs": "^3.5.1",
"vue-currency-input": "1.20.3",
"vue-router": "^3.4.5",
"vuetify": "^2.3.12",
"vue-router": "^3.4.6",
"vuetify": "^2.3.13",
"vuex": "^3.5.1",
"vuex-persistedstate": "^2.7.1"
},
"devDependencies": {
"@cypress/webpack-preprocessor": "^4.1.5",
"@vue/cli-plugin-babel": "^4.5.6",
"@vue/cli-plugin-e2e-cypress": "^4.5.6",
"@vue/cli-plugin-eslint": "^4.5.6",
"@vue/cli-plugin-pwa": "^4.5.6",
"@vue/cli-plugin-router": "^4.5.6",
"@vue/cli-plugin-unit-jest": "^4.5.6",
"@vue/cli-plugin-vuex": "^4.5.6",
"@vue/cli-service": "^4.5.6",
"@vue/cli-plugin-babel": "^4.5.7",
"@vue/cli-plugin-e2e-cypress": "^4.5.7",
"@vue/cli-plugin-eslint": "^4.5.7",
"@vue/cli-plugin-pwa": "^4.5.7",
"@vue/cli-plugin-router": "^4.5.7",
"@vue/cli-plugin-unit-jest": "^4.5.7",
"@vue/cli-plugin-vuex": "^4.5.7",
"@vue/cli-service": "^4.5.7",
"@vue/eslint-config-prettier": "^6.0.0",
"@vue/test-utils": "^1.1.0",
"babel-core": "6.26.3",
@@ -59,7 +59,7 @@
"eslint-plugin-vue": "^6.2.2",
"fibers": "^4.0.3",
"prettier": "^1.19.1",
"sass": "^1.26.11",
"sass": "^1.26.12",
"sass-loader": "^8.0.2",
"vue-cli-plugin-vuetify": "^2.0.7",
"vue-template-compiler": "^2.6.12",

View File

@@ -51,7 +51,7 @@ export default {
return false;
}
//array form?
if (window.$gz._.isArray(desiredRole)) {
if (Array.isArray(desiredRole)) {
//it's an array of roles, iterate and if any are present then return true
for (let i = 0; i < desiredRole.length; i++) {
if ((window.$gz.store.state.roles & desiredRole[i]) != 0) {
@@ -101,9 +101,19 @@ export default {
let ret = this.defaultRightsObject();
//Get the type name from the type enum value
let typeName = window.$gz._.findKey(window.$gz.type, function(o) {
return o == oType;
});
//de-lodash
// let typeName = window.$gz. _.findKey(window.$gz.type, function(o) {
// return o == oType;
// });
//my _.findKey replacement:
let typeName = undefined;
for (const [key, value] of Object.entries(window.$gz.type)) {
if (value == oType) {
typeName = key;
break;
}
}
//Get the AyaNova stock REQUIRED role rights for that object
let objectRoleRights = this.ROLE_RIGHTS[typeName];

View File

@@ -30,7 +30,7 @@ export default {
// Used by forms to fetch selection list data
// Sorts alphabetically by default but can be turned off with do not sort
//
getSelectionList(enumKey, doNotSort) {
getSelectionList(enumKey) {
enumKey = enumKey.toLowerCase();
let e = window.$gz.store.state.enums[enumKey];
if (!e) {
@@ -41,16 +41,24 @@ export default {
);
}
let ret = [];
//turn it into an array suitable for selection lists
window.$gz._.forOwn(e, function(value, key) {
ret.push({ id: Number(key), name: value });
});
if (doNotSort == true) {
return ret;
} else {
return window.$gz._.sortBy(ret, "name");
//de-lodash
// //turn it into an array suitable for selection lists
// window.$gz._.forOwn(e, function(value, key) {
// ret.push({ id: Number(key), name: value });
// });
//turn it into an array suitable for selection lists
for (const [key, value] of Object.entries(e)) {
ret.push({ id: Number(key), name: value });
}
//e is an object with keys of id values i.e. {1:"display1",2:"display 2"}
//what needs to be returned is an array of objects like: [{id:1,name:"display1"},{id:2,name:"display2"}]
console.log("enum::getSelectionList, e is: ", e);
console.log("ret is", ret);
return window.$gz._.sortBy(ret, "name");
},
///////////////////////////////////
//

View File

@@ -130,8 +130,8 @@ export default new Vuex.Store({
msg = Date.now() + "|" + msg;
state.logArray.push(msg);
if (state.logArray.length > MaxLogLength) {
state.logArray = window.$gz._.drop(
state.logArray,
//remove beginning elements
state.logArray = state.logArray.slice(
state.logArray.length - MaxLogLength
);
}

View File

@@ -329,11 +329,6 @@ async function populateSelectionLists(vm) {
"NotifyEventType"
);
// await window.$gz.enums.fetchEnumList("NotifyDeliveryMethod");
// vm.selectLists.deliveryMethods = window.$gz.enums.getSelectionList(
// "NotifyDeliveryMethod"
// );
await window.$gz.enums.fetchEnumList("ayatype");
vm.selectLists.ayaTypes = window.$gz.enums.getSelectionList("ayatype");
}

View File

@@ -42,7 +42,7 @@ describe("SEARCH", () => {
cy.get("[data-cy=btnopenitem1] > .v-list-item__title")
.invoke("text")
.then((t) => {
.then(t => {
sub = t;
//nave to first result form
cy.get("[data-cy=btnopenitem1]").click();

View File

@@ -12,7 +12,7 @@ describe("PICK LIST TEMPLATE", () => {
cy.get("input[name=password]")
.clear()
.type(`${Cypress.env("adminpassword")}{enter}`);
// cy.url().should("include", "/home-dashboard");
// cy.url().should("include", "/home-dashboard");
cy.visit("/adm-global-settings");
cy.url().should("include", "/adm-global-settings");

View File

@@ -96,7 +96,6 @@ describe("SMOKE", () => {
cy.url().should("include", "/adm-attachments");
cy.visit("/adm-history");
cy.url().should("include", "/adm-history");
cy.visit("/ops-backup");
cy.url().should("include", "/ops-backup");

View File

@@ -15,7 +15,7 @@ describe("TRANSLATION", () => {
.type("fr{enter}");
// we should be redirected to /dashboard
// cy.url().should("include", "/home-dashboard");
// cy.url().should("include", "/home-dashboard");
//nav to about form
cy.get("[data-cy=contextmenu]").click();
@@ -49,7 +49,7 @@ describe("TRANSLATION", () => {
.type("es{enter}");
// we should be redirected to /dashboard
// cy.url().should("include", "/home-dashboard");
// cy.url().should("include", "/home-dashboard");
//nav to about form
cy.get("[data-cy=contextmenu]").click();
@@ -79,7 +79,7 @@ describe("TRANSLATION", () => {
.type("de{enter}");
// we should be redirected to /dashboard
// cy.url().should("include", "/home-dashboard");
// cy.url().should("include", "/home-dashboard");
//nav to about form
cy.get("[data-cy=contextmenu]").click();

View File

@@ -26,7 +26,7 @@ describe("WIDGET FORM", () => {
//save the start url for later
let startUrl = null;
//funcs are async so need to get result via then
cy.url().then((url) => {
cy.url().then(url => {
startUrl = url;
});