-
Notifications
You must be signed in to change notification settings - Fork 1
/
creation.nls
121 lines (114 loc) · 3.54 KB
/
creation.nls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
;-------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------
; Module for procedures creating/deleting data in the graph
;-------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------
; Warning: Currently the procedures must be refined to work with different sets of attributes.
to add-topic
let att table:keys topic_attributes
hatch-topics 1
[
set topic_attributes table:make
set ID who
set Ttype (user-one-of "Select Type of Node" Topic-Types)
foreach att
[
let input (user-input (word "Enter "?))
if member? "(X)" ? [ set input read-from-string input]
write_topic_attr ? input
]
setxy random-pxcor random-pycor
set color item 0 (item (type-index TType) Topics-Styles)
set shape item 1 (item (type-index TType) Topics-Styles)
set size item 2 (item (type-index TType) Topics-Styles)
show-topics self
]
refresh
end
to add-link
let t1 self
let Rtype (user-one-of "Select Type of Relation and then select the target topic" RelationTypes);(filter [not Hyper? ?] RelationTypes))
let att table:keys [relation_attributes] of one-of rels with [RelType = Rtype]
let t2 nobody
while [t2 = nobody]
[
set t2 get-with-mouse
]
let style (item (Rtype-index RType) Relations-Styles)
let dir last style
ifelse dir = 0
[
create-relation-with t2
[
set relation_attributes table:make
foreach att
[
let input (user-input (word "Enter "?))
if member? "(X)" ? [ set input read-from-string input]
write_relation_attr ? input
]
set color item 0 style
set shape item 1 (item (Rtype-index RType) Relations-Styles)
set thickness item 2 style
set original? true
set RelType Rtype
set vrelations (link-set vrelations self)
]
]
[
ifelse dir = 1
[
create-drelation-to t2
[
set relation_attributes table:make
foreach att
[
let input (user-input (word "Enter "?))
if member? "(X)" ? [ set input read-from-string input]
write_relation_attr ? input
]
set color item 0 style
set shape item 1 (item (Rtype-index RType) Relations-Styles)
set thickness item 2 style
set original? true
set RelType Rtype
set vrelations (link-set vrelations self)
]
]
[
let c [color] of one-of (turtle-set t1 t2) with [Ttype = Rtype]
create-relation-with t2
[
set relation_attributes table:make
set color c
set RelType Rtype
set original? true
set label-color black
set vrelations (link-set vrelations self)
]
]
]
end
to delete-Node
if user-yes-or-no? "Caution!\n You are going to delete a topic, and this action is irreversible.\n Are you sure?"
[
set Run-out (word "ask topic " who " [die]")
]
end
to delete-link
let i 1
ask my-rels
[
set label (word i)
set i i + 1
]
let res user-one-of "Select the relation you want to delete \n (remember that this action is irreversible)" (fput "None" sort ([label] of my-rels))
if res != "None"
[
ask one-of my-rels with [label = res]
[
die
]
]
ask my-rels [set label ""]
end