Git Product home page Git Product logo

Comments (8)

SteveFortune avatar SteveFortune commented on June 19, 2024

Also, new name: BetweenKit

from between-kit.

SteveFortune avatar SteveFortune commented on June 19, 2024

We need to find a better way to render cloned dragging views as well. At the moment its clear that NSKeyArchiver causes hard crashes when archiving / unarchiving some attributes of views. There is also the issue of users having to manually integrate archiving / unarchiving for custom views. Find a better solution!

from between-kit.

SteveFortune avatar SteveFortune commented on June 19, 2024

The deadline for BetweenKit is the new year.

from between-kit.

SteveFortune avatar SteveFortune commented on June 19, 2024

A current limitation is that 'delete' areas can't sit on top of registered collections. That is, a deletion occurs if and only if a valid drag is stopped out side of all collections. We may want a deletion area to 'hover' over collections which currently is not possible.

from between-kit.

SteveFortune avatar SteveFortune commented on June 19, 2024

##Plan revision

###Phase 1

  • Migrate the drag-n-drop routing logic into its own, isolated class DONE
  • Allow for the gesture listener to be injected to this class DONE
  • Create a manager-type class to register draggable components against and coordinate how the gesture recogniser is configured and injected NOT DONE
  • Should fix #5, #6, #14 CLOSED
  • Should allow for #11 CLOSED
  • Should pave the way for #7 CLOSED, #16 IN PROGRESS, #22 CLOSED

Phase 2

  • Utility I3Collection implementations:
    • UICollectionView
    • UIView with subviews
  • Move to using NSIndexPaths instead of CGPoints in data source methods to reduce boilerplate
  • More functional example test cases:
    • Migrate all of the examples from v1
    • Add new examples covering: > 3 collections, mixtures of different types of collections, complex
      drag data source configuration, custom rendering
    • This should address #16
  • Address limitation with deletion areas only available outside of all collections
  • Start exploring core data integration and experiment with persistent helpers
  • Asynchronous drag delegation? As a user, I may want to retrieve the I3DragDataSource configuration asynchronously, maybe via a network request. For example, maybe I have an online TODO list app that needs to fetch an access control list from the server to determine whether I can rearrange 2 TODOs..
    • How can we offer an asynchronous delegate API via I3DragDataSource
    • How would we approach managing drag coordination during the asych call? Would we lock the UI? Would we be less coarse about it and just lock the items we're handling at that time?

Phase 3

  • editing and moving integration and tests
  • Review the plan
  • Also look at releasing a new version of Rainbit that utilises some of this richer functionality
  • Travis / Jenkins

Also from now on, I'm going to create separate issues for each individual items on the list rather than just referencing #28.. All BetweenKit branches should merge into task-28-build-2.0.0 until stable.

from between-kit.

SteveFortune avatar SteveFortune commented on June 19, 2024

Should we consider removing the readonly collectionView property form the I3Collection protocol? So far, its proved to be unnecessary. We could just require collections to be of type UIView<I3Collection>... ?

from between-kit.

SteveFortune avatar SteveFortune commented on June 19, 2024

Just a side note: I think with the recent proposed 'drop handling' alg in #15, BetweenKit seems like it will be quite an opinionated framework.

from between-kit.

SteveFortune avatar SteveFortune commented on June 19, 2024

##Plan revision

###Phase 1

  • Migrate the drag-n-drop routing logic into its own, isolated class DONE
  • Allow for the gesture listener to be injected to this class DONE
  • Create a manager-type class to register draggable components against and coordinate how the gesture recogniser is configured and injected NOT DONE
  • Should fix #5, #6, #14 CLOSED
  • Should allow for #11 CLOSED
  • Should pave the way for #7 CLOSED, #16 IN PROGRESS, #22 CLOSED

###Phase 2

  • Utility I3Collection implementations: DONE
    • UICollectionView
    • UIView with subviews Unnecessary
  • Move to using NSIndexPaths instead of CGPoints in data source methods to reduce boilerplate DONE
  • More functional example test cases:
    • Migrate all of the examples from v1 DONE
    • Add new examples covering: > 3 collections, mixtures of different types of collections, complex
      drag data source configuration, custom rendering DONE
    • This should address #16 DONE
  • Address limitation with deletion areas only available outside of all collections DONE
  • Start exploring core data integration and experiment with persistent helpers NOT DONE
  • Asynchronous drag delegation? As a user, I may want to retrieve the I3DragDataSource configuration asynchronously, maybe via a network request. For example, maybe I have an online TODO list app that needs to fetch an access control list from the server to determine whether I can rearrange 2 TODOs..
    • How can we offer an asynchronous delegate API via I3DragDataSource
    • How would we approach managing drag coordination during the asych call? Would we lock the UI? Would we be less coarse about it and just lock the items we're handling at that time?
    • DONE - Added use case for this
  • editing and moving integration and tests DONE

###Phase 3

  • Travis / Jenkins
  • Proof read all of our comments and existing READMEs throughout the framework, tests and use cases
  • Memory profiling
  • Documentation:
    • README
      • Overview of the project
      • Overview of features
      • Installations / Requirements / Dependencies
      • Point to Other Docs
        • Tests Intro
        • Use Cases Intro
        • Point to licenses
        • Basic Usage
    • What's New in 2.0.0
      • New Features
      • Deprecated Features
      • Migration Tips
      • Breaking Changes
      • Legacy
    • Bug Reporting and Contributions
      • Where to report bugs
      • Contribution Guidelines
        • No particular Objective-C style
        • Would be nice if methods were commented
        • Full unit test coverage - travis must pass
        • If it brings a significant new feature to the table, a use case might be required
    • Basic Usage Guide
      • Introduction of the framework components *remember to include a few docs around memory management
      • Setting up a drag environment
      • Etc..
    • Unit Test - README
      • Running them
      • Unit Test components (Creation Methods, Fixtures, Mocks, etc)
    • Use Cases
      • Overview / Installation
      • Index
    • Licenses
      • Fontawesome
      • Main MIT License
      • ... any others?
  • Generate a github website
  • Change repo name
  • Submit podspec to the CocoaPods repo
  • Release

What we will do in the future:

  • Document how one might implement their own I3Collection that is not a table or collection view (this would include examples of how to categorise or extend NSIndexPath appropriately
  • Core Data integration
  • Draggable 'base' controller - further help the user to set all this up

from between-kit.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.