diff --git a/Makefile b/Makefile index 7bc57d14e..b18ba3e16 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ REPLACE := perl -i -pe RODAN_PATH := ./rodan-main/code/rodan JOBS_PATH := $(RODAN_PATH)/jobs -PROD_TAG := v3.0.0 +PROD_TAG := v3.1.0 DOCKER_TAG := nightly diff --git a/build.yml b/build.yml index 223208a41..b5672a8a1 100644 --- a/build.yml +++ b/build.yml @@ -49,8 +49,3 @@ services: dockerfile: Dockerfile image: "ddmal/rodan-client:nightly" - iipsrv: - build: - context: ./iipsrv - dockerfile: Dockerfile - image: "ddmal/iipsrv:nightly" diff --git a/gpu-celery/Dockerfile b/gpu-celery/Dockerfile index 6d316ba43..fd44c14f2 100644 --- a/gpu-celery/Dockerfile +++ b/gpu-celery/Dockerfile @@ -94,7 +94,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* \ - && wget https://bootstrap.pypa.io/get-pip.py \ + && wget https://bootstrap.pypa.io/pip/3.7/get-pip.py \ && ${PYTHON} get-pip.py \ && ln -sf /usr/bin/${PYTHON} /usr/local/bin/python3 \ && ln -sf /usr/local/bin/pip /usr/local/bin/pip3 \ diff --git a/iipsrv/Dockerfile b/iipsrv/Dockerfile index 4c6b41bbf..a13bdbf7d 100644 --- a/iipsrv/Dockerfile +++ b/iipsrv/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine AS builder +FROM alpine:3.18.5 AS builder RUN apk add --no-cache \ autoconf \ @@ -15,7 +15,7 @@ RUN ./autogen.sh RUN ./configure --enable-openjpeg RUN make -FROM alpine +FROM alpine:3.18.5 RUN apk add --no-cache \ libgcc \ @@ -34,4 +34,4 @@ ENV PORT 9003 EXPOSE ${PORT} -ENTRYPOINT /fcgi-bin/iipsrv.fcgi --bind 0.0.0.0:${PORT} +ENTRYPOINT /fcgi-bin/iipsrv.fcgi --bind 0.0.0.0:${PORT} \ No newline at end of file diff --git a/production.yml b/production.yml index 1adc3a54f..8c443a068 100644 --- a/production.yml +++ b/production.yml @@ -3,7 +3,7 @@ version: "3.4" services: nginx: - image: "ddmal/nginx:v3.0.0" + image: "ddmal/nginx:v3.1.0" deploy: replicas: 1 resources: @@ -37,7 +37,7 @@ services: - "resources:/rodan/data" rodan-main: - image: "ddmal/rodan-main:v3.0.0" + image: "ddmal/rodan-main:v3.1.0" deploy: replicas: 1 resources: @@ -78,7 +78,7 @@ services: - "resources:/rodan/data" celery: - image: "ddmal/rodan-main:v3.0.0" + image: "ddmal/rodan-main:v3.1.0" deploy: replicas: 1 resources: @@ -109,7 +109,7 @@ services: - "resources:/rodan/data" py3-celery: - image: "ddmal/rodan-python3-celery:v3.0.0" + image: "ddmal/rodan-python3-celery:v3.1.0" deploy: replicas: 1 resources: @@ -139,7 +139,7 @@ services: - "resources:/rodan/data" gpu-celery: - image: "ddmal/rodan-gpu-celery:v3.0.0" + image: "ddmal/rodan-gpu-celery:v3.1.0" deploy: replicas: 1 resources: @@ -195,7 +195,7 @@ services: TZ: America/Toronto postgres: - image: "ddmal/postgres-plpython:v3.0.0" + image: "ddmal/postgres-plpython:v3.1.0" deploy: replicas: 1 endpoint_mode: dnsrr diff --git a/rodan-client/code/src/js/Controllers/ControllerModal.js b/rodan-client/code/src/js/Controllers/ControllerModal.js index 00c0328d4..8a780e809 100644 --- a/rodan-client/code/src/js/Controllers/ControllerModal.js +++ b/rodan-client/code/src/js/Controllers/ControllerModal.js @@ -72,8 +72,7 @@ export default class ControllerModal extends BaseController $modalEl.html(this._layoutViewModal.el); $('.modal-title').text(options.title); $('.modal-body').append(options.content); - $('#modal-close').on('click', () => Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_HIDE)); - $modalEl.show(); + $('#modal-close').on('click', () => Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_HIDE)); } else { @@ -85,9 +84,21 @@ export default class ControllerModal extends BaseController $modalEl.html(this._layoutViewModal.el); $('.modal-title').text(options.title); - $('#modal-close').on('click', () => Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_HIDE)); - $modalEl.show(); + $('#modal-close').on('click', () => Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_HIDE)); } + + switch (options.scroll) { + case 'modal': + $('.modal-body').addClass('modal-scroll'); + break; + + case 'table': + $('.modal .table-responsive').css('height', '50vh'); + $('.modal .table-responsive>.table>tbody').addClass('tbody-scroll'); + break; + } + + $modalEl.show(); } /** @@ -106,6 +117,7 @@ export default class ControllerModal extends BaseController { Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_SHOW, options); } + $('.modal-dialog').addClass('modal-fit'); $('.modal-footer').removeClass('modal-footer-error'); } diff --git a/rodan-client/code/src/js/Controllers/ControllerWorkflow.js b/rodan-client/code/src/js/Controllers/ControllerWorkflow.js index 2184b38ba..5bf5099d1 100644 --- a/rodan-client/code/src/js/Controllers/ControllerWorkflow.js +++ b/rodan-client/code/src/js/Controllers/ControllerWorkflow.js @@ -71,7 +71,7 @@ export default class ControllerWorkflow extends BaseController // Clear the individual view (if there). if (this._viewItem !== null && options.workflow === this._viewItem.model) { - this._projectView.clearItemView(); + this._projectView.clearCollectionItemInfoView(); } options.workflow.destroy({success: (model) => this._handleDeleteSuccess(model, this._collection)}); } diff --git a/rodan-client/code/src/js/Controllers/ControllerWorkflowBuilder.js b/rodan-client/code/src/js/Controllers/ControllerWorkflowBuilder.js index 8c15e3e8e..eb8f25570 100644 --- a/rodan-client/code/src/js/Controllers/ControllerWorkflowBuilder.js +++ b/rodan-client/code/src/js/Controllers/ControllerWorkflowBuilder.js @@ -498,7 +498,7 @@ export default class ControllerWorkflowBuilder extends BaseController var collection = new JobCollection(); collection.fetch(); var view = new ViewJobCollection({collection: collection, childViewOptions: {workflow: options.workflow}}); - Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_SHOW, {content: view, title: 'Jobs'}); + Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_SHOW, {content: view, title: 'Jobs', scroll: 'table'}); } /** @@ -531,7 +531,7 @@ export default class ControllerWorkflowBuilder extends BaseController _handleRequestShowWorkflowJobPortsView(options) { var view = new LayoutViewControlPorts(options); - Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_SHOW, {content: view, title: 'WorkflowJob Ports'}); + Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_SHOW, {content: view, title: 'WorkflowJob Ports', scroll: 'modal'}); } /** diff --git a/rodan-client/code/src/js/Views/Master/Main/ResourceAssignment/LayoutViewResourceAssignment.js b/rodan-client/code/src/js/Views/Master/Main/ResourceAssignment/LayoutViewResourceAssignment.js index d0900e375..440ea0432 100644 --- a/rodan-client/code/src/js/Views/Master/Main/ResourceAssignment/LayoutViewResourceAssignment.js +++ b/rodan-client/code/src/js/Views/Master/Main/ResourceAssignment/LayoutViewResourceAssignment.js @@ -26,7 +26,7 @@ export default class LayoutViewResourceAssignment extends Marionette.View this._viewAssignedResources = options.viewassignedresources; this._viewAssignedResources.collection.on('update', this._updateAssignedCount); - this.setElement('
'); + this.setElement(''); } /** diff --git a/rodan-client/code/src/js/Views/Master/Navigation/LayoutViewNavigation.js b/rodan-client/code/src/js/Views/Master/Navigation/LayoutViewNavigation.js index 8e65166a3..992b87ed0 100644 --- a/rodan-client/code/src/js/Views/Master/Navigation/LayoutViewNavigation.js +++ b/rodan-client/code/src/js/Views/Master/Navigation/LayoutViewNavigation.js @@ -128,7 +128,7 @@ export default class LayoutViewNavigation extends Marionette.View serverConfiguration: serverConfig, date: serverDate, client: Configuration.CLIENT}); - Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_SHOW, {title: 'About', content: html}); + Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_SHOW, {title: 'About', content: html, scroll: 'modal'}); } /** @@ -149,7 +149,7 @@ export default class LayoutViewNavigation extends Marionette.View var view = new BaseViewCollection({collection: collection, template: _.template($('#template-resourcetype_collection').text()), childView: ViewResourceTypeDetailCollectionItem}); - Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_SHOW, {title: 'Development', content: view}); + Radio.channel('rodan').request(RODAN_EVENTS.REQUEST__MODAL_SHOW, {title: 'Development', content: view, scroll: 'table'}); } diff --git a/rodan-client/code/styles/default.css b/rodan-client/code/styles/default.css index 5e44366bd..cf307085a 100644 --- a/rodan-client/code/styles/default.css +++ b/rodan-client/code/styles/default.css @@ -666,10 +666,8 @@ tbody > tr:hover { border: 1px solid #dfdfdf; border-radius: 5px; background-color: #f0f0f047; - height: fit-content; width: 100%; - overflow-x: auto; - max-height: 1000px; + overflow: scroll; } .project-collections { gap: 25px; @@ -708,6 +706,7 @@ tbody > tr:hover { } .single-project-view-collection-wrapper { gap: 10px; + overflow: hidden; } .resource-upload-container { height: fit-content; @@ -938,7 +937,6 @@ div#main_workflowbuilder animation: fade-in 0.2s ease-in-out forwards; } .modal-dialog { - width: fit-content; height: fit-content; border-radius: 3px; position: relative; @@ -947,7 +945,6 @@ div#main_workflowbuilder backdrop-filter: blur(20px); min-width: 500px; max-width: 100%; - /* min-height: 300px; */ } .modal-header { align-items: center; @@ -965,7 +962,6 @@ div#main_workflowbuilder .modal-body { max-height: 600px; - overflow-y: auto; padding: 20px; box-sizing: border-box; font-size: 12px; @@ -993,7 +989,13 @@ div#main_workflowbuilder .modal-body-section-left { align-items: flex-start; } - +.modal-fit { + width: fit-content; + height: fit-content; +} +.modal-scroll { + overflow: scroll; +} /* project-users modal styles */ #admins-and-workers-tables { align-items: flex-start; @@ -1010,6 +1012,10 @@ div#main_workflowbuilder } /* resource assignment modal */ +.modal-grid { + display: grid; + grid-template-columns: 8fr 1fr 8fr; +} #resource-assignment-actions-container { height: fit-content; padding: 5px; @@ -1019,6 +1025,36 @@ div#main_workflowbuilder max-width: 150px; } +/* tables in modal */ +.table-modal-container { + height: 45vh; +} +.table-modal { + overflow-y: scroll; +} +.table-modal>tbody { + overflow: scroll; +} +.table-modal>thead>tr>th, +.table-modal>tbody>tr>th { + max-width: 70px; + word-wrap: break-word; +} +.table-modal>thead>tr>td, +.table-modal>tbody>tr>td { + max-width: 70px; + word-wrap: break-word; + border-bottom: 1px solid rgb(215 215 215); +} +.table-modal>thead>tr>th:first-child, +.table-modal>tbody>tr>th:first-child, +.table-modal>thead>tr>td:first-child, +.table-modal>tbody>tr>td:first-child { + max-width: 180px; +} +.tbody-scroll { + overflow: scroll; +} /* job settings modal */ #workflowjob-settings:first-child { display: flex; diff --git a/rodan-client/code/templates/Views/Master/Main/InputPort/Collection/template-main_inputport_collection.html b/rodan-client/code/templates/Views/Master/Main/InputPort/Collection/template-main_inputport_collection.html index 3240cff77..e2c105aef 100644 --- a/rodan-client/code/templates/Views/Master/Main/InputPort/Collection/template-main_inputport_collection.html +++ b/rodan-client/code/templates/Views/Master/Main/InputPort/Collection/template-main_inputport_collection.html @@ -4,6 +4,7 @@Name | diff --git a/rodan-client/code/templates/Views/Master/Main/ResourceAssignment/template-main_resourceassignment.html b/rodan-client/code/templates/Views/Master/Main/ResourceAssignment/template-main_resourceassignment.html index bdb2a3390..7c2057efe 100644 --- a/rodan-client/code/templates/Views/Master/Main/ResourceAssignment/template-main_resourceassignment.html +++ b/rodan-client/code/templates/Views/Master/Main/ResourceAssignment/template-main_resourceassignment.html @@ -1,4 +1,4 @@ -Extension | Description | URL | +
---|