@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 3.08 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{SqlError as e}from"./errorSupport.js";function t(t){if(null!==t.precision||null!==t.secondary)throw new e("PrimarySecondaryQualifiers")}function r(e,t){if(t.includes(".")){const r=t.split(".");e.second=parseFloat(r[0]),e.millis=parseInt(r[1],10)}else e.second=parseFloat(t)}const s="esri.core.sql.SqlInterval";class l{constructor(){this.declaredRootClass=s,this.op="+",this.day=0,this.second=0,this.hour=0,this.month=0,this.year=0,this.minute=0,this.millis=0}static isInterval(e){return"object"==typeof e&&null!=e&&"declaredRootClass"in e&&e.declaredRootClass===s}static createFromMilliseconds(e){const t=new l;return t.second=e/1e3,t}static createFromValueAndQualifier(s,a,o){let n=null;const i=new l;if(i.op="-"===o?"-":"+","interval-period"===a.type){t(a);const l=new RegExp("^[0-9]{1,}$");if("year"===a.period||"month"===a.period)throw new e("YearMonthIntervals");if("second"===a.period){if(!/^[0-9]{1,}(\.[0-9]{1,}){0,1}$/.test(s))throw new e("IllegalInterval");r(i,s)}else{if(!l.test(s))throw new e("IllegalInterval");i[a.period]=parseFloat(s)}}else{if(t(a.start),t(a.end),"year"===a.start.period||"month"===a.start.period||"year"===a.end.period||"month"===a.end.period)throw new e("YearMonthIntervals");switch(a.start.period){case"day":switch(a.end.period){case"hour":if(n=new RegExp("^[0-9]{1,} [0-9]{1,}$"),!n.test(s))throw new e("IllegalInterval");i[a.start.period]=parseFloat(s.split(" ")[0]),i[a.end.period]=parseFloat(s.split(" ")[1]);break;case"minute":if(n=new RegExp("^[0-9]{1,} [0-9]{1,2}:[0-9]{1,}$"),!n.test(s))throw new e("IllegalInterval");{i[a.start.period]=parseFloat(s.split(" ")[0]);const e=s.split(" ")[1].split(":");i.hour=parseFloat(e[0]),i.minute=parseFloat(e[1])}break;case"second":if(n=new RegExp("^[0-9]{1,} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,}(\\.[0-9]{1,}){0,1}$"),!n.test(s))throw new e("IllegalInterval");{i[a.start.period]=parseFloat(s.split(" ")[0]);const e=s.split(" ")[1].split(":");i.hour=parseFloat(e[0]),i.minute=parseFloat(e[1]),r(i,e[2])}break;default:throw new e("IllegalInterval")}break;case"hour":switch(a.end.period){case"minute":if(n=new RegExp("^[0-9]{1,}:[0-9]{1,}$"),!n.test(s))throw new e("IllegalInterval");i.hour=parseFloat(s.split(":")[0]),i.minute=parseFloat(s.split(":")[1]);break;case"second":if(n=new RegExp("^[0-9]{1,}:[0-9]{1,2}:[0-9]{1,}(\\.[0-9]{1,}){0,1}$"),!n.test(s))throw new e("IllegalInterval");{const e=s.split(":");i.hour=parseFloat(e[0]),i.minute=parseFloat(e[1]),r(i,e[2])}break;default:throw new e("IllegalInterval")}break;case"minute":if("second"!==a.end.period)throw new e("IllegalInterval");if(n=new RegExp("^[0-9]{1,}:[0-9]{1,}(\\.[0-9]{1,}){0,1}$"),!n.test(s))throw new e("IllegalInterval");{const e=s.split(":");i.minute=parseFloat(e[0]),r(i,e[1])}break;default:throw new e("IllegalInterval")}}return i}valueInMilliseconds(){return("-"===this.op?-1:1)*(this.millis+1e3*this.second+60*this.minute*1e3+60*this.hour*60*1e3+24*this.day*60*60*1e3+this.month*(365/12)*24*60*60*1e3+365*this.year*24*60*60*1e3)}}export{l as SqlInterval};