This commit is contained in:
2021-09-15 22:42:55 +00:00
parent 8584baf01e
commit 8cb5211e55
4 changed files with 97 additions and 99 deletions

View File

@@ -76,6 +76,8 @@ TO BE DETERMINED:
workorderitempriority edit form missing NEW option, also probably woitemstatus and maybe wostatus too
Dashboard / widgets
Installer INNO
version with postgres included, version without postgres included

View File

@@ -943,6 +943,36 @@ export default {
"https://yandex.ru/maps/?mode=search&text={ayaddress}&z=17<|>https://yandex.ru/maps/?ll={aylatitude},{aylongitude}&z=12&l=map"
}
];
},
///////////////////////////////////////////////
// v-calendar view to AyaNova scheduleview enum
//
//
calendarViewToAyaNovaEnum: function(view) {
/*
public enum ScheduleView : int
{
Day = 1,
Week = 2,
Month = 3,
Day4 = 4
}
*/
switch (view) {
case "day":
return 1;
case "week":
return 2;
case "month":
return 3;
case "4day":
return 4;
default:
throw new Error(
`gzutil->calendarViewtoAyaNovaEnum - Unknown view type '${view}'`
);
}
}
/**

View File

@@ -75,6 +75,41 @@ export default {
getHour12() {
return window.$gz.store.state.userOptions.hour12;
},
//////////////////////////////////////////////////
// Get the user's chosen / auto time zone offset
//
getTZOffset(timeZoneName) {
if (!timeZoneName) {
timeZoneName = this.getResolvedTimeZoneName();
}
let dtNow = window.$gz.DateTime.local();
var rezoned = dtNow.setZone(timeZoneName);
return rezoned.offset;
},
// ///////////////////////////////////////////
// // Convert timestamp utc epoch value
// // to local timestamp epoch value
// //
// utcEpochToLocalEpoch(value, timeZoneName) {
// if (!value) {
// return null;
// }
// if (!timeZoneName) {
// timeZoneName = this.getResolvedTimeZoneName();
// }
// let parsedDate = new Date(value);
// //is it a valid date?
// if (!(parsedDate instanceof Date && !isNaN(parsedDate))) {
// return null;
// }
// return parsedDate.toLocaleDateString(languageName, {
// timeZone: timeZoneName,
// dateStyle: "short"
// });
// },
///////////////////////////////////////////
// Turn a utc date into a displayable
// short date and time

View File

@@ -60,6 +60,7 @@
:events="events"
:event-color="getEventColor"
:type="viewType"
:locale="languageName"
@click:event="showEvent"
@click:more="viewDay"
@click:date="viewDay"
@@ -79,7 +80,7 @@
>
<v-card color="grey lighten-4" min-width="350px" flat>
<v-toolbar :color="selectedEvent.color" dark>
<v-btn icon>
<v-btn icon @click="openScheduledItem()">
<v-icon>$ayiEdit</v-icon>
</v-btn>
<v-toolbar-title v-html="selectedEvent.name"></v-toolbar-title>
@@ -92,7 +93,8 @@
</v-btn>
</v-toolbar>
<v-card-text>
<span v-html="selectedEvent.details"></span>
{{ selectedEvent }}
<!-- <span v-html="selectedEvent.details"></span> -->
</v-card-text>
<v-card-actions>
<v-btn text color="secondary" @click="selectedOpen = false">
@@ -156,16 +158,17 @@ SETTINGS:
TODO NEXT:
move color calc for forecolor to server and provide as property so no need to calc here and can use for both icon and text
clean up display so it looks reasonable
correct date/time adjusted (doesn't seem to be)
make popup clickthrough to open wo just so make life easier for me testing and adjusting
Larger font, kinda small??
settings / saving as form settings
use translations where possible
*/
const FORM_KEY = "home-schedule";
const API_BASE_URL = "schedule/";
const FORM_CUSTOM_TEMPLATE_KEY = "home-schedule"; //<-- Should always be CoreBizObject AyaType name here where possible
const FORM_CUSTOM_TEMPLATE_KEY = "home-schedule";
export default {
beforeCreate() {
@@ -191,25 +194,6 @@ export default {
selectedElement: null,
selectedOpen: false,
events: [],
colors: [
"blue",
"indigo",
"deep-purple",
"cyan",
"green",
"orange",
"grey darken-1"
],
names: [
"Meeting",
"Holiday",
"PTO",
"Travel",
"Event",
"Birthday",
"Conference",
"Party"
],
formState: {
ready: false,
@@ -224,7 +208,6 @@ export default {
rights: window.$gz.role.defaultRightsObject(),
calendarHeight: 600,
settingsDialog: false,
//cache display format stuff
timeZoneName: window.$gz.locale.getResolvedTimeZoneName(),
languageName: window.$gz.locale.getResolvedLanguage(),
hour12: window.$gz.locale.getHour12()
@@ -234,14 +217,6 @@ export default {
this.$refs.calendar.checkChange();
},
methods: {
// getContrastYIQ(hexcolor) {
// hexcolor = hexcolor.replace("#", "");
// var r = parseInt(hexcolor.substr(0, 2), 16);
// var g = parseInt(hexcolor.substr(2, 2), 16);
// var b = parseInt(hexcolor.substr(4, 2), 16);
// var yiq = (r * 299 + g * 587 + b * 114) / 1000;
// return yiq >= 128 ? "black" : "white";
// },
onResize() {
this.calendarHeight = window.innerHeight * 0.84;
},
@@ -261,6 +236,12 @@ export default {
next() {
this.$refs.calendar.next();
},
openScheduledItem() {
window.$gz.eventBus.$emit("openobject", {
type: this.selectedEvent.type,
id: this.selectedEvent.id
});
},
showEvent({ nativeEvent, event }) {
const open = () => {
this.selectedEvent = event;
@@ -280,13 +261,15 @@ export default {
nativeEvent.stopPropagation();
},
async fetchEvents({ start, end }) {
//NOTE: Need to add six days at least on either side due to calendar potentially showing up to six days of end and start of adjacent months
//maybe easier if server does it and this just sticks to the
// console.log(
// "UPDATE RANGE:",
// JSON.stringify({ start: start.date, end: end.date })
// );
console.log(
"UPDATE RANGE:",
JSON.stringify({ start: start.date, end: end.date })
);
// console.log(
// "TZ Offset",
// window.$gz.locale.getTZOffset(this.timeZoneName)
// );
/*
public enum PersonalScheduleWorkOrderColorSource : int
{
@@ -295,31 +278,15 @@ export default {
WorkOrderItemStatus = 3,
WorkOrderItemPriority = 4
}
public enum ScheduleView : int
{
Day = 1,
Week = 2,
Month = 3,
Day4 = 4
}
*/
let v = 3; //month - default
switch (this.viewType) {
case "day":
v = 1;
break;
case "week":
v = 2;
break;
case "4day":
v = 4;
break;
}
try {
window.$gz.form.deleteAllErrorBoxErrors(this);
let res = await window.$gz.api.post("schedule/personal", {
view: v,
view: window.$gz.util.calendarViewToAyaNovaEnum(this.viewType),
tzOffset: window.$gz.locale.getTZOffset(this.timeZoneName),
start: window.$gz.locale.localTimeDateStringToUTC8601String(
`${start.date}T00:00:00`,
this.timeZoneName
@@ -343,44 +310,8 @@ export default {
} catch (error) {
window.$gz.errorHandler.handleFormError(error, this);
}
// const events = [];
// const min = new Date(`${start.date}T00:00:00`);
// const max = new Date(`${end.date}T23:59:59`);
// const days = (max.getTime() - min.getTime()) / 86400000;
// const eventCount = this.rnd(days, days + 20);
// for (let i = 0; i < eventCount; i++) {
// const allDay = this.rnd(0, 3) === 0;
// const firstTimestamp = this.rnd(min.getTime(), max.getTime());
// const first = new Date(firstTimestamp - (firstTimestamp % 900000));
// const secondTimestamp = this.rnd(2, allDay ? 288 : 8) * 900000;
// const second = new Date(first.getTime() + secondTimestamp);
// events.push({
// name: this.names[this.rnd(0, this.names.length - 1)],
// start: first,
// end: second,
// color: this.colors[this.rnd(0, this.colors.length - 1)],
// timed: !allDay
// });
//}
//this.events = events;
/*<style scoped>
.ay-auto-contrast {
color: black;
mix-blend-mode: hard-light;
}
</style>
[ { "start": 1628046000, "end": 1628049600, "name": "3 Runte - Harris", "color": "#c0c000", "type": 41, "id": 26 }, { "start": 1628046000, "end": 1628053200, "name": "3 Runte - Harris", "color": "#c0c000", "type": 41, "id": 27 }, { "start": 1628046000, "end": 1628049600, "name": "3 Runte - Harris", "color": "#c0c000", "type": 41, "id": 24 }, { "start": 1628046000, "end": 1628049600, "name": "3 Runte - Harris", "color": "#c0c000", "type": 41, "id": 23 }, { "start": 1628046000, "end": 1628049600, "name": "3 Runte - Harris", "color": "#c0c000", "type": 41, "id": 22 }, { "start": 1628046000, "end": 1628049600, "name": "3 Runte - Harris", "color": "#c0c000", "type": 41, "id": 21 }, { "start": 1630040400, "end": 1630044000, "name": "7 Conroy Group", "color": "#ff00ff", "type": 41, "id": 46 }, { "start": 1630040400, "end": 1630044000, "name": "7 Conroy Group", "color": "#ff00ff", "type": 41, "id": 45 } ]
*/
},
rnd(a, b) {
return Math.floor((b - a + 1) * Math.random()) + a;
}
//eom
}
};
</script>