diff --git a/components.js b/components.js index 5c5b5ff..09f87d9 100644 --- a/components.js +++ b/components.js @@ -3548,8 +3548,20 @@ customElements.define('sm-select', class extends HTMLElement { this.setAttribute('value', val) } - reset() { - + reset(fire = true) { + if (this.availableOptions[0]) { + const firstElement = this.availableOptions[0]; + if (this.previousOption) { + this.previousOption.classList.remove('check-selected') + } + firstElement.classList.add('check-selected') + this.value = firstElement.getAttribute('value') + this.selectedOptionText.textContent = firstElement.textContent + this.previousOption = firstElement; + if (fire) { + this.fireEvent() + } + } } open() { @@ -3657,16 +3669,7 @@ customElements.define('sm-select', class extends HTMLElement { let slot = this.shadowRoot.querySelector('slot') slot.addEventListener('slotchange', e => { this.availableOptions = slot.assignedElements() - if (this.availableOptions[0]) { - let firstElement = this.availableOptions[0]; - this.previousOption = firstElement; - firstElement.classList.add('check-selected') - this.value = firstElement.getAttribute('value') - this.selectedOptionText.textContent = firstElement.textContent - this.availableOptions.forEach((element) => { - element.setAttribute('tabindex', "0"); - }) - } + this.reset(false) }); this.addEventListener('click', this.handleClick) this.addEventListener('keydown', this.handleKeydown) @@ -3704,13 +3707,13 @@ smOption.innerHTML = ` display: flex; } .option{ - display: -webkit-box; - display: -ms-flexbox; - display: flex; + display: grid; -webkit-box-align: center; -ms-flex-align: center; align-items: center; min-width: 100%; + gap: 0.5rem; + grid-template-columns: max-content minmax(0, 1fr); padding: 0.8rem 1.2rem; cursor: pointer; overflow-wrap: break-word; @@ -3725,7 +3728,6 @@ smOption.innerHTML = ` opacity: 0; height: 1.2rem; width: 1.2rem; - margin-right: 0.5rem; fill: rgba(var(--text-color), 0.8); } :host(:focus) .option .icon{ @@ -3757,5 +3759,6 @@ customElements.define('sm-option', class extends HTMLElement { connectedCallback() { this.setAttribute('role', 'option') + this.setAttribute('tabindex', '0') } }) diff --git a/css/main.css b/css/main.css index 2d495f5..0d7779f 100644 --- a/css/main.css +++ b/css/main.css @@ -645,45 +645,27 @@ ul { margin-left: 0.2rem; } -.card { - display: flex; - flex-direction: row; - position: relative; - align-items: center; - margin-bottom: 0.5rem; - padding: 1rem; -} - .request-card { - display: flex; + display: grid; position: relative; - margin-bottom: 0.5rem; - align-items: left; - flex-wrap: wrap; padding: 1rem; - border-bottom: 1px solid rgba(var(--text-color), 0.1); } - -.request-card p { - margin-top: 0; - width: 100%; - font-size: 1rem; -} - .request-card b { font-weight: 500; } - -.request-card button { - padding: 0.2rem 0.6rem 0.2rem 0; +.request-card sm-button { + --padding: 0.5rem 0.8rem; } -.request-card button:first-of-type { +.request-card__description { + width: 100%; + font-size: 1rem; + margin-bottom: 1rem; +} + +.reject-app { margin-left: auto; -} - -.request-card:last-of-type { - border-bottom: none; + margin-right: 0.5rem; } #intern_updates .container-header { @@ -707,13 +689,6 @@ ul { border-bottom: 0.2rem solid var(--accent-color); } -#requests_container { - display: flex; - max-height: 80vh; - overflow-y: auto; - flex-direction: column; -} - #updates_page sm-select { --max-height: 50vh; } @@ -737,6 +712,7 @@ ul { .update__topic { font-weight: 500; font-size: 1rem; + margin-top: 0.5rem; text-transform: capitalize; } @@ -978,13 +954,6 @@ ul { display: inline-flexbox; } -.appear-on-scroll-up { - position: fixed !important; - top: 0; - width: 100%; - height: 4rem !important; -} - #loading_page { display: grid; position: fixed; @@ -1062,17 +1031,8 @@ ul { border: 1px solid rgba(var(--text-color), 0.06); } -.center { - position: relative; - display: grid; - place-content: center; - height: 100%; - text-align: center; -} - -#show_all, #project_explorer { - margin: 0; + padding: 0; } #admin_page { @@ -1189,6 +1149,14 @@ ul { height: 100%; overflow-y: auto; } +#admin_page__left .empty-state { + padding: 1rem; + text-align: center; +} + +#update_filters_wrapper { + gap: 1.5rem; +} @media only screen and (min-width: 640px) { .hide-on-desktop { @@ -1321,7 +1289,6 @@ ul { } #update_filters_wrapper { - gap: 1.5rem; padding: 1rem; border-radius: 0.5rem; align-content: flex-start; diff --git a/css/main.min.css b/css/main.min.css index 1262fa5..acd1be0 100644 --- a/css/main.min.css +++ b/css/main.min.css @@ -1 +1 @@ -.hide,.ripple{pointer-events:none}.interact,.nav-list__item{-webkit-tap-highlight-color:transparent}#loading_page,#sign_in_page{top:0;left:0;bottom:0;place-content:center}#loading_page,#sign_in_page,.center{place-content:center}*{padding:0;margin:0;box-sizing:border-box;font-family:Roboto,sans-serif}:root{font-size:clamp(1rem,1.2vmax,3rem)}body,html{height:100%;scroll-behavior:smooth}body{color:rgba(var(--text-color),1);background:rgba(var(--background-color),1)}body,body *{--accent-color:#5D54A4;--text-color:17,17,17;--background-color:246,246,246;--foreground-color:white;--danger-color:red}body[data-theme=dark],body[data-theme=dark] *{--accent-color:#9D65C9;--text-color:240,240,240;--text-color-light:170,170,170;--background-color:10,10,10;--foreground-color:rgb(20, 20, 20);--danger-color:rgb(255, 106, 106)}p{max-width:70ch;line-height:1.7;color:rgba(var(--text-color),.8)}p:not(:last-of-type){margin-bottom:1.5rem}img{object-fit:cover}a:where([class]){color:inherit;text-decoration:none}a:where([class]):focus-visible{box-shadow:0 0 0 .1rem rgba(var(--text-color),1) inset}.button,button{position:relative;display:inline-flex;border:none;background-color:transparent;overflow:hidden;color:inherit;cursor:pointer}.color-0-8,.nav-list__item{color:rgba(var(--text-color),.8)}button:disabled{opacity:.5}a.button{padding:.6rem 1.2rem;border-radius:.3rem;background-color:rgba(var(--text-color),.06)}a:any-link:focus-visible{outline:solid rgba(var(--text-color),1)}sm-button{--border-radius:0.3rem}sm-button[variant=primary] .icon{fill:rgba(var(--background-color),1)}#edit_data_fig,sm-button[disabled] .icon{fill:rgba(var(--text-color),.6)}.hide{opacity:0}.hide-completely{display:none!important}.overflow-ellipsis{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.breakable{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.full-bleed{grid-column:1/4}.h1{font-size:2.5rem}.h2{font-size:2rem}.h3{font-size:1.4rem}.h4{font-size:1rem}.h5,.nav-list__item{font-size:.8rem}.uppercase{text-transform:uppercase}.capitalize,.project-card{text-transform:capitalize}.flex{display:flex}.grid{display:grid}.grid-3{grid-template-columns:1fr auto auto}.flow-column{grid-auto-flow:column}.gap-0-5{gap:.5rem}.gap-1{gap:1rem}.gap-1-5{gap:1.5rem}.gap-2{gap:2rem}.gap-3{gap:3rem}.text-align-right{text-align:right}#loading_page,.center,.text-center{text-align:center}.align-start{align-items:flex-start}.align-center,.popup__header{align-items:center}.justify-start{justify-content:start}.justify-center{justify-content:center}.justify-right{margin-left:auto}.align-self-center{align-self:center}.justify-self-center{justify-self:center}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.direction-column{flex-direction:column}.space-between{justify-content:space-between}.w-100{width:100%}.weight-400{font-weight:400}.weight-500{font-weight:500}.ripple{position:absolute;border-radius:50%;transform:scale(0);background:rgba(var(--text-color),.16)}#main_nav,.container-card,.interact{position:relative}#main_header,.container-card,.header,.task .left .circle{background:var(--foreground-color)}#main_nav,#sign_in_page{background-color:var(--foreground-color)}.interact{overflow:hidden;cursor:pointer}.observe-empty-state:empty{display:none}.observe-empty-state:not(:empty)~.empty-state{display:none}.icon{width:1.5rem;height:1.5rem;fill:rgba(var(--text-color),.9)}.button__icon{height:1.2rem;width:1.2rem}.button__icon--left{margin-right:.5rem}.button__icon--right{margin-left:.5rem}#confirmation_popup,#prompt_popup{flex-direction:column}#confirmation_popup h4,#prompt_popup h4{font-weight:500;margin-bottom:.5rem}#confirmation_popup sm-button,#prompt_popup sm-button{margin:0}#confirmation_popup .flex,#prompt_popup .flex{padding:0;margin-top:1rem}#confirmation_popup .flex sm-button:first-of-type,#prompt_popup .flex sm-button:first-of-type{margin-right:.6rem;margin-left:auto}.popup__header{display:grid;gap:.5rem;width:100%;padding:0 1.5rem 0 .5rem;grid-template-columns:auto 1fr auto}#main_header,#main_nav{align-items:center;display:flex}.popup__header__close{padding:.5rem;cursor:pointer}#main_page{height:100%;grid-template-rows:auto 1fr auto;grid-template-areas:"main-header" "sub-pages" "main-nav"}#main_header{grid-area:main-header;gap:1rem;position:sticky;padding:1rem 1.5rem;z-index:1}#main_nav{grid-area:main-nav}.nav-list__item{display:flex;flex-direction:column;align-items:center;width:100%;padding:.5rem 0;font-weight:500}.active,.nav-list__item--active,.update__sender{color:var(--accent-color)}.nav-list__item--active .icon{fill:var(--accent-color)}.nav-list__item .icon{margin-bottom:.3rem}#sub_page_container{grid-area:sub-pages;height:100%;overflow-y:auto}.container-card{border-radius:.5rem}.medium-top-bottom-margin{margin:.5rem 0}#sign_in_page{display:grid;position:fixed;z-index:5;right:0}#sign_in_form{width:22rem}.task{display:grid;grid-template-columns:auto 1fr;margin:0 1rem}.task:last-of-type .left .line{transform:scaleY(0)}.task .left{display:flex;position:relative;justify-content:center;padding-top:.5rem}.task .left .circle{display:inline-flex;position:relative;align-self:flex-start;height:1rem;width:1rem;border-radius:50%;border:2px solid;z-index:1}.task .left .line{position:absolute;left:50%;height:100%;width:2px;transform:translateX(-50%) scaleY(1);background-color:rgba(var(--text-color),.4)}.task .right{margin-left:1rem;display:flex;flex-direction:column;width:100%}.task .right .apply-cont{width:100%;display:flex;flex-direction:row}.task .right .apply-cont h4{-webkit-box-flex:1;-ms-flex:1;flex:1}.task h4{margin-top:.4rem;margin-bottom:1rem}.task p{white-space:pre-line;padding-bottom:2rem}.task .assigned-interns .assigned-intern{padding:.4rem}.padding,.page{padding:1rem}.completed-task .left .circle{border:2px solid #00C853!important;background:#00C853!important}.completed-task .left .line{background-color:#00C853!important}.page{gap:1rem;display:grid;position:relative;animation:fadein .3s;grid-template-columns:minmax(0,1fr)}@keyframes fadein{0%{opacity:0}100%{opacity:1}}.title{font-weight:500}#dashboard_page{padding-bottom:5rem;grid-template-columns:auto}.intern-card,.task-list-item{grid-template-columns:auto 1fr auto}.show{display:block}.hide-on-mobile,.hide-page-on-mobile{display:none}.hide-on-desktop{display:initial}.no-transformations{-webkit-transform:none!important;transform:none!important}.no-bottom-margin{margin-bottom:0}.top-margin{margin-top:.3rem}.spacer{flex:1}.logo{display:flex;align-items:center;font-size:1.2rem;width:100%}.logo .cls-2,.logo .cls-3{fill:rgba(var(--text-color),1);font-size:146.9px;font-family:ArialMT,Arial}.logo svg{height:2.5rem}.logo h4{margin:0}.card,.request-card{position:relative;margin-bottom:.5rem;padding:1rem;display:flex}.active{opacity:1!important}.active svg{fill:var(--accent-color)}.svg-margin-right svg{margin-right:.5rem}.project-card{padding:1rem;font-weight:500;line-height:1.5;color:rgba(var(--text-color),.8)}.intern-card{user-select:none;padding:.8rem 1rem;gap:.8rem}.intern-card__initials{display:flex;height:2.6rem;width:2.6rem;justify-content:center;align-items:center;border-radius:40%;color:#fff;font-weight:500;font-size:1rem;text-transform:uppercase;background-color:var(--accent-color)}.intern-card__score-wrapper{font-weight:500;font-size:1.2rem}.intern-card .icon{fill:#FF5722!important;height:1rem!important;width:1rem!important;margin-left:.2rem}.card{flex-direction:row;align-items:center}.request-card{align-items:left;flex-wrap:wrap;border-bottom:1px solid rgba(var(--text-color),.1)}.request-card p{margin-top:0;width:100%;font-size:1rem}.request-card b{font-weight:500}.request-card button{padding:.2rem .6rem .2rem 0}.request-card button:first-of-type{margin-left:auto}.request-card:last-of-type{border-bottom:none}#intern_updates .container-header{padding:0 1rem;border-bottom:1px solid rgba(var(--text-color),.1)}#intern_updates .container-header button{padding:1rem 0;border-bottom:.2rem solid transparent;border-radius:0;opacity:.7}#intern_updates .container-header button:first-of-type{margin-right:1rem}#intern_updates .container-header button:last-of-type{margin-right:1rem}#intern_updates .container-header .active{color:rgba(var(--text-color),1);border-bottom:.2rem solid var(--accent-color)}#requests_container{display:flex;max-height:80vh;overflow-y:auto;flex-direction:column}#updates_page sm-select{--max-height:50vh}#updates{transition:opacity .3s ease}#updates_page__project_selector strip-option{font-size:.9rem}.intern-update{display:grid;gap:.5rem;padding:1rem;border-radius:.5rem;background-color:var(--foreground-color)}.update__topic{font-weight:500;font-size:1rem;text-transform:capitalize}.update__sender{font-size:.9rem;font-weight:500}.update__time{font-size:.85rem;color:rgba(var(--text-color),.8)}.update__message{white-space:pre-line}.container-header{display:flex;align-items:center;width:100%;padding:1rem}.container-header h4{flex:1;font-weight:500}#intern_info{flex-direction:column}#intern_info div{display:flex;flex-direction:row;align-items:center;width:100%;margin-bottom:1rem}#intern_info div span{flex:1;word-break:break-all;font-size:.9rem}#intern_info .gold-fill{fill:#FF5722}#intern_info #update_intern_score h4{margin:0;font-size:2rem}#intern_info h3{text-transform:capitalize}#intern_info h4,#intern_info h5{margin-top:.5rem}#project_info{flex-direction:column}.branch-btn{padding:.5rem;border-radius:.2rem;margin:.5rem .5rem .5rem 0;user-select:none}.active-branch{opacity:1;color:var(--accent-color);background:rgba(var(--text-color),.04)}#update_of_project,.task__description,.task__project-title{color:rgba(var(--text-color),.8)}#task_list{padding:1.5rem 0}.task-list-item{display:grid;grid-template-areas:"status title options" "status interns interns" "status description description";padding:1rem;gap:.5rem;align-items:center;border-radius:.5rem;background:rgba(var(--text-color),.02)}#loading_page,#task_context,.task-card{background-color:var(--foreground-color)}.task-list-item sm-checkbox{grid-area:status;align-self:flex-start;padding:.5rem .5rem .5rem 0}.task-list-item h4{font-weight:500;margin:0}.task-list-item .title{grid-area:title;line-height:1.6}.task-list-item .assigned-interns{grid-area:interns}.task-option{grid-area:options;transition:opacity .3s ease;padding:.5rem}.task-option .icon{height:1.2rem;width:1.2rem}.task-description{grid-area:description;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:pre-line}.assigned-interns{display:flex;flex-wrap:wrap}.assigned-interns .assigned-intern{user-select:none;display:flex;font-size:.8rem;margin:.2rem .5rem .2rem 0;padding:.2rem 0 .2rem .4rem;border-radius:.2rem;border:1px solid;align-items:center;white-space:nowrap;text-transform:capitalize}.assigned-interns .assigned-intern button{padding:.2rem}.assigned-interns .assigned-intern button .icon{height:1rem;width:1rem}#task_context{position:absolute;top:0;right:0;margin:0 2rem;list-style:none;padding:.5rem 0;width:max-content;border-radius:.3rem;transition:.3s opacity ease;box-shadow:0 .5rem 1rem -.3rem rgba(0,0,0,.3)}#task_context li{padding:.8rem 1.5rem;display:flex;align-items:center}#task_context li .icon{margin-right:.5rem}#branch_container{display:flex;flex-flow:row wrap;margin:1rem 0}#interns_list{flex-direction:column;min-width:20rem}#interns_list #interns_list_container{min-height:50vh;max-height:50vh;overflow-y:auto}#best_interns_container,#project_list_container{margin-bottom:1rem}#best_interns_container .container-header .icon,#project_list_container .container-header .icon{margin-right:.5rem}#edit_data_fig{width:60vw;margin:2rem 0}.header{position:sticky;top:0;display:flex;flex-flow:row;border-bottom:1px solid rgba(var(--text-color),.1);align-items:center;z-index:2}.header svg{fill:none;stroke:rgba(var(--text-color),.8);stroke-width:6;overflow:visible;height:2rem;width:2rem;cursor:pointer;padding:.4rem;margin-left:1rem}.header h3{padding:0 .5rem;display:inline-flexbox}.appear-on-scroll-up{position:fixed!important;top:0;width:100%;height:4rem!important}#loading_page{display:grid;position:fixed;right:0;z-index:5;justify-items:center}.loading-message{font-size:1.3rem;margin:1.5rem 0 .5rem}#loading_page__footer{position:absolute;bottom:0;width:100%;padding:1.5rem}#loading_page__footer .icon{height:4rem;width:4rem}#status_map_container{position:relative;overflow:hidden}#status_map_container #status_map{position:relative;padding:0 1rem 1rem}#status_map_container #status_map h2{margin:.4rem 0;text-transform:capitalize}.watching{position:relative;display:flex;padding:1rem;align-items:center}.watching h4{flex:1;font-weight:500}.watching button{padding:.5rem;border-radius:.5rem}#right{align-items:flex-start;align-content:flex-start;padding:1rem}#right div:first-of-type h2{flex:1;margin:.4rem 0}#right div:first-of-type button{border:1px solid}.center{position:relative;display:grid;height:100%}#project_explorer,#show_all{margin:0}#admin_page{display:grid;gap:1rem;height:100%}#admin_page__header{display:grid;gap:0 1rem;grid-template-columns:1fr auto;align-items:center}#project_editing_panel{padding:1rem;height:100%;overflow-y:auto}#update_of_task{font-size:1.3rem;margin:.4rem 0 1.8rem}ul{padding:0;list-style:none}#assigned_task_list{display:grid;gap:1rem;margin-top:1rem;align-content:flex-start}.task-card{display:grid;padding:1rem;border-radius:.5rem}.task__header{display:grid;gap:0 .5rem;align-items:flex-start;grid-template-columns:1fr auto;grid-template-areas:". send-button" ". send-button"}.task__project-title{font-size:.9rem;font-weight:500;border-radius:.3rem;padding:.3rem .5rem;justify-self:flex-start;margin-bottom:.5rem!important;background-color:rgba(var(--text-color),.06)}.task__title{font-size:1.3rem;margin-bottom:1rem!important}.task__description{white-space:pre-line}.send-update-button{grid-area:send-button;--padding:0.6rem 0.8rem;color:var(--accent-color)}.send-update-button .icon{height:1.2rem;width:1.2rem;fill:var(--accent-color)}#admin_page__left{height:100%;overflow-y:hidden}#admin_page__left sm-tab-header{--gap:0;--justify-content:stretch;border-bottom:1px solid rgba(var(--text-color),.2)}#admin_page__left sm-tab{justify-content:center}#admin_page__left sm-tab-panels,#admin_page__left sm-tab-panels>*{height:100%;flex-direction:column}#admin_page__left sm-tab-panels{overflow-y:hidden}#admin_page__left sm-tab-panels>*{display:flex}#admin_page__left .list-container{height:100%;overflow-y:auto}@media only screen and (min-width:640px){.hide-on-desktop{display:none!important}.hide-on-mobile{display:flex}.hide-page-on-mobile{display:grid}sm-popup{--width:26rem}.popup__header{padding:1.5rem 1.5rem 0 .5rem}#main_nav{padding:.5rem;flex-direction:column}#main_nav theme-toggle{margin:1rem;margin-top:auto}.nav-list__item{flex-direction:row;align-items:center;border-radius:.5rem;padding:.8rem;margin-bottom:.25rem;font-size:1rem}.nav-list__item--active{background-color:rgba(var(--text-color),.06)}.nav-list__item .icon{margin-bottom:0}.nav-list__item_title{display:none}.project-card--active{background-color:rgba(var(--text-color),.1)}#settings_page{padding:1rem 2rem}#sign_in{width:24rem;height:auto;border-radius:.4rem}#dashboard_page{grid-template-columns:3fr 1fr}#dashboard_page #status_map_container{align-self:flex-start}#admin_page{grid-template-columns:18rem minmax(0,1fr);grid-template-rows:auto 1fr;grid-template-areas:"admin-header admin-header" ". ."}#admin_page__header{grid-area:admin-header}#edit_data_fig{width:16rem;justify-self:center}#project_explorer{display:grid;height:100%;grid-template-columns:16rem 3fr;grid-template-areas:"left right"}#project_explorer #left{grid-area:left;height:100%;overflow-y:auto;padding-bottom:1.5rem;border-right:1px solid rgba(var(--text-color),.06);background-color:rgba(var(--text-color),.06)}#project_explorer #left h4{margin-top:0;margin-bottom:.5rem;color:#29B6F6;font-size:.9rem}#project_explorer #right{grid-area:right;height:100%;overflow-y:auto}#main_page{grid-template-columns:4rem minmax(0,1fr);grid-template-areas:"main-header main-header" "main-nav sub-pages"}#post_update_popup{--width:32rem}#updates_page{height:100%;gap:1rem;grid-template-areas:"updates update-filters";grid-template-columns:minmax(0,1fr) 20rem}#update_filters_wrapper{gap:1.5rem;padding:1rem;border-radius:.5rem;align-content:flex-start;grid-area:update-filters;background-color:var(--foreground-color)}#updates_wrapper{height:100%;overflow-y:auto;grid-area:updates}}@media only screen and (min-width:1280px){#main_page{grid-template-columns:12rem minmax(0,1fr);grid-template-areas:"main-header main-header" "main-nav sub-pages"}#main_nav{align-items:flex-start}.nav-list__item .icon{margin-right:.5rem}.nav-list__item_title{display:inline-block}}@media (any-hover:hover){::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color),.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color),.5)}.interact:hover{background-color:rgba(var(--text-color),.06)}.send-update-button{opacity:0;transition:opacity .3s}.task-card:hover .send-update-button{opacity:1}.task-option{opacity:0}.task-list-item:hover .task-option,.task-option:focus-within{opacity:1}.apply-btn{opacity:0;transition:opacity .3s}.task:hover .apply-btn{opacity:1}}@media (any-hover:none){.apply-btn,.task-option{opacity:1}} \ No newline at end of file +.overflow-ellipsis,.task-description{overflow:hidden;text-overflow:ellipsis}.hide,.ripple{pointer-events:none}.interact,.nav-list__item{-webkit-tap-highlight-color:transparent}#loading_page,#sign_in_page{left:0;place-content:center;bottom:0}*{padding:0;margin:0;box-sizing:border-box;font-family:Roboto,sans-serif}:root{font-size:clamp(1rem,1.2vmax,3rem)}body,html{height:100%;scroll-behavior:smooth}body{color:rgba(var(--text-color),1);background:rgba(var(--background-color),1)}body,body *{--accent-color:#5D54A4;--text-color:17,17,17;--background-color:246,246,246;--foreground-color:white;--danger-color:red}body[data-theme=dark],body[data-theme=dark] *{--accent-color:#9D65C9;--text-color:240,240,240;--text-color-light:170,170,170;--background-color:10,10,10;--foreground-color:rgb(20, 20, 20);--danger-color:rgb(255, 106, 106)}p{max-width:70ch;line-height:1.7;color:rgba(var(--text-color),.8)}p:not(:last-of-type){margin-bottom:1.5rem}img{object-fit:cover}a:where([class]){color:inherit;text-decoration:none}a:where([class]):focus-visible{box-shadow:0 0 0 .1rem rgba(var(--text-color),1) inset}.button,button{position:relative;display:inline-flex;border:none;background-color:transparent;overflow:hidden;color:inherit;cursor:pointer}.color-0-8,.nav-list__item{color:rgba(var(--text-color),.8)}button:disabled{opacity:.5}a.button{padding:.6rem 1.2rem;border-radius:.3rem;background-color:rgba(var(--text-color),.06)}a:any-link:focus-visible{outline:solid rgba(var(--text-color),1)}sm-button{--border-radius:0.3rem}sm-button[variant=primary] .icon{fill:rgba(var(--background-color),1)}sm-button[disabled] .icon{fill:rgba(var(--text-color),.6)}.hide{opacity:0}.hide-completely{display:none!important}.overflow-ellipsis{width:100%;white-space:nowrap}.task p,.task-description,.task__description,.update__message{white-space:pre-line}.breakable{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.full-bleed{grid-column:1/4}.h1{font-size:2.5rem}.h2{font-size:2rem}.h3{font-size:1.4rem}.h4{font-size:1rem}.h5{font-size:.8rem}.uppercase{text-transform:uppercase}#intern_info h3,#status_map_container #status_map h2,.assigned-interns .assigned-intern,.capitalize,.project-card,.update__topic{text-transform:capitalize}.flex{display:flex}.grid{display:grid}.grid-3{grid-template-columns:1fr auto auto}.flow-column{grid-auto-flow:column}.gap-0-5{gap:.5rem}.gap-1{gap:1rem}#update_filters_wrapper,.gap-1-5{gap:1.5rem}.gap-2{gap:2rem}.gap-3{gap:3rem}.text-align-right{text-align:right}.align-start{align-items:flex-start}.align-center{align-items:center}.text-center{text-align:center}.justify-start{justify-content:start}.justify-center,.task .left{justify-content:center}.justify-right{margin-left:auto}.align-self-center{align-self:center}.justify-self-center{justify-self:center}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.direction-column{flex-direction:column}.space-between{justify-content:space-between}.w-100{width:100%}.weight-400{font-weight:400}.weight-500{font-weight:500}.ripple{position:absolute;border-radius:50%;transform:scale(0);background:rgba(var(--text-color),.16)}#main_nav,.container-card,.interact,.page,.request-card,.task .left,.task .left .circle{position:relative}#main_nav,#sign_in_page{background-color:var(--foreground-color)}.interact{overflow:hidden;cursor:pointer}.observe-empty-state:empty{display:none}.observe-empty-state:not(:empty)~.empty-state{display:none}.icon{width:1.5rem;height:1.5rem;fill:rgba(var(--text-color),.9)}.button__icon{height:1.2rem;width:1.2rem}.button__icon--left{margin-right:.5rem}.button__icon--right{margin-left:.5rem}#confirmation_popup,#prompt_popup{flex-direction:column}#confirmation_popup h4,#prompt_popup h4{font-weight:500;margin-bottom:.5rem}#confirmation_popup sm-button,#prompt_popup sm-button{margin:0}#confirmation_popup .flex,#prompt_popup .flex{padding:0;margin-top:1rem}#confirmation_popup .flex sm-button:first-of-type,#prompt_popup .flex sm-button:first-of-type{margin-right:.6rem;margin-left:auto}.popup__header{display:grid;gap:.5rem;width:100%;padding:0 1.5rem 0 .5rem;align-items:center;grid-template-columns:auto 1fr auto}.popup__header__close{padding:.5rem;cursor:pointer}#main_page{height:100%;grid-template-rows:auto 1fr auto;grid-template-areas:"main-header" "sub-pages" "main-nav"}#main_header{grid-area:main-header;display:flex;gap:1rem;align-items:center;position:sticky;padding:1rem 1.5rem;background:var(--foreground-color);z-index:1}#main_nav{grid-area:main-nav;display:flex;align-items:center}.nav-list__item{display:flex;flex-direction:column;align-items:center;width:100%;padding:.5rem 0;font-size:.8rem;font-weight:500}.active,.nav-list__item--active,.update__sender{color:var(--accent-color)}.nav-list__item--active .icon{fill:var(--accent-color)}.nav-list__item .icon{margin-bottom:.3rem}#sub_page_container{grid-area:sub-pages;height:100%;overflow-y:auto}.container-card{background:var(--foreground-color);border-radius:.5rem}.medium-top-bottom-margin{margin:.5rem 0}#sign_in_page{display:grid;position:fixed;z-index:5;top:0;right:0}#sign_in_form{width:22rem}.task{display:grid;grid-template-columns:auto 1fr;margin:0 1rem}.task:last-of-type .left .line{transform:scaleY(0)}.task .left{display:flex;padding-top:.5rem}.task .left .circle{display:inline-flex;align-self:flex-start;height:1rem;width:1rem;border-radius:50%;background:var(--foreground-color);border:2px solid;z-index:1}.task .left .line{position:absolute;left:50%;height:100%;width:2px;transform:translateX(-50%) scaleY(1);background-color:rgba(var(--text-color),.4)}.task .right{margin-left:1rem;display:flex;flex-direction:column;width:100%}.task .right .apply-cont{width:100%;display:flex;flex-direction:row}.task .right .apply-cont h4{-webkit-box-flex:1;-ms-flex:1;flex:1}.task h4{margin-top:.4rem;margin-bottom:1rem}.task p{padding-bottom:2rem}.task .assigned-interns .assigned-intern{padding:.4rem}.padding,.page{padding:1rem}.completed-task .left .circle{border:2px solid #00C853!important;background:#00C853!important}.completed-task .left .line{background-color:#00C853!important}.page{gap:1rem;display:grid;animation:fadein .3s;grid-template-columns:minmax(0,1fr)}@keyframes fadein{0%{opacity:0}100%{opacity:1}}.title{font-weight:500}#dashboard_page{padding-bottom:5rem;grid-template-columns:auto}.intern-card,.task-list-item{grid-template-columns:auto 1fr auto}.show{display:block}.hide-on-mobile,.hide-page-on-mobile{display:none}.hide-on-desktop{display:initial}.no-transformations{-webkit-transform:none!important;transform:none!important}.no-bottom-margin{margin-bottom:0}.top-margin{margin-top:.3rem}.spacer{flex:1}.logo{display:flex;align-items:center;font-size:1.2rem;width:100%}.logo .cls-2,.logo .cls-3{fill:rgba(var(--text-color),1);font-size:146.9px;font-family:ArialMT,Arial}.logo svg{height:2.5rem}.logo h4{margin:0}.reject-app,.svg-margin-right svg{margin-right:.5rem}.active{opacity:1!important}.active svg{fill:var(--accent-color)}.project-card{padding:1rem;font-weight:500;line-height:1.5;color:rgba(var(--text-color),.8)}.intern-card{user-select:none;padding:.8rem 1rem;gap:.8rem}.intern-card__initials{display:flex;height:2.6rem;width:2.6rem;justify-content:center;align-items:center;border-radius:40%;color:#fff;font-weight:500;font-size:1rem;text-transform:uppercase;background-color:var(--accent-color)}.intern-card__score-wrapper{font-weight:500;font-size:1.2rem}.intern-card .icon{fill:#FF5722!important;height:1rem!important;width:1rem!important;margin-left:.2rem}.request-card{display:grid;padding:1rem}.request-card b{font-weight:500}.request-card sm-button{--padding:0.5rem 0.8rem}.request-card__description{width:100%;font-size:1rem;margin-bottom:1rem}.reject-app{margin-left:auto}#intern_updates .container-header{padding:0 1rem;border-bottom:1px solid rgba(var(--text-color),.1)}#intern_updates .container-header button{padding:1rem 0;border-bottom:.2rem solid transparent;border-radius:0;opacity:.7}#intern_updates .container-header button:first-of-type{margin-right:1rem}#intern_updates .container-header button:last-of-type{margin-right:1rem}#intern_updates .container-header .active{color:rgba(var(--text-color),1);border-bottom:.2rem solid var(--accent-color)}#updates_page sm-select{--max-height:50vh}#updates{transition:opacity .3s ease}#updates_page__project_selector strip-option{font-size:.9rem}.intern-update{display:grid;gap:.5rem;padding:1rem;border-radius:.5rem;background-color:var(--foreground-color)}.update__topic{font-weight:500;font-size:1rem;margin-top:.5rem}.update__sender{font-size:.9rem;font-weight:500}.update__time{font-size:.85rem;color:rgba(var(--text-color),.8)}.container-header{display:flex;align-items:center;width:100%;padding:1rem}.container-header h4{flex:1;font-weight:500}#intern_info{flex-direction:column}#intern_info div{display:flex;flex-direction:row;align-items:center;width:100%;margin-bottom:1rem}#intern_info div span{flex:1;word-break:break-all;font-size:.9rem}#intern_info .gold-fill{fill:#FF5722}#intern_info #update_intern_score h4{margin:0;font-size:2rem}#intern_info h4,#intern_info h5{margin-top:.5rem}#project_info{flex-direction:column}.branch-btn{padding:.5rem;border-radius:.2rem;margin:.5rem .5rem .5rem 0;user-select:none}.active-branch{opacity:1;color:var(--accent-color);background:rgba(var(--text-color),.04)}#update_of_project,.task__description,.task__project-title{color:rgba(var(--text-color),.8)}#task_list{padding:1.5rem 0}.task-list-item{display:grid;grid-template-areas:"status title options" "status interns interns" "status description description";padding:1rem;gap:.5rem;align-items:center;border-radius:.5rem;background:rgba(var(--text-color),.02)}#loading_page,#task_context,.task-card{background-color:var(--foreground-color)}.task-list-item sm-checkbox{grid-area:status;align-self:flex-start;padding:.5rem .5rem .5rem 0}.task-list-item h4{font-weight:500;margin:0}.task-list-item .title{grid-area:title;line-height:1.6}.task-list-item .assigned-interns{grid-area:interns}.task-option{grid-area:options;transition:opacity .3s ease;padding:.5rem}.task-option .icon{height:1.2rem;width:1.2rem}.task-description{grid-area:description;margin:0}.assigned-interns{display:flex;flex-wrap:wrap}.assigned-interns .assigned-intern{user-select:none;display:flex;font-size:.8rem;margin:.2rem .5rem .2rem 0;padding:.2rem 0 .2rem .4rem;border-radius:.2rem;border:1px solid;align-items:center;white-space:nowrap}.assigned-interns .assigned-intern button{padding:.2rem}.assigned-interns .assigned-intern button .icon{height:1rem;width:1rem}#task_context{position:absolute;top:0;right:0;margin:0 2rem;list-style:none;padding:.5rem 0;width:max-content;border-radius:.3rem;transition:.3s opacity ease;box-shadow:0 .5rem 1rem -.3rem rgba(0,0,0,.3)}#task_context li{padding:.8rem 1.5rem;display:flex;align-items:center}#task_context li .icon{margin-right:.5rem}#branch_container{display:flex;flex-flow:row wrap;margin:1rem 0}#interns_list{flex-direction:column;min-width:20rem}#interns_list #interns_list_container{min-height:50vh;max-height:50vh;overflow-y:auto}#best_interns_container,#project_list_container{margin-bottom:1rem}#best_interns_container .container-header .icon,#project_list_container .container-header .icon{margin-right:.5rem}#edit_data_fig{fill:rgba(var(--text-color),.6);width:60vw;margin:2rem 0}.header{position:sticky;top:0;background:var(--foreground-color);display:flex;flex-flow:row;border-bottom:1px solid rgba(var(--text-color),.1);align-items:center;z-index:2}.header svg{fill:none;stroke:rgba(var(--text-color),.8);stroke-width:6;overflow:visible;height:2rem;width:2rem;cursor:pointer;padding:.4rem;margin-left:1rem}.header h3{padding:0 .5rem;display:inline-flexbox}#loading_page{display:grid;position:fixed;top:0;right:0;z-index:5;text-align:center;justify-items:center}.loading-message{font-size:1.3rem;margin:1.5rem 0 .5rem}#loading_page__footer{position:absolute;bottom:0;width:100%;padding:1.5rem}#loading_page__footer .icon{height:4rem;width:4rem}#status_map_container{position:relative;overflow:hidden}#status_map_container #status_map{position:relative;padding:0 1rem 1rem}#status_map_container #status_map h2{margin:.4rem 0}.watching{position:relative;display:flex;padding:1rem;align-items:center}.watching h4{flex:1;font-weight:500}.watching button{padding:.5rem;border-radius:.5rem}#project_explorer,ul{padding:0}#right{align-items:flex-start;align-content:flex-start;padding:1rem}#right div:first-of-type h2{flex:1;margin:.4rem 0}#right div:first-of-type button{border:1px solid}#admin_page{display:grid;gap:1rem;height:100%}#admin_page__header{display:grid;gap:0 1rem;grid-template-columns:1fr auto;align-items:center}#project_editing_panel{padding:1rem;height:100%;overflow-y:auto}#update_of_task{font-size:1.3rem;margin:.4rem 0 1.8rem}ul{list-style:none}#assigned_task_list{display:grid;gap:1rem;margin-top:1rem;align-content:flex-start}.task-card{display:grid;padding:1rem;border-radius:.5rem}.task__header{display:grid;gap:0 .5rem;align-items:flex-start;grid-template-columns:1fr auto;grid-template-areas:". send-button" ". send-button"}.task__project-title{font-size:.9rem;font-weight:500;border-radius:.3rem;padding:.3rem .5rem;justify-self:flex-start;margin-bottom:.5rem!important;background-color:rgba(var(--text-color),.06)}.task__title{font-size:1.3rem;margin-bottom:1rem!important}.send-update-button{grid-area:send-button;--padding:0.6rem 0.8rem;color:var(--accent-color)}.send-update-button .icon{height:1.2rem;width:1.2rem;fill:var(--accent-color)}#admin_page__left{height:100%;overflow-y:hidden}#admin_page__left sm-tab-header{--gap:0;--justify-content:stretch;border-bottom:1px solid rgba(var(--text-color),.2)}#admin_page__left sm-tab{justify-content:center}#admin_page__left sm-tab-panels,#admin_page__left sm-tab-panels>*{height:100%;flex-direction:column}#admin_page__left sm-tab-panels{overflow-y:hidden}#admin_page__left sm-tab-panels>*{display:flex}#admin_page__left .list-container{height:100%;overflow-y:auto}#admin_page__left .empty-state{padding:1rem;text-align:center}@media only screen and (min-width:640px){.hide-on-desktop{display:none!important}.hide-on-mobile{display:flex}.hide-page-on-mobile{display:grid}sm-popup{--width:26rem}.popup__header{padding:1.5rem 1.5rem 0 .5rem}#main_nav{padding:.5rem;flex-direction:column}#main_nav theme-toggle{margin:1rem;margin-top:auto}.nav-list__item{flex-direction:row;align-items:center;border-radius:.5rem;padding:.8rem;margin-bottom:.25rem;font-size:1rem}.nav-list__item--active{background-color:rgba(var(--text-color),.06)}.nav-list__item .icon{margin-bottom:0}.nav-list__item_title{display:none}.project-card--active{background-color:rgba(var(--text-color),.1)}#settings_page{padding:1rem 2rem}#sign_in{width:24rem;height:auto;border-radius:.4rem}#dashboard_page{grid-template-columns:3fr 1fr}#dashboard_page #status_map_container{align-self:flex-start}#admin_page{grid-template-columns:18rem minmax(0,1fr);grid-template-rows:auto 1fr;grid-template-areas:"admin-header admin-header" ". ."}#admin_page__header{grid-area:admin-header}#edit_data_fig{width:16rem;justify-self:center}#project_explorer{display:grid;height:100%;grid-template-columns:16rem 3fr;grid-template-areas:"left right"}#project_explorer #left{grid-area:left;height:100%;overflow-y:auto;padding-bottom:1.5rem;border-right:1px solid rgba(var(--text-color),.06);background-color:rgba(var(--text-color),.06)}#project_explorer #left h4{margin-top:0;margin-bottom:.5rem;color:#29B6F6;font-size:.9rem}#project_explorer #right{grid-area:right;height:100%;overflow-y:auto}#main_page{grid-template-columns:4rem minmax(0,1fr);grid-template-areas:"main-header main-header" "main-nav sub-pages"}#post_update_popup{--width:32rem}#updates_page{height:100%;gap:1rem;grid-template-areas:"updates update-filters";grid-template-columns:minmax(0,1fr) 20rem}#update_filters_wrapper{padding:1rem;border-radius:.5rem;align-content:flex-start;grid-area:update-filters;background-color:var(--foreground-color)}#updates_wrapper{height:100%;overflow-y:auto;grid-area:updates}}@media only screen and (min-width:1280px){#main_page{grid-template-columns:12rem minmax(0,1fr);grid-template-areas:"main-header main-header" "main-nav sub-pages"}#main_nav{align-items:flex-start}.nav-list__item .icon{margin-right:.5rem}.nav-list__item_title{display:inline-block}}@media (any-hover:hover){::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color),.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color),.5)}.interact:hover{background-color:rgba(var(--text-color),.06)}.send-update-button{opacity:0;transition:opacity .3s}.task-card:hover .send-update-button{opacity:1}.task-option{opacity:0}.task-list-item:hover .task-option,.task-option:focus-within{opacity:1}.apply-btn{opacity:0;transition:opacity .3s}.task:hover .apply-btn{opacity:1}}@media (any-hover:none){.apply-btn,.task-option{opacity:1}} \ No newline at end of file diff --git a/css/main.scss b/css/main.scss index cdee58e..0e1e7c8 100644 --- a/css/main.scss +++ b/css/main.scss @@ -666,46 +666,28 @@ ul { margin-left: 0.2rem; } -.card { - display: flex; - flex-direction: row; - position: relative; - align-items: center; - margin-bottom: 0.5rem; - padding: 1rem; -} - .request-card { - display: flex; + display: grid; position: relative; - margin-bottom: 0.5rem; - align-items: left; - flex-wrap: wrap; padding: 1rem; - border-bottom: 1px solid rgba(var(--text-color), 0.1); + b { + font-weight: 500; + } + sm-button{ + --padding: 0.5rem 0.8rem; + } } -.request-card p { - margin-top: 0; +.request-card__description{ width: 100%; font-size: 1rem; + margin-bottom: 1rem; } - -.request-card b { - font-weight: 500; -} - -.request-card button { - padding: 0.2rem 0.6rem 0.2rem 0; -} - -.request-card button:first-of-type { +.reject-app{ margin-left: auto; + margin-right: 0.5rem; } -.request-card:last-of-type { - border-bottom: none; -} #intern_updates{ .container-header { @@ -730,13 +712,6 @@ ul { } } -#requests_container { - display: flex; - max-height: 80vh; - overflow-y: auto; - flex-direction: column; -} - #updates_page{ sm-select{ --max-height: 50vh; @@ -763,6 +738,7 @@ ul { .update__topic { font-weight: 500; font-size: 1rem; + margin-top: 0.5rem; text-transform: capitalize; } @@ -1010,13 +986,6 @@ ul { display: inline-flexbox; } -.appear-on-scroll-up { - position: fixed !important; - top: 0; - width: 100%; - height: 4rem !important; -} - #loading_page { display: grid; position: fixed; @@ -1094,17 +1063,8 @@ ul { border: 1px solid rgba(var(--text-color), 0.06); } -.center { - position: relative; - display: grid; - place-content: center; - height: 100%; - text-align: center; -} - -#show_all, #project_explorer { - margin: 0; + padding: 0; } #admin_page { @@ -1225,6 +1185,13 @@ ul { height: 100%; overflow-y: auto; } + .empty-state{ + padding: 1rem; + text-align: center; + } +} +#update_filters_wrapper{ + gap: 1.5rem; } // @@ -1365,7 +1332,6 @@ ul { grid-template-columns: minmax(0, 1fr) 20rem; } #update_filters_wrapper{ - gap: 1.5rem; padding: 1rem; border-radius: 0.5rem; align-content: flex-start; diff --git a/new.html b/new.html index e01753e..7c990bb 100644 --- a/new.html +++ b/new.html @@ -202,10 +202,6 @@ Sign out -
-

About

-
Version 8.2.5
-
@@ -249,7 +245,10 @@
-
+
+ +

No pending requests

+
@@ -311,6 +310,7 @@
By Intern
+ Clear
@@ -10305,7 +10305,7 @@ textContent: projectName }); }, - taskCard: function (currentProject, currentBranch, taskNo) { + taskCard(currentProject, currentBranch, taskNo) { const card = getRef('timeline_task_card').content.cloneNode(true), assignedInterns = RIBC.getAssignedInterns(currentProject, currentBranch, taskNo), frag = document.createDocumentFragment(); @@ -10430,27 +10430,31 @@ mapItems.push(card, card.id, branchContainer.id, mapBody.id) return mapItems; }, - requestCard: function (floId, projectCode, branch, taskNo) { - let card = document.createElement('div'), name; - card.classList.add('request-card') + requestCard(floId, projectCode, branch, taskNo) { + let name; name = floId; if (getInternDetails(floId).length !== 0) name = getInternDetails(floId)[0].split(':')[1]; - card.innerHTML = `

- ${name} applied for - ${RIBC.getTaskDetails(projectCode, branch, taskNo).taskTitle} from - ${branch} of - ${RIBC.getProjectDetails(projectCode).projectName} -

- - `; - return card; + + + ` + }) }, internTaskCard(taskObj) { const { uniqueId, projectId, projectName, projectBranch, task } = taskObj @@ -10499,7 +10503,7 @@ return internInfo; } - let i = currentProgress = projectIndex = 0, prevProject = '', allInternsList = [], newInternList = [], lastState, + let i = 0, allInternsList = [], newInternList = [], frag = document.createDocumentFragment(), watchList = [], currentIntern, dashboardProject, currentTaskId, typeOfUser = 'general'; @@ -10508,14 +10512,14 @@ let internName = getRef('intern_name_field').value.trim(), internFLOID = getRef('intern_flo_id_field').value.trim(); if (RIBC.manage.addIntern(internFLOID, internName)) { - document.getElementById('interns').append(render.internCard(internName, internFLOID, '1', 'interns')) + getRef('interns').append(render.internCard(internName, internFLOID, '1', 'interns')) hidePopup(); notify(`${internName} added as an intern.`, 'success') } } function addProjectToList() { - let projectName = document.getElementById('project_name_field').value.trim(), - projectDescription = document.getElementById('project_description_field').value.trim(); + let projectName = getRef('project_name_field').value.trim(), + projectDescription = getRef('project_description_field').value.trim(); if (!projectName) { notify('Project name is important!', 'error') return @@ -10810,24 +10814,6 @@ hidePopup() } } - - function renderInternUpdates(updates) { - getRef('all_updates_list').innerHTML = ``; - if(!updates){ - updates = RIBC.getInternUpdates(); - } - updates.forEach((entry) => { - const { floID, time, update: { topic, description } } = entry - const updateObj = { - internName: getInternDetails(floID)[0].split(':')[1], - time: parseInt(time), - topic, - description - } - frag.append(render.updateCard(updateObj)) - }) - getRef('all_updates_list').append(frag) - } function renderProjectSelectorOptions() { // Render All the projects inside updates page @@ -10889,28 +10875,77 @@ return fuse.search(floId).map(v => v.item) } - async function renderCorrectUpdates() { + let updateStartIndex = 0 + let updateEndIndex = 0 + const intersectionObserver = new IntersectionObserver((entries, observer) => { + entries.forEach(entry => { + if(entry.isIntersecting){ + observer.disconnect() + renderFilteredUpdates({lazyLoad: true}) + } + }) + },{ + threshold: 0.3 + }) + function renderInternUpdates(options = {}) { + let {updates, lazyLoad = false} = options + if(!updates){ + updates = RIBC.getInternUpdates(); + } + if(lazyLoad){ + updateStartIndex = updateEndIndex + updateEndIndex = updates.length > updateEndIndex + 10 ? updateEndIndex + 10 : updates.length + }else{ + intersectionObserver.disconnect() + getRef('all_updates_list').innerHTML = ``; + updateStartIndex = 0 + updateEndIndex = updates.length > 10 ? 10 : updates.length + } + for (let index = updateStartIndex; index < updateEndIndex; index++) { + const element = updates[index]; + const { floID, time, update: { topic, description } } = element + const updateObj = { + internName: getInternDetails(floID)[0].split(':')[1], + time: parseInt(time), + topic, + description + } + frag.append(render.updateCard(updateObj)) + } + getRef('all_updates_list').append(frag) + if(getRef('all_updates_list').lastElementChild){ + intersectionObserver.observe(getRef('all_updates_list').lastElementChild) + } + } + + async function renderFilteredUpdates(options = {}) { + const {lazyLoad = false} = options const selectedProject = getRef('updates_page__project_selector').value const selectedintern = getRef('updates_page__intern_selector').value if(selectedProject === 'all' && selectedintern === 'all'){ - renderInternUpdates() + renderInternUpdates({lazyLoad}) }else if(selectedProject !== 'all' && selectedintern === 'all'){ const projectName = RIBC.getProjectDetails(selectedProject).projectName const matchedUpdates = await getUpdatesByProject(projectName) - renderInternUpdates(matchedUpdates) + renderInternUpdates({updates: matchedUpdates, lazyLoad}) }else if(selectedProject === 'all' && selectedintern !== 'all'){ const matchedUpdates = await getUpdatesByIntern(selectedintern) - renderInternUpdates(matchedUpdates) + renderInternUpdates({updates: matchedUpdates, lazyLoad}) }else{ const projectName = RIBC.getProjectDetails(selectedProject).projectName let matchedUpdates = await getUpdatesByProject(projectName) matchedUpdates = await getUpdatesByIntern(selectedintern, matchedUpdates) - renderInternUpdates(matchedUpdates) + renderInternUpdates({updates: matchedUpdates, lazyLoad}) } } - getRef('updates_page__project_selector').addEventListener('change', renderCorrectUpdates) - getRef('updates_page__intern_selector').addEventListener('change', renderCorrectUpdates) + function clearFilter(){ + getRef('updates_page__project_selector').reset() + getRef('updates_page__intern_selector').reset() + } + + getRef('updates_page__project_selector').addEventListener('change', renderFilteredUpdates) + getRef('updates_page__intern_selector').addEventListener('change', renderFilteredUpdates) function watchThisProject(thisBtn) { @@ -11146,43 +11181,48 @@ // admin view if (floGlobals.subAdmins.includes(myFloID)) { typeOfUser = 'admin' + getRef('requests_list').innerHTML = '' RIBC.manage.getTaskRequests().forEach((app) => { try { if (!Array.isArray(RIBC.getAssignedInterns(app.projectCode, app.branch, app.task)) && typeof RIBC.getTaskDetails(app.projectCode, app.branch, app.task) !== 'undefined') - frag.appendChild(render.requestCard(app.floID, app.projectCode, app.branch, app.task)) + frag.append(render.requestCard(app.floID, app.projectCode, app.branch, app.task)) } catch (error) { console.error(error) } }) - getRef('requests_container').appendChild(frag) - if (getRef('requests_container').children.length === 0) - getRef('requests_container').innerHTML = '

Nothing to see here.

' - getRef('requests_container').addEventListener('click', (e) => { + getRef('requests_list').append(frag) + getRef('requests_list').addEventListener('click', (e) => { + function removeRequest(requestCard){ + requestCard.animate([ + { + transform: 'translateX(0)', + opacity: 1 + }, + { + transform: 'translateX(-100%)', + opacity: 0 + }, + ], { + duration: 300, + easing: 'ease' + }).onfinish = () => { + requestCard.remove() + } + } if (e.target.closest('.accept-app')) { let btn = e.target.closest('.accept-app'), - parent = e.target.closest('.request-card'); + requestCard = e.target.closest('.request-card'); if (RIBC.manage.assignInternToTask(btn.dataset.floId, btn.dataset.projectCode, btn.dataset.branch, btn.dataset.taskNo)) { notify('Intern assinged.', 'success') - parent.classList.add('slide-left') - setTimeout(() => { - parent.remove() - }, 600) - if (getRef('requests_container').children.length === 0) - getRef('requests_container').innerHTML = '

Nothing to see here.

' + removeRequest(requestCard) } else { notify('Intern already assinged.', 'error') } - } - if (e.target.closest('.reject-app')) { - let parent = e.target.closest('.request-card'); - parent.classList.add('slide-left') - setTimeout(() => { - parent.remove() - }, 400) - if (getRef('requests_container').children.length === 0) - getRef('requests_container').innerHTML = '

Nothing to see here.

' + }else if (e.target.closest('.reject-app')) { + let requestCard = e.target.closest('.request-card'); + removeRequest(requestCard) } })