diff --git a/app/Models/Flight.php b/app/Models/Flight.php index 293ad344..fa001c20 100644 --- a/app/Models/Flight.php +++ b/app/Models/Flight.php @@ -55,6 +55,8 @@ class Flight extends Model 'flight_type', 'route', 'notes', + 'start_date', + 'end_date', 'has_bid', 'active', ]; @@ -65,6 +67,8 @@ class Flight extends Model 'level' => 'integer', 'distance' => 'float', 'flight_time' => 'integer', + 'start_date' => 'date', + 'end_date' => 'date', 'has_bid' => 'boolean', 'active' => 'boolean', ]; diff --git a/package.json b/package.json index e3185b5e..fddad366 100755 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "moment": "^2.21.0", "paper-dashboard": "^1.1.0", "pe7-icon": "^1.0.4", + "pikaday": "^1.7.0", "pjax": "^0.2.5", "popper.js": "^1.14.1", "rivets": "^0.9.6", diff --git a/public/assets/admin/css/admin.css b/public/assets/admin/css/admin.css index e67f4756..e7ce00bd 100644 --- a/public/assets/admin/css/admin.css +++ b/public/assets/admin/css/admin.css @@ -4,7 +4,11 @@ */ .select2-container { - margin-top: 5px; + margin-top: 2px; +} + +textarea.input-text { + padding: 10px } .border-blue-bottom { diff --git a/public/assets/admin/css/vendor.css b/public/assets/admin/css/vendor.css index ac3ea9a1..76338543 100644 --- a/public/assets/admin/css/vendor.css +++ b/public/assets/admin/css/vendor.css @@ -10838,6 +10838,246 @@ button.close { .select2-container--classic.select2-container--open .select2-dropdown { border-color: #5897fb; } +@charset "UTF-8"; + +/*! + * Pikaday + * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/ + */ + +.pika-single { + z-index: 9999; + display: block; + position: relative; + color: #333; + background: #fff; + border: 1px solid #ccc; + border-bottom-color: #bbb; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +/* +clear child float (pika-lendar), using the famous micro clearfix hack +http://nicolasgallagher.com/micro-clearfix-hack/ +*/ +.pika-single:before, +.pika-single:after { + content: " "; + display: table; +} +.pika-single:after { clear: both } +.pika-single { *zoom: 1 } + +.pika-single.is-hidden { + display: none; +} + +.pika-single.is-bound { + position: absolute; + box-shadow: 0 5px 15px -5px rgba(0,0,0,.5); +} + +.pika-lendar { + float: left; + width: 240px; + margin: 8px; +} + +.pika-title { + position: relative; + text-align: center; +} + +.pika-label { + display: inline-block; + *display: inline; + position: relative; + z-index: 9999; + overflow: hidden; + margin: 0; + padding: 5px 3px; + font-size: 14px; + line-height: 20px; + font-weight: bold; + background-color: #fff; +} +.pika-title select { + cursor: pointer; + position: absolute; + z-index: 9998; + margin: 0; + left: 0; + top: 5px; + filter: alpha(opacity=0); + opacity: 0; +} + +.pika-prev, +.pika-next { + display: block; + cursor: pointer; + position: relative; + outline: none; + border: 0; + padding: 0; + width: 20px; + height: 30px; + /* hide text using text-indent trick, using width value (it's enough) */ + text-indent: 20px; + white-space: nowrap; + overflow: hidden; + background-color: transparent; + background-position: center center; + background-repeat: no-repeat; + background-size: 75% 75%; + opacity: .5; + *position: absolute; + *top: 0; +} + +.pika-prev:hover, +.pika-next:hover { + opacity: 1; +} + +.pika-prev, +.is-rtl .pika-next { + float: left; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg=='); + *left: 0; +} + +.pika-next, +.is-rtl .pika-prev { + float: right; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII='); + *right: 0; +} + +.pika-prev.is-disabled, +.pika-next.is-disabled { + cursor: default; + opacity: .2; +} + +.pika-select { + display: inline-block; + *display: inline; +} + +.pika-table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + border: 0; +} + +.pika-table th, +.pika-table td { + width: 14.285714285714286%; + padding: 0; +} + +.pika-table th { + color: #999; + font-size: 12px; + line-height: 25px; + font-weight: bold; + text-align: center; +} + +.pika-button { + cursor: pointer; + display: block; + box-sizing: border-box; + -moz-box-sizing: border-box; + outline: none; + border: 0; + margin: 0; + width: 100%; + padding: 5px; + color: #666; + font-size: 12px; + line-height: 15px; + text-align: right; + background: #f5f5f5; +} + +.pika-week { + font-size: 11px; + color: #999; +} + +.is-today .pika-button { + color: #33aaff; + font-weight: bold; +} + +.is-selected .pika-button, +.has-event .pika-button { + color: #fff; + font-weight: bold; + background: #33aaff; + box-shadow: inset 0 1px 3px #178fe5; + border-radius: 3px; +} + +.has-event .pika-button { + background: #005da9; + box-shadow: inset 0 1px 3px #0076c9; +} + +.is-disabled .pika-button, +.is-inrange .pika-button { + background: #D5E9F7; +} + +.is-startrange .pika-button { + color: #fff; + background: #6CB31D; + box-shadow: none; + border-radius: 3px; +} + +.is-endrange .pika-button { + color: #fff; + background: #33aaff; + box-shadow: none; + border-radius: 3px; +} + +.is-disabled .pika-button { + pointer-events: none; + cursor: default; + color: #999; + opacity: .3; +} + +.is-outside-current-month .pika-button { + color: #999; + opacity: .3; +} + +.is-selection-disabled { + pointer-events: none; + cursor: default; +} + +.pika-button:hover, +.pika-row.pick-whole-week:hover .pika-button { + color: #fff; + background: #ff8000; + box-shadow: none; + border-radius: 3px; +} + +/* styling for abbr */ +.pika-table abbr { + border-bottom: none; + cursor: help; +} + + /*! X-editable - v1.5.1 * In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery * http://github.com/vitalets/x-editable @@ -12448,7 +12688,7 @@ hr { } .main-panel { - background-color: rgba(255, 255, 255, 0.96); + background-color: #ebeff2; position: relative; z-index: 2; float: right; @@ -12457,7 +12697,7 @@ hr { } .main-panel > .content { - padding: 30px 15px; + padding: 0 2px; min-height: calc(100% - 123px); } @@ -13193,7 +13433,8 @@ fieldset[disabled] .btn-neutral.active { border: 1px solid #E3E3E3; color: #333333; line-height: 1em; - font-size: 0.8571em; + font-size: 14px; + font-weight: 400; -webkit-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; -webkit-box-shadow: none; @@ -13514,13 +13755,14 @@ fieldset[disabled] .btn-neutral.active { textarea.form-control { max-width: 100%; - padding: 10px 10px 0 0; + padding: 10px 10px; resize: none; background-color: transparent; border: 1px solid #E3E3E3; color: #333333; line-height: 1em; - font-size: 0.8571em; + font-size: 14px; + font-weight: 400; border-radius: 0; } @@ -16221,9 +16463,8 @@ fieldset[disabled] .card .btn-neutral.active { position: relative; overflow: hidden; width: 100%; - margin-bottom: 20px; + /*margin-bottom: 20px;*/ font-weight: bold; - text-transform: uppercase; } .form-container h6 { diff --git a/public/assets/admin/css/vendor.min.css b/public/assets/admin/css/vendor.min.css index cd0308f7..1e10d2f4 100644 --- a/public/assets/admin/css/vendor.min.css +++ b/public/assets/admin/css/vendor.min.css @@ -569,7 +569,7 @@ hr { } .main-panel { - background-color: rgba(255, 255, 255, 0.96); + background-color: #ebeff2; position: relative; z-index: 2; float: right; @@ -578,7 +578,7 @@ hr { } .main-panel > .content { - padding: 30px 15px; + padding: 0 2px; min-height: calc(100% - 123px); } @@ -1314,7 +1314,8 @@ fieldset[disabled] .btn-neutral.active { border: 1px solid #E3E3E3; color: #333333; line-height: 1em; - font-size: 0.8571em; + font-size: 14px; + font-weight: 400; -webkit-transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; -webkit-box-shadow: none; @@ -1635,13 +1636,14 @@ fieldset[disabled] .btn-neutral.active { textarea.form-control { max-width: 100%; - padding: 10px 10px 0 0; + padding: 10px 10px; resize: none; background-color: transparent; border: 1px solid #E3E3E3; color: #333333; line-height: 1em; - font-size: 0.8571em; + font-size: 14px; + font-weight: 400; border-radius: 0; } @@ -4342,9 +4344,8 @@ fieldset[disabled] .card .btn-neutral.active { position: relative; overflow: hidden; width: 100%; - margin-bottom: 20px; + /*margin-bottom: 20px;*/ font-weight: bold; - text-transform: uppercase; } .form-container h6 { diff --git a/public/assets/admin/js/vendor.js b/public/assets/admin/js/vendor.js index c42f0e17..1ee244d1 100644 --- a/public/assets/admin/js/vendor.js +++ b/public/assets/admin/js/vendor.js @@ -44514,6 +44514,1252 @@ S2.define('jquery.select2',[ } })(window.jQuery || window.Zepto); +/*! + * Pikaday + * + * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday + */ + +(function (root, factory) +{ + 'use strict'; + + var moment; + if (typeof exports === 'object') { + // CommonJS module + // Load moment.js as an optional dependency + try { moment = require('moment'); } catch (e) {} + module.exports = factory(moment); + } else if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(function (req) + { + // Load moment.js as an optional dependency + var id = 'moment'; + try { moment = req(id); } catch (e) {} + return factory(moment); + }); + } else { + root.Pikaday = factory(root.moment); + } +}(this, function (moment) +{ + 'use strict'; + + /** + * feature detection and helper functions + */ + var hasMoment = typeof moment === 'function', + + hasEventListeners = !!window.addEventListener, + + document = window.document, + + sto = window.setTimeout, + + addEvent = function(el, e, callback, capture) + { + if (hasEventListeners) { + el.addEventListener(e, callback, !!capture); + } else { + el.attachEvent('on' + e, callback); + } + }, + + removeEvent = function(el, e, callback, capture) + { + if (hasEventListeners) { + el.removeEventListener(e, callback, !!capture); + } else { + el.detachEvent('on' + e, callback); + } + }, + + trim = function(str) + { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g,''); + }, + + hasClass = function(el, cn) + { + return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1; + }, + + addClass = function(el, cn) + { + if (!hasClass(el, cn)) { + el.className = (el.className === '') ? cn : el.className + ' ' + cn; + } + }, + + removeClass = function(el, cn) + { + el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' ')); + }, + + isArray = function(obj) + { + return (/Array/).test(Object.prototype.toString.call(obj)); + }, + + isDate = function(obj) + { + return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime()); + }, + + isWeekend = function(date) + { + var day = date.getDay(); + return day === 0 || day === 6; + }, + + isLeapYear = function(year) + { + // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951 + return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; + }, + + getDaysInMonth = function(year, month) + { + return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; + }, + + setToStartOfDay = function(date) + { + if (isDate(date)) date.setHours(0,0,0,0); + }, + + compareDates = function(a,b) + { + // weak date comparison (use setToStartOfDay(date) to ensure correct result) + return a.getTime() === b.getTime(); + }, + + extend = function(to, from, overwrite) + { + var prop, hasProp; + for (prop in from) { + hasProp = to[prop] !== undefined; + if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) { + if (isDate(from[prop])) { + if (overwrite) { + to[prop] = new Date(from[prop].getTime()); + } + } + else if (isArray(from[prop])) { + if (overwrite) { + to[prop] = from[prop].slice(0); + } + } else { + to[prop] = extend({}, from[prop], overwrite); + } + } else if (overwrite || !hasProp) { + to[prop] = from[prop]; + } + } + return to; + }, + + fireEvent = function(el, eventName, data) + { + var ev; + + if (document.createEvent) { + ev = document.createEvent('HTMLEvents'); + ev.initEvent(eventName, true, false); + ev = extend(ev, data); + el.dispatchEvent(ev); + } else if (document.createEventObject) { + ev = document.createEventObject(); + ev = extend(ev, data); + el.fireEvent('on' + eventName, ev); + } + }, + + adjustCalendar = function(calendar) { + if (calendar.month < 0) { + calendar.year -= Math.ceil(Math.abs(calendar.month)/12); + calendar.month += 12; + } + if (calendar.month > 11) { + calendar.year += Math.floor(Math.abs(calendar.month)/12); + calendar.month -= 12; + } + return calendar; + }, + + /** + * defaults and localisation + */ + defaults = { + + // bind the picker to a form field + field: null, + + // automatically show/hide the picker on `field` focus (default `true` if `field` is set) + bound: undefined, + + // position of the datepicker, relative to the field (default to bottom & left) + // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position) + position: 'bottom left', + + // automatically fit in the viewport even if it means repositioning from the position option + reposition: true, + + // the default output format for `.toString()` and `field` value + format: 'YYYY-MM-DD', + + // the toString function which gets passed a current date object and format + // and returns a string + toString: null, + + // used to create date object from current input string + parse: null, + + // the initial date to view when first opened + defaultDate: null, + + // make the `defaultDate` the initial selected value + setDefaultDate: false, + + // first day of week (0: Sunday, 1: Monday etc) + firstDay: 0, + + // the default flag for moment's strict date parsing + formatStrict: false, + + // the minimum/earliest date that can be selected + minDate: null, + // the maximum/latest date that can be selected + maxDate: null, + + // number of years either side, or array of upper/lower range + yearRange: 10, + + // show week numbers at head of row + showWeekNumber: false, + + // Week picker mode + pickWholeWeek: false, + + // used internally (don't config outside) + minYear: 0, + maxYear: 9999, + minMonth: undefined, + maxMonth: undefined, + + startRange: null, + endRange: null, + + isRTL: false, + + // Additional text to append to the year in the calendar title + yearSuffix: '', + + // Render the month after year in the calendar title + showMonthAfterYear: false, + + // Render days of the calendar grid that fall in the next or previous month + showDaysInNextAndPreviousMonths: false, + + // Allows user to select days that fall in the next or previous month + enableSelectionDaysInNextAndPreviousMonths: false, + + // how many months are visible + numberOfMonths: 1, + + // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`) + // only used for the first display or when a selected date is not visible + mainCalendar: 'left', + + // Specify a DOM element to render the calendar in + container: undefined, + + // Blur field when date is selected + blurFieldOnSelect : true, + + // internationalization + i18n: { + previousMonth : 'Previous Month', + nextMonth : 'Next Month', + months : ['January','February','March','April','May','June','July','August','September','October','November','December'], + weekdays : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'], + weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'] + }, + + // Theme Classname + theme: null, + + // events array + events: [], + + // callback function + onSelect: null, + onOpen: null, + onClose: null, + onDraw: null, + + // Enable keyboard input + keyboardInput: true + }, + + + /** + * templating functions to abstract HTML rendering + */ + renderDayName = function(opts, day, abbr) + { + day += opts.firstDay; + while (day >= 7) { + day -= 7; + } + return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day]; + }, + + renderDay = function(opts) + { + var arr = []; + var ariaSelected = 'false'; + if (opts.isEmpty) { + if (opts.showDaysInNextAndPreviousMonths) { + arr.push('is-outside-current-month'); + + if(!opts.enableSelectionDaysInNextAndPreviousMonths) { + arr.push('is-selection-disabled'); + } + + } else { + return ''; + } + } + if (opts.isDisabled) { + arr.push('is-disabled'); + } + if (opts.isToday) { + arr.push('is-today'); + } + if (opts.isSelected) { + arr.push('is-selected'); + ariaSelected = 'true'; + } + if (opts.hasEvent) { + arr.push('has-event'); + } + if (opts.isInRange) { + arr.push('is-inrange'); + } + if (opts.isStartRange) { + arr.push('is-startrange'); + } + if (opts.isEndRange) { + arr.push('is-endrange'); + } + return '' + + '' + + ''; + }, + + renderWeek = function (d, m, y) { + // Lifted from http://javascript.about.com/library/blweekyear.htm, lightly modified. + var onejan = new Date(y, 0, 1), + weekNum = Math.ceil((((new Date(y, m, d) - onejan) / 86400000) + onejan.getDay()+1)/7); + return '' + weekNum + ''; + }, + + renderRow = function(days, isRTL, pickWholeWeek, isRowSelected) + { + return '' + (isRTL ? days.reverse() : days).join('') + ''; + }, + + renderBody = function(rows) + { + return '' + rows.join('') + ''; + }, + + renderHead = function(opts) + { + var i, arr = []; + if (opts.showWeekNumber) { + arr.push(''); + } + for (i = 0; i < 7; i++) { + arr.push('' + renderDayName(opts, i, true) + ''); + } + return '' + (opts.isRTL ? arr.reverse() : arr).join('') + ''; + }, + + renderTitle = function(instance, c, year, month, refYear, randId) + { + var i, j, arr, + opts = instance._o, + isMinYear = year === opts.minYear, + isMaxYear = year === opts.maxYear, + html = '
', + monthHtml, + yearHtml, + prev = true, + next = true; + + for (arr = [], i = 0; i < 12; i++) { + arr.push(''); + } + + monthHtml = '
' + opts.i18n.months[month] + '
'; + + if (isArray(opts.yearRange)) { + i = opts.yearRange[0]; + j = opts.yearRange[1] + 1; + } else { + i = year - opts.yearRange; + j = 1 + year + opts.yearRange; + } + + for (arr = []; i < j && i <= opts.maxYear; i++) { + if (i >= opts.minYear) { + arr.push(''); + } + } + yearHtml = '
' + year + opts.yearSuffix + '
'; + + if (opts.showMonthAfterYear) { + html += yearHtml + monthHtml; + } else { + html += monthHtml + yearHtml; + } + + if (isMinYear && (month === 0 || opts.minMonth >= month)) { + prev = false; + } + + if (isMaxYear && (month === 11 || opts.maxMonth <= month)) { + next = false; + } + + if (c === 0) { + html += ''; + } + if (c === (instance._o.numberOfMonths - 1) ) { + html += ''; + } + + return html += '
'; + }, + + renderTable = function(opts, data, randId) + { + return '' + renderHead(opts) + renderBody(data) + '
'; + }, + + + /** + * Pikaday constructor + */ + Pikaday = function(options) + { + var self = this, + opts = self.config(options); + + self._onMouseDown = function(e) + { + if (!self._v) { + return; + } + e = e || window.event; + var target = e.target || e.srcElement; + if (!target) { + return; + } + + if (!hasClass(target, 'is-disabled')) { + if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) { + self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day'))); + if (opts.bound) { + sto(function() { + self.hide(); + if (opts.blurFieldOnSelect && opts.field) { + opts.field.blur(); + } + }, 100); + } + } + else if (hasClass(target, 'pika-prev')) { + self.prevMonth(); + } + else if (hasClass(target, 'pika-next')) { + self.nextMonth(); + } + } + if (!hasClass(target, 'pika-select')) { + // if this is touch event prevent mouse events emulation + if (e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + return false; + } + } else { + self._c = true; + } + }; + + self._onChange = function(e) + { + e = e || window.event; + var target = e.target || e.srcElement; + if (!target) { + return; + } + if (hasClass(target, 'pika-select-month')) { + self.gotoMonth(target.value); + } + else if (hasClass(target, 'pika-select-year')) { + self.gotoYear(target.value); + } + }; + + self._onKeyChange = function(e) + { + e = e || window.event; + + if (self.isVisible()) { + + switch(e.keyCode){ + case 13: + case 27: + if (opts.field) { + opts.field.blur(); + } + break; + case 37: + e.preventDefault(); + self.adjustDate('subtract', 1); + break; + case 38: + self.adjustDate('subtract', 7); + break; + case 39: + self.adjustDate('add', 1); + break; + case 40: + self.adjustDate('add', 7); + break; + } + } + }; + + self._onInputChange = function(e) + { + var date; + + if (e.firedBy === self) { + return; + } + if (opts.parse) { + date = opts.parse(opts.field.value, opts.format); + } else if (hasMoment) { + date = moment(opts.field.value, opts.format, opts.formatStrict); + date = (date && date.isValid()) ? date.toDate() : null; + } + else { + date = new Date(Date.parse(opts.field.value)); + } + if (isDate(date)) { + self.setDate(date); + } + if (!self._v) { + self.show(); + } + }; + + self._onInputFocus = function() + { + self.show(); + }; + + self._onInputClick = function() + { + self.show(); + }; + + self._onInputBlur = function() + { + // IE allows pika div to gain focus; catch blur the input field + var pEl = document.activeElement; + do { + if (hasClass(pEl, 'pika-single')) { + return; + } + } + while ((pEl = pEl.parentNode)); + + if (!self._c) { + self._b = sto(function() { + self.hide(); + }, 50); + } + self._c = false; + }; + + self._onClick = function(e) + { + e = e || window.event; + var target = e.target || e.srcElement, + pEl = target; + if (!target) { + return; + } + if (!hasEventListeners && hasClass(target, 'pika-select')) { + if (!target.onchange) { + target.setAttribute('onchange', 'return;'); + addEvent(target, 'change', self._onChange); + } + } + do { + if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) { + return; + } + } + while ((pEl = pEl.parentNode)); + if (self._v && target !== opts.trigger && pEl !== opts.trigger) { + self.hide(); + } + }; + + self.el = document.createElement('div'); + self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : ''); + + addEvent(self.el, 'mousedown', self._onMouseDown, true); + addEvent(self.el, 'touchend', self._onMouseDown, true); + addEvent(self.el, 'change', self._onChange); + + if (opts.keyboardInput) { + addEvent(document, 'keydown', self._onKeyChange); + } + + if (opts.field) { + if (opts.container) { + opts.container.appendChild(self.el); + } else if (opts.bound) { + document.body.appendChild(self.el); + } else { + opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling); + } + addEvent(opts.field, 'change', self._onInputChange); + + if (!opts.defaultDate) { + if (hasMoment && opts.field.value) { + opts.defaultDate = moment(opts.field.value, opts.format).toDate(); + } else { + opts.defaultDate = new Date(Date.parse(opts.field.value)); + } + opts.setDefaultDate = true; + } + } + + var defDate = opts.defaultDate; + + if (isDate(defDate)) { + if (opts.setDefaultDate) { + self.setDate(defDate, true); + } else { + self.gotoDate(defDate); + } + } else { + self.gotoDate(new Date()); + } + + if (opts.bound) { + this.hide(); + self.el.className += ' is-bound'; + addEvent(opts.trigger, 'click', self._onInputClick); + addEvent(opts.trigger, 'focus', self._onInputFocus); + addEvent(opts.trigger, 'blur', self._onInputBlur); + } else { + this.show(); + } + }; + + + /** + * public Pikaday API + */ + Pikaday.prototype = { + + + /** + * configure functionality + */ + config: function(options) + { + if (!this._o) { + this._o = extend({}, defaults, true); + } + + var opts = extend(this._o, options, true); + + opts.isRTL = !!opts.isRTL; + + opts.field = (opts.field && opts.field.nodeName) ? opts.field : null; + + opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null; + + opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field); + + opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field; + + opts.disableWeekends = !!opts.disableWeekends; + + opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null; + + var nom = parseInt(opts.numberOfMonths, 10) || 1; + opts.numberOfMonths = nom > 4 ? 4 : nom; + + if (!isDate(opts.minDate)) { + opts.minDate = false; + } + if (!isDate(opts.maxDate)) { + opts.maxDate = false; + } + if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) { + opts.maxDate = opts.minDate = false; + } + if (opts.minDate) { + this.setMinDate(opts.minDate); + } + if (opts.maxDate) { + this.setMaxDate(opts.maxDate); + } + + if (isArray(opts.yearRange)) { + var fallback = new Date().getFullYear() - 10; + opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback; + opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback; + } else { + opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange; + if (opts.yearRange > 100) { + opts.yearRange = 100; + } + } + + return opts; + }, + + /** + * return a formatted string of the current selection (using Moment.js if available) + */ + toString: function(format) + { + format = format || this._o.format; + if (!isDate(this._d)) { + return ''; + } + if (this._o.toString) { + return this._o.toString(this._d, format); + } + if (hasMoment) { + return moment(this._d).format(format); + } + return this._d.toDateString(); + }, + + /** + * return a Moment.js object of the current selection (if available) + */ + getMoment: function() + { + return hasMoment ? moment(this._d) : null; + }, + + /** + * set the current selection from a Moment.js object (if available) + */ + setMoment: function(date, preventOnSelect) + { + if (hasMoment && moment.isMoment(date)) { + this.setDate(date.toDate(), preventOnSelect); + } + }, + + /** + * return a Date object of the current selection + */ + getDate: function() + { + return isDate(this._d) ? new Date(this._d.getTime()) : null; + }, + + /** + * set the current selection + */ + setDate: function(date, preventOnSelect) + { + if (!date) { + this._d = null; + + if (this._o.field) { + this._o.field.value = ''; + fireEvent(this._o.field, 'change', { firedBy: this }); + } + + return this.draw(); + } + if (typeof date === 'string') { + date = new Date(Date.parse(date)); + } + if (!isDate(date)) { + return; + } + + var min = this._o.minDate, + max = this._o.maxDate; + + if (isDate(min) && date < min) { + date = min; + } else if (isDate(max) && date > max) { + date = max; + } + + this._d = new Date(date.getTime()); + setToStartOfDay(this._d); + this.gotoDate(this._d); + + if (this._o.field) { + this._o.field.value = this.toString(); + fireEvent(this._o.field, 'change', { firedBy: this }); + } + if (!preventOnSelect && typeof this._o.onSelect === 'function') { + this._o.onSelect.call(this, this.getDate()); + } + }, + + /** + * change view to a specific date + */ + gotoDate: function(date) + { + var newCalendar = true; + + if (!isDate(date)) { + return; + } + + if (this.calendars) { + var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1), + lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1), + visibleDate = date.getTime(); + // get the end of the month + lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1); + lastVisibleDate.setDate(lastVisibleDate.getDate()-1); + newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate); + } + + if (newCalendar) { + this.calendars = [{ + month: date.getMonth(), + year: date.getFullYear() + }]; + if (this._o.mainCalendar === 'right') { + this.calendars[0].month += 1 - this._o.numberOfMonths; + } + } + + this.adjustCalendars(); + }, + + adjustDate: function(sign, days) { + + var day = this.getDate() || new Date(); + var difference = parseInt(days)*24*60*60*1000; + + var newDay; + + if (sign === 'add') { + newDay = new Date(day.valueOf() + difference); + } else if (sign === 'subtract') { + newDay = new Date(day.valueOf() - difference); + } + + this.setDate(newDay); + }, + + adjustCalendars: function() { + this.calendars[0] = adjustCalendar(this.calendars[0]); + for (var c = 1; c < this._o.numberOfMonths; c++) { + this.calendars[c] = adjustCalendar({ + month: this.calendars[0].month + c, + year: this.calendars[0].year + }); + } + this.draw(); + }, + + gotoToday: function() + { + this.gotoDate(new Date()); + }, + + /** + * change view to a specific month (zero-index, e.g. 0: January) + */ + gotoMonth: function(month) + { + if (!isNaN(month)) { + this.calendars[0].month = parseInt(month, 10); + this.adjustCalendars(); + } + }, + + nextMonth: function() + { + this.calendars[0].month++; + this.adjustCalendars(); + }, + + prevMonth: function() + { + this.calendars[0].month--; + this.adjustCalendars(); + }, + + /** + * change view to a specific full year (e.g. "2012") + */ + gotoYear: function(year) + { + if (!isNaN(year)) { + this.calendars[0].year = parseInt(year, 10); + this.adjustCalendars(); + } + }, + + /** + * change the minDate + */ + setMinDate: function(value) + { + if(value instanceof Date) { + setToStartOfDay(value); + this._o.minDate = value; + this._o.minYear = value.getFullYear(); + this._o.minMonth = value.getMonth(); + } else { + this._o.minDate = defaults.minDate; + this._o.minYear = defaults.minYear; + this._o.minMonth = defaults.minMonth; + this._o.startRange = defaults.startRange; + } + + this.draw(); + }, + + /** + * change the maxDate + */ + setMaxDate: function(value) + { + if(value instanceof Date) { + setToStartOfDay(value); + this._o.maxDate = value; + this._o.maxYear = value.getFullYear(); + this._o.maxMonth = value.getMonth(); + } else { + this._o.maxDate = defaults.maxDate; + this._o.maxYear = defaults.maxYear; + this._o.maxMonth = defaults.maxMonth; + this._o.endRange = defaults.endRange; + } + + this.draw(); + }, + + setStartRange: function(value) + { + this._o.startRange = value; + }, + + setEndRange: function(value) + { + this._o.endRange = value; + }, + + /** + * refresh the HTML + */ + draw: function(force) + { + if (!this._v && !force) { + return; + } + var opts = this._o, + minYear = opts.minYear, + maxYear = opts.maxYear, + minMonth = opts.minMonth, + maxMonth = opts.maxMonth, + html = '', + randId; + + if (this._y <= minYear) { + this._y = minYear; + if (!isNaN(minMonth) && this._m < minMonth) { + this._m = minMonth; + } + } + if (this._y >= maxYear) { + this._y = maxYear; + if (!isNaN(maxMonth) && this._m > maxMonth) { + this._m = maxMonth; + } + } + + randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2); + + for (var c = 0; c < opts.numberOfMonths; c++) { + html += '
' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '
'; + } + + this.el.innerHTML = html; + + if (opts.bound) { + if(opts.field.type !== 'hidden') { + sto(function() { + opts.trigger.focus(); + }, 1); + } + } + + if (typeof this._o.onDraw === 'function') { + this._o.onDraw(this); + } + + if (opts.bound) { + // let the screen reader user know to use arrow keys + opts.field.setAttribute('aria-label', 'Use the arrow keys to pick a date'); + } + }, + + adjustPosition: function() + { + var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect; + + if (this._o.container) return; + + this.el.style.position = 'absolute'; + + field = this._o.trigger; + pEl = field; + width = this.el.offsetWidth; + height = this.el.offsetHeight; + viewportWidth = window.innerWidth || document.documentElement.clientWidth; + viewportHeight = window.innerHeight || document.documentElement.clientHeight; + scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop; + + if (typeof field.getBoundingClientRect === 'function') { + clientRect = field.getBoundingClientRect(); + left = clientRect.left + window.pageXOffset; + top = clientRect.bottom + window.pageYOffset; + } else { + left = pEl.offsetLeft; + top = pEl.offsetTop + pEl.offsetHeight; + while((pEl = pEl.offsetParent)) { + left += pEl.offsetLeft; + top += pEl.offsetTop; + } + } + + // default position is bottom & left + if ((this._o.reposition && left + width > viewportWidth) || + ( + this._o.position.indexOf('right') > -1 && + left - width + field.offsetWidth > 0 + ) + ) { + left = left - width + field.offsetWidth; + } + if ((this._o.reposition && top + height > viewportHeight + scrollTop) || + ( + this._o.position.indexOf('top') > -1 && + top - height - field.offsetHeight > 0 + ) + ) { + top = top - height - field.offsetHeight; + } + + this.el.style.left = left + 'px'; + this.el.style.top = top + 'px'; + }, + + /** + * render HTML for a particular month + */ + render: function(year, month, randId) + { + var opts = this._o, + now = new Date(), + days = getDaysInMonth(year, month), + before = new Date(year, month, 1).getDay(), + data = [], + row = []; + setToStartOfDay(now); + if (opts.firstDay > 0) { + before -= opts.firstDay; + if (before < 0) { + before += 7; + } + } + var previousMonth = month === 0 ? 11 : month - 1, + nextMonth = month === 11 ? 0 : month + 1, + yearOfPreviousMonth = month === 0 ? year - 1 : year, + yearOfNextMonth = month === 11 ? year + 1 : year, + daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth); + var cells = days + before, + after = cells; + while(after > 7) { + after -= 7; + } + cells += 7 - after; + var isWeekSelected = false; + for (var i = 0, r = 0; i < cells; i++) + { + var day = new Date(year, month, 1 + (i - before)), + isSelected = isDate(this._d) ? compareDates(day, this._d) : false, + isToday = compareDates(day, now), + hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false, + isEmpty = i < before || i >= (days + before), + dayNumber = 1 + (i - before), + monthNumber = month, + yearNumber = year, + isStartRange = opts.startRange && compareDates(opts.startRange, day), + isEndRange = opts.endRange && compareDates(opts.endRange, day), + isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange, + isDisabled = (opts.minDate && day < opts.minDate) || + (opts.maxDate && day > opts.maxDate) || + (opts.disableWeekends && isWeekend(day)) || + (opts.disableDayFn && opts.disableDayFn(day)); + + if (isEmpty) { + if (i < before) { + dayNumber = daysInPreviousMonth + dayNumber; + monthNumber = previousMonth; + yearNumber = yearOfPreviousMonth; + } else { + dayNumber = dayNumber - days; + monthNumber = nextMonth; + yearNumber = yearOfNextMonth; + } + } + + var dayConfig = { + day: dayNumber, + month: monthNumber, + year: yearNumber, + hasEvent: hasEvent, + isSelected: isSelected, + isToday: isToday, + isDisabled: isDisabled, + isEmpty: isEmpty, + isStartRange: isStartRange, + isEndRange: isEndRange, + isInRange: isInRange, + showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths, + enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths + }; + + if (opts.pickWholeWeek && isSelected) { + isWeekSelected = true; + } + + row.push(renderDay(dayConfig)); + + if (++r === 7) { + if (opts.showWeekNumber) { + row.unshift(renderWeek(i - before, month, year)); + } + data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected)); + row = []; + r = 0; + isWeekSelected = false; + } + } + return renderTable(opts, data, randId); + }, + + isVisible: function() + { + return this._v; + }, + + show: function() + { + if (!this.isVisible()) { + this._v = true; + this.draw(); + removeClass(this.el, 'is-hidden'); + if (this._o.bound) { + addEvent(document, 'click', this._onClick); + this.adjustPosition(); + } + if (typeof this._o.onOpen === 'function') { + this._o.onOpen.call(this); + } + } + }, + + hide: function() + { + var v = this._v; + if (v !== false) { + if (this._o.bound) { + removeEvent(document, 'click', this._onClick); + } + this.el.style.position = 'static'; // reset + this.el.style.left = 'auto'; + this.el.style.top = 'auto'; + addClass(this.el, 'is-hidden'); + this._v = false; + if (v !== undefined && typeof this._o.onClose === 'function') { + this._o.onClose.call(this); + } + } + }, + + /** + * GAME OVER + */ + destroy: function() + { + var opts = this._o; + + this.hide(); + removeEvent(this.el, 'mousedown', this._onMouseDown, true); + removeEvent(this.el, 'touchend', this._onMouseDown, true); + removeEvent(this.el, 'change', this._onChange); + if (opts.keyboardInput) { + removeEvent(document, 'keydown', this._onKeyChange); + } + if (opts.field) { + removeEvent(opts.field, 'change', this._onInputChange); + if (opts.bound) { + removeEvent(opts.trigger, 'click', this._onInputClick); + removeEvent(opts.trigger, 'focus', this._onInputFocus); + removeEvent(opts.trigger, 'blur', this._onInputBlur); + } + } + if (this.el.parentNode) { + this.el.parentNode.removeChild(this.el); + } + } + + }; + + return Pikaday; +})); + /*! X-editable - v1.5.1 * In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery * http://github.com/vitalets/x-editable diff --git a/public/mix-manifest.json b/public/mix-manifest.json index b95bc42c..5285617e 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,7 +1,7 @@ { "/assets/frontend/js/app.js": "/assets/frontend/js/app.js?id=3d5b0dff38050f6b5e0b", "/assets/frontend/css/now-ui-kit.css": "/assets/frontend/css/now-ui-kit.css?id=a64d6e004c25bd2720b2", - "/assets/admin/css/vendor.min.css": "/assets/admin/css/vendor.min.css?id=7b067ced063f89165b11", + "/assets/admin/css/vendor.min.css": "/assets/admin/css/vendor.min.css?id=bdc704679950dfc5db16", "/assets/admin/js/app.js": "/assets/admin/js/app.js?id=926a7c24ec36533523e3", "/assets/installer/js/app.js": "/assets/installer/js/app.js?id=c65781eda730445d666e", "/assets/fonts/glyphicons-halflings-regular.woff2": "/assets/fonts/glyphicons-halflings-regular.woff2?id=b5b5055c6d812c0f9f0d", @@ -9,8 +9,8 @@ "/assets/admin/img/clear.png": "/assets/admin/img/clear.png?id=0e92f4c3efc6988a3c96", "/assets/admin/img/loading.gif": "/assets/admin/img/loading.gif?id=90a4b76b4f11558691f6", "/assets/global/js/jquery.js": "/assets/global/js/jquery.js?id=6a07da9fae934baf3f74", - "/assets/admin/css/vendor.css": "/assets/admin/css/vendor.css?id=724120aacdfd53f887d8", - "/assets/admin/js/vendor.js": "/assets/admin/js/vendor.js?id=aa7db4bedfe23409f625", + "/assets/admin/css/vendor.css": "/assets/admin/css/vendor.css?id=cab0fdbdde73930463ea", + "/assets/admin/js/vendor.js": "/assets/admin/js/vendor.js?id=5130233c88c71fc60135", "/assets/admin/css/blue.png": "/assets/admin/css/blue.png?id=753a3c0dec86d3a38d9c", "/assets/admin/css/blue@2x.png": "/assets/admin/css/blue@2x.png?id=97da23d47b838cbd4bef", "/assets/global/js/vendor.js": "/assets/global/js/vendor.js?id=6436d215691e8f38eb12", diff --git a/resources/sass/admin/paper/_form-container.scss b/resources/sass/admin/paper/_form-container.scss index 6df28e6f..1c91ea4e 100644 --- a/resources/sass/admin/paper/_form-container.scss +++ b/resources/sass/admin/paper/_form-container.scss @@ -5,9 +5,9 @@ position: relative; overflow: hidden; width: 100%; - margin-bottom: 20px; + /*margin-bottom: 20px;*/ font-weight: bold; - text-transform: uppercase; + //text-transform: uppercase; h6 { font-size: 15px; diff --git a/resources/sass/admin/paper/_inputs.scss b/resources/sass/admin/paper/_inputs.scss index b353cd33..b551f459 100755 --- a/resources/sass/admin/paper/_inputs.scss +++ b/resources/sass/admin/paper/_inputs.scss @@ -7,7 +7,8 @@ border: 1px solid $light-gray; color: $black-color; line-height: 1em; - font-size: $font-size-small; + font-size: $font-size-base; + font-weight: 400; @include transition-input-focus-color(); @include box-shadow(none); @@ -229,13 +230,14 @@ textarea.form-control { max-width: 100%; - padding: 10px 10px 0 0; + padding: 10px 10px; resize: none; background-color: $transparent-bg; border: 1px solid $light-gray; color: $black-color; line-height: 1em; - font-size: $font-size-small; + font-size: $font-size-base; + font-weight: 400; border-radius: 0; &:focus, diff --git a/resources/sass/admin/paper/_sidebar-and-main-panel.scss b/resources/sass/admin/paper/_sidebar-and-main-panel.scss index 3c3c92f7..c82e00a6 100755 --- a/resources/sass/admin/paper/_sidebar-and-main-panel.scss +++ b/resources/sass/admin/paper/_sidebar-and-main-panel.scss @@ -174,8 +174,8 @@ } .main-panel{ - //background-color: $bg-nude; - background-color: $white-navbar; + background-color: $bg-nude; + //background-color: $white-navbar; position: relative; z-index: 2; float: right; @@ -183,7 +183,8 @@ min-height: 100%; > .content{ - padding: 30px 15px; + //padding: 30px 15px; + padding: 0 2px; min-height: calc(100% - 123px); } diff --git a/resources/views/admin/app.blade.php b/resources/views/admin/app.blade.php index b91c2984..3089f8f7 100644 --- a/resources/views/admin/app.blade.php +++ b/resources/views/admin/app.blade.php @@ -21,7 +21,6 @@ - {{----}} diff --git a/resources/views/admin/flights/edit.blade.php b/resources/views/admin/flights/edit.blade.php index a75dd961..68ef532a 100644 --- a/resources/views/admin/flights/edit.blade.php +++ b/resources/views/admin/flights/edit.blade.php @@ -2,30 +2,30 @@ @section('title', 'Edit Flight') @section('content') -
-
- {{ Form::model($flight, ['route' => ['admin.flights.update', $flight->id], 'method' => 'patch']) }} - @include('admin.flights.fields') - {{ Form::close() }} -
-
+
+
+ {{ Form::model($flight, ['route' => ['admin.flights.update', $flight->id], 'method' => 'patch']) }} + @include('admin.flights.fields') + {{ Form::close() }} +
+
-
-
- @include('admin.flights.flight_fields') +
+
+ @include('admin.flights.subfleets') +
-
-
-
- @include('admin.flights.subfleets') +
+
+ @include('admin.flights.flight_fields') +
-
-
-
- @include('admin.flights.fares') +
+
+ @include('admin.flights.fares') +
-
@endsection @include('admin.flights.scripts') diff --git a/resources/views/admin/flights/fares.blade.php b/resources/views/admin/flights/fares.blade.php index 7f34c984..059b5cc8 100644 --- a/resources/views/admin/flights/fares.blade.php +++ b/resources/views/admin/flights/fares.blade.php @@ -63,19 +63,18 @@
{{ Form::open(['url' => '/admin/flights/'.$flight->id.'/fares', - 'method' => 'post', - 'class' => 'pjax_fares_form form-inline' - ]) - }} + 'method' => 'post', + 'class' => 'pjax_fares_form form-inline' + ]) }} {{ Form::select('fare_id', $avail_fares, null, [ 'placeholder' => 'Select Fare', 'class' => 'ac-fare-dropdown form-control input-lg select2', - - ]) - }} - {{ Form::button(' add', - ['type' => 'submit', - 'class' => 'btn btn-success btn-s']) }} + 'style' => 'width: 400px;', + ]) }} + {{ Form::button(' add', [ + 'type' => 'submit', + 'class' => 'btn btn-success btn-s'] + ) }} {{ Form::close() }}
diff --git a/resources/views/admin/flights/fields.blade.php b/resources/views/admin/flights/fields.blade.php index 9c32c4c3..cf4872a2 100644 --- a/resources/views/admin/flights/fields.blade.php +++ b/resources/views/admin/flights/fields.blade.php @@ -5,34 +5,115 @@
 Flight Information
