observejs 0.0.5 → 0.0.7

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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +7 -7
  4. data/Rakefile +1 -1
  5. data/lib/observejs/app/assets/javascripts/observejs/base.js.coffee +28 -0
  6. data/lib/{jointjs/app/assets/javascripts/joint → observejs/app/assets/javascripts/observejs}/creator.js.coffee +7 -6
  7. data/lib/observejs/app/assets/javascripts/observejs/watcher.js.coffee +49 -0
  8. data/lib/{jointjs/app/assets/javascripts/joint → observejs/app/assets/javascripts/observejs}/xhr.js.coffee +24 -7
  9. data/lib/observejs/app/assets/javascripts/observejs.js.coffee +11 -0
  10. data/lib/{jointjs → observejs}/railtie.rb +2 -2
  11. data/lib/observejs/version.rb +3 -0
  12. data/lib/observejs.rb +5 -0
  13. data/{jointjs.gemspec → observejs.gemspec} +2 -2
  14. data/test/Gemfile +1 -2
  15. data/test/Gemfile.lock +3 -3
  16. data/test/app/assets/javascripts/application.js +1 -1
  17. data/test/app/assets/javascripts/item.js.coffee +1 -1
  18. data/test/app/assets/javascripts/list.js.coffee +1 -1
  19. data/test/app/assets/javascripts/tests/instances.js.coffee +2 -3
  20. data/test/app/assets/javascripts/tests/template.js.coffee +11 -0
  21. data/test/app/assets/javascripts/tests/xhr.js.coffee +13 -2
  22. data/test/app/assets/stylesheets/application.css.scss +3 -0
  23. data/test/app/views/layouts/application.html.erb +1 -0
  24. data/test/app/views/todos/index.html.erb +3 -0
  25. data/test/config/application.rb +1 -1
  26. data/test/config/routes.rb +1 -1
  27. metadata +18 -16
  28. data/lib/jointjs/app/assets/javascripts/joint/base.js.coffee +0 -18
  29. data/lib/jointjs/app/assets/javascripts/joint/watcher.js.coffee +0 -49
  30. data/lib/jointjs/app/assets/javascripts/joint.js.coffee +0 -12
  31. data/lib/jointjs/version.rb +0 -3
  32. data/lib/jointjs.rb +0 -5
  33. data/test/db/joint_test +0 -0
  34. /data/lib/{jointjs/app/assets/javascripts/joint → observejs/app/assets/javascripts/observejs}/ext.js.coffee +0 -0
  35. /data/lib/{jointjs → observejs}/app/views/layouts/application.js.erb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd073a5b83f32fad3ad67963494c19805dd4c864
4
- data.tar.gz: 5a806556aa26a32d44702cce679be4cf4ef58851
3
+ metadata.gz: 34f7e2b0d3b0c92e4a99b441e4e47ef15ad3744c
4
+ data.tar.gz: 0b4ca8788f5915d2b925d68a1131560315195865
5
5
  SHA512:
6
- metadata.gz: 3fa57f1031876da0bad348dcb068992fdfb9b5fc51fb990356134356d787456b8abbfb14467e2f39ad83b140cc6e6954f6ffdb238e831080ad521068c5fc53f6
7
- data.tar.gz: 3712714f8ef1bb3279e1cf00aa2d3ce9ae2c9b41b95c89bf31d2d72b27cff251faafa97ca01b0e1ac41ea8c22181c814563ed196c5b445b320ed22c577ee0f59
6
+ metadata.gz: 3f74f38db3a194c310dc5dcfa10996fbf2d68691ee288ff62b1247508fecd2a2e261d74ae8d803e7a3645a4973f55899249d1baa61b4508bca4b72bcd090b982
7
+ data.tar.gz: c2eb85285421fdf3ef7e5b24c559e4967a5e090ee93d1f1a5a53890237f14c54ae1091ac63ae83c28bae6ec8205f451cabf8398f5a0da44860aaa1beff9ea815
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /doc/
7
7
  /pkg/
8
8
  /spec/reports/
