contact_manager 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +39 -12
- data/VERSION +1 -1
- data/app/contact_manager/view/contact_manager_menu_bar.rb +14 -1
- data/app/contact_manager/view/contact_table.rb +6 -2
- metadata +2 -3
- data/db/database.sqlite3 +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04edebb2044b590afbb91c5c7e7f11639961db6e7a2621f7bd06504627f5cbe4
|
4
|
+
data.tar.gz: 4c1cb31660c00b45f5c06bdbde0aa623c1245ce7bdfa1dd4c1d21bea778af979
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e73518b23676065f6a9eca40e01a6ba5ac559bc34969c64986efe1d5469ef85f478c28780c6a937a05dfc1c7dfc3ed1729db8d1f147ccde62f579633abab9149
|
7
|
+
data.tar.gz: 0fd740849272fe1f8d28255ea5046af0333ac0e437e6acaf0af605a7631828988be5a467bc2efc606f8ed818066249389b7e19e4ee96db99808a1a76a5582e88
|
data/README.md
CHANGED
@@ -1,31 +1,52 @@
|
|
1
|
-
# <img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/icons/linux/Contact%20Manager.png" height=85 /> Contact Manager 1.0.
|
1
|
+
# <img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/icons/linux/Contact%20Manager.png" height=85 /> Contact Manager 1.0.1
|
2
2
|
## [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer-dsl-swt/master/images/glimmer-logo-hi-res.png" height=40 /> Glimmer Application](https://github.com/AndyObtiva/glimmer-dsl-swt)
|
3
3
|
[](http://badge.fury.io/rb/contact_manager)
|
4
4
|
|
5
5
|
Contact Manager is a [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt) sample leveraging [SQLite DB](https://www.sqlite.org/index.html) via [ActiveRecord](https://rubygems.org/gems/activerecord).
|
6
6
|
|
7
|
+
Learn more in the blog post: [Using ActiveRecord with SQLite DB in a JRuby Desktop App](https://andymaleh.blogspot.com/2022/06/using-activerecord-with-sqlite-db-in.html?m=0).
|
8
|
+
|
7
9
|

|
8
10
|
|
11
|
+
## Requirements
|
12
|
+
|
13
|
+
1. Store contacts having the following attributes:
|
14
|
+
- First Name
|
15
|
+
- Last Name
|
16
|
+
- Email
|
17
|
+
- Phone
|
18
|
+
- Street
|
19
|
+
- City
|
20
|
+
- State/Province
|
21
|
+
- Zip/Postal Code
|
22
|
+
- Country
|
23
|
+
2. List stored contacts
|
24
|
+
3. Search stored contacts by any of the contact attributes.
|
25
|
+
4. Sort contacts by First Name, Last Name, Email, Phone, or Full Address
|
26
|
+
5. Edit a stored contact
|
27
|
+
6. Delete a stored contact
|
28
|
+
7. Delete all stored contacts
|
29
|
+
|
9
30
|
## Setup
|
10
31
|
|
11
32
|
### Option 1: Install Native Executable Package
|
12
33
|
|
13
|
-
[<img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/icons/linux/Contact%20Manager.png" height=40 /> Contact Manager 1.0.
|
34
|
+
[<img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/icons/linux/Contact%20Manager.png" height=40 /> Contact Manager 1.0.1 (Mac Catalina 10.15.7 x86_64 DMG)](https://www.dropbox.com/s/fh0nhbf9gg755kc/Contact%20Manager-1.0.1-x86_64-catalina-10.15.7.dmg?dl=1)
|
14
35
|
|
15
|
-
[<img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/icons/linux/Contact%20Manager.png" height=40 /> Contact Manager 1.0.
|
36
|
+
[<img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/icons/linux/Contact%20Manager.png" height=40 /> Contact Manager 1.0.1 (Windows 10.0.19043 x86_64 MSI)](https://www.dropbox.com/s/nnknffe77iyiat8/Contact%20Manager-1.0.1-x86_64-windows-10.0.19043.msi?dl=1)
|
16
37
|
|
17
|
-
[<img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/icons/linux/Contact%20Manager.png" height=40 /> Contact Manager 1.0.
|
38
|
+
[<img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/icons/linux/Contact%20Manager.png" height=40 /> Contact Manager 1.0.1 (Linux x86_64 DEB)](https://www.dropbox.com/s/mpr0wl9re7l30uq/contact-manager_1.0.1-1_amd64.deb?dl=1)
|
18
39
|
|
19
|
-
[<img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/icons/linux/Contact%20Manager.png" height=40 /> Contact Manager 1.0.
|
40
|
+
[<img src="https://raw.githubusercontent.com/AndyObtiva/contact_manager/master/icons/linux/Contact%20Manager.png" height=40 /> Contact Manager 1.0.1 (Linux x86_64 RPM)](https://www.dropbox.com/s/7lw9ktnikx3m5es/contact-manager-1.0.1-1.x86_64.rpm?dl=1)
|
20
41
|
|
21
42
|
### Option 2: Install Ruby Gem
|
22
43
|
|
23
|
-
Start by setting up [JDK 18](https://www.oracle.com/java/technologies/downloads) & [JRuby 9.3.
|
44
|
+
Start by setting up [JDK 18](https://www.oracle.com/java/technologies/downloads) & [JRuby 9.3.4.0](https://www.jruby.org/) (+ [RVM](http://rvm.io/) on Mac/Linux) just as per [Glimmer DSL for SWT prerequisites](https://github.com/AndyObtiva/glimmer-dsl-swt#pre-requisites).
|
24
45
|
|
25
46
|
Install Ruby gem:
|
26
47
|
|
27
48
|
```
|
28
|
-
gem install contact_manager -v1.0.
|
49
|
+
gem install contact_manager -v1.0.1
|
29
50
|
```
|
30
51
|
|
31
52
|
Run:
|
@@ -36,7 +57,7 @@ contact_manager
|
|
36
57
|
|
37
58
|
### Option 3: Clone Project Locally
|
38
59
|
|
39
|
-
Start by setting up [JDK 18](https://www.oracle.com/java/technologies/downloads) & [JRuby 9.3.
|
60
|
+
Start by setting up [JDK 18](https://www.oracle.com/java/technologies/downloads) & [JRuby 9.3.4.0](https://www.jruby.org/) (+ [RVM](http://rvm.io/) on Mac/Linux) just as per [Glimmer DSL for SWT prerequisites](https://github.com/AndyObtiva/glimmer-dsl-swt#pre-requisites).
|
40
61
|
|
41
62
|
Clone:
|
42
63
|
|
@@ -96,15 +117,21 @@ glimmer "package[rpm]"
|
|
96
117
|
|
97
118
|
Contact Manager follows the [Model-View-Presenter](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter) flavor of [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), so the View communicates to the Model via a Presenter, which is an enhanced Controller that enables bidirectional attribute data-binding between the Model and the View.
|
98
119
|
|
99
|
-
The View uses `contact_form`, `contact_table`, and `contact_manager_menu_bar` custom widgets (components)
|
120
|
+
The View uses `contact_form`, `contact_table`, and `contact_manager_menu_bar` custom widgets (components).
|
121
|
+
|
122
|
+
The Contact Manager graphical user interface leverages the [Master-Detail Interface Pattern](https://en.wikipedia.org/wiki/Master%E2%80%93detail_interface) by displaying a master list via `contact_table` and allowing navigation by selecting a `Contact` and displaying its details for editing in `contact_form`.
|
123
|
+
|
124
|
+
`contact_table` leverages the `table` widget, which has automatic in-memory sort support. `contact_table` also comes with a 'Delete...' right-click menu item (aka contextual pop up menu item) for deleting a selected `Contact` row.
|
125
|
+
|
126
|
+
`contact_manager_menu_bar` provides top menu bar actions like 'New', 'Save', 'Delete...', and 'Delete All...'
|
100
127
|
|
101
128
|
The Model layer includes a `Contact` and `ContactRepository` ([DDD Repository Pattern](https://www.domainlanguage.com/wp-content/uploads/2016/05/DDD_Reference_2015-03.pdf)) in addition to `ContactPresenter` (which is both a Controller and a Model at a higher level).
|
102
129
|
|
103
|
-
`Contact` follows the [Active Record Pattern](https://en.wikipedia.org/wiki/Active_record_pattern) for [Object Relational Mapping](https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping) to store objects in a [SQLite](https://www.sqlite.org/index.html) relational database.
|
130
|
+
`Contact` follows the [Active Record Pattern](https://en.wikipedia.org/wiki/Active_record_pattern) for [Object Relational Mapping](https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping) to store objects in a [SQLite](https://www.sqlite.org/index.html) relational database table called `contacts` via a [migration](/db/migrate/20220411211513_create_contacts.rb). It also implements [ActiveRecord Validations](https://guides.rubyonrails.org/active_record_validations.html) for `first_name`, `last_name`, `email`, `phone`, and `zip_or_postal_code` fields.
|
104
131
|
|
105
|
-
|
132
|
+
`ContactRepository` provides the ability to search through all `Contact`s using the [ActiveRecord Query Interface](https://guides.rubyonrails.org/active_record_querying.html), triggered indirectly by `ContactPresenter` when typing into a `text` field that is on top of the `contact_table` .
|
106
133
|
|
107
|
-
The database is stored at
|
134
|
+
The database is stored at `File.join(Dir.home, 'db/contact_manager.sqlite3')`
|
108
135
|
|
109
136
|
## TODO
|
110
137
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.1
|
@@ -32,7 +32,20 @@ class ContactManager
|
|
32
32
|
}
|
33
33
|
|
34
34
|
menu_item {
|
35
|
-
text '&Delete
|
35
|
+
text '&Delete...'
|
36
|
+
accelerator ACCELERATOR_KEY, :d
|
37
|
+
|
38
|
+
on_widget_selected do
|
39
|
+
result = message_box(:yes, :no) {
|
40
|
+
text 'Delete'
|
41
|
+
message 'Are you sure you want to delete the selected contact?'
|
42
|
+
}.open
|
43
|
+
contact_presenter.destroy_current_contact if result == swt(:yes)
|
44
|
+
end
|
45
|
+
}
|
46
|
+
|
47
|
+
menu_item {
|
48
|
+
text 'Dele&te All...'
|
36
49
|
|
37
50
|
on_widget_selected do
|
38
51
|
result = message_box(:yes, :no) {
|
@@ -58,10 +58,14 @@ class ContactManager
|
|
58
58
|
|
59
59
|
menu {
|
60
60
|
menu_item {
|
61
|
-
text '&Delete'
|
61
|
+
text '&Delete...'
|
62
62
|
|
63
63
|
on_widget_selected do
|
64
|
-
|
64
|
+
result = message_box(:yes, :no) {
|
65
|
+
text 'Delete'
|
66
|
+
message 'Are you sure you want to delete the selected contact?'
|
67
|
+
}.open
|
68
|
+
contact_presenter.destroy_current_contact if result == swt(:yes)
|
65
69
|
end
|
66
70
|
}
|
67
71
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: contact_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-06-
|
11
|
+
date: 2022-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,7 +132,6 @@ files:
|
|
132
132
|
- app/contact_manager/view/contact_table.rb
|
133
133
|
- bin/contact_manager
|
134
134
|
- config/warble.rb
|
135
|
-
- db/database.sqlite3
|
136
135
|
- db/db.rb
|
137
136
|
- db/migrate.rb
|
138
137
|
- db/migrate/20220411211513_create_contacts.rb
|
data/db/database.sqlite3
DELETED
Binary file
|