-
Notifications
You must be signed in to change notification settings - Fork 12
/
CollectionHomeChildrenList.jsx
77 lines (68 loc) · 2.45 KB
/
CollectionHomeChildrenList.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import React from 'react';
import alertifyjs from 'alertifyjs';
import { map, includes, compact, isEmpty, get, merge } from 'lodash';
import Search from '../search/Search';
import VersionFilter from '../common/VersionFilter';
import APIService from '../../services/APIService';
class CollectionHomeChildrenList extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedVersion: this.props.currentVersion || 'HEAD'
}
}
getURL() {
const { selectedVersion } = this.state;
const { versionedObjectURL, resource, expansion } = this.props;
const expansionURL = get(expansion, 'url')
let url = get(expansion, 'url') || versionedObjectURL;
if(!expansionURL && selectedVersion && !includes(['HEAD', 'concepts', 'mappings', 'about', 'versions', 'references'], selectedVersion))
url += `${selectedVersion}/`
url += `${resource}/`
return url
}
onChange = version => {
this.setState({selectedVersion: version || 'HEAD'})
}
getExtraControls() {
const { selectedVersion } = this.state;
const { versions } = this.props;
return (
<VersionFilter
size='small'
onChange={this.onChange}
versions={map(versions, 'id')}
selected={selectedVersion}
/>
)
}
onReferencesDelete = expressions => {
const references = compact(expressions)
const url = this.props.versionedObjectURL + 'references/'
if(!isEmpty(references))
APIService.new().overrideURL(url).appendToUrl('?cascade=sourcemappings').delete({references: references}).then(response => {
if(get(response, 'status') === 204)
alertifyjs.success('Successfully deleted references', 1, () => window.location.reload())
else
alertifyjs.error('Something bad happened!')
})
}
render() {
const { selectedVersion } = this.state;
const { collection, resource, fixedFilters } = this.props;
const isVersionedObject = !selectedVersion || selectedVersion === 'HEAD'
return (
<Search
{...this.props}
nested
baseURL={this.getURL()}
fixedFilters={merge({isTable: true, limit: 25}, (fixedFilters || {}))}
extraControls={this.getExtraControls()}
searchInputPlaceholder={`Search ${collection.name} ${resource}...`}
onReferencesDelete={isVersionedObject && this.onReferencesDelete}
isVersionedObject={isVersionedObject}
/>
)
}
}
export default CollectionHomeChildrenList;