conjur-asset-ui 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/.jshintrc +41 -0
- data/Gemfile +3 -1
- data/README.md +34 -0
- data/Rakefile +69 -1
- data/bower.json +93 -0
- data/conjur-asset-ui.gemspec +1 -1
- data/features/navigation_bar.feature +31 -0
- data/features/step_definitions/custom_step.rb +32 -0
- data/features/support/env.rb +38 -0
- data/features/support/hooks.rb +30 -0
- data/features/support/world.rb +17 -0
- data/gulpfile.js +140 -0
- data/lib/conjur/command/ui.rb +1 -1
- data/lib/conjur/webserver/server.rb +14 -9
- data/lib/conjur-asset-ui-version.rb +1 -1
- data/package.json +47 -0
- data/preprocessor.js +7 -0
- data/public/_client_libs.html +2 -15
- data/public/css/styles.less +170 -4
- data/public/index.html.erb +5 -7
- data/public/js/init.js +183 -97
- data/public/js/lib/sorted-set.no-require.js +3 -28
- data/public/js/models/groupRecord.js +12 -11
- data/public/js/models/hostRecord.js +6 -7
- data/public/js/models/layerRecord.js +12 -11
- data/public/js/models/namespace.js +2 -0
- data/public/js/models/policyList.js +3 -1
- data/public/js/models/policyRecord.js +6 -7
- data/public/js/models/record.js +24 -23
- data/public/js/models/resourceList.js +28 -10
- data/public/js/models/userList.js +7 -2
- data/public/js/models/userRecord.js +7 -8
- data/public/js/models/variableList.js +18 -7
- data/public/js/models/variableRecord.js +13 -12
- data/public/js/routers.js +72 -26
- data/public/js/views/annotations.js +38 -27
- data/public/js/views/audit.js +23 -17
- data/public/js/views/chart.js +471 -0
- data/public/js/views/dashboard.js +94 -58
- data/public/js/views/generic.js +16 -9
- data/public/js/views/group.js +94 -55
- data/public/js/views/groups.js +3 -7
- data/public/js/views/host.js +75 -44
- data/public/js/views/hosts.js +2 -6
- data/public/js/views/layer.js +127 -82
- data/public/js/views/layers.js +2 -6
- data/public/js/views/mixins/search.js +12 -5
- data/public/js/views/mixins/tabs.js +95 -55
- data/public/js/views/navSearch.js +16 -5
- data/public/js/views/owned.js +14 -8
- data/public/js/views/permissions.js +244 -178
- data/public/js/views/policies.js +2 -4
- data/public/js/views/policy.js +65 -38
- data/public/js/views/resource.js +49 -34
- data/public/js/views/role.js +52 -37
- data/public/js/views/searchResults.js +205 -138
- data/public/js/views/time.js +26 -13
- data/public/js/views/user.js +178 -55
- data/public/js/views/users.js +2 -7
- data/public/js/views/variable.js +226 -45
- data/public/js/views/variables.js +4 -8
- metadata +20 -20
- data/public/_client_code.html +0 -42
- data/public/css/bootstrap.css +0 -7
- data/public/fonts/glyphicons-halflings-regular.eot +0 -0
- data/public/fonts/glyphicons-halflings-regular.svg +0 -229
- data/public/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/public/fonts/glyphicons-halflings-regular.woff +0 -0
- data/public/js/lib/JSXTransformer.js +0 -10862
- data/public/js/lib/async.js +0 -958
- data/public/js/lib/backbone.js +0 -2
- data/public/js/lib/bootstrap.js +0 -6
- data/public/js/lib/less.js +0 -16
- data/public/js/lib/moment.js +0 -7768
- data/public/js/lib/react-bootstrap.js +0 -5346
- data/public/js/lib/react-bootstrap.min.js +0 -4
- data/public/js/lib/underscore-min.js +0 -6
- data/public/js/lib/underscore.string.min.js +0 -1
- data/public/js/main.js +0 -57
data/public/js/views/user.js
CHANGED
@@ -1,20 +1,133 @@
|
|
1
1
|
/** @jsx React.DOM */
|
2
|
+
/* global conjur, _, React, ReactBootstrap */
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
4
|
+
(function(conjur, _, React, ReactBootstrap) {
|
5
|
+
'use strict';
|
6
|
+
|
7
|
+
var TabbedArea = ReactBootstrap.TabbedArea,
|
8
|
+
TabPane = ReactBootstrap.TabPane,
|
9
|
+
Tab = conjur.views.mixins.Tab,
|
10
|
+
AuditBox = window.AuditBox,
|
11
|
+
RoleLink = conjur.views.RoleLink;
|
12
|
+
|
13
|
+
var PubkeyItem = React.createClass({
|
14
|
+
render: function() {
|
15
|
+
return (
|
16
|
+
<div className="b-pubkey">
|
17
|
+
<div className="b-pubkey__logo">
|
18
|
+
<span className="badge">{this.props.pubkey[0]}</span>
|
19
|
+
</div>
|
20
|
+
<ul className="b-pubkey__list list-unstyled">
|
21
|
+
<li className="b-pubkey__name">
|
22
|
+
{this.props.pubkey[2]}
|
23
|
+
</li>
|
24
|
+
<li className="b-pubkey__fingerprint">
|
25
|
+
{/* TODO: key fingerprint */}
|
26
|
+
</li>
|
27
|
+
<li className="b-pubkey__info">
|
28
|
+
{/* TODO: When added, when last time used */}
|
29
|
+
</li>
|
30
|
+
</ul>
|
31
|
+
<div className="b-pubkeys__actions">
|
32
|
+
{/* TODO: Action buttons */}
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
);
|
36
|
+
}
|
37
|
+
});
|
38
|
+
|
39
|
+
var PubkeysList = React.createClass({
|
40
|
+
render: function() {
|
41
|
+
var login = this.props.login;
|
42
|
+
|
43
|
+
var pubkeysList = this.props.pubkeys.map(function(k, idx, coll) {
|
44
|
+
var tokens = k.split(' ');
|
45
|
+
|
46
|
+
console.log(arguments);
|
47
|
+
|
48
|
+
var className = 'b-pubkeys__item list-group-item list-group-item-noborder';
|
49
|
+
|
50
|
+
if (idx + 1 !== coll.length) {
|
51
|
+
className = className + ' b-pubkeys__item--headline';
|
52
|
+
}
|
53
|
+
|
54
|
+
return (
|
55
|
+
<li className={className}>
|
56
|
+
<PubkeyItem pubkey={tokens} />
|
57
|
+
</li>
|
58
|
+
);
|
59
|
+
});
|
60
|
+
|
61
|
+
return (
|
62
|
+
<div className="b-pubkeys">
|
63
|
+
<PubkeysHelp>
|
64
|
+
This is list of SSH public keys associated with user {login}.
|
65
|
+
</PubkeysHelp>
|
66
|
+
<ul className="b-pubkeys__list">
|
67
|
+
{pubkeysList}
|
68
|
+
</ul>
|
69
|
+
</div>
|
70
|
+
);
|
71
|
+
}
|
72
|
+
});
|
73
|
+
|
74
|
+
var PubkeysHelp = React.createClass({
|
75
|
+
render: function() {
|
76
|
+
var ret;
|
77
|
+
|
78
|
+
if (React.Children.count(this.props.children) > 0) {
|
79
|
+
ret = (
|
80
|
+
<p className="b-pubkeys__help">
|
81
|
+
{this.props.children}
|
82
|
+
</p>
|
83
|
+
);
|
84
|
+
} else {
|
85
|
+
var login = this.props.login;
|
86
|
+
|
87
|
+
ret = (
|
88
|
+
<p className="b-pubkeys__help">
|
89
|
+
User {login} have not any pubkey. Use follow command to create one:
|
90
|
+
<pre>$ conjur pubkeys add {login} @id_{login}.pub</pre>
|
91
|
+
</p>
|
92
|
+
);
|
93
|
+
}
|
94
|
+
|
95
|
+
return ret;
|
96
|
+
}
|
97
|
+
});
|
98
|
+
|
99
|
+
var PubkeysTabContent = React.createClass({
|
100
|
+
render: function() {
|
101
|
+
var body;
|
102
|
+
|
103
|
+
if (this.props.pubkeys.length > 0) {
|
104
|
+
body = (
|
105
|
+
<PubkeysList login={this.props.login} pubkeys={this.props.pubkeys} />
|
106
|
+
);
|
107
|
+
} else {
|
108
|
+
body = (
|
109
|
+
<div className="b-pubkeys">
|
110
|
+
<PubkeysHelp login={this.props.login} />
|
111
|
+
</div>
|
112
|
+
);
|
113
|
+
}
|
114
|
+
|
115
|
+
return body;
|
116
|
+
}
|
117
|
+
});
|
118
|
+
|
119
|
+
this.User = React.createClass({
|
120
|
+
mixins: [Tab],
|
121
|
+
|
122
|
+
render: function() {
|
123
|
+
var user = this.props.data.user;
|
124
|
+
|
125
|
+
// TODO: refactor
|
126
|
+
// TODO: show public keys
|
127
|
+
// TODO: actions menu (e.g. 'upload public key', 'add annotation')
|
128
|
+
// TODO: memberships panel
|
129
|
+
var overviewTab = (
|
130
|
+
<TabPane key="overview" tab="Overview">
|
18
131
|
<dl className="dl-horizontal">
|
19
132
|
<dt>Created by</dt>
|
20
133
|
<dd><RoleLink id={user.userid}/></dd>
|
@@ -23,46 +136,56 @@ var User = React.createClass({
|
|
23
136
|
<dt>Uidnumber</dt>
|
24
137
|
<dd>{user.uidnumber}</dd>
|
25
138
|
</dl>
|
26
|
-
|
139
|
+
</TabPane>
|
140
|
+
);
|
27
141
|
|
28
|
-
|
29
|
-
|
142
|
+
var auditTab = (
|
143
|
+
<TabPane key="audit" tab="Recent Activity">
|
30
144
|
<div className="audit auditUser">
|
31
|
-
<AuditBox roles={[user.roleid]}
|
145
|
+
<AuditBox roles={[user.roleid]}
|
146
|
+
resources={[user.resource_identifier]}
|
147
|
+
tabview={true} />
|
32
148
|
</div>
|
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
|
-
|
149
|
+
</TabPane>
|
150
|
+
);
|
151
|
+
|
152
|
+
var pubkeysTab = (
|
153
|
+
<TabPane key="pubkeys"
|
154
|
+
tab={conjur.utils.getTabname('Public Keys', this.props.data.pubkeys)}>
|
155
|
+
<PubkeysTabContent login={user.login} pubkeys={this.props.data.pubkeys} />
|
156
|
+
</TabPane>
|
157
|
+
);
|
158
|
+
|
159
|
+
var permissionsTab = this.permissionsTab(user.roleid);
|
160
|
+
var membershipsTab = this.membershipsTab(user.roleid);
|
161
|
+
var annotationsTab = this.annotationsTab();
|
162
|
+
var ownedTab = this.ownedTab();
|
163
|
+
|
164
|
+
var tabs = _.compact([
|
165
|
+
overviewTab,
|
166
|
+
ownedTab,
|
167
|
+
membershipsTab,
|
168
|
+
permissionsTab,
|
169
|
+
annotationsTab,
|
170
|
+
pubkeysTab,
|
171
|
+
auditTab
|
172
|
+
]);
|
173
|
+
|
174
|
+
return (
|
175
|
+
<div className="user">
|
176
|
+
<h2>User {user.login}</h2>
|
177
|
+
<TabbedArea defaultActiveKey="overview">
|
178
|
+
{tabs}
|
179
|
+
</TabbedArea>
|
180
|
+
</div>
|
181
|
+
);
|
182
|
+
}
|
183
|
+
});
|
184
|
+
|
185
|
+
}).bind(conjur.views)
|
186
|
+
(
|
187
|
+
conjur,
|
188
|
+
_,
|
189
|
+
React,
|
190
|
+
ReactBootstrap
|
191
|
+
);
|
data/public/js/views/users.js
CHANGED
@@ -1,18 +1,13 @@
|
|
1
1
|
/** @jsx React.DOM */
|
2
|
+
/* global conjur, React */
|
2
3
|
|
3
4
|
(function(conjur, React) {
|
4
5
|
'use strict';
|
5
6
|
|
6
7
|
var GenericList = conjur.views.GenericList;
|
7
8
|
|
8
|
-
|
9
|
-
// no more external manipulation of state
|
10
|
-
//getInitialState: function() {
|
11
|
-
// return { currentNamespace: "", members: [] };
|
12
|
-
//},
|
9
|
+
this.UserBox = React.createClass({
|
13
10
|
render: function() {
|
14
|
-
// <NamespaceFilter currentNamespace={this.props.currentNamespace}
|
15
|
-
// namespaces={this.props.data.namespaces} />
|
16
11
|
return (
|
17
12
|
<div className="userBox">
|
18
13
|
<div className="userList">
|
data/public/js/views/variable.js
CHANGED
@@ -1,70 +1,251 @@
|
|
1
1
|
/** @jsx React.DOM */
|
2
|
+
/* global conjur, React, ReactBootstrap, _ */
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
render: function() {
|
6
|
-
var updaters = this.props.data.updaters.map(function (member) {
|
7
|
-
return <li className="list-group-item list-group-item-noborder">
|
8
|
-
<RoleLink id={member} />
|
9
|
-
</li>
|
10
|
-
}.bind(this));
|
11
|
-
var fetchers = this.props.data.fetchers.map(function (member) {
|
12
|
-
return <li className="list-group-item list-group-item-noborder">
|
13
|
-
<RoleLink id={member} />
|
14
|
-
</li>
|
15
|
-
}.bind(this));
|
16
|
-
var resourceId = [ conjur.app.configuration.account, 'variable', this.props.data.variable.id ].join(':');
|
4
|
+
(function(conjur, React, ReactBootstrap, _) {
|
5
|
+
'use strict';
|
17
6
|
|
7
|
+
var TabbedArea = ReactBootstrap.TabbedArea,
|
8
|
+
TabPane = ReactBootstrap.TabPane,
|
9
|
+
Tab = conjur.views.mixins.Tab,
|
10
|
+
RoleLink = conjur.views.RoleLink,
|
11
|
+
AuditBox = window.AuditBox;
|
18
12
|
|
13
|
+
var RevealerBox = React.createClass({
|
14
|
+
getInitialState: function() {
|
15
|
+
return {revealed: false};
|
16
|
+
},
|
19
17
|
|
18
|
+
handleClick: function() {
|
19
|
+
this.setState({revealed: !this.state.revealed});
|
20
|
+
},
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
render: function() {
|
23
|
+
var valToShow = this.state.revealed ? 'SECRET HERE!' : 'Show Value';
|
24
|
+
|
25
|
+
return (
|
26
|
+
<div className="revealer well well-sm" onClick={this.handleClick}>
|
27
|
+
{valToShow}
|
28
|
+
</div>
|
29
|
+
);
|
30
|
+
}
|
31
|
+
});
|
32
|
+
|
33
|
+
var Breadcrumb = React.createClass({
|
34
|
+
render: function() {
|
35
|
+
return (
|
36
|
+
<div className="b-breadcrumb">
|
37
|
+
|
38
|
+
</div>
|
39
|
+
);
|
40
|
+
}
|
41
|
+
});
|
42
|
+
|
43
|
+
var Breadcrumbs = React.createClass({
|
44
|
+
render: function() {
|
45
|
+
return (
|
46
|
+
<div className="b-breadcrumbs">
|
47
|
+
<Breadcrumb />
|
48
|
+
</div>
|
49
|
+
);
|
50
|
+
}
|
51
|
+
});
|
52
|
+
|
53
|
+
var Activity = React.createClass({
|
54
|
+
getInitialState: function() {
|
55
|
+
var data = this.getData();
|
56
|
+
|
57
|
+
return {
|
58
|
+
data: data,
|
59
|
+
options: {
|
60
|
+
legend: {
|
61
|
+
close: 'Closed',
|
62
|
+
sread: 'Suc. read',
|
63
|
+
supdate: 'Suc. update',
|
64
|
+
fread: 'Failed read',
|
65
|
+
fupdate: 'Failed update'
|
66
|
+
},
|
67
|
+
axis: {
|
68
|
+
y: {
|
69
|
+
label: 'Value'
|
70
|
+
}
|
71
|
+
}
|
72
|
+
}
|
73
|
+
};
|
74
|
+
},
|
75
|
+
|
76
|
+
getData: function() {
|
77
|
+
return [];
|
78
|
+
},
|
79
|
+
|
80
|
+
render: function() {
|
81
|
+
return (
|
82
|
+
<div className="b-variable-activity">
|
83
|
+
<h2>Activity</h2>
|
84
|
+
<div className="b-variable-activity__graph">
|
85
|
+
<Chart options={this.state.options}
|
86
|
+
data={this.state.data} />
|
87
|
+
</div>
|
88
|
+
</div>
|
89
|
+
);
|
90
|
+
}
|
91
|
+
});
|
92
|
+
|
93
|
+
var Updaters = React.createClass({
|
94
|
+
render: function() {
|
95
|
+
return (
|
96
|
+
<div className="b-variable-updaters">
|
97
|
+
<h2>Updaters</h2>
|
98
|
+
</div>
|
99
|
+
);
|
100
|
+
}
|
101
|
+
});
|
102
|
+
|
103
|
+
var Fetchers = React.createClass({
|
104
|
+
render: function() {
|
105
|
+
return (
|
106
|
+
<div className="b-variable-fetchers">
|
107
|
+
<h2>Fetchers</h2>
|
108
|
+
</div>
|
109
|
+
);
|
110
|
+
}
|
111
|
+
});
|
112
|
+
|
113
|
+
var Updates = React.createClass({
|
114
|
+
render: function() {
|
115
|
+
return (
|
116
|
+
<div className="b-variable-updates">
|
117
|
+
<h2>Updates</h2>
|
118
|
+
</div>
|
119
|
+
);
|
120
|
+
}
|
121
|
+
});
|
122
|
+
|
123
|
+
var Warnings = React.createClass({
|
124
|
+
render: function() {
|
125
|
+
return (
|
126
|
+
<div className="b-variable-warnings">
|
127
|
+
<h2>Warnings</h2>
|
128
|
+
</div>
|
129
|
+
);
|
130
|
+
}
|
131
|
+
});
|
132
|
+
|
133
|
+
this.Variable = React.createClass({
|
134
|
+
mixins: [Tab],
|
135
|
+
|
136
|
+
render: function() {
|
137
|
+
var updaters = this.props.data.updaters.map(function(member) {
|
138
|
+
return (
|
139
|
+
<li className="list-group-item list-group-item-noborder">
|
140
|
+
<RoleLink id={member} />
|
141
|
+
</li>
|
142
|
+
);
|
143
|
+
});
|
144
|
+
|
145
|
+
var fetchers = this.props.data.fetchers.map(function(member) {
|
146
|
+
return (
|
147
|
+
<li className="list-group-item list-group-item-noborder">
|
148
|
+
<RoleLink id={member} />
|
149
|
+
</li>
|
150
|
+
);
|
151
|
+
});
|
152
|
+
|
153
|
+
var resourceId = [
|
154
|
+
conjur.app.configuration.account,
|
155
|
+
'variable',
|
156
|
+
this.props.data.variable.id
|
157
|
+
].join(':');
|
158
|
+
|
159
|
+
var overviewTab = (
|
160
|
+
<TabPane key="overview" tab="Overview">
|
161
|
+
<dl className="dl-horizontal pull-left">
|
24
162
|
<dt>Owner</dt>
|
25
|
-
<dd><RoleLink id={this.props.data.variable.ownerid}/></dd>
|
163
|
+
<dd><RoleLink id={this.props.data.variable.ownerid} /></dd>
|
164
|
+
|
26
165
|
<dt>Created by</dt>
|
27
|
-
<dd><RoleLink id={this.props.data.variable.userid}/></dd>
|
166
|
+
<dd><RoleLink id={this.props.data.variable.userid} /></dd>
|
167
|
+
|
28
168
|
<dt>MIME type</dt>
|
29
169
|
<dd>{this.props.data.variable.mime_type}</dd>
|
170
|
+
|
30
171
|
<dt>Kind</dt>
|
31
172
|
<dd>{this.props.data.variable.kind}</dd>
|
173
|
+
|
32
174
|
<dt>Versions</dt>
|
33
175
|
<dd>{this.props.data.variable.version_count}</dd>
|
34
176
|
</dl>
|
35
|
-
|
36
|
-
|
37
|
-
|
177
|
+
<div className="pull-right">
|
178
|
+
<RevealerBox variable={this.props.data.variable} />
|
179
|
+
</div>
|
180
|
+
</TabPane>
|
181
|
+
);
|
182
|
+
|
183
|
+
var updatersTab = (
|
184
|
+
<TabPane key="updaters" tab={conjur.utils.getTabname('Updaters', updaters)}>
|
38
185
|
<ul className="list-group">
|
39
186
|
{updaters}
|
40
187
|
</ul>
|
41
|
-
|
42
|
-
|
43
|
-
|
188
|
+
</TabPane>
|
189
|
+
);
|
190
|
+
|
191
|
+
var fetchersTab = (
|
192
|
+
<TabPane key="fetchers" tab={conjur.utils.getTabname('Fetchers', fetchers)}>
|
44
193
|
<ul className="list-group">
|
45
194
|
{fetchers}
|
46
195
|
</ul>
|
47
|
-
|
48
|
-
|
196
|
+
</TabPane>
|
197
|
+
);
|
49
198
|
|
50
|
-
|
51
|
-
|
199
|
+
var annotationsTab = this.annotationsTab();
|
200
|
+
|
201
|
+
var auditTab = (
|
202
|
+
<TabPane key="audit" tab="Recent Activity">
|
52
203
|
<div className="audit auditHost">
|
53
204
|
<AuditBox resources={[resourceId]} tabview={true}/>
|
54
205
|
</div>
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
206
|
+
</TabPane>
|
207
|
+
);
|
208
|
+
|
209
|
+
var tabs = _.compact([
|
210
|
+
overviewTab,
|
211
|
+
updatersTab,
|
212
|
+
fetchersTab,
|
213
|
+
annotationsTab,
|
214
|
+
auditTab
|
215
|
+
]);
|
216
|
+
|
217
|
+
// <Breadcrumbs />
|
218
|
+
// <hr />
|
219
|
+
// <Activity />
|
220
|
+
// <hr />
|
221
|
+
// <Updaters />
|
222
|
+
// <hr />
|
223
|
+
// <Fetchers />
|
224
|
+
// <hr />
|
225
|
+
// <Updates />
|
226
|
+
// <hr />
|
227
|
+
// <Warnings />
|
228
|
+
// <hr />
|
229
|
+
// <br />
|
230
|
+
// <br />
|
231
|
+
// <br />
|
232
|
+
// <br />
|
233
|
+
|
234
|
+
return (
|
235
|
+
<div className="variable">
|
236
|
+
<h2>Variable {this.props.data.variable.id}</h2>
|
237
|
+
<TabbedArea defaultActiveKey="overview">
|
238
|
+
{tabs}
|
239
|
+
</TabbedArea>
|
240
|
+
</div>
|
241
|
+
);
|
242
|
+
}
|
243
|
+
});
|
244
|
+
|
245
|
+
}).bind(conjur.views)
|
246
|
+
(
|
247
|
+
conjur,
|
248
|
+
React,
|
249
|
+
ReactBootstrap,
|
250
|
+
_
|
251
|
+
);
|
@@ -1,20 +1,16 @@
|
|
1
1
|
/** @jsx React.DOM */
|
2
|
+
/* global conjur, React */
|
2
3
|
|
3
4
|
(function(conjur, React) {
|
4
5
|
'use strict';
|
5
6
|
|
6
7
|
var GenericList = conjur.views.GenericList;
|
7
8
|
|
8
|
-
|
9
|
-
// getInitialState: function() {
|
10
|
-
// return { currentNamespace: "", members: [] };
|
11
|
-
// },
|
9
|
+
this.VariableBox = React.createClass({
|
12
10
|
render: function() {
|
13
|
-
// <NamespaceFilter currentNamespace={this.props.currentNamespace}
|
14
|
-
// namespaces={this.props.data.namespaces} />
|
15
11
|
return (
|
16
|
-
<div className="
|
17
|
-
<div className="
|
12
|
+
<div className="variableBox">
|
13
|
+
<div className="variableList">
|
18
14
|
<h2>Variables</h2>
|
19
15
|
<GenericList data={{kind: 'variables', members: this.props.data.members}} />
|
20
16
|
</div>
|