rhoconnect 3.1.2 → 3.2.0.beta1
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.
- data/CHANGELOG.md +14 -2
- data/CREDITS +151 -10
- data/Gemfile +16 -5
- data/Gemfile.lock +58 -23
- data/Rakefile +70 -50
- data/bench/bench_runner.rb +2 -2
- data/bench/benchapp/Gemfile +6 -0
- data/bench/benchapp/Gemfile.lock +5 -0
- data/bench/benchapp/config.ru +2 -0
- data/bench/lib/bench/cli.rb +2 -0
- data/bench/lib/bench/distr_runner.rb +3 -2
- data/bench/lib/bench/runner.rb +1 -1
- data/bench/lib/bench.rb +10 -1
- data/bench/run_bench.sh +1 -1
- data/bench/scripts/test_query_script.rb +2 -1
- data/bench/spec/bench_spec_helper.rb +1 -0
- data/bin/rhoconnect +9 -27
- data/bin/rhoconnect-benchmark +10 -1
- data/commands/commands/dtach_commands/dtach_about.rb +6 -0
- data/commands/commands/dtach_commands/dtach_install.rb +30 -0
- data/commands/commands/redis_commands/redis_about.rb +6 -0
- data/commands/commands/redis_commands/redis_attach.rb +6 -0
- data/commands/commands/redis_commands/redis_download.rb +33 -0
- data/commands/commands/redis_commands/redis_install.rb +26 -0
- data/commands/commands/redis_commands/redis_make.rb +9 -0
- data/commands/commands/redis_commands/redis_restart.rb +7 -0
- data/commands/commands/redis_commands/redis_runner.rb +67 -0
- data/commands/commands/redis_commands/redis_start.rb +6 -0
- data/commands/commands/redis_commands/redis_startbg.rb +6 -0
- data/commands/commands/redis_commands/redis_stop.rb +6 -0
- data/commands/commands/rhoconnect/attach.rb +7 -0
- data/commands/commands/rhoconnect/clean_start.rb +9 -0
- data/commands/commands/rhoconnect/config.rb +15 -0
- data/commands/commands/rhoconnect/console.rb +15 -0
- data/commands/commands/rhoconnect/console_helper.rb +3 -0
- data/commands/commands/rhoconnect/create_user.rb +18 -0
- data/commands/commands/rhoconnect/delete_device.rb +9 -0
- data/commands/commands/rhoconnect/delete_user.rb +8 -0
- data/commands/commands/rhoconnect/flushdb.rb +14 -0
- data/commands/commands/rhoconnect/get_token.rb +25 -0
- data/commands/commands/rhoconnect/reset.rb +16 -0
- data/commands/commands/rhoconnect/reset_refresh.rb +11 -0
- data/commands/commands/rhoconnect/restart.rb +7 -0
- data/commands/commands/rhoconnect/secret.rb +11 -0
- data/commands/commands/rhoconnect/set_admin_password.rb +26 -0
- data/commands/commands/rhoconnect/spec.rb +15 -0
- data/commands/commands/rhoconnect/start.rb +18 -0
- data/commands/commands/rhoconnect/startbg.rb +34 -0
- data/commands/commands/rhoconnect/startdebug.rb +35 -0
- data/commands/commands/rhoconnect/stop.rb +11 -0
- data/commands/commands/rhoconnect/war.rb +32 -0
- data/commands/commands/rhoconnect/web.rb +7 -0
- data/commands/execute.rb +35 -0
- data/commands/generators/app.rb +6 -0
- data/commands/generators/source.rb +6 -0
- data/commands/utilities/dtach_installed.rb +10 -0
- data/doc/benchmarks-running.txt +5 -0
- data/doc/command-line.txt +216 -27
- data/doc/heroku-addon.txt +1 -1
- data/doc/preparing-production.txt +20 -1
- data/doc/public/cli.txt +191 -0
- data/doc/push-backend-setup.txt +148 -0
- data/doc/push-client-setup.txt +61 -0
- data/doc/push-server-setup.txt +91 -0
- data/doc/push.txt +8 -137
- data/doc/rest-api.txt +96 -0
- data/doc/settings.txt +1 -1
- data/doc/supported-platforms.txt +2 -1
- data/doc/tutorial.txt +6 -4
- data/examples/simple/Gemfile +39 -0
- data/examples/simple/Rakefile +7 -12
- data/examples/simple/config.ru +16 -31
- data/examples/simple/settings/settings.yml +5 -4
- data/examples/simple/sources/product.rb +51 -0
- data/generators/templates/application/Gemfile +7 -0
- data/generators/templates/application/Rakefile +5 -18
- data/generators/templates/application/config.ru +11 -19
- data/install.sh +24 -49
- data/installer/unix-like/create_texts.rb +71 -123
- data/installer/unix-like/post_install.sh +3 -0
- data/installer/unix-like/post_uninstall.sh +2 -0
- data/installer/unix-like/pre_install.sh +5 -3
- data/installer/unix-like/pre_uninstall.sh +14 -6
- data/installer/unix-like/rho_connect_install_checkers.rb +1 -1
- data/installer/unix-like/rho_connect_install_constants.rb +6 -10
- data/installer/unix-like/rho_connect_install_debian.rb +2 -2
- data/installer/unix-like/rho_connect_install_dnd.rb +2 -5
- data/installer/unix-like/rho_connect_install_installers.rb +15 -23
- data/installer/unix-like/rho_connect_install_yum.rb +2 -2
- data/installer/utils/constants.rb +4 -4
- data/installer/utils/create_sha1.rb +1 -1
- data/installer/utils/nix_install_test.rb +32 -31
- data/installer/utils/nix_installation.rake +1 -1
- data/installer/utils/package_upload/repos.rake +34 -30
- data/installer/utils/package_upload/s3_upload.rb +3 -3
- data/lib/rhoconnect/api/source/fast_delete.rb +10 -0
- data/lib/rhoconnect/api/source/fast_insert.rb +10 -0
- data/lib/rhoconnect/api/source/fast_update.rb +10 -0
- data/lib/rhoconnect/api/source/get_source_params.rb +1 -1
- data/lib/rhoconnect/api/source/list_sources.rb +2 -2
- data/lib/rhoconnect/api/source/save_adapter.rb +1 -1
- data/lib/rhoconnect/api/source/update_source_params.rb +6 -0
- data/lib/rhoconnect/async.rb +82 -0
- data/lib/rhoconnect/bulk_data/bulk_data.rb +5 -1
- data/lib/rhoconnect/client_sync.rb +18 -3
- data/lib/rhoconnect/console/rhoconnect_api.rb +2 -2
- data/lib/rhoconnect/console/server.rb +5 -32
- data/lib/rhoconnect/console.rb +2 -2
- data/lib/rhoconnect/graph_helper.rb +225 -0
- data/lib/rhoconnect/jobs/bulk_data_job.rb +24 -2
- data/lib/rhoconnect/server.rb +31 -11
- data/lib/rhoconnect/source.rb +10 -5
- data/lib/rhoconnect/source_sync.rb +32 -2
- data/lib/rhoconnect/tasks.rb +19 -108
- data/lib/rhoconnect/test_methods.rb +20 -0
- data/lib/rhoconnect/utilities.rb +118 -0
- data/lib/rhoconnect/version.rb +1 -1
- data/lib/rhoconnect/web-console/controllers/admins.js +245 -0
- data/lib/rhoconnect/web-console/models/adapter.js +53 -0
- data/lib/rhoconnect/web-console/models/client.js +105 -0
- data/lib/rhoconnect/web-console/models/doc.js +113 -0
- data/lib/rhoconnect/web-console/models/session.js +40 -0
- data/lib/rhoconnect/web-console/models/source.js +115 -0
- data/lib/rhoconnect/web-console/models/stats.js +84 -0
- data/lib/rhoconnect/web-console/models/user.js +111 -0
- data/lib/rhoconnect/web-console/public/backbone.js +1432 -0
- data/lib/rhoconnect/web-console/public/bootstrap.css +3990 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/excanvas.min.js +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.barRenderer.min.js +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.canvasAxisLabelRenderer.js +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.canvasAxisTickRenderer.js +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.canvasTextRenderer.js +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.categoryAxisRenderer.min.js +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.cursor.js +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.dateAxisRenderer.js +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.dateAxisRenderer.min.js +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jqplot.pointLabels.min.js +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jquery-1.4.2.min.js +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jquery.jqplot.min.css +0 -0
- data/lib/rhoconnect/{console/app → web-console}/public/jqplot/jquery.jqplot.min.js +0 -0
- data/lib/rhoconnect/web-console/public/jquery-1.7.1.min.js +154 -0
- data/lib/rhoconnect/web-console/public/rhoconnect-web.js +15 -0
- data/lib/rhoconnect/web-console/public/underscore.js +999 -0
- data/lib/rhoconnect/web-console/server.rb +55 -0
- data/lib/rhoconnect/web-console/templates/index.erb +90 -0
- data/lib/rhoconnect/web-console/templates/jqplot.erb +60 -0
- data/lib/rhoconnect/web-console/views/api_token.js +16 -0
- data/lib/rhoconnect/web-console/views/doc.js +63 -0
- data/lib/rhoconnect/web-console/views/edit_user.js +43 -0
- data/lib/rhoconnect/web-console/views/home.js +56 -0
- data/lib/rhoconnect/web-console/views/index.js +63 -0
- data/lib/rhoconnect/web-console/views/new_ping.js +58 -0
- data/lib/rhoconnect/web-console/views/new_user.js +29 -0
- data/lib/rhoconnect/web-console/views/server_doc.js +103 -0
- data/lib/rhoconnect/web-console/views/set_adapter.js +38 -0
- data/lib/rhoconnect/web-console/views/settings.js +53 -0
- data/lib/rhoconnect/web-console/views/show_device.js +56 -0
- data/lib/rhoconnect/web-console/views/show_user.js +38 -0
- data/lib/rhoconnect/web-console/views/source_docs.js +30 -0
- data/lib/rhoconnect/web-console/views/stats.js +69 -0
- data/lib/rhoconnect/web-console/views/users.js +20 -0
- data/lib/rhoconnect.rb +2 -1
- data/rhoconnect.gemspec +3 -1
- data/spec/api/application/rhoconnect_api_spec.rb +3 -5
- data/spec/api/source/fast_delete_spec.rb +27 -0
- data/spec/api/source/fast_insert_spec.rb +28 -0
- data/spec/api/source/fast_update_spec.rb +51 -0
- data/spec/api/source/get_source_params_spec.rb +1 -0
- data/spec/api/source/update_source_params_spec.rb +24 -0
- data/spec/async_spec.rb +19 -0
- data/spec/client_sync_spec.rb +19 -2
- data/spec/javascripts/PlayerSpec.js +58 -0
- data/spec/javascripts/admins_routes_spec.js +117 -0
- data/spec/javascripts/admins_spec.js +27 -0
- data/spec/javascripts/doc_view_spec.js +37 -0
- data/spec/javascripts/edit_user_view_spec.js +44 -0
- data/spec/javascripts/helpers/SpecHelper.js +9 -0
- data/spec/javascripts/helpers/jasmine-jquery.js +305 -0
- data/spec/javascripts/helpers/jasmine-sinon.js +43 -0
- data/spec/javascripts/helpers/sinon-1.3.2.js +3551 -0
- data/spec/javascripts/home_view_spec.js +39 -0
- data/spec/javascripts/index_view_spec.js +42 -0
- data/spec/javascripts/new_ping_view_spec.js +48 -0
- data/spec/javascripts/new_user_view_spec.js +42 -0
- data/spec/javascripts/server_doc_view_spec.js +39 -0
- data/spec/javascripts/set_adapter_view_spec.js +32 -0
- data/spec/javascripts/show_device_view_spec.js +41 -0
- data/spec/javascripts/show_user_view_spec.js +46 -0
- data/spec/javascripts/source_docs_view_spec.js +36 -0
- data/spec/javascripts/support/jasmine.yml +79 -0
- data/spec/javascripts/support/jasmine_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/javascripts/users_view_spec.js +35 -0
- data/spec/jobs/bulk_data_job_spec.rb +10 -2
- data/spec/perf/bulk_data_perf_spec.rb +1 -0
- data/spec/server/server_spec.rb +3 -1
- data/spec/source_sync_spec.rb +14 -1
- data/spec/spec_helper.rb +51 -0
- data/spec/store_spec.rb +6 -0
- data/spec/test_methods_spec.rb +11 -0
- data/tasks/redis.rake +3 -1
- metadata +172 -64
- data/doc/contributing.txt +0 -60
- data/lib/rhoconnect/console/app/helpers/auth_helper.rb +0 -22
- data/lib/rhoconnect/console/app/helpers/extensions.rb +0 -19
- data/lib/rhoconnect/console/app/helpers/helpers.rb +0 -57
- data/lib/rhoconnect/console/app/public/ThickBox.css +0 -649
- data/lib/rhoconnect/console/app/public/home.css +0 -431
- data/lib/rhoconnect/console/app/public/images/foot_logo_rhoconnect.png +0 -0
- data/lib/rhoconnect/console/app/public/images/header_halo.jpg +0 -0
- data/lib/rhoconnect/console/app/public/images/land_separator.gif +0 -0
- data/lib/rhoconnect/console/app/public/images/landing_header.jpg +0 -0
- data/lib/rhoconnect/console/app/public/images/logo_rhoconnect.png +0 -0
- data/lib/rhoconnect/console/app/public/images/tabs_separator.png +0 -0
- data/lib/rhoconnect/console/app/public/main.css +0 -7
- data/lib/rhoconnect/console/app/public/reset.css +0 -76
- data/lib/rhoconnect/console/app/public/style.css +0 -2201
- data/lib/rhoconnect/console/app/public/text.txt +0 -0
- data/lib/rhoconnect/console/app/routes/adapter.rb +0 -28
- data/lib/rhoconnect/console/app/routes/auth.rb +0 -29
- data/lib/rhoconnect/console/app/routes/client.rb +0 -31
- data/lib/rhoconnect/console/app/routes/docs.rb +0 -145
- data/lib/rhoconnect/console/app/routes/heroku.rb +0 -19
- data/lib/rhoconnect/console/app/routes/home.rb +0 -63
- data/lib/rhoconnect/console/app/routes/timing.rb +0 -242
- data/lib/rhoconnect/console/app/routes/user.rb +0 -122
- data/lib/rhoconnect/console/app/views/adapter.erb +0 -16
- data/lib/rhoconnect/console/app/views/client.erb +0 -30
- data/lib/rhoconnect/console/app/views/content.erb +0 -14
- data/lib/rhoconnect/console/app/views/doc.erb +0 -8
- data/lib/rhoconnect/console/app/views/docdata.erb +0 -28
- data/lib/rhoconnect/console/app/views/docs.erb +0 -30
- data/lib/rhoconnect/console/app/views/edituser.erb +0 -13
- data/lib/rhoconnect/console/app/views/headermenu.erb +0 -40
- data/lib/rhoconnect/console/app/views/home.erb +0 -24
- data/lib/rhoconnect/console/app/views/index.erb +0 -58
- data/lib/rhoconnect/console/app/views/jqplot.erb +0 -52
- data/lib/rhoconnect/console/app/views/layout.erb +0 -153
- data/lib/rhoconnect/console/app/views/login.erb +0 -26
- data/lib/rhoconnect/console/app/views/newuser.erb +0 -17
- data/lib/rhoconnect/console/app/views/ping.erb +0 -40
- data/lib/rhoconnect/console/app/views/result.erb +0 -11
- data/lib/rhoconnect/console/app/views/rightboxlinks.erb +0 -15
- data/lib/rhoconnect/console/app/views/select_doc.erb +0 -17
- data/lib/rhoconnect/console/app/views/upload_doc.erb +0 -23
- data/lib/rhoconnect/console/app/views/user.erb +0 -29
- data/lib/rhoconnect/console/app/views/users.erb +0 -19
- data/lib/rhoconnect/server/views/index.erb +0 -13
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'sinatra/base'
|
2
|
+
require 'erb'
|
3
|
+
require 'json'
|
4
|
+
require 'rhoconnect/graph_helper'
|
5
|
+
|
6
|
+
module RhoconnectConsole
|
7
|
+
class << self
|
8
|
+
ROOT_DIR = File.dirname(File.expand_path(__FILE__)) unless defined? ROOT_DIR
|
9
|
+
def root_path(*args)
|
10
|
+
File.join(ROOT_DIR, *args)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Server < Sinatra::Base
|
15
|
+
set :views, RhoconnectConsole.root_path('templates')
|
16
|
+
set :public_folder, RhoconnectConsole.root_path
|
17
|
+
set :static, true
|
18
|
+
use Rack::Session::Cookie
|
19
|
+
HEROKU_NAV = ENV['INSTANCE_ID'] ? RestClient.get('http://nav.heroku.com/v1/providers/header') : nil
|
20
|
+
before do
|
21
|
+
headers['Expires'] = 'Sun, 19 Nov 1978 05:00:00 GMT'
|
22
|
+
headers['Cache-Control'] = 'no-store, no-cache, must-revalidate'
|
23
|
+
headers['Pragma'] = 'no-cache'
|
24
|
+
end
|
25
|
+
include GraphHelper
|
26
|
+
|
27
|
+
get '/' do
|
28
|
+
#if heroku instance single sign will already have logged in a have token in session
|
29
|
+
@token = session[:token] if ENV['INSTANCE_ID']
|
30
|
+
@heroku = RestClient.get('http://nav.heroku.com/v1/providers/header') if @token
|
31
|
+
@version = Rhoconnect::VERSION
|
32
|
+
@domain = ENV['RHODES_URL'] || request.host_with_port
|
33
|
+
@domain += "/application" if @domain
|
34
|
+
erb :index
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
post "/get_user_graph" do
|
39
|
+
count_graph('timing/usercount', "User Count", "Users", "users")
|
40
|
+
end
|
41
|
+
|
42
|
+
post '/source_timing' do
|
43
|
+
source_timing(params)
|
44
|
+
end
|
45
|
+
|
46
|
+
post '/http_timing' do
|
47
|
+
http_timing(params)
|
48
|
+
end
|
49
|
+
|
50
|
+
post '/device_count' do
|
51
|
+
count_graph('timing/devicecount', "Device Count", "Devices", "clients")
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<head>
|
3
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
4
|
+
<title>RhoConnect Console</title>
|
5
|
+
|
6
|
+
<link rel="stylesheet" href='public/bootstrap.css' type="text/css" media="screen" />
|
7
|
+
<script language="javascript" type="text/javascript" src='public/jquery-1.7.1.min.js'></script>
|
8
|
+
<script language="javascript" type="text/javascript" src='public/underscore.js'></script>
|
9
|
+
<script language="javascript" type="text/javascript" src='public/backbone.js'></script>
|
10
|
+
<script language="javascript" type="text/javascript" src='public/rhoconnect-web.js'></script>
|
11
|
+
<script language="javascript" type="text/javascript" src='controllers/admins.js'></script>
|
12
|
+
<script language="javascript" type="text/javascript" src='views/index.js'></script>
|
13
|
+
<script language="javascript" type="text/javascript" src='views/home.js'></script>
|
14
|
+
<script language="javascript" type="text/javascript" src='views/source_docs.js'></script>
|
15
|
+
<script language="javascript" type="text/javascript" src='views/doc.js'></script>
|
16
|
+
<script language="javascript" type="text/javascript" src='views/set_adapter.js'></script>
|
17
|
+
<script language="javascript" type="text/javascript" src='views/server_doc.js'></script>
|
18
|
+
<script language="javascript" type="text/javascript" src='views/users.js'></script>
|
19
|
+
<script language="javascript" type="text/javascript" src='views/new_user.js'></script>
|
20
|
+
<script language="javascript" type="text/javascript" src='views/show_user.js'></script>
|
21
|
+
<script language="javascript" type="text/javascript" src='views/show_device.js'></script>
|
22
|
+
<script language="javascript" type="text/javascript" src='views/new_ping.js'></script>
|
23
|
+
<script language="javascript" type="text/javascript" src='views/edit_user.js'></script>
|
24
|
+
<script language="javascript" type="text/javascript" src='views/settings.js'></script>
|
25
|
+
<script language="javascript" type="text/javascript" src='views/api_token.js'></script>
|
26
|
+
<script language="javascript" type="text/javascript" src='views/stats.js'></script>
|
27
|
+
<script language="javascript" type="text/javascript" src='models/session.js'></script>
|
28
|
+
<script language="javascript" type="text/javascript" src='models/source.js'></script>
|
29
|
+
<script language="javascript" type="text/javascript" src='models/doc.js'></script>
|
30
|
+
<script language="javascript" type="text/javascript" src='models/adapter.js'></script>
|
31
|
+
<script language="javascript" type="text/javascript" src='models/user.js'></script>
|
32
|
+
<script language="javascript" type="text/javascript" src='models/client.js'></script>
|
33
|
+
<script language="javascript" type="text/javascript" src='models/stats.js'></script>
|
34
|
+
</head>
|
35
|
+
<body>
|
36
|
+
<input id='token' type='hidden' value='<%=@token%>'>
|
37
|
+
<input id='domain' type='hidden' value='<%=@domain%>'>
|
38
|
+
<div id='heroku_nav'><%=@heroku%></div>
|
39
|
+
<div id='nav_menu' class="navbar navbar-fixed-top" style="<%@heroku ? 'display:none' : 'display:block'%>">
|
40
|
+
<div class='navbar-inner'>
|
41
|
+
<div class='container'>
|
42
|
+
<div class="brand">
|
43
|
+
RhoConnect
|
44
|
+
</div>
|
45
|
+
<ul class='nav pull-right'>
|
46
|
+
<li class=""><a href="/resque/" >Resque</a></li>
|
47
|
+
<li class="active"><a href="#" >Console</a></li>
|
48
|
+
<li><a href='http://docs.rhomobile.com/rhoconnect/introduction' target='_blank'>Docs</a></li>
|
49
|
+
<li><a id='logout' style='display:none' href="#logout">Logout</a></li>
|
50
|
+
<li><a id='login' href="#">Login</a></li>
|
51
|
+
</ul>
|
52
|
+
</div><!-- END container -->
|
53
|
+
</div><!-- END nav inner -->
|
54
|
+
</div><!-- END navbar -->
|
55
|
+
<div class='container'>
|
56
|
+
<!-- secondary nav after login -->
|
57
|
+
<div id='secondary-nav' class='span12' style='display:none;margin-top:50px;margin-left:0'>
|
58
|
+
<ul class='nav nav-tabs'>
|
59
|
+
<li id='info_home'><a href='#'>Home</a></li>
|
60
|
+
<li id='server_doc'><a href='#docselect'>Server Doc</a></li>
|
61
|
+
<li id='users'><a href='#users'>Users</a></li>
|
62
|
+
<li id='settings'><a href='#settings'>Settings</a></li>
|
63
|
+
<% if Rhoconnect.stats == true%>
|
64
|
+
<li id='stats'><a href='#stats'>Statistics</a></li>
|
65
|
+
<% end %>
|
66
|
+
</ul>
|
67
|
+
</div>
|
68
|
+
<div class='span12' style='margin-left:0'>
|
69
|
+
<!-- content goes here -->
|
70
|
+
<div id='main_content'>
|
71
|
+
</div>
|
72
|
+
<!-- content ends here -->
|
73
|
+
</div>
|
74
|
+
</div>
|
75
|
+
<!--END row -->
|
76
|
+
<div class='container'>
|
77
|
+
<hr>
|
78
|
+
<footer>
|
79
|
+
<div class="pull-left">
|
80
|
+
RhoConnect
|
81
|
+
<p>© <a href="http://www.rhomobile.com/">Rhomobile</a> All rights reserved.</p>
|
82
|
+
</div>
|
83
|
+
<div class="pull-right">
|
84
|
+
<div id='license_info'></div>
|
85
|
+
RhoConnect v<%=@version%>
|
86
|
+
</div>
|
87
|
+
</footer>
|
88
|
+
</div>
|
89
|
+
</body>
|
90
|
+
</html>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
<!--[if IE]><script language="javascript" type="text/javascript" src="public/jqplot/excanvas.js"></script><![endif]-->
|
2
|
+
<script language="javascript" type="text/javascript" src="public/jqplot/jquery.jqplot.min.js"></script>
|
3
|
+
<script language="javascript" type="text/javascript" src="public/jqplot/jqplot.categoryAxisRenderer.min.js"></script>
|
4
|
+
<script language="javascript" type="text/javascript" src="public/jqplot/jqplot.dateAxisRenderer.js"></script>
|
5
|
+
<script language="javascript" type="text/javascript" src="public/jqplot/jqplot.canvasTextRenderer.js"></script>
|
6
|
+
<script language="javascript" type="text/javascript" src="public/jqplot/jqplot.canvasAxisLabelRenderer.js"></script>
|
7
|
+
<script language="javascript" type="text/javascript" src="public/jqplot/jqplot.canvasAxisTickRenderer.js"></script>
|
8
|
+
<script language="javascript" type="text/javascript" src="public/jqplot/jqplot.cursor.js"></script>
|
9
|
+
<style type='text/css'>
|
10
|
+
.jqplot-yaxis-label{
|
11
|
+
left:-20px !important;
|
12
|
+
}
|
13
|
+
</style>
|
14
|
+
|
15
|
+
<%
|
16
|
+
@sources.uniq!
|
17
|
+
s = nil
|
18
|
+
if @displayname.nil?
|
19
|
+
s = @sources[0]
|
20
|
+
else
|
21
|
+
@sources.each { |source| s = source if source['name'] == @displayname }
|
22
|
+
end
|
23
|
+
%>
|
24
|
+
<% if s.nil? or s['data'].length < 1 %>
|
25
|
+
<center>No data for <b><%= s.nil? ? "" : s['name'] %></b></center><br/><br/>
|
26
|
+
<% else %>
|
27
|
+
<div id="chartdiv" style="height:295px;width:670px; display:none;"></div>
|
28
|
+
<%end%>
|
29
|
+
<%
|
30
|
+
def fix_json(instring)
|
31
|
+
outstring = instring.gsub(/"/,"'")
|
32
|
+
outstring = outstring.gsub(/('.*?enderer'):'(.*?)'/,'\1:\2')
|
33
|
+
outstring
|
34
|
+
end
|
35
|
+
|
36
|
+
%>
|
37
|
+
|
38
|
+
<% if @displayname.nil? %>
|
39
|
+
<script type="text/javascript">
|
40
|
+
document.getElementById('chartdiv').style.display = '';plot = $.jqplot('chartdiv',<%=@sources[0]['data'].to_json.gsub(/"/,"'")%>,<%=fix_json(@sources[0]['options'].to_json)%>); plot.redraw();
|
41
|
+
</script>
|
42
|
+
<%end%>
|
43
|
+
|
44
|
+
<br/>
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
<% if @sources.length > 1%>
|
49
|
+
<ul id='source-list' class='nav nav-pills' style='margin-left:35px'>
|
50
|
+
<% @sources.each do |source| %>
|
51
|
+
<% if @displayname == source['name'] %>
|
52
|
+
<script type="text/javascript">
|
53
|
+
document.getElementById('chartdiv').style.display = '';plot = $.jqplot('chartdiv',<%=source['data'].to_json.gsub(/"/,"'")%>,<%=fix_json(source['options'].to_json)%>); plot.redraw();
|
54
|
+
</script>
|
55
|
+
<% end %>
|
56
|
+
<li class="<%=source['name'] == @displayname ? 'active' : ''%>">
|
57
|
+
<a id='<%=@graph_t == 'http' ? "http_timing" : "source_timing_display"%>' style="margin-right:5px"><%= source['name'] %></a></li>
|
58
|
+
<% end%>
|
59
|
+
</ul>
|
60
|
+
<% end %>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
App.Views.ApiToken = Backbone.View.extend({
|
2
|
+
|
3
|
+
initialize: function() {
|
4
|
+
this.render();
|
5
|
+
},
|
6
|
+
|
7
|
+
render: function() {
|
8
|
+
session = new Session()
|
9
|
+
$('#secondary-nav').css('display','block');
|
10
|
+
out = "<h3>API Token</h3>"
|
11
|
+
out += "<code>"+ session.getApiKey() +"</code>"
|
12
|
+
|
13
|
+
$(this.el).html(out);
|
14
|
+
$('#settings_main').html(this.el);
|
15
|
+
}
|
16
|
+
});
|
@@ -0,0 +1,63 @@
|
|
1
|
+
App.Views.Doc = Backbone.View.extend({
|
2
|
+
events: {
|
3
|
+
"click a#clear" : "clear"
|
4
|
+
},
|
5
|
+
|
6
|
+
initialize: function() {
|
7
|
+
var dbkey = this.model.get('dbkey');
|
8
|
+
this.render(dbkey);
|
9
|
+
this.model.get_doc(dbkey,'none');
|
10
|
+
},
|
11
|
+
|
12
|
+
clear: function(e){
|
13
|
+
e.preventDefault();
|
14
|
+
dbkey = this.model.get('dbkey');
|
15
|
+
var dt = 'hash';
|
16
|
+
var data = [];
|
17
|
+
if(dbkey.search(/token/i) > 0 || dbkey.search(/size/i) > 0){
|
18
|
+
dt = 'string';
|
19
|
+
data = '';
|
20
|
+
}
|
21
|
+
var self = this;
|
22
|
+
$.ajax({
|
23
|
+
type: 'POST',
|
24
|
+
url: '/api/source/set_db_doc',
|
25
|
+
data: {api_token : this.model.get('api_token'), doc : dbkey, data : data, data_type : dt},
|
26
|
+
success: function(){
|
27
|
+
data = "<tr><th colspan=3><h3 style='display:inline'>Data</h3><div class='pull-right'>" +
|
28
|
+
"<a class='btn btn-danger'>clear document</a></div></th></tr>" +
|
29
|
+
"<tr><td></td></tr>";
|
30
|
+
$('#docdata-table').find("tr:gt(0)").remove();
|
31
|
+
$('#docdata-table tr:last').after(data);
|
32
|
+
self.delegateEvents();
|
33
|
+
},
|
34
|
+
error: function(resp){
|
35
|
+
if(resp.status == 422){
|
36
|
+
new App.Views.Index()
|
37
|
+
}
|
38
|
+
$('#docalert')[0].innerHTML = resp.responseText;
|
39
|
+
$('#docalert').css('display','block');
|
40
|
+
}
|
41
|
+
})
|
42
|
+
},
|
43
|
+
|
44
|
+
|
45
|
+
render: function(dbkey) {
|
46
|
+
$('#secondary-nav').css('display','block');
|
47
|
+
out = "<div class='page-header well'><h2>Document "+dbkey+"</h2></div>";
|
48
|
+
out += "<div id='docalert' class='alert alert-error' style='display:none'></div>";
|
49
|
+
out += "<form class='form-horizontal' action='#doc/upload?#{@back_params}' method='post' enctype='multipart/form-data'>";
|
50
|
+
out += "<input type='hidden' name='doc' value='"+dbkey+"'/>";
|
51
|
+
out += "<input type='text' name='string' value='' placeholder='Upload token string' class='input-xlarge'/>";
|
52
|
+
out += "<input type='submit' value='Submit' class='btn btn-primary' style='margin-left:10px'>";
|
53
|
+
out += "</form>";
|
54
|
+
out += "<form 'string_s' class='form-horizontal'>";
|
55
|
+
out += "<input type='text' name='data' value='' class='input-xlarge' placeholder='Upload string'/>";
|
56
|
+
out += "<input type='submit' value='Submit' class='btn btn-primary' style='margin-left:10px'>";
|
57
|
+
out += "</form>";
|
58
|
+
out += "<table id='docdata-table' class='table table-bordered'><tr></tr></table>";
|
59
|
+
|
60
|
+
$(this.el).html(out);
|
61
|
+
$('#main_content').html(this.el);
|
62
|
+
}
|
63
|
+
});
|
@@ -0,0 +1,43 @@
|
|
1
|
+
App.Views.EditUser = Backbone.View.extend({
|
2
|
+
|
3
|
+
events: {
|
4
|
+
"submit form" : "edit"
|
5
|
+
},
|
6
|
+
|
7
|
+
initialize: function() {
|
8
|
+
this.render();
|
9
|
+
},
|
10
|
+
|
11
|
+
edit: function(e){
|
12
|
+
e.preventDefault();
|
13
|
+
var session = new Session()
|
14
|
+
var password = $("#password2").val();
|
15
|
+
$.ajax({
|
16
|
+
type: 'POST',
|
17
|
+
url: '/api/user/update_user',
|
18
|
+
data: {api_token : session.getApiKey(), attributes : {login : 'rhoadmin', password : password}},
|
19
|
+
success: function(){
|
20
|
+
//router.navigate("users", true);
|
21
|
+
},
|
22
|
+
error: function(resp){
|
23
|
+
if(resp.status == 422){
|
24
|
+
new App.Views.Index()
|
25
|
+
}
|
26
|
+
$('#settings-alert')[0].innerHTML = resp.responseText;
|
27
|
+
$('#settings-alert').css('display','block');
|
28
|
+
}
|
29
|
+
})
|
30
|
+
},
|
31
|
+
|
32
|
+
render: function() {
|
33
|
+
$('#secondary-nav').css('display','block');
|
34
|
+
out = "<h3>Change Admin Password</h3>"
|
35
|
+
out += "<form>"
|
36
|
+
out += "<input id='password2' type='password' name='password' value='' placeholder='Enter new password' style='margin:0'/>"
|
37
|
+
out += "<input type='submit' class='btn btn-primary' value='Save' style='margin-left:10px'/>"
|
38
|
+
out += "</form>"
|
39
|
+
|
40
|
+
$(this.el).html(out);
|
41
|
+
$('#settings_main').html(this.el);
|
42
|
+
}
|
43
|
+
});
|
@@ -0,0 +1,56 @@
|
|
1
|
+
App.Views.Home = Backbone.View.extend({
|
2
|
+
|
3
|
+
events: {
|
4
|
+
"click a#reset" : "reset"
|
5
|
+
},
|
6
|
+
|
7
|
+
initialize: function() {
|
8
|
+
var domain = $('input#domain').val();
|
9
|
+
this.model.set('partition_type','app')
|
10
|
+
this.model.save({
|
11
|
+
error: function(model,resp)
|
12
|
+
{
|
13
|
+
if(resp.status == 422){
|
14
|
+
new App.Views.Index()
|
15
|
+
}
|
16
|
+
}
|
17
|
+
});
|
18
|
+
this.model.fetch({
|
19
|
+
error: function(model,resp)
|
20
|
+
{
|
21
|
+
if(resp.status == 422){
|
22
|
+
new App.Views.Index()
|
23
|
+
}
|
24
|
+
}
|
25
|
+
});
|
26
|
+
this.render(domain);
|
27
|
+
},
|
28
|
+
|
29
|
+
reset: function(){
|
30
|
+
var session = new Session();
|
31
|
+
if(confirm("Are you sure you want to reset?")){
|
32
|
+
session.reset()
|
33
|
+
}
|
34
|
+
},
|
35
|
+
|
36
|
+
render: function(domain) {
|
37
|
+
$('#secondary-nav').css('display','block');
|
38
|
+
//out = "<div class='page-header well'><h1>Home</h1></div>"
|
39
|
+
out = "<div id='home-alert' class='alert alert-error' style='display:none'></div>"
|
40
|
+
out += "<div class='alert alert-info' style='padding:10px 0 30px 0'>"
|
41
|
+
//out += "<div class='container'>"
|
42
|
+
out += "<div id='license' style='padding-left:5px' class='pull-left'></div>"
|
43
|
+
out += "<div class='pull-right'>"
|
44
|
+
out += "<div class='reset-status' style='display:inline;'><span class='' style='margin-right:5px'></span></div>"
|
45
|
+
out += "<a id='reset' class='btn btn-danger'>Reset</a>"
|
46
|
+
out += "</div></div>"
|
47
|
+
out += "<div class='span4'>"
|
48
|
+
out += "<table id='source-table' class='table table-bordered'><thead><tr><th><h3>App partition sources</h3></th></tr></thead>"
|
49
|
+
out += "</table></div>"
|
50
|
+
out += "<div class='span4 pull-right'><h3>Sync Server URL</h3><code style='margin:0'>http://"+domain+"</code></br>";
|
51
|
+
out += "<em style='margin-top:5px'>Paste this url into your client app configuration to sync with this RhoConnect instance.</em></div>"
|
52
|
+
$(this.el).html(out);
|
53
|
+
$('#main_content').html(this.el);
|
54
|
+
return this
|
55
|
+
}
|
56
|
+
});
|
@@ -0,0 +1,63 @@
|
|
1
|
+
App.Views.Index = Backbone.View.extend({
|
2
|
+
|
3
|
+
events: {
|
4
|
+
"submit form" : "login"
|
5
|
+
},
|
6
|
+
|
7
|
+
initialize: function() {
|
8
|
+
this.render();
|
9
|
+
},
|
10
|
+
|
11
|
+
login: function(e) {
|
12
|
+
e.preventDefault();
|
13
|
+
var login = $('#loginindex').val();
|
14
|
+
var password = $("#password").val();
|
15
|
+
$.ajax({
|
16
|
+
type: 'POST',
|
17
|
+
url: '/api/admin/login',
|
18
|
+
data: {login:login,password:password},
|
19
|
+
success: function(resp){
|
20
|
+
var session = new Session();
|
21
|
+
session.setAuthenticated(true);
|
22
|
+
session.setApiKey(resp);
|
23
|
+
$('#login').css('display','inline');
|
24
|
+
router.navigate('#home',true)
|
25
|
+
},
|
26
|
+
error: function(resp){
|
27
|
+
if(resp.status == 422){
|
28
|
+
new App.Views.Index()
|
29
|
+
}
|
30
|
+
$('#home-alert').css('display','block');
|
31
|
+
$('#home-alert')[0].innerHTML = resp.responseText;
|
32
|
+
}
|
33
|
+
})
|
34
|
+
},
|
35
|
+
|
36
|
+
render: function () {
|
37
|
+
$('#secondary-nav').css('display','none');
|
38
|
+
out = "<div class='page-header well' style='margin-top:60px'><h1>Login</h1></div>";
|
39
|
+
out += "<div id='home-alert' class='alert alert-error' style='display:none'></div>";
|
40
|
+
out += "<form id='index-form'>";
|
41
|
+
out += "<table class='table table-bordered'>";
|
42
|
+
out += "<tr><td><input id='loginindex' type='text' name='login' class='input-xlarge' value='rhoadmin' placeholder='rhoadmin'/></td></tr>";
|
43
|
+
out += "<tr><td><input id='password' type='password' name='password' class='input-xlarge' value='' placeholder='Enter Password'/></td></tr>";
|
44
|
+
out += "<tr><td colspan=2><input type='submit' class='btn btn-primary' value='Login'/></td></tr>";
|
45
|
+
out += "</table></form>";
|
46
|
+
|
47
|
+
$(this.el).html(out);
|
48
|
+
$('#main_content').html(this.el);
|
49
|
+
}
|
50
|
+
});
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
App.Views.NewPing = Backbone.View.extend({
|
2
|
+
|
3
|
+
events:{
|
4
|
+
"submit form" : "ping"
|
5
|
+
},
|
6
|
+
|
7
|
+
initialize: function() {
|
8
|
+
var name = this.model.get('name');
|
9
|
+
this.render(name);
|
10
|
+
this.model.new_ping(name);
|
11
|
+
if(name == undefined)
|
12
|
+
this.model.get_users('ping');
|
13
|
+
},
|
14
|
+
|
15
|
+
ping: function(e) {
|
16
|
+
e.preventDefault();
|
17
|
+
var users = $('#pinguser').val().split(',');
|
18
|
+
var message = $('#pingmessage').val();
|
19
|
+
var vibrate = $('#pingvibrate').val();
|
20
|
+
var sound = $('#pingsound').val();
|
21
|
+
var badge = $('#pingbadge').val();
|
22
|
+
var sources = $('#sources').val().split(',');
|
23
|
+
|
24
|
+
$.ajax({
|
25
|
+
type: 'POST',
|
26
|
+
url: '/api/client/ping',
|
27
|
+
data: {api_token : this.model.get('api_token'), user_id : users, message : message, vibrate : vibrate, badge : badge, sources : sources},
|
28
|
+
success: function(){
|
29
|
+
router.navigate("users", true);
|
30
|
+
},
|
31
|
+
error: function(resp){
|
32
|
+
if(resp.status == 422){
|
33
|
+
new App.Views.Index()
|
34
|
+
}
|
35
|
+
$('#ping-alert')[0].innerHTML = resp.responseText;
|
36
|
+
$('#ping-alert').css('display','block');
|
37
|
+
}
|
38
|
+
})
|
39
|
+
},
|
40
|
+
|
41
|
+
render: function(name) {
|
42
|
+
$('#secondary-nav').css('display','block');
|
43
|
+
out = "<div class='page-header well'><h2>Ping User/s</h2></div>";
|
44
|
+
out += "<div id='ping-alert' class='alert alert-error' style='display:none'></div>";
|
45
|
+
out += "<form><table id='users_table' class='table table-bordered'>";
|
46
|
+
out += "<input id='pinguser' type='hidden' name='user_id' value='"+name+"' class='input-xlarge' />";
|
47
|
+
out += "<tr><td>Message:</td><td><input id='pingmessage' type='text' name='message' value='push message' class='input-xlarge' /></td></tr>";
|
48
|
+
out += "<tr><td>Sources</td><td><input type='text' name='sources' id='sources' value='' class='input-xlarge'/></td></tr>";
|
49
|
+
out += "<tr><td>Sound</td><td><input id='pingsound' type='text' name='badge' value='welcome.mp3' class='input-medium'/></td></tr>";
|
50
|
+
out += "<tr><td>Badge</td><td><input id='pingbadge' type='text' name='badge' value='1' class='input-small'/></td></tr>";
|
51
|
+
out += "<tr><td>Vibrate</td><td><input id='pingvibrate' type='text' name='vibrate' value='2' class='input-small'/> (seconds)</td></tr>"
|
52
|
+
out += "<tr><td colspan=2><input type='submit' class='btn btn-primary' value='Ping!' /></td></tr>"
|
53
|
+
out += "</table></form>";
|
54
|
+
|
55
|
+
$(this.el).html(out);
|
56
|
+
$('#main_content').html(this.el);
|
57
|
+
}
|
58
|
+
});
|
@@ -0,0 +1,29 @@
|
|
1
|
+
App.Views.NewUser = Backbone.View.extend({
|
2
|
+
|
3
|
+
events: {
|
4
|
+
"submit form" : "create_user"
|
5
|
+
},
|
6
|
+
|
7
|
+
initialize: function() {
|
8
|
+
this.render();
|
9
|
+
},
|
10
|
+
|
11
|
+
create_user: function(e) {
|
12
|
+
e.preventDefault();
|
13
|
+
this.model.create_user();
|
14
|
+
},
|
15
|
+
|
16
|
+
render: function() {
|
17
|
+
$('#secondary-nav').css('display','block');
|
18
|
+
out = "<div class='page-header well'><h2>New user</h2></div>";
|
19
|
+
out += "<div id='newuser-alert' class='alert alert-error' style='display:none'></div>";
|
20
|
+
out += "<form>"
|
21
|
+
out += "<input id='new-login' type='text' name='login' placeholder='login' style='margin:0'/>";
|
22
|
+
out += "<input id='new-password' type='password' name='password' placeholder='password' style='margin:0 0 0 10px'/>";
|
23
|
+
out += "<input type='submit' class='btn btn-primary' value='Add' style='margin:0 0 0 10px'/>"
|
24
|
+
out += "</form>";
|
25
|
+
|
26
|
+
$(this.el).html(out);
|
27
|
+
$('#main_content').html(this.el);
|
28
|
+
}
|
29
|
+
});
|
@@ -0,0 +1,103 @@
|
|
1
|
+
App.Views.ServerDoc = Backbone.View.extend({
|
2
|
+
|
3
|
+
events: {
|
4
|
+
"submit form#string_s" : "upload_string",
|
5
|
+
"submit form#db_key_form" : "query",
|
6
|
+
"click a#clear" : "clear"
|
7
|
+
},
|
8
|
+
|
9
|
+
initialize: function(dbkey) {
|
10
|
+
this.render("");
|
11
|
+
},
|
12
|
+
|
13
|
+
clear: function(e){
|
14
|
+
e.preventDefault();
|
15
|
+
dbkey = this.model.get('dbkey');
|
16
|
+
var self = this;
|
17
|
+
$.ajax({
|
18
|
+
type: 'POST',
|
19
|
+
url: '/api/source/set_db_doc',
|
20
|
+
data: {api_token : this.model.get('api_token'), doc : dbkey, data : '', data_type : 'string'},
|
21
|
+
success: function(){
|
22
|
+
data = "<tr><th colspan=3><h3 style='display:inline'>Data</h3><div class='pull-right'>" +
|
23
|
+
"<a class='btn btn-danger'>clear document</a></div></th></tr>" +
|
24
|
+
"<tr><td></td></tr>";
|
25
|
+
$('#docdata-table').find("tr:gt(0)").remove();
|
26
|
+
$('#docdata-table tr:last').after(data);
|
27
|
+
self.delegateEvents();
|
28
|
+
},
|
29
|
+
error: function(resp){
|
30
|
+
if(resp.status == 422){
|
31
|
+
new App.Views.Index()
|
32
|
+
}
|
33
|
+
$('#doc-alert')[0].innerHTML = resp.responseText;
|
34
|
+
$('#doc-alert').css('display','block');
|
35
|
+
}
|
36
|
+
})
|
37
|
+
},
|
38
|
+
|
39
|
+
upload_string: function(e){
|
40
|
+
e.preventDefault();
|
41
|
+
var self = this;
|
42
|
+
$(".upload-status")[0].firstChild.className = "label label-warning";
|
43
|
+
$(".upload-status")[0].firstChild.innerHTML = "loading...";
|
44
|
+
$(".upload-status").css("visibility","visible");
|
45
|
+
var doc = $('#input_key').val();
|
46
|
+
var data = $("#data").val();
|
47
|
+
$.ajax({
|
48
|
+
type: 'POST',
|
49
|
+
url: '/api/source/set_db_doc',
|
50
|
+
data: {api_token : this.model.get('api_token'), doc : doc, data : data, data_type : 'string'},
|
51
|
+
success: function(){
|
52
|
+
$(".upload-status")[0].firstChild.className = "label label-success";
|
53
|
+
$(".upload-status")[0].firstChild.innerHTML = "success";
|
54
|
+
|
55
|
+
data = "<tr><th colspan=3><h3 style='display:inline'>Data</h3><div class='pull-right'>" +
|
56
|
+
"<a id='clear' class='btn btn-danger'>clear document</a></div></th></tr>" +
|
57
|
+
"<tr><td id='doc_data'>" + data+ "</td></tr>";
|
58
|
+
$('#docdata-table').find("tr:gt(0)").remove();
|
59
|
+
$('#docdata-table tr:last').after(data);
|
60
|
+
self.delegateEvents();
|
61
|
+
},
|
62
|
+
error: function(resp){
|
63
|
+
if(resp.status == 422){
|
64
|
+
new App.Views.Index()
|
65
|
+
}
|
66
|
+
$(".upload-status")[0].firstChild.className = "label label-danger";
|
67
|
+
$(".upload-status")[0].firstChild.innerHTML = "error";
|
68
|
+
$('#doc-alert')[0].innerHTML = resp.responseText;
|
69
|
+
$('#doc-alert').css('display','block');
|
70
|
+
}
|
71
|
+
})
|
72
|
+
},
|
73
|
+
|
74
|
+
query: function(e){
|
75
|
+
e.preventDefault();
|
76
|
+
var dbkey = $('#input_key').val();
|
77
|
+
this.render(dbkey);
|
78
|
+
$(".query-status")[0].firstChild.className = "label label-warning";
|
79
|
+
$(".query-status")[0].firstChild.innerHTML = "loading...";
|
80
|
+
$(".query-status").css("visibility","visible");
|
81
|
+
this.model.get_doc(dbkey,'string');
|
82
|
+
this.delegateEvents();
|
83
|
+
},
|
84
|
+
|
85
|
+
render: function(dbkey) {
|
86
|
+
$('#secondary-nav').css('display','block');
|
87
|
+
out = "<div class='page-header well'><h2>Document "+dbkey+"</h2></div>";
|
88
|
+
out += "<div id='docalert' class='alert alert-error' style='display:none'></div>";
|
89
|
+
out += "<form id='db_key_form' class='form-horizontal'>";
|
90
|
+
out += "<input id='input_key' type='text' name='dbkey' value='"+dbkey+"' class='input-xlarge' placeholder='Enter DB key'/>";
|
91
|
+
out += "<input type='submit' value='Submit' class='btn btn-primary' style='margin-left:10px'><div class='query-status' style='display:inline;margin-left:10px;visibility:hidden'><span class=''></span></div>";
|
92
|
+
out += "</form>";
|
93
|
+
if(dbkey != ""){
|
94
|
+
out += "<form id='string_s' class='form-horizontal'>";
|
95
|
+
out += "<input id='data' type='text' name='data' value='' class='input-xlarge' placeholder='Upload String'/>";
|
96
|
+
out += "<input type='submit' value='Submit' class='btn btn-primary' style='margin-left:10px'><div class='upload-status' style='display:inline;margin-left:10px;visibility:hidden'><span class=''></span></div>";
|
97
|
+
out += "</form>";
|
98
|
+
out += "<table id='docdata-table' class='table table-bordered'><tr></tr></table>";
|
99
|
+
}
|
100
|
+
$(this.el).html(out);
|
101
|
+
$('#main_content').html(this.el);
|
102
|
+
}
|
103
|
+
});
|