Coder Social home page Coder Social logo

calculist's Introduction

Calculist

Build Status

For private beta participants, please use this repository's issues to report bugs or make feature requests. If you don't have a GitHub account, you can email me at [email protected].

About this repo

The code in this repo is in a state of transition as the core document functionality is being decoupled from the current working code that drives app.calculist.io.

Eventually, this repo will contain all the code that drives the list document model and editing interface, and it will be generic enough to be reusable in many different contexts.

calculist's People

Contributors

danallison avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

calculist's Issues

Item Properties

An extensible way of defining properties for an item. This would be done by having one sub-item for properties e.g. $properties, and it has sub-items with each having the format PROPERTY [=] VALUE (or similar).

This would be useful in a number of situations:

  • For an API as each item property can be referenced for different actions
  • For trying to narrow down a search
  • As a way to store structured metadata for items

Example:

  • Item A
    • $properties
      • Creation Datetime [=] 17:39 29/02/17
      • Deadline Datetime [=] 12:43 21/07/17
      • Assignee [=] @Dan
      • Followers [=] @Jake @Steve
      • Priority [=] High
      • Status [=] In-progress
      • Completion % [=] 30
      • Reminder1 Datetime [=] 12:43 20/07/17
      • Reminder2 Datetime [=] 12:43 19/07/17
      • Reminder2 Text [=] This must be completed within 48 hours!
      • Notes [=] blah blah blah
      • Tags [=] #Software #Management
    • sub item A blah blah
    • sub item B blah blah

On the Preferences list there could be an Item Properties section which allows commenting out if you want to disable any properties list-wide, or to add custom user-generated ones.

This sort of extensible framework also is flexible enough to allow later GUI customisability e.g. maybe some people want to display the Status and Completion % in-line with the item to it's left or right or perhaps below it, whereas others might prefer seeing Assignee and Deadline Datetime. This would also solve #26 nicely.

The GUI for this could also be organised via properties e.g. GUI itembelow [=] Notes, GUI itemleft [=] Status, GUI itemright1 [=] Priority, GUI itemright2 [=] Completion %.

Feature request: collaboration

Being able to share a bullet with somebody to show them your content or even edit it together would be a very useful feature to have.

Click + Drag to reorder

I expect this is already on the list (that was not supposed to be a joke... >.<), but I wanted to suggest being able to click and drag the item bullets to be able to arrange them.
As is, clicking them toggles their collapse state, which is handy, but dragging does nothing (aside from text highlighting).

Loving the possibilities and interactions thus far! :D Keep up the fantastic work! I'm already looking at replacing at least part of my Workflowy usage with this.

Nothing is shown on top page

Screenshot

Chrome console log:

Uncaught SyntaxError: Invalid or unexpected token
application-6fc1c0b….js:14 Uncaught ReferenceError: WORKER_FILE_PATH is not defined
    at application-6fc1c0b….js:14
    at application-6fc1c0b….js:14
    at Nn (application-6fc1c0b….js:4)
    at Function.ah [as update] (application-6fc1c0b….js:5)
    at application-6fc1c0b….js:14
    at i (application-6fc1c0b….js:4)
    at application-6fc1c0b….js:5
    at application-6fc1c0b….js:5
    at Function.xa [as remove] (application-6fc1c0b….js:5)
    at l (application-6fc1c0b….js:14)

I tried clearing cookies and re-logged in but same result.

Reference / embed (item from) other list

This one might be complicated, to be fair.

I currently don't see any mechanism to have information shared across lists (though item sharing might cover this implicitly).
Let's say I have some reference material which I keep in a Knowledge Base list.
In another list, which is dedicated to a project, I may want to reference this material.
A direct embed mechanism (such that we are effectively modifying the other list/item should we modify the item) would likely cover this well.
Note that it would also be convenient to be able to reference an item again from within the same list (ex. task dependencies).
If sharing will already incorporate this kind of mechanic then that'd be lovely. :)

random() behaves erratically

Hi! I don't know if adding feature requests is useful right now, but, I was toying around today and found that random() can be called, but the way it is re-executed very frequently (so the values just keep shifting around every time you edit anything) makes it of questionable use (depending on what you are trying to do). I see several possibilities.

  • The current behavior: anything generated with randomness will keep shifting around. Values with randomness in their history are ephemeral; you can't really hold on to anything, you just watch them pass by. This can give you a representative idea of what samples look like.
  • The current behavior with a little tweaking: maybe provide a little more control over when things are re-generated, so that you can keep one sample in view longer despite editing some irrelevant things somewhere else; but, randomly generated values are still basically ephemeral,.
  • Ephemeral by default, but provide a way to "persistently copy" a random value, such that the copy is never re-calculated. Maybe this is already doable via commands?
  • Ephemeral by default, but seedable in order to get consistent behavior.
  • Seeded with the same consistent seed by default, so behavior is consistent.

