This commit is contained in:
@@ -76,6 +76,8 @@ TO BE DETERMINED:
|
|||||||
|
|
||||||
workorderitempriority edit form missing NEW option, also probably woitemstatus and maybe wostatus too
|
workorderitempriority edit form missing NEW option, also probably woitemstatus and maybe wostatus too
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dashboard / widgets
|
Dashboard / widgets
|
||||||
Installer INNO
|
Installer INNO
|
||||||
version with postgres included, version without postgres included
|
version with postgres included, version without postgres included
|
||||||
|
|||||||
@@ -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"
|
"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}'`
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -75,6 +75,41 @@ export default {
|
|||||||
getHour12() {
|
getHour12() {
|
||||||
return window.$gz.store.state.userOptions.hour12;
|
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
|
// Turn a utc date into a displayable
|
||||||
// short date and time
|
// short date and time
|
||||||
|
|||||||
@@ -60,6 +60,7 @@
|
|||||||
:events="events"
|
:events="events"
|
||||||
:event-color="getEventColor"
|
:event-color="getEventColor"
|
||||||
:type="viewType"
|
:type="viewType"
|
||||||
|
:locale="languageName"
|
||||||
@click:event="showEvent"
|
@click:event="showEvent"
|
||||||
@click:more="viewDay"
|
@click:more="viewDay"
|
||||||
@click:date="viewDay"
|
@click:date="viewDay"
|
||||||
@@ -79,7 +80,7 @@
|
|||||||
>
|
>
|
||||||
<v-card color="grey lighten-4" min-width="350px" flat>
|
<v-card color="grey lighten-4" min-width="350px" flat>
|
||||||
<v-toolbar :color="selectedEvent.color" dark>
|
<v-toolbar :color="selectedEvent.color" dark>
|
||||||
<v-btn icon>
|
<v-btn icon @click="openScheduledItem()">
|
||||||
<v-icon>$ayiEdit</v-icon>
|
<v-icon>$ayiEdit</v-icon>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
<v-toolbar-title v-html="selectedEvent.name"></v-toolbar-title>
|
<v-toolbar-title v-html="selectedEvent.name"></v-toolbar-title>
|
||||||
@@ -92,7 +93,8 @@
|
|||||||
</v-btn>
|
</v-btn>
|
||||||
</v-toolbar>
|
</v-toolbar>
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<span v-html="selectedEvent.details"></span>
|
{{ selectedEvent }}
|
||||||
|
<!-- <span v-html="selectedEvent.details"></span> -->
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
<v-card-actions>
|
<v-card-actions>
|
||||||
<v-btn text color="secondary" @click="selectedOpen = false">
|
<v-btn text color="secondary" @click="selectedOpen = false">
|
||||||
@@ -156,16 +158,17 @@ SETTINGS:
|
|||||||
|
|
||||||
|
|
||||||
TODO NEXT:
|
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
|
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";
|
||||||
const FORM_CUSTOM_TEMPLATE_KEY = "home-schedule"; //<-- Should always be CoreBizObject AyaType name here where possible
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
beforeCreate() {
|
beforeCreate() {
|
||||||
@@ -191,25 +194,6 @@ export default {
|
|||||||
selectedElement: null,
|
selectedElement: null,
|
||||||
selectedOpen: false,
|
selectedOpen: false,
|
||||||
events: [],
|
events: [],
|
||||||
colors: [
|
|
||||||
"blue",
|
|
||||||
"indigo",
|
|
||||||
"deep-purple",
|
|
||||||
"cyan",
|
|
||||||
"green",
|
|
||||||
"orange",
|
|
||||||
"grey darken-1"
|
|
||||||
],
|
|
||||||
names: [
|
|
||||||
"Meeting",
|
|
||||||
"Holiday",
|
|
||||||
"PTO",
|
|
||||||
"Travel",
|
|
||||||
"Event",
|
|
||||||
"Birthday",
|
|
||||||
"Conference",
|
|
||||||
"Party"
|
|
||||||
],
|
|
||||||
|
|
||||||
formState: {
|
formState: {
|
||||||
ready: false,
|
ready: false,
|
||||||
@@ -224,7 +208,6 @@ export default {
|
|||||||
rights: window.$gz.role.defaultRightsObject(),
|
rights: window.$gz.role.defaultRightsObject(),
|
||||||
calendarHeight: 600,
|
calendarHeight: 600,
|
||||||
settingsDialog: false,
|
settingsDialog: false,
|
||||||
//cache display format stuff
|
|
||||||
timeZoneName: window.$gz.locale.getResolvedTimeZoneName(),
|
timeZoneName: window.$gz.locale.getResolvedTimeZoneName(),
|
||||||
languageName: window.$gz.locale.getResolvedLanguage(),
|
languageName: window.$gz.locale.getResolvedLanguage(),
|
||||||
hour12: window.$gz.locale.getHour12()
|
hour12: window.$gz.locale.getHour12()
|
||||||
@@ -234,14 +217,6 @@ export default {
|
|||||||
this.$refs.calendar.checkChange();
|
this.$refs.calendar.checkChange();
|
||||||
},
|
},
|
||||||
methods: {
|
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() {
|
onResize() {
|
||||||
this.calendarHeight = window.innerHeight * 0.84;
|
this.calendarHeight = window.innerHeight * 0.84;
|
||||||
},
|
},
|
||||||
@@ -261,6 +236,12 @@ export default {
|
|||||||
next() {
|
next() {
|
||||||
this.$refs.calendar.next();
|
this.$refs.calendar.next();
|
||||||
},
|
},
|
||||||
|
openScheduledItem() {
|
||||||
|
window.$gz.eventBus.$emit("openobject", {
|
||||||
|
type: this.selectedEvent.type,
|
||||||
|
id: this.selectedEvent.id
|
||||||
|
});
|
||||||
|
},
|
||||||
showEvent({ nativeEvent, event }) {
|
showEvent({ nativeEvent, event }) {
|
||||||
const open = () => {
|
const open = () => {
|
||||||
this.selectedEvent = event;
|
this.selectedEvent = event;
|
||||||
@@ -280,13 +261,15 @@ export default {
|
|||||||
nativeEvent.stopPropagation();
|
nativeEvent.stopPropagation();
|
||||||
},
|
},
|
||||||
async fetchEvents({ start, end }) {
|
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
|
// console.log(
|
||||||
//maybe easier if server does it and this just sticks to the
|
// "UPDATE RANGE:",
|
||||||
|
// JSON.stringify({ start: start.date, end: end.date })
|
||||||
|
// );
|
||||||
|
|
||||||
console.log(
|
// console.log(
|
||||||
"UPDATE RANGE:",
|
// "TZ Offset",
|
||||||
JSON.stringify({ start: start.date, end: end.date })
|
// window.$gz.locale.getTZOffset(this.timeZoneName)
|
||||||
);
|
// );
|
||||||
/*
|
/*
|
||||||
public enum PersonalScheduleWorkOrderColorSource : int
|
public enum PersonalScheduleWorkOrderColorSource : int
|
||||||
{
|
{
|
||||||
@@ -295,31 +278,15 @@ export default {
|
|||||||
WorkOrderItemStatus = 3,
|
WorkOrderItemStatus = 3,
|
||||||
WorkOrderItemPriority = 4
|
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 {
|
try {
|
||||||
window.$gz.form.deleteAllErrorBoxErrors(this);
|
window.$gz.form.deleteAllErrorBoxErrors(this);
|
||||||
|
|
||||||
let res = await window.$gz.api.post("schedule/personal", {
|
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: window.$gz.locale.localTimeDateStringToUTC8601String(
|
||||||
`${start.date}T00:00:00`,
|
`${start.date}T00:00:00`,
|
||||||
this.timeZoneName
|
this.timeZoneName
|
||||||
@@ -343,44 +310,8 @@ export default {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
window.$gz.errorHandler.handleFormError(error, this);
|
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>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user