mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-18 18:10:43 +08:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
d59113104b
@ -87,14 +87,22 @@ export const getAssetName = (assetPath: string) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const isLocalPath = (link: string) => {
|
export const isLocalPath = (link: string) => {
|
||||||
link = link?.trim();
|
if (!link) {
|
||||||
if (!link || link.length === 0) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Windows 网络共享路径双斜杠
|
link = link.trim();
|
||||||
// 冒号前面只有一个字母认为是 Windows 盘符而不是网络协议
|
if (1 > link.length) {
|
||||||
return /^assets\/|file:\/\/|\\\\|[A-Z]:$/i.test(link);
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
link = link.toLowerCase();
|
||||||
|
if (link.startsWith("assets/") || link.startsWith("file://") || link.startsWith("\\\\") /* Windows 网络共享路径 */) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const colonIdx = link.indexOf(":");
|
||||||
|
return 1 === colonIdx; // 冒号前面只有一个字符认为是 Windows 盘符而不是网络协议
|
||||||
};
|
};
|
||||||
|
|
||||||
export const pathPosix = () => {
|
export const pathPosix = () => {
|
||||||
|
@ -322,7 +322,7 @@ func (value *Value) filter(other *Value, relativeDate, relativeDate2 *RelativeDa
|
|||||||
if nil != relativeDate { // 使用相对时间比较
|
if nil != relativeDate { // 使用相对时间比较
|
||||||
relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(relativeDate.Count, relativeDate.Unit, relativeDate.Direction)
|
relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(relativeDate.Count, relativeDate.Unit, relativeDate.Direction)
|
||||||
relativeTimeStart2, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction)
|
relativeTimeStart2, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction)
|
||||||
return filterRelativeTime(value.Date.Content, value.Date.IsNotEmpty, relativeTimeStart, relativeTimeEnd, relativeTimeStart2, relativeTimeEnd2, operator)
|
return filterRelativeTime(value.Date.Content, value.Date.IsNotEmpty, operator, relativeTimeStart, relativeTimeEnd, relativeDate.Direction, relativeTimeStart2, relativeTimeEnd2, relativeDate2.Direction)
|
||||||
} else { // 使用具体时间比较
|
} else { // 使用具体时间比较
|
||||||
if nil == other.Date {
|
if nil == other.Date {
|
||||||
return true
|
return true
|
||||||
@ -335,7 +335,7 @@ func (value *Value) filter(other *Value, relativeDate, relativeDate2 *RelativeDa
|
|||||||
if nil != relativeDate { // 使用相对时间比较
|
if nil != relativeDate { // 使用相对时间比较
|
||||||
relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(relativeDate.Count, relativeDate.Unit, relativeDate.Direction)
|
relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(relativeDate.Count, relativeDate.Unit, relativeDate.Direction)
|
||||||
relativeTimeStart2, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction)
|
relativeTimeStart2, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction)
|
||||||
return filterRelativeTime(value.Created.Content, true, relativeTimeStart, relativeTimeEnd, relativeTimeStart2, relativeTimeEnd2, operator)
|
return filterRelativeTime(value.Created.Content, true, operator, relativeTimeStart, relativeTimeEnd, relativeDate.Direction, relativeTimeStart2, relativeTimeEnd2, relativeDate2.Direction)
|
||||||
} else { // 使用具体时间比较
|
} else { // 使用具体时间比较
|
||||||
if nil == other.Created {
|
if nil == other.Created {
|
||||||
return true
|
return true
|
||||||
@ -348,7 +348,7 @@ func (value *Value) filter(other *Value, relativeDate, relativeDate2 *RelativeDa
|
|||||||
if nil != relativeDate { // 使用相对时间比较
|
if nil != relativeDate { // 使用相对时间比较
|
||||||
relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(relativeDate.Count, relativeDate.Unit, relativeDate.Direction)
|
relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(relativeDate.Count, relativeDate.Unit, relativeDate.Direction)
|
||||||
relativeTimeStart2, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction)
|
relativeTimeStart2, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction)
|
||||||
return filterRelativeTime(value.Updated.Content, true, relativeTimeStart, relativeTimeEnd, relativeTimeStart2, relativeTimeEnd2, operator)
|
return filterRelativeTime(value.Updated.Content, true, operator, relativeTimeStart, relativeTimeEnd, relativeDate.Direction, relativeTimeStart2, relativeTimeEnd2, relativeDate2.Direction)
|
||||||
} else { // 使用具体时间比较
|
} else { // 使用具体时间比较
|
||||||
if nil == other.Updated {
|
if nil == other.Updated {
|
||||||
return true
|
return true
|
||||||
@ -575,7 +575,7 @@ func (value *Value) filter(other *Value, relativeDate, relativeDate2 *RelativeDa
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func filterRelativeTime(valueMills int64, valueIsNotEmpty bool, otherValueStart, otherValueEnd, otherValueStart2, otherValueEnd2 time.Time, operator FilterOperator) bool {
|
func filterRelativeTime(valueMills int64, valueIsNotEmpty bool, operator FilterOperator, otherValueStart, otherValueEnd time.Time, direction RelativeDateDirection, otherValueStart2, otherValueEnd2 time.Time, direction2 RelativeDateDirection) bool {
|
||||||
valueTime := time.UnixMilli(valueMills)
|
valueTime := time.UnixMilli(valueMills)
|
||||||
switch operator {
|
switch operator {
|
||||||
case FilterOperatorIsEqual:
|
case FilterOperatorIsEqual:
|
||||||
@ -591,7 +591,47 @@ func filterRelativeTime(valueMills int64, valueIsNotEmpty bool, otherValueStart,
|
|||||||
case FilterOperatorIsLessOrEqual:
|
case FilterOperatorIsLessOrEqual:
|
||||||
return valueTime.Before(otherValueEnd) || valueTime.Equal(otherValueEnd)
|
return valueTime.Before(otherValueEnd) || valueTime.Equal(otherValueEnd)
|
||||||
case FilterOperatorIsBetween:
|
case FilterOperatorIsBetween:
|
||||||
return (valueTime.After(otherValueStart) || valueTime.Equal(otherValueStart)) && valueTime.Before(otherValueStart2)
|
if RelativeDateDirectionBefore == direction {
|
||||||
|
if RelativeDateDirectionBefore == direction2 || RelativeDateDirectionAfter == direction2 {
|
||||||
|
var leftStart, rightEnd time.Time
|
||||||
|
if otherValueStart.Before(otherValueStart2) {
|
||||||
|
leftStart = otherValueStart
|
||||||
|
} else {
|
||||||
|
leftStart = otherValueStart2
|
||||||
|
}
|
||||||
|
if otherValueEnd.Before(otherValueEnd2) {
|
||||||
|
rightEnd = otherValueEnd2
|
||||||
|
} else {
|
||||||
|
rightEnd = otherValueEnd
|
||||||
|
}
|
||||||
|
return (valueTime.After(leftStart) || valueTime.Equal(leftStart)) && (valueTime.Before(rightEnd) || valueTime.Equal(rightEnd))
|
||||||
|
} else if RelativeDateDirectionThis == direction2 {
|
||||||
|
return ((valueTime.After(otherValueStart) || valueTime.Equal(otherValueStart)) && (valueTime.Before(otherValueEnd) || valueTime.Equal(otherValueEnd))) ||
|
||||||
|
((valueTime.After(otherValueStart2) || valueTime.Equal(otherValueStart2)) && (valueTime.Before(otherValueEnd2) || valueTime.Equal(otherValueEnd2)))
|
||||||
|
}
|
||||||
|
} else if RelativeDateDirectionThis == direction {
|
||||||
|
return ((valueTime.After(otherValueStart) || valueTime.Equal(otherValueStart)) && (valueTime.Before(otherValueEnd) || valueTime.Equal(otherValueEnd))) ||
|
||||||
|
((valueTime.After(otherValueStart2) || valueTime.Equal(otherValueStart2)) && (valueTime.Before(otherValueEnd2) || valueTime.Equal(otherValueEnd2)))
|
||||||
|
} else if RelativeDateDirectionAfter == direction {
|
||||||
|
if RelativeDateDirectionBefore == direction2 || RelativeDateDirectionAfter == direction2 {
|
||||||
|
var leftStart, rightEnd time.Time
|
||||||
|
if otherValueStart.Before(otherValueStart2) {
|
||||||
|
leftStart = otherValueStart
|
||||||
|
} else {
|
||||||
|
leftStart = otherValueStart2
|
||||||
|
}
|
||||||
|
if otherValueEnd.Before(otherValueEnd2) {
|
||||||
|
rightEnd = otherValueEnd2
|
||||||
|
} else {
|
||||||
|
rightEnd = otherValueEnd
|
||||||
|
}
|
||||||
|
return (valueTime.After(leftStart) || valueTime.Equal(leftStart)) && (valueTime.Before(rightEnd) || valueTime.Equal(rightEnd))
|
||||||
|
} else if RelativeDateDirectionThis == direction2 {
|
||||||
|
return ((valueTime.After(otherValueStart) || valueTime.Equal(otherValueStart)) && (valueTime.Before(otherValueEnd) || valueTime.Equal(otherValueEnd))) ||
|
||||||
|
((valueTime.After(otherValueStart2) || valueTime.Equal(otherValueStart2)) && (valueTime.Before(otherValueEnd2) || valueTime.Equal(otherValueEnd2)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
case FilterOperatorIsEmpty:
|
case FilterOperatorIsEmpty:
|
||||||
return !valueIsNotEmpty
|
return !valueIsNotEmpty
|
||||||
case FilterOperatorIsNotEmpty:
|
case FilterOperatorIsNotEmpty:
|
||||||
|
Loading…
Reference in New Issue
Block a user