What I wanted to do was generate random objects which would then stick around, so either randomness with a consistent seed, or randomness with persistent-copy.

Unexpected behavior in Delete List Command

Hey Dan, thanks for making that permanently delete list "..." command so quickly!

I just tried it out with one of my lists and it worked but it had a little bit of unexpected behavior.
I used the command from my root list on the first list I created to start playing around with calculist.
The unexpected behavior came when the list I had deleted still showed in my list of Lists, I then tried to use goto list "MyDeletedList" and it brought me to the same url the list had been at previously but displayed the following error message:
screen shot 2016-10-05 at 8 29 53 am

After a page refresh everything went to the expected state, the deleted list no longer showed in the list of Lists and using goto list "MyDeletedList" gave the popup saying the list couldn't be found and returned me to where I was.

I did a few more tests and I think there are 3 basic issues going on, I've listed them in the order I think most important:

  1. While you deleted the data, you didn't inform/update some of the state and/or metadata being held by the application (such as the 'can I goto this list or not' state)

    The fix for this would be to make sure to update the applications state on delete.

  2. If I visit a link to a list that doesn't exist like https://app.calculist.io/Nathan/doesnotexist it will display that error message I saw.

I think better behavior would be to redirect to the root list and give a popup saying "List could not be found"
3. The root still displays outdated information

