navigation_light 0.1.0

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 (31) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +83 -0
  4. data/Rakefile +32 -0
  5. data/app/assets/config/navigation_light_manifest.js +2 -0
  6. data/app/assets/javascripts/navigation_light/application.js +15 -0
  7. data/app/assets/stylesheets/navigation_light/application.css +15 -0
  8. data/app/controllers/navigation_light/application_controller.rb +5 -0
  9. data/app/helpers/navigation_light/application_helper.rb +4 -0
  10. data/app/jobs/navigation_light/application_job.rb +4 -0
  11. data/app/mailers/navigation_light/application_mailer.rb +6 -0
  12. data/app/models/navigation_light/application_record.rb +69 -0
  13. data/app/models/navigation_light/count.rb +39 -0
  14. data/app/models/navigation_light/label.rb +27 -0
  15. data/app/models/navigation_light/middle_label.rb +10 -0
  16. data/app/models/navigation_light/on_load.rb +16 -0
  17. data/app/models/navigation_light/relation_label.rb +13 -0
  18. data/app/models/navigation_light/relation_uuid.rb +54 -0
  19. data/app/models/navigation_light/time.rb +78 -0
  20. data/app/models/navigation_light/uuid.rb +47 -0
  21. data/app/views/layouts/navigation_light/application.html.erb +16 -0
  22. data/config/routes.rb +2 -0
  23. data/db/migrate/20200210090159_create_navigation_light_uuids.rb +19 -0
  24. data/db/migrate/20200211025417_create_navigation_light_labels.rb +41 -0
  25. data/db/migrate/20200213161530_create_navigation_light_times.rb +37 -0
  26. data/db/migrate/seed.rb +28 -0
  27. data/lib/navigation_light.rb +5 -0
  28. data/lib/navigation_light/engine.rb +14 -0
  29. data/lib/navigation_light/version.rb +3 -0
  30. data/lib/tasks/navigation_light_tasks.rake +4 -0
  31. metadata +143 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 78a67fb74ad6324faa2c522a203ef79ff7395ae2ee008a2b53f254ebf3aa8025