9
+ db/
9
10
  tmp
10
11
  *.gem
11
12
  *.bundle
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # JointJS
1
+ # ObserveJS
2
2
 
3
3
  Event based JavaScript framework tailored made for Ruby on rails.
4
4
 
@@ -7,17 +7,17 @@ Event based JavaScript framework tailored made for Ruby on rails.
7
7
  Add this line to your application's Gemfile:
8
8
 
9
9
  ```ruby
10
- gem 'jointjs'
10
+ gem 'observejs'
11
11
  ```
12
12
 
13
13
  Then add this line to application.js
14
14
 
15
15
  ```js
16
- //= require 'joint'
16
+ //= require 'observejs'
17
17
  ```
18
18
  ## Usage
19
19
 
20
- JointJSe is an event based framework that manages the life cycle of JavaScript objects. Here's a simple Todo where you can dynamically add/remove items on the list.
20
+ ObserveJS is an event based framework that manages the life cycle of JavaScript objects. Here's a simple Todo where you can dynamically add/remove items on the list.
21
21
 
22
22
  ```erb
23
23
  <!-- views/todos/index.html.erb -->
@@ -28,7 +28,7 @@ JointJSe is an event based framework that manages the life cycle of JavaScript o
28
28
 
29
29
  ```coffee
30
30
  # assets/javascripts/todos/list.js.coffee
31
- Joint.bind 'Todo.List', class
31
+ ObserveJS.bind 'Todo.List', class
32
32
  # @element() always return the element to which your object is bound.
33
33
 
34
34
  loaded: =>
@@ -57,9 +57,9 @@ Some notes:
57
57
 
58
58
  - Automatic instantiation. No need to wrap things in DOMContentReady anymore.
59
59
  - Events are built following the "controller:action" pattern.
60
- - A callback (@loaded) is called right after JointJS has instantiated an object.
60
+ - A callback (@loaded) is called right after ObserveJS has instantiated an object.
61
61
  - In *.js.erb, an event is created. You can set HTML to the event object.
62
62
  - To ease the process, a toHTML() method has been added to the String object (JS).
63
- - You need to register any class you create through the ```Joint.bind 'name', Class```. The name is the attribute you set in your DOM.
63
+ - You need to register any class you create through the ```ObserveJS.bind 'name', Class```. The name is the attribute you set in your DOM.
64
64
 
65
65
 
data/Rakefile CHANGED
@@ -1,3 +1,3 @@
1
1
  require File.expand_path('../test/application', __FILE__)
2
2
 
3
- JointTest::Application.load_tasks
3
+ ObserveJSTest::Application.load_tasks
@@ -0,0 +1,28 @@
1
+ class ObserveJS
2
+ attributeName: 'as'
3
+
4
+ constructor: ->
5
+ @cache = {}
6
+
7
+ initialize: =>
8
+ event = new CustomEvent('observejs:loaded')
9
+ document.dispatchEvent(event)
10
+
11
+ isDOM: (el) ->
12
+ el instanceof HTMLDocument ||
13
+ el instanceof HTMLElement
14
+
15
+ bind: (name, kls) =>
16
+ @cache[name] = kls
17
+
18
+ kls.prototype.template = () ->
19
+ tmpl = @element().querySelector("template[for='#{name}']")
20
+ unless tmpl?
21
+ throw "Template Error: Couldn't find a template matching #{name}"
22
+ return
23
+ tmpl
24
+
25
+ kls.prototype.retrieve = (selector) ->
26
+ @element().querySelector(selector) || @template().content.querySelector(selector).cloneNode(true)
27
+
28
+ window.ObserveJS = new ObserveJS()
@@ -1,19 +1,20 @@
1
1
  class Creator
2
2
 
3
3
  update: (el) =>
4
- model = el.getAttribute(Joint.attributeName)
4
+ model = el.getAttribute(ObserveJS.attributeName)
5
5
  if model?
6
6
  @create(el, model)
7
7
  else
8
8
  @destroy(el)
9
9
 
10
10
  create: (el) =>
