Skip to content

Commit 19ead44

Browse files
committed
attempt #1 to create provider for collection attributes
1 parent 6fd60f2 commit 19ead44

6 files changed

Lines changed: 55 additions & 32 deletions

File tree

client/src/components/Collections/common/CollectionEditView.vue

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
<template>
22
<div>
3+
<dataset-collection-attributes-provider :id="collection_id" v-slot="{ item, loading }">
4+
<div v-if="!loading">
5+
{{ loading }}
6+
{{ item }}
7+
</div>
8+
</dataset-collection-attributes-provider>
39
<h4>{{ l("Edit Collection Attributes") }}</h4>
410
<b-alert show variant="info" dismissible>
511
{{ l("This will create a new collection in your History. Your quota usage will not increase. ") }}
@@ -54,10 +60,6 @@
5460
</template> --> </multiselect
5561
><i>original input: {{ datatypeFromElements }}</i>
5662
</b-tab>
57-
<b-tab>
58-
<template v-slot:title> <font-awesome-icon icon="user" /> &nbsp;{{ l("Permissions") }}</template>
59-
<p>WIP Permissions</p>
60-
</b-tab>
6163
</b-tabs>
6264
</div>
6365
</template>
@@ -79,6 +81,7 @@ import { faBars } from "@fortawesome/free-solid-svg-icons";
7981
import { faUser } from "@fortawesome/free-solid-svg-icons";
8082
import { faCog } from "@fortawesome/free-solid-svg-icons";
8183
import store from "../../../store/index";
84+
import { DatasetCollectionAttributesProvider } from "../../WorkflowInvocationState/providers";
8285
8386
//import VueObserveVisibility from "vue-observe-visibility";
8487
@@ -96,8 +99,9 @@ export default {
9699
// this.apiCallToGetAttributes();
97100
this.getDatatypesAndGenomes();
98101
this.getCollectionDataAndAttributes();
102+
console.log("item is", this.item);
99103
},
100-
components: { Multiselect, DatabaseEditTab, FontAwesomeIcon },
104+
components: { Multiselect, DatabaseEditTab, FontAwesomeIcon, DatasetCollectionAttributesProvider },
101105
data: function () {
102106
return {
103107
collection_data: {}, //all data from the response
@@ -118,21 +122,6 @@ export default {
118122
},
119123
},
120124
computed: {
121-
collectionName: {
122-
get() {
123-
return this.collection_data.name;
124-
},
125-
//TODO : #6966
126-
// set(collection_name) {
127-
// this.collection_data.name = collection_name;
128-
// },
129-
},
130-
collectionType: {
131-
// no setter; for display only
132-
get() {
133-
return this.collection_data.collection_type;
134-
},
135-
},
136125
extension: {
137126
get() {
138127
return this.selectedExtension;
@@ -163,8 +152,6 @@ export default {
163152
this.genomes = genomes;
164153
},
165154
getCollectionDataAndAttributes: async function () {
166-
this.apiCallToGetData();
167-
168155
let attributesGet = store.getters.getCollectionAttributes(this.collection_id);
169156
if (attributesGet == null) {
170157
await store.dispatch("fetchCollectionAttributes", this.collection_id);
@@ -174,15 +161,6 @@ export default {
174161
this.getDatabaseKeyFromElements();
175162
this.getExtensionFromElements();
176163
},
177-
apiCallToGetData: function () {
178-
axios
179-
.get(prependPath("/api/dataset_collections/" + this.collection_id + "?instance_type=history"))
180-
.then((response) => {
181-
this.collection_data = response.data;
182-
});
183-
184-
//TODO error handling
185-
},
186164
getDatabaseKeyFromElements: function () {
187165
this.databaseKeyFromElements = this.attributes_data.dbkey;
188166
},
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { default as RxProviderMixin } from "./rxProviders";
2+
import { datasetCollectionAttributesMonitor } from "./monitors";
3+
4+
export default {
5+
mixins: [RxProviderMixin],
6+
methods: {
7+
buildMonitor() {
8+
return datasetCollectionAttributesMonitor();
9+
},
10+
},
11+
};

client/src/components/WorkflowInvocationState/providers/fetch.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,10 @@ export const fetchInvocationStepById = () => {
2323
mergeMap((url) => ajax.getJSON(url))
2424
);
2525
};
26+
27+
export const fetchDatasetCollectionAttributesById = () => {
28+
return pipe(
29+
map((id) => prependPath(`/api/dataset_collections/${id}/attributes`)),
30+
mergeMap((url) => ajax.getJSON(url))
31+
);
32+
};

client/src/components/WorkflowInvocationState/providers/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ export {
88
// test provider
99
export { default as DatasetProvider } from "./DatasetProvider";
1010
export { default as DatasetCollectionProvider } from "./DatasetCollectionProvider";
11+
export { default as DatasetCollectionAttributesProvider } from "./DatasetCollectionAttributesProvider";
1112
export { default as InvocationStepProvider } from "./InvocationStepProvider";

client/src/components/WorkflowInvocationState/providers/monitors.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { of, race, pipe, concat, iif } from "rxjs";
22
import { filter, mergeMap, switchMap, delay, share, repeat, take, takeWhile } from "rxjs/operators";
33
import { cacheContent, monitorContentQuery } from "components/History/caching";
44
import { singleUpdateResult } from "components/History/caching/db/monitorQuery";
5-
import { fetchDatasetById, fetchDatasetCollectionById, fetchInvocationStepById } from "./fetch";
5+
import { fetchDatasetById, fetchDatasetCollectionById, fetchInvocationStepById, fetchDatasetCollectionAttributesById } from "./fetch";
66
import { loadHistoryContents } from "components/History/caching";
77

88
// prettier-ignore
@@ -21,6 +21,11 @@ export const datasetCollectionMonitor = (cfg = {}) => {
2121
return pipe(switchMap((id) => createContentMonitor(id, "dataset_collection", spinUpDelay)));
2222
};
2323

24+
export const datasetCollectionAttributesMonitor = (cfg = {}) => {
25+
const { spinUpDelay } = cfg;
26+
return pipe(switchMap((id) => createContentMonitor(id, "dataset_collection_attributes", spinUpDelay)));
27+
};
28+
2429
const createContentMonitor = (id, contentType, spinUpDelay = 250) => {
2530
let fetcher;
2631
switch (contentType) {
@@ -30,6 +35,9 @@ const createContentMonitor = (id, contentType, spinUpDelay = 250) => {
3035
case "dataset_collection":
3136
fetcher = fetchDatasetCollectionById;
3237
break;
38+
case "dataset_collection_attributes":
39+
fetcher = fetchDatasetCollectionAttributesById;
40+
break;
3341
default:
3442
console.error(`Can't create monitor for ${contentType}-${id}`);
3543
}

client/src/components/WorkflowInvocationState/providers/storeProviders.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,24 @@ export const DatasetCollectionProvider = {
8080
},
8181
};
8282

83+
export const DatasetCollectionAttributesProvider = {
84+
mixins: [SimpleProviderMixin, StoreProviderMixin],
85+
methods: {
86+
...mapCacheActions("datasetCollectionAttributes", ["fetchDatasetCollectionAttributes"]),
87+
async load() {
88+
this.loading = true;
89+
this.item = await this.fetchDatasetCollectionAttributes(this.id);
90+
this.loading = false;
91+
},
92+
},
93+
computed: {
94+
...mapGetters("datasetCollectionAttributes", ["getDatasetCollectionAttributesById"]),
95+
storeItem() {
96+
return this.getDatasetCollectionAttributesById(this.id);
97+
},
98+
},
99+
};
100+
83101
export const DatasetCollectionContentProvider = {
84102
mixins: [SimpleProviderMixin],
85103
computed: {

0 commit comments

Comments
 (0)