This repository was archived by the owner on Dec 22, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcolumns.go
More file actions
351 lines (303 loc) · 9.51 KB
/
columns.go
File metadata and controls
351 lines (303 loc) · 9.51 KB
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
package monday
type ColumnsService service
// Create returns a mutation that allows you to add a new column to a board.
// - id: the board's unique identifier.
// - title: the new column's title.
// - columnType: the type of column to create.
//
// DOCS: https://monday.com/developers/v2#mutations-section-columns-creating
func (*ColumnsService) Create(id int, title string, columnType ColumnsType, columnsFields []ColumnsField) Mutation {
if len(columnsFields) == 0 {
columnsFields = append(columnsFields, columnsIDField)
}
var fields []field
for _, cf := range columnsFields {
fields = append(fields, cf.field)
}
return Mutation{
name: "create_column",
fields: fields,
args: []argument{
{"board_id", id},
{"title", title},
{"column_type", columnType.typ},
},
}
}
// Create returns a mutation that allows you to add a new column to a board.
// - id: the board's unique identifier.
// - title: the new column's title.
// - columnType: the type of column to create.
// - defaults: the new column's defaults.
//
// DOCS: https://monday.com/developers/v2#mutations-section-columns-creating
func (*ColumnsService) CreateWithDefaults(boardID int, title string, columnsType ColumnsType, defaults string,
columnsFields []ColumnsField) Mutation {
if len(columnsFields) == 0 {
columnsFields = append(columnsFields, columnsIDField)
}
var fields []field
for _, cf := range columnsFields {
fields = append(fields, cf.field)
}
return Mutation{
name: "create_column",
fields: fields,
args: []argument{
{"board_id", boardID},
{"title", title},
{"column_type", columnsType},
{"defaults", defaults},
},
}
}
// ChangeValue returns a mutation that allows you to change the value of a column in a specific item (row).
// - itemID: the item's unique identifier.
// - columnID: the column's unique identifier.
// - boardID: the board's unique identifier.
// - value: the new value of the column.
//
// DOCS: https://monday.com/developers/v2#mutations-section-columns-change-column-value
func (*ColumnsService) ChangeValue(itemID int, columnID string, boardID int, value ColumnValue, itemsFields []ItemsField) Mutation {
if len(itemsFields) == 0 {
itemsFields = append(itemsFields, itemsIDField)
}
var fields []field
for _, i := range itemsFields {
fields = append(fields, i.field)
}
return Mutation{
name: "change_column_value",
fields: fields,
args: []argument{
{"item_id", itemID},
{"column_id", columnID},
{"board_id", boardID},
{"value", value.value},
},
}
}
// ChangeValue returns a mutation that allows you to update multiple columns values of a specific item (row).
// - itemID: the item's unique identifier.
// - boardID: the board's unique identifier.
// - value: the new value of the column.
//
// DOCS: https://monday.com/developers/v2#mutations-section-columns-change-multiple-column-values
func (*ColumnsService) ChangeMultipleValues(itemID int, boardID int, values string, itemsFields []ItemsField) Mutation {
var fields []field
for _, i := range itemsFields {
fields = append(fields, i.field)
}
return Mutation{
name: "change_multiple_column_values",
fields: fields,
args: []argument{
{"item_id", itemID},
{"board_id", boardID},
{"column_values", values},
},
}
}
// List returns a query that searches for items based on their column values and returns data about those specific items.
//
// DOCS: https://monday.com/developers/v2#queries-section-items-by-column-values
func (*ColumnsService) List(columnFields []ColumnsField) Query {
if len(columnFields) == 0 {
return Query{
name: "columns",
fields: []field{
ColumnsIDField().field,
},
}
}
var fields []field
for _, cf := range columnFields {
fields = append(fields, cf.field)
}
return Query{
name: "columns",
fields: fields,
}
}
// The column's graphql field(s).
type ColumnsField struct {
field field
}
var (
columnsArchivedField = ColumnsField{field{"archived", nil}}
columnsIDField = ColumnsField{field{"id", nil}}
columnsSettingsStrField = ColumnsField{field{"settings_str", nil}}
columnsTitleField = ColumnsField{field{"title", nil}}
columnsTypeField = ColumnsField{field{"type", nil}}
columnsWidthField = ColumnsField{field{"width", nil}}
)
// Is the column archived or not.
func ColumnsArchivedField() ColumnsField {
return columnsArchivedField
}
// The column's unique identifier.
func ColumnsIDField() ColumnsField {
return columnsIDField
}
// The column's settings in a string form.
func ColumnsSettingsStrField() ColumnsField {
return columnsSettingsStrField
}
// The column's title.
func ColumnsTitleField() ColumnsField {
return columnsTitleField
}
// The column's type.
func ColumnsTypeField() ColumnsField {
return columnsTypeField
}
// The column's width.
func ColumnsWidthField() ColumnsField {
return columnsWidthField
}
// The column type.
type ColumnsType struct {
typ string
}
var (
columnsTypeAutoNumber = ColumnsType{"auto_number"}
columnsTypeCheckbox = ColumnsType{"checkbox"}
columnsTypeCountry = ColumnsType{"country"}
columnsTypeColorPicker = ColumnsType{"color_picker"}
columnsTypeCreationLog = ColumnsType{"creation_log"}
columnsTypeDate = ColumnsType{"date"}
columnsTypeDropdown = ColumnsType{"dropdown"}
columnsTypeEmail = ColumnsType{"email"}
columnsTypeHour = ColumnsType{"hour"}
columnsTypeItemID = ColumnsType{"item_id"}
columnsTypeLastUpdated = ColumnsType{"last_updated"}
columnsTypeLink = ColumnsType{"link"}
columnsTypeLocation = ColumnsType{"location"}
columnTypeLongText = ColumnsType{"long_text"}
columnsTypeNumbers = ColumnsType{"numbers"}
columnsTypePeople = ColumnsType{"people"}
columnsTypePhone = ColumnsType{"phone"}
columnsTypeProgress = ColumnsType{"progress"}
columnsTypeRating = ColumnsType{"rating"}
columnsTypeStatus = ColumnsType{"status"}
columnsTypeTeam = ColumnsType{"team"}
columnsTypeTags = ColumnsType{"tags"}
columnsTypeText = ColumnsType{"text"}
columnsTypeTimeline = ColumnsType{"timeline"}
columnsTypeTimeTracking = ColumnsType{"time_tracking"}
columnsTypeVote = ColumnsType{"vote"}
columnsTypeWeek = ColumnsType{"week"}
columnsTypeWorldClock = ColumnsType{"world_clock"}
)
// Number items according to their order in the group/board.
func ColumnsTypeAutoNumber() ColumnsType {
return columnsTypeAutoNumber
}
// Check off items and see what's done at a glance.
func ColumnsTypeCheckBox() ColumnsType {
return columnsTypeCheckbox
}
// Choose a country.
func ColumnsTypeCountry() ColumnsType {
return columnsTypeCountry
}
// Manage a design system using a color palette.
func ColumnsTypeColorPicker() ColumnsType {
return columnsTypeColorPicker
}
// Add the item creator and creation date automatically.
func ColumnsTypeCreationLog() ColumnsType {
return columnsTypeCreationLog
}
// Add dates like deadlines to ensure you never drop the ball.
func ColumnsTypeDate() ColumnsType {
return columnsTypeDate
}
// Create a dropdown list of options.
func ColumnsTypeDropdown() ColumnsType {
return columnsTypeDropdown
}
// Email team members and clients directly from your board.
func ColumnsTypeEmail() ColumnsType {
return columnsTypeEmail
}
// Add times to manage and schedule tasks, shifts and more.
func ColumnsTypeHour() ColumnsType {
return columnsTypeHour
}
// Show a unique ID for each item.
func ColumnsTypeItemID() ColumnsType {
return columnsTypeItemID
}
// Add the person that last updated the item and the date.
func ColumnsTypeLastUpdated() ColumnsType {
return columnsTypeLastUpdated
}
// Simply hyperlink to any website.
func ColumnsTypeLink() ColumnsType {
return columnsTypeLink
}
// Place multiple locations on a geographic map.
func ColumnsTypeLocation() ColumnsType {
return columnsTypeLocation
}
// Add large amounts of text without changing column width.
func ColumnsTypeLongText() ColumnsType {
return columnTypeLongText
}
// Add revenue, costs, time estimations and more.
func ColumnsTypeNumbers() ColumnsType {
return columnsTypeNumbers
}
// Assign people to improve team work.
func ColumnsTypePeople() ColumnsType {
return columnsTypePeople
}
// Call your contacts directly from monday.com.
func ColumnsTypePhone() ColumnsType {
return columnsTypePhone
}
// Show progress by combining status columns in a battery.
func ColumnsTypeProgress() ColumnsType {
return columnsTypeProgress
}
// Rate or rank anything visually.
func ColumnsTypeRating() ColumnsType {
return columnsTypeRating
}
// Get an instant overview of where things stand.
func ColumnsTypeStatus() ColumnsType {
return columnsTypeStatus
}
// Assign a full team to an item.
func ColumnsTypeTeam() ColumnsType {
return columnsTypeTeam
}
// Add tags to categorize items across multiple boards.
func ColumnsTypeTags() ColumnsType {
return columnsTypeTags
}
// Add textual information e.g. addresses, names or keywords.
func ColumnsTypeText() ColumnsType {
return columnsTypeText
}
// Visually see a breakdown of your team's workload by time.
func ColumnsTypeTimeline() ColumnsType {
return columnsTypeTimeline
}
// Basic time tracking for every item.
func ColumnsTypeTimeTracking() ColumnsType {
return columnsTypeTimeTracking
}
// Vote on an item e.g. pick a new feature or a favorite lunch place.
func ColumnsTypeVote() ColumnsType {
return columnsTypeVote
}
// Select the week on which each item should be completed.
func ColumnsTypeWeek() ColumnsType {
return columnsTypeWeek
}
// Keep track of the time anywhere in the world.
func ColumnsTypeWorldClock() ColumnsType {
return columnsTypeWorldClock
}