-
-
- {{ Form::label('airline_id', 'Airline:') }} * - {{ Form::select('airline_id', $airlines, null , ['class' => 'form-control select2']) }} -

{{ $errors->first('airline_id') }}

-
+
+
+
+ {{ Form::label('airline_id', 'Airline:') }} * + {{ Form::select('airline_id', $airlines, null , ['class' => 'form-control select2']) }} +

{{ $errors->first('airline_id') }}

+
+ + +
+ {{ Form::label('flight_number', 'Flight Number/Code/Leg') }} * + +
+ {{ Form::text('flight_number', null, ['class' => 'form-control', 'style' => 'width: 33%']) }} + {{ Form::text('route_code', null, ['class'=>'form-control', 'placeholder'=>'optional', 'style' => 'width: 33%']) }} + {{ Form::text('route_leg', null, ['class'=>'form-control', 'placeholder'=>'optional', 'style' => 'width: 33%']) }} +
+ +

{{ $errors->first('flight_number') }}

+

{{ $errors->first('route_code') }}

+

{{ $errors->first('route_leg') }}

+ +
- -
- {{ Form::label('flight_number', 'Flight Number:') }} * - {{ Form::text('flight_number', null, ['class' => 'form-control']) }} -

{{ $errors->first('flight_number') }}

