lanes 0.1.8 → 0.1.9

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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -1
  3. data/client/lanes/{screens/Instance.coffee → Boot.coffee} +5 -5
  4. data/client/lanes/Config.coffee +2 -0
  5. data/client/lanes/components/multi-select/MultiSelect.coffee +20 -6
  6. data/client/lanes/components/popover/PopOver.coffee +5 -2
  7. data/client/lanes/components/record-finder/RecordFinder.coffee +12 -7
  8. data/client/lanes/components/record-finder/config.json +1 -1
  9. data/client/lanes/components/select-field/SelectField.coffee +8 -8
  10. data/client/lanes/index.js +1 -0
  11. data/client/lanes/index.scss.erb +1 -1
  12. data/client/lanes/lib/MakeBaseClass.coffee +12 -0
  13. data/client/lanes/lib/loader.coffee +3 -1
  14. data/client/lanes/lib/namespace.coffee +1 -1
  15. data/client/lanes/lib/utilFunctions.coffee +13 -1
  16. data/client/lanes/models/{ModelAssociations.coffee → AssociationMap.coffee} +12 -9
  17. data/client/lanes/models/Base.coffee +40 -14
  18. data/client/lanes/models/Collection.coffee +6 -2
  19. data/client/lanes/models/EnumMap.coffee +25 -0
  20. data/client/lanes/models/PubSub.coffee +2 -2
  21. data/client/lanes/models/Query.coffee +1 -1
  22. data/client/lanes/models/ServerCache.coffee +63 -0
  23. data/client/lanes/models/Sync.coffee +11 -13
  24. data/client/lanes/models/index.js +3 -1
  25. data/client/lanes/screens/Base.coffee +1 -1
  26. data/client/lanes/screens/Definitions.coffee +1 -1
  27. data/client/lanes/screens/index.js +1 -1
  28. data/client/lanes/screens/mixins/Editing.coffee +38 -0
  29. data/client/lanes/screens/mixins/index.js +1 -0
  30. data/client/lanes/styles/plugins/overlay.scss +7 -0
  31. data/client/lanes/testing/BeforeEach.coffee +62 -0
  32. data/client/lanes/testing/ModelSaver.coffee +5 -6
  33. data/client/lanes/testing/TestModels.coffee +23 -0
  34. data/client/lanes/testing/index.js +3 -1
  35. data/client/lanes/vendor/packaged.js +5860 -26
  36. data/client/lanes/views/Base.coffee +20 -20
  37. data/client/lanes/views/FormBindings.coffee +4 -2
  38. data/client/lanes/views/RenderContext.coffee +2 -2
  39. data/client/lanes/workspace/Layout.coffee +6 -2
  40. data/client/lanes/workspace/Navbar.coffee +1 -1
  41. data/client/lanes/workspace/Pages.coffee +1 -1
  42. data/client/lanes/workspace/navbar.html +3 -1
  43. data/client/lanes/workspace/styles/header.scss +3 -1
  44. data/lib/lanes/access/authentication_provider.rb +2 -2
  45. data/lib/lanes/access/config/routes.rb +1 -1
  46. data/lib/lanes/access/extension.rb +1 -4
  47. data/lib/lanes/access/role.rb +20 -15
  48. data/lib/lanes/access/test_fixture_extensions.rb +20 -0
  49. data/lib/lanes/access.rb +3 -3
  50. data/lib/lanes/api/request_wrapper.rb +3 -2
  51. data/lib/lanes/api/sprockets_extension.rb +1 -1
  52. data/lib/lanes/api/test_specs.rb +1 -1
  53. data/lib/lanes/capistrano.rb +18 -6
  54. data/lib/lanes/command/app.rb +1 -1
  55. data/lib/lanes/command/generate_model.rb +6 -0
  56. data/lib/lanes/command/generate_view.rb +7 -6
  57. data/lib/lanes/command/named_command.rb +1 -1
  58. data/lib/lanes/concerns/all.rb +1 -0
  59. data/lib/lanes/concerns/code_identifier.rb +43 -0
  60. data/lib/lanes/concerns/set_attribute_data.rb +0 -8
  61. data/lib/lanes/configuration.rb +1 -1
  62. data/lib/lanes/db.rb +11 -9
  63. data/lib/lanes/extension.rb +1 -0
  64. data/lib/lanes/guard_tasks.rb +1 -1
  65. data/lib/lanes/model.rb +1 -0
  66. data/lib/lanes/rake_tasks.rb +0 -2
  67. data/lib/lanes/screen.rb +1 -4
  68. data/lib/lanes/spec_helper.rb +5 -2
  69. data/lib/lanes/version.rb +1 -1
  70. data/npm-build/package.json +1 -0
  71. data/npm-build/template.js +1 -0
  72. data/spec/command-reference-files/initial/Gemfile +4 -1
  73. data/spec/command-reference-files/initial/client/appy-app/Extension.coffee +11 -1
  74. data/spec/command-reference-files/initial/config/lanes.rb +4 -1
  75. data/spec/command-reference-files/initial/lib/appy-app/extension.rb +12 -1
  76. data/spec/command-reference-files/initial/lib/appy-app.rb +0 -1
  77. data/spec/command-reference-files/model/lib/appy-app/model.rb +12 -0
  78. data/spec/command-reference-files/model/lib/appy-app.rb +11 -0
  79. data/spec/command-reference-files/view/client/appy-app/views/BigView.coffee +1 -0
  80. data/spec/lanes/helpers/lanes-helpers.coffee +0 -79
  81. data/spec/lanes/models/{ModelAssociationsSpec.coffee → AssociationMapSpec.coffee} +0 -0
  82. data/spec/lanes/models/BaseSpec.coffee +25 -12
  83. data/spec/lanes/models/CollectionSpec.coffee +20 -0
  84. data/spec/lanes/models/EnumMapSpec.coffee +26 -0
  85. data/spec/server/command_spec.rb +1 -1
  86. data/templates/Gemfile +4 -1
  87. data/templates/client/Extension.coffee +11 -1
  88. data/templates/client/views/View.coffee +2 -1
  89. data/templates/config/lanes.rb +4 -1
  90. data/templates/lib/namespace/extension.rb +12 -1
  91. data/templates/lib/namespace.rb +0 -1
  92. data/templates/spec/client/views/ViewSpec.coffee +1 -1
  93. metadata +16 -6
  94. data/spec/command-reference-files/initial/lib/appy-app/models/empty.rb +0 -0
