Skip to content

Commit fca84dc

Browse files
committed
Enhancement: Add column width setting
Signed-off-by: Kostiantyn Miakshyn <molodchick@gmail.com>
1 parent c7302f3 commit fca84dc

19 files changed

Lines changed: 611 additions & 21 deletions

File tree

appinfo/info.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Share your tables and views with users and groups within your cloud.
2626
Have a good time and manage whatever you want.
2727
2828
]]></description>
29-
<version>1.0.0-beta.1</version>
29+
<version>1.0.0-beta.2</version>
3030
<licence>agpl</licence>
3131
<author mail="florian.steffens@nextcloud.com">Florian Steffens</author>
3232
<namespace>Tables</namespace>

cypress/e2e/ToDo list.json

Lines changed: 322 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,322 @@
1-
{"title":"ToDo list","emoji":"\u2705","columns":[{"id":91,"tableId":19,"title":"Task","createdBy":"admin","createdByDisplayName":"admin","createdAt":"2025-07-03 07:23:28","lastEditBy":"admin","lastEditByDisplayName":"admin","lastEditAt":"2025-07-03 07:23:28","type":"text","subtype":"line","mandatory":true,"description":"","numberDefault":null,"numberMin":null,"numberMax":null,"numberDecimals":0,"numberPrefix":"","numberSuffix":"","textDefault":"","textAllowedPattern":"","textMaxLength":-1,"selectionOptions":[],"selectionDefault":"","datetimeDefault":"","usergroupDefault":[],"usergroupMultipleItems":false,"usergroupSelectUsers":false,"usergroupSelectGroups":false,"usergroupSelectTeams":false,"showUserStatus":false},{"id":92,"tableId":19,"title":"Description","createdBy":"admin","createdByDisplayName":"admin","createdAt":"2025-07-03 07:23:28","lastEditBy":"admin","lastEditByDisplayName":"admin","lastEditAt":"2025-07-03 07:23:28","type":"text","subtype":"rich","mandatory":false,"description":"Title or short description","numberDefault":null,"numberMin":null,"numberMax":null,"numberDecimals":0,"numberPrefix":"","numberSuffix":"","textDefault":"","textAllowedPattern":"","textMaxLength":-1,"selectionOptions":[],"selectionDefault":"","datetimeDefault":"","usergroupDefault":[],"usergroupMultipleItems":false,"usergroupSelectUsers":false,"usergroupSelectGroups":false,"usergroupSelectTeams":false,"showUserStatus":false},{"id":93,"tableId":19,"title":"Target","createdBy":"admin","createdByDisplayName":"admin","createdAt":"2025-07-03 07:23:28","lastEditBy":"admin","lastEditByDisplayName":"admin","lastEditAt":"2025-07-03 07:23:28","type":"text","subtype":"rich","mandatory":false,"description":"Date, time or whatever","numberDefault":null,"numberMin":null,"numberMax":null,"numberDecimals":0,"numberPrefix":"","numberSuffix":"","textDefault":"","textAllowedPattern":"","textMaxLength":-1,"selectionOptions":[],"selectionDefault":"","datetimeDefault":"","usergroupDefault":[],"usergroupMultipleItems":false,"usergroupSelectUsers":false,"usergroupSelectGroups":false,"usergroupSelectTeams":false,"showUserStatus":false},{"id":94,"tableId":19,"title":"Progress","createdBy":"admin","createdByDisplayName":"admin","createdAt":"2025-07-03 07:23:28","lastEditBy":"admin","lastEditByDisplayName":"admin","lastEditAt":"2025-07-03 07:23:28","type":"number","subtype":"progress","mandatory":false,"description":"","numberDefault":0,"numberMin":null,"numberMax":null,"numberDecimals":0,"numberPrefix":"","numberSuffix":"","textDefault":"","textAllowedPattern":"","textMaxLength":-1,"selectionOptions":[],"selectionDefault":"","datetimeDefault":"","usergroupDefault":[],"usergroupMultipleItems":false,"usergroupSelectUsers":false,"usergroupSelectGroups":false,"usergroupSelectTeams":false,"showUserStatus":false},{"id":95,"tableId":19,"title":"Comments","createdBy":"admin","createdByDisplayName":"admin","createdAt":"2025-07-03 07:23:28","lastEditBy":"admin","lastEditByDisplayName":"admin","lastEditAt":"2025-07-03 07:23:28","type":"text","subtype":"rich","mandatory":false,"description":"","numberDefault":null,"numberMin":null,"numberMax":null,"numberDecimals":0,"numberPrefix":"","numberSuffix":"","textDefault":"","textAllowedPattern":"","textMaxLength":-1,"selectionOptions":[],"selectionDefault":"","datetimeDefault":"","usergroupDefault":[],"usergroupMultipleItems":false,"usergroupSelectUsers":false,"usergroupSelectGroups":false,"usergroupSelectTeams":false,"showUserStatus":false},{"id":96,"tableId":19,"title":"Proofed","createdBy":"admin","createdByDisplayName":"admin","createdAt":"2025-07-03 07:23:28","lastEditBy":"admin","lastEditByDisplayName":"admin","lastEditAt":"2025-07-03 07:23:28","type":"selection","subtype":"check","mandatory":false,"description":"","numberDefault":null,"numberMin":null,"numberMax":null,"numberDecimals":0,"numberPrefix":"","numberSuffix":"","textDefault":"","textAllowedPattern":"","textMaxLength":-1,"selectionOptions":[],"selectionDefault":"","datetimeDefault":"","usergroupDefault":[],"usergroupMultipleItems":false,"usergroupSelectUsers":false,"usergroupSelectGroups":false,"usergroupSelectTeams":false,"showUserStatus":false}],"views":[{"id":16,"tableId":19,"title":"Unfinished Tasks","description":"","emoji":"\u274c","ownership":"admin","createdBy":"admin","createdAt":"2025-07-03 07:23:28","lastEditBy":"admin","lastEditAt":"2025-07-03 07:38:29","columns":[93,92,94,96,95,91],"columnSettings":[{"columnId":93,"order":0},{"columnId":92,"order":1},{"columnId":94,"order":2},{"columnId":96,"order":3},{"columnId":95,"order":4},{"columnId":91,"order":5}],"sort":[{"columnId":-4,"mode":"DESC"}],"isShared":false,"favorite":false,"onSharePermissions":null,"hasShares":false,"rowsCount":0,"ownerDisplayName":"admin","filter":[[{"columnId":94,"operator":"is-lower-than","value":"100"}]]}],"description":"","tablesVersion":"1.0.0"}
1+
{
2+
"title": "ToDo list",
3+
"emoji": "",
4+
"columns": [
5+
{
6+
"title": "Task",
7+
"type": "text",
8+
"subtype": "line",
9+
"mandatory": true,
10+
"description": "",
11+
"numberDefault": null,
12+
"numberMin": null,
13+
"numberMax": null,
14+
"numberDecimals": 0,
15+
"numberPrefix": "",
16+
"numberSuffix": "",
17+
"textDefault": "",
18+
"textAllowedPattern": "",
19+
"textMaxLength": -1,
20+
"selectionOptions": [],
21+
"selectionDefault": "",
22+
"datetimeDefault": "",
23+
"usergroupDefault": [],
24+
"usergroupMultipleItems": false,
25+
"usergroupSelectUsers": false,
26+
"usergroupSelectGroups": false,
27+
"usergroupSelectTeams": false,
28+
"showUserStatus": false,
29+
"customSettings": {}
30+
},
31+
{
32+
"title": "Description",
33+
"type": "text",
34+
"subtype": "rich",
35+
"mandatory": false,
36+
"description": "Title or short description",
37+
"numberDefault": null,
38+
"numberMin": null,
39+
"numberMax": null,
40+
"numberDecimals": 0,
41+
"numberPrefix": "",
42+
"numberSuffix": "",
43+
"textDefault": "",
44+
"textAllowedPattern": "",
45+
"textMaxLength": -1,
46+
"selectionOptions": [],
47+
"selectionDefault": "",
48+
"datetimeDefault": "",
49+
"usergroupDefault": [],
50+
"usergroupMultipleItems": false,
51+
"usergroupSelectUsers": false,
52+
"usergroupSelectGroups": false,
53+
"usergroupSelectTeams": false,
54+
"showUserStatus": false,
55+
"customSettings": {}
56+
},
57+
{
58+
"title": "Target",
59+
"type": "text",
60+
"subtype": "rich",
61+
"mandatory": false,
62+
"description": "Date, time or whatever",
63+
"numberDefault": null,
64+
"numberMin": null,
65+
"numberMax": null,
66+
"numberDecimals": 0,
67+
"numberPrefix": "",
68+
"numberSuffix": "",
69+
"textDefault": "",
70+
"textAllowedPattern": "",
71+
"textMaxLength": -1,
72+
"selectionOptions": [],
73+
"selectionDefault": "",
74+
"datetimeDefault": "",
75+
"usergroupDefault": [],
76+
"usergroupMultipleItems": false,
77+
"usergroupSelectUsers": false,
78+
"usergroupSelectGroups": false,
79+
"usergroupSelectTeams": false,
80+
"showUserStatus": false,
81+
"customSettings": {}
82+
},
83+
{
84+
"title": "Progress",
85+
"type": "number",
86+
"subtype": "progress",
87+
"mandatory": false,
88+
"description": "",
89+
"numberDefault": 0,
90+
"numberMin": null,
91+
"numberMax": null,
92+
"numberDecimals": 0,
93+
"numberPrefix": "",
94+
"numberSuffix": "",
95+
"textDefault": "",
96+
"textAllowedPattern": "",
97+
"textMaxLength": -1,
98+
"selectionOptions": [],
99+
"selectionDefault": "",
100+
"datetimeDefault": "",
101+
"usergroupDefault": [],
102+
"usergroupMultipleItems": false,
103+
"usergroupSelectUsers": false,
104+
"usergroupSelectGroups": false,
105+
"usergroupSelectTeams": false,
106+
"showUserStatus": false,
107+
"customSettings": {}
108+
},
109+
{
110+
"title": "Comments",
111+
"type": "text",
112+
"subtype": "rich",
113+
"mandatory": false,
114+
"description": "",
115+
"numberDefault": null,
116+
"numberMin": null,
117+
"numberMax": null,
118+
"numberDecimals": 0,
119+
"numberPrefix": "",
120+
"numberSuffix": "",
121+
"textDefault": "",
122+
"textAllowedPattern": "",
123+
"textMaxLength": -1,
124+
"selectionOptions": [],
125+
"selectionDefault": "",
126+
"datetimeDefault": "",
127+
"usergroupDefault": [],
128+
"usergroupMultipleItems": false,
129+
"usergroupSelectUsers": false,
130+
"usergroupSelectGroups": false,
131+
"usergroupSelectTeams": false,
132+
"showUserStatus": false,
133+
"customSettings": {}
134+
},
135+
{
136+
"title": "Proofed",
137+
"type": "selection",
138+
"subtype": "check",
139+
"mandatory": false,
140+
"description": "",
141+
"numberDefault": null,
142+
"numberMin": null,
143+
"numberMax": null,
144+
"numberDecimals": 0,
145+
"numberPrefix": "",
146+
"numberSuffix": "",
147+
"textDefault": "",
148+
"textAllowedPattern": "",
149+
"textMaxLength": -1,
150+
"selectionOptions": [],
151+
"selectionDefault": "",
152+
"datetimeDefault": "",
153+
"usergroupDefault": [],
154+
"usergroupMultipleItems": false,
155+
"usergroupSelectUsers": false,
156+
"usergroupSelectGroups": false,
157+
"usergroupSelectTeams": false,
158+
"showUserStatus": false,
159+
"customSettings": {}
160+
}
161+
],
162+
"views": [
163+
{
164+
"title": "Task",
165+
"type": "text",
166+
"subtype": "line",
167+
"mandatory": true,
168+
"description": "",
169+
"numberDefault": null,
170+
"numberMin": null,
171+
"numberMax": null,
172+
"numberDecimals": 0,
173+
"numberPrefix": "",
174+
"numberSuffix": "",
175+
"textDefault": "",
176+
"textAllowedPattern": "",
177+
"textMaxLength": -1,
178+
"selectionOptions": [],
179+
"selectionDefault": "",
180+
"datetimeDefault": "",
181+
"usergroupDefault": [],
182+
"usergroupMultipleItems": false,
183+
"usergroupSelectUsers": false,
184+
"usergroupSelectGroups": false,
185+
"usergroupSelectTeams": false,
186+
"showUserStatus": false,
187+
"customSettings": {}
188+
},
189+
{
190+
"title": "Description",
191+
"type": "text",
192+
"subtype": "rich",
193+
"mandatory": false,
194+
"description": "Title or short description",
195+
"numberDefault": null,
196+
"numberMin": null,
197+
"numberMax": null,
198+
"numberDecimals": 0,
199+
"numberPrefix": "",
200+
"numberSuffix": "",
201+
"textDefault": "",
202+
"textAllowedPattern": "",
203+
"textMaxLength": -1,
204+
"selectionOptions": [],
205+
"selectionDefault": "",
206+
"datetimeDefault": "",
207+
"usergroupDefault": [],
208+
"usergroupMultipleItems": false,
209+
"usergroupSelectUsers": false,
210+
"usergroupSelectGroups": false,
211+
"usergroupSelectTeams": false,
212+
"showUserStatus": false,
213+
"customSettings": {}
214+
},
215+
{
216+
"title": "Target",
217+
"type": "text",
218+
"subtype": "rich",
219+
"mandatory": false,
220+
"description": "Date, time or whatever",
221+
"numberDefault": null,
222+
"numberMin": null,
223+
"numberMax": null,
224+
"numberDecimals": 0,
225+
"numberPrefix": "",
226+
"numberSuffix": "",
227+
"textDefault": "",
228+
"textAllowedPattern": "",
229+
"textMaxLength": -1,
230+
"selectionOptions": [],
231+
"selectionDefault": "",
232+
"datetimeDefault": "",
233+
"usergroupDefault": [],
234+
"usergroupMultipleItems": false,
235+
"usergroupSelectUsers": false,
236+
"usergroupSelectGroups": false,
237+
"usergroupSelectTeams": false,
238+
"showUserStatus": false,
239+
"customSettings": {}
240+
},
241+
{
242+
"title": "Progress",
243+
"type": "number",
244+
"subtype": "progress",
245+
"mandatory": false,
246+
"description": "",
247+
"numberDefault": 0,
248+
"numberMin": null,
249+
"numberMax": null,
250+
"numberDecimals": 0,
251+
"numberPrefix": "",
252+
"numberSuffix": "",
253+
"textDefault": "",
254+
"textAllowedPattern": "",
255+
"textMaxLength": -1,
256+
"selectionOptions": [],
257+
"selectionDefault": "",
258+
"datetimeDefault": "",
259+
"usergroupDefault": [],
260+
"usergroupMultipleItems": false,
261+
"usergroupSelectUsers": false,
262+
"usergroupSelectGroups": false,
263+
"usergroupSelectTeams": false,
264+
"showUserStatus": false,
265+
"customSettings": {}
266+
},
267+
{
268+
"title": "Comments",
269+
"type": "text",
270+
"subtype": "rich",
271+
"mandatory": false,
272+
"description": "",
273+
"numberDefault": null,
274+
"numberMin": null,
275+
"numberMax": null,
276+
"numberDecimals": 0,
277+
"numberPrefix": "",
278+
"numberSuffix": "",
279+
"textDefault": "",
280+
"textAllowedPattern": "",
281+
"textMaxLength": -1,
282+
"selectionOptions": [],
283+
"selectionDefault": "",
284+
"datetimeDefault": "",
285+
"usergroupDefault": [],
286+
"usergroupMultipleItems": false,
287+
"usergroupSelectUsers": false,
288+
"usergroupSelectGroups": false,
289+
"usergroupSelectTeams": false,
290+
"showUserStatus": false,
291+
"customSettings": {}
292+
},
293+
{
294+
"title": "Proofed",
295+
"type": "selection",
296+
"subtype": "check",
297+
"mandatory": false,
298+
"description": "",
299+
"numberDefault": null,
300+
"numberMin": null,
301+
"numberMax": null,
302+
"numberDecimals": 0,
303+
"numberPrefix": "",
304+
"numberSuffix": "",
305+
"textDefault": "",
306+
"textAllowedPattern": "",
307+
"textMaxLength": -1,
308+
"selectionOptions": [],
309+
"selectionDefault": "",
310+
"datetimeDefault": "",
311+
"usergroupDefault": [],
312+
"usergroupMultipleItems": false,
313+
"usergroupSelectUsers": false,
314+
"usergroupSelectGroups": false,
315+
"usergroupSelectTeams": false,
316+
"showUserStatus": false,
317+
"customSettings": {}
318+
}
319+
],
320+
"description": "",
321+
"tablesVersion": ""
322+
}