+ +
+ {{ Form::label('level', 'Flight Type:') }} * + {{ Form::select('flight_type', $flight_types, null, ['class' => 'form-control select2']) }} +

{{ $errors->first('flight_type') }}

+
+ + +
+ {{ Form::label('flight_time', 'Flight Time (hours & minutes)') }} + +
+ {{ Form::number('hours', null, [ + 'class' => 'form-control', + 'placeholder' => 'hours', + 'style' => 'width: 50%', + ]) }} + + {{ Form::number('minutes', null, [ + 'class' => 'form-control', + 'placeholder' => 'minutes', + 'style' => 'width: 50%', + ]) }} +
+ +

{{ $errors->first('hours') }}

+

{{ $errors->first('minutes') }}

+ +
- -
- {{ Form::label('route_code', 'Route Code:') }} - {{ Form::text('route_code', null, ['class'=>'form-control', 'placeholder'=>'optional']) }} -

{{ $errors->first('route_code') }}

+ {{-- NEXT ROW --}} + +
+
+ {{ Form::label('dpt_airport_id', 'Departure Airport:') }} * + {{ Form::select('dpt_airport_id', $airports, null , ['class' => 'form-control select2']) }} +

{{ $errors->first('dpt_airport_id') }}

+
+ + +
+ {{ Form::label('arr_airport_id', 'Arrival Airport:') }} * + {{ Form::select('arr_airport_id', $airports, null , ['class' => 'form-control select2']) }} +