@@ -94,6 +94,7 @@ module Lanes
94
94
  csrf_token: Rack::Csrf.csrf_token(view.env),
95
95
  controlling_extension: controlling.identifier,
96
96
  root_view: Lanes.config.root_view,
97
+ assets_path_prefix: Lanes.config.assets_path_prefix,
97
98
  api_path: Lanes.config.mounted_at,
98
99
  environment: Lanes.config.environment,
99
100
  initial_workspace_screen_id: Lanes.config.initial_workspace_screen_id,
@@ -38,7 +38,7 @@ module Lanes
38
38
 
39
39
  dsl.guard :minitest, minitest_options do
40
40
  dsl.watch(%r{^spec/server/spec_helper\.rb}) { 'test' }
41
- dsl.watch(%r{^spec/server/.+_spec\.rb})
41
+ dsl.watch(%r{^spec/server/.*_spec\.rb})
42
42
  dsl.watch(%r{^spec/fixtures/#{app_name}/(.+)s\.yml}) { |m| "spec/server/#{m[1]}_spec.rb" }
43
43
  dsl.watch(%r{^lib/#{app_name}/(.+)\.rb}) { |m| "spec/server/#{m[1]}_spec.rb" }
44
44
  matchers.server_matches.call if matchers.server_matches
data/lib/lanes/model.rb CHANGED
@@ -14,6 +14,7 @@ module Lanes
14
14
  include Concerns::ExportJoinTables
15
15
  include Concerns::AssociationExtensions
16
16
  include Concerns::ApiPath
17
+ include Concerns::CodeIdentifier
17
18
  include Concerns::SanitizeFields
18
19
 
19
20
  end
@@ -18,7 +18,6 @@ task :console do
18
18
  IRB.start
19
19
  end
20
20
 
21
-
22
21
  # ## quite a bit of this is cribbed from Sinatra ActiveRecord
23
22
  load 'active_record/railties/databases.rake'
24
23
 
@@ -32,7 +31,6 @@ task :routes do
32
31
  end
33
32
  end
34
33
 
35
-
36
34
  namespace :db do
37
35
  task :environment do
38
36
  Lanes::DB.configure_rake_environment
data/lib/lanes/screen.rb CHANGED
@@ -78,10 +78,7 @@ module Lanes
78
78
  attr_accessor_with_default :css
79
79
 
80
80
  def assets
81
- paths=[]
82
- paths << "#{Lanes.config.assets_path_prefix}/#{js}" unless js.blank?
83
- paths << "#{Lanes.config.assets_path_prefix}/#{css}" unless css.blank?
84
- paths
81
+ [js, css].reject{|asset| asset.blank? }
85
82
  end
86
83
 
87
84
  def to_json
@@ -11,7 +11,7 @@ require 'minitest/spec'
11
11
  require 'minitest/autorun'
12
12
  require 'mocha/mini_test'
13
13
 
14
- RAILS_ENV = "test"
14
+ LANES_ENV = "test"
15
15
  I18n.enforce_available_locales = true
16
16
  Lanes::DB.establish_connection('test')
17
17
  Lanes.logger=Logger.new( File.open('log/test.log', File::WRONLY | File::APPEND | File::CREAT ))
@@ -36,7 +36,7 @@ module Lanes
36
36
  include Lanes
37
37
 
38
38
  include ActiveRecord::TestFixtures
39
- self.fixture_path = Pathname.new(__FILE__).dirname.join('fixtures')
39
+ self.fixture_path = Lanes::Extensions.controlling.root_path.join('spec','fixtures')
40
40
 
41
41
  self.use_transactional_fixtures = true
42
42
  fixtures :all
@@ -138,3 +138,6 @@ module MiniTest
138
138
  end
139
139
  end
140
140
  end
141
+
142
+
143
+ require_relative 'access/test_fixture_extensions'
data/lib/lanes/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Lanes
2
2
 
3
- VERSION = "0.1.8"
3
+ VERSION = "0.1.9"
4
4
 
5
5
  end
@@ -18,6 +18,7 @@
18
18
  "ampersand-dom-bindings": "~3.3",
19
19
  "underscore.inflections": "~0.2.1",
20
20
  "domify": "~1.3",
21
+ "interact.js": "~1.2",
21
22
  "big.js": "~2.5",
22
23
  "rsvp": "~3.0",
23
24
  "get-object-path": "~0.0.2",
@@ -16,6 +16,7 @@ Lanes.Vendor.KeyMaster = require("keymaster");
16
16
  Lanes.Vendor.Moment = require("moment");
17
17
  Lanes.Vendor.RSVP = require('rsvp');
18
18
  Lanes.Vendor.domify = require('domify');
19
+ Lanes.Vendor.interact = require('interact.js');
19
20
  Lanes.Vendor.BBEvents = require('backbone-events-standalone');
20
21
  Lanes.dom = require('ampersand-dom');
21
22
  var u = require('underscore');
@@ -1,6 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem "lanes", '0.1.8'
3
+ # For development while Lanes is evolving track master branch
4
+ gem "lanes", github: 'argosity/lanes', branch: 'master'
5
+
6
+ # gem "lanes", '0.1.9'
4
7
 
5
8
  gem "rake"
6
9
  gem 'puma'
@@ -1,6 +1,16 @@
1
+ # This is the client-side version of AppyApp::Extension
1
2
  class AppyApp.Extension extends Lanes.Extensions.Base
2
3
 
3
-
4
+ # must match the identier in
4
5
  identifier: "appy-app"
5
6
 
7
+ # This method is called when the extension is registered
8
+ # Not all of Lanes will be available yet
9
+ onRegistered: ->
10
+
11
+ # Data that is provided by AppyApp::Extension#client_bootstrap_data
12
+ # in lib/appy-app/extension.rb is passed to this method
6
13
  setBootstrapData: (data)->
14
+
15
+ # All of lanes is loaded and it is in the process of booting
16
+ onAvailable: ->
@@ -3,5 +3,8 @@
3
3
  #
4
4
  # It will not be evaluated if another extension is loading this one
5
5
  Lanes.configure do | config |
6
- config.root_view = "AppyApp.Screens.Base"
6
+ # You can specify a different initial vew by setting it here
7
+ # It must be set if the "Workspace" extension is disabled in
8
+ # lib/appy-app/extension.rb
9
+ # config.root_view = "AppyApp.Screens.<View Name>"
7
10
  end
@@ -1,4 +1,15 @@
1
- require_relative '../appy-app'
1
+ require_relative "../appy-app"
2
+
3
+ # This will load the "Workspace" extension, which provides
4
+ # a menu and tab based switching between screens.
5
+ require "lanes/workspace/extension"
6
+
7
+ # This will load the "Access" extension, which provides
8
+ # Role based user access controls. Before enabling it
9
+ # make sure that you have created some users in db/seed.rb
10
+ #
11
+ # require "lanes/workspace/access"
12
+
2
13
 
3
14
  module AppyApp
4
15
 
@@ -9,4 +9,3 @@ module AppyApp
9
9
  end
10
10
 
11
11
  require_relative "appy-app/model"
12
- require_rel "appy-app/models"
@@ -0,0 +1,12 @@
1
+ module AppyApp
2
+
3
+ # All models in AppyApp will inherit from
4
+ # this common base class.
5
+ class Model < Lanes::Model
6
+
7
+ self.abstract_class = true
8
+
9
+ end
10
+
11
+ autoload :TestTest, "appy-app/models/test_test"
12
+ end
@@ -0,0 +1,11 @@
1
+ require "lanes"
2
+ require 'require_all'
3
+ require_relative "appy-app/version.rb"
4
+ require_relative "appy-app/extension.rb"
5
+
6
+ # The main namespace for AppyApp
7
+ module AppyApp
8
+
9
+ end
10
+
11
+ require_relative "appy-app/model"
@@ -1,5 +1,6 @@
1
1
  class AppyApp.Views.BigView extends AppyApp.Views.Base
2
2
 
3
+ template: '<h3>AppyApp.Views.BigView</h3>'
3
4
 
4
5
  ## These are listed only as examples.
5
6
  # If unused they can be safely removed.
@@ -1,84 +1,5 @@
1
- Lanes.namespace 'Test'
2
-
3
- View = undefined
4
- Model = undefined
5
- Collection = undefined
6
-
7
- class Lanes.Test.DummyView extends Lanes.Views.Base
8
- template: "<p>hi</p"
9
- events: { "click #mylink": 'onClick' }
10
- onClick: Lanes.emptyFn
11
-
12
- class Lanes.Test.DummyModel extends Lanes.Models.Base
13
- api_path: -> "test"
14
- props:
15
- id: 'number',
16
- name: ['string', true],
17
- html: 'string',
18
- url: 'string',
19
- something: 'string',
20
- fireDanger: 'string'
21
-
22
- session:
23
- active: 'boolean'
24
-
25
- derived:
26
- classes:
27
- deps: ['something', 'fireDanger', 'active'],
28
- fn: -> this.something + this.active;
29
-
30
- Lanes.Test.makeModel = (props={}, args={})->
31
- _.extend(Model.prototype, props)
32
- Lanes.Models.Base.extend(Model)
33
- Collection::model = Model
34
- Lanes.Models.Collection.extend(Collection)
35
- collection = new Collection
36
- return collection.add(new Model(args))
37
-
38
- Lanes.Test.makeView = (props={}, args={})->
39
- _.extend(View.prototype, props)
40
- Lanes.Views.Base.extend(View)
41
- return new View(args)
42
-
43
- syncResponse = (method, model, options)->
44
- _.defer ->
45
- if options.success && syncReply.success
46
- options.success(syncReply, "success", {})
47
- if options.failure && !syncReply.success
48
- options.failure(syncReply, "failure", {})
49
- _.Promise.resolve(model, options)
50
-
51
- syncReply = {}
52
-
53
1
  Lanes.Vendor.MessageBus = {
54
2
  subscribe: jasmine.createSpy('subscribe')
55
3
  unsubscribe: jasmine.createSpy('unsubscribe')
56
4
  start: Lanes.emptyFn
57
5
  }
58
-
59
- window.syncSucceedWith = (data)->
60
- syncReply.success = true
61
- syncReply.data = data
62
-
63
- beforeEach ->
64
- class TestModel
65
- constructor: -> super
66
- Model = TestModel
67
- class TestCollection
68
- constructor: -> super
69
- Collection = TestCollection
70
- class TestView
71
- constructor: -> super
72
- View = TestView
73
-
74
- syncReply = {
75
- success: true
76
- message: ''
77
- data: {}
78
- }
79
-
80
- Lanes.Test.syncSpy = jasmine.createSpy('sync').and.callFake(syncResponse)
81
- Lanes.Test.syncSpy.lastOptions = ->
82
- this.calls.mostRecent().args[2]
83
- Lanes.Models.Base::sync = Lanes.Test.syncSpy
84
- Lanes.Models.Collection::sync = Lanes.Test.syncSpy
@@ -65,15 +65,15 @@ describe "Lanes.Models.Base", ->
65
65
  expect(model.isDirty).toBe(true)
66
66
  expect(model.unsavedAttributes()).toEqual( foo: 'one, two, three' )
67
67
  model.save()
68
- expect(model.sync).toHaveBeenCalledWith('create', model, jasmine.any(Object))
68
+ expect(Lanes.Models.Sync.perform).toHaveBeenCalledWith('create', model, jasmine.any(Object))
69
69
  model.id=11
70
70
  expect(model.isNew()).toBe(false)
71
- model.sync.calls.reset()
71
+ Lanes.Models.Sync.perform.calls.reset()
72
72
  syncSucceedWith({
73
73
  foo: 'a new foo value'
74
74
  })
75
75
  model.save().then ->
76
- expect(model.sync).toHaveBeenCalledWith('patch', model, jasmine.any(Object))
76
+ expect(Lanes.Models.Sync.perform).toHaveBeenCalledWith('patch', model, jasmine.any(Object))
77
77
  expect(model.foo).toEqual('a new foo value')
78
78
  done()
79
79
 
@@ -86,9 +86,9 @@ describe "Lanes.Models.Base", ->
86
86
  foo: 'foo value'
87
87
  })
88
88
  model.fetch().then ->
89
- expect(model.sync).toHaveBeenCalledWith('read', model, jasmine.any(Object))
89
+ expect(Lanes.Models.Sync.perform).toHaveBeenCalledWith('read', model, jasmine.any(Object))
90
90
  expect(model.foo).toEqual('foo value')
91
- options = model.sync.lastOptions()
91
+ options = Lanes.Models.Sync.perform.lastOptions()
92
92
  expect(options).toHaveTrue('ignoreUnsaved')
93
93
  expect(options).toHaveNumberWithinRange('limit',1,1)
94
94
  done()
@@ -111,7 +111,7 @@ describe "Lanes.Models.Base", ->
111
111
  { id: 2, title: 'second value' }
112
112
  ])
