Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
92250b6
First step, remove mixin dependency and temporarily handle in default…
guerler Jul 24, 2023
eae411a
Remove app model directly access details
guerler Jul 25, 2023
f9d71cd
Move uploader props into caller
guerler Jul 25, 2023
37c0285
Strip upload wrapper nesting for default uploader
guerler Jul 25, 2023
515e34e
Move jquery usage in parent to legacy modules
guerler Jul 25, 2023
742aca6
Remove wrapper style options
guerler Jul 25, 2023
ffba961
Strip unused upload queue wrappers
guerler Jul 26, 2023
8ef28c7
Remove legacy lazyloader from default uploader, will be re-implemente…
guerler Jul 26, 2023
a10a5ba
Transition to v-for loop instead of manual dom-manipulation
guerler Jul 26, 2023
3a8ad11
Add row wrapper component
guerler Jul 26, 2023
9db0010
Move backbone dom template to new default row component
guerler Jul 26, 2023
c572ec3
Fix row status initialization
guerler Jul 26, 2023
308f793
Fix rows dom identifier
guerler Jul 26, 2023
13ea71f
Restore select fields for genome and extension selection
guerler Jul 26, 2023
876d2ff
Assign model values to default row
guerler Jul 26, 2023
3f841f6
Use d-flex instead of table tag to build upload list
guerler Jul 26, 2023
4ae5e1a
Restore shared styles, move customization to new row component
guerler Jul 26, 2023
505c125
Handle text area change, modifies prop for now, will be revised
guerler Jul 26, 2023
08edf17
Reduce nesting, remove unnecessary tags
guerler Jul 26, 2023
f0de83f
Add upload percentage handling
guerler Jul 26, 2023
a064343
Add extension details popover on hover
guerler Jul 26, 2023
f047706
Use bright background for extension details, fix sizing
guerler Jul 26, 2023
6bb9c3d
Fix select field width, further consolidate nesting
guerler Jul 26, 2023
db23e6f
Use fontawesome icons for uploader row
guerler Jul 26, 2023
f49271a
Reduce extra styles for now
guerler Jul 26, 2023
893c684
Prep status display
guerler Jul 26, 2023
4a1a9ae
Augment popper, fix arrow handling, allow variants
guerler Jul 27, 2023
93a93c0
Prep upload settings popover
guerler Jul 27, 2023
abbe259
Add upload settings, prep variant to align with existing appearance
guerler Jul 27, 2023
b552f6e
Remove unused props for extension details popover
guerler Jul 27, 2023
6da604e
Add popper variant with title
guerler Jul 27, 2023
4d95f65
Add click handler to close popover
guerler Jul 27, 2023
e4131f7
Fix upload row settings alignment
guerler Jul 27, 2023
0bc1671
Separate out extension details component
guerler Jul 27, 2023
0a7cf0e
Separate out extension detail props
guerler Jul 27, 2023
14f7c50
Add default upload model
guerler Jul 27, 2023
cb42330
Switch error parsing to list
guerler Jul 27, 2023
b76a468
Switch completion handler to model list
guerler Jul 27, 2023
74e8073
Transition from collection to regular list
guerler Jul 27, 2023
173d6f4
Add row remove handler
guerler Jul 27, 2023
5e9c1f6
Add event handler to avoid prop mutation
guerler Jul 27, 2023
c92df74
Specify status and file mode as props
guerler Jul 27, 2023
b0f9705
Add settings handler
guerler Jul 28, 2023
8923783
Add settings option component
guerler Jul 28, 2023
894afe0
Add upload genome and extension component wrapper for re-usability
guerler Jul 28, 2023
726dd46
Remove unused wrappers from row component
guerler Jul 28, 2023
a82c27e
Consolidate props, sort alphabetically, remove extensions vs listExte…
guerler Jul 28, 2023
f12e58e
Separate select2 wrappers, prep for replacement with vue-multiselect
guerler Jul 28, 2023
17e389f
Remove label props, handle in template, use v-localize instead of loc…
guerler Jul 28, 2023
ba48c6f
Switch from select2 to vue-multiselect, still requires styles
guerler Jul 28, 2023
bf439ef
Apply initial styles to vue-multiselect field in uploader
guerler Jul 28, 2023
a9c73ec
Adjust, identify sizing knobs, intending to move towards regular size…
guerler Jul 28, 2023
dba8328
Remove unused watcher
guerler Jul 28, 2023
3d63da5
Collect upload items in dict instead of array
guerler Jul 30, 2023
ea59143
Set popper reference default to span, add extension info to global ty…
guerler Jul 30, 2023
95326c3
Fix row removal handler
guerler Jul 30, 2023
ed78e39
Use string instead of number of upload queue keys
guerler Jul 31, 2023
3b16e1a
Remove backbone collection from default uploader component
guerler Jul 31, 2023
dfb4164
Remove upload type extension module
guerler Jul 31, 2023
1ef2293
Remove upload url helper
guerler Jul 31, 2023
564d128
Replace manual refresh calls with computed values
guerler Jul 31, 2023
dc606a0
Remove unused imports, legacy model and legacy history refresh caller
guerler Jul 31, 2023
9b5d8ea
Remove default-row legacy module
guerler Jul 31, 2023
4fbef5a
Use d-flex to layout upload modal buttons, remove ftp popover, use re…
guerler Aug 1, 2023
febae8e
Remove unused dom references from default uploader
guerler Aug 1, 2023
2b04382
Strip upload table reference handler
guerler Aug 1, 2023
7167599
Start separating out the upload box from the upload queue
guerler Aug 1, 2023
581b68a
Add drop event handler to upload box component
guerler Aug 2, 2023
e807534
Add handling for browsers file dialog
guerler Aug 2, 2023
7ea2cf3
Restore browser support verification helper
guerler Aug 2, 2023
107b108
Switch default uploader to composition api
guerler Aug 2, 2023
ab628a6
Move upload data formatting to upload queue handler
guerler Aug 2, 2023
94df91e
Move ftp packaging and upload data caller to upload queue, order defa…
guerler Aug 3, 2023
79c4aac
Add collection uploader component, accept duplication for now, will b…
guerler Aug 3, 2023
ef96f95
Decouple rules builder from legacy uploadbox mixin
guerler Aug 3, 2023
7e3a116
Decouple composite uploader from uploadbox mixin
guerler Aug 3, 2023
33c5583
Remove uploadbox mixin from code base
guerler Aug 3, 2023
7597505
Remove legacy backbone modules directory, move remaining code section…
guerler Aug 3, 2023
c2ade9b
Decouple composite uploader from upload wrapper
guerler Aug 3, 2023
954df02
Decouple rule uploader from upload wrapper, remove upload wrapper com…
guerler Aug 3, 2023
1dd6075
Adjust uploadbox utility, handle incoming outputs in default uploader…
guerler Aug 3, 2023
27e5fc7
Draft composite component with composition api
guerler Aug 3, 2023
7cb0061
Build out composite upload functions
guerler Aug 4, 2023
a74cca6
Add composite row component
guerler Aug 4, 2023
330baeb
Add settings handling to composite uploader, fix naming in default up…
guerler Aug 4, 2023
d706ae2
Add composite uploader dropdown
guerler Aug 4, 2023
8309e82
Optionally disable genome and extension selection in default row comp…
guerler Aug 4, 2023
86b5504
Add browser upload dialog handler to composite uploader
guerler Aug 5, 2023
3ec1e61
Fix composite uploader reset handling
guerler Aug 5, 2023
0762115
Fixes for composite uploader interface
guerler Aug 5, 2023
14425c4
Add status handling to upload row components
guerler Aug 5, 2023
2e9992f
Disable settings unless during initialization phase, refine styles, p…
guerler Aug 5, 2023
1981b3b
Remove unused legacy styles
guerler Aug 5, 2023
f7ddd3e
Remove legacy modules and styles, move shared upload payload helper t…
guerler Aug 5, 2023
204548f
Fix paste upload for composite files
guerler Aug 6, 2023
4b32ea6
Add remote file support to composite uploader
guerler Aug 6, 2023
49807c8
Add file name to composite uploader, fix browser uploader dialog
guerler Aug 6, 2023
0d563a5
Restore dropping files into analysis view
guerler Aug 6, 2023
ddb96a0
Consolidate regular and collection uploader
guerler Aug 6, 2023
c65bba6
Use fontawesome icons for footer buttons
guerler Aug 6, 2023
7cd1522
Consolidate uploader styles
guerler Aug 7, 2023
5dc8f73
Disable text-content field after upload, adjust composite source sele…
guerler Aug 7, 2023
f6046d9
Add drag-and-drop file handling to composite upload rows
guerler Aug 7, 2023
fdd6107
Adjust multiselect field appearance
guerler Aug 7, 2023
16b1a65
Restore limiting the number of upload rows
guerler Aug 7, 2023
6e43978
Move rules builder interface into separate file
guerler Aug 7, 2023
b9de255
Revise and convert rule builder uploader interface to composition api
guerler Aug 7, 2023
e72d157
Consolidate text-message in uploader
guerler Aug 7, 2023
9836227
Decompose details prop object into invidual props, emit events instea…
guerler Aug 8, 2023
25ba7c5
Remove details props from model content wrapper
guerler Aug 8, 2023
67852c2
Convert upload modal content wrapper to composition api
guerler Aug 8, 2023
1d2250f
Adjust upload modal wrapper, remove unused props
guerler Aug 8, 2023
96f4beb
Refine rules uploader text area behavior
guerler Aug 8, 2023
7960481
Add lock icon to rule builder to indicate disabled text area
guerler Aug 8, 2023
0c4e193
Switch file upload model attributes to camel case, remove unused entries
guerler Aug 8, 2023
a6cc3a1
Apply strict prop requirements
guerler Aug 8, 2023
3856b54
Ensure parsing of percentage to components as rounded integer
guerler Aug 8, 2023
d1a63ae
Fix running state handling, consider multiple prop when dropping data…
guerler Aug 8, 2023
eafee68
Use dbkey instead of genome in uploader components
guerler Aug 8, 2023
58abdb5
Fix composite dbkey upload, verify config availability in masthead an…
guerler Aug 8, 2023
6ca1efb
Allow restoring composite uploader status
guerler Aug 8, 2023
46fabc6
Resize multiselect vue by input element size?
guerler Aug 8, 2023
6a11b25
Adjust jest test cases
guerler Aug 9, 2023
929b00c
Separate out upload utilities, adjust tests
guerler Aug 9, 2023
391e249
Restore upload file input element, required for selenium tests
guerler Aug 9, 2023
15c2c3f
Fix selenium tests, and tours
guerler Aug 10, 2023
abc3149
Fix ftp batch submission handler, adjust selenium tests
guerler Aug 10, 2023
340acd4
Remove unused test helper
guerler Aug 10, 2023
f8ab2cd
Fix composite optional file uploader, adjust tests
guerler Aug 11, 2023
ecf862e
Enforce unique ids for multiselect fields, fix naming and tests
guerler Aug 11, 2023
7f656d8
Fix transiently failing library toast message test
guerler Aug 13, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions client/src/components/ActivityBar/ActivityBar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import FlexPanel from "@/components/Panels/FlexPanel.vue";
import ToolBox from "@/components/Panels/ProviderAwareToolBox.vue";
import WorkflowBox from "@/components/Panels/WorkflowBox.vue";

