diff options
author | root | 2019-02-19 18:53:50 +0100 |
---|---|---|
committer | root | 2019-02-19 18:53:50 +0100 |
commit | 0ad4c0f8196b61699754762aacbaab0223478ab9 (patch) | |
tree | de434c4aea8d07ecd01cd3badd48d057d62c2d1b /modules-available/locationinfo/templates/frontend-default.html | |
parent | [usb-lock-off] Edit rule cleanup and fix of the dropdown boxes. (diff) | |
parent | [statistics] Fix RAM change warning to handle increase too (diff) | |
download | slx-admin-0ad4c0f8196b61699754762aacbaab0223478ab9.tar.gz slx-admin-0ad4c0f8196b61699754762aacbaab0223478ab9.tar.xz slx-admin-0ad4c0f8196b61699754762aacbaab0223478ab9.zip |
Merge branch 'master' into usb-lock-offusb-lock-off
Diffstat (limited to 'modules-available/locationinfo/templates/frontend-default.html')
-rwxr-xr-x | modules-available/locationinfo/templates/frontend-default.html | 93 |
1 files changed, 68 insertions, 25 deletions
diff --git a/modules-available/locationinfo/templates/frontend-default.html b/modules-available/locationinfo/templates/frontend-default.html index e457f68d..cbb765d0 100755 --- a/modules-available/locationinfo/templates/frontend-default.html +++ b/modules-available/locationinfo/templates/frontend-default.html @@ -327,6 +327,7 @@ optional: .wc-scrollable-grid { transition: height 500ms; background: rgba(0, 0, 0, 0); + overflow-y: hidden !important; } .wc-grid-timeslot-header, @@ -351,6 +352,7 @@ optional: <span data-tag="room">{{lang_room}}</span> <span data-tag="closed">{{lang_closed}}</span> <span data-tag="free">{{lang_free}}</span> + <span data-tag="for">{{lang_for}}</span> <span data-tag="shortSun">{{lang_shortSun}}</span> <span data-tag="shortMon">{{lang_shortMon}}</span> <span data-tag="shortTue">{{lang_shortTue}}</span> @@ -369,7 +371,6 @@ optional: </div> </body> -<!--suppress RedundantIfStatementJS --> <script type="text/javascript"> var rooms = {}; var lastRoomUpdate = 0; @@ -619,6 +620,15 @@ optional: generateProgressBar(); } + // Manually initialize mode 2, as initRoomLayout isn't called for this mode + if (room.config.mode === 2) { + var date = MyDate(); + var now = date.getTime(); + queryCalendars(); + queryRooms(); + lastCalendarUpdate = now; + lastRoomUpdate = now; + } mainUpdateLoop(); setInterval(mainUpdateLoop, 10000); setInterval(updateHeaders, globalConfig.eco ? 10000 : 1000); @@ -736,7 +746,7 @@ optional: timeslotHeight: 30, daysToShow: daysToShow, height: function () { - if (room.config.mode === 1 && room.config.vertical && (!room.timetable || !room.timetable.length)) return 20; + // if (room.config.mode === 1 && room.config.vertical && (!room.timetable || !room.timetable.length)) return 20; var height = $(window).height(); if (roomIds.length === 4) { height /= 2; @@ -771,7 +781,9 @@ optional: timeSeparator: " - ", startOnFirstDayOfWeek: false, displayFreeBusys: true, - defaultFreeBusy: {free: false} + defaultFreeBusy: {free: false}, + allowCalEventOverlap: true, + overlapEventsSeparate: true }); } @@ -919,7 +931,7 @@ optional: const SEVEN_DAYS = 7 * 86400 * 1000; /** - * applays new calendar data to the calendar plugin and also saves it to the room object + * applies new calendar data to the calendar plugin and also saves it to the room object * @param {Array} json Calendar data * @param room Room Object */ @@ -946,9 +958,18 @@ optional: console.log('Notice: Calendar has no current events for ' + room.name); } try { + for (var i = json.length - 1; i > 0; i--) { + // if title, start and end are the same, "merge" two events by removing one of them + if (json[i].title === json[i-1].title && json[i].start === json[i-1].start && json[i].end === json[i-1].end) { + json.splice(i, 1); + } + } room.timetable = json; + for (var property in room.timetable) { + room.timetable[property].start = cleanDate(room.timetable[property].start); + room.timetable[property].end = cleanDate(room.timetable[property].end); + } if (room.config.mode !== 3) { - // TODO: Check if they're the same var cal = room.$.calendar; cal.weekCalendar('option', 'data', {events: json}); cal.weekCalendar("refresh"); @@ -968,6 +989,27 @@ optional: } } + function cleanDate(d) { + if (typeof d === 'string') { + // if is numeric + if (!isNaN(Number(d))) { + return cleanDate(parseInt(d, 10)); + } + + // this is a human readable date + if (d[d.length - 1] !== 'Z') d += 'Z'; + var o = new Date(d); + o.setTime(o.getTime() + (o.getTimezoneOffset() * 60 * 1000)); + return o; + } + + if (typeof d === 'number') { + return new Date(d); + } + + return d; + } + /** * scales calendar, called once on create and on window resize * @param room Room Object @@ -983,7 +1025,7 @@ optional: if (room.config.scaledaysauto) { var result = ($cal.weekCalendar("option", "daysToShow") * columnWidth) / 130; - result = parseInt(Math.min(Math.max(Math.abs(result), 1), 7)); + result = Math.min(Math.max(Math.abs(result), 1), 7); if (result !== $cal.weekCalendar("option", "daysToShow")) { $cal.weekCalendar("option", "daysToShow", result); columnWidth = $cal.find(".wc-day-1").width(); @@ -1107,14 +1149,13 @@ optional: /** * Sets the free PCs number in the right corner and updates the square color accordingly * @param room Room - * @param seats Number of free PC's in the room */ function SetFreeSeats(room) { - room.$.seatsCounter.text(room.freePcs >= 0 ? room.freePcs : ''); + // if room has no allowed value, set text in the box to - + room.$.seatsCounter.text(room.freePcs >= 0 ? room.freePcs : '\u2014'); + room.$.seatsCounter.data('state', JSON.stringify(room.state)); if (room.freePcs > 0 && room.state && room.state.free) { - room.$.seatsBackground.css('background-color', '#250'); - } else if (room.freePcs === -1) { - room.$.seatsBackground.css('background-color', 'red'); + room.$.seatsBackground.css('background-color', '#250'); } else { room.$.seatsBackground.css('background-color', 'red'); } @@ -1134,26 +1175,23 @@ optional: var seats = room.freePcs; if (tmp.state === 'closed' || tmp.state === 'CalendarEvent' || tmp.state === 'Free') { newTime = GetTimeDiferenceAsString(tmp.end, MyDate(), globalConfig); - } else if (!same) { - newTime = ''; } if (tmp.state === "closed") { if (!same) newText = t("closed"); } else if (tmp.state === "CalendarEvent") { if (!same) newText = tmp.title; - seats = -1; - } else if (tmp.state === "Free") { - if (!same) newText = t("free"); - } else if (tmp.state === "FreeNoEnd") { + // whilst event is running set freePcs to -, hopefully not breaking anything else with this + room.freePcs = "-"; + } else if (tmp.state === "Free" || tmp.state === "FreeNoEnd") { if (!same) newText = t("free"); } if (newText !== false) { room.$.currentEvent.text(newText); } if (newTime !== false) { - room.$.currentRemain.text(newTime); + room.$.currentRemain.text(t("for") + " " +newTime); } - if (room.lastFreeSeats !== seats) { + if (room.lastFreeSeats !== seats || !same) { SetFreeSeats(room); room.lastFreeSeats = seats; } @@ -1167,11 +1205,10 @@ optional: function ComputeCurrentState(room) { if (!IsOpen(MyDate(), room)) { room.state = {state: "closed", end: GetNextOpening(room), title: "", next: ""}; - return; } - var closing = GetNextClosing(room); + var closing = GetNextClosing(room); var event = getNextEvent(room.timetable); // no event and no closing @@ -1224,7 +1261,7 @@ optional: console.log('getNextEvent called with something not array: ' + typeof(calEvents)); return null; } - var event; + var event = null; var now = MyDate(); for (var i = 0; i < calEvents.length; i++) { //event is now active @@ -1489,8 +1526,14 @@ optional: for (var i = 0; i < update.length; i++) { var $div = $("#pc_" + room.id + "_" + update[i].id); // Pc free - if (update[i].pcState === "IDLE" || update[i].pcState === "OFFLINE" || update[i].pcState === "STANDBY") { - freePcs++; + if (room.config.roomplanner === true) { + if ((update[i].pcState === "IDLE" || update[i].pcState === "OFFLINE" || update[i].pcState === "STANDBY") && !isNaN(update[i].x) && !isNaN(update[i].y)) { + freePcs++; + } + } else { + if ((update[i].pcState === "IDLE" || update[i].pcState === "OFFLINE" || update[i].pcState === "STANDBY")) { + freePcs++; + } } $div.removeClass('BROKEN OFFLINE IDLE OCCUPIED STANDBY'.replace(update[i].pcState, '')).addClass(update[i].pcState); @@ -1586,7 +1629,7 @@ optional: /** * Function for translation - * @param toTranslate key which we wan't to translate + * @param toTranslate key which we want to translate * @returns r translated string */ function t(toTranslate) { |