Skip to content
Permalink
Branch: master
Commits on Oct 9, 2019
  1. Revert "Revert "Consolidate split panel handling, save divider locati…

    bengotow committed Oct 9, 2019
    …ons to local storage""
    
    Summary: This re-applies https://dagster.phacility.com/D1216 and fixes infinite height adjustment by adding an explicit height to the LogsScrollingTable. For some reason this is required in Chrome but was working fine in FF.
    
    Test Plan: View runs page
    
    Reviewers: #ft, alangenfeld
    
    Reviewed By: #ft, alangenfeld
    
    Subscribers: alangenfeld
    
    Differential Revision: https://dagster.phacility.com/D1253
Commits on Oct 8, 2019
  1. Consolidate split panel handling, save divider locations to local sto…

    bengotow committed Oct 4, 2019
    …rage
    
    Summary: Small diff that makes panel widths "sticky", so if you adjust the size of the execution plan, etc. it stays there.
    
    Test Plan: Run snapshot tests
    
    Reviewers: #ft, alangenfeld
    
    Reviewed By: #ft, alangenfeld
    
    Differential Revision: https://dagster.phacility.com/D1216
Commits on Oct 3, 2019
  1. Add Cancel and Delete menu items to the runs history view

    bengotow committed Oct 3, 2019
    Test Plan: Run tests
    
    Reviewers: #ft, alangenfeld
    
    Reviewed By: #ft, alangenfeld
    
    Differential Revision: https://dagster.phacility.com/D1189
  2. Expose run filtering via GraphQL and implement pagination in Dagit

    bengotow committed Oct 3, 2019
    Summary:
    This diff implements server-side run filtering and client-side pagination through runs in Dagit. There are two new GraphQL endpoints that map on to the run storage interface:
    
    `pipelineRunsOrError` replaces `pipelineRuns`. Params are cursor, limit, and a selector with one of the following:
    
    ```
    type PipelineRunsFilter {
      runId: String
      pipeline: String
      tagKey: String
      tagValue: String
      status: PipelineRunStatus
    }
    ```
    
    Example usage:
    
    ```
    query {
      pipelineRunsOrError(
        limit: 1,
        cursor: "9e51122f-9c6f-47c0-b92f-4bd156f4f96b",
        filter: {
          pipeline: "log_spew"
        }
      ) {
        ... on PipelineRuns {
          results {
            pipeline {
              name
            }
            runId
          }
        }
        ... on InvalidPipelineRunsFilterError {
          message
        }
      }
    }
    ```
    
    I also added `pipelineRunTags`, which returns all of the key-value tags currently in use and implemented it in run_storage. This allows for search autocompletion based on tags.
    
    ```
    query {
      pipelineRunTags {
        key
        values
      }
    }
    ```
    
    The UI has been made a bit more minimal - the filter box looks the same but only allows you to put in one filter, and the solid subset option is gone. Status was merged in since you can only filter by status if you do not choose another filter, and I removed the sort box. I also removed the "most recent run" box because it was really just a normal row pulled out of the table. (Originally it was going to show extra info.)
    
    Pagination works by requesting (displayed + 1) rows. If we want to show 50 but find that there are 51, we know there's a "next page". A next page button appears at the bottom and clicking it advances the cursor. Because we use runIds as cursor and they are non-sequential there's no way to know what the cursor for "N-50" would be, so the cursor is stored in the browser URL bar and your browser back button will take you to the previous page. The filter / search is synced to the URL bar as well so you can share links to specific filters.
    
    I also made the UI show the tags on the runs in the `Execution Params` columns. Boring styling for now.
    (EDIT: This seems to not work - you can request `pipelineRuns { tags { key value }}` via GraphQL but the tags are never returned.
    
    Test Plan: Run tests
    
    Reviewers: #ft, alangenfeld
    
    Reviewed By: #ft, alangenfeld
    
    Subscribers: schrockn, prha
    
    Differential Revision: https://dagster.phacility.com/D1150
Commits on Oct 1, 2019
  1. Fix misc GitHub issues related to Dagit UI

    bengotow committed Oct 1, 2019
    Summary:
    Submitting these as a single diff because they all impact the snapshot tests and would merge conflict each other...
    
    #1769: Default to the light theme if no theme is provided to ConfigTypeSchema
    #1769
    
    #1766: Don’t allow free-text search tokens that are an empty string (match all runs)
    #1766
    
    #1757: Allow the execution UI to be rendered with no data for better empty state
    #1757
    
    #1756: Use overscroll: auto where preferable for always-visible scrollbars
    #1756
    
    Update tests
    
    Test Plan: Run snapshot tests
    
    Reviewers: #ft, alangenfeld
    
    Reviewed By: #ft, alangenfeld
    
    Differential Revision: https://dagster.phacility.com/D1139
  2. Initial pass at Dagit “Reload” button based on single watch file

    bengotow committed Sep 23, 2019
    Summary:
    #1684
    
    This diff replaces the dagit watch/no-watch behavior with a button
    in the UI that can be clicked to relaunch Dagit (and refresh the web UI without
    a page reload!)
    
    There are a few things to discuss here:
    
    - I removed watch/no-watch, but we could also disable --watch by default
      and leave it as an option.
    
    - I think the old watch mode may have been partially broken because it watched
      './', meaning it would only work if you launched dagit from a repo folder.
      dagit.py doesn't do enough arg inspection to know where it should be watching. (Eg:, if you run `dagit -y /Users/bengotow/Work/F376/Projects/dagster/examples/repository.yaml` from your Desktop, it's monitoring your Desktop not the repo.)
    
    - watchmedo only monitors directories, so we create a tmp directory containing a
      single file to monitor for changes.
    
    - Some very whacky weakref magic causes dirs created via seven.TemporaryDirectory()
      to be deleted when watchmedo relaunches the child process. Moving the invocations
      of this outside of main() fixes it and I'd love to know why...
    
    - The UI does not show a "unsaved changes" state. I think we can do this, but it'll
      be a bit complicated and we may decide we don't want it, so I'll explore that in
      a stacked diff.
    
    Test Plan: Run tests
    
    Reviewers: #ft, schrockn, alangenfeld
    
    Reviewed By: #ft, schrockn, alangenfeld
    
    Subscribers: alangenfeld, schrockn
    
    Differential Revision: https://dagster.phacility.com/D1075
  3. Move log stream out of Apollo, memoize row contents and fix cascading…

    bengotow committed Sep 27, 2019
    … renders
    
    Summary:
    This diff makes the run log viewer faster.
    
    It turns out there were several problems that had built up in here. We've been mostly implementing the "streaming GraphQL subscription which appends to an array" ourselves, but on each inbound update we update the data and commit it to Apollo's normalized store. We have no interest in a normalized store for log entries and Alex noted earlier today it's almost shockingly slow. We then turn around and pull the data right back out for display, and it seems to re-pluck each requested key-value pair. Oof.
    
    This diff merges the `RunSubscriptionProvider` and `LogFilterProvider` into a single `LogProvider` that opens a websocket, sends the GraphQL request, and then accumulates the logs into our own array which is vended to it's children. The logs are not requested through Apollo at all. It turns out it's faster to retrieve the "initial" / old logs through the socket too by using a cursor of `0`. (That way we don't have to insert / retrieve the older logs from Apollo either.)
    
    This diff also avoids throwing away the virtualized grid's cell offset + height cache every time new logs arrive. We were doing this because the search / filters in the view hide items and invalidate the row offsets. Now we generate a key from the filters - as long as the filters remain the same, we know the logs are append-only and it's safe to keep using the cached row offsets. This eliminates one heavy double-render caused by the height calculations.
    
    Because we know we're receiving the logs in order, I also made the LogProvider attach a clientsideKey to each message. Having a unique key for each item in the array allows us to keep the cell height cache even when you're filtering the array and the items change array indexes. (So we invalidate the row offsets as you filter, but not the row sizes).
    
    It turns out we were also spending a good deal of time just rendering the actual cells. Because each cell is rendered and then re-rendered with it's fixed size, memoizing the cells /inside/ of the main row container is effective but memoizing them at the top level doesn't work because the `style` prop is changing.
    
    Anyway. Here we go - this is just a log_spew run with the Debug message filter toggled on:
    
    {F40499}
    
    {F40500}
    
    Test Plan: Run log_spew (faster)
    
    Reviewers: #ft, alangenfeld
    
    Reviewed By: #ft, alangenfeld
    
    Subscribers: alangenfeld
    
    Differential Revision: https://dagster.phacility.com/D1096
Commits on Sep 27, 2019
  1. Fix GraphQL error when switching between pipelines with different modes

    bengotow committed Sep 27, 2019
    Summary: The error toasts that appeared when you switched pipelines in the execute tab were caused by the local storage provider, which was vending data for the wrong pipeline for one render cycle because it was keeping it's own state in sync with a useEffect (componentDidUpdate) hook.
    
    Test Plan: Run and see no errors!
    
    Reviewers: #ft, alangenfeld
    
    Reviewed By: #ft, alangenfeld
    
    Subscribers: alangenfeld
    
    Differential Revision: https://dagster.phacility.com/D1099
Commits on Sep 20, 2019
  1. Move log-dervied stats to Python, expose via graphql as `run.stats`

    bengotow authored and alangenfeld committed Sep 19, 2019
    Summary:
    This diff allows us to avoid pulling the logs for every run by moving the computation of run statistics (number of steps failed / succeeded, etc) to GraphQL.
    
    I don't have any performance statistics yet but this should free us up to make further improvements.
    
    I left the calculation of statistics in a new file (core.execution.stats) because I wasn't sure whether it should be part of run_storage or event_storage. Ideally, I think that we'd "freeze" these values into the run JSON / database row once the run has completed, so we ever only need to dynamically build reuslts for runs that are currently running.
    
    Test Plan: No new tests yet
    
    Reviewers: #ft, schrockn, bengotow
    
    Reviewed By: #ft, schrockn
    
    Subscribers: alangenfeld, schrockn
    
    Differential Revision: https://dagster.phacility.com/D980
Commits on Sep 19, 2019
  1. Add a floating context panel to the Dagit config editor

    bengotow committed Sep 18, 2019
    Summary:
    This diff adds a floating panel to the right side of the config editor in the Execute tab that shows the configType schema at the insertion point. This leverages the existing <ConfigTypeSchema/> component that powers the Type Explorer and uses the same data we pull for autocompletion.
    
    I also memoized a few components that were updating on every keystroke (including a dropdown, which resizes itself and leads to double renders). This approximately doubles typing performance in the config editor when there's a good chunk of text there. Almost all of the remaining time (still borderline unacceptable) is spent in Codemirror, so it's less clear what we can do about that.
    
    Test Plan: Run tests
    
    Reviewers: #ft, alangenfeld
    
    Reviewed By: #ft, alangenfeld
    
    Subscribers: schrockn, alangenfeld
    
    Differential Revision: https://dagster.phacility.com/D1057
Commits on Sep 18, 2019
  1. Add re-execute to the pipeline runs dropdown menus

    bengotow committed Sep 18, 2019
    Summary: This is a small diff that moves the dropdown actions menu shown in each row of the run history and adds "Re-execute". I renamed the existing "Open in Execute View..." to "Duplicate" and called the new Re-execute "Duplicate and Run"
    
    Test Plan: Run snapshot tests
    
    Reviewers: #ft, alangenfeld
    
    Reviewed By: #ft, alangenfeld
    
    Subscribers: alangenfeld
    
    Differential Revision: https://dagster.phacility.com/D1044
Commits on Sep 16, 2019
  1. Replace runs search bar with a nice autocompleting tokenized field

    bengotow committed Sep 13, 2019
    Summary: This stacks on D985 and converts the search bar on the runs page to a tokenizing typeahead that suggests searchable keys and then suggests values.
    
    Test Plan: Run snapshot tests
    
    Reviewers: #ft, prha
    
    Reviewed By: #ft, prha
    
    Subscribers: prha
    
    Differential Revision: https://dagster.phacility.com/D1029
  2. Basic implementation of search through run history

    bengotow committed Sep 9, 2019
    Summary:
    This diff adds a basic search bar to the runs list that searches pipeline name, mode,
    and stepsToExecute (if present.) I'm planning to add autocompletion / tokenization in
    a stacked diff.
    
    This also includes a small GraphQL interface change - the type of stepKeysToExecute
    was `(string | null)[] | null` which isn't quite right. If it's present, the elements
    are non-null strings. Updated the dauphin representation and checked that it's now
    (string | null)[]
    
    Test Plan: Run tests
    
    Reviewers: #ft, schrockn, prha
    
    Reviewed By: #ft, schrockn, prha
    
    Subscribers: prha, schrockn
    
    Differential Revision: https://dagster.phacility.com/D985
Commits on Sep 9, 2019
  1. Add autocompletion of bool true/false values in config editor

    bengotow committed Sep 5, 2019
    Summary: #1708
    
    Test Plan: Run tests
    
    Reviewers: #ft, schrockn
    
    Reviewed By: #ft, schrockn
    
    Subscribers: schrockn
    
    Differential Revision: https://dagster.phacility.com/D945
Commits on Sep 5, 2019
  1. Fix the example use of `logdir` to be `log-dir`

    bengotow committed Sep 5, 2019
    Summary: Nuff said
    
    Test Plan: Run tests
    
    Reviewers: #ft, schrockn
    
    Reviewed By: #ft, schrockn
    
    Differential Revision: https://dagster.phacility.com/D944
Commits on Sep 3, 2019
  1. Fix hook issues, stop serializing modal contents to JSON

    bengotow committed Sep 3, 2019
    Summary:
    This diff fixes the new modals. Allowing the presenter to pass a React tree as the content of the alert makes the rendering fully flexible but didn't work because the internal implementation was serializing the alert to JSON.
    
    This diff also fixes several regressions caused by the previous patch that moved a few things to the Hook syntax and exposed places where we need better test coverage. (It's surprising to me that the previous patch passed all the tests, actually.) I will write some additional tests in another diff.
    
    Test Plan: Run tests
    
    Reviewers: #ft, prha
    
    Reviewed By: #ft, prha
    
    Subscribers: prha
    
    Differential Revision: https://dagster.phacility.com/D920
  2. Upgrade apollo, switch to hooks where it increases readability

    bengotow committed Sep 3, 2019
    Summary: This diff converts uses of the Apollo components to useQuery, useMutation, useApolloClient in places where we can. (There are a few <Query> and <Mutation> components in Class components that can't easily be swapped over.)
    
    Test Plan: Run tests
    
    Reviewers: #ft, schrockn
    
    Reviewed By: #ft, schrockn
    
    Subscribers: alangenfeld, schrockn
    
    Differential Revision: https://dagster.phacility.com/D905
Commits on Aug 28, 2019
  1. Overhauled run history view

    bengotow committed Aug 28, 2019
    Summary:
    This diff replaces the old run history tab that showed runs of a particular pipeline with a new one that is at the top level of the Dagit UI and allows you to explore the config, etc. of previous runs and view summary stats.
    
    This diff also allows you to pass `?q=` in the query string of a run URL to pre-filter the logs, and pass `?config=&mode=&solidSubset=[]` to the /:pipeline/execute URL to create a new tab with that configuration.
    
    Right now this view auto-refreshes every 15 seconds and requires the logs for every run (to compute summary statistics like the number of failed expectations). This will be fixed later.
    
    {F37149}
    
    Test Plan: Run snapshot tests
    
    Reviewers: #ft, alangenfeld
    
    Reviewed By: #ft, alangenfeld
    
    Subscribers: sashank, alangenfeld
    
    Differential Revision: https://dagster.phacility.com/D858
  2. Initial pass at custom modification of the Dagre layout for wide pipe…

    bengotow committed Aug 28, 2019
    …lines
    
    Summary:
    This diff adds some post-layout logic that adjusts the output provided by the graph
    visualization library Dagre. Dagre does not support specifying max width/height on
    it's output, so if we detect that the graph contains a row of more than 25 nodes, we
    manually "split" it into multiple rows, shifting the rest of the graph down to make
    space.
    
    This normally works great, but it has a few caveats I've found:
    
    - If the really long line of nodes are connected to a lot of subsequent nodes,
      reflowing the row essentially breaks the "shortest path" logic that Dagre used.
      Eg: "A1 : A2, B1 : B2" x 50 may become "A1 : [A-Z]?2", which doesn't look as nice.
    
    - If the long line is two chunks of nodes with horizontal whitespace in between,
      we still apply our logic and also reflow the nodes together into a single block.
      We could turn this off, but in the interest of bounding the graph width it seemed OK.
    
    Before:
    
    {F37008}
    
    After: Note this is 25 nodes per row, but we can choose any max. I'd suggest keeping it high enough it's 100% better than the alternative.
    {F37009}
    
    EDIT: Here's what this looks like on Nick's other pipeline:
    {F37153}
    
    {F37154}
    
    Test Plan: Run tests
    
    Reviewers: #ft, schrockn
    
    Reviewed By: #ft, schrockn
    
    Subscribers: schrockn, alangenfeld
    
    Differential Revision: https://dagster.phacility.com/D844
Commits on Aug 22, 2019
  1. Performance improvements based on fan-in-out example DAG

    bengotow committed Aug 22, 2019
    Summary:
    This diff makes some performance improvements to the Pipeline Explorer because I noticed performance was garbage on the example fan-in-out DAG with a 150+ solids. Here's a quick breakdown:
    
    - The sidebar now shows at most 20 other invocations of the solid and a "Show All" button expands the rest. This eliminates ~500ms of click latency on fan-in-out caused by 500+ invocations of same solid rendering in the sidebar every time you click a solid.
    
    - Eliminates another 40ms of latency (50% of remaining) when clicking to a new solid in a large dag by replacing an expensive deep comparison of props in shouldComponentUpdate.
    
    - Fix a bug that caused the last frame of zoom in / zoom out animations to be dropped, resulting in the SVG being drawn at 0.98812 scale, which turns out is not great for performance.
    
    - Remove unnecessary <G> tags, unnecessary `opacity="1"` attributes, and some other things that were bloating the svg.
    
    - Call directly through to D3's points => svg path method and memoize the results for faster drawing of the connecting lines between solids. I experimented with different ways to do this even faster, but it turns out our current approach (one <path> per connection) is actually fairly ideal because the browser culls offscreen paths when you're zoomed in and only renders the ones partially visible.
    
    - This one is crazy. I found that when a solid was selected and the sidebar showing solid info was *scrollable*, panning and zooming the DAG was terribly slow. I have no idea why but by poking at this for a while I found that adding `position:relative` to the sidebar more than doubles pan performance in this specific case where the sidebar can scroll. Might need to file a Chromium issue against this one...
    
    **Overall Result:**
    
    - Panning is very very fast when zoomed in
    
    - Clicking solids is much faster
    
    - Zoom in / zoom out animation is slightly faster but still sorta garbage on this DAG. The browser is spending almost all the time in the Composite Layers rendering phase and I think that the size of the rasterized svg image is just enormous. We will probably need to rasterize to a canvas and transform ourselves to fix this. (Which would give us more control over the scale that we rasterize the image at, eg not 100%)
    
    Test Plan: Run tests
    
    Reviewers: #ft, prha
    
    Reviewed By: #ft, prha
    
    Subscribers: prha
    
    Differential Revision: https://dagster.phacility.com/D869
Commits on Aug 13, 2019
  1. Add dagster-dbt to install_dev_python_modules

    bengotow committed Aug 13, 2019
    Summary: Rebased on master and needed to add this to correct my dev env
    
    Test Plan: Run tests
    
    Reviewers: #ft, schrockn
    
    Reviewed By: #ft, schrockn
    
    Subscribers: schrockn
    
    Differential Revision: https://dagster.phacility.com/D805
Commits on Jul 29, 2019
  1. Avoid repeated calls to readFragment to shorten new-logs critical pat…

    bengotow committed Jul 29, 2019
    …h by 30%
    
    Summary:
    It turns out we spend a rediculous amount of time reading the data for the pipeline
    and then writing it back to the Apollo cache because their data store is heavily normalized.
    
    I think that long term we should consider streaming the logs via a raw GraphQL fetch and not
    try to store the logs into Apollo-client at all. In the very short term, we can switch from
    read+write, read+write, read+write to read+write, write, write, write. Because we know that
    the run data will not be updated from elsewhere.
    
    (The highlighted segment here is what is removed by this PR)
    
    {F34743}
    
    {F34744}
    
    Test Plan: Run tests
    
    Reviewers: #ft, schrockn
    
    Reviewed By: #ft, schrockn
    
    Subscribers: schrockn
    
    Differential Revision: https://dagster.phacility.com/D730
  2. Separate "Loading..." and "Process starting..." status messages

    bengotow committed Jul 29, 2019
    Summary: Resolves #1584
    
    Test Plan: Run tests
    
    Reviewers: #ft, max
    
    Reviewed By: #ft, max
    
    Subscribers: max
    
    Differential Revision: https://dagster.phacility.com/D726
  3. Assign fixed label hues to pyspark, spark, snowflake

    bengotow committed Jul 29, 2019
    Summary:
    Example of spark. Snowflake is a nice blue color.
    
    {F34752}
    
    Test Plan: Run tests
    
    Reviewers: #ft, natekupp
    
    Reviewed By: #ft, natekupp
    
    Differential Revision: https://dagster.phacility.com/D731
Commits on Jul 24, 2019
  1. Update client-side structured log presentation

    bengotow committed Jul 24, 2019
    Summary:
    Strip out the label column
    
    Remove graphQL data no longer needed since type will be in metadata
    
    Consolidate React classes used for log display
    
    Update client-side structured log presentation
    
    Test Plan: Run tests
    
    Reviewers: max, #ft
    
    Reviewed By: max
    
    Differential Revision: https://dagster.phacility.com/D690
Commits on Jul 18, 2019
  1. Initial pass at structured log display in the run view

    bengotow authored and schrockn committed Jul 18, 2019
    Summary:
    Fix bug where scrolling to the top scrolls you all the way to the bottom of the logs
    
    Initial + hacky fixes to the log viewer to incorporate structured logs
    
    Restructure log viewer to separate table implementation details from content
    
    WIP
    
    Styling as of July 2
    
    Slightly improved styling
    
    More UI iteration
    
    More cleanup and refactoring
    
    Test Plan: Run tests
    
    Reviewers: schrockn, alangenfeld, sashank
    
    Reviewed By: schrockn
    
    Subscribers: max
    
    Differential Revision: https://dagster.phacility.com/D527
Commits on Jul 3, 2019
  1. Disable the DEBUG log level by default

    bengotow committed Jul 3, 2019
    Summary: See title
    
    Test Plan: Tests still pass
    
    Reviewers: schrockn, alangenfeld
    
    Reviewed By: schrockn
    
    Differential Revision: https://dagster.phacility.com/D517
Commits on Jul 2, 2019
  1. Add a Re-execute button to the pipeline run view

    bengotow committed Jul 2, 2019
    Summary: Refactors the pipeline run view a bit so that you can re-execute a single step or re-excute the entire pipeline using a button in the top of the log area.
    
    Test Plan: Updated snapshot tests
    
    Reviewers: schrockn, alangenfeld
    
    Reviewed By: schrockn
    
    Differential Revision: https://dagster.phacility.com/D513
  2. Pull refactoring/cleanup off experimental EP branch

    bengotow committed Jul 2, 2019
    Summary:
    Hey folks - I did some cleanup of the existing execution plan on the branch where I was working on the experimental Gaant view. Just pulling the bits that can be merged now so that the new structured log viewer can build on these changes and not cause merge conflicts later.
    
    There are only two slight visual changes on this branch - I fixed the placement of the divider and added a bit of padding in one place in the execution plan where they seemed to be missing.
    
    Test Plan: JS snapshot tests updated
    
    Reviewers: alangenfeld, schrockn
    
    Reviewed By: schrockn
    
    Differential Revision: https://dagster.phacility.com/D512
Commits on Jun 15, 2019
  1. Initial improvements to the solid sidebar

    bengotow committed Jun 14, 2019
    Summary:
    This diff updates the Dagit "solid sidebar":
    
    - More clearly differentiate the current invocation and the solid definition by splitting the sidebar apart into two sections.
    
    - Add an "Invocations" tab which shows you all the invocations in the current pipeline and allows you to click to jump to another instance.
    
    - Make the collapsible headings "sticky" so you can opt to permanently hide Invocations, for example, or jump between invocations without the view resetting.
    
    - Font sizes in the sidebar are a bit more consistent.
    
    This diff also addresses the issues we had with handle IDs vs solid names. The URL bar is now solid names, not solid handles:
    http://localhost:3000/airline_demo_ingest_pipeline/explore/process_q2_market_data/s3_to_df/download_from_s3_to_bytes
    
    This fixes an issue that prevented clicking to navigate to another solid in the sidebar. In general in Dagit, the methods that allow you to focus / expand, etc. a particular solid all take either a solid `name` or a solid `path`, which is generated by splitting a handle.
    
    {F19553}
    
    Test Plan: Give it a spin!
    
    Reviewers: alangenfeld, schrockn
    
    Reviewed By: schrockn
    
    Differential Revision: https://dagster.phacility.com/D404
Commits on Jun 3, 2019
  1. Add support for composite solids to the Explore tab

    bengotow committed Jun 3, 2019
    Summary:
    This diff adds breadcrumbs to the explore tab and allows you to double-click into composite solids, which have a new purplish + double bordered appearance.  When you're within a composite solid, the DAG shows a containing box indicating the solid you're within, and when you don't have a selection you can view the parent solid and its input/output mappings in the right sidebar.
    
    Hovering over an input / output of a composite that is connected to one of it's child solids displays the name of the child. We should be able to do this the other way around as well. Will investigate that in a stacked diff.
    
    This diff also changes the URL structure within the explore tab. The path segments are the handle IDs, and a trailing slash indicates you're within the last path component rather than just selecting it. It seems that the solid HandleIDs are generated as dot-separated paths, so there's a bit of duplication in the URL currently, eg:
    
    ```http://localhost:3000/composition/explore/add_four/add_four.adder_1/add_four.adder_1.adder_1```
    
    I think we could fix this by allowing the client to rely on this HandleID structure, but I wasn't sure if this was a good idea.
    
    (Note the purple arrows were removed!)
    
    {F17086}
    
    Test Plan: Updated the snapshot tests
    
    Reviewers: alangenfeld, schrockn
    
    Reviewed By: schrockn
    
    Differential Revision: https://dagster.phacility.com/D205
Commits on May 9, 2019
  1. Short term improvements to the execution plan view (#1332)

    bengotow committed May 9, 2019
    * Remove double circle around disabled re-execute button
    
    * Make intermediate/materialization support more generic client-side
    
    * Switcch to a new display event interface which includes subitems
    
    * Move icons out to external SVGs
Commits on Apr 29, 2019
  1. Fix the link to contributing.html in the README (#1321)

    bengotow authored and schrockn committed Apr 29, 2019
    Scanned the rest of the links and they look ok.
Commits on Apr 17, 2019
  1. Hide `Nothing` dag text, use new type.displayName attribute (#1263)

    bengotow authored and schrockn committed Apr 17, 2019
    Addresses both #1218 and #1256.
    
    (Notice that the snowflake_load output type is shown, and the input is just a dot without any description. We're not collapsing multiple "nothing" inputs yet - I think that'll take a bit more work and incorporation into the actual flow algorithm, but this hides the names + content similar to the way the solid type signature works.)
    
    <img width="449" alt="image" src="https://user-images.githubusercontent.com/1037212/56262971-b2ac8880-60a6-11e9-9ba2-83fffe5dc41c.png">
Commits on Apr 16, 2019
  1. Bind the start button to Ctrl-Enter (#1254)

    bengotow authored and schrockn committed Apr 16, 2019
    Nuff said! This is added as a document-level keyboard event and not a React component event handler so the button doesn't need to be the focused element.
    
    Resolves #1002
Older
You can’t perform that action at this time.