jio_dashboard.html 10.9 KB
Newer Older
Tristan Cavelier's avatar
Tristan Cavelier committed
1 2 3 4
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
5
  <title>jIO Dashboard</title>
Tristan Cavelier's avatar
Tristan Cavelier committed
6 7 8 9
</head>
<body>
  <script type="text/javascript">
    <!--
10
var log_color = 'cyan';
Tristan Cavelier's avatar
Tristan Cavelier committed
11
var logGetColor = function () {
12 13 14 15 16 17
  if (log_color === 'white') {
    log_color = 'cyan';
  } else {
    log_color = 'white';
  }
  return log_color;
Tristan Cavelier's avatar
Tristan Cavelier committed
18 19
};
var log = function (o) {
20 21 22 23 24 25 26 27
  var node = document.createElement('div');
  node.setAttribute('style', 'background-color:'+logGetColor()+';');
  if (typeof o === 'string') {
    node.textContent = o;
  } else {
    node.textContent = JSON.stringify(o);
  }
  document.getElementById('log').appendChild(node);
Tristan Cavelier's avatar
Tristan Cavelier committed
28 29
};
var error = function (o) {
30 31 32 33 34 35 36 37 38
  var node = document.createElement('div');
  node.setAttribute('style', 'background-color:'+logGetColor()+
                    ';color:red;font-weight:bold');
  if (typeof o === 'string') {
    node.textContent = o;
  } else {
    node.textContent = JSON.stringify(o);
  }
  document.getElementById('log').appendChild(node);
Tristan Cavelier's avatar
Tristan Cavelier committed
39 40
};
var clearlog = function () {
41
  document.getElementById('log').innerHTML = '';
Tristan Cavelier's avatar
Tristan Cavelier committed
42 43 44
};
        //-->
  </script>
45 46 47
  <table border="1" style="width: 100%;">
    <tr style="font-style:italic;">
      <th>simple storage</th><th>multi storage</th><th>distant storage</th>
Tristan Cavelier's avatar
Tristan Cavelier committed
48
      <th>revision managing</th><th>custom storage description</th>
49 50 51
    </tr>
    <tr>
      <th>local</th><th>crypt & local</th><th>dav</th>
Tristan Cavelier's avatar
Tristan Cavelier committed
52
      <th>revision & local</th><th>custom</th>
53 54 55 56
    </tr>
    <tr>
      <th>
        <input type="text" id="localuser" value="localuser" placeholder="username" /><br />
Tristan Cavelier's avatar
Tristan Cavelier committed
57
        <input type="text" id="localapp" value="localapp" placeholder="application_name" /><br />
58 59 60
      </th>
      <th>
        <input type="text" id="cryptuser" value="cryptuser" placeholder="username" /><br />
Tristan Cavelier's avatar
Tristan Cavelier committed
61
        <input type="text" id="cryptapp" value="cryptapp" placeholder="application_name" /><br />
62 63 64
        <input type="password" id="cryptpassword" value="pwd" placeholder="password" /><br />
      </th>
      <th>
65 66 67 68
        <input type="text" id="davurl" value="http://dav.com/uploads" placeholder="url" /><br />
        <input type="text" id="davauthtype" value="basic" placeholder="auth_type" disabled /> <br />
        <input type="text" id="davuser" value="davuser" placeholder="username" /><br />
        <input type="password" id="davpassword" value="pwd" placeholder="password" /><br />
69 70
      </th>
      <th>
Tristan Cavelier's avatar
Tristan Cavelier committed
71 72
        <input type="text" id="revisionuser" value="localuser" placeholder="username" /><br />
        <input type="text" id="revisionapp" value="localapp" placeholder="application_name" /><br />
73 74
      </th>
      <th style="width:100%;">
Tristan Cavelier's avatar
Tristan Cavelier committed
75
        <textarea id="customstorage" style="width:98%;">{&quot;type&quot;:&quot;local&quot;,&quot;username&quot;:&quot;customuser&quot;,&quot;application_name&quot;:&quot;customapp&quot;,&quot;customkey&quot;:&quot;customvalue&quot;}</textarea>