11
- model = el.getAttribute(Joint.attributeName)
12
- if Joint.cache[model]?
11
+ model = el.getAttribute(ObserveJS.attributeName)
12
+ if ObserveJS.cache[model]?
13
13
  if el.instance?
14
+ el.loaded()
14
15
  return
15
16
 
16
- el.instance = new Joint.cache[model](el)
17
+ el.instance = new ObserveJS.cache[model](el)
17
18
 
18
19
  el.instance.element = ->
19
20
  el
@@ -32,10 +33,10 @@ class Creator
32
33
  el.instance.loaded()
33
34
 
34
35
  else
35
- throw "error: #{model} is not registered. Add your model with Joint.Models.add(#{model})"
36
+ throw "error: #{model} is not registered. Add your model with ObserveJS.Models.add(#{model})"
36
37
 
37
38
  destroy: (el) =>
38
39
  el.instance.on.events?.forEach (event) ->
39
40
  event[1].removeEventListener(event[0], event[2])
40
41
 
41
- @Joint.Creator = new Creator()
42
+ @ObserveJS.Creator = new Creator()
@@ -0,0 +1,49 @@
1
+ class Watcher
2
+ constructor: ->
3
+ document.addEventListener('observejs:loaded', @start)
4
+
5
+ start: =>
6
+ @observer = new MutationObserver(@observed)
7
+ @observer.observe(document, {
8
+ attributes: true,
9
+ subtree: true,
10
+ childList: true,
11
+ attributeFilter: [ObserveJS.attributeName],
12
+ characterData: true
13
+ })
14
+
15
+ @inspect(document)
16
+
17
+ observed: (mutations) =>
18
+ mutations.forEach (mutation) =>
19
+ if mutation.type == 'attributes'
20
+ ObserveJS.Creator.update(mutation.target)
21
+ else
22
+ @add(mutation.addedNodes)
23
+ @destroy(mutation.removedNodes)
24
+
25
+
26
+ add: (nodes) =>
27
+ for node in nodes
28
+ continue unless ObserveJS.isDOM(node)
29
+ if node.hasAttribute(ObserveJS.attributeName)
30
+ ObserveJS.Creator.create(node, node.getAttribute(ObserveJS.attributeName))
31
+
32
+ for child in node.querySelectorAll("[#{ObserveJS.attributeName}]")
33
+ ObserveJS.Creator.create(child, child.getAttribute(ObserveJS.attributeName))
34
+
35
+ destroy: (nodes) =>
36
+ for node in nodes
37
+ continue unless ObserveJS.isDOM(node)
38
+ if node.hasAttribute(ObserveJS.attributeName)
39
+ ObserveJS.Creator.destroy(node)
40
+
41
+ for child in node.querySelectorAll("[#{ObserveJS.attributeName}]")
42
+ ObserveJS.Creator.destroy(child)
43
+
44
+ inspect: (node) ->
45
+ if ObserveJS.isDOM(node)
46
+ found = node.querySelectorAll("[#{ObserveJS.attributeName}]")
47
+ ObserveJS.Creator.create(el) for el in found
48
+
49
+ @ObserveJS.Watcher = new Watcher()
@@ -31,13 +31,31 @@ class XHRData
31
31
 
32
32
  formData
33
33
 
34
- class XHR
35
- script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
36
-
37
- @completed: (e) ->
34
+ class Response
35
+ constructor: (@xhr) ->
36
+ @xhr.request.addEventListener 'load', @process
37
+ @xhr.request.addEventListener 'error', @failure
38
+ @xhr.request.addEventListener 'abort', @failure
39
+
40
+ process: (e) =>
41
+ if e.target.status >= 200 && e.target.status < 300
42
+ @success(e)
43
+ else
44
+ @failure(e)
45
+
46
+ success: (e) =>
38
47
  if e.target.responseText.length > 1
39
48
  eval(e.target.responseText)(e.target.element)
40
49
 