113
113
  Model.where(title: 'first value').whenLoaded (collection)->
114
- options = Model::sync.lastOptions()
114
+ options = Lanes.Models.Sync.perform.lastOptions()
115
115
  expect(options.query).toEqual({title:'first value'})
116
116
  expect(collection.length).toEqual(2)
117
117
  done()
@@ -120,12 +120,10 @@ describe "Lanes.Models.Base", ->
120
120
  model = Lanes.Test.makeModel({
121
121
  props: { id: 'integer' }
122
122
  },{ id: 1 })
123
- collection = model.collection
124
- expect(collection.length).toEqual(1)
123
+ collection = model.constructor.Collection
125
124
  model.destroy().then ->
126
- expect(model.sync)
125
+ expect(Lanes.Models.Sync.perform)
127
126
  .toHaveBeenCalledWith('delete', model, jasmine.any(Object))
128
- expect(collection.length).toEqual(0)
129
127
  done()
130
128
 
131
129
  it "sets associations", ->
@@ -147,6 +145,21 @@ describe "Lanes.Models.Base", ->
147
145
  props: { id: 'integer', foo: 'string' }
148
146
  },{ id: 1 })
149
147
  model.withAssociations('color')
150
- expect(model.sync).toHaveBeenCalledWith('read', model, jasmine.any(Object))
151
- options = model.sync.lastOptions()
148
+ expect(Lanes.Models.Sync.perform).toHaveBeenCalledWith('read', model, jasmine.any(Object))
149
+ options = Lanes.Models.Sync.perform.lastOptions()
152
150
  expect(options.include).toEqual(['color'])