lib/Controller/Api1Controller.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -821,7 +821,7 @@ public function indexViewColumns(int $viewId): DataResponse {
821821
* @param bool|null $usergroupSelectTeams Can select teams, if column type is usergroup
822822
* @param bool|null $usergroupShowUserStatus Whether to show the user's status, if column type is usergroup
823823
* @param list<int>|null $selectedViewIds View IDs where this column should be added to be presented
824-
*
824+
* @param array<string, mixed> $customSettings Custom settings for the column
825825
* @return DataResponse<Http::STATUS_OK, TablesColumn, array{}>|DataResponse<Http::STATUS_FORBIDDEN|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
826826
*
827827
* 200: Column created
@@ -864,6 +864,7 @@ public function createColumn(
864864
?bool $usergroupShowUserStatus = null,
865865

866866
?array $selectedViewIds = [],
867+
?array $customSettings = [],
867868
): DataResponse {
868869
try {
869870
return new DataResponse($this->columnService->create(
@@ -893,7 +894,8 @@ public function createColumn(
893894
usergroupSelectUsers: $usergroupSelectUsers,
894895
usergroupSelectGroups: $usergroupSelectGroups,
895896
usergroupSelectTeams: $usergroupSelectTeams,
896-
showUserStatus: $usergroupShowUserStatus
897+
showUserStatus: $usergroupShowUserStatus,
898+
customSettings: json_encode($customSettings),
897899
),
898900
$selectedViewIds
899901
)->jsonSerialize());
@@ -938,7 +940,7 @@ public function createColumn(
938940
* @param bool|null $usergroupSelectGroups Can select groups, if column type is usergroup
939941
* @param bool|null $usergroupSelectTeams Can select teams, if column type is usergroup
940942
* @param bool|null $usergroupShowUserStatus Whether to show the user's status, if column type is usergroup
941-
*
943+
* @param array<string, mixed> $customSettings Custom settings for the column
942944
* @return DataResponse<Http::STATUS_OK, TablesColumn, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
943945
*
944946
* 200: Updated column
@@ -976,7 +978,7 @@ public function updateColumn(
976978
?bool $usergroupSelectGroups,
977979
?bool $usergroupSelectTeams,
978980
?bool $usergroupShowUserStatus,
979-
981+
?array $customSettings = [],
980982
): DataResponse {
981983
try {
982984
$item = $this->columnService->update(
@@ -1004,7 +1006,8 @@ public function updateColumn(
10041006
usergroupSelectUsers: $usergroupSelectUsers,
10051007
usergroupSelectGroups: $usergroupSelectGroups,
10061008
usergroupSelectTeams: $usergroupSelectTeams,
1007-
showUserStatus: $usergroupShowUserStatus
1009+
showUserStatus: $usergroupShowUserStatus,
1010+
customSettings: json_encode($customSettings),
10081011
)
10091012
);
10101013
return new DataResponse($item->jsonSerialize());

0 commit comments

Comments
 (0)