4
+ data.tar.gz: 82c40f7884122c8b13469176a4b04556642526ea17b85a49584cccc7ac11f994
5
+ SHA512:
6
+ metadata.gz: b6e96de9bdb751f41d8e6b6ab739664690977e521c5f497643c58b8d4931c9418f72778109ff899899eef451b31326cbd9ba8564f68b641dc30c2dbe30f0cb85
7
+ data.tar.gz: a8bd91cb6a4528875385f844fa70bbbb67d640aec2c6f07cba259bd2cfcc3c34ba4439a5dd8ac899ffcddc3a963d74b6244fd2b3962edf910460021ba02c0668
@@ -0,0 +1,20 @@
1
+ Copyright 2020 ff4c00
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,83 @@
1
+ <!-- TOC -->
2
+
3
+ - [说明](#说明)
4
+ - [用途](#用途)
5
+ - [返回值](#返回值)
6
+ - [示例](#示例)
7
+ - [源码地址](#源码地址)
8
+ - [接驳](#接驳)
9
+ - [使用](#使用)
10
+ - [Uuid](#uuid)
11
+ - [Lable](#lable)
12
+ - [Count](#count)
13
+ - [Time](#time)
14
+ - [License](#license)
15
+ - [多多指教](#多多指教)
16
+
17
+ <!-- /TOC -->
18
+
19
+ # 说明
20
+
21
+ ## 用途
22
+
23
+ > 航行灯用作指示飞机的方位.<br>本项目应用于为应用系统中数据记录提供定位服务.
24
+
25
+ 定位服务包括:
26
+
27
+ 0. 精确定位, 即通过索引值从整个数据库中查询出涉及的具体数据记录.
28
+ 0. 标签定位, 通过为数据添加标签使得可根据标签定位范围内数据.
29
+ 0. 频率定位, 通过对数据进行时间及标签关联,进行个性化统计.
30
+ 0. 时间定位, 对目标数据进行 分/时/天/月/季度/年 时间索引,属于标签定位的细分领域.
31
+
32
+ ## 返回值
33
+
34
+ 全局采用统一标准返回值格式(BJ-FHB-2020-0111):
35
+
36
+ [布尔值<sup>[1]</sup>,&emsp;'文字说明'<sup>[2]</sup>,&emsp;{error_message: '异常描述', error_path: '异常发生信息', other:{}}<sup>[3]</sup>]
37
+
38
+ <hr>
39
+
40
+ 1: 用于标记程序执行结果是否符合程序预期
41
+
42
+ 2: 可供直接显示的结果提示信息(不包含系统敏感信息)
43
+
44
+ 3: 非必需, 用于程序发生异常时,提供异常详细信息
45
+
46
+ ### 示例
47
+
48
+ ```ruby
49
+ [true, '操作成功']
50
+
51
+ [false, '操作失败', {error_message: '异常描述', error_path: '异常发生信息', other:{}}]
52
+ ```
53
+
54
+
55
+ ## 源码地址
56
+
57
+ [GitLab | NavigationLight]((https://gitlab.com/ff4c00/hijack/-/blob/master/BackEnd/Ruby/Article/C919/NavigationLight.md))
58
+
59
+ # 接驳
60
+
61
+ # 使用
62
+
63
+ ## Uuid
64
+
65
+ > 为数据生成全局唯一的uuid.
66
+
67
+ ```ruby
68
+ relation_navigation_light :uuid
69
+ ```
70
+
71
+ ## Lable
72
+
73
+ ## Count
74
+
75
+ ## Time
76
+
77
+ ## License
78
+
79
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
80
+
81
+ # 多多指教
82
+
83
+ * <a href="mailto:ff4c00@gmail.com">个人联系邮箱</a>
@@ -0,0 +1,32 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'NavigationLight'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.md')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+ load 'rails/tasks/statistics.rake'
21
+
22
+ require 'bundler/gem_tasks'
23
+
24
+ require 'rake/testtask'
25
+
26
+ Rake::TestTask.new(:test) do |t|
27
+ t.libs << 'test'
28
+ t.pattern = 'test/**/*_test.rb'
29
+ t.verbose = false
30
+ end
31
+
32
+ task default: :test
@@ -0,0 +1,2 @@
1
+ //= link_directory ../javascripts/navigation_light .js
2
+ //= link_directory ../stylesheets/navigation_light .css
@@ -0,0 +1,15 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
+ //
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require rails-ujs
14
+ //= require activestorage
15
+ //= require_tree .
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,5 @@
1
+ module NavigationLight
2
+ class ApplicationController < ActionController::Base
3
+ protect_from_forgery with: :exception
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ module NavigationLight
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module NavigationLight
2
+ class ApplicationJob < ActiveJob::Base
3
+ end
4
+ end
@@ -0,0 +1,6 @@
1
+ module NavigationLight
2
+ class ApplicationMailer < ActionMailer::Base
3
+ default from: 'from@example.com'
4
+ layout 'mailer'
5
+ end
6
+ end
@@ -0,0 +1,69 @@
1
+ module NavigationLight
2
+ class ApplicationRecord < ActiveRecord::Base
3
+ self.abstract_class = true
4
+
5
+ def ejection(type: 'back_result')
6
+ case type
7
+ when 'back_result', 'normal'
8
+ # send(type.to_sym, yield)
9
+ send(type.to_sym) do
10
+ yield
11
+ end
12
+ else
13
+ raise '参数(type), 赋值异常'
14
+ end
15
+ end
16
+
17
+ # def self.inherited(child_class)
18
+
19
+ # child_class.class_eval do |klass|
20
+ # # def klass.ejection
21
+ # # puts 'fine'
22
+ # # puts "#{self}"
23
+ # # end
24
+ # # def klass.ejection(*args, &block)
25
+ # # self.new.ejection(*args, &block)
26
+ # # end
27
+
28
+ # # def klass.ejection(type: 'back_result')
29
+ # # # self.new.ejection(type: type) do
30
+ # # # # yield
31
+ # # # p "#{super}"
32
+ # # # end
33
+ # # end
34
+
35
+ # # class << self
36
+ # # def ejection
37
+ # # p 'as'
38
+ # # end
39
+ # # end
40
+
41
+ # # define_method :ejection do
42
+ # # puts self
43
+ # # end
44
+
45
+ # end
46
+ # end
47
+
48
+ private
49
+ def back_result
50
+ begin
51
+ return (res = [false, '系统错误', '调用方法请提供相应代码块']) unless block_given?
52
+ res = yield
53
+ rescue
54
+ res = [false, '系统运行时异常', {error_message: $!, error_path: $@}]
55
+ ensure
56
+ return res
57
+ end
58
+ end
59
+
60
+ def normal
61
+ begin
62
+ yield
63
+ rescue => e
64
+ raise e
65
+ end
66
+ end
67
+
68
+ end
69
+ end
@@ -0,0 +1,39 @@
1
+ module NavigationLight
2
+ module Count < ApplicationRecord
3
+ def self.included(target)
4
+ target.class_eval do
5
+ has_many :times, as: :timeable, :dependent => :destroy
6
+
7
+ count = NavigationLight::Label.find_by(code: 'NavigationLight::Count')
8
+ count && count.children.where.not(code: nil).uniq.each do |label|
9
+
10
+ define_method("add_#{label.code}".to_sym) do |*args, &block|
11
+ time = Time.new
12
+ time.labels << label
13
+ self.times << time
14
+ end
15
+
16
+ define_method("summary_#{label.code}s".to_sym) do |*args, &block|
17
+ times = self.times.included(:labels).where("navigation_light_labels.code in ?", label.code)
18
+
19
+ Time::ABOUT_TIME_COLUMNS.each do |column|
20
+ define_method(column.to_sym) do |*args, &block|
21
+ times.where(column => args[0]).counts
22
+ end
23
+ end
24
+
25
+ Time::ABOUT_TIME_COLUMNS.each do |column|
26
+ define_method("summary_#{label.code}s_#{column}".to_sym) do |*args, &block|
27
+ column(*args, &block)
28
+ end
29
+ end
30
+
31
+ times.counts
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,27 @@
1
+ module NavigationLight
2
+ class Label < ApplicationRecord
3
+
4
+ relation_navigation_light :uuid
5
+
6
+ before_save :validate_columns
7
+
8
+ has_ancestry
9
+ has_ancestry :cache_depth => true
10
+
11
+ acts_as_paranoid
12
+
13
+ private
14
+
15
+ def validate_columns
16
+ validate_name
17
+ end
18
+
19
+ def validate_name
20
+ # 判断是否为空
21
+ unless self.name.present?
22
+ self.errors[:name] << '标签名称不能为空'
23
+ end
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,10 @@
1
+ module NavigationLight
2
+ class MiddleLabel < ApplicationRecord
3
+
4
+ relation_navigation_light :uuid
5
+
6
+ belongs_to :middlabel, :polymorphic => true
7
+ belongs_to :label
8
+
9
+ end
10
+ end
@@ -0,0 +1,16 @@
1
+ module NavigationLight
2
+ module OnLoad
3
+
4
+ def relation_navigation_light(*models)
5
+ models.each do |model|
6
+ raise "model名称错误, #{model} 不在允许加载model范围内." unless [:uuid, :label].include?(model.to_sym)
7
+ end
8
+
9
+ models.each do |model|
10
+ include "NavigationLight::Relation#{model.capitalize}".constantize
11
+ end
12
+ end
13
+
14
+ end
15
+ end
16
+
@@ -0,0 +1,13 @@
1
+ module NavigationLight
2
+ module RelationLabel
3
+
4
+ def self.included(target)
5
+ target.class_eval do
6
+ has_many :middlabels, as: :middlabel, class_name: 'MiddleLabel'
7
+ has_many :labels, through: :middlabels
8
+ end
9
+ end
10
+
11
+ end
12
+ end
13
+
@@ -0,0 +1,54 @@
1
+ module NavigationLight
2
+ module RelationUuid
3
+
4
+ def self.included(target)
5
+ target.class_eval do
6
+
7
+ has_one :uuid_, as: :uuidable, :dependent => :destroy
8
+
9
+ before_save :generate_columns
10
+ before_save :validate_columns
11
+
12
+ def uuid
13
+ unless self.uuid_
14
+ generate_uuid_
15
+ end
16
+
17
+ unless self.uuid_.uuid
18
+ self.uuid_.send(:generate_uuid)
19
+ end
20
+
21
+ self.uuid_.uuid
22
+ end
23
+
24
+ private
25
+
26
+ def generate_columns
27
+ generate_uuid_
28
+ end
29
+
30
+ def validate_columns
31
+ validate_uuid_
32
+ end
33
+
34
+ def generate_uuid_
35
+ self.uuid_ = Uuid.new unless self.uuid_
36
+ end
37
+
38
+ def validate_uuid_
39
+ # 判断是否为空
40
+ unless self.uuid_.present?
41
+ self.errors[:uuid_] << 'uuid_尚未生成'
42
+ end
43
+
44
+ unless self.uuid.present?
45
+ self.errors[:uuid] << 'uuid尚未生成'
46
+ end
47
+ end
48
+
49
+
50
+ end
51
+ end
52
+
53
+ end
54
+ end
@@ -0,0 +1,78 @@
1
+ module NavigationLight
2
+ class Time < ApplicationRecord
3
+
4
+ belongs_to :timeable, :polymorphic => true
5
+
6
+ relation_navigation_light :uuid, :label
7
+
8
+ before_save :generate_columns
9
+
10
+ ABOUT_TIME_COLUMNS = [:minute, :hour, :day, :week, :month, :quarter, :year]
11
+
12
+ private
13
+ def generate_columns
14
+ tmp = {}
15
+ ABOUT_TIME_COLUMNS.each do |column|
16
+ next if self.send(column).present?
17
+ tmp.merge!({column => Time.send("index_#{column}")})
18
+ end
19
+ self.attributes = self.attributes.merge!(tmp.stringify_keys)
20
+ end
21
+
22
+ class << self
23
+
24
+ def index_minute(time: ::Time.now)
25
+ time.strftime('%M').to_i
26
+ end
27
+
28
+ def index_hour(time: ::Time.now)
29
+ time.strftime('%H').to_i
30
+ end
31
+
32
+ def index_day(time: ::Time.now)
33
+ time.strftime('%Y%m%d').to_i
34
+ end
35
+
36
+ def index_month(time: ::Time.now)
37
+ time.strftime('%Y%m').to_i
38
+ end
39
+
40
+ def index_week(time: ::Time.now)
41
+ year = time.strftime('%Y').to_i
42
+ week = time.strftime('%W').to_i
43
+ num = Date.commercial( year.to_i, 52, 1 ).strftime('%W')
44
+ if num.to_i == 52
45
+ if week == 0
46
+ return ((year-1).to_s << "52").to_i
47
+ elsif week == 53
48
+ return ((year+1).to_s << "01").to_i
49
+ else
50
+ return time.strftime('%Y%W').to_i
51
+ end
52
+ else
53
+ if week + 1 == 53
54
+ return ((year+1).to_s << "01").to_i
55
+ else
56
+ return time.strftime('%Y%W').to_i + 1
57
+ end
58
+ end
59
+ end
60
+
61
+ def index_quarter(time: ::Time.now)
62
+ quarter = case time.strftime('%m').to_i
63
+ when 1,2,3 then 1
64
+ when 4,5,6 then 2
65
+ when 7,8,9 then 3
66
+ when 10,11,12 then 4
67
+ end
68
+ return (time.strftime('%Y') << "0" << quarter.to_s).to_i
69
+ end
70
+
71
+ def index_year(time: ::Time.now)
72
+ time.strftime('%Y').to_i
73
+ end
74
+
75
+ end
76
+
77
+ end
78
+ end
@@ -0,0 +1,47 @@
1
+ module NavigationLight
2
+ class Uuid < ApplicationRecord
3
+ # uuid 不需要假删除 甚至不能删除
4
+
5
+ belongs_to :uuidable, :polymorphic => true
6
+
7
+ # 多个 before_save 会按照从上往下顺序执行
8
+ before_save :generate_columns
9
+ before_save :validate_columns
10
+
11
+ private
12
+
13
+ def generate_columns
14
+ ejection(type: 'normal') do
15
+ generate_uuid
16
+ end
17
+ end
18
+
19
+ def validate_columns
20
+ validate_uuid
21
+ end
22
+
23
+ def validate_uuid
24
+ # 判断是否为空
25
+ unless self.uuid.present?
26
+ self.errors[:uuid] << '唯一标识不能为空'
27
+ end
28
+
29
+ # 判断是否重复
30
+ end
31
+
32
+ def generate_uuid
33
+ flag = !(self.uuid.present?)
34
+ uuid = self.uuid
35
+
36
+ (flag = Uuid.where.not(id: self.id).exists?(uuid: uuid)) unless flag
37
+
38
+ while flag
39
+ uuid = SecureRandom.uuid
40
+ flag = Uuid.exists?(uuid: uuid)
41
+ end
42
+
43
+ self.uuid = uuid
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Navigation light</title>
5
+ <%= csrf_meta_tags %>
6
+ <%= csp_meta_tag %>
7
+
8
+ <%= stylesheet_link_tag "navigation_light/application", media: "all" %>
9
+ <%= javascript_include_tag "navigation_light/application" %>
10
+ </head>
11
+ <body>
12
+
13
+ <%= yield %>
14
+
15
+ </body>
16
+ </html>
@@ -0,0 +1,2 @@
1
+ NavigationLight::Engine.routes.draw do
2
+ end
@@ -0,0 +1,19 @@
1
+ class CreateNavigationLightUuids < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :navigation_light_uuids do |t|
4
+ t.string :uuid, null: false, unique: true
5
+ t.index :uuid, unique: true
6
+
7
+ t.integer :uuidable_id, null: false
8
+ t.index :uuidable_id
9
+
10
+ t.string :uuidable_type, null: false
11
+ t.index :uuidable_type
12
+
13
+ t.datetime :deleted_at
14
+ t.index :deleted_at
15
+
16
+ t.timestamps
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,41 @@
1
+ class CreateNavigationLightLabels < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :navigation_light_labels do |t|
4
+ t.string :name, null: false, unique: true, comment: '标签名称'
5
+ t.index :name, unique: true
6
+
7
+ t.string :synopsis, comment: '简介'
8
+
9
+ t.string :code, comment: '编码', null: false, unique: true
10
+ t.index [:code, :ancestry], unique: true
11
+
12
+ t.datetime :deleted_at
13
+ t.index :deleted_at
14
+
15
+ # 树状结构相关
16
+ t.string :ancestry
17
+ t.index [:ancestry]
18
+ t.integer :ancestry_depth, default: 404
19
+ t.index :ancestry_depth
20
+
21
+ t.timestamps
22
+ end
23
+
24
+ create_table :navigation_light_middle_labels do |t|
25
+ t.integer :middlabel_id, null: false
26
+ t.index :middlabel_id
27
+
28
+ t.string :middlabel_type, null: false
29
+ t.index :middlabel_type
30
+
31
+ t.integer :label_id, null: false
32
+ t.index :label_id
33
+
34
+ t.datetime :deleted_at
35
+ t.index :deleted_at
36
+
37
+ t.timestamps
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,37 @@
1
+ class CreateNavigationLightTimes < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :navigation_light_times do |t|
4
+ t.integer :minute, null: false
5
+ t.index :minute
6
+
7
+ t.integer :hour, null: false
8
+ t.index :hour
9
+
10
+ t.integer :day, null: false
11
+ t.index :day
12
+
13
+ t.integer :week, null: false
14
+ t.index :week
15
+
16
+ t.integer :month, null: false
17
+ t.index :month
18
+
19
+ t.integer :quarter, null: false
20
+ t.index :quarter
21
+
22
+ t.integer :year, null: false
23
+ t.index :year
24
+
25
+ t.integer :timeable_id, null: false
26
+ t.index :timeable_id
27
+
28
+ t.string :timeable_type, null: false
29
+ t.index :timeable_type
30
+
31
+ t.datetime :deleted_at
32
+ t.index :deleted_at
33
+
34
+ t.timestamps
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,28 @@
1
+ def initialize_label_data
2
+ @object = NavigationLight::Label.find_or_initialize_by(code: 'Object')
3
+ @object.update(name: 'Object', synopsis: 'Object')
4
+
5
+ def initialize_model_data
6
+ @model = @object.children.find_or_initialize_by(code: 'Model')
7
+ @model.update(name: '表结构', synopsis: '数据库表结构使用标签')
8
+
9
+ def initialize_count_data
10
+ @count = @model.children.find_or_initialize_by(code: 'NavigationLight::Count')
11
+ @count.update(name: '统计', synopsis: '有关统计专用标签合集')
12
+
13
+ [
14
+ {name: '使用次数', synopsis: '数据的使用次数', code: 'used_count'},
15
+ {name: '查看次数', synopsis: '数据的查看次数', code: 'view_count'}
16
+ ].each do |hash|
17
+ data = @count.children.find_or_initialize_by(code: hash[:code])
18
+ data.update(hash)
19
+ end
20
+ end
21
+
22
+ initialize_count_data
23
+ end
24
+
25
+ initialize_model_data
26
+ end
27
+
28
+ initialize_label_data
@@ -0,0 +1,5 @@
1
+ require "navigation_light/engine"
2
+
3
+ module NavigationLight
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,14 @@
1
+ module NavigationLight
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace NavigationLight
4
+
5
+ require 'ancestry'
6
+ require 'paranoia'
7
+ require 'pry-byebug'
8
+
9
+ end
10
+ end
11
+
12
+ ActiveSupport.on_load :active_record do
13
+ send :extend, NavigationLight::OnLoad
14
+ end
@@ -0,0 +1,3 @@
1
+ module NavigationLight
2
+ VERSION = '0.1.0'
3
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :navigation_light do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,143 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: navigation_light
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - ff4c00
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-02-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 5.2.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 5.2.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: ancestry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.7
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 3.0.7
41
+ - !ruby/object:Gem::Dependency
42
+ name: paranoia
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.4.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.4.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: mysql2
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.5.3
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.5.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 3.8.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 3.8.0
83
+ description: 本项目应用于为应用系统中数据记录提供定位服务
84
+ email:
85
+ - ff4c00@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - MIT-LICENSE
91
+ - README.md
92
+ - Rakefile
93
+ - app/assets/config/navigation_light_manifest.js
94
+ - app/assets/javascripts/navigation_light/application.js
95
+ - app/assets/stylesheets/navigation_light/application.css
96
+ - app/controllers/navigation_light/application_controller.rb
97
+ - app/helpers/navigation_light/application_helper.rb
98
+ - app/jobs/navigation_light/application_job.rb
99
+ - app/mailers/navigation_light/application_mailer.rb
100
+ - app/models/navigation_light/application_record.rb
101
+ - app/models/navigation_light/count.rb
102
+ - app/models/navigation_light/label.rb
103
+ - app/models/navigation_light/middle_label.rb
104
+ - app/models/navigation_light/on_load.rb
105
+ - app/models/navigation_light/relation_label.rb
106
+ - app/models/navigation_light/relation_uuid.rb
107
+ - app/models/navigation_light/time.rb
108
+ - app/models/navigation_light/uuid.rb
109
+ - app/views/layouts/navigation_light/application.html.erb
110
+ - config/routes.rb
111
+ - db/migrate/20200210090159_create_navigation_light_uuids.rb
112
+ - db/migrate/20200211025417_create_navigation_light_labels.rb
113
+ - db/migrate/20200213161530_create_navigation_light_times.rb
114
+ - db/migrate/seed.rb
115
+ - lib/navigation_light.rb
116
+ - lib/navigation_light/engine.rb
117
+ - lib/navigation_light/version.rb
118
+ - lib/tasks/navigation_light_tasks.rake
119
+ homepage: https://gitlab.com/ff4c00/navigation_light
120
+ licenses:
121
+ - MIT
122
+ metadata: {}
123
+ post_install_message:
124
+ rdoc_options: []
125
+ require_paths:
126
+ - lib
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ requirements: []
138
+ rubyforge_project:
139
+ rubygems_version: 2.7.8
140
+ signing_key:
141
+ specification_version: 4
142
+ summary: ''
143
+ test_files: []