diff --git a/assets/js/kimai.js b/assets/js/kimai.js index d69ab9d9..3087f299 100644 --- a/assets/js/kimai.js +++ b/assets/js/kimai.js @@ -51,37 +51,88 @@ $(function() { ); } - $('input[data-datepicker="on"]').daterangepicker({ - singleDatePicker: true, - showDropdowns: true, - autoUpdateInput: false, - locale: { - format: "YYYY-MM-DD", - firstDay: 1 - } + // ==== compound field in toolbar ==== + $('input[data-daterangepickerenable="on"]').each(function(index) { + var localeFormat = $(this).data('format'); + var separator = $(this).data('separator'); + var transToday = $.kimai.settings['today']; + var rangesList = {}; + rangesList[$.kimai.settings['today']] = [moment(), moment()]; + rangesList[$.kimai.settings['yesterday']] = [moment().subtract(1, 'days'), moment().subtract(1, 'days')]; + rangesList[$.kimai.settings['thisWeek']] = [moment().startOf('week'), moment().endOf('week')]; + rangesList[$.kimai.settings['lastWeek']] = [moment().subtract(1, 'week').startOf('week'), moment().subtract(1, 'week').endOf('week')]; + rangesList[$.kimai.settings['thisMonth']] = [moment().startOf('month'), moment().endOf('month')]; + rangesList[$.kimai.settings['lastMonth']] = [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]; + rangesList[$.kimai.settings['thisYear']] = [moment().startOf('year'), moment().endOf('year')]; + rangesList[$.kimai.settings['lastYear']] = [moment().subtract(1, 'year').startOf('year'), moment().subtract(1, 'year').endOf('year')]; + + $(this).daterangepicker({ + showDropdowns: true, + autoUpdateInput: false, + autoApply: false, + linkedCalendars: false, + locale: { + separator: separator, + format: localeFormat, + firstDay: 1, + applyLabel: $.kimai.settings['apply'], + cancelLabel: $.kimai.settings['cancel'], + customRangeLabel: $.kimai.settings['customRange'] + }, + ranges: rangesList, + alwaysShowCalendars: true + }); + + $(this).on('apply.daterangepicker', function(ev, picker) { + $(this).val(picker.startDate.format(localeFormat) + ' - ' + picker.endDate.format(localeFormat)); + $(this).trigger("change"); + }); }); - $('input[data-datepicker="on"]').on('apply.daterangepicker', function(ev, picker) { - $(this).val(picker.startDate.format('YYYY-MM-DD')); - $(this).trigger("change"); + // ==== single select boxes in toolbars ==== + $('input[data-datepickerenable="on"]').each(function(index) { + var localeFormat = $(this).data('format'); + $(this).daterangepicker({ + singleDatePicker: true, + showDropdowns: true, + autoUpdateInput: false, + locale: { + format: localeFormat, + firstDay: 1, + applyLabel: $.kimai.settings['apply'], + cancelLabel: $.kimai.settings['cancel'], + customRangeLabel: $.kimai.settings['customRange'] + } + }); + + $(this).on('apply.daterangepicker', function(ev, picker) { + $(this).val(picker.startDate.format(localeFormat)); + $(this).trigger("change"); + }); }); - $('input[data-datetimepicker="on"]').daterangepicker({ - singleDatePicker: true, - timePicker: true, - timePicker24Hour: true, - showDropdowns: true, - autoUpdateInput: false, - locale: { - cancelLabel: 'Clear', - format: "YYYY-MM-DD HH:mm", - firstDay: 1 - } - }); + // ==== edit timesheet - date with time ==== + $('input[data-datetimepicker="on"]').each(function(index) { + var localeFormat = $(this).data('format'); + $(this).daterangepicker({ + singleDatePicker: true, + timePicker: true, + timePicker24Hour: true, + showDropdowns: true, + autoUpdateInput: false, + locale: { + format: localeFormat, + firstDay: 1, + applyLabel: $.kimai.settings['apply'], + cancelLabel: $.kimai.settings['cancel'], + customRangeLabel: $.kimai.settings['customRange'] + } + }); - $('input[data-datetimepicker="on"]').on('apply.daterangepicker', function(ev, picker) { - $(this).val(picker.startDate.format('YYYY-MM-DD HH:mm')); - $(this).trigger("change"); + $(this).on('apply.daterangepicker', function(ev, picker) { + $(this).val(picker.startDate.format(localeFormat)); + $(this).trigger("change"); + }); }); $('select[data-related-select]').change(function() { @@ -146,8 +197,19 @@ $(function() { // default values $.kimai.defaults = { locale: 'en', + alertSuccessAutoHide: 5000, confirmDelete: 'Really delete?', - alertSuccessAutoHide: 5000 + today: 'Today', + yesterday: 'Yesterday', + apply: 'Apply', + cancel: 'Cancel', + thisWeek: 'This week', + lastWeek: 'Last week', + thisMonth: 'This month', + lastMonth: 'Last month', + thisYear: 'This year', + lastYear: 'Last year', + customRange: 'Custom range' }; // once initialized, here are all values diff --git a/config/packages/kimai.yaml b/config/packages/kimai.yaml index ac458eb8..b69325f2 100644 --- a/config/packages/kimai.yaml +++ b/config/packages/kimai.yaml @@ -97,41 +97,68 @@ kimai: # Language specific settings, like the date formats languages: de: - date_short: 'd.m.Y' - duration: '%%h:%%m Stunden' - duration_short: '%%h:%%m h' + date_time_type: 'dd.MM.yyyy HH:mm' + date_time_picker: 'DD.MM.YYYY HH:mm' + date_type: 'dd.MM.yyyy' + date_picker: 'DD.MM.YYYY' + date: 'd.m.Y' + duration: '%%h:%%m h' en: - date_short: 'Y-m-d' - duration: '%%h:%%m hours' - duration_short: '%%h:%%m h' + date_time_type: 'yyyy-MM-dd HH:mm' + date_time_picker: 'YYYY-MM-DD HH:mm' + date_type: 'yyyy-MM-dd' + date_picker: 'YYYY-MM-DD' + date: 'Y-m-d' + duration: '%%h:%%m h' pt_BR: - date_short: 'd-m-Y' - duration: '%%h:%%m horas' - duration_short: '%%h:%%m h' + date_time_type: 'dd-MM-yyyy HH:mm' + date_time_picker: 'DD-MM-YYYY HH:mm' + date_type: 'dd-MM-yyyy' + date_picker: 'DD-MM-YYYY' + date: 'd-m-Y' + duration: '%%h:%%m h' it: - date_short: 'd.m.Y' + date_time_type: 'dd.MM.yyyy HH:mm' + date_time_picker: 'DD.MM.YYYY HH:mm' + date_type: 'dd.MM.yyyy' + date_picker: 'DD.MM.YYYY' + date: 'd.m.Y' duration: '%%h:%%m h' - duration_short: '%%h:%%m h' fr: - date_short: 'd/m/Y' - duration: '%%h h %%m min' - duration_short: '%%h h %%m' + date_time_type: 'dd/MM/yyyy HH:mm' + date_time_picker: 'DD/MM/YYYY HH:mm' + date_type: 'dd/MM/yyyy' + date_picker: 'DD/MM/YYYY' + date: 'd/m/Y' + duration: '%%h h %%m' es: - date_short: 'd.m.Y' + date_time_type: 'dd.MM.yyyy HH:mm' + date_time_picker: 'DD.MM.YYYY HH:mm' + date_type: 'dd.MM.yyyy' + date_picker: 'DD.MM.YYYY' + date: 'd.m.Y' duration: '%%h:%%m h' - duration_short: '%%h:%%m h' ru: - date_short: 'd.m.Y' - duration: '%%h:%%m Часов' - duration_short: '%%h:%%m h' + date_time_type: 'dd.MM.yyyy HH:mm' + date_time_picker: 'DD.MM.YYYY HH:mm' + date_type: 'dd.MM.yyyy' + date_picker: 'DD.MM.YYYY' + date: 'd.m.Y' + duration: '%%h:%%m h' ar: - date_short: 'Y-m-d' - duration: '%%h:%%m hours' - duration_short: '%%h:%%m h' + date_time_type: 'yyyy-MM-dd HH:mm' + date_time_picker: 'YYYY-MM-DD HH:mm' + date_type: 'yyyy-MM-dd' + date_picker: 'YYYY-MM-DD' + date: 'Y-m-d' + duration: '%%h:%%m h' hu: - date_short: 'Y.m.d.' - duration: '%%h:%%m óra' - duration_short: '%%h:%%m h' + date_time_type: 'yyyy.MM.dd HH:mm' + date_time_picker: 'YYYY.MM.DD HH:mm' + date_type: 'yyyy.MM.dd' + date_picker: 'YYYY.MM.DD' + date: 'Y.m.d.' + duration: '%%h:%%m h' # -------------------------------------------------------------------------------- # timesheet calendar configuration diff --git a/config/services.yaml b/config/services.yaml index 74c8d44e..a8948b87 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -54,7 +54,11 @@ services: App\Controller\Admin\CustomerController: arguments: $defaults: "%kimai.defaults%" - + + App\Utils\LocaleSettings: + arguments: + $languageSettings: "%kimai.languages%" + # ================================================================================ # DATABASE # ================================================================================ @@ -105,14 +109,6 @@ services: # THEME # ================================================================================ - App\Twig\Extensions: - arguments: - $languages: "%kimai.languages%" - - App\Twig\DateExtensions: - arguments: - $dateSettings: "%kimai.languages%" - KevinPapst\AdminLTEBundle\Helper\ContextHelper: alias: admin_lte_theme.context_helper diff --git a/public/build/app.js b/public/build/app.js index 728c51f9..de7f35d5 100644 --- a/public/build/app.js +++ b/public/build/app.js @@ -70,7 +70,7 @@ if(void 0===e)throw new Error("AdminLTE requires jQuery");+function(e){"use stri * (c) 2013 Damir Sultanov, http://fronteed.com * MIT Licensed */ -!function(e){function t(e,t,a){var r=e[0],o=/er/.test(a)?f:/bl/.test(a)?m:c,s=a==_?{checked:r[c],disabled:r[m],indeterminate:"true"==e.attr(f)||"false"==e.attr(p)}:r[o];if(/^(ch|di|in)/.test(a)&&!s)n(e,o);else if(/^(un|en|de)/.test(a)&&s)i(e,o);else if(a==_)for(var d in s)s[d]?n(e,d,!0):i(e,d,!0);else t&&"toggle"!=a||(t||e[b]("ifClicked"),s?r[g]!==u&&i(e,o):n(e,o))}function n(t,n,a){var _=t[0],y=t.parent(),b=n==c,L=n==f,k=n==m,w=L?p:b?h:"enabled",T=r(t,w+o(_[g])),x=r(t,n+o(_[g]));if(!0!==_[n]){if(!a&&n==c&&_[g]==u&&_.name){var Y=t.closest("form"),S='input[name="'+_.name+'"]';S=Y.length?Y.find(S):e(S),S.each(function(){this!==_&&e(this).data(d)&&i(e(this),n)})}L?(_[n]=!0,_[c]&&i(t,c,"force")):(a||(_[n]=!0),b&&_[f]&&i(t,f,!1)),s(t,b,n,a)}_[m]&&r(t,D,!0)&&y.find("."+l).css(D,"default"),y[v](x||r(t,n)||""),y.attr("role")&&!L&&y.attr("aria-"+(k?m:c),"true"),y[M](T||r(t,w)||"")}function i(e,t,n){var i=e[0],a=e.parent(),d=t==c,u=t==f,_=t==m,y=u?p:d?h:"enabled",b=r(e,y+o(i[g])),L=r(e,t+o(i[g]));!1!==i[t]&&(!u&&n&&"force"!=n||(i[t]=!1),s(e,d,y,n)),!i[m]&&r(e,D,!0)&&a.find("."+l).css(D,"pointer"),a[M](L||r(e,t)||""),a.attr("role")&&!u&&a.attr("aria-"+(_?m:c),"false"),a[v](b||r(e,y)||"")}function a(t,n){t.data(d)&&(t.parent().html(t.attr("style",t.data(d).s||"")),n&&t[b](n),t.off(".i").unwrap(),e(L+'[for="'+t[0].id+'"]').add(t.closest(L)).off(".i"))}function r(e,t,n){if(e.data(d))return e.data(d).o[t+(n?"":"Class")]}function o(e){return e.charAt(0).toUpperCase()+e.slice(1)}function s(e,t,n,i){i||(t&&e[b]("ifToggled"),e[b]("ifChanged")[b]("if"+o(n)))}var d="iCheck",l=d+"-helper",u="radio",c="checked",h="un"+c,m="disabled",p="determinate",f="in"+p,_="update",g="type",y="touchbegin.i touchend.i",v="addClass",M="removeClass",b="trigger",L="label",D="cursor",k=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);e.fn[d]=function(r,o){var s='input[type="checkbox"], input[type="'+u+'"]',h=e(),p=function(t){t.each(function(){var t=e(this);h=t.is(s)?h.add(t):h.add(t.find(s))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(r))return r=r.toLowerCase(),p(this),h.each(function(){var n=e(this);"destroy"==r?a(n,"ifDestroyed"):t(n,!0,r),e.isFunction(o)&&o()});if("object"!=typeof r&&r)return this;var D=e.extend({checkedClass:c,disabledClass:m,indeterminateClass:f,labelHover:!0},r),w=D.handle,T=D.hoverClass||"hover",x=D.focusClass||"focus",Y=D.activeClass||"active",S=!!D.labelHover,H=D.labelHoverClass||"hover",C=0|(""+D.increaseArea).replace("%","");return"checkbox"!=w&&w!=u||(s='input[type="'+w+'"]'),C<-50&&(C=-50),p(this),h.each(function(){var r=e(this);a(r);var o,s=this,h=s.id,p=-C+"%",f=100+2*C+"%",w={position:"absolute",top:p,left:p,display:"block",width:f,height:f,margin:0,padding:0,background:"#fff",border:0,opacity:0},E=k?{position:"absolute",visibility:"hidden"}:C?w:{position:"absolute",opacity:0},P="checkbox"==s[g]?D.checkboxClass||"icheckbox":D.radioClass||"i"+u,j=e(L+'[for="'+h+'"]').add(r.closest(L)),O=!!D.aria,A=d+"-"+Math.random().toString(36).substr(2,6),I='
")[b]("ifCreated").parent().append(D.insert),o=e('').css(w).appendTo(I),r.data(d,{o:D,s:r.attr("style")}).css(E),!!D.inheritClass&&I[v](s.className||""),!!D.inheritID&&h&&I.attr("id",d+"-"+h),"static"==I.css("position")&&I.css("position","relative"),t(r,!0,_),j.length&&j.on("click.i mouseover.i mouseout.i "+y,function(n){var i=n[g],a=e(this);if(!s[m]){if("click"==i){if(e(n.target).is("a"))return;t(r,!1,!0)}else S&&(/ut|nd/.test(i)?(I[M](T),a[M](H)):(I[v](T),a[v](H)));if(!k)return!1;n.stopPropagation()}}),r.on("click.i focus.i blur.i keyup.i keydown.i keypress.i",function(e){var t=e[g],a=e.keyCode;return"click"!=t&&("keydown"==t&&32==a?(s[g]==u&&s[c]||(s[c]?i(r,c):n(r,c)),!1):void("keyup"==t&&s[g]==u?!s[c]&&n(r,c):/us|ur/.test(t)&&I["blur"==t?M:v](x)))}),o.on("click mousedown mouseup mouseover mouseout "+y,function(e){var n=e[g],i=/wn|up/.test(n)?Y:T;if(!s[m]){if("click"==n?t(r,!1,!0):(/wn|er|in/.test(n)?I[v](i):I[M](i+" "+Y),j.length&&S&&i==T&&j[/ut|nd/.test(n)?M:v](H)),!k)return!1;e.stopPropagation()}})})}}(e||window.Zepto)}).call(t,n("7t+N"))},aM0x:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};return e.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})})},aqvp:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";function t(e,t,n){var i=e+" ";switch(n){case"ss":return i+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return i+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return i+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return i+=1===e?"dan":"dana";case"MM":return i+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return i+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},bXQP:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})})},c0dd:function(e,t,n){n("chxu"),n("nyna"),n("olwm"),n("GOEF"),n("vg91"),n("AixB"),n("1QPC"),n("gcLw"),n("nRX6"),n("SAIs"),n("EmE7"),n("mN5h")},c1x4:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,i){var a=t.words[i];return 1===i.length?n?a[0]:a[1]:e+" "+t.correctGrammaticalCase(e,a)}};return e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},chxu:function(e,t,n){(function(e){var t=n("7t+N");e.$=e.jQuery=t,n("z1kw"),n("jf49"),n("DBzq"),n("tNVI");var i=n("PJh5");e.moment=i,n("PL/P"),n("WFwX"),n("R6CI"),n("iES9"),n("FDd9"),e.$.AdminLTE={},e.$.AdminLTE.options={},n("Dehm"),n("l77c"),n("a7jZ"),n("3EEf")}).call(t,n("DuR2"))},dURR:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})})},dyB6:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})},"e/KL":function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})},"eBB/":function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})})},eHwN:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};return e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10,i=e%100-n,a=e>=100?100:null;return e+(t[n]||t[i]||t[a])},week:{dow:1,doy:7}})})},f4W3:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,i){var a=t.words[i];return 1===i.length?n?a[0]:a[1]:e+" "+t.correctGrammaticalCase(e,a)}};return e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},fW1y:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];return e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})})},g7KF:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");return e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},gEQe:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};return e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})})},gEU3:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},gUgh:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})},gcLw:function(e,t,n){(function(e,t){if(void 0===e)throw new Error("Kimai requires jQuery");t.kimai={},t(function(){"use strict";t.kimai={init:function(e){void 0!==e&&(t.kimai.settings=t.extend({},t.kimai.defaults,e)),moment.locale(t.kimai.settings.locale),t("body").on("click","a.btn-trash",function(e){return confirm(t.kimai.settings.confirmDelete)}),t(".dropdown-toggle").dropdown(),t.kimai.settings.alertSuccessAutoHide>0&&setTimeout(function(){t("div.alert-success").alert("close")},t.kimai.settings.alertSuccessAutoHide),t('input[data-datepicker="on"]').daterangepicker({singleDatePicker:!0,showDropdowns:!0,autoUpdateInput:!1,locale:{format:"YYYY-MM-DD",firstDay:1}}),t('input[data-datepicker="on"]').on("apply.daterangepicker",function(e,n){t(this).val(n.startDate.format("YYYY-MM-DD")),t(this).trigger("change")}),t('input[data-datetimepicker="on"]').daterangepicker({singleDatePicker:!0,timePicker:!0,timePicker24Hour:!0,showDropdowns:!0,autoUpdateInput:!1,locale:{cancelLabel:"Clear",format:"YYYY-MM-DD HH:mm",firstDay:1}}),t('input[data-datetimepicker="on"]').on("apply.daterangepicker",function(e,n){t(this).val(n.startDate.format("YYYY-MM-DD HH:mm")),t(this).trigger("change")}),t("select[data-related-select]").change(function(){var e=t(this).attr("data-api-url").replace("-s-",t(this).val()),n=t(this).attr("data-related-select");t.ajax({url:e,headers:{"X-AUTH-SESSION":!0,"Content-Type":"application/json"},method:"GET",dataType:"json",success:function(e){var i="#"+n,a=t(i),r=t(i+' option[value=""]');a.find("option").remove().end().find("optgroup").remove().end(),0!=r.length&&a.append('"),t.each(e,function(e,t){a.append('")}),a.trigger("change"),t(".selectpicker").selectpicker("refresh")}})}),t(".markdown-body :header").prepend(function(){t(this).prepend('')}),t(".markdown-body :header").hover(function(){t(this).find("a.anchor").show()},function(){t(this).find("a.anchor").hide()})},pauseRecord:function(e){t(e+" .pull-left i").hover(function(){var e=t(this).parents("a");e.attr("href",e.attr("href").replace("/stop","/pause")),t(this).removeClass("fa-stop-circle").addClass("fa-pause-circle").addClass("text-orange")},function(){var e=t(this).parents("a");e.attr("href",e.attr("href").replace("/pause","/stop")),t(this).removeClass("fa-pause-circle").removeClass("text-orange").addClass("fa-stop-circle")})}},t.kimai.defaults={locale:"en",confirmDelete:"Really delete?",alertSuccessAutoHide:5e3},t.kimai.settings={}})}).call(t,n("7t+N"),n("7t+N"))},hPuz:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})},hng5:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})})},iES9:function(e,t){},iNtv:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";function t(e,t,n,i){var a={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return i?a[n][0]:t?a[n][0]:a[n][1]}return e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},"j+vx":function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};return e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var n=e%10,i=e>=100?100:null;return e+(t[e]||t[n]||t[i])},week:{dow:1,doy:7}})})},j8cJ:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})})},jf49:function(e,t,n){(function(e){/*! +!function(e){function t(e,t,a){var r=e[0],o=/er/.test(a)?f:/bl/.test(a)?m:c,s=a==_?{checked:r[c],disabled:r[m],indeterminate:"true"==e.attr(f)||"false"==e.attr(p)}:r[o];if(/^(ch|di|in)/.test(a)&&!s)n(e,o);else if(/^(un|en|de)/.test(a)&&s)i(e,o);else if(a==_)for(var d in s)s[d]?n(e,d,!0):i(e,d,!0);else t&&"toggle"!=a||(t||e[b]("ifClicked"),s?r[g]!==u&&i(e,o):n(e,o))}function n(t,n,a){var _=t[0],y=t.parent(),b=n==c,L=n==f,k=n==m,w=L?p:b?h:"enabled",T=r(t,w+o(_[g])),x=r(t,n+o(_[g]));if(!0!==_[n]){if(!a&&n==c&&_[g]==u&&_.name){var Y=t.closest("form"),S='input[name="'+_.name+'"]';S=Y.length?Y.find(S):e(S),S.each(function(){this!==_&&e(this).data(d)&&i(e(this),n)})}L?(_[n]=!0,_[c]&&i(t,c,"force")):(a||(_[n]=!0),b&&_[f]&&i(t,f,!1)),s(t,b,n,a)}_[m]&&r(t,D,!0)&&y.find("."+l).css(D,"default"),y[v](x||r(t,n)||""),y.attr("role")&&!L&&y.attr("aria-"+(k?m:c),"true"),y[M](T||r(t,w)||"")}function i(e,t,n){var i=e[0],a=e.parent(),d=t==c,u=t==f,_=t==m,y=u?p:d?h:"enabled",b=r(e,y+o(i[g])),L=r(e,t+o(i[g]));!1!==i[t]&&(!u&&n&&"force"!=n||(i[t]=!1),s(e,d,y,n)),!i[m]&&r(e,D,!0)&&a.find("."+l).css(D,"pointer"),a[M](L||r(e,t)||""),a.attr("role")&&!u&&a.attr("aria-"+(_?m:c),"false"),a[v](b||r(e,y)||"")}function a(t,n){t.data(d)&&(t.parent().html(t.attr("style",t.data(d).s||"")),n&&t[b](n),t.off(".i").unwrap(),e(L+'[for="'+t[0].id+'"]').add(t.closest(L)).off(".i"))}function r(e,t,n){if(e.data(d))return e.data(d).o[t+(n?"":"Class")]}function o(e){return e.charAt(0).toUpperCase()+e.slice(1)}function s(e,t,n,i){i||(t&&e[b]("ifToggled"),e[b]("ifChanged")[b]("if"+o(n)))}var d="iCheck",l=d+"-helper",u="radio",c="checked",h="un"+c,m="disabled",p="determinate",f="in"+p,_="update",g="type",y="touchbegin.i touchend.i",v="addClass",M="removeClass",b="trigger",L="label",D="cursor",k=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);e.fn[d]=function(r,o){var s='input[type="checkbox"], input[type="'+u+'"]',h=e(),p=function(t){t.each(function(){var t=e(this);h=t.is(s)?h.add(t):h.add(t.find(s))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(r))return r=r.toLowerCase(),p(this),h.each(function(){var n=e(this);"destroy"==r?a(n,"ifDestroyed"):t(n,!0,r),e.isFunction(o)&&o()});if("object"!=typeof r&&r)return this;var D=e.extend({checkedClass:c,disabledClass:m,indeterminateClass:f,labelHover:!0},r),w=D.handle,T=D.hoverClass||"hover",x=D.focusClass||"focus",Y=D.activeClass||"active",S=!!D.labelHover,H=D.labelHoverClass||"hover",C=0|(""+D.increaseArea).replace("%","");return"checkbox"!=w&&w!=u||(s='input[type="'+w+'"]'),C<-50&&(C=-50),p(this),h.each(function(){var r=e(this);a(r);var o,s=this,h=s.id,p=-C+"%",f=100+2*C+"%",w={position:"absolute",top:p,left:p,display:"block",width:f,height:f,margin:0,padding:0,background:"#fff",border:0,opacity:0},E=k?{position:"absolute",visibility:"hidden"}:C?w:{position:"absolute",opacity:0},P="checkbox"==s[g]?D.checkboxClass||"icheckbox":D.radioClass||"i"+u,j=e(L+'[for="'+h+'"]').add(r.closest(L)),O=!!D.aria,A=d+"-"+Math.random().toString(36).substr(2,6),I='")[b]("ifCreated").parent().append(D.insert),o=e('').css(w).appendTo(I),r.data(d,{o:D,s:r.attr("style")}).css(E),!!D.inheritClass&&I[v](s.className||""),!!D.inheritID&&h&&I.attr("id",d+"-"+h),"static"==I.css("position")&&I.css("position","relative"),t(r,!0,_),j.length&&j.on("click.i mouseover.i mouseout.i "+y,function(n){var i=n[g],a=e(this);if(!s[m]){if("click"==i){if(e(n.target).is("a"))return;t(r,!1,!0)}else S&&(/ut|nd/.test(i)?(I[M](T),a[M](H)):(I[v](T),a[v](H)));if(!k)return!1;n.stopPropagation()}}),r.on("click.i focus.i blur.i keyup.i keydown.i keypress.i",function(e){var t=e[g],a=e.keyCode;return"click"!=t&&("keydown"==t&&32==a?(s[g]==u&&s[c]||(s[c]?i(r,c):n(r,c)),!1):void("keyup"==t&&s[g]==u?!s[c]&&n(r,c):/us|ur/.test(t)&&I["blur"==t?M:v](x)))}),o.on("click mousedown mouseup mouseover mouseout "+y,function(e){var n=e[g],i=/wn|up/.test(n)?Y:T;if(!s[m]){if("click"==n?t(r,!1,!0):(/wn|er|in/.test(n)?I[v](i):I[M](i+" "+Y),j.length&&S&&i==T&&j[/ut|nd/.test(n)?M:v](H)),!k)return!1;e.stopPropagation()}})})}}(e||window.Zepto)}).call(t,n("7t+N"))},aM0x:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};return e.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})})},aqvp:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";function t(e,t,n){var i=e+" ";switch(n){case"ss":return i+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return i+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return i+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return i+=1===e?"dan":"dana";case"MM":return i+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return i+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},bXQP:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})})},c0dd:function(e,t,n){n("chxu"),n("nyna"),n("olwm"),n("GOEF"),n("vg91"),n("AixB"),n("1QPC"),n("gcLw"),n("nRX6"),n("SAIs"),n("EmE7"),n("mN5h")},c1x4:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,i){var a=t.words[i];return 1===i.length?n?a[0]:a[1]:e+" "+t.correctGrammaticalCase(e,a)}};return e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},chxu:function(e,t,n){(function(e){var t=n("7t+N");e.$=e.jQuery=t,n("z1kw"),n("jf49"),n("DBzq"),n("tNVI");var i=n("PJh5");e.moment=i,n("PL/P"),n("WFwX"),n("R6CI"),n("iES9"),n("FDd9"),e.$.AdminLTE={},e.$.AdminLTE.options={},n("Dehm"),n("l77c"),n("a7jZ"),n("3EEf")}).call(t,n("DuR2"))},dURR:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})})},dyB6:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})},"e/KL":function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})},"eBB/":function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})})},eHwN:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};return e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10,i=e%100-n,a=e>=100?100:null;return e+(t[n]||t[i]||t[a])},week:{dow:1,doy:7}})})},f4W3:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,i){var a=t.words[i];return 1===i.length?n?a[0]:a[1]:e+" "+t.correctGrammaticalCase(e,a)}};return e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},fW1y:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];return e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})})},g7KF:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");return e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},gEQe:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};return e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})})},gEU3:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},gUgh:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})},gcLw:function(e,t,n){(function(e,t){if(void 0===e)throw new Error("Kimai requires jQuery");t.kimai={},t(function(){"use strict";t.kimai={init:function(e){void 0!==e&&(t.kimai.settings=t.extend({},t.kimai.defaults,e)),moment.locale(t.kimai.settings.locale),t("body").on("click","a.btn-trash",function(e){return confirm(t.kimai.settings.confirmDelete)}),t(".dropdown-toggle").dropdown(),t.kimai.settings.alertSuccessAutoHide>0&&setTimeout(function(){t("div.alert-success").alert("close")},t.kimai.settings.alertSuccessAutoHide),t('input[data-daterangepickerenable="on"]').each(function(e){var n=t(this).data("format"),i=t(this).data("separator"),a=(t.kimai.settings.today,{});a[t.kimai.settings.today]=[moment(),moment()],a[t.kimai.settings.yesterday]=[moment().subtract(1,"days"),moment().subtract(1,"days")],a[t.kimai.settings.thisWeek]=[moment().startOf("week"),moment().endOf("week")],a[t.kimai.settings.lastWeek]=[moment().subtract(1,"week").startOf("week"),moment().subtract(1,"week").endOf("week")],a[t.kimai.settings.thisMonth]=[moment().startOf("month"),moment().endOf("month")],a[t.kimai.settings.lastMonth]=[moment().subtract(1,"month").startOf("month"),moment().subtract(1,"month").endOf("month")],a[t.kimai.settings.thisYear]=[moment().startOf("year"),moment().endOf("year")],a[t.kimai.settings.lastYear]=[moment().subtract(1,"year").startOf("year"),moment().subtract(1,"year").endOf("year")],t(this).daterangepicker({showDropdowns:!0,autoUpdateInput:!1,autoApply:!1,linkedCalendars:!1,locale:{separator:i,format:n,firstDay:1,applyLabel:t.kimai.settings.apply,cancelLabel:t.kimai.settings.cancel,customRangeLabel:t.kimai.settings.customRange},ranges:a,alwaysShowCalendars:!0}),t(this).on("apply.daterangepicker",function(e,i){t(this).val(i.startDate.format(n)+" - "+i.endDate.format(n)),t(this).trigger("change")})}),t('input[data-datepickerenable="on"]').each(function(e){var n=t(this).data("format");t(this).daterangepicker({singleDatePicker:!0,showDropdowns:!0,autoUpdateInput:!1,locale:{format:n,firstDay:1,applyLabel:t.kimai.settings.apply,cancelLabel:t.kimai.settings.cancel,customRangeLabel:t.kimai.settings.customRange}}),t(this).on("apply.daterangepicker",function(e,i){t(this).val(i.startDate.format(n)),t(this).trigger("change")})}),t('input[data-datetimepicker="on"]').each(function(e){var n=t(this).data("format");t(this).daterangepicker({singleDatePicker:!0,timePicker:!0,timePicker24Hour:!0,showDropdowns:!0,autoUpdateInput:!1,locale:{format:n,firstDay:1,applyLabel:t.kimai.settings.apply,cancelLabel:t.kimai.settings.cancel,customRangeLabel:t.kimai.settings.customRange}}),t(this).on("apply.daterangepicker",function(e,i){t(this).val(i.startDate.format(n)),t(this).trigger("change")})}),t("select[data-related-select]").change(function(){var e=t(this).attr("data-api-url").replace("-s-",t(this).val()),n=t(this).attr("data-related-select");t.ajax({url:e,headers:{"X-AUTH-SESSION":!0,"Content-Type":"application/json"},method:"GET",dataType:"json",success:function(e){var i="#"+n,a=t(i),r=t(i+' option[value=""]');a.find("option").remove().end().find("optgroup").remove().end(),0!=r.length&&a.append('"),t.each(e,function(e,t){a.append('")}),a.trigger("change"),t(".selectpicker").selectpicker("refresh")}})}),t(".markdown-body :header").prepend(function(){t(this).prepend('')}),t(".markdown-body :header").hover(function(){t(this).find("a.anchor").show()},function(){t(this).find("a.anchor").hide()})},pauseRecord:function(e){t(e+" .pull-left i").hover(function(){var e=t(this).parents("a");e.attr("href",e.attr("href").replace("/stop","/pause")),t(this).removeClass("fa-stop-circle").addClass("fa-pause-circle").addClass("text-orange")},function(){var e=t(this).parents("a");e.attr("href",e.attr("href").replace("/pause","/stop")),t(this).removeClass("fa-pause-circle").removeClass("text-orange").addClass("fa-stop-circle")})}},t.kimai.defaults={locale:"en",alertSuccessAutoHide:5e3,confirmDelete:"Really delete?",today:"Today",yesterday:"Yesterday",apply:"Apply",cancel:"Cancel",thisWeek:"This week",lastWeek:"Last week",thisMonth:"This month",lastMonth:"Last month",thisYear:"This year",lastYear:"Last year",customRange:"Custom range"},t.kimai.settings={}})}).call(t,n("7t+N"),n("7t+N"))},hPuz:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})},hng5:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})})},iES9:function(e,t){},iNtv:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";function t(e,t,n,i){var a={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return i?a[n][0]:t?a[n][0]:a[n][1]}return e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},"j+vx":function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};return e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var n=e%10,i=e>=100?100:null;return e+(t[e]||t[n]||t[i])},week:{dow:1,doy:7}})})},j8cJ:function(e,t,n){!function(e,t){t(n("PJh5"))}(0,function(e){"use strict";return e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})})},jf49:function(e,t,n){(function(e){/*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under the MIT license diff --git a/public/build/manifest.json b/public/build/manifest.json index 1ad24e38..73bfbd90 100644 --- a/public/build/manifest.json +++ b/public/build/manifest.json @@ -1,5 +1,5 @@ { - "build/app.js": "/build/app.js?605a955e4ca22355e6ff", + "build/app.js": "/build/app.js?bf44c766db95ef7d121c", "build/app.css": "/build/app.css?cc325c031344117b92b2eaada5cf2319", "build/images/blue@2x.png": "/build/images/blue@2x.png?2694acfd", "build/images/blue.png": "/build/images/blue.png?96f8a905", diff --git a/src/Controller/InvoiceController.php b/src/Controller/InvoiceController.php index 24b39702..361fd4f7 100644 --- a/src/Controller/InvoiceController.php +++ b/src/Controller/InvoiceController.php @@ -168,6 +168,13 @@ class InvoiceController extends AbstractController } $query->setResultType(TimesheetQuery::RESULT_TYPE_QUERYBUILDER); + + if (null === $query->getBegin()) { + $query->setBegin(new \DateTime('first day of this month')); + } + if (null === $query->getEnd()) { + $query->setEnd(new \DateTime('last day of this month')); + } $query->getBegin()->setTime(0, 0, 0); $query->getEnd()->setTime(23, 59, 59); diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index ab12c6a2..89b1d243 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -172,9 +172,12 @@ class Configuration implements ConfigurationInterface $node ->arrayPrototype() ->children() - ->scalarNode('date_short')->end() - ->scalarNode('duration')->end() - ->scalarNode('duration_short')->end() + ->scalarNode('date_time_type')->defaultValue('yyyy-MM-dd HH:mm')->end() // for DateTimeType + ->scalarNode('date_time_picker')->defaultValue('YYYY-MM-DD HH:mm')->end() // for DateTimeType JS component + ->scalarNode('date_type')->defaultValue('yyyy-MM-dd')->end() // for DateType + ->scalarNode('date_picker')->defaultValue('YYYY-MM-DD')->end() // for DateType JS component + ->scalarNode('date')->defaultValue('Y-m-d')->end() // for display via twig + ->scalarNode('duration')->defaultValue('%%h:%%m h')->end() // for display via twig ->end() ->end() ; diff --git a/src/Form/Model/DateRange.php b/src/Form/Model/DateRange.php new file mode 100644 index 00000000..33c80fb9 --- /dev/null +++ b/src/Form/Model/DateRange.php @@ -0,0 +1,62 @@ +begin; + } + + /** + * @param DateTime $begin + * @return DateRange + */ + public function setBegin(DateTime $begin) + { + $this->begin = $begin; + + return $this; + } + + /** + * @return DateTime + */ + public function getEnd(): ?DateTime + { + return $this->end; + } + + /** + * @param DateTime $end + * @return DateRange + */ + public function setEnd(DateTime $end) + { + $this->end = $end; + + return $this; + } +} diff --git a/src/Form/TimesheetEditForm.php b/src/Form/TimesheetEditForm.php index f99b2963..e41270e6 100644 --- a/src/Form/TimesheetEditForm.php +++ b/src/Form/TimesheetEditForm.php @@ -12,6 +12,7 @@ namespace App\Form; use App\Entity\Timesheet; use App\Form\Type\ActivityType; use App\Form\Type\CustomerType; +use App\Form\Type\DateTimePickerType; use App\Form\Type\DurationType; use App\Form\Type\ProjectType; use App\Form\Type\UserType; @@ -19,7 +20,6 @@ use App\Repository\ActivityRepository; use App\Repository\CustomerRepository; use App\Repository\ProjectRepository; use Symfony\Component\Form\AbstractType; -use Symfony\Component\Form\Extension\Core\Type\DateTimeType; use Symfony\Component\Form\Extension\Core\Type\MoneyType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\FormBuilderInterface; @@ -90,13 +90,8 @@ class TimesheetEditForm extends AbstractType } if (null === $end || !$options['duration_only']) { - $builder->add('begin', DateTimeType::class, [ + $builder->add('begin', DateTimePickerType::class, [ 'label' => 'label.begin', - 'widget' => 'single_text', - 'html5' => false, - 'format' => 'yyyy-MM-dd HH:mm', - 'with_seconds' => false, - 'attr' => ['autocomplete' => 'off', 'data-datetimepicker' => 'on', 'placeholder' => 'yyyy-MM-dd HH:mm'], ]); } @@ -105,14 +100,8 @@ class TimesheetEditForm extends AbstractType 'required' => false, ]); } else { - $builder->add('end', DateTimeType::class, [ + $builder->add('end', DateTimePickerType::class, [ 'label' => 'label.end', - 'widget' => 'single_text', - 'required' => false, - 'html5' => false, - 'format' => 'yyyy-MM-dd HH:mm', - 'with_seconds' => false, - 'attr' => ['autocomplete' => 'off', 'data-datetimepicker' => 'on', 'placeholder' => 'yyyy-MM-dd HH:mm'], ]); } diff --git a/src/Form/Toolbar/AbstractToolbarForm.php b/src/Form/Toolbar/AbstractToolbarForm.php index f61b548a..21ac2ed0 100644 --- a/src/Form/Toolbar/AbstractToolbarForm.php +++ b/src/Form/Toolbar/AbstractToolbarForm.php @@ -10,9 +10,8 @@ namespace App\Form\Toolbar; use App\Form\Type\ActivityType; -use App\Form\Type\BeginDateType; use App\Form\Type\CustomerType; -use App\Form\Type\EndDateType; +use App\Form\Type\DateRangeType; use App\Form\Type\PageSizeType; use App\Form\Type\ProjectType; use App\Form\Type\UserRoleType; @@ -115,20 +114,11 @@ abstract class AbstractToolbarForm extends AbstractType /** * @param FormBuilderInterface $builder */ - protected function addStartDateChoice(FormBuilderInterface $builder) + protected function addDateRangeChoice(FormBuilderInterface $builder, $allowEmpty = true) { - $builder->add('begin', BeginDateType::class, [ - 'required' => false, - ]); - } - - /** - * @param FormBuilderInterface $builder - */ - protected function addEndDateChoice(FormBuilderInterface $builder) - { - $builder->add('end', EndDateType::class, [ + $builder->add('daterange', DateRangeType::class, [ 'required' => false, + 'allow_empty' => $allowEmpty, ]); } diff --git a/src/Form/Toolbar/InvoiceToolbarForm.php b/src/Form/Toolbar/InvoiceToolbarForm.php index a72d341b..4121aab4 100644 --- a/src/Form/Toolbar/InvoiceToolbarForm.php +++ b/src/Form/Toolbar/InvoiceToolbarForm.php @@ -26,8 +26,7 @@ class InvoiceToolbarForm extends AbstractToolbarForm { $this->addTemplateChoice($builder); $this->addUserChoice($builder); - $this->addStartDateChoice($builder); - $this->addEndDateChoice($builder); + $this->addDateRangeChoice($builder); $this->addCustomerChoice($builder); $this->addProjectChoice($builder); $this->addActivityChoice($builder); diff --git a/src/Form/Toolbar/TimesheetAdminToolbarForm.php b/src/Form/Toolbar/TimesheetAdminToolbarForm.php index 7418e666..e98c3cd2 100644 --- a/src/Form/Toolbar/TimesheetAdminToolbarForm.php +++ b/src/Form/Toolbar/TimesheetAdminToolbarForm.php @@ -24,8 +24,7 @@ class TimesheetAdminToolbarForm extends TimesheetToolbarForm $this->addTimesheetStateChoice($builder); $this->addPageSizeChoice($builder); $this->addUserChoice($builder); - $this->addStartDateChoice($builder); - $this->addEndDateChoice($builder); + $this->addDateRangeChoice($builder); $this->addCustomerChoice($builder); $this->addProjectChoice($builder); $this->addActivityChoice($builder); diff --git a/src/Form/Toolbar/TimesheetToolbarForm.php b/src/Form/Toolbar/TimesheetToolbarForm.php index 13c9833b..3d6cdfd7 100644 --- a/src/Form/Toolbar/TimesheetToolbarForm.php +++ b/src/Form/Toolbar/TimesheetToolbarForm.php @@ -26,8 +26,7 @@ class TimesheetToolbarForm extends AbstractToolbarForm { $this->addTimesheetStateChoice($builder); $this->addPageSizeChoice($builder); - $this->addStartDateChoice($builder); - $this->addEndDateChoice($builder); + $this->addDateRangeChoice($builder); $this->addCustomerChoice($builder); $this->addProjectChoice($builder); $this->addActivityChoice($builder); diff --git a/src/Form/Type/BeginDateType.php b/src/Form/Type/DatePickerType.php similarity index 59% rename from src/Form/Type/BeginDateType.php rename to src/Form/Type/DatePickerType.php index 389e020b..b8d2d779 100644 --- a/src/Form/Type/BeginDateType.php +++ b/src/Form/Type/DatePickerType.php @@ -9,33 +9,50 @@ namespace App\Form\Type; +use App\Utils\LocaleSettings; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\DateType; use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\OptionsResolver; /** - * Custom form field type to display the begin-date input field. + * Custom form field type to display the date input fields. */ -class BeginDateType extends AbstractType +class DatePickerType extends AbstractType { + /** + * @var LocaleSettings + */ + protected $localeSettings; + + /** + * @param LocaleSettings $localeSettings + */ + public function __construct(LocaleSettings $localeSettings) + { + $this->localeSettings = $localeSettings; + } + /** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { + $pickerFormat = $this->localeSettings->getDatePickerFormat(); + $dateFormat = $this->localeSettings->getDateTypeFormat(); + $resolver->setDefaults([ - 'label' => 'label.begin', 'widget' => 'single_text', 'html5' => false, - 'format' => DateType::HTML5_FORMAT, + 'format' => $dateFormat, + 'format_picker' => $pickerFormat, ]); $resolver->setDefault('attr', function (Options $options) { return [ 'autocomplete' => 'off', - 'data-datepicker' => 'on', 'placeholder' => $options['format'], + 'data-format' => $options['format_picker'], ]; }); } diff --git a/src/Form/Type/DateRangeType.php b/src/Form/Type/DateRangeType.php new file mode 100644 index 00000000..1c4a1837 --- /dev/null +++ b/src/Form/Type/DateRangeType.php @@ -0,0 +1,154 @@ +localeSettings = $localeSettings; + } + + /** + * {@inheritdoc} + */ + public function configureOptions(OptionsResolver $resolver) + { + $pickerFormat = $this->localeSettings->getDatePickerFormat(); + $dateFormat = $this->localeSettings->getDateFormat(); + + $resolver->setDefaults([ + 'model_timezone' => null, + 'view_timezone' => null, + 'label' => 'label.daterange', + 'format' => $dateFormat, + 'separator' => self::DATE_SPACER, + 'format_picker' => $pickerFormat, + 'allow_empty' => true, + ]); + + $resolver->setDefault('attr', function (Options $options) { + return [ + 'autocomplete' => 'off', + 'placeholder' => $options['format_picker'] . $options['separator'] . $options['format_picker'], + 'data-format' => $options['format_picker'], + 'data-separator' => $options['separator'], + ]; + }); + } + + protected function formatToPattern(string $format, string $separator) + { + $pattern = str_replace('d', '[0-9]{2}', $format); + $pattern = str_replace('m', '[0-9]{2}', $pattern); + $pattern = str_replace('Y', '[0-9]{4}', $pattern); + + return '/^' . $pattern . $separator . $pattern . '$/'; + } + + /** + * {@inheritdoc} + */ + public function buildForm(FormBuilderInterface $builder, array $options) + { + $formatDate = $options['format']; + $separator = $options['separator']; + $allowEmpty = $options['allow_empty']; + $pattern = $this->formatToPattern($formatDate, $separator); + + $builder->addModelTransformer(new CallbackTransformer( + function (DateRange $range) use ($formatDate, $separator) { + if (null === $range->getBegin()) { + return ''; + } + $display = $range->getBegin()->format($formatDate); + if (null !== $range->getEnd()) { + $display .= $separator . $range->getEnd()->format($formatDate); + } + + return $display; + }, + function ($dates) use ($formatDate, $pattern, $separator, $allowEmpty) { + $range = new DateRange(); + + if (empty($dates) && $allowEmpty) { + return $range; + } + + if (preg_match($pattern, $dates) !== 1) { + throw new TransformationFailedException('Invalid date range given'); + } + + $values = explode($separator, $dates); + + if (count($values) !== 2) { + throw new TransformationFailedException('Invalid date range given'); + } + + $begin = \DateTime::createFromFormat($formatDate, $values[0]); + if ($begin === false) { + throw new TransformationFailedException('Invalid begin date given'); + } + $range->setBegin($begin); + + $end = \DateTime::createFromFormat($formatDate, $values[1]); + if ($end === false) { + throw new TransformationFailedException('Invalid end date given'); + } + $range->setEnd($end); + + if ($begin->getTimestamp() > $end->getTimestamp()) { + throw new TransformationFailedException('Begin date must be before end date'); + } + + return $range; + } + )); + } + + /** + * {@inheritdoc} + */ + public function getParent() + { + return TextType::class; + } + + /** + * {@inheritdoc} + */ + public function getBlockPrefix() + { + return 'daterange'; + } +} diff --git a/src/Form/Type/DateTimePickerType.php b/src/Form/Type/DateTimePickerType.php new file mode 100644 index 00000000..27cb7467 --- /dev/null +++ b/src/Form/Type/DateTimePickerType.php @@ -0,0 +1,70 @@ +localeSettings = $localeSettings; + } + + /** + * {@inheritdoc} + */ + public function configureOptions(OptionsResolver $resolver) + { + $dateTimePicker = $this->localeSettings->getDateTimePickerFormat(); + $dateTimeFormat = $this->localeSettings->getDateTimeTypeFormat(); + + $resolver->setDefaults([ + 'label' => 'label.begin', + 'widget' => 'single_text', + 'html5' => false, + 'format' => $dateTimeFormat, + 'format_picker' => $dateTimePicker, + 'with_seconds' => false, + ]); + + $resolver->setDefault('attr', function (Options $options) { + return [ + 'data-datetimepicker' => 'on', + 'autocomplete' => 'off', + 'placeholder' => $options['format'], + 'data-format' => $options['format_picker'], + ]; + }); + } + + /** + * {@inheritdoc} + */ + public function getParent() + { + return DateTimeType::class; + } +} diff --git a/src/Form/Type/EndDateType.php b/src/Form/Type/EndDateType.php deleted file mode 100644 index 443130f8..00000000 --- a/src/Form/Type/EndDateType.php +++ /dev/null @@ -1,50 +0,0 @@ -setDefaults([ - 'label' => 'label.end', - 'widget' => 'single_text', - 'html5' => false, - 'format' => DateType::HTML5_FORMAT, - ]); - - $resolver->setDefault('attr', function (Options $options) { - return [ - 'autocomplete' => 'off', - 'data-datepicker' => 'on', - 'placeholder' => $options['format'], - ]; - }); - } - - /** - * {@inheritdoc} - */ - public function getParent() - { - return DateType::class; - } -} diff --git a/src/Repository/Query/TimesheetQuery.php b/src/Repository/Query/TimesheetQuery.php index bfebf891..cae9251a 100644 --- a/src/Repository/Query/TimesheetQuery.php +++ b/src/Repository/Query/TimesheetQuery.php @@ -11,6 +11,7 @@ namespace App\Repository\Query; use App\Entity\Activity; use App\Entity\User; +use App\Form\Model\DateRange; /** * Can be used for advanced timesheet repository queries. @@ -44,13 +45,14 @@ class TimesheetQuery extends ActivityQuery */ protected $state = self::STATE_ALL; /** - * @var \DateTime + * @var DateRange */ - protected $begin; - /** - * @var \DateTime - */ - protected $end; + protected $dateRange; + + public function __construct() + { + $this->dateRange = new DateRange(); + } /** * @return User @@ -123,7 +125,7 @@ class TimesheetQuery extends ActivityQuery */ public function getBegin() { - return $this->begin; + return $this->dateRange->getBegin(); } /** @@ -132,7 +134,7 @@ class TimesheetQuery extends ActivityQuery */ public function setBegin($begin) { - $this->begin = $begin; + $this->dateRange->setBegin($begin); return $this; } @@ -142,7 +144,7 @@ class TimesheetQuery extends ActivityQuery */ public function getEnd() { - return $this->end; + return $this->dateRange->getEnd(); } /** @@ -151,7 +153,26 @@ class TimesheetQuery extends ActivityQuery */ public function setEnd($end) { - $this->end = $end; + $this->dateRange->setEnd($end); + + return $this; + } + + /** + * @return DateRange + */ + public function getDateRange(): DateRange + { + return $this->dateRange; + } + + /** + * @param DateRange $dateRange + * @return TimesheetQuery + */ + public function setDateRange(DateRange $dateRange) + { + $this->dateRange = $dateRange; return $this; } diff --git a/src/Twig/DateExtensions.php b/src/Twig/DateExtensions.php index 7382fdcb..ef0ed6ef 100644 --- a/src/Twig/DateExtensions.php +++ b/src/Twig/DateExtensions.php @@ -9,8 +9,8 @@ namespace App\Twig; +use App\Utils\LocaleSettings; use DateTime; -use Symfony\Component\HttpFoundation\RequestStack; use Twig\TwigFilter; /** @@ -18,27 +18,17 @@ use Twig\TwigFilter; */ class DateExtensions extends \Twig_Extension { - private const FALLBACK_SHORT = 'Y-m-d'; + /** + * @var LocaleSettings + */ + protected $localeSettings; /** - * @var array + * @param LocaleSettings $localeSettings */ - protected $dateSettings; - - /** - * @var RequestStack - */ - protected $requestStack; - - /** - * DateExtensions constructor. - * @param RequestStack $requestStack - * @param array $dateSettings - */ - public function __construct(RequestStack $requestStack, array $dateSettings) + public function __construct(LocaleSettings $localeSettings) { - $this->requestStack = $requestStack; - $this->dateSettings = $dateSettings; + $this->localeSettings = $localeSettings; } /** @@ -53,26 +43,12 @@ class DateExtensions extends \Twig_Extension } /** - * @return string - */ - protected function getLocale() - { - return $this->requestStack->getCurrentRequest()->getLocale(); - } - - /** - * @param array $context * @param DateTime $date * @return string */ public function dateShort(DateTime $date) { - $locale = $this->getLocale(); - $format = self::FALLBACK_SHORT; - - if (isset($this->dateSettings[$locale]['date_short'])) { - $format = $this->dateSettings[$locale]['date_short']; - } + $format = $this->localeSettings->getDateFormat(); return date_format($date, $format); } diff --git a/src/Twig/Extensions.php b/src/Twig/Extensions.php index dee073d4..e298b311 100644 --- a/src/Twig/Extensions.php +++ b/src/Twig/Extensions.php @@ -11,6 +11,7 @@ namespace App\Twig; use App\Entity\Timesheet; use App\Utils\Duration; +use App\Utils\LocaleSettings; use NumberFormatter; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Intl\Intl; @@ -22,9 +23,9 @@ use Twig\TwigFilter; class Extensions extends \Twig_Extension { /** - * @var string[] + * @var LocaleSettings */ - protected $locales; + protected $localeSettings; /** * @var string @@ -89,12 +90,12 @@ class Extensions extends \Twig_Extension /** * @param RequestStack $requestStack - * @param array $languages + * @param LocaleSettings $localeSettings */ - public function __construct(RequestStack $requestStack, array $languages) + public function __construct(RequestStack $requestStack, LocaleSettings $localeSettings) { $this->requestStack = $requestStack; - $this->locales = $languages; + $this->localeSettings = $localeSettings; $this->durationFormatter = new Duration(); } @@ -200,19 +201,8 @@ class Extensions extends \Twig_Extension return '?'; } - $locale = $this->getLocale(); - switch ($format) { - case 'full': - $format = isset($this->locales[$locale]) ? $this->locales[$locale]['duration'] : null; - break; - case null: - case 'short': - $format = isset($this->locales[$locale]) ? $this->locales[$locale]['duration_short'] : null; - break; - } - if (null === $format) { - $format = '%h:%m h'; + $format = $this->localeSettings->getDurationFormat(); } return $this->durationFormatter->format($seconds, $format); @@ -253,7 +243,7 @@ class Extensions extends \Twig_Extension */ public function money($amount, $currency = null) { - $locale = $this->getLocale(); + $locale = $this->localeSettings->getLocale(); if ($this->locale !== $locale) { $this->locale = $locale; @@ -271,14 +261,6 @@ class Extensions extends \Twig_Extension return $result; } - /** - * @return string - */ - protected function getLocale() - { - return $this->requestStack->getCurrentRequest()->getLocale(); - } - /** * Takes the list of codes of the locales (languages) enabled in the * application and returns an array with the name of each locale written @@ -289,7 +271,7 @@ class Extensions extends \Twig_Extension public function getLocales() { $locales = []; - foreach (array_keys($this->locales) as $locale) { + foreach ($this->localeSettings->getAvailableLanguages() as $locale) { $locales[] = ['code' => $locale, 'name' => Intl::getLocaleBundle()->getLocaleName($locale, $locale)]; } diff --git a/src/Utils/LocaleSettings.php b/src/Utils/LocaleSettings.php new file mode 100644 index 00000000..f1be5dfb --- /dev/null +++ b/src/Utils/LocaleSettings.php @@ -0,0 +1,147 @@ +getMasterRequest()) { + $this->locale = $requestStack->getMasterRequest()->getLocale(); + } + $this->settings = $languageSettings; + } + + /** + * Returns an array with all available locale/language codes. + * + * @return string[] + */ + public function getAvailableLanguages(): array + { + return array_keys($this->settings); + } + + /** + * Returns the current locale used by the user in this request. + * + * @return string + */ + public function getLocale(): string + { + return $this->locale; + } + + /** + * Returns the format which is used by the form component to handle date values. + * + * @param null|string $locale + * @return string + */ + public function getDateTypeFormat(?string $locale = null): string + { + return $this->getConfigByLocaleAndKey('date_type', $locale); + } + + /** + * Returns the format which is used by the Javascript component to handle date values. + * + * @param null|string $locale + * @return string + */ + public function getDatePickerFormat(?string $locale = null): string + { + return $this->getConfigByLocaleAndKey('date_picker', $locale); + } + + /** + * Returns the format which is used by the form component to handle datetime values. + * + * @param null|string $locale + * @return string + */ + public function getDateTimeTypeFormat(?string $locale = null): string + { + return $this->getConfigByLocaleAndKey('date_time_type', $locale); + } + + /** + * Returns the format which is used by the Javascript component to handle datetime values. + * + * @param null|string $locale + * @return string + */ + public function getDateTimePickerFormat(?string $locale = null): string + { + return $this->getConfigByLocaleAndKey('date_time_picker', $locale); + } + + /** + * Returns the locale specific date format, which should be used in combination with the twig filter "|date". + * + * @param null|string $locale + * @return string + */ + public function getDateFormat(?string $locale = null): string + { + return $this->getConfigByLocaleAndKey('date', $locale); + } + + /** + * Returns the format used in the "|duration" twig filter to display a Timesheet duration. + * + * @param null|string $locale + * @return string + */ + public function getDurationFormat(?string $locale = null): string + { + return $this->getConfigByLocaleAndKey('duration', $locale); + } + + /** + * @param string $key + * @param null|string $locale + * @return string + */ + protected function getConfigByLocaleAndKey(string $key, ?string $locale = null): string + { + if (null === $locale) { + $locale = $this->getLocale(); + } + + if (!isset($this->settings[$locale])) { + throw new \InvalidArgumentException(sprintf('Unknown locale given: %s', $locale)); + } + + if (!isset($this->settings[$locale][$key])) { + throw new \InvalidArgumentException(sprintf('Unknown setting for locale %s: %s', $locale, $key)); + } + + return $this->settings[$locale][$key]; + } + +} diff --git a/templates/base.html.twig b/templates/base.html.twig index fed99058..d0f8df16 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -94,8 +94,22 @@ {# we do not call parent() as we use a custom built for the frontend assets and don't want the default {% endblock %} diff --git a/templates/dashboard/section-chart.html.twig b/templates/dashboard/section-chart.html.twig index d7ece03b..f003dbc9 100644 --- a/templates/dashboard/section-chart.html.twig +++ b/templates/dashboard/section-chart.html.twig @@ -94,7 +94,7 @@ {% for widget in section.widgets|slice(1, width) %} {% set data = widget.data %} {% if widget.dataType == constant('App\\Model\\Widget::DATA_TYPE_DURATION') %} - {% set data = widget.data|duration('full') %} + {% set data = widget.data|duration %} {% elseif widget.dataType == constant('App\\Model\\Widget::DATA_TYPE_MONEY') %} {% set data = widget.data|money %} {% endif %} diff --git a/templates/dashboard/section-simple.html.twig b/templates/dashboard/section-simple.html.twig index f50607b9..ff4afef7 100644 --- a/templates/dashboard/section-simple.html.twig +++ b/templates/dashboard/section-simple.html.twig @@ -17,7 +17,7 @@ {% set data = widget.data %} {% if widget.dataType == constant('App\\Model\\Widget::DATA_TYPE_DURATION') %} - {% set data = widget.data|duration('full') %} + {% set data = widget.data|duration %} {% elseif widget.dataType == constant('App\\Model\\Widget::DATA_TYPE_MONEY') %} {% set data = widget.data|money %} {% endif %} diff --git a/templates/form/kimai-theme.html.twig b/templates/form/kimai-theme.html.twig index 3a4414ab..ba76ea34 100644 --- a/templates/form/kimai-theme.html.twig +++ b/templates/form/kimai-theme.html.twig @@ -7,3 +7,15 @@ {% endif %} {{ parent() }} {% endblock form_label %} + +{% block daterange_widget %} +