151
+
152
+ it "reads from caches", (done)->
153
+ model = Lanes.Test.makeModel({
154
+ cacheDuration: [1,'day']
155
+ props: { id: 'integer', title: 'string' }
156
+ }, {id: 1})
157
+ syncSucceedWith([
158
+ { id: 1, title: 'first value' }
159
+ { id: 2, title: 'second value' }
160
+ ])
161
+ collection = new model.constructor.Collection
162
+ collection.fetch().then ->
163
+ model.fetch().then ->
164
+ expect(model.title).toEqual('first value')
165
+ done()
@@ -25,3 +25,23 @@ describe "Lanes.Models.Collection", ->
25
25
  spy.calls.reset()
26
26
  collection.reset([{ id:11, title: 'last'}])
27
27
  expect(spy).toHaveBeenCalled()
28
+
29
+
30
+ it "caches", (done)->
31
+ model = Lanes.Test.makeModel({
32
+ cacheDuration: [1,'day']
33
+ props: { id: 'integer', title: 'string' }
34
+ })
35
+ syncSucceedWith([
36
+ { id: 1, title: 'first value' }
37
+ { id: 2, title: 'second value' }
38
+ ])
39
+ collection = new model.constructor.Collection
40
+ collection.fetch().then ->
41
+ expect(collection.length).toEqual 2
42
+ expect(Lanes.Models.Sync.perform).toHaveBeenCalled()
43
+ Lanes.Models.Sync.perform.calls.reset()
44
+ collection.fetch().then ->
45
+ expect(Lanes.Models.Sync.perform).not.toHaveBeenCalled()
46
+ expect(collection.length).toEqual 2
47
+ done()
@@ -0,0 +1,26 @@
1
+ describe "Lanes.Models.EnumMap", ->
2
+ model = null
3
+
4
+ beforeEach ->
5
+ model = Lanes.Test.makeModel({
6
+ enums:
7
+ state:
8
+ open: 1
9
+ complete: 5
10
+ canceled: 9
11
+
12
+ props:
13
+ state: {"type":"integer"}
14
+
15
+ },{ id: 123 })
16
+
17
+ xit "sets up enums", ->
18
+ expect(model.is_open).toEqual(false)
19
+ model.state = 1
20
+ expect(model.is_open).toEqual(true)
21
+ model.is_open="some crazy value"
22
+ expect(model.is_open).toEqual(true)
23
+
24
+ it "reads the enum's value from the field", ->
25
+ model.state = 1
26
+ expect(model.state_value).toEqual("open")
@@ -27,7 +27,7 @@ describe Lanes::Command do
27
27
  generated = generated_path.join(relative)
