aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.rst4
-rwxr-xr-xapp.rb110
-rw-r--r--views/edit_object.erb24
-rw-r--r--views/layout.erb6
-rw-r--r--views/view_object.erb4
5 files changed, 92 insertions, 56 deletions
diff --git a/README.rst b/README.rst
index b26626f..b1cc26a 100644
--- a/README.rst
+++ b/README.rst
@@ -3,6 +3,6 @@ Membrain is an app for remembering things. The idea is very simple - you enter d
## DB Schema
```
-create table objects (id integer primary key autoincrement, title text, icon text, updated datetime);
-create table properties (id integer primary key autoincrement, object_id integer, key text, value text);
+CREATE TABLE objects (id integer primary key autoincrement, title text, icon text, updated datetime);
+CREATE TABLE properties (id integer primary key autoincrement, object_id integer, key text, value text, type text);
```
diff --git a/app.rb b/app.rb
index 55f00c8..aa3d2ea 100755
--- a/app.rb
+++ b/app.rb
@@ -5,71 +5,83 @@ require "sinatra"
class MBObject
- attr_reader :id, :title
-
- @@db = SQLite3::Database.new "membrain.db"
-
- def initialize
- @id = 0
- @keys = []
- @values = []
- @title = ""
- end
-
- def init_with_row(row)
- @id = row[0]
- @title = row[1]
- @updated = row[2]
- end
-
- def self.create(name)
- @@db.execute("INSERT INTO objects (title, updated) VALUES (?, DATETIME())", name)
- @@db.execute("SELECT last_insert_rowid()")[0][0]
- end
-
- def self.all
- all = []
- @@db.execute("SELECT id, title, updated FROM objects") do | row |
- o = MBObject.new
- all << o.init_with_row(row)
+ attr_writer :title
+ attr_reader :id, :title
+
+ @@db = SQLite3::Database.new "membrain.db"
+
+ def initialize
+ @id = 0
+ @title = ""
+ @properties = {}
+ end
+
+ def save
+ @@db.execute("UPDATE objects SET title = ? WHERE id = ?", @title, @id)
+ end
+
+ def init_with_row(row)
+ @id = row[0]
+ @title = row[1]
+ @updated = row[2]
+ end
+
+ def self.create(name)
+ @@db.execute("INSERT INTO objects (title, updated) VALUES (?, DATETIME())", name)
+ @@db.execute("SELECT last_insert_rowid()")[0][0]
+ end
+
+ def self.all
+ all = []
+ @@db.execute("SELECT id, title, updated FROM objects") do | row |
+ o = MBObject.new
+ o.init_with_row(row)
+ all << o
+ end
+ return all
end
- return all
- end
-
- def self.get(id)
- o = MBObject.new
- @@db.execute("SELECT id, icon, updated FROM objects WHERE id = ?", id) do | row |
- o = MBObject.new
- o.init_with_row(row)
+
+ def self.get(id)
+ o = MBObject.new
+ @@db.execute("SELECT id, title, icon, updated FROM objects WHERE id = ?", id) do | row |
+ o.init_with_row(row)
+ end
+ return o
end
- return o
- end
- def get_url
- "/#{@id}/edit"
- end
+ def get_url
+ "/#{@id}/edit"
+ end
end
get '/' do
- @data = MBObject.all
- erb :index
+ @data = MBObject.all
+ erb :index
end
get '/add' do
- erb :form
+ erb :form
end
post '/add' do
- i = MBObject.create(params[:name])
- redirect "/#{i}"
+ i = MBObject.create(params[:name])
+ redirect "/#{i}"
end
get '/:id' do
- @data = MBObject.get(params[:id])
- erb :view_object
+ @object = MBObject.get(params[:id])
+ erb :view_object
end
get '/:id/edit' do
- @o = MBObject.get(params[:id])
- erb :edit_object
+ @o = MBObject.get(params[:id])
+ erb :edit_object
+end
+
+post '/:id/edit' do
+ @o = MBObject.get(params[:id])
+ @o.title = params[:title]
+ @o.save
+ p params[:keys] params[:values]
+ redirect @o.get_url
end
diff --git a/views/edit_object.erb b/views/edit_object.erb
index aa44acc..9c066aa 100644
--- a/views/edit_object.erb
+++ b/views/edit_object.erb
@@ -1,7 +1,29 @@
<form action="" method="post">
<div class="form-group">
<label for="exampleInputEmail1">Name</label>
- <input name="name" type="text" class="form-control" placeholder="Name" value="<%= @o.value %>">
+ <input name="title" type="text" class="form-control" placeholder="Name" value="<%= @o.title %>">
+ </div>
+ <div class="form-group">
+ <div class="row">
+ <div class="col-md-6">
+ <select class="form-control" name="keys[]">
+ <option>Lalala</option>
+ </select>
+ </div>
+ <div class="col-md-6">
+ <input class="form-control" type="text" name="values[]"></input>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-6">
+ <select class="form-control" name="keys[]">
+ <option>Bababaa</option>
+ </select>
+ </div>
+ <div class="col-md-6">
+ <input class="form-control" type="text" name="values[]"></input>
+ </div>
+ </div>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
diff --git a/views/layout.erb b/views/layout.erb
index a4d059b..386dad0 100644
--- a/views/layout.erb
+++ b/views/layout.erb
@@ -5,8 +5,10 @@
<link rel="stylesheet" href="/css/bootstrap-theme.min.css">
</head>
<body>
- <div id="app">
- <%= yield %>
+ <div class="container">
+ <div id="app">
+ <%= yield %>
+ </div>
</div>
</body>
<script src="/js/jquery.min.js"></script>
diff --git a/views/view_object.erb b/views/view_object.erb
index 20a58d7..24c4833 100644
--- a/views/view_object.erb
+++ b/views/view_object.erb
@@ -1,3 +1,3 @@
-<%= @data.title %>
+<h1><%= @object.title %></h1>
-<a class="btn btn-warning" href="<%= @data.get_url %>">Edit</a>
+<a class="btn btn-warning" href="<%= @object.get_url %>">Edit</a>