const { config } = useConfig();
const { config, isConfigLoaded } = useConfig();

const route = useRoute();
const userStore = useUserStore();
Expand Down Expand Up @@ -193,7 +193,7 @@ function toggleContextMenu(evt: MouseEvent) {
</b-nav>
<b-nav vertical class="flex-nowrap p-1">
<NotificationItem
v-if="!isAnonymous && config.enable_notification_system"
v-if="!isAnonymous && isConfigLoaded && config.enable_notification_system"
id="activity-notifications"
icon="bell"
:is-active="isActiveRoute('/user/notifications')"
Expand Down
8 changes: 7 additions & 1 deletion client/src/components/Common/ContextMenu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,13 @@ watch(

<template>
<div v-if="visible">
<Popper placement="right" class="context-menu" :style="placeContextMenu" :force-show="true" :dark-mode="false">
<Popper
placement="right"
class="context-menu"
:style="placeContextMenu"
:force-show="true"
:arrow="false"
mode="light">
<div class="context-menu-slot">
<slot />
</div>
Expand Down
4 changes: 4 additions & 0 deletions client/src/components/Form/Elements/FormSelect.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { computed, type ComputedRef, onMounted, watch } from "vue";
import Multiselect from "vue-multiselect";

import { useMultiselect } from "@/composables/useMultiselect";
import { uid } from "@/utils/utils";

type SelectValue = string | number | null;
const { ariaExpanded, onOpen, onClose } = useMultiselect();
Expand All @@ -14,12 +15,14 @@ interface SelectOption {

const props = withDefaults(
defineProps<{
id?: string;
multiple?: boolean;
optional?: boolean;
options: Array<[string, SelectValue]>;
value?: Array<SelectValue> | string | number;
}>(),
{
id: `form-select-${uid()}`,
multiple: false,
optional: false,
value: null,
Expand Down Expand Up @@ -143,6 +146,7 @@ onMounted(() => {
<template>
<Multiselect
v-if="hasOptions"
:id="id"
v-model="currentValue"
:allow-empty="true"
:class="['form-select', cls]"
Expand Down
4 changes: 2 additions & 2 deletions client/src/components/Masthead/Masthead.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { withPrefix } from "utils/redirect";
import { onBeforeMount, onMounted, reactive, ref, watch } from "vue";
import { useRoute } from "vue-router/composables";

import { useConfig } from "@/composables/config";
import { isConfigLoaded, useConfig } from "@/composables/config";
import { useUserStore } from "@/stores/userStore";

import { loadWebhookMenuItems } from "./_webhooks";
Expand Down Expand Up @@ -139,7 +139,7 @@ onMounted(() => {
@open-url="emit('open-url', $event)" />
<MastheadItem v-if="windowTab" :tab="windowTab" :toggle="windowToggle" @click="onWindowToggle" />
<BNavItem
v-if="!isAnonymous && config.enable_notification_system && !showActivityBar"
v-if="!isAnonymous && isConfigLoaded && config.enable_notification_system && !showActivityBar"
id="notifications-bell">
<NotificationsBell tooltip-placement="bottom" />
</BNavItem>
Expand Down
124 changes: 97 additions & 27 deletions client/src/components/Popper/Popper.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<template>
<div>
<span>
<component :is="referenceIs" v-bind="referenceProps" ref="reference">
<slot name="reference" />
</component>
Expand All @@ -9,21 +9,32 @@
v-bind="popperProps"
ref="popper"
class="popper-element mt-1"
:class="{ 'popper-element-dark': darkMode, 'popper-element-light': !darkMode }">
<div v-if="darkMode" class="popper-arrow" data-popper-arrow />
:class="`popper-element-${mode}`">
<div v-if="arrow" class="popper-arrow" data-popper-arrow />
<div v-if="title" class="popper-header px-2 py-1 rounded-top d-flex justify-content-between">
<span class="px-1">{{ title }}</span>
<span class="popper-close align-items-center cursor-pointer" @click="visible = false">
<FontAwesomeIcon icon="fa-times-circle" />
</span>
</div>
<slot />
</component>
</div>
</span>
</template>

<script lang="ts">
import { library } from "@fortawesome/fontawesome-svg-core";
import { faTimesCircle } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import type { PropType, UnwrapRef } from "vue";
import { defineComponent, ref, toRef, watch } from "vue";

import { usePopperjs } from "./usePopper";

library.add(faTimesCircle);

export default defineComponent({
components: {},
components: { FontAwesomeIcon },

props: {
// hook options
Expand All @@ -47,19 +58,27 @@ export default defineComponent({
type: Object,
},
referenceIs: {
default: "div",
default: "span",
type: String,
},
referenceProps: {
type: Object,
},
arrow: {
type: Boolean,
default: true,
},
disabled: {
type: Boolean,
default: false,
},
darkMode: {
type: Boolean,
default: true,
mode: {
type: String,
default: "dark",
},
title: {
type: String,
default: null,
},
},

Expand Down Expand Up @@ -119,52 +138,103 @@ export default defineComponent({
<style scoped lang="scss">
@import "theme/blue.scss";

@function popper-border($border-color) {
@return 1px solid $border-color;
}

.popper-element {
z-index: 9999;
border-radius: $border-radius-base;
border-radius: $border-radius-large;
}

/** Available variants */
.popper-element-dark {
background: $brand-dark;
border: popper-border($brand-dark);
color: $brand-light;
max-width: 12rem;
opacity: 0.95;
.popper-arrow:before {
background: $brand-dark;
border: popper-border($brand-dark);
}
}

.popper-element-light {
background: $white;
border: popper-border($border-color);
color: $brand-dark;
border: $border-default;
box-shadow: 0 $border-radius-base $border-radius-base $brand-dark;
.popper-arrow:before {
background: $white;
border: popper-border($border-color);
}
}

.popper-arrow,
.popper-arrow:before {
height: 10px;
width: 10px;
position: absolute;
z-index: -1;
.popper-element-primary-title {
background: $white;
border: popper-border($border-color);
color: $brand-dark;
.popper-header {
background: $brand-primary;
color: $white;
}
.popper-arrow:before {
background: $brand-primary;
border: popper-border($border-color);
}
}

/** Arrow positioning and border handling */
.popper-arrow,
.popper-arrow:before {
background: $brand-dark;
height: 9px;
width: 9px;
position: absolute;
content: "";
transform: rotate(45deg);
}

.popper-element[data-popper-placement^="top"] > .popper-arrow {
bottom: -5px;
.popper-element[data-popper-placement^="top"] {
> .popper-arrow {
bottom: 0px;
}
> .popper-arrow:before {
bottom: -5px;
border-top: none;
border-left: none;
}
}

.popper-element[data-popper-placement^="bottom"] > .popper-arrow {
top: -5px;
.popper-element[data-popper-placement^="right"] {
> .popper-arrow {
left: 0px;
}
> .popper-arrow:before {
left: -5px;
border-top: none;
border-right: none;
}
}

.popper-element[data-popper-placement^="left"] > .popper-arrow {
right: -5px;
.popper-element[data-popper-placement^="bottom"] {
> .popper-arrow {
top: 0px;
}
> .popper-arrow:before {
top: -5px;
border-bottom: none;
border-right: none;
}
}

.popper-element[data-popper-placement^="right"] > .popper-arrow {
left: -5px;
.popper-element[data-popper-placement^="left"] {
> .popper-arrow {
right: 0px;
}
> .popper-arrow:before {
right: -5px;
border-bottom: none;
border-left: none;
}
}
</style>
55 changes: 0 additions & 55 deletions client/src/components/Upload/Collection.test.js

This file was deleted.

Loading