diff --git a/app/views/case_workers/_injection_errors.html.haml b/app/views/case_workers/_injection_errors.html.haml new file mode 100644 index 0000000000..61cb027ac4 --- /dev/null +++ b/app/views/case_workers/_injection_errors.html.haml @@ -0,0 +1,9 @@ +- if claim.injection_error.present? || claim.disk_evidence + %div.error-message-container + - if claim.injection_error + - claim.injection_error do |message| + %div.error-message + = message + - if claim.disk_evidence + %div.error-message + = t('.disk_evidence') diff --git a/app/views/case_workers/admin/allocations/_re_allocation.html.haml b/app/views/case_workers/admin/allocations/_re_allocation.html.haml index 54479f4e00..d06e0890e6 100644 --- a/app/views/case_workers/admin/allocations/_re_allocation.html.haml +++ b/app/views/case_workers/admin/allocations/_re_allocation.html.haml @@ -60,26 +60,19 @@ = govuk_table_tbody do = collection_check_boxes :allocation, :claim_ids, @claims, :id, :case_number do |b| - present(b.object) do |claim| - = govuk_table_row(id: dom_id(claim), class: claim.injection_error ? 'error injection-error' : nil) do + = govuk_table_row(id: dom_id(claim)) do = govuk_table_td('data-label': t('.select')) do - .govuk-form-group.error-message-container - .govuk-checkboxes.govuk-checkboxes--small{ 'data-module': 'govuk-checkboxes' } - .govuk-checkboxes__item - = b.check_box(class: 'govuk-checkboxes__input') - = b.label(class: 'govuk-label govuk-checkboxes__label'){ t('.choose_label_html', case_number: claim.case_number) } - - - claim.injection_error do |message| - .error-message - = message + .govuk-checkboxes.govuk-checkboxes--small{ 'data-module': 'govuk-checkboxes' } + .govuk-checkboxes__item + = b.check_box(class: 'govuk-checkboxes__input') + = b.label(class: 'govuk-label govuk-checkboxes__label'){ t('.choose_label_html', case_number: claim.case_number) } = govuk_table_td('data-label': t('.case_number')) do %span.js-test-case-number = govuk_link_to claim.case_number, case_workers_claim_path(claim), 'aria-label': t('.case_number_label', case_number: claim.case_number) %span.unique-id-small = claim.unique_id - - if claim.disk_evidence == true - %span.disk-evidence - = t('.disk_evidence') + = render partial: 'case_workers/injection_errors', locals: { claim: claim } = govuk_table_td('data-label': t('.court')) do = claim.court.name diff --git a/app/views/case_workers/claims/_claims_list.html.haml b/app/views/case_workers/claims/_claims_list.html.haml index 0f29ecab4f..7c575635ea 100644 --- a/app/views/case_workers/claims/_claims_list.html.haml +++ b/app/views/case_workers/claims/_claims_list.html.haml @@ -51,23 +51,16 @@ = sortable 'last_submitted_at', t('.submission_date'), 'aria-label': t('.last_submitted_at_sort_label'), id: 'last_submitted_at_ms' - present_collection(claims).each do |claim| - = govuk_table_row(class: claim.injection_error ? 'error injection-error' : nil) do + = govuk_table_row do = govuk_table_td('data-label': t('.type')) do - .error-message-container - = claim.pretty_type - - claim.injection_error do |message| - .error-message - = message + = claim.pretty_type = govuk_table_td('data-label': t('.case_number')) do = govuk_link_to claim.case_number, case_workers_claim_path(claim), class: 'js-test-case-number-link', 'aria-label': "View #{claim.state.humanize} Claim, Case number: #{claim.case_number}" - - - if claim.disk_evidence == true - %span.disk-evidence - = t('.disk_evidence') + = render partial: 'case_workers/injection_errors', locals: { claim: claim } = govuk_table_td('data-label': t('.advocate_litigator')) do = claim.external_user.name diff --git a/app/webpack/javascripts/modules/Modules.AllocationDataTable.js b/app/webpack/javascripts/modules/Modules.AllocationDataTable.js index e5859997b7..2db8f4178e 100644 --- a/app/webpack/javascripts/modules/Modules.AllocationDataTable.js +++ b/app/webpack/javascripts/modules/Modules.AllocationDataTable.js @@ -62,22 +62,16 @@ moj.Modules.AllocationDataTable = { $('td', row).addClass('govuk-table__cell') - if (data.filter.injection_errored) { - $(row).addClass('error injection-error') - $('td', row).eq(0).wrapInner('
') - $('td .error-message-container', row).eq(0).append('
' + data.injection_errors + '
') - } else if (data.filter.cav_warning) { - $(row).addClass('injection-warning') - $('td', row).eq(0).wrapInner('
') - $('td .warning-message-container', row).eq(0).append('
Conference fees not injected
') - } else if (data.filter.clar_fees_warning) { - $(row).addClass('injection-warning') - $('td', row).eq(0).wrapInner('
') - $('td .warning-message-container', row).eq(0).append('
Paper heavy case or unused materials fees not injected
') - } else if (data.filter.additional_prep_fee_warning) { - $(row).addClass('injection-warning') - $('td', row).eq(0).wrapInner('
') - $('td .warning-message-container', row).eq(0).append('
Additional prep fee not injected
') + const showWarning = data.filter.injection_errored || data.filter.cav_warning || data.filter.clar_fees_warning || data.filter.additional_prep_fee_warning || data.filter.disk_evidence + + if (showWarning) { + $('td', row).eq(1).append('
') + + if (data.filter.injection_errored) { $('td .error-message-container', row).append('
' + data.injection_errors + '
') } + if (data.filter.cav_warning) { $('td .error-message-container', row).append('
Conference fees not injected
') } + if (data.filter.clar_fees_warning) { $('td .error-message-container', row).append('
Paper heavy case or unused materials fees not injected
') } + if (data.filter.additional_prep_fee_warning) { $('td .error-message-container', row).append('
Additional prep fee not injected
') } + if (data.filter.disk_evidence) { $('td .error-message-container', row).append('
Disk evidence
') } } return row @@ -158,7 +152,7 @@ moj.Modules.AllocationDataTable = { targets: 1, data: null, render: function (data, type, full) { - return data.filter.disk_evidence ? '' + data.case_number + '
Disk evidence
' : '' + data.case_number + '' + return '' + data.case_number + '' } }, { diff --git a/app/webpack/stylesheets/_shame.scss b/app/webpack/stylesheets/_shame.scss index 5c0c913d1d..6a766b3233 100644 --- a/app/webpack/stylesheets/_shame.scss +++ b/app/webpack/stylesheets/_shame.scss @@ -378,11 +378,6 @@ form { margin-bottom: $govuk-gutter; } -.disk-evidence { - display: block; - color: $govuk-error-colour; -} - .js-allocation-page #page-h1 { margin-bottom: 0; } diff --git a/app/webpack/stylesheets/components/_table.scss b/app/webpack/stylesheets/components/_table.scss index da03eb5d16..a892dabdaa 100644 --- a/app/webpack/stylesheets/components/_table.scss +++ b/app/webpack/stylesheets/components/_table.scss @@ -1,44 +1,22 @@ // stylelint-disable max-nesting-depth, selector-class-pattern, selector-no-qualifying-type tr { - &.error.injection-error { - border-left: 5px solid $govuk-error-colour; - color: inherit; + td { + padding-top: $govuk-gutter; - td { - padding-top: $govuk-gutter; - - .error-message-container { - position: relative; - padding-left: $gutter-half; - } + .error-message-container { + position: relative; + width: 200px; + border-left: 3px solid $govuk-error-colour; + @include govuk-responsive-margin(2, "top"); + @include govuk-responsive-margin(2, "bottom"); .error-message { - position: absolute; - top: -$govuk-gutter; - width: 320px; + top: $govuk-gutter; color: $govuk-error-colour; text-align: left; - } - } - } - - &.injection-warning { - border-left: 5px solid govuk-colour("orange"); - - td { - padding-top: $govuk-gutter; - - .warning-message-container { - position: relative; - } - - .warning-message { - position: absolute; - top: -$govuk-gutter; - width: 500px; - color: govuk-colour("orange"); - text-align: left; + @include govuk-responsive-margin(1, "top"); + @include govuk-responsive-margin(1, "left"); } } } diff --git a/config/locales/en.yml b/config/locales/en.yml index adadd0e7d5..2084a6f077 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2598,7 +2598,6 @@ en: re_allocate: Re-allocate select_all: Select all allocated_to: Allocated to - disk_evidence: Disk evidence no_claims_allocated: There is no claim available for allocation number_of_claims: 'Number of claims: %{claim_count}' choose_label_html: Select case %{case_number} @@ -2662,7 +2661,6 @@ en: case_type: Case type case_type_sort_label: 'Sort by: Case type' defendants: Defendants - disk_evidence: Disk evidence last_submitted_at_sort_label: 'Sort by: Last submitted at date' messages: Messages none: None @@ -2717,6 +2715,8 @@ en: start_date: Effective start date end_date: Effective end date contract_number: Contract Number + injection_errors: + disk_evidence: Disk evidence api: v1: common_params: diff --git a/spec/javascripts/Modules.AllocationDataTable_spec.js b/spec/javascripts/Modules.AllocationDataTable_spec.js index be6f3427a8..e8562290e9 100644 --- a/spec/javascripts/Modules.AllocationDataTable_spec.js +++ b/spec/javascripts/Modules.AllocationDataTable_spec.js @@ -48,9 +48,9 @@ describe('Modules.AllocationDataTable.js', function () { ]) }) - it('...should have a `createdRow` callback defined', function () { + it('...should have a `createdRow` callback defined for injection errors', function () { expect(options.createdRow).toBeDefined() - const row = $('') + const row = $('') const data = { injection_errors: 'I am an error', filter: { @@ -58,43 +58,57 @@ describe('Modules.AllocationDataTable.js', function () { } } const output = options.createdRow(row, data) - expect(output[0].outerHTML).toEqual('
I am an error
') + expect(output[0].outerHTML).toEqual('
I am an error
') }) it('...should have a `createdRow` callback defined for CAV warnings', function () { expect(options.createdRow).toBeDefined() - const row = $('') + const row = $('') const data = { filter: { cav_warning: 1 } } const output = options.createdRow(row, data) - expect(output[0].outerHTML).toEqual('
Conference fees not injected
') + expect(output[0].outerHTML).toEqual('
Conference fees not injected
') }) it('...should have a `createdRow` callback defined for CLAR fee warnings', function () { expect(options.createdRow).toBeDefined() - const row = $('') + const row = $('') const data = { filter: { clar_fees_warning: 1 } } const output = options.createdRow(row, data) - expect(output[0].outerHTML).toEqual('
Paper heavy case or unused materials fees not injected
') + expect(output[0].outerHTML).toEqual('
Paper heavy case or unused materials fees not injected
') }) it('...should have a `createdRow` callback defined for Additional Prep fee warnings', function () { expect(options.createdRow).toBeDefined() - const row = $('') + const row = $('') const data = { filter: { additional_prep_fee_warning: 1 } } const output = options.createdRow(row, data) - expect(output[0].outerHTML).toEqual('
Additional prep fee not injected
') + expect(output[0].outerHTML).toEqual('
Additional prep fee not injected
') + }) + + it('...should have a `createdRow` callback defined for multiple fee warnings', function () { + expect(options.createdRow).toBeDefined() + const row = $('') + const data = { + filter: { + cav_warning: 1, + clar_fees_warning: 1, + additional_prep_fee_warning: 1 + } + } + const output = options.createdRow(row, data) + expect(output[0].outerHTML).toEqual('
Conference fees not injected
Paper heavy case or unused materials fees not injected
Additional prep fee not injected
') }) it('...should have `processing`', function () {