diff --git a/build-ryzjsext.bat b/build-ryzjsext.bat new file mode 100644 index 0000000..e0c65ac --- /dev/null +++ b/build-ryzjsext.bat @@ -0,0 +1,14 @@ +del ryzjsext.min.js +del ryzjsext.min.tmp + +type ryzjsext-version.txt >> ryzjsext.min.js + +cd javascript-extensions + +"C:\B\Portable Files (dev)\Google Closure Compiler\closure-compiler-v20231112.jar" --js *.js --js_output_file ../ryzjsext.min.tmp + +cd.. + +type ryzjsext.min.tmp >> ryzjsext.min.js + +del ryzjsext.min.tmp \ No newline at end of file diff --git a/ryz-js-ext/ryz-js-ext-array.js b/javascript-extensions/ryz-js-ext-array.js similarity index 100% rename from ryz-js-ext/ryz-js-ext-array.js rename to javascript-extensions/ryz-js-ext-array.js diff --git a/ryz-js-ext/ryz-js-ext-boolean.js b/javascript-extensions/ryz-js-ext-boolean.js similarity index 100% rename from ryz-js-ext/ryz-js-ext-boolean.js rename to javascript-extensions/ryz-js-ext-boolean.js diff --git a/ryz-js-ext/ryz-js-ext-date.js b/javascript-extensions/ryz-js-ext-date.js similarity index 100% rename from ryz-js-ext/ryz-js-ext-date.js rename to javascript-extensions/ryz-js-ext-date.js diff --git a/ryz-js-ext/ryz-js-ext-document.js b/javascript-extensions/ryz-js-ext-document.js similarity index 100% rename from ryz-js-ext/ryz-js-ext-document.js rename to javascript-extensions/ryz-js-ext-document.js diff --git a/ryz-js-ext/ryz-js-ext-math.js b/javascript-extensions/ryz-js-ext-math.js similarity index 100% rename from ryz-js-ext/ryz-js-ext-math.js rename to javascript-extensions/ryz-js-ext-math.js diff --git a/ryz-js-ext/ryz-js-ext-string.js b/javascript-extensions/ryz-js-ext-string.js similarity index 100% rename from ryz-js-ext/ryz-js-ext-string.js rename to javascript-extensions/ryz-js-ext-string.js diff --git a/ryz-js-ext/ryz-js-ext-window.js b/javascript-extensions/ryz-js-ext-window.js similarity index 100% rename from ryz-js-ext/ryz-js-ext-window.js rename to javascript-extensions/ryz-js-ext-window.js diff --git a/ryz-gantts.js b/ryz-gantts.js index 1e87f64..94ef031 100644 --- a/ryz-gantts.js +++ b/ryz-gantts.js @@ -280,6 +280,31 @@ class RyzGantt { } } + // Calculate work-hours + for (var i=0; i - + diff --git a/ryzjsext-version.txt b/ryzjsext-version.txt new file mode 100644 index 0000000..5db3d74 --- /dev/null +++ b/ryzjsext-version.txt @@ -0,0 +1,4 @@ +/** + * Ray's JavaScript Extension + * @version v0.1.0.051 (2023/12/24 0115) + */ diff --git a/ryzjsext.min.js b/ryzjsext.min.js index b3c4306..4c62448 100644 --- a/ryzjsext.min.js +++ b/ryzjsext.min.js @@ -1,4 +1,17 @@ /** * Ray's JavaScript Extension - * @version v0.1.0.021 (2023/12/11 0056) + * @version v0.1.0.051 (2023/12/24 0115) */ +Array.prototype.addRange=function(a){if(null==a)return this;for(let b=0;b{b+=this.count(c.propName,c.value)});return b}; +Array.prototype.index=function(a,b){for(let c=0;ca?this.splice(0,0,b):a>=this.length?this.push(b):this.splice(a,0,b);return this};Array.prototype.joinIfNotNullOrWhitespace=function(a){let b="";for(let c=0;cc[a]?1:0});return this};Array.prototype.orderByDesc=function(a){this.sort(function(b,c){return b[a]c[a]?-1:0});return this}; +Array.prototype.remove=function(a){let b=[];for(let c=0;ca||a>=this.length)return this;this.splice(a,1);return this};Array.prototype.removeRange=function(a){for(let b=0;b{b=b.select(c.propName,c.value)});return b};Boolean.isFalse=function(a){return String.isNullOrUndefined(a)?!0:a.toString().containsCI("false","f","y","0","x")};Boolean.isTrue=function(a){return String.isNullOrUndefined(a)?!1:a.toString().containsCI("true","t","n","1","o")};Boolean.ifTrue=function(a,b,c){return Boolean.isTrue(a)?b:c};Date.addDays=function(a,b){a=new Date(a);a.addDays(b);return a};Date.addMonths=function(a,b){a=new Date(a);a.addMonths(b);return a};Date.addYears=function(a,b){a=new Date(a);a.addYears(b);return a};Date.today=function(){let a=new Date;a.setHours(0);a.setMinutes(0);a.setSeconds(0);a.setMilliseconds(0);return a};Date.prototype.addDays=function(a){this.setDate(this.getDate()+parseInt(a))};Date.prototype.addMonths=function(a){this.setMonth(this.getMonth()+parseInt(a))}; +Date.prototype.addYears=function(a){this.setFullYear(this.getFullYear()+parseInt(a))}; +Date.prototype.toCString=function(a){a=a.replace("fffffff",this.getMilliseconds().toString().padStart(7,"0"));a=a.replace("ffffff",this.getMilliseconds().toString().padStart(6,"0"));a=a.replace("fffff",this.getMilliseconds().toString().padStart(5,"0"));a=a.replace("yyyy",this.getFullYear().toString().padStart(4,"0"));a=a.replace("MMMM","{1}");a=a.replace("dddd","{2}");a=a.replace("ffff",this.getMilliseconds().toString().padStart(4,"0"));a=a.replace("yyy",this.getFullYear().toString().padStart(3,"0")); +a=a.replace("MMM","{3}");a=a.replace("ddd","{4}");a=a.replace("fff",this.getMilliseconds().toString().padStart(3,"0"));a=a.replace("zzz","");a=a.replace("yy",this.getFullYear().toString().slice(-2));a=a.replace("MM",(this.getMonth()+1).toString().padStart(2,"0"));a=a.replace("dd",this.getDate().toString().padStart(2,"0"));a=a.replace("HH",this.getHours().toString().padStart(2,"0"));a=a.replace("hh",(12=a.trim().length:0>=a.toString().trim().length};String.joinIfNotNullOrWhitespace=function(a,...b){let c="";for(let d=0;d$1")};String.prototype.toTitleCase=function(){let a;a=this.replace(/([A-Z]{1})/g," $1");a=a.trim();return a=a.charAt(0).toUpperCase()+a.substr(1)};String.prototype.getFilename=function(){return this.substring(this.lastIndexOf("/")+1)};Window.goToTop=function(){Window.scrollTo(0,0)}; +Window.fragment={get:function(){if(!window.location.hash)return null;const a=window.location.hash.indexOf("?");return 0>a?window.location.hash.substring(1):window.location.hash.substring(1,a)},getQuery:function(){if(!window.location.hash)return null;var a=window.location.hash;a=a.indexOf("?");if(0>a)return null;a=hasQueryString.substring(a+1);a=new URLSearchParams(a);const b={};for(const [c,d]of a.entries())b[c]=d;return b},clear:function(){location.hash="";history.replaceState("","",location.pathname)}};