This commit is contained in:
@@ -2,13 +2,18 @@
|
|||||||
@@@@@@@@@@@@@@@ ROADMAP STAGE 4 - REPORTING / DASHBOARD / KPI
|
@@@@@@@@@@@@@@@ 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: 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: 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
|
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?
|
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
|
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
|
Nothing to do here, it's an obvious one, just delete this later, it's to percolate in brain a bit
|
||||||
maybe under license
|
maybe under license
|
||||||
|
|
||||||
|
PLAIN TEXT EMAILS / ONBOARDING
|
||||||
|
https://blog.palabra.io/great-onboarding-plain-text
|
||||||
|
|
||||||
MARKETING
|
MARKETING
|
||||||
Analytics alternatives to Google:
|
Analytics alternatives to Google:
|
||||||
|
|||||||
668
ayanova/package-lock.json
generated
668
ayanova/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -13,9 +13,9 @@
|
|||||||
"myLint": "npm run lint"
|
"myLint": "npm run lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome-svg-core": "^1.2.31",
|
"@fortawesome/fontawesome-svg-core": "^1.2.32",
|
||||||
"@fortawesome/free-regular-svg-icons": "^5.15.0",
|
"@fortawesome/free-regular-svg-icons": "^5.15.1",
|
||||||
"@fortawesome/free-solid-svg-icons": "^5.15.0",
|
"@fortawesome/free-solid-svg-icons": "^5.15.1",
|
||||||
"@fortawesome/vue-fontawesome": "^2.0.0",
|
"@fortawesome/vue-fontawesome": "^2.0.0",
|
||||||
"chart.js": "^2.9.3",
|
"chart.js": "^2.9.3",
|
||||||
"chartjs-adapter-luxon": "^0.2.2",
|
"chartjs-adapter-luxon": "^0.2.2",
|
||||||
@@ -33,21 +33,21 @@
|
|||||||
"vue": "^2.6.12",
|
"vue": "^2.6.12",
|
||||||
"vue-chartjs": "^3.5.1",
|
"vue-chartjs": "^3.5.1",
|
||||||
"vue-currency-input": "1.20.3",
|
"vue-currency-input": "1.20.3",
|
||||||
"vue-router": "^3.4.5",
|
"vue-router": "^3.4.6",
|
||||||
"vuetify": "^2.3.12",
|
"vuetify": "^2.3.13",
|
||||||
"vuex": "^3.5.1",
|
"vuex": "^3.5.1",
|
||||||
"vuex-persistedstate": "^2.7.1"
|
"vuex-persistedstate": "^2.7.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@cypress/webpack-preprocessor": "^4.1.5",
|
"@cypress/webpack-preprocessor": "^4.1.5",
|
||||||
"@vue/cli-plugin-babel": "^4.5.6",
|
"@vue/cli-plugin-babel": "^4.5.7",
|
||||||
"@vue/cli-plugin-e2e-cypress": "^4.5.6",
|
"@vue/cli-plugin-e2e-cypress": "^4.5.7",
|
||||||
"@vue/cli-plugin-eslint": "^4.5.6",
|
"@vue/cli-plugin-eslint": "^4.5.7",
|
||||||
"@vue/cli-plugin-pwa": "^4.5.6",
|
"@vue/cli-plugin-pwa": "^4.5.7",
|
||||||
"@vue/cli-plugin-router": "^4.5.6",
|
"@vue/cli-plugin-router": "^4.5.7",
|
||||||
"@vue/cli-plugin-unit-jest": "^4.5.6",
|
"@vue/cli-plugin-unit-jest": "^4.5.7",
|
||||||
"@vue/cli-plugin-vuex": "^4.5.6",
|
"@vue/cli-plugin-vuex": "^4.5.7",
|
||||||
"@vue/cli-service": "^4.5.6",
|
"@vue/cli-service": "^4.5.7",
|
||||||
"@vue/eslint-config-prettier": "^6.0.0",
|
"@vue/eslint-config-prettier": "^6.0.0",
|
||||||
"@vue/test-utils": "^1.1.0",
|
"@vue/test-utils": "^1.1.0",
|
||||||
"babel-core": "6.26.3",
|
"babel-core": "6.26.3",
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
"eslint-plugin-vue": "^6.2.2",
|
"eslint-plugin-vue": "^6.2.2",
|
||||||
"fibers": "^4.0.3",
|
"fibers": "^4.0.3",
|
||||||
"prettier": "^1.19.1",
|
"prettier": "^1.19.1",
|
||||||
"sass": "^1.26.11",
|
"sass": "^1.26.12",
|
||||||
"sass-loader": "^8.0.2",
|
"sass-loader": "^8.0.2",
|
||||||
"vue-cli-plugin-vuetify": "^2.0.7",
|
"vue-cli-plugin-vuetify": "^2.0.7",
|
||||||
"vue-template-compiler": "^2.6.12",
|
"vue-template-compiler": "^2.6.12",
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ export default {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//array form?
|
//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
|
//it's an array of roles, iterate and if any are present then return true
|
||||||
for (let i = 0; i < desiredRole.length; i++) {
|
for (let i = 0; i < desiredRole.length; i++) {
|
||||||
if ((window.$gz.store.state.roles & desiredRole[i]) != 0) {
|
if ((window.$gz.store.state.roles & desiredRole[i]) != 0) {
|
||||||
@@ -101,9 +101,19 @@ export default {
|
|||||||
let ret = this.defaultRightsObject();
|
let ret = this.defaultRightsObject();
|
||||||
|
|
||||||
//Get the type name from the type enum value
|
//Get the type name from the type enum value
|
||||||
let typeName = window.$gz._.findKey(window.$gz.type, function(o) {
|
//de-lodash
|
||||||
return o == oType;
|
// 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
|
//Get the AyaNova stock REQUIRED role rights for that object
|
||||||
let objectRoleRights = this.ROLE_RIGHTS[typeName];
|
let objectRoleRights = this.ROLE_RIGHTS[typeName];
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export default {
|
|||||||
// Used by forms to fetch selection list data
|
// Used by forms to fetch selection list data
|
||||||
// Sorts alphabetically by default but can be turned off with do not sort
|
// Sorts alphabetically by default but can be turned off with do not sort
|
||||||
//
|
//
|
||||||
getSelectionList(enumKey, doNotSort) {
|
getSelectionList(enumKey) {
|
||||||
enumKey = enumKey.toLowerCase();
|
enumKey = enumKey.toLowerCase();
|
||||||
let e = window.$gz.store.state.enums[enumKey];
|
let e = window.$gz.store.state.enums[enumKey];
|
||||||
if (!e) {
|
if (!e) {
|
||||||
@@ -41,16 +41,24 @@ export default {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
let ret = [];
|
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) {
|
//de-lodash
|
||||||
return ret;
|
// //turn it into an array suitable for selection lists
|
||||||
} else {
|
// window.$gz._.forOwn(e, function(value, key) {
|
||||||
return window.$gz._.sortBy(ret, "name");
|
// 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");
|
||||||
},
|
},
|
||||||
///////////////////////////////////
|
///////////////////////////////////
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -130,8 +130,8 @@ export default new Vuex.Store({
|
|||||||
msg = Date.now() + "|" + msg;
|
msg = Date.now() + "|" + msg;
|
||||||
state.logArray.push(msg);
|
state.logArray.push(msg);
|
||||||
if (state.logArray.length > MaxLogLength) {
|
if (state.logArray.length > MaxLogLength) {
|
||||||
state.logArray = window.$gz._.drop(
|
//remove beginning elements
|
||||||
state.logArray,
|
state.logArray = state.logArray.slice(
|
||||||
state.logArray.length - MaxLogLength
|
state.logArray.length - MaxLogLength
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -329,11 +329,6 @@ async function populateSelectionLists(vm) {
|
|||||||
"NotifyEventType"
|
"NotifyEventType"
|
||||||
);
|
);
|
||||||
|
|
||||||
// await window.$gz.enums.fetchEnumList("NotifyDeliveryMethod");
|
|
||||||
// vm.selectLists.deliveryMethods = window.$gz.enums.getSelectionList(
|
|
||||||
// "NotifyDeliveryMethod"
|
|
||||||
// );
|
|
||||||
|
|
||||||
await window.$gz.enums.fetchEnumList("ayatype");
|
await window.$gz.enums.fetchEnumList("ayatype");
|
||||||
vm.selectLists.ayaTypes = window.$gz.enums.getSelectionList("ayatype");
|
vm.selectLists.ayaTypes = window.$gz.enums.getSelectionList("ayatype");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ describe("SEARCH", () => {
|
|||||||
|
|
||||||
cy.get("[data-cy=btnopenitem1] > .v-list-item__title")
|
cy.get("[data-cy=btnopenitem1] > .v-list-item__title")
|
||||||
.invoke("text")
|
.invoke("text")
|
||||||
.then((t) => {
|
.then(t => {
|
||||||
sub = t;
|
sub = t;
|
||||||
//nave to first result form
|
//nave to first result form
|
||||||
cy.get("[data-cy=btnopenitem1]").click();
|
cy.get("[data-cy=btnopenitem1]").click();
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ describe("PICK LIST TEMPLATE", () => {
|
|||||||
cy.get("input[name=password]")
|
cy.get("input[name=password]")
|
||||||
.clear()
|
.clear()
|
||||||
.type(`${Cypress.env("adminpassword")}{enter}`);
|
.type(`${Cypress.env("adminpassword")}{enter}`);
|
||||||
// cy.url().should("include", "/home-dashboard");
|
// cy.url().should("include", "/home-dashboard");
|
||||||
|
|
||||||
cy.visit("/adm-global-settings");
|
cy.visit("/adm-global-settings");
|
||||||
cy.url().should("include", "/adm-global-settings");
|
cy.url().should("include", "/adm-global-settings");
|
||||||
|
|||||||
@@ -96,7 +96,6 @@ describe("SMOKE", () => {
|
|||||||
cy.url().should("include", "/adm-attachments");
|
cy.url().should("include", "/adm-attachments");
|
||||||
cy.visit("/adm-history");
|
cy.visit("/adm-history");
|
||||||
cy.url().should("include", "/adm-history");
|
cy.url().should("include", "/adm-history");
|
||||||
|
|
||||||
|
|
||||||
cy.visit("/ops-backup");
|
cy.visit("/ops-backup");
|
||||||
cy.url().should("include", "/ops-backup");
|
cy.url().should("include", "/ops-backup");
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ describe("TRANSLATION", () => {
|
|||||||
.type("fr{enter}");
|
.type("fr{enter}");
|
||||||
|
|
||||||
// we should be redirected to /dashboard
|
// we should be redirected to /dashboard
|
||||||
// cy.url().should("include", "/home-dashboard");
|
// cy.url().should("include", "/home-dashboard");
|
||||||
|
|
||||||
//nav to about form
|
//nav to about form
|
||||||
cy.get("[data-cy=contextmenu]").click();
|
cy.get("[data-cy=contextmenu]").click();
|
||||||
@@ -49,7 +49,7 @@ describe("TRANSLATION", () => {
|
|||||||
.type("es{enter}");
|
.type("es{enter}");
|
||||||
|
|
||||||
// we should be redirected to /dashboard
|
// we should be redirected to /dashboard
|
||||||
// cy.url().should("include", "/home-dashboard");
|
// cy.url().should("include", "/home-dashboard");
|
||||||
|
|
||||||
//nav to about form
|
//nav to about form
|
||||||
cy.get("[data-cy=contextmenu]").click();
|
cy.get("[data-cy=contextmenu]").click();
|
||||||
@@ -79,7 +79,7 @@ describe("TRANSLATION", () => {
|
|||||||
.type("de{enter}");
|
.type("de{enter}");
|
||||||
|
|
||||||
// we should be redirected to /dashboard
|
// we should be redirected to /dashboard
|
||||||
// cy.url().should("include", "/home-dashboard");
|
// cy.url().should("include", "/home-dashboard");
|
||||||
|
|
||||||
//nav to about form
|
//nav to about form
|
||||||
cy.get("[data-cy=contextmenu]").click();
|
cy.get("[data-cy=contextmenu]").click();
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ describe("WIDGET FORM", () => {
|
|||||||
//save the start url for later
|
//save the start url for later
|
||||||
let startUrl = null;
|
let startUrl = null;
|
||||||
//funcs are async so need to get result via then
|
//funcs are async so need to get result via then
|
||||||
cy.url().then((url) => {
|
cy.url().then(url => {
|
||||||
startUrl = url;
|
startUrl = url;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user