From 3d0c1ffe557837ab8bd907e017b1640206b43364 Mon Sep 17 00:00:00 2001 From: marszayn Date: Tue, 27 May 2025 15:17:58 +0700 Subject: [PATCH] UPDATE --- .../Controllers/JadwalSidangController.php | 49 +- .../Controllers/SuratArahanController.php | 43 +- composer.json | 1 + composer.lock | 149 +- config/blade-lucide-icons.php | 57 + .../assets/css/pertek/subkel/surat_arahan.css | 116 + .../assets/documents/rekomtek/penerimaan.pdf | Bin 0 -> 151191 bytes .../documents/tanggapan_arahan/tanggapan.pdf | Bin 0 -> 243982 bytes public/assets/js/backend/jadwal/datepickr.js | 11 + public/assets/js/backend/jadwal/flatpickr.js | 2 + .../assets/js/backend/jadwal/full-calendar.js | 6367 +++++++++++++++++ public/assets/js/backend/jadwal/pagination.js | 41 + public/assets/js/full-calendar.js | 310 +- public/assets/js/homeOneChart.js | 1172 ++- public/assets/json/backend/jadwal.json | 92 + .../backend/jadwal/filter.blade.php | 306 + .../backend/jadwal/modal_add.blade.php | 107 + .../backend/jadwal/modal_delete.blade.php | 20 + .../backend/jadwal/modal_edit.blade.php | 92 + .../backend/jadwal/modal_view.blade.php | 35 + resources/views/components/head.blade.php | 1 + resources/views/components/sidebar.blade.php | 12 +- .../views/dashboard/index.blade copy.php | 800 +++ resources/views/dashboard/index.blade.php | 1510 ++-- resources/views/layout/layout.blade.php | 3 +- resources/views/pengguna/index_user.blade.php | 459 ++ .../views/penjadwalan/jadwal_sidang.blade.php | 566 +- .../admin_modal_detail_arahan.blade.php | 378 - .../pertek/arahan/index_arahan.blade.php | 10 +- .../arahan/modal_detail_arahan.blade.php | 158 - .../pertek/arahan/user_view_arahan.blade.php | 33 +- .../arahan/verifikator_view_arahan.blade.php | 79 + .../views/pertek/slo/index_slo.blade.php | 2 - resources/views/pertek/subkel/surat.blade.php | 148 +- .../views/pertek/subkel/surat_pdf.blade.php | 162 +- .../pertek/subkel/surat_penerimaan.blade.php | 66 +- routes/web.php | 25 +- 37 files changed, 11038 insertions(+), 2344 deletions(-) create mode 100644 config/blade-lucide-icons.php create mode 100644 public/assets/css/pertek/subkel/surat_arahan.css create mode 100644 public/assets/documents/rekomtek/penerimaan.pdf create mode 100644 public/assets/documents/tanggapan_arahan/tanggapan.pdf create mode 100644 public/assets/js/backend/jadwal/datepickr.js create mode 100644 public/assets/js/backend/jadwal/flatpickr.js create mode 100644 public/assets/js/backend/jadwal/full-calendar.js create mode 100644 public/assets/js/backend/jadwal/pagination.js create mode 100644 public/assets/json/backend/jadwal.json create mode 100644 resources/views/components/backend/jadwal/filter.blade.php create mode 100644 resources/views/components/backend/jadwal/modal_add.blade.php create mode 100644 resources/views/components/backend/jadwal/modal_delete.blade.php create mode 100644 resources/views/components/backend/jadwal/modal_edit.blade.php create mode 100644 resources/views/components/backend/jadwal/modal_view.blade.php create mode 100644 resources/views/dashboard/index.blade copy.php delete mode 100644 resources/views/pertek/arahan/admin_modal_detail_arahan.blade.php delete mode 100644 resources/views/pertek/arahan/modal_detail_arahan.blade.php diff --git a/app/Http/Controllers/JadwalSidangController.php b/app/Http/Controllers/JadwalSidangController.php index 897e630..b947437 100644 --- a/app/Http/Controllers/JadwalSidangController.php +++ b/app/Http/Controllers/JadwalSidangController.php @@ -3,16 +3,59 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use Illuminate\Support\Facades\File; class JadwalSidangController extends Controller { - public function index() + public function index(Request $request) { - return view('penjadwalan.jadwal_sidang'); + $jadwal = json_decode(File::get(public_path('assets/json/backend/jadwal.json')), true); + + // Filter by document type if provided in request + $documentType = $request->input('document_type'); + if ($documentType) { + $jadwal = array_values(array_filter($jadwal, function($item) use ($documentType) { + return isset($item['documentType']) && $item['documentType'] === $documentType; + })); + } + + return view('penjadwalan.jadwal_sidang', compact('jadwal')); } - public function create() + public function create(Request $request) { + // Handle form submission for creating new schedule + if ($request->isMethod('post')) { + $jadwal = json_decode(File::get(public_path('assets/json/backend/jadwal.json')), true); + + // Get the highest ID and increment by 1 + $maxId = 0; + foreach ($jadwal as $item) { + if (isset($item['id']) && $item['id'] > $maxId) { + $maxId = $item['id']; + } + } + + // Create new jadwal item + $newJadwal = [ + 'id' => $maxId + 1, + 'title' => $request->input('title'), + 'start' => $request->input('start_date'), + 'end' => $request->input('end_date'), + 'allDay' => $request->input('all_day', false), + 'documentType' => $request->input('document_type'), + 'description' => $request->input('description', '') + ]; + + // Add to existing jadwal + $jadwal[] = $newJadwal; + + // Save back to JSON file + File::put(public_path('assets/json/backend/jadwal.json'), json_encode($jadwal, JSON_PRETTY_PRINT)); + + return redirect()->route('jadwal.index')->with('success', 'Jadwal berhasil ditambahkan'); + } + return view('penjadwalan.create_jadwal'); } diff --git a/app/Http/Controllers/SuratArahanController.php b/app/Http/Controllers/SuratArahanController.php index 731566f..0d4af63 100644 --- a/app/Http/Controllers/SuratArahanController.php +++ b/app/Http/Controllers/SuratArahanController.php @@ -3,7 +3,8 @@ namespace App\Http\Controllers; // use Barryvdh\DomPDF\PDF; -use Barryvdh\DomPDF\Facade as PDF; +// use Barryvdh\DomPDF\Facade as PDF; +use Barryvdh\DomPDF\Facade\Pdf; use Barryvdh\DomPDF\Facade\Pdf as FacadePdf; use Illuminate\Http\Request; @@ -11,21 +12,21 @@ class SuratArahanController extends Controller { public function show() { - // $data = [ - // 'tanggal_surat' => '14 Januari 2025', - // 'kepada' => 'Direktur Utama PT. Gedung Bank Exim', - // 'nomor_surat' => 'e-0025/LH.01.03', - // 'isi_surat' => 'Menindaklanjuti surat Saudara Nomor 1620/DIR-GBE/XI/2024...', - // ]; - return view('pertek.subkel.surat'); } public function save(Request $request) { - // Ambil data dari form - $data = $request->all(); + $data = $request->validate([ + 'nomor_surat' => 'required', + 'sifat' => 'required', + 'lampiran' => 'required', + 'hal' => 'required', + 'tanggal_surat' => 'required|date', + 'kepada' => 'required', + 'isi_surat' => 'required', + ]); return view('pertek.subkel.surat', compact('data')); } @@ -33,8 +34,24 @@ class SuratArahanController extends Controller public function exportPDF(Request $request) { - $data = $request->all(); - $pdf = FacadePdf::loadView('pertek.subkel.surat_pdf', compact('data')); - return $pdf->download('surat.pdf'); + // Get data from session or request + if ($request->has('nomor_surat')) { + // Data is coming directly from the request + $data = $request->all(); + } else { + // No data provided, redirect back + return redirect()->back()->with('error', 'No data available for PDF export.'); + } + + // Configure PDF with proper settings + $pdf = Pdf::loadView('pertek.subkel.surat_pdf', compact('data')) + ->setPaper('a4') + ->setOption('margin-top', 10) + ->setOption('margin-right', 10) + ->setOption('margin-bottom', 10) + ->setOption('margin-left', 10) + ->setOption('dpi', 150); + + return $pdf->download('surat_arahan_' . date('Ymd_His') . '.pdf'); } } diff --git a/composer.json b/composer.json index b9e8e61..1b51d44 100644 --- a/composer.json +++ b/composer.json @@ -10,6 +10,7 @@ "barryvdh/laravel-dompdf": "^3.1", "laravel/framework": "^12.0", "laravel/tinker": "^2.10.1", + "mallardduck/blade-lucide-icons": "^1.23", "spatie/laravel-html": "^3.12" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 8a5fde5..2199d0f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0065f153ee5a0e14c6df3154445ad6bb", + "content-hash": "a630bee8cc849f41bc0261821020fefa", "packages": [ { "name": "barryvdh/laravel-dompdf", @@ -83,6 +83,87 @@ ], "time": "2025-02-13T15:07:54+00:00" }, + { + "name": "blade-ui-kit/blade-icons", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/driesvints/blade-icons.git", + "reference": "7b743f27476acb2ed04cb518213d78abe096e814" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/driesvints/blade-icons/zipball/7b743f27476acb2ed04cb518213d78abe096e814", + "reference": "7b743f27476acb2ed04cb518213d78abe096e814", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/view": "^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.4|^8.0", + "symfony/console": "^5.3|^6.0|^7.0", + "symfony/finder": "^5.3|^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "^1.5.1", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0", + "phpunit/phpunit": "^9.0|^10.5|^11.0" + }, + "bin": [ + "bin/blade-icons-generate" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "BladeUI\\Icons\\BladeIconsServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "BladeUI\\Icons\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dries Vints", + "homepage": "https://driesvints.com" + } + ], + "description": "A package to easily make use of icons in your Laravel Blade views.", + "homepage": "https://github.com/blade-ui-kit/blade-icons", + "keywords": [ + "blade", + "icons", + "laravel", + "svg" + ], + "support": { + "issues": "https://github.com/blade-ui-kit/blade-icons/issues", + "source": "https://github.com/blade-ui-kit/blade-icons" + }, + "funding": [ + { + "url": "https://github.com/sponsors/driesvints", + "type": "github" + }, + { + "url": "https://www.paypal.com/paypalme/driesvints", + "type": "paypal" + } + ], + "time": "2025-02-13T20:35:06+00:00" + }, { "name": "brick/math", "version": "0.12.3", @@ -2238,6 +2319,66 @@ ], "time": "2024-12-08T08:18:47+00:00" }, + { + "name": "mallardduck/blade-lucide-icons", + "version": "1.23.0", + "source": { + "type": "git", + "url": "https://github.com/mallardduck/blade-lucide-icons.git", + "reference": "19081819bb527e15eed22f6528b9d059c1a8df8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mallardduck/blade-lucide-icons/zipball/19081819bb527e15eed22f6528b9d059c1a8df8b", + "reference": "19081819bb527e15eed22f6528b9d059c1a8df8b", + "shasum": "" + }, + "require": { + "blade-ui-kit/blade-icons": "^1.6", + "php": "^8.0" + }, + "require-dev": { + "ext-dom": "*", + "ext-fileinfo": "*", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.0|^10.5|^11.0", + "spatie/phpunit-snapshot-assertions": "^4.2.14" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "MallardDuck\\LucideIcons\\BladeLucideIconsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "MallardDuck\\LucideIcons\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dan Pock" + } + ], + "description": "A package to easily make use of Lucide icons in your Laravel Blade views.", + "homepage": "https://github.com/mallardduck/blade-lucide-icons", + "keywords": [ + "LucideIcons", + "blade", + "laravel" + ], + "support": { + "issues": "https://github.com/mallardduck/blade-lucide-icons/issues", + "source": "https://github.com/mallardduck/blade-lucide-icons/tree/1.23.0" + }, + "time": "2024-07-22T15:40:39+00:00" + }, { "name": "masterminds/html5", "version": "2.9.0", @@ -8507,12 +8648,12 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { "php": "^8.2" }, - "platform-dev": [], - "plugin-api-version": "2.3.0" + "platform-dev": {}, + "plugin-api-version": "2.6.0" } diff --git a/config/blade-lucide-icons.php b/config/blade-lucide-icons.php new file mode 100644 index 0000000..8953189 --- /dev/null +++ b/config/blade-lucide-icons.php @@ -0,0 +1,57 @@ + 'lucide', + + /* + |----------------------------------------------------------------- + | Fallback Icon + |----------------------------------------------------------------- + | + | This config option allows you to define a fallback + | icon when an icon in this set cannot be found. + | + */ + + 'fallback' => '', + + /* + |----------------------------------------------------------------- + | Default Set Classes + |----------------------------------------------------------------- + | + | This config option allows you to define some classes which + | will be applied by default to all icons within this set. + | + */ + + 'class' => '', + + /* + |----------------------------------------------------------------- + | Default Set Attributes + |----------------------------------------------------------------- + | + | This config option allows you to define some attributes which + | will be applied by default to all icons within this set. + | + */ + + 'attributes' => [ + // 'width' => 50, + // 'height' => 50, + ], + +]; diff --git a/public/assets/css/pertek/subkel/surat_arahan.css b/public/assets/css/pertek/subkel/surat_arahan.css new file mode 100644 index 0000000..6767916 --- /dev/null +++ b/public/assets/css/pertek/subkel/surat_arahan.css @@ -0,0 +1,116 @@ +.container { + max-width: 100%; + padding: 20px; +} + +.surat-container { + font-family: "Times New Roman", Times, serif; + font-size: 12pt; + line-height: 1.5; + width: 210mm; + height: auto; + min-height: 297mm; + padding: 20mm; + background-color: white; + margin: 0 auto; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + position: relative; +} + +.kop-surat { + text-align: center; + padding-bottom: 10px; + margin-bottom: 20px; +} + +.kop-surat img { + width: 100%; +} + +.surat-details { + width: 100%; +} + +.form-row { + margin-bottom: 15px; +} + +.form-group { + position: relative; +} + +.form-group label { + display: inline-block; + width: 120px; + margin-right: 10px; +} + +input, +textarea { + width: calc(100% - 135px); + border: 1px solid #000; + padding: 5px; + background-color: white; + font-family: "Times New Roman", Times, serif; + font-size: 12pt; +} + +textarea { + height: 200px; +} + +.content-surat { + margin-top: 20px; + text-align: justify; +} + +.form-actions { + margin-top: 20px; + text-align: right; +} + +.btn { + padding: 10px 20px; + background-color: #007bff; + color: white; + border: none; + cursor: pointer; +} + +.preview-section { + margin-top: 30px; + border-top: 1px solid #ddd; + padding-top: 20px; +} + +.preview-section h3 { + margin-bottom: 20px; +} + +.details-table { + gap: 10px; + display: flex; + flex-direction: row; + width: 100%; + border-collapse: collapse; +} + +.details-table td { + padding: 5px 0; +} + +.details-table .label { + width: 120px; +} + +.details-table .colon { + width: 20px; + text-align: center; +} + +.ttd-section { + margin-top: 30px; + text-align: right; + width: 40%; + float: right; +} diff --git a/public/assets/documents/rekomtek/penerimaan.pdf b/public/assets/documents/rekomtek/penerimaan.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dbc8f771dd6e3ca11be23721312c3b8fcf232ba5 GIT binary patch literal 151191 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 iZ2I5lh=6SmZYw}O8ULxlKv8#aa$aaduI{= literal 0 HcmV?d00001 diff --git a/public/assets/documents/tanggapan_arahan/tanggapan.pdf b/public/assets/documents/tanggapan_arahan/tanggapan.pdf new file mode 100644 index 0000000000000000000000000000000000000000..04ca91bfe6c4fee3943ebd723d163471d883cb57 GIT binary patch literal 243982 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 z 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",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var n=e%100;if(n>3&&n<21)return"th";switch(n%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},o=function(e,n){return void 0===n&&(n=2),("000"+e).slice(-1*n)},r=function(e){return!0===e?1:0};function l(e,n){var t;return function(){var a=this,i=arguments;clearTimeout(t),t=setTimeout((function(){return e.apply(a,i)}),n)}}var c=function(e){return e instanceof Array?e:[e]};function s(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove(n)}function d(e,n,t){var a=window.document.createElement(e);return n=n||"",t=t||"",a.className=n,void 0!==t&&(a.textContent=t),a}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function f(e,n){return n(e)?e:e.parentNode?f(e.parentNode,n):void 0}function m(e,n){var t=d("div","numInputWrapper"),a=d("input","numInput "+e),i=d("span","arrowUp"),o=d("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?a.type="number":(a.type="text",a.pattern="\\d*"),void 0!==n)for(var r in n)a.setAttribute(r,n[r]);return t.appendChild(a),t.appendChild(i),t.appendChild(o),t}function g(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(n){return e.target}}var p=function(){},h=function(e,n,t){return t.months[n?"shorthand":"longhand"][e]},v={D:p,F:function(e,n,t){e.setMonth(t.months.longhand.indexOf(n))},G:function(e,n){e.setHours((e.getHours()>=12?12:0)+parseFloat(n))},H:function(e,n){e.setHours(parseFloat(n))},J:function(e,n){e.setDate(parseFloat(n))},K:function(e,n,t){e.setHours(e.getHours()%12+12*r(new RegExp(t.amPM[1],"i").test(n)))},M:function(e,n,t){e.setMonth(t.months.shorthand.indexOf(n))},S:function(e,n){e.setSeconds(parseFloat(n))},U:function(e,n){return new Date(1e3*parseFloat(n))},W:function(e,n,t){var a=parseInt(n),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+t.firstDayOfWeek),i},Y:function(e,n){e.setFullYear(parseFloat(n))},Z:function(e,n){return new Date(n)},d:function(e,n){e.setDate(parseFloat(n))},h:function(e,n){e.setHours((e.getHours()>=12?12:0)+parseFloat(n))},i:function(e,n){e.setMinutes(parseFloat(n))},j:function(e,n){e.setDate(parseFloat(n))},l:p,m:function(e,n){e.setMonth(parseFloat(n)-1)},n:function(e,n){e.setMonth(parseFloat(n)-1)},s:function(e,n){e.setSeconds(parseFloat(n))},u:function(e,n){return new Date(parseFloat(n))},w:p,y:function(e,n){e.setFullYear(2e3+parseFloat(n))}},D={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},w={Z:function(e){return e.toISOString()},D:function(e,n,t){return n.weekdays.shorthand[w.w(e,n,t)]},F:function(e,n,t){return h(w.n(e,n,t)-1,!1,n)},G:function(e,n,t){return o(w.h(e,n,t))},H:function(e){return o(e.getHours())},J:function(e,n){return void 0!==n.ordinal?e.getDate()+n.ordinal(e.getDate()):e.getDate()},K:function(e,n){return n.amPM[r(e.getHours()>11)]},M:function(e,n){return h(e.getMonth(),!0,n)},S:function(e){return o(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,n,t){return t.getWeek(e)},Y:function(e){return o(e.getFullYear(),4)},d:function(e){return o(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return o(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,n){return n.weekdays.longhand[e.getDay()]},m:function(e){return o(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o,l=e.isMobile,c=void 0!==l&&l;return function(e,n,a){var i=a||r;return void 0===t.formatDate||c?n.split("").map((function(n,a,o){return w[n]&&"\\"!==o[a-1]?w[n](e,i,t):"\\"!==n?n:""})).join(""):t.formatDate(e,n,i)}},C=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o;return function(e,n,i,o){if(0===e||e){var l,c=o||r,s=e;if(e instanceof Date)l=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if("string"==typeof e){var d=n||(t||a).dateFormat,u=String(e).trim();if("today"===u)l=new Date,i=!0;else if(t&&t.parseDate)l=t.parseDate(e,d);else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else{for(var f=void 0,m=[],g=0,p=0,h="";g=0?new Date:new Date(w.config.minDate.getTime()),t=E(w.config);n.setHours(t.hours,t.minutes,t.seconds,n.getMilliseconds()),w.selectedDates=[n],w.latestSelectedDateObj=n}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var n="keydown"===e.type,t=g(e),a=t;void 0!==w.amPM&&t===w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]);var i=parseFloat(a.getAttribute("min")),l=parseFloat(a.getAttribute("max")),c=parseFloat(a.getAttribute("step")),s=parseInt(a.value,10),d=e.delta||(n?38===e.which?1:-1:0),u=s+c*d;if(void 0!==a.value&&2===a.value.length){var f=a===w.hourElement,m=a===w.minuteElement;ul&&(u=a===w.hourElement?u-l-r(!w.amPM):i,m&&L(void 0,1,w.hourElement)),w.amPM&&f&&(1===c?u+s===23:Math.abs(u-s)>c)&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]),a.value=o(u)}}(e);var a=w._input.value;O(),ye(),w._input.value!==a&&w._debouncedChange()}function O(){if(void 0!==w.hourElement&&void 0!==w.minuteElement){var e,n,t=(parseInt(w.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(w.minuteElement.value,10)||0)%60,i=void 0!==w.secondElement?(parseInt(w.secondElement.value,10)||0)%60:0;void 0!==w.amPM&&(e=t,n=w.amPM.textContent,t=e%12+12*r(n===w.l10n.amPM[1]));var o=void 0!==w.config.minTime||w.config.minDate&&w.minDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.minDate,!0),l=void 0!==w.config.maxTime||w.config.maxDate&&w.maxDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.maxDate,!0);if(void 0!==w.config.maxTime&&void 0!==w.config.minTime&&w.config.minTime>w.config.maxTime){var c=y(w.config.minTime.getHours(),w.config.minTime.getMinutes(),w.config.minTime.getSeconds()),s=y(w.config.maxTime.getHours(),w.config.maxTime.getMinutes(),w.config.maxTime.getSeconds()),d=y(t,a,i);if(d>s&&d=12)]),void 0!==w.secondElement&&(w.secondElement.value=o(t)))}function N(e){var n=g(e),t=parseInt(n.value)+(e.delta||0);(t/1e3>1||"Enter"===e.key&&!/[^\d]/.test(t.toString()))&&ee(t)}function P(e,n,t,a){return n instanceof Array?n.forEach((function(n){return P(e,n,t,a)})):e instanceof Array?e.forEach((function(e){return P(e,n,t,a)})):(e.addEventListener(n,t,a),void w._handlers.push({remove:function(){return e.removeEventListener(n,t,a)}}))}function Y(){De("onChange")}function j(e,n){var t=void 0!==e?w.parseDate(e):w.latestSelectedDateObj||(w.config.minDate&&w.config.minDate>w.now?w.config.minDate:w.config.maxDate&&w.config.maxDate=0&&M(e,w.selectedDates[1])<=0)}(n)&&!be(n)&&o.classList.add("inRange"),w.weekNumbers&&1===w.config.showMonths&&"prevMonthDay"!==e&&a%7==6&&w.weekNumbers.insertAdjacentHTML("beforeend",""+w.config.getWeek(n)+""),De("onDayCreate",o),o}function W(e){e.focus(),"range"===w.config.mode&&oe(e)}function B(e){for(var n=e>0?0:w.config.showMonths-1,t=e>0?w.config.showMonths:-1,a=n;a!=t;a+=e)for(var i=w.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf("hidden")&&ne(c.dateObj))return c}}function J(e,n){var t=k(),a=te(t||document.body),i=void 0!==e?e:a?t:void 0!==w.selectedDateElem&&te(w.selectedDateElem)?w.selectedDateElem:void 0!==w.todayDateElem&&te(w.todayDateElem)?w.todayDateElem:B(n>0?1:-1);void 0===i?w._input.focus():a?function(e,n){for(var t=-1===e.className.indexOf("Month")?e.dateObj.getMonth():w.currentMonth,a=n>0?w.config.showMonths:-1,i=n>0?1:-1,o=t-w.currentMonth;o!=a;o+=i)for(var r=w.daysContainer.children[o],l=t-w.currentMonth===o?e.$i+n:n<0?r.children.length-1:0,c=r.children.length,s=l;s>=0&&s0?c:-1);s+=i){var d=r.children[s];if(-1===d.className.indexOf("hidden")&&ne(d.dateObj)&&Math.abs(e.$i-s)>=Math.abs(n))return W(d)}w.changeMonth(i),J(B(i),0)}(i,n):W(i)}function K(e,n){for(var t=(new Date(e,n,1).getDay()-w.l10n.firstDayOfWeek+7)%7,a=w.utils.getDaysInMonth((n-1+12)%12,e),i=w.utils.getDaysInMonth(n,e),o=window.document.createDocumentFragment(),r=w.config.showMonths>1,l=r?"prevMonthDay hidden":"prevMonthDay",c=r?"nextMonthDay hidden":"nextMonthDay",s=a+1-t,u=0;s<=a;s++,u++)o.appendChild(R("flatpickr-day "+l,new Date(e,n-1,s),0,u));for(s=1;s<=i;s++,u++)o.appendChild(R("flatpickr-day",new Date(e,n,s),0,u));for(var f=i+1;f<=42-t&&(1===w.config.showMonths||u%7!=0);f++,u++)o.appendChild(R("flatpickr-day "+c,new Date(e,n+1,f%i),0,u));var m=d("div","dayContainer");return m.appendChild(o),m}function U(){if(void 0!==w.daysContainer){u(w.daysContainer),w.weekNumbers&&u(w.weekNumbers);for(var e=document.createDocumentFragment(),n=0;n1||"dropdown"!==w.config.monthSelectorType)){var e=function(e){return!(void 0!==w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&ew.config.maxDate.getMonth())};w.monthsDropdownContainer.tabIndex=-1,w.monthsDropdownContainer.innerHTML="";for(var n=0;n<12;n++)if(e(n)){var t=d("option","flatpickr-monthDropdown-month");t.value=new Date(w.currentYear,n).getMonth().toString(),t.textContent=h(n,w.config.shorthandCurrentMonth,w.l10n),t.tabIndex=-1,w.currentMonth===n&&(t.selected=!0),w.monthsDropdownContainer.appendChild(t)}}}function $(){var e,n=d("div","flatpickr-month"),t=window.document.createDocumentFragment();w.config.showMonths>1||"static"===w.config.monthSelectorType?e=d("span","cur-month"):(w.monthsDropdownContainer=d("select","flatpickr-monthDropdown-months"),w.monthsDropdownContainer.setAttribute("aria-label",w.l10n.monthAriaLabel),P(w.monthsDropdownContainer,"change",(function(e){var n=g(e),t=parseInt(n.value,10);w.changeMonth(t-w.currentMonth),De("onMonthChange")})),q(),e=w.monthsDropdownContainer);var a=m("cur-year",{tabindex:"-1"}),i=a.getElementsByTagName("input")[0];i.setAttribute("aria-label",w.l10n.yearAriaLabel),w.config.minDate&&i.setAttribute("min",w.config.minDate.getFullYear().toString()),w.config.maxDate&&(i.setAttribute("max",w.config.maxDate.getFullYear().toString()),i.disabled=!!w.config.minDate&&w.config.minDate.getFullYear()===w.config.maxDate.getFullYear());var o=d("div","flatpickr-current-month");return o.appendChild(e),o.appendChild(a),t.appendChild(o),n.appendChild(t),{container:n,yearElement:i,monthElement:e}}function V(){u(w.monthNav),w.monthNav.appendChild(w.prevMonthNav),w.config.showMonths&&(w.yearElements=[],w.monthElements=[]);for(var e=w.config.showMonths;e--;){var n=$();w.yearElements.push(n.yearElement),w.monthElements.push(n.monthElement),w.monthNav.appendChild(n.container)}w.monthNav.appendChild(w.nextMonthNav)}function z(){w.weekdayContainer?u(w.weekdayContainer):w.weekdayContainer=d("div","flatpickr-weekdays");for(var e=w.config.showMonths;e--;){var n=d("div","flatpickr-weekdaycontainer");w.weekdayContainer.appendChild(n)}return G(),w.weekdayContainer}function G(){if(w.weekdayContainer){var e=w.l10n.firstDayOfWeek,t=n(w.l10n.weekdays.shorthand);e>0&&e\n "+t.join("")+"\n \n "}}function Z(e,n){void 0===n&&(n=!0);var t=n?e:e-w.currentMonth;t<0&&!0===w._hidePrevMonthArrow||t>0&&!0===w._hideNextMonthArrow||(w.currentMonth+=t,(w.currentMonth<0||w.currentMonth>11)&&(w.currentYear+=w.currentMonth>11?1:-1,w.currentMonth=(w.currentMonth+12)%12,De("onYearChange"),q()),U(),De("onMonthChange"),Ce())}function Q(e){return w.calendarContainer.contains(e)}function X(e){if(w.isOpen&&!w.config.inline){var n=g(e),t=Q(n),a=!(n===w.input||n===w.altInput||w.element.contains(n)||e.path&&e.path.indexOf&&(~e.path.indexOf(w.input)||~e.path.indexOf(w.altInput)))&&!t&&!Q(e.relatedTarget),i=!w.config.ignoredFocusElements.some((function(e){return e.contains(n)}));a&&i&&(w.config.allowInput&&w.setDate(w._input.value,!1,w.config.altInput?w.config.altFormat:w.config.dateFormat),void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&""!==w.input.value&&void 0!==w.input.value&&_(),w.close(),w.config&&"range"===w.config.mode&&1===w.selectedDates.length&&w.clear(!1))}}function ee(e){if(!(!e||w.config.minDate&&ew.config.maxDate.getFullYear())){var n=e,t=w.currentYear!==n;w.currentYear=n||w.currentYear,w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth=Math.min(w.config.maxDate.getMonth(),w.currentMonth):w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&(w.currentMonth=Math.max(w.config.minDate.getMonth(),w.currentMonth)),t&&(w.redraw(),De("onYearChange"),q())}}function ne(e,n){var t;void 0===n&&(n=!0);var a=w.parseDate(e,void 0,n);if(w.config.minDate&&a&&M(a,w.config.minDate,void 0!==n?n:!w.minDateHasTime)<0||w.config.maxDate&&a&&M(a,w.config.maxDate,void 0!==n?n:!w.maxDateHasTime)>0)return!1;if(!w.config.enable&&0===w.config.disable.length)return!0;if(void 0===a)return!1;for(var i=!!w.config.enable,o=null!==(t=w.config.enable)&&void 0!==t?t:w.config.disable,r=0,l=void 0;r=l.from.getTime()&&a.getTime()<=l.to.getTime())return i}return!i}function te(e){return void 0!==w.daysContainer&&(-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&w.daysContainer.contains(e))}function ae(e){var n=e.target===w._input,t=w._input.value.trimEnd()!==Me();!n||!t||e.relatedTarget&&Q(e.relatedTarget)||w.setDate(w._input.value,!0,e.target===w.altInput?w.config.altFormat:w.config.dateFormat)}function ie(e){var n=g(e),t=w.config.wrap?p.contains(n):n===w._input,a=w.config.allowInput,i=w.isOpen&&(!a||!t),o=w.config.inline&&t&&!a;if(13===e.keyCode&&t){if(a)return w.setDate(w._input.value,!0,n===w.altInput?w.config.altFormat:w.config.dateFormat),w.close(),n.blur();w.open()}else if(Q(n)||i||o){var r=!!w.timeContainer&&w.timeContainer.contains(n);switch(e.keyCode){case 13:r?(e.preventDefault(),_(),fe()):me(e);break;case 27:e.preventDefault(),fe();break;case 8:case 46:t&&!w.config.allowInput&&(e.preventDefault(),w.clear());break;case 37:case 39:if(r||t)w.hourElement&&w.hourElement.focus();else{e.preventDefault();var l=k();if(void 0!==w.daysContainer&&(!1===a||l&&te(l))){var c=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),Z(c),J(B(1),0)):J(void 0,c)}}break;case 38:case 40:e.preventDefault();var s=40===e.keyCode?1:-1;w.daysContainer&&void 0!==n.$i||n===w.input||n===w.altInput?e.ctrlKey?(e.stopPropagation(),ee(w.currentYear-s),J(B(1),0)):r||J(void 0,7*s):n===w.currentYearElement?ee(w.currentYear-s):w.config.enableTime&&(!r&&w.hourElement&&w.hourElement.focus(),_(e),w._debouncedChange());break;case 9:if(r){var d=[w.hourElement,w.minuteElement,w.secondElement,w.amPM].concat(w.pluginElements).filter((function(e){return e})),u=d.indexOf(n);if(-1!==u){var f=d[u+(e.shiftKey?-1:1)];e.preventDefault(),(f||w._input).focus()}}else!w.config.noCalendar&&w.daysContainer&&w.daysContainer.contains(n)&&e.shiftKey&&(e.preventDefault(),w._input.focus())}}if(void 0!==w.amPM&&n===w.amPM)switch(e.key){case w.l10n.amPM[0].charAt(0):case w.l10n.amPM[0].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[0],O(),ye();break;case w.l10n.amPM[1].charAt(0):case w.l10n.amPM[1].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[1],O(),ye()}(t||Q(n))&&De("onKeyDown",e)}function oe(e,n){if(void 0===n&&(n="flatpickr-day"),1===w.selectedDates.length&&(!e||e.classList.contains(n)&&!e.classList.contains("flatpickr-disabled"))){for(var t=e?e.dateObj.getTime():w.days.firstElementChild.dateObj.getTime(),a=w.parseDate(w.selectedDates[0],void 0,!0).getTime(),i=Math.min(t,w.selectedDates[0].getTime()),o=Math.max(t,w.selectedDates[0].getTime()),r=!1,l=0,c=0,s=i;si&&sl)?l=s:s>a&&(!c||s ."+n)).forEach((function(n){var i,o,s,d=n.dateObj.getTime(),u=l>0&&d0&&d>c;if(u)return n.classList.add("notAllowed"),void["inRange","startRange","endRange"].forEach((function(e){n.classList.remove(e)}));r&&!u||(["startRange","inRange","endRange","notAllowed"].forEach((function(e){n.classList.remove(e)})),void 0!==e&&(e.classList.add(t<=w.selectedDates[0].getTime()?"startRange":"endRange"),at&&d===a&&n.classList.add("endRange"),d>=l&&(0===c||d<=c)&&(o=a,s=t,(i=d)>Math.min(o,s)&&i0||t.getMinutes()>0||t.getSeconds()>0),w.selectedDates&&(w.selectedDates=w.selectedDates.filter((function(e){return ne(e)})),w.selectedDates.length||"min"!==e||F(t),ye()),w.daysContainer&&(ue(),void 0!==t?w.currentYearElement[e]=t.getFullYear().toString():w.currentYearElement.removeAttribute(e),w.currentYearElement.disabled=!!a&&void 0!==t&&a.getFullYear()===t.getFullYear())}}function ce(){return w.config.wrap?p.querySelector("[data-input]"):p}function se(){"object"!=typeof w.config.locale&&void 0===I.l10ns[w.config.locale]&&w.config.errorHandler(new Error("flatpickr: invalid locale "+w.config.locale)),w.l10n=e(e({},I.l10ns.default),"object"==typeof w.config.locale?w.config.locale:"default"!==w.config.locale?I.l10ns[w.config.locale]:void 0),D.D="("+w.l10n.weekdays.shorthand.join("|")+")",D.l="("+w.l10n.weekdays.longhand.join("|")+")",D.M="("+w.l10n.months.shorthand.join("|")+")",D.F="("+w.l10n.months.longhand.join("|")+")",D.K="("+w.l10n.amPM[0]+"|"+w.l10n.amPM[1]+"|"+w.l10n.amPM[0].toLowerCase()+"|"+w.l10n.amPM[1].toLowerCase()+")",void 0===e(e({},v),JSON.parse(JSON.stringify(p.dataset||{}))).time_24hr&&void 0===I.defaultConfig.time_24hr&&(w.config.time_24hr=w.l10n.time_24hr),w.formatDate=b(w),w.parseDate=C({config:w.config,l10n:w.l10n})}function de(e){if("function"!=typeof w.config.position){if(void 0!==w.calendarContainer){De("onPreCalendarPosition");var n=e||w._positionElement,t=Array.prototype.reduce.call(w.calendarContainer.children,(function(e,n){return e+n.offsetHeight}),0),a=w.calendarContainer.offsetWidth,i=w.config.position.split(" "),o=i[0],r=i.length>1?i[1]:null,l=n.getBoundingClientRect(),c=window.innerHeight-l.bottom,d="above"===o||"below"!==o&&ct,u=window.pageYOffset+l.top+(d?-t-2:n.offsetHeight+2);if(s(w.calendarContainer,"arrowTop",!d),s(w.calendarContainer,"arrowBottom",d),!w.config.inline){var f=window.pageXOffset+l.left,m=!1,g=!1;"center"===r?(f-=(a-l.width)/2,m=!0):"right"===r&&(f-=a-l.width,g=!0),s(w.calendarContainer,"arrowLeft",!m&&!g),s(w.calendarContainer,"arrowCenter",m),s(w.calendarContainer,"arrowRight",g);var p=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=f+a>window.document.body.offsetWidth,v=p+a>window.document.body.offsetWidth;if(s(w.calendarContainer,"rightMost",h),!w.config.static)if(w.calendarContainer.style.top=u+"px",h)if(v){var D=function(){for(var e=null,n=0;nw.currentMonth+w.config.showMonths-1)&&"range"!==w.config.mode;if(w.selectedDateElem=t,"single"===w.config.mode)w.selectedDates=[a];else if("multiple"===w.config.mode){var o=be(a);o?w.selectedDates.splice(parseInt(o),1):w.selectedDates.push(a)}else"range"===w.config.mode&&(2===w.selectedDates.length&&w.clear(!1,!1),w.latestSelectedDateObj=a,w.selectedDates.push(a),0!==M(a,w.selectedDates[0],!0)&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()})));if(O(),i){var r=w.currentYear!==a.getFullYear();w.currentYear=a.getFullYear(),w.currentMonth=a.getMonth(),r&&(De("onYearChange"),q()),De("onMonthChange")}if(Ce(),U(),ye(),i||"range"===w.config.mode||1!==w.config.showMonths?void 0!==w.selectedDateElem&&void 0===w.hourElement&&w.selectedDateElem&&w.selectedDateElem.focus():W(t),void 0!==w.hourElement&&void 0!==w.hourElement&&w.hourElement.focus(),w.config.closeOnSelect){var l="single"===w.config.mode&&!w.config.enableTime,c="range"===w.config.mode&&2===w.selectedDates.length&&!w.config.enableTime;(l||c)&&fe()}Y()}}w.parseDate=C({config:w.config,l10n:w.l10n}),w._handlers=[],w.pluginElements=[],w.loadedPlugins=[],w._bind=P,w._setHoursFromDate=F,w._positionCalendar=de,w.changeMonth=Z,w.changeYear=ee,w.clear=function(e,n){void 0===e&&(e=!0);void 0===n&&(n=!0);w.input.value="",void 0!==w.altInput&&(w.altInput.value="");void 0!==w.mobileInput&&(w.mobileInput.value="");w.selectedDates=[],w.latestSelectedDateObj=void 0,!0===n&&(w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth());if(!0===w.config.enableTime){var t=E(w.config),a=t.hours,i=t.minutes,o=t.seconds;A(a,i,o)}w.redraw(),e&&De("onChange")},w.close=function(){w.isOpen=!1,w.isMobile||(void 0!==w.calendarContainer&&w.calendarContainer.classList.remove("open"),void 0!==w._input&&w._input.classList.remove("active"));De("onClose")},w.onMouseOver=oe,w._createElement=d,w.createDay=R,w.destroy=function(){void 0!==w.config&&De("onDestroy");for(var e=w._handlers.length;e--;)w._handlers[e].remove();if(w._handlers=[],w.mobileInput)w.mobileInput.parentNode&&w.mobileInput.parentNode.removeChild(w.mobileInput),w.mobileInput=void 0;else if(w.calendarContainer&&w.calendarContainer.parentNode)if(w.config.static&&w.calendarContainer.parentNode){var n=w.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else w.calendarContainer.parentNode.removeChild(w.calendarContainer);w.altInput&&(w.input.type="text",w.altInput.parentNode&&w.altInput.parentNode.removeChild(w.altInput),delete w.altInput);w.input&&(w.input.type=w.input._type,w.input.classList.remove("flatpickr-input"),w.input.removeAttribute("readonly"));["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach((function(e){try{delete w[e]}catch(e){}}))},w.isEnabled=ne,w.jumpToDate=j,w.updateValue=ye,w.open=function(e,n){void 0===n&&(n=w._positionElement);if(!0===w.isMobile){if(e){e.preventDefault();var t=g(e);t&&t.blur()}return void 0!==w.mobileInput&&(w.mobileInput.focus(),w.mobileInput.click()),void De("onOpen")}if(w._input.disabled||w.config.inline)return;var a=w.isOpen;w.isOpen=!0,a||(w.calendarContainer.classList.add("open"),w._input.classList.add("active"),De("onOpen"),de(n));!0===w.config.enableTime&&!0===w.config.noCalendar&&(!1!==w.config.allowInput||void 0!==e&&w.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return w.hourElement.select()}),50))},w.redraw=ue,w.set=function(e,n){if(null!==e&&"object"==typeof e)for(var a in Object.assign(w.config,e),e)void 0!==ge[a]&&ge[a].forEach((function(e){return e()}));else w.config[e]=n,void 0!==ge[e]?ge[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(w.config[e]=c(n));w.redraw(),ye(!0)},w.setDate=function(e,n,t){void 0===n&&(n=!1);void 0===t&&(t=w.config.dateFormat);if(0!==e&&!e||e instanceof Array&&0===e.length)return w.clear(n);pe(e,t),w.latestSelectedDateObj=w.selectedDates[w.selectedDates.length-1],w.redraw(),j(void 0,n),F(),0===w.selectedDates.length&&w.clear(!1);ye(n),n&&De("onChange")},w.toggle=function(e){if(!0===w.isOpen)return w.close();w.open(e)};var ge={locale:[se,G],showMonths:[V,S,z],minDate:[j],maxDate:[j],positionElement:[ve],clickOpens:[function(){!0===w.config.clickOpens?(P(w._input,"focus",w.open),P(w._input,"click",w.open)):(w._input.removeEventListener("focus",w.open),w._input.removeEventListener("click",w.open))}]};function pe(e,n){var t=[];if(e instanceof Array)t=e.map((function(e){return w.parseDate(e,n)}));else if(e instanceof Date||"number"==typeof e)t=[w.parseDate(e,n)];else if("string"==typeof e)switch(w.config.mode){case"single":case"time":t=[w.parseDate(e,n)];break;case"multiple":t=e.split(w.config.conjunction).map((function(e){return w.parseDate(e,n)}));break;case"range":t=e.split(w.l10n.rangeSeparator).map((function(e){return w.parseDate(e,n)}))}else w.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));w.selectedDates=w.config.allowInvalidPreload?t:t.filter((function(e){return e instanceof Date&&ne(e,!1)})),"range"===w.config.mode&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()}))}function he(e){return e.slice().map((function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?w.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:w.parseDate(e.from,void 0),to:w.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function ve(){w._positionElement=w.config.positionElement||w._input}function De(e,n){if(void 0!==w.config){var t=w.config[e];if(void 0!==t&&t.length>0)for(var a=0;t[a]&&a1||"static"===w.config.monthSelectorType?w.monthElements[n].textContent=h(t.getMonth(),w.config.shorthandCurrentMonth,w.l10n)+" ":w.monthsDropdownContainer.value=t.getMonth().toString(),e.value=t.getFullYear().toString()})),w._hidePrevMonthArrow=void 0!==w.config.minDate&&(w.currentYear===w.config.minDate.getFullYear()?w.currentMonth<=w.config.minDate.getMonth():w.currentYearw.config.maxDate.getMonth():w.currentYear>w.config.maxDate.getFullYear()))}function Me(e){var n=e||(w.config.altInput?w.config.altFormat:w.config.dateFormat);return w.selectedDates.map((function(e){return w.formatDate(e,n)})).filter((function(e,n,t){return"range"!==w.config.mode||w.config.enableTime||t.indexOf(e)===n})).join("range"!==w.config.mode?w.config.conjunction:w.l10n.rangeSeparator)}function ye(e){void 0===e&&(e=!0),void 0!==w.mobileInput&&w.mobileFormatStr&&(w.mobileInput.value=void 0!==w.latestSelectedDateObj?w.formatDate(w.latestSelectedDateObj,w.mobileFormatStr):""),w.input.value=Me(w.config.dateFormat),void 0!==w.altInput&&(w.altInput.value=Me(w.config.altFormat)),!1!==e&&De("onValueUpdate")}function xe(e){var n=g(e),t=w.prevMonthNav.contains(n),a=w.nextMonthNav.contains(n);t||a?Z(t?-1:1):w.yearElements.indexOf(n)>=0?n.select():n.classList.contains("arrowUp")?w.changeYear(w.currentYear+1):n.classList.contains("arrowDown")&&w.changeYear(w.currentYear-1)}return function(){w.element=w.input=p,w.isOpen=!1,function(){var n=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],i=e(e({},JSON.parse(JSON.stringify(p.dataset||{}))),v),o={};w.config.parseDate=i.parseDate,w.config.formatDate=i.formatDate,Object.defineProperty(w.config,"enable",{get:function(){return w.config._enable},set:function(e){w.config._enable=he(e)}}),Object.defineProperty(w.config,"disable",{get:function(){return w.config._disable},set:function(e){w.config._disable=he(e)}});var r="time"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var l=I.defaultConfig.dateFormat||a.dateFormat;o.dateFormat=i.noCalendar||r?"H:i"+(i.enableSeconds?":S":""):l+" H:i"+(i.enableSeconds?":S":"")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var s=I.defaultConfig.altFormat||a.altFormat;o.altFormat=i.noCalendar||r?"h:i"+(i.enableSeconds?":S K":" K"):s+" h:i"+(i.enableSeconds?":S":"")+" K"}Object.defineProperty(w.config,"minDate",{get:function(){return w.config._minDate},set:le("min")}),Object.defineProperty(w.config,"maxDate",{get:function(){return w.config._maxDate},set:le("max")});var d=function(e){return function(n){w.config["min"===e?"_minTime":"_maxTime"]=w.parseDate(n,"H:i:S")}};Object.defineProperty(w.config,"minTime",{get:function(){return w.config._minTime},set:d("min")}),Object.defineProperty(w.config,"maxTime",{get:function(){return w.config._maxTime},set:d("max")}),"time"===i.mode&&(w.config.noCalendar=!0,w.config.enableTime=!0);Object.assign(w.config,o,i);for(var u=0;u-1?w.config[m]=c(f[m]).map(T).concat(w.config[m]):void 0===i[m]&&(w.config[m]=f[m])}i.altInputClass||(w.config.altInputClass=ce().className+" "+w.config.altInputClass);De("onParseConfig")}(),se(),function(){if(w.input=ce(),!w.input)return void w.config.errorHandler(new Error("Invalid input element specified"));w.input._type=w.input.type,w.input.type="text",w.input.classList.add("flatpickr-input"),w._input=w.input,w.config.altInput&&(w.altInput=d(w.input.nodeName,w.config.altInputClass),w._input=w.altInput,w.altInput.placeholder=w.input.placeholder,w.altInput.disabled=w.input.disabled,w.altInput.required=w.input.required,w.altInput.tabIndex=w.input.tabIndex,w.altInput.type="text",w.input.setAttribute("type","hidden"),!w.config.static&&w.input.parentNode&&w.input.parentNode.insertBefore(w.altInput,w.input.nextSibling));w.config.allowInput||w._input.setAttribute("readonly","readonly");ve()}(),function(){w.selectedDates=[],w.now=w.parseDate(w.config.now)||new Date;var e=w.config.defaultDate||("INPUT"!==w.input.nodeName&&"TEXTAREA"!==w.input.nodeName||!w.input.placeholder||w.input.value!==w.input.placeholder?w.input.value:null);e&&pe(e,w.config.dateFormat);w._initialDate=w.selectedDates.length>0?w.selectedDates[0]:w.config.minDate&&w.config.minDate.getTime()>w.now.getTime()?w.config.minDate:w.config.maxDate&&w.config.maxDate.getTime()0&&(w.latestSelectedDateObj=w.selectedDates[0]);void 0!==w.config.minTime&&(w.config.minTime=w.parseDate(w.config.minTime,"H:i"));void 0!==w.config.maxTime&&(w.config.maxTime=w.parseDate(w.config.maxTime,"H:i"));w.minDateHasTime=!!w.config.minDate&&(w.config.minDate.getHours()>0||w.config.minDate.getMinutes()>0||w.config.minDate.getSeconds()>0),w.maxDateHasTime=!!w.config.maxDate&&(w.config.maxDate.getHours()>0||w.config.maxDate.getMinutes()>0||w.config.maxDate.getSeconds()>0)}(),w.utils={getDaysInMonth:function(e,n){return void 0===e&&(e=w.currentMonth),void 0===n&&(n=w.currentYear),1===e&&(n%4==0&&n%100!=0||n%400==0)?29:w.l10n.daysInMonth[e]}},w.isMobile||function(){var e=window.document.createDocumentFragment();if(w.calendarContainer=d("div","flatpickr-calendar"),w.calendarContainer.tabIndex=-1,!w.config.noCalendar){if(e.appendChild((w.monthNav=d("div","flatpickr-months"),w.yearElements=[],w.monthElements=[],w.prevMonthNav=d("span","flatpickr-prev-month"),w.prevMonthNav.innerHTML=w.config.prevArrow,w.nextMonthNav=d("span","flatpickr-next-month"),w.nextMonthNav.innerHTML=w.config.nextArrow,V(),Object.defineProperty(w,"_hidePrevMonthArrow",{get:function(){return w.__hidePrevMonthArrow},set:function(e){w.__hidePrevMonthArrow!==e&&(s(w.prevMonthNav,"flatpickr-disabled",e),w.__hidePrevMonthArrow=e)}}),Object.defineProperty(w,"_hideNextMonthArrow",{get:function(){return w.__hideNextMonthArrow},set:function(e){w.__hideNextMonthArrow!==e&&(s(w.nextMonthNav,"flatpickr-disabled",e),w.__hideNextMonthArrow=e)}}),w.currentYearElement=w.yearElements[0],Ce(),w.monthNav)),w.innerContainer=d("div","flatpickr-innerContainer"),w.config.weekNumbers){var n=function(){w.calendarContainer.classList.add("hasWeeks");var e=d("div","flatpickr-weekwrapper");e.appendChild(d("span","flatpickr-weekday",w.l10n.weekAbbreviation));var n=d("div","flatpickr-weeks");return e.appendChild(n),{weekWrapper:e,weekNumbers:n}}(),t=n.weekWrapper,a=n.weekNumbers;w.innerContainer.appendChild(t),w.weekNumbers=a,w.weekWrapper=t}w.rContainer=d("div","flatpickr-rContainer"),w.rContainer.appendChild(z()),w.daysContainer||(w.daysContainer=d("div","flatpickr-days"),w.daysContainer.tabIndex=-1),U(),w.rContainer.appendChild(w.daysContainer),w.innerContainer.appendChild(w.rContainer),e.appendChild(w.innerContainer)}w.config.enableTime&&e.appendChild(function(){w.calendarContainer.classList.add("hasTime"),w.config.noCalendar&&w.calendarContainer.classList.add("noCalendar");var e=E(w.config);w.timeContainer=d("div","flatpickr-time"),w.timeContainer.tabIndex=-1;var n=d("span","flatpickr-time-separator",":"),t=m("flatpickr-hour",{"aria-label":w.l10n.hourAriaLabel});w.hourElement=t.getElementsByTagName("input")[0];var a=m("flatpickr-minute",{"aria-label":w.l10n.minuteAriaLabel});w.minuteElement=a.getElementsByTagName("input")[0],w.hourElement.tabIndex=w.minuteElement.tabIndex=-1,w.hourElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getHours():w.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),w.minuteElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getMinutes():e.minutes),w.hourElement.setAttribute("step",w.config.hourIncrement.toString()),w.minuteElement.setAttribute("step",w.config.minuteIncrement.toString()),w.hourElement.setAttribute("min",w.config.time_24hr?"0":"1"),w.hourElement.setAttribute("max",w.config.time_24hr?"23":"12"),w.hourElement.setAttribute("maxlength","2"),w.minuteElement.setAttribute("min","0"),w.minuteElement.setAttribute("max","59"),w.minuteElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(t),w.timeContainer.appendChild(n),w.timeContainer.appendChild(a),w.config.time_24hr&&w.timeContainer.classList.add("time24hr");if(w.config.enableSeconds){w.timeContainer.classList.add("hasSeconds");var i=m("flatpickr-second");w.secondElement=i.getElementsByTagName("input")[0],w.secondElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getSeconds():e.seconds),w.secondElement.setAttribute("step",w.minuteElement.getAttribute("step")),w.secondElement.setAttribute("min","0"),w.secondElement.setAttribute("max","59"),w.secondElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(d("span","flatpickr-time-separator",":")),w.timeContainer.appendChild(i)}w.config.time_24hr||(w.amPM=d("span","flatpickr-am-pm",w.l10n.amPM[r((w.latestSelectedDateObj?w.hourElement.value:w.config.defaultHour)>11)]),w.amPM.title=w.l10n.toggleTitle,w.amPM.tabIndex=-1,w.timeContainer.appendChild(w.amPM));return w.timeContainer}());s(w.calendarContainer,"rangeMode","range"===w.config.mode),s(w.calendarContainer,"animate",!0===w.config.animate),s(w.calendarContainer,"multiMonth",w.config.showMonths>1),w.calendarContainer.appendChild(e);var i=void 0!==w.config.appendTo&&void 0!==w.config.appendTo.nodeType;if((w.config.inline||w.config.static)&&(w.calendarContainer.classList.add(w.config.inline?"inline":"static"),w.config.inline&&(!i&&w.element.parentNode?w.element.parentNode.insertBefore(w.calendarContainer,w._input.nextSibling):void 0!==w.config.appendTo&&w.config.appendTo.appendChild(w.calendarContainer)),w.config.static)){var l=d("div","flatpickr-wrapper");w.element.parentNode&&w.element.parentNode.insertBefore(l,w.element),l.appendChild(w.element),w.altInput&&l.appendChild(w.altInput),l.appendChild(w.calendarContainer)}w.config.static||w.config.inline||(void 0!==w.config.appendTo?w.config.appendTo:window.document.body).appendChild(w.calendarContainer)}(),function(){w.config.wrap&&["open","close","toggle","clear"].forEach((function(e){Array.prototype.forEach.call(w.element.querySelectorAll("[data-"+e+"]"),(function(n){return P(n,"click",w[e])}))}));if(w.isMobile)return void function(){var e=w.config.enableTime?w.config.noCalendar?"time":"datetime-local":"date";w.mobileInput=d("input",w.input.className+" flatpickr-mobile"),w.mobileInput.tabIndex=1,w.mobileInput.type=e,w.mobileInput.disabled=w.input.disabled,w.mobileInput.required=w.input.required,w.mobileInput.placeholder=w.input.placeholder,w.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",w.selectedDates.length>0&&(w.mobileInput.defaultValue=w.mobileInput.value=w.formatDate(w.selectedDates[0],w.mobileFormatStr));w.config.minDate&&(w.mobileInput.min=w.formatDate(w.config.minDate,"Y-m-d"));w.config.maxDate&&(w.mobileInput.max=w.formatDate(w.config.maxDate,"Y-m-d"));w.input.getAttribute("step")&&(w.mobileInput.step=String(w.input.getAttribute("step")));w.input.type="hidden",void 0!==w.altInput&&(w.altInput.type="hidden");try{w.input.parentNode&&w.input.parentNode.insertBefore(w.mobileInput,w.input.nextSibling)}catch(e){}P(w.mobileInput,"change",(function(e){w.setDate(g(e).value,!1,w.mobileFormatStr),De("onChange"),De("onClose")}))}();var e=l(re,50);w._debouncedChange=l(Y,300),w.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&P(w.daysContainer,"mouseover",(function(e){"range"===w.config.mode&&oe(g(e))}));P(w._input,"keydown",ie),void 0!==w.calendarContainer&&P(w.calendarContainer,"keydown",ie);w.config.inline||w.config.static||P(window,"resize",e);void 0!==window.ontouchstart?P(window.document,"touchstart",X):P(window.document,"mousedown",X);P(window.document,"focus",X,{capture:!0}),!0===w.config.clickOpens&&(P(w._input,"focus",w.open),P(w._input,"click",w.open));void 0!==w.daysContainer&&(P(w.monthNav,"click",xe),P(w.monthNav,["keyup","increment"],N),P(w.daysContainer,"click",me));if(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement){var n=function(e){return g(e).select()};P(w.timeContainer,["increment"],_),P(w.timeContainer,"blur",_,{capture:!0}),P(w.timeContainer,"click",H),P([w.hourElement,w.minuteElement],["focus","click"],n),void 0!==w.secondElement&&P(w.secondElement,"focus",(function(){return w.secondElement&&w.secondElement.select()})),void 0!==w.amPM&&P(w.amPM,"click",(function(e){_(e)}))}w.config.allowInput&&P(w._input,"blur",ae)}(),(w.selectedDates.length||w.config.noCalendar)&&(w.config.enableTime&&F(w.config.noCalendar?w.latestSelectedDateObj:void 0),ye(!1)),S();var n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!w.isMobile&&n&&de(),De("onReady")}(),w}function T(e,n){for(var t=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;i { + // swal.resetDefaults(); + // console.log("result: " + result); + // if (result) { + // calendar.fullCalendar( + // "renderEvent", + // { + // title: result, + // start: startDate, + // end: endDate, + // allDay: allDay, + // }, + // true // make the event "stick" + // ); + // swal({ + // type: "success", + // title: "Agended!", + // html: "Event title: " + result, + // }); + // } else { + // swal({ + // type: "warning", + // title: "Not Agended!", + // html: "Title is empty! ", + // }); + // } + // calendar.fullCalendar("unselect"); + // }); + // } + // }, + // droppable: true, // this allows things to be dropped onto the calendar !!! + // drop: function (date, allDay) { + // // this function is called when something is dropped + + // // retrieve the dropped element's stored Event Object + // var originalEventObject = $(this).data("eventObject"); + + // // we need to copy it, so that multiple events don't have a reference to the same object + // var copiedEventObject = $.extend({}, originalEventObject); + + // // assign it the date that was reported + // copiedEventObject.start = date; + // copiedEventObject.allDay = allDay; + + // // render the event on the calendar + // // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) + // $("#calendar").fullCalendar("renderEvent", copiedEventObject, true); + + // // is the "remove after drop" checkbox checked? + // if ($("#drop-remove").is(":checked")) { + // // if so, remove the element from the "Draggable Events" list + // $(this).remove(); + // } + // }, + + // events: [ + // // { + // // title: "All Day Event", + // // start: new Date(y, m, 1), + // // }, + // // { + // // id: 999, + // // title: "Repeating Event", + // // start: new Date(y, m, d - 3, 16, 0), + // // allDay: false, + // // className: "info", + // // }, + // // { + // // id: 999, + // // title: "Repeating Event", + // // start: new Date(y, m, d + 4, 16, 0), + // // allDay: false, + // // className: "info", + // // }, + // { + // title: "PT Mitra Usaha Sejahtera", + // start: new Date(y, m, d, 10, 30), + // allDay: false, + // className: "info", + // }, + // // { + // // title: "Lunch", + // // start: new Date(y, m, d, 12, 0), + // // end: new Date(y, m, d, 14, 0), + // // allDay: false, + // // className: "important", + // // }, + // { + // title: "Cuti Bersama Idulfitri", + // start: new Date(2025, 3, 7, 12, 0), + // end: new Date(2025, 3, 7, 14, 0), + // allDay: true, + // className: "important", + // }, + // { + // title: "Jumat Agung", + // start: new Date(2025, 3, 18, 12, 0), + // end: new Date(2025, 3, 18, 14, 0), + // allDay: true, + // className: "important", + // }, + // // { + // // title: "Birthday Party", + // // start: new Date(y, m, d + 1, 19, 0), + // // end: new Date(y, m, d + 1, 22, 30), + // // allDay: false, + // // }, + // // { + // // title: "Click for Google", + // // start: new Date(y, m, 28), + // // end: new Date(y, m, 29), + // // url: "http://google.com/", + // // className: "success", + // // }, + // ], + // }); +}); +/*! + * FullCalendar v1.6.4 + * Docs & License: http://arshaw.com/fullcalendar/ + * (c) 2013 Adam Shaw + */ + +/* + * Use fullcalendar.css for basic styling. + * For event drag & drop, requires jQuery UI draggable. + * For event resizing, requires jQuery UI resizable. + */ + +(function ($, undefined) { + var defaults = { + // display + defaultView: "month", + aspectRatio: 1.35, + header: { + left: "title", + center: "", + right: "today prev,next", + }, + weekends: true, + weekNumbers: false, + weekNumberCalculation: "iso", + weekNumberTitle: "W", + + // editing + //editable: false, + //disableDragging: false, + //disableResizing: false, + + allDayDefault: true, + ignoreTimezone: true, + + // event ajax + lazyFetching: true, + startParam: "start", + endParam: "end", + + // time formats + titleFormat: { + month: "MMMM yyyy", + week: "MMM d[ yyyy]{ '—'[ MMM] d yyyy}", + day: "dddd, MMM d, yyyy", + }, + columnFormat: { + month: "ddd", + week: "ddd M/d", + day: "dddd M/d", + }, + timeFormat: { + // for event elements + "": "h(:mm)t", // default + }, + + // locale + isRTL: false, + firstDay: 0, + monthNames: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December", + ], + monthNamesShort: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + dayNames: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + ], + dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + buttonText: { + prev: "", + next: "", + prevYear: "«", + nextYear: "»", + today: "today", + month: "month", + week: "week", + day: "day", + }, + + // jquery-ui theming + theme: false, + buttonIcons: { + prev: "circle-triangle-w", + next: "circle-triangle-e", + }, + + //selectable: false, + unselectAuto: true, + + dropAccept: "*", + + handleWindowResize: true, + }; + + // right-to-left defaults + var rtlDefaults = { + header: { + left: "next,prev today", + center: "", + right: "title", + }, + buttonText: { + prev: "", + next: "", + prevYear: "»", + nextYear: "«", + }, + buttonIcons: { + prev: "circle-triangle-e", + next: "circle-triangle-w", + }, + }; + + var fc = ($.fullCalendar = { version: "1.6.4" }); + var fcViews = (fc.views = {}); + + $.fn.fullCalendar = function (options) { + // method calling + if (typeof options == "string") { + var args = Array.prototype.slice.call(arguments, 1); + var res; + this.each(function () { + var calendar = $.data(this, "fullCalendar"); + if (calendar && $.isFunction(calendar[options])) { + var r = calendar[options].apply(calendar, args); + if (res === undefined) { + res = r; + } + if (options == "destroy") { + $.removeData(this, "fullCalendar"); + } + } + }); + if (res !== undefined) { + return res; + } + return this; + } + + options = options || {}; + + // would like to have this logic in EventManager, but needs to happen before options are recursively extended + var eventSources = options.eventSources || []; + delete options.eventSources; + if (options.events) { + eventSources.push(options.events); + delete options.events; + } + + options = $.extend( + true, + {}, + defaults, + options.isRTL || (options.isRTL === undefined && defaults.isRTL) + ? rtlDefaults + : {}, + options + ); + + this.each(function (i, _element) { + var element = $(_element); + var calendar = new Calendar(element, options, eventSources); + element.data("fullCalendar", calendar); // TODO: look into memory leak implications + calendar.render(); + }); + + return this; + }; + + // function for adding/overriding defaults + function setDefaults(d) { + $.extend(true, defaults, d); + } + + function Calendar(element, options, eventSources) { + var t = this; + + // exports + t.options = options; + t.render = render; + t.destroy = destroy; + t.refetchEvents = refetchEvents; + t.reportEvents = reportEvents; + t.reportEventChange = reportEventChange; + t.rerenderEvents = rerenderEvents; + t.changeView = changeView; + t.select = select; + t.unselect = unselect; + t.prev = prev; + t.next = next; + t.prevYear = prevYear; + t.nextYear = nextYear; + t.today = today; + t.gotoDate = gotoDate; + t.incrementDate = incrementDate; + t.formatDate = function (format, date) { + return formatDate(format, date, options); + }; + t.formatDates = function (format, date1, date2) { + return formatDates(format, date1, date2, options); + }; + t.getDate = getDate; + t.getView = getView; + t.option = option; + t.trigger = trigger; + + // imports + EventManager.call(t, options, eventSources); + var isFetchNeeded = t.isFetchNeeded; + var fetchEvents = t.fetchEvents; + + // locals + var _element = element[0]; + var header; + var headerElement; + var content; + var tm; // for making theme classes + var currentView; + var elementOuterWidth; + var suggestedViewHeight; + var resizeUID = 0; + var ignoreWindowResize = 0; + var date = new Date(); + var events = []; + var _dragElement; + + /* Main Rendering + -----------------------------------------------------------------------------*/ + + setYMD(date, options.year, options.month, options.date); + + function render(inc) { + if (!content) { + initialRender(); + } else if (elementVisible()) { + // mainly for the public API + calcSize(); + _renderView(inc); + } + } + + function initialRender() { + tm = options.theme ? "ui" : "fc"; + element.addClass("fc"); + if (options.isRTL) { + element.addClass("fc-rtl"); + } else { + element.addClass("fc-ltr"); + } + if (options.theme) { + element.addClass("ui-widget"); + } + + content = $( + "

" + ).prependTo(element); + + header = new Header(t, options); + headerElement = header.render(); + if (headerElement) { + element.prepend(headerElement); + } + + changeView(options.defaultView); + + if (options.handleWindowResize) { + $(window).resize(windowResize); + } + + // needed for IE in a 0x0 iframe, b/c when it is resized, never triggers a windowResize + if (!bodyVisible()) { + lateRender(); + } + } + + // called when we know the calendar couldn't be rendered when it was initialized, + // but we think it's ready now + function lateRender() { + setTimeout(function () { + // IE7 needs this so dimensions are calculated correctly + if (!currentView.start && bodyVisible()) { + // !currentView.start makes sure this never happens more than once + renderView(); + } + }, 0); + } + + function destroy() { + if (currentView) { + trigger( + "viewDestroy", + currentView, + currentView, + currentView.element + ); + currentView.triggerEventDestroy(); + } + + $(window).unbind("resize", windowResize); + + header.destroy(); + content.remove(); + element.removeClass("fc fc-rtl ui-widget"); + } + + function elementVisible() { + return element.is(":visible"); + } + + function bodyVisible() { + return $("body").is(":visible"); + } + + /* View Rendering + -----------------------------------------------------------------------------*/ + + function changeView(newViewName) { + if (!currentView || newViewName != currentView.name) { + _changeView(newViewName); + } + } + + function _changeView(newViewName) { + ignoreWindowResize++; + + if (currentView) { + trigger( + "viewDestroy", + currentView, + currentView, + currentView.element + ); + unselect(); + currentView.triggerEventDestroy(); // trigger 'eventDestroy' for each event + freezeContentHeight(); + currentView.element.remove(); + header.deactivateButton(currentView.name); + } + + header.activateButton(newViewName); + + currentView = new fcViews[newViewName]( + $( + "
" + ).appendTo(content), + t // the calendar object + ); + + renderView(); + unfreezeContentHeight(); + + ignoreWindowResize--; + } + + function renderView(inc) { + if ( + !currentView.start || // never rendered before + inc || + date < currentView.start || + date >= currentView.end // or new date range + ) { + if (elementVisible()) { + _renderView(inc); + } + } + } + + function _renderView(inc) { + // assumes elementVisible + ignoreWindowResize++; + + if (currentView.start) { + // already been rendered? + trigger( + "viewDestroy", + currentView, + currentView, + currentView.element + ); + unselect(); + clearEvents(); + } + + freezeContentHeight(); + currentView.render(date, inc || 0); // the view's render method ONLY renders the skeleton, nothing else + setSize(); + unfreezeContentHeight(); + (currentView.afterRender || noop)(); + + updateTitle(); + updateTodayButton(); + + trigger( + "viewRender", + currentView, + currentView, + currentView.element + ); + currentView.trigger("viewDisplay", _element); // deprecated + + ignoreWindowResize--; + + getAndRenderEvents(); + } + + /* Resizing + -----------------------------------------------------------------------------*/ + + function updateSize() { + if (elementVisible()) { + unselect(); + clearEvents(); + calcSize(); + setSize(); + renderEvents(); + } + } + + function calcSize() { + // assumes elementVisible + if (options.contentHeight) { + suggestedViewHeight = options.contentHeight; + } else if (options.height) { + suggestedViewHeight = + options.height - + (headerElement ? headerElement.height() : 0) - + vsides(content); + } else { + suggestedViewHeight = Math.round( + content.width() / Math.max(options.aspectRatio, 0.5) + ); + } + } + + function setSize() { + // assumes elementVisible + + if (suggestedViewHeight === undefined) { + calcSize(); // for first time + // NOTE: we don't want to recalculate on every renderView because + // it could result in oscillating heights due to scrollbars. + } + + ignoreWindowResize++; + currentView.setHeight(suggestedViewHeight); + currentView.setWidth(content.width()); + ignoreWindowResize--; + + elementOuterWidth = element.outerWidth(); + } + + function windowResize() { + if (!ignoreWindowResize) { + if (currentView.start) { + // view has already been rendered + var uid = ++resizeUID; + setTimeout(function () { + // add a delay + if ( + uid == resizeUID && + !ignoreWindowResize && + elementVisible() + ) { + if ( + elementOuterWidth != + (elementOuterWidth = element.outerWidth()) + ) { + ignoreWindowResize++; // in case the windowResize callback changes the height + updateSize(); + currentView.trigger("windowResize", _element); + ignoreWindowResize--; + } + } + }, 200); + } else { + // calendar must have been initialized in a 0x0 iframe that has just been resized + lateRender(); + } + } + } + + /* Event Fetching/Rendering + -----------------------------------------------------------------------------*/ + // TODO: going forward, most of this stuff should be directly handled by the view + + function refetchEvents() { + // can be called as an API method + clearEvents(); + fetchAndRenderEvents(); + } + + function rerenderEvents(modifiedEventID) { + // can be called as an API method + clearEvents(); + renderEvents(modifiedEventID); + } + + function renderEvents(modifiedEventID) { + // TODO: remove modifiedEventID hack + if (elementVisible()) { + currentView.setEventData(events); // for View.js, TODO: unify with renderEvents + currentView.renderEvents(events, modifiedEventID); // actually render the DOM elements + currentView.trigger("eventAfterAllRender"); + } + } + + function clearEvents() { + currentView.triggerEventDestroy(); // trigger 'eventDestroy' for each event + currentView.clearEvents(); // actually remove the DOM elements + currentView.clearEventData(); // for View.js, TODO: unify with clearEvents + } + + function getAndRenderEvents() { + if ( + !options.lazyFetching || + isFetchNeeded(currentView.visStart, currentView.visEnd) + ) { + fetchAndRenderEvents(); + } else { + renderEvents(); + } + } + + function fetchAndRenderEvents() { + fetchEvents(currentView.visStart, currentView.visEnd); + // ... will call reportEvents + // ... which will call renderEvents + } + + // called when event data arrives + function reportEvents(_events) { + events = _events; + renderEvents(); + } + + // called when a single event's data has been changed + function reportEventChange(eventID) { + rerenderEvents(eventID); + } + + /* Header Updating + -----------------------------------------------------------------------------*/ + + function updateTitle() { + header.updateTitle(currentView.title); + } + + function updateTodayButton() { + var today = new Date(); + if (today >= currentView.start && today < currentView.end) { + header.disableButton("today"); + } else { + header.enableButton("today"); + } + } + + /* Selection + -----------------------------------------------------------------------------*/ + + function select(start, end, allDay) { + currentView.select( + start, + end, + allDay === undefined ? true : allDay + ); + } + + function unselect() { + // safe to be called before renderView + if (currentView) { + currentView.unselect(); + } + } + + /* Date + -----------------------------------------------------------------------------*/ + + function prev() { + renderView(-1); + } + + function next() { + renderView(1); + } + + function prevYear() { + addYears(date, -1); + renderView(); + } + + function nextYear() { + addYears(date, 1); + renderView(); + } + + function today() { + date = new Date(); + renderView(); + } + + function gotoDate(year, month, dateOfMonth) { + if (year instanceof Date) { + date = cloneDate(year); // provided 1 argument, a Date + } else { + setYMD(date, year, month, dateOfMonth); + } + renderView(); + } + + function incrementDate(years, months, days) { + if (years !== undefined) { + addYears(date, years); + } + if (months !== undefined) { + addMonths(date, months); + } + if (days !== undefined) { + addDays(date, days); + } + renderView(); + } + + function getDate() { + return cloneDate(date); + } + + /* Height "Freezing" + -----------------------------------------------------------------------------*/ + + function freezeContentHeight() { + content.css({ + width: "100%", + height: content.height(), + overflow: "hidden", + }); + } + + function unfreezeContentHeight() { + content.css({ + width: "", + height: "", + overflow: "", + }); + } + + /* Misc + -----------------------------------------------------------------------------*/ + + function getView() { + return currentView; + } + + function option(name, value) { + if (value === undefined) { + return options[name]; + } + if ( + name == "height" || + name == "contentHeight" || + name == "aspectRatio" + ) { + options[name] = value; + updateSize(); + } + } + + function trigger(name, thisObj) { + if (options[name]) { + return options[name].apply( + thisObj || _element, + Array.prototype.slice.call(arguments, 2) + ); + } + } + + /* External Dragging + ------------------------------------------------------------------------*/ + + if (options.droppable) { + $(document) + .bind("dragstart", function (ev, ui) { + var _e = ev.target; + var e = $(_e); + if (!e.parents(".fc").length) { + // not already inside a calendar + var accept = options.dropAccept; + if ( + $.isFunction(accept) + ? accept.call(_e, e) + : e.is(accept) + ) { + _dragElement = _e; + currentView.dragStart(_dragElement, ev, ui); + } + } + }) + .bind("dragstop", function (ev, ui) { + if (_dragElement) { + currentView.dragStop(_dragElement, ev, ui); + _dragElement = null; + } + }); + } + } + + function Header(calendar, options) { + var t = this; + + // exports + t.render = render; + t.destroy = destroy; + t.updateTitle = updateTitle; + t.activateButton = activateButton; + t.deactivateButton = deactivateButton; + t.disableButton = disableButton; + t.enableButton = enableButton; + + // locals + var element = $([]); + var tm; + + function render() { + tm = options.theme ? "ui" : "fc"; + var sections = options.header; + if (sections) { + element = $( + "" + ).append( + $("") + .append(renderSection("left")) + .append(renderSection("center")) + .append(renderSection("right")) + ); + return element; + } + } + + function destroy() { + element.remove(); + } + + function renderSection(position) { + var e = $(""; + + if (showWeekNumbers) { + html += + ""; + } + + for (col = 0; col < colCnt; col++) { + date = cellToDate(0, col); + html += + ""; + } + + html += ""; + + return html; + } + + function buildBodyHTML() { + var contentClass = tm + "-widget-content"; + var html = ""; + var row; + var col; + var date; + + html += ""; + + for (row = 0; row < rowCnt; row++) { + html += ""; + + if (showWeekNumbers) { + date = cellToDate(row, 0); + html += + ""; + } + + for (col = 0; col < colCnt; col++) { + date = cellToDate(row, col); + html += buildCellHTML(date); + } + + html += ""; + } + + html += ""; + + return html; + } + + function buildCellHTML(date) { + var contentClass = tm + "-widget-content"; + var month = t.start.getMonth(); + var today = clearTime(new Date()); + var html = ""; + var classNames = [ + "fc-day", + "fc-" + dayIDs[date.getDay()], + contentClass, + ]; + + if (date.getMonth() != month) { + classNames.push("fc-other-month"); + } + if (+date == +today) { + classNames.push("fc-today", tm + "-state-highlight"); + } else if (date < today) { + classNames.push("fc-past"); + } else { + classNames.push("fc-future"); + } + + html += + "" + + "
"; + + if (showNumbers) { + html += + "
" + date.getDate() + "
"; + } + + html += + "
" + + "
 
" + + "
" + + "
" + + ""; + + return html; + } + + /* Dimensions + -----------------------------------------------------------*/ + + function setHeight(height) { + viewHeight = height; + + var bodyHeight = viewHeight - head.height(); + var rowHeight; + var rowHeightLast; + var cell; + + if (opt("weekMode") == "variable") { + rowHeight = rowHeightLast = Math.floor( + bodyHeight / (rowCnt == 1 ? 2 : 6) + ); + } else { + rowHeight = Math.floor(bodyHeight / rowCnt); + rowHeightLast = bodyHeight - rowHeight * (rowCnt - 1); + } + + bodyFirstCells.each(function (i, _cell) { + if (i < rowCnt) { + cell = $(_cell); + cell.find("> div").css( + "min-height", + (i == rowCnt - 1 ? rowHeightLast : rowHeight) - + vsides(cell) + ); + } + }); + } + + function setWidth(width) { + viewWidth = width; + colPositions.clear(); + colContentPositions.clear(); + + weekNumberWidth = 0; + if (showWeekNumbers) { + weekNumberWidth = head.find("th.fc-week-number").outerWidth(); + } + + colWidth = Math.floor((viewWidth - weekNumberWidth) / colCnt); + setOuterWidth(headCells.slice(0, -1), colWidth); + } + + /* Day clicking and binding + -----------------------------------------------------------*/ + + function dayBind(days) { + days.click(dayClick).mousedown(daySelectionMousedown); + } + + function dayClick(ev) { + if (!opt("selectable")) { + // if selectable, SelectionManager will worry about dayClick + var date = parseISO8601($(this).data("date")); + trigger("dayClick", this, date, true, ev); + } + } + + /* Semi-transparent Overlay Helpers + ------------------------------------------------------*/ + // TODO: should be consolidated with AgendaView's methods + + function renderDayOverlay( + overlayStart, + overlayEnd, + refreshCoordinateGrid + ) { + // overlayEnd is exclusive + + if (refreshCoordinateGrid) { + coordinateGrid.build(); + } + + var segments = rangeToSegments(overlayStart, overlayEnd); + + for (var i = 0; i < segments.length; i++) { + var segment = segments[i]; + dayBind( + renderCellOverlay( + segment.row, + segment.leftCol, + segment.row, + segment.rightCol + ) + ); + } + } + + function renderCellOverlay(row0, col0, row1, col1) { + // row1,col1 is inclusive + var rect = coordinateGrid.rect(row0, col0, row1, col1, element); + return renderOverlay(rect, element); + } + + /* Selection + -----------------------------------------------------------------------*/ + + function defaultSelectionEnd(startDate, allDay) { + return cloneDate(startDate); + } + + function renderSelection(startDate, endDate, allDay) { + renderDayOverlay(startDate, addDays(cloneDate(endDate), 1), true); // rebuild every time??? + } + + function clearSelection() { + clearOverlays(); + } + + function reportDayClick(date, allDay, ev) { + var cell = dateToCell(date); + var _element = bodyCells[cell.row * colCnt + cell.col]; + trigger("dayClick", _element, date, allDay, ev); + } + + /* External Dragging + -----------------------------------------------------------------------*/ + + function dragStart(_dragElement, ev, ui) { + hoverListener.start(function (cell) { + clearOverlays(); + if (cell) { + renderCellOverlay(cell.row, cell.col, cell.row, cell.col); + } + }, ev); + } + + function dragStop(_dragElement, ev, ui) { + var cell = hoverListener.stop(); + clearOverlays(); + if (cell) { + var d = cellToDate(cell); + trigger("drop", _dragElement, d, true, ev, ui); + } + } + + /* Utilities + --------------------------------------------------------*/ + + function defaultEventEnd(event) { + return cloneDate(event.start); + } + + coordinateGrid = new CoordinateGrid(function (rows, cols) { + var e, n, p; + headCells.each(function (i, _e) { + e = $(_e); + n = e.offset().left; + if (i) { + p[1] = n; + } + p = [n]; + cols[i] = p; + }); + p[1] = n + e.outerWidth(); + bodyRows.each(function (i, _e) { + if (i < rowCnt) { + e = $(_e); + n = e.offset().top; + if (i) { + p[1] = n; + } + p = [n]; + rows[i] = p; + } + }); + p[1] = n + e.outerHeight(); + }); + + hoverListener = new HoverListener(coordinateGrid); + + colPositions = new HorizontalPositionCache(function (col) { + return firstRowCellInners.eq(col); + }); + + colContentPositions = new HorizontalPositionCache(function (col) { + return firstRowCellContentInners.eq(col); + }); + + function colLeft(col) { + return colPositions.left(col); + } + + function colRight(col) { + return colPositions.right(col); + } + + function colContentLeft(col) { + return colContentPositions.left(col); + } + + function colContentRight(col) { + return colContentPositions.right(col); + } + + function allDayRow(i) { + return bodyRows.eq(i); + } + } + + function BasicEventRenderer() { + var t = this; + + // exports + t.renderEvents = renderEvents; + t.clearEvents = clearEvents; + + // imports + DayEventRenderer.call(t); + + function renderEvents(events, modifiedEventId) { + t.renderDayEvents(events, modifiedEventId); + } + + function clearEvents() { + t.getDaySegmentContainer().empty(); + } + + // TODO: have this class (and AgendaEventRenderer) be responsible for creating the event container div + } + + fcViews.agendaWeek = AgendaWeekView; + + function AgendaWeekView(element, calendar) { + var t = this; + + // exports + t.render = render; + + // imports + AgendaView.call(t, element, calendar, "agendaWeek"); + var opt = t.opt; + var renderAgenda = t.renderAgenda; + var skipHiddenDays = t.skipHiddenDays; + var getCellsPerWeek = t.getCellsPerWeek; + var formatDates = calendar.formatDates; + + function render(date, delta) { + if (delta) { + addDays(date, delta * 7); + } + + var start = addDays( + cloneDate(date), + -((date.getDay() - opt("firstDay") + 7) % 7) + ); + var end = addDays(cloneDate(start), 7); + + var visStart = cloneDate(start); + skipHiddenDays(visStart); + + var visEnd = cloneDate(end); + skipHiddenDays(visEnd, -1, true); + + var colCnt = getCellsPerWeek(); + + t.title = formatDates( + visStart, + addDays(cloneDate(visEnd), -1), + opt("titleFormat") + ); + + t.start = start; + t.end = end; + t.visStart = visStart; + t.visEnd = visEnd; + + renderAgenda(colCnt); + } + } + + fcViews.agendaDay = AgendaDayView; + + function AgendaDayView(element, calendar) { + var t = this; + + // exports + t.render = render; + + // imports + AgendaView.call(t, element, calendar, "agendaDay"); + var opt = t.opt; + var renderAgenda = t.renderAgenda; + var skipHiddenDays = t.skipHiddenDays; + var formatDate = calendar.formatDate; + + function render(date, delta) { + if (delta) { + addDays(date, delta); + } + skipHiddenDays(date, delta < 0 ? -1 : 1); + + var start = cloneDate(date, true); + var end = addDays(cloneDate(start), 1); + + t.title = formatDate(date, opt("titleFormat")); + + t.start = t.visStart = start; + t.end = t.visEnd = end; + + renderAgenda(1); + } + } + + setDefaults({ + allDaySlot: true, + allDayText: "all-day", + firstHour: 6, + slotMinutes: 30, + defaultEventMinutes: 120, + axisFormat: "h(:mm)tt", + timeFormat: { + agenda: "h:mm{ - h:mm}", + }, + dragOpacity: { + agenda: 0.5, + }, + minTime: 0, + maxTime: 24, + slotEventOverlap: true, + }); + + // TODO: make it work in quirks mode (event corners, all-day height) + // TODO: test liquid width, especially in IE6 + + function AgendaView(element, calendar, viewName) { + var t = this; + + // exports + t.renderAgenda = renderAgenda; + t.setWidth = setWidth; + t.setHeight = setHeight; + t.afterRender = afterRender; + t.defaultEventEnd = defaultEventEnd; + t.timePosition = timePosition; + t.getIsCellAllDay = getIsCellAllDay; + t.allDayRow = getAllDayRow; + t.getCoordinateGrid = function () { + return coordinateGrid; + }; // specifically for AgendaEventRenderer + t.getHoverListener = function () { + return hoverListener; + }; + t.colLeft = colLeft; + t.colRight = colRight; + t.colContentLeft = colContentLeft; + t.colContentRight = colContentRight; + t.getDaySegmentContainer = function () { + return daySegmentContainer; + }; + t.getSlotSegmentContainer = function () { + return slotSegmentContainer; + }; + t.getMinMinute = function () { + return minMinute; + }; + t.getMaxMinute = function () { + return maxMinute; + }; + t.getSlotContainer = function () { + return slotContainer; + }; + t.getRowCnt = function () { + return 1; + }; + t.getColCnt = function () { + return colCnt; + }; + t.getColWidth = function () { + return colWidth; + }; + t.getSnapHeight = function () { + return snapHeight; + }; + t.getSnapMinutes = function () { + return snapMinutes; + }; + t.defaultSelectionEnd = defaultSelectionEnd; + t.renderDayOverlay = renderDayOverlay; + t.renderSelection = renderSelection; + t.clearSelection = clearSelection; + t.reportDayClick = reportDayClick; // selection mousedown hack + t.dragStart = dragStart; + t.dragStop = dragStop; + + // imports + View.call(t, element, calendar, viewName); + OverlayManager.call(t); + SelectionManager.call(t); + AgendaEventRenderer.call(t); + var opt = t.opt; + var trigger = t.trigger; + var renderOverlay = t.renderOverlay; + var clearOverlays = t.clearOverlays; + var reportSelection = t.reportSelection; + var unselect = t.unselect; + var daySelectionMousedown = t.daySelectionMousedown; + var slotSegHtml = t.slotSegHtml; + var cellToDate = t.cellToDate; + var dateToCell = t.dateToCell; + var rangeToSegments = t.rangeToSegments; + var formatDate = calendar.formatDate; + + // locals + + var dayTable; + var dayHead; + var dayHeadCells; + var dayBody; + var dayBodyCells; + var dayBodyCellInners; + var dayBodyCellContentInners; + var dayBodyFirstCell; + var dayBodyFirstCellStretcher; + var slotLayer; + var daySegmentContainer; + var allDayTable; + var allDayRow; + var slotScroller; + var slotContainer; + var slotSegmentContainer; + var slotTable; + var selectionHelper; + + var viewWidth; + var viewHeight; + var axisWidth; + var colWidth; + var gutterWidth; + var slotHeight; // TODO: what if slotHeight changes? (see issue 650) + + var snapMinutes; + var snapRatio; // ratio of number of "selection" slots to normal slots. (ex: 1, 2, 4) + var snapHeight; // holds the pixel hight of a "selection" slot + + var colCnt; + var slotCnt; + var coordinateGrid; + var hoverListener; + var colPositions; + var colContentPositions; + var slotTopCache = {}; + + var tm; + var rtl; + var minMinute, maxMinute; + var colFormat; + var showWeekNumbers; + var weekNumberTitle; + var weekNumberFormat; + + /* Rendering + -----------------------------------------------------------------------------*/ + + disableTextSelection(element.addClass("fc-agenda")); + + function renderAgenda(c) { + colCnt = c; + updateOptions(); + + if (!dayTable) { + // first time rendering? + buildSkeleton(); // builds day table, slot area, events containers + } else { + buildDayTable(); // rebuilds day table + } + } + + function updateOptions() { + tm = opt("theme") ? "ui" : "fc"; + rtl = opt("isRTL"); + minMinute = parseTime(opt("minTime")); + maxMinute = parseTime(opt("maxTime")); + colFormat = opt("columnFormat"); + + // week # options. (TODO: bad, logic also in other views) + showWeekNumbers = opt("weekNumbers"); + weekNumberTitle = opt("weekNumberTitle"); + if (opt("weekNumberCalculation") != "iso") { + weekNumberFormat = "w"; + } else { + weekNumberFormat = "W"; + } + + snapMinutes = opt("snapMinutes") || opt("slotMinutes"); + } + + /* Build DOM + -----------------------------------------------------------------------*/ + + function buildSkeleton() { + var headerClass = tm + "-widget-header"; + var contentClass = tm + "-widget-content"; + var s; + var d; + var i; + var maxd; + var minutes; + var slotNormal = opt("slotMinutes") % 15 == 0; + + buildDayTable(); + + slotLayer = $( + "
" + ).appendTo(element); + + if (opt("allDaySlot")) { + daySegmentContainer = $( + "
" + ).appendTo(slotLayer); + + s = + "
"); + var buttonStr = options.header[position]; + if (buttonStr) { + $.each(buttonStr.split(" "), function (i) { + if (i > 0) { + e.append(""); + } + var prevButton; + $.each(this.split(","), function (j, buttonName) { + if (buttonName == "title") { + e.append( + "

 

" + ); + if (prevButton) { + prevButton.addClass(tm + "-corner-right"); + } + prevButton = null; + } else { + var buttonClick; + if (calendar[buttonName]) { + buttonClick = calendar[buttonName]; // calendar method + } else if (fcViews[buttonName]) { + buttonClick = function () { + button.removeClass(tm + "-state-hover"); // forget why + calendar.changeView(buttonName); + }; + } + if (buttonClick) { + var icon = options.theme + ? smartProperty( + options.buttonIcons, + buttonName + ) + : null; // why are we using smartProperty here? + var text = smartProperty( + options.buttonText, + buttonName + ); // why are we using smartProperty here? + var button = $( + "" + + (icon + ? "" + + "" + + "" + : text) + + "" + ) + .click(function () { + if ( + !button.hasClass( + tm + "-state-disabled" + ) + ) { + buttonClick(); + } + }) + .mousedown(function () { + button + .not("." + tm + "-state-active") + .not("." + tm + "-state-disabled") + .addClass(tm + "-state-down"); + }) + .mouseup(function () { + button.removeClass(tm + "-state-down"); + }) + .hover( + function () { + button + .not("." + tm + "-state-active") + .not( + "." + tm + "-state-disabled" + ) + .addClass(tm + "-state-hover"); + }, + function () { + button + .removeClass( + tm + "-state-hover" + ) + .removeClass( + tm + "-state-down" + ); + } + ) + .appendTo(e); + disableTextSelection(button); + if (!prevButton) { + button.addClass(tm + "-corner-left"); + } + prevButton = button; + } + } + }); + if (prevButton) { + prevButton.addClass(tm + "-corner-right"); + } + }); + } + return e; + } + + function updateTitle(html) { + element.find("h2").html(html); + } + + function activateButton(buttonName) { + element + .find("span.fc-button-" + buttonName) + .addClass(tm + "-state-active"); + } + + function deactivateButton(buttonName) { + element + .find("span.fc-button-" + buttonName) + .removeClass(tm + "-state-active"); + } + + function disableButton(buttonName) { + element + .find("span.fc-button-" + buttonName) + .addClass(tm + "-state-disabled"); + } + + function enableButton(buttonName) { + element + .find("span.fc-button-" + buttonName) + .removeClass(tm + "-state-disabled"); + } + } + + fc.sourceNormalizers = []; + fc.sourceFetchers = []; + + var ajaxDefaults = { + dataType: "json", + cache: false, + }; + + var eventGUID = 1; + + function EventManager(options, _sources) { + var t = this; + + // exports + t.isFetchNeeded = isFetchNeeded; + t.fetchEvents = fetchEvents; + t.addEventSource = addEventSource; + t.removeEventSource = removeEventSource; + t.updateEvent = updateEvent; + t.renderEvent = renderEvent; + t.removeEvents = removeEvents; + t.clientEvents = clientEvents; + t.normalizeEvent = normalizeEvent; + + // imports + var trigger = t.trigger; + var getView = t.getView; + var reportEvents = t.reportEvents; + + // locals + var stickySource = { events: [] }; + var sources = [stickySource]; + var rangeStart, rangeEnd; + var currentFetchID = 0; + var pendingSourceCnt = 0; + var loadingLevel = 0; + var cache = []; + + for (var i = 0; i < _sources.length; i++) { + _addEventSource(_sources[i]); + } + + /* Fetching + -----------------------------------------------------------------------------*/ + + function isFetchNeeded(start, end) { + return !rangeStart || start < rangeStart || end > rangeEnd; + } + + function fetchEvents(start, end) { + rangeStart = start; + rangeEnd = end; + cache = []; + var fetchID = ++currentFetchID; + var len = sources.length; + pendingSourceCnt = len; + for (var i = 0; i < len; i++) { + fetchEventSource(sources[i], fetchID); + } + } + + function fetchEventSource(source, fetchID) { + _fetchEventSource(source, function (events) { + if (fetchID == currentFetchID) { + if (events) { + if (options.eventDataTransform) { + events = $.map(events, options.eventDataTransform); + } + if (source.eventDataTransform) { + events = $.map(events, source.eventDataTransform); + } + // TODO: this technique is not ideal for static array event sources. + // For arrays, we'll want to process all events right in the beginning, then never again. + + for (var i = 0; i < events.length; i++) { + events[i].source = source; + normalizeEvent(events[i]); + } + cache = cache.concat(events); + } + pendingSourceCnt--; + if (!pendingSourceCnt) { + reportEvents(cache); + } + } + }); + } + + function _fetchEventSource(source, callback) { + var i; + var fetchers = fc.sourceFetchers; + var res; + for (i = 0; i < fetchers.length; i++) { + res = fetchers[i](source, rangeStart, rangeEnd, callback); + if (res === true) { + // the fetcher is in charge. made its own async request + return; + } else if (typeof res == "object") { + // the fetcher returned a new source. process it + _fetchEventSource(res, callback); + return; + } + } + var events = source.events; + if (events) { + if ($.isFunction(events)) { + pushLoading(); + events( + cloneDate(rangeStart), + cloneDate(rangeEnd), + function (events) { + callback(events); + popLoading(); + } + ); + } else if ($.isArray(events)) { + callback(events); + } else { + callback(); + } + } else { + var url = source.url; + if (url) { + var success = source.success; + var error = source.error; + var complete = source.complete; + + // retrieve any outbound GET/POST $.ajax data from the options + var customData; + if ($.isFunction(source.data)) { + // supplied as a function that returns a key/value object + customData = source.data(); + } else { + // supplied as a straight key/value object + customData = source.data; + } + + // use a copy of the custom data so we can modify the parameters + // and not affect the passed-in object. + var data = $.extend({}, customData || {}); + + var startParam = firstDefined( + source.startParam, + options.startParam + ); + var endParam = firstDefined( + source.endParam, + options.endParam + ); + if (startParam) { + data[startParam] = Math.round(+rangeStart / 1000); + } + if (endParam) { + data[endParam] = Math.round(+rangeEnd / 1000); + } + + pushLoading(); + $.ajax( + $.extend({}, ajaxDefaults, source, { + data: data, + success: function (events) { + events = events || []; + var res = applyAll(success, this, arguments); + if ($.isArray(res)) { + events = res; + } + callback(events); + }, + error: function () { + applyAll(error, this, arguments); + callback(); + }, + complete: function () { + applyAll(complete, this, arguments); + popLoading(); + }, + }) + ); + } else { + callback(); + } + } + } + + /* Sources + -----------------------------------------------------------------------------*/ + + function addEventSource(source) { + source = _addEventSource(source); + if (source) { + pendingSourceCnt++; + fetchEventSource(source, currentFetchID); // will eventually call reportEvents + } + } + + function _addEventSource(source) { + if ($.isFunction(source) || $.isArray(source)) { + source = { events: source }; + } else if (typeof source == "string") { + source = { url: source }; + } + if (typeof source == "object") { + normalizeSource(source); + sources.push(source); + return source; + } + } + + function removeEventSource(source) { + sources = $.grep(sources, function (src) { + return !isSourcesEqual(src, source); + }); + // remove all client events from that source + cache = $.grep(cache, function (e) { + return !isSourcesEqual(e.source, source); + }); + reportEvents(cache); + } + + /* Manipulation + -----------------------------------------------------------------------------*/ + + function updateEvent(event) { + // update an existing event + var i, + len = cache.length, + e, + defaultEventEnd = getView().defaultEventEnd, // getView??? + startDelta = event.start - event._start, + endDelta = event.end + ? event.end - (event._end || defaultEventEnd(event)) // event._end would be null if event.end + : 0; // was null and event was just resized + for (i = 0; i < len; i++) { + e = cache[i]; + if (e._id == event._id && e != event) { + e.start = new Date(+e.start + startDelta); + if (event.end) { + if (e.end) { + e.end = new Date(+e.end + endDelta); + } else { + e.end = new Date(+defaultEventEnd(e) + endDelta); + } + } else { + e.end = null; + } + e.title = event.title; + e.url = event.url; + e.allDay = event.allDay; + e.className = event.className; + e.editable = event.editable; + e.color = event.color; + e.backgroundColor = event.backgroundColor; + e.borderColor = event.borderColor; + e.textColor = event.textColor; + normalizeEvent(e); + } + } + normalizeEvent(event); + reportEvents(cache); + } + + function renderEvent(event, stick) { + normalizeEvent(event); + if (!event.source) { + if (stick) { + stickySource.events.push(event); + event.source = stickySource; + } + cache.push(event); + } + reportEvents(cache); + } + + function removeEvents(filter) { + if (!filter) { + // remove all + cache = []; + // clear all array sources + for (var i = 0; i < sources.length; i++) { + if ($.isArray(sources[i].events)) { + sources[i].events = []; + } + } + } else { + if (!$.isFunction(filter)) { + // an event ID + var id = filter + ""; + filter = function (e) { + return e._id == id; + }; + } + cache = $.grep(cache, filter, true); + // remove events from array sources + for (var i = 0; i < sources.length; i++) { + if ($.isArray(sources[i].events)) { + sources[i].events = $.grep( + sources[i].events, + filter, + true + ); + } + } + } + reportEvents(cache); + } + + function clientEvents(filter) { + if ($.isFunction(filter)) { + return $.grep(cache, filter); + } else if (filter) { + // an event ID + filter += ""; + return $.grep(cache, function (e) { + return e._id == filter; + }); + } + return cache; // else, return all + } + + /* Loading State + -----------------------------------------------------------------------------*/ + + function pushLoading() { + if (!loadingLevel++) { + trigger("loading", null, true, getView()); + } + } + + function popLoading() { + if (!--loadingLevel) { + trigger("loading", null, false, getView()); + } + } + + /* Event Normalization + -----------------------------------------------------------------------------*/ + + function normalizeEvent(event) { + var source = event.source || {}; + var ignoreTimezone = firstDefined( + source.ignoreTimezone, + options.ignoreTimezone + ); + event._id = + event._id || + (event.id === undefined ? "_fc" + eventGUID++ : event.id + ""); + if (event.date) { + if (!event.start) { + event.start = event.date; + } + delete event.date; + } + event._start = cloneDate( + (event.start = parseDate(event.start, ignoreTimezone)) + ); + event.end = parseDate(event.end, ignoreTimezone); + if (event.end && event.end <= event.start) { + event.end = null; + } + event._end = event.end ? cloneDate(event.end) : null; + if (event.allDay === undefined) { + event.allDay = firstDefined( + source.allDayDefault, + options.allDayDefault + ); + } + if (event.className) { + if (typeof event.className == "string") { + event.className = event.className.split(/\s+/); + } + } else { + event.className = []; + } + // TODO: if there is no start date, return false to indicate an invalid event + } + + /* Utils + ------------------------------------------------------------------------------*/ + + function normalizeSource(source) { + if (source.className) { + // TODO: repeat code, same code for event classNames + if (typeof source.className == "string") { + source.className = source.className.split(/\s+/); + } + } else { + source.className = []; + } + var normalizers = fc.sourceNormalizers; + for (var i = 0; i < normalizers.length; i++) { + normalizers[i](source); + } + } + + function isSourcesEqual(source1, source2) { + return ( + source1 && + source2 && + getSourcePrimitive(source1) == getSourcePrimitive(source2) + ); + } + + function getSourcePrimitive(source) { + return ( + (typeof source == "object" + ? source.events || source.url + : "") || source + ); + } + } + + fc.addDays = addDays; + fc.cloneDate = cloneDate; + fc.parseDate = parseDate; + fc.parseISO8601 = parseISO8601; + fc.parseTime = parseTime; + fc.formatDate = formatDate; + fc.formatDates = formatDates; + + /* Date Math +-----------------------------------------------------------------------------*/ + + var dayIDs = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"], + DAY_MS = 86400000, + HOUR_MS = 3600000, + MINUTE_MS = 60000; + + function addYears(d, n, keepTime) { + d.setFullYear(d.getFullYear() + n); + if (!keepTime) { + clearTime(d); + } + return d; + } + + function addMonths(d, n, keepTime) { + // prevents day overflow/underflow + if (+d) { + // prevent infinite looping on invalid dates + var m = d.getMonth() + n, + check = cloneDate(d); + check.setDate(1); + check.setMonth(m); + d.setMonth(m); + if (!keepTime) { + clearTime(d); + } + while (d.getMonth() != check.getMonth()) { + d.setDate(d.getDate() + (d < check ? 1 : -1)); + } + } + return d; + } + + function addDays(d, n, keepTime) { + // deals with daylight savings + if (+d) { + var dd = d.getDate() + n, + check = cloneDate(d); + check.setHours(9); // set to middle of day + check.setDate(dd); + d.setDate(dd); + if (!keepTime) { + clearTime(d); + } + fixDate(d, check); + } + return d; + } + + function fixDate(d, check) { + // force d to be on check's YMD, for daylight savings purposes + if (+d) { + // prevent infinite looping on invalid dates + while (d.getDate() != check.getDate()) { + d.setTime(+d + (d < check ? 1 : -1) * HOUR_MS); + } + } + } + + function addMinutes(d, n) { + d.setMinutes(d.getMinutes() + n); + return d; + } + + function clearTime(d) { + d.setHours(0); + d.setMinutes(0); + d.setSeconds(0); + d.setMilliseconds(0); + return d; + } + + function cloneDate(d, dontKeepTime) { + if (dontKeepTime) { + return clearTime(new Date(+d)); + } + return new Date(+d); + } + + function zeroDate() { + // returns a Date with time 00:00:00 and dateOfMonth=1 + var i = 0, + d; + do { + d = new Date(1970, i++, 1); + } while (d.getHours()); // != 0 + return d; + } + + function dayDiff(d1, d2) { + // d1 - d2 + return Math.round((cloneDate(d1, true) - cloneDate(d2, true)) / DAY_MS); + } + + function setYMD(date, y, m, d) { + if (y !== undefined && y != date.getFullYear()) { + date.setDate(1); + date.setMonth(0); + date.setFullYear(y); + } + if (m !== undefined && m != date.getMonth()) { + date.setDate(1); + date.setMonth(m); + } + if (d !== undefined) { + date.setDate(d); + } + } + + /* Date Parsing +-----------------------------------------------------------------------------*/ + + function parseDate(s, ignoreTimezone) { + // ignoreTimezone defaults to true + if (typeof s == "object") { + // already a Date object + return s; + } + if (typeof s == "number") { + // a UNIX timestamp + return new Date(s * 1000); + } + if (typeof s == "string") { + if (s.match(/^\d+(\.\d+)?$/)) { + // a UNIX timestamp + return new Date(parseFloat(s) * 1000); + } + if (ignoreTimezone === undefined) { + ignoreTimezone = true; + } + return parseISO8601(s, ignoreTimezone) || (s ? new Date(s) : null); + } + // TODO: never return invalid dates (like from new Date()), return null instead + return null; + } + + function parseISO8601(s, ignoreTimezone) { + // ignoreTimezone defaults to false + // derived from http://delete.me.uk/2005/03/iso8601.html + // TODO: for a know glitch/feature, read tests/issue_206_parseDate_dst.html + var m = s.match( + /^([0-9]{4})(-([0-9]{2})(-([0-9]{2})([T ]([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2})(:?([0-9]{2}))?))?)?)?)?$/ + ); + if (!m) { + return null; + } + var date = new Date(m[1], 0, 1); + if (ignoreTimezone || !m[13]) { + var check = new Date(m[1], 0, 1, 9, 0); + if (m[3]) { + date.setMonth(m[3] - 1); + check.setMonth(m[3] - 1); + } + if (m[5]) { + date.setDate(m[5]); + check.setDate(m[5]); + } + fixDate(date, check); + if (m[7]) { + date.setHours(m[7]); + } + if (m[8]) { + date.setMinutes(m[8]); + } + if (m[10]) { + date.setSeconds(m[10]); + } + if (m[12]) { + date.setMilliseconds(Number("0." + m[12]) * 1000); + } + fixDate(date, check); + } else { + date.setUTCFullYear(m[1], m[3] ? m[3] - 1 : 0, m[5] || 1); + date.setUTCHours( + m[7] || 0, + m[8] || 0, + m[10] || 0, + m[12] ? Number("0." + m[12]) * 1000 : 0 + ); + if (m[14]) { + var offset = Number(m[16]) * 60 + (m[18] ? Number(m[18]) : 0); + offset *= m[15] == "-" ? 1 : -1; + date = new Date(+date + offset * 60 * 1000); + } + } + return date; + } + + function parseTime(s) { + // returns minutes since start of day + if (typeof s == "number") { + // an hour + return s * 60; + } + if (typeof s == "object") { + // a Date object + return s.getHours() * 60 + s.getMinutes(); + } + var m = s.match(/(\d+)(?::(\d+))?\s*(\w+)?/); + if (m) { + var h = parseInt(m[1], 10); + if (m[3]) { + h %= 12; + if (m[3].toLowerCase().charAt(0) == "p") { + h += 12; + } + } + return h * 60 + (m[2] ? parseInt(m[2], 10) : 0); + } + } + + /* Date Formatting +-----------------------------------------------------------------------------*/ + // TODO: use same function formatDate(date, [date2], format, [options]) + + function formatDate(date, format, options) { + return formatDates(date, null, format, options); + } + + function formatDates(date1, date2, format, options) { + options = options || defaults; + var date = date1, + otherDate = date2, + i, + len = format.length, + c, + i2, + formatter, + res = ""; + for (i = 0; i < len; i++) { + c = format.charAt(i); + if (c == "'") { + for (i2 = i + 1; i2 < len; i2++) { + if (format.charAt(i2) == "'") { + if (date) { + if (i2 == i + 1) { + res += "'"; + } else { + res += format.substring(i + 1, i2); + } + i = i2; + } + break; + } + } + } else if (c == "(") { + for (i2 = i + 1; i2 < len; i2++) { + if (format.charAt(i2) == ")") { + var subres = formatDate( + date, + format.substring(i + 1, i2), + options + ); + if (parseInt(subres.replace(/\D/, ""), 10)) { + res += subres; + } + i = i2; + break; + } + } + } else if (c == "[") { + for (i2 = i + 1; i2 < len; i2++) { + if (format.charAt(i2) == "]") { + var subformat = format.substring(i + 1, i2); + var subres = formatDate(date, subformat, options); + if ( + subres != formatDate(otherDate, subformat, options) + ) { + res += subres; + } + i = i2; + break; + } + } + } else if (c == "{") { + date = date2; + otherDate = date1; + } else if (c == "}") { + date = date1; + otherDate = date2; + } else { + for (i2 = len; i2 > i; i2--) { + if ((formatter = dateFormatters[format.substring(i, i2)])) { + if (date) { + res += formatter(date, options); + } + i = i2 - 1; + break; + } + } + if (i2 == i) { + if (date) { + res += c; + } + } + } + } + return res; + } + + var dateFormatters = { + s: function (d) { + return d.getSeconds(); + }, + ss: function (d) { + return zeroPad(d.getSeconds()); + }, + m: function (d) { + return d.getMinutes(); + }, + mm: function (d) { + return zeroPad(d.getMinutes()); + }, + h: function (d) { + return d.getHours() % 12 || 12; + }, + hh: function (d) { + return zeroPad(d.getHours() % 12 || 12); + }, + H: function (d) { + return d.getHours(); + }, + HH: function (d) { + return zeroPad(d.getHours()); + }, + d: function (d) { + return d.getDate(); + }, + dd: function (d) { + return zeroPad(d.getDate()); + }, + ddd: function (d, o) { + return o.dayNamesShort[d.getDay()]; + }, + dddd: function (d, o) { + return o.dayNames[d.getDay()]; + }, + M: function (d) { + return d.getMonth() + 1; + }, + MM: function (d) { + return zeroPad(d.getMonth() + 1); + }, + MMM: function (d, o) { + return o.monthNamesShort[d.getMonth()]; + }, + MMMM: function (d, o) { + return o.monthNames[d.getMonth()]; + }, + yy: function (d) { + return (d.getFullYear() + "").substring(2); + }, + yyyy: function (d) { + return d.getFullYear(); + }, + t: function (d) { + return d.getHours() < 12 ? "a" : "p"; + }, + tt: function (d) { + return d.getHours() < 12 ? "am" : "pm"; + }, + T: function (d) { + return d.getHours() < 12 ? "A" : "P"; + }, + TT: function (d) { + return d.getHours() < 12 ? "AM" : "PM"; + }, + u: function (d) { + return formatDate(d, "yyyy-MM-dd'T'HH:mm:ss'Z'"); + }, + S: function (d) { + var date = d.getDate(); + if (date > 10 && date < 20) { + return "th"; + } + return ["st", "nd", "rd"][(date % 10) - 1] || "th"; + }, + w: function (d, o) { + // local + return o.weekNumberCalculation(d); + }, + W: function (d) { + // ISO + return iso8601Week(d); + }, + }; + fc.dateFormatters = dateFormatters; + + /* thanks jQuery UI (https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js) + * + * Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. + * `date` - the date to get the week for + * `number` - the number of the week within the year that contains this date + */ + function iso8601Week(date) { + var time; + var checkDate = new Date(date.getTime()); + + // Find Thursday of this week starting on Monday + checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); + + time = checkDate.getTime(); + checkDate.setMonth(0); // Compare with Jan 1 + checkDate.setDate(1); + return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1; + } + + fc.applyAll = applyAll; + + /* Event Date Math +-----------------------------------------------------------------------------*/ + + function exclEndDay(event) { + if (event.end) { + return _exclEndDay(event.end, event.allDay); + } else { + return addDays(cloneDate(event.start), 1); + } + } + + function _exclEndDay(end, allDay) { + end = cloneDate(end); + return allDay || end.getHours() || end.getMinutes() + ? addDays(end, 1) + : clearTime(end); + // why don't we check for seconds/ms too? + } + + /* Event Element Binding +-----------------------------------------------------------------------------*/ + + function lazySegBind(container, segs, bindHandlers) { + container.unbind("mouseover").mouseover(function (ev) { + var parent = ev.target, + e, + i, + seg; + while (parent != this) { + e = parent; + parent = parent.parentNode; + } + if ((i = e._fci) !== undefined) { + e._fci = undefined; + seg = segs[i]; + bindHandlers(seg.event, seg.element, seg); + $(ev.target).trigger(ev); + } + ev.stopPropagation(); + }); + } + + /* Element Dimensions +-----------------------------------------------------------------------------*/ + + function setOuterWidth(element, width, includeMargins) { + for (var i = 0, e; i < element.length; i++) { + e = $(element[i]); + e.width(Math.max(0, width - hsides(e, includeMargins))); + } + } + + function setOuterHeight(element, height, includeMargins) { + for (var i = 0, e; i < element.length; i++) { + e = $(element[i]); + e.height(Math.max(0, height - vsides(e, includeMargins))); + } + } + + function hsides(element, includeMargins) { + return ( + hpadding(element) + + hborders(element) + + (includeMargins ? hmargins(element) : 0) + ); + } + + function hpadding(element) { + return ( + (parseFloat($.css(element[0], "paddingLeft", true)) || 0) + + (parseFloat($.css(element[0], "paddingRight", true)) || 0) + ); + } + + function hmargins(element) { + return ( + (parseFloat($.css(element[0], "marginLeft", true)) || 0) + + (parseFloat($.css(element[0], "marginRight", true)) || 0) + ); + } + + function hborders(element) { + return ( + (parseFloat($.css(element[0], "borderLeftWidth", true)) || 0) + + (parseFloat($.css(element[0], "borderRightWidth", true)) || 0) + ); + } + + function vsides(element, includeMargins) { + return ( + vpadding(element) + + vborders(element) + + (includeMargins ? vmargins(element) : 0) + ); + } + + function vpadding(element) { + return ( + (parseFloat($.css(element[0], "paddingTop", true)) || 0) + + (parseFloat($.css(element[0], "paddingBottom", true)) || 0) + ); + } + + function vmargins(element) { + return ( + (parseFloat($.css(element[0], "marginTop", true)) || 0) + + (parseFloat($.css(element[0], "marginBottom", true)) || 0) + ); + } + + function vborders(element) { + return ( + (parseFloat($.css(element[0], "borderTopWidth", true)) || 0) + + (parseFloat($.css(element[0], "borderBottomWidth", true)) || 0) + ); + } + + /* Misc Utils +-----------------------------------------------------------------------------*/ + + //TODO: arraySlice + //TODO: isFunction, grep ? + + function noop() {} + + function dateCompare(a, b) { + return a - b; + } + + function arrayMax(a) { + return Math.max.apply(Math, a); + } + + function zeroPad(n) { + return (n < 10 ? "0" : "") + n; + } + + function smartProperty(obj, name) { + // get a camel-cased/namespaced property of an object + if (obj[name] !== undefined) { + return obj[name]; + } + var parts = name.split(/(?=[A-Z])/), + i = parts.length - 1, + res; + for (; i >= 0; i--) { + res = obj[parts[i].toLowerCase()]; + if (res !== undefined) { + return res; + } + } + return obj[""]; + } + + function htmlEscape(s) { + return s + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/'/g, "'") + .replace(/"/g, """) + .replace(/\n/g, "
"); + } + + function disableTextSelection(element) { + element + .attr("unselectable", "on") + .css("MozUserSelect", "none") + .bind("selectstart.ui", function () { + return false; + }); + } + + /* +function enableTextSelection(element) { + element + .attr('unselectable', 'off') + .css('MozUserSelect', '') + .unbind('selectstart.ui'); +} +*/ + + function markFirstLast(e) { + e.children() + .removeClass("fc-first fc-last") + .filter(":first-child") + .addClass("fc-first") + .end() + .filter(":last-child") + .addClass("fc-last"); + } + + function setDayID(cell, date) { + cell.each(function (i, _cell) { + _cell.className = _cell.className.replace( + /^fc-\w*/, + "fc-" + dayIDs[date.getDay()] + ); + // TODO: make a way that doesn't rely on order of classes + }); + } + + function getSkinCss(event, opt) { + var source = event.source || {}; + var eventColor = event.color; + var sourceColor = source.color; + var optionColor = opt("eventColor"); + var backgroundColor = + event.backgroundColor || + eventColor || + source.backgroundColor || + sourceColor || + opt("eventBackgroundColor") || + optionColor; + var borderColor = + event.borderColor || + eventColor || + source.borderColor || + sourceColor || + opt("eventBorderColor") || + optionColor; + var textColor = + event.textColor || source.textColor || opt("eventTextColor"); + var statements = []; + if (backgroundColor) { + statements.push("background-color:" + backgroundColor); + } + if (borderColor) { + statements.push("border-color:" + borderColor); + } + if (textColor) { + statements.push("color:" + textColor); + } + return statements.join(";"); + } + + function applyAll(functions, thisObj, args) { + if ($.isFunction(functions)) { + functions = [functions]; + } + if (functions) { + var i; + var ret; + for (i = 0; i < functions.length; i++) { + ret = functions[i].apply(thisObj, args) || ret; + } + return ret; + } + } + + function firstDefined() { + for (var i = 0; i < arguments.length; i++) { + if (arguments[i] !== undefined) { + return arguments[i]; + } + } + } + + fcViews.month = MonthView; + + function MonthView(element, calendar) { + var t = this; + + // exports + t.render = render; + + // imports + BasicView.call(t, element, calendar, "month"); + var opt = t.opt; + var renderBasic = t.renderBasic; + var skipHiddenDays = t.skipHiddenDays; + var getCellsPerWeek = t.getCellsPerWeek; + var formatDate = calendar.formatDate; + + function render(date, delta) { + if (delta) { + addMonths(date, delta); + date.setDate(1); + } + + var firstDay = opt("firstDay"); + + var start = cloneDate(date, true); + start.setDate(1); + + var end = addMonths(cloneDate(start), 1); + + var visStart = cloneDate(start); + addDays(visStart, -((visStart.getDay() - firstDay + 7) % 7)); + skipHiddenDays(visStart); + + var visEnd = cloneDate(end); + addDays(visEnd, (7 - visEnd.getDay() + firstDay) % 7); + skipHiddenDays(visEnd, -1, true); + + var colCnt = getCellsPerWeek(); + var rowCnt = Math.round(dayDiff(visEnd, visStart) / 7); // should be no need for Math.round + + if (opt("weekMode") == "fixed") { + addDays(visEnd, (6 - rowCnt) * 7); // add weeks to make up for it + rowCnt = 6; + } + + t.title = formatDate(start, opt("titleFormat")); + + t.start = start; + t.end = end; + t.visStart = visStart; + t.visEnd = visEnd; + + renderBasic(rowCnt, colCnt, true); + } + } + + fcViews.basicWeek = BasicWeekView; + + function BasicWeekView(element, calendar) { + var t = this; + + // exports + t.render = render; + + // imports + BasicView.call(t, element, calendar, "basicWeek"); + var opt = t.opt; + var renderBasic = t.renderBasic; + var skipHiddenDays = t.skipHiddenDays; + var getCellsPerWeek = t.getCellsPerWeek; + var formatDates = calendar.formatDates; + + function render(date, delta) { + if (delta) { + addDays(date, delta * 7); + } + + var start = addDays( + cloneDate(date), + -((date.getDay() - opt("firstDay") + 7) % 7) + ); + var end = addDays(cloneDate(start), 7); + + var visStart = cloneDate(start); + skipHiddenDays(visStart); + + var visEnd = cloneDate(end); + skipHiddenDays(visEnd, -1, true); + + var colCnt = getCellsPerWeek(); + + t.start = start; + t.end = end; + t.visStart = visStart; + t.visEnd = visEnd; + + t.title = formatDates( + visStart, + addDays(cloneDate(visEnd), -1), + opt("titleFormat") + ); + + renderBasic(1, colCnt, false); + } + } + + fcViews.basicDay = BasicDayView; + + function BasicDayView(element, calendar) { + var t = this; + + // exports + t.render = render; + + // imports + BasicView.call(t, element, calendar, "basicDay"); + var opt = t.opt; + var renderBasic = t.renderBasic; + var skipHiddenDays = t.skipHiddenDays; + var formatDate = calendar.formatDate; + + function render(date, delta) { + if (delta) { + addDays(date, delta); + } + skipHiddenDays(date, delta < 0 ? -1 : 1); + + var start = cloneDate(date, true); + var end = addDays(cloneDate(start), 1); + + t.title = formatDate(date, opt("titleFormat")); + + t.start = t.visStart = start; + t.end = t.visEnd = end; + + renderBasic(1, 1, false); + } + } + + setDefaults({ + weekMode: "fixed", + }); + + function BasicView(element, calendar, viewName) { + var t = this; + + // exports + t.renderBasic = renderBasic; + t.setHeight = setHeight; + t.setWidth = setWidth; + t.renderDayOverlay = renderDayOverlay; + t.defaultSelectionEnd = defaultSelectionEnd; + t.renderSelection = renderSelection; + t.clearSelection = clearSelection; + t.reportDayClick = reportDayClick; // for selection (kinda hacky) + t.dragStart = dragStart; + t.dragStop = dragStop; + t.defaultEventEnd = defaultEventEnd; + t.getHoverListener = function () { + return hoverListener; + }; + t.colLeft = colLeft; + t.colRight = colRight; + t.colContentLeft = colContentLeft; + t.colContentRight = colContentRight; + t.getIsCellAllDay = function () { + return true; + }; + t.allDayRow = allDayRow; + t.getRowCnt = function () { + return rowCnt; + }; + t.getColCnt = function () { + return colCnt; + }; + t.getColWidth = function () { + return colWidth; + }; + t.getDaySegmentContainer = function () { + return daySegmentContainer; + }; + + // imports + View.call(t, element, calendar, viewName); + OverlayManager.call(t); + SelectionManager.call(t); + BasicEventRenderer.call(t); + var opt = t.opt; + var trigger = t.trigger; + var renderOverlay = t.renderOverlay; + var clearOverlays = t.clearOverlays; + var daySelectionMousedown = t.daySelectionMousedown; + var cellToDate = t.cellToDate; + var dateToCell = t.dateToCell; + var rangeToSegments = t.rangeToSegments; + var formatDate = calendar.formatDate; + + // locals + + var table; + var head; + var headCells; + var body; + var bodyRows; + var bodyCells; + var bodyFirstCells; + var firstRowCellInners; + var firstRowCellContentInners; + var daySegmentContainer; + + var viewWidth; + var viewHeight; + var colWidth; + var weekNumberWidth; + + var rowCnt, colCnt; + var showNumbers; + var coordinateGrid; + var hoverListener; + var colPositions; + var colContentPositions; + + var tm; + var colFormat; + var showWeekNumbers; + var weekNumberTitle; + var weekNumberFormat; + + /* Rendering + ------------------------------------------------------------*/ + + disableTextSelection(element.addClass("fc-grid")); + + function renderBasic(_rowCnt, _colCnt, _showNumbers) { + rowCnt = _rowCnt; + colCnt = _colCnt; + showNumbers = _showNumbers; + updateOptions(); + + if (!body) { + buildEventContainer(); + } + + buildTable(); + } + + function updateOptions() { + tm = opt("theme") ? "ui" : "fc"; + colFormat = opt("columnFormat"); + + // week # options. (TODO: bad, logic also in other views) + showWeekNumbers = opt("weekNumbers"); + weekNumberTitle = opt("weekNumberTitle"); + if (opt("weekNumberCalculation") != "iso") { + weekNumberFormat = "w"; + } else { + weekNumberFormat = "W"; + } + } + + function buildEventContainer() { + daySegmentContainer = $( + "
" + ).appendTo(element); + } + + function buildTable() { + var html = buildTableHTML(); + + if (table) { + table.remove(); + } + table = $(html).appendTo(element); + + head = table.find("thead"); + headCells = head.find(".fc-day-header"); + body = table.find("tbody"); + bodyRows = body.find("tr"); + bodyCells = body.find(".fc-day"); + bodyFirstCells = bodyRows.find("td:first-child"); + + firstRowCellInners = bodyRows.eq(0).find(".fc-day > div"); + firstRowCellContentInners = bodyRows + .eq(0) + .find(".fc-day-content > div"); + + markFirstLast(head.add(head.find("tr"))); // marks first+last tr/th's + markFirstLast(bodyRows); // marks first+last td's + bodyRows.eq(0).addClass("fc-first"); + bodyRows.filter(":last").addClass("fc-last"); + + bodyCells.each(function (i, _cell) { + var date = cellToDate(Math.floor(i / colCnt), i % colCnt); + trigger("dayRender", t, date, $(_cell)); + }); + + dayBind(bodyCells); + } + + /* HTML Building + -----------------------------------------------------------*/ + + function buildTableHTML() { + var html = + "" + + buildHeadHTML() + + buildBodyHTML() + + "
"; + + return html; + } + + function buildHeadHTML() { + var headerClass = tm + "-widget-header"; + var html = ""; + var col; + var date; + + html += "
" + + htmlEscape(weekNumberTitle) + + "" + + htmlEscape(formatDate(date, colFormat)) + + "
" + + "
" + + htmlEscape(formatDate(date, weekNumberFormat)) + + "
" + + "
" + + "" + + "" + + "" + + "" + + "" + + "
" + + opt("allDayText") + + "" + + "
" + + "
 
"; + allDayTable = $(s).appendTo(slotLayer); + allDayRow = allDayTable.find("tr"); + + dayBind(allDayRow.find("td")); + + slotLayer.append( + "
" + + "
" + + "
" + ); + } else { + daySegmentContainer = $([]); // in jQuery 1.4, we can just do $() + } + + slotScroller = $( + "
" + ).appendTo(slotLayer); + + slotContainer = $( + "
" + ).appendTo(slotScroller); + + slotSegmentContainer = $( + "
" + ).appendTo(slotContainer); + + s = + "" + + ""; + d = zeroDate(); + maxd = addMinutes(cloneDate(d), maxMinute); + addMinutes(d, minMinute); + slotCnt = 0; + for (i = 0; d < maxd; i++) { + minutes = d.getMinutes(); + s += + "" + + "" + + "" + + ""; + addMinutes(d, opt("slotMinutes")); + slotCnt++; + } + s += "" + "
" + + (!slotNormal || !minutes + ? formatDate(d, opt("axisFormat")) + : " ") + + "" + + "
 
" + + "
"; + slotTable = $(s).appendTo(slotContainer); + + slotBind(slotTable.find("td")); + } + + /* Build Day Table + -----------------------------------------------------------------------*/ + + function buildDayTable() { + var html = buildDayTableHTML(); + + if (dayTable) { + dayTable.remove(); + } + dayTable = $(html).appendTo(element); + + dayHead = dayTable.find("thead"); + dayHeadCells = dayHead.find("th").slice(1, -1); // exclude gutter + dayBody = dayTable.find("tbody"); + dayBodyCells = dayBody.find("td").slice(0, -1); // exclude gutter + dayBodyCellInners = dayBodyCells.find("> div"); + dayBodyCellContentInners = dayBodyCells.find( + ".fc-day-content > div" + ); + + dayBodyFirstCell = dayBodyCells.eq(0); + dayBodyFirstCellStretcher = dayBodyCellInners.eq(0); + + markFirstLast(dayHead.add(dayHead.find("tr"))); + markFirstLast(dayBody.add(dayBody.find("tr"))); + + // TODO: now that we rebuild the cells every time, we should call dayRender + } + + function buildDayTableHTML() { + var html = + "" + + buildDayTableHeadHTML() + + buildDayTableBodyHTML() + + "
"; + + return html; + } + + function buildDayTableHeadHTML() { + var headerClass = tm + "-widget-header"; + var date; + var html = ""; + var weekText; + var col; + + html += "" + ""; + + if (showWeekNumbers) { + date = cellToDate(0, 0); + weekText = formatDate(date, weekNumberFormat); + if (rtl) { + weekText += weekNumberTitle; + } else { + weekText = weekNumberTitle + weekText; + } + html += + "" + + htmlEscape(weekText) + + ""; + } else { + html += + " "; + } + + for (col = 0; col < colCnt; col++) { + date = cellToDate(0, col); + html += + "" + + htmlEscape(formatDate(date, colFormat)) + + ""; + } + + html += + " " + + "" + + ""; + + return html; + } + + function buildDayTableBodyHTML() { + var headerClass = tm + "-widget-header"; // TODO: make these when updateOptions() called + var contentClass = tm + "-widget-content"; + var date; + var today = clearTime(new Date()); + var col; + var cellsHTML; + var cellHTML; + var classNames; + var html = ""; + + html += + "" + + "" + + " "; + + cellsHTML = ""; + + for (col = 0; col < colCnt; col++) { + date = cellToDate(0, col); + + classNames = [ + "fc-col" + col, + "fc-" + dayIDs[date.getDay()], + contentClass, + ]; + if (+date == +today) { + classNames.push(tm + "-state-highlight", "fc-today"); + } else if (date < today) { + classNames.push("fc-past"); + } else { + classNames.push("fc-future"); + } + + cellHTML = + "" + + "
" + + "
" + + "
 
" + + "
" + + "
" + + ""; + + cellsHTML += cellHTML; + } + + html += cellsHTML; + html += + " " + + "" + + ""; + + return html; + } + + // TODO: data-date on the cells + + /* Dimensions + -----------------------------------------------------------------------*/ + + function setHeight(height) { + if (height === undefined) { + height = viewHeight; + } + viewHeight = height; + slotTopCache = {}; + + var headHeight = dayBody.position().top; + var allDayHeight = slotScroller.position().top; // including divider + var bodyHeight = Math.min( + // total body height, including borders + height - headHeight, // when scrollbars + slotTable.height() + allDayHeight + 1 // when no scrollbars. +1 for bottom border + ); + + dayBodyFirstCellStretcher.height( + bodyHeight - vsides(dayBodyFirstCell) + ); + + slotLayer.css("top", headHeight); + + slotScroller.height(bodyHeight - allDayHeight - 1); + + // the stylesheet guarantees that the first row has no border. + // this allows .height() to work well cross-browser. + slotHeight = slotTable.find("tr:first").height() + 1; // +1 for bottom border + + snapRatio = opt("slotMinutes") / snapMinutes; + snapHeight = slotHeight / snapRatio; + } + + function setWidth(width) { + viewWidth = width; + colPositions.clear(); + colContentPositions.clear(); + + var axisFirstCells = dayHead.find("th:first"); + if (allDayTable) { + axisFirstCells = axisFirstCells.add( + allDayTable.find("th:first") + ); + } + axisFirstCells = axisFirstCells.add(slotTable.find("th:first")); + + axisWidth = 0; + setOuterWidth( + axisFirstCells.width("").each(function (i, _cell) { + axisWidth = Math.max(axisWidth, $(_cell).outerWidth()); + }), + axisWidth + ); + + var gutterCells = dayTable.find(".fc-agenda-gutter"); + if (allDayTable) { + gutterCells = gutterCells.add( + allDayTable.find("th.fc-agenda-gutter") + ); + } + + var slotTableWidth = slotScroller[0].clientWidth; // needs to be done after axisWidth (for IE7) + + gutterWidth = slotScroller.width() - slotTableWidth; + if (gutterWidth) { + setOuterWidth(gutterCells, gutterWidth); + gutterCells.show().prev().removeClass("fc-last"); + } else { + gutterCells.hide().prev().addClass("fc-last"); + } + + colWidth = Math.floor((slotTableWidth - axisWidth) / colCnt); + setOuterWidth(dayHeadCells.slice(0, -1), colWidth); + } + + /* Scrolling + -----------------------------------------------------------------------*/ + + function resetScroll() { + var d0 = zeroDate(); + var scrollDate = cloneDate(d0); + scrollDate.setHours(opt("firstHour")); + var top = timePosition(d0, scrollDate) + 1; // +1 for the border + function scroll() { + slotScroller.scrollTop(top); + } + scroll(); + setTimeout(scroll, 0); // overrides any previous scroll state made by the browser + } + + function afterRender() { + // after the view has been freshly rendered and sized + resetScroll(); + } + + /* Slot/Day clicking and binding + -----------------------------------------------------------------------*/ + + function dayBind(cells) { + cells.click(slotClick).mousedown(daySelectionMousedown); + } + + function slotBind(cells) { + cells.click(slotClick).mousedown(slotSelectionMousedown); + } + + function slotClick(ev) { + if (!opt("selectable")) { + // if selectable, SelectionManager will worry about dayClick + var col = Math.min( + colCnt - 1, + Math.floor( + (ev.pageX - dayTable.offset().left - axisWidth) / + colWidth + ) + ); + var date = cellToDate(0, col); + var rowMatch = this.parentNode.className.match(/fc-slot(\d+)/); // TODO: maybe use data + if (rowMatch) { + var mins = parseInt(rowMatch[1]) * opt("slotMinutes"); + var hours = Math.floor(mins / 60); + date.setHours(hours); + date.setMinutes((mins % 60) + minMinute); + trigger("dayClick", dayBodyCells[col], date, false, ev); + } else { + trigger("dayClick", dayBodyCells[col], date, true, ev); + } + } + } + + /* Semi-transparent Overlay Helpers + -----------------------------------------------------*/ + // TODO: should be consolidated with BasicView's methods + + function renderDayOverlay( + overlayStart, + overlayEnd, + refreshCoordinateGrid + ) { + // overlayEnd is exclusive + + if (refreshCoordinateGrid) { + coordinateGrid.build(); + } + + var segments = rangeToSegments(overlayStart, overlayEnd); + + for (var i = 0; i < segments.length; i++) { + var segment = segments[i]; + dayBind( + renderCellOverlay( + segment.row, + segment.leftCol, + segment.row, + segment.rightCol + ) + ); + } + } + + function renderCellOverlay(row0, col0, row1, col1) { + // only for all-day? + var rect = coordinateGrid.rect(row0, col0, row1, col1, slotLayer); + return renderOverlay(rect, slotLayer); + } + + function renderSlotOverlay(overlayStart, overlayEnd) { + for (var i = 0; i < colCnt; i++) { + var dayStart = cellToDate(0, i); + var dayEnd = addDays(cloneDate(dayStart), 1); + var stretchStart = new Date(Math.max(dayStart, overlayStart)); + var stretchEnd = new Date(Math.min(dayEnd, overlayEnd)); + if (stretchStart < stretchEnd) { + var rect = coordinateGrid.rect(0, i, 0, i, slotContainer); // only use it for horizontal coords + var top = timePosition(dayStart, stretchStart); + var bottom = timePosition(dayStart, stretchEnd); + rect.top = top; + rect.height = bottom - top; + slotBind(renderOverlay(rect, slotContainer)); + } + } + } + + /* Coordinate Utilities + -----------------------------------------------------------------------------*/ + + coordinateGrid = new CoordinateGrid(function (rows, cols) { + var e, n, p; + dayHeadCells.each(function (i, _e) { + e = $(_e); + n = e.offset().left; + if (i) { + p[1] = n; + } + p = [n]; + cols[i] = p; + }); + p[1] = n + e.outerWidth(); + if (opt("allDaySlot")) { + e = allDayRow; + n = e.offset().top; + rows[0] = [n, n + e.outerHeight()]; + } + var slotTableTop = slotContainer.offset().top; + var slotScrollerTop = slotScroller.offset().top; + var slotScrollerBottom = + slotScrollerTop + slotScroller.outerHeight(); + function constrain(n) { + return Math.max( + slotScrollerTop, + Math.min(slotScrollerBottom, n) + ); + } + for (var i = 0; i < slotCnt * snapRatio; i++) { + // adapt slot count to increased/decreased selection slot count + rows.push([ + constrain(slotTableTop + snapHeight * i), + constrain(slotTableTop + snapHeight * (i + 1)), + ]); + } + }); + + hoverListener = new HoverListener(coordinateGrid); + + colPositions = new HorizontalPositionCache(function (col) { + return dayBodyCellInners.eq(col); + }); + + colContentPositions = new HorizontalPositionCache(function (col) { + return dayBodyCellContentInners.eq(col); + }); + + function colLeft(col) { + return colPositions.left(col); + } + + function colContentLeft(col) { + return colContentPositions.left(col); + } + + function colRight(col) { + return colPositions.right(col); + } + + function colContentRight(col) { + return colContentPositions.right(col); + } + + function getIsCellAllDay(cell) { + return opt("allDaySlot") && !cell.row; + } + + function realCellToDate(cell) { + // ugh "real" ... but blame it on our abuse of the "cell" system + var d = cellToDate(0, cell.col); + var slotIndex = cell.row; + if (opt("allDaySlot")) { + slotIndex--; + } + if (slotIndex >= 0) { + addMinutes(d, minMinute + slotIndex * snapMinutes); + } + return d; + } + + // get the Y coordinate of the given time on the given day (both Date objects) + function timePosition(day, time) { + // both date objects. day holds 00:00 of current day + day = cloneDate(day, true); + if (time < addMinutes(cloneDate(day), minMinute)) { + return 0; + } + if (time >= addMinutes(cloneDate(day), maxMinute)) { + return slotTable.height(); + } + var slotMinutes = opt("slotMinutes"), + minutes = time.getHours() * 60 + time.getMinutes() - minMinute, + slotI = Math.floor(minutes / slotMinutes), + slotTop = slotTopCache[slotI]; + if (slotTop === undefined) { + slotTop = slotTopCache[slotI] = slotTable + .find("tr") + .eq(slotI) + .find("td div")[0].offsetTop; + // .eq() is faster than ":eq()" selector + // [0].offsetTop is faster than .position().top (do we really need this optimization?) + // a better optimization would be to cache all these divs + } + return Math.max( + 0, + Math.round( + slotTop - + 1 + + slotHeight * ((minutes % slotMinutes) / slotMinutes) + ) + ); + } + + function getAllDayRow(index) { + return allDayRow; + } + + function defaultEventEnd(event) { + var start = cloneDate(event.start); + if (event.allDay) { + return start; + } + return addMinutes(start, opt("defaultEventMinutes")); + } + + /* Selection + ---------------------------------------------------------------------------------*/ + + function defaultSelectionEnd(startDate, allDay) { + if (allDay) { + return cloneDate(startDate); + } + return addMinutes(cloneDate(startDate), opt("slotMinutes")); + } + + function renderSelection(startDate, endDate, allDay) { + // only for all-day + if (allDay) { + if (opt("allDaySlot")) { + renderDayOverlay( + startDate, + addDays(cloneDate(endDate), 1), + true + ); + } + } else { + renderSlotSelection(startDate, endDate); + } + } + + function renderSlotSelection(startDate, endDate) { + var helperOption = opt("selectHelper"); + coordinateGrid.build(); + if (helperOption) { + var col = dateToCell(startDate).col; + if (col >= 0 && col < colCnt) { + // only works when times are on same day + var rect = coordinateGrid.rect( + 0, + col, + 0, + col, + slotContainer + ); // only for horizontal coords + var top = timePosition(startDate, startDate); + var bottom = timePosition(startDate, endDate); + if (bottom > top) { + // protect against selections that are entirely before or after visible range + rect.top = top; + rect.height = bottom - top; + rect.left += 2; + rect.width -= 5; + if ($.isFunction(helperOption)) { + var helperRes = helperOption(startDate, endDate); + if (helperRes) { + rect.position = "absolute"; + selectionHelper = $(helperRes) + .css(rect) + .appendTo(slotContainer); + } + } else { + rect.isStart = true; // conside rect a "seg" now + rect.isEnd = true; // + selectionHelper = $( + slotSegHtml( + { + title: "", + start: startDate, + end: endDate, + className: ["fc-select-helper"], + editable: false, + }, + rect + ) + ); + selectionHelper.css("opacity", opt("dragOpacity")); + } + if (selectionHelper) { + slotBind(selectionHelper); + slotContainer.append(selectionHelper); + setOuterWidth(selectionHelper, rect.width, true); // needs to be after appended + setOuterHeight(selectionHelper, rect.height, true); + } + } + } + } else { + renderSlotOverlay(startDate, endDate); + } + } + + function clearSelection() { + clearOverlays(); + if (selectionHelper) { + selectionHelper.remove(); + selectionHelper = null; + } + } + + function slotSelectionMousedown(ev) { + if (ev.which == 1 && opt("selectable")) { + // ev.which==1 means left mouse button + unselect(ev); + var dates; + hoverListener.start(function (cell, origCell) { + clearSelection(); + if ( + cell && + cell.col == origCell.col && + !getIsCellAllDay(cell) + ) { + var d1 = realCellToDate(origCell); + var d2 = realCellToDate(cell); + dates = [ + d1, + addMinutes(cloneDate(d1), snapMinutes), // calculate minutes depending on selection slot minutes + d2, + addMinutes(cloneDate(d2), snapMinutes), + ].sort(dateCompare); + renderSlotSelection(dates[0], dates[3]); + } else { + dates = null; + } + }, ev); + $(document).one("mouseup", function (ev) { + hoverListener.stop(); + if (dates) { + if (+dates[0] == +dates[1]) { + reportDayClick(dates[0], false, ev); + } + reportSelection(dates[0], dates[3], false, ev); + } + }); + } + } + + function reportDayClick(date, allDay, ev) { + trigger( + "dayClick", + dayBodyCells[dateToCell(date).col], + date, + allDay, + ev + ); + } + + /* External Dragging + --------------------------------------------------------------------------------*/ + + function dragStart(_dragElement, ev, ui) { + hoverListener.start(function (cell) { + clearOverlays(); + if (cell) { + if (getIsCellAllDay(cell)) { + renderCellOverlay( + cell.row, + cell.col, + cell.row, + cell.col + ); + } else { + var d1 = realCellToDate(cell); + var d2 = addMinutes( + cloneDate(d1), + opt("defaultEventMinutes") + ); + renderSlotOverlay(d1, d2); + } + } + }, ev); + } + + function dragStop(_dragElement, ev, ui) { + var cell = hoverListener.stop(); + clearOverlays(); + if (cell) { + trigger( + "drop", + _dragElement, + realCellToDate(cell), + getIsCellAllDay(cell), + ev, + ui + ); + } + } + } + + function AgendaEventRenderer() { + var t = this; + + // exports + t.renderEvents = renderEvents; + t.clearEvents = clearEvents; + t.slotSegHtml = slotSegHtml; + + // imports + DayEventRenderer.call(t); + var opt = t.opt; + var trigger = t.trigger; + var isEventDraggable = t.isEventDraggable; + var isEventResizable = t.isEventResizable; + var eventEnd = t.eventEnd; + var eventElementHandlers = t.eventElementHandlers; + var setHeight = t.setHeight; + var getDaySegmentContainer = t.getDaySegmentContainer; + var getSlotSegmentContainer = t.getSlotSegmentContainer; + var getHoverListener = t.getHoverListener; + var getMaxMinute = t.getMaxMinute; + var getMinMinute = t.getMinMinute; + var timePosition = t.timePosition; + var getIsCellAllDay = t.getIsCellAllDay; + var colContentLeft = t.colContentLeft; + var colContentRight = t.colContentRight; + var cellToDate = t.cellToDate; + var getColCnt = t.getColCnt; + var getColWidth = t.getColWidth; + var getSnapHeight = t.getSnapHeight; + var getSnapMinutes = t.getSnapMinutes; + var getSlotContainer = t.getSlotContainer; + var reportEventElement = t.reportEventElement; + var showEvents = t.showEvents; + var hideEvents = t.hideEvents; + var eventDrop = t.eventDrop; + var eventResize = t.eventResize; + var renderDayOverlay = t.renderDayOverlay; + var clearOverlays = t.clearOverlays; + var renderDayEvents = t.renderDayEvents; + var calendar = t.calendar; + var formatDate = calendar.formatDate; + var formatDates = calendar.formatDates; + + // overrides + t.draggableDayEvent = draggableDayEvent; + + /* Rendering + ----------------------------------------------------------------------------*/ + + function renderEvents(events, modifiedEventId) { + var i, + len = events.length, + dayEvents = [], + slotEvents = []; + for (i = 0; i < len; i++) { + if (events[i].allDay) { + dayEvents.push(events[i]); + } else { + slotEvents.push(events[i]); + } + } + + if (opt("allDaySlot")) { + renderDayEvents(dayEvents, modifiedEventId); + setHeight(); // no params means set to viewHeight + } + + renderSlotSegs(compileSlotSegs(slotEvents), modifiedEventId); + } + + function clearEvents() { + getDaySegmentContainer().empty(); + getSlotSegmentContainer().empty(); + } + + function compileSlotSegs(events) { + var colCnt = getColCnt(), + minMinute = getMinMinute(), + maxMinute = getMaxMinute(), + d, + visEventEnds = $.map(events, slotEventEnd), + i, + j, + seg, + colSegs, + segs = []; + + for (i = 0; i < colCnt; i++) { + d = cellToDate(0, i); + addMinutes(d, minMinute); + + colSegs = sliceSegs( + events, + visEventEnds, + d, + addMinutes(cloneDate(d), maxMinute - minMinute) + ); + + colSegs = placeSlotSegs(colSegs); // returns a new order + + for (j = 0; j < colSegs.length; j++) { + seg = colSegs[j]; + seg.col = i; + segs.push(seg); + } + } + + return segs; + } + + function sliceSegs(events, visEventEnds, start, end) { + var segs = [], + i, + len = events.length, + event, + eventStart, + eventEnd, + segStart, + segEnd, + isStart, + isEnd; + for (i = 0; i < len; i++) { + event = events[i]; + eventStart = event.start; + eventEnd = visEventEnds[i]; + if (eventEnd > start && eventStart < end) { + if (eventStart < start) { + segStart = cloneDate(start); + isStart = false; + } else { + segStart = eventStart; + isStart = true; + } + if (eventEnd > end) { + segEnd = cloneDate(end); + isEnd = false; + } else { + segEnd = eventEnd; + isEnd = true; + } + segs.push({ + event: event, + start: segStart, + end: segEnd, + isStart: isStart, + isEnd: isEnd, + }); + } + } + return segs.sort(compareSlotSegs); + } + + function slotEventEnd(event) { + if (event.end) { + return cloneDate(event.end); + } else { + return addMinutes( + cloneDate(event.start), + opt("defaultEventMinutes") + ); + } + } + + // renders events in the 'time slots' at the bottom + // TODO: when we refactor this, when user returns `false` eventRender, don't have empty space + // TODO: refactor will include using pixels to detect collisions instead of dates (handy for seg cmp) + + function renderSlotSegs(segs, modifiedEventId) { + var i, + segCnt = segs.length, + seg, + event, + top, + bottom, + columnLeft, + columnRight, + columnWidth, + width, + left, + right, + html = "", + eventElements, + eventElement, + triggerRes, + titleElement, + height, + slotSegmentContainer = getSlotSegmentContainer(), + isRTL = opt("isRTL"); + + // calculate position/dimensions, create html + for (i = 0; i < segCnt; i++) { + seg = segs[i]; + event = seg.event; + top = timePosition(seg.start, seg.start); + bottom = timePosition(seg.start, seg.end); + columnLeft = colContentLeft(seg.col); + columnRight = colContentRight(seg.col); + columnWidth = columnRight - columnLeft; + + // shave off space on right near scrollbars (2.5%) + // TODO: move this to CSS somehow + columnRight -= columnWidth * 0.025; + columnWidth = columnRight - columnLeft; + + width = columnWidth * (seg.forwardCoord - seg.backwardCoord); + + if (opt("slotEventOverlap")) { + // double the width while making sure resize handle is visible + // (assumed to be 20px wide) + width = Math.max( + (width - 20 / 2) * 2, + width // narrow columns will want to make the segment smaller than + // the natural width. don't allow it + ); + } + + if (isRTL) { + right = columnRight - seg.backwardCoord * columnWidth; + left = right - width; + } else { + left = columnLeft + seg.backwardCoord * columnWidth; + right = left + width; + } + + // make sure horizontal coordinates are in bounds + left = Math.max(left, columnLeft); + right = Math.min(right, columnRight); + width = right - left; + + seg.top = top; + seg.left = left; + seg.outerWidth = width; + seg.outerHeight = bottom - top; + html += slotSegHtml(event, seg); + } + + slotSegmentContainer[0].innerHTML = html; // faster than html() + eventElements = slotSegmentContainer.children(); + + // retrieve elements, run through eventRender callback, bind event handlers + for (i = 0; i < segCnt; i++) { + seg = segs[i]; + event = seg.event; + eventElement = $(eventElements[i]); // faster than eq() + triggerRes = trigger("eventRender", event, event, eventElement); + if (triggerRes === false) { + eventElement.remove(); + } else { + if (triggerRes && triggerRes !== true) { + eventElement.remove(); + eventElement = $(triggerRes) + .css({ + position: "absolute", + top: seg.top, + left: seg.left, + }) + .appendTo(slotSegmentContainer); + } + seg.element = eventElement; + if (event._id === modifiedEventId) { + bindSlotSeg(event, eventElement, seg); + } else { + eventElement[0]._fci = i; // for lazySegBind + } + reportEventElement(event, eventElement); + } + } + + lazySegBind(slotSegmentContainer, segs, bindSlotSeg); + + // record event sides and title positions + for (i = 0; i < segCnt; i++) { + seg = segs[i]; + if ((eventElement = seg.element)) { + seg.vsides = vsides(eventElement, true); + seg.hsides = hsides(eventElement, true); + titleElement = eventElement.find(".fc-event-title"); + if (titleElement.length) { + seg.contentTop = titleElement[0].offsetTop; + } + } + } + + // set all positions/dimensions at once + for (i = 0; i < segCnt; i++) { + seg = segs[i]; + if ((eventElement = seg.element)) { + eventElement[0].style.width = + Math.max(0, seg.outerWidth - seg.hsides) + "px"; + height = Math.max(0, seg.outerHeight - seg.vsides); + eventElement[0].style.height = height + "px"; + event = seg.event; + if ( + seg.contentTop !== undefined && + height - seg.contentTop < 10 + ) { + // not enough room for title, put it in the time (TODO: maybe make both display:inline instead) + eventElement + .find("div.fc-event-time") + .text( + formatDate(event.start, opt("timeFormat")) + + " - " + + event.title + ); + eventElement.find("div.fc-event-title").remove(); + } + trigger("eventAfterRender", event, event, eventElement); + } + } + } + + function slotSegHtml(event, seg) { + var html = "<"; + var url = event.url; + var skinCss = getSkinCss(event, opt); + var classes = ["fc-event", "fc-event-vert"]; + if (isEventDraggable(event)) { + classes.push("fc-event-draggable"); + } + if (seg.isStart) { + classes.push("fc-event-start"); + } + if (seg.isEnd) { + classes.push("fc-event-end"); + } + classes = classes.concat(event.className); + if (event.source) { + classes = classes.concat(event.source.className || []); + } + if (url) { + html += "a href='" + htmlEscape(event.url) + "'"; + } else { + html += "div"; + } + html += + " class='" + + classes.join(" ") + + "'" + + " style=" + + "'" + + "position:absolute;" + + "top:" + + seg.top + + "px;" + + "left:" + + seg.left + + "px;" + + skinCss + + "'" + + ">" + + "
" + + "
" + + htmlEscape( + formatDates(event.start, event.end, opt("timeFormat")) + ) + + "
" + + "
" + + htmlEscape(event.title || "") + + "
" + + "
" + + "
"; + if (seg.isEnd && isEventResizable(event)) { + html += + "
=
"; + } + html += ""; + return html; + } + + function bindSlotSeg(event, eventElement, seg) { + var timeElement = eventElement.find("div.fc-event-time"); + if (isEventDraggable(event)) { + draggableSlotEvent(event, eventElement, timeElement); + } + if (seg.isEnd && isEventResizable(event)) { + resizableSlotEvent(event, eventElement, timeElement); + } + eventElementHandlers(event, eventElement); + } + + /* Dragging + -----------------------------------------------------------------------------------*/ + + // when event starts out FULL-DAY + // overrides DayEventRenderer's version because it needs to account for dragging elements + // to and from the slot area. + + function draggableDayEvent(event, eventElement, seg) { + var isStart = seg.isStart; + var origWidth; + var revert; + var allDay = true; + var dayDelta; + var hoverListener = getHoverListener(); + var colWidth = getColWidth(); + var snapHeight = getSnapHeight(); + var snapMinutes = getSnapMinutes(); + var minMinute = getMinMinute(); + eventElement.draggable({ + opacity: opt("dragOpacity", "month"), // use whatever the month view was using + revertDuration: opt("dragRevertDuration"), + start: function (ev, ui) { + trigger("eventDragStart", eventElement, event, ev, ui); + hideEvents(event, eventElement); + origWidth = eventElement.width(); + hoverListener.start( + function (cell, origCell) { + clearOverlays(); + if (cell) { + revert = false; + var origDate = cellToDate(0, origCell.col); + var date = cellToDate(0, cell.col); + dayDelta = dayDiff(date, origDate); + if (!cell.row) { + // on full-days + renderDayOverlay( + addDays( + cloneDate(event.start), + dayDelta + ), + addDays(exclEndDay(event), dayDelta) + ); + resetElement(); + } else { + // mouse is over bottom slots + if (isStart) { + if (allDay) { + // convert event to temporary slot-event + eventElement.width(colWidth - 10); // don't use entire width + setOuterHeight( + eventElement, + snapHeight * + Math.round( + (event.end + ? (event.end - + event.start) / + MINUTE_MS + : opt( + "defaultEventMinutes" + )) / snapMinutes + ) + ); + eventElement.draggable( + "option", + "grid", + [colWidth, 1] + ); + allDay = false; + } + } else { + revert = true; + } + } + revert = revert || (allDay && !dayDelta); + } else { + resetElement(); + revert = true; + } + eventElement.draggable("option", "revert", revert); + }, + ev, + "drag" + ); + }, + stop: function (ev, ui) { + hoverListener.stop(); + clearOverlays(); + trigger("eventDragStop", eventElement, event, ev, ui); + if (revert) { + // hasn't moved or is out of bounds (draggable has already reverted) + resetElement(); + eventElement.css("filter", ""); // clear IE opacity side-effects + showEvents(event, eventElement); + } else { + // changed! + var minuteDelta = 0; + if (!allDay) { + minuteDelta = + Math.round( + (eventElement.offset().top - + getSlotContainer().offset().top) / + snapHeight + ) * + snapMinutes + + minMinute - + (event.start.getHours() * 60 + + event.start.getMinutes()); + } + eventDrop( + this, + event, + dayDelta, + minuteDelta, + allDay, + ev, + ui + ); + } + }, + }); + function resetElement() { + if (!allDay) { + eventElement + .width(origWidth) + .height("") + .draggable("option", "grid", null); + allDay = true; + } + } + } + + // when event starts out IN TIMESLOTS + + function draggableSlotEvent(event, eventElement, timeElement) { + var coordinateGrid = t.getCoordinateGrid(); + var colCnt = getColCnt(); + var colWidth = getColWidth(); + var snapHeight = getSnapHeight(); + var snapMinutes = getSnapMinutes(); + + // states + var origPosition; // original position of the element, not the mouse + var origCell; + var isInBounds, prevIsInBounds; + var isAllDay, prevIsAllDay; + var colDelta, prevColDelta; + var dayDelta; // derived from colDelta + var minuteDelta, prevMinuteDelta; + + eventElement.draggable({ + scroll: false, + grid: [colWidth, snapHeight], + axis: colCnt == 1 ? "y" : false, + opacity: opt("dragOpacity"), + revertDuration: opt("dragRevertDuration"), + start: function (ev, ui) { + trigger("eventDragStart", eventElement, event, ev, ui); + hideEvents(event, eventElement); + + coordinateGrid.build(); + + // initialize states + origPosition = eventElement.position(); + origCell = coordinateGrid.cell(ev.pageX, ev.pageY); + isInBounds = prevIsInBounds = true; + isAllDay = prevIsAllDay = getIsCellAllDay(origCell); + colDelta = prevColDelta = 0; + dayDelta = 0; + minuteDelta = prevMinuteDelta = 0; + }, + drag: function (ev, ui) { + // NOTE: this `cell` value is only useful for determining in-bounds and all-day. + // Bad for anything else due to the discrepancy between the mouse position and the + // element position while snapping. (problem revealed in PR #55) + // + // PS- the problem exists for draggableDayEvent() when dragging an all-day event to a slot event. + // We should overhaul the dragging system and stop relying on jQuery UI. + var cell = coordinateGrid.cell(ev.pageX, ev.pageY); + + // update states + isInBounds = !!cell; + if (isInBounds) { + isAllDay = getIsCellAllDay(cell); + + // calculate column delta + colDelta = Math.round( + (ui.position.left - origPosition.left) / colWidth + ); + if (colDelta != prevColDelta) { + // calculate the day delta based off of the original clicked column and the column delta + var origDate = cellToDate(0, origCell.col); + var col = origCell.col + colDelta; + col = Math.max(0, col); + col = Math.min(colCnt - 1, col); + var date = cellToDate(0, col); + dayDelta = dayDiff(date, origDate); + } + + // calculate minute delta (only if over slots) + if (!isAllDay) { + minuteDelta = + Math.round( + (ui.position.top - origPosition.top) / + snapHeight + ) * snapMinutes; + } + } + + // any state changes? + if ( + isInBounds != prevIsInBounds || + isAllDay != prevIsAllDay || + colDelta != prevColDelta || + minuteDelta != prevMinuteDelta + ) { + updateUI(); + + // update previous states for next time + prevIsInBounds = isInBounds; + prevIsAllDay = isAllDay; + prevColDelta = colDelta; + prevMinuteDelta = minuteDelta; + } + + // if out-of-bounds, revert when done, and vice versa. + eventElement.draggable("option", "revert", !isInBounds); + }, + stop: function (ev, ui) { + clearOverlays(); + trigger("eventDragStop", eventElement, event, ev, ui); + + if (isInBounds && (isAllDay || dayDelta || minuteDelta)) { + // changed! + eventDrop( + this, + event, + dayDelta, + isAllDay ? 0 : minuteDelta, + isAllDay, + ev, + ui + ); + } else { + // either no change or out-of-bounds (draggable has already reverted) + + // reset states for next time, and for updateUI() + isInBounds = true; + isAllDay = false; + colDelta = 0; + dayDelta = 0; + minuteDelta = 0; + + updateUI(); + eventElement.css("filter", ""); // clear IE opacity side-effects + + // sometimes fast drags make event revert to wrong position, so reset. + // also, if we dragged the element out of the area because of snapping, + // but the *mouse* is still in bounds, we need to reset the position. + eventElement.css(origPosition); + + showEvents(event, eventElement); + } + }, + }); + + function updateUI() { + clearOverlays(); + if (isInBounds) { + if (isAllDay) { + timeElement.hide(); + eventElement.draggable("option", "grid", null); // disable grid snapping + renderDayOverlay( + addDays(cloneDate(event.start), dayDelta), + addDays(exclEndDay(event), dayDelta) + ); + } else { + updateTimeText(minuteDelta); + timeElement.css("display", ""); // show() was causing display=inline + eventElement.draggable("option", "grid", [ + colWidth, + snapHeight, + ]); // re-enable grid snapping + } + } + } + + function updateTimeText(minuteDelta) { + var newStart = addMinutes(cloneDate(event.start), minuteDelta); + var newEnd; + if (event.end) { + newEnd = addMinutes(cloneDate(event.end), minuteDelta); + } + timeElement.text( + formatDates(newStart, newEnd, opt("timeFormat")) + ); + } + } + + /* Resizing + --------------------------------------------------------------------------------------*/ + + function resizableSlotEvent(event, eventElement, timeElement) { + var snapDelta, prevSnapDelta; + var snapHeight = getSnapHeight(); + var snapMinutes = getSnapMinutes(); + eventElement.resizable({ + handles: { + s: ".ui-resizable-handle", + }, + grid: snapHeight, + start: function (ev, ui) { + snapDelta = prevSnapDelta = 0; + hideEvents(event, eventElement); + trigger("eventResizeStart", this, event, ev, ui); + }, + resize: function (ev, ui) { + // don't rely on ui.size.height, doesn't take grid into account + snapDelta = Math.round( + (Math.max(snapHeight, eventElement.height()) - + ui.originalSize.height) / + snapHeight + ); + if (snapDelta != prevSnapDelta) { + timeElement.text( + formatDates( + event.start, + !snapDelta && !event.end + ? null // no change, so don't display time range + : addMinutes( + eventEnd(event), + snapMinutes * snapDelta + ), + opt("timeFormat") + ) + ); + prevSnapDelta = snapDelta; + } + }, + stop: function (ev, ui) { + trigger("eventResizeStop", this, event, ev, ui); + if (snapDelta) { + eventResize( + this, + event, + 0, + snapMinutes * snapDelta, + ev, + ui + ); + } else { + showEvents(event, eventElement); + // BUG: if event was really short, need to put title back in span + } + }, + }); + } + } + + /* Agenda Event Segment Utilities +-----------------------------------------------------------------------------*/ + + // Sets the seg.backwardCoord and seg.forwardCoord on each segment and returns a new + // list in the order they should be placed into the DOM (an implicit z-index). + function placeSlotSegs(segs) { + var levels = buildSlotSegLevels(segs); + var level0 = levels[0]; + var i; + + computeForwardSlotSegs(levels); + + if (level0) { + for (i = 0; i < level0.length; i++) { + computeSlotSegPressures(level0[i]); + } + + for (i = 0; i < level0.length; i++) { + computeSlotSegCoords(level0[i], 0, 0); + } + } + + return flattenSlotSegLevels(levels); + } + + // Builds an array of segments "levels". The first level will be the leftmost tier of segments + // if the calendar is left-to-right, or the rightmost if the calendar is right-to-left. + function buildSlotSegLevels(segs) { + var levels = []; + var i, seg; + var j; + + for (i = 0; i < segs.length; i++) { + seg = segs[i]; + + // go through all the levels and stop on the first level where there are no collisions + for (j = 0; j < levels.length; j++) { + if (!computeSlotSegCollisions(seg, levels[j]).length) { + break; + } + } + + (levels[j] || (levels[j] = [])).push(seg); + } + + return levels; + } + + // For every segment, figure out the other segments that are in subsequent + // levels that also occupy the same vertical space. Accumulate in seg.forwardSegs + function computeForwardSlotSegs(levels) { + var i, level; + var j, seg; + var k; + + for (i = 0; i < levels.length; i++) { + level = levels[i]; + + for (j = 0; j < level.length; j++) { + seg = level[j]; + + seg.forwardSegs = []; + for (k = i + 1; k < levels.length; k++) { + computeSlotSegCollisions(seg, levels[k], seg.forwardSegs); + } + } + } + } + + // Figure out which path forward (via seg.forwardSegs) results in the longest path until + // the furthest edge is reached. The number of segments in this path will be seg.forwardPressure + function computeSlotSegPressures(seg) { + var forwardSegs = seg.forwardSegs; + var forwardPressure = 0; + var i, forwardSeg; + + if (seg.forwardPressure === undefined) { + // not already computed + + for (i = 0; i < forwardSegs.length; i++) { + forwardSeg = forwardSegs[i]; + + // figure out the child's maximum forward path + computeSlotSegPressures(forwardSeg); + + // either use the existing maximum, or use the child's forward pressure + // plus one (for the forwardSeg itself) + forwardPressure = Math.max( + forwardPressure, + 1 + forwardSeg.forwardPressure + ); + } + + seg.forwardPressure = forwardPressure; + } + } + + // Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range + // from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to "left" and + // seg.forwardCoord maps to "right" (via percentage). Vice-versa if the calendar is right-to-left. + // + // The segment might be part of a "series", which means consecutive segments with the same pressure + // who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of + // segments behind this one in the current series, and `seriesBackwardCoord` is the starting + // coordinate of the first segment in the series. + function computeSlotSegCoords( + seg, + seriesBackwardPressure, + seriesBackwardCoord + ) { + var forwardSegs = seg.forwardSegs; + var i; + + if (seg.forwardCoord === undefined) { + // not already computed + + if (!forwardSegs.length) { + // if there are no forward segments, this segment should butt up against the edge + seg.forwardCoord = 1; + } else { + // sort highest pressure first + forwardSegs.sort(compareForwardSlotSegs); + + // this segment's forwardCoord will be calculated from the backwardCoord of the + // highest-pressure forward segment. + computeSlotSegCoords( + forwardSegs[0], + seriesBackwardPressure + 1, + seriesBackwardCoord + ); + seg.forwardCoord = forwardSegs[0].backwardCoord; + } + + // calculate the backwardCoord from the forwardCoord. consider the series + seg.backwardCoord = + seg.forwardCoord - + (seg.forwardCoord - seriesBackwardCoord) / // available width for series + (seriesBackwardPressure + 1); // # of segments in the series + + // use this segment's coordinates to computed the coordinates of the less-pressurized + // forward segments + for (i = 0; i < forwardSegs.length; i++) { + computeSlotSegCoords(forwardSegs[i], 0, seg.forwardCoord); + } + } + } + + // Outputs a flat array of segments, from lowest to highest level + function flattenSlotSegLevels(levels) { + var segs = []; + var i, level; + var j; + + for (i = 0; i < levels.length; i++) { + level = levels[i]; + + for (j = 0; j < level.length; j++) { + segs.push(level[j]); + } + } + + return segs; + } + + // Find all the segments in `otherSegs` that vertically collide with `seg`. + // Append into an optionally-supplied `results` array and return. + function computeSlotSegCollisions(seg, otherSegs, results) { + results = results || []; + + for (var i = 0; i < otherSegs.length; i++) { + if (isSlotSegCollision(seg, otherSegs[i])) { + results.push(otherSegs[i]); + } + } + + return results; + } + + // Do these segments occupy the same vertical space? + function isSlotSegCollision(seg1, seg2) { + return seg1.end > seg2.start && seg1.start < seg2.end; + } + + // A cmp function for determining which forward segment to rely on more when computing coordinates. + function compareForwardSlotSegs(seg1, seg2) { + // put higher-pressure first + return ( + seg2.forwardPressure - seg1.forwardPressure || + // put segments that are closer to initial edge first (and favor ones with no coords yet) + (seg1.backwardCoord || 0) - (seg2.backwardCoord || 0) || + // do normal sorting... + compareSlotSegs(seg1, seg2) + ); + } + + // A cmp function for determining which segment should be closer to the initial edge + // (the left edge on a left-to-right calendar). + function compareSlotSegs(seg1, seg2) { + return ( + seg1.start - seg2.start || // earlier start time goes first + seg2.end - seg2.start - (seg1.end - seg1.start) || // tie? longer-duration goes first + (seg1.event.title || "").localeCompare(seg2.event.title) + ); // tie? alphabetically by title + } + + function View(element, calendar, viewName) { + var t = this; + + // exports + t.element = element; + t.calendar = calendar; + t.name = viewName; + t.opt = opt; + t.trigger = trigger; + t.isEventDraggable = isEventDraggable; + t.isEventResizable = isEventResizable; + t.setEventData = setEventData; + t.clearEventData = clearEventData; + t.eventEnd = eventEnd; + t.reportEventElement = reportEventElement; + t.triggerEventDestroy = triggerEventDestroy; + t.eventElementHandlers = eventElementHandlers; + t.showEvents = showEvents; + t.hideEvents = hideEvents; + t.eventDrop = eventDrop; + t.eventResize = eventResize; + // t.title + // t.start, t.end + // t.visStart, t.visEnd + + // imports + var defaultEventEnd = t.defaultEventEnd; + var normalizeEvent = calendar.normalizeEvent; // in EventManager + var reportEventChange = calendar.reportEventChange; + + // locals + var eventsByID = {}; // eventID mapped to array of events (there can be multiple b/c of repeating events) + var eventElementsByID = {}; // eventID mapped to array of jQuery elements + var eventElementCouples = []; // array of objects, { event, element } // TODO: unify with segment system + var options = calendar.options; + + function opt(name, viewNameOverride) { + var v = options[name]; + if ($.isPlainObject(v)) { + return smartProperty(v, viewNameOverride || viewName); + } + return v; + } + + function trigger(name, thisObj) { + return calendar.trigger.apply( + calendar, + [name, thisObj || t].concat( + Array.prototype.slice.call(arguments, 2), + [t] + ) + ); + } + + /* Event Editable Boolean Calculations + ------------------------------------------------------------------------------*/ + + function isEventDraggable(event) { + var source = event.source || {}; + return ( + firstDefined( + event.startEditable, + source.startEditable, + opt("eventStartEditable"), + event.editable, + source.editable, + opt("editable") + ) && !opt("disableDragging") + ); // deprecated + } + + function isEventResizable(event) { + // but also need to make sure the seg.isEnd == true + var source = event.source || {}; + return ( + firstDefined( + event.durationEditable, + source.durationEditable, + opt("eventDurationEditable"), + event.editable, + source.editable, + opt("editable") + ) && !opt("disableResizing") + ); // deprecated + } + + /* Event Data + ------------------------------------------------------------------------------*/ + + function setEventData(events) { + // events are already normalized at this point + eventsByID = {}; + var i, + len = events.length, + event; + for (i = 0; i < len; i++) { + event = events[i]; + if (eventsByID[event._id]) { + eventsByID[event._id].push(event); + } else { + eventsByID[event._id] = [event]; + } + } + } + + function clearEventData() { + eventsByID = {}; + eventElementsByID = {}; + eventElementCouples = []; + } + + // returns a Date object for an event's end + function eventEnd(event) { + return event.end ? cloneDate(event.end) : defaultEventEnd(event); + } + + /* Event Elements + ------------------------------------------------------------------------------*/ + + // report when view creates an element for an event + function reportEventElement(event, element) { + eventElementCouples.push({ event: event, element: element }); + if (eventElementsByID[event._id]) { + eventElementsByID[event._id].push(element); + } else { + eventElementsByID[event._id] = [element]; + } + } + + function triggerEventDestroy() { + $.each(eventElementCouples, function (i, couple) { + t.trigger( + "eventDestroy", + couple.event, + couple.event, + couple.element + ); + }); + } + + // attaches eventClick, eventMouseover, eventMouseout + function eventElementHandlers(event, eventElement) { + eventElement + .click(function (ev) { + if ( + !eventElement.hasClass("ui-draggable-dragging") && + !eventElement.hasClass("ui-resizable-resizing") + ) { + return trigger("eventClick", this, event, ev); + } + }) + .hover( + function (ev) { + trigger("eventMouseover", this, event, ev); + }, + function (ev) { + trigger("eventMouseout", this, event, ev); + } + ); + // TODO: don't fire eventMouseover/eventMouseout *while* dragging is occuring (on subject element) + // TODO: same for resizing + } + + function showEvents(event, exceptElement) { + eachEventElement(event, exceptElement, "show"); + } + + function hideEvents(event, exceptElement) { + eachEventElement(event, exceptElement, "hide"); + } + + function eachEventElement(event, exceptElement, funcName) { + // NOTE: there may be multiple events per ID (repeating events) + // and multiple segments per event + var elements = eventElementsByID[event._id], + i, + len = elements.length; + for (i = 0; i < len; i++) { + if (!exceptElement || elements[i][0] != exceptElement[0]) { + elements[i][funcName](); + } + } + } + + /* Event Modification Reporting + ---------------------------------------------------------------------------------*/ + + function eventDrop(e, event, dayDelta, minuteDelta, allDay, ev, ui) { + var oldAllDay = event.allDay; + var eventId = event._id; + moveEvents(eventsByID[eventId], dayDelta, minuteDelta, allDay); + trigger( + "eventDrop", + e, + event, + dayDelta, + minuteDelta, + allDay, + function () { + // TODO: investigate cases where this inverse technique might not work + moveEvents( + eventsByID[eventId], + -dayDelta, + -minuteDelta, + oldAllDay + ); + reportEventChange(eventId); + }, + ev, + ui + ); + reportEventChange(eventId); + } + + function eventResize(e, event, dayDelta, minuteDelta, ev, ui) { + var eventId = event._id; + elongateEvents(eventsByID[eventId], dayDelta, minuteDelta); + trigger( + "eventResize", + e, + event, + dayDelta, + minuteDelta, + function () { + // TODO: investigate cases where this inverse technique might not work + elongateEvents( + eventsByID[eventId], + -dayDelta, + -minuteDelta + ); + reportEventChange(eventId); + }, + ev, + ui + ); + reportEventChange(eventId); + } + + /* Event Modification Math + ---------------------------------------------------------------------------------*/ + + function moveEvents(events, dayDelta, minuteDelta, allDay) { + minuteDelta = minuteDelta || 0; + for (var e, len = events.length, i = 0; i < len; i++) { + e = events[i]; + if (allDay !== undefined) { + e.allDay = allDay; + } + addMinutes(addDays(e.start, dayDelta, true), minuteDelta); + if (e.end) { + e.end = addMinutes( + addDays(e.end, dayDelta, true), + minuteDelta + ); + } + normalizeEvent(e, options); + } + } + + function elongateEvents(events, dayDelta, minuteDelta) { + minuteDelta = minuteDelta || 0; + for (var e, len = events.length, i = 0; i < len; i++) { + e = events[i]; + e.end = addMinutes( + addDays(eventEnd(e), dayDelta, true), + minuteDelta + ); + normalizeEvent(e, options); + } + } + + // ==================================================================================================== + // Utilities for day "cells" + // ==================================================================================================== + // The "basic" views are completely made up of day cells. + // The "agenda" views have day cells at the top "all day" slot. + // This was the obvious common place to put these utilities, but they should be abstracted out into + // a more meaningful class (like DayEventRenderer). + // ==================================================================================================== + + // For determining how a given "cell" translates into a "date": + // + // 1. Convert the "cell" (row and column) into a "cell offset" (the # of the cell, cronologically from the first). + // Keep in mind that column indices are inverted with isRTL. This is taken into account. + // + // 2. Convert the "cell offset" to a "day offset" (the # of days since the first visible day in the view). + // + // 3. Convert the "day offset" into a "date" (a JavaScript Date object). + // + // The reverse transformation happens when transforming a date into a cell. + + // exports + t.isHiddenDay = isHiddenDay; + t.skipHiddenDays = skipHiddenDays; + t.getCellsPerWeek = getCellsPerWeek; + t.dateToCell = dateToCell; + t.dateToDayOffset = dateToDayOffset; + t.dayOffsetToCellOffset = dayOffsetToCellOffset; + t.cellOffsetToCell = cellOffsetToCell; + t.cellToDate = cellToDate; + t.cellToCellOffset = cellToCellOffset; + t.cellOffsetToDayOffset = cellOffsetToDayOffset; + t.dayOffsetToDate = dayOffsetToDate; + t.rangeToSegments = rangeToSegments; + + // internals + var hiddenDays = opt("hiddenDays") || []; // array of day-of-week indices that are hidden + var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool) + var cellsPerWeek; + var dayToCellMap = []; // hash from dayIndex -> cellIndex, for one week + var cellToDayMap = []; // hash from cellIndex -> dayIndex, for one week + var isRTL = opt("isRTL"); + + // initialize important internal variables + (function () { + if (opt("weekends") === false) { + hiddenDays.push(0, 6); // 0=sunday, 6=saturday + } + + // Loop through a hypothetical week and determine which + // days-of-week are hidden. Record in both hashes (one is the reverse of the other). + for (var dayIndex = 0, cellIndex = 0; dayIndex < 7; dayIndex++) { + dayToCellMap[dayIndex] = cellIndex; + isHiddenDayHash[dayIndex] = + $.inArray(dayIndex, hiddenDays) != -1; + if (!isHiddenDayHash[dayIndex]) { + cellToDayMap[cellIndex] = dayIndex; + cellIndex++; + } + } + + cellsPerWeek = cellIndex; + if (!cellsPerWeek) { + throw "invalid hiddenDays"; // all days were hidden? bad. + } + })(); + + // Is the current day hidden? + // `day` is a day-of-week index (0-6), or a Date object + function isHiddenDay(day) { + if (typeof day == "object") { + day = day.getDay(); + } + return isHiddenDayHash[day]; + } + + function getCellsPerWeek() { + return cellsPerWeek; + } + + // Keep incrementing the current day until it is no longer a hidden day. + // If the initial value of `date` is not a hidden day, don't do anything. + // Pass `isExclusive` as `true` if you are dealing with an end date. + // `inc` defaults to `1` (increment one day forward each time) + function skipHiddenDays(date, inc, isExclusive) { + inc = inc || 1; + while ( + isHiddenDayHash[ + (date.getDay() + (isExclusive ? inc : 0) + 7) % 7 + ] + ) { + addDays(date, inc); + } + } + + // + // TRANSFORMATIONS: cell -> cell offset -> day offset -> date + // + + // cell -> date (combines all transformations) + // Possible arguments: + // - row, col + // - { row:#, col: # } + function cellToDate() { + var cellOffset = cellToCellOffset.apply(null, arguments); + var dayOffset = cellOffsetToDayOffset(cellOffset); + var date = dayOffsetToDate(dayOffset); + return date; + } + + // cell -> cell offset + // Possible arguments: + // - row, col + // - { row:#, col:# } + function cellToCellOffset(row, col) { + var colCnt = t.getColCnt(); + + // rtl variables. wish we could pre-populate these. but where? + var dis = isRTL ? -1 : 1; + var dit = isRTL ? colCnt - 1 : 0; + + if (typeof row == "object") { + col = row.col; + row = row.row; + } + var cellOffset = row * colCnt + (col * dis + dit); // column, adjusted for RTL (dis & dit) + + return cellOffset; + } + + // cell offset -> day offset + function cellOffsetToDayOffset(cellOffset) { + var day0 = t.visStart.getDay(); // first date's day of week + cellOffset += dayToCellMap[day0]; // normlize cellOffset to beginning-of-week + return ( + Math.floor(cellOffset / cellsPerWeek) * 7 + // # of days from full weeks + cellToDayMap[ // # of days from partial last week + ((cellOffset % cellsPerWeek) + cellsPerWeek) % cellsPerWeek // crazy math to handle negative cellOffsets + ] - + day0 + ); // adjustment for beginning-of-week normalization + } + + // day offset -> date (JavaScript Date object) + function dayOffsetToDate(dayOffset) { + var date = cloneDate(t.visStart); + addDays(date, dayOffset); + return date; + } + + // + // TRANSFORMATIONS: date -> day offset -> cell offset -> cell + // + + // date -> cell (combines all transformations) + function dateToCell(date) { + var dayOffset = dateToDayOffset(date); + var cellOffset = dayOffsetToCellOffset(dayOffset); + var cell = cellOffsetToCell(cellOffset); + return cell; + } + + // date -> day offset + function dateToDayOffset(date) { + return dayDiff(date, t.visStart); + } + + // day offset -> cell offset + function dayOffsetToCellOffset(dayOffset) { + var day0 = t.visStart.getDay(); // first date's day of week + dayOffset += day0; // normalize dayOffset to beginning-of-week + return ( + Math.floor(dayOffset / 7) * cellsPerWeek + // # of cells from full weeks + dayToCellMap[ // # of cells from partial last week + ((dayOffset % 7) + 7) % 7 // crazy math to handle negative dayOffsets + ] - + dayToCellMap[day0] + ); // adjustment for beginning-of-week normalization + } + + // cell offset -> cell (object with row & col keys) + function cellOffsetToCell(cellOffset) { + var colCnt = t.getColCnt(); + + // rtl variables. wish we could pre-populate these. but where? + var dis = isRTL ? -1 : 1; + var dit = isRTL ? colCnt - 1 : 0; + + var row = Math.floor(cellOffset / colCnt); + var col = (((cellOffset % colCnt) + colCnt) % colCnt) * dis + dit; // column, adjusted for RTL (dis & dit) + return { + row: row, + col: col, + }; + } + + // + // Converts a date range into an array of segment objects. + // "Segments" are horizontal stretches of time, sliced up by row. + // A segment object has the following properties: + // - row + // - cols + // - isStart + // - isEnd + // + function rangeToSegments(startDate, endDate) { + var rowCnt = t.getRowCnt(); + var colCnt = t.getColCnt(); + var segments = []; // array of segments to return + + // day offset for given date range + var rangeDayOffsetStart = dateToDayOffset(startDate); + var rangeDayOffsetEnd = dateToDayOffset(endDate); // exclusive + + // first and last cell offset for the given date range + // "last" implies inclusivity + var rangeCellOffsetFirst = + dayOffsetToCellOffset(rangeDayOffsetStart); + var rangeCellOffsetLast = + dayOffsetToCellOffset(rangeDayOffsetEnd) - 1; + + // loop through all the rows in the view + for (var row = 0; row < rowCnt; row++) { + // first and last cell offset for the row + var rowCellOffsetFirst = row * colCnt; + var rowCellOffsetLast = rowCellOffsetFirst + colCnt - 1; + + // get the segment's cell offsets by constraining the range's cell offsets to the bounds of the row + var segmentCellOffsetFirst = Math.max( + rangeCellOffsetFirst, + rowCellOffsetFirst + ); + var segmentCellOffsetLast = Math.min( + rangeCellOffsetLast, + rowCellOffsetLast + ); + + // make sure segment's offsets are valid and in view + if (segmentCellOffsetFirst <= segmentCellOffsetLast) { + // translate to cells + var segmentCellFirst = cellOffsetToCell( + segmentCellOffsetFirst + ); + var segmentCellLast = cellOffsetToCell( + segmentCellOffsetLast + ); + + // view might be RTL, so order by leftmost column + var cols = [ + segmentCellFirst.col, + segmentCellLast.col, + ].sort(); + + // Determine if segment's first/last cell is the beginning/end of the date range. + // We need to compare "day offset" because "cell offsets" are often ambiguous and + // can translate to multiple days, and an edge case reveals itself when we the + // range's first cell is hidden (we don't want isStart to be true). + var isStart = + cellOffsetToDayOffset(segmentCellOffsetFirst) == + rangeDayOffsetStart; + var isEnd = + cellOffsetToDayOffset(segmentCellOffsetLast) + 1 == + rangeDayOffsetEnd; // +1 for comparing exclusively + + segments.push({ + row: row, + leftCol: cols[0], + rightCol: cols[1], + isStart: isStart, + isEnd: isEnd, + }); + } + } + + return segments; + } + } + + function DayEventRenderer() { + var t = this; + + // exports + t.renderDayEvents = renderDayEvents; + t.draggableDayEvent = draggableDayEvent; // made public so that subclasses can override + t.resizableDayEvent = resizableDayEvent; // " + + // imports + var opt = t.opt; + var trigger = t.trigger; + var isEventDraggable = t.isEventDraggable; + var isEventResizable = t.isEventResizable; + var eventEnd = t.eventEnd; + var reportEventElement = t.reportEventElement; + var eventElementHandlers = t.eventElementHandlers; + var showEvents = t.showEvents; + var hideEvents = t.hideEvents; + var eventDrop = t.eventDrop; + var eventResize = t.eventResize; + var getRowCnt = t.getRowCnt; + var getColCnt = t.getColCnt; + var getColWidth = t.getColWidth; + var allDayRow = t.allDayRow; // TODO: rename + var colLeft = t.colLeft; + var colRight = t.colRight; + var colContentLeft = t.colContentLeft; + var colContentRight = t.colContentRight; + var dateToCell = t.dateToCell; + var getDaySegmentContainer = t.getDaySegmentContainer; + var formatDates = t.calendar.formatDates; + var renderDayOverlay = t.renderDayOverlay; + var clearOverlays = t.clearOverlays; + var clearSelection = t.clearSelection; + var getHoverListener = t.getHoverListener; + var rangeToSegments = t.rangeToSegments; + var cellToDate = t.cellToDate; + var cellToCellOffset = t.cellToCellOffset; + var cellOffsetToDayOffset = t.cellOffsetToDayOffset; + var dateToDayOffset = t.dateToDayOffset; + var dayOffsetToCellOffset = t.dayOffsetToCellOffset; + + // Render `events` onto the calendar, attach mouse event handlers, and call the `eventAfterRender` callback for each. + // Mouse event will be lazily applied, except if the event has an ID of `modifiedEventId`. + // Can only be called when the event container is empty (because it wipes out all innerHTML). + function renderDayEvents(events, modifiedEventId) { + // do the actual rendering. Receive the intermediate "segment" data structures. + var segments = _renderDayEvents( + events, + false, // don't append event elements + true // set the heights of the rows + ); + + // report the elements to the View, for general drag/resize utilities + segmentElementEach(segments, function (segment, element) { + reportEventElement(segment.event, element); + }); + + // attach mouse handlers + attachHandlers(segments, modifiedEventId); + + // call `eventAfterRender` callback for each event + segmentElementEach(segments, function (segment, element) { + trigger( + "eventAfterRender", + segment.event, + segment.event, + element + ); + }); + } + + // Render an event on the calendar, but don't report them anywhere, and don't attach mouse handlers. + // Append this event element to the event container, which might already be populated with events. + // If an event's segment will have row equal to `adjustRow`, then explicitly set its top coordinate to `adjustTop`. + // This hack is used to maintain continuity when user is manually resizing an event. + // Returns an array of DOM elements for the event. + function renderTempDayEvent(event, adjustRow, adjustTop) { + // actually render the event. `true` for appending element to container. + // Recieve the intermediate "segment" data structures. + var segments = _renderDayEvents( + [event], + true, // append event elements + false // don't set the heights of the rows + ); + + var elements = []; + + // Adjust certain elements' top coordinates + segmentElementEach(segments, function (segment, element) { + if (segment.row === adjustRow) { + element.css("top", adjustTop); + } + elements.push(element[0]); // accumulate DOM nodes + }); + + return elements; + } + + // Render events onto the calendar. Only responsible for the VISUAL aspect. + // Not responsible for attaching handlers or calling callbacks. + // Set `doAppend` to `true` for rendering elements without clearing the existing container. + // Set `doRowHeights` to allow setting the height of each row, to compensate for vertical event overflow. + function _renderDayEvents(events, doAppend, doRowHeights) { + // where the DOM nodes will eventually end up + var finalContainer = getDaySegmentContainer(); + + // the container where the initial HTML will be rendered. + // If `doAppend`==true, uses a temporary container. + var renderContainer = doAppend ? $("
") : finalContainer; + + var segments = buildSegments(events); + var html; + var elements; + + // calculate the desired `left` and `width` properties on each segment object + calculateHorizontals(segments); + + // build the HTML string. relies on `left` property + html = buildHTML(segments); + + // render the HTML. innerHTML is considerably faster than jQuery's .html() + renderContainer[0].innerHTML = html; + + // retrieve the individual elements + elements = renderContainer.children(); + + // if we were appending, and thus using a temporary container, + // re-attach elements to the real container. + if (doAppend) { + finalContainer.append(elements); + } + + // assigns each element to `segment.event`, after filtering them through user callbacks + resolveElements(segments, elements); + + // Calculate the left and right padding+margin for each element. + // We need this for setting each element's desired outer width, because of the W3C box model. + // It's important we do this in a separate pass from acually setting the width on the DOM elements + // because alternating reading/writing dimensions causes reflow for every iteration. + segmentElementEach(segments, function (segment, element) { + segment.hsides = hsides(element, true); // include margins = `true` + }); + + // Set the width of each element + segmentElementEach(segments, function (segment, element) { + element.width(Math.max(0, segment.outerWidth - segment.hsides)); + }); + + // Grab each element's outerHeight (setVerticals uses this). + // To get an accurate reading, it's important to have each element's width explicitly set already. + segmentElementEach(segments, function (segment, element) { + segment.outerHeight = element.outerHeight(true); // include margins = `true` + }); + + // Set the top coordinate on each element (requires segment.outerHeight) + setVerticals(segments, doRowHeights); + + return segments; + } + + // Generate an array of "segments" for all events. + function buildSegments(events) { + var segments = []; + for (var i = 0; i < events.length; i++) { + var eventSegments = buildSegmentsForEvent(events[i]); + segments.push.apply(segments, eventSegments); // append an array to an array + } + return segments; + } + + // Generate an array of segments for a single event. + // A "segment" is the same data structure that View.rangeToSegments produces, + // with the addition of the `event` property being set to reference the original event. + function buildSegmentsForEvent(event) { + var startDate = event.start; + var endDate = exclEndDay(event); + var segments = rangeToSegments(startDate, endDate); + for (var i = 0; i < segments.length; i++) { + segments[i].event = event; + } + return segments; + } + + // Sets the `left` and `outerWidth` property of each segment. + // These values are the desired dimensions for the eventual DOM elements. + function calculateHorizontals(segments) { + var isRTL = opt("isRTL"); + for (var i = 0; i < segments.length; i++) { + var segment = segments[i]; + + // Determine functions used for calulating the elements left/right coordinates, + // depending on whether the view is RTL or not. + // NOTE: + // colLeft/colRight returns the coordinate butting up the edge of the cell. + // colContentLeft/colContentRight is indented a little bit from the edge. + var leftFunc = (isRTL ? segment.isEnd : segment.isStart) + ? colContentLeft + : colLeft; + var rightFunc = (isRTL ? segment.isStart : segment.isEnd) + ? colContentRight + : colRight; + + var left = leftFunc(segment.leftCol); + var right = rightFunc(segment.rightCol); + segment.left = left; + segment.outerWidth = right - left; + } + } + + // Build a concatenated HTML string for an array of segments + function buildHTML(segments) { + var html = ""; + for (var i = 0; i < segments.length; i++) { + html += buildHTMLForSegment(segments[i]); + } + return html; + } + + // Build an HTML string for a single segment. + // Relies on the following properties: + // - `segment.event` (from `buildSegmentsForEvent`) + // - `segment.left` (from `calculateHorizontals`) + function buildHTMLForSegment(segment) { + var html = ""; + var isRTL = opt("isRTL"); + var event = segment.event; + var url = event.url; + + // generate the list of CSS classNames + var classNames = ["fc-event", "fc-event-hori"]; + if (isEventDraggable(event)) { + classNames.push("fc-event-draggable"); + } + if (segment.isStart) { + classNames.push("fc-event-start"); + } + if (segment.isEnd) { + classNames.push("fc-event-end"); + } + // use the event's configured classNames + // guaranteed to be an array via `normalizeEvent` + classNames = classNames.concat(event.className); + if (event.source) { + // use the event's source's classNames, if specified + classNames = classNames.concat(event.source.className || []); + } + + // generate a semicolon delimited CSS string for any of the "skin" properties + // of the event object (`backgroundColor`, `borderColor` and such) + var skinCss = getSkinCss(event, opt); + + if (url) { + html += "" + + "
"; + if (!event.allDay && segment.isStart) { + html += + "" + + htmlEscape( + formatDates(event.start, event.end, opt("timeFormat")) + ) + + ""; + } + html += + "" + + htmlEscape(event.title || "") + + "" + + "
"; + if (segment.isEnd && isEventResizable(event)) { + html += + "
" + + "   " + // makes hit area a lot better for IE6/7 + "
"; + } + html += ""; + + // TODO: + // When these elements are initially rendered, they will be briefly visibile on the screen, + // even though their widths/heights are not set. + // SOLUTION: initially set them as visibility:hidden ? + + return html; + } + + // Associate each segment (an object) with an element (a jQuery object), + // by setting each `segment.element`. + // Run each element through the `eventRender` filter, which allows developers to + // modify an existing element, supply a new one, or cancel rendering. + function resolveElements(segments, elements) { + for (var i = 0; i < segments.length; i++) { + var segment = segments[i]; + var event = segment.event; + var element = elements.eq(i); + + // call the trigger with the original element + var triggerRes = trigger("eventRender", event, event, element); + + if (triggerRes === false) { + // if `false`, remove the event from the DOM and don't assign it to `segment.event` + element.remove(); + } else { + if (triggerRes && triggerRes !== true) { + // the trigger returned a new element, but not `true` (which means keep the existing element) + + // re-assign the important CSS dimension properties that were already assigned in `buildHTMLForSegment` + triggerRes = $(triggerRes).css({ + position: "absolute", + left: segment.left, + }); + + element.replaceWith(triggerRes); + element = triggerRes; + } + + segment.element = element; + } + } + } + + /* Top-coordinate Methods + -------------------------------------------------------------------------------------------------*/ + + // Sets the "top" CSS property for each element. + // If `doRowHeights` is `true`, also sets each row's first cell to an explicit height, + // so that if elements vertically overflow, the cell expands vertically to compensate. + function setVerticals(segments, doRowHeights) { + var rowContentHeights = calculateVerticals(segments); // also sets segment.top + var rowContentElements = getRowContentElements(); // returns 1 inner div per row + var rowContentTops = []; + + // Set each row's height by setting height of first inner div + if (doRowHeights) { + for (var i = 0; i < rowContentElements.length; i++) { + rowContentElements[i].height(rowContentHeights[i]); + } + } + + // Get each row's top, relative to the views's origin. + // Important to do this after setting each row's height. + for (var i = 0; i < rowContentElements.length; i++) { + rowContentTops.push(rowContentElements[i].position().top); + } + + // Set each segment element's CSS "top" property. + // Each segment object has a "top" property, which is relative to the row's top, but... + segmentElementEach(segments, function (segment, element) { + element.css( + "top", + rowContentTops[segment.row] + segment.top // ...now, relative to views's origin + ); + }); + } + + // Calculate the "top" coordinate for each segment, relative to the "top" of the row. + // Also, return an array that contains the "content" height for each row + // (the height displaced by the vertically stacked events in the row). + // Requires segments to have their `outerHeight` property already set. + function calculateVerticals(segments) { + var rowCnt = getRowCnt(); + var colCnt = getColCnt(); + var rowContentHeights = []; // content height for each row + var segmentRows = buildSegmentRows(segments); // an array of segment arrays, one for each row + + for (var rowI = 0; rowI < rowCnt; rowI++) { + var segmentRow = segmentRows[rowI]; + + // an array of running total heights for each column. + // initialize with all zeros. + var colHeights = []; + for (var colI = 0; colI < colCnt; colI++) { + colHeights.push(0); + } + + // loop through every segment + for ( + var segmentI = 0; + segmentI < segmentRow.length; + segmentI++ + ) { + var segment = segmentRow[segmentI]; + + // find the segment's top coordinate by looking at the max height + // of all the columns the segment will be in. + segment.top = arrayMax( + colHeights.slice( + segment.leftCol, + segment.rightCol + 1 // make exclusive for slice + ) + ); + + // adjust the columns to account for the segment's height + for ( + var colI = segment.leftCol; + colI <= segment.rightCol; + colI++ + ) { + colHeights[colI] = segment.top + segment.outerHeight; + } + } + + // the tallest column in the row should be the "content height" + rowContentHeights.push(arrayMax(colHeights)); + } + + return rowContentHeights; + } + + // Build an array of segment arrays, each representing the segments that will + // be in a row of the grid, sorted by which event should be closest to the top. + function buildSegmentRows(segments) { + var rowCnt = getRowCnt(); + var segmentRows = []; + var segmentI; + var segment; + var rowI; + + // group segments by row + for (segmentI = 0; segmentI < segments.length; segmentI++) { + segment = segments[segmentI]; + rowI = segment.row; + if (segment.element) { + // was rendered? + if (segmentRows[rowI]) { + // already other segments. append to array + segmentRows[rowI].push(segment); + } else { + // first segment in row. create new array + segmentRows[rowI] = [segment]; + } + } + } + + // sort each row + for (rowI = 0; rowI < rowCnt; rowI++) { + segmentRows[rowI] = sortSegmentRow( + segmentRows[rowI] || [] // guarantee an array, even if no segments + ); + } + + return segmentRows; + } + + // Sort an array of segments according to which segment should appear closest to the top + function sortSegmentRow(segments) { + var sortedSegments = []; + + // build the subrow array + var subrows = buildSegmentSubrows(segments); + + // flatten it + for (var i = 0; i < subrows.length; i++) { + sortedSegments.push.apply(sortedSegments, subrows[i]); // append an array to an array + } + + return sortedSegments; + } + + // Take an array of segments, which are all assumed to be in the same row, + // and sort into subrows. + function buildSegmentSubrows(segments) { + // Give preference to elements with certain criteria, so they have + // a chance to be closer to the top. + segments.sort(compareDaySegments); + + var subrows = []; + for (var i = 0; i < segments.length; i++) { + var segment = segments[i]; + + // loop through subrows, starting with the topmost, until the segment + // doesn't collide with other segments. + for (var j = 0; j < subrows.length; j++) { + if (!isDaySegmentCollision(segment, subrows[j])) { + break; + } + } + // `j` now holds the desired subrow index + if (subrows[j]) { + subrows[j].push(segment); + } else { + subrows[j] = [segment]; + } + } + + return subrows; + } + + // Return an array of jQuery objects for the placeholder content containers of each row. + // The content containers don't actually contain anything, but their dimensions should match + // the events that are overlaid on top. + function getRowContentElements() { + var i; + var rowCnt = getRowCnt(); + var rowDivs = []; + for (i = 0; i < rowCnt; i++) { + rowDivs[i] = allDayRow(i).find("div.fc-day-content > div"); + } + return rowDivs; + } + + /* Mouse Handlers + ---------------------------------------------------------------------------------------------------*/ + // TODO: better documentation! + + function attachHandlers(segments, modifiedEventId) { + var segmentContainer = getDaySegmentContainer(); + + segmentElementEach(segments, function (segment, element, i) { + var event = segment.event; + if (event._id === modifiedEventId) { + bindDaySeg(event, element, segment); + } else { + element[0]._fci = i; // for lazySegBind + } + }); + + lazySegBind(segmentContainer, segments, bindDaySeg); + } + + function bindDaySeg(event, eventElement, segment) { + if (isEventDraggable(event)) { + t.draggableDayEvent(event, eventElement, segment); // use `t` so subclasses can override + } + + if ( + segment.isEnd && // only allow resizing on the final segment for an event + isEventResizable(event) + ) { + t.resizableDayEvent(event, eventElement, segment); // use `t` so subclasses can override + } + + // attach all other handlers. + // needs to be after, because resizableDayEvent might stopImmediatePropagation on click + eventElementHandlers(event, eventElement); + } + + function draggableDayEvent(event, eventElement) { + var hoverListener = getHoverListener(); + var dayDelta; + eventElement.draggable({ + delay: 50, + opacity: opt("dragOpacity"), + revertDuration: opt("dragRevertDuration"), + start: function (ev, ui) { + trigger("eventDragStart", eventElement, event, ev, ui); + hideEvents(event, eventElement); + hoverListener.start( + function (cell, origCell, rowDelta, colDelta) { + eventElement.draggable( + "option", + "revert", + !cell || (!rowDelta && !colDelta) + ); + clearOverlays(); + if (cell) { + var origDate = cellToDate(origCell); + var date = cellToDate(cell); + dayDelta = dayDiff(date, origDate); + renderDayOverlay( + addDays(cloneDate(event.start), dayDelta), + addDays(exclEndDay(event), dayDelta) + ); + } else { + dayDelta = 0; + } + }, + ev, + "drag" + ); + }, + stop: function (ev, ui) { + hoverListener.stop(); + clearOverlays(); + trigger("eventDragStop", eventElement, event, ev, ui); + if (dayDelta) { + eventDrop( + this, + event, + dayDelta, + 0, + event.allDay, + ev, + ui + ); + } else { + eventElement.css("filter", ""); // clear IE opacity side-effects + showEvents(event, eventElement); + } + }, + }); + } + + function resizableDayEvent(event, element, segment) { + var isRTL = opt("isRTL"); + var direction = isRTL ? "w" : "e"; + var handle = element.find(".ui-resizable-" + direction); // TODO: stop using this class because we aren't using jqui for this + var isResizing = false; + + // TODO: look into using jquery-ui mouse widget for this stuff + disableTextSelection(element); // prevent native
selection for IE + element + .mousedown(function (ev) { + // prevent native selection for others + ev.preventDefault(); + }) + .click(function (ev) { + if (isResizing) { + ev.preventDefault(); // prevent link from being visited (only method that worked in IE6) + ev.stopImmediatePropagation(); // prevent fullcalendar eventClick handler from being called + // (eventElementHandlers needs to be bound after resizableDayEvent) + } + }); + + handle.mousedown(function (ev) { + if (ev.which != 1) { + return; // needs to be left mouse button + } + isResizing = true; + var hoverListener = getHoverListener(); + var rowCnt = getRowCnt(); + var colCnt = getColCnt(); + var elementTop = element.css("top"); + var dayDelta; + var helpers; + var eventCopy = $.extend({}, event); + var minCellOffset = dayOffsetToCellOffset( + dateToDayOffset(event.start) + ); + clearSelection(); + $("body") + .css("cursor", direction + "-resize") + .one("mouseup", mouseup); + trigger("eventResizeStart", this, event, ev); + hoverListener.start(function (cell, origCell) { + if (cell) { + var origCellOffset = cellToCellOffset(origCell); + var cellOffset = cellToCellOffset(cell); + + // don't let resizing move earlier than start date cell + cellOffset = Math.max(cellOffset, minCellOffset); + + dayDelta = + cellOffsetToDayOffset(cellOffset) - + cellOffsetToDayOffset(origCellOffset); + + if (dayDelta) { + eventCopy.end = addDays( + eventEnd(event), + dayDelta, + true + ); + var oldHelpers = helpers; + + helpers = renderTempDayEvent( + eventCopy, + segment.row, + elementTop + ); + helpers = $(helpers); // turn array into a jQuery object + + helpers + .find("*") + .css("cursor", direction + "-resize"); + if (oldHelpers) { + oldHelpers.remove(); + } + + hideEvents(event); + } else { + if (helpers) { + showEvents(event); + helpers.remove(); + helpers = null; + } + } + clearOverlays(); + renderDayOverlay( + // coordinate grid already rebuilt with hoverListener.start() + event.start, + addDays(exclEndDay(event), dayDelta) + // TODO: instead of calling renderDayOverlay() with dates, + // call _renderDayOverlay (or whatever) with cell offsets. + ); + } + }, ev); + + function mouseup(ev) { + trigger("eventResizeStop", this, event, ev); + $("body").css("cursor", ""); + hoverListener.stop(); + clearOverlays(); + if (dayDelta) { + eventResize(this, event, dayDelta, 0, ev); + // event redraw will clear helpers + } + // otherwise, the drag handler already restored the old events + + setTimeout(function () { + // make this happen after the element's click event + isResizing = false; + }, 0); + } + }); + } + } + + /* Generalized Segment Utilities +-------------------------------------------------------------------------------------------------*/ + + function isDaySegmentCollision(segment, otherSegments) { + for (var i = 0; i < otherSegments.length; i++) { + var otherSegment = otherSegments[i]; + if ( + otherSegment.leftCol <= segment.rightCol && + otherSegment.rightCol >= segment.leftCol + ) { + return true; + } + } + return false; + } + + function segmentElementEach(segments, callback) { + // TODO: use in AgendaView? + for (var i = 0; i < segments.length; i++) { + var segment = segments[i]; + var element = segment.element; + if (element) { + callback(segment, element, i); + } + } + } + + // A cmp function for determining which segments should appear higher up + function compareDaySegments(a, b) { + return ( + b.rightCol - b.leftCol - (a.rightCol - a.leftCol) || // put wider events first + b.event.allDay - a.event.allDay || // if tie, put all-day events first (booleans cast to 0/1) + a.event.start - b.event.start || // if a tie, sort by event start date + (a.event.title || "").localeCompare(b.event.title) + ); // if a tie, sort by event title + } + + //BUG: unselect needs to be triggered when events are dragged+dropped + + function SelectionManager() { + var t = this; + + // exports + t.select = select; + t.unselect = unselect; + t.reportSelection = reportSelection; + t.daySelectionMousedown = daySelectionMousedown; + + // imports + var opt = t.opt; + var trigger = t.trigger; + var defaultSelectionEnd = t.defaultSelectionEnd; + var renderSelection = t.renderSelection; + var clearSelection = t.clearSelection; + + // locals + var selected = false; + + // unselectAuto + if (opt("selectable") && opt("unselectAuto")) { + $(document).mousedown(function (ev) { + var ignore = opt("unselectCancel"); + if (ignore) { + if ($(ev.target).parents(ignore).length) { + // could be optimized to stop after first match + return; + } + } + unselect(ev); + }); + } + + function select(startDate, endDate, allDay) { + unselect(); + if (!endDate) { + endDate = defaultSelectionEnd(startDate, allDay); + } + renderSelection(startDate, endDate, allDay); + reportSelection(startDate, endDate, allDay); + } + + function unselect(ev) { + if (selected) { + selected = false; + clearSelection(); + trigger("unselect", null, ev); + } + } + + function reportSelection(startDate, endDate, allDay, ev) { + selected = true; + trigger("select", null, startDate, endDate, allDay, ev); + } + + function daySelectionMousedown(ev) { + // not really a generic manager method, oh well + var cellToDate = t.cellToDate; + var getIsCellAllDay = t.getIsCellAllDay; + var hoverListener = t.getHoverListener(); + var reportDayClick = t.reportDayClick; // this is hacky and sort of weird + if (ev.which == 1 && opt("selectable")) { + // which==1 means left mouse button + unselect(ev); + var _mousedownElement = this; + var dates; + hoverListener.start(function (cell, origCell) { + // TODO: maybe put cellToDate/getIsCellAllDay info in cell + clearSelection(); + if (cell && getIsCellAllDay(cell)) { + dates = [cellToDate(origCell), cellToDate(cell)].sort( + dateCompare + ); + renderSelection(dates[0], dates[1], true); + } else { + dates = null; + } + }, ev); + $(document).one("mouseup", function (ev) { + hoverListener.stop(); + if (dates) { + if (+dates[0] == +dates[1]) { + reportDayClick(dates[0], true, ev); + } + reportSelection(dates[0], dates[1], true, ev); + } + }); + } + } + } + + function OverlayManager() { + var t = this; + + // exports + t.renderOverlay = renderOverlay; + t.clearOverlays = clearOverlays; + + // locals + var usedOverlays = []; + var unusedOverlays = []; + + function renderOverlay(rect, parent) { + var e = unusedOverlays.shift(); + if (!e) { + e = $( + "
" + ); + } + if (e[0].parentNode != parent[0]) { + e.appendTo(parent); + } + usedOverlays.push(e.css(rect).show()); + return e; + } + + function clearOverlays() { + var e; + while ((e = usedOverlays.shift())) { + unusedOverlays.push(e.hide().unbind()); + } + } + } + + function CoordinateGrid(buildFunc) { + var t = this; + var rows; + var cols; + + t.build = function () { + rows = []; + cols = []; + buildFunc(rows, cols); + }; + + t.cell = function (x, y) { + var rowCnt = rows.length; + var colCnt = cols.length; + var i, + r = -1, + c = -1; + for (i = 0; i < rowCnt; i++) { + if (y >= rows[i][0] && y < rows[i][1]) { + r = i; + break; + } + } + for (i = 0; i < colCnt; i++) { + if (x >= cols[i][0] && x < cols[i][1]) { + c = i; + break; + } + } + return r >= 0 && c >= 0 ? { row: r, col: c } : null; + }; + + t.rect = function (row0, col0, row1, col1, originElement) { + // row1,col1 is inclusive + var origin = originElement.offset(); + return { + top: rows[row0][0] - origin.top, + left: cols[col0][0] - origin.left, + width: cols[col1][1] - cols[col0][0], + height: rows[row1][1] - rows[row0][0], + }; + }; + } + + function HoverListener(coordinateGrid) { + var t = this; + var bindType; + var change; + var firstCell; + var cell; + + t.start = function (_change, ev, _bindType) { + change = _change; + firstCell = cell = null; + coordinateGrid.build(); + mouse(ev); + bindType = _bindType || "mousemove"; + $(document).bind(bindType, mouse); + }; + + function mouse(ev) { + _fixUIEvent(ev); // see below + var newCell = coordinateGrid.cell(ev.pageX, ev.pageY); + if ( + !newCell != !cell || + (newCell && + (newCell.row != cell.row || newCell.col != cell.col)) + ) { + if (newCell) { + if (!firstCell) { + firstCell = newCell; + } + change( + newCell, + firstCell, + newCell.row - firstCell.row, + newCell.col - firstCell.col + ); + } else { + change(newCell, firstCell); + } + cell = newCell; + } + } + + t.stop = function () { + $(document).unbind(bindType, mouse); + return cell; + }; + } + + // this fix was only necessary for jQuery UI 1.8.16 (and jQuery 1.7 or 1.7.1) + // upgrading to jQuery UI 1.8.17 (and using either jQuery 1.7 or 1.7.1) fixed the problem + // but keep this in here for 1.8.16 users + // and maybe remove it down the line + + function _fixUIEvent(event) { + // for issue 1168 + if (event.pageX === undefined) { + event.pageX = event.originalEvent.pageX; + event.pageY = event.originalEvent.pageY; + } + } + function HorizontalPositionCache(getElement) { + var t = this, + elements = {}, + lefts = {}, + rights = {}; + + function e(i) { + return (elements[i] = elements[i] || getElement(i)); + } + + t.left = function (i) { + return (lefts[i] = + lefts[i] === undefined ? e(i).position().left : lefts[i]); + }; + + t.right = function (i) { + return (rights[i] = + rights[i] === undefined ? t.left(i) + e(i).width() : rights[i]); + }; + + t.clear = function () { + elements = {}; + lefts = {}; + rights = {}; + }; + } +})(jQuery); diff --git a/public/assets/js/backend/jadwal/pagination.js b/public/assets/js/backend/jadwal/pagination.js new file mode 100644 index 0000000..7a9e988 --- /dev/null +++ b/public/assets/js/backend/jadwal/pagination.js @@ -0,0 +1,41 @@ +const paginationStyles = document.createElement("style"); +paginationStyles.textContent = ` + .pagination-container { + margin-top: 1.5rem; + border-top: 1px solid #e9ecef; + padding-top: 1rem; + } + .pagination-ellipsis { + display: inline-flex; + align-items: center; + justify-content: center; + height: 31px; + width: 31px; + padding: 0 5px; + color: var(--bs-secondary); + font-weight: bold; + } + .btn.disabled { + cursor: not-allowed; + opacity: 0.65; + } + .pagination-container .btn { + min-width: 32px; + height: 32px; + padding: 0.25rem 0.5rem; + display: inline-flex; + align-items: center; + justify-content: center; + } + .pagination-container .btn.btn-primary { + font-weight: 600; + } +`; +document.head.appendChild(paginationStyles); + +// Make pagination function available globally +window.changePage = function (page) { + const url = new URL(window.location); + url.searchParams.set("page", page); + window.location = url.toString(); +}; diff --git a/public/assets/js/full-calendar.js b/public/assets/js/full-calendar.js index 7628fc8..2cbd73e 100644 --- a/public/assets/js/full-calendar.js +++ b/public/assets/js/full-calendar.js @@ -25,165 +25,165 @@ $(document).ready(function () { }); /************** initialize the calendar ********************* -----------------------------------------------------------------*/ - var calendar = $("#calendar").fullCalendar({ - header: { - left: "title", - center: "agendaDay,agendaWeek,month", - right: "prev,next today", - }, - editable: true, - firstDay: 1, // 1(Monday) this can be changed to 0(Sunday) for the USA system - selectable: true, - defaultView: "month", - axisFormat: "h:mm", - columnFormat: { - month: "ddd", // Mon - week: "ddd d", // Mon 7 - day: "dddd M/d", // Monday 9/7 - agendaDay: "dddd d", - }, - titleFormat: { - month: "MMMM yyyy", // September 2009 - week: "MMMM yyyy", // September 2009 - day: "MMMM yyyy", // Tuesday, Sep 8, 2009 - }, - allDaySlot: false, //cambie a true - selectHelper: true, - dayClick: function (date, allDay, jsEvent, view) { - if (allDay) { - // Clicked on the day number - calendar - .fullCalendar("changeView", "agendaDay" /* or 'basicDay' */) - .fullCalendar( - "gotoDate", - date.getFullYear(), - date.getMonth(), - date.getDate() - ); - } - }, - select: function (startDate, endDate, allDay) { - if (!allDay) { - swal({ - input: "text", - title: "Event title:", - showCancelButton: true, - }).then((result) => { - swal.resetDefaults(); - console.log("result: " + result); - if (result) { - calendar.fullCalendar( - "renderEvent", - { - title: result, - start: startDate, - end: endDate, - allDay: allDay, - }, - true // make the event "stick" - ); - swal({ - type: "success", - title: "Agended!", - html: "Event title: " + result, - }); - } else { - swal({ - type: "warning", - title: "Not Agended!", - html: "Title is empty! ", - }); - } - calendar.fullCalendar("unselect"); - }); - } - }, - droppable: true, // this allows things to be dropped onto the calendar !!! - drop: function (date, allDay) { - // this function is called when something is dropped + // var calendar = $("#calendar").fullCalendar({ + // header: { + // left: "title", + // center: "agendaDay,agendaWeek,month", + // right: "prev,next today", + // }, + // editable: true, + // firstDay: 1, // 1(Monday) this can be changed to 0(Sunday) for the USA system + // selectable: true, + // defaultView: "month", + // axisFormat: "h:mm", + // columnFormat: { + // month: "ddd", // Mon + // week: "ddd d", // Mon 7 + // day: "dddd M/d", // Monday 9/7 + // agendaDay: "dddd d", + // }, + // titleFormat: { + // month: "MMMM yyyy", // September 2009 + // week: "MMMM yyyy", // September 2009 + // day: "MMMM yyyy", // Tuesday, Sep 8, 2009 + // }, + // allDaySlot: false, //cambie a true + // selectHelper: true, + // dayClick: function (date, allDay, jsEvent, view) { + // if (allDay) { + // // Clicked on the day number + // calendar + // .fullCalendar("changeView", "agendaDay" /* or 'basicDay' */) + // .fullCalendar( + // "gotoDate", + // date.getFullYear(), + // date.getMonth(), + // date.getDate() + // ); + // } + // }, + // select: function (startDate, endDate, allDay) { + // if (!allDay) { + // swal({ + // input: "text", + // title: "Event title:", + // showCancelButton: true, + // }).then((result) => { + // swal.resetDefaults(); + // console.log("result: " + result); + // if (result) { + // calendar.fullCalendar( + // "renderEvent", + // { + // title: result, + // start: startDate, + // end: endDate, + // allDay: allDay, + // }, + // true // make the event "stick" + // ); + // swal({ + // type: "success", + // title: "Agended!", + // html: "Event title: " + result, + // }); + // } else { + // swal({ + // type: "warning", + // title: "Not Agended!", + // html: "Title is empty! ", + // }); + // } + // calendar.fullCalendar("unselect"); + // }); + // } + // }, + // droppable: true, // this allows things to be dropped onto the calendar !!! + // drop: function (date, allDay) { + // // this function is called when something is dropped - // retrieve the dropped element's stored Event Object - var originalEventObject = $(this).data("eventObject"); + // // retrieve the dropped element's stored Event Object + // var originalEventObject = $(this).data("eventObject"); - // we need to copy it, so that multiple events don't have a reference to the same object - var copiedEventObject = $.extend({}, originalEventObject); + // // we need to copy it, so that multiple events don't have a reference to the same object + // var copiedEventObject = $.extend({}, originalEventObject); - // assign it the date that was reported - copiedEventObject.start = date; - copiedEventObject.allDay = allDay; + // // assign it the date that was reported + // copiedEventObject.start = date; + // copiedEventObject.allDay = allDay; - // render the event on the calendar - // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) - $("#calendar").fullCalendar("renderEvent", copiedEventObject, true); + // // render the event on the calendar + // // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) + // $("#calendar").fullCalendar("renderEvent", copiedEventObject, true); - // is the "remove after drop" checkbox checked? - if ($("#drop-remove").is(":checked")) { - // if so, remove the element from the "Draggable Events" list - $(this).remove(); - } - }, + // // is the "remove after drop" checkbox checked? + // if ($("#drop-remove").is(":checked")) { + // // if so, remove the element from the "Draggable Events" list + // $(this).remove(); + // } + // }, - events: [ - // { - // title: "All Day Event", - // start: new Date(y, m, 1), - // }, - // { - // id: 999, - // title: "Repeating Event", - // start: new Date(y, m, d - 3, 16, 0), - // allDay: false, - // className: "info", - // }, - // { - // id: 999, - // title: "Repeating Event", - // start: new Date(y, m, d + 4, 16, 0), - // allDay: false, - // className: "info", - // }, - { - title: "PT Mitra Usaha Sejahtera", - start: new Date(y, m, d, 10, 30), - allDay: false, - className: "info", - }, - // { - // title: "Lunch", - // start: new Date(y, m, d, 12, 0), - // end: new Date(y, m, d, 14, 0), - // allDay: false, - // className: "important", - // }, - { - title: "Cuti Bersama Idulfitri", - start: new Date(2025, 3, 7, 12, 0), - end: new Date(2025, 3, 7, 14, 0), - allDay: true, - className: "important", - }, - { - title: "Jumat Agung", - start: new Date(2025, 3, 18, 12, 0), - end: new Date(2025, 3, 18, 14, 0), - allDay: true, - className: "important", - }, - // { - // title: "Birthday Party", - // start: new Date(y, m, d + 1, 19, 0), - // end: new Date(y, m, d + 1, 22, 30), - // allDay: false, - // }, - // { - // title: "Click for Google", - // start: new Date(y, m, 28), - // end: new Date(y, m, 29), - // url: "http://google.com/", - // className: "success", - // }, - ], - }); + // events: [ + // // { + // // title: "All Day Event", + // // start: new Date(y, m, 1), + // // }, + // // { + // // id: 999, + // // title: "Repeating Event", + // // start: new Date(y, m, d - 3, 16, 0), + // // allDay: false, + // // className: "info", + // // }, + // // { + // // id: 999, + // // title: "Repeating Event", + // // start: new Date(y, m, d + 4, 16, 0), + // // allDay: false, + // // className: "info", + // // }, + // { + // title: "PT Mitra Usaha Sejahtera", + // start: new Date(y, m, d, 10, 30), + // allDay: false, + // className: "info", + // }, + // // { + // // title: "Lunch", + // // start: new Date(y, m, d, 12, 0), + // // end: new Date(y, m, d, 14, 0), + // // allDay: false, + // // className: "important", + // // }, + // { + // title: "Cuti Bersama Idulfitri", + // start: new Date(2025, 3, 7, 12, 0), + // end: new Date(2025, 3, 7, 14, 0), + // allDay: true, + // className: "important", + // }, + // { + // title: "Jumat Agung", + // start: new Date(2025, 3, 18, 12, 0), + // end: new Date(2025, 3, 18, 14, 0), + // allDay: true, + // className: "important", + // }, + // // { + // // title: "Birthday Party", + // // start: new Date(y, m, d + 1, 19, 0), + // // end: new Date(y, m, d + 1, 22, 30), + // // allDay: false, + // // }, + // // { + // // title: "Click for Google", + // // start: new Date(y, m, 28), + // // end: new Date(y, m, 29), + // // url: "http://google.com/", + // // className: "success", + // // }, + // ], + // }); }); /*! * FullCalendar v1.6.4 @@ -1654,7 +1654,7 @@ $(document).ready(function () { function parseISO8601(s, ignoreTimezone) { // ignoreTimezone defaults to false // derived from http://delete.me.uk/2005/03/iso8601.html - // TODO: for a know glitch/feature, read tests/issue_206_parseDate_dst.html + // TODO: for a know glitch/feature, read s/issue_206_parseDate_dst.html var m = s.match( /^([0-9]{4})(-([0-9]{2})(-([0-9]{2})([T ]([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2})(:?([0-9]{2}))?))?)?)?)?$/ ); @@ -2939,7 +2939,7 @@ function enableTextSelection(element) { }); // TODO: make it work in quirks mode (event corners, all-day height) - // TODO: test liquid width, especially in IE6 + // TODO: liquid width, especially in IE6 function AgendaView(element, calendar, viewName) { var t = this; diff --git a/public/assets/js/homeOneChart.js b/public/assets/js/homeOneChart.js index 919d6f9..3a84b33 100644 --- a/public/assets/js/homeOneChart.js +++ b/public/assets/js/homeOneChart.js @@ -1,374 +1,926 @@ - - // =========================== Sales Statistic Line Chart Start =============================== - var options = { - series: [{ - name: "This month", - data: [10, 20, 12, 30, 14, 35, 16, 32, 14, 25, 13, 28] - }], +// =========================== Sales Statistic Line Chart Start =============================== +var options = { + series: [ + { + name: "This month", + data: [10, 20, 12, 30, 14, 35, 16, 32, 14, 25, 13, 28], + }, + ], chart: { - height: 264, - type: 'line', - toolbar: { - show: false - }, - zoom: { - enabled: false - }, - dropShadow: { - enabled: true, - top: 6, - left: 0, - blur: 4, - color: "#000", - opacity: 0.1, - }, + height: 264, + type: "line", + toolbar: { + show: false, + }, + zoom: { + enabled: false, + }, + dropShadow: { + enabled: true, + top: 6, + left: 0, + blur: 4, + color: "#000", + opacity: 0.1, + }, }, dataLabels: { - enabled: false + enabled: false, }, stroke: { - curve: 'smooth', - colors: ['#487FFF'], // Specify the line color here - width: 3 + curve: "smooth", + colors: ["#487FFF"], // Specify the line color here + width: 3, }, markers: { - size: 0, - strokeWidth: 3, - hover: { - size: 8 - } + size: 0, + strokeWidth: 3, + hover: { + size: 8, + }, }, tooltip: { - enabled: true, - x: { - show: true, - }, - y: { - show: false, - }, - z: { - show: false, - } + enabled: true, + x: { + show: true, + }, + y: { + show: false, + }, + z: { + show: false, + }, }, grid: { - row: { - colors: ['transparent', 'transparent'], // takes an array which will be repeated on columns - opacity: 0.5 - }, - borderColor: '#D1D5DB', - strokeDashArray: 3, + row: { + colors: ["transparent", "transparent"], // takes an array which will be repeated on columns + opacity: 0.5, + }, + borderColor: "#D1D5DB", + strokeDashArray: 3, }, yaxis: { - labels: { - formatter: function (value) { - return "$" + value + "k"; + labels: { + formatter: function (value) { + return value; + }, + style: { + fontSize: "14px", + }, }, - style: { - fontSize: "14px" - } - }, }, xaxis: { - categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - tooltip: { - enabled: false - }, - labels: { - formatter: function (value) { - return value; + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + tooltip: { + enabled: false, }, - style: { - fontSize: "14px" - } - }, - axisBorder: { - show: false - }, - crosshairs: { - show: true, - width: 20, - stroke: { - width: 0 + labels: { + formatter: function (value) { + return value; + }, + style: { + fontSize: "14px", + }, }, - fill: { - type: 'solid', - color: '#487FFF40', - // gradient: { - // colorFrom: '#D8E3F0', - // // colorTo: '#BED1E6', - // stops: [0, 100], - // opacityFrom: 0.4, - // opacityTo: 0.5, - // }, - } - } - } - }; + axisBorder: { + show: false, + }, + crosshairs: { + show: true, + width: 20, + stroke: { + width: 0, + }, + fill: { + type: "solid", + color: "#487FFF40", + // gradient: { + // colorFrom: '#D8E3F0', + // // colorTo: '#BED1E6', + // stops: [0, 100], + // opacityFrom: 0.4, + // opacityTo: 0.5, + // }, + }, + }, + }, +}; - var chart = new ApexCharts(document.querySelector("#chart"), options); - chart.render(); - // =========================== Sales Statistic Line Chart End =============================== +var chart = new ApexCharts(document.querySelector("#chart-pertek"), options); +chart.render(); +// =========================== Sales Statistic Line Chart End =============================== - // ================================ Total Subscriber bar chart Start ================================ - var options = { - series: [{ - name: "Sales", - data: [{ - x: 'Sun', - y: 15, - }, { - x: 'Mon', - y: 12, - }, { - x: 'Tue', - y: 18, - }, { - x: 'Wed', - y: 20, - }, { - x: 'Thu', - y: 13, - }, { - x: 'Fri', - y: 16, - }, { - x: 'Sat', - y: 6, - }] - }], - chart: { - type: 'bar', - height: 235, - toolbar: { - show: false - }, - }, - plotOptions: { - bar: { +// =========================== Sales Statistic Line Chart Start =============================== +var options = { + series: [ + { + name: "This month", + data: [10, 20, 12, 30, 14, 35, 16, 32, 14, 25, 13, 28], + }, + ], + chart: { + height: 264, + type: "line", + toolbar: { + show: false, + }, + zoom: { + enabled: false, + }, + dropShadow: { + enabled: true, + top: 6, + left: 0, + blur: 4, + color: "#000", + opacity: 0.1, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + curve: "smooth", + colors: ["#487FFF"], // Specify the line color here + width: 3, + }, + markers: { + size: 0, + strokeWidth: 3, + hover: { + size: 8, + }, + }, + tooltip: { + enabled: true, + x: { + show: true, + }, + y: { + show: false, + }, + z: { + show: false, + }, + }, + grid: { + row: { + colors: ["transparent", "transparent"], // takes an array which will be repeated on columns + opacity: 0.5, + }, + borderColor: "#D1D5DB", + strokeDashArray: 3, + }, + yaxis: { + labels: { + formatter: function (value) { + return value; + }, + style: { + fontSize: "14px", + }, + }, + }, + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + tooltip: { + enabled: false, + }, + labels: { + formatter: function (value) { + return value; + }, + style: { + fontSize: "14px", + }, + }, + axisBorder: { + show: false, + }, + crosshairs: { + show: true, + width: 20, + stroke: { + width: 0, + }, + fill: { + type: "solid", + color: "#487FFF40", + // gradient: { + // colorFrom: '#D8E3F0', + // // colorTo: '#BED1E6', + // stops: [0, 100], + // opacityFrom: 0.4, + // opacityTo: 0.5, + // }, + }, + }, + }, +}; + +var chart = new ApexCharts(document.querySelector("#chart-rintek"), options); +chart.render(); +// =========================== Sales Statistic Line Chart End =============================== + +// =========================== Sales Statistic Line Chart Start =============================== +var options = { + series: [ + { + name: "This month", + data: [10, 20, 12, 30, 14, 35, 16, 32, 14, 25, 13, 28], + }, + ], + chart: { + height: 264, + type: "line", + toolbar: { + show: false, + }, + zoom: { + enabled: false, + }, + dropShadow: { + enabled: true, + top: 6, + left: 0, + blur: 4, + color: "#000", + opacity: 0.1, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + curve: "smooth", + colors: ["#487FFF"], // Specify the line color here + width: 3, + }, + markers: { + size: 0, + strokeWidth: 3, + hover: { + size: 8, + }, + }, + tooltip: { + enabled: true, + x: { + show: true, + }, + y: { + show: false, + }, + z: { + show: false, + }, + }, + grid: { + row: { + colors: ["transparent", "transparent"], // takes an array which will be repeated on columns + opacity: 0.5, + }, + borderColor: "#D1D5DB", + strokeDashArray: 3, + }, + yaxis: { + labels: { + formatter: function (value) { + return value; + }, + style: { + fontSize: "14px", + }, + }, + }, + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + tooltip: { + enabled: false, + }, + labels: { + formatter: function (value) { + return value; + }, + style: { + fontSize: "14px", + }, + }, + axisBorder: { + show: false, + }, + crosshairs: { + show: true, + width: 20, + stroke: { + width: 0, + }, + fill: { + type: "solid", + color: "#487FFF40", + // gradient: { + // colorFrom: '#D8E3F0', + // // colorTo: '#BED1E6', + // stops: [0, 100], + // opacityFrom: 0.4, + // opacityTo: 0.5, + // }, + }, + }, + }, +}; + +var chart = new ApexCharts(document.querySelector("#chart-amdal"), options); +chart.render(); +// =========================== Sales Statistic Line Chart End =============================== + +// ================================ Total Subscriber bar chart Start ================================ +var options = { + series: [ + { + name: "Sales", + data: [ + { + x: "Sun", + y: 15, + }, + { + x: "Mon", + y: 12, + }, + { + x: "Tue", + y: 18, + }, + { + x: "Wed", + y: 20, + }, + { + x: "Thu", + y: 13, + }, + { + x: "Fri", + y: 16, + }, + { + x: "Sat", + y: 6, + }, + ], + }, + ], + chart: { + type: "bar", + height: 235, + toolbar: { + show: false, + }, + }, + plotOptions: { + bar: { borderRadius: 6, horizontal: false, columnWidth: 24, - columnWidth: '52%', - endingShape: 'rounded', - } - }, - dataLabels: { - enabled: false - }, - fill: { - type: 'gradient', - colors: ['#dae5ff'], // Set the starting color (top color) here - gradient: { - shade: 'light', // Gradient shading type - type: 'vertical', // Gradient direction (vertical) - shadeIntensity: 0.5, // Intensity of the gradient shading - gradientToColors: ['#dae5ff'], // Bottom gradient color (with transparency) - inverseColors: false, // Do not invert colors - opacityFrom: 1, // Starting opacity - opacityTo: 1, // Ending opacity - stops: [0, 100], - }, - }, - grid: { - show: false, - borderColor: '#D1D5DB', - strokeDashArray: 4, // Use a number for dashed style - position: 'back', - padding: { + columnWidth: "52%", + endingShape: "rounded", + }, + }, + dataLabels: { + enabled: false, + }, + fill: { + type: "gradient", + colors: ["#dae5ff"], // Set the starting color (top color) here + gradient: { + shade: "light", // Gradient shading type + type: "vertical", // Gradient direction (vertical) + shadeIntensity: 0.5, // Intensity of the gradient shading + gradientToColors: ["#dae5ff"], // Bottom gradient color (with transparency) + inverseColors: false, // Do not invert colors + opacityFrom: 1, // Starting opacity + opacityTo: 1, // Ending opacity + stops: [0, 100], + }, + }, + grid: { + show: false, + borderColor: "#D1D5DB", + strokeDashArray: 4, // Use a number for dashed style + position: "back", + padding: { top: -10, right: -10, bottom: -10, - left: -10 - } - }, - xaxis: { - type: 'category', - categories: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] - }, - yaxis: { + left: -10, + }, + }, + xaxis: { + type: "category", + categories: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + }, + yaxis: { show: false, - }, - }; + }, +}; - var chart = new ApexCharts(document.querySelector("#barChart"), options); - chart.render(); - // ================================ Total Subscriber bar chart End ================================ +var chart = new ApexCharts(document.querySelector("#barChart"), options); +chart.render(); +// ================================ Total Subscriber bar chart End ================================ - // ================================ Users Overview Donut chart Start ================================ - var options = { - series: [500, 500, 500], - colors: ['#FF9F29', '#487FFF', '#E4F1FF'], - labels: ['Active', 'New', 'Total'] , - legend: { - show: false - }, - chart: { - type: 'donut', +// ================================ Users Overview Donut chart Start ================================ +var options = { + series: [500, 500, 500], + colors: ["#FF9F29", "#487FFF", "#E4F1FF"], + labels: ["Active", "New", "Total"], + legend: { + show: false, + }, + chart: { + type: "donut", height: 270, sparkline: { - enabled: true // Remove whitespace + enabled: true, // Remove whitespace }, margin: { top: 0, right: 0, bottom: 0, - left: 0 + left: 0, }, padding: { - top: 0, - right: 0, - bottom: 0, - left: 0 - } - }, - stroke: { + top: 0, + right: 0, + bottom: 0, + left: 0, + }, + }, + stroke: { width: 0, - }, - dataLabels: { - enabled: false - }, - responsive: [{ - breakpoint: 480, - options: { - chart: { - width: 200 - }, - legend: { - position: 'bottom' - } - } - }], - }; + }, + dataLabels: { + enabled: false, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], +}; - var chart = new ApexCharts(document.querySelector("#userOverviewDonutChart"), options); - chart.render(); - // ================================ Users Overview Donut chart End ================================ +var chart = new ApexCharts( + document.querySelector("#userOverviewDonutChart"), + options +); +chart.render(); +// ================================ Users Overview Donut chart End ================================ - // ================================ Revenue Report Chart Start ================================ - var options = { - series: [{ - name: 'Net Profit', - data: [20000, 16000, 14000, 25000, 45000, 18000, 28000, 11000, 26000, 48000, 18000, 22000] - },{ - name: 'Revenue', - data: [15000, 18000, 19000, 20000, 35000, 20000, 18000, 13000, 18000, 38000, 14000, 16000] - }], - colors: ['#487FFF', '#FF9F29'], - labels: ['Active', 'New', 'Total'], - legend: { - show: false - }, - chart: { - type: 'bar', +// ================================ Pertek Distribusi Chart Start ================================ +var options = { + series: [ + { + name: "Usaha Perdagangan dan Jasa", + data: [ + 20000, 16000, 14000, 25000, 45000, 18000, 28000, 11000, 26000, + 48000, 18000, 22000, + ], + }, + { + name: "Property", + data: [ + 15000, 18000, 19000, 20000, 35000, 20000, 18000, 13000, 18000, + 38000, 14000, 16000, + ], + }, + { + name: "Manufaktur", + data: [ + 12000, 14000, 16000, 18000, 25000, 15000, 20000, 9000, 15000, + 28000, 12000, 14000, + ], + }, + { + name: "Lainnya", + data: [ + 8000, 10000, 11000, 12000, 18000, 10000, 14000, 7000, 11000, + 20000, 9000, 10000, + ], + }, + ], + colors: ["#487FFF", "#FF9F29", "#10B981", "#EF4444"], + labels: ["Active", "New", "Total"], + legend: { + show: false, + }, + chart: { + type: "bar", height: 250, toolbar: { - show: false + show: false, }, - }, - grid: { - show: true, - borderColor: '#D1D5DB', - strokeDashArray: 4, // Use a number for dashed style - position: 'back', - }, - plotOptions: { + }, + grid: { + show: true, + borderColor: "#D1D5DB", + strokeDashArray: 4, // Use a number for dashed style + position: "back", + }, + plotOptions: { bar: { - borderRadius: 4, - columnWidth: 10, + borderRadius: 4, + columnWidth: 10, }, - }, - dataLabels: { - enabled: false - }, - stroke: { + }, + dataLabels: { + enabled: false, + }, + stroke: { show: true, width: 2, - colors: ['transparent'] - }, - xaxis: { - categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - }, - yaxis: { - categories: ['0', '5000', '10,000', '20,000', '30,000', '50,000', '60,000', '60,000', '70,000', '80,000', '90,000', '100,000'], - }, - fill: { + colors: ["transparent"], + }, + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + }, + yaxis: { + categories: [ + "0", + "5000", + "10,000", + "20,000", + "30,000", + "50,000", + "60,000", + "60,000", + "70,000", + "80,000", + "90,000", + "100,000", + ], + }, + fill: { opacity: 1, width: 18, - }, - }; + }, +}; - var chart = new ApexCharts(document.querySelector("#paymentStatusChart"), options); - chart.render(); - // ================================ Revenue Report Chart End ================================ - - // ================================ J Vector Map Start ================================ - $('#world-map').vectorMap( - { - map: 'world_mill_en', - backgroundColor: 'transparent', - borderColor: '#fff', - borderOpacity: 0.25, - borderWidth: 0, - color: '#000000', - regionStyle : { - initial : { - fill : '#D1D5DB' - } - }, - markerStyle: { - initial: { - r: 5, - 'fill': '#fff', - 'fill-opacity':1, - 'stroke': '#000', - 'stroke-width' : 1, - 'stroke-opacity': 0.4 - }, - }, - markers : [{ - latLng : [35.8617, 104.1954], - name : 'China : 250' +var chart = new ApexCharts( + document.querySelector("#paymentStatusChart-pertek"), + options +); +chart.render(); +// ================================ Pertek Distribusi Chart End ================================ + +// ================================ Rintek Distribusi Chart Start ================================ +var options = { + series: [ + { + name: "Usaha Perdagangan dan Jasa", + data: [ + 20000, 16000, 14000, 25000, 45000, 18000, 28000, 11000, 26000, + 48000, 18000, 22000, + ], + }, + { + name: "Property", + data: [ + 15000, 18000, 19000, 20000, 35000, 20000, 18000, 13000, 18000, + 38000, 14000, 16000, + ], + }, + { + name: "Manufaktur", + data: [ + 12000, 14000, 16000, 18000, 25000, 15000, 20000, 9000, 15000, + 28000, 12000, 14000, + ], + }, + { + name: "Lainnya", + data: [ + 8000, 10000, 11000, 12000, 18000, 10000, 14000, 7000, 11000, + 20000, 9000, 10000, + ], + }, + ], + colors: ["#487FFF", "#FF9F29", "#10B981", "#EF4444"], + labels: ["Active", "New", "Total"], + legend: { + show: false, + }, + chart: { + type: "bar", + height: 250, + toolbar: { + show: false, + }, + }, + grid: { + show: true, + borderColor: "#D1D5DB", + strokeDashArray: 4, // Use a number for dashed style + position: "back", + }, + plotOptions: { + bar: { + borderRadius: 4, + columnWidth: 10, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + show: true, + width: 2, + colors: ["transparent"], + }, + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + }, + yaxis: { + categories: [ + "0", + "5000", + "10,000", + "20,000", + "30,000", + "50,000", + "60,000", + "60,000", + "70,000", + "80,000", + "90,000", + "100,000", + ], + }, + fill: { + opacity: 1, + width: 18, + }, +}; + +var chart = new ApexCharts( + document.querySelector("#paymentStatusChart-rintek"), + options +); +chart.render(); +// ================================ Rintek Distribusi Chart End ================================ + +// ================================ Amdal Distribusi Chart Start ================================ +var options = { + series: [ + { + name: "Usaha Perdagangan dan Jasa", + data: [ + 20000, 16000, 14000, 25000, 45000, 18000, 28000, 11000, 26000, + 48000, 18000, 22000, + ], + }, + { + name: "Property", + data: [ + 15000, 18000, 19000, 20000, 35000, 20000, 18000, 13000, 18000, + 38000, 14000, 16000, + ], + }, + { + name: "Manufaktur", + data: [ + 12000, 14000, 16000, 18000, 25000, 15000, 20000, 9000, 15000, + 28000, 12000, 14000, + ], + }, + { + name: "Lainnya", + data: [ + 8000, 10000, 11000, 12000, 18000, 10000, 14000, 7000, 11000, + 20000, 9000, 10000, + ], + }, + ], + colors: ["#487FFF", "#FF9F29", "#10B981", "#EF4444"], + labels: ["Active", "New", "Total"], + legend: { + show: false, + }, + chart: { + type: "bar", + height: 250, + toolbar: { + show: false, + }, + }, + grid: { + show: true, + borderColor: "#D1D5DB", + strokeDashArray: 4, // Use a number for dashed style + position: "back", + }, + plotOptions: { + bar: { + borderRadius: 4, + columnWidth: 10, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + show: true, + width: 2, + colors: ["transparent"], + }, + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + }, + yaxis: { + categories: [ + "0", + "5000", + "10,000", + "20,000", + "30,000", + "50,000", + "60,000", + "60,000", + "70,000", + "80,000", + "90,000", + "100,000", + ], + }, + fill: { + opacity: 1, + width: 18, + }, +}; + +var chart = new ApexCharts( + document.querySelector("#paymentStatusChart-amdal"), + options +); +chart.render(); +// ================================ Amdal Distribusi Chart End ================================ + +// ================================ J Vector Map Start ================================ +$("#world-map").vectorMap({ + map: "world_mill_en", + backgroundColor: "transparent", + borderColor: "#fff", + borderOpacity: 0.25, + borderWidth: 0, + color: "#000000", + regionStyle: { + initial: { + fill: "#D1D5DB", + }, + }, + markerStyle: { + initial: { + r: 5, + fill: "#fff", + "fill-opacity": 1, + stroke: "#000", + "stroke-width": 1, + "stroke-opacity": 0.4, + }, + }, + markers: [ + { + latLng: [35.8617, 104.1954], + name: "China : 250", }, { - latLng : [25.2744, 133.7751], - name : 'AustrCalia : 250' + latLng: [25.2744, 133.7751], + name: "AustrCalia : 250", }, { - latLng : [36.77, -119.41], - name : 'USA : 82%' + latLng: [36.77, -119.41], + name: "USA : 82%", }, { - latLng : [55.37, -3.41], - name : 'UK : 250' + latLng: [55.37, -3.41], + name: "UK : 250", }, { - latLng : [25.20, 55.27], - name : 'UAE : 250' - }], + latLng: [25.2, 55.27], + name: "UAE : 250", + }, + ], - series: { - regions: [{ - values: { - "US": '#487FFF ', - "SA": '#487FFF', - "AU": '#487FFF', - "CN": '#487FFF', - "GB": '#487FFF', - }, - attribute: 'fill' - }] - }, - hoverOpacity: null, - normalizeFunction: 'linear', - zoomOnScroll: false, - scaleColors: ['#000000', '#000000'], - selectedColor: '#000000', - selectedRegions: [], - enableZoom: false, - hoverColor: '#fff', - }); - // ================================ J Vector Map End ================================ \ No newline at end of file + series: { + regions: [ + { + values: { + US: "#487FFF ", + SA: "#487FFF", + AU: "#487FFF", + CN: "#487FFF", + GB: "#487FFF", + }, + attribute: "fill", + }, + ], + }, + hoverOpacity: null, + normalizeFunction: "linear", + zoomOnScroll: false, + scaleColors: ["#000000", "#000000"], + selectedColor: "#000000", + selectedRegions: [], + enableZoom: false, + hoverColor: "#fff", +}); +// ================================ J Vector Map End ================================ diff --git a/public/assets/json/backend/jadwal.json b/public/assets/json/backend/jadwal.json new file mode 100644 index 0000000..1099e0e --- /dev/null +++ b/public/assets/json/backend/jadwal.json @@ -0,0 +1,92 @@ +[ + { + "id": 1, + "title": "PT Mitra Usaha Sejahtera", + "start": "2025-05-05T10:30:00", + "end": "2025-05-05T14:30:00", + "allDay": false, + "documentType": "amdal", + "description": "Sidang AMDAL untuk evaluasi dampak lingkungan proyek pembangunan pabrik" + }, + { + "id": 2, + "title": "PT Buana Karya", + "start": "2025-05-07T13:00:00", + "end": "2025-05-07T15:00:00", + "allDay": false, + "documentType": "pertek", + "description": "Sidang PERTEK untuk persetujuan teknis pembangunan IPAL" + }, + { + "id": 3, + "title": "CV Maju Bersama", + "start": "2025-05-08T09:00:00", + "end": "2025-05-08T11:30:00", + "allDay": false, + "documentType": "andal_rkl_rpl", + "description": "Presentasi dan evaluasi dokumen ANDAL RKL-RPL" + }, + { + "id": 4, + "title": "PT Sejahtera Mandiri", + "start": "2025-05-09T11:30:00", + "end": "2025-05-09T13:00:00", + "allDay": false, + "documentType": "ukl_upl", + "description": "Pemaparan dan diskusi dokumen UKL-UPL proyek perumahan" + }, + { + "id": 5, + "title": "PT Energi Alternatif Indonesia", + "start": "2025-05-12T10:00:00", + "end": "2025-05-12T12:30:00", + "allDay": false, + "documentType": "addendum", + "description": "Pembahasan addendum AMDAL untuk perluasan area operasional" + }, + { + "id": 6, + "title": "PT Sinar Terang", + "start": "2025-05-14T09:00:00", + "end": "2025-05-14T11:00:00", + "allDay": false, + "documentType": "dplh", + "description": "Presentasi Dokumen Pengelolaan Lingkungan Hidup (DPLH)" + }, + { + "id": 7, + "title": "PT Hijau Asri", + "start": "2025-05-15T13:30:00", + "end": "2025-05-15T16:00:00", + "allDay": false, + "documentType": "delh", + "description": "Evaluasi Dokumen Evaluasi Lingkungan Hidup (DELH)" + }, + { + "id": 8, + "title": "Cuti Bersama Idulfitri", + "start": "2025-03-07", + "end": "2025-03-12", + "allDay": true, + "className": "important", + "description": "Cuti bersama lebaran" + }, + { + "id": 9, + "title": "Jumat Agung", + "start": "2025-03-18", + "end": "2025-03-18", + "allDay": true, + "className": "important", + "description": "Libur nasional" + }, + { + "id": 10, + "title": "PT Falih Ananta", + "start": "07\/05\/2025 11:00", + "end": "07\/05\/2025 16:00", + "allDay": false, + "documentType": "pertek", + "description": "Tester" + } +] \ No newline at end of file diff --git a/resources/views/components/backend/jadwal/filter.blade.php b/resources/views/components/backend/jadwal/filter.blade.php new file mode 100644 index 0000000..c12f677 --- /dev/null +++ b/resources/views/components/backend/jadwal/filter.blade.php @@ -0,0 +1,306 @@ + diff --git a/resources/views/components/backend/jadwal/modal_add.blade.php b/resources/views/components/backend/jadwal/modal_add.blade.php new file mode 100644 index 0000000..453d921 --- /dev/null +++ b/resources/views/components/backend/jadwal/modal_add.blade.php @@ -0,0 +1,107 @@ + diff --git a/resources/views/components/backend/jadwal/modal_delete.blade.php b/resources/views/components/backend/jadwal/modal_delete.blade.php new file mode 100644 index 0000000..5891232 --- /dev/null +++ b/resources/views/components/backend/jadwal/modal_delete.blade.php @@ -0,0 +1,20 @@ + diff --git a/resources/views/components/backend/jadwal/modal_edit.blade.php b/resources/views/components/backend/jadwal/modal_edit.blade.php new file mode 100644 index 0000000..d52e7cb --- /dev/null +++ b/resources/views/components/backend/jadwal/modal_edit.blade.php @@ -0,0 +1,92 @@ + diff --git a/resources/views/components/backend/jadwal/modal_view.blade.php b/resources/views/components/backend/jadwal/modal_view.blade.php new file mode 100644 index 0000000..dad1b94 --- /dev/null +++ b/resources/views/components/backend/jadwal/modal_view.blade.php @@ -0,0 +1,35 @@ + diff --git a/resources/views/components/head.blade.php b/resources/views/components/head.blade.php index 67465d4..44cd343 100644 --- a/resources/views/components/head.blade.php +++ b/resources/views/components/head.blade.php @@ -58,6 +58,7 @@ {{-- custom css --}} {!! $css ?? '' !!} + @stack('css') diff --git a/resources/views/components/sidebar.blade.php b/resources/views/components/sidebar.blade.php index b96fbc8..e652103 100644 --- a/resources/views/components/sidebar.blade.php +++ b/resources/views/components/sidebar.blade.php @@ -14,18 +14,18 @@
  • - Dashboard + DASHBOARD
  • - Penjadwalan + PENJADWALAN
  • - + {{-- --}} - + {{-- --}} - + {{-- --}}
    -
    -
    -
    -
    -
    -
    -
    -

    Izin Proses

    -
    500
    -
    -
    - -
    + RINTEK + + + + + + +
    +
    +
    +
    + + + +
    + + +
    +
    + +
    +
    +
    +
    +
    +

    Total Pengajuan

    +

    1,250

    + +12% dari bulan lalu +
    +
    +
    -

    - - +200 - - 30 Hari Terakhir -

    -
    +
    -
    -
    -
    -
    -
    -
    Izin Terbit Rintek
    - + +
    +
    +
    +
    +
    +

    Izin Disetujui

    +

    850

    + +8.2%
    -
    -
    $27,200
    - - 10% - - + $1500 Per Day -
    -
    -
    -
    -
    -
    -
    -
    -
    Izin Terbit PerTek
    -
    -
    5,000
    -

    - - 10% - - - - 20 Per Day -

    -
    - -
    - -
    -
    -
    - {{--
    -
    -
    -
    -
    Users Overview
    -
    - -
    -
    - - -
    - -
      -
    • - - New: - 500 - -
    • -
    • - - Subscribed: - 300 - -
    • -
    - -
    -
    -
    --}} - {{--
    -
    -
    - -
    - - - View All - - -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Users Registered OnPlanStatus
    -
    - -
    -
    Dianne Russell
    - redaniel@gmail.com -
    -
    -
    27 Mar 2024Free - Active -
    -
    - -
    -
    Wade Warren
    - xterris@gmail.com -
    -
    -
    27 Mar 2024Basic - Active -
    -
    - -
    -
    Albert Flores
    - seannand@mail.ru -
    -
    -
    27 Mar 2024Standard - Active -
    -
    - -
    -
    Bessie Cooper
    - igerrin@gmail.com -
    -
    -
    27 Mar 2024Business - Active -
    -
    - -
    -
    Arlene McCoy
    - fellora@mail.ru -
    -
    -
    27 Mar 2024Enterprise - Active -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Users Registered OnPlanStatus
    -
    - -
    -
    Dianne Russell
    - redaniel@gmail.com -
    -
    -
    27 Mar 2024Free - Active -
    -
    - -
    -
    Wade Warren
    - xterris@gmail.com -
    -
    -
    27 Mar 2024Basic - Active -
    -
    - -
    -
    Albert Flores
    - seannand@mail.ru -
    -
    -
    27 Mar 2024Standard - Active -
    -
    - -
    -
    Bessie Cooper
    - igerrin@gmail.com -
    -
    -
    27 Mar 2024Business - Active -
    -
    - -
    -
    Arlene McCoy
    - fellora@mail.ru -
    -
    -
    27 Mar 2024Enterprise - Active -
    -
    -
    +
    +
    -
    -
    -
    -
    -
    Top Performer
    - - View All - - -
    - -
    - -
    -
    - -
    -
    Dianne Russell
    - Agent ID: 36254 -
    -
    - $20 -
    - -
    -
    - -
    -
    Wade Warren
    - Agent ID: 36254 -
    -
    - $20 -
    - -
    -
    - -
    -
    Albert Flores
    - Agent ID: 36254 -
    -
    - $30 -
    - -
    -
    - -
    -
    Bessie Cooper
    - Agent ID: 36254 -
    -
    - $40 -
    - -
    -
    - -
    -
    Arlene McCoy
    - Agent ID: 36254 -
    -
    - $10 -
    - -
    -
    - -
    -
    Arlene McCoy
    - Agent ID: 36254 -
    -
    - $10 -
    - -
    - -
    -
    -
    -
    -
    -
    -
    -
    Top Countries
    - -
    - -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    USA
    - 1,240 Users -
    -
    -
    -
    -
    -
    -
    -
    - 80% -
    -
    - -
    -
    - -
    -
    Japan
    - 1,240 Users -
    -
    -
    -
    -
    -
    -
    -
    - 60% -
    -
    - -
    -
    - -
    -
    France
    - 1,240 Users -
    -
    -
    -
    -
    -
    -
    -
    - 49% -
    -
    - -
    -
    - -
    -
    Germany
    - 1,240 Users -
    -
    -
    -
    -
    -
    -
    -
    - 100% -
    -
    - -
    -
    - -
    -
    South Korea
    - 1,240 Users -
    -
    -
    -
    -
    -
    -
    -
    - 30% -
    -
    -
    -
    - -
    -
    USA
    - 1,240 Users -
    -
    -
    -
    -
    -
    -
    -
    - 80% -
    -
    -
    -
    -
    - -
    -
    -
    -
    --}} -{{-- -
    -
    -
    -
    -
    Generated Content
    - -
    - -
      -
    • - - Word: - 500 - -
    • -
    • - - Image: - 300 - -
    • -
    - -
    -
    -
    - -
    -
    -
    --}}
    + +
    +
    +
    +
    +
    +

    Dalam Proses

    +

    200

    + sedang ditinjau +
    +
    + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +

    Izin Ditolak

    +

    150

    + perlu perbaikan +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    Top 5 Izin Tercepat (Pertek)
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NoNama IzinTotal IzinWaktu Rata-Rata (Pemohon)Waktu Rata-Rata (Petugas)
    1SERTIFIKAT LAIK OPERASI - PEMENUHAN BAKU MUTU EMISI12558 Jam 29 Menit19 Jam 12 Menit
    2PERSETUJUAN TEKNIS - PEMENUHAN BAKU MUTU AIR LIMBAH (PEMANFAATAN)8936 Jam 0 Menit26 Jam 24 Menit
    3SERTIFIKAT LAIK OPERASI - PEMENUHAN BAKU MUTU AIR LIMBAH (PEMBUANGAN)15643 Jam 12 Menit31 Jam 12 Menit
    4PERSETUJUAN TEKNIS - PEMENUHAN BAKU MUTU AIR LIMBAH (PEMBUANGAN)7350 Jam 24 Menit38 Jam 24 Menit
    5SERTIFIKAT LAIK OPERASI - PEMENUHAN BAKU MUTU AIR LIMBAH (PEMANFAATAN)9255 Jam 12 Menit45 Jam 36 Menit
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    Grafik Trend Pengajuan Pertek/SLO
    + +
    +
    +
    1,450
    + + 15% + + + 125 Pengajuan/Bulan +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    Grafik Trend Distribusi Jenis Izin
    + Bidang Pertek +
    + +
    +
      +
    • + + Usaha Perdagangan & Jasa +
    • +
    • + + Property +
    • +
    • + + Manufaktur +
    • +
    • + + Lainnya +
    • +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    +
    +

    Total Pengajuan

    +

    892

    + +8% dari bulan lalu +
    +
    + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +

    Izin Disetujui

    +

    675

    + +6.5% +
    +
    + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +

    Dalam Proses

    +

    147

    + sedang ditinjau +
    +
    + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +

    Izin Ditolak

    +

    70

    + perlu perbaikan +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    Top 5 Izin Tercepat (Rintek)
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NoNama IzinTotal IzinWaktu Rata-Rata (Pemohon)Waktu Rata-Rata (Petugas)
    1REKOMENDASI TEKNIS KEGIATAN PEMANFAATAN RUANG9842 Jam 15 Menit18 Jam 30 Menit
    2PERSETUJUAN TEKNIS BANGUNAN GEDUNG7635 Jam 45 Menit22 Jam 12 Menit
    3IZIN MENDIRIKAN BANGUNAN13448 Jam 20 Menit28 Jam 45 Menit
    4SERTIFIKAT LAIK FUNGSI BANGUNAN6752 Jam 10 Menit35 Jam 20 Menit
    5PERSETUJUAN TEKNIS PRASARANA WILAYAH8960 Jam 30 Menit40 Jam 15 Menit
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    Grafik Trend Pengajuan Rintek
    + +
    +
    +
    892
    + + 8% + + + 67 Pengajuan/Bulan +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    Grafik Trend Distribusi Jenis Izin
    + Bidang Rintek +
    + +
    +
      +
    • + + Bangunan Gedung +
    • +
    • + + Infrastruktur +
    • +
    • + + Tata Ruang +
    • +
    • + + Lainnya +
    • +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    +
    +

    Total Pengajuan

    +

    456

    + +5% dari bulan lalu +
    +
    + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +

    Izin Disetujui

    +

    298

    + +4.8% +
    +
    + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +

    Dalam Proses

    +

    112

    + sedang ditinjau +
    +
    + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +

    Izin Ditolak

    +

    46

    + perlu perbaikan +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    Top 5 Izin Tercepat (Amdal)
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NoNama IzinTotal IzinWaktu Rata-Rata (Pemohon)Waktu Rata-Rata (Petugas)
    1IZIN LINGKUNGAN KEGIATAN USAHA8772 Jam 30 Menit45 Jam 15 Menit
    2SPPL (SURAT PERNYATAAN PENGELOLAAN LINGKUNGAN)6548 Jam 20 Menit32 Jam 45 Menit
    3UKL-UPL (UPAYA KELOLA UPAYA PANTAU LINGKUNGAN)9896 Jam 45 Menit68 Jam 30 Menit
    4AMDAL (ANALISIS MENGENAI DAMPAK LINGKUNGAN)43120 Jam 15 Menit85 Jam 40 Menit
    5IZIN PEMBUANGAN AIR LIMBAH7684 Jam 50 Menit58 Jam 25 Menit
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    Grafik Trend Pengajuan Amdal
    + +
    +
    +
    456
    + + 5% + + + 22 Pengajuan/Bulan +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    Grafik Trend Distribusi Jenis Izin
    + Bidang Amdal +
    + +
    +
      +
    • + + Izin Lingkungan +
    • +
    • + + SPPL +
    • +
    • + + UKL-UPL +
    • +
    • + + AMDAL +
    • +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + @endsection + +@push('css') + + +@endpush + +@push('scripts') + + + + +@endpush diff --git a/resources/views/layout/layout.blade.php b/resources/views/layout/layout.blade.php index bace0ed..a4f23ab 100644 --- a/resources/views/layout/layout.blade.php +++ b/resources/views/layout/layout.blade.php @@ -13,7 +13,7 @@
    - + {{-- --}} @yield('content') @@ -23,6 +23,7 @@ + @stack('scripts') diff --git a/resources/views/pengguna/index_user.blade.php b/resources/views/pengguna/index_user.blade.php index e69de29..7843efd 100644 --- a/resources/views/pengguna/index_user.blade.php +++ b/resources/views/pengguna/index_user.blade.php @@ -0,0 +1,459 @@ +@extends('layout.layout') +@php + $title='Data Pengguna'; + $subTitle = 'Data Pengguna'; + $script =''; +@endphp + +@section('content') + +
    +
    +
    + Show + + + +
    + + + Add New User + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + {{--
    + +
    --}} + No. +
    +
    NameEmailRolesStatusAction
    +
    + + 01 +
    +
    +
    + +
    + Kathryn Murphy +
    +
    +
    osgoodwy@gmail.comSekretariat + Active + +
    + + + +
    +
    +
    + + 02 +
    +
    +
    + +
    + Annette Black +
    +
    +
    redaniel@gmail.comTim Teknis + Inactive + +
    + + + +
    +
    +
    + + 03 +
    +
    +
    + +
    + Ronald Richards +
    +
    +
    seannand@mail.ruTim Teknis + Active + +
    + + + +
    +
    +
    + + 04 +
    +
    +
    + +
    + Eleanor Pena +
    +
    +
    miyokoto@mail.ruTim Teknis + Active + +
    + + + +
    +
    +
    + + 05 +
    +
    +
    + +
    + Leslie Alexander +
    +
    +
    icadahli@gmail.comTim Teknis + Inactive + +
    + + + +
    +
    +
    + + 06 +
    +
    +
    + +
    + Albert Flores +
    +
    +
    warn@mail.ruTim Teknis + Active + +
    + + + +
    +
    +
    + + 07 +
    +
    +
    + +
    + Jacob Jones +
    +
    +
    zitka@mail.ruKepala Dinas + Active + +
    + + + +
    +
    +
    + + 08 +
    +
    +
    + +
    + Jerome Bell +
    +
    +
    igerrin@gmail.comKepala Dinas + Inactive + +
    + + + +
    +
    +
    + + 09 +
    +
    +
    + +
    + Marvin McKinney +
    +
    +
    maka@yandex.ruKepala Dinas + Active + +
    + + + +
    +
    +
    + + 10 +
    +
    +
    + +
    + Cameron Williamson +
    +
    +
    danten@mail.ruKepala Dinas + Active + +
    + + + +
    +
    +
    + +
    + Showing 1 to 10 of 12 entries + +
    +
    +
    + +@endsection diff --git a/resources/views/penjadwalan/jadwal_sidang.blade.php b/resources/views/penjadwalan/jadwal_sidang.blade.php index 33936f8..c3e0a2a 100644 --- a/resources/views/penjadwalan/jadwal_sidang.blade.php +++ b/resources/views/penjadwalan/jadwal_sidang.blade.php @@ -1,496 +1,112 @@ @extends('layout.layout') @php - $title='Jadwal Sidang'; - $subTitle = 'Jadwal Sidang'; - $script = ' - - '; +$title='Jadwal Sidang'; +$subTitle = 'Jadwal Sidang'; +$script = ' + + + +'; @endphp @section('content') -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    - - Today, 10:30 PM - 02:30 AM -
    - PT. Mitra Usaha Sejahtera -
    - -
    - - - {{-- List Penjadwalan --}} - {{--
    -
    -
    - - Today, 10:30 PM - 02:30 AM -
    - PT. Mitra Usaha Sejahtera -
    - -
    --}} - {{--
    -
    -
    - - Today, 10:30 PM - 02:30 AM -
    - PT. Mitra Usaha Sejahtera -
    - -
    -
    -
    -
    - - Today, 10:30 PM - 02:30 AM -
    - PT. Mitra Usaha Sejahtera -
    - -
    -
    -
    -
    - - Today, 10:30 PM - 02:30 AM -
    - PT. Mitra Usaha Sejahtera -
    - -
    --}} +
    +
    +
    +
    +
    + +
    + +
    +
    Filter Jenis Dokumen
    +
    + +
    +
    + +
    +
    +
    +
    +
    + AMDAL +
    + Today, 10:30 PM - 02:30 AM
    + PT. Mitra Usaha Sejahtera
    +
    -
    -
    -
    -
    -
    -
    -
    -
    -
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    - - + +@include('components.backend.jadwal.modal_edit') - - + +@include('components.backend.jadwal.modal_delete') - - - - - + +@include('components.backend.jadwal.filter') @endsection diff --git a/resources/views/pertek/arahan/admin_modal_detail_arahan.blade.php b/resources/views/pertek/arahan/admin_modal_detail_arahan.blade.php deleted file mode 100644 index 49a6ad1..0000000 --- a/resources/views/pertek/arahan/admin_modal_detail_arahan.blade.php +++ /dev/null @@ -1,378 +0,0 @@ - - - - diff --git a/resources/views/pertek/arahan/index_arahan.blade.php b/resources/views/pertek/arahan/index_arahan.blade.php index bbe741e..2593526 100644 --- a/resources/views/pertek/arahan/index_arahan.blade.php +++ b/resources/views/pertek/arahan/index_arahan.blade.php @@ -48,15 +48,10 @@
    - {{-- K24/250319E5CC8C330 --}} - K24/Verifikator - 65D47C214422D + (Subkel Kerusakan Lingkungan) + (User) - - @include('pertek.arahan.modal_detail_arahan') - {{-- @include('pertek.arahan.admin_modal_detail_arahan') --}} -
    {{-- --}} @@ -79,5 +74,4 @@
    - @endsection diff --git a/resources/views/pertek/arahan/modal_detail_arahan.blade.php b/resources/views/pertek/arahan/modal_detail_arahan.blade.php deleted file mode 100644 index a46289f..0000000 --- a/resources/views/pertek/arahan/modal_detail_arahan.blade.php +++ /dev/null @@ -1,158 +0,0 @@ - - - - diff --git a/resources/views/pertek/arahan/user_view_arahan.blade.php b/resources/views/pertek/arahan/user_view_arahan.blade.php index 91068ca..747a3cc 100644 --- a/resources/views/pertek/arahan/user_view_arahan.blade.php +++ b/resources/views/pertek/arahan/user_view_arahan.blade.php @@ -15,9 +15,11 @@
    Detail Permohonan
    -
    +
    + +
    @@ -479,6 +489,27 @@
    + + +
    +
    + +
    +
    + +
    Tanggapan Arahan
    +
    +
    + +
    + +
    + +
    +
    + +
    +
    diff --git a/resources/views/pertek/arahan/verifikator_view_arahan.blade.php b/resources/views/pertek/arahan/verifikator_view_arahan.blade.php index 4c94ecf..7dd8442 100644 --- a/resources/views/pertek/arahan/verifikator_view_arahan.blade.php +++ b/resources/views/pertek/arahan/verifikator_view_arahan.blade.php @@ -15,6 +15,7 @@
    @@ -774,6 +782,75 @@ });
    + + +
    +
    + +
    +
    + +
    Tanggapan Arahan
    +
    +
    +
    +
    +
    +
    +
    +
    1
    + +
    +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + File Preview +
    + +
    +
    +
    +
    +
    +
    +

    +
    + +
    +
    +
    +
    + Berhasil diupload +
    +
    +
    + +
    + Maks. berukuran 20 MB dan berformat pdf + +
    +
    +
    +
    + + +
    +
    + +
    +
    @@ -830,4 +907,6 @@
    + + @endsection diff --git a/resources/views/pertek/slo/index_slo.blade.php b/resources/views/pertek/slo/index_slo.blade.php index b980dfc..c6e79cb 100644 --- a/resources/views/pertek/slo/index_slo.blade.php +++ b/resources/views/pertek/slo/index_slo.blade.php @@ -47,8 +47,6 @@ K23/250120CAEFC3A7E - @include('pertek.arahan.modal_detail_arahan') - {{-- @include('pertek.arahan.admin_modal_detail_arahan') --}}
    diff --git a/resources/views/pertek/subkel/surat.blade.php b/resources/views/pertek/subkel/surat.blade.php index d55cfee..f3c87c5 100644 --- a/resources/views/pertek/subkel/surat.blade.php +++ b/resources/views/pertek/subkel/surat.blade.php @@ -1,5 +1,10 @@ @extends('layout.layout') +@php +$css = ' +'; +@endphp + @section('content')
    @@ -15,49 +20,49 @@
    - +
    - +
    - +
    - +
    - +
    - +
    -