skalman / notes Goto Github PK
View Code? Open in Web Editor NEWa OneNote replacement
Home Page: danwolff.se/2014/notes/
License: Mozilla Public License 2.0
a OneNote replacement
Home Page: danwolff.se/2014/notes/
License: Mozilla Public License 2.0
It should be possible to search for section and page names and content. The search should be prioritized as follows:
Additionally, it should be possible to only search for section and page names.
To begin with, search will be case and whitespace insensitive. Further options can be added later on.
Instead of askiing the user to confirm their intention to delete a section or a page, a popup allowing the user to undo the deletion should be shown.
Moving content boxes within a large area doesn't work on a small screen. Neither does displaying sections as horizontal tabs.
One solution for mobile browsers would be to make content boxes like a list of 'cards' (similar to Trello).
Investigate design alternatives, and whether it would be possible to fluidly transition between the mobile and desktop designs.
The desktop design will also have to support touch screens, which means that bigger click and drag areas are needed.
Implement localization of the user interface. Whatever system is chosen, it should:
Investigate whether L20n fulfills these requirements.
Basic functionality: Undo and redo within a page, instead of the default browser functions to undo and redo within a contenteditable, i.e. within a content box.
We will need good heuristics for thresholds that decide whether something is a undo-able. Here are some examples:
Support undo and redo for section and page actions, e.g. create/delete page/section, rename section.
This is probably tricky to integrate in an intuitive way with undoing within a page. Investigate how OneNote solves this.
The need for "step 2" will partly be alleviated if #8 is implemented.
The goal should be that both the navigation and the page area can be replaced with another implementation, without changing any surrounding code.
How modular the HTML should be remains an open question.
Investigate whether Knockout components, or standard Knockout view models are better suited.
The current data format is suitable for this purpose. Care should be taken so that the download and upload format version is handled in a reasonable way.
<hostname>.notebook
would work as the default download filename.
Subpages don't have to be implemented as a hierarchy. Instead they can probably be implemented by adding an 'indent' property to each page.
It should be possible to visually hide subpages. Whether a page has its subpages hidden should be saved in the permanent storage.
Add tests that ensure that there are no bad regressions in functionality.
To start with, we'll test the very basics: Creating and changing sections, pages and content boxes.
Investigate whether Selenium is suitable, and if so, which language binding to use. My guess is that either Python, or NodeJS/Python via remote control would be easiest to use.
Currently, everything is sent to the server when a change is made. And if you change something in one page while keeping another tab open will cause an edit conflict.
It should be possible to carry out all actions without using a mouse. In addition, all common actions should have quick and logical keyboard shortcuts.
Here's one idea for navigating sections and pages:
Esc
- switches context between editing content boxes within a page, and the other stuff (so far just navigation)Left
and Right
changes the current section; Up
and Down
changes the current page.Shift+Left
and Shift+Right
moves the focused section; Shift+Up
and Shift+Down
moves the focused page.It should be possible to copy, cut and paste...
Initially, the following should be supported:
b
, i
, u
, s
h1
-h4
, ol
, ul
, li
(also nested)Ideally, we would use a light-weight library for this, that:
class=""
, but rendered as a <span>
(which may be clickable).<span class="highlight">
) may be saved as an HTML class on the parent element.Investigate whether (a part of) CKEditor fulfills these requirements.
Add unit tests for the models in js/notebook.model.js
:
Considerations:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.