diff --git a/Dockerfile b/Dockerfile index 3ce83e55..2e54bf38 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,7 +47,7 @@ FROM ruby:3.4.2-alpine AS app ENV RAILS_ENV=production ENV BUNDLE_WITHOUT="development:test" ENV LD_PRELOAD=/lib/libgcompat.so.0 -ENV OPENSSL_CONF=/app/openssl_legacy.cnf +ENV OPENSSL_CONF=/etc/openssl_legacy.cnf WORKDIR /app @@ -65,36 +65,35 @@ legacy = legacy_sect\n\ activate = 1\n\ \n\ [legacy_sect]\n\ -activate = 1' >> /app/openssl_legacy.cnf +activate = 1' >> /etc/openssl_legacy.cnf -COPY ./Gemfile ./Gemfile.lock ./ +COPY --chown=docuseal:docuseal ./Gemfile ./Gemfile.lock ./ RUN apk add --no-cache build-base && bundle install && apk del --no-cache build-base && rm -rf ~/.bundle /usr/local/bundle/cache && ruby -e "puts Dir['/usr/local/bundle/**/{spec,rdoc,resources/shared,resources/collation,resources/locales}']" | xargs rm -rf && ln -sf /usr/lib/libonnxruntime.so.1 $(ruby -e "print Dir[Gem::Specification.find_by_name('onnxruntime').gem_dir + '/vendor/*.so'].first") RUN echo 'https://dl-cdn.alpinelinux.org/alpine/edge/main' >> /etc/apk/repositories && echo 'https://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories && apk add --no-cache onnxruntime -COPY ./bin ./bin -COPY ./app ./app -COPY ./config ./config -COPY ./db/migrate ./db/migrate -COPY ./log ./log -COPY ./lib ./lib -COPY ./public ./public -COPY ./tmp ./tmp -COPY LICENSE README.md Rakefile config.ru .version ./ -COPY .version ./public/version - -COPY --from=download /fonts/GoNotoKurrent-Regular.ttf /fonts/GoNotoKurrent-Bold.ttf /fonts/DancingScript-Regular.otf /fonts/OFL.txt /fonts +COPY --chown=docuseal:docuseal ./bin ./bin +COPY --chown=docuseal:docuseal ./app ./app +COPY --chown=docuseal:docuseal ./config ./config +COPY --chown=docuseal:docuseal ./db/migrate ./db/migrate +COPY --chown=docuseal:docuseal ./log ./log +COPY --chown=docuseal:docuseal ./lib ./lib +COPY --chown=docuseal:docuseal ./public ./public +COPY --chown=docuseal:docuseal ./tmp ./tmp +COPY --chown=docuseal:docuseal LICENSE README.md Rakefile config.ru .version ./ +COPY --chown=docuseal:docuseal .version ./public/version + +COPY --chown=docuseal:docuseal --from=download /fonts/GoNotoKurrent-Regular.ttf /fonts/GoNotoKurrent-Bold.ttf /fonts/DancingScript-Regular.otf /fonts/OFL.txt /fonts COPY --from=download /fonts/FreeSans.ttf /usr/share/fonts/freefont COPY --from=download /pdfium-linux/lib/libpdfium.so /usr/lib/libpdfium.so COPY --from=download /pdfium-linux/licenses/pdfium.txt /usr/lib/libpdfium-LICENSE.txt -COPY --from=download /model.onnx /app/tmp/model.onnx -COPY --from=webpack /app/public/packs ./public/packs +COPY --chown=docuseal:docuseal --from=download /model.onnx /app/tmp/model.onnx +COPY --chown=docuseal:docuseal --from=webpack /app/public/packs ./public/packs -RUN ln -s /fonts /app/public/fonts -RUN bundle exec bootsnap precompile -j 1 --gemfile app/ lib/ - -RUN chown -R docuseal:docuseal /app +RUN ln -s /fonts /app/public/fonts && \ + bundle exec bootsnap precompile -j 1 --gemfile app/ lib/ && \ + chown -R docuseal:docuseal /app/tmp/cache WORKDIR /data/docuseal ENV HOME=/home/docuseal diff --git a/app/controllers/templates_detect_fields_controller.rb b/app/controllers/templates_detect_fields_controller.rb index 8355dcb2..337e8008 100644 --- a/app/controllers/templates_detect_fields_controller.rb +++ b/app/controllers/templates_detect_fields_controller.rb @@ -11,11 +11,14 @@ class TemplatesDetectFieldsController < ApplicationController sse = SSE.new(response.stream) documents = @template.schema_documents.preload(:blob) + documents = documents.where(uuid: params[:attachment_uuid]) if params[:attachment_uuid].present? + + page_number = params[:page].present? ? params[:page].to_i : nil documents.each do |document| io = StringIO.new(document.download) - Templates::DetectFields.call(io, attachment: document) do |(attachment_uuid, page, fields)| + Templates::DetectFields.call(io, attachment: document, page_number:) do |(attachment_uuid, page, fields)| sse.write({ attachment_uuid:, page:, fields: }) end end diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue index fafccea7..a0a7940d 100644 --- a/app/javascript/submission_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -1244,17 +1244,31 @@ export default { } else if (['equal', 'contains'].includes(condition.action) && field) { if (field.options) { const option = field.options.find((o) => o.uuid === condition.value) - const values = [this.values[condition.field_uuid] ?? defaultValue].flat() - return values.includes(this.optionValue(option, field.options.indexOf(option))) + if (option) { + const values = [this.values[condition.field_uuid] ?? defaultValue].flat() + + return values.includes(this.optionValue(option, field.options.indexOf(option))) + } else { + return false + } } else { return [this.values[condition.field_uuid] ?? defaultValue].flat().includes(condition.value) } } else if (['not_equal', 'does_not_contain'].includes(condition.action) && field) { - const option = field.options.find((o) => o.uuid === condition.value) - const values = [this.values[condition.field_uuid] ?? defaultValue].flat() + if (field.options) { + const option = field.options.find((o) => o.uuid === condition.value) - return !values.includes(this.optionValue(option, field.options.indexOf(option))) + if (option) { + const values = [this.values[condition.field_uuid] ?? defaultValue].flat() + + return !values.includes(this.optionValue(option, field.options.indexOf(option))) + } else { + return false + } + } else { + return false + } } else { return true } diff --git a/app/javascript/template_builder/area.vue b/app/javascript/template_builder/area.vue index d88475b3..664acf96 100644 --- a/app/javascript/template_builder/area.vue +++ b/app/javascript/template_builder/area.vue @@ -8,7 +8,7 @@ @touchstart="startTouchDrag" >
@@ -24,7 +24,7 @@ :style="{ left: (cellW / area.w * 100) + '%' }" >
@@ -266,7 +266,7 @@ ref="defaultValueSelect" class="bg-transparent outline-none focus:outline-none w-full" @change="[field.default_value = $event.target.value, field.readonly = !!field.default_value?.length, save()]" - @focus="selectedAreaRef.value = area" + @focus="selectedAreasRef.value = [area]" @keydown.enter="onDefaultValueEnter" >
+ +
+ +
+