| |
| |
| |
| |
| |
|
|
| <div class="annotation_schema"> |
|
|
| <form id="selection_header" class="annotation-form pure-display" action="javascript:void(0)" data-grid-columns="1"> |
| <fieldset schema="selection_header"> |
| <legend>## Selection Types</legend> |
| <div class="display-content"> |
| |
| </div> |
| </fieldset> |
| </form> |
| |
|
|
| <form id="single_choice" class="annotation-form radio shadcn-radio-container" action="javascript:void(0)" data-annotation-id="1" data-annotation-type="radio" data-schema-name="single_choice" data-grid-columns="1"> |
| |
| <fieldset schema="single_choice"> |
| <legend class="shadcn-radio-title">**Radio Buttons** - Select exactly one option</legend> |
| <div class="shadcn-radio-options"> |
| |
| <div class="shadcn-radio-option"> |
| <input class="single_choice shadcn-radio-input annotation-input" |
| type="radio" |
| id="single_choice_positive_radio" |
| name="single_choice" |
| value="positive" |
| selection_constraint="single" |
| schema="single_choice" |
| label_name="positive" |
| onclick="onlyOne(this);registerAnnotation(this);" |
| validation="" |
| data-key="1"> |
| <label for="single_choice_positive_radio" class="shadcn-radio-label" data-toggle="tooltip" data-html="true" data-placement="top" title="The text expresses positive sentiment">Positive <span class="keybinding-badge">1</span></label> |
| </div> |
| |
| <div class="shadcn-radio-option"> |
| <input class="single_choice shadcn-radio-input annotation-input" |
| type="radio" |
| id="single_choice_neutral_radio" |
| name="single_choice" |
| value="neutral" |
| selection_constraint="single" |
| schema="single_choice" |
| label_name="neutral" |
| onclick="onlyOne(this);registerAnnotation(this);" |
| validation="" |
| data-key="2"> |
| <label for="single_choice_neutral_radio" class="shadcn-radio-label" data-toggle="tooltip" data-html="true" data-placement="top" title="The text is neutral or factual">Neutral <span class="keybinding-badge">2</span></label> |
| </div> |
| |
| <div class="shadcn-radio-option"> |
| <input class="single_choice shadcn-radio-input annotation-input" |
| type="radio" |
| id="single_choice_negative_radio" |
| name="single_choice" |
| value="negative" |
| selection_constraint="single" |
| schema="single_choice" |
| label_name="negative" |
| onclick="onlyOne(this);registerAnnotation(this);" |
| validation="" |
| data-key="3"> |
| <label for="single_choice_negative_radio" class="shadcn-radio-label" data-toggle="tooltip" data-html="true" data-placement="top" title="The text expresses negative sentiment">Negative <span class="keybinding-badge">3</span></label> |
| </div> |
| </div></fieldset></form> |
|
|
| <form id="multi_choice" class="annotation-form multiselect shadcn-multiselect-container" action="javascript:void(0)" data-annotation-id="2" data-annotation-type="multiselect" data-schema-name="multi_choice" data-grid-columns="1"> |
| |
| <fieldset schema="multi_choice"> |
| <legend class="shadcn-multiselect-title">**Checkboxes** - Select all that apply</legend> |
| <div class="shadcn-multiselect-grid" style="grid-template-columns: repeat(1, 1fr);"> |
| <div class="shadcn-multiselect-item"> |
| <input class="multi_choice shadcn-multiselect-checkbox annotation-input" |
| type="checkbox" |
| id="multi_choice_informative_checkbox" |
| name="multi_choice:::informative" |
| value="informative" |
| label_name="informative" |
| schema="multi_choice" |
| onclick="whetherNone(this);registerAnnotation(this)" |
| validation="" data-key="q"> |
| <label for="multi_choice_informative_checkbox" data-toggle="tooltip" data-html="true" data-placement="top" title="Contains factual information" schema="multi_choice" class="shadcn-multiselect-label"> |
| Informative <span class="keybinding-badge shadcn-multiselect-key">Q</span> |
| </label> |
| </div> |
| |
| <div class="shadcn-multiselect-item"> |
| <input class="multi_choice shadcn-multiselect-checkbox annotation-input" |
| type="checkbox" |
| id="multi_choice_emotional_checkbox" |
| name="multi_choice:::emotional" |
| value="emotional" |
| label_name="emotional" |
| schema="multi_choice" |
| onclick="whetherNone(this);registerAnnotation(this)" |
| validation="" data-key="w"> |
| <label for="multi_choice_emotional_checkbox" data-toggle="tooltip" data-html="true" data-placement="top" title="Contains emotional language" schema="multi_choice" class="shadcn-multiselect-label"> |
| Emotional <span class="keybinding-badge shadcn-multiselect-key">W</span> |
| </label> |
| </div> |
| |
| <div class="shadcn-multiselect-item"> |
| <input class="multi_choice shadcn-multiselect-checkbox annotation-input" |
| type="checkbox" |
| id="multi_choice_persuasive_checkbox" |
| name="multi_choice:::persuasive" |
| value="persuasive" |
| label_name="persuasive" |
| schema="multi_choice" |
| onclick="whetherNone(this);registerAnnotation(this)" |
| validation="" data-key="r"> |
| <label for="multi_choice_persuasive_checkbox" data-toggle="tooltip" data-html="true" data-placement="top" title="Attempts to convince the reader" schema="multi_choice" class="shadcn-multiselect-label"> |
| Persuasive <span class="keybinding-badge shadcn-multiselect-key">R</span> |
| </label> |
| </div> |
| |
| <div class="shadcn-multiselect-item"> |
| <input class="multi_choice shadcn-multiselect-checkbox annotation-input" |
| type="checkbox" |
| id="multi_choice_unclear_checkbox" |
| name="multi_choice:::unclear" |
| value="unclear" |
| label_name="unclear" |
| schema="multi_choice" |
| onclick="whetherNone(this);registerAnnotation(this)" |
| validation="" data-key="t"> |
| <label for="multi_choice_unclear_checkbox" data-toggle="tooltip" data-html="true" data-placement="top" title="Meaning is ambiguous" schema="multi_choice" class="shadcn-multiselect-label"> |
| Unclear <span class="keybinding-badge shadcn-multiselect-key">T</span> |
| </label> |
| </div> |
| </div></fieldset></form> |
| <form id="dropdown_choice" class="annotation-form select" action="javascript:void(0)" data-annotation-id="3" data-annotation-type="select" data-schema-name="dropdown_choice" data-grid-columns="1"> <fieldset> <legend>**Dropdown** - Select from a list</legend> <select type="select-one" class="**Dropdown** - Select from a list annotation-input" id="dropdown_choice_select-one_select" name="dropdown_choice:::select-one" validation="" schema="dropdown_choice" label_name="select-one"><option class="dropdown_choice" id="dropdown_choice_news_option" name="dropdown_choice:::news" value="news">news</option><option class="dropdown_choice" id="dropdown_choice_opinion_option" name="dropdown_choice:::opinion" value="opinion">opinion</option><option class="dropdown_choice" id="dropdown_choice_review_option" name="dropdown_choice:::review" value="review">review</option><option class="dropdown_choice" id="dropdown_choice_social_media_option" name="dropdown_choice:::social_media" value="social_media">social_media</option><option class="dropdown_choice" id="dropdown_choice_academic_option" name="dropdown_choice:::academic" value="academic">academic</option><option class="dropdown_choice" id="dropdown_choice_other_option" name="dropdown_choice:::other" value="other">other</option> </select> |
| </fieldset> |
| </form> |
|
|
|
|
| <form id="scale_header" class="annotation-form pure-display" action="javascript:void(0)" data-grid-columns="1"> |
| <fieldset schema="scale_header"> |
| <legend>## Scale & Rating Types</legend> |
| <div class="display-content"> |
| |
| </div> |
| </fieldset> |
| </form> |
| |
|
|
| <form id="likert_scale" class="annotation-form likert shadcn-likert-container" action="javascript:void(0)" data-annotation-id="5" data-annotation-type="likert" data-schema-name="likert_scale" data-grid-columns="1"> |
| |
| <fieldset schema="likert_scale"> |
| <legend class="shadcn-likert-title">**Likert Scale** - Rate on a scale with labeled endpoints</legend> |
| <div class="shadcn-likert-scale" style="max-width: min(100%, calc(300px + 5 * 40px + 250px));"> |
| <div class="shadcn-likert-endpoint">Strongly Disagree</div> |
| <div class="shadcn-likert-options"> |
| <div class="shadcn-likert-track"></div> |
| |
| <div class="shadcn-likert-option"> |
| <input class="likert_scale shadcn-likert-input annotation-input" |
| type="radio" |
| id="likert_scale_1_radio" |
| name="likert_scale" |
| value="1" |
| schema="likert_scale" |
| label_name="1" |
| selection_constraint="single" |
| validation="" |
| onclick="onlyOne(this);registerAnnotation(this);"> |
| <label class="shadcn-likert-button" for="likert_scale_1_radio"></label> |
| <span class="shadcn-likert-label">1</span> |
| </div> |
| |
| <div class="shadcn-likert-option"> |
| <input class="likert_scale shadcn-likert-input annotation-input" |
| type="radio" |
| id="likert_scale_2_radio" |
| name="likert_scale" |
| value="2" |
| schema="likert_scale" |
| label_name="2" |
| selection_constraint="single" |
| validation="" |
| onclick="onlyOne(this);registerAnnotation(this);"> |
| <label class="shadcn-likert-button" for="likert_scale_2_radio"></label> |
| <span class="shadcn-likert-label">2</span> |
| </div> |
| |
| <div class="shadcn-likert-option"> |
| <input class="likert_scale shadcn-likert-input annotation-input" |
| type="radio" |
| id="likert_scale_3_radio" |
| name="likert_scale" |
| value="3" |
| schema="likert_scale" |
| label_name="3" |
| selection_constraint="single" |
| validation="" |
| onclick="onlyOne(this);registerAnnotation(this);"> |
| <label class="shadcn-likert-button" for="likert_scale_3_radio"></label> |
| <span class="shadcn-likert-label">3</span> |
| </div> |
| |
| <div class="shadcn-likert-option"> |
| <input class="likert_scale shadcn-likert-input annotation-input" |
| type="radio" |
| id="likert_scale_4_radio" |
| name="likert_scale" |
| value="4" |
| schema="likert_scale" |
| label_name="4" |
| selection_constraint="single" |
| validation="" |
| onclick="onlyOne(this);registerAnnotation(this);"> |
| <label class="shadcn-likert-button" for="likert_scale_4_radio"></label> |
| <span class="shadcn-likert-label">4</span> |
| </div> |
| |
| <div class="shadcn-likert-option"> |
| <input class="likert_scale shadcn-likert-input annotation-input" |
| type="radio" |
| id="likert_scale_5_radio" |
| name="likert_scale" |
| value="5" |
| schema="likert_scale" |
| label_name="5" |
| selection_constraint="single" |
| validation="" |
| onclick="onlyOne(this);registerAnnotation(this);"> |
| <label class="shadcn-likert-button" for="likert_scale_5_radio"></label> |
| <span class="shadcn-likert-label">5</span> |
| </div> |
| |
| </div> |
| <div class="shadcn-likert-endpoint">Strongly Agree</div> |
| </div> |
| |
| </fieldset></form> |
| |
|
|
| <form id="slider_rating" class="annotation-form slider" action="javascript:void(0)" data-annotation-id="6" > |
| |
| <fieldset schema="slider_rating"> |
| <legend class="custom-slider-title">**Slider** - Select a value in a continuous range</legend> |
|
|
| <div class="custom-slider-container" id="customSlider_slider_rating_slider_range" tabindex="0"> |
| |
| <input type="range" |
| min="0" |
| max="100" |
| step="1" |
| value="50" |
| class="custom-slider-input annotation-input" |
| onclick="registerAnnotation(this);" |
| oninput="updateCustomSlider(this);" |
| label_name="slider" |
| name="slider_rating:::slider" |
| id="slider_rating_slider_range" |
| schema="slider_rating" |
| validation=""> |
|
|
| |
| <div class="custom-slider-track"> |
| <div class="custom-slider-track-active" id="sliderTrackActive_slider_rating_slider_range"></div> |
| <div class="custom-slider-thumb" id="sliderThumb_slider_rating_slider_range"> |
| |
| <div class="slider-tooltip" id="sliderTooltip_slider_rating_slider_range">50</div> |
| </div> |
| </div> |
| <div class="custom-slider-ticks" id="sliderTicks_slider_rating_slider_range"></div> |
| </div> |
| </fieldset> |
| </form> |
|
|
| <script> |
| |
| (function() { |
| const sliderId = "slider_rating_slider_range"; |
| const sliderInput = document.getElementById(sliderId); |
| |
| if (!sliderInput) return; |
| |
| |
| setupCustomSlider(sliderInput); |
| |
| |
| sliderInput.addEventListener('input', function() { |
| updateCustomSlider(this); |
| }); |
| })(); |
| |
| function setupCustomSlider(sliderInput) { |
| const sliderId = sliderInput.id; |
| const min = parseInt(sliderInput.min); |
| const max = parseInt(sliderInput.max); |
| const step = parseInt(sliderInput.step) || 1; |
| |
| |
| const container = document.getElementById('customSlider_' + sliderId); |
| const sliderThumb = document.getElementById('sliderThumb_' + sliderId); |
| const sliderTrackActive = document.getElementById('sliderTrackActive_' + sliderId); |
| const sliderTicks = document.getElementById('sliderTicks_' + sliderId); |
| const tooltip = document.getElementById('sliderTooltip_' + sliderId); |
| |
| if (!container || !sliderThumb || !sliderTrackActive || !sliderTicks || !tooltip) return; |
| |
| |
| updateSliderPosition(50, min, max, sliderThumb, sliderTrackActive, tooltip); |
| |
| |
| createTicks(min, max, step, sliderTicks); |
| |
| container.addEventListener('click', function(e) { |
| |
| if (e.target === sliderThumb || e.target === sliderInput) return; |
| |
| |
| const rect = container.getBoundingClientRect(); |
| const clickPosition = e.clientX - rect.left; |
| const percentClicked = (clickPosition / rect.width) * 100; |
| |
| |
| let newValue = min + (percentClicked / 100) * (max - min); |
| |
| |
| newValue = Math.round(newValue / step) * step; |
| |
| |
| newValue = Math.max(min, Math.min(max, newValue)); |
| |
| |
| sliderInput.value = newValue; |
| |
| |
| updateSliderPosition(newValue, min, max, sliderThumb, sliderTrackActive, tooltip); |
| |
| |
| const event = new Event('input', { bubbles: true }); |
| sliderInput.dispatchEvent(event); |
| |
| |
| if (typeof registerAnnotation === 'function') { |
| registerAnnotation(sliderInput); |
| } |
| }); |
| |
| |
| container.addEventListener('keydown', function(e) { |
| |
| if (e.key !== 'ArrowUp' && e.key !== 'ArrowDown') return; |
| |
| |
| e.preventDefault(); |
| |
| |
| let currentValue = parseFloat(sliderInput.value); |
| |
| |
| |
| if (e.key === 'ArrowDown') { |
| currentValue = Math.max(min, currentValue - step); |
| } else if (e.key === 'ArrowUp') { |
| currentValue = Math.min(max, currentValue + step); |
| } |
| |
| |
| sliderInput.value = currentValue; |
| |
| |
| updateSliderPosition(currentValue, min, max, sliderThumb, sliderTrackActive, tooltip); |
| |
| |
| const event = new Event('input', { bubbles: true }); |
| sliderInput.dispatchEvent(event); |
| |
| |
| if (typeof registerAnnotation === 'function') { |
| registerAnnotation(sliderInput); |
| } |
| }); |
| |
| |
| container.addEventListener('focus', function() { |
| container.classList.add('focus'); |
| }); |
| |
| container.addEventListener('blur', function() { |
| container.classList.remove('focus'); |
| }); |
| |
| |
| let isDragging = false; |
| |
| |
| sliderThumb.addEventListener('mousedown', function(e) { |
| isDragging = true; |
| e.preventDefault(); |
| |
| |
| sliderThumb.classList.add('dragging'); |
| |
| |
| document.addEventListener('mousemove', handleMouseDrag); |
| document.addEventListener('mouseup', stopDrag); |
| }); |
| |
| |
| sliderThumb.addEventListener('touchstart', function(e) { |
| isDragging = true; |
| e.preventDefault(); |
| |
| |
| sliderThumb.classList.add('dragging'); |
| |
| |
| document.addEventListener('touchmove', handleTouchDrag); |
| document.addEventListener('touchend', stopDrag); |
| document.addEventListener('touchcancel', stopDrag); |
| }); |
| |
| |
| function handleMouseDrag(e) { |
| if (!isDragging) return; |
| |
| |
| const rect = container.getBoundingClientRect(); |
| |
| |
| let position = e.clientX - rect.left; |
| position = Math.max(0, Math.min(position, rect.width)); |
| |
| |
| updateSliderFromPosition(position, rect.width); |
| } |
| |
| |
| function handleTouchDrag(e) { |
| if (!isDragging || !e.touches[0]) return; |
| |
| const touch = e.touches[0]; |
| const rect = container.getBoundingClientRect(); |
| |
| |
| let position = touch.clientX - rect.left; |
| position = Math.max(0, Math.min(position, rect.width)); |
| |
| |
| updateSliderFromPosition(position, rect.width); |
| } |
| |
| |
| function updateSliderFromPosition(position, width) { |
| |
| const percent = (position / width) * 100; |
| |
| |
| let newValue = min + (percent / 100) * (max - min); |
| |
| |
| newValue = Math.round(newValue / step) * step; |
| |
| |
| newValue = Math.max(min, Math.min(max, newValue)); |
| |
| |
| sliderInput.value = newValue; |
| |
| |
| updateSliderPosition(newValue, min, max, sliderThumb, sliderTrackActive, tooltip); |
| |
| |
| const event = new Event('input', { bubbles: true }); |
| sliderInput.dispatchEvent(event); |
| |
| |
| if (typeof registerAnnotation === 'function') { |
| registerAnnotation(sliderInput); |
| } |
| } |
| |
| |
| function stopDrag() { |
| if (!isDragging) return; |
| |
| isDragging = false; |
| sliderThumb.classList.remove('dragging'); |
| |
| |
| document.removeEventListener('mousemove', handleMouseDrag); |
| document.removeEventListener('touchmove', handleTouchDrag); |
| document.removeEventListener('mouseup', stopDrag); |
| document.removeEventListener('touchend', stopDrag); |
| document.removeEventListener('touchcancel', stopDrag); |
| } |
| } |
| |
| function updateCustomSlider(sliderInput) { |
| const sliderId = sliderInput.id; |
| const min = parseInt(sliderInput.min); |
| const max = parseInt(sliderInput.max); |
| |
| const sliderThumb = document.getElementById('sliderThumb_' + sliderId); |
| const sliderTrackActive = document.getElementById('sliderTrackActive_' + sliderId); |
| const tooltip = document.getElementById('sliderTooltip_' + sliderId); |
| |
| if (!sliderThumb || !sliderTrackActive || !tooltip) return; |
| |
| updateSliderPosition(sliderInput.value, min, max, sliderThumb, sliderTrackActive, tooltip); |
| } |
| |
| function updateSliderPosition(value, min, max, thumbElement, trackElement, tooltipElement) { |
| const percent = ((value - min) / (max - min)) * 100; |
| thumbElement.style.left = `${percent}%`; |
| trackElement.style.width = `${percent}%`; |
| |
| |
| if (tooltipElement) { |
| tooltipElement.textContent = value; |
| } |
| } |
| |
| function createTicks(min, max, step, tickContainer) { |
| |
| tickContainer.innerHTML = ''; |
| |
| |
| const ticks = calculateOptimalTicks(min, max, step); |
| |
| ticks.forEach(tick => { |
| const percent = ((tick.value - min) / (max - min)) * 100; |
| |
| const tickElement = document.createElement('div'); |
| tickElement.className = 'custom-slider-tick'; |
| tickElement.style.left = `${percent}%`; |
| |
| const tickMark = document.createElement('div'); |
| tickMark.className = tick.showLabel ? 'custom-slider-tick-mark major' : 'custom-slider-tick-mark'; |
| tickElement.appendChild(tickMark); |
| |
| if (tick.showLabel) { |
| const tickLabel = document.createElement('div'); |
| tickLabel.className = 'custom-slider-tick-label'; |
| tickLabel.textContent = tick.value; |
| tickElement.appendChild(tickLabel); |
| } |
| |
| tickContainer.appendChild(tickElement); |
| }); |
| } |
| |
| function calculateOptimalTicks(min, max, sliderStep, maxTicks = 8) { |
| const range = max - min; |
| |
| |
| const possibleValues = []; |
| for (let value = min; value <= max; value += sliderStep) { |
| possibleValues.push(Math.round(value)); |
| } |
| |
| |
| if (possibleValues.length <= maxTicks) { |
| return possibleValues.map(value => ({ value, showLabel: true })); |
| } |
| |
| |
| const targetInterval = range / (maxTicks - 1); |
| |
| |
| const candidates = []; |
| for (let magnitude = 1; magnitude <= range; magnitude *= 10) { |
| candidates.push(magnitude); |
| candidates.push(2 * magnitude); |
| candidates.push(5 * magnitude); |
| } |
| |
| |
| let bestInterval = candidates[0]; |
| let bestDiff = Math.abs(candidates[0] - targetInterval); |
| |
| for (const candidate of candidates) { |
| const diff = Math.abs(candidate - targetInterval); |
| if (diff < bestDiff) { |
| bestInterval = candidate; |
| bestDiff = diff; |
| } |
| } |
| |
| |
| const majorTicks = []; |
| |
| |
| majorTicks.push({ value: min, showLabel: true }); |
| |
| |
| for (let tickValue = bestInterval; tickValue < max; tickValue += bestInterval) { |
| if (tickValue > min) { |
| majorTicks.push({ value: tickValue, showLabel: true }); |
| } |
| } |
| |
| |
| if (majorTicks[majorTicks.length - 1].value !== max) { |
| majorTicks.push({ value: max, showLabel: true }); |
| } |
| |
| |
| const allTicks = [...majorTicks]; |
| |
| |
| if (majorTicks.length > 1) { |
| const majorSpacing = bestInterval; |
| if (majorSpacing > sliderStep * 2) { |
| possibleValues.forEach(value => { |
| if (!allTicks.some(t => t.value === value)) { |
| allTicks.push({ value, showLabel: false }); |
| } |
| }); |
| } |
| } |
| |
| return allTicks.sort((a, b) => a.value - b.value); |
| } |
| </script> |
| |
|
|
| <form id="multirate_matrix" class="annotation-form multirate shadcn-multirate-container" action="javascript:void(0)" data-annotation-id="7" data-grid-columns="1"> |
| <fieldset schema="multirate_matrix"> |
| <legend class="shadcn-multirate-title">**Multirate Matrix** - Rate multiple aspects on the same scale</legend> |
| <table class="shadcn-multirate-table"> |
| <thead> |
| <tr> |
| |
| <th> </th> |
| |
| <th>Poor</th> |
| |
| <th>Fair</th> |
| |
| <th>Good</th> |
| |
| <th>Excellent</th> |
| |
| |
| </tr> |
| </thead> |
| <tbody> |
| |
| <tr schema="multirate"> |
| |
| |
| <td >Clarity</td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Clarity" |
| type="radio" |
| id="multirate_matrix_Clarity_multirate.Poor" |
| value="Poor" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Clarity" |
| aria-label="Clarity: Poor" /> |
| </td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Clarity" |
| type="radio" |
| id="multirate_matrix_Clarity_multirate.Fair" |
| value="Fair" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Clarity" |
| aria-label="Clarity: Fair" /> |
| </td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Clarity" |
| type="radio" |
| id="multirate_matrix_Clarity_multirate.Good" |
| value="Good" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Clarity" |
| aria-label="Clarity: Good" /> |
| </td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Clarity" |
| type="radio" |
| id="multirate_matrix_Clarity_multirate.Excellent" |
| value="Excellent" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Clarity" |
| aria-label="Clarity: Excellent" /> |
| </td> |
| |
| |
| |
| </tr> |
| |
| <tr schema="multirate"> |
| |
| |
| <td >Relevance</td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Relevance" |
| type="radio" |
| id="multirate_matrix_Relevance_multirate.Poor" |
| value="Poor" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Relevance" |
| aria-label="Relevance: Poor" /> |
| </td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Relevance" |
| type="radio" |
| id="multirate_matrix_Relevance_multirate.Fair" |
| value="Fair" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Relevance" |
| aria-label="Relevance: Fair" /> |
| </td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Relevance" |
| type="radio" |
| id="multirate_matrix_Relevance_multirate.Good" |
| value="Good" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Relevance" |
| aria-label="Relevance: Good" /> |
| </td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Relevance" |
| type="radio" |
| id="multirate_matrix_Relevance_multirate.Excellent" |
| value="Excellent" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Relevance" |
| aria-label="Relevance: Excellent" /> |
| </td> |
| |
| |
| |
| </tr> |
| |
| <tr schema="multirate"> |
| |
| |
| <td >Completeness</td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Completeness" |
| type="radio" |
| id="multirate_matrix_Completeness_multirate.Poor" |
| value="Poor" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Completeness" |
| aria-label="Completeness: Poor" /> |
| </td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Completeness" |
| type="radio" |
| id="multirate_matrix_Completeness_multirate.Fair" |
| value="Fair" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Completeness" |
| aria-label="Completeness: Fair" /> |
| </td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Completeness" |
| type="radio" |
| id="multirate_matrix_Completeness_multirate.Good" |
| value="Good" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Completeness" |
| aria-label="Completeness: Good" /> |
| </td> |
| |
| <td class="shadcn-radio-cell"> |
| <input name="multirate_matrix:::Completeness" |
| type="radio" |
| id="multirate_matrix_Completeness_multirate.Excellent" |
| value="Excellent" |
| onclick="this.blur();" |
| validation="" |
| class="shadcn-multirate-radio annotation-input" |
| schema="multirate_matrix" |
| label_name="Completeness" |
| aria-label="Completeness: Excellent" /> |
| </td> |
| |
| |
| |
| </tr> |
| |
| </tbody> |
| </table> |
| </fieldset> |
| </form> |
|
|
| <form id="text_header" class="annotation-form pure-display" action="javascript:void(0)" data-grid-columns="1"> |
| <fieldset schema="text_header"> |
| <legend>## Text Input Types</legend> |
| <div class="display-content"> |
| |
| </div> |
| </fieldset> |
| </form> |
| |
|
|
| <form id="short_answer" class="annotation-form textbox shadcn-textbox-container " action="javascript:void(0)" data-annotation-id="9" data-annotation-type="text" data-schema-name="short_answer" data-grid-columns="1"> |
| |
| <fieldset schema_name="short_answer"> |
| |
| <legend class="shadcn-textbox-title">**Text Input** - Single line response</legend> |
| |
| <div class="shadcn-textbox-item"> |
| <label for="short_answer_Enter a brief summary:_text" schema="short_answer" class="shadcn-textbox-label">Enter a brief summary:</label> |
| |
| <input class="short_answer shadcn-textbox-input annotation-input" |
| type="text" |
| id="short_answer_Enter a brief summary:_text" |
| name="short_answer:::Enter a brief summary:" |
| validation="" |
| schema="short_answer" |
| label_name="Enter a brief summary:" |
| |
| style="" |
| > |
| </div></fieldset></form> |
|
|
| <form id="long_answer" class="annotation-form textbox shadcn-textbox-container " action="javascript:void(0)" data-annotation-id="10" data-annotation-type="text" data-schema-name="long_answer" data-grid-columns="1"> |
| |
| <fieldset schema_name="long_answer"> |
| |
| <legend class="shadcn-textbox-title">**Textarea** - Multi-line response</legend> |
| |
| <div class="shadcn-textbox-item"> |
| <label for="long_answer_Provide detailed feedback:_text" schema="long_answer" class="shadcn-textbox-label">Provide detailed feedback:</label> |
| |
| <textarea class="long_answer shadcn-textbox-input shadcn-textbox-textarea annotation-input" |
| id="long_answer_Provide detailed feedback:_text" |
| name="long_answer:::Provide detailed feedback:" |
| validation="" |
| schema="long_answer" |
| label_name="Provide detailed feedback:" |
| rows='4' cols='60' |
| |
| style="" |
| ></textarea> |
| </div></fieldset></form> |
|
|
| <form id="numeric_input" class="annotation-form number shadcn-number-container" action="javascript:void(0)" data-annotation-id="11" data-grid-columns="1"> |
| |
| <fieldset schema="numeric_input"> |
| <legend class="shadcn-number-title">**Number Input** - Enter a numeric value (e.g., word count estimate)</legend> |
| <div class="shadcn-number-input"> |
| |
| <input class="numeric_input shadcn-number-field annotation-input" |
| type="number" |
| id="numeric_input_number_number" |
| name="numeric_input:::number" |
| validation="" |
| schema="numeric_input" |
| label_name="number" |
| > |
| <label for="numeric_input_number_number" ></label> |
| </div> |
| </fieldset> |
| </form> |
| |
|
|
| <form id="span_header" class="annotation-form pure-display" action="javascript:void(0)" data-grid-columns="1"> |
| <fieldset schema="span_header"> |
| <legend>## Span Annotation</legend> |
| <div class="display-content"> |
| |
| </div> |
| </fieldset> |
| </form> |
| |
|
|
| <form id="span_labels" class="annotation-form span shadcn-span-container" action="javascript:void(0)" data-annotation-id="13" data-grid-columns="1"> |
| |
| <fieldset schema="span_labels"> |
| <legend class="shadcn-span-title">**Span Annotation** - Highlight text and assign labels (select text above)</legend> |
| |
| |
| <div class="shadcn-span-options"> |
| |
| <div class="shadcn-span-option"> |
| <input class="span_labels shadcn-span-checkbox" |
| for_span="true" |
| type="checkbox" |
| id="span_labels_entity" |
| name="span_label:::span_labels" |
| value="e" |
| onclick="onlyOne(this); changeSpanLabel(this, 'span_labels', 'entity', 'entity', '(110, 86, 207)', '');" |
| data-target-field="" |
| validation=""> |
| <label for="span_labels_entity" class="shadcn-span-label" data-toggle="tooltip" data-html="true" data-placement="top" title="Named entity (person, place, org)"> |
| <span style="background-color:rgb(110, 86, 207,0.4);">entity</span> |
| </label> |
| </div> |
| |
| <div class="shadcn-span-option"> |
| <input class="span_labels shadcn-span-checkbox" |
| for_span="true" |
| type="checkbox" |
| id="span_labels_claim" |
| name="span_label:::span_labels" |
| value="c" |
| onclick="onlyOne(this); changeSpanLabel(this, 'span_labels', 'claim', 'claim', '(239, 68, 68)', '');" |
| data-target-field="" |
| validation=""> |
| <label for="span_labels_claim" class="shadcn-span-label" data-toggle="tooltip" data-html="true" data-placement="top" title="A factual claim or assertion"> |
| <span style="background-color:rgb(239, 68, 68,0.4);">claim</span> |
| </label> |
| </div> |
| |
| <div class="shadcn-span-option"> |
| <input class="span_labels shadcn-span-checkbox" |
| for_span="true" |
| type="checkbox" |
| id="span_labels_opinion" |
| name="span_label:::span_labels" |
| value="o" |
| onclick="onlyOne(this); changeSpanLabel(this, 'span_labels', 'opinion', 'opinion', '(113, 113, 122)', '');" |
| data-target-field="" |
| validation=""> |
| <label for="span_labels_opinion" class="shadcn-span-label" data-toggle="tooltip" data-html="true" data-placement="top" title="Subjective opinion or judgment"> |
| <span style="background-color:rgb(113, 113, 122,0.4);">opinion</span> |
| </label> |
| </div> |
| </div></fieldset></form> |
|
|
| </div> |
|
|