@@ -46,9 +46,7 @@
. review__result-title { display : flex ; gap : .65 rem ; align-items : baseline ; width : 100 % ; text-align : start ; font-weight : 800 ; border : 0 ; padding : 0 ; background : none ; color : var ( - - brand - dark ) ; }
. review__result-title : hover { background : none ; border-color : transparent ; color : var ( - - brand ) ; }
. review__rank { flex : 0 0 auto ; color : var ( - - brand ) ; font-variant-numeric : tabular-nums ; }
. review__meta , . review__snippet { margin-block : .5 rem ; color : var ( - - muted ) ; }
. review__meta { font-size : .8 rem ; }
. review__snippet { overflow-wrap : anywhere ; }
. review__meta { margin-block : .5 rem ; color : var ( - - muted ) ; font-size : .8 rem ; }
. review__rating { display : grid ; grid-template-columns : repeat ( 4 , 1 fr ) ; gap : .4 rem ; margin-block : 1 rem .75 rem ; padding : 0 ; border : 0 ; }
. review__rating legend { width : 100 % ; margin-block-end : .35 rem ; font-size : .8 rem ; font-weight : 700 ; color : var ( - - muted ) ; grid-column : 1 / -1 ; }
. review__rating label { min-width : 0 ; padding : .45 rem .25 rem ; border : 1 px solid #c5d0d8 ; border-radius : .5 rem ; color : var ( - - muted ) ; text-align : center ; font-size : .8 rem ; cursor : pointer ; }
@@ -119,7 +117,7 @@
< div class = "review__actions" > < div class = "review__actions-inner" > < label > Ваше имя или псевдоним< input id = "reviewer" maxlength = "120" autocomplete = "name" placeholder = "Например, Айжан К ." > < / label > < label > Комментарий к выдаче < input id = "overall-comment" maxlength = "4000" placeholder = "Что важно учесть? (необязательно)" > < / label > < button class = "review__button--primary" id = "save" type = "button" > Сохранить разметку< / button > < / div > < / div >
< dialog id = "document-dialog" > < button class = "review__dialog-close" id = "dialog-close" type = "button" > Закрыть< / button > < h2 id = "dialog-heading" > Документ< / h2 > < div class = "review__document-body" id = "dialog-body" > < / div > < / dialog >
< div class = "review__tour-spotlight" id = "tutorial-spotlight" hidden aria-hidden = "true" > < / div > < dialog class = "review__tour" id = "tutorial-dialog" aria-labelledby = "tutorial-heading" aria-describedby = "tutorial-text" > < div class = "review__tour-content" > < p class = "review__tour-kicker" > Короткое знакомство< / p > < h2 id = "tutorial-heading" > < / h2 > < p id = "tutorial-text" > < / p > < div class = "review__tour-footer" > < span class = "review__tour-progress" id = "tutorial-progress" > < / span > < div class = "review__tour-actions" > < button id = "tutorial-skip" type = "button" > Пропустить< / button > < button class = "review__button--primary" id = "tutorial-next" type = "button" > Далее< / button > < / div > < / div > < / div > < / dialog >
< footer class = "review__header" > Акылдаш · Backend v0.10.1 · Внутренняя лаборатория релевантности< / footer >
< footer class = "review__header" > Акылдаш · Backend v0.10.2 · Внутренняя лаборатория релевантности< / footer >
< script >
const DRAFT _KEY = 'akyldash-search-review-draft' ;
const TOUR _KEY = 'akyldash-search-review-tour-seen' ;
@@ -146,11 +144,10 @@
const item = document . createElement ( 'li' ) ; item . className = 'review__result' ; item . dataset . rank = index + 1 ; item . dataset . code = result . code ;
const title = document . createElement ( 'button' ) ; title . type = 'button' ; title . className = 'review__result-title' ; title . innerHTML = ` <span class="review__rank"># ${ index + 1 } </span><span></span> ` ; title . lastElementChild . textContent = escapeText ( result . name || 'Название не указано' ) ; title . addEventListener ( 'click' , ( ) => openDocument ( index , title ) ) ;
const meta = document . createElement ( 'div' ) ; meta . className = 'review__meta' ; meta . textContent = [ result . type , result . status , result . date _adopted , result . number ] . filter ( Boolean ) . join ( ' · ' ) ;
const snippet = document . createElement ( 'div' ) ; snippet . className = 'review__snippet' ; snippet . textContent = result . snippet || 'Фрагмент не найден.' ;
const rating = document . createElement ( 'fieldset' ) ; rating . className = 'review__rating' ; rating . innerHTML = ` <legend>Оценка результата</legend> ` ;
[ [ '0' , 'нерелевантен' ] , [ '1' , 'косвенно полезен' ] , [ '2' , 'частично полезен' ] , [ '3' , 'прямо отвечает' ] ] . forEach ( ( [ value , label ] ) => { const id = ` rating- ${ index } - ${ value } ` ; const wrapper = document . createElement ( 'label' ) ; wrapper . htmlFor = id ; wrapper . textContent = ` ${ value } — ${ label } ` ; const input = document . createElement ( 'input' ) ; input . type = 'radio' ; input . name = ` rating- ${ index } ` ; input . id = id ; input . value = value ; wrapper . prepend ( input ) ; rating . append ( wrapper ) ; } ) ;
const comment = document . createElement ( 'textarea' ) ; comment . className = 'review__comment' ; comment . maxLength = 4000 ; comment . placeholder = 'Комментарий к результату (необязательно)' ; comment . setAttribute ( 'aria-label' , ` Комментарий к результату # ${ index + 1 } ` ) ;
item . append ( title , meta , snippet , rating , comment ) ; $ ( 'results' ) . append ( item ) ;
item . append ( title , meta , rating , comment ) ; $ ( 'results' ) . append ( item ) ;
} ) ;
applyDraft ( ) ;
}