active-orient 0.79 → 0.80

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.
@@ -1,162 +0,0 @@
1
- The Time-Graph Example is outsourced and lives as a seperate gem.
2
-
3
- https://github.com/topofocus/orientdb_time_graph
4
-
5
- from the readme:
6
-
7
- # Time Graph
8
-
9
- Simple Time Graph using ActiveOrient/OrientDB.
10
-
11
- *Prerequisites* :
12
- * Install and setup OrientDB
13
- * Run "Bundle install" and "Bundle update"
14
- * customize config/connect.yml
15
-
16
- **or** start a new project and include the gem in the usual manner.
17
-
18
- To play around, start the console by
19
- ```
20
- cd bin
21
- ./active-orient-console t # test-modus
22
- ```
23
- The Database is automatically initialized and the following hierarchy is build:
24
-
25
- ```ruby
26
- - E # ruby-class
27
- - - month_of TG::MONTH_OF
28
- - - day_of TG::DAY_OF
29
- - - time_of TG::TIME_OF
30
- - - grid_of TG::GRID_OF
31
- - V
32
- - - time_base TG::TimeBase
33
- - - - jahr TG::Jahr
34
- - - - monat TG::Monat
35
- - - - stunde TG::Stunde
36
- - - - tag TG::Tag
37
- ```
38
- This Graph is realized
39
-
40
- ```ruby
41
- Jahr -- [Month_of] -- Monat --[DAY_OF]-- Tag --[TIME_OF]-- Stunde
42
- ```
43
- and populated by calling
44
-
45
- ```ruby
46
- TG::TimeGraph.populate( a single year or a range ) # default: 1900 .. 2050
47
- ```
48
- If only one year is specified, a Monat--Tag--Stunde-Grid is build, otherwise a Jahr--Monat--Tag one.
49
- You can check the Status by calling
50
-
51
- ```ruby
52
- TG::TimeGraph.populate 2000 -2003
53
- TG.info
54
- -------------- TIME GRAPH ------------------
55
- Allocated Years :
56
- 2000; 2001; 2002; 2003
57
-
58
- ```
59
- In the Model-directory, customized methods simplify the usage of the graph.
60
-
61
- Some Examples:
62
- Assuming, you build a standard day-based grid
63
-
64
- ```ruby
65
-
66
- include TG # we can omit the TG prefix
67
-
68
- Jahr[2000] # --> returns a single object
69
- => #<TG::Jahr:0x00000004ced160 @metadata={"type"=>"d", "class"=>"jahr", "version"=>13, "fieldTypes"=>"out_month_of=g", "cluster"=>34, "record"=>101}, @d=nil, @attributes={"value"=>2000, "out_month_of"=>["#53:1209", "#54:1209", "#55:1209", "#56:1209", "#53:1210", "#54:1210", "#55:1210", "#56:1210", "#53:1211", "#54:1211", "#55:1211", "#56:1211"], "created_at"=>Fri, 09 Sep 2016 10:14:30 +0200}>
70
-
71
-
72
- Jahr[2000 .. 2005].value # returns an array
73
- => [2003, 2000, 2004, 2001, 2005, 2002]
74
-
75
- Jahr[2000 .. 2005].monat(5..7).value # returns the result of the month-attribute (or method)
76
- => [[5, 6, 7], [5, 6, 7], [5, 6, 7], [5, 6, 7], [5, 6, 7], [5, 6, 7]]
77
-
78
- Jahr[2000].monat(4, 7).tag(4, 15,24 ).datum # adresses methods or attributes of the specified day's
79
- => [["4.4.2000", "15.4.2000", "24.4.2000"], ["4.7.2000", "15.7.2000", "24.7.2000"]]
80
- ## unfortunatly »Jahr[2000 .. 2015].monat( 3,5 ).tag( 4 ..6 ).datum « does not fits now
81
- ## instead »Jahr[2000..2015].map{|y| y.monat( 3,5 ).tag( 4 ..6 ).datum } « does the job.
82
- ```
83
-
84
- To filter datasets in that way, anything represented is queried from the database. In contrast to
85
- a pure ruby implementation, this works for small and large grid's.
86
-
87
- Obviously, you can do neat ruby-array playings, which are limited to the usual sizes.
88
- For example. As »TAG[31]« returns an array, the elements can be treated with ruby flavour:
89
-
90
- ```ruby
91
-
92
- Tag[31][2..4].datum # display three months with 31 days
93
- => ["31.10.1901", "31.1.1902", "31.5.1902"]
94
-
95
- ```
96
- First all Tag-Objects with the Value 31 are queried. This gives »Jan, Mar, May ..«. Then one can inspect the array, in this case by slicing a range.
97
-
98
- Not surprisingly, the first occurence of the day is not the earliest date in the grid. Its just the first one,
99
- fetched from the database.
100
-
101
- ``` ruby
102
- Tag[1][1].datum
103
- => "1.5.1900" # Tag[1][0] correctly fetches "1.1.1900"
104
- Tag[1].last.datum
105
- => "1.11.2050"
106
- ## however,
107
- Jahr[2050].monat(12).tag(1) # exists:
108
- => [["1.12.2050"]]
109
- ```
110
-
111
- ## Horizontal Connections
112
-
113
- Besides the hierarchically TimeGraph »Jahr <-->Monat <--> Tag <--> Stunde« the Vertices are connected
114
- horizontally via »grid_to«-Edges. This enables an easy access to the neighbours.
115
-
116
- On the TG::TimeBase-Level a method »environment« is implemented, that gathers the adjacent vertices
117
- via traverse.
118
-
119
- ``` ruby
120
- start = TG::Jahr[2000].monat(4).tag(7).first.first
121
- start.environment(3).datum
122
- => ["4.4.2000", "5.4.2000", "6.4.2000", "7.4.2000", "8.4.2000", "9.4.2000", "10.4.2000"]
123
-
124
- 2.3.1 :003 > start.environment(3,4).datum
125
- => ["4.4.2000", "5.4.2000", "6.4.2000", "7.4.2000", "8.4.2000", "9.4.2000", "10.4.2000", "11.4.2000"]
126
-
127
- start.environment(0,3).datum
128
- => ["7.4.2000", "8.4.2000", "9.4.2000", "10.4.2000"]
129
- ```
130
-
131
-
132
-
133
- ## Diary
134
-
135
- lets create a simple diary
136
-
137
- ```ruby
138
- include TG
139
- TimeiGraph.populate 2016
140
- ORD.create_vertex_class :termin
141
- => Termin
142
- ORD.create_edge_class :date_of
143
- => DATE_OF
144
- DATE_OF.uniq_index # put contrains to the edge-class, accept only one entry per item
145
-
146
- DATE_OF.create from: Monat[8].tag(9).stunde(12),
147
- to: Termin.create( short: 'Mittagessen',
148
- long: 'Schweinshaxen essen mit Lieschen Müller',
149
- location: 'Hofbauhaus, München' )
150
- => #<DATE_OF:0x0000000334e038 (..) @attributes={"out"=>"#21:57", "in"=>"#41:0", (..)}>
151
- # create some regular events
152
- # attach breakfirst at 9 o clock from the 10th to the 21st Day in the current month
153
- DATE_OF.create from: Monat[8].tag(10 .. 21).stunde( 9 ), to: Termin.create( :short => 'Frühstück' )
154
- => #<DATE_OF:0x000000028d5688 @metadata={(..) "cluster"=>45, "record"=>8},
155
- @attributes={"out"=>"#22:188", "in"=>"#42:0",(..)}>
156
-
157
- t = Termin.where short: 'Frühstück'
158
- t.in_date_of.out.first.datum
159
- => ["10.8.2016 9:00", "11.8.2016 9:00", "12.8.2016 9:00", "13.8.2016 9:00", "14.8.2016 9:00", "15.8.2016 9:00", "16.8.2016 9:00", "17.8.2016 9:00", "18.8.2016 9:00", "19.8.2016 9:00", "20.8.2016 9:00", "21.8.2016 9:00"]
160
-
161
- ```
162
-