HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Users/fred/AppData/Local/Microsoft/OneDrive/26.168.0830.0006/WebAssets/static/views/time.js
(function(){"use strict";var g=ViewLib.Messages,p=g.beginViewLoaded();g.onMessageType("page-visibility",function(e){e.visible&&(p.beginRevisit(),p.revisitCached())});function v(e,t){g.sendVpAction(e,{resultCode:t})}var C=["","January","February","March","April","May","June","July","August","September","October","November","December"];function E(e){return e===12||e===1||e===2?"season-winter":e>=3&&e<=5?"season-spring":e>=6&&e<=8?"season-summer":"season-fall"}function b(){return ViewLib.SQL.named("gallery_time_years",{}).then(function(e){return e.map(function(t){return{year:parseInt(t.year,10),count:t.count}})})}function w(e){var t=String(e),n={params:{year_start:t+"-",year_end:parseInt(t,10)+1+"-"}};return ViewLib.SQL.named("gallery_time_months",n).then(function(i){return i.map(function(a){return{month:parseInt(a.month,10),count:a.count}})})}function L(e){var t=String(e);return ViewLib.SQL.named("gallery_time_samples",{params:{start_date:t+"-",end_date:parseInt(t,10)+1+"-",candidate_limit:6}})}function S(e,t){var n=String(t).padStart(2,"0"),i=parseInt(t,10)+1,a=parseInt(e,10);return i>12&&(i=1,a++),ViewLib.SQL.named("gallery_time_samples",{params:{start_date:e+"-"+n+"-01",end_date:a+"-"+String(i).padStart(2,"0")+"-01",candidate_limit:6}})}function o(){this.currentView="loading",this.selectedYear=null,this.selectedMonth=null,this.yearsData=null,this.monthsData=null,this._pendingNavigatePhoto=null,this._skinParam=new URLSearchParams(location.search).get("skin"),this.navEl=document.getElementById("timeNav"),this.loadingEl=document.getElementById("timeLoading"),this.yearsGrid=document.getElementById("yearsGrid"),this.monthsGrid=document.getElementById("monthsGrid"),this.galleryContainer=document.getElementById("galleryContainer"),this.galleryFrame=document.getElementById("galleryFrame"),this.setupKeyboard(),this.loadYears()}o.prototype.setupKeyboard=function(){var e=this;document.addEventListener("keydown",function(t){t.key==="Escape"&&(e.currentView==="gallery"?e.goToMonths():e.currentView==="months"&&e.goToYears()),(t.ctrlKey||t.metaKey)&&(t.key==="a"||t.key==="d")&&!(t.target instanceof Element&&t.target.closest("input,textarea"))&&t.preventDefault()})},o.prototype._cacheKey=function(e){return"rewind_"+e},o.prototype._readCache=function(e){try{var t=localStorage.getItem(this._cacheKey(e));if(!t)return null;var n=JSON.parse(t);return Date.now()-n.ts>36e5?null:n.data}catch{return null}},o.prototype._writeCache=function(e,t){try{localStorage.setItem(this._cacheKey(e),JSON.stringify({data:t,ts:Date.now()}))}catch{}},o.prototype.loadYears=function(){var e=this,t=this._readCache("years");if(t){this.yearsData=t,this.loadingEl.style.display="none",this.showYears(),this._renderCachedSamples(this.yearsData,this.yearsGrid),this._refreshYearsInBackground();return}b().then(function(n){return e.yearsData=n,e.loadingEl.style.display="none",e.showYears(),e.loadSamplesForCards(e.yearsData,function(i){return L(i.year)},e.yearsGrid).then(function(){e._writeCache("years",e.yearsData)})}).catch(function(n){e.loadingEl.setAttribute("role","alert"),e.loadingEl.removeAttribute("aria-label"),e.loadingEl.textContent=Od4Strings.t("timeFailed"),console.error(n),p.fail(n&&n.name||"UnknownError")})},o.prototype._refreshYearsInBackground=function(){var e=this;b().then(function(t){if(e.currentView==="years"){var n=t.length!==e.yearsData.length||t.some(function(a,r){return!e.yearsData[r]||a.year!==e.yearsData[r].year||a.count!==e.yearsData[r].count}),i=e.yearsGrid.querySelector(".time-card-mosaic img.broken")!==null;if(n||i)return e.yearsData=t,e.showYears(),e.loadSamplesForCards(e.yearsData,function(a){return L(a.year)},e.yearsGrid).then(function(){e._writeCache("years",e.yearsData)})}}).catch(function(){})},o.prototype.loadMonths=function(e){var t=this,n=this._readCache("months_"+e);if(n){this.monthsData=n,this.loadingEl.style.display="none",this.showMonths(),this._renderCachedSamples(this.monthsData,this.monthsGrid),this._refreshMonthsInBackground(e);return}this.loadingEl.style.display="",w(e).then(function(i){return t.monthsData=i,t.loadingEl.style.display="none",t.showMonths(),t.loadSamplesForCards(t.monthsData,function(a){return S(e,a.month)},t.monthsGrid).then(function(){t._writeCache("months_"+e,t.monthsData)})}).catch(function(i){t.loadingEl.style.display="none",console.error(i)})},o.prototype._refreshMonthsInBackground=function(e){var t=this;w(e).then(function(n){if(t.currentView==="months"){var i=n.length!==t.monthsData.length||n.some(function(r,s){return!t.monthsData[s]||r.month!==t.monthsData[s].month||r.count!==t.monthsData[s].count}),a=t.monthsGrid.querySelector(".time-card-mosaic img.broken")!==null;if(i||a)return t.monthsData=n,t.showMonths(),t.loadSamplesForCards(t.monthsData,function(r){return S(e,r.month)},t.monthsGrid).then(function(){t._writeCache("months_"+e,t.monthsData)})}}).catch(function(){})},o.prototype._renderCachedSamples=function(e,t){for(var n=t.querySelectorAll(".time-card"),i=0;i<e.length;i++){var a=e[i],r=n[i];!r||!a.samples||a.samples.length===0||this.populateCardSamples(r,a.samples)}},o.prototype.hideAll=function(){this.yearsGrid.classList.add("hidden"),this.monthsGrid.classList.add("hidden"),this.galleryContainer.classList.remove("active")},o.prototype.showYears=function(){this.hideAll(),this.currentView="years",this.selectedYear=null,this.selectedMonth=null,this.galleryFrame.src="about:blank",this.renderNav(),this.renderYears(),this.yearsGrid.classList.remove("hidden"),this.yearsGrid.classList.add("fade-in"),setTimeout(function(){document.getElementById("yearsGrid").classList.remove("fade-in")},200),p.firstLoad()},o.prototype.showMonths=function(){this.hideAll(),this.currentView="months",this.galleryFrame.src="about:blank",this.renderNav(),this.renderMonths(),this.monthsGrid.classList.remove("hidden"),this.monthsGrid.classList.add("fade-in"),setTimeout(function(){document.getElementById("monthsGrid").classList.remove("fade-in")},200)},o.prototype.showGallery=function(e,t){this.hideAll(),this.currentView="gallery",this.selectedMonth=t,this.renderNav();var n=e+"-"+String(t).padStart(2,"0")+"-01T00:00:00",i=e,a=t+1;a>12&&(a=1,i++);var r=i+"-"+String(a).padStart(2,"0")+"-01T00:00:00",s="/webgl2.html?startDate="+encodeURIComponent(n)+"&endDate="+encodeURIComponent(r)+"&hideDate=1";this._skinParam&&(s+="&skin="+encodeURIComponent(this._skinParam));var l=this;this.galleryFrame.src=s,this.galleryFrame.onload=function(){l._pendingNavigatePhoto&&(l.galleryFrame.contentWindow.postMessage(l._pendingNavigatePhoto,"*"),l._pendingNavigatePhoto=null)},this.galleryContainer.classList.add("active")},o.prototype.goToYears=function(){var e=this;v("viewYearGrid"),this.yearsGrid.classList.add("fade-out"),this.monthsGrid.classList.add("fade-out"),setTimeout(function(){e.yearsGrid.classList.remove("fade-out"),e.monthsGrid.classList.remove("fade-out"),e.showYears()},200)},o.prototype.goToMonths=function(){var e=this;v("viewMonthGrid"),this.galleryContainer.classList.remove("active"),this.galleryFrame.src="about:blank",this.selectedMonth=null,setTimeout(function(){e.showMonths()},50)},o.prototype.drillToYear=function(e){var t=this;v("clickYear",String(e)),this.selectedYear=e,this.currentView="months",this.yearsGrid.classList.add("fade-out"),setTimeout(function(){t.yearsGrid.classList.remove("fade-out"),t.yearsGrid.classList.add("hidden"),t.loadMonths(e)},200)},o.prototype.drillToMonth=function(e,t){var n=this;v("clickMonth",String(e)+"-"+String(t).padStart(2,"0")),this.currentView="gallery",this.monthsGrid.classList.add("fade-out"),setTimeout(function(){n.monthsGrid.classList.remove("fade-out"),n.monthsGrid.classList.add("hidden"),n.showGallery(e,t)},200)},o.prototype.renderNav=function(){var e=this.navEl;e.innerHTML="",e.classList.toggle("at-root",this.currentView==="years");var t=this,n=document.createElement("button");if(n.textContent=Od4Strings.t("timeYears"),n.className=this.currentView==="years"?"chrome-btn-text current":"chrome-btn-text",this.currentView!=="years"&&n.addEventListener("click",function(){t.goToYears()}),e.appendChild(n),this.selectedYear){var i=document.createElement("span");i.className="separator",i.textContent=Od4Strings.t("breadcrumbSeparator"),e.appendChild(i);var a=document.createElement("button");a.textContent=this.selectedYear,a.className=this.currentView==="months"?"chrome-btn-text current":"chrome-btn-text",this.currentView!=="months"&&a.addEventListener("click",function(){t.goToMonths()}),e.appendChild(a)}if(this.selectedMonth){var r=document.createElement("span");r.className="separator",r.textContent=Od4Strings.t("breadcrumbSeparator"),e.appendChild(r);var s=document.createElement("button");s.textContent=C[this.selectedMonth],s.className="chrome-btn-text current",e.appendChild(s)}},o.prototype.renderYears=function(){var e=this.yearsGrid;e.innerHTML="";var t=this.yearsData.reduce(function(a,r){return a+r.count},0),n=document.createElement("div");n.className="time-grid-title",n.textContent=ViewLib.FormatCount.formatCount(this.yearsData.length,"timeAcrossYear",[t.toLocaleString(Od4Strings.resolveLocale())]),e.appendChild(n);var i=this;this.yearsData.forEach(function(a,r){var s=i.createCard(String(a.year),a.count,a.samples||[],r);s.addEventListener("click",function(){i.drillToYear(a.year)}),e.appendChild(s)})},o.prototype.renderMonths=function(){var e=this.monthsGrid;e.innerHTML="";var t=document.createElement("div");t.className="time-grid-title";var n=this.monthsData.reduce(function(r,s){return r+s.count},0);t.textContent=String(this.selectedYear);var i=document.createElement("span");i.style.cssText="font-size:14px; color:#666; margin-left:12px; font-weight:400",i.textContent=ViewLib.FormatCount.formatCount(this.monthsData.length,"timeAcrossMonth",[n.toLocaleString(Od4Strings.resolveLocale())]),t.appendChild(i),e.appendChild(t);var a=this;this.monthsData.forEach(function(r,s){var l=a.createCard(C[r.month],r.count,r.samples||[],s);l.classList.add(E(r.month)),l.addEventListener("click",function(){a.drillToMonth(a.selectedYear,r.month)}),e.appendChild(l)})},o.prototype.createCard=function(e,t,n,i,a){a=a||{};var r=document.createElement("div");r.className="time-card",r.style.animationDelay=i*60+"ms";var s=document.createElement("div");s.className="time-card-mosaic";for(var l=0;l<6;l++){var d=n[l];if(d&&d.thumbnailId){var c=document.createElement("img");c.dataset.od4ApiName="thumbnail.single",c.src="/api/thumbnail/"+d.thumbnailId,c.style.transitionDelay=l*80+"ms",c.onload=function(){this.classList.add("loaded")},c.onerror=function(){this.classList.add("broken")},s.appendChild(c)}else if(d&&d.driveItemId&&d.driveId){var h=document.createElement("img");h.dataset.od4ApiName="thumbnail.byNucleus",h.src=OD4_API_ORIGIN+ViewLib.Thumbnail.buildNucleusThumbnailUrl(d.driveId,d.driveItemId,{width:d.width,height:d.height,neededSize:Math.ceil(200*(window.devicePixelRatio||1)),lastModifiedDateTime:d.lastModifiedDateTime}),h.style.transitionDelay=l*80+"ms",h.onload=function(){this.classList.add("loaded")},h.onerror=function(){this.classList.add("broken")},s.appendChild(h)}else s.appendChild(document.createElement("div"))}if(r.appendChild(s),a.overlay){var u=document.createElement("div");u.className="time-card-mosaic-overlay",u.textContent=e,r.appendChild(u)}var m=document.createElement("div");m.className="time-card-info";var f=document.createElement("div");f.className="time-card-label",f.textContent=e,m.appendChild(f);var y=document.createElement("div");return y.className="time-card-count",y.textContent=ViewLib.FormatCount.formatCount(t,"sourcesPhotoCount"),m.appendChild(y),r.appendChild(m),this.animateCount(y,t),this.addParallax(r),r},o.prototype.animateCount=function(e,t){var n=600,i=performance.now();function a(r){var s=Math.min(1,(r-i)/n),l=1-Math.pow(1-s,3),d=Math.round(l*t);e.textContent=ViewLib.FormatCount.formatCount(d,"sourcesPhotoCount"),s<1&&requestAnimationFrame(a)}requestAnimationFrame(a)},o.prototype.addParallax=function(e){e.addEventListener("mousemove",function(t){var n=e.getBoundingClientRect(),i=(t.clientX-n.left)/n.width-.5,a=(t.clientY-n.top)/n.height-.5;e.style.transform="perspective(600px) rotateY("+i*8+"deg) rotateX("+-a*8+"deg) translateY(-4px)"}),e.addEventListener("mouseleave",function(){e.style.transform=""})},o.prototype.loadSamplesForCards=function(e,t,n){var i=this,a=n.querySelectorAll(".time-card"),r=3;function s(l){if(l>=e.length)return Promise.resolve();for(var d=[],c=l;c<Math.min(l+r,e.length);c++)(function(h){var u=e[h],m=a[h];m&&d.push(t(u).then(function(f){u.samples=f||[],i.populateCardSamples(m,u.samples)}).catch(function(f){console.error("Failed to load samples",f)}))})(c);return Promise.all(d).then(function(){return s(l+r)})}return s(0)},o.prototype.populateCardSamples=function(e,t){var n=e.querySelector(".time-card-mosaic");if(n)for(var i=n.children,a=0;a<6;a++){var r=t[a],s=i[a];if(!(!r||!s)&&s.tagName!=="IMG"){var l;if(r.thumbnailId)l="/api/thumbnail/"+r.thumbnailId;else if(r.driveItemId&&r.driveId)l=ViewLib.Thumbnail.buildNucleusThumbnailUrl(r.driveId,r.driveItemId,{width:r.width,height:r.height,neededSize:Math.ceil(200*(window.devicePixelRatio||1)),lastModifiedDateTime:r.lastModifiedDateTime});else continue;var d=document.createElement("img");d.src=l,d.style.transitionDelay=a*80+"ms",d.onload=function(){this.classList.add("loaded")},d.onerror=function(){this.classList.add("broken")},n.replaceChild(d,s)}}};var _;document.addEventListener("DOMContentLoaded",function(){_=new o,window._timeMachine=_})})();