mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-03-09 22:22:34 +01:00
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:
parent
afeea6a80e
commit
8a354da50a
16 changed files with 224 additions and 108 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue