- Single-user (one pad only, no sharing, no simultaneous editing)
- No authentication
- No stars
+
+Special thanks to [hackflowy](https://github.com/abhshkdz/HackFlowy) and [vimflowy](https://github.com/WuTheFWasThat/vimflowy) for speeding up development.
comparator: 'id',
});
-/**
- * @depend ../views/todo.js
- * @depend ../models/flowyDoc.js
- * @depend ../models/todo.js
- * @depend ../library/viewShortcuts.js
- */
-
var testTodos = [
new TodoModel({
parent: null,
}),
];
+
+/**
+ * @depend ../views/todo.js
+ * @depend ../models/flowyDoc.js
+ * @depend ../models/todo.js
+ * @depend ../library/viewShortcuts.js
+ * @depend ../views/testTodos.js
+ */
+
var todos = new FlowyDocModel({
-rootId: 0});
+ rootId: 0
+});
var appDefaults = { list: todos };
var AppView = Backbone.View.extend({
shortcutObject: "global",
events: {
'Shortcut("toggleShortcuts", "Keyboard Shortcuts", "ctrl+shift+/") > .text': 'toggleShortcuts',
- 'Shortcut("toggleShowCompleted", "Not Done - Show/hide completed", "ctrl+o") > .text': 'toggleShowCompleted',
+ 'Shortcut("toggleShowCompleted", "Show/hide completed", "ctrl+o") > .text': 'toggleShowCompleted',
'Shortcut("search", "Not Done - Search", "esc") > .text': 'search',
},
initialize: function(options) {
},
toggleShortcuts: function() {
this.$(".shortcuts").toggle();
+ return false;
},
toggleShowCompleted: function() {
- console.log("Toggling show/hide not yet implemented"); // TODO
+ this.$(".completed").toggle();
+ return false;
},
search: function() {
console.log("Search not yet implemented"); // TODO
comparator: 'id',
});
-/**
- * @depend ../views/todo.js
- * @depend ../models/flowyDoc.js
- * @depend ../models/todo.js
- * @depend ../library/viewShortcuts.js
- */
-
var testTodos = [
new TodoModel({
parent: null,
}),
];
+
+/**
+ * @depend ../views/todo.js
+ * @depend ../models/flowyDoc.js
+ * @depend ../models/todo.js
+ * @depend ../library/viewShortcuts.js
+ * @depend ../views/testTodos.js
+ */
+
var todos = new FlowyDocModel({
-rootId: 0});
+ rootId: 0
+});
var appDefaults = { list: todos };
var AppView = Backbone.View.extend({
shortcutObject: "global",
events: {
'Shortcut("toggleShortcuts", "Keyboard Shortcuts", "ctrl+shift+/") > .text': 'toggleShortcuts',
- 'Shortcut("toggleShowCompleted", "Not Done - Show/hide completed", "ctrl+o") > .text': 'toggleShowCompleted',
+ 'Shortcut("toggleShowCompleted", "Show/hide completed", "ctrl+o") > .text': 'toggleShowCompleted',
'Shortcut("search", "Not Done - Search", "esc") > .text': 'search',
},
initialize: function(options) {
},
toggleShortcuts: function() {
this.$(".shortcuts").toggle();
+ return false;
},
toggleShowCompleted: function() {
- console.log("Toggling show/hide not yet implemented"); // TODO
+ this.$(".completed").toggle();
+ return false;
},
search: function() {
console.log("Search not yet implemented"); // TODO
--- /dev/null
+Flowy
+---
+A reverse-engineered workflowy clone. In pre-alpha.
+
+Demo at: https://za3k.com/~flowy
+
+Features:
+
+- Keyboard Shortcuts
+ - Reference display
+ - User-reconfigurable and persisted
+- Hierarchical to-do list
+ - Zoom in and out
+ - Indent / Outdent
+ - Move todos up and down using the keyboard
+ - Drag and drog todos to any location
+ - Collapse/expand todos
+ - Lazily loaded so Flowy can support any list size
+- Undo/redo support
+ - Infinite undo/redo since browser session started
+- Full-text search
+- Settings
+ - Show/hide keyboard shortcuts
+ - Show/hide completed items
+ - Offline mode (local storage)
+- Import/export
+ - Workflowy-compatible for migrations to and from
+ - HTML (to paste elsewhere)
+ - Plain text
+- Autosaving
+
+Features workflowy has that flowy will not:
+
+ - Flowy is single user with no authentication
* @depend ../models/flowyDoc.js
* @depend ../models/todo.js
* @depend ../library/viewShortcuts.js
+ * @depend ../views/testTodos.js
*/
-var testTodos = [
- new TodoModel({
- parent: null,
- id: 0,
- text: "Root (will be invisible in final, DO NOT EDIT)",
- bullets: [1, 5],
- }),
- new TodoModel({
- parent: 0,
- id: 1,
- text: "Daily todos",
- bullets: [2,3,4],
- }),
- new TodoModel({
- parent: 1,
- id: 2,
- text: "Shave",
- completed: true
- }),
- new TodoModel({
- parent: 1,
- id: 3,
- text: "Check t-mail",
- completed: true
- }),
- new TodoModel({
- parent: 1,
- id: 4,
- text: "Eat green eggs and ham",
- }),
- new TodoModel({
- parent: 0,
- id: 5,
- text: "To do this year",
- collapsed: false,
- bullets: [6],
- }),
- new TodoModel({
- parent: 5,
- id: 6,
- text: "Save the world",
- bullets: [7],
- }),
- new TodoModel({
- parent: 6,
- id: 7,
- text: "Save California",
- }),
-];
-
var todos = new FlowyDocModel({
-rootId: 0});
+ rootId: 0
+});
var appDefaults = { list: todos };
var AppView = Backbone.View.extend({
shortcutObject: "global",
events: {
'Shortcut("toggleShortcuts", "Keyboard Shortcuts", "ctrl+shift+/") > .text': 'toggleShortcuts',
- 'Shortcut("toggleShowCompleted", "Not Done - Show/hide completed", "ctrl+o") > .text': 'toggleShowCompleted',
+ 'Shortcut("toggleShowCompleted", "Show/hide completed", "ctrl+o") > .text': 'toggleShowCompleted',
'Shortcut("search", "Not Done - Search", "esc") > .text': 'search',
},
initialize: function(options) {
},
toggleShortcuts: function() {
this.$(".shortcuts").toggle();
+ return false;
},
toggleShowCompleted: function() {
- console.log("Toggling show/hide not yet implemented"); // TODO
+ this.$(".completed").toggle();
+ return false;
},
search: function() {
console.log("Search not yet implemented"); // TODO
--- /dev/null
+var testTodos = [
+ new TodoModel({
+ parent: null,
+ id: 0,
+ text: "Root (will be invisible in final, DO NOT EDIT)",
+ bullets: [1, 5],
+ }),
+ new TodoModel({
+ parent: 0,
+ id: 1,
+ text: "Daily todos",
+ bullets: [2,3,4],
+ }),
+ new TodoModel({
+ parent: 1,
+ id: 2,
+ text: "Shave",
+ completed: true
+ }),
+ new TodoModel({
+ parent: 1,
+ id: 3,
+ text: "Check t-mail",
+ completed: true
+ }),
+ new TodoModel({
+ parent: 1,
+ id: 4,
+ text: "Eat green eggs and ham",
+ }),
+ new TodoModel({
+ parent: 0,
+ id: 5,
+ text: "To do this year",
+ collapsed: false,
+ bullets: [6],
+ }),
+ new TodoModel({
+ parent: 5,
+ id: 6,
+ text: "Save the world",
+ bullets: [7],
+ }),
+ new TodoModel({
+ parent: 6,
+ id: 7,
+ text: "Save California",
+ }),
+];
+