28
28
  assert generated.exist?, "File was not created: #{relative}"
29
29
  next unless path.file?
30
- diff = Diffy::Diff.new(generated.to_s, path.to_s, source: 'files', context: 1)
30
+ diff = Diffy::Diff.new(path.to_s, generated.to_s, source: 'files', context: 1)
31
31
  assert diff.to_s.empty?, "#{relative}\n #{diff}"
32
32
  end
33
33
  end
data/templates/Gemfile CHANGED
@@ -1,6 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem "lanes", '<%= Lanes::VERSION %>'
3
+ # For development while Lanes is evolving track master branch
4
+ gem "lanes", github: 'argosity/lanes', branch: 'master'
5
+
6
+ # gem "lanes", '<%= Lanes::VERSION %>'
4
7
 
5
8
  gem "rake"
6
9
  gem 'puma'
@@ -1,6 +1,16 @@
1
+ # This is the client-side version of <%= namespace %>::Extension
1
2
  class <%= namespace %>.Extension extends Lanes.Extensions.Base
2
3
 
3
-
4
+ # must match the identier in
4
5
  identifier: "<%= identifier %>"
5
6
 
7
+ # This method is called when the extension is registered
8
+ # Not all of Lanes will be available yet
9
+ onRegistered: ->
10
+
11
+ # Data that is provided by <%= namespace %>::Extension#client_bootstrap_data
12
+ # in lib/<%= identifier %>/extension.rb is passed to this method
6
13
  setBootstrapData: (data)->
