jQuery(document).ready(function($){
'use strict';
function formatDateTime(date){
var year=date.getFullYear();
var month=String(date.getMonth() + 1).padStart(2, '0');
var day=String(date.getDate()).padStart(2, '0');
var hours=String(date.getHours()).padStart(2, '0');
var minutes=String(date.getMinutes()).padStart(2, '0');
return year + '-' + month + '-' + day + 'T' + hours + ':' + minutes;
}
function parseDateString(dateStr){
if(!dateStr) return null;
var date=new Date(dateStr);
if(!isNaN(date.getTime())){
return date;
}
var match=dateStr.match(/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})$/);
if(match){
return new Date(match[1], match[2] - 1, match[3], match[4], match[5]);
}
match=dateStr.match(/^(\d{2})\.(\d{2})\.(\d{4}) (\d{2}):(\d{2})$/);
if(match){
return new Date(match[3], match[2] - 1, match[1], match[4], match[5]);
}
return null;
}
function setInitialValues($calculator){
var $config=$calculator.find('.dic-config');
var rememberDates=$config.data('remember-dates')==='yes';
var defaultFrom=$config.data('default-from');
var defaultTo=$config.data('default-to');
var now=new Date();
var oneHourAgo=new Date(now.getTime() - 60 * 60 * 1000);
var dateFrom=null;
var dateTo=null;
if(rememberDates){
var savedFrom=localStorage.getItem('dic_last_date_from');
var savedTo=localStorage.getItem('dic_last_date_to');
if(savedFrom&&savedTo){
var savedDateFrom=parseDateString(savedFrom);
var savedDateTo=parseDateString(savedTo);
if(savedDateFrom&&savedDateTo){
var weekAgo=new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
if(savedDateFrom > weekAgo&&savedDateTo > weekAgo){
dateFrom=savedDateFrom;
dateTo=savedDateTo;
}}
}}
if(!dateFrom&&defaultFrom){
dateFrom=parseDateString(defaultFrom);
}
if(!dateTo&&defaultTo){
dateTo=parseDateString(defaultTo);
}
if(!dateFrom){
dateFrom=oneHourAgo;
}
if(!dateTo){
dateTo=now;
}
$calculator.find('.dic-date-from').val(formatDateTime(dateFrom));
$calculator.find('.dic-date-to').val(formatDateTime(dateTo));
}
$('.dic-calculator').each(function(){
var $calculator=$(this);
setInitialValues($calculator);
initCalculator($calculator);
});
function initCalculator($calculator){
var $form=$calculator.find('.dic-form');
var $result=$calculator.find('.dic-result');
var $detailResult=$calculator.find('.dic-result-content');
var $submitButton=$calculator.find('.dic-calculate-button');
var $resetButton=$calculator.find('.dic-reset-button');
$calculator.find('.dic-now-btn').on('click', function(){
var field=$(this).data('field');
var now=new Date();
var formattedNow=formatDateTime(now);
if(field==='from'){
$calculator.find('.dic-date-from').val(formattedNow);
}else{
$calculator.find('.dic-date-to').val(formattedNow);
}});
$calculator.find('.dic-quick-btn').on('click', function(){
var action=$(this).data('action');
var now=new Date();
var dateFrom, dateTo;
switch(action){
case 'today':
dateFrom=new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0);
dateTo=new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59);
break;
case 'yesterday':
var yesterday=new Date(now);
yesterday.setDate(now.getDate() - 1);
dateFrom=new Date(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate(), 0, 0);
dateTo=new Date(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate(), 23, 59);
break;
case 'tomorrow':
var tomorrow=new Date(now);
tomorrow.setDate(now.getDate() + 1);
dateFrom=new Date(tomorrow.getFullYear(), tomorrow.getMonth(), tomorrow.getDate(), 0, 0);
dateTo=new Date(tomorrow.getFullYear(), tomorrow.getMonth(), tomorrow.getDate(), 23, 59);
break;
case 'week_start':
var monday=new Date(now);
var day=monday.getDay();
var diff=monday.getDate() - day + (day==0 ? -6:1);
monday.setDate(diff);
dateFrom=new Date(monday.getFullYear(), monday.getMonth(), monday.getDate(), 0, 0);
dateTo=new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes());
break;
case 'week_end':
var sunday=new Date(now);
var day=sunday.getDay();
var diff=sunday.getDate() + (7 - day);
sunday.setDate(diff);
dateFrom=new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes());
dateTo=new Date(sunday.getFullYear(), sunday.getMonth(), sunday.getDate(), 23, 59);
break;
case 'month_start':
var firstDay=new Date(now.getFullYear(), now.getMonth(), 1);
dateFrom=new Date(firstDay.getFullYear(), firstDay.getMonth(), firstDay.getDate(), 0, 0);
dateTo=new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes());
break;
case 'month_end':
var lastDay=new Date(now.getFullYear(), now.getMonth() + 1, 0);
dateFrom=new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes());
dateTo=new Date(lastDay.getFullYear(), lastDay.getMonth(), lastDay.getDate(), 23, 59);
break;
default:
return;
}
$calculator.find('.dic-date-from').val(formatDateTime(dateFrom));
$calculator.find('.dic-date-to').val(formatDateTime(dateTo));
});
$resetButton.on('click', function(){
var now=new Date();
var oneHourAgo=new Date(now.getTime() - 60 * 60 * 1000);
$calculator.find('.dic-date-from').val(formatDateTime(oneHourAgo));
$calculator.find('.dic-date-to').val(formatDateTime(now));
$result.slideUp(300);
$calculator.find('.dic-loading').hide();
$submitButton.prop('disabled', false).text('Рассчитать');
localStorage.removeItem('dic_last_date_from');
localStorage.removeItem('dic_last_date_to');
localStorage.removeItem('dic_last_calculation');
document.cookie="dic_last_used=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
});
$submitButton.on('click', function(e){
e.preventDefault();
var $button=$(this);
var $loading=$calculator.find('.dic-loading');
var date_from=$form.find('input[name="dic_date_from"]').val();
var date_to=$form.find('input[name="dic_date_to"]').val();
if(!date_from||!date_to){
alert('Пожалуйста, заполните обе даты');
return;
}
if(new Date(date_to) < new Date(date_from)){
alert('Дата "До" не может быть раньше даты "От"');
return;
}
$button.prop('disabled', true).text('Расчет...');
$loading.show();
$result.hide();
$.ajax({
url: dic_ajax.ajax_url,
type: 'POST',
data: {
action: 'dic_calculate',
nonce: dic_ajax.nonce,
date_from: date_from,
date_to: date_to
},
dataType: 'json',
success: function(response){
if(response.success){
$calculator.find('.dic-interval').text(response.data.formatted);
$calculator.find('.dic-total-minutes').text(response.data.total_minutes);
$calculator.find('.dic-total-seconds').text(response.data.total_seconds);
$result.slideDown(300);
localStorage.setItem('dic_last_date_from', date_from);
localStorage.setItem('dic_last_date_to', date_to);
localStorage.setItem('dic_last_calculation', JSON.stringify({
date: new Date().toISOString(),
result: response.data.formatted
}));
}else{
alert('Произошла ошибка при расчете');
}},
error: function(xhr, status, error){
console.error('AJAX Error:', status, error);
alert('Ошибка соединения с сервером');
var date1=new Date(date_from);
var date2=new Date(date_to);
var diffMs=date2 - date1;
var diffSec=Math.floor(diffMs / 1000);
var diffMin=Math.floor(diffSec / 60);
var diffHour=Math.floor(diffMin / 60);
var diffDay=Math.floor(diffHour / 24);
var resultText='';
if(diffDay > 0) resultText +=diffDay + ' дней ';
if(diffHour % 24 > 0) resultText +=(diffHour % 24) + ' часов ';
if(diffMin % 60 > 0) resultText +=(diffMin % 60) + ' минут ';
if(diffSec % 60 > 0) resultText +=(diffSec % 60) + ' секунд';
$calculator.find('.dic-interval').text(resultText.trim());
$calculator.find('.dic-total-minutes').text(diffMin);
$calculator.find('.dic-total-seconds').text(diffSec);
$result.slideDown(300);
},
complete: function(){
$button.prop('disabled', false).text('Рассчитать');
$loading.hide();
}});
});
$calculator.find('.dic-date-input').on('keypress', function(e){
if(e.which===13){
e.preventDefault();
$submitButton.click();
}});
}});
(function(){
"use strict";var wp;(wp||={}).hooks=(()=>{var v=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var w=(e,n)=>{for(var s in n)v(e,s,{get:n[s],enumerable:!0})},D=(e,n,s,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of g(n))!I.call(e,t)&&t!==s&&v(e,t,{get:()=>n[t],enumerable:!(r=S(n,t))||r.enumerable});return e};var T=e=>D(v({},"__esModule",{value:!0}),e);var le={};w(le,{actions:()=>ae,addAction:()=>J,addFilter:()=>K,applyFilters:()=>N,applyFiltersAsync:()=>ee,createHooks:()=>F,currentAction:()=>te,currentFilter:()=>re,defaultHooks:()=>b,didAction:()=>ie,didFilter:()=>se,doAction:()=>X,doActionAsync:()=>Y,doingAction:()=>ne,doingFilter:()=>oe,filters:()=>ce,hasAction:()=>P,hasFilter:()=>Q,removeAction:()=>L,removeAllActions:()=>U,removeAllFilters:()=>W,removeFilter:()=>M});function z(e){return typeof e!="string"||e===""?(console.error("The namespace must be a non-empty string."),!1):/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(e)?!0:(console.error("The namespace can only contain numbers, letters, dashes, periods, underscores and slashes."),!1)}var m=z;function E(e){return typeof e!="string"||e===""?(console.error("The hook name must be a non-empty string."),!1):/^__/.test(e)?(console.error("The hook name cannot begin with `__`."),!1):/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(e)?!0:(console.error("The hook name can only contain numbers, letters, dashes, periods and underscores."),!1)}var f=E;function Z(e,n){return function(r,t,a,i=10){let c=e[n];if(!f(r)||!m(t))return;if(typeof a!="function"){console.error("The hook callback must be a function.");return}if(typeof i!="number"){console.error("If specified, the hook priority must be a number.");return}let l={callback:a,priority:i,namespace:t};if(c[r]){let o=c[r].handlers,d;for(d=o.length;d>0&&!(i>=o[d-1].priority);d--);d===o.length?o[d]=l:o.splice(d,0,l),c.__current.forEach(h=>{h.name===r&&h.currentIndex>=d&&h.currentIndex++})}else c[r]={handlers:[l],runs:0};r!=="hookAdded"&&e.doAction("hookAdded",r,t,a,i)}}var H=Z;function C(e,n,s=!1){return function(t,a){let i=e[n];if(!f(t)||!s&&!m(a))return;if(!i[t])return 0;let c=0;if(s)c=i[t].handlers.length,i[t]={runs:i[t].runs,handlers:[]};else{let l=i[t].handlers;for(let o=l.length-1;o>=0;o--)l[o].namespace===a&&(l.splice(o,1),c++,i.__current.forEach(d=>{d.name===t&&d.currentIndex>=o&&d.currentIndex--}))}return t!=="hookRemoved"&&e.doAction("hookRemoved",t,a),c}}var p=C;function O(e,n){return function(r,t){let a=e[n];return typeof t<"u"?r in a&&a[r].handlers.some(i=>i.namespace===t):r in a}}var _=O;function j(e,n,s,r){return function(a,...i){let c=e[n];c[a]||(c[a]={handlers:[],runs:0}),c[a].runs++;let l=c[a].handlers;if(!l||!l.length)return s?i[0]:void 0;let o={name:a,currentIndex:0};async function d(){try{c.__current.add(o);let u=s?i[0]:void 0;for(;o.currentIndex<l.length;)u=await l[o.currentIndex].callback.apply(null,i),s&&(i[0]=u),o.currentIndex++;return s?u:void 0}finally{c.__current.delete(o)}}function h(){try{c.__current.add(o);let u=s?i[0]:void 0;for(;o.currentIndex<l.length;)u=l[o.currentIndex].callback.apply(null,i),s&&(i[0]=u),o.currentIndex++;return s?u:void 0}finally{c.__current.delete(o)}}return(r?d:h)()}}var A=j;function $(e,n){return function(){let r=e[n];return Array.from(r.__current).at(-1)?.name??null}}var y=$;function V(e,n){return function(r){let t=e[n];return typeof r>"u"?t.__current.size>0:Array.from(t.__current).some(a=>a.name===r)}}var k=V;function q(e,n){return function(r){let t=e[n];if(f(r))return t[r]&&t[r].runs?t[r].runs:0}}var x=q;var B=class{actions;filters;addAction;addFilter;removeAction;removeFilter;hasAction;hasFilter;removeAllActions;removeAllFilters;doAction;doActionAsync;applyFilters;applyFiltersAsync;currentAction;currentFilter;doingAction;doingFilter;didAction;didFilter;constructor(){this.actions=Object.create(null),this.actions.__current=new Set,this.filters=Object.create(null),this.filters.__current=new Set,this.addAction=H(this,"actions"),this.addFilter=H(this,"filters"),this.removeAction=p(this,"actions"),this.removeFilter=p(this,"filters"),this.hasAction=_(this,"actions"),this.hasFilter=_(this,"filters"),this.removeAllActions=p(this,"actions",!0),this.removeAllFilters=p(this,"filters",!0),this.doAction=A(this,"actions",!1,!1),this.doActionAsync=A(this,"actions",!1,!0),this.applyFilters=A(this,"filters",!0,!1),this.applyFiltersAsync=A(this,"filters",!0,!0),this.currentAction=y(this,"actions"),this.currentFilter=y(this,"filters"),this.doingAction=k(this,"actions"),this.doingFilter=k(this,"filters"),this.didAction=x(this,"actions"),this.didFilter=x(this,"filters")}};function G(){return new B}var F=G;var b=F(),{addAction:J,addFilter:K,removeAction:L,removeFilter:M,hasAction:P,hasFilter:Q,removeAllActions:U,removeAllFilters:W,doAction:X,doActionAsync:Y,applyFilters:N,applyFiltersAsync:ee,currentAction:te,currentFilter:re,doingAction:ne,doingFilter:oe,didAction:ie,didFilter:se,actions:ae,filters:ce}=b;return T(le);})();
(window.wp||={}).hooks=wp.hooks;
})();
(function(){
"use strict";var wp;(wp||={}).i18n=(()=>{var nt=Object.create;var L=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var ut=Object.getPrototypeOf,lt=Object.prototype.hasOwnProperty;var ft=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports),ot=(t,r)=>{for(var e in r)L(t,e,{get:r[e],enumerable:!0})},O=(t,r,e,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let u of it(r))!lt.call(t,u)&&u!==e&&L(t,u,{get:()=>r[u],enumerable:!(n=at(r,u))||n.enumerable});return t};var st=(t,r,e)=>(e=t!=null?nt(ut(t)):{},O(r||!t||!t.__esModule?L(e,"default",{value:t,enumerable:!0}):e,t)),pt=t=>O(L({},"__esModule",{value:!0}),t);var $=ft((It,M)=>{M.exports=window.wp.hooks});var yt={};ot(yt,{__:()=>Z,_n:()=>G,_nx:()=>B,_x:()=>q,createI18n:()=>R,defaultI18n:()=>H,getLocaleData:()=>j,hasTranslation:()=>Q,isRTL:()=>J,resetLocaleData:()=>U,setLocaleData:()=>z,sprintf:()=>P,subscribe:()=>X});var ct=/%(((\d+)\$)|(\(([$_a-zA-Z][$_a-zA-Z0-9]*)\)))?[ +0#-]*\d*(\.(\d+|\*))?(ll|[lhqL])?([cduxXefgsp%])/g;function T(t,...r){var e=0;return Array.isArray(r[0])&&(r=r[0]),t.replace(ct,function(){var n,u,l,o,f;return n=arguments[3],u=arguments[5],l=arguments[7],o=arguments[9],o==="%"?"%":(l==="*"&&(l=r[e],e++),u===void 0?(n===void 0&&(n=e+1),e++,f=r[n-1]):r[0]&&typeof r[0]=="object"&&r[0].hasOwnProperty(u)&&(f=r[0][u]),o==="f"?f=parseFloat(f)||0:o==="d"&&(f=parseInt(f)||0),l!==void 0&&(o==="f"?f=f.toFixed(l):o==="s"&&(f=f.substr(0,l))),f??"")})}function P(t,...r){return T(t,...r)}var D,I,h,N;D={"(":9,"!":8,"*":7,"/":7,"%":7,"+":6,"-":6,"<":5,"<=":5,">":5,">=":5,"==":4,"!=":4,"&&":3,"||":2,"?":1,"?:":1};I=["(","?"];h={")":["("],":":["?","?:"]};N=/<=|>=|==|!=|&&|\|\||\?:|\(|!|\*|\/|%|\+|-|<|>|\?|\)|:/;function b(t){for(var r=[],e=[],n,u,l,o;n=t.match(N);){for(u=n[0],l=t.substr(0,n.index).trim(),l&&r.push(l);o=e.pop();){if(h[u]){if(h[u][0]===o){u=h[u][1]||u;break}}else if(I.indexOf(o)>=0||D[o]<D[u]){e.push(o);break}r.push(o)}h[u]||e.push(u),t=t.substr(n.index+u.length)}return t=t.trim(),t&&r.push(t),r.concat(e.reverse())}var dt={"!":function(t){return!t},"*":function(t,r){return t*r},"/":function(t,r){return t/r},"%":function(t,r){return t%r},"+":function(t,r){return t+r},"-":function(t,r){return t-r},"<":function(t,r){return t<r},"<=":function(t,r){return t<=r},">":function(t,r){return t>r},">=":function(t,r){return t>=r},"==":function(t,r){return t===r},"!=":function(t,r){return t!==r},"&&":function(t,r){return t&&r},"||":function(t,r){return t||r},"?:":function(t,r,e){if(t)throw r;return e}};function g(t,r){var e=[],n,u,l,o,f,_;for(n=0;n<t.length;n++){if(f=t[n],o=dt[f],o){for(u=o.length,l=Array(u);u--;)l[u]=e.pop();try{_=o.apply(null,l)}catch(v){return v}}else r.hasOwnProperty(f)?_=r[f]:_=+f;e.push(_)}return e[0]}function A(t){var r=b(t);return function(e){return g(r,e)}}function E(t){var r=A(t);return function(e){return+r({n:e})}}var S={contextDelimiter:"",onMissingKey:null};function _t(t){var r,e,n;for(r=t.split(";"),e=0;e<r.length;e++)if(n=r[e].trim(),n.indexOf("plural=")===0)return n.substr(7)}function x(t,r){var e;this.data=t,this.pluralForms={},this.options={};for(e in S)this.options[e]=r!==void 0&&e in r?r[e]:S[e]}x.prototype.getPluralForm=function(t,r){var e=this.pluralForms[t],n,u,l;return e||(n=this.data[t][""],l=n["Plural-Forms"]||n["plural-forms"]||n.plural_forms,typeof l!="function"&&(u=_t(n["Plural-Forms"]||n["plural-forms"]||n.plural_forms),l=E(u)),e=this.pluralForms[t]=l),e(r)};x.prototype.dcnpgettext=function(t,r,e,n,u){var l,o,f;return u===void 0?l=0:l=this.getPluralForm(t,u),o=e,r&&(o=r+this.options.contextDelimiter+e),f=this.data[t][o],f&&f[l]?f[l]:(this.options.onMissingKey&&this.options.onMissingKey(e,t),l===0?e:n)};var K={"":{plural_forms(t){return t===1?0:1}}},vt=/^i18n\.(n?gettext|has_translation)(_|$)/,R=(t,r,e)=>{let n=new x({}),u=new Set,l=()=>{u.forEach(a=>a())},o=a=>(u.add(a),()=>u.delete(a)),f=(a="default")=>n.data[a],_=(a,i="default")=>{n.data[i]={...n.data[i],...a},n.data[i][""]={...K[""],...n.data[i]?.[""]},delete n.pluralForms[i]},v=(a,i)=>{_(a,i),l()},V=(a,i="default")=>{n.data[i]={...n.data[i],...a,"":{...K[""],...n.data[i]?.[""],...a?.[""]}},delete n.pluralForms[i],l()},W=(a,i)=>{n.data={},n.pluralForms={},v(a,i)},m=(a="default",i,s,c,d)=>(n.data[a]||_(void 0,a),n.dcnpgettext(a,i,s,c,d)),y=a=>a||"default",Y=(a,i)=>{let s=m(i,void 0,a);return e?(s=e.applyFilters("i18n.gettext",s,a,i),e.applyFilters("i18n.gettext_"+y(i),s,a,i)):s},w=(a,i,s)=>{let c=m(s,i,a);return e?(c=e.applyFilters("i18n.gettext_with_context",c,a,i,s),e.applyFilters("i18n.gettext_with_context_"+y(s),c,a,i,s)):c},k=(a,i,s,c)=>{let d=m(c,void 0,a,i,s);return e?(d=e.applyFilters("i18n.ngettext",d,a,i,s,c),e.applyFilters("i18n.ngettext_"+y(c),d,a,i,s,c)):d},tt=(a,i,s,c,d)=>{let F=m(d,c,a,i,s);return e?(F=e.applyFilters("i18n.ngettext_with_context",F,a,i,s,c,d),e.applyFilters("i18n.ngettext_with_context_"+y(d),F,a,i,s,c,d)):F},rt=()=>w("ltr","text direction")==="rtl",et=(a,i,s)=>{let c=i?i+""+a:a,d=!!n.data?.[s??"default"]?.[c];return e&&(d=e.applyFilters("i18n.has_translation",d,a,i,s),d=e.applyFilters("i18n.has_translation_"+y(s),d,a,i,s)),d};if(t&&v(t,r),e){let a=i=>{vt.test(i)&&l()};e.addAction("hookAdded","core/i18n",a),e.addAction("hookRemoved","core/i18n",a)}return{getLocaleData:f,setLocaleData:v,addLocaleData:V,resetLocaleData:W,subscribe:o,__:Y,_x:w,_n:k,_nx:tt,isRTL:rt,hasTranslation:et}};var C=st($(),1);var p=R(void 0,void 0,C.defaultHooks),H=p,j=p.getLocaleData.bind(p),z=p.setLocaleData.bind(p),U=p.resetLocaleData.bind(p),X=p.subscribe.bind(p),Z=p.__.bind(p),q=p._x.bind(p),G=p._n.bind(p),B=p._nx.bind(p),J=p.isRTL.bind(p),Q=p.hasTranslation.bind(p);return pt(yt);})();
(window.wp||={}).i18n=wp.i18n;
})();