diff --git a/.env b/.env
new file mode 100644
index 000000000..d4e31d19a
--- /dev/null
+++ b/.env
@@ -0,0 +1,10 @@
+DBDRIVER=mysql
+MYSQLHOST=localhost
+MYSQLUSER=root
+MYSQLPASSWORD=
+MYSQLDATABASE=mlite
+MYSQLPORT=3306
+APPURL=http://localhost:8000/uploads
+MULTIAPP=
+MULTIAPP_REDIRECT=
+DEV_MODE=false
diff --git a/.gitignore b/.gitignore
index f55cc9c0c..de38332b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
.DS_Store
+.trae/
config.php
admin/tmp
admin/pla.php
@@ -7,11 +8,17 @@ websocket
uploads
vendor
__vendor
-systems/data/database.sdb
+app_amati/
+systems/data/*.sdb
webapps
backup/
plugins/apotek_online
plugins/simrsp
+# plugins/mini_pacs/*.sh
+# plugins/mini_pacs/*.json
+# plugins/mini_pacs/worklist_monitor.php
+# plugins/mini_pacs/receiver.php
+# plugins/mini_pacs/systemd/*
config.php
themes/mlite
systems/lib/jasperphp
@@ -21,31 +28,49 @@ plugins/utd/www
plugins/lisensi
assets/easyui
plugins/desktop
-plugins/crud_generator
+plugins/sia
plugins/kasir
plugins/dokter_radiologi
plugins/dokter_ulun
plugins/reg_periksa
-plugins/khanza
plugins/___siap_insulin
plugins/siap_insulin
plugins/pasien_galleries
plugins/cssd
+plugins/orthanc/docker
jasperphp
plugins/utd/Site.php
plugins/utd/view/adonan.html
websocket
-plugins/khanza.zip
plugins/website_ausy
-plugins/khanza
+plugins/rsgmgha
+plugins/verifikasi_klaim
plugins/pasien_galleries
# plugins/log_antrian_taskid
+mobile-react/node_modules
+frontend-react/node_modules
+frontend-react/dist
+frontend-react/node_modules/*
+frontend-react/dist/*
-.env
+#docker/
+docker/mysql*
+docker/orthanc/orthanc-db/*
+docker/orthanc/dummy-dicom/*
+docker/.trae
+docker/nginx/conf.d/*
+docker/dns/dnsmasq.log
+docker/www/*
+
+# .env
logs/
config.php
#workerman.php
composer.lock
backups
themes/atilamedika
+.vercel
+api/
+docker/.env
+mobile-react/node_modules/.package-lock.json
\ No newline at end of file
diff --git a/.htaccess b/.htaccess
index 9728d1073..30c608345 100644
--- a/.htaccess
+++ b/.htaccess
@@ -2,7 +2,7 @@
Options -Indexes
# Prevent visitors from viewing files directly
-
- Codename: Ataaka ' . htmlspecialchars($message) . ' Please contact administrator. Sepertinya tabel yang hendak diakses tidak tersedia di database. Anda mungkin tidak menginstal plugin secara menyeluruh, atau modul belum menyediakan tabel tersebut. File: ' . htmlspecialchars($e->getFile()) . ' on line ' . $e->getLine() . ' mLITE Healthcare System © ' . date('Y') . ' Silakan atur konfigurasi database utama Anda Sebelum memulai instalasi, buka **Windows Powershell** lalu jalankan perintah berikut: Tujuannya untuk mengubah ExecutionPolicy supaya dapat menjalankan script instalasi. Download dan extract Zip, klik kanan script
+ Download
+
+ Maaf, halaman Anjungan hanya dapat diakses melalui jaringan lokal (Intranet) Rumah Sakit atau oleh pengguna yang telah terautentikasi.
+
+ Codename: Sabrina
';
+ $debug_html .= 'File: ' . htmlspecialchars($debug['file']) . ' on line ' . $debug['line'] . '';
+ $debug_html .= '' . htmlspecialchars(implode("\n", $debug['trace'])) . '';
+ $debug_html .= '' . htmlspecialchars($error) . '
+
' . htmlspecialchars($errMsg) . 'Stack Trace:
';
+ $debug_info .= '' . htmlspecialchars($e->getTraceAsString()) . '
';
+ $debug_info .= '' . $title . '
+ ' . $content . '
+ ' . $debug_info . '
+ t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function xe(t,e){return me(t).getPropertyValue(e)}const be=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=be[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const Me=t=>Math.round(10*t)/10;function we(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=t&&ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Pe(t,e){const i=xe(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;h!t.skip))),"monotone"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const xi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function _i(t,e){const i=(""+t).match(xi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return vi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;oi&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Li(t){return"angle"===t?{between:Z,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;h{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;ao)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;n({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;tn?{start:e-i,end:e}:{start:e,end:e+i}}function Do(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;ue.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.startt,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=ki(So(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/So(this.options))}generateTickLabels(t){xo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Do(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t-1?t.split("\n"):t}function Ca(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Oa(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,x=0,b=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(b-g)*l.lineHeight+(b-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){x=Math.max(x,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),x+=p.width,{width:x,height:m}}function Aa(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Ta(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||Aa(t,e,i,s),yAlign:s}}function La(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:J(g,0,s.width-e.width),y:J(p,0,s.height-e.height)}}function Ea(t,e,i){const s=ki(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Ra(t){return Pa([],Da(t))}function Ia(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const za={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex{const e={before:[],lines:[],after:[]},n=Ia(i,t);Pa(e.before,Da(Fa(n,"beforeLabel",this,t))),Pa(e.lines,Fa(n,"label",this,t)),Pa(e.after,Da(Fa(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return Ra(Fa(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Fa(i,"beforeFooter",this,t),n=Fa(i,"footer",this,t),o=Fa(i,"afterFooter",this,t);let a=[];return a=Pa(a,Da(s)),a=Pa(a,Da(n)),a=Pa(a,Da(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;a
Untuk membatalkan, klik pesan ini atau tekan esc.",
+ "copySuccess": {
+ "_": "%d baris disalin ke papan klip",
+ "1": "satu baris disalin ke papan klip"
+ },
+ "copyTitle": "Salin ke Papan klip",
+ "createState": "Tambahkan Data",
+ "csv": "CSV",
+ "excel": "Excel",
+ "pageLength": {
+ "_": "Tampilkan %d baris",
+ "-1": "Tampilkan semua baris"
+ },
+ "pdf": "PDF",
+ "print": "Cetak",
+ "removeAllStates": "Hapus Semua Data",
+ "removeState": "Hapus Data",
+ "renameState": "Rubah Nama",
+ "savedStates": "SImpan Data",
+ "stateRestore": "Publihkan Data",
+ "updateState": "Perbaharui data"
+ },
+ "datetime": {
+ "amPm": {
+ "0": "am",
+ "1": "pm"
+ },
+ "hours": "Jam",
+ "minutes": "Menit",
+ "months": {
+ "0": "Januari",
+ "1": "Februari",
+ "10": "November",
+ "11": "Desember",
+ "2": "Maret",
+ "3": "April",
+ "4": "Mei",
+ "5": "Juni",
+ "6": "Juli",
+ "7": "Agustus",
+ "8": "September",
+ "9": "Oktober"
+ },
+ "next": "Selanjutnya",
+ "previous": "Sebelumnya",
+ "seconds": "Detik",
+ "unknown": "-",
+ "weekdays": {
+ "0": "Min",
+ "1": "Sen",
+ "2": "Sel",
+ "3": "Rab",
+ "4": "Kam",
+ "5": "Jum",
+ "6": "Sab"
+ }
+ },
+ "decimal": "",
+ "editor": {
+ "close": "Tutup",
+ "create": {
+ "button": "Tambah",
+ "submit": "Tambah",
+ "title": "Tambah inputan baru"
+ },
+ "edit": {
+ "button": "Edit",
+ "submit": "Edit",
+ "title": "Edit inputan"
+ },
+ "error": {
+ "system": "Terjadi kesalahan pada system. (Informasi Selebihnya<\/a>)."
+ },
+ "multi": {
+ "info": "Item yang dipilih berisi nilai yang berbeda untuk input ini. Untuk mengedit dan mengatur semua item untuk input ini ke nilai yang sama, klik atau tekan di sini, jika tidak maka akan mempertahankan nilai masing-masing.",
+ "noMulti": "Masukan ini dapat diubah satu per satu, tetapi bukan bagian dari grup.",
+ "restore": "Batalkan Perubahan",
+ "title": "Beberapa Nilai"
+ },
+ "remove": {
+ "button": "Hapus",
+ "confirm": {
+ "_": "Apakah Anda yakin untuk menghapus %d baris?",
+ "1": "Apakah Anda yakin untuk menghapus 1 baris?"
+ },
+ "submit": "Hapus",
+ "title": "Hapus inputan"
+ }
+ },
+ "emptyTable": "Tidak ada data yang tersedia pada tabel ini",
+ "info": "Menampilkan _START_ sampai _END_ dari _TOTAL_ entri",
+ "infoEmpty": "Menampilkan 0 sampai 0 dari 0 entri",
+ "infoFiltered": "(disaring dari _MAX_ entri keseluruhan)",
+ "infoPostFix": "",
+ "infoThousands": ",",
+ "lengthMenu": "Tampilkan _MENU_ entri",
+ "loadingRecords": "Sedang memuat...",
+ "processing": "Sedang memproses...",
+ "search": "Cari:",
+ "searchBuilder": {
+ "add": "Tambah Kondisi",
+ "button": {
+ "_": "Cari Builder (%d)",
+ "0": "Cari Builder"
+ },
+ "clearAll": "Bersihkan Semua",
+ "condition": "Kondisi",
+ "conditions": {
+ "array": {
+ "contains": "Berisi",
+ "empty": "Kosong",
+ "equals": "Sama dengan",
+ "not": "Tidak",
+ "notEmpty": "Tidak kosong",
+ "without": "Tanpa"
+ },
+ "date": {
+ "after": "Setelah",
+ "before": "Sebelum",
+ "between": "Diantara",
+ "empty": "Kosong",
+ "equals": "Sama dengan",
+ "not": "Tidak sama",
+ "notBetween": "Tidak diantara",
+ "notEmpty": "Tidak kosong"
+ },
+ "number": {
+ "between": "Di antara",
+ "empty": "Kosong",
+ "equals": "Sama dengan",
+ "gt": "Lebih besar dari",
+ "gte": "Lebih besar atau sama dengan",
+ "lt": "Lebih kecil dari",
+ "lte": "Lebih kecil atau sama dengan",
+ "not": "Tidak sama",
+ "notBetween": "Tidak di antara",
+ "notEmpty": "Tidak kosong"
+ },
+ "string": {
+ "contains": "Berisi",
+ "empty": "Kosong",
+ "endsWith": "Diakhiri dengan",
+ "equals": "Sama dengan",
+ "not": "Tidak sama",
+ "notContains": "Tidak Berisi",
+ "notEmpty": "Tidak kosong",
+ "notEndsWith": "Tidak diakhiri Dengan",
+ "notStartsWith": "Tidak diawali Dengan",
+ "startsWith": "Diawali dengan"
+ }
+ },
+ "data": "Data",
+ "deleteTitle": "Hapus filter",
+ "leftTitle": "Ke Kiri",
+ "logicAnd": "Dan",
+ "logicOr": "Atau",
+ "rightTitle": "Ke Kanan",
+ "title": {
+ "_": "Cari Builder (%d)",
+ "0": "Cari Builder"
+ },
+ "value": "Nilai"
+ },
+ "searchPanes": {
+ "clearMessage": "Bersihkan",
+ "collapse": {
+ "_": "Panel Pencarian (%d)",
+ "0": "Panel Pencarian"
+ },
+ "collapseMessage": "Ciutkan",
+ "count": "{total}",
+ "countFiltered": "{shown} ({total})",
+ "emptyPanes": "Tidak Ada Panel Pencarian",
+ "loadMessage": "Memuat Panel Pencarian",
+ "showMessage": "Tampilkan",
+ "title": "Saringan Aktif - %d"
+ },
+ "searchPlaceholder": "",
+ "select": {
+ "cells": {
+ "_": "%d sel dipilih",
+ "0": "",
+ "1": "1 sel dipilih"
+ },
+ "columns": {
+ "_": "%d kolom dipilih",
+ "0": "",
+ "1": "1 kolom dirpilih"
+ },
+ "rows": {
+ "_": "%d baris dipilih",
+ "0": "",
+ "1": "1 baris dipilih"
+ }
+ },
+ "stateRestore": {
+ "creationModal": {
+ "button": "Buat",
+ "columns": {
+ "search": "Pencarian Kolom",
+ "visible": "Visibilitas Kolom"
+ },
+ "name": "Nama:",
+ "order": "Penyortiran",
+ "paging": "Nomor Halaman",
+ "scroller": "Posisi Skrol",
+ "search": "Pencarian",
+ "searchBuilder": "Cari Builder",
+ "select": "Pemilihan",
+ "title": "Buat State Baru",
+ "toggleLabel": "Termasuk:"
+ },
+ "duplicateError": "Nama State ini sudah ada.",
+ "emptyError": "Nama tidak boleh kosong.",
+ "emptyStates": "Tidak ada State yang disimpan.",
+ "removeConfirm": "Apakah Anda yakin ingin menghapus %s?",
+ "removeError": "Gagal menghapus State.",
+ "removeJoiner": "dan",
+ "removeSubmit": "Hapus",
+ "removeTitle": "Penghapusan State",
+ "renameButton": "Ganti Nama",
+ "renameLabel": "Nama Baru untuk %s:",
+ "renameTitle": "Ganti nama State"
+ },
+ "thousands": ".",
+ "zeroRecords": "Tidak ditemukan data yang sesuai"
+}
\ No newline at end of file
diff --git a/assets/jscripts/dataTables.fixedColumns.min.js b/assets/jscripts/dataTables.fixedColumns.min.js
new file mode 100644
index 000000000..f8202b8ee
--- /dev/null
+++ b/assets/jscripts/dataTables.fixedColumns.min.js
@@ -0,0 +1,4 @@
+/*! FixedColumns 4.3.0
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(e){var i,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return e(t,window,document)}):"object"==typeof exports?(i=require("jquery"),o=function(t,s){s.fn.dataTable||require("datatables.net")(t,s)},"undefined"==typeof window?module.exports=function(t,s){return t=t||window,s=s||i(t),o(t,s),e(s,0,t.document)}:(o(window,i),module.exports=e(i,window,window.document))):e(jQuery,window,document)}(function(o,t,s,F){"use strict";var A,i,e,l,d=o.fn.dataTable;function r(t,s){var e=this;if(i&&i.versionCheck&&i.versionCheck("1.10.0"))return t=new i.Api(t),this.classes=A.extend(!0,{},r.classes),this.c=A.extend(!0,{},r.defaults,s),s&&s.left!==F||this.c.leftColumns===F||(this.c.left=this.c.leftColumns),s&&s.right!==F||this.c.rightColumns===F||(this.c.right=this.c.rightColumns),this.s={barWidth:0,dt:t,rtl:"rtl"===A("body").css("direction")},s={bottom:"0px",display:"block",position:"absolute",width:this.s.barWidth+1+"px"},this.dom={leftBottomBlocker:A("a+o)&&t.css({top:a+"px"})}};function l(e){return e.id&&m('label[for="'+e.id+'"]').val()||e.name}m.fn.contextMenu=function(e){var t=this,n=e;if(0
+ mLITE Setup
+
+ {$settings.title}
+ {?=isset_or($settings.title)?}
{$settings.title}
Biometrik JKN BPJS
+ Instalasi
+
+
+ Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;
+
+
+ install.ps1 lalu pilih Run with PowerShell, ketik R untuk melanjutkan. Jika terdapat prompt terkait Execution Policy, ketik huruf A yakni Yes to All lalu tunggu hingga proses instalasi selesai. Jalankan perintah node .\index.js untuk mengaktikan bot biometrik. Server bot akan berjalan di port 3000 secara default dan seharusnya dapat di-akses melalui browser di alamat http://localhost:3000.' : '') . '
+
Akses Ditolak
+
'
+ . '
'
+ . '
'
+ . ''
+ . ' ';
+ }
+ break;
+ case "operasi-display":
+ $rows = $this->_resultDisplayJadwalOperasi();
+ foreach ($rows as $row) {
+ echo '' . $row['nm_bangsal'] . ' '
+ . '' . $row['kelas'] . ' '
+ . ''
+ . 'Jumlah Kosong : ' . $row['kosong']['jumlah'] . ' | Jumlah Terisi : ' . $row['isi']['jumlah']
+ . ' '
+ . '
'
+ . '[ Operator : ' . $row['namadok'] . ' ] [ Rujukan Dari : '
+ . '{if: $row.kd_poli == "IGDK"}' . $row['kamar.namabangsal'] . '{elseif: $row.kd_poli == "U0027"}' . $row['kamar.namabangsal'] . '{else}' . $row['namapoli'] . '{/if} ]
'
+ . 'Antrian Laboratorium
Antrian Apotek
+ Antrian Radiologi
+ {?=strtoupper($namaloket)?}{$antrian}
+ {?=strtoupper($namaloket)?}{?=isset_or($antrian)?}
Made with by drg. F. Basoro. - {$powered}. + {?=isset_or($powered)?}.
-{$tanggal} {?= sprintf('Login sebagai %s', $username) ?}
+{?=isset_or($tanggal)?} {?= sprintf('Login sebagai %s', $username) ?}
| - | +
diff --git a/plugins/anjungan/view/daftar.html b/plugins/anjungan/view/daftar.html index 71b218bef..9124a8b16 100644 --- a/plugins/anjungan/view/daftar.html +++ b/plugins/anjungan/view/daftar.html @@ -5,7 +5,7 @@ -
+
@@ -138,16 +138,16 @@
diff --git a/plugins/anjungan/view/display.antrian.apotek.html b/plugins/anjungan/view/display.antrian.apotek.html index f16112f55..e867312b6 100644 --- a/plugins/anjungan/view/display.antrian.apotek.html +++ b/plugins/anjungan/view/display.antrian.apotek.html @@ -3,11 +3,11 @@
- + -
+
@@ -55,11 +55,39 @@ padding-top: 0; padding-bottom: 0; } + .scroll-container { + height: 700px; + overflow: hidden; + position: relative; + } + .scroll-container ul { + position: absolute; + width: 100%; + animation: scrollUp 20s linear infinite; + } + @keyframes scrollUp { + 0% { top: 100%; } + 100% { top: -100%; } + } + .running-text-wrapper { + overflow: hidden; + white-space: nowrap; + width: 100%; + } + .running-text-track { + display: inline-block; + padding-left: 100%; + animation: ticker 25s linear infinite; + } + @keyframes ticker { + 0% { transform: translateX(0); } + 100% { transform: translateX(-100%); } + }