lanes 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
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