{{ $errors->first('arr_airport_id') }}

+
+ + +
+ {{ Form::label('alt_airport_id', 'Alt Airport:') }} + {{ Form::select('alt_airport_id', $alt_airports, null , ['class' => 'form-control select2']) }} +

{{ $errors->first('alt_airport_id') }}

+
- -
- {{ Form::label('route_leg', 'Route Leg:') }} - {{ Form::text('route_leg', null, ['class'=>'form-control', 'placeholder'=>'optional']) }} -

{{ $errors->first('route_leg') }}

+ + {{-- NEXT ROW --}} + +
+
+ {{ Form::label('dpt_time', 'Departure Time:') }} + {{ Form::text('dpt_time', null, ['class' => 'form-control']) }} +

{{ $errors->first('dpt_time') }}

+
+ +
+ {{ Form::label('arr_time', 'Arrival Time:') }} + {{ Form::text('arr_time', null, ['class' => 'form-control']) }} +

{{ $errors->first('arr_time') }}

+
+ +
+ {{ Form::label('level', 'Flight Level:') }} + {{ Form::text('level', null, ['class' => 'form-control']) }} +

{{ $errors->first('level') }}

+
+ +
+ {{ Form::label('distance', 'Distance:') }} in nautical miles + {{ Form::text('distance', null, ['class' => 'form-control']) }} +

