Browse Source

fix: kanban column order correction

pull/7477/head
Pranav C 8 months ago
parent
commit
ff6ad5e3e1
  1. 77
      packages/nocodb/src/models/Column.ts
  2. 24
      packages/nocodb/src/models/View.ts

77
packages/nocodb/src/models/Column.ts

@ -1354,39 +1354,50 @@ export default class Column<T = any> implements ColumnType {
source_id: param.source_id,
fk_model_id: param.fk_model_id,
};
extractedColumnMetas.push(
extractProps(colWithId as any, [
'id',
'fk_model_id',
'column_name',
'title',
'uidt',
'dt',
'np',
'ns',
'clen',
'cop',
'pk',
'rqd',
'un',
'ct',
'ai',
'unique',
'cdf',
'cc',
'csn',
'dtx',
'dtxp',
'dtxs',
'au',
'pv',
'order',
'base_id',
'source_id',
'system',
'meta',
]),
);
const insertObj = extractProps(colWithId as any, [
'id',
'fk_model_id',
'column_name',
'title',
'uidt',
'dt',
'np',
'ns',
'clen',
'cop',
'pk',
'rqd',
'un',
'ct',
'ai',
'unique',
'cdf',
'cc',
'csn',
'dtx',
'dtxp',
'dtxs',
'au',
'pv',
'order',
'base_id',
'source_id',
'system',
'meta',
]);
if (column.meta && typeof column.meta === 'object') {
insertObj.meta = JSON.stringify(column.meta);
}
if (column.validate) {
if (typeof column.validate === 'string')
insertObj.validate = column.validate;
else insertObj.validate = JSON.stringify(column.validate);
}
extractedColumnMetas.push(insertObj);
columns.push(colWithId);
}

24
packages/nocodb/src/models/View.ts

@ -1609,6 +1609,30 @@ export default class View implements ViewType {
columns = await Column.list({ fk_model_id: view.fk_model_id });
}
// todo: avoid duplicate code
if (view.type === ViewTypes.KANBAN && !copyFromView) {
// sort by display value & attachment first, then by singleLineText & Number
// so that later we can handle control `show` easily
columns.sort((a, b) => {
const displayValueOrder = +b.pv - +a.pv;
const attachmentOrder =
+(b.uidt === UITypes.Attachment) - +(a.uidt === UITypes.Attachment);
const singleLineTextOrder =
+(b.uidt === UITypes.SingleLineText) -
+(a.uidt === UITypes.SingleLineText);
const numberOrder =
+(b.uidt === UITypes.Number) - +(a.uidt === UITypes.Number);
const defaultOrder = b.order - a.order;
return (
displayValueOrder ||
attachmentOrder ||
singleLineTextOrder ||
numberOrder ||
defaultOrder
);
});
}
let order = 1;
let galleryShowLimit = 0;
let kanbanShowLimit = 0;

Loading…
Cancel
Save