50
+ failure: (e) =>
51
+ event = new CustomEvent("ObserveJS:XHR:Failed", {bubbles: true})
52
+ event.response = e
53
+ @xhr.request.element.dispatchEvent(event)
54
+
55
+
56
+ class XHR
57
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
58
+
41
59
  @send: (el) ->
42
60
 
43
61
  xhr = new XHR(el)
@@ -48,7 +66,7 @@ class XHR
48
66
  @data = new XHRData(el)
49
67
  @request = new XMLHttpRequest()
50
68
  @request.element = el
51
- @request.addEventListener 'load', XHR.completed
69
+ @response = new Response(this)
52
70
 
53
71
  @method = el.getAttribute('method') || 'GET'
54
72
 
@@ -82,7 +100,7 @@ class XHR
82
100
  @request.send(@data.serialize())
83
101
 
84
102
 
85
- Joint.XHR = XHR
103
+ ObserveJS.XHR = XHR
86
104
 
87
105
  document.addEventListener 'submit', (e) =>
88
106
  if e.target.getAttribute('disabled')? || e.target.dataset['remote'] != 'true'
@@ -107,4 +125,3 @@ document.addEventListener 'click', (e) =>
107
125
 
108
126
  e.preventDefault()
109
127
  return false
110
-
@@ -0,0 +1,11 @@
1
+ #= require 'observejs/ext'
2
+ #= require 'observejs/base'
3
+ #= require 'observejs/watcher'
4
+ #= require 'observejs/creator'
5
+ #= require 'observejs/xhr'
6
+
7
+ if document.readyState == 'complete'
8
+ window.ObserveJS.initialize()
9
+ else
10
+ document.addEventListener 'DOMContentLoaded', ->
11
+ window.ObserveJS.initialize()
@@ -1,6 +1,6 @@
1
- module JointJS
1
+ module ObserveJS
2
2
  class Railtie < Rails::Railtie
3
- initializer 'joint.assets.paths', before: :add_view_paths do |app|
3
+ initializer 'observejs.assets.paths', before: :add_view_paths do |app|
4
4
  app.paths['vendor/assets'] << File.dirname(__FILE__) + '/app/assets/'
5
5
  app.paths['app/views'] << File.dirname(__FILE__) + '/app/views/'
6
6
  end
@@ -0,0 +1,3 @@
1
+ module ObserveJS
2
+ VERSION = "0.0.7"
3
+ end
data/lib/observejs.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "observejs/version"
2
+
3
+ module ObserveJS
4
+ require 'observejs/railtie'
5
+ end
@@ -1,11 +1,11 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'jointjs/version'
4
+ require 'observejs/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "observejs"
8
- spec.version = JointJS::VERSION
8
+ spec.version = ObserveJS::VERSION
9
9
  spec.authors = ["Pier-Olivier Thibault"]
10
10
  spec.email = ["pothibo@gmail.com"]
11
11
  spec.summary = %q{Event based JavaScript framework tailored for Ruby on rails.}
data/test/Gemfile CHANGED
@@ -12,7 +12,7 @@ gem 'jbuilder', '~> 2.0'
12
12
 
13
13
  path = Pathname.new(__FILE__) + '..'
14
14
 
15
- gem 'jointjs', path: path.dirname
15
+ gem 'observejs', path: path.dirname
16
16
 
17
17
  group :development, :test do
18
18
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
@@ -24,4 +24,3 @@ group :development, :test do
24
24
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
25
25
  gem 'spring'
26
26
  end
27
-
data/test/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
- remote: /Users/pothibo/Develop/jointjs
2
+ remote: /Users/pothibo/Develop/observejs
3
3
  specs:
