diff --git a/ACS Frontend/ACS Frontend Reloaded.csproj b/ACS Frontend/ACS Frontend Reloaded.csproj
index ba8f26e..ad2e6b0 100644
--- a/ACS Frontend/ACS Frontend Reloaded.csproj
+++ b/ACS Frontend/ACS Frontend Reloaded.csproj
@@ -1084,7 +1084,6 @@
-
@@ -1112,7 +1111,6 @@
DatabaseModel.cs
-
@@ -1122,120 +1120,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1587,6 +1471,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1733,13 +1639,8 @@
-
-
-
-
-
diff --git a/ACS Frontend/Content/bootstrap-clockpicker.css b/ACS Frontend/Content/bootstrap-clockpicker.css
deleted file mode 100644
index 67d2dc3..0000000
--- a/ACS Frontend/Content/bootstrap-clockpicker.css
+++ /dev/null
@@ -1,168 +0,0 @@
-/*!
- * ClockPicker v0.0.7 for Bootstrap (http://weareoutman.github.io/clockpicker/)
- * Copyright 2014 Wang Shenwei.
- * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)
- */
-
-.clockpicker .input-group-addon {
- cursor: pointer;
-}
-.clockpicker-moving {
- cursor: move;
-}
-.clockpicker-align-left.popover > .arrow {
- left: 25px;
-}
-.clockpicker-align-top.popover > .arrow {
- top: 17px;
-}
-.clockpicker-align-right.popover > .arrow {
- left: auto;
- right: 25px;
-}
-.clockpicker-align-bottom.popover > .arrow {
- top: auto;
- bottom: 6px;
-}
-.clockpicker-popover .popover-title {
- background-color: #fff;
- color: #999;
- font-size: 24px;
- font-weight: bold;
- line-height: 30px;
- text-align: center;
-}
-.clockpicker-popover .popover-title span {
- cursor: pointer;
-}
-.clockpicker-popover .popover-content {
- background-color: #f8f8f8;
- padding: 12px;
-}
-.popover-content:last-child {
- border-bottom-left-radius: 5px;
- border-bottom-right-radius: 5px;
-}
-.clockpicker-plate {
- background-color: #fff;
- border: 1px solid #ccc;
- border-radius: 50%;
- width: 200px;
- height: 200px;
- overflow: visible;
- position: relative;
- /* Disable text selection highlighting. Thanks to Hermanya */
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-.clockpicker-canvas,
-.clockpicker-dial {
- width: 200px;
- height: 200px;
- position: absolute;
- left: -1px;
- top: -1px;
-}
-.clockpicker-minutes {
- visibility: hidden;
-}
-.clockpicker-tick {
- border-radius: 50%;
- color: #666;
- line-height: 26px;
- text-align: center;
- width: 26px;
- height: 26px;
- position: absolute;
- cursor: pointer;
-}
-.clockpicker-tick.active,
-.clockpicker-tick:hover {
- background-color: rgb(192, 229, 247);
- background-color: rgba(0, 149, 221, .25);
-}
-.clockpicker-button {
- background-image: none;
- background-color: #fff;
- border-width: 1px 0 0;
- border-top-left-radius: 0;
- border-top-right-radius: 0;
- margin: 0;
- padding: 10px 0;
-}
-.clockpicker-button:hover {
- background-image: none;
- background-color: #ebebeb;
-}
-.clockpicker-button:focus {
- outline: none!important;
-}
-.clockpicker-dial {
- -webkit-transition: -webkit-transform 350ms, opacity 350ms;
- -moz-transition: -moz-transform 350ms, opacity 350ms;
- -ms-transition: -ms-transform 350ms, opacity 350ms;
- -o-transition: -o-transform 350ms, opacity 350ms;
- transition: transform 350ms, opacity 350ms;
-}
-.clockpicker-dial-out {
- opacity: 0;
-}
-.clockpicker-hours.clockpicker-dial-out {
- -webkit-transform: scale(1.2, 1.2);
- -moz-transform: scale(1.2, 1.2);
- -ms-transform: scale(1.2, 1.2);
- -o-transform: scale(1.2, 1.2);
- transform: scale(1.2, 1.2);
-}
-.clockpicker-minutes.clockpicker-dial-out {
- -webkit-transform: scale(.8, .8);
- -moz-transform: scale(.8, .8);
- -ms-transform: scale(.8, .8);
- -o-transform: scale(.8, .8);
- transform: scale(.8, .8);
-}
-.clockpicker-canvas {
- -webkit-transition: opacity 175ms;
- -moz-transition: opacity 175ms;
- -ms-transition: opacity 175ms;
- -o-transition: opacity 175ms;
- transition: opacity 175ms;
-}
-.clockpicker-canvas-out {
- opacity: 0.25;
-}
-.clockpicker-canvas-bearing,
-.clockpicker-canvas-fg {
- stroke: none;
- fill: rgb(0, 149, 221);
-}
-.clockpicker-canvas-bg {
- stroke: none;
- fill: rgb(192, 229, 247);
-}
-.clockpicker-canvas-bg-trans {
- fill: rgba(0, 149, 221, .25);
-}
-.clockpicker-canvas line {
- stroke: rgb(0, 149, 221);
- stroke-width: 1;
- stroke-linecap: round;
- /*shape-rendering: crispEdges;*/
-}
-.clockpicker-button.am-button {
- margin: 1px;
- padding: 5px;
- border: 1px solid rgba(0, 0, 0, .2);
- border-radius: 4px;
-
-}
-.clockpicker-button.pm-button {
- margin: 1px 1px 1px 136px;
- padding: 5px;
- border: 1px solid rgba(0, 0, 0, .2);
- border-radius: 4px;
-}
diff --git a/ACS Frontend/Scripts/bootstrap-clockpicker.js b/ACS Frontend/Scripts/bootstrap-clockpicker.js
deleted file mode 100644
index 8f539c8..0000000
--- a/ACS Frontend/Scripts/bootstrap-clockpicker.js
+++ /dev/null
@@ -1,765 +0,0 @@
-/*!
- * ClockPicker v0.0.7 (http://weareoutman.github.io/clockpicker/)
- * Copyright 2014 Wang Shenwei.
- * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)
- */
-
-;(function(){
- var $ = window.jQuery,
- $win = $(window),
- $doc = $(document),
- $body;
-
- // Can I use inline svg ?
- var svgNS = 'http://www.w3.org/2000/svg',
- svgSupported = 'SVGAngle' in window && (function(){
- var supported,
- el = document.createElement('div');
- el.innerHTML = '';
- supported = (el.firstChild && el.firstChild.namespaceURI) == svgNS;
- el.innerHTML = '';
- return supported;
- })();
-
- // Can I use transition ?
- var transitionSupported = (function(){
- var style = document.createElement('div').style;
- return 'transition' in style ||
- 'WebkitTransition' in style ||
- 'MozTransition' in style ||
- 'msTransition' in style ||
- 'OTransition' in style;
- })();
-
- // Listen touch events in touch screen device, instead of mouse events in desktop.
- var touchSupported = 'ontouchstart' in window,
- mousedownEvent = 'mousedown' + ( touchSupported ? ' touchstart' : ''),
- mousemoveEvent = 'mousemove.clockpicker' + ( touchSupported ? ' touchmove.clockpicker' : ''),
- mouseupEvent = 'mouseup.clockpicker' + ( touchSupported ? ' touchend.clockpicker' : '');
-
- // Vibrate the device if supported
- var vibrate = navigator.vibrate ? 'vibrate' : navigator.webkitVibrate ? 'webkitVibrate' : null;
-
- function createSvgElement(name) {
- return document.createElementNS(svgNS, name);
- }
-
- function leadingZero(num) {
- return (num < 10 ? '0' : '') + num;
- }
-
- // Get a unique id
- var idCounter = 0;
- function uniqueId(prefix) {
- var id = ++idCounter + '';
- return prefix ? prefix + id : id;
- }
-
- // Clock size
- var dialRadius = 100,
- outerRadius = 80,
- // innerRadius = 80 on 12 hour clock
- innerRadius = 54,
- tickRadius = 13,
- diameter = dialRadius * 2,
- duration = transitionSupported ? 350 : 1;
-
- // Popover template
- var tpl = [
- '
',
- '
',
- '
',
- '',
- ' : ',
- '',
- '',
- '
',
- '
',
- '
'
- ].join('');
-
- // ClockPicker
- function ClockPicker(element, options) {
- var popover = $(tpl),
- plate = popover.find('.clockpicker-plate'),
- hoursView = popover.find('.clockpicker-hours'),
- minutesView = popover.find('.clockpicker-minutes'),
- amPmBlock = popover.find('.clockpicker-am-pm-block'),
- isInput = element.prop('tagName') === 'INPUT',
- input = isInput ? element : element.find('input'),
- addon = element.find('.input-group-addon'),
- self = this,
- timer;
-
- this.id = uniqueId('cp');
- this.element = element;
- this.options = options;
- this.options.hourstep = this.parseStep(this.options.hourstep, 12);
- this.options.minutestep = this.parseStep(this.options.minutestep, 60);
- this.isAppended = false;
- this.isShown = false;
- this.currentView = 'hours';
- this.isInput = isInput;
- this.input = input;
- this.addon = addon;
- this.popover = popover;
- this.plate = plate;
- this.hoursView = hoursView;
- this.minutesView = minutesView;
- this.amPmBlock = amPmBlock;
- this.spanHours = popover.find('.clockpicker-span-hours');
- this.spanMinutes = popover.find('.clockpicker-span-minutes');
- this.spanAmPm = popover.find('.clockpicker-span-am-pm');
- this.amOrPm = "";
-
- // Setup for for 12 hour clock if option is selected
- if (options.twelvehour) {
-
- $('')
- .on("click", function() {
- self.amOrPm = "AM";
- $('.clockpicker-span-am-pm').empty().append('AM');
- }).appendTo(this.amPmBlock);
-
-
- $('')
- .on("click", function() {
- self.amOrPm = 'PM';
- $('.clockpicker-span-am-pm').empty().append('PM');
- }).appendTo(this.amPmBlock);
-
- }
-
- if (! options.autoclose) {
- // If autoclose is not setted, append a button
- $('')
- .click($.proxy(this.done, this))
- .appendTo(popover);
- }
-
- // Placement and arrow align - make sure they make sense.
- if ((options.placement === 'top' || options.placement === 'bottom') && (options.align === 'top' || options.align === 'bottom')) options.align = 'left';
- if ((options.placement === 'left' || options.placement === 'right') && (options.align === 'left' || options.align === 'right')) options.align = 'top';
-
- popover.addClass(options.placement);
- popover.addClass('clockpicker-align-' + options.align);
-
- this.spanHours.click($.proxy(this.toggleView, this, 'hours'));
- this.spanMinutes.click($.proxy(this.toggleView, this, 'minutes'));
-
- // Show or toggle
- input.on('focus.clockpicker click.clockpicker', $.proxy(this.show, this));
- addon.on('click.clockpicker', $.proxy(this.toggle, this));
-
- // Build ticks
- var tickTpl = $(''),
- i, tick, radian, radius;
-
- // Hours view
- if (options.twelvehour) {
- for (i = 0; i < 12; i += options.hourstep) {
- tick = tickTpl.clone();
- radian = i / 6 * Math.PI;
- radius = outerRadius;
- tick.css('font-size', '120%');
- tick.css({
- left: dialRadius + Math.sin(radian) * radius - tickRadius,
- top: dialRadius - Math.cos(radian) * radius - tickRadius
- });
- tick.html(i === 0 ? 12 : i);
- hoursView.append(tick);
- tick.on(mousedownEvent, mousedown);
- }
- } else {
- for (i = 0; i < 24; i += options.hourstep) {
- tick = tickTpl.clone();
- radian = i / 6 * Math.PI;
- var inner = i > 0 && i < 13;
- radius = inner ? innerRadius : outerRadius;
- tick.css({
- left: dialRadius + Math.sin(radian) * radius - tickRadius,
- top: dialRadius - Math.cos(radian) * radius - tickRadius
- });
- if (inner) {
- tick.css('font-size', '120%');
- }
- tick.html(i === 0 ? '00' : i);
- hoursView.append(tick);
- tick.on(mousedownEvent, mousedown);
- }
- }
-
- // Minutes view
- var incrementValue = Math.max(options.minutestep, 5);
- for (i = 0; i < 60; i += incrementValue) {
- tick = tickTpl.clone();
- radian = i / 30 * Math.PI;
- tick.css({
- left: dialRadius + Math.sin(radian) * outerRadius - tickRadius,
- top: dialRadius - Math.cos(radian) * outerRadius - tickRadius
- });
- tick.css('font-size', '120%');
- tick.html(leadingZero(i));
- minutesView.append(tick);
- tick.on(mousedownEvent, mousedown);
- }
-
- // Clicking on minutes view space
- plate.on(mousedownEvent, function(e){
- if ($(e.target).closest('.clockpicker-tick').length === 0) {
- mousedown(e, true);
- }
- });
-
- // Mousedown or touchstart
- function mousedown(e, space) {
- var offset = plate.offset(),
- isTouch = /^touch/.test(e.type),
- x0 = offset.left + dialRadius,
- y0 = offset.top + dialRadius,
- dx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,
- dy = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0,
- z = Math.sqrt(dx * dx + dy * dy),
- moved = false;
-
- // When clicking on minutes view space, check the mouse position
- if (space && (z < outerRadius - tickRadius || z > outerRadius + tickRadius)) {
- return;
- }
- e.preventDefault();
-
- // Set cursor style of body after 200ms
- var movingTimer = setTimeout(function(){
- $body.addClass('clockpicker-moving');
- }, 200);
-
- // Place the canvas to top
- if (svgSupported) {
- plate.append(self.canvas);
- }
-
- // Clock
- self.setHand(dx, dy, true);
-
- // Mousemove on document
- $doc.off(mousemoveEvent).on(mousemoveEvent, function(e){
- e.preventDefault();
- var isTouch = /^touch/.test(e.type),
- x = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,
- y = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0;
- if (! moved && x === dx && y === dy) {
- // Clicking in chrome on windows will trigger a mousemove event
- return;
- }
- moved = true;
- self.setHand(x, y, true);
- });
-
- // Mouseup on document
- $doc.off(mouseupEvent).on(mouseupEvent, function(e){
- $doc.off(mouseupEvent);
- e.preventDefault();
- var isTouch = /^touch/.test(e.type),
- x = (isTouch ? e.originalEvent.changedTouches[0] : e).pageX - x0,
- y = (isTouch ? e.originalEvent.changedTouches[0] : e).pageY - y0;
- if ((space || moved) && x === dx && y === dy) {
- self.setHand(x, y);
- }
- if (self.currentView === 'hours') {
- self.toggleView('minutes', duration / 2);
- } else {
- if (options.autoclose) {
- self.minutesView.addClass('clockpicker-dial-out');
- setTimeout(function(){
- self.done();
- }, duration / 2);
- }
- }
- plate.prepend(canvas);
-
- // Reset cursor style of body
- clearTimeout(movingTimer);
- $body.removeClass('clockpicker-moving');
-
- // Unbind mousemove event
- $doc.off(mousemoveEvent);
- });
- }
-
- if (svgSupported) {
- // Draw clock hands and others
- var canvas = popover.find('.clockpicker-canvas'),
- svg = createSvgElement('svg');
- svg.setAttribute('class', 'clockpicker-svg');
- svg.setAttribute('width', diameter);
- svg.setAttribute('height', diameter);
- var g = createSvgElement('g');
- g.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');
- var bearing = createSvgElement('circle');
- bearing.setAttribute('class', 'clockpicker-canvas-bearing');
- bearing.setAttribute('cx', 0);
- bearing.setAttribute('cy', 0);
- bearing.setAttribute('r', 2);
- var hand = createSvgElement('line');
- hand.setAttribute('x1', 0);
- hand.setAttribute('y1', 0);
- var bg = createSvgElement('circle');
- bg.setAttribute('class', 'clockpicker-canvas-bg');
- bg.setAttribute('r', tickRadius);
- var fg = createSvgElement('circle');
- fg.setAttribute('class', 'clockpicker-canvas-fg');
- fg.setAttribute('r', 3.5);
- g.appendChild(hand);
- g.appendChild(bg);
- g.appendChild(fg);
- g.appendChild(bearing);
- svg.appendChild(g);
- canvas.append(svg);
-
- this.hand = hand;
- this.bg = bg;
- this.fg = fg;
- this.bearing = bearing;
- this.g = g;
- this.canvas = canvas;
- }
-
- raiseCallback(this.options.init);
- }
-
- function raiseCallback(callbackFunction) {
- if (callbackFunction && typeof callbackFunction === "function") {
- callbackFunction();
- }
- }
-
- ClockPicker.prototype.parseStep = function(givenStepSize, wholeSize) {
- return wholeSize % givenStepSize === 0 ? givenStepSize : 1;
- }
-
- // Default options
- ClockPicker.DEFAULTS = {
- 'default': '', // default time, 'now' or '13:14' e.g.
- fromnow: 0, // set default time to * milliseconds from now (using with default = 'now')
- placement: 'bottom', // clock popover placement
- align: 'left', // popover arrow align
- donetext: '完成', // done button text
- autoclose: false, // auto close when minute is selected
- twelvehour: false, // change to 12 hour AM/PM clock from 24 hour
- vibrate: true, // vibrate the device when dragging clock hand
- hourstep: 1, // allow to multi increment the hour
- minutestep: 1 // allow to multi increment the minute
- };
-
- // Show or hide popover
- ClockPicker.prototype.toggle = function(){
- this[this.isShown ? 'hide' : 'show']();
- };
-
- // Set popover position
- ClockPicker.prototype.locate = function(){
- var element = this.element,
- popover = this.popover,
- offset = element.offset(),
- width = element.outerWidth(),
- height = element.outerHeight(),
- placement = this.options.placement,
- align = this.options.align,
- styles = {},
- self = this;
-
- popover.show();
-
- // Place the popover
- switch (placement) {
- case 'bottom':
- styles.top = offset.top + height;
- break;
- case 'right':
- styles.left = offset.left + width;
- break;
- case 'top':
- styles.top = offset.top - popover.outerHeight();
- break;
- case 'left':
- styles.left = offset.left - popover.outerWidth();
- break;
- }
-
- // Align the popover arrow
- switch (align) {
- case 'left':
- styles.left = offset.left;
- break;
- case 'right':
- styles.left = offset.left + width - popover.outerWidth();
- break;
- case 'top':
- styles.top = offset.top;
- break;
- case 'bottom':
- styles.top = offset.top + height - popover.outerHeight();
- break;
- }
-
- popover.css(styles);
- };
-
- // The input can be changed by the user
- // So before we can use this.hours/this.minutes we must update it
- ClockPicker.prototype.parseInputValue = function(){
- var value = this.input.prop('value') || this.options['default'] || '';
-
- if (value === 'now') {
- value = new Date(+ new Date() + this.options.fromnow);
- }
- if (value instanceof Date) {
- value = value.getHours() + ':' + value.getMinutes();
- }
-
- value = value.split(':');
-
- // Minutes can have AM/PM that needs to be removed
- this.hours = + value[0] || 0;
- this.minutes = + (value[1] + '').replace(/\D/g, '') || 0;
-
- this.hours = Math.round(this.hours / this.options.hourstep) * this.options.hourstep;
- this.minutes = Math.round(this.minutes / this.options.minutestep) * this.options.minutestep;
-
- if (this.options.twelvehour) {
- var period = (value[1] + '').replace(/\d+/g, '').toLowerCase();
- this.amOrPm = this.hours < 12 || period === 'am' ? 'AM' : 'PM';
- }
- };
-
- // Show popover
- ClockPicker.prototype.show = function(e){
- // Not show again
- if (this.isShown) {
- return;
- }
-
- raiseCallback(this.options.beforeShow);
-
- var self = this;
-
- // Initialize
- if (! this.isAppended) {
- // Append popover to body
- $body = $(document.body).append(this.popover);
-
- // Reset position when resize
- $win.on('resize.clockpicker' + this.id, function(){
- if (self.isShown) {
- self.locate();
- }
- });
-
- this.isAppended = true;
- }
-
- // Get the time from the input field
- this.parseInputValue();
-
- this.spanHours.html(leadingZero(this.hours));
- this.spanMinutes.html(leadingZero(this.minutes));
-
- if (this.options.twelvehour) {
- this.spanAmPm.empty().append(this.amOrPm);
- }
-
- // Toggle to hours view
- this.toggleView('hours');
-
- // Set position
- this.locate();
-
- this.isShown = true;
-
- // Hide when clicking or tabbing on any element except the clock, input and addon
- $doc.on('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id, function(e){
- var target = $(e.target);
- if (target.closest(self.popover).length === 0 &&
- target.closest(self.addon).length === 0 &&
- target.closest(self.input).length === 0) {
- self.hide();
- }
- });
-
- // Hide when ESC is pressed
- $doc.on('keyup.clockpicker.' + this.id, function(e){
- if (e.keyCode === 27) {
- self.hide();
- }
- });
-
- raiseCallback(this.options.afterShow);
- };
-
- // Hide popover
- ClockPicker.prototype.hide = function(){
- raiseCallback(this.options.beforeHide);
-
- this.isShown = false;
-
- // Unbinding events on document
- $doc.off('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id);
- $doc.off('keyup.clockpicker.' + this.id);
-
- this.popover.hide();
-
- raiseCallback(this.options.afterHide);
- };
-
- // Toggle to hours or minutes view
- ClockPicker.prototype.toggleView = function(view, delay){
- var raiseAfterHourSelect = false;
- if (view === 'minutes' && $(this.hoursView).css("visibility") === "visible") {
- raiseCallback(this.options.beforeHourSelect);
- raiseAfterHourSelect = true;
- }
- var isHours = view === 'hours',
- nextView = isHours ? this.hoursView : this.minutesView,
- hideView = isHours ? this.minutesView : this.hoursView;
-
- this.currentView = view;
-
- this.spanHours.toggleClass('text-primary', isHours);
- this.spanMinutes.toggleClass('text-primary', ! isHours);
-
- // Let's make transitions
- hideView.addClass('clockpicker-dial-out');
- nextView.css('visibility', 'visible').removeClass('clockpicker-dial-out');
-
- // Reset clock hand
- this.resetClock(delay);
-
- // After transitions ended
- clearTimeout(this.toggleViewTimer);
- this.toggleViewTimer = setTimeout(function(){
- hideView.css('visibility', 'hidden');
- }, duration);
-
- if (raiseAfterHourSelect) {
- raiseCallback(this.options.afterHourSelect);
- }
- };
-
- // Reset clock hand
- ClockPicker.prototype.resetClock = function(delay){
- var view = this.currentView,
- value = this[view],
- isHours = view === 'hours',
- unit = Math.PI / (isHours ? 6 : 30),
- radian = value * unit,
- radius = isHours && value > 0 && value < 13 ? innerRadius : outerRadius,
- x = Math.sin(radian) * radius,
- y = - Math.cos(radian) * radius,
- self = this;
- if (svgSupported && delay) {
- self.canvas.addClass('clockpicker-canvas-out');
- setTimeout(function(){
- self.canvas.removeClass('clockpicker-canvas-out');
- self.setHand(x, y);
- }, delay);
- } else {
- this.setHand(x, y);
- }
- };
-
- // Set clock hand to (x, y)
- ClockPicker.prototype.setHand = function(x, y, dragging){
- var radian = Math.atan2(x, - y),
- isHours = this.currentView === 'hours',
- z = Math.sqrt(x * x + y * y),
- options = this.options,
- inner = isHours && z < (outerRadius + innerRadius) / 2,
- radius = inner ? innerRadius : outerRadius,
- unit,
- value;
-
- // Calculate the unit
- if (isHours) {
- unit = options.hourstep / 6 * Math.PI
- } else {
- unit = options.minutestep / 30 * Math.PI
- }
-
- if (options.twelvehour) {
- radius = outerRadius;
- }
-
- // Radian should in range [0, 2PI]
- if (radian < 0) {
- radian = Math.PI * 2 + radian;
- }
-
- // Get the round value
- value = Math.round(radian / unit);
-
- // Get the round radian
- radian = value * unit;
-
- // Correct the hours or minutes
- if (isHours) {
- value *= options.hourstep;
-
- if (! options.twelvehour && ! inner) {
- value += 12;
- }
- if (options.twelvehour && value === 0) {
- value = 12;
- }
- if (value === 24) {
- value = 0;
- }
- } else {
- value *= options.minutestep;
- if (value === 60) {
- value = 0;
- }
- }
-
- // Once hours or minutes changed, vibrate the device
- if (this[this.currentView] !== value) {
- if (vibrate && this.options.vibrate) {
- // Do not vibrate too frequently
- if (! this.vibrateTimer) {
- navigator[vibrate](10);
- this.vibrateTimer = setTimeout($.proxy(function(){
- this.vibrateTimer = null;
- }, this), 100);
- }
- }
- }
-
- this[this.currentView] = value;
- this[isHours ? 'spanHours' : 'spanMinutes'].html(leadingZero(value));
-
- // If svg is not supported, just add an active class to the tick
- if (! svgSupported) {
- this[isHours ? 'hoursView' : 'minutesView'].find('.clockpicker-tick').each(function(){
- var tick = $(this);
- tick.toggleClass('active', value === + tick.html());
- });
- return;
- }
-
- // Place clock hand at the top when dragging
- if (dragging || (! isHours && value % 5)) {
- this.g.insertBefore(this.hand, this.bearing);
- this.g.insertBefore(this.bg, this.fg);
- this.bg.setAttribute('class', 'clockpicker-canvas-bg clockpicker-canvas-bg-trans');
- } else {
- // Or place it at the bottom
- this.g.insertBefore(this.hand, this.bg);
- this.g.insertBefore(this.fg, this.bg);
- this.bg.setAttribute('class', 'clockpicker-canvas-bg');
- }
-
- // Set clock hand and others' position
- var cx = Math.sin(radian) * radius,
- cy = - Math.cos(radian) * radius;
- this.hand.setAttribute('x2', cx);
- this.hand.setAttribute('y2', cy);
- this.bg.setAttribute('cx', cx);
- this.bg.setAttribute('cy', cy);
- this.fg.setAttribute('cx', cx);
- this.fg.setAttribute('cy', cy);
- };
-
- // Allow user to get time time as Date object
- ClockPicker.prototype.getTime = function(callback) {
- this.parseInputValue();
-
- var hours = this.hours;
- if (this.options.twelvehour && hours < 12 && this.amOrPm === 'PM') {
- hours += 12;
- }
-
- var selectedTime = new Date();
- selectedTime.setMinutes(this.minutes)
- selectedTime.setHours(hours);
- selectedTime.setSeconds(0);
-
- return callback && callback.apply(this.element, selectedTime) || selectedTime;
- }
-
- // Hours and minutes are selected
- ClockPicker.prototype.done = function() {
- raiseCallback(this.options.beforeDone);
- this.hide();
- var last = this.input.prop('value'),
- value = leadingZero(this.hours) + ':' + leadingZero(this.minutes);
- if (this.options.twelvehour) {
- value = value + this.amOrPm;
- }
-
- this.input.prop('value', value);
- if (value !== last) {
- this.input.triggerHandler('change');
- if (! this.isInput) {
- this.element.trigger('change');
- }
- }
-
- if (this.options.autoclose) {
- this.input.trigger('blur');
- }
-
- raiseCallback(this.options.afterDone);
- };
-
- // Remove clockpicker from input
- ClockPicker.prototype.remove = function() {
- this.element.removeData('clockpicker');
- this.input.off('focus.clockpicker click.clockpicker');
- this.addon.off('click.clockpicker');
- if (this.isShown) {
- this.hide();
- }
- if (this.isAppended) {
- $win.off('resize.clockpicker' + this.id);
- this.popover.remove();
- }
- };
-
- // Extends $.fn.clockpicker
- $.fn.clockpicker = function(option){
- var args = Array.prototype.slice.call(arguments, 1);
-
- function handleClockPickerRequest() {
- var $this = $(this),
- data = $this.data('clockpicker');
- if (! data) {
- var options = $.extend({}, ClockPicker.DEFAULTS, $this.data(), typeof option == 'object' && option);
- $this.data('clockpicker', new ClockPicker($this, options));
- } else {
- // Manual operations. show, hide, remove, getTime, e.g.
- if (typeof data[option] === 'function') {
- return data[option].apply(data, args);
- }
- }
- }
-
- // If we explicitly do a call on a single element then we can return the value (if needed)
- // This allows us, for example, to return the value of getTime
- if (this.length == 1) {
- var returnValue = handleClockPickerRequest.apply(this[0]);
-
- // If we do not have any return value then return the object itself so you can chain
- return returnValue !== undefined ? returnValue : this;
- }
-
- // If we do have a list then we do not care about return values
- return this.each(handleClockPickerRequest);
- };
-}());
diff --git a/ACS Frontend/libman.json b/ACS Frontend/libman.json
index 0b82d14..ec47828 100644
--- a/ACS Frontend/libman.json
+++ b/ACS Frontend/libman.json
@@ -23,17 +23,60 @@
"destination": "Scripts/signalr/"
},
{
- "library": "bootstrap@5.3.1",
- "destination": "Content/bootstrap/"
- },
- {
+ "provider": "cdnjs",
"library": "openlayers@8.1.0",
"destination": "Content/openlayers/"
},
{
- "provider": "jsdelivr",
- "library": "jquery-validation-unobtrusive@4.0.0",
- "destination": "Scripts/jquery-validation-unobtrusive/"
+ "provider": "cdnjs",
+ "library": "bootstrap@5.3.1",
+ "destination": "Content/bootstrap/",
+ "files": [
+ "js/bootstrap.bundle.js",
+ "js/bootstrap.bundle.js.map",
+ "js/bootstrap.bundle.min.js",
+ "js/bootstrap.bundle.min.js.map",
+ "js/bootstrap.esm.js",
+ "js/bootstrap.esm.js.map",
+ "js/bootstrap.esm.min.js",
+ "js/bootstrap.esm.min.js.map",
+ "js/bootstrap.js",
+ "js/bootstrap.js.map",
+ "js/bootstrap.min.js",
+ "js/bootstrap.min.js.map",
+ "css/bootstrap.rtl.min.css.map",
+ "css/bootstrap.rtl.min.css",
+ "css/bootstrap.rtl.css.map",
+ "css/bootstrap.rtl.css",
+ "css/bootstrap.min.css.map",
+ "css/bootstrap.min.css",
+ "css/bootstrap.css.map",
+ "css/bootstrap.css",
+ "css/bootstrap-utilities.rtl.min.css.map",
+ "css/bootstrap-utilities.rtl.min.css",
+ "css/bootstrap-utilities.rtl.css.map",
+ "css/bootstrap-utilities.rtl.css",
+ "css/bootstrap-utilities.min.css.map",
+ "css/bootstrap-utilities.min.css",
+ "css/bootstrap-utilities.css.map",
+ "css/bootstrap-utilities.css",
+ "css/bootstrap-reboot.rtl.min.css.map",
+ "css/bootstrap-reboot.rtl.min.css",
+ "css/bootstrap-reboot.rtl.css.map",
+ "css/bootstrap-reboot.rtl.css",
+ "css/bootstrap-reboot.min.css.map",
+ "css/bootstrap-reboot.min.css",
+ "css/bootstrap-reboot.css.map",
+ "css/bootstrap-reboot.css",
+ "css/bootstrap-grid.rtl.min.css.map",
+ "css/bootstrap-grid.rtl.min.css",
+ "css/bootstrap-grid.rtl.css.map",
+ "css/bootstrap-grid.rtl.css",
+ "css/bootstrap-grid.min.css.map",
+ "css/bootstrap-grid.min.css",
+ "css/bootstrap-grid.css.map",
+ "css/bootstrap-grid.css"
+ ]
}
]
}
\ No newline at end of file