14
+
15
+ # All of lanes is loaded and it is in the process of booting
16
+ onAvailable: ->
@@ -1,5 +1,6 @@
1
- class <%= namespace %>.Views.<%= class_name %> extends <%= namespace %>.Views.Base
1
+ class <%= view_class %> extends <%= namespace %>.Views.Base
2
2
 
3
+ template: '<h3><%= view_class %></h3>'
3
4
 
4
5
  ## These are listed only as examples.
5
6
  # If unused they can be safely removed.
@@ -3,5 +3,8 @@
3
3
  #
4
4
  # It will not be evaluated if another extension is loading this one
5
5
  Lanes.configure do | config |
6
- config.root_view = "<%= class_name %>.Screens.Base"
6
+ # You can specify a different initial vew by setting it here
7
+ # It must be set if the "Workspace" extension is disabled in
8
+ # lib/<%= identifier %>/extension.rb
9
+ # config.root_view = "<%= class_name %>.Screens.<View Name>"
7
10
  end
@@ -1,4 +1,15 @@
1
- require_relative '../<%= identifier %>'
1
+ require_relative "../<%= identifier %>"
2
+
3
+ # This will load the "Workspace" extension, which provides
4
+ # a menu and tab based switching between screens.
5
+ require "lanes/workspace/extension"
6
+
7
+ # This will load the "Access" extension, which provides
8
+ # Role based user access controls. Before enabling it
9
+ # make sure that you have created some users in db/seed.rb
10
+ #
11
+ # require "lanes/workspace/access"
12
+
2
13
 