{{ $errors->first('distance') }}

+
@@ -47,70 +128,52 @@
-
- - {{ Form::label('days[]', 'Monday') }} - {{ Form::checkbox( - 'days[]', - \App\Models\Enums\Days::MONDAY, - in_mask($days, \App\Models\Enums\Days::MONDAY), - ['class' => 'form-control icheck'] - ) }} - - - {{ Form::label('days[]', 'Tuesday') }} - {{ Form::checkbox( - 'days[]', - \App\Models\Enums\Days::TUESDAY, - in_mask($days, \App\Models\Enums\Days::TUESDAY), - ['class' => 'form-control icheck'] - ) }} - - - {{ Form::label('days[]', 'Wednesday') }} - {{ Form::checkbox( - 'days[]', - \App\Models\Enums\Days::WEDNESDAY, - in_mask($days, \App\Models\Enums\Days::WEDNESDAY), - ['class' => 'form-control icheck'] - ) }} - - - {{ Form::label('days[]', 'Thursday') }} - {{ Form::checkbox( - 'days[]', - \App\Models\Enums\Days::THURSDAY, - in_mask($days, \App\Models\Enums\Days::THURSDAY), - ['class' => 'form-control icheck'] - ) }} - - - {{ Form::label('days[]', 'Friday') }} - {{ Form::checkbox( - 'days[]', - \App\Models\Enums\Days::FRIDAY, - in_mask($days, \App\Models\Enums\Days::FRIDAY), - ['class' => 'form-control icheck'] - ) }} - - - {{ Form::label('days[]', 'Saturday') }} - {{ Form::checkbox( - 'days[]', - \App\Models\Enums\Days::SATURDAY, - in_mask($days, \App\Models\Enums\Days::SATURDAY), - ['class' => 'form-control icheck'] - ) }} - - - {{ Form::label('days[]', 'Sunday') }} - {{ Form::checkbox( - 'days[]', - \App\Models\Enums\Days::SUNDAY, - in_mask($days, \App\Models\Enums\Days::SUNDAY), - ['class' => 'form-control icheck'] - ) }} - + +
+ {{ Form::label('start_date', 'Start Date') }} + optional + {{ Form::text('start_date', null, ['id' => 'start_date', 'class' => 'form-control']) }} +
+ +
+ {{ Form::label('end_date', 'End Date') }} + optional + {{ Form::text('end_date', null, ['id' => 'end_date', 'class' => 'form-control']) }} +
+ +
+ {{Form::label('days', 'Days of Week')}} + optional +
@@ -119,93 +182,41 @@
- -
- {{ Form::label('level', 'Flight Type:') }} * - {{ Form::select('flight_type', $flight_types, null, ['class' => 'form-control select2']) }} -

