electronics 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 087089f239c328f85e2539ea4ca8fd4c1c0b108c
4
- data.tar.gz: adac1de74083c05e8a2919bbfb79925399f008bf
3
+ metadata.gz: a8dcd166f997415e024952bf91b9c84087b28570
4
+ data.tar.gz: 2fd2f4202971e45a4942bd9b5657f708c313533d
5
5
  SHA512:
6
- metadata.gz: e6b7a6ea667e4ca7d1a638b72dfc9ef354c9fcc4a8498f3e792450d2ca89e77ab005aad55947c70ce2c900c2e969461feb9895fb8276f3a0804f34f20851009d
7
- data.tar.gz: 0a703fcb8f426b8a9217c4957a0de74be74c981fd3d7920624024b49a1abe9ee07fb6bc82ee2561756c6e49ab483501ed1303850c0de9ac2cf41576106a3758a
6
+ metadata.gz: 8051dbe977a29077b4bf8eca10ef0c9222edf8c38f14c8f1b7853e6e570a1980497992f6d849f00d092fd8e877557dbe14d5506257094303230f039ba5ae6351
7
+ data.tar.gz: 6a9f1731770735f0f154788f866e6a46619210b0d5de8e018443ac040919d710620fdfe58a1b61cc9a12e65bdd8cf1f4a58539c3760f324b13c4bffcdfae189d
@@ -0,0 +1,177 @@
1
+ Electronics = {
2
+ Controllers: {},
3
+ Renderers: {},
4
+ MVCs: {}
5
+ };
6
+ Electronics.Controllers.ClearAllController = function(model) {
7
+ return {
8
+ 'click [data-clear-all]': function(e) {
9
+ model.clear();
10
+ }
11
+ }
12
+ }
13
+ ;
14
+ Electronics.Controllers.EnableDisableController = function(model, opts) {
15
+ var events = {};
16
+ opts.enableAttribute = opts.enableAttribute || 'enable-trigger';
17
+ opts.disableAttribute = opts.disableAttribute || 'disable-trigger';
18
+
19
+ events['click [data-' + opts.enableAttribute + ']'] = function(e) {
20
+ var target = $(e.currentTarget);
21
+ model.set(target.data(opts.enableAttribute), true);
22
+ };
23
+ events['click [data-' + opts.disableAttribute + ']'] = function(e) {
24
+ var target = $(e.currentTarget);
25
+ model.set(target.data(opts.disableAttribute), false);
26
+ };
27
+
28
+ return events;
29
+ }
30
+ ;
31
+ Electronics.Controllers.HoverController = function(model, attribute) {
32
+ var events = {};
33
+
34
+ events['mouseover [data-' + attribute + ']'] = function(e) {
35
+ var target = $(e.currentTarget);
36
+ model.set(target.data(attribute), true);
37
+ };
38
+ events['mouseout [data-' + attribute + ']'] = function(e) {
39
+ var target = $(e.currentTarget);
40
+ model.set(target.data(attribute), false);
41
+ };
42
+
43
+ return events;
44
+ }
45
+ ;
46
+ Electronics.MVCs.EnableDisableMVC = function(opts) {
47
+ locksModel = new Backbone.Model();
48
+ return Electronics.MVCs.GenericMVC({
49
+ controller: Electronics.Controllers.EnableDisableController(locksModel, {}),
50
+ render: Electronics.Renderers.EnableDisableRenderer('enabled-as'),
51
+ model: locksModel,
52
+ el: opts.el
53
+ });
54
+ }
55
+ ;
56
+ Electronics.MVCs.GenericMVC = function(opts) {
57
+ var self, klass;
58
+ var presenter = opts.presenter || function(model) { return model.toJSON(); };
59
+
60
+ var renderTemplate = function(json, el) {
61
+ el.html(opts.template(json));
62
+ }
63
+ var render = opts.render || (opts.template && renderTemplate) || function(){};
64
+ var views = opts.views || [];
65
+
66
+ klass = Backbone.View.extend({
67
+ el: opts.el,
68
+ events: opts.controller,
69
+ render: function() {
70
+ render(presenter(opts.model), opts.el);
71
+ _.each(views, function(view) {
72
+ var viewPres = view.presenter || function(model) { return model.toJSON(); };
73
+ view.renderer(viewPres(opts.model), opts.el);
74
+ });
75
+ },
76
+ addRender: function(renderFn) {
77
+
78
+ }
79
+ });
80
+
81
+ self = new klass(opts);
82
+
83
+ opts.model.on('change', self.render);
84
+ opts.model.on('add', self.render);
85
+ opts.model.on('reset', self.render);
86
+
87
+ return self;
88
+ }
89
+ ;
90
+ Electronics.MVCs.ShowHideMVC = function(opts) {
91
+ opts = opts || {};
92
+
93
+ var visibilityModel = new Backbone.Model();
94
+ return Electronics.MVCs.GenericMVC({
95
+ controller: Electronics.Controllers.EnableDisableController(visibilityModel, {
96
+ enableAttribute: 'show-trigger',
97
+ disableAttribute: 'hide-trigger',
98
+ }),
99
+ render: Electronics.Renderers.ActiveRenderer('shown', 'hidden'),
100
+ model: visibilityModel,
101
+ el: opts.el
102
+ });
103
+ }
104
+ ;
105
+ Electronics.MVCs.TooltipMVC = function(opts) {
106
+ opts = opts || {};
107
+ opts.tooltipAttr = opts.tooltipAttr || 'tooltip';
108
+ opts.triggerAttr = opts.triggerAttr || 'tooltip-trigger';
109
+
110
+ var tooltipModel = new Backbone.Model();
111
+ return Electronics.MVCs.GenericMVC({
112
+ controller: Electronics.Controllers.HoverController(tooltipModel, opts.triggerAttr),
113
+ render: Electronics.Renderers.ClassRenderer(opts.tooltipAttr, 'active'),
114
+ model: tooltipModel,
115
+ el: opts.el
116
+ });
117
+ }
118
+ ;
119
+ Electronics.Renderers.ActiveRenderer = function(activeClass, inactiveClass, opts) {
120
+ inactiveClass = inactiveClass || "";
121
+ return function(info, $el) {
122
+ _.each($el.find('[data-active-on]'), function(el) {
123
+ var target = $(el);
124
+ var k = target.data('active-on');
125
+ var v = info[k];
126
+ if (v) {
127
+ target.addClass(activeClass);
128
+ target.removeClass(inactiveClass);
129
+ } else {
130
+ target.removeClass(activeClass);
131
+ target.addClass(inactiveClass);
132
+ }
133
+ });
134
+ _.each($el.find('[data-inactive-on]'), function(el) {
135
+ var target = $(el);
136
+ var k = target.data('inactive-on');
137
+ var v = info[k];
138
+ if (!v) {
139
+ target.addClass(activeClass);
140
+ target.removeClass(inactiveClass);
141
+ } else {
142
+ target.removeClass(activeClass);
143
+ target.addClass(inactiveClass);
144
+ }
145
+ });
146
+ };
147
+ };
148
+ Electronics.Renderers.ClassRenderer = function(attribute, activeClass) {
149
+ return function(info, $el) {
150
+ _.each(info, function(v,k) {
151
+ var target = $el.find('[data-'+ attribute +'="'+ k +'"]')
152
+ if (v) {
153
+ target.addClass(activeClass);
154
+ } else {
155
+ target.removeClass(activeClass);
156
+ }
157
+ });
158
+ };
159
+ };
160
+ Electronics.Renderers.EnableDisableRenderer = function(attribute) {
161
+ return function(info, $el) {
162
+ _.each($el.find('[data-'+ attribute +']'), function(el) {
163
+ var target = $(el);
164
+ var k = target.data(attribute);
165
+ if (info[k]) {
166
+ target.prop('disabled', false);
167
+ } else {
168
+ target.prop('disabled', true);
169
+ }
170
+ });
171
+ };
172
+ };
173
+
174
+
175
+
176
+ Foo = {}
177
+ ;
@@ -1,5 +1,3 @@
1
- Electronics = {
2
- Controllers: {},
3
- Renderers: {},
4
- MVCs: {}
5
- };
1
+ //= require electronics/namespace.js
2
+ //= require_tree ./electronics
3
+ //= require_self
@@ -0,0 +1,5 @@
1
+ Electronics = {
2
+ Controllers: {},
3
+ Renderers: {},
4
+ MVCs: {}
5
+ };
@@ -1,3 +1,3 @@
1
1
  module Electronics
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -6,9 +6,10 @@ require 'pry'
6
6
 