3
14
  module <%= namespace %>
4
15
 
@@ -9,4 +9,3 @@ module <%= namespace %>
9
9
  end
10
10
 
11
11
  require_relative "<%= identifier %>/model"
12
- require_rel "<%= identifier %>/models"
@@ -1,4 +1,4 @@
1
- describe "<%= namespace %>.Views.<%= class_name %>", ->
1
+ describe "<%= view_class %>", ->
2
2
 
3
3
  it "can be instantiated", ->
4
4
  view = new <%= namespace %>.Views.<%= class_name %>()
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lanes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Stitt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-27 00:00:00.000000000 Z
11
+ date: 2015-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -470,6 +470,7 @@ files:
470
470
  - client/images/lanes/dataTables/sort_desc.png
471
471
  - client/images/lanes/dataTables/sort_desc_disabled.png
472
472
  - client/images/lanes/logo-sm.png
473
+ - client/lanes/Boot.coffee
473
474
  - client/lanes/Config.coffee
474
475
  - client/lanes/access/Extension.coffee
475
476
  - client/lanes/access/LoginDialog.coffee
@@ -551,14 +552,16 @@ files:
551
552
  - client/lanes/lib/promise_helpers.coffee
552
553
  - client/lanes/lib/results.coffee
553
554
  - client/lanes/lib/utilFunctions.coffee
555
+ - client/lanes/models/AssociationMap.coffee
554
556
  - client/lanes/models/Base.coffee
555
557
  - client/lanes/models/Bootstrap.coffee
556
558
  - client/lanes/models/ChangeMonitor.coffee
557
559
  - client/lanes/models/ChangeSet.coffee
558
560
  - client/lanes/models/Collection.coffee
559
- - client/lanes/models/ModelAssociations.coffee
561
+ - client/lanes/models/EnumMap.coffee
560
562
  - client/lanes/models/PubSub.coffee
561
563
  - client/lanes/models/Query.coffee
564
+ - client/lanes/models/ServerCache.coffee
562
565
  - client/lanes/models/Sync.coffee
563
566
  - client/lanes/models/User.coffee
564
567
  - client/lanes/models/index.js
@@ -569,10 +572,11 @@ files:
569
572
  - client/lanes/screens/Base.coffee
570
573
  - client/lanes/screens/ChangeListener.coffee
571
574
  - client/lanes/screens/Definitions.coffee
572
- - client/lanes/screens/Instance.coffee
573
575
  - client/lanes/screens/Router.coffee