You could solve this by automatically refreshing the page on a delete (this would also solve problem #1) or you could also re-render the list so that it displays the most up to date data.

P.S. Thanks for all the great work you've been doing! Calculist has already helped me brainstorm new services and features at work. I can't wait to see how powerful a tool this will become.

Use as todo list tool

Is there a possibility to use calculist for managing todo-lists?
I would like to achieve something like the following: Have checkboxes next to the items of a list, clicken that checkbox marks the box and crosses/greys out the list item. Also the item gets automatically sorted down to the other finished items. Ideally there is a progress indicator (percentage number, or status bar) at the parent list item which is also automatically updated.

ctrl + <arrow key> shortcuts not working in OS X

Keyboard shortcuts containing ctrl and an arrow key have no apparent effect. When ctrl is replaced with alt in the preferences page they work as expected. ctrl + enter and ctrl + k work as expected.

I'm on a 13-inch Macbook running OS X Yosemite using the built-in keyboard.

Deployment Guide or documentation?

Hi there - just found calculist and I'm wondering if there is a deployment guide somewhere? I tried looking at the documentation, but I only found an end-user manual. Is there an administrator guide yet? Thank you!

Make hyperlinks clickable?

As the title says, can hyperlinks in lists be made clickable?

This would be useful when adding links for later review - in this particular case planning a holiday and keeping links for potential accommodation.

Thanks,
Chris

Recursive accessor

I'm wondering if there's a recursive version of the column accessor (data["temperature"]). I would like to be able to walk the tree of descendants of an item and collect all values associated with a given name.

I tried to achieve that functionality using the Calculist expression language, but I have the impression that recursive function calls are not supported.

404 after signing in

I just registered with the invite code I received, and clicked on sign up or similar button, then got a plain white page (url: https://app.calculist.io/) with text: 404.
I also tried from a different browser not having any possible session history for Calculist, but same result after login.

Referencing current item

I'm often interested in referencing the current item in a formula, e.g., for purposes of setting its value to some complicated function of its descendant tree. Currently I'm using @item($guid), and actually that has worked well so far. But I'm just curious if there's a more idiomatic approach, because it feels like I probably stumbled upon a suboptimal solution.

Here's a simplified example for concreteness.

a [=] sum(flatten(@item($guid)))
  b [:] 3
    c [:] 7
    d [:] 5
  e [:] 1

"search for" command

A new command that will select the first item that contains the text supplied as an argument.

For example, search for "foo" would match an item with the text food, foot, etc.

moving does not seem to persist

these three commands do not seem to save. they occur in the UI, and the corner says "saved" but upon refreshing or navigating around, the changes do not persist.

  1. move up
  2. move down
  3. move to list

Spreadsheet mode

Calculist allows a lot of computation similar to a spreadsheet but doesn't quite have a spreadsheet modality. This could be implemented via setting a particular item as the table title (e.g. #29 for configuring metadata via a $properties sub-item).

Example:

    New Example Spreadsheet
        $properties
            View Type [=] Spreadsheet
            Spreadsheet Columns [=]
                Colour
                Size
                Flavour

When the $property Spreadsheet Columns is created it would create two new items named Rows and Row 1.

Then when each Spreadsheet Column e.g. Colour is added it would similarly add a corresponding sub-item for it below Row 1 (adding each letter in real-time or when the user moves their cursor position).

    New Example Spreadsheet
        $properties
            View Type [=] Spreadsheet
            Spreadsheet Columns [=]
                Colour
                Size
                Flavour
        Rows
            Row 1
                Colour [=]
                Size [=]
                Flavour [=]

New row creation would happen simply by pressing the Enter key when the cursor position is at the last column of the last row. Instead of only creating a new empty item as per usual, it would automatically prepopulate with Row 2 and all of the relevant sub-items/columns with no set values.

    Row 1
        Colour [=] Red
        Size [=] Large
        Flavour [=] Banana
    Row 2
        Colour [=]
        Size [=]
        Flavour [=]

It should also be impossible to delete the items within each row, and trying to do so only empties the "cells". To delete the columns completely it has to be done by deleting the relevant column Spreadsheet Columns from the $properties section.

    Row 1
        Colour [=] 
        Size [=] 
        Flavour [=] 

Spreadsheets in Calculist implemented also can play well with other Calculist features, for example:

  • Command mode on one of Spreadsheet Columns values e.g. sort columns A-Z
  • Computation within each cell/item
  • Accessors to reference columns, rows or cells in a simple format like Excel's e.g. Row 1 or Column A or Item A3:A7

I think this is a decent draft of how to make a spreadsheet work within Calculist and fits in line with it's overall approach (although challenging to implement), let me know what you think.

Can only have one empty line

I don't know if this behavior is intentional but it seemed odd to me.

I was going to add several blank lines on a new section of a list and it would only allow me to add one blank line (Pressing enter while in a blank line will not create a new line, I can only create a new line by pressing enter on a line with a value in it).

Notes area

It would be great if there was an option to have a Notes area on every bullet. I saw from your Twitter that you're aware of WorkFlowy so you've probably seen the feature before but Dynalist has a more flexible implementation of this:

Dynalist notes

They allow switching between:

  • '1st line' view (default and only option in WorkFlowy) which shows only the first line of whatever you type in the Notes area
  • 'Show' (which shows all lines in Notes)
  • 'Hide' which hides it completely (unless you zoom into that bullet of course).

The 'Show' option looks like this (under 'Credit'):

Dynalist Show notes

Cancelling "Open" throws Uncaught Exception error (Windows v0.1.0)

This is a non-fatal error (everything continues as normal after dismissing the dialog).

If you select File>Open (Ctrl-O) and then Cancel, you get the following error:

A JavaScript error occurred in the main process
Uncaught Exception:
TypeError: Cannot read property '0' of undefined
    at C:\Users\Ginguin\AppData\Local\Programs\CalculistDesktop\resources\app.asar\main.js:88:37
    at Function.wrappedCallback >(C:\Users\Ginguin\AppData\Local\Programs\CalculistDesktop\resources\electron.asar\browser\api\dialog.js:100:14)

I will attempt to test this behavior in the linux tonight or tomorrow to see if it affects both versions.

Feature Request: Tags

I love workflowy's implementation of tags. Hashtags and @ tags. It would be useful to connect data in Calculist.

Command to permanently delete a list

Currently using delete on the list of lists in the root list only removes its reference in that list.
If you use goto list "MyDeletedList" the list with all its data will still be there (and it will be re-added to the list of lists)

How to add new basic functions?

I need string manipulation functions (join, split, substr, slice, perhaps regex matching). Is it possible to contribute those, by sending a PR? Should I wait until the project is more mature? Or should I just ask for them and wait for their implementation?

Command mode/Creating New list

I wasn't expecting Command mode to either happen in the same space as an existing item, or for it to be a black box.

It took me a few tries to create a new list because I was expecting something different from double clicking.

I don't remember the last time I saw a black entry box. That's highly unusual.

That the 'command mode' happened on the same line as an existing entry was concerning, because it wasn't clear at all that the existing line was 'going to be OK'. Opening a new line for a command entry would highlight the mode better than switching to black.

I did appreciate as soon as I typed 'n' the new item "" prompt showed up.

Thanks

Nice Printing Format

If you include the following CSS in Calculist it would make the printing experience a lot better.
Since it already looks like a "page" in the display this will make it appear the same way on the page to be printed.

@media print {
    #header
    {
        display: none;
    }
    #main-container
    {
        padding: 0;
    }
    #main-container .main-page
    {
        margin: 0;
        padding: 20px;
    }
    #main-container .page
    {
        box-shadow: none;
        outline: none
    }
}

Thanks!

"goto list <home list>" leads to 'lists' item disappearing from main section.

CONTEXT:
The landing page/original list has the original items of

  • lists
  • stats
  • Welcome...

The 'stats' items are populated using the 'lists' items.

BUG:
If the command "goto list 'username'" is entered from another list, the 'lists' item is missing. The URL shows app.calculist.io/'username'/'username'. Removing the second 'username' from the URL or returning to the home page fixes the problem.

The 'stats' items populated using the 'lists' data throws up errors since the 'lists' item is gone.
image

Shortcuts incompatible with Google chrome shortcuts

The following shortcuts don't quite work with chrome shortcuts.

ctrl + shift + delete : open a tab for deletting navigation data.
ctrl + w : closes the current tab on chrome.

I haven't tried them all yet but it's worth checking out, as it may become annoying for chrome users.

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.