7
7
  ROOT = Pathname(Dir.pwd)
8
8
  LOGGER = Logger.new(STDOUT)
9
- BUNDLE = "all.js"
9
+ BUNDLE = "all.js"
10
10
  BUILD_DIR = ROOT.join("build")
11
11
  SOURCE_DIR = ROOT.join("lib/assets/javascripts/electronics")
12
+ BUNDLE_DIR = ROOT.join("lib/assets/javascripts/")
12
13
 
13
14
  desc "compiles sprockets"
14
15
  task :compile do
@@ -16,9 +17,8 @@ task :compile do
16
17
  env.logger = LOGGER
17
18
  end
18
19
 
19
- puts SOURCE_DIR.to_s
20
20
  sprockets.append_path(SOURCE_DIR.to_s)
21
- # binding.pry
21
+ sprockets.append_path(BUNDLE_DIR.to_s)
22
22
  File.open(File.join(BUILD_DIR, 'all.js'), 'w') do |f|
23
23
  f.write sprockets[BUNDLE].to_s
24
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: electronics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Electronics
@@ -137,6 +137,7 @@ files:
137
137
  - lib/assets/javascripts/electronics/mvcs/generic_mvc.js
138
138
  - lib/assets/javascripts/electronics/mvcs/show_hide_mvc.js
139
139
  - lib/assets/javascripts/electronics/mvcs/tooltip_mvc.js
140
+ - lib/assets/javascripts/electronics/namespace.js
140
141
  - lib/assets/javascripts/electronics/renderers/active_renderer.js
141
142
  - lib/assets/javascripts/electronics/renderers/class_renderer.js
142
143
  - lib/assets/javascripts/electronics/renderers/enable_disable_renderer.js
@@ -144,6 +145,7 @@ files:
144
145
  - lib/electronics/version.rb
145
146
  - lib/electronics.rb
146
147
  - lib/tasks/sprockets.rake
148
+ - build/all.js
147
149
  - MIT-LICENSE
148
150
  - Rakefile
149
151
  - README.markdown