574
576
  - client/lanes/screens/all.js.erb
575
577
  - client/lanes/screens/index.js
578
+ - client/lanes/screens/mixins/Editing.coffee
579
+ - client/lanes/screens/mixins/index.js
576
580
  - client/lanes/screens/register.js.erb
577
581
  - client/lanes/styles/bootstrap-custom-grid.scss
578
582
  - client/lanes/styles/bootstrap-custom-modals.scss
@@ -722,7 +726,9 @@ files:
722
726
  - client/lanes/styles/plugins/all.scss
723
727
  - client/lanes/styles/plugins/overlay.scss
724
728
  - client/lanes/styles/plugins/resize-sensor.scss
729
+ - client/lanes/testing/BeforeEach.coffee
725
730
  - client/lanes/testing/ModelSaver.coffee
731
+ - client/lanes/testing/TestModels.coffee
726
732
  - client/lanes/testing/index.js
727
733
  - client/lanes/vendor/bootstrap/affix.js
728
734
  - client/lanes/vendor/bootstrap/alert.js
@@ -808,6 +814,7 @@ files:
808
814
  - lib/lanes/access/role_collection.rb
809
815
  - lib/lanes/access/roles/administrator.rb
810
816
  - lib/lanes/access/roles/support.rb
817
+ - lib/lanes/access/test_fixture_extensions.rb
811
818
  - lib/lanes/access/track_modifications.rb
812
819
  - lib/lanes/access/user.rb
813
820
  - lib/lanes/access/version.rb
@@ -854,6 +861,7 @@ files:
854
861
  - lib/lanes/concerns/api_path.rb
855
862
  - lib/lanes/concerns/association_extensions.rb
856
863
  - lib/lanes/concerns/attr_accessor_with_default.rb
864
+ - lib/lanes/concerns/code_identifier.rb
857
865
  - lib/lanes/concerns/export_associations.rb
858
866
  - lib/lanes/concerns/export_join_tables.rb
859
867
  - lib/lanes/concerns/export_methods.rb
@@ -914,7 +922,6 @@ files:
914
922
  - spec/command-reference-files/initial/lib/appy-app.rb
915
923
  - spec/command-reference-files/initial/lib/appy-app/extension.rb
916
924
  - spec/command-reference-files/initial/lib/appy-app/model.rb
917
- - spec/command-reference-files/initial/lib/appy-app/models/empty.rb
918
925
  - spec/command-reference-files/initial/lib/appy-app/version.rb
919
926
  - spec/command-reference-files/initial/spec/appy-app/helpers/AppyAppHelpers.coffee
920
927
  - spec/command-reference-files/initial/spec/appy-app/screens/Base.coffee
@@ -922,6 +929,8 @@ files:
922
929
  - spec/command-reference-files/model/client/appy-app/models/TestTest.coffee
923
930
  - spec/command-reference-files/model/config/routes.rb
924
931
  - spec/command-reference-files/model/db/migrate/20150218032025_create_test_tests.rb
932
+ - spec/command-reference-files/model/lib/appy-app.rb
933
+ - spec/command-reference-files/model/lib/appy-app/model.rb
925
934
  - spec/command-reference-files/model/lib/appy-app/models/test_test.rb
926
935
  - spec/command-reference-files/model/spec/appy-app/models/TestTestSpec.coffee
927
936
  - spec/command-reference-files/model/spec/fixtures/appy-app/test_test.yml
@@ -939,9 +948,10 @@ files:
939
948
  - spec/lanes/helpers/jasmine-matchers.js
940
949
  - spec/lanes/helpers/lanes-helpers.coffee
941
950
  - spec/lanes/helpers/mock-ajax.js
951
+ - spec/lanes/models/AssociationMapSpec.coffee
942
952
  - spec/lanes/models/BaseSpec.coffee
943
953
  - spec/lanes/models/CollectionSpec.coffee
944
- - spec/lanes/models/ModelAssociationsSpec.coffee
954
+ - spec/lanes/models/EnumMapSpec.coffee
945
955
  - spec/lanes/models/PubSubSpec.coffee
946
956
  - spec/lanes/views/BaseSpec.coffee
947
957
  - spec/lanes/views/FormBindingsSpec.coffee