Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better onboarding on demo instance #4439

Merged
merged 90 commits into from
Apr 9, 2020
Merged
Show file tree
Hide file tree
Changes from 70 commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
149347f
add registration_form to spotlight_view
normanrz Feb 11, 2020
345c371
dashboard banner
fm3 Feb 11, 2020
7b40194
dataset filtering
normanrz Feb 11, 2020
1c7b6e3
faq on pricing
normanrz Feb 11, 2020
a9201cf
flow
normanrz Feb 11, 2020
d829922
rename tracing to annotation in user-facing texts
normanrz Feb 11, 2020
44f52d7
linkify entire card
fm3 Feb 11, 2020
b58c9a9
Merge remote-tracking branch 'origin/better-onboarding' into dashboar…
fm3 Feb 11, 2020
a2b4b13
improved signup
normanrz Feb 11, 2020
1dae36f
rename scale to voxel size
normanrz Feb 11, 2020
c0e521a
extra sharing tab in dataset edit
normanrz Feb 11, 2020
ec4cf0e
help texts
normanrz Feb 11, 2020
e7f4cb5
lint
normanrz Feb 11, 2020
ffd07d5
flow
normanrz Feb 11, 2020
2cb25c7
added icons for keyboard icons in view mode
hotzenklotz Feb 11, 2020
d7c2b2d
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
hotzenklotz Feb 11, 2020
cb924bd
Merge remote-tracking branch 'origin/better-onboarding' into dashboar…
fm3 Feb 11, 2020
8fea38b
moar margin
hotzenklotz Feb 11, 2020
fefad3c
updated keyboard shortcut layout
hotzenklotz Feb 11, 2020
3efbfa7
Merge remote-tracking branch 'origin/better-onboarding' into dashboar…
fm3 Feb 11, 2020
4802407
shortcut table styling
hotzenklotz Feb 11, 2020
67bb638
tbody fix
hotzenklotz Feb 11, 2020
3a180c1
Merge remote-tracking branch 'origin/better-onboarding' into dashboar…
fm3 Feb 11, 2020
f7c2160
add icons for dataset info tab
fm3 Feb 11, 2020
d241c30
better email template
normanrz Feb 11, 2020
b946f6c
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
normanrz Feb 11, 2020
f8e85fd
pass isDemoInstance to register mail
fm3 Feb 11, 2020
5da0a2c
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
normanrz Feb 11, 2020
667cb37
Merge branch 'dashboard-banner' into better-onboarding
fm3 Feb 11, 2020
7792861
stuff
normanrz Feb 11, 2020
bf6c245
add some spacing, link to more shortcuts
fm3 Feb 12, 2020
96b5f19
on demo instance, send register mail on orga creation
fm3 Feb 12, 2020
08831f4
separate register emails
normanrz Feb 12, 2020
e307b4e
show whatsnext banner only at first
fm3 Feb 12, 2020
c5073f0
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
fm3 Feb 12, 2020
ecbd3fd
call me maybe
fm3 Feb 12, 2020
04e75d6
font size
fm3 Feb 12, 2020
0c3cd25
registration redirect from demo instance to dashboard
hotzenklotz Feb 12, 2020
f129a8d
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
hotzenklotz Feb 12, 2020
a30c612
lint
fm3 Feb 12, 2020
a7eb03d
mail
normanrz Feb 12, 2020
cb7e944
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
normanrz Feb 12, 2020
bcead23
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
hotzenklotz Feb 12, 2020
6198d9e
demoSender in conf
fm3 Feb 12, 2020
accbe6b
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
fm3 Feb 12, 2020
25634ff
use Links for create tracings from dashboard
fm3 Feb 12, 2020
1b5273d
fix authentication modal
fm3 Feb 12, 2020
3b330e6
use default registration form if not demo instance
fm3 Feb 12, 2020
0b4839d
pretty backend
fm3 Feb 12, 2020
8b969da
email template
normanrz Feb 12, 2020
2b215b9
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
normanrz Feb 12, 2020
038ff03
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
fm3 Feb 12, 2020
80c2d7a
help texts
normanrz Feb 15, 2020
ecb27b6
lint
normanrz Feb 15, 2020
d6cb456
docs
normanrz Feb 17, 2020
43330b2
extract dataset-cache
normanrz Feb 18, 2020
afb567b
Update frontend/javascripts/oxalis/view/version_view.js
normanrz Feb 18, 2020
ac992f3
improved dataset cache
normanrz Feb 18, 2020
3802861
Merge branch 'master' into better-onboarding
normanrz Feb 18, 2020
ea49722
changelog
normanrz Feb 18, 2020
e223d21
pretty
normanrz Feb 18, 2020
3da46fc
Merge remote-tracking branch 'origin/master' into better-onboarding
normanrz Feb 21, 2020
b233049
fixes use of Persistance
normanrz Feb 21, 2020
52e8bcb
fixes use of Persistance
normanrz Feb 21, 2020
143ae79
Merge branch 'master' into better-onboarding
normanrz Feb 25, 2020
988221a
re-added newline
normanrz Feb 25, 2020
3e053f2
pr feedback
normanrz Feb 25, 2020
0ab8ddc
no default isDemoInstance
normanrz Feb 25, 2020
47a4949
pr feedback
normanrz Feb 27, 2020
caeedef
Merge branch 'master' into better-onboarding
normanrz Feb 27, 2020
e2740ec
show organization's display name in signup form
normanrz Feb 27, 2020
8c3ca21
add option to specify both organization name and display name in orga…
fm3 Mar 4, 2020
01896c3
default organizationDisplayName
normanrz Mar 4, 2020
3dfa3a1
add /organizationsIsEmpty route
fm3 Mar 4, 2020
2b6ac0a
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
fm3 Mar 4, 2020
14294f6
merge
normanrz Mar 4, 2020
e7a6915
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
normanrz Mar 4, 2020
4875c91
implement getOrganization API
normanrz Mar 4, 2020
d53ec23
user list styling
normanrz Mar 4, 2020
f56b022
organizationteam is always created as Default. add route organization…
fm3 Mar 10, 2020
55b48bc
remove unused function param
fm3 Mar 10, 2020
5bd8901
Merge branch 'master' of github.com:scalableminds/webknossos into bet…
philippotto Apr 6, 2020
36902c3
resolve merge conflicts in Authentication.scala
fm3 Apr 6, 2020
af9ed98
use default organization in impressum and onboarding flow
philippotto Apr 7, 2020
65ba4f9
Merge branch 'master' of github.com:scalableminds/webknossos into bet…
philippotto Apr 7, 2020
ccfb815
return null in organizations/default if >1 orga setup
fm3 Apr 8, 2020
f8386e3
Merge branch 'better-onboarding' of github.com:scalableminds/webknoss…
philippotto Apr 9, 2020
8232b81
don't list existing organizations in onboarding form
philippotto Apr 9, 2020
cd53a60
Merge branch 'master' of github.com:scalableminds/webknossos into bet…
philippotto Apr 9, 2020
d2d2fc7
remove unused imports
philippotto Apr 9, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ For upgrade instructions, please check the [migration guide](MIGRATIONS.md).
### Changed
- Made the navbar scrollable on small screens. [#4413](https://github.com/scalableminds/webknossos/pull/4413)
- Opening the settings sidebar when viewing a dataset or tracing defaults to the dataset settings now. [#4425](https://github.com/scalableminds/webknossos/pull/4425)
- Better onboarding experience for new users on webknossos.org. [#4439](https://github.com/scalableminds/webknossos/pull/4439)

### Fixed
- Fixed that for uint16 data layer the default value range of [0, 255] was used, causing most of the data to look white without manual adjustments. Now the correct range of [0, 65535] is used as default. [#4381](https://github.com/scalableminds/webknossos/pull/4381)
Expand Down
1 change: 0 additions & 1 deletion app/Startup.scala
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ class Startup @Inject()(actorSystem: ActorSystem,
conf.Mail.Smtp.tls,
conf.Mail.Smtp.user,
conf.Mail.Smtp.pass,
conf.Mail.Subject.prefix
)
actorSystem.actorOf(Props(new Mailer(mailerConf)), name = "mailActor")
}
Expand Down
10 changes: 10 additions & 0 deletions app/controllers/Authentication.scala
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,13 @@ class Authentication @Inject()(actorSystem: ActorSystem,
Some(finalName)
}

def callMeMaybe = Action { implicit request =>
{
Mailer ! Send(defaultMails.registerMailDemo("Neuer Nutzer", "[email protected]"))
Ok
}
}

def handleRegistration = Action.async { implicit request =>
signUpForm.bindFromRequest.fold(
bogusForm => Future.successful(BadRequest(bogusForm.toString)),
Expand Down Expand Up @@ -454,6 +461,9 @@ class Authentication @Inject()(actorSystem: ActorSystem,
defaultMails.newOrganizationMail(organization.displayName,
email.toLowerCase,
request.headers.get("Host").headOption.getOrElse("")))
if (conf.Features.isDemoInstance) {
Mailer ! Send(defaultMails.registerMailDemo(user.firstName, user.email))
}
Ok
}
}
Expand Down
33 changes: 23 additions & 10 deletions app/oxalis/mail/DefaultMails.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,24 @@ class DefaultMails @Inject()(conf: WkConf) {

val defaultFrom = "[email protected]"

val demoSender = conf.Mail.demoSender

val newOrganizationMailingList = conf.WebKnossos.newOrganizationMailingList

def registerAdminNotifyerMail(user: User, email: String, brainDBResult: Option[String], organization: Organization) =
Mail(
from = email,
headers = Map("Sender" -> defaultFrom),
subject = s"A new user (${user.name}) registered on $uri for ${organization.displayName} (${organization.name})",
subject =
s"webKnossos | A new user (${user.name}) registered on $uri for ${organization.displayName} (${organization.name})",
bodyText = html.mail.registerAdminNotify(user, brainDBResult, uri).body,
recipients = List(organization.newUserMailingList)
)

def overLimitMail(user: User, projectName: String, taskId: String, annotationId: String, organization: Organization) =
Mail(
from = defaultFrom,
subject = s"Time limit reached. ${user.abreviatedName} in $projectName",
subject = s"webKnossos | Time limit reached. ${user.abreviatedName} in $projectName",
bodyText = html.mail.timeLimit(user.name, projectName, taskId, annotationId, uri).body,
recipients = List(organization.overTimeMailingList)
)
Expand All @@ -40,33 +43,43 @@ class DefaultMails @Inject()(conf: WkConf) {
implicit messages: Messages) =
Mail(
from = defaultFrom,
subject = "Thanks for your registration on " + uri,
subject = "webKnossos | Thanks for your registration on " + uri,
bodyText = html.mail.register(name, brainDBresult.map(Messages(_)), enableAutoVerify).body,
recipients = List(receiver)
)

def registerMailDemo(name: String, receiver: String)(implicit messages: Messages) =
Mail(
from = demoSender,
subject = "Welcome to webKnossos",
bodyHtml = html.mail.registerDemo(name).body,
recipients = List(receiver)
)

def activatedMail(name: String, receiver: String) =
Mail(from = defaultFrom,
subject = s"Your account on $uri was activated",
subject = s"webKnossos | Your account on $uri was activated",
bodyText = html.mail.validated(name, uri).body,
recipients = List(receiver))

def changePasswordMail(name: String, receiver: String) =
Mail(from = defaultFrom,
subject = "Your webKnossos password was changed",
subject = "webKnossos | Your webKnossos password was changed",
bodyText = html.mail.passwordChanged(name).body,
recipients = List(receiver))

def resetPasswordMail(name: String, receiver: String, token: String) =
Mail(from = defaultFrom,
subject = "Confirm resetting your webKnossos password",
bodyText = html.mail.resetPassword(name, uri, token).body,
recipients = List(receiver))
Mail(
from = defaultFrom,
subject = "webKnossos | Confirm resetting your webKnossos password",
bodyText = html.mail.resetPassword(name, uri, token).body,
recipients = List(receiver)
)

def newOrganizationMail(organizationName: String, creatorEmail: String, domain: String) =
Mail(
from = defaultFrom,
subject = "New webKnossos Organization created on " + domain,
subject = "webKnossos | New webKnossos Organization created on " + domain,
bodyHtml = html.mail.newOrganization(organizationName, creatorEmail, domain).body,
recipients = List(newOrganizationMailingList)
)
Expand Down
4 changes: 1 addition & 3 deletions app/utils/WkConf.scala
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,7 @@ class WkConf @Inject()(configuration: Configuration) extends ConfigReader {
val user = get[String]("mail.smtp.user")
val pass = get[String]("mail.smtp.pass")
}
object Subject {
val prefix = get[String]("mail.subject.prefix")
}
val demoSender = get[String]("mail.demoSender")
}

object WebKnossos {
Expand Down
18 changes: 4 additions & 14 deletions app/views/mail/register.scala.html
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
@( name: String, brainDBresult: Option[String], enableAutoVerify: Boolean )
Hello @name,
@( name: String, brainDBresult: Option[String], enableAutoVerify: Boolean ) Hello @name, thank you
for signing up for an webKnossos account! @if(!enableAutoVerify) { Your account is going to get
activated after an administrator has reviewed your details. } @if(brainDBresult.isDefined) {
@brainDBresult.get } Enjoy using webKnossos Your webKnossos Team
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the newline-removal intended?


thank you for signing up for an webKnossos account!
@if(!enableAutoVerify) {
Your account is going to get activated after an administrator has reviewed your details.
}

@if(brainDBresult.isDefined) {
@brainDBresult.get
}

Enjoy using webKnossos

Your webKnossos Team
126 changes: 126 additions & 0 deletions app/views/mail/registerDemo.scala.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
@( name: String )
<html>
<body>
<style type="text/css">
body,
p,
li,
h2 {
font-family: "Monospaced Number", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial,
sans-serif;
font-size: 14px;
line-height: 1.5;
}
</style>
<div style="margin-left: auto; margin-right: auto; max-width: 600px;">
<p>
<a href="https://webknossos.org"
><img
src="https://static.webknossos.org/mails/email-header.600.png"
alt="webKnossos"
style="width: 100%; max-width: 600px;"
/></a>
</p>

<p>Hi @name,</p>
<p>
welcome to your new webKnossos account. You are ready to start exploring and collaboratively
annotate large 3D datasets.
</p>
<h2 style="font-size: 1rem;">Get started</h2>
<ul style="font-size: 1rem;">
<li>
Use webKnossos for free with any of the public datasets on
<a href="https://webknossos.org">webknossos.org</a>. All webKnossos features can be used
with your new free account.
</li>
<li>
Upload your own dataset into your own space private workspace. If you want, you can
publish your dataset into our public gallery.
</li>
<li>
Invite colleagues from your lab or external collaborators to work with your data.
webKnossos works great for small teams and supports management of large annotators crowds.
</li>
</ul>

<h2 style="font-size: 1rem;">Get support</h2>
<p>
To learn more about how to get the most out of webKnossos,
<a href="https://docs.webknossos.org">check out the documentation</a> or
<a href="https://www.youtube.com/watch?v=tNwDvo5MnDc">watch this introductory video</a>.
</p>
<p>
<a href="https://docs.webknossos.org"
><img
src="https://static.webknossos.org/mails/screen-docs.png"
alt="screenshot of documentation"
width="200"
height="137"
/></a>
<a href="https://www.youtube.com/watch?v=tNwDvo5MnDc"
><img
src="https://static.webknossos.org/mails/screen-video.png"
alt="screenshot of intro video"
width="200"
height="137"
/></a>
</p>

<p>
Please don’t hesitate to get in touch with me, if you have any questions about using
webKnossos.
</p>

<p>I am looking forward to hearing from you.</p>

<p>Best regards,<br />Norman</p>

<p style="text-align: center; padding-top: 30px;">
<a href="https://webknossos.org"
><img
src="https://static.webknossos.org/mails/icon-webknossos.png"
alt="webKnossos"
style="width: 50px; height: 50px;"
/></a>
&nbsp;
<a href="https://docs.webknossos.org"
><img
src="https://static.webknossos.org/mails/icon-docs.png"
alt="Documentation"
style="width: 50px; height: 50px;"
/></a>
&nbsp;
<a href="https://www.youtube.com/channel/UCVQqjQ50lJORCZuLxnEE-tA"
><img
src="https://static.webknossos.org/mails/icon-video.png"
alt="YouTube Channel"
style="width: 50px; height: 50px;"
/></a>
&nbsp;
<a href="https://twitter.com/webknossos"
><img
src="https://static.webknossos.org/mails/icon-twitter.png"
alt="Twitter Channel"
style="width: 50px; height: 50px;"
/></a>
</p>

<div style="height: 60px;">&nbsp;</div>
<p style="color: #888; font-size: 0.6rem;">
You are receiving this email because you signed up for an account on webKnossos. You may
cancel your account at any time.
</p>
<p style="color: #888; font-size: 0.6rem;">
<a href="https://webknossos.org" style="color: #888;">webknossos.org</a> is a service by<br />
scalable minds GmbH &bull;
<a href="mailto:hello@@scalableminds.com" style="color: #888;">hello@@scalableminds.com</a
><br />
Großbeerenstr. 15, 14482 Potsdam, Germany &bull; Amtsgericht Potsdam, HRB 25763 &bull;
Managing Directors: Tom Bocklisch, Tom Herold, Norman Rzepka
</p>
<div style="height: 60px;">&nbsp;</div>
</div>
</body>
</html>
2 changes: 1 addition & 1 deletion conf/application.conf
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ mail {
user = ""
pass = ""
}
subject.prefix = "webKnossos | "
demoSender = ""
}

# Airbrake config (optional)
Expand Down
1 change: 1 addition & 0 deletions conf/webknossos.latest.routes
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ POST /maintenance
DELETE /maintenance controllers.MaintenanceController.closeMaintenance

# Authentication
GET /auth/callMeMaybe controllers.Authentication.callMeMaybe
GET /auth/autoLogin controllers.Authentication.autoLogin
POST /auth/register controllers.Authentication.handleRegistration
POST /auth/login controllers.Authentication.authenticate
Expand Down
8 changes: 4 additions & 4 deletions docs/dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
The Dashboard is the entry point to webKnossos.
You can manage your datasets, create annotations, resume existing annotations and manage active tasks.

## Datasets
## My Datasets
This screen shows all the available and accessible datasets for a user.
The presentation differs corresponding to the user role.
Normal users can start or continue annotations and work on tasks.
Expand All @@ -18,7 +18,7 @@ Learn more about managing datasets in the [Datasets guide](./datasets.md).

{% embed url="https://www.youtube.com/watch?v=naPL1jfCdOc" %}

## Tasks
## My Tasks

With Tasks, you can coordinate large annotation projects with your users.
Tasks are small assignments that are automatically distributed to users.
Expand All @@ -29,7 +29,7 @@ Read more about the tasks feature in the [Tasks and Projects guide](./tasks.md).

![Work with Tasks](./images/dashboard_tasks.png)

## Explorative Annotations
## My Annotations (Explorative)
Explorative Annotations are all skeleton or volume annotations that do not belong to a task.
They are created by starting new annotations from the datasets screen or by uploading [NML files](./data_formats.md#nml).

Expand All @@ -48,7 +48,7 @@ Read more about sharing your own annotations in the [Sharing guide](./sharing.md

![View Shared Annotations](./images/shared_annotations_tab.png)

## Dataset Gallery
## Featured Publications

This screen is the same gallery that is used on the public webKnossos screen.
Here, it also includes non-public datasets.
Expand Down
18 changes: 7 additions & 11 deletions docs/getting_started.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,20 @@ Feel free to [drop us a line](mailto:[email protected]) or [create a Pull

## Create a webknossos.org Account
Signing up to [webknossos.org](https://webknossos.org) is the easiest way to get started with webKnossos.
Go to [webknossos.org](https://webknossos.org) and create an account in the "Demo_Lab" organization.
Go to [webknossos.org](https://webknossos.org) and create a new account.
Please make sure to enter a correct email address.
After you have entered your details, the account will be automatically activated.

You can also choose to create a new organization which will allow you to upload private datasets at a later point in time and manage other users.
For testing purposes, the "Demo_Lab" organization is preferred.
After you have entered your details, the account will be automatically activated and logged in.

Accounts on [webknossos.org](https://webknossos.org) are free to use with published datasets.
If you wish to use private datasets, there is a fee that covers storage costs and also provides support services such as dataset conversions.
Check out the [pricing page for more details](https://webknossos.org/pricing).
You can also rent a fully-managed dedicated webKnossos server from scalable minds or install webKnossos on your own server.
If you wish to use private datasets, there is an upload limit of 10GB.
For more data storage, checkout the [pricing page for paid plans](https://webknossos.org/pricing) that covers storage costs and provide support services such as dataset conversions.
You can also rent a [fully-managed dedicated webKnossos server](https://webknossos.org/pricing) from scalable minds or install webKnossos [on your own server](./installation.md).


## Explore Published Datasets
On [webknossos.org](https://webknossos.org) there are already a bunch of published community datasets available for you to explore.
To get started, navigate to the `Datasets` tab on your [dashboard](./dashboard.md).
There, you find a list of all available datasets.
To get started, navigate to the `Featured Publications` tab on your [dashboard](./dashboard.md).
There, you find a list of all available public datasets.
Click on the dataset name to open the dataset.

![The list of available datasets](./images/getting_started-datasets.png)
Expand All @@ -53,7 +50,6 @@ You can also change the size of the viewports to see more details in your data a

## Your First Annotation
Click the `Create Tracing` button from the view mode of a dataset to create your first annotation.
Alternatively, navigate to the `Datasets` tab on your [dashboard](./dashboard.md), identify a dataset that your interested in and click on `Start Skeleton Tracing` to create a new skeleton annotation.
webKnossos will launch the main annotation screen allowing you to navigate your dataset and place markers to reconstruct skeletons.

Drag the mouse while pressing the left mouse button to navigate the dataset.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,4 +155,6 @@ declare module "react-router-dom" {
pathname: string,
options?: MatchPathOptions | string
): null | Match;

declare export function useHistory(): RouterHistory;
}
9 changes: 8 additions & 1 deletion frontend/javascripts/admin/api_flow_types.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ type APIDatasetBase = APIDatasetId & {
+lastUsedByUser: number,
+isForeign: boolean,
+sortingKey: number,
+owningOrganization: string,
+publication: ?APIPublication,
};

Expand Down Expand Up @@ -247,7 +248,13 @@ export type APIAnnotationType = $Keys<typeof APIAnnotationTypeEnum>;

export type APIAnnotationVisibility = "Private" | "Internal" | "Public";

export type TracingType = "skeleton" | "volume" | "hybrid";
export const TracingTypeEnum = Enum.make({
skeleton: "skeleton",
volume: "volume",
hybrid: "hybrid",
});

export type TracingType = $Keys<typeof TracingTypeEnum>;

export type APITaskType = {
+id: string,
Expand Down
Loading