Showing
25 changed files
with
0 additions
and
4180 deletions
Too many changes to show.
To preserve performance only 25 of 25+ files are displayed.
| 1 | -table.dataTable{clear:both;margin-top:6px!important;margin-bottom:6px!important;max-width:none!important;border-collapse:separate!important;border-spacing:0}table.dataTable td,table.dataTable th{box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:400;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable>thead>tr>td:active,table.dataTable>thead>tr>th:active{outline:none}table.dataTable>thead>tr>td:not(.sorting_disabled),table.dataTable>thead>tr>th:not(.sorting_disabled){padding-right:30px}table.dataTable>thead .sorting,table.dataTable>thead .sorting_asc,table.dataTable>thead .sorting_asc_disabled,table.dataTable>thead .sorting_desc,table.dataTable>thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable>thead .sorting:after,table.dataTable>thead .sorting:before,table.dataTable>thead .sorting_asc:after,table.dataTable>thead .sorting_asc:before,table.dataTable>thead .sorting_asc_disabled:after,table.dataTable>thead .sorting_asc_disabled:before,table.dataTable>thead .sorting_desc:after,table.dataTable>thead .sorting_desc:before,table.dataTable>thead .sorting_desc_disabled:after,table.dataTable>thead .sorting_desc_disabled:before{position:absolute;bottom:.9em;display:block;opacity:.3}table.dataTable>thead .sorting:before,table.dataTable>thead .sorting_asc:before,table.dataTable>thead .sorting_asc_disabled:before,table.dataTable>thead .sorting_desc:before,table.dataTable>thead .sorting_desc_disabled:before{right:1em;content:"↑"}table.dataTable>thead .sorting:after,table.dataTable>thead .sorting_asc:after,table.dataTable>thead .sorting_asc_disabled:after,table.dataTable>thead .sorting_desc:after,table.dataTable>thead .sorting_desc_disabled:after{right:.5em;content:"↓"}table.dataTable>thead .sorting_asc:before,table.dataTable>thead .sorting_desc:after{opacity:1}table.dataTable>thead .sorting_asc_disabled:before,table.dataTable>thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}div.dataTables_scrollBody table{border-top:none;margin-top:0!important;margin-bottom:0!important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting:before,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_asc:before,div.dataTables_scrollBody table thead .sorting_desc:after,div.dataTables_scrollBody table thead .sorting_desc:before{display:none}div.dataTables_scrollBody table tbody tr:first-child td,div.dataTables_scrollBody table tbody tr:first-child th{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_paginate{text-align:center}div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center!important}}table.dataTable.table-sm>thead>tr>th:not(.sorting_disabled){padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable{border-right-width:0}table.table-bordered.dataTable td,table.table-bordered.dataTable th{border-left-width:0}table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable th:last-child{border-right-width:1px}div.dataTables_scrollHead table.table-bordered,table.table-bordered.dataTable tbody td,table.table-bordered.dataTable tbody th{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0} | ||
| 2 | -/*! | ||
| 3 | - * Quill Editor v1.3.7 | ||
| 4 | - * https://quilljs.com/ | ||
| 5 | - * Copyright (c) 2014, Jason Chen | ||
| 6 | - * Copyright (c) 2013, salesforce.com | ||
| 7 | - */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{margin:0;padding:0;counter-reset:a b c d e f g h i}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li:before,.ql-editor ul[data-checked=true]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:a b c d e f g h i;counter-increment:j}.ql-editor ol li:before{content:counter(j,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:a}.ql-editor ol li.ql-indent-1:before{content:counter(a,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:b c d e f g h i}.ql-editor ol li.ql-indent-2{counter-increment:b}.ql-editor ol li.ql-indent-2:before{content:counter(b,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:c d e f g h i}.ql-editor ol li.ql-indent-3{counter-increment:c}.ql-editor ol li.ql-indent-3:before{content:counter(c,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:d e f g h i}.ql-editor ol li.ql-indent-4{counter-increment:d}.ql-editor ol li.ql-indent-4:before{content:counter(d,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:e f g h i}.ql-editor ol li.ql-indent-5{counter-increment:e}.ql-editor ol li.ql-indent-5:before{content:counter(e,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:f g h i}.ql-editor ol li.ql-indent-6{counter-increment:f}.ql-editor ol li.ql-indent-6:before{content:counter(f,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:g h i}.ql-editor ol li.ql-indent-7{counter-increment:g}.ql-editor ol li.ql-indent-7:before{content:counter(g,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:h i}.ql-editor ol li.ql-indent-8{counter-increment:h}.ql-editor ol li.ql-indent-8:before{content:counter(h,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:i}.ql-editor ol li.ql-indent-9{counter-increment:i}.ql-editor ol li.ql-indent-9:before{content:counter(i,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover{color:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter{stroke:#06c}@media (pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-stroke.ql-thin,.ql-snow .ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-item:before,.ql-snow .ql-picker.ql-header .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-item:before,.ql-snow .ql-picker.ql-font .ql-picker-label:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-item:before,.ql-snow .ql-picker.ql-size .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.2)}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc} | ||
| 8 | -.gu-mirror{position:fixed!important;margin:0!important;z-index:1!important;opacity:.8}.gu-hide{display:none!important}.gu-unselectable{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.gu-transit{opacity:.2} | ||
| 9 | -.apexcharts-canvas{position:relative;user-select:none}.apexcharts-canvas ::-webkit-scrollbar{-webkit-appearance:none;width:6px}.apexcharts-canvas ::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,.5);box-shadow:0 0 1px hsla(0,0%,100%,.5);-webkit-box-shadow:0 0 1px hsla(0,0%,100%,.5)}.apexcharts-inner{position:relative}.apexcharts-text tspan{font-family:inherit}.legend-mouseover-inactive{transition:all .15s ease;opacity:.2}.apexcharts-series-collapsed{opacity:0}.apexcharts-tooltip{border-radius:5px;box-shadow:2px 2px 6px -4px #999;cursor:default;font-size:14px;left:62px;opacity:0;pointer-events:none;position:absolute;top:20px;display:flex;flex-direction:column;overflow:hidden;white-space:nowrap;z-index:3;transition:all .15s ease}.apexcharts-tooltip.apexcharts-active{opacity:1;transition:all .15s ease}.apexcharts-tooltip.apexcharts-theme-light{border:1px solid #e3e3e3;background:hsla(0,0%,100%,.96)}.apexcharts-tooltip.apexcharts-theme-dark{color:#fff;background:rgba(30,30,30,.8)}.apexcharts-tooltip *{font-family:inherit}.apexcharts-tooltip-title{padding:6px;font-size:15px;margin-bottom:4px}.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title{background:#eceff1;border-bottom:1px solid #ddd}.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title{background:rgba(0,0,0,.7);border-bottom:1px solid #333}.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value{display:inline-block;margin-left:5px}.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty{display:none}.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value{font-weight:600}.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value{padding:6px 0 5px}.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value{display:flex}.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty){margin-top:-6px}.apexcharts-tooltip-marker{width:12px;height:12px;position:relative;top:0;margin-right:10px;border-radius:50%}.apexcharts-tooltip-series-group{padding:0 10px;display:none;text-align:left;justify-content:left;align-items:center}.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker{opacity:1}.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child{padding-bottom:4px}.apexcharts-tooltip-series-group-hidden{opacity:0;height:0;line-height:0;padding:0!important}.apexcharts-tooltip-y-group{padding:6px 0 5px}.apexcharts-custom-tooltip,.apexcharts-tooltip-box{padding:4px 8px}.apexcharts-tooltip-boxPlot{display:flex;flex-direction:column-reverse}.apexcharts-tooltip-box>div{margin:4px 0}.apexcharts-tooltip-box span.value{font-weight:700}.apexcharts-tooltip-rangebar{padding:5px 8px}.apexcharts-tooltip-rangebar .category{font-weight:600;color:#777}.apexcharts-tooltip-rangebar .series-name{font-weight:700;display:block;margin-bottom:5px}.apexcharts-xaxistooltip{opacity:0;padding:9px 10px;pointer-events:none;color:#373d3f;font-size:13px;text-align:center;border-radius:2px;position:absolute;z-index:1;background:#eceff1;border:1px solid #90a4ae;transition:all .15s ease}.apexcharts-xaxistooltip.apexcharts-theme-dark{background:rgba(0,0,0,.7);border:1px solid rgba(0,0,0,.5);color:#fff}.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before{left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-xaxistooltip:after{border-color:rgba(236,239,241,0);border-width:6px;margin-left:-6px}.apexcharts-xaxistooltip:before{border-color:rgba(144,164,174,0);border-width:7px;margin-left:-7px}.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before{bottom:100%}.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before{top:100%}.apexcharts-xaxistooltip-bottom:after{border-bottom-color:#eceff1}.apexcharts-xaxistooltip-bottom:before{border-bottom-color:#90a4ae}.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before{border-bottom-color:rgba(0,0,0,.5)}.apexcharts-xaxistooltip-top:after{border-top-color:#eceff1}.apexcharts-xaxistooltip-top:before{border-top-color:#90a4ae}.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before{border-top-color:rgba(0,0,0,.5)}.apexcharts-xaxistooltip.apexcharts-active{opacity:1;transition:all .15s ease}.apexcharts-yaxistooltip{opacity:0;padding:4px 10px;pointer-events:none;color:#373d3f;font-size:13px;text-align:center;border-radius:2px;position:absolute;z-index:1;background:#eceff1;border:1px solid #90a4ae}.apexcharts-yaxistooltip.apexcharts-theme-dark{background:rgba(0,0,0,.7);border:1px solid rgba(0,0,0,.5);color:#fff}.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before{top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-yaxistooltip:after{border-color:rgba(236,239,241,0);border-width:6px;margin-top:-6px}.apexcharts-yaxistooltip:before{border-color:rgba(144,164,174,0);border-width:7px;margin-top:-7px}.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before{left:100%}.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before{right:100%}.apexcharts-yaxistooltip-left:after{border-left-color:#eceff1}.apexcharts-yaxistooltip-left:before{border-left-color:#90a4ae}.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before{border-left-color:rgba(0,0,0,.5)}.apexcharts-yaxistooltip-right:after{border-right-color:#eceff1}.apexcharts-yaxistooltip-right:before{border-right-color:#90a4ae}.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before{border-right-color:rgba(0,0,0,.5)}.apexcharts-yaxistooltip.apexcharts-active{opacity:1}.apexcharts-yaxistooltip-hidden{display:none}.apexcharts-xcrosshairs,.apexcharts-ycrosshairs{pointer-events:none;opacity:0;transition:all .15s ease}.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active{opacity:1;transition:all .15s ease}.apexcharts-ycrosshairs-hidden{opacity:0}.apexcharts-selection-rect{cursor:move}.svg_select_boundingRect,.svg_select_points_rot{pointer-events:none;opacity:0;visibility:hidden}.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot{opacity:0;visibility:hidden}.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r{cursor:ew-resize;opacity:1;visibility:visible}.svg_select_points{fill:#efefef;stroke:#333;rx:2}.apexcharts-svg.apexcharts-zoomable.hovering-zoom{cursor:crosshair}.apexcharts-svg.apexcharts-zoomable.hovering-pan{cursor:move}.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon{cursor:pointer;width:20px;height:20px;line-height:24px;color:#6e8192;text-align:center}.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg{fill:#6e8192}.apexcharts-selection-icon svg{fill:#444;transform:scale(.76)}.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg{fill:#f3f4f5}.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg{fill:#008ffb}.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg{fill:#333}.apexcharts-menu-icon,.apexcharts-selection-icon{position:relative}.apexcharts-reset-icon{margin-left:5px}.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon{transform:scale(.85)}.apexcharts-zoomin-icon,.apexcharts-zoomout-icon{transform:scale(.7)}.apexcharts-zoomout-icon{margin-right:3px}.apexcharts-pan-icon{transform:scale(.62);position:relative;left:1px;top:0}.apexcharts-pan-icon svg{fill:#fff;stroke:#6e8192;stroke-width:2}.apexcharts-pan-icon.apexcharts-selected svg{stroke:#008ffb}.apexcharts-pan-icon:not(.apexcharts-selected):hover svg{stroke:#333}.apexcharts-toolbar{position:absolute;z-index:2;max-width:176px;text-align:right;border-radius:3px;padding:0 6px 2px;display:flex;justify-content:space-between;align-items:center}.apexcharts-menu{background:#fff;position:absolute;top:100%;border:1px solid #ddd;border-radius:3px;padding:3px;right:10px;opacity:0;min-width:110px;transition:all .15s ease;pointer-events:none}.apexcharts-menu.apexcharts-menu-open{opacity:1;pointer-events:all;transition:all .15s ease}.apexcharts-menu-item{padding:6px 7px;font-size:12px;cursor:pointer}.apexcharts-theme-light .apexcharts-menu-item:hover{background:#eee}.apexcharts-theme-dark .apexcharts-menu{background:rgba(0,0,0,.7);color:#fff}@media screen and (min-width:768px){.apexcharts-canvas:hover .apexcharts-toolbar{opacity:1}}.apexcharts-datalabel.apexcharts-element-hidden{opacity:0}.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label{cursor:default;pointer-events:none}.apexcharts-pie-label-delay{opacity:0;animation-name:a;animation-duration:.3s;animation-fill-mode:forwards;animation-timing-function:ease}.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points{opacity:0}.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-zoom-rect{pointer-events:none}.apexcharts-marker{transition:all .15s ease}@keyframes a{0%{opacity:0}to{opacity:1}}@keyframes b{0%{opacity:0}to{opacity:0}}.resize-triggers{animation:1ms b;visibility:hidden;opacity:0}.contract-trigger:before,.resize-triggers,.resize-triggers>div{content:" ";display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-triggers>div{background:#eee;overflow:auto}.contract-trigger:before{width:200%;height:200%} | ||
| 10 | -.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-overlay-pane svg,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;box-sizing:border-box;z-index:8}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:3}.leaflet-tile-pane{z-index:2}.leaflet-overlay-pane{z-index:3}.leaflet-shadow-pane{z-index:4}.leaflet-marker-pane{z-index:5}.leaflet-tooltip-pane{z-index:6}.leaflet-popup-pane{z-index:7}.leaflet-map-pane canvas{z-index:1}.leaflet-map-pane svg{z-index:2}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(https://www.17sucai.com/preview/776298/2021-08-03/datum/assets/css/backend-plugin.min.css#default);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:8;pointer-events:visiblePainted;pointer-events:auto}.leaflet-bottom,.leaflet-top{position:absolute;z-index:9;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-tile{will-change:opacity}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}.leaflet-zoom-anim .leaflet-zoom-animated{will-change:transform;transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline:0}.leaflet-container a{color:#0078a8}.leaflet-container a.leaflet-active{outline:2px solid orange}.leaflet-zoom-box{border:2px dotted #38f;background:hsla(0,0%,100%,.5)}.leaflet-container{font:12px/1.5 Helvetica Neue,Arial,Helvetica,sans-serif}.leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a,.leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(https://www.17sucai.com/preview/776298/2021-08-03/datum/assets/css/images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(https://www.17sucai.com/preview/776298/2021-08-03/datum/assets/css/images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers-expanded .leaflet-control-layers-toggle,.leaflet-control-layers .leaflet-control-layers-list{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(https://www.17sucai.com/preview/776298/2021-08-03/datum/assets/css/images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:#fff;background:hsla(0,0%,100%,.7);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-container .leaflet-control-attribution,.leaflet-container .leaflet-control-scale{font-size:11px}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;font-size:11px;white-space:nowrap;overflow:hidden;box-sizing:border-box;background:#fff;background:hsla(0,0%,100%,.5)}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 19px;line-height:1.4}.leaflet-popup-content p{margin:18px 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;padding:4px 4px 0 0;border:none;text-align:center;width:18px;height:14px;font:16px/14px Tahoma,Verdana,sans-serif;color:#c3c3c3;text-decoration:none;font-weight:700;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover{color:#999}.leaflet-popup-scrolled{overflow:auto;border-bottom:1px solid #ddd;border-top:1px solid #ddd}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678,M12=0.70710678,M21=-0.70710678,M22=0.70710678)}.leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-clickable{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff} |
Datum_UImodel/static/css/backend.css
deleted
100644 → 0
This diff could not be displayed because it is too large.
Datum_UImodel/static/css/css2.css
deleted
100644 → 0
| 1 | -/* latin-ext */ | ||
| 2 | -@font-face { | ||
| 3 | - font-family: 'DM Sans'; | ||
| 4 | - font-style: normal; | ||
| 5 | - font-weight: 400; | ||
| 6 | - font-display: swap; | ||
| 7 | - src: url(../font/rP2Hp2ywxg089UriCZ2IHSeH.woff2) format('woff2'); | ||
| 8 | - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; | ||
| 9 | -} | ||
| 10 | -/* latin */ | ||
| 11 | -@font-face { | ||
| 12 | - font-family: 'DM Sans'; | ||
| 13 | - font-style: normal; | ||
| 14 | - font-weight: 400; | ||
| 15 | - font-display: swap; | ||
| 16 | - src: url(../font/rP2Hp2ywxg089UriCZOIHQ.woff2) format('woff2'); | ||
| 17 | - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; | ||
| 18 | -} | ||
| 19 | -/* latin-ext */ | ||
| 20 | -@font-face { | ||
| 21 | - font-family: 'DM Sans'; | ||
| 22 | - font-style: normal; | ||
| 23 | - font-weight: 500; | ||
| 24 | - font-display: swap; | ||
| 25 | - src: url(../font/rP2Cp2ywxg089UriAWCrCBamC2QX.woff2) format('woff2'); | ||
| 26 | - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; | ||
| 27 | -} | ||
| 28 | -/* latin */ | ||
| 29 | -@font-face { | ||
| 30 | - font-family: 'DM Sans'; | ||
| 31 | - font-style: normal; | ||
| 32 | - font-weight: 500; | ||
| 33 | - font-display: swap; | ||
| 34 | - src: url(../font/rP2Cp2ywxg089UriAWCrCBimCw.woff2) format('woff2'); | ||
| 35 | - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; | ||
| 36 | -} | ||
| 37 | -/* latin-ext */ | ||
| 38 | -@font-face { | ||
| 39 | - font-family: 'DM Sans'; | ||
| 40 | - font-style: normal; | ||
| 41 | - font-weight: 700; | ||
| 42 | - font-display: swap; | ||
| 43 | - src: url(../font/rP2Cp2ywxg089UriASitCBamC2QX.woff2) format('woff2'); | ||
| 44 | - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; | ||
| 45 | -} | ||
| 46 | -/* latin */ | ||
| 47 | -@font-face { | ||
| 48 | - font-family: 'DM Sans'; | ||
| 49 | - font-style: normal; | ||
| 50 | - font-weight: 700; | ||
| 51 | - font-display: swap; | ||
| 52 | - src: url(../font/rP2Cp2ywxg089UriASitCBimCw.woff2) format('woff2'); | ||
| 53 | - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; | ||
| 54 | -} |
Datum_UImodel/static/css/main.css
deleted
100644 → 0
| 1 | - | ||
| 2 | -.fc { | ||
| 3 | - direction: ltr; | ||
| 4 | - text-align: left; | ||
| 5 | -} | ||
| 6 | - | ||
| 7 | -.fc-rtl { | ||
| 8 | - text-align: right; | ||
| 9 | -} | ||
| 10 | - | ||
| 11 | -body .fc { | ||
| 12 | - /* extra precedence to overcome jqui */ | ||
| 13 | - font-size: 1em; | ||
| 14 | -} | ||
| 15 | - | ||
| 16 | -/* Colors | ||
| 17 | ---------------------------------------------------------------------------------------------------*/ | ||
| 18 | -.fc-highlight { | ||
| 19 | - /* when user is selecting cells */ | ||
| 20 | - background: #bce8f1; | ||
| 21 | - opacity: 0.3; | ||
| 22 | -} | ||
| 23 | - | ||
| 24 | -.fc-bgevent { | ||
| 25 | - /* default look for background events */ | ||
| 26 | - background: #8fdf82; | ||
| 27 | - opacity: 0.3; | ||
| 28 | -} | ||
| 29 | - | ||
| 30 | -.fc-nonbusiness { | ||
| 31 | - /* default look for non-business-hours areas */ | ||
| 32 | - /* will inherit .fc-bgevent's styles */ | ||
| 33 | - background: #d7d7d7; | ||
| 34 | -} | ||
| 35 | - | ||
| 36 | -/* Popover | ||
| 37 | ---------------------------------------------------------------------------------------------------*/ | ||
| 38 | -.fc-popover { | ||
| 39 | - position: absolute; | ||
| 40 | - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); | ||
| 41 | -} | ||
| 42 | - | ||
| 43 | -.fc-popover .fc-header { | ||
| 44 | - /* TODO: be more consistent with fc-head/fc-body */ | ||
| 45 | - display: flex; | ||
| 46 | - flex-direction: row; | ||
| 47 | - justify-content: space-between; | ||
| 48 | - align-items: center; | ||
| 49 | - padding: 2px 4px; | ||
| 50 | -} | ||
| 51 | - | ||
| 52 | -.fc-rtl .fc-popover .fc-header { | ||
| 53 | - flex-direction: row-reverse; | ||
| 54 | -} | ||
| 55 | - | ||
| 56 | -.fc-popover .fc-header .fc-title { | ||
| 57 | - margin: 0 2px; | ||
| 58 | -} | ||
| 59 | - | ||
| 60 | -.fc-popover .fc-header .fc-close { | ||
| 61 | - cursor: pointer; | ||
| 62 | - opacity: 0.65; | ||
| 63 | - font-size: 1.1em; | ||
| 64 | -} | ||
| 65 | - | ||
| 66 | -/* Misc Reusable Components | ||
| 67 | ---------------------------------------------------------------------------------------------------*/ | ||
| 68 | -.fc-divider { | ||
| 69 | - border-style: solid; | ||
| 70 | - border-width: 1px; | ||
| 71 | -} | ||
| 72 | - | ||
| 73 | -hr.fc-divider { | ||
| 74 | - height: 0; | ||
| 75 | - margin: 0; | ||
| 76 | - padding: 0 0 2px; | ||
| 77 | - /* height is unreliable across browsers, so use padding */ | ||
| 78 | - border-width: 1px 0; | ||
| 79 | -} | ||
| 80 | - | ||
| 81 | -.fc-bg, | ||
| 82 | -.fc-bgevent-skeleton, | ||
| 83 | -.fc-highlight-skeleton, | ||
| 84 | -.fc-mirror-skeleton { | ||
| 85 | - /* these element should always cling to top-left/right corners */ | ||
| 86 | - position: absolute; | ||
| 87 | - top: 0; | ||
| 88 | - left: 0; | ||
| 89 | - right: 0; | ||
| 90 | -} | ||
| 91 | - | ||
| 92 | -.fc-bg { | ||
| 93 | - bottom: 0; | ||
| 94 | - /* strech bg to bottom edge */ | ||
| 95 | -} | ||
| 96 | - | ||
| 97 | -.fc-bg table { | ||
| 98 | - height: 100%; | ||
| 99 | - /* strech bg to bottom edge */ | ||
| 100 | -} | ||
| 101 | - | ||
| 102 | -/* Tables | ||
| 103 | ---------------------------------------------------------------------------------------------------*/ | ||
| 104 | -.fc table { | ||
| 105 | - width: 100%; | ||
| 106 | - box-sizing: border-box; | ||
| 107 | - /* fix scrollbar issue in firefox */ | ||
| 108 | - table-layout: fixed; | ||
| 109 | - border-collapse: collapse; | ||
| 110 | - border-spacing: 0; | ||
| 111 | - font-size: 1em; | ||
| 112 | - /* normalize cross-browser */ | ||
| 113 | -} | ||
| 114 | - | ||
| 115 | -.fc th { | ||
| 116 | - text-align: center; | ||
| 117 | -} | ||
| 118 | - | ||
| 119 | -.fc th, | ||
| 120 | -.fc td { | ||
| 121 | - border-style: solid; | ||
| 122 | - border-width: 1px; | ||
| 123 | - padding: 0; | ||
| 124 | - vertical-align: top; | ||
| 125 | -} | ||
| 126 | - | ||
| 127 | -.fc td.fc-today { | ||
| 128 | - border-style: double; | ||
| 129 | - /* overcome neighboring borders */ | ||
| 130 | -} | ||
| 131 | - | ||
| 132 | -/* Internal Nav Links | ||
| 133 | ---------------------------------------------------------------------------------------------------*/ | ||
| 134 | -a[data-goto] { | ||
| 135 | - cursor: pointer; | ||
| 136 | -} | ||
| 137 | - | ||
| 138 | -a[data-goto]:hover { | ||
| 139 | - text-decoration: underline; | ||
| 140 | -} | ||
| 141 | - | ||
| 142 | -/* Fake Table Rows | ||
| 143 | ---------------------------------------------------------------------------------------------------*/ | ||
| 144 | -.fc .fc-row { | ||
| 145 | - /* extra precedence to overcome themes forcing a 1px border */ | ||
| 146 | - /* no visible border by default. but make available if need be (scrollbar width compensation) */ | ||
| 147 | - border-style: solid; | ||
| 148 | - border-width: 0; | ||
| 149 | -} | ||
| 150 | - | ||
| 151 | -.fc-row table { | ||
| 152 | - /* don't put left/right border on anything within a fake row. | ||
| 153 | - the outer tbody will worry about this */ | ||
| 154 | - border-left: 0 hidden transparent; | ||
| 155 | - border-right: 0 hidden transparent; | ||
| 156 | - /* no bottom borders on rows */ | ||
| 157 | - border-bottom: 0 hidden transparent; | ||
| 158 | -} | ||
| 159 | - | ||
| 160 | -.fc-row:first-child table { | ||
| 161 | - border-top: 0 hidden transparent; | ||
| 162 | - /* no top border on first row */ | ||
| 163 | -} | ||
| 164 | - | ||
| 165 | -/* Day Row (used within the header and the DayGrid) | ||
| 166 | ---------------------------------------------------------------------------------------------------*/ | ||
| 167 | -.fc-row { | ||
| 168 | - position: relative; | ||
| 169 | -} | ||
| 170 | - | ||
| 171 | -.fc-row .fc-bg { | ||
| 172 | - z-index: 1; | ||
| 173 | -} | ||
| 174 | - | ||
| 175 | -/* highlighting cells & background event skeleton */ | ||
| 176 | -.fc-row .fc-bgevent-skeleton, | ||
| 177 | -.fc-row .fc-highlight-skeleton { | ||
| 178 | - bottom: 0; | ||
| 179 | - /* stretch skeleton to bottom of row */ | ||
| 180 | -} | ||
| 181 | - | ||
| 182 | -.fc-row .fc-bgevent-skeleton table, | ||
| 183 | -.fc-row .fc-highlight-skeleton table { | ||
| 184 | - height: 100%; | ||
| 185 | - /* stretch skeleton to bottom of row */ | ||
| 186 | -} | ||
| 187 | - | ||
| 188 | -.fc-row .fc-highlight-skeleton td, | ||
| 189 | -.fc-row .fc-bgevent-skeleton td { | ||
| 190 | - border-color: transparent; | ||
| 191 | -} | ||
| 192 | - | ||
| 193 | -.fc-row .fc-bgevent-skeleton { | ||
| 194 | - z-index: 2; | ||
| 195 | -} | ||
| 196 | - | ||
| 197 | -.fc-row .fc-highlight-skeleton { | ||
| 198 | - z-index: 3; | ||
| 199 | -} | ||
| 200 | - | ||
| 201 | -/* | ||
| 202 | -row content (which contains day/week numbers and events) as well as "mirror" (which contains | ||
| 203 | -temporary rendered events). | ||
| 204 | -*/ | ||
| 205 | -.fc-row .fc-content-skeleton { | ||
| 206 | - position: relative; | ||
| 207 | - z-index: 4; | ||
| 208 | - padding-bottom: 2px; | ||
| 209 | - /* matches the space above the events */ | ||
| 210 | -} | ||
| 211 | - | ||
| 212 | -.fc-row .fc-mirror-skeleton { | ||
| 213 | - z-index: 5; | ||
| 214 | -} | ||
| 215 | - | ||
| 216 | -.fc .fc-row .fc-content-skeleton table, | ||
| 217 | -.fc .fc-row .fc-content-skeleton td, | ||
| 218 | -.fc .fc-row .fc-mirror-skeleton td { | ||
| 219 | - /* see-through to the background below */ | ||
| 220 | - /* extra precedence to prevent theme-provided backgrounds */ | ||
| 221 | - background: none; | ||
| 222 | - /* in case <td>s are globally styled */ | ||
| 223 | - border-color: transparent; | ||
| 224 | -} | ||
| 225 | - | ||
| 226 | -.fc-row .fc-content-skeleton td, | ||
| 227 | -.fc-row .fc-mirror-skeleton td { | ||
| 228 | - /* don't put a border between events and/or the day number */ | ||
| 229 | - border-bottom: 0; | ||
| 230 | -} | ||
| 231 | - | ||
| 232 | -.fc-row .fc-content-skeleton tbody td, | ||
| 233 | -.fc-row .fc-mirror-skeleton tbody td { | ||
| 234 | - /* don't put a border between event cells */ | ||
| 235 | - border-top: 0; | ||
| 236 | -} | ||
| 237 | - | ||
| 238 | -/* Scrolling Container | ||
| 239 | ---------------------------------------------------------------------------------------------------*/ | ||
| 240 | -.fc-scroller { | ||
| 241 | - -webkit-overflow-scrolling: touch; | ||
| 242 | -} | ||
| 243 | - | ||
| 244 | -/* TODO: move to timegrid/daygrid */ | ||
| 245 | -.fc-scroller > .fc-day-grid, | ||
| 246 | -.fc-scroller > .fc-time-grid { | ||
| 247 | - position: relative; | ||
| 248 | - /* re-scope all positions */ | ||
| 249 | - width: 100%; | ||
| 250 | - /* hack to force re-sizing this inner element when scrollbars appear/disappear */ | ||
| 251 | -} | ||
| 252 | - | ||
| 253 | -/* Global Event Styles | ||
| 254 | ---------------------------------------------------------------------------------------------------*/ | ||
| 255 | -.fc-event { | ||
| 256 | - position: relative; | ||
| 257 | - /* for resize handle and other inner positioning */ | ||
| 258 | - display: block; | ||
| 259 | - /* make the <a> tag block */ | ||
| 260 | - font-size: 0.85em; | ||
| 261 | - line-height: 1.4; | ||
| 262 | - border-radius: 3px; | ||
| 263 | - border: 1px solid #3788d8; | ||
| 264 | - color: #ffffff !important; | ||
| 265 | -} | ||
| 266 | - | ||
| 267 | -.fc-event, | ||
| 268 | -.fc-event-dot { | ||
| 269 | - background-color: #3788d8; | ||
| 270 | - /* default BACKGROUND color */ | ||
| 271 | -} | ||
| 272 | - | ||
| 273 | -.fc-event, | ||
| 274 | -.fc-event:hover { | ||
| 275 | - color: #fff; | ||
| 276 | - /* default TEXT color */ | ||
| 277 | - text-decoration: none; | ||
| 278 | - /* if <a> has an href */ | ||
| 279 | -} | ||
| 280 | - | ||
| 281 | -.fc-event[href], | ||
| 282 | -.fc-event.fc-draggable { | ||
| 283 | - cursor: pointer; | ||
| 284 | - /* give events with links and draggable events a hand mouse pointer */ | ||
| 285 | -} | ||
| 286 | - | ||
| 287 | -.fc-not-allowed, | ||
| 288 | -.fc-not-allowed .fc-event { | ||
| 289 | - /* to override an event's custom cursor */ | ||
| 290 | - cursor: not-allowed; | ||
| 291 | -} | ||
| 292 | - | ||
| 293 | -.fc-event .fc-content { | ||
| 294 | - position: relative; | ||
| 295 | - z-index: 2; | ||
| 296 | -} | ||
| 297 | - | ||
| 298 | -/* resizer (cursor AND touch devices) */ | ||
| 299 | -.fc-event .fc-resizer { | ||
| 300 | - position: absolute; | ||
| 301 | - z-index: 4; | ||
| 302 | -} | ||
| 303 | - | ||
| 304 | -/* resizer (touch devices) */ | ||
| 305 | -.fc-event .fc-resizer { | ||
| 306 | - display: none; | ||
| 307 | -} | ||
| 308 | - | ||
| 309 | -.fc-event.fc-allow-mouse-resize .fc-resizer, | ||
| 310 | -.fc-event.fc-selected .fc-resizer { | ||
| 311 | - /* only show when hovering or selected (with touch) */ | ||
| 312 | - display: block; | ||
| 313 | -} | ||
| 314 | - | ||
| 315 | -/* hit area */ | ||
| 316 | -.fc-event.fc-selected .fc-resizer:before { | ||
| 317 | - /* 40x40 touch area */ | ||
| 318 | - content: ""; | ||
| 319 | - position: absolute; | ||
| 320 | - z-index: 9999; | ||
| 321 | - /* user of this util can scope within a lower z-index */ | ||
| 322 | - top: 50%; | ||
| 323 | - left: 50%; | ||
| 324 | - width: 40px; | ||
| 325 | - height: 40px; | ||
| 326 | - margin-left: -20px; | ||
| 327 | - margin-top: -20px; | ||
| 328 | -} | ||
| 329 | - | ||
| 330 | -/* Event Selection (only for touch devices) | ||
| 331 | ---------------------------------------------------------------------------------------------------*/ | ||
| 332 | -.fc-event.fc-selected { | ||
| 333 | - z-index: 9999 !important; | ||
| 334 | - /* overcomes inline z-index */ | ||
| 335 | - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); | ||
| 336 | -} | ||
| 337 | - | ||
| 338 | -.fc-event.fc-selected:after { | ||
| 339 | - content: ""; | ||
| 340 | - position: absolute; | ||
| 341 | - z-index: 1; | ||
| 342 | - /* same z-index as fc-bg, behind text */ | ||
| 343 | - /* overcome the borders */ | ||
| 344 | - top: -1px; | ||
| 345 | - right: -1px; | ||
| 346 | - bottom: -1px; | ||
| 347 | - left: -1px; | ||
| 348 | - /* darkening effect */ | ||
| 349 | - background: #000; | ||
| 350 | - opacity: 0.25; | ||
| 351 | -} | ||
| 352 | - | ||
| 353 | -/* Event Dragging | ||
| 354 | ---------------------------------------------------------------------------------------------------*/ | ||
| 355 | -.fc-event.fc-dragging.fc-selected { | ||
| 356 | - box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3); | ||
| 357 | -} | ||
| 358 | - | ||
| 359 | -.fc-event.fc-dragging:not(.fc-selected) { | ||
| 360 | - opacity: 0.75; | ||
| 361 | -} | ||
| 362 | - | ||
| 363 | -/* Horizontal Events | ||
| 364 | ---------------------------------------------------------------------------------------------------*/ | ||
| 365 | -/* bigger touch area when selected */ | ||
| 366 | -.fc-h-event.fc-selected:before { | ||
| 367 | - content: ""; | ||
| 368 | - position: absolute; | ||
| 369 | - z-index: 3; | ||
| 370 | - /* below resizers */ | ||
| 371 | - top: -10px; | ||
| 372 | - bottom: -10px; | ||
| 373 | - left: 0; | ||
| 374 | - right: 0; | ||
| 375 | -} | ||
| 376 | - | ||
| 377 | -/* events that are continuing to/from another week. kill rounded corners and butt up against edge */ | ||
| 378 | -.fc-ltr .fc-h-event.fc-not-start, | ||
| 379 | -.fc-rtl .fc-h-event.fc-not-end { | ||
| 380 | - margin-left: 0; | ||
| 381 | - border-left-width: 0; | ||
| 382 | - padding-left: 1px; | ||
| 383 | - /* replace the border with padding */ | ||
| 384 | - border-top-left-radius: 0; | ||
| 385 | - border-bottom-left-radius: 0; | ||
| 386 | -} | ||
| 387 | - | ||
| 388 | -.fc-ltr .fc-h-event.fc-not-end, | ||
| 389 | -.fc-rtl .fc-h-event.fc-not-start { | ||
| 390 | - margin-right: 0; | ||
| 391 | - border-right-width: 0; | ||
| 392 | - padding-right: 1px; | ||
| 393 | - /* replace the border with padding */ | ||
| 394 | - border-top-right-radius: 0; | ||
| 395 | - border-bottom-right-radius: 0; | ||
| 396 | -} | ||
| 397 | - | ||
| 398 | -/* resizer (cursor AND touch devices) */ | ||
| 399 | -/* left resizer */ | ||
| 400 | -.fc-ltr .fc-h-event .fc-start-resizer, | ||
| 401 | -.fc-rtl .fc-h-event .fc-end-resizer { | ||
| 402 | - cursor: w-resize; | ||
| 403 | - left: -1px; | ||
| 404 | - /* overcome border */ | ||
| 405 | -} | ||
| 406 | - | ||
| 407 | -/* right resizer */ | ||
| 408 | -.fc-ltr .fc-h-event .fc-end-resizer, | ||
| 409 | -.fc-rtl .fc-h-event .fc-start-resizer { | ||
| 410 | - cursor: e-resize; | ||
| 411 | - right: -1px; | ||
| 412 | - /* overcome border */ | ||
| 413 | -} | ||
| 414 | - | ||
| 415 | -/* resizer (mouse devices) */ | ||
| 416 | -.fc-h-event.fc-allow-mouse-resize .fc-resizer { | ||
| 417 | - width: 7px; | ||
| 418 | - top: -1px; | ||
| 419 | - /* overcome top border */ | ||
| 420 | - bottom: -1px; | ||
| 421 | - /* overcome bottom border */ | ||
| 422 | -} | ||
| 423 | - | ||
| 424 | -/* resizer (touch devices) */ | ||
| 425 | -.fc-h-event.fc-selected .fc-resizer { | ||
| 426 | - /* 8x8 little dot */ | ||
| 427 | - border-radius: 4px; | ||
| 428 | - border-width: 1px; | ||
| 429 | - width: 6px; | ||
| 430 | - height: 6px; | ||
| 431 | - border-style: solid; | ||
| 432 | - border-color: inherit; | ||
| 433 | - background: #fff; | ||
| 434 | - /* vertically center */ | ||
| 435 | - top: 50%; | ||
| 436 | - margin-top: -4px; | ||
| 437 | -} | ||
| 438 | - | ||
| 439 | -/* left resizer */ | ||
| 440 | -.fc-ltr .fc-h-event.fc-selected .fc-start-resizer, | ||
| 441 | -.fc-rtl .fc-h-event.fc-selected .fc-end-resizer { | ||
| 442 | - margin-left: -4px; | ||
| 443 | - /* centers the 8x8 dot on the left edge */ | ||
| 444 | -} | ||
| 445 | - | ||
| 446 | -/* right resizer */ | ||
| 447 | -.fc-ltr .fc-h-event.fc-selected .fc-end-resizer, | ||
| 448 | -.fc-rtl .fc-h-event.fc-selected .fc-start-resizer { | ||
| 449 | - margin-right: -4px; | ||
| 450 | - /* centers the 8x8 dot on the right edge */ | ||
| 451 | -} | ||
| 452 | - | ||
| 453 | -/* DayGrid events | ||
| 454 | ----------------------------------------------------------------------------------------------------- | ||
| 455 | -We use the full "fc-day-grid-event" class instead of using descendants because the event won't | ||
| 456 | -be a descendant of the grid when it is being dragged. | ||
| 457 | -*/ | ||
| 458 | -.fc-day-grid-event { | ||
| 459 | - margin: 1px 2px 0; | ||
| 460 | - /* spacing between events and edges */ | ||
| 461 | - padding: 0 1px; | ||
| 462 | -} | ||
| 463 | - | ||
| 464 | -tr:first-child > td > .fc-day-grid-event { | ||
| 465 | - margin-top: 2px; | ||
| 466 | - /* a little bit more space before the first event */ | ||
| 467 | -} | ||
| 468 | - | ||
| 469 | -.fc-mirror-skeleton tr:first-child > td > .fc-day-grid-event { | ||
| 470 | - margin-top: 0; | ||
| 471 | - /* except for mirror skeleton */ | ||
| 472 | -} | ||
| 473 | - | ||
| 474 | -.fc-day-grid-event .fc-content { | ||
| 475 | - /* force events to be one-line tall */ | ||
| 476 | - white-space: nowrap; | ||
| 477 | - overflow: hidden; | ||
| 478 | -} | ||
| 479 | - | ||
| 480 | -.fc-day-grid-event .fc-time { | ||
| 481 | - font-weight: bold; | ||
| 482 | -} | ||
| 483 | - | ||
| 484 | -/* resizer (cursor devices) */ | ||
| 485 | -/* left resizer */ | ||
| 486 | -.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer, | ||
| 487 | -.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer { | ||
| 488 | - margin-left: -2px; | ||
| 489 | - /* to the day cell's edge */ | ||
| 490 | -} | ||
| 491 | - | ||
| 492 | -/* right resizer */ | ||
| 493 | -.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer, | ||
| 494 | -.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer { | ||
| 495 | - margin-right: -2px; | ||
| 496 | - /* to the day cell's edge */ | ||
| 497 | -} | ||
| 498 | - | ||
| 499 | -/* Event Limiting | ||
| 500 | ---------------------------------------------------------------------------------------------------*/ | ||
| 501 | -/* "more" link that represents hidden events */ | ||
| 502 | -a.fc-more { | ||
| 503 | - margin: 1px 3px; | ||
| 504 | - font-size: 0.85em; | ||
| 505 | - cursor: pointer; | ||
| 506 | - text-decoration: none; | ||
| 507 | -} | ||
| 508 | - | ||
| 509 | -a.fc-more:hover { | ||
| 510 | - text-decoration: underline; | ||
| 511 | -} | ||
| 512 | - | ||
| 513 | -.fc-limited { | ||
| 514 | - /* rows and cells that are hidden because of a "more" link */ | ||
| 515 | - display: none; | ||
| 516 | -} | ||
| 517 | - | ||
| 518 | -/* popover that appears when "more" link is clicked */ | ||
| 519 | -.fc-day-grid .fc-row { | ||
| 520 | - z-index: 1; | ||
| 521 | - /* make the "more" popover one higher than this */ | ||
| 522 | -} | ||
| 523 | - | ||
| 524 | -.fc-more-popover { | ||
| 525 | - z-index: 2; | ||
| 526 | - width: 220px; | ||
| 527 | -} | ||
| 528 | - | ||
| 529 | -.fc-more-popover .fc-event-container { | ||
| 530 | - padding: 10px; | ||
| 531 | -} | ||
| 532 | - | ||
| 533 | -/* Now Indicator | ||
| 534 | ---------------------------------------------------------------------------------------------------*/ | ||
| 535 | -.fc-now-indicator { | ||
| 536 | - position: absolute; | ||
| 537 | - border: 0 solid red; | ||
| 538 | -} | ||
| 539 | - | ||
| 540 | -/* Utilities | ||
| 541 | ---------------------------------------------------------------------------------------------------*/ | ||
| 542 | -.fc-unselectable { | ||
| 543 | - -webkit-user-select: none; | ||
| 544 | - -khtml-user-select: none; | ||
| 545 | - -moz-user-select: none; | ||
| 546 | - -ms-user-select: none; | ||
| 547 | - user-select: none; | ||
| 548 | - -webkit-touch-callout: none; | ||
| 549 | - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); | ||
| 550 | -} | ||
| 551 | - | ||
| 552 | -/* | ||
| 553 | -TODO: more distinction between this file and common.css | ||
| 554 | -*/ | ||
| 555 | -/* Colors | ||
| 556 | ---------------------------------------------------------------------------------------------------*/ | ||
| 557 | -.fc-unthemed th, | ||
| 558 | -.fc-unthemed td, | ||
| 559 | -.fc-unthemed thead, | ||
| 560 | -.fc-unthemed tbody, | ||
| 561 | -.fc-unthemed .fc-divider, | ||
| 562 | -.fc-unthemed .fc-row, | ||
| 563 | -.fc-unthemed .fc-content, | ||
| 564 | -.fc-unthemed .fc-popover, | ||
| 565 | -.fc-unthemed .fc-list-view, | ||
| 566 | -.fc-unthemed .fc-list-heading td { | ||
| 567 | - border-color: #ddd; | ||
| 568 | -} | ||
| 569 | - | ||
| 570 | -.fc-unthemed .fc-popover { | ||
| 571 | - background-color: #fff; | ||
| 572 | -} | ||
| 573 | - | ||
| 574 | -.fc-unthemed .fc-divider, | ||
| 575 | -.fc-unthemed .fc-popover .fc-header, | ||
| 576 | -.fc-unthemed .fc-list-heading td { | ||
| 577 | - background: #eee; | ||
| 578 | -} | ||
| 579 | - | ||
| 580 | -.fc-unthemed td.fc-today { | ||
| 581 | - background: #fcf8e3; | ||
| 582 | -} | ||
| 583 | - | ||
| 584 | -.fc-unthemed .fc-disabled-day { | ||
| 585 | - background: #d7d7d7; | ||
| 586 | - opacity: 0.3; | ||
| 587 | -} | ||
| 588 | - | ||
| 589 | -/* Icons | ||
| 590 | --------------------------------------------------------------------------------------------------- | ||
| 591 | -from https://feathericons.com/ and built with IcoMoon | ||
| 592 | -*/ | ||
| 593 | -@font-face { | ||
| 594 | - font-family: "fcicons"; | ||
| 595 | - src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype"); | ||
| 596 | - font-weight: normal; | ||
| 597 | - font-style: normal; | ||
| 598 | -} | ||
| 599 | -.fc-icon { | ||
| 600 | - /* use !important to prevent issues with browser extensions that change fonts */ | ||
| 601 | - font-family: "fcicons" !important; | ||
| 602 | - speak: none; | ||
| 603 | - font-style: normal; | ||
| 604 | - font-weight: normal; | ||
| 605 | - font-variant: normal; | ||
| 606 | - text-transform: none; | ||
| 607 | - line-height: 1; | ||
| 608 | - /* Better Font Rendering =========== */ | ||
| 609 | - -webkit-font-smoothing: antialiased; | ||
| 610 | - -moz-osx-font-smoothing: grayscale; | ||
| 611 | -} | ||
| 612 | - | ||
| 613 | -.fc-icon-chevron-left:before { | ||
| 614 | - content: ""; | ||
| 615 | -} | ||
| 616 | - | ||
| 617 | -.fc-icon-chevron-right:before { | ||
| 618 | - content: ""; | ||
| 619 | -} | ||
| 620 | - | ||
| 621 | -.fc-icon-chevrons-left:before { | ||
| 622 | - content: ""; | ||
| 623 | -} | ||
| 624 | - | ||
| 625 | -.fc-icon-chevrons-right:before { | ||
| 626 | - content: ""; | ||
| 627 | -} | ||
| 628 | - | ||
| 629 | -.fc-icon-minus-square:before { | ||
| 630 | - content: ""; | ||
| 631 | -} | ||
| 632 | - | ||
| 633 | -.fc-icon-plus-square:before { | ||
| 634 | - content: ""; | ||
| 635 | -} | ||
| 636 | - | ||
| 637 | -.fc-icon-x:before { | ||
| 638 | - content: ""; | ||
| 639 | -} | ||
| 640 | - | ||
| 641 | -.fc-icon { | ||
| 642 | - display: inline-block; | ||
| 643 | - width: 1em; | ||
| 644 | - height: 1em; | ||
| 645 | - text-align: center; | ||
| 646 | -} | ||
| 647 | - | ||
| 648 | -/* Buttons | ||
| 649 | --------------------------------------------------------------------------------------------------- | ||
| 650 | -Lots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css | ||
| 651 | -*/ | ||
| 652 | -/* reset */ | ||
| 653 | -.fc-button { | ||
| 654 | - border-radius: 0; | ||
| 655 | - overflow: visible; | ||
| 656 | - text-transform: none; | ||
| 657 | - margin: 0; | ||
| 658 | - font-family: inherit; | ||
| 659 | - font-size: inherit; | ||
| 660 | - line-height: inherit; | ||
| 661 | -} | ||
| 662 | - | ||
| 663 | -.fc-button:focus { | ||
| 664 | - outline: 1px dotted; | ||
| 665 | - outline: 5px auto -webkit-focus-ring-color; | ||
| 666 | -} | ||
| 667 | - | ||
| 668 | -.fc-button { | ||
| 669 | - -webkit-appearance: button; | ||
| 670 | -} | ||
| 671 | - | ||
| 672 | -.fc-button:not(:disabled) { | ||
| 673 | - cursor: pointer; | ||
| 674 | -} | ||
| 675 | - | ||
| 676 | -.fc-button::-moz-focus-inner { | ||
| 677 | - padding: 0; | ||
| 678 | - border-style: none; | ||
| 679 | -} | ||
| 680 | - | ||
| 681 | -/* theme */ | ||
| 682 | -.fc-button { | ||
| 683 | - display: inline-block; | ||
| 684 | - font-weight: 400; | ||
| 685 | - color: #212529; | ||
| 686 | - text-align: center; | ||
| 687 | - vertical-align: middle; | ||
| 688 | - -webkit-user-select: none; | ||
| 689 | - -moz-user-select: none; | ||
| 690 | - -ms-user-select: none; | ||
| 691 | - user-select: none; | ||
| 692 | - background-color: transparent; | ||
| 693 | - border: 1px solid transparent; | ||
| 694 | - padding: 0.4em 0.65em; | ||
| 695 | - font-size: 1em; | ||
| 696 | - line-height: 1.5; | ||
| 697 | - border-radius: 0.25em; | ||
| 698 | -} | ||
| 699 | - | ||
| 700 | -.fc-button:hover { | ||
| 701 | - color: #212529; | ||
| 702 | - text-decoration: none; | ||
| 703 | -} | ||
| 704 | - | ||
| 705 | -.fc-button:focus { | ||
| 706 | - outline: 0; | ||
| 707 | - -webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25); | ||
| 708 | - box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25); | ||
| 709 | -} | ||
| 710 | - | ||
| 711 | -.fc-button:disabled { | ||
| 712 | - opacity: 0.65; | ||
| 713 | -} | ||
| 714 | - | ||
| 715 | -/* "primary" coloring */ | ||
| 716 | -.fc-button-primary { | ||
| 717 | - color: #fff; | ||
| 718 | - background-color: #2C3E50; | ||
| 719 | - border-color: #2C3E50; | ||
| 720 | -} | ||
| 721 | - | ||
| 722 | -.fc-button-primary:hover { | ||
| 723 | - color: #fff; | ||
| 724 | - background-color: #1e2b37; | ||
| 725 | - border-color: #1a252f; | ||
| 726 | -} | ||
| 727 | - | ||
| 728 | -.fc-button-primary:focus { | ||
| 729 | - -webkit-box-shadow: none; | ||
| 730 | - box-shadow: none; | ||
| 731 | -} | ||
| 732 | - | ||
| 733 | -.fc-button-primary:disabled { | ||
| 734 | - color: #fff; | ||
| 735 | - background-color: #2C3E50; | ||
| 736 | - border-color: #2C3E50; | ||
| 737 | -} | ||
| 738 | - | ||
| 739 | -.fc-button-primary:not(:disabled):active, | ||
| 740 | -.fc-button-primary:not(:disabled).fc-button-active { | ||
| 741 | - color: #fff; | ||
| 742 | - background-color: #1a252f; | ||
| 743 | - border-color: #151e27; | ||
| 744 | -} | ||
| 745 | - | ||
| 746 | -.fc-button-primary:not(:disabled):active:focus, | ||
| 747 | -.fc-button-primary:not(:disabled).fc-button-active:focus { | ||
| 748 | - -webkit-box-shadow: none; | ||
| 749 | - box-shadow: none; | ||
| 750 | -} | ||
| 751 | - | ||
| 752 | -/* icons within buttons */ | ||
| 753 | -.fc-button .fc-icon { | ||
| 754 | - vertical-align: middle; | ||
| 755 | - font-size: 1.5em; | ||
| 756 | -} | ||
| 757 | - | ||
| 758 | -/* Buttons Groups | ||
| 759 | ---------------------------------------------------------------------------------------------------*/ | ||
| 760 | -.fc-button-group { | ||
| 761 | - position: relative; | ||
| 762 | - display: -webkit-inline-box; | ||
| 763 | - display: -ms-inline-flexbox; | ||
| 764 | - display: inline-flex; | ||
| 765 | - vertical-align: middle; | ||
| 766 | -} | ||
| 767 | - | ||
| 768 | -.fc-button-group > .fc-button { | ||
| 769 | - position: relative; | ||
| 770 | - -webkit-box-flex: 1; | ||
| 771 | - -ms-flex: 1 1 auto; | ||
| 772 | - flex: 1 1 auto; | ||
| 773 | -} | ||
| 774 | - | ||
| 775 | -.fc-button-group > .fc-button:hover { | ||
| 776 | - z-index: 1; | ||
| 777 | -} | ||
| 778 | - | ||
| 779 | -.fc-button-group > .fc-button:focus, | ||
| 780 | -.fc-button-group > .fc-button:active, | ||
| 781 | -.fc-button-group > .fc-button.fc-button-active { | ||
| 782 | - z-index: 1; | ||
| 783 | -} | ||
| 784 | - | ||
| 785 | -.fc-button-group > .fc-button:not(:first-child) { | ||
| 786 | - margin-left: -1px; | ||
| 787 | -} | ||
| 788 | - | ||
| 789 | -.fc-button-group > .fc-button:not(:last-child) { | ||
| 790 | - border-top-right-radius: 0; | ||
| 791 | - border-bottom-right-radius: 0; | ||
| 792 | -} | ||
| 793 | - | ||
| 794 | -.fc-button-group > .fc-button:not(:first-child) { | ||
| 795 | - border-top-left-radius: 0; | ||
| 796 | - border-bottom-left-radius: 0; | ||
| 797 | -} | ||
| 798 | - | ||
| 799 | -/* Popover | ||
| 800 | ---------------------------------------------------------------------------------------------------*/ | ||
| 801 | -.fc-unthemed .fc-popover { | ||
| 802 | - border-width: 1px; | ||
| 803 | - border-style: solid; | ||
| 804 | -} | ||
| 805 | - | ||
| 806 | -/* List View | ||
| 807 | ---------------------------------------------------------------------------------------------------*/ | ||
| 808 | -.fc-unthemed .fc-list-item:hover td { | ||
| 809 | - background-color: #f5f5f5; | ||
| 810 | -} | ||
| 811 | - | ||
| 812 | -/* Toolbar | ||
| 813 | ---------------------------------------------------------------------------------------------------*/ | ||
| 814 | -.fc-toolbar { | ||
| 815 | - display: flex; | ||
| 816 | - justify-content: space-between; | ||
| 817 | - align-items: center; | ||
| 818 | -} | ||
| 819 | - | ||
| 820 | -.fc-toolbar.fc-header-toolbar { | ||
| 821 | - margin-bottom: 1.5em; | ||
| 822 | -} | ||
| 823 | - | ||
| 824 | -.fc-toolbar.fc-footer-toolbar { | ||
| 825 | - margin-top: 1.5em; | ||
| 826 | -} | ||
| 827 | - | ||
| 828 | -/* inner content */ | ||
| 829 | -.fc-toolbar > * > :not(:first-child) { | ||
| 830 | - margin-left: 0.75em; | ||
| 831 | -} | ||
| 832 | - | ||
| 833 | -.fc-toolbar h2 { | ||
| 834 | - font-size: 1.75em; | ||
| 835 | - margin: 0; | ||
| 836 | -} | ||
| 837 | - | ||
| 838 | -/* View Structure | ||
| 839 | ---------------------------------------------------------------------------------------------------*/ | ||
| 840 | -.fc-view-container { | ||
| 841 | - position: relative; | ||
| 842 | -} | ||
| 843 | - | ||
| 844 | -/* undo twitter bootstrap's box-sizing rules. normalizes positioning techniques */ | ||
| 845 | -/* don't do this for the toolbar because we'll want bootstrap to style those buttons as some pt */ | ||
| 846 | -.fc-view-container *, | ||
| 847 | -.fc-view-container *:before, | ||
| 848 | -.fc-view-container *:after { | ||
| 849 | - -webkit-box-sizing: content-box; | ||
| 850 | - -moz-box-sizing: content-box; | ||
| 851 | - box-sizing: content-box; | ||
| 852 | -} | ||
| 853 | - | ||
| 854 | -.fc-view, | ||
| 855 | -.fc-view > table { | ||
| 856 | - /* so dragged elements can be above the view's main element */ | ||
| 857 | - position: relative; | ||
| 858 | - z-index: 1; | ||
| 859 | -} | ||
| 860 | - | ||
| 861 | -@media print { | ||
| 862 | - .fc { | ||
| 863 | - max-width: 100% !important; | ||
| 864 | - } | ||
| 865 | - | ||
| 866 | - /* Global Event Restyling | ||
| 867 | - --------------------------------------------------------------------------------------------------*/ | ||
| 868 | - .fc-event { | ||
| 869 | - background: #fff !important; | ||
| 870 | - color: #000 !important; | ||
| 871 | - page-break-inside: avoid; | ||
| 872 | - } | ||
| 873 | - | ||
| 874 | - .fc-event .fc-resizer { | ||
| 875 | - display: none; | ||
| 876 | - } | ||
| 877 | - | ||
| 878 | - /* Table & Day-Row Restyling | ||
| 879 | - --------------------------------------------------------------------------------------------------*/ | ||
| 880 | - .fc th, | ||
| 881 | -.fc td, | ||
| 882 | -.fc hr, | ||
| 883 | -.fc thead, | ||
| 884 | -.fc tbody, | ||
| 885 | -.fc-row { | ||
| 886 | - border-color: #ccc !important; | ||
| 887 | - background: #fff !important; | ||
| 888 | - } | ||
| 889 | - | ||
| 890 | - /* kill the overlaid, absolutely-positioned components */ | ||
| 891 | - /* common... */ | ||
| 892 | - .fc-bg, | ||
| 893 | -.fc-bgevent-skeleton, | ||
| 894 | -.fc-highlight-skeleton, | ||
| 895 | -.fc-mirror-skeleton, | ||
| 896 | -.fc-bgevent-container, | ||
| 897 | -.fc-business-container, | ||
| 898 | -.fc-highlight-container, | ||
| 899 | -.fc-mirror-container { | ||
| 900 | - display: none; | ||
| 901 | - } | ||
| 902 | - | ||
| 903 | - /* don't force a min-height on rows (for DayGrid) */ | ||
| 904 | - .fc tbody .fc-row { | ||
| 905 | - height: auto !important; | ||
| 906 | - /* undo height that JS set in distributeHeight */ | ||
| 907 | - min-height: 0 !important; | ||
| 908 | - /* undo the min-height from each view's specific stylesheet */ | ||
| 909 | - } | ||
| 910 | - | ||
| 911 | - .fc tbody .fc-row .fc-content-skeleton { | ||
| 912 | - position: static; | ||
| 913 | - /* undo .fc-rigid */ | ||
| 914 | - padding-bottom: 0 !important; | ||
| 915 | - /* use a more border-friendly method for this... */ | ||
| 916 | - } | ||
| 917 | - | ||
| 918 | - .fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td { | ||
| 919 | - /* only works in newer browsers */ | ||
| 920 | - padding-bottom: 1em; | ||
| 921 | - /* ...gives space within the skeleton. also ensures min height in a way */ | ||
| 922 | - } | ||
| 923 | - | ||
| 924 | - .fc tbody .fc-row .fc-content-skeleton table { | ||
| 925 | - /* provides a min-height for the row, but only effective for IE, which exaggerates this value, | ||
| 926 | - making it look more like 3em. for other browers, it will already be this tall */ | ||
| 927 | - height: 1em; | ||
| 928 | - } | ||
| 929 | - | ||
| 930 | - /* Undo month-view event limiting. Display all events and hide the "more" links | ||
| 931 | - --------------------------------------------------------------------------------------------------*/ | ||
| 932 | - .fc-more-cell, | ||
| 933 | -.fc-more { | ||
| 934 | - display: none !important; | ||
| 935 | - } | ||
| 936 | - | ||
| 937 | - .fc tr.fc-limited { | ||
| 938 | - display: table-row !important; | ||
| 939 | - } | ||
| 940 | - | ||
| 941 | - .fc td.fc-limited { | ||
| 942 | - display: table-cell !important; | ||
| 943 | - } | ||
| 944 | - | ||
| 945 | - .fc-popover { | ||
| 946 | - display: none; | ||
| 947 | - /* never display the "more.." popover in print mode */ | ||
| 948 | - } | ||
| 949 | - | ||
| 950 | - /* TimeGrid Restyling | ||
| 951 | - --------------------------------------------------------------------------------------------------*/ | ||
| 952 | - /* undo the min-height 100% trick used to fill the container's height */ | ||
| 953 | - .fc-time-grid { | ||
| 954 | - min-height: 0 !important; | ||
| 955 | - } | ||
| 956 | - | ||
| 957 | - /* don't display the side axis at all ("all-day" and time cells) */ | ||
| 958 | - .fc-timeGrid-view .fc-axis { | ||
| 959 | - display: none; | ||
| 960 | - } | ||
| 961 | - | ||
| 962 | - /* don't display the horizontal lines */ | ||
| 963 | - .fc-slats, | ||
| 964 | -.fc-time-grid hr { | ||
| 965 | - /* this hr is used when height is underused and needs to be filled */ | ||
| 966 | - display: none !important; | ||
| 967 | - /* important overrides inline declaration */ | ||
| 968 | - } | ||
| 969 | - | ||
| 970 | - /* let the container that holds the events be naturally positioned and create real height */ | ||
| 971 | - .fc-time-grid .fc-content-skeleton { | ||
| 972 | - position: static; | ||
| 973 | - } | ||
| 974 | - | ||
| 975 | - /* in case there are no events, we still want some height */ | ||
| 976 | - .fc-time-grid .fc-content-skeleton table { | ||
| 977 | - height: 4em; | ||
| 978 | - } | ||
| 979 | - | ||
| 980 | - /* kill the horizontal spacing made by the event container. event margins will be done below */ | ||
| 981 | - .fc-time-grid .fc-event-container { | ||
| 982 | - margin: 0 !important; | ||
| 983 | - } | ||
| 984 | - | ||
| 985 | - /* TimeGrid *Event* Restyling | ||
| 986 | - --------------------------------------------------------------------------------------------------*/ | ||
| 987 | - /* naturally position events, vertically stacking them */ | ||
| 988 | - .fc-time-grid .fc-event { | ||
| 989 | - position: static !important; | ||
| 990 | - margin: 3px 2px !important; | ||
| 991 | - } | ||
| 992 | - | ||
| 993 | - /* for events that continue to a future day, give the bottom border back */ | ||
| 994 | - .fc-time-grid .fc-event.fc-not-end { | ||
| 995 | - border-bottom-width: 1px !important; | ||
| 996 | - } | ||
| 997 | - | ||
| 998 | - /* indicate the event continues via "..." text */ | ||
| 999 | - .fc-time-grid .fc-event.fc-not-end:after { | ||
| 1000 | - content: "..."; | ||
| 1001 | - } | ||
| 1002 | - | ||
| 1003 | - /* for events that are continuations from previous days, give the top border back */ | ||
| 1004 | - .fc-time-grid .fc-event.fc-not-start { | ||
| 1005 | - border-top-width: 1px !important; | ||
| 1006 | - } | ||
| 1007 | - | ||
| 1008 | - /* indicate the event is a continuation via "..." text */ | ||
| 1009 | - .fc-time-grid .fc-event.fc-not-start:before { | ||
| 1010 | - content: "..."; | ||
| 1011 | - } | ||
| 1012 | - | ||
| 1013 | - /* time */ | ||
| 1014 | - /* undo a previous declaration and let the time text span to a second line */ | ||
| 1015 | - .fc-time-grid .fc-event .fc-time { | ||
| 1016 | - white-space: normal !important; | ||
| 1017 | - } | ||
| 1018 | - | ||
| 1019 | - /* hide the the time that is normally displayed... */ | ||
| 1020 | - .fc-time-grid .fc-event .fc-time span { | ||
| 1021 | - display: none; | ||
| 1022 | - } | ||
| 1023 | - | ||
| 1024 | - /* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */ | ||
| 1025 | - .fc-time-grid .fc-event .fc-time:after { | ||
| 1026 | - content: attr(data-full); | ||
| 1027 | - } | ||
| 1028 | - | ||
| 1029 | - /* Vertical Scroller & Containers | ||
| 1030 | - --------------------------------------------------------------------------------------------------*/ | ||
| 1031 | - /* kill the scrollbars and allow natural height */ | ||
| 1032 | - .fc-scroller, | ||
| 1033 | -.fc-day-grid-container, | ||
| 1034 | -.fc-time-grid-container { | ||
| 1035 | - /* */ | ||
| 1036 | - overflow: visible !important; | ||
| 1037 | - height: auto !important; | ||
| 1038 | - } | ||
| 1039 | - | ||
| 1040 | - /* kill the horizontal border/padding used to compensate for scrollbars */ | ||
| 1041 | - .fc-row { | ||
| 1042 | - border: 0 !important; | ||
| 1043 | - margin: 0 !important; | ||
| 1044 | - } | ||
| 1045 | - | ||
| 1046 | - /* Button Controls | ||
| 1047 | - --------------------------------------------------------------------------------------------------*/ | ||
| 1048 | - .fc-button-group, | ||
| 1049 | -.fc button { | ||
| 1050 | - display: none; | ||
| 1051 | - /* don't display any button-related controls */ | ||
| 1052 | - } | ||
| 1053 | -} |
Datum_UImodel/static/css/main1.css
deleted
100644 → 0
| 1 | -/* DayGridView | ||
| 2 | ---------------------------------------------------------------------------------------------------*/ | ||
| 3 | -/* day row structure */ | ||
| 4 | -.fc-dayGridWeek-view .fc-content-skeleton, | ||
| 5 | -.fc-dayGridDay-view .fc-content-skeleton { | ||
| 6 | - /* there may be week numbers in these views, so no padding-top */ | ||
| 7 | - padding-bottom: 1em; | ||
| 8 | - /* ensure a space at bottom of cell for user selecting/clicking */ | ||
| 9 | -} | ||
| 10 | - | ||
| 11 | -.fc-dayGrid-view .fc-body .fc-row { | ||
| 12 | - min-height: 4em; | ||
| 13 | - /* ensure that all rows are at least this tall */ | ||
| 14 | -} | ||
| 15 | - | ||
| 16 | -/* a "rigid" row will take up a constant amount of height because content-skeleton is absolute */ | ||
| 17 | -.fc-row.fc-rigid { | ||
| 18 | - overflow: hidden; | ||
| 19 | -} | ||
| 20 | - | ||
| 21 | -.fc-row.fc-rigid .fc-content-skeleton { | ||
| 22 | - position: absolute; | ||
| 23 | - top: 0; | ||
| 24 | - left: 0; | ||
| 25 | - right: 0; | ||
| 26 | -} | ||
| 27 | - | ||
| 28 | -/* week and day number styling */ | ||
| 29 | -.fc-day-top.fc-other-month { | ||
| 30 | - opacity: 0.3; | ||
| 31 | -} | ||
| 32 | - | ||
| 33 | -.fc-dayGrid-view .fc-week-number, | ||
| 34 | -.fc-dayGrid-view .fc-day-number { | ||
| 35 | - padding: 2px; | ||
| 36 | -} | ||
| 37 | - | ||
| 38 | -.fc-dayGrid-view th.fc-week-number, | ||
| 39 | -.fc-dayGrid-view th.fc-day-number { | ||
| 40 | - padding: 0 2px; | ||
| 41 | - /* column headers can't have as much v space */ | ||
| 42 | -} | ||
| 43 | - | ||
| 44 | -.fc-ltr .fc-dayGrid-view .fc-day-top .fc-day-number { | ||
| 45 | - float: right; | ||
| 46 | -} | ||
| 47 | - | ||
| 48 | -.fc-rtl .fc-dayGrid-view .fc-day-top .fc-day-number { | ||
| 49 | - float: left; | ||
| 50 | -} | ||
| 51 | - | ||
| 52 | -.fc-ltr .fc-dayGrid-view .fc-day-top .fc-week-number { | ||
| 53 | - float: left; | ||
| 54 | - border-radius: 0 0 3px 0; | ||
| 55 | -} | ||
| 56 | - | ||
| 57 | -.fc-rtl .fc-dayGrid-view .fc-day-top .fc-week-number { | ||
| 58 | - float: right; | ||
| 59 | - border-radius: 0 0 0 3px; | ||
| 60 | -} | ||
| 61 | - | ||
| 62 | -.fc-dayGrid-view .fc-day-top .fc-week-number { | ||
| 63 | - min-width: 1.5em; | ||
| 64 | - text-align: center; | ||
| 65 | - background-color: #f2f2f2; | ||
| 66 | - color: #808080; | ||
| 67 | -} | ||
| 68 | - | ||
| 69 | -/* when week/day number have own column */ | ||
| 70 | -.fc-dayGrid-view td.fc-week-number { | ||
| 71 | - text-align: center; | ||
| 72 | -} | ||
| 73 | - | ||
| 74 | -.fc-dayGrid-view td.fc-week-number > * { | ||
| 75 | - /* work around the way we do column resizing and ensure a minimum width */ | ||
| 76 | - display: inline-block; | ||
| 77 | - min-width: 1.25em; | ||
| 78 | -} |
Datum_UImodel/static/css/main2.css
deleted
100644 → 0
| 1 | - | ||
| 2 | -/* TimeGridView all-day area | ||
| 3 | ---------------------------------------------------------------------------------------------------*/ | ||
| 4 | -.fc-timeGrid-view .fc-day-grid { | ||
| 5 | - position: relative; | ||
| 6 | - z-index: 2; | ||
| 7 | - /* so the "more.." popover will be over the time grid */ | ||
| 8 | -} | ||
| 9 | - | ||
| 10 | -.fc-timeGrid-view .fc-day-grid .fc-row { | ||
| 11 | - min-height: 3em; | ||
| 12 | - /* all-day section will never get shorter than this */ | ||
| 13 | -} | ||
| 14 | - | ||
| 15 | -.fc-timeGrid-view .fc-day-grid .fc-row .fc-content-skeleton { | ||
| 16 | - padding-bottom: 1em; | ||
| 17 | - /* give space underneath events for clicking/selecting days */ | ||
| 18 | -} | ||
| 19 | - | ||
| 20 | -/* TimeGrid axis running down the side (for both the all-day area and the slot area) | ||
| 21 | ---------------------------------------------------------------------------------------------------*/ | ||
| 22 | -.fc .fc-axis { | ||
| 23 | - /* .fc to overcome default cell styles */ | ||
| 24 | - vertical-align: middle; | ||
| 25 | - padding: 0 4px; | ||
| 26 | - white-space: nowrap; | ||
| 27 | -} | ||
| 28 | - | ||
| 29 | -.fc-ltr .fc-axis { | ||
| 30 | - text-align: right; | ||
| 31 | -} | ||
| 32 | - | ||
| 33 | -.fc-rtl .fc-axis { | ||
| 34 | - text-align: left; | ||
| 35 | -} | ||
| 36 | - | ||
| 37 | -/* TimeGrid Structure | ||
| 38 | ---------------------------------------------------------------------------------------------------*/ | ||
| 39 | -.fc-time-grid-container, | ||
| 40 | -.fc-time-grid { | ||
| 41 | - /* so slats/bg/content/etc positions get scoped within here */ | ||
| 42 | - position: relative; | ||
| 43 | - z-index: 1; | ||
| 44 | -} | ||
| 45 | - | ||
| 46 | -.fc-time-grid { | ||
| 47 | - min-height: 100%; | ||
| 48 | - /* so if height setting is 'auto', .fc-bg stretches to fill height */ | ||
| 49 | -} | ||
| 50 | - | ||
| 51 | -.fc-time-grid table { | ||
| 52 | - /* don't put outer borders on slats/bg/content/etc */ | ||
| 53 | - border: 0 hidden transparent; | ||
| 54 | -} | ||
| 55 | - | ||
| 56 | -.fc-time-grid > .fc-bg { | ||
| 57 | - z-index: 1; | ||
| 58 | -} | ||
| 59 | - | ||
| 60 | -.fc-time-grid .fc-slats, | ||
| 61 | -.fc-time-grid > hr { | ||
| 62 | - /* the <hr> TimeGridView injects when grid is shorter than scroller */ | ||
| 63 | - position: relative; | ||
| 64 | - z-index: 2; | ||
| 65 | -} | ||
| 66 | - | ||
| 67 | -.fc-time-grid .fc-content-col { | ||
| 68 | - position: relative; | ||
| 69 | - /* because now-indicator lives directly inside */ | ||
| 70 | -} | ||
| 71 | - | ||
| 72 | -.fc-time-grid .fc-content-skeleton { | ||
| 73 | - position: absolute; | ||
| 74 | - z-index: 3; | ||
| 75 | - top: 0; | ||
| 76 | - left: 0; | ||
| 77 | - right: 0; | ||
| 78 | -} | ||
| 79 | - | ||
| 80 | -/* divs within a cell within the fc-content-skeleton */ | ||
| 81 | -.fc-time-grid .fc-business-container { | ||
| 82 | - position: relative; | ||
| 83 | - z-index: 1; | ||
| 84 | -} | ||
| 85 | - | ||
| 86 | -.fc-time-grid .fc-bgevent-container { | ||
| 87 | - position: relative; | ||
| 88 | - z-index: 2; | ||
| 89 | -} | ||
| 90 | - | ||
| 91 | -.fc-time-grid .fc-highlight-container { | ||
| 92 | - position: relative; | ||
| 93 | - z-index: 3; | ||
| 94 | -} | ||
| 95 | - | ||
| 96 | -.fc-time-grid .fc-event-container { | ||
| 97 | - position: relative; | ||
| 98 | - z-index: 4; | ||
| 99 | -} | ||
| 100 | - | ||
| 101 | -.fc-time-grid .fc-now-indicator-line { | ||
| 102 | - z-index: 5; | ||
| 103 | -} | ||
| 104 | - | ||
| 105 | -.fc-time-grid .fc-mirror-container { | ||
| 106 | - /* also is fc-event-container */ | ||
| 107 | - position: relative; | ||
| 108 | - z-index: 6; | ||
| 109 | -} | ||
| 110 | - | ||
| 111 | -/* TimeGrid Slats (lines that run horizontally) | ||
| 112 | ---------------------------------------------------------------------------------------------------*/ | ||
| 113 | -.fc-time-grid .fc-slats td { | ||
| 114 | - height: 1.5em; | ||
| 115 | - border-bottom: 0; | ||
| 116 | - /* each cell is responsible for its top border */ | ||
| 117 | -} | ||
| 118 | - | ||
| 119 | -.fc-time-grid .fc-slats .fc-minor td { | ||
| 120 | - border-top-style: dotted; | ||
| 121 | -} | ||
| 122 | - | ||
| 123 | -/* TimeGrid Highlighting Slots | ||
| 124 | ---------------------------------------------------------------------------------------------------*/ | ||
| 125 | -.fc-time-grid .fc-highlight-container { | ||
| 126 | - /* a div within a cell within the fc-highlight-skeleton */ | ||
| 127 | - position: relative; | ||
| 128 | - /* scopes the left/right of the fc-highlight to be in the column */ | ||
| 129 | -} | ||
| 130 | - | ||
| 131 | -.fc-time-grid .fc-highlight { | ||
| 132 | - position: absolute; | ||
| 133 | - left: 0; | ||
| 134 | - right: 0; | ||
| 135 | - /* top and bottom will be in by JS */ | ||
| 136 | -} | ||
| 137 | - | ||
| 138 | -/* TimeGrid Event Containment | ||
| 139 | ---------------------------------------------------------------------------------------------------*/ | ||
| 140 | -.fc-ltr .fc-time-grid .fc-event-container { | ||
| 141 | - /* space on the sides of events for LTR (default) */ | ||
| 142 | - margin: 0 2.5% 0 2px; | ||
| 143 | -} | ||
| 144 | - | ||
| 145 | -.fc-rtl .fc-time-grid .fc-event-container { | ||
| 146 | - /* space on the sides of events for RTL */ | ||
| 147 | - margin: 0 2px 0 2.5%; | ||
| 148 | -} | ||
| 149 | - | ||
| 150 | -.fc-time-grid .fc-event, | ||
| 151 | -.fc-time-grid .fc-bgevent { | ||
| 152 | - position: absolute; | ||
| 153 | - z-index: 1; | ||
| 154 | - /* scope inner z-index's */ | ||
| 155 | -} | ||
| 156 | - | ||
| 157 | -.fc-time-grid .fc-bgevent { | ||
| 158 | - /* background events always span full width */ | ||
| 159 | - left: 0; | ||
| 160 | - right: 0; | ||
| 161 | -} | ||
| 162 | - | ||
| 163 | -/* TimeGrid Event Styling | ||
| 164 | ----------------------------------------------------------------------------------------------------- | ||
| 165 | -We use the full "fc-time-grid-event" class instead of using descendants because the event won't | ||
| 166 | -be a descendant of the grid when it is being dragged. | ||
| 167 | -*/ | ||
| 168 | -.fc-time-grid-event { | ||
| 169 | - margin-bottom: 1px; | ||
| 170 | -} | ||
| 171 | - | ||
| 172 | -.fc-time-grid-event-inset { | ||
| 173 | - -webkit-box-shadow: 0px 0px 0px 1px #fff; | ||
| 174 | - box-shadow: 0px 0px 0px 1px #fff; | ||
| 175 | -} | ||
| 176 | - | ||
| 177 | -.fc-time-grid-event.fc-not-start { | ||
| 178 | - /* events that are continuing from another day */ | ||
| 179 | - /* replace space made by the top border with padding */ | ||
| 180 | - border-top-width: 0; | ||
| 181 | - padding-top: 1px; | ||
| 182 | - /* remove top rounded corners */ | ||
| 183 | - border-top-left-radius: 0; | ||
| 184 | - border-top-right-radius: 0; | ||
| 185 | -} | ||
| 186 | - | ||
| 187 | -.fc-time-grid-event.fc-not-end { | ||
| 188 | - /* replace space made by the top border with padding */ | ||
| 189 | - border-bottom-width: 0; | ||
| 190 | - padding-bottom: 1px; | ||
| 191 | - /* remove bottom rounded corners */ | ||
| 192 | - border-bottom-left-radius: 0; | ||
| 193 | - border-bottom-right-radius: 0; | ||
| 194 | -} | ||
| 195 | - | ||
| 196 | -.fc-time-grid-event .fc-content { | ||
| 197 | - overflow: hidden; | ||
| 198 | - max-height: 100%; | ||
| 199 | -} | ||
| 200 | - | ||
| 201 | -.fc-time-grid-event .fc-time, | ||
| 202 | -.fc-time-grid-event .fc-title { | ||
| 203 | - padding: 0 1px; | ||
| 204 | -} | ||
| 205 | - | ||
| 206 | -.fc-time-grid-event .fc-time { | ||
| 207 | - font-size: 0.85em; | ||
| 208 | - white-space: nowrap; | ||
| 209 | -} | ||
| 210 | - | ||
| 211 | -/* short mode, where time and title are on the same line */ | ||
| 212 | -.fc-time-grid-event.fc-short .fc-content { | ||
| 213 | - /* don't wrap to second line (now that contents will be inline) */ | ||
| 214 | - white-space: nowrap; | ||
| 215 | -} | ||
| 216 | - | ||
| 217 | -.fc-time-grid-event.fc-short .fc-time, | ||
| 218 | -.fc-time-grid-event.fc-short .fc-title { | ||
| 219 | - /* put the time and title on the same line */ | ||
| 220 | - display: inline-block; | ||
| 221 | - vertical-align: top; | ||
| 222 | -} | ||
| 223 | - | ||
| 224 | -.fc-time-grid-event.fc-short .fc-time span { | ||
| 225 | - display: none; | ||
| 226 | - /* don't display the full time text... */ | ||
| 227 | -} | ||
| 228 | - | ||
| 229 | -.fc-time-grid-event.fc-short .fc-time:before { | ||
| 230 | - content: attr(data-start); | ||
| 231 | - /* ...instead, display only the start time */ | ||
| 232 | -} | ||
| 233 | - | ||
| 234 | -.fc-time-grid-event.fc-short .fc-time:after { | ||
| 235 | - content: " - "; | ||
| 236 | - /* seperate with a dash, wrapped in nbsp's */ | ||
| 237 | -} | ||
| 238 | - | ||
| 239 | -.fc-time-grid-event.fc-short .fc-title { | ||
| 240 | - font-size: 0.85em; | ||
| 241 | - /* make the title text the same size as the time */ | ||
| 242 | - padding: 0; | ||
| 243 | - /* undo padding from above */ | ||
| 244 | -} | ||
| 245 | - | ||
| 246 | -/* resizer (cursor device) */ | ||
| 247 | -.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer { | ||
| 248 | - left: 0; | ||
| 249 | - right: 0; | ||
| 250 | - bottom: 0; | ||
| 251 | - height: 8px; | ||
| 252 | - overflow: hidden; | ||
| 253 | - line-height: 8px; | ||
| 254 | - font-size: 11px; | ||
| 255 | - font-family: monospace; | ||
| 256 | - text-align: center; | ||
| 257 | - cursor: s-resize; | ||
| 258 | -} | ||
| 259 | - | ||
| 260 | -.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after { | ||
| 261 | - content: "="; | ||
| 262 | -} | ||
| 263 | - | ||
| 264 | -/* resizer (touch device) */ | ||
| 265 | -.fc-time-grid-event.fc-selected .fc-resizer { | ||
| 266 | - /* 10x10 dot */ | ||
| 267 | - border-radius: 5px; | ||
| 268 | - border-width: 1px; | ||
| 269 | - width: 8px; | ||
| 270 | - height: 8px; | ||
| 271 | - border-style: solid; | ||
| 272 | - border-color: inherit; | ||
| 273 | - background: #fff; | ||
| 274 | - /* horizontally center */ | ||
| 275 | - left: 50%; | ||
| 276 | - margin-left: -5px; | ||
| 277 | - /* center on the bottom edge */ | ||
| 278 | - bottom: -5px; | ||
| 279 | -} | ||
| 280 | - | ||
| 281 | -/* Now Indicator | ||
| 282 | ---------------------------------------------------------------------------------------------------*/ | ||
| 283 | -.fc-time-grid .fc-now-indicator-line { | ||
| 284 | - border-top-width: 1px; | ||
| 285 | - left: 0; | ||
| 286 | - right: 0; | ||
| 287 | -} | ||
| 288 | - | ||
| 289 | -/* arrow on axis */ | ||
| 290 | -.fc-time-grid .fc-now-indicator-arrow { | ||
| 291 | - margin-top: -5px; | ||
| 292 | - /* vertically center on top coordinate */ | ||
| 293 | -} | ||
| 294 | - | ||
| 295 | -.fc-ltr .fc-time-grid .fc-now-indicator-arrow { | ||
| 296 | - left: 0; | ||
| 297 | - /* triangle pointing right... */ | ||
| 298 | - border-width: 5px 0 5px 6px; | ||
| 299 | - border-top-color: transparent; | ||
| 300 | - border-bottom-color: transparent; | ||
| 301 | -} | ||
| 302 | - | ||
| 303 | -.fc-rtl .fc-time-grid .fc-now-indicator-arrow { | ||
| 304 | - right: 0; | ||
| 305 | - /* triangle pointing left... */ | ||
| 306 | - border-width: 5px 6px 5px 0; | ||
| 307 | - border-top-color: transparent; | ||
| 308 | - border-bottom-color: transparent; | ||
| 309 | -} |
Datum_UImodel/static/css/main3.css
deleted
100644 → 0
| 1 | -/* List View | ||
| 2 | ---------------------------------------------------------------------------------------------------*/ | ||
| 3 | -/* possibly reusable */ | ||
| 4 | -.fc-event-dot { | ||
| 5 | - display: inline-block; | ||
| 6 | - width: 10px; | ||
| 7 | - height: 10px; | ||
| 8 | - border-radius: 5px; | ||
| 9 | -} | ||
| 10 | - | ||
| 11 | -/* view wrapper */ | ||
| 12 | -.fc-rtl .fc-list-view { | ||
| 13 | - direction: rtl; | ||
| 14 | - /* unlike core views, leverage browser RTL */ | ||
| 15 | -} | ||
| 16 | - | ||
| 17 | -.fc-list-view { | ||
| 18 | - border-width: 1px; | ||
| 19 | - border-style: solid; | ||
| 20 | -} | ||
| 21 | - | ||
| 22 | -/* table resets */ | ||
| 23 | -.fc .fc-list-table { | ||
| 24 | - table-layout: auto; | ||
| 25 | - /* for shrinkwrapping cell content */ | ||
| 26 | -} | ||
| 27 | - | ||
| 28 | -.fc-list-table td { | ||
| 29 | - border-width: 1px 0 0; | ||
| 30 | - padding: 8px 14px; | ||
| 31 | -} | ||
| 32 | - | ||
| 33 | -.fc-list-table tr:first-child td { | ||
| 34 | - border-top-width: 0; | ||
| 35 | -} | ||
| 36 | - | ||
| 37 | -/* day headings with the list */ | ||
| 38 | -.fc-list-heading { | ||
| 39 | - border-bottom-width: 1px; | ||
| 40 | -} | ||
| 41 | - | ||
| 42 | -.fc-list-heading td { | ||
| 43 | - font-weight: bold; | ||
| 44 | -} | ||
| 45 | - | ||
| 46 | -.fc-ltr .fc-list-heading-main { | ||
| 47 | - float: left; | ||
| 48 | -} | ||
| 49 | - | ||
| 50 | -.fc-ltr .fc-list-heading-alt { | ||
| 51 | - float: right; | ||
| 52 | -} | ||
| 53 | - | ||
| 54 | -.fc-rtl .fc-list-heading-main { | ||
| 55 | - float: right; | ||
| 56 | -} | ||
| 57 | - | ||
| 58 | -.fc-rtl .fc-list-heading-alt { | ||
| 59 | - float: left; | ||
| 60 | -} | ||
| 61 | - | ||
| 62 | -/* event list items */ | ||
| 63 | -.fc-list-item.fc-has-url { | ||
| 64 | - cursor: pointer; | ||
| 65 | - /* whole row will be clickable */ | ||
| 66 | -} | ||
| 67 | - | ||
| 68 | -.fc-list-item-marker, | ||
| 69 | -.fc-list-item-time { | ||
| 70 | - white-space: nowrap; | ||
| 71 | - width: 1px; | ||
| 72 | -} | ||
| 73 | - | ||
| 74 | -/* make the dot closer to the event title */ | ||
| 75 | -.fc-ltr .fc-list-item-marker { | ||
| 76 | - padding-right: 0; | ||
| 77 | -} | ||
| 78 | - | ||
| 79 | -.fc-rtl .fc-list-item-marker { | ||
| 80 | - padding-left: 0; | ||
| 81 | -} | ||
| 82 | - | ||
| 83 | -.fc-list-item-title a { | ||
| 84 | - /* every event title cell has an <a> tag */ | ||
| 85 | - text-decoration: none; | ||
| 86 | - color: inherit; | ||
| 87 | -} | ||
| 88 | - | ||
| 89 | -.fc-list-item-title a[href]:hover { | ||
| 90 | - /* hover effect only on titles with hrefs */ | ||
| 91 | - text-decoration: underline; | ||
| 92 | -} | ||
| 93 | - | ||
| 94 | -/* message when no events */ | ||
| 95 | -.fc-list-empty-wrap2 { | ||
| 96 | - position: absolute; | ||
| 97 | - top: 0; | ||
| 98 | - left: 0; | ||
| 99 | - right: 0; | ||
| 100 | - bottom: 0; | ||
| 101 | -} | ||
| 102 | - | ||
| 103 | -.fc-list-empty-wrap1 { | ||
| 104 | - width: 100%; | ||
| 105 | - height: 100%; | ||
| 106 | - display: table; | ||
| 107 | -} | ||
| 108 | - | ||
| 109 | -.fc-list-empty { | ||
| 110 | - display: table-cell; | ||
| 111 | - vertical-align: middle; | ||
| 112 | - text-align: center; | ||
| 113 | -} | ||
| 114 | - | ||
| 115 | -.fc-unthemed .fc-list-empty { | ||
| 116 | - /* theme will provide own background */ | ||
| 117 | - background-color: #eee; | ||
| 118 | -} |
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
1.04 MB
Datum_UImodel/static/js/01.js
deleted
100644 → 0
This diff could not be displayed because it is too large.
Datum_UImodel/static/js/02.js
deleted
100644 → 0
| 1 | -(function(jQuery) { | ||
| 2 | - | ||
| 3 | - "use strict"; | ||
| 4 | - // for apexchart | ||
| 5 | - function apexChartUpdate(chart, detail) { | ||
| 6 | - let color = getComputedStyle(document.documentElement).getPropertyValue('--dark'); | ||
| 7 | - if (detail.dark) { | ||
| 8 | - color = getComputedStyle(document.documentElement).getPropertyValue('--white'); | ||
| 9 | - } | ||
| 10 | - chart.updateOptions({ | ||
| 11 | - chart: { | ||
| 12 | - foreColor: color | ||
| 13 | - } | ||
| 14 | - }) | ||
| 15 | - } | ||
| 16 | - | ||
| 17 | - if (jQuery("#hospital-chart-02").length) var donut = new Morris.Donut({ | ||
| 18 | - element: "hospital-chart-02", | ||
| 19 | - resize: !0, | ||
| 20 | - colors: ["#4788ff", "#4fd69c", "#37d5f2", "#f75676"], | ||
| 21 | - data: [ | ||
| 22 | - { | ||
| 23 | - label: "New Patient", | ||
| 24 | - value: 40 | ||
| 25 | - }, | ||
| 26 | - { | ||
| 27 | - label: "Exit Patient", | ||
| 28 | - value: 12 | ||
| 29 | - }, | ||
| 30 | - { | ||
| 31 | - label: "ICU Patient", | ||
| 32 | - value: 20 | ||
| 33 | - }, | ||
| 34 | - { | ||
| 35 | - label: "Discharge Patient", | ||
| 36 | - value: 33 | ||
| 37 | - } | ||
| 38 | - ], | ||
| 39 | - hideHover: "auto" | ||
| 40 | - }); | ||
| 41 | - | ||
| 42 | - if (jQuery("#hospital-chart-03").length) { | ||
| 43 | - const options = { | ||
| 44 | - series: [{ | ||
| 45 | - name: 'Operation', | ||
| 46 | - data: [44, 25, 10, 60, 50, 25, 40, 20] | ||
| 47 | - }, { | ||
| 48 | - name: 'Visitors', | ||
| 49 | - data: [25, 38, 70, 0, 30, 15, 30, 30] | ||
| 50 | - }], | ||
| 51 | - colors: ['#4788ff', '#4fd69c'], | ||
| 52 | - chart: { | ||
| 53 | - type: 'bar', | ||
| 54 | - height: 340, | ||
| 55 | - stacked: true, | ||
| 56 | - zoom: { | ||
| 57 | - enabled: true | ||
| 58 | - } | ||
| 59 | - }, | ||
| 60 | - responsive: [{ | ||
| 61 | - breakpoint: 580, | ||
| 62 | - options: { | ||
| 63 | - legend: { | ||
| 64 | - position: 'bottom', | ||
| 65 | - offsetX: -30, | ||
| 66 | - offsetY: 0, | ||
| 67 | - } | ||
| 68 | - } | ||
| 69 | - }], | ||
| 70 | - plotOptions: { | ||
| 71 | - bar: { | ||
| 72 | - horizontal: false, | ||
| 73 | - borderRadius: 4 | ||
| 74 | - }, | ||
| 75 | - }, | ||
| 76 | - xaxis: { | ||
| 77 | - type: 'category', | ||
| 78 | - categories: ['India', 'Canada', 'U.S.A', 'Africa', 'London ', 'Europe ','Dubai','Kuvet'], | ||
| 79 | - }, | ||
| 80 | - yaxis: { | ||
| 81 | - labels: { | ||
| 82 | - offsetY: 0, | ||
| 83 | - minWidth: 20, | ||
| 84 | - maxWidth: 20, | ||
| 85 | - } | ||
| 86 | - }, | ||
| 87 | - legend: { | ||
| 88 | - position: 'top', | ||
| 89 | - offsetX: -35 | ||
| 90 | - }, | ||
| 91 | - fill: { | ||
| 92 | - opacity: 1 | ||
| 93 | - }, | ||
| 94 | - dataLabels: { | ||
| 95 | - enabled: false | ||
| 96 | - } | ||
| 97 | - }; | ||
| 98 | - | ||
| 99 | - const chart = new ApexCharts(document.querySelector("#hospital-chart-03"), options); | ||
| 100 | - chart.render(); | ||
| 101 | - const body = document.querySelector('body') | ||
| 102 | - if (body.classList.contains('dark')) { | ||
| 103 | - apexChartUpdate(chart, { | ||
| 104 | - dark: true | ||
| 105 | - }) | ||
| 106 | - } | ||
| 107 | - | ||
| 108 | - document.addEventListener('ChangeColorMode', function (e) { | ||
| 109 | - apexChartUpdate(chart, e.detail) | ||
| 110 | - }) | ||
| 111 | - | ||
| 112 | - } | ||
| 113 | - | ||
| 114 | - if (jQuery("#dash-chart-04").length) { | ||
| 115 | - const options = { | ||
| 116 | - series: [{ | ||
| 117 | - name: 'Success', | ||
| 118 | - data: [110, 85, 87, 40, 45, 20, 91, 45, 94, 88] | ||
| 119 | - }, { | ||
| 120 | - name: 'Failed', | ||
| 121 | - data: [40, 55, 35, 30, 75, 80, 63, 45, 66, 115] | ||
| 122 | - }], | ||
| 123 | - chart: { | ||
| 124 | - type: 'bar', | ||
| 125 | - height: 280 | ||
| 126 | - }, | ||
| 127 | - colors: ['#4788ff', '#f75676'], | ||
| 128 | - plotOptions: { | ||
| 129 | - bar: { | ||
| 130 | - horizontal: false, | ||
| 131 | - borderRadius: 4 | ||
| 132 | - }, | ||
| 133 | - }, | ||
| 134 | - legend: { | ||
| 135 | - position: 'bottom', | ||
| 136 | - offsetX: 35 | ||
| 137 | - }, | ||
| 138 | - dataLabels: { | ||
| 139 | - enabled: false | ||
| 140 | - }, | ||
| 141 | - stroke: { | ||
| 142 | - show: true, | ||
| 143 | - width: 2, | ||
| 144 | - colors: ['transparent'] | ||
| 145 | - }, | ||
| 146 | - xaxis: { | ||
| 147 | - categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'], | ||
| 148 | - }, | ||
| 149 | - yaxis: { | ||
| 150 | - title: { | ||
| 151 | - text: '$ (thousands)' | ||
| 152 | - }, | ||
| 153 | - labels: { | ||
| 154 | - offsetY: 0, | ||
| 155 | - minWidth: 20, | ||
| 156 | - maxWidth: 20, | ||
| 157 | - } | ||
| 158 | - }, | ||
| 159 | - fill: { | ||
| 160 | - opacity: 1 | ||
| 161 | - }, | ||
| 162 | - tooltip: { | ||
| 163 | - y: { | ||
| 164 | - formatter: function (val) { | ||
| 165 | - return "$ " + val + " thousands" | ||
| 166 | - } | ||
| 167 | - } | ||
| 168 | - } | ||
| 169 | - }; | ||
| 170 | - | ||
| 171 | - const chart = new ApexCharts(document.querySelector("#dash-chart-04"), options); | ||
| 172 | - chart.render(); | ||
| 173 | - const body = document.querySelector('body') | ||
| 174 | - if (body.classList.contains('dark')) { | ||
| 175 | - apexChartUpdate(chart, { | ||
| 176 | - dark: true | ||
| 177 | - }) | ||
| 178 | - } | ||
| 179 | - | ||
| 180 | - document.addEventListener('ChangeColorMode', function (e) { | ||
| 181 | - apexChartUpdate(chart, e.detail) | ||
| 182 | - }) | ||
| 183 | - | ||
| 184 | - } | ||
| 185 | - | ||
| 186 | - if (jQuery("#hospital-chart-05").length) { | ||
| 187 | - var options = { | ||
| 188 | - series: [22, 83, 10, 30], | ||
| 189 | - colors: ['#f75676', '#4fd69c', '#37d5f2', '#4788ff'], | ||
| 190 | - chart: { | ||
| 191 | - height: 290, | ||
| 192 | - type: 'pie', | ||
| 193 | - }, | ||
| 194 | - legend: { | ||
| 195 | - position: 'bottom', | ||
| 196 | - offsetX: 0 | ||
| 197 | - }, | ||
| 198 | - labels: ['Cancelled', 'Completed', 'Pending', 'Upcoming'], | ||
| 199 | - | ||
| 200 | - }; | ||
| 201 | - var chart = new ApexCharts(document.querySelector("#hospital-chart-05"), options); | ||
| 202 | - chart.render(); | ||
| 203 | - const body = document.querySelector('body') | ||
| 204 | - if (body.classList.contains('dark')) { | ||
| 205 | - apexChartUpdate(chart, { | ||
| 206 | - dark: true | ||
| 207 | - }) | ||
| 208 | - } | ||
| 209 | - | ||
| 210 | - document.addEventListener('ChangeColorMode', function (e) { | ||
| 211 | - apexChartUpdate(chart, e.detail) | ||
| 212 | - }) | ||
| 213 | - } | ||
| 214 | - | ||
| 215 | -})(jQuery); |
Datum_UImodel/static/js/app.js
deleted
100644 → 0
| 1 | -/* | ||
| 2 | -Template: Datum - Responsive Bootstrap 4 Admin Dashboard Template | ||
| 3 | -Author: iqonic.design | ||
| 4 | -Design and Developed by: iqonic.design | ||
| 5 | -NOTE: This file contains the styling for responsive Template. | ||
| 6 | -*/ | ||
| 7 | - | ||
| 8 | -/*---------------------------------------------- | ||
| 9 | -Index Of Script | ||
| 10 | ------------------------------------------------- | ||
| 11 | - | ||
| 12 | -:: Tooltip | ||
| 13 | -:: Fixed Nav | ||
| 14 | -:: Magnific Popup | ||
| 15 | -:: Ripple Effect | ||
| 16 | -:: Sidebar Widget | ||
| 17 | -:: FullScreen | ||
| 18 | -:: Page Loader | ||
| 19 | -:: Counter | ||
| 20 | -:: Progress Bar | ||
| 21 | -:: Page Menu | ||
| 22 | -:: Close navbar Toggle | ||
| 23 | -:: Mailbox | ||
| 24 | -:: chatuser | ||
| 25 | -:: chatuser main | ||
| 26 | -:: Chat start | ||
| 27 | -:: todo Page | ||
| 28 | -:: user toggle | ||
| 29 | -:: Data tables | ||
| 30 | -:: Form Validation | ||
| 31 | -:: Active Class for Pricing Table | ||
| 32 | -:: Flatpicker | ||
| 33 | -:: Scrollbar | ||
| 34 | -:: checkout | ||
| 35 | -:: Datatables | ||
| 36 | -:: image-upload | ||
| 37 | -:: video | ||
| 38 | -:: dark mode | ||
| 39 | -:: Button | ||
| 40 | -:: Pricing tab | ||
| 41 | -:: SVG Animation | ||
| 42 | -:: Date Picker | ||
| 43 | -:: Choies.js | ||
| 44 | ------------------------------------------------- | ||
| 45 | -Index Of Script | ||
| 46 | -----------------------------------------------*/ | ||
| 47 | - | ||
| 48 | -(function(jQuery) { | ||
| 49 | - | ||
| 50 | - | ||
| 51 | - | ||
| 52 | - "use strict"; | ||
| 53 | - | ||
| 54 | - jQuery(document).ready(function() { | ||
| 55 | - | ||
| 56 | - /*--------------------------------------------------------------------- | ||
| 57 | - Tooltip | ||
| 58 | - -----------------------------------------------------------------------*/ | ||
| 59 | - jQuery('[data-toggle="popover"]').popover(); | ||
| 60 | - jQuery('[data-toggle="tooltip"]').tooltip(); | ||
| 61 | - | ||
| 62 | - /*--------------------------------------------------------------------- | ||
| 63 | - Fixed Nav | ||
| 64 | - -----------------------------------------------------------------------*/ | ||
| 65 | - | ||
| 66 | - $(window).on('scroll', function () { | ||
| 67 | - if ($(window).scrollTop() > 0) { | ||
| 68 | - $('.iq-top-navbar').addClass('fixed'); | ||
| 69 | - } else { | ||
| 70 | - $('.iq-top-navbar').removeClass('fixed'); | ||
| 71 | - } | ||
| 72 | - }); | ||
| 73 | - | ||
| 74 | - $(window).on('scroll', function () { | ||
| 75 | - if ($(window).scrollTop() > 0) { | ||
| 76 | - $('.white-bg-menu').addClass('sticky-menu'); | ||
| 77 | - } else { | ||
| 78 | - $('.white-bg-menu').removeClass('sticky-menu'); | ||
| 79 | - } | ||
| 80 | - }); | ||
| 81 | - | ||
| 82 | - | ||
| 83 | - /*--------------------------------------------------------------------- | ||
| 84 | - Sidebar Widget | ||
| 85 | - -----------------------------------------------------------------------*/ | ||
| 86 | - | ||
| 87 | - jQuery(document).on("click", '.side-menu > li > a', function() { | ||
| 88 | - jQuery('.side-menu > li > a').parent().removeClass('active'); | ||
| 89 | - jQuery(this).parent().addClass('active'); | ||
| 90 | - }); | ||
| 91 | - | ||
| 92 | - // Active menu | ||
| 93 | - var parents = jQuery('li.active').parents('.submenu.collapse'); | ||
| 94 | - | ||
| 95 | - parents.addClass('show'); | ||
| 96 | - | ||
| 97 | - | ||
| 98 | - parents.parents('li').addClass('active'); | ||
| 99 | - jQuery('li.active > a[aria-expanded="false"]').attr('aria-expanded', 'true'); | ||
| 100 | - | ||
| 101 | - /*--------------------------------------------------------------------- | ||
| 102 | - FullScreen | ||
| 103 | - -----------------------------------------------------------------------*/ | ||
| 104 | - jQuery(document).on('click', '.full-screen', function() { | ||
| 105 | - let elem = jQuery(this); | ||
| 106 | - elem.find('i').addClass('d-none'); | ||
| 107 | - elem.find('i').addClass('d-none'); | ||
| 108 | - if (!document.fullscreenElement && | ||
| 109 | - !document.mozFullScreenElement && // Mozilla | ||
| 110 | - !document.webkitFullscreenElement && // Webkit-Browser | ||
| 111 | - !document.msFullscreenElement) { // MS IE ab version 11 | ||
| 112 | - elem.find('.min').removeClass('d-none'); | ||
| 113 | - if (document.documentElement.requestFullscreen) { | ||
| 114 | - document.documentElement.requestFullscreen(); | ||
| 115 | - } else if (document.documentElement.mozRequestFullScreen) { | ||
| 116 | - document.documentElement.mozRequestFullScreen(); | ||
| 117 | - } else if (document.documentElement.webkitRequestFullscreen) { | ||
| 118 | - document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); | ||
| 119 | - } else if (document.documentElement.msRequestFullscreen) { | ||
| 120 | - document.documentElement.msRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); | ||
| 121 | - } | ||
| 122 | - } else { | ||
| 123 | - elem.find('.max').removeClass('d-none'); | ||
| 124 | - if (document.cancelFullScreen) { | ||
| 125 | - document.cancelFullScreen(); | ||
| 126 | - } else if (document.mozCancelFullScreen) { | ||
| 127 | - document.mozCancelFullScreen(); | ||
| 128 | - } else if (document.webkitCancelFullScreen) { | ||
| 129 | - document.webkitCancelFullScreen(); | ||
| 130 | - } else if (document.msExitFullscreen) { | ||
| 131 | - document.msExitFullscreen(); | ||
| 132 | - } | ||
| 133 | - } | ||
| 134 | - }); | ||
| 135 | - | ||
| 136 | - | ||
| 137 | - /*--------------------------------------------------------------------- | ||
| 138 | - Page Loader | ||
| 139 | - -----------------------------------------------------------------------*/ | ||
| 140 | - jQuery("#load").fadeOut(); | ||
| 141 | - jQuery("#loading").delay().fadeOut(""); | ||
| 142 | - | ||
| 143 | - | ||
| 144 | - /*--------------------------------------------------------------------- | ||
| 145 | - Counter | ||
| 146 | - -----------------------------------------------------------------------*/ | ||
| 147 | - if (window.counterUp !== undefined) { | ||
| 148 | - const counterUp = window.counterUp["default"] | ||
| 149 | - const $counters = $(".counter"); | ||
| 150 | - $counters.each(function (ignore, counter) { | ||
| 151 | - var waypoint = new Waypoint( { | ||
| 152 | - element: $(this), | ||
| 153 | - handler: function() { | ||
| 154 | - counterUp(counter, { | ||
| 155 | - duration: 1000, | ||
| 156 | - delay: 10 | ||
| 157 | - }); | ||
| 158 | - this.destroy(); | ||
| 159 | - }, | ||
| 160 | - offset: 'bottom-in-view', | ||
| 161 | - } ); | ||
| 162 | - }); | ||
| 163 | - } | ||
| 164 | - | ||
| 165 | - | ||
| 166 | - /*--------------------------------------------------------------------- | ||
| 167 | - Progress Bar | ||
| 168 | - -----------------------------------------------------------------------*/ | ||
| 169 | - jQuery('.iq-progress-bar > span').each(function() { | ||
| 170 | - let progressBar = jQuery(this); | ||
| 171 | - let width = jQuery(this).data('percent'); | ||
| 172 | - progressBar.css({ | ||
| 173 | - 'transition': 'width 2s' | ||
| 174 | - }); | ||
| 175 | - setTimeout(function() { | ||
| 176 | - progressBar.css('width', width + '%'); | ||
| 177 | - }, 100); | ||
| 178 | - }); | ||
| 179 | - | ||
| 180 | - jQuery('.progress-bar-vertical > span').each(function () { | ||
| 181 | - let progressBar = jQuery(this); | ||
| 182 | - let height = jQuery(this).data('percent'); | ||
| 183 | - progressBar.css({ | ||
| 184 | - 'transition': 'height 2s' | ||
| 185 | - }); | ||
| 186 | - setTimeout(function () { | ||
| 187 | - progressBar.css('height', height + '%'); | ||
| 188 | - }, 100); | ||
| 189 | - }); | ||
| 190 | - | ||
| 191 | - | ||
| 192 | - /*--------------------------------------------------------------------- | ||
| 193 | - Page Menu | ||
| 194 | - -----------------------------------------------------------------------*/ | ||
| 195 | - jQuery(document).on('click', '.wrapper-menu', function() { | ||
| 196 | - jQuery(this).toggleClass('open'); | ||
| 197 | - }); | ||
| 198 | - | ||
| 199 | - jQuery(document).on('click', ".wrapper-menu", function() { | ||
| 200 | - jQuery("body").toggleClass("sidebar-main"); | ||
| 201 | - }); | ||
| 202 | - | ||
| 203 | - | ||
| 204 | - /*--------------------------------------------------------------------- | ||
| 205 | - Close navbar Toggle | ||
| 206 | - -----------------------------------------------------------------------*/ | ||
| 207 | - | ||
| 208 | - jQuery('.close-toggle').on('click', function () { | ||
| 209 | - jQuery('.h-collapse.navbar-collapse').collapse('hide'); | ||
| 210 | - }); | ||
| 211 | - | ||
| 212 | - /*--------------------------------------------------------------------- | ||
| 213 | - user toggle | ||
| 214 | - -----------------------------------------------------------------------*/ | ||
| 215 | - jQuery(document).on('click', '.user-toggle', function() { | ||
| 216 | - jQuery(this).parent().addClass('show-data'); | ||
| 217 | - }); | ||
| 218 | - | ||
| 219 | - jQuery(document).on('click', ".close-data", function() { | ||
| 220 | - jQuery('.user-toggle').parent().removeClass('show-data'); | ||
| 221 | - }); | ||
| 222 | - jQuery(document).on("click", function(event){ | ||
| 223 | - var $trigger = jQuery(".user-toggle"); | ||
| 224 | - if($trigger !== event.target && !$trigger.has(event.target).length){ | ||
| 225 | - jQuery(".user-toggle").parent().removeClass('show-data'); | ||
| 226 | - } | ||
| 227 | - }); | ||
| 228 | - | ||
| 229 | - /*--------------------------------------------------------------------- | ||
| 230 | - Data tables | ||
| 231 | - -----------------------------------------------------------------------*/ | ||
| 232 | - if($.fn.DataTable){ | ||
| 233 | - const table = $('.data-table').DataTable(); | ||
| 234 | - } | ||
| 235 | - | ||
| 236 | - | ||
| 237 | - /*--------------------------------------------------------------------- | ||
| 238 | - Form Validation | ||
| 239 | - -----------------------------------------------------------------------*/ | ||
| 240 | - | ||
| 241 | - // Example starter JavaScript for disabling form submissions if there are invalid fields | ||
| 242 | - window.addEventListener('load', function() { | ||
| 243 | - // Fetch all the forms we want to apply custom Bootstrap validation styles to | ||
| 244 | - var forms = document.getElementsByClassName('needs-validation'); | ||
| 245 | - // Loop over them and prevent submission | ||
| 246 | - var validation = Array.prototype.filter.call(forms, function(form) { | ||
| 247 | - form.addEventListener('submit', function(event) { | ||
| 248 | - if (form.checkValidity() === false) { | ||
| 249 | - event.preventDefault(); | ||
| 250 | - event.stopPropagation(); | ||
| 251 | - } | ||
| 252 | - form.classList.add('was-validated'); | ||
| 253 | - }, false); | ||
| 254 | - }); | ||
| 255 | - }, false); | ||
| 256 | - | ||
| 257 | - /*--------------------------------------------------------------------- | ||
| 258 | - Active Class for Pricing Table | ||
| 259 | - -----------------------------------------------------------------------*/ | ||
| 260 | - jQuery("#my-table tr th").click(function () { | ||
| 261 | - jQuery('#my-table tr th').children().removeClass('active'); | ||
| 262 | - jQuery(this).children().addClass('active'); | ||
| 263 | - jQuery("#my-table td").each(function () { | ||
| 264 | - if (jQuery(this).hasClass('active')) { | ||
| 265 | - jQuery(this).removeClass('active') | ||
| 266 | - } | ||
| 267 | - }); | ||
| 268 | - var col = jQuery(this).index(); | ||
| 269 | - jQuery("#my-table tr td:nth-child(" + parseInt(col + 1) + ")").addClass('active'); | ||
| 270 | - }); | ||
| 271 | - | ||
| 272 | - | ||
| 273 | - /*--------------------------------------------------------------------- | ||
| 274 | - Scrollbar | ||
| 275 | - -----------------------------------------------------------------------*/ | ||
| 276 | - | ||
| 277 | - jQuery('.data-scrollbar').each(function () { | ||
| 278 | - var attr = $(this).attr('data-scroll'); | ||
| 279 | - if (typeof attr !== typeof undefined && attr !== false){ | ||
| 280 | - let Scrollbar = window.Scrollbar; | ||
| 281 | - var a = jQuery(this).data('scroll'); | ||
| 282 | - Scrollbar.init(document.querySelector('div[data-scroll= "' + a + '"]')); | ||
| 283 | - } | ||
| 284 | - }); | ||
| 285 | - | ||
| 286 | - | ||
| 287 | - /*--------------------------------------------------------------------- | ||
| 288 | - image-upload | ||
| 289 | - -----------------------------------------------------------------------*/ | ||
| 290 | - | ||
| 291 | - $('.form_gallery-upload').on('change', function() { | ||
| 292 | - var length = $(this).get(0).files.length; | ||
| 293 | - var galleryLabel = $(this).attr('data-name'); | ||
| 294 | - | ||
| 295 | - if( length > 1 ){ | ||
| 296 | - $(galleryLabel).text(length + " files selected"); | ||
| 297 | - } else { | ||
| 298 | - $(galleryLabel).text($(this)[0].files[0].name); | ||
| 299 | - } | ||
| 300 | - }); | ||
| 301 | - | ||
| 302 | - /*--------------------------------------------------------------------- | ||
| 303 | - video | ||
| 304 | - -----------------------------------------------------------------------*/ | ||
| 305 | - $(document).ready(function(){ | ||
| 306 | - $('.form_video-upload input').change(function () { | ||
| 307 | - $('.form_video-upload p').text(this.files.length + " file(s) selected"); | ||
| 308 | - }); | ||
| 309 | - }); | ||
| 310 | - /*--------------------------------------------------------------------- | ||
| 311 | - dark mode | ||
| 312 | - -----------------------------------------------------------------------*/ | ||
| 313 | - const urlParams = new URLSearchParams(window.location.search); | ||
| 314 | - const mode = urlParams.get('dark'); | ||
| 315 | - if (mode !== null) { | ||
| 316 | - $('body').removeClass('sidebar-dark', 'sidebar-light') | ||
| 317 | - switch (mode) { | ||
| 318 | - case "true": | ||
| 319 | - $('body').addClass('dark') | ||
| 320 | - break; | ||
| 321 | - case "false": | ||
| 322 | - $('body').removeClass('sidebar-dark', 'sidebar-light') | ||
| 323 | - break; | ||
| 324 | - default: | ||
| 325 | - $('body').removeClass('sidebar-dark').removeClass('sidebar-light') | ||
| 326 | - break; | ||
| 327 | - } | ||
| 328 | - } | ||
| 329 | - | ||
| 330 | - | ||
| 331 | - /*--------------------------------------------------------------------- | ||
| 332 | - Button | ||
| 333 | - -----------------------------------------------------------------------*/ | ||
| 334 | - | ||
| 335 | - jQuery('.qty-btn').on('click',function(){ | ||
| 336 | - var id = jQuery(this).attr('id'); | ||
| 337 | - | ||
| 338 | - var val = parseInt(jQuery('#quantity').val()); | ||
| 339 | - | ||
| 340 | - if(id == 'btn-minus') | ||
| 341 | - { | ||
| 342 | - if(val != 0) | ||
| 343 | - { | ||
| 344 | - jQuery('#quantity').val(val-1); | ||
| 345 | - } | ||
| 346 | - else | ||
| 347 | - { | ||
| 348 | - jQuery('#quantity').val(0); | ||
| 349 | - } | ||
| 350 | - | ||
| 351 | - } | ||
| 352 | - else | ||
| 353 | - { | ||
| 354 | - jQuery('#quantity').val(val+1); | ||
| 355 | - } | ||
| 356 | - }); | ||
| 357 | - | ||
| 358 | - }); | ||
| 359 | - | ||
| 360 | - | ||
| 361 | - $(document).on('click', '[data-toggel-extra="side-nav"]', function () { | ||
| 362 | - const pannel = $(this).attr('data-expand-extra') | ||
| 363 | - $(pannel).addClass('active') | ||
| 364 | - }) | ||
| 365 | - | ||
| 366 | - $(document).on('click', '[data-toggel-extra="side-nav-close"]', function () { | ||
| 367 | - const pannel = $(this).attr('data-expand-extra') | ||
| 368 | - $(pannel).removeClass('active') | ||
| 369 | - }) | ||
| 370 | - | ||
| 371 | - $(document).on('click', '[data-toggel-extra="right-sidenav"]', function () { | ||
| 372 | - const target = $(this).data('target') | ||
| 373 | - $(target).addClass('active') | ||
| 374 | - }) | ||
| 375 | - | ||
| 376 | - $(document).on('click', '[data-extra-dismiss="right-sidenav"]', function () { | ||
| 377 | - $(this).closest('.right-sidenav').removeClass('active') | ||
| 378 | - }) | ||
| 379 | - | ||
| 380 | - $(document).on('click', '[data-toggle="end-call"]', function(){ | ||
| 381 | - $(this).closest('.tab-pane').removeClass('active').removeClass('show') | ||
| 382 | - $($(this).attr('data-target')).tab('show') | ||
| 383 | - $('.chat-action').find('[data-toggle="tab"]').removeClass('active') | ||
| 384 | - }) | ||
| 385 | - | ||
| 386 | - $(document).on('click', '[data-toggle-extra="tab"]', function () { | ||
| 387 | - const target = $(this).attr('data-target-extra') | ||
| 388 | - $('[data-toggle-extra="tab-content"]').removeClass('active') | ||
| 389 | - $(target).addClass('active') | ||
| 390 | - $(this).parent().find('.active').removeClass('active') | ||
| 391 | - $(this).addClass('active') | ||
| 392 | - }) | ||
| 393 | - | ||
| 394 | - $('emoji-picker').on('emoji-click', function(e){ | ||
| 395 | - $(e.target.dataset.targetInput).val($(e.target.dataset.targetInput).val()+e.detail.unicode) | ||
| 396 | - }) | ||
| 397 | - | ||
| 398 | - $('.dropdown-menu').on('click', function(event){ | ||
| 399 | - event.stopPropagation(); | ||
| 400 | - }); | ||
| 401 | - | ||
| 402 | - var board = $('.draggable-item'); | ||
| 403 | - | ||
| 404 | - var selector = []; | ||
| 405 | - if(board.length > 0 ) | ||
| 406 | - { | ||
| 407 | - for(var i = 0 ; i < board.length ; i++) { | ||
| 408 | - selector.push(document.querySelector('#draggable-item-'+i)); | ||
| 409 | - selector.push(document.querySelector('#list-draggable-item-'+i)); | ||
| 410 | - } | ||
| 411 | - } | ||
| 412 | - dragula( selector ).on('drop', function(el) { | ||
| 413 | - $(el).addClass(' animate__animated animate__rubberBand') | ||
| 414 | - setTimeout(function () { | ||
| 415 | - $(el).removeClass(' animate__animated animate__rubberBand') | ||
| 416 | - }, 1000) | ||
| 417 | - }); | ||
| 418 | - | ||
| 419 | - // calender 1 js | ||
| 420 | - var calendar1; | ||
| 421 | - if (jQuery('#calendar1').length) { | ||
| 422 | - var calendarEl = document.getElementById('calendar1'); | ||
| 423 | - | ||
| 424 | - calendar1 = new FullCalendar.Calendar(calendarEl, { | ||
| 425 | - selectable: true, | ||
| 426 | - plugins: ["timeGrid", "dayGrid", "list", "interaction"], | ||
| 427 | - timeZone: "UTC", | ||
| 428 | - defaultView: "dayGridMonth", | ||
| 429 | - contentHeight: "auto", | ||
| 430 | - eventLimit: true, | ||
| 431 | - dayMaxEvents: 4, | ||
| 432 | - header: { | ||
| 433 | - left: "prev,next today", | ||
| 434 | - center: "title", | ||
| 435 | - right: "dayGridMonth,timeGridWeek,timeGridDay,listWeek" | ||
| 436 | - }, | ||
| 437 | - dateClick: function (info) { | ||
| 438 | - $('#schedule-start-date').val(info.dateStr) | ||
| 439 | - $('#schedule-end-date').val(info.dateStr) | ||
| 440 | - $('#date-event').modal('show') | ||
| 441 | - }, | ||
| 442 | - events: [ | ||
| 443 | - { | ||
| 444 | - title: 'Click for Google', | ||
| 445 | - url: 'http://google.com/', | ||
| 446 | - start: moment(new Date(), 'YYYY-MM-DD').add(-20, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 447 | - color: '#4731b6' | ||
| 448 | - }, | ||
| 449 | - { | ||
| 450 | - title: 'All Day Event', | ||
| 451 | - start: moment(new Date(), 'YYYY-MM-DD').add(-18, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 452 | - color: '#465af7' | ||
| 453 | - }, | ||
| 454 | - { | ||
| 455 | - title: 'Long Event', | ||
| 456 | - start: moment(new Date(), 'YYYY-MM-DD').add(-16, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 457 | - end: moment(new Date(), 'YYYY-MM-DD').add(-13, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 458 | - color: '#7858d7' | ||
| 459 | - }, | ||
| 460 | - { | ||
| 461 | - groupId: '999', | ||
| 462 | - title: 'Repeating Event', | ||
| 463 | - start: moment(new Date(), 'YYYY-MM-DD').add(-14, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 464 | - color: '#465af7' | ||
| 465 | - }, | ||
| 466 | - { | ||
| 467 | - groupId: '999', | ||
| 468 | - title: 'Repeating Event', | ||
| 469 | - start: moment(new Date(), 'YYYY-MM-DD').add(-12, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 470 | - color: '#5baa73' | ||
| 471 | - }, | ||
| 472 | - { | ||
| 473 | - groupId: '999', | ||
| 474 | - title: 'Repeating Event', | ||
| 475 | - start: moment(new Date(), 'YYYY-MM-DD').add(-10, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 476 | - color: '#01041b' | ||
| 477 | - }, | ||
| 478 | - { | ||
| 479 | - title: 'Birthday Party', | ||
| 480 | - start: moment(new Date(), 'YYYY-MM-DD').add(-8, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 481 | - color: '#4731b6' | ||
| 482 | - }, | ||
| 483 | - { | ||
| 484 | - title: 'Meeting', | ||
| 485 | - start: moment(new Date(), 'YYYY-MM-DD').add(-6, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 486 | - color: '#15ca92' | ||
| 487 | - }, | ||
| 488 | - { | ||
| 489 | - title: 'Birthday Party', | ||
| 490 | - start: moment(new Date(), 'YYYY-MM-DD').add(-5, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 491 | - color: '#f4a965' | ||
| 492 | - }, | ||
| 493 | - { | ||
| 494 | - title: 'Birthday Party', | ||
| 495 | - start: moment(new Date(), 'YYYY-MM-DD').add(-2, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 496 | - color: '#ea643f' | ||
| 497 | - }, | ||
| 498 | - | ||
| 499 | - { | ||
| 500 | - title: 'Meeting', | ||
| 501 | - start: moment(new Date(), 'YYYY-MM-DD').add(0, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 502 | - color: '#15ca92' | ||
| 503 | - }, | ||
| 504 | - { | ||
| 505 | - title: 'Click for Google', | ||
| 506 | - url: 'http://google.com/', | ||
| 507 | - start: moment(new Date(), 'YYYY-MM-DD').add(0, 'days').format('YYYY-MM-DD') + 'T06:30:00.000Z', | ||
| 508 | - color: '#4731b6' | ||
| 509 | - }, | ||
| 510 | - { | ||
| 511 | - groupId: '999', | ||
| 512 | - title: 'Repeating Event', | ||
| 513 | - start: moment(new Date(), 'YYYY-MM-DD').add(0, 'days').format('YYYY-MM-DD') + 'T07:30:00.000Z', | ||
| 514 | - color: '#5baa73' | ||
| 515 | - }, | ||
| 516 | - { | ||
| 517 | - title: 'Birthday Party', | ||
| 518 | - start: moment(new Date(), 'YYYY-MM-DD').add(0, 'days').format('YYYY-MM-DD') + 'T08:30:00.000Z', | ||
| 519 | - color: '#f4a965' | ||
| 520 | - }, | ||
| 521 | - { | ||
| 522 | - title: 'Doctor Meeting', | ||
| 523 | - start: moment(new Date(), 'YYYY-MM-DD').add(0, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 524 | - color: '#f4a965' | ||
| 525 | - }, | ||
| 526 | - { | ||
| 527 | - title: 'All Day Event', | ||
| 528 | - start: moment(new Date(), 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 529 | - color: '#465af7' | ||
| 530 | - }, | ||
| 531 | - { | ||
| 532 | - groupId: '999', | ||
| 533 | - title: 'Repeating Event', | ||
| 534 | - start: moment(new Date(), 'YYYY-MM-DD').add(8, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 535 | - color: '#465af7' | ||
| 536 | - }, | ||
| 537 | - { | ||
| 538 | - groupId: '999', | ||
| 539 | - title: 'Repeating Event', | ||
| 540 | - start: moment(new Date(), 'YYYY-MM-DD').add(10, 'days').format('YYYY-MM-DD') + 'T05:30:00.000Z', | ||
| 541 | - color: '#5baa73' | ||
| 542 | - } | ||
| 543 | - ] | ||
| 544 | - }); | ||
| 545 | - calendar1.render(); | ||
| 546 | - | ||
| 547 | - $(document).on("submit", "#submit-schedule", function (e) { | ||
| 548 | - e.preventDefault() | ||
| 549 | - const title = $(this).find('#schedule-title').val() | ||
| 550 | - const startDate = moment(new Date($(this).find('#schedule-start-date').val()), 'YYYY-MM-DD').format('YYYY-MM-DD') + 'T05:30:00.000Z' | ||
| 551 | - const endDate = moment(new Date($(this).find('#schedule-end-date').val()), 'YYYY-MM-DD').format('YYYY-MM-DD') + 'T05:30:00.000Z' | ||
| 552 | - const color = $(this).find('#schedule-color').val() | ||
| 553 | - const event = { | ||
| 554 | - title: title, | ||
| 555 | - start: startDate || '2020-12-22T02:30:00', | ||
| 556 | - end: endDate || '2020-12-12T14:30:00', | ||
| 557 | - color: color || '#7858d7' | ||
| 558 | - } | ||
| 559 | - $(this).closest('#date-event').modal('hide') | ||
| 560 | - calendar1.addEvent(event) | ||
| 561 | - }) | ||
| 562 | - } | ||
| 563 | - | ||
| 564 | - const progressBar = document.getElementsByClassName('circle-progress') | ||
| 565 | - Array.from(progressBar, (elem) => { | ||
| 566 | - const minValue = elem.getAttribute('data-min-value') | ||
| 567 | - const maxValue = elem.getAttribute('data-max-value') | ||
| 568 | - const value = elem.getAttribute('data-value') | ||
| 569 | - const type = elem.getAttribute('data-type') | ||
| 570 | - if (elem.getAttribute('id') !== '' && elem.getAttribute('id') !== null) { | ||
| 571 | - new CircleProgress('#'+elem.getAttribute('id'), { | ||
| 572 | - min: minValue, | ||
| 573 | - max: maxValue, | ||
| 574 | - value: value, | ||
| 575 | - textFormat: type, | ||
| 576 | - }); | ||
| 577 | - } | ||
| 578 | - }) | ||
| 579 | - /*--------------------------------------------------------------------- | ||
| 580 | - Vanila Datepicker | ||
| 581 | - -----------------------------------------------------------------------*/ | ||
| 582 | - const datepickers = document.querySelectorAll('.vanila-datepicker') | ||
| 583 | - Array.from(datepickers, (elem) => { | ||
| 584 | - new Datepicker(elem) | ||
| 585 | - }) | ||
| 586 | - const daterangePickers = document.querySelectorAll('.vanila-daterangepicker') | ||
| 587 | - Array.from(daterangePickers, (elem) => { | ||
| 588 | - new DateRangePicker(elem) | ||
| 589 | - }) | ||
| 590 | - | ||
| 591 | - /*--------------------------------------------------------------------- | ||
| 592 | - Choies.js | ||
| 593 | - -----------------------------------------------------------------------*/ | ||
| 594 | - const choies = document.querySelectorAll('.choicesjs') | ||
| 595 | - Array.from(choies,(elem) => { | ||
| 596 | - new Choices(elem, { | ||
| 597 | - removeItemButton: true, | ||
| 598 | - }) | ||
| 599 | - }) | ||
| 600 | -})(jQuery); |
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
Datum_UImodel/static/js/countdown.js
deleted
100644 → 0
| 1 | -function getTimeRemaining(endtime) { | ||
| 2 | - const total = Date.parse(endtime) - Date.parse(new Date()); | ||
| 3 | - const seconds = Math.floor((total / 1000) % 60); | ||
| 4 | - const minutes = Math.floor((total / 1000 / 60) % 60); | ||
| 5 | - const hours = Math.floor((total / (1000 * 60 * 60)) % 24); | ||
| 6 | - const days = Math.floor(total / (1000 * 60 * 60 * 24)); | ||
| 7 | - | ||
| 8 | - return { | ||
| 9 | - total, | ||
| 10 | - days, | ||
| 11 | - hours, | ||
| 12 | - minutes, | ||
| 13 | - seconds | ||
| 14 | - }; | ||
| 15 | - } | ||
| 16 | - | ||
| 17 | - function initializeClock(elem, endtime) { | ||
| 18 | - const clock = document.querySelector(elem) | ||
| 19 | - const daysSpan = clock.querySelector('[data-days]') | ||
| 20 | - const hoursSpan = clock.querySelector('[data-hours]') | ||
| 21 | - const minutesSpan = clock.querySelector('[data-minutes]') | ||
| 22 | - const secondsSpan = clock.querySelector('[data-seconds]') | ||
| 23 | - | ||
| 24 | - function updateClock() { | ||
| 25 | - const t = getTimeRemaining(endtime) | ||
| 26 | - | ||
| 27 | - daysSpan.innerHTML = t.days | ||
| 28 | - hoursSpan.innerHTML = ('0' + t.hours).slice(-2) | ||
| 29 | - minutesSpan.innerHTML = ('0' + t.minutes).slice(-2) | ||
| 30 | - secondsSpan.innerHTML = ('0' + t.seconds).slice(-2) | ||
| 31 | - | ||
| 32 | - if (t.total <= 0) { | ||
| 33 | - clearInterval(timeinterval) | ||
| 34 | - } | ||
| 35 | - } | ||
| 36 | - | ||
| 37 | - updateClock() | ||
| 38 | - const timeinterval = setInterval(updateClock, 1000) | ||
| 39 | - } | ||
| 40 | - | ||
| 41 | - let time = document.querySelector('.countdown').getAttribute('data-date') | ||
| 42 | - if (time == undefined) { | ||
| 43 | - time = Date.parse(new Date()) + 15 * 24 * 60 * 60 * 1000 | ||
| 44 | - } | ||
| 45 | - const deadline = new Date(time) | ||
| 46 | - initializeClock('.countdown', deadline) |
| 1 | -(function (jQuery) { | ||
| 2 | - "use strict"; | ||
| 3 | - // data-mode="click" for using event | ||
| 4 | - // data-dark="false" for property | ||
| 5 | - // icon class // la-sun // la-moon | ||
| 6 | - const storageDark = localStorage.getItem('dark') | ||
| 7 | - if($('body').hasClass('dark')){ | ||
| 8 | - changeMode('true'); | ||
| 9 | - } else { | ||
| 10 | - changeMode('false'); | ||
| 11 | - } | ||
| 12 | - if (storageDark !== 'null') { | ||
| 13 | - changeMode(storageDark) | ||
| 14 | - } | ||
| 15 | - jQuery(document).on("change", '.change-mode input[type="checkbox"]' ,function (e) { | ||
| 16 | - const dark = $(this).attr('data-active'); | ||
| 17 | - if (dark === 'true') { | ||
| 18 | - $(this).attr('data-active','false') | ||
| 19 | - } else { | ||
| 20 | - $(this).attr('data-active','true') | ||
| 21 | - } | ||
| 22 | - changeMode(dark) | ||
| 23 | - }) | ||
| 24 | - function changeMode (dark) { | ||
| 25 | - const body = jQuery('body') | ||
| 26 | - if (dark === 'true') { | ||
| 27 | - // $('[data-mode="toggle"]').find('i.a-right').removeClass('ri-sun-line'); | ||
| 28 | - // $('[data-mode="toggle"]').find('i.a-left').addClass('ri-moon-clear-line'); | ||
| 29 | - $('#dark-mode').prop('checked', true).attr('data-active', 'false') | ||
| 30 | - $('.darkmode-logo').removeClass('d-none') | ||
| 31 | - $('.light-logo').addClass('d-none') | ||
| 32 | - body.addClass('dark') | ||
| 33 | - dark = true | ||
| 34 | - } else { | ||
| 35 | - // $('[data-mode="toggle"]').find('i.a-left').removeClass('ri-moon-clear-line'); | ||
| 36 | - // $('[data-mode="toggle"]').find('i.a-right').addClass('ri-sun-line'); | ||
| 37 | - $('#dark-mode').prop('checked', false).attr('data-active', 'true'); | ||
| 38 | - $('.light-logo').removeClass('d-none') | ||
| 39 | - $('.darkmode-logo').addClass('d-none') | ||
| 40 | - body.removeClass('dark') | ||
| 41 | - dark = false | ||
| 42 | - } | ||
| 43 | - updateLocalStorage(dark) | ||
| 44 | - const event = new CustomEvent("ChangeColorMode", {detail: {dark: dark} }); | ||
| 45 | - document.dispatchEvent(event); | ||
| 46 | - } | ||
| 47 | - function updateLocalStorage(dark) { | ||
| 48 | - localStorage.setItem('dark', dark) | ||
| 49 | - } | ||
| 50 | - | ||
| 51 | -})(jQuery) |
| 1 | -/*! jQuery Flex Tree 1.2.0 2020-08-19 */ | ||
| 2 | -!function(a){var b="flexTree",c={};a.fn[b]=function(b){b=a.extend(!0,{id:void 0,targetElement:a(this),type:void 0,debug:!1,name:"flex_tree",items:{},className:"flex-tree",buildTree:!0,collapsed:!1,collapsable:!0,addControlOnParent:!0,threeState:!0},c,b),!1===b.collapsable&&(b.collapsed=!1),!1===b.addControlOnParent&&(b.threeState=!1);var d;if(b.buildTree){d=a("<ul/>").attr("class",b.className).attr("id",b.id);var e=function(b){b=a.extend(!0,{items:{},ul:d,collapsed:!1,collapsable:!0,addControlOnParent:!0,threeState:!0},b),a.each(b.items,function(c,d){if("object"==typeof d.childrens&&d.childrens.length){var f=a("<li/>");!b.addControlOnParent||"checkbox"!==b.type&&"radio"!==b.type||f.append(a("<input/>").attr("type",b.type).attr("name","radio"===b.type||!1===b.threeState?d.name||b.name:d.name).attr("name",d.name).attr("value",d.value).attr("class","node").attr("id",d.id).prop("checked",d.checked)),f.append(a('<span class="node"/> ').addClass(b.collapsable?b.collapsed?"open":"closed":"").append(a("<label/>").append(d.label).attr("class","node")));var g=a("<ul/>");b.ul.append(f),f.append(g),!0===b.collapsed&&g.hide(),e({items:d.childrens,name:b.name,ul:g,collapsed:b.collapsed,collapsable:b.collapsable,type:b.type,addControlOnParent:b.addControlOnParent,threeState:b.threeState})}else b.ul.append(a("<li/>").append(a("<label/>").append("undefined"!=typeof b.type?a("<input/>").attr("type",b.type).attr("name","checkbox"===b.type?d.name||b.name:b.name).attr("value",d.value).attr("class","leaf").attr("id",d.id).prop("checked",d.checked):void 0).append(d.label)))})};e(b),a(b.targetElement).append(d)}else d=b.targetElement,d.addClass(b.className);if(b.collapsable&&a("li span.node",d).on("click",function(b){a(this).toggleClass("closed").toggleClass("open").next().toggle(200)}),b.threeState&&"checkbox"===b.type){a('input[type="checkbox"].node',d).on("click",function(b){a(this).removeClass("indeterminate").prop("indeterminate",!1);var c=a(this);c.parent().find('ul input[type="checkbox"]').each(function(){a(this).prop("checked",c.prop("checked")).prop("indeterminate",!1).removeClass("indeterminate")})});var f=function(){var b=a(this).closest("ul").prevAll('input[type="checkbox"].node');if(b.length){a(this).prop("checked")||b.prop("checked",!1);var c=a(this).prop("checked"),d=a(this).prop("checked");a(this).closest("li").siblings("li").find("input:first").each(function(){a(this).prop("checked")&&!0!==a(this).prop("indeterminate")||(c=!1),(a(this).prop("checked")||!0===a(this).prop("indeterminate"))&&(d=!0)}),d||!0===a(this).prop("indeterminate")?b.addClass("indeterminate").prop("indeterminate",!0):b.removeClass("indeterminate").prop("indeterminate",!1),c&&b.prop("checked",!0).prop("indeterminate",!1).removeClass("indeterminate"),f.apply(b)}};a('input[type="checkbox"]',d).on("click",f),a('input[type="checkbox"].leaf',d).each(function(){f.apply(this)})}}}(jQuery); |
Datum_UImodel/static/js/index.js
deleted
100644 → 0
Datum_UImodel/static/js/main.js
deleted
100644 → 0
This diff could not be displayed because it is too large.
Datum_UImodel/static/js/main1.js
deleted
100644 → 0
| 1 | -/*! | ||
| 2 | -FullCalendar Day Grid Plugin v4.3.0 | ||
| 3 | -Docs & License: https://fullcalendar.io/ | ||
| 4 | -(c) 2019 Adam Shaw | ||
| 5 | -*/ | ||
| 6 | - | ||
| 7 | -(function (global, factory) { | ||
| 8 | - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) : | ||
| 9 | - typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) : | ||
| 10 | - (global = global || self, factory(global.FullCalendarDayGrid = {}, global.FullCalendar)); | ||
| 11 | -}(this, function (exports, core) { 'use strict'; | ||
| 12 | - | ||
| 13 | - /*! ***************************************************************************** | ||
| 14 | - Copyright (c) Microsoft Corporation. All rights reserved. | ||
| 15 | - Licensed under the Apache License, Version 2.0 (the "License"); you may not use | ||
| 16 | - this file except in compliance with the License. You may obtain a copy of the | ||
| 17 | - License at http://www.apache.org/licenses/LICENSE-2.0 | ||
| 18 | - | ||
| 19 | - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
| 20 | - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED | ||
| 21 | - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, | ||
| 22 | - MERCHANTABLITY OR NON-INFRINGEMENT. | ||
| 23 | - | ||
| 24 | - See the Apache Version 2.0 License for specific language governing permissions | ||
| 25 | - and limitations under the License. | ||
| 26 | - ***************************************************************************** */ | ||
| 27 | - /* global Reflect, Promise */ | ||
| 28 | - | ||
| 29 | - var extendStatics = function(d, b) { | ||
| 30 | - extendStatics = Object.setPrototypeOf || | ||
| 31 | - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
| 32 | - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | ||
| 33 | - return extendStatics(d, b); | ||
| 34 | - }; | ||
| 35 | - | ||
| 36 | - function __extends(d, b) { | ||
| 37 | - extendStatics(d, b); | ||
| 38 | - function __() { this.constructor = d; } | ||
| 39 | - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
| 40 | - } | ||
| 41 | - | ||
| 42 | - var __assign = function() { | ||
| 43 | - __assign = Object.assign || function __assign(t) { | ||
| 44 | - for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
| 45 | - s = arguments[i]; | ||
| 46 | - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; | ||
| 47 | - } | ||
| 48 | - return t; | ||
| 49 | - }; | ||
| 50 | - return __assign.apply(this, arguments); | ||
| 51 | - }; | ||
| 52 | - | ||
| 53 | - var DayGridDateProfileGenerator = /** @class */ (function (_super) { | ||
| 54 | - __extends(DayGridDateProfileGenerator, _super); | ||
| 55 | - function DayGridDateProfileGenerator() { | ||
| 56 | - return _super !== null && _super.apply(this, arguments) || this; | ||
| 57 | - } | ||
| 58 | - // Computes the date range that will be rendered. | ||
| 59 | - DayGridDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) { | ||
| 60 | - var dateEnv = this.dateEnv; | ||
| 61 | - var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay); | ||
| 62 | - var start = renderRange.start; | ||
| 63 | - var end = renderRange.end; | ||
| 64 | - var endOfWeek; | ||
| 65 | - // year and month views should be aligned with weeks. this is already done for week | ||
| 66 | - if (/^(year|month)$/.test(currentRangeUnit)) { | ||
| 67 | - start = dateEnv.startOfWeek(start); | ||
| 68 | - // make end-of-week if not already | ||
| 69 | - endOfWeek = dateEnv.startOfWeek(end); | ||
| 70 | - if (endOfWeek.valueOf() !== end.valueOf()) { | ||
| 71 | - end = core.addWeeks(endOfWeek, 1); | ||
| 72 | - } | ||
| 73 | - } | ||
| 74 | - // ensure 6 weeks | ||
| 75 | - if (this.options.monthMode && | ||
| 76 | - this.options.fixedWeekCount) { | ||
| 77 | - var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays | ||
| 78 | - core.diffWeeks(start, end)); | ||
| 79 | - end = core.addWeeks(end, 6 - rowCnt); | ||
| 80 | - } | ||
| 81 | - return { start: start, end: end }; | ||
| 82 | - }; | ||
| 83 | - return DayGridDateProfileGenerator; | ||
| 84 | - }(core.DateProfileGenerator)); | ||
| 85 | - | ||
| 86 | - /* A rectangular panel that is absolutely positioned over other content | ||
| 87 | - ------------------------------------------------------------------------------------------------------------------------ | ||
| 88 | - Options: | ||
| 89 | - - className (string) | ||
| 90 | - - content (HTML string, element, or element array) | ||
| 91 | - - parentEl | ||
| 92 | - - top | ||
| 93 | - - left | ||
| 94 | - - right (the x coord of where the right edge should be. not a "CSS" right) | ||
| 95 | - - autoHide (boolean) | ||
| 96 | - - show (callback) | ||
| 97 | - - hide (callback) | ||
| 98 | - */ | ||
| 99 | - var Popover = /** @class */ (function () { | ||
| 100 | - function Popover(options) { | ||
| 101 | - var _this = this; | ||
| 102 | - this.isHidden = true; | ||
| 103 | - this.margin = 10; // the space required between the popover and the edges of the scroll container | ||
| 104 | - // Triggered when the user clicks *anywhere* in the document, for the autoHide feature | ||
| 105 | - this.documentMousedown = function (ev) { | ||
| 106 | - // only hide the popover if the click happened outside the popover | ||
| 107 | - if (_this.el && !_this.el.contains(ev.target)) { | ||
| 108 | - _this.hide(); | ||
| 109 | - } | ||
| 110 | - }; | ||
| 111 | - this.options = options; | ||
| 112 | - } | ||
| 113 | - // Shows the popover on the specified position. Renders it if not already | ||
| 114 | - Popover.prototype.show = function () { | ||
| 115 | - if (this.isHidden) { | ||
| 116 | - if (!this.el) { | ||
| 117 | - this.render(); | ||
| 118 | - } | ||
| 119 | - this.el.style.display = ''; | ||
| 120 | - this.position(); | ||
| 121 | - this.isHidden = false; | ||
| 122 | - this.trigger('show'); | ||
| 123 | - } | ||
| 124 | - }; | ||
| 125 | - // Hides the popover, through CSS, but does not remove it from the DOM | ||
| 126 | - Popover.prototype.hide = function () { | ||
| 127 | - if (!this.isHidden) { | ||
| 128 | - this.el.style.display = 'none'; | ||
| 129 | - this.isHidden = true; | ||
| 130 | - this.trigger('hide'); | ||
| 131 | - } | ||
| 132 | - }; | ||
| 133 | - // Creates `this.el` and renders content inside of it | ||
| 134 | - Popover.prototype.render = function () { | ||
| 135 | - var _this = this; | ||
| 136 | - var options = this.options; | ||
| 137 | - var el = this.el = core.createElement('div', { | ||
| 138 | - className: 'fc-popover ' + (options.className || ''), | ||
| 139 | - style: { | ||
| 140 | - top: '0', | ||
| 141 | - left: '0' | ||
| 142 | - } | ||
| 143 | - }); | ||
| 144 | - if (typeof options.content === 'function') { | ||
| 145 | - options.content(el); | ||
| 146 | - } | ||
| 147 | - options.parentEl.appendChild(el); | ||
| 148 | - // when a click happens on anything inside with a 'fc-close' className, hide the popover | ||
| 149 | - core.listenBySelector(el, 'click', '.fc-close', function (ev) { | ||
| 150 | - _this.hide(); | ||
| 151 | - }); | ||
| 152 | - if (options.autoHide) { | ||
| 153 | - document.addEventListener('mousedown', this.documentMousedown); | ||
| 154 | - } | ||
| 155 | - }; | ||
| 156 | - // Hides and unregisters any handlers | ||
| 157 | - Popover.prototype.destroy = function () { | ||
| 158 | - this.hide(); | ||
| 159 | - if (this.el) { | ||
| 160 | - core.removeElement(this.el); | ||
| 161 | - this.el = null; | ||
| 162 | - } | ||
| 163 | - document.removeEventListener('mousedown', this.documentMousedown); | ||
| 164 | - }; | ||
| 165 | - // Positions the popover optimally, using the top/left/right options | ||
| 166 | - Popover.prototype.position = function () { | ||
| 167 | - var options = this.options; | ||
| 168 | - var el = this.el; | ||
| 169 | - var elDims = el.getBoundingClientRect(); // only used for width,height | ||
| 170 | - var origin = core.computeRect(el.offsetParent); | ||
| 171 | - var clippingRect = core.computeClippingRect(options.parentEl); | ||
| 172 | - var top; // the "position" (not "offset") values for the popover | ||
| 173 | - var left; // | ||
| 174 | - // compute top and left | ||
| 175 | - top = options.top || 0; | ||
| 176 | - if (options.left !== undefined) { | ||
| 177 | - left = options.left; | ||
| 178 | - } | ||
| 179 | - else if (options.right !== undefined) { | ||
| 180 | - left = options.right - elDims.width; // derive the left value from the right value | ||
| 181 | - } | ||
| 182 | - else { | ||
| 183 | - left = 0; | ||
| 184 | - } | ||
| 185 | - // constrain to the view port. if constrained by two edges, give precedence to top/left | ||
| 186 | - top = Math.min(top, clippingRect.bottom - elDims.height - this.margin); | ||
| 187 | - top = Math.max(top, clippingRect.top + this.margin); | ||
| 188 | - left = Math.min(left, clippingRect.right - elDims.width - this.margin); | ||
| 189 | - left = Math.max(left, clippingRect.left + this.margin); | ||
| 190 | - core.applyStyle(el, { | ||
| 191 | - top: top - origin.top, | ||
| 192 | - left: left - origin.left | ||
| 193 | - }); | ||
| 194 | - }; | ||
| 195 | - // Triggers a callback. Calls a function in the option hash of the same name. | ||
| 196 | - // Arguments beyond the first `name` are forwarded on. | ||
| 197 | - // TODO: better code reuse for this. Repeat code | ||
| 198 | - // can kill this??? | ||
| 199 | - Popover.prototype.trigger = function (name) { | ||
| 200 | - if (this.options[name]) { | ||
| 201 | - this.options[name].apply(this, Array.prototype.slice.call(arguments, 1)); | ||
| 202 | - } | ||
| 203 | - }; | ||
| 204 | - return Popover; | ||
| 205 | - }()); | ||
| 206 | - | ||
| 207 | - /* Event-rendering methods for the DayGrid class | ||
| 208 | - ----------------------------------------------------------------------------------------------------------------------*/ | ||
| 209 | - // "Simple" is bad a name. has nothing to do with SimpleDayGrid | ||
| 210 | - var SimpleDayGridEventRenderer = /** @class */ (function (_super) { | ||
| 211 | - __extends(SimpleDayGridEventRenderer, _super); | ||
| 212 | - function SimpleDayGridEventRenderer() { | ||
| 213 | - return _super !== null && _super.apply(this, arguments) || this; | ||
| 214 | - } | ||
| 215 | - // Builds the HTML to be used for the default element for an individual segment | ||
| 216 | - SimpleDayGridEventRenderer.prototype.renderSegHtml = function (seg, mirrorInfo) { | ||
| 217 | - var _a = this.context, view = _a.view, options = _a.options; | ||
| 218 | - var eventRange = seg.eventRange; | ||
| 219 | - var eventDef = eventRange.def; | ||
| 220 | - var eventUi = eventRange.ui; | ||
| 221 | - var allDay = eventDef.allDay; | ||
| 222 | - var isDraggable = view.computeEventDraggable(eventDef, eventUi); | ||
| 223 | - var isResizableFromStart = allDay && seg.isStart && view.computeEventStartResizable(eventDef, eventUi); | ||
| 224 | - var isResizableFromEnd = allDay && seg.isEnd && view.computeEventEndResizable(eventDef, eventUi); | ||
| 225 | - var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd, mirrorInfo); | ||
| 226 | - var skinCss = core.cssToStr(this.getSkinCss(eventUi)); | ||
| 227 | - var timeHtml = ''; | ||
| 228 | - var timeText; | ||
| 229 | - var titleHtml; | ||
| 230 | - classes.unshift('fc-day-grid-event', 'fc-h-event'); | ||
| 231 | - // Only display a timed events time if it is the starting segment | ||
| 232 | - if (seg.isStart) { | ||
| 233 | - timeText = this.getTimeText(eventRange); | ||
| 234 | - if (timeText) { | ||
| 235 | - timeHtml = '<span class="fc-time">' + core.htmlEscape(timeText) + '</span>'; | ||
| 236 | - } | ||
| 237 | - } | ||
| 238 | - titleHtml = | ||
| 239 | - '<span class="fc-title">' + | ||
| 240 | - (core.htmlEscape(eventDef.title || '') || ' ') + // we always want one line of height | ||
| 241 | - '</span>'; | ||
| 242 | - return '<a class="' + classes.join(' ') + '"' + | ||
| 243 | - (eventDef.url ? | ||
| 244 | - ' href="' + core.htmlEscape(eventDef.url) + '"' : | ||
| 245 | - '') + | ||
| 246 | - (skinCss ? | ||
| 247 | - ' style="' + skinCss + '"' : | ||
| 248 | - '') + | ||
| 249 | - '>' + | ||
| 250 | - '<div class="fc-content">' + | ||
| 251 | - (options.dir === 'rtl' ? | ||
| 252 | - titleHtml + ' ' + timeHtml : // put a natural space in between | ||
| 253 | - timeHtml + ' ' + titleHtml // | ||
| 254 | - ) + | ||
| 255 | - '</div>' + | ||
| 256 | - (isResizableFromStart ? | ||
| 257 | - '<div class="fc-resizer fc-start-resizer"></div>' : | ||
| 258 | - '') + | ||
| 259 | - (isResizableFromEnd ? | ||
| 260 | - '<div class="fc-resizer fc-end-resizer"></div>' : | ||
| 261 | - '') + | ||
| 262 | - '</a>'; | ||
| 263 | - }; | ||
| 264 | - // Computes a default event time formatting string if `eventTimeFormat` is not explicitly defined | ||
| 265 | - SimpleDayGridEventRenderer.prototype.computeEventTimeFormat = function () { | ||
| 266 | - return { | ||
| 267 | - hour: 'numeric', | ||
| 268 | - minute: '2-digit', | ||
| 269 | - omitZeroMinute: true, | ||
| 270 | - meridiem: 'narrow' | ||
| 271 | - }; | ||
| 272 | - }; | ||
| 273 | - SimpleDayGridEventRenderer.prototype.computeDisplayEventEnd = function () { | ||
| 274 | - return false; // TODO: somehow consider the originating DayGrid's column count | ||
| 275 | - }; | ||
| 276 | - return SimpleDayGridEventRenderer; | ||
| 277 | - }(core.FgEventRenderer)); | ||
| 278 | - | ||
| 279 | - /* Event-rendering methods for the DayGrid class | ||
| 280 | - ----------------------------------------------------------------------------------------------------------------------*/ | ||
| 281 | - var DayGridEventRenderer = /** @class */ (function (_super) { | ||
| 282 | - __extends(DayGridEventRenderer, _super); | ||
| 283 | - function DayGridEventRenderer(dayGrid) { | ||
| 284 | - var _this = _super.call(this, dayGrid.context) || this; | ||
| 285 | - _this.dayGrid = dayGrid; | ||
| 286 | - return _this; | ||
| 287 | - } | ||
| 288 | - // Renders the given foreground event segments onto the grid | ||
| 289 | - DayGridEventRenderer.prototype.attachSegs = function (segs, mirrorInfo) { | ||
| 290 | - var rowStructs = this.rowStructs = this.renderSegRows(segs); | ||
| 291 | - // append to each row's content skeleton | ||
| 292 | - this.dayGrid.rowEls.forEach(function (rowNode, i) { | ||
| 293 | - rowNode.querySelector('.fc-content-skeleton > table').appendChild(rowStructs[i].tbodyEl); | ||
| 294 | - }); | ||
| 295 | - // removes the "more.." events popover | ||
| 296 | - if (!mirrorInfo) { | ||
| 297 | - this.dayGrid.removeSegPopover(); | ||
| 298 | - } | ||
| 299 | - }; | ||
| 300 | - // Unrenders all currently rendered foreground event segments | ||
| 301 | - DayGridEventRenderer.prototype.detachSegs = function () { | ||
| 302 | - var rowStructs = this.rowStructs || []; | ||
| 303 | - var rowStruct; | ||
| 304 | - while ((rowStruct = rowStructs.pop())) { | ||
| 305 | - core.removeElement(rowStruct.tbodyEl); | ||
| 306 | - } | ||
| 307 | - this.rowStructs = null; | ||
| 308 | - }; | ||
| 309 | - // Uses the given events array to generate <tbody> elements that should be appended to each row's content skeleton. | ||
| 310 | - // Returns an array of rowStruct objects (see the bottom of `renderSegRow`). | ||
| 311 | - // PRECONDITION: each segment shoud already have a rendered and assigned `.el` | ||
| 312 | - DayGridEventRenderer.prototype.renderSegRows = function (segs) { | ||
| 313 | - var rowStructs = []; | ||
| 314 | - var segRows; | ||
| 315 | - var row; | ||
| 316 | - segRows = this.groupSegRows(segs); // group into nested arrays | ||
| 317 | - // iterate each row of segment groupings | ||
| 318 | - for (row = 0; row < segRows.length; row++) { | ||
| 319 | - rowStructs.push(this.renderSegRow(row, segRows[row])); | ||
| 320 | - } | ||
| 321 | - return rowStructs; | ||
| 322 | - }; | ||
| 323 | - // Given a row # and an array of segments all in the same row, render a <tbody> element, a skeleton that contains | ||
| 324 | - // the segments. Returns object with a bunch of internal data about how the render was calculated. | ||
| 325 | - // NOTE: modifies rowSegs | ||
| 326 | - DayGridEventRenderer.prototype.renderSegRow = function (row, rowSegs) { | ||
| 327 | - var dayGrid = this.dayGrid; | ||
| 328 | - var colCnt = dayGrid.colCnt, isRtl = dayGrid.isRtl; | ||
| 329 | - var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels | ||
| 330 | - var levelCnt = Math.max(1, segLevels.length); // ensure at least one level | ||
| 331 | - var tbody = document.createElement('tbody'); | ||
| 332 | - var segMatrix = []; // lookup for which segments are rendered into which level+col cells | ||
| 333 | - var cellMatrix = []; // lookup for all <td> elements of the level+col matrix | ||
| 334 | - var loneCellMatrix = []; // lookup for <td> elements that only take up a single column | ||
| 335 | - var i; | ||
| 336 | - var levelSegs; | ||
| 337 | - var col; | ||
| 338 | - var tr; | ||
| 339 | - var j; | ||
| 340 | - var seg; | ||
| 341 | - var td; | ||
| 342 | - // populates empty cells from the current column (`col`) to `endCol` | ||
| 343 | - function emptyCellsUntil(endCol) { | ||
| 344 | - while (col < endCol) { | ||
| 345 | - // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell | ||
| 346 | - td = (loneCellMatrix[i - 1] || [])[col]; | ||
| 347 | - if (td) { | ||
| 348 | - td.rowSpan = (td.rowSpan || 1) + 1; | ||
| 349 | - } | ||
| 350 | - else { | ||
| 351 | - td = document.createElement('td'); | ||
| 352 | - tr.appendChild(td); | ||
| 353 | - } | ||
| 354 | - cellMatrix[i][col] = td; | ||
| 355 | - loneCellMatrix[i][col] = td; | ||
| 356 | - col++; | ||
| 357 | - } | ||
| 358 | - } | ||
| 359 | - for (i = 0; i < levelCnt; i++) { // iterate through all levels | ||
| 360 | - levelSegs = segLevels[i]; | ||
| 361 | - col = 0; | ||
| 362 | - tr = document.createElement('tr'); | ||
| 363 | - segMatrix.push([]); | ||
| 364 | - cellMatrix.push([]); | ||
| 365 | - loneCellMatrix.push([]); | ||
| 366 | - // levelCnt might be 1 even though there are no actual levels. protect against this. | ||
| 367 | - // this single empty row is useful for styling. | ||
| 368 | - if (levelSegs) { | ||
| 369 | - for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level | ||
| 370 | - seg = levelSegs[j]; | ||
| 371 | - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; | ||
| 372 | - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol; | ||
| 373 | - emptyCellsUntil(leftCol); | ||
| 374 | - // create a container that occupies or more columns. append the event element. | ||
| 375 | - td = core.createElement('td', { className: 'fc-event-container' }, seg.el); | ||
| 376 | - if (leftCol !== rightCol) { | ||
| 377 | - td.colSpan = rightCol - leftCol + 1; | ||
| 378 | - } | ||
| 379 | - else { // a single-column segment | ||
| 380 | - loneCellMatrix[i][col] = td; | ||
| 381 | - } | ||
| 382 | - while (col <= rightCol) { | ||
| 383 | - cellMatrix[i][col] = td; | ||
| 384 | - segMatrix[i][col] = seg; | ||
| 385 | - col++; | ||
| 386 | - } | ||
| 387 | - tr.appendChild(td); | ||
| 388 | - } | ||
| 389 | - } | ||
| 390 | - emptyCellsUntil(colCnt); // finish off the row | ||
| 391 | - var introHtml = dayGrid.renderProps.renderIntroHtml(); | ||
| 392 | - if (introHtml) { | ||
| 393 | - if (dayGrid.isRtl) { | ||
| 394 | - core.appendToElement(tr, introHtml); | ||
| 395 | - } | ||
| 396 | - else { | ||
| 397 | - core.prependToElement(tr, introHtml); | ||
| 398 | - } | ||
| 399 | - } | ||
| 400 | - tbody.appendChild(tr); | ||
| 401 | - } | ||
| 402 | - return { | ||
| 403 | - row: row, | ||
| 404 | - tbodyEl: tbody, | ||
| 405 | - cellMatrix: cellMatrix, | ||
| 406 | - segMatrix: segMatrix, | ||
| 407 | - segLevels: segLevels, | ||
| 408 | - segs: rowSegs | ||
| 409 | - }; | ||
| 410 | - }; | ||
| 411 | - // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels. | ||
| 412 | - // NOTE: modifies segs | ||
| 413 | - DayGridEventRenderer.prototype.buildSegLevels = function (segs) { | ||
| 414 | - var _a = this.dayGrid, isRtl = _a.isRtl, colCnt = _a.colCnt; | ||
| 415 | - var levels = []; | ||
| 416 | - var i; | ||
| 417 | - var seg; | ||
| 418 | - var j; | ||
| 419 | - // Give preference to elements with certain criteria, so they have | ||
| 420 | - // a chance to be closer to the top. | ||
| 421 | - segs = this.sortEventSegs(segs); | ||
| 422 | - for (i = 0; i < segs.length; i++) { | ||
| 423 | - seg = segs[i]; | ||
| 424 | - // loop through levels, starting with the topmost, until the segment doesn't collide with other segments | ||
| 425 | - for (j = 0; j < levels.length; j++) { | ||
| 426 | - if (!isDaySegCollision(seg, levels[j])) { | ||
| 427 | - break; | ||
| 428 | - } | ||
| 429 | - } | ||
| 430 | - // `j` now holds the desired subrow index | ||
| 431 | - seg.level = j; | ||
| 432 | - seg.leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; // for sorting only | ||
| 433 | - seg.rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol // for sorting only | ||
| 434 | - ; | ||
| 435 | - (levels[j] || (levels[j] = [])).push(seg); | ||
| 436 | - } | ||
| 437 | - // order segments left-to-right. very important if calendar is RTL | ||
| 438 | - for (j = 0; j < levels.length; j++) { | ||
| 439 | - levels[j].sort(compareDaySegCols); | ||
| 440 | - } | ||
| 441 | - return levels; | ||
| 442 | - }; | ||
| 443 | - // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row | ||
| 444 | - DayGridEventRenderer.prototype.groupSegRows = function (segs) { | ||
| 445 | - var segRows = []; | ||
| 446 | - var i; | ||
| 447 | - for (i = 0; i < this.dayGrid.rowCnt; i++) { | ||
| 448 | - segRows.push([]); | ||
| 449 | - } | ||
| 450 | - for (i = 0; i < segs.length; i++) { | ||
| 451 | - segRows[segs[i].row].push(segs[i]); | ||
| 452 | - } | ||
| 453 | - return segRows; | ||
| 454 | - }; | ||
| 455 | - // Computes a default `displayEventEnd` value if one is not expliclty defined | ||
| 456 | - DayGridEventRenderer.prototype.computeDisplayEventEnd = function () { | ||
| 457 | - return this.dayGrid.colCnt === 1; // we'll likely have space if there's only one day | ||
| 458 | - }; | ||
| 459 | - return DayGridEventRenderer; | ||
| 460 | - }(SimpleDayGridEventRenderer)); | ||
| 461 | - // Computes whether two segments' columns collide. They are assumed to be in the same row. | ||
| 462 | - function isDaySegCollision(seg, otherSegs) { | ||
| 463 | - var i; | ||
| 464 | - var otherSeg; | ||
| 465 | - for (i = 0; i < otherSegs.length; i++) { | ||
| 466 | - otherSeg = otherSegs[i]; | ||
| 467 | - if (otherSeg.firstCol <= seg.lastCol && | ||
| 468 | - otherSeg.lastCol >= seg.firstCol) { | ||
| 469 | - return true; | ||
| 470 | - } | ||
| 471 | - } | ||
| 472 | - return false; | ||
| 473 | - } | ||
| 474 | - // A cmp function for determining the leftmost event | ||
| 475 | - function compareDaySegCols(a, b) { | ||
| 476 | - return a.leftCol - b.leftCol; | ||
| 477 | - } | ||
| 478 | - | ||
| 479 | - var DayGridMirrorRenderer = /** @class */ (function (_super) { | ||
| 480 | - __extends(DayGridMirrorRenderer, _super); | ||
| 481 | - function DayGridMirrorRenderer() { | ||
| 482 | - return _super !== null && _super.apply(this, arguments) || this; | ||
| 483 | - } | ||
| 484 | - DayGridMirrorRenderer.prototype.attachSegs = function (segs, mirrorInfo) { | ||
| 485 | - var sourceSeg = mirrorInfo.sourceSeg; | ||
| 486 | - var rowStructs = this.rowStructs = this.renderSegRows(segs); | ||
| 487 | - // inject each new event skeleton into each associated row | ||
| 488 | - this.dayGrid.rowEls.forEach(function (rowNode, row) { | ||
| 489 | - var skeletonEl = core.htmlToElement('<div class="fc-mirror-skeleton"><table></table></div>'); // will be absolutely positioned | ||
| 490 | - var skeletonTopEl; | ||
| 491 | - var skeletonTop; | ||
| 492 | - // If there is an original segment, match the top position. Otherwise, put it at the row's top level | ||
| 493 | - if (sourceSeg && sourceSeg.row === row) { | ||
| 494 | - skeletonTopEl = sourceSeg.el; | ||
| 495 | - } | ||
| 496 | - else { | ||
| 497 | - skeletonTopEl = rowNode.querySelector('.fc-content-skeleton tbody'); | ||
| 498 | - if (!skeletonTopEl) { // when no events | ||
| 499 | - skeletonTopEl = rowNode.querySelector('.fc-content-skeleton table'); | ||
| 500 | - } | ||
| 501 | - } | ||
| 502 | - skeletonTop = skeletonTopEl.getBoundingClientRect().top - | ||
| 503 | - rowNode.getBoundingClientRect().top; // the offsetParent origin | ||
| 504 | - skeletonEl.style.top = skeletonTop + 'px'; | ||
| 505 | - skeletonEl.querySelector('table').appendChild(rowStructs[row].tbodyEl); | ||
| 506 | - rowNode.appendChild(skeletonEl); | ||
| 507 | - }); | ||
| 508 | - }; | ||
| 509 | - return DayGridMirrorRenderer; | ||
| 510 | - }(DayGridEventRenderer)); | ||
| 511 | - | ||
| 512 | - var EMPTY_CELL_HTML = '<td style="pointer-events:none"></td>'; | ||
| 513 | - var DayGridFillRenderer = /** @class */ (function (_super) { | ||
| 514 | - __extends(DayGridFillRenderer, _super); | ||
| 515 | - function DayGridFillRenderer(dayGrid) { | ||
| 516 | - var _this = _super.call(this, dayGrid.context) || this; | ||
| 517 | - _this.fillSegTag = 'td'; // override the default tag name | ||
| 518 | - _this.dayGrid = dayGrid; | ||
| 519 | - return _this; | ||
| 520 | - } | ||
| 521 | - DayGridFillRenderer.prototype.renderSegs = function (type, segs) { | ||
| 522 | - // don't render timed background events | ||
| 523 | - if (type === 'bgEvent') { | ||
| 524 | - segs = segs.filter(function (seg) { | ||
| 525 | - return seg.eventRange.def.allDay; | ||
| 526 | - }); | ||
| 527 | - } | ||
| 528 | - _super.prototype.renderSegs.call(this, type, segs); | ||
| 529 | - }; | ||
| 530 | - DayGridFillRenderer.prototype.attachSegs = function (type, segs) { | ||
| 531 | - var els = []; | ||
| 532 | - var i; | ||
| 533 | - var seg; | ||
| 534 | - var skeletonEl; | ||
| 535 | - for (i = 0; i < segs.length; i++) { | ||
| 536 | - seg = segs[i]; | ||
| 537 | - skeletonEl = this.renderFillRow(type, seg); | ||
| 538 | - this.dayGrid.rowEls[seg.row].appendChild(skeletonEl); | ||
| 539 | - els.push(skeletonEl); | ||
| 540 | - } | ||
| 541 | - return els; | ||
| 542 | - }; | ||
| 543 | - // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered. | ||
| 544 | - DayGridFillRenderer.prototype.renderFillRow = function (type, seg) { | ||
| 545 | - var dayGrid = this.dayGrid; | ||
| 546 | - var colCnt = dayGrid.colCnt, isRtl = dayGrid.isRtl; | ||
| 547 | - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; | ||
| 548 | - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol; | ||
| 549 | - var startCol = leftCol; | ||
| 550 | - var endCol = rightCol + 1; | ||
| 551 | - var className; | ||
| 552 | - var skeletonEl; | ||
| 553 | - var trEl; | ||
| 554 | - if (type === 'businessHours') { | ||
| 555 | - className = 'bgevent'; | ||
| 556 | - } | ||
| 557 | - else { | ||
| 558 | - className = type.toLowerCase(); | ||
| 559 | - } | ||
| 560 | - skeletonEl = core.htmlToElement('<div class="fc-' + className + '-skeleton">' + | ||
| 561 | - '<table><tr></tr></table>' + | ||
| 562 | - '</div>'); | ||
| 563 | - trEl = skeletonEl.getElementsByTagName('tr')[0]; | ||
| 564 | - if (startCol > 0) { | ||
| 565 | - core.appendToElement(trEl, | ||
| 566 | - // will create (startCol + 1) td's | ||
| 567 | - new Array(startCol + 1).join(EMPTY_CELL_HTML)); | ||
| 568 | - } | ||
| 569 | - seg.el.colSpan = endCol - startCol; | ||
| 570 | - trEl.appendChild(seg.el); | ||
| 571 | - if (endCol < colCnt) { | ||
| 572 | - core.appendToElement(trEl, | ||
| 573 | - // will create (colCnt - endCol) td's | ||
| 574 | - new Array(colCnt - endCol + 1).join(EMPTY_CELL_HTML)); | ||
| 575 | - } | ||
| 576 | - var introHtml = dayGrid.renderProps.renderIntroHtml(); | ||
| 577 | - if (introHtml) { | ||
| 578 | - if (dayGrid.isRtl) { | ||
| 579 | - core.appendToElement(trEl, introHtml); | ||
| 580 | - } | ||
| 581 | - else { | ||
| 582 | - core.prependToElement(trEl, introHtml); | ||
| 583 | - } | ||
| 584 | - } | ||
| 585 | - return skeletonEl; | ||
| 586 | - }; | ||
| 587 | - return DayGridFillRenderer; | ||
| 588 | - }(core.FillRenderer)); | ||
| 589 | - | ||
| 590 | - var DayTile = /** @class */ (function (_super) { | ||
| 591 | - __extends(DayTile, _super); | ||
| 592 | - function DayTile(context, el) { | ||
| 593 | - var _this = _super.call(this, context, el) || this; | ||
| 594 | - var eventRenderer = _this.eventRenderer = new DayTileEventRenderer(_this); | ||
| 595 | - var renderFrame = _this.renderFrame = core.memoizeRendering(_this._renderFrame); | ||
| 596 | - _this.renderFgEvents = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderFrame]); | ||
| 597 | - _this.renderEventSelection = core.memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]); | ||
| 598 | - _this.renderEventDrag = core.memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]); | ||
| 599 | - _this.renderEventResize = core.memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]); | ||
| 600 | - context.calendar.registerInteractiveComponent(_this, { | ||
| 601 | - el: _this.el, | ||
| 602 | - useEventCenter: false | ||
| 603 | - }); | ||
| 604 | - return _this; | ||
| 605 | - } | ||
| 606 | - DayTile.prototype.render = function (props) { | ||
| 607 | - this.renderFrame(props.date); | ||
| 608 | - this.renderFgEvents(props.fgSegs); | ||
| 609 | - this.renderEventSelection(props.eventSelection); | ||
| 610 | - this.renderEventDrag(props.eventDragInstances); | ||
| 611 | - this.renderEventResize(props.eventResizeInstances); | ||
| 612 | - }; | ||
| 613 | - DayTile.prototype.destroy = function () { | ||
| 614 | - _super.prototype.destroy.call(this); | ||
| 615 | - this.renderFrame.unrender(); // should unrender everything else | ||
| 616 | - this.calendar.unregisterInteractiveComponent(this); | ||
| 617 | - }; | ||
| 618 | - DayTile.prototype._renderFrame = function (date) { | ||
| 619 | - var _a = this, theme = _a.theme, dateEnv = _a.dateEnv; | ||
| 620 | - var title = dateEnv.format(date, core.createFormatter(this.opt('dayPopoverFormat')) // TODO: cache | ||
| 621 | - ); | ||
| 622 | - this.el.innerHTML = | ||
| 623 | - '<div class="fc-header ' + theme.getClass('popoverHeader') + '">' + | ||
| 624 | - '<span class="fc-title">' + | ||
| 625 | - core.htmlEscape(title) + | ||
| 626 | - '</span>' + | ||
| 627 | - '<span class="fc-close ' + theme.getIconClass('close') + '"></span>' + | ||
| 628 | - '</div>' + | ||
| 629 | - '<div class="fc-body ' + theme.getClass('popoverContent') + '">' + | ||
| 630 | - '<div class="fc-event-container"></div>' + | ||
| 631 | - '</div>'; | ||
| 632 | - this.segContainerEl = this.el.querySelector('.fc-event-container'); | ||
| 633 | - }; | ||
| 634 | - DayTile.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) { | ||
| 635 | - var date = this.props.date; // HACK | ||
| 636 | - if (positionLeft < elWidth && positionTop < elHeight) { | ||
| 637 | - return { | ||
| 638 | - component: this, | ||
| 639 | - dateSpan: { | ||
| 640 | - allDay: true, | ||
| 641 | - range: { start: date, end: core.addDays(date, 1) } | ||
| 642 | - }, | ||
| 643 | - dayEl: this.el, | ||
| 644 | - rect: { | ||
| 645 | - left: 0, | ||
| 646 | - top: 0, | ||
| 647 | - right: elWidth, | ||
| 648 | - bottom: elHeight | ||
| 649 | - }, | ||
| 650 | - layer: 1 | ||
| 651 | - }; | ||
| 652 | - } | ||
| 653 | - }; | ||
| 654 | - return DayTile; | ||
| 655 | - }(core.DateComponent)); | ||
| 656 | - var DayTileEventRenderer = /** @class */ (function (_super) { | ||
| 657 | - __extends(DayTileEventRenderer, _super); | ||
| 658 | - function DayTileEventRenderer(dayTile) { | ||
| 659 | - var _this = _super.call(this, dayTile.context) || this; | ||
| 660 | - _this.dayTile = dayTile; | ||
| 661 | - return _this; | ||
| 662 | - } | ||
| 663 | - DayTileEventRenderer.prototype.attachSegs = function (segs) { | ||
| 664 | - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { | ||
| 665 | - var seg = segs_1[_i]; | ||
| 666 | - this.dayTile.segContainerEl.appendChild(seg.el); | ||
| 667 | - } | ||
| 668 | - }; | ||
| 669 | - DayTileEventRenderer.prototype.detachSegs = function (segs) { | ||
| 670 | - for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) { | ||
| 671 | - var seg = segs_2[_i]; | ||
| 672 | - core.removeElement(seg.el); | ||
| 673 | - } | ||
| 674 | - }; | ||
| 675 | - return DayTileEventRenderer; | ||
| 676 | - }(SimpleDayGridEventRenderer)); | ||
| 677 | - | ||
| 678 | - var DayBgRow = /** @class */ (function () { | ||
| 679 | - function DayBgRow(context) { | ||
| 680 | - this.context = context; | ||
| 681 | - } | ||
| 682 | - DayBgRow.prototype.renderHtml = function (props) { | ||
| 683 | - var parts = []; | ||
| 684 | - if (props.renderIntroHtml) { | ||
| 685 | - parts.push(props.renderIntroHtml()); | ||
| 686 | - } | ||
| 687 | - for (var _i = 0, _a = props.cells; _i < _a.length; _i++) { | ||
| 688 | - var cell = _a[_i]; | ||
| 689 | - parts.push(renderCellHtml(cell.date, props.dateProfile, this.context, cell.htmlAttrs)); | ||
| 690 | - } | ||
| 691 | - if (!props.cells.length) { | ||
| 692 | - parts.push('<td class="fc-day ' + this.context.theme.getClass('widgetContent') + '"></td>'); | ||
| 693 | - } | ||
| 694 | - if (this.context.options.dir === 'rtl') { | ||
| 695 | - parts.reverse(); | ||
| 696 | - } | ||
| 697 | - return '<tr>' + parts.join('') + '</tr>'; | ||
| 698 | - }; | ||
| 699 | - return DayBgRow; | ||
| 700 | - }()); | ||
| 701 | - function renderCellHtml(date, dateProfile, context, otherAttrs) { | ||
| 702 | - var dateEnv = context.dateEnv, theme = context.theme; | ||
| 703 | - var isDateValid = core.rangeContainsMarker(dateProfile.activeRange, date); // TODO: called too frequently. cache somehow. | ||
| 704 | - var classes = core.getDayClasses(date, dateProfile, context); | ||
| 705 | - classes.unshift('fc-day', theme.getClass('widgetContent')); | ||
| 706 | - return '<td class="' + classes.join(' ') + '"' + | ||
| 707 | - (isDateValid ? | ||
| 708 | - ' data-date="' + dateEnv.formatIso(date, { omitTime: true }) + '"' : | ||
| 709 | - '') + | ||
| 710 | - (otherAttrs ? | ||
| 711 | - ' ' + otherAttrs : | ||
| 712 | - '') + | ||
| 713 | - '></td>'; | ||
| 714 | - } | ||
| 715 | - | ||
| 716 | - var DAY_NUM_FORMAT = core.createFormatter({ day: 'numeric' }); | ||
| 717 | - var WEEK_NUM_FORMAT = core.createFormatter({ week: 'numeric' }); | ||
| 718 | - var DayGrid = /** @class */ (function (_super) { | ||
| 719 | - __extends(DayGrid, _super); | ||
| 720 | - function DayGrid(context, el, renderProps) { | ||
| 721 | - var _this = _super.call(this, context, el) || this; | ||
| 722 | - _this.bottomCoordPadding = 0; // hack for extending the hit area for the last row of the coordinate grid | ||
| 723 | - _this.isCellSizesDirty = false; | ||
| 724 | - var eventRenderer = _this.eventRenderer = new DayGridEventRenderer(_this); | ||
| 725 | - var fillRenderer = _this.fillRenderer = new DayGridFillRenderer(_this); | ||
| 726 | - _this.mirrorRenderer = new DayGridMirrorRenderer(_this); | ||
| 727 | - var renderCells = _this.renderCells = core.memoizeRendering(_this._renderCells, _this._unrenderCells); | ||
| 728 | - _this.renderBusinessHours = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'businessHours'), fillRenderer.unrender.bind(fillRenderer, 'businessHours'), [renderCells]); | ||
| 729 | - _this.renderDateSelection = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'highlight'), fillRenderer.unrender.bind(fillRenderer, 'highlight'), [renderCells]); | ||
| 730 | - _this.renderBgEvents = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'bgEvent'), fillRenderer.unrender.bind(fillRenderer, 'bgEvent'), [renderCells]); | ||
| 731 | - _this.renderFgEvents = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderCells]); | ||
| 732 | - _this.renderEventSelection = core.memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]); | ||
| 733 | - _this.renderEventDrag = core.memoizeRendering(_this._renderEventDrag, _this._unrenderEventDrag, [renderCells]); | ||
| 734 | - _this.renderEventResize = core.memoizeRendering(_this._renderEventResize, _this._unrenderEventResize, [renderCells]); | ||
| 735 | - _this.renderProps = renderProps; | ||
| 736 | - return _this; | ||
| 737 | - } | ||
| 738 | - DayGrid.prototype.render = function (props) { | ||
| 739 | - var cells = props.cells; | ||
| 740 | - this.rowCnt = cells.length; | ||
| 741 | - this.colCnt = cells[0].length; | ||
| 742 | - this.renderCells(cells, props.isRigid); | ||
| 743 | - this.renderBusinessHours(props.businessHourSegs); | ||
| 744 | - this.renderDateSelection(props.dateSelectionSegs); | ||
| 745 | - this.renderBgEvents(props.bgEventSegs); | ||
| 746 | - this.renderFgEvents(props.fgEventSegs); | ||
| 747 | - this.renderEventSelection(props.eventSelection); | ||
| 748 | - this.renderEventDrag(props.eventDrag); | ||
| 749 | - this.renderEventResize(props.eventResize); | ||
| 750 | - if (this.segPopoverTile) { | ||
| 751 | - this.updateSegPopoverTile(); | ||
| 752 | - } | ||
| 753 | - }; | ||
| 754 | - DayGrid.prototype.destroy = function () { | ||
| 755 | - _super.prototype.destroy.call(this); | ||
| 756 | - this.renderCells.unrender(); // will unrender everything else | ||
| 757 | - }; | ||
| 758 | - DayGrid.prototype.getCellRange = function (row, col) { | ||
| 759 | - var start = this.props.cells[row][col].date; | ||
| 760 | - var end = core.addDays(start, 1); | ||
| 761 | - return { start: start, end: end }; | ||
| 762 | - }; | ||
| 763 | - DayGrid.prototype.updateSegPopoverTile = function (date, segs) { | ||
| 764 | - var ownProps = this.props; | ||
| 765 | - this.segPopoverTile.receiveProps({ | ||
| 766 | - date: date || this.segPopoverTile.props.date, | ||
| 767 | - fgSegs: segs || this.segPopoverTile.props.fgSegs, | ||
| 768 | - eventSelection: ownProps.eventSelection, | ||
| 769 | - eventDragInstances: ownProps.eventDrag ? ownProps.eventDrag.affectedInstances : null, | ||
| 770 | - eventResizeInstances: ownProps.eventResize ? ownProps.eventResize.affectedInstances : null | ||
| 771 | - }); | ||
| 772 | - }; | ||
| 773 | - /* Date Rendering | ||
| 774 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 775 | - DayGrid.prototype._renderCells = function (cells, isRigid) { | ||
| 776 | - var _a = this, view = _a.view, dateEnv = _a.dateEnv; | ||
| 777 | - var _b = this, rowCnt = _b.rowCnt, colCnt = _b.colCnt; | ||
| 778 | - var html = ''; | ||
| 779 | - var row; | ||
| 780 | - var col; | ||
| 781 | - for (row = 0; row < rowCnt; row++) { | ||
| 782 | - html += this.renderDayRowHtml(row, isRigid); | ||
| 783 | - } | ||
| 784 | - this.el.innerHTML = html; | ||
| 785 | - this.rowEls = core.findElements(this.el, '.fc-row'); | ||
| 786 | - this.cellEls = core.findElements(this.el, '.fc-day, .fc-disabled-day'); | ||
| 787 | - if (this.isRtl) { | ||
| 788 | - this.cellEls.reverse(); | ||
| 789 | - } | ||
| 790 | - this.rowPositions = new core.PositionCache(this.el, this.rowEls, false, true // vertical | ||
| 791 | - ); | ||
| 792 | - this.colPositions = new core.PositionCache(this.el, this.cellEls.slice(0, colCnt), // only the first row | ||
| 793 | - true, false // horizontal | ||
| 794 | - ); | ||
| 795 | - // trigger dayRender with each cell's element | ||
| 796 | - for (row = 0; row < rowCnt; row++) { | ||
| 797 | - for (col = 0; col < colCnt; col++) { | ||
| 798 | - this.publiclyTrigger('dayRender', [ | ||
| 799 | - { | ||
| 800 | - date: dateEnv.toDate(cells[row][col].date), | ||
| 801 | - el: this.getCellEl(row, col), | ||
| 802 | - view: view | ||
| 803 | - } | ||
| 804 | - ]); | ||
| 805 | - } | ||
| 806 | - } | ||
| 807 | - this.isCellSizesDirty = true; | ||
| 808 | - }; | ||
| 809 | - DayGrid.prototype._unrenderCells = function () { | ||
| 810 | - this.removeSegPopover(); | ||
| 811 | - }; | ||
| 812 | - // Generates the HTML for a single row, which is a div that wraps a table. | ||
| 813 | - // `row` is the row number. | ||
| 814 | - DayGrid.prototype.renderDayRowHtml = function (row, isRigid) { | ||
| 815 | - var theme = this.theme; | ||
| 816 | - var classes = ['fc-row', 'fc-week', theme.getClass('dayRow')]; | ||
| 817 | - if (isRigid) { | ||
| 818 | - classes.push('fc-rigid'); | ||
| 819 | - } | ||
| 820 | - var bgRow = new DayBgRow(this.context); | ||
| 821 | - return '' + | ||
| 822 | - '<div class="' + classes.join(' ') + '">' + | ||
| 823 | - '<div class="fc-bg">' + | ||
| 824 | - '<table class="' + theme.getClass('tableGrid') + '">' + | ||
| 825 | - bgRow.renderHtml({ | ||
| 826 | - cells: this.props.cells[row], | ||
| 827 | - dateProfile: this.props.dateProfile, | ||
| 828 | - renderIntroHtml: this.renderProps.renderBgIntroHtml | ||
| 829 | - }) + | ||
| 830 | - '</table>' + | ||
| 831 | - '</div>' + | ||
| 832 | - '<div class="fc-content-skeleton">' + | ||
| 833 | - '<table>' + | ||
| 834 | - (this.getIsNumbersVisible() ? | ||
| 835 | - '<thead>' + | ||
| 836 | - this.renderNumberTrHtml(row) + | ||
| 837 | - '</thead>' : | ||
| 838 | - '') + | ||
| 839 | - '</table>' + | ||
| 840 | - '</div>' + | ||
| 841 | - '</div>'; | ||
| 842 | - }; | ||
| 843 | - DayGrid.prototype.getIsNumbersVisible = function () { | ||
| 844 | - return this.getIsDayNumbersVisible() || | ||
| 845 | - this.renderProps.cellWeekNumbersVisible || | ||
| 846 | - this.renderProps.colWeekNumbersVisible; | ||
| 847 | - }; | ||
| 848 | - DayGrid.prototype.getIsDayNumbersVisible = function () { | ||
| 849 | - return this.rowCnt > 1; | ||
| 850 | - }; | ||
| 851 | - /* Grid Number Rendering | ||
| 852 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 853 | - DayGrid.prototype.renderNumberTrHtml = function (row) { | ||
| 854 | - var intro = this.renderProps.renderNumberIntroHtml(row, this); | ||
| 855 | - return '' + | ||
| 856 | - '<tr>' + | ||
| 857 | - (this.isRtl ? '' : intro) + | ||
| 858 | - this.renderNumberCellsHtml(row) + | ||
| 859 | - (this.isRtl ? intro : '') + | ||
| 860 | - '</tr>'; | ||
| 861 | - }; | ||
| 862 | - DayGrid.prototype.renderNumberCellsHtml = function (row) { | ||
| 863 | - var htmls = []; | ||
| 864 | - var col; | ||
| 865 | - var date; | ||
| 866 | - for (col = 0; col < this.colCnt; col++) { | ||
| 867 | - date = this.props.cells[row][col].date; | ||
| 868 | - htmls.push(this.renderNumberCellHtml(date)); | ||
| 869 | - } | ||
| 870 | - if (this.isRtl) { | ||
| 871 | - htmls.reverse(); | ||
| 872 | - } | ||
| 873 | - return htmls.join(''); | ||
| 874 | - }; | ||
| 875 | - // Generates the HTML for the <td>s of the "number" row in the DayGrid's content skeleton. | ||
| 876 | - // The number row will only exist if either day numbers or week numbers are turned on. | ||
| 877 | - DayGrid.prototype.renderNumberCellHtml = function (date) { | ||
| 878 | - var _a = this, view = _a.view, dateEnv = _a.dateEnv; | ||
| 879 | - var html = ''; | ||
| 880 | - var isDateValid = core.rangeContainsMarker(this.props.dateProfile.activeRange, date); // TODO: called too frequently. cache somehow. | ||
| 881 | - var isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid; | ||
| 882 | - var classes; | ||
| 883 | - var weekCalcFirstDow; | ||
| 884 | - if (!isDayNumberVisible && !this.renderProps.cellWeekNumbersVisible) { | ||
| 885 | - // no numbers in day cell (week number must be along the side) | ||
| 886 | - return '<td></td>'; // will create an empty space above events :( | ||
| 887 | - } | ||
| 888 | - classes = core.getDayClasses(date, this.props.dateProfile, this.context); | ||
| 889 | - classes.unshift('fc-day-top'); | ||
| 890 | - if (this.renderProps.cellWeekNumbersVisible) { | ||
| 891 | - weekCalcFirstDow = dateEnv.weekDow; | ||
| 892 | - } | ||
| 893 | - html += '<td class="' + classes.join(' ') + '"' + | ||
| 894 | - (isDateValid ? | ||
| 895 | - ' data-date="' + dateEnv.formatIso(date, { omitTime: true }) + '"' : | ||
| 896 | - '') + | ||
| 897 | - '>'; | ||
| 898 | - if (this.renderProps.cellWeekNumbersVisible && (date.getUTCDay() === weekCalcFirstDow)) { | ||
| 899 | - html += core.buildGotoAnchorHtml(view, { date: date, type: 'week' }, { 'class': 'fc-week-number' }, dateEnv.format(date, WEEK_NUM_FORMAT) // inner HTML | ||
| 900 | - ); | ||
| 901 | - } | ||
| 902 | - if (isDayNumberVisible) { | ||
| 903 | - html += core.buildGotoAnchorHtml(view, date, { 'class': 'fc-day-number' }, dateEnv.format(date, DAY_NUM_FORMAT) // inner HTML | ||
| 904 | - ); | ||
| 905 | - } | ||
| 906 | - html += '</td>'; | ||
| 907 | - return html; | ||
| 908 | - }; | ||
| 909 | - /* Sizing | ||
| 910 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 911 | - DayGrid.prototype.updateSize = function (isResize) { | ||
| 912 | - var _a = this, fillRenderer = _a.fillRenderer, eventRenderer = _a.eventRenderer, mirrorRenderer = _a.mirrorRenderer; | ||
| 913 | - if (isResize || | ||
| 914 | - this.isCellSizesDirty || | ||
| 915 | - this.view.calendar.isEventsUpdated // hack | ||
| 916 | - ) { | ||
| 917 | - this.buildPositionCaches(); | ||
| 918 | - this.isCellSizesDirty = false; | ||
| 919 | - } | ||
| 920 | - fillRenderer.computeSizes(isResize); | ||
| 921 | - eventRenderer.computeSizes(isResize); | ||
| 922 | - mirrorRenderer.computeSizes(isResize); | ||
| 923 | - fillRenderer.assignSizes(isResize); | ||
| 924 | - eventRenderer.assignSizes(isResize); | ||
| 925 | - mirrorRenderer.assignSizes(isResize); | ||
| 926 | - }; | ||
| 927 | - DayGrid.prototype.buildPositionCaches = function () { | ||
| 928 | - this.buildColPositions(); | ||
| 929 | - this.buildRowPositions(); | ||
| 930 | - }; | ||
| 931 | - DayGrid.prototype.buildColPositions = function () { | ||
| 932 | - this.colPositions.build(); | ||
| 933 | - }; | ||
| 934 | - DayGrid.prototype.buildRowPositions = function () { | ||
| 935 | - this.rowPositions.build(); | ||
| 936 | - this.rowPositions.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack | ||
| 937 | - }; | ||
| 938 | - /* Hit System | ||
| 939 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 940 | - DayGrid.prototype.positionToHit = function (leftPosition, topPosition) { | ||
| 941 | - var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions; | ||
| 942 | - var col = colPositions.leftToIndex(leftPosition); | ||
| 943 | - var row = rowPositions.topToIndex(topPosition); | ||
| 944 | - if (row != null && col != null) { | ||
| 945 | - return { | ||
| 946 | - row: row, | ||
| 947 | - col: col, | ||
| 948 | - dateSpan: { | ||
| 949 | - range: this.getCellRange(row, col), | ||
| 950 | - allDay: true | ||
| 951 | - }, | ||
| 952 | - dayEl: this.getCellEl(row, col), | ||
| 953 | - relativeRect: { | ||
| 954 | - left: colPositions.lefts[col], | ||
| 955 | - right: colPositions.rights[col], | ||
| 956 | - top: rowPositions.tops[row], | ||
| 957 | - bottom: rowPositions.bottoms[row] | ||
| 958 | - } | ||
| 959 | - }; | ||
| 960 | - } | ||
| 961 | - }; | ||
| 962 | - /* Cell System | ||
| 963 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 964 | - // FYI: the first column is the leftmost column, regardless of date | ||
| 965 | - DayGrid.prototype.getCellEl = function (row, col) { | ||
| 966 | - return this.cellEls[row * this.colCnt + col]; | ||
| 967 | - }; | ||
| 968 | - /* Event Drag Visualization | ||
| 969 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 970 | - DayGrid.prototype._renderEventDrag = function (state) { | ||
| 971 | - if (state) { | ||
| 972 | - this.eventRenderer.hideByHash(state.affectedInstances); | ||
| 973 | - this.fillRenderer.renderSegs('highlight', state.segs); | ||
| 974 | - } | ||
| 975 | - }; | ||
| 976 | - DayGrid.prototype._unrenderEventDrag = function (state) { | ||
| 977 | - if (state) { | ||
| 978 | - this.eventRenderer.showByHash(state.affectedInstances); | ||
| 979 | - this.fillRenderer.unrender('highlight'); | ||
| 980 | - } | ||
| 981 | - }; | ||
| 982 | - /* Event Resize Visualization | ||
| 983 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 984 | - DayGrid.prototype._renderEventResize = function (state) { | ||
| 985 | - if (state) { | ||
| 986 | - this.eventRenderer.hideByHash(state.affectedInstances); | ||
| 987 | - this.fillRenderer.renderSegs('highlight', state.segs); | ||
| 988 | - this.mirrorRenderer.renderSegs(state.segs, { isResizing: true, sourceSeg: state.sourceSeg }); | ||
| 989 | - } | ||
| 990 | - }; | ||
| 991 | - DayGrid.prototype._unrenderEventResize = function (state) { | ||
| 992 | - if (state) { | ||
| 993 | - this.eventRenderer.showByHash(state.affectedInstances); | ||
| 994 | - this.fillRenderer.unrender('highlight'); | ||
| 995 | - this.mirrorRenderer.unrender(state.segs, { isResizing: true, sourceSeg: state.sourceSeg }); | ||
| 996 | - } | ||
| 997 | - }; | ||
| 998 | - /* More+ Link Popover | ||
| 999 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 1000 | - DayGrid.prototype.removeSegPopover = function () { | ||
| 1001 | - if (this.segPopover) { | ||
| 1002 | - this.segPopover.hide(); // in handler, will call segPopover's removeElement | ||
| 1003 | - } | ||
| 1004 | - }; | ||
| 1005 | - // Limits the number of "levels" (vertically stacking layers of events) for each row of the grid. | ||
| 1006 | - // `levelLimit` can be false (don't limit), a number, or true (should be computed). | ||
| 1007 | - DayGrid.prototype.limitRows = function (levelLimit) { | ||
| 1008 | - var rowStructs = this.eventRenderer.rowStructs || []; | ||
| 1009 | - var row; // row # | ||
| 1010 | - var rowLevelLimit; | ||
| 1011 | - for (row = 0; row < rowStructs.length; row++) { | ||
| 1012 | - this.unlimitRow(row); | ||
| 1013 | - if (!levelLimit) { | ||
| 1014 | - rowLevelLimit = false; | ||
| 1015 | - } | ||
| 1016 | - else if (typeof levelLimit === 'number') { | ||
| 1017 | - rowLevelLimit = levelLimit; | ||
| 1018 | - } | ||
| 1019 | - else { | ||
| 1020 | - rowLevelLimit = this.computeRowLevelLimit(row); | ||
| 1021 | - } | ||
| 1022 | - if (rowLevelLimit !== false) { | ||
| 1023 | - this.limitRow(row, rowLevelLimit); | ||
| 1024 | - } | ||
| 1025 | - } | ||
| 1026 | - }; | ||
| 1027 | - // Computes the number of levels a row will accomodate without going outside its bounds. | ||
| 1028 | - // Assumes the row is "rigid" (maintains a constant height regardless of what is inside). | ||
| 1029 | - // `row` is the row number. | ||
| 1030 | - DayGrid.prototype.computeRowLevelLimit = function (row) { | ||
| 1031 | - var rowEl = this.rowEls[row]; // the containing "fake" row div | ||
| 1032 | - var rowBottom = rowEl.getBoundingClientRect().bottom; // relative to viewport! | ||
| 1033 | - var trEls = core.findChildren(this.eventRenderer.rowStructs[row].tbodyEl); | ||
| 1034 | - var i; | ||
| 1035 | - var trEl; | ||
| 1036 | - // Reveal one level <tr> at a time and stop when we find one out of bounds | ||
| 1037 | - for (i = 0; i < trEls.length; i++) { | ||
| 1038 | - trEl = trEls[i]; | ||
| 1039 | - trEl.classList.remove('fc-limited'); // reset to original state (reveal) | ||
| 1040 | - if (trEl.getBoundingClientRect().bottom > rowBottom) { | ||
| 1041 | - return i; | ||
| 1042 | - } | ||
| 1043 | - } | ||
| 1044 | - return false; // should not limit at all | ||
| 1045 | - }; | ||
| 1046 | - // Limits the given grid row to the maximum number of levels and injects "more" links if necessary. | ||
| 1047 | - // `row` is the row number. | ||
| 1048 | - // `levelLimit` is a number for the maximum (inclusive) number of levels allowed. | ||
| 1049 | - DayGrid.prototype.limitRow = function (row, levelLimit) { | ||
| 1050 | - var _this = this; | ||
| 1051 | - var _a = this, colCnt = _a.colCnt, isRtl = _a.isRtl; | ||
| 1052 | - var rowStruct = this.eventRenderer.rowStructs[row]; | ||
| 1053 | - var moreNodes = []; // array of "more" <a> links and <td> DOM nodes | ||
| 1054 | - var col = 0; // col #, left-to-right (not chronologically) | ||
| 1055 | - var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right | ||
| 1056 | - var cellMatrix; // a matrix (by level, then column) of all <td> elements in the row | ||
| 1057 | - var limitedNodes; // array of temporarily hidden level <tr> and segment <td> DOM nodes | ||
| 1058 | - var i; | ||
| 1059 | - var seg; | ||
| 1060 | - var segsBelow; // array of segment objects below `seg` in the current `col` | ||
| 1061 | - var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies | ||
| 1062 | - var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column) | ||
| 1063 | - var td; | ||
| 1064 | - var rowSpan; | ||
| 1065 | - var segMoreNodes; // array of "more" <td> cells that will stand-in for the current seg's cell | ||
| 1066 | - var j; | ||
| 1067 | - var moreTd; | ||
| 1068 | - var moreWrap; | ||
| 1069 | - var moreLink; | ||
| 1070 | - // Iterates through empty level cells and places "more" links inside if need be | ||
| 1071 | - var emptyCellsUntil = function (endCol) { | ||
| 1072 | - while (col < endCol) { | ||
| 1073 | - segsBelow = _this.getCellSegs(row, col, levelLimit); | ||
| 1074 | - if (segsBelow.length) { | ||
| 1075 | - td = cellMatrix[levelLimit - 1][col]; | ||
| 1076 | - moreLink = _this.renderMoreLink(row, col, segsBelow); | ||
| 1077 | - moreWrap = core.createElement('div', null, moreLink); | ||
| 1078 | - td.appendChild(moreWrap); | ||
| 1079 | - moreNodes.push(moreWrap); | ||
| 1080 | - } | ||
| 1081 | - col++; | ||
| 1082 | - } | ||
| 1083 | - }; | ||
| 1084 | - if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit? | ||
| 1085 | - levelSegs = rowStruct.segLevels[levelLimit - 1]; | ||
| 1086 | - cellMatrix = rowStruct.cellMatrix; | ||
| 1087 | - limitedNodes = core.findChildren(rowStruct.tbodyEl).slice(levelLimit); // get level <tr> elements past the limit | ||
| 1088 | - limitedNodes.forEach(function (node) { | ||
| 1089 | - node.classList.add('fc-limited'); // hide elements and get a simple DOM-nodes array | ||
| 1090 | - }); | ||
| 1091 | - // iterate though segments in the last allowable level | ||
| 1092 | - for (i = 0; i < levelSegs.length; i++) { | ||
| 1093 | - seg = levelSegs[i]; | ||
| 1094 | - var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; | ||
| 1095 | - var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol; | ||
| 1096 | - emptyCellsUntil(leftCol); // process empty cells before the segment | ||
| 1097 | - // determine *all* segments below `seg` that occupy the same columns | ||
| 1098 | - colSegsBelow = []; | ||
| 1099 | - totalSegsBelow = 0; | ||
| 1100 | - while (col <= rightCol) { | ||
| 1101 | - segsBelow = this.getCellSegs(row, col, levelLimit); | ||
| 1102 | - colSegsBelow.push(segsBelow); | ||
| 1103 | - totalSegsBelow += segsBelow.length; | ||
| 1104 | - col++; | ||
| 1105 | - } | ||
| 1106 | - if (totalSegsBelow) { // do we need to replace this segment with one or many "more" links? | ||
| 1107 | - td = cellMatrix[levelLimit - 1][leftCol]; // the segment's parent cell | ||
| 1108 | - rowSpan = td.rowSpan || 1; | ||
| 1109 | - segMoreNodes = []; | ||
| 1110 | - // make a replacement <td> for each column the segment occupies. will be one for each colspan | ||
| 1111 | - for (j = 0; j < colSegsBelow.length; j++) { | ||
| 1112 | - moreTd = core.createElement('td', { className: 'fc-more-cell', rowSpan: rowSpan }); | ||
| 1113 | - segsBelow = colSegsBelow[j]; | ||
| 1114 | - moreLink = this.renderMoreLink(row, leftCol + j, [seg].concat(segsBelow) // count seg as hidden too | ||
| 1115 | - ); | ||
| 1116 | - moreWrap = core.createElement('div', null, moreLink); | ||
| 1117 | - moreTd.appendChild(moreWrap); | ||
| 1118 | - segMoreNodes.push(moreTd); | ||
| 1119 | - moreNodes.push(moreTd); | ||
| 1120 | - } | ||
| 1121 | - td.classList.add('fc-limited'); | ||
| 1122 | - core.insertAfterElement(td, segMoreNodes); | ||
| 1123 | - limitedNodes.push(td); | ||
| 1124 | - } | ||
| 1125 | - } | ||
| 1126 | - emptyCellsUntil(this.colCnt); // finish off the level | ||
| 1127 | - rowStruct.moreEls = moreNodes; // for easy undoing later | ||
| 1128 | - rowStruct.limitedEls = limitedNodes; // for easy undoing later | ||
| 1129 | - } | ||
| 1130 | - }; | ||
| 1131 | - // Reveals all levels and removes all "more"-related elements for a grid's row. | ||
| 1132 | - // `row` is a row number. | ||
| 1133 | - DayGrid.prototype.unlimitRow = function (row) { | ||
| 1134 | - var rowStruct = this.eventRenderer.rowStructs[row]; | ||
| 1135 | - if (rowStruct.moreEls) { | ||
| 1136 | - rowStruct.moreEls.forEach(core.removeElement); | ||
| 1137 | - rowStruct.moreEls = null; | ||
| 1138 | - } | ||
| 1139 | - if (rowStruct.limitedEls) { | ||
| 1140 | - rowStruct.limitedEls.forEach(function (limitedEl) { | ||
| 1141 | - limitedEl.classList.remove('fc-limited'); | ||
| 1142 | - }); | ||
| 1143 | - rowStruct.limitedEls = null; | ||
| 1144 | - } | ||
| 1145 | - }; | ||
| 1146 | - // Renders an <a> element that represents hidden event element for a cell. | ||
| 1147 | - // Responsible for attaching click handler as well. | ||
| 1148 | - DayGrid.prototype.renderMoreLink = function (row, col, hiddenSegs) { | ||
| 1149 | - var _this = this; | ||
| 1150 | - var _a = this, view = _a.view, dateEnv = _a.dateEnv; | ||
| 1151 | - var a = core.createElement('a', { className: 'fc-more' }); | ||
| 1152 | - a.innerText = this.getMoreLinkText(hiddenSegs.length); | ||
| 1153 | - a.addEventListener('click', function (ev) { | ||
| 1154 | - var clickOption = _this.opt('eventLimitClick'); | ||
| 1155 | - var _col = _this.isRtl ? _this.colCnt - col - 1 : col; // HACK: props.cells has different dir system? | ||
| 1156 | - var date = _this.props.cells[row][_col].date; | ||
| 1157 | - var moreEl = ev.currentTarget; | ||
| 1158 | - var dayEl = _this.getCellEl(row, col); | ||
| 1159 | - var allSegs = _this.getCellSegs(row, col); | ||
| 1160 | - // rescope the segments to be within the cell's date | ||
| 1161 | - var reslicedAllSegs = _this.resliceDaySegs(allSegs, date); | ||
| 1162 | - var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date); | ||
| 1163 | - if (typeof clickOption === 'function') { | ||
| 1164 | - // the returned value can be an atomic option | ||
| 1165 | - clickOption = _this.publiclyTrigger('eventLimitClick', [ | ||
| 1166 | - { | ||
| 1167 | - date: dateEnv.toDate(date), | ||
| 1168 | - allDay: true, | ||
| 1169 | - dayEl: dayEl, | ||
| 1170 | - moreEl: moreEl, | ||
| 1171 | - segs: reslicedAllSegs, | ||
| 1172 | - hiddenSegs: reslicedHiddenSegs, | ||
| 1173 | - jsEvent: ev, | ||
| 1174 | - view: view | ||
| 1175 | - } | ||
| 1176 | - ]); | ||
| 1177 | - } | ||
| 1178 | - if (clickOption === 'popover') { | ||
| 1179 | - _this.showSegPopover(row, col, moreEl, reslicedAllSegs); | ||
| 1180 | - } | ||
| 1181 | - else if (typeof clickOption === 'string') { // a view name | ||
| 1182 | - view.calendar.zoomTo(date, clickOption); | ||
| 1183 | - } | ||
| 1184 | - }); | ||
| 1185 | - return a; | ||
| 1186 | - }; | ||
| 1187 | - // Reveals the popover that displays all events within a cell | ||
| 1188 | - DayGrid.prototype.showSegPopover = function (row, col, moreLink, segs) { | ||
| 1189 | - var _this = this; | ||
| 1190 | - var _a = this, calendar = _a.calendar, view = _a.view, theme = _a.theme; | ||
| 1191 | - var _col = this.isRtl ? this.colCnt - col - 1 : col; // HACK: props.cells has different dir system? | ||
| 1192 | - var moreWrap = moreLink.parentNode; // the <div> wrapper around the <a> | ||
| 1193 | - var topEl; // the element we want to match the top coordinate of | ||
| 1194 | - var options; | ||
| 1195 | - if (this.rowCnt === 1) { | ||
| 1196 | - topEl = view.el; // will cause the popover to cover any sort of header | ||
| 1197 | - } | ||
| 1198 | - else { | ||
| 1199 | - topEl = this.rowEls[row]; // will align with top of row | ||
| 1200 | - } | ||
| 1201 | - options = { | ||
| 1202 | - className: 'fc-more-popover ' + theme.getClass('popover'), | ||
| 1203 | - parentEl: view.el, | ||
| 1204 | - top: core.computeRect(topEl).top, | ||
| 1205 | - autoHide: true, | ||
| 1206 | - content: function (el) { | ||
| 1207 | - _this.segPopoverTile = new DayTile(_this.context, el); | ||
| 1208 | - _this.updateSegPopoverTile(_this.props.cells[row][_col].date, segs); | ||
| 1209 | - }, | ||
| 1210 | - hide: function () { | ||
| 1211 | - _this.segPopoverTile.destroy(); | ||
| 1212 | - _this.segPopoverTile = null; | ||
| 1213 | - _this.segPopover.destroy(); | ||
| 1214 | - _this.segPopover = null; | ||
| 1215 | - } | ||
| 1216 | - }; | ||
| 1217 | - // Determine horizontal coordinate. | ||
| 1218 | - // We use the moreWrap instead of the <td> to avoid border confusion. | ||
| 1219 | - if (this.isRtl) { | ||
| 1220 | - options.right = core.computeRect(moreWrap).right + 1; // +1 to be over cell border | ||
| 1221 | - } | ||
| 1222 | - else { | ||
| 1223 | - options.left = core.computeRect(moreWrap).left - 1; // -1 to be over cell border | ||
| 1224 | - } | ||
| 1225 | - this.segPopover = new Popover(options); | ||
| 1226 | - this.segPopover.show(); | ||
| 1227 | - calendar.releaseAfterSizingTriggers(); // hack for eventPositioned | ||
| 1228 | - }; | ||
| 1229 | - // Given the events within an array of segment objects, reslice them to be in a single day | ||
| 1230 | - DayGrid.prototype.resliceDaySegs = function (segs, dayDate) { | ||
| 1231 | - var dayStart = dayDate; | ||
| 1232 | - var dayEnd = core.addDays(dayStart, 1); | ||
| 1233 | - var dayRange = { start: dayStart, end: dayEnd }; | ||
| 1234 | - var newSegs = []; | ||
| 1235 | - for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) { | ||
| 1236 | - var seg = segs_1[_i]; | ||
| 1237 | - var eventRange = seg.eventRange; | ||
| 1238 | - var origRange = eventRange.range; | ||
| 1239 | - var slicedRange = core.intersectRanges(origRange, dayRange); | ||
| 1240 | - if (slicedRange) { | ||
| 1241 | - newSegs.push(__assign({}, seg, { eventRange: { | ||
| 1242 | - def: eventRange.def, | ||
| 1243 | - ui: __assign({}, eventRange.ui, { durationEditable: false }), | ||
| 1244 | - instance: eventRange.instance, | ||
| 1245 | - range: slicedRange | ||
| 1246 | - }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() })); | ||
| 1247 | - } | ||
| 1248 | - } | ||
| 1249 | - return newSegs; | ||
| 1250 | - }; | ||
| 1251 | - // Generates the text that should be inside a "more" link, given the number of events it represents | ||
| 1252 | - DayGrid.prototype.getMoreLinkText = function (num) { | ||
| 1253 | - var opt = this.opt('eventLimitText'); | ||
| 1254 | - if (typeof opt === 'function') { | ||
| 1255 | - return opt(num); | ||
| 1256 | - } | ||
| 1257 | - else { | ||
| 1258 | - return '+' + num + ' ' + opt; | ||
| 1259 | - } | ||
| 1260 | - }; | ||
| 1261 | - // Returns segments within a given cell. | ||
| 1262 | - // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs. | ||
| 1263 | - DayGrid.prototype.getCellSegs = function (row, col, startLevel) { | ||
| 1264 | - var segMatrix = this.eventRenderer.rowStructs[row].segMatrix; | ||
| 1265 | - var level = startLevel || 0; | ||
| 1266 | - var segs = []; | ||
| 1267 | - var seg; | ||
| 1268 | - while (level < segMatrix.length) { | ||
| 1269 | - seg = segMatrix[level][col]; | ||
| 1270 | - if (seg) { | ||
| 1271 | - segs.push(seg); | ||
| 1272 | - } | ||
| 1273 | - level++; | ||
| 1274 | - } | ||
| 1275 | - return segs; | ||
| 1276 | - }; | ||
| 1277 | - return DayGrid; | ||
| 1278 | - }(core.DateComponent)); | ||
| 1279 | - | ||
| 1280 | - var WEEK_NUM_FORMAT$1 = core.createFormatter({ week: 'numeric' }); | ||
| 1281 | - /* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells. | ||
| 1282 | - ----------------------------------------------------------------------------------------------------------------------*/ | ||
| 1283 | - // It is a manager for a DayGrid subcomponent, which does most of the heavy lifting. | ||
| 1284 | - // It is responsible for managing width/height. | ||
| 1285 | - var DayGridView = /** @class */ (function (_super) { | ||
| 1286 | - __extends(DayGridView, _super); | ||
| 1287 | - function DayGridView(context, viewSpec, dateProfileGenerator, parentEl) { | ||
| 1288 | - var _this = _super.call(this, context, viewSpec, dateProfileGenerator, parentEl) || this; | ||
| 1289 | - /* Header Rendering | ||
| 1290 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 1291 | - // Generates the HTML that will go before the day-of week header cells | ||
| 1292 | - _this.renderHeadIntroHtml = function () { | ||
| 1293 | - var theme = _this.theme; | ||
| 1294 | - if (_this.colWeekNumbersVisible) { | ||
| 1295 | - return '' + | ||
| 1296 | - '<th class="fc-week-number ' + theme.getClass('widgetHeader') + '" ' + _this.weekNumberStyleAttr() + '>' + | ||
| 1297 | - '<span>' + // needed for matchCellWidths | ||
| 1298 | - core.htmlEscape(_this.opt('weekLabel')) + | ||
| 1299 | - '</span>' + | ||
| 1300 | - '</th>'; | ||
| 1301 | - } | ||
| 1302 | - return ''; | ||
| 1303 | - }; | ||
| 1304 | - /* Day Grid Rendering | ||
| 1305 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 1306 | - // Generates the HTML that will go before content-skeleton cells that display the day/week numbers | ||
| 1307 | - _this.renderDayGridNumberIntroHtml = function (row, dayGrid) { | ||
| 1308 | - var dateEnv = _this.dateEnv; | ||
| 1309 | - var weekStart = dayGrid.props.cells[row][0].date; | ||
| 1310 | - if (_this.colWeekNumbersVisible) { | ||
| 1311 | - return '' + | ||
| 1312 | - '<td class="fc-week-number" ' + _this.weekNumberStyleAttr() + '>' + | ||
| 1313 | - core.buildGotoAnchorHtml(// aside from link, important for matchCellWidths | ||
| 1314 | - _this, { date: weekStart, type: 'week', forceOff: dayGrid.colCnt === 1 }, dateEnv.format(weekStart, WEEK_NUM_FORMAT$1) // inner HTML | ||
| 1315 | - ) + | ||
| 1316 | - '</td>'; | ||
| 1317 | - } | ||
| 1318 | - return ''; | ||
| 1319 | - }; | ||
| 1320 | - // Generates the HTML that goes before the day bg cells for each day-row | ||
| 1321 | - _this.renderDayGridBgIntroHtml = function () { | ||
| 1322 | - var theme = _this.theme; | ||
| 1323 | - if (_this.colWeekNumbersVisible) { | ||
| 1324 | - return '<td class="fc-week-number ' + theme.getClass('widgetContent') + '" ' + _this.weekNumberStyleAttr() + '></td>'; | ||
| 1325 | - } | ||
| 1326 | - return ''; | ||
| 1327 | - }; | ||
| 1328 | - // Generates the HTML that goes before every other type of row generated by DayGrid. | ||
| 1329 | - // Affects mirror-skeleton and highlight-skeleton rows. | ||
| 1330 | - _this.renderDayGridIntroHtml = function () { | ||
| 1331 | - if (_this.colWeekNumbersVisible) { | ||
| 1332 | - return '<td class="fc-week-number" ' + _this.weekNumberStyleAttr() + '></td>'; | ||
| 1333 | - } | ||
| 1334 | - return ''; | ||
| 1335 | - }; | ||
| 1336 | - _this.el.classList.add('fc-dayGrid-view'); | ||
| 1337 | - _this.el.innerHTML = _this.renderSkeletonHtml(); | ||
| 1338 | - _this.scroller = new core.ScrollComponent('hidden', // overflow x | ||
| 1339 | - 'auto' // overflow y | ||
| 1340 | - ); | ||
| 1341 | - var dayGridContainerEl = _this.scroller.el; | ||
| 1342 | - _this.el.querySelector('.fc-body > tr > td').appendChild(dayGridContainerEl); | ||
| 1343 | - dayGridContainerEl.classList.add('fc-day-grid-container'); | ||
| 1344 | - var dayGridEl = core.createElement('div', { className: 'fc-day-grid' }); | ||
| 1345 | - dayGridContainerEl.appendChild(dayGridEl); | ||
| 1346 | - var cellWeekNumbersVisible; | ||
| 1347 | - if (_this.opt('weekNumbers')) { | ||
| 1348 | - if (_this.opt('weekNumbersWithinDays')) { | ||
| 1349 | - cellWeekNumbersVisible = true; | ||
| 1350 | - _this.colWeekNumbersVisible = false; | ||
| 1351 | - } | ||
| 1352 | - else { | ||
| 1353 | - cellWeekNumbersVisible = false; | ||
| 1354 | - _this.colWeekNumbersVisible = true; | ||
| 1355 | - } | ||
| 1356 | - } | ||
| 1357 | - else { | ||
| 1358 | - _this.colWeekNumbersVisible = false; | ||
| 1359 | - cellWeekNumbersVisible = false; | ||
| 1360 | - } | ||
| 1361 | - _this.dayGrid = new DayGrid(_this.context, dayGridEl, { | ||
| 1362 | - renderNumberIntroHtml: _this.renderDayGridNumberIntroHtml, | ||
| 1363 | - renderBgIntroHtml: _this.renderDayGridBgIntroHtml, | ||
| 1364 | - renderIntroHtml: _this.renderDayGridIntroHtml, | ||
| 1365 | - colWeekNumbersVisible: _this.colWeekNumbersVisible, | ||
| 1366 | - cellWeekNumbersVisible: cellWeekNumbersVisible | ||
| 1367 | - }); | ||
| 1368 | - return _this; | ||
| 1369 | - } | ||
| 1370 | - DayGridView.prototype.destroy = function () { | ||
| 1371 | - _super.prototype.destroy.call(this); | ||
| 1372 | - this.dayGrid.destroy(); | ||
| 1373 | - this.scroller.destroy(); | ||
| 1374 | - }; | ||
| 1375 | - // Builds the HTML skeleton for the view. | ||
| 1376 | - // The day-grid component will render inside of a container defined by this HTML. | ||
| 1377 | - DayGridView.prototype.renderSkeletonHtml = function () { | ||
| 1378 | - var theme = this.theme; | ||
| 1379 | - return '' + | ||
| 1380 | - '<table class="' + theme.getClass('tableGrid') + '">' + | ||
| 1381 | - (this.opt('columnHeader') ? | ||
| 1382 | - '<thead class="fc-head">' + | ||
| 1383 | - '<tr>' + | ||
| 1384 | - '<td class="fc-head-container ' + theme.getClass('widgetHeader') + '"> </td>' + | ||
| 1385 | - '</tr>' + | ||
| 1386 | - '</thead>' : | ||
| 1387 | - '') + | ||
| 1388 | - '<tbody class="fc-body">' + | ||
| 1389 | - '<tr>' + | ||
| 1390 | - '<td class="' + theme.getClass('widgetContent') + '"></td>' + | ||
| 1391 | - '</tr>' + | ||
| 1392 | - '</tbody>' + | ||
| 1393 | - '</table>'; | ||
| 1394 | - }; | ||
| 1395 | - // Generates an HTML attribute string for setting the width of the week number column, if it is known | ||
| 1396 | - DayGridView.prototype.weekNumberStyleAttr = function () { | ||
| 1397 | - if (this.weekNumberWidth != null) { | ||
| 1398 | - return 'style="width:' + this.weekNumberWidth + 'px"'; | ||
| 1399 | - } | ||
| 1400 | - return ''; | ||
| 1401 | - }; | ||
| 1402 | - // Determines whether each row should have a constant height | ||
| 1403 | - DayGridView.prototype.hasRigidRows = function () { | ||
| 1404 | - var eventLimit = this.opt('eventLimit'); | ||
| 1405 | - return eventLimit && typeof eventLimit !== 'number'; | ||
| 1406 | - }; | ||
| 1407 | - /* Dimensions | ||
| 1408 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 1409 | - DayGridView.prototype.updateSize = function (isResize, viewHeight, isAuto) { | ||
| 1410 | - _super.prototype.updateSize.call(this, isResize, viewHeight, isAuto); // will call updateBaseSize. important that executes first | ||
| 1411 | - this.dayGrid.updateSize(isResize); | ||
| 1412 | - }; | ||
| 1413 | - // Refreshes the horizontal dimensions of the view | ||
| 1414 | - DayGridView.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) { | ||
| 1415 | - var dayGrid = this.dayGrid; | ||
| 1416 | - var eventLimit = this.opt('eventLimit'); | ||
| 1417 | - var headRowEl = this.header ? this.header.el : null; // HACK | ||
| 1418 | - var scrollerHeight; | ||
| 1419 | - var scrollbarWidths; | ||
| 1420 | - // hack to give the view some height prior to dayGrid's columns being rendered | ||
| 1421 | - // TODO: separate setting height from scroller VS dayGrid. | ||
| 1422 | - if (!dayGrid.rowEls) { | ||
| 1423 | - if (!isAuto) { | ||
| 1424 | - scrollerHeight = this.computeScrollerHeight(viewHeight); | ||
| 1425 | - this.scroller.setHeight(scrollerHeight); | ||
| 1426 | - } | ||
| 1427 | - return; | ||
| 1428 | - } | ||
| 1429 | - if (this.colWeekNumbersVisible) { | ||
| 1430 | - // Make sure all week number cells running down the side have the same width. | ||
| 1431 | - this.weekNumberWidth = core.matchCellWidths(core.findElements(this.el, '.fc-week-number')); | ||
| 1432 | - } | ||
| 1433 | - // reset all heights to be natural | ||
| 1434 | - this.scroller.clear(); | ||
| 1435 | - if (headRowEl) { | ||
| 1436 | - core.uncompensateScroll(headRowEl); | ||
| 1437 | - } | ||
| 1438 | - dayGrid.removeSegPopover(); // kill the "more" popover if displayed | ||
| 1439 | - // is the event limit a constant level number? | ||
| 1440 | - if (eventLimit && typeof eventLimit === 'number') { | ||
| 1441 | - dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after | ||
| 1442 | - } | ||
| 1443 | - // distribute the height to the rows | ||
| 1444 | - // (viewHeight is a "recommended" value if isAuto) | ||
| 1445 | - scrollerHeight = this.computeScrollerHeight(viewHeight); | ||
| 1446 | - this.setGridHeight(scrollerHeight, isAuto); | ||
| 1447 | - // is the event limit dynamically calculated? | ||
| 1448 | - if (eventLimit && typeof eventLimit !== 'number') { | ||
| 1449 | - dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set | ||
| 1450 | - } | ||
| 1451 | - if (!isAuto) { // should we force dimensions of the scroll container? | ||
| 1452 | - this.scroller.setHeight(scrollerHeight); | ||
| 1453 | - scrollbarWidths = this.scroller.getScrollbarWidths(); | ||
| 1454 | - if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars? | ||
| 1455 | - if (headRowEl) { | ||
| 1456 | - core.compensateScroll(headRowEl, scrollbarWidths); | ||
| 1457 | - } | ||
| 1458 | - // doing the scrollbar compensation might have created text overflow which created more height. redo | ||
| 1459 | - scrollerHeight = this.computeScrollerHeight(viewHeight); | ||
| 1460 | - this.scroller.setHeight(scrollerHeight); | ||
| 1461 | - } | ||
| 1462 | - // guarantees the same scrollbar widths | ||
| 1463 | - this.scroller.lockOverflow(scrollbarWidths); | ||
| 1464 | - } | ||
| 1465 | - }; | ||
| 1466 | - // given a desired total height of the view, returns what the height of the scroller should be | ||
| 1467 | - DayGridView.prototype.computeScrollerHeight = function (viewHeight) { | ||
| 1468 | - return viewHeight - | ||
| 1469 | - core.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller | ||
| 1470 | - }; | ||
| 1471 | - // Sets the height of just the DayGrid component in this view | ||
| 1472 | - DayGridView.prototype.setGridHeight = function (height, isAuto) { | ||
| 1473 | - if (this.opt('monthMode')) { | ||
| 1474 | - // if auto, make the height of each row the height that it would be if there were 6 weeks | ||
| 1475 | - if (isAuto) { | ||
| 1476 | - height *= this.dayGrid.rowCnt / 6; | ||
| 1477 | - } | ||
| 1478 | - core.distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows | ||
| 1479 | - } | ||
| 1480 | - else { | ||
| 1481 | - if (isAuto) { | ||
| 1482 | - core.undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding | ||
| 1483 | - } | ||
| 1484 | - else { | ||
| 1485 | - core.distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows | ||
| 1486 | - } | ||
| 1487 | - } | ||
| 1488 | - }; | ||
| 1489 | - /* Scroll | ||
| 1490 | - ------------------------------------------------------------------------------------------------------------------*/ | ||
| 1491 | - DayGridView.prototype.computeDateScroll = function (duration) { | ||
| 1492 | - return { top: 0 }; | ||
| 1493 | - }; | ||
| 1494 | - DayGridView.prototype.queryDateScroll = function () { | ||
| 1495 | - return { top: this.scroller.getScrollTop() }; | ||
| 1496 | - }; | ||
| 1497 | - DayGridView.prototype.applyDateScroll = function (scroll) { | ||
| 1498 | - if (scroll.top !== undefined) { | ||
| 1499 | - this.scroller.setScrollTop(scroll.top); | ||
| 1500 | - } | ||
| 1501 | - }; | ||
| 1502 | - return DayGridView; | ||
| 1503 | - }(core.View)); | ||
| 1504 | - DayGridView.prototype.dateProfileGeneratorClass = DayGridDateProfileGenerator; | ||
| 1505 | - | ||
| 1506 | - var SimpleDayGrid = /** @class */ (function (_super) { | ||
| 1507 | - __extends(SimpleDayGrid, _super); | ||
| 1508 | - function SimpleDayGrid(context, dayGrid) { | ||
| 1509 | - var _this = _super.call(this, context, dayGrid.el) || this; | ||
| 1510 | - _this.slicer = new DayGridSlicer(); | ||
| 1511 | - _this.dayGrid = dayGrid; | ||
| 1512 | - context.calendar.registerInteractiveComponent(_this, { el: _this.dayGrid.el }); | ||
| 1513 | - return _this; | ||
| 1514 | - } | ||
| 1515 | - SimpleDayGrid.prototype.destroy = function () { | ||
| 1516 | - _super.prototype.destroy.call(this); | ||
| 1517 | - this.calendar.unregisterInteractiveComponent(this); | ||
| 1518 | - }; | ||
| 1519 | - SimpleDayGrid.prototype.render = function (props) { | ||
| 1520 | - var dayGrid = this.dayGrid; | ||
| 1521 | - var dateProfile = props.dateProfile, dayTable = props.dayTable; | ||
| 1522 | - dayGrid.receiveProps(__assign({}, this.slicer.sliceProps(props, dateProfile, props.nextDayThreshold, dayGrid, dayTable), { dateProfile: dateProfile, cells: dayTable.cells, isRigid: props.isRigid })); | ||
| 1523 | - }; | ||
| 1524 | - SimpleDayGrid.prototype.buildPositionCaches = function () { | ||
| 1525 | - this.dayGrid.buildPositionCaches(); | ||
| 1526 | - }; | ||
| 1527 | - SimpleDayGrid.prototype.queryHit = function (positionLeft, positionTop) { | ||
| 1528 | - var rawHit = this.dayGrid.positionToHit(positionLeft, positionTop); | ||
| 1529 | - if (rawHit) { | ||
| 1530 | - return { | ||
| 1531 | - component: this.dayGrid, | ||
| 1532 | - dateSpan: rawHit.dateSpan, | ||
| 1533 | - dayEl: rawHit.dayEl, | ||
| 1534 | - rect: { | ||
| 1535 | - left: rawHit.relativeRect.left, | ||
| 1536 | - right: rawHit.relativeRect.right, | ||
| 1537 | - top: rawHit.relativeRect.top, | ||
| 1538 | - bottom: rawHit.relativeRect.bottom | ||
| 1539 | - }, | ||
| 1540 | - layer: 0 | ||
| 1541 | - }; | ||
| 1542 | - } | ||
| 1543 | - }; | ||
| 1544 | - return SimpleDayGrid; | ||
| 1545 | - }(core.DateComponent)); | ||
| 1546 | - var DayGridSlicer = /** @class */ (function (_super) { | ||
| 1547 | - __extends(DayGridSlicer, _super); | ||
| 1548 | - function DayGridSlicer() { | ||
| 1549 | - return _super !== null && _super.apply(this, arguments) || this; | ||
| 1550 | - } | ||
| 1551 | - DayGridSlicer.prototype.sliceRange = function (dateRange, dayTable) { | ||
| 1552 | - return dayTable.sliceRange(dateRange); | ||
| 1553 | - }; | ||
| 1554 | - return DayGridSlicer; | ||
| 1555 | - }(core.Slicer)); | ||
| 1556 | - | ||
| 1557 | - var DayGridView$1 = /** @class */ (function (_super) { | ||
| 1558 | - __extends(DayGridView, _super); | ||
| 1559 | - function DayGridView(_context, viewSpec, dateProfileGenerator, parentEl) { | ||
| 1560 | - var _this = _super.call(this, _context, viewSpec, dateProfileGenerator, parentEl) || this; | ||
| 1561 | - _this.buildDayTable = core.memoize(buildDayTable); | ||
| 1562 | - if (_this.opt('columnHeader')) { | ||
| 1563 | - _this.header = new core.DayHeader(_this.context, _this.el.querySelector('.fc-head-container')); | ||
| 1564 | - } | ||
| 1565 | - _this.simpleDayGrid = new SimpleDayGrid(_this.context, _this.dayGrid); | ||
| 1566 | - return _this; | ||
| 1567 | - } | ||
| 1568 | - DayGridView.prototype.destroy = function () { | ||
| 1569 | - _super.prototype.destroy.call(this); | ||
| 1570 | - if (this.header) { | ||
| 1571 | - this.header.destroy(); | ||
| 1572 | - } | ||
| 1573 | - this.simpleDayGrid.destroy(); | ||
| 1574 | - }; | ||
| 1575 | - DayGridView.prototype.render = function (props) { | ||
| 1576 | - _super.prototype.render.call(this, props); | ||
| 1577 | - var dateProfile = this.props.dateProfile; | ||
| 1578 | - var dayTable = this.dayTable = | ||
| 1579 | - this.buildDayTable(dateProfile, this.dateProfileGenerator); | ||
| 1580 | - if (this.header) { | ||
| 1581 | - this.header.receiveProps({ | ||
| 1582 | - dateProfile: dateProfile, | ||
| 1583 | - dates: dayTable.headerDates, | ||
| 1584 | - datesRepDistinctDays: dayTable.rowCnt === 1, | ||
| 1585 | - renderIntroHtml: this.renderHeadIntroHtml | ||
| 1586 | - }); | ||
| 1587 | - } | ||
| 1588 | - this.simpleDayGrid.receiveProps({ | ||
| 1589 | - dateProfile: dateProfile, | ||
| 1590 | - dayTable: dayTable, | ||
| 1591 | - businessHours: props.businessHours, | ||
| 1592 | - dateSelection: props.dateSelection, | ||
| 1593 | - eventStore: props.eventStore, | ||
| 1594 | - eventUiBases: props.eventUiBases, | ||
| 1595 | - eventSelection: props.eventSelection, | ||
| 1596 | - eventDrag: props.eventDrag, | ||
| 1597 | - eventResize: props.eventResize, | ||
| 1598 | - isRigid: this.hasRigidRows(), | ||
| 1599 | - nextDayThreshold: this.nextDayThreshold | ||
| 1600 | - }); | ||
| 1601 | - }; | ||
| 1602 | - return DayGridView; | ||
| 1603 | - }(DayGridView)); | ||
| 1604 | - function buildDayTable(dateProfile, dateProfileGenerator) { | ||
| 1605 | - var daySeries = new core.DaySeries(dateProfile.renderRange, dateProfileGenerator); | ||
| 1606 | - return new core.DayTable(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit)); | ||
| 1607 | - } | ||
| 1608 | - | ||
| 1609 | - var main = core.createPlugin({ | ||
| 1610 | - defaultView: 'dayGridMonth', | ||
| 1611 | - views: { | ||
| 1612 | - dayGrid: DayGridView$1, | ||
| 1613 | - dayGridDay: { | ||
| 1614 | - type: 'dayGrid', | ||
| 1615 | - duration: { days: 1 } | ||
| 1616 | - }, | ||
| 1617 | - dayGridWeek: { | ||
| 1618 | - type: 'dayGrid', | ||
| 1619 | - duration: { weeks: 1 } | ||
| 1620 | - }, | ||
| 1621 | - dayGridMonth: { | ||
| 1622 | - type: 'dayGrid', | ||
| 1623 | - duration: { months: 1 }, | ||
| 1624 | - monthMode: true, | ||
| 1625 | - fixedWeekCount: true | ||
| 1626 | - } | ||
| 1627 | - } | ||
| 1628 | - }); | ||
| 1629 | - | ||
| 1630 | - exports.AbstractDayGridView = DayGridView; | ||
| 1631 | - exports.DayBgRow = DayBgRow; | ||
| 1632 | - exports.DayGrid = DayGrid; | ||
| 1633 | - exports.DayGridSlicer = DayGridSlicer; | ||
| 1634 | - exports.DayGridView = DayGridView$1; | ||
| 1635 | - exports.SimpleDayGrid = SimpleDayGrid; | ||
| 1636 | - exports.buildBasicDayTable = buildDayTable; | ||
| 1637 | - exports.default = main; | ||
| 1638 | - | ||
| 1639 | - Object.defineProperty(exports, '__esModule', { value: true }); | ||
| 1640 | - | ||
| 1641 | -})); |
-
Please register or login to post a comment