Add database lineNumber field type (#11008)

* 🎨 add database lineNumber type

* 🎨 fix https://github.com/siyuan-note/siyuan/issues/10896

* 🎨 Improve mobile app appearance language https://github.com/siyuan-note/siyuan/issues/11009

* 🎨 Improve database template field calc https://github.com/siyuan-note/siyuan/issues/11011

* ⬆️ Upgrade kernel deps

* ⬆️ Upgrade kernel deps

* 🎨 fix https://github.com/siyuan-note/siyuan/issues/10896

* 🎨 fix https://github.com/siyuan-note/siyuan/issues/10896

* 🐛 https://github.com/siyuan-note/siyuan/issues/11015

* 🐛 https://github.com/siyuan-note/siyuan/issues/11018

* 🐛 https://github.com/siyuan-note/siyuan/issues/11018

* 🎨 刚创建时无 id,更新需和 oldValue 保持一致

* 🐛 Database date field between filter calculation error Fix https://github.com/siyuan-note/siyuan/issues/10979

* 🐛 Primary key value unexpectedly updated when database adds row https://github.com/siyuan-note/siyuan/issues/11018

* 🎨 https://github.com/siyuan-note/siyuan/issues/11013

* 🎨 搜索可汇总字段时排除行号类型字段 https://github.com/siyuan-note/siyuan/pull/11008

* 🎨 lineNumber no need to join the calc op and remove useless todo tag

---------

Co-authored-by: Vanessa <lly219@gmail.com>
Co-authored-by: Daniel <845765@qq.com>
This commit is contained in:
Silent Lee 2024-04-15 00:49:48 +08:00 committed by GitHub
parent afeea6a80e
commit 8a354da50a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 224 additions and 108 deletions

View file

@ -252,6 +252,7 @@ export const getEditHTML = (options: {
${genUpdateColItem("template", colData.type)}
${genUpdateColItem("relation", colData.type)}
${genUpdateColItem("rollup", colData.type)}
${genUpdateColItem("lineNumber", colData.type)}
${genUpdateColItem("created", colData.type)}
${genUpdateColItem("updated", colData.type)}
</div>`;
@ -482,6 +483,8 @@ export const getColNameByType = (type: TAVCol) => {
return window.siyuan.languages.checkbox;
case "block":
return window.siyuan.languages["_attrView"].key;
case "lineNumber":
return window.siyuan.languages.lineNumber;
}
};
@ -518,6 +521,8 @@ export const getColIconByType = (type: TAVCol) => {
return "iconMath";
case "checkbox":
return "iconCheck";
case "lineNumber":
return "iconSpreadOdd";
}
};
@ -694,90 +699,94 @@ export const showColMenu = (protyle: IProtyle, blockElement: Element, cellElemen
}
});
menu.addSeparator();
menu.addItem({
icon: "iconUp",
label: window.siyuan.languages.asc,
click() {
fetchPost("/api/av/renderAttributeView", {
id: avID,
}, (response) => {
transaction(protyle, [{
action: "setAttrViewSorts",
avID: response.data.id,
data: [{
column: colId,
order: "ASC"
}],
blockID
}], [{
action: "setAttrViewSorts",
avID: response.data.id,
data: response.data.view.sorts,
blockID
}]);
});
}
});
menu.addItem({
icon: "iconDown",
label: window.siyuan.languages.desc,
click() {
fetchPost("/api/av/renderAttributeView", {
id: avID,
}, (response) => {
transaction(protyle, [{
action: "setAttrViewSorts",
avID: response.data.id,
data: [{
column: colId,
order: "DESC"
}],
blockID
}], [{
action: "setAttrViewSorts",
avID: response.data.id,
data: response.data.view.sorts,
blockID
}]);
});
}
});
if (type !== "mAsset") {
// 行号 类型不参与 排序和筛选
if (type !== "lineNumber") {
menu.addItem({
icon: "iconFilter",
label: window.siyuan.languages.filter,
icon: "iconUp",
label: window.siyuan.languages.asc,
click() {
fetchPost("/api/av/renderAttributeView", {
id: avID,
}, (response) => {
const avData = response.data as IAV;
let filter: IAVFilter;
avData.view.filters.find((item) => {
if (item.column === colId && item.value.type === type) {
filter = item;
return true;
}
});
if (!filter) {
filter = {
transaction(protyle, [{
action: "setAttrViewSorts",
avID: response.data.id,
data: [{
column: colId,
operator: getDefaultOperatorByType(type),
value: genCellValue(type, ""),
};
avData.view.filters.push(filter);
}
setFilter({
filter,
protyle,
data: avData,
blockElement: blockElement,
target: blockElement.querySelector(`.av__row--header .av__cell[data-col-id="${colId}"]`),
});
order: "ASC"
}],
blockID
}], [{
action: "setAttrViewSorts",
avID: response.data.id,
data: response.data.view.sorts,
blockID
}]);
});
}
});
menu.addItem({
icon: "iconDown",
label: window.siyuan.languages.desc,
click() {
fetchPost("/api/av/renderAttributeView", {
id: avID,
}, (response) => {
transaction(protyle, [{
action: "setAttrViewSorts",
avID: response.data.id,
data: [{
column: colId,
order: "DESC"
}],
blockID
}], [{
action: "setAttrViewSorts",
avID: response.data.id,
data: response.data.view.sorts,
blockID
}]);
});
}
});
if (type !== "mAsset") {
menu.addItem({
icon: "iconFilter",
label: window.siyuan.languages.filter,
click() {
fetchPost("/api/av/renderAttributeView", {
id: avID,
}, (response) => {
const avData = response.data as IAV;
let filter: IAVFilter;
avData.view.filters.find((item) => {
if (item.column === colId && item.value.type === type) {
filter = item;
return true;
}
});
if (!filter) {
filter = {
column: colId,
operator: getDefaultOperatorByType(type),
value: genCellValue(type, ""),
};
avData.view.filters.push(filter);
}
setFilter({
filter,
protyle,
data: avData,
blockElement: blockElement,
target: blockElement.querySelector(`.av__row--header .av__cell[data-col-id="${colId}"]`),
});
});
}
});
}
menu.addSeparator();
}
menu.addSeparator();
menu.addItem({
icon: "iconInsertLeft",
@ -1429,6 +1438,44 @@ export const addCol = (protyle: IProtyle, blockElement: Element, previousID?: st
blockElement.setAttribute("updated", newUpdated);
}
});
// 在创建时间前插入 lineNumber
menu.addItem({
icon: "iconSpreadOdd",
label: window.siyuan.languages.lineNumber,
click() {
const id = Lute.NewNodeID();
const newUpdated = dayjs().format("YYYYMMDDHHmmss");
transaction(protyle, [{
action: "addAttrViewCol",
name: window.siyuan.languages.lineNumber,
avID,
type: "lineNumber",
id,
previousID
}, {
action: "doUpdateUpdated",
id: blockId,
data: newUpdated,
}], [{
action: "removeAttrViewCol",
id,
avID,
}, {
action: "doUpdateUpdated",
id: blockId,
data: blockElement.getAttribute("updated")
}]);
addAttrViewColAnimation({
blockElement: blockElement,
protyle: protyle,
type: "lineNumber",
name: window.siyuan.languages.lineNumber,
id,
previousID
});
blockElement.setAttribute("updated", newUpdated);
}
});
menu.addItem({
icon: "iconClock",
label: window.siyuan.languages.createdTime,