76 77 78 79 80 81
      </th>
    </tr>
    <tr>
      <th><button onclick="newLocalJio()">Create New jIO</button></th>
      <th><button onclick="newCryptJio()">Create New jIO</button></th>
      <th><button onclick="newDavJio()">Create New jIO</button></th>
Tristan Cavelier's avatar
Tristan Cavelier committed
82
      <th><button onclick="newRevisionJio()">Create New jIO</button></th>
83 84 85
      <th><button onclick="newCustomJio()">Create New jIO</button></th>
    </tr>
  </table>
Tristan Cavelier's avatar
Tristan Cavelier committed
86
  <br />
87 88
  <table border="1" style="width: 100%;">
    <tr>
Tristan Cavelier's avatar
Tristan Cavelier committed
89
      <td colspan="1" style="width: 50%;">
90 91 92
        <label for="metadata">Metadata or document id:</label>
        <textarea id="metadata" rows="3" style="width: 98%;">{}</textarea>
      </td>
Tristan Cavelier's avatar
Tristan Cavelier committed
93
      <td colspan="1" style="text-align: center;">
94
        Options:<br />
Tristan Cavelier's avatar
Tristan Cavelier committed
95 96 97 98 99 100
        <label for="show_conflicts">Get Conflicts</label>
        <input type="checkbox" id="show_conflicts" /><br />
        <label for="show_revision_history">Get Revision History</label>
        <input type="checkbox" id="show_revision_history" /><br />
        <label for="show_revision_info">Get Revision Info</label>
        <input type="checkbox" id="show_revision_info" /><br />
101
        <label for="max_retry">Max Retry</label>
102
        <input type="number" id="max_retry" value="0" style="width: 3em;"/>
103 104 105 106
        (0 = infinite)
      </td>
    </tr>
    <tr>
Tristan Cavelier's avatar
Tristan Cavelier committed
107
      <td colspan="2" style="text-align: center;">
108 109 110 111
        <button onclick="post()">post</button>
        <button onclick="put()">put</button>
        <button onclick="get()">get</button>
        <button onclick="remove()">remove</button>
Tristan Cavelier's avatar
Tristan Cavelier committed
112
        - <button onclick="putAttachment()">putAttachment</button>
113 114
        <button onclick="getAttachment()">getAttachment</button>
        <button onclick="removeAttachment()">removeAttachment</button>
115 116
      </td>
    </tr>
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
    <tr>
      <td colspan="1" style="width: 50%;">
        <label for="query">AllDocs Query:</label>
        <textarea id="query" rows="3" style="width: 98%;">a: 2</textarea>
      </td>
      <td colspan="1" style="text-align: center;">
        AllDocs Options:<br />
        <label for="include_docs">Include Docs</label>
        <input type="checkbox" id="include_docs" /><br />
        <label for="wildcard">Wildcard char: </label>
        <input type="text" id="wildcard" name="wildcard" value="%" maxlength="1" style="width: 1em;"/><br />
        <label for="sort_on">Sort on: </label>
        <input type="text" id="sort_on" name="sort_on" value="[[&quot;author&quot;, &quot;ascending&quot;], [&quot;title&quot;, &quot;descending&quot;]]"
               style="width: 80%;"/><br />
        <label for="select_list">Select_list: </label>
        <input type="text" id="select_list" name="select_list" value="[&quot;author&quot;, &quot;title&quot;]" style="width: 80%;"/><br />
        <label for="limit">Limit: </label>
        <input type="text" id="limit" name="limit" value="[0, 100]" style="width: 80%;"/><br />
      </td>
    </tr>
    <tr>
      <td colspan="2" style="text-align: center;">
        <button onclick="allDocs()">allDocs</button>
      </td>
    </tr>