{{ $errors->first('flight_type') }}

-
- -
- {{ Form::label('dpt_airport_id', 'Departure Airport:') }} * - {{ Form::select('dpt_airport_id', $airports, null , ['class' => 'form-control select2']) }} -

{{ $errors->first('dpt_airport_id') }}

-
- - -
- {{ Form::label('arr_airport_id', 'Arrival Airport:') }} * - {{ Form::select('arr_airport_id', $airports, null , ['class' => 'form-control select2']) }} -

{{ $errors->first('arr_airport_id') }}

-
- - -
- {{ Form::label('alt_airport_id', 'Alt Airport:') }} - {{ Form::select('alt_airport_id', $alt_airports, null , ['class' => 'form-control select2']) }} -

{{ $errors->first('alt_airport_id') }}

-
-
- - -
- -
- {{ Form::label('dpt_time', 'Departure Time:') }} - {{ Form::text('dpt_time', null, ['class' => 'form-control']) }} -

{{ $errors->first('dpt_time') }}

-
- -
- {{ Form::label('arr_time', 'Arrival Time:') }} - {{ Form::text('arr_time', null, ['class' => 'form-control']) }} -

{{ $errors->first('arr_time') }}

-
- -
- {{ Form::label('flight_time', 'Flight Time (hours & minutes):') }} -
- {{ Form::number('hours', null, [ - 'class' => 'form-control', - 'placeholder' => 'hours' - ]) }} -
-
- {{ Form::number('minutes', null, [ - 'class' => 'form-control', - 'placeholder' => 'minutes' - ]) }} +
+
+
+  Route +
+
+ +
+ {{ Form::textarea('route', null, [ + 'class' => 'form-control input-text', + 'style' => 'padding: 10px', + ]) }} +

