cassandra-web 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/app/public/css/style.css +46 -1
- data/app/public/html/execute.html +3 -3
- data/app/public/html/table.html +17 -2
- data/app/public/js/cassandra.js +33 -11
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5a9ea31371804a1da02f444e58199a4277521cd8469a0b0fe6798d61130c2c53
|
4
|
+
data.tar.gz: a416890e587a3172918b50729625a350765811f609294bd949cb7e1caa3ae29b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ceb11bb3210c602fd437b08686c7d34287626380cbe9593cde6f75ea447fc2d2bd5d46bb0cf5a0b064affdf452c299f434b1115c400349b22a6c0285a2d7030
|
7
|
+
data.tar.gz: f395e483169b29d5e04fa19a553f20fd0764d4a96af5faa2f21a1ba253ba43438865c2e8ff7a618b4fba5d051e716da8938b5c94b006fd55cdbf860655b02c7a
|
data/app/public/css/style.css
CHANGED
@@ -27,4 +27,49 @@ th.table-actions {
|
|
27
27
|
|
28
28
|
.modal-content .rows {
|
29
29
|
overflow: auto;
|
30
|
-
}
|
30
|
+
}
|
31
|
+
|
32
|
+
.execute-options {
|
33
|
+
display: block !important;
|
34
|
+
padding: 5px;
|
35
|
+
}
|
36
|
+
|
37
|
+
.row-limit {
|
38
|
+
margin: 15px 0 15px 0;
|
39
|
+
}
|
40
|
+
|
41
|
+
.row-limit > input {
|
42
|
+
text-align: right;
|
43
|
+
border: 1px solid #ddd;
|
44
|
+
}
|
45
|
+
|
46
|
+
.row-limit > label {
|
47
|
+
padding-right: 5px;
|
48
|
+
}
|
49
|
+
|
50
|
+
.loading-button {
|
51
|
+
margin-top: 15px;
|
52
|
+
}
|
53
|
+
|
54
|
+
.glyphicon-refresh-animate {
|
55
|
+
-animation: spin .7s infinite linear;
|
56
|
+
-webkit-animation: spin2 .7s infinite linear;
|
57
|
+
}
|
58
|
+
|
59
|
+
@-webkit-keyframes spin2 {
|
60
|
+
from {
|
61
|
+
-webkit-transform: rotate(0deg);
|
62
|
+
}
|
63
|
+
to {
|
64
|
+
-webkit-transform: rotate(360deg);
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
@keyframes spin {
|
69
|
+
from {
|
70
|
+
transform: scale(1) rotate(0deg);
|
71
|
+
}
|
72
|
+
to {
|
73
|
+
transform: scale(1) rotate(360deg);
|
74
|
+
}
|
75
|
+
}
|
@@ -95,16 +95,16 @@
|
|
95
95
|
</div>
|
96
96
|
<div class="modal-footer">
|
97
97
|
<form class="form-inline" role="form" ng-submit="execute()">
|
98
|
-
<div class="checkbox">
|
98
|
+
<div class="checkbox execute-options">
|
99
99
|
<label for="consistency">Consistency</label>
|
100
100
|
<select id="consistency" class="form-control" ng-model="options.consistency" ng-options="consistency for consistency in consistencies"></select>
|
101
101
|
</div>
|
102
|
-
<div class="checkbox">
|
102
|
+
<div class="checkbox execute-options">
|
103
103
|
<label for="trace">
|
104
104
|
<input id="trace" type="checkbox" ng-model="options.trace" /> <span ng-if="!options.trace">Enable</span><span ng-if="options.trace">Disable</span> Tracing
|
105
105
|
</label>
|
106
106
|
</div>
|
107
|
-
<div class="form-group">
|
107
|
+
<div class="form-group execute-options">
|
108
108
|
<button type="submit" class="btn btn-danger" ng-disabled="disabled">Execute</button>
|
109
109
|
<a class="text-danger" ng-show="error" tooltip="{{error.class}}: {{error.message}}" tooltip-trigger="mouseenter" tooltip-placement="left"><span class="glyphicon glyphicon-exclamation-sign"></span></a>
|
110
110
|
</div>
|
data/app/public/html/table.html
CHANGED
@@ -2,7 +2,23 @@
|
|
2
2
|
<tabset>
|
3
3
|
<tab>
|
4
4
|
<tab-heading>Rows <span class="badge">{{result.rows.length}}</span></tab-heading>
|
5
|
-
|
5
|
+
|
6
|
+
<div class="row-limit">
|
7
|
+
<label for="limit">Row Limit</label>
|
8
|
+
<input type="checkbox" title="Row Limit Checkbox" ng-model="rowLimit.enabled" value="rowLimit.enabled" />
|
9
|
+
<input id="limit" ng-model="rowLimit.value" ng-if="rowLimit.enabled" value="rowLimit.value" />
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div>
|
13
|
+
<button type="button" class="btn btn-danger" ng-click="executeStatement()">Fetch Rows</button>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<button class="btn btn-sm btn-warning loading-button" ng-show="loading">
|
17
|
+
<span class="glyphicon glyphicon-refresh glyphicon-refresh-animate"></span>
|
18
|
+
Loading...
|
19
|
+
</button>
|
20
|
+
|
21
|
+
<table class="table table-striped table-hover" ng-if="result || error">
|
6
22
|
<thead>
|
7
23
|
<tr>
|
8
24
|
<th ng-repeat="column in table.columns">{{column.name}}</th>
|
@@ -25,7 +41,6 @@
|
|
25
41
|
<tfoot>
|
26
42
|
<tr>
|
27
43
|
<td colspan="{{table.columns.length}}">
|
28
|
-
<span ng-show="!result && !error">Loading...</span>
|
29
44
|
<span ng-show="result">Total: {{result.rows.length}} results</span>
|
30
45
|
<dl ng-show="error">
|
31
46
|
<dt>{{error.class}}: {{error.message}}</dt>
|
data/app/public/js/cassandra.js
CHANGED
@@ -393,6 +393,13 @@ if (!Object.keys) {
|
|
393
393
|
'$location',
|
394
394
|
'escapeIdentifier',
|
395
395
|
function($scope, cluster, $routeParams, $location, escapeIdentifier) {
|
396
|
+
|
397
|
+
$scope.rowLimit = {
|
398
|
+
enabled: true,
|
399
|
+
value: 15
|
400
|
+
};
|
401
|
+
$scope.loading = false;
|
402
|
+
|
396
403
|
cluster.keyspaces.forEach(function(keyspace) {
|
397
404
|
if ($routeParams.keyspace == keyspace.name) {
|
398
405
|
$scope.keyspace = keyspace
|
@@ -433,19 +440,34 @@ if (!Object.keys) {
|
|
433
440
|
if (!exists) {
|
434
441
|
$location.path('/' + $scope.keyspace.name)
|
435
442
|
}
|
436
|
-
})
|
443
|
+
});
|
444
|
+
|
445
|
+
$scope.executeStatement = function() {
|
446
|
+
$scope.result = undefined;
|
447
|
+
$scope.loading = true;
|
448
|
+
|
449
|
+
var selectStatement = 'SELECT * FROM ' + escapeIdentifier($scope.keyspace.name) + '.' + escapeIdentifier($scope.table.name);
|
450
|
+
if ($scope.rowLimit.enabled) {
|
451
|
+
selectStatement = selectStatement + ' LIMIT ' + $scope.rowLimit.value;
|
452
|
+
}
|
453
|
+
|
454
|
+
cluster.execute(selectStatement)
|
455
|
+
.then(
|
456
|
+
function(result) {
|
457
|
+
$scope.result = result;
|
458
|
+
$scope.loading = false;
|
459
|
+
},
|
460
|
+
function(error) {
|
461
|
+
$scope.error = error;
|
462
|
+
$scope.loading = false;
|
463
|
+
}
|
464
|
+
);
|
465
|
+
};
|
466
|
+
|
467
|
+
$scope.executeStatement();
|
437
468
|
|
438
|
-
cluster.execute('SELECT * FROM ' + escapeIdentifier($scope.keyspace.name) + '.' + escapeIdentifier($scope.table.name))
|
439
|
-
.then(
|
440
|
-
function(result) {
|
441
|
-
$scope.result = result
|
442
|
-
},
|
443
|
-
function(error) {
|
444
|
-
$scope.error = error
|
445
|
-
}
|
446
|
-
)
|
447
469
|
}
|
448
|
-
])
|
470
|
+
]);
|
449
471
|
|
450
472
|
app.controller('actions', [
|
451
473
|
'$scope',
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassandra-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bulat Shakirzyanov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cassandra-driver
|
@@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
181
|
version: '0'
|
182
182
|
requirements: []
|
183
183
|
rubyforge_project:
|
184
|
-
rubygems_version: 2.
|
184
|
+
rubygems_version: 2.7.3
|
185
185
|
signing_key:
|
186
186
|
specification_version: 4
|
187
187
|
summary: A simple web ui for Apache Cassandra
|