142 143 144 145 146 147 148
  </table>
  <br />
  <div style="text-align: center;">
    <button onclick="printLocalStorage()">print localStorage</button>
    <button onclick="localStorage.clear()">clear localStorage</button><br />
    <button onclick="clearlog()">Clear Log</button>
  </div>
Tristan Cavelier's avatar
Tristan Cavelier committed
149 150 151
  <hr />
  <div id="log">
  </div>
152
  <script type="text/javascript" src="../lib/md5/md5.js"></script>
153
  <script type="text/javascript" src="../complex_queries.js"></script>
Tristan Cavelier's avatar
Tristan Cavelier committed
154
  <script type="text/javascript" src="../jio.js"></script>
Tristan Cavelier's avatar
Tristan Cavelier committed
155 156
  <script type="text/javascript" src="../src/jio.storage/localstorage.js">
  </script>
Tristan Cavelier's avatar
Tristan Cavelier committed
157
  <script type="text/javascript" src="../lib/jquery/jquery.min.js"></script>
Tristan Cavelier's avatar
Tristan Cavelier committed
158 159
  <script type="text/javascript" src="../src/jio.storage/davstorage.js">
  </script>
160 161
  <script type="text/javascript" src="../src/jio.storage/erp5storage.js">
  </script>
Tristan Cavelier's avatar
Tristan Cavelier committed
162
  <script type="text/javascript" src="../lib/jsSha2/sha2.js"></script>
Tristan Cavelier's avatar
Tristan Cavelier committed
163 164
  <script type="text/javascript" src="../src/jio.storage/revisionstorage.js">
  </script>
Tristan Cavelier's avatar
Tristan Cavelier committed
165 166
  <script type="text/javascript" src="../src/jio.storage/splitstorage.js">
  </script>
167 168
  <script type="text/javascript" src="../src/jio.storage/gidstorage.js">
  </script>
Tristan Cavelier's avatar
Tristan Cavelier committed
169
  <script type="text/javascript" src="../lib/sjcl/sjcl.min.js"></script>
Tristan Cavelier's avatar
Tristan Cavelier committed
170 171 172 173
  <script type="text/javascript">
    <!--