{{ $errors->first('route') }}

+
+
-

{{ $errors->first('hours') }}

-

{{ $errors->first('minutes') }}

-
- -
- {{ Form::label('level', 'Flight Level:') }} - {{ Form::text('level', null, ['class' => 'form-control']) }} -

{{ $errors->first('level') }}

-
- -
- {{ Form::label('distance', 'Distance:') }} in nautical miles - {{ Form::text('distance', null, ['class' => 'form-control']) }} -

{{ $errors->first('distance') }}

- -
- {{ Form::label('route', 'Route:') }} - {{ Form::textarea('route', null, ['class' => 'form-control']) }} -

{{ $errors->first('route') }}

-
- - -
- {{ Form::label('notes', 'Notes:') }} - {{ Form::textarea('notes', null, ['class' => 'form-control']) }} -

{{ $errors->first('notes') }}

+
+
+
+  Remarks +
+
+
+ {{ Form::textarea('notes', null, [ + 'class' => 'form-control input-text', + 'style' => 'padding: 10px', + ]) }} +

{{ $errors->first('notes') }}

+
+
+
diff --git a/resources/views/admin/flights/scripts.blade.php b/resources/views/admin/flights/scripts.blade.php index 0b0aeeb2..0ca020f7 100644 --- a/resources/views/admin/flights/scripts.blade.php +++ b/resources/views/admin/flights/scripts.blade.php @@ -60,20 +60,20 @@ const setFieldsEditable = () => $(document).ready(function () { + $("select#days_of_week").select2(); + setEditable(); setFieldsEditable(); - /*new Pjax({ - elements: 'form[action].pjax_subfleet_form', - selectors: ['div#subfleet_flight_wrapper'], - history: false, - }); + const start_date_picker = new Pikaday({ + field: document.getElementById('start_date'), + minDate: new Date(), + }); - new Pjax({ - elements: 'form[action].pjax_flight_fields', - selectors: ['div#flight_fields_wrapper'], - history: false - });*/ + const end_date_picker = new Pikaday({ + field: document.getElementById('end_date'), + minDate: new Date(), + }); $(document).on('submit', 'form.pjax_flight_fields', function (event) { event.preventDefault(); diff --git a/resources/views/admin/flights/subfleets.blade.php b/resources/views/admin/flights/subfleets.blade.php index a2fe3382..5c1ce5f4 100644 --- a/resources/views/admin/flights/subfleets.blade.php +++ b/resources/views/admin/flights/subfleets.blade.php @@ -46,6 +46,7 @@ {{ Form::select('subfleet_id', $avail_subfleets, null, [ 'placeholder' => 'Select Subfleet', 'class' => 'select2 form-control input-lg', + 'style' => 'width: 400px;', ]) }}  {{ Form::button(' add', diff --git a/webpack.mix.js b/webpack.mix.js index 8e9678eb..20f0a993 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -36,6 +36,7 @@ mix.sass('resources/sass/admin/paper-dashboard.scss', 'node_modules/animate.css/animate.css', 'node_modules/icheck/skins/square/blue.css', 'node_modules/select2/dist/css/select2.css', + 'node_modules/pikaday/css/pikaday.css', 'node_modules/x-editable/dist/bootstrap3-editable/css/bootstrap-editable.css', 'node_modules/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.css', 'public/assets/admin/css/vendor.min.css', @@ -58,6 +59,7 @@ mix.scripts([ 'node_modules/select2/dist/js/select2.js', //'node_modules/leaflet/dist/leaflet.js', 'node_modules/icheck/icheck.js', + 'node_modules/pikaday/pikaday.js', 'node_modules/x-editable/dist/bootstrap3-editable/js/bootstrap-editable.js', 'node_modules/eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js', 'node_modules/jquery-pjax/jquery.pjax.js', diff --git a/yarn.lock b/yarn.lock index f20b754c..7d3df9b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4812,6 +4812,10 @@ moment-timezone@^0.4.0: dependencies: moment ">= 2.6.0" +moment@2.x: + version "2.22.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.0.tgz#7921ade01017dd45186e7fee5f424f0b8663a730" + "moment@>= 2.6.0", moment@^2.10, moment@^2.21.0: version "2.21.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.21.0.tgz#2a114b51d2a6ec9e6d83cf803f838a878d8a023a" @@ -5460,6 +5464,12 @@ pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" +pikaday@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/pikaday/-/pikaday-1.7.0.tgz#78bf26e709f7c135b674762bbab79d75ac589ab6" + optionalDependencies: + moment "2.x" + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"