4
- jointjs (0.0.4)
4
+ observejs (0.0.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -153,8 +153,8 @@ DEPENDENCIES
153
153
  byebug
154
154
  coffee-rails (~> 4.1.0)
155
155
  jbuilder (~> 2.0)
156
- jointjs!
157
156
  jquery-rails
157
+ observejs!
158
158
  rails (= 4.2.0)
159
159
  sass-rails (~> 5.0)
160
160
  spring
@@ -1,4 +1,4 @@
1
- //= require joint
1
+ //= require observejs
2
2
  //= require list
3
3
  //= require item
4
4
  //= require_tree ./tests
@@ -1,2 +1,2 @@
1
- Joint.bind 'List.Item', ->
1
+ ObserveJS.bind 'List.Item', class
2
2
  loaded: ->
@@ -1,4 +1,4 @@
1
- Joint.bind 'List', class
1
+ ObserveJS.bind 'List', class
2
2
  loaded: ->
3
3
  @on 'todos:create', document, @append
4
4
 
@@ -11,7 +11,6 @@ document.addEventListener 'readystatechange', (e) ->
11
11
  document.querySelector('ol.test.items').appendChild(li)
12
12
  assert.ok count + 1 == document.querySelectorAll("li[as='List.Item']").length, "Should instantiate a new instance for the new item"
13
13
  li.remove()
14
-
15
- event = new CustomEvent('QUnit:Joint:Initialized')
16
- document.dispatchEvent(event)
17
14
 
15
+ event = new CustomEvent('QUnit:ObserveJS:Initialized')
16
+ document.dispatchEvent(event)
@@ -0,0 +1,11 @@
1
+ document.addEventListener 'readystatechange', (e) ->
2
+ return unless document.readyState == 'complete'
3
+ QUnit.test 'Should return a template bound to the class', (assert) ->
4
+ elements = document.querySelectorAll("li[as='List.Item']")
5
+
6
+ list = document.querySelector("[as='List']")
7
+ assert.ok list.instance.template() instanceof HTMLTemplateElement, "Should have a template associated with the List"
8
+
9
+ for li in elements
10
+ assert.throws li.instance.template, "No template should be found for those list element."
11
+
@@ -1,4 +1,4 @@
1
- document.addEventListener 'QUnit:Joint:Initialized', ->
1
+ document.addEventListener 'QUnit:ObserveJS:Initialized', ->
2
2
  QUnit.test 'Send an AJAX for any element that has a href attribute', (assert) ->
3
3
  el = document.querySelector("li[as='List.Item']")
4
4
  assert.ok(true)
@@ -9,11 +9,22 @@ document.addEventListener 'QUnit:Joint:Initialized', ->
9
9
  form = NewTodo
10
10
  form.querySelector('#todo_title').value = "Creating a new todo"
11
11
 
12
- xhr = Joint.XHR.send(form)
12
+ xhr = ObserveJS.XHR.send(form)
13
13
  xhr.request.addEventListener 'load', (r) ->
14
14
  assert.equal(r.target.status, 200)
15
15
  passed()
16
16
 
17
+ QUnit.test 'Failed AJAX will emit and event', (assert) ->
18
+ passed = assert.async()
19
+
20
+ form = NewTodo.cloneNode(true)
21
+
22
+ form.addEventListener 'ObserveJS:XHR:Failed', (e) ->
23
+ assert.equal(form, e.response.target.element)
24
+ passed()
25
+
26
+ form.setAttribute('action', 'http://error.domain.cyz')
27
+ ObserveJS.XHR.send(form)
17
28
 
18
29
 
19
30
  QUnit.test 'If a form data is passed and the request is GET, hardcode the params in the URL', (assert) ->
@@ -0,0 +1,3 @@
1
+ article {
2
+ display: none;
3
+ }
@@ -3,6 +3,7 @@
3
3
  <head>
4
4
  <title>JointJS Test Suite</title>
5
5
  <link rel="stylesheet" href="//code.jquery.com/qunit/qunit-1.16.0.css">
6
+ <%= stylesheet_link_tag "application", "data-turbolinks-track" => true %>
6
7
  <%= javascript_include_tag "application", 'http://code.jquery.com/qunit/qunit-1.16.0.js', "data-turbolinks-track" => true %>
7
8
  <%= csrf_meta_tags %>
8
9
  </head>
@@ -7,5 +7,8 @@
7
7
  <% @todos.each do |todo| %>
8
8
  <%= render todo %>
9
9
  <% end %>
10
+ <template for='List'>
11
+ </template>
10
12
  </ol>
13
+
11
14
  </article>
@@ -6,7 +6,7 @@ require 'rails/all'
6
6
  # you've limited to :test, :development, or :production.
7
7
  Bundler.require(*Rails.groups)
8
8
 
9
- module JointTest
9
+ module ObserveJSTest
10
10
  class Application < Rails::Application
11
11
  # Settings in config/environments/* take precedence over those specified here.
12
12
  # Application configuration should go into files in config/initializers
@@ -1,4 +1,4 @@
1
- JointTest::Application.routes.draw do
1
+ ObserveJSTest::Application.routes.draw do
2
2
  resources :todos
3
3
  root to: 'todos#index'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: observejs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pier-Olivier Thibault
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-17 00:00:00.000000000 Z
11
+ date: 2015-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -78,17 +78,17 @@ files:
78
78
  - LICENSE.txt
79
79
  - README.md
80
80
  - Rakefile
81
- - jointjs.gemspec
82
- - lib/jointjs.rb
83
- - lib/jointjs/app/assets/javascripts/joint.js.coffee
84
- - lib/jointjs/app/assets/javascripts/joint/base.js.coffee
85
- - lib/jointjs/app/assets/javascripts/joint/creator.js.coffee
86
- - lib/jointjs/app/assets/javascripts/joint/ext.js.coffee
87
- - lib/jointjs/app/assets/javascripts/joint/watcher.js.coffee
88
- - lib/jointjs/app/assets/javascripts/joint/xhr.js.coffee
89
- - lib/jointjs/app/views/layouts/application.js.erb
90
- - lib/jointjs/railtie.rb
91
- - lib/jointjs/version.rb
81
+ - lib/observejs.rb
82
+ - lib/observejs/app/assets/javascripts/observejs.js.coffee
83
+ - lib/observejs/app/assets/javascripts/observejs/base.js.coffee
84
+ - lib/observejs/app/assets/javascripts/observejs/creator.js.coffee
85
+ - lib/observejs/app/assets/javascripts/observejs/ext.js.coffee
86
+ - lib/observejs/app/assets/javascripts/observejs/watcher.js.coffee
87
+ - lib/observejs/app/assets/javascripts/observejs/xhr.js.coffee
88
+ - lib/observejs/app/views/layouts/application.js.erb
89
+ - lib/observejs/railtie.rb
90
+ - lib/observejs/version.rb
91
+ - observejs.gemspec
92
92
  - test/Gemfile
93
93
  - test/Gemfile.lock
94
94
  - test/README.rdoc
@@ -97,7 +97,9 @@ files:
97
97
  - test/app/assets/javascripts/item.js.coffee
98
98
  - test/app/assets/javascripts/list.js.coffee
99
99
  - test/app/assets/javascripts/tests/instances.js.coffee
100
+ - test/app/assets/javascripts/tests/template.js.coffee
100
101
  - test/app/assets/javascripts/tests/xhr.js.coffee
102
+ - test/app/assets/stylesheets/application.css.scss
101
103
  - test/app/controllers/todos_controller.rb
102
104
  - test/app/models/todo.rb
103
105
  - test/app/views/layouts/application.html.erb
@@ -128,7 +130,6 @@ files:
128
130
  - test/config/locales/en.yml
129
131
  - test/config/routes.rb
130
132
  - test/config/secrets.yml
131
- - test/db/joint_test
132
133
  - test/db/migrate/20150106151240_create_todos.rb
133
134
  - test/db/schema.rb
134
135
  - test/db/seeds.rb
@@ -153,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
154
  version: '0'
154
155
  requirements: []
155
156
  rubyforge_project:
156
- rubygems_version: 2.2.2
157
+ rubygems_version: 2.4.5
157
158
  signing_key:
158
159
  specification_version: 4
159
160
  summary: Event based JavaScript framework tailored for Ruby on rails.
@@ -166,7 +167,9 @@ test_files:
166
167
  - test/app/assets/javascripts/item.js.coffee
167
168
  - test/app/assets/javascripts/list.js.coffee
168
169
  - test/app/assets/javascripts/tests/instances.js.coffee
170
+ - test/app/assets/javascripts/tests/template.js.coffee
169
171
  - test/app/assets/javascripts/tests/xhr.js.coffee
172
+ - test/app/assets/stylesheets/application.css.scss
170
173
  - test/app/controllers/todos_controller.rb
171
174
  - test/app/models/todo.rb
172
175
  - test/app/views/layouts/application.html.erb
@@ -197,7 +200,6 @@ test_files:
197
200
  - test/config/locales/en.yml
198
201
  - test/config/routes.rb
199
202
  - test/config/secrets.yml
200
- - test/db/joint_test
201
203
  - test/db/migrate/20150106151240_create_todos.rb
202
204
  - test/db/schema.rb
203
205
  - test/db/seeds.rb
@@ -1,18 +0,0 @@
1
- class Joint
2
- attributeName: 'as'
3
-
4
- constructor: ->
5
- @cache = {}
6
-
7
- initialize: =>
8
- event = new CustomEvent('joint:loaded')
9
- document.dispatchEvent(event)
10
-
11
- isDOM: (el) ->
12
- el instanceof HTMLDocument ||
13
- el instanceof HTMLElement
14
-
15
- bind: (name, kls) =>
16
- @cache[name] = kls
17
-
18
- window.Joint = new Joint()
@@ -1,49 +0,0 @@
1
- class Watcher
2
- constructor: ->
3
- document.addEventListener('joint:loaded', @start)
4
-
5
- start: =>
6
- @observer = new MutationObserver(@observed)
7
- @observer.observe(document, {
8
- attributes: true,
9
- subtree: true,
10
- childList: true,
11
- attributeFilter: [Joint.attributeName],
12
- characterData: true
13
- })
14
-
15
- @inspect(document)
16
-
17
- observed: (mutations) =>
18
- mutations.forEach (mutation) =>
19
- if mutation.type == 'attributes'
20
- Joint.Creator.update(target)
21
- else
22
- @add(mutation.addedNodes)
23
- @destroy(mutation.removedNodes)
24
-
25
-
26
- add: (nodes) =>
27
- for node in nodes
28
- continue unless Joint.isDOM(node)
29
- if node.hasAttribute(Joint.attributeName)
30
- Joint.Creator.create(node, node.getAttribute(Joint.attributeName))
31
-
32
- for child in node.querySelectorAll("[#{Joint.attributeName}]")
33
- Joint.Creator.create(child, child.getAttribute(Joint.attributeName))
34
-
35
- destroy: (nodes) =>
36
- for node in nodes
37
- continue unless Joint.isDOM(node)
38
- if node.hasAttribute(Joint.attributeName)
39
- Joint.Creator.destroy(node)
40
-
41
- for child in node.querySelectorAll("[#{Joint.attributeName}]")
42
- Joint.Creator.destroy(child)
43
-
44
- inspect: (node) ->
45
- if Joint.isDOM(node)
46
- found = node.querySelectorAll("[#{Joint.attributeName}]")
47
- Joint.Creator.create(el) for el in found
48
-
49
- @Joint.Watcher = new Watcher()
@@ -1,12 +0,0 @@
1
- #= require 'joint/ext'
2
- #= require 'joint/base'
3
- #= require 'joint/watcher'
4
- #= require 'joint/creator'
5
- #= require 'joint/xhr'
6
-
7
- if document.readyState == 'complete'
8
- window.Joint.initialize()
9
- else
10
- document.addEventListener 'DOMContentLoaded', ->
11
- window.Joint.initialize()
12
-
@@ -1,3 +0,0 @@
1
- module JointJS
2
- VERSION = "0.0.5"
3
- end
data/lib/jointjs.rb DELETED
@@ -1,5 +0,0 @@
1
- require "jointjs/version"
2
-
3
- module JointJS
4
- require 'jointjs/railtie'
5
- end
data/test/db/joint_test DELETED
Binary file