var my_jio = null;
var newLocalJio = function () {
174 175 176 177 178 179 180
  var localuser, localapp;
  localuser = $('#localuser').attr('value');
  localapp = $('#localapp').attr('value');
  var spec = {type: 'local', username: localuser, application_name: localapp};
  if (my_jio) { log('closing older jio'); my_jio.close(); }
  log('local storage description object: ' + JSON.stringify(spec));
  my_jio = jIO.newJio(spec);
Tristan Cavelier's avatar
Tristan Cavelier committed
181 182
};
var newCryptJio = function () {
183 184 185 186 187 188 189 190 191 192
  var user, app, pwd;
  user = $('#cryptuser').attr('value');
  app = $('#cryptapp').attr('value');
  pwd = $('#cryptpassword').attr('value');
  var spec = {type: 'crypt', username: user, password: pwd, storage:{
    type: 'local', username: user, application_name: app
  }};
  if (my_jio) { log('closing older jio'); my_jio.close(); }
  log('crypt storage description object: ' + JSON.stringify(spec));
  my_jio = jIO.newJio(spec);
Tristan Cavelier's avatar
Tristan Cavelier committed
193 194
};
var newDavJio = function () {
195 196 197 198 199 200 201 202 203 204 205 206 207 208
  var user, app, pwd, url;
  user = $('#davuser').attr('value');
  pwd = $('#davpassword').attr('value');
  url = $('#davurl').attr('value');
  var spec = {
    "type": "dav",
    "url": url,
    "auth_type": "basic",
    "username": user,
    "password": pwd
  };
  if (my_jio) { log('closing older jio'); my_jio.close(); }
  log('dav storage description object: ' + JSON.stringify(spec));
  my_jio = jIO.newJio(spec);
Tristan Cavelier's avatar
Tristan Cavelier committed
209
};
Tristan Cavelier's avatar
Tristan Cavelier committed
210
var newRevisionJio = function () {
211 212 213 214 215 216 217 218 219 220 221
  var user, app;
  user = $('#revisionuser').attr('value');
  app = $('#revisionapp').attr('value');
  var spec = {
    type: 'revision', sub_storage: {
      type: 'local', username: user, application_name: app
    }
  };
  if (my_jio) { log('closing older jio'); my_jio.close(); }
  log('revision storage description object: '+JSON.stringify(spec));
  my_jio = jIO.newJio(spec);
Tristan Cavelier's avatar
Tristan Cavelier committed
222 223
};
var newCustomJio = function () {
224 225 226 227
  var spec = JSON.parse ($('#customstorage').attr('value'));
  if (my_jio) { log('closing older jio'); my_jio.close(); }
  log('custom storage description object: '+JSON.stringify(spec));
  my_jio = jIO.newJio(spec);
Tristan Cavelier's avatar
Tristan Cavelier committed
228 229
};
var printLocalStorage = function () {
230 231 232 233 234 235
  var i;
  log('LOCALSTORAGE');
  for (i in localStorage) {
    log('- '+ i +': '+localStorage[i]);
  }
  log('------------------------------');
Tristan Cavelier's avatar
Tristan Cavelier committed
236
};
237 238 239 240 241 242
var callback = function (err, val, begin_date) {
  log('time : ' + (Date.now() - begin_date));
  if (err) {
    return error('return :' + JSON.stringify(err));
  }
  log('return : ' + JSON.stringify(val));
Tristan Cavelier's avatar
Tristan Cavelier committed
243 244
};
var command = function (method) {
245 246 247 248 249
  var begin_date = Date.now(), doc = {}, opts = {};
  log(method);
  if (!my_jio) {
    return error('no jio set');
  }
Tristan Cavelier's avatar
Tristan Cavelier committed
250

251
  opts.query = $('#query').attr('value');
252
  opts.include_docs = $('#include_docs').attr('checked') ? true : false;
253 254 255 256 257
  opts.wildcard_character = $('#wildcard').attr('value') || "";
  opts.sort_on = JSON.parse($('#sort_on').attr('value') || null);
  opts.select_list = JSON.parse($('#select_list').attr('value') || null);
  opts.limit = JSON.parse($('#limit').attr('value') || null);

258 259 260 261
  opts.conflicts = $('#show_conflicts').attr('checked') ? true : false;
  opts.revs = $('#show_revision_history').attr('checked') ? true : false;
  opts.revs_info = $('#show_revision_info').attr('checked') ? true : false;
  opts.max_retry = parseInt($('#max_retry').attr('value') || '0');
Tristan Cavelier's avatar
Tristan Cavelier committed
262

263 264 265
  doc = JSON.parse($('#metadata').attr('value'));
  log('doc: ' + JSON.stringify(doc));
  log('opts: ' + JSON.stringify(opts));
Tristan Cavelier's avatar
Tristan Cavelier committed
266

267 268 269
  my_jio[method](doc, opts, function (err, val) {
    callback(err, val, begin_date);
  });
Tristan Cavelier's avatar
Tristan Cavelier committed
270 271
};
var post = function () {
272
  command('post');
Tristan Cavelier's avatar
Tristan Cavelier committed
273 274
};
var put = function () {
275
  command('put');
Tristan Cavelier's avatar
Tristan Cavelier committed
276 277
};
var get = function () {
278
  command('get');
Tristan Cavelier's avatar
Tristan Cavelier committed
279 280
};
var remove = function () {
281
  command('remove');
Tristan Cavelier's avatar
Tristan Cavelier committed
282 283
};
var allDocs = function () {
284
  command('allDocs');
285 286
};
var putAttachment = function () {
287 288 289 290 291 292 293
  command('putAttachment');
};
var getAttachment = function () {
  command('getAttachment');
};
var removeAttachment = function () {
  command('removeAttachment');
294
};
Tristan Cavelier's avatar
Tristan Cavelier committed
295 296 297 298
        //-->
  </script>
</body>
</html>