IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

79 行
2.6KB

  1. import { h, Component } from 'preact';
  2. import { Router, route } from 'preact-router';
  3. import WBBrowse from 'wb-browse';
  4. import WBSignIn from 'wb-sign-in';
  5. import WBLandingPage from 'wb-landing-page';
  6. import WBProcessView from 'wb-process-view';
  7. import WBCollectionView from 'wb-collection-view';
  8. import WBCollectionBrowse from 'wb-collection-browse';
  9. import WBUsersPage from 'wb-users-page';
  10. import arvadosTypeName from 'arvados-type-name';
  11. class WBApp extends Component {
  12. constructor(...args) {
  13. super(...args);
  14. this.state.arvHost = window.localStorage['arvHost'];
  15. this.state.arvToken = window.localStorage['arvToken'];
  16. if ('currentUser' in window.localStorage)
  17. this.state.currentUser = JSON.parse(window.localStorage['currentUser']);
  18. this.appCallbacks = {
  19. 'navbarItemClicked': item => this.navbarItemClicked(item)
  20. };
  21. this.appState = {
  22. 'arvHost': this.state.arvHost,
  23. 'arvToken': this.state.arvToken,
  24. 'currentUser': this.state.currentUser
  25. };
  26. }
  27. navbarItemUrl(item) {
  28. if (item['id'] === 'sign-out') {
  29. delete window.localStorage['arvHost'];
  30. delete window.localStorage['arvToken'];
  31. delete window.localStorage['currentUser'];
  32. return ('/sign-in');
  33. } else if (item['id'] === 'home') {
  34. return ('/browse/' + this.appState.currentUser.uuid);
  35. } else if (item['id'] === 'all-projects') {
  36. return ('/browse');
  37. } else if (item['id'] === 'all-users') {
  38. return ('/users');
  39. }
  40. }
  41. breadcrumbClicked(item) {
  42. let objectType = arvadosTypeName(item.uuid.split('-')[1]);
  43. if (objectType === 'user')
  44. route('/browse/' + item.uuid)
  45. else if (objectType === 'group' && item.group_class === 'project')
  46. route('/browse/' + item.uuid);
  47. else if (objectType === 'container_request')
  48. route('/process/' + item.uuid)
  49. }
  50. render() {
  51. return (
  52. <Router>
  53. <WBLandingPage path="/" />
  54. <WBSignIn path="/sign-in" appState={ this.appState } />
  55. <WBBrowse path="/browse/:ownerUuid?/:activePage?/:objTypeTab?/:collectionPage?/:processPage?/:workflowPage?"
  56. appCallbacks={ this.appCallbacks }
  57. appState={ this.appState }
  58. app={ this } />
  59. <WBProcessView path="/process/:uuid" app={ this } />
  60. <WBCollectionView path="/collection/:uuid" app={ this } />
  61. <WBCollectionBrowse path='/collection-browse/:uuid/:collectionPath?/:page?' app={ this } />
  62. <WBUsersPage path='/users/:page?' app={ this } />
  63. </Router>
  64. );
  65. }
  66. }
  67. export default WBApp;