From ac114a5f101309d92b2778d2af034383c0456941 Mon Sep 17 00:00:00 2001 From: chorblack Date: Tue, 22 Apr 2025 20:58:44 +0800 Subject: [PATCH] first commit --- .DS_Store | Bin 0 -> 6148 bytes app.ux | 26 +++ assets/.DS_Store | Bin 0 -> 6148 bytes assets/images/.DS_Store | Bin 0 -> 6148 bytes assets/images/logo.png | Bin 0 -> 2166 bytes assets/styles/mixins.scss | 5 + assets/styles/style.scss | 2 + assets/styles/variables.scss | 9 + common/logo-256.png | Bin 0 -> 2166 bytes common/logo.png | Bin 0 -> 2166 bytes common/utils/dayjs.js | 1 + common/utils/getDateComponents.js | 16 ++ common/utils/highlights.json | 23 +++ common/utils/sloarToLunar.js | 183 +++++++++++++++++++ manifest.json | 44 +++++ pages/.DS_Store | Bin 0 -> 6148 bytes pages/detail/index.ux | 121 +++++++++++++ pages/index/index.ux | 286 ++++++++++++++++++++++++++++++ 18 files changed, 716 insertions(+) create mode 100644 .DS_Store create mode 100644 app.ux create mode 100644 assets/.DS_Store create mode 100644 assets/images/.DS_Store create mode 100644 assets/images/logo.png create mode 100644 assets/styles/mixins.scss create mode 100644 assets/styles/style.scss create mode 100644 assets/styles/variables.scss create mode 100644 common/logo-256.png create mode 100644 common/logo.png create mode 100644 common/utils/dayjs.js create mode 100644 common/utils/getDateComponents.js create mode 100644 common/utils/highlights.json create mode 100644 common/utils/sloarToLunar.js create mode 100644 manifest.json create mode 100644 pages/.DS_Store create mode 100644 pages/detail/index.ux create mode 100644 pages/index/index.ux diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5b788c11d27097ee2a9505e5fbe6a62cc1938aaa GIT binary patch literal 6148 zcmeHK%}T>S5Z<+|O({YS3Oz1(E!f&(6)z#y7cim+m70)JgE3p0)Er77XMG``#OHBl zcLOaJk0N#kcE8#A+0A^A{b7u8cOG^bvl(L+G(?Wd20`;i*NzEB%q`{cV(lGI!-X2~(BpX@}LY8Y8>4Saf@*ZP6PHmTj>( zJMOea|D?ZMHmrlgqw}lLbNrIXH%%l5#+B?DEa4rLm5N@ySrW@+0@gC4j3gumhyh}N z7}!n*%z0onx3hezniwDkeqaFi2LTPyF<59+TL*M_eMWy35e0O7OCSn^j=@4BctE&L z1=OkBJTbUV2fHwFj=@5sPG?-L4D*tAkyraK;^t)Dr{5z&ZmJJ+$%szl2|A z<0F4Pg+{~xG4RhA;MJiwbfGA7wtg!Q&sqWP5gH1{6{vuKzIF+K0q!F$<b2! W3ynAn+EqFrT?7;%)DZ)}z`z%co=V{W literal 0 HcmV?d00001 diff --git a/app.ux b/app.ux new file mode 100644 index 0000000..1ea1f9a --- /dev/null +++ b/app.ux @@ -0,0 +1,26 @@ + diff --git a/assets/.DS_Store b/assets/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bd8361eabe5c520f3c5d5f4d9d24b26c69c59928 GIT binary patch literal 6148 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 literal 0 HcmV?d00001 diff --git a/assets/styles/mixins.scss b/assets/styles/mixins.scss new file mode 100644 index 0000000..56fbb5e --- /dev/null +++ b/assets/styles/mixins.scss @@ -0,0 +1,5 @@ +@mixin flex-box-mixins($direction: row, $justify: center, $align-items: center) { + flex-direction: $direction; + justify-content: $justify; + align-items: $align-items; +} diff --git a/assets/styles/style.scss b/assets/styles/style.scss new file mode 100644 index 0000000..088ebfa --- /dev/null +++ b/assets/styles/style.scss @@ -0,0 +1,2 @@ +@import './variables.scss'; +@import './mixins.scss'; diff --git a/assets/styles/variables.scss b/assets/styles/variables.scss new file mode 100644 index 0000000..04a6053 --- /dev/null +++ b/assets/styles/variables.scss @@ -0,0 +1,9 @@ +$brand: #09ba07; + +$white: #ffffff; +$black: #000000; +$grey: #9393aa; +$red: #fa0101; +$green: #ffff00; + +$size-factor: 5px; diff --git a/common/logo-256.png b/common/logo-256.png new file mode 100644 index 0000000000000000000000000000000000000000..9410c0a3ca0e98258e9aff9e6af73c1a16bb7a4d GIT binary patch literal 2166 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 literal 0 HcmV?d00001 diff --git a/common/logo.png b/common/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9410c0a3ca0e98258e9aff9e6af73c1a16bb7a4d GIT binary patch literal 2166 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 literal 0 HcmV?d00001 diff --git a/common/utils/dayjs.js b/common/utils/dayjs.js new file mode 100644 index 0000000..61916d8 --- /dev/null +++ b/common/utils/dayjs.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t) -1)) { + lm = `闰${lunarMonth[/\d/.exec(lm) - 1]}` + } else { + lm = lunarMonth[lm - 1]; + } + + // 将计算出来的农历年份转换为天干地支年 + ly = getTianGan(ly) + getDiZhi(ly); + + // 将计算出来的农历天数转换成汉字 + if (ld < 11) { + ld = `${lunarDay[10]}${lunarDay[ld-1]}` + } else if (ld > 10 && ld < 20) { + ld = `${lunarDay[9]}${lunarDay[ld-11]}` + } else if (ld === 20) { + ld = `${lunarDay[1]}${lunarDay[9]}` + } else if (ld > 20 && ld < 30) { + ld = `${lunarDay[11]}${lunarDay[ld-21]}` + } else if (ld === 30) { + ld = `${lunarDay[2]}${lunarDay[9]}` + } + + // console.log(ly, lm, ld); + + return { + lunarYear: ly, + lunarMonth: lm, + lunarDay: ld, + } +} + +// 计算农历年是否有闰月,参数为存储农历年的16进制 +// 农历年份信息用16进制存储,其中16进制的最后1位可以用于判断是否有闰月 +function hasLeapMonth(ly) { + // 获取16进制的最后1位,需要用到&与运算符 + if (ly & 0xf) { + return ly & 0xf + } else { + return false + } +} + +// 如果有闰月,计算农历闰月天数,参数为存储农历年的16进制 +// 农历年份信息用16进制存储,其中16进制的第1位(0x除外)可以用于表示闰月是大月还是小月 +function leapMonthDays(ly) { + if (hasLeapMonth(ly)) { + // 获取16进制的第1位(0x除外) + return (ly & 0xf0000) ? 30 : 29 + } else { + return 0 + } +} + +// 计算农历一年的总天数,参数为存储农历年的16进制 +// 农历年份信息用16进制存储,其中16进制的第2-4位(0x除外)可以用于表示正常月是大月还是小月 +function lunarYearDays(ly) { + let totalDays = 0; + + // 获取正常月的天数,并累加 + // 获取16进制的第2-4位,需要用到>>移位运算符 + for (let i = 0x8000; i > 0x8; i >>= 1) { + let monthDays = (ly & i) ? 30 : 29; + totalDays += monthDays; + } + // 如果有闰月,需要把闰月的天数加上 + if (hasLeapMonth(ly)) { + totalDays += leapMonthDays(ly); + } + + return totalDays +} + +// 获取农历每个月的天数 +// 参数需传入16进制数值 +function lunarYearMonths(ly) { + let monthArr = []; + + // 获取正常月的天数,并添加到monthArr数组中 + // 获取16进制的第2-4位,需要用到>>移位运算符 + for (let i = 0x8000; i > 0x8; i >>= 1) { + monthArr.push((ly & i) ? 30 : 29); + } + // 如果有闰月,需要把闰月的天数加上 + if (hasLeapMonth(ly)) { + monthArr.splice(hasLeapMonth(ly), 0, leapMonthDays(ly)); + } + + return monthArr +} + +// 将农历年转换为天干,参数为农历年 +function getTianGan(ly) { + let tianGanKey = (ly - 3) % 10; + if (tianGanKey === 0) tianGanKey = 10; + return tianGan[tianGanKey - 1] +} + +// 将农历年转换为地支,参数为农历年 +function getDiZhi(ly) { + let diZhiKey = (ly - 3) % 12; + if (diZhiKey === 0) diZhiKey = 12; + return diZhi[diZhiKey - 1] +} + +export default sloarToLunar \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..1523828 --- /dev/null +++ b/manifest.json @@ -0,0 +1,44 @@ +{ + "package": "top.chorblack.calendar", + "name": "日历", + "versionName": "2.0.1", + "versionCode": 3, + "appCategory": [ + "other" + ], + "icon": "/assets/images/logo.png", + "features": [ + { + "name": "blueos.app.appmanager.router" + }, + { + "name": "blueos.hardware.deviceInfo" + } + ], + "deviceTypeList": [ + "watch", + "watch-square" + ], + "config": { + "designWidth": 466 + }, + "router": { + "entry": "pages/index", + "pages": { + "pages/index": { + "component": "index" + }, + "pages/detail": { + "component": "index" + } + } + }, + "display": { + "backgroundColor": "#000000" + }, + "permissions": [ + { + "name": "watch.permission.DEVICE_INFO" + } + ] +} diff --git a/pages/.DS_Store b/pages/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0348ccc56de105b30794b0d96f5f5f64e4ccd83f GIT binary patch literal 6148 zcmeHK!AiqG5S^`6Q;X1pg2x4~1zTIx;w9Aj14i_qQWFw17_+5K&7l->)*tdq{2pg^ zx1zS51QnTq*|$48lQ1t~X9oa8cN{hWY5?G%5|%1BED+i!os*Kalo16zBgjXCAW;FX zpXa>U@D~}NZ&!vML~sx4{r3w7Nj%CLjTcc`Dlf0BI;&3Ax$s%DZZuh9e#8nGL7nRQk28$)wpjsLR&= z{o{NJ>!Tb#iYPTul)@P=uk(i^mq|Jp21 zjT!h5L-Ol6ciNb9`@1;PL)bS9+o1^k zc6`3n?jT%)JTe2!z()p_%(6!H|M=_v|6>rZm;q+sUojxcJ+Ifrlx%ICOO9%-M7>5O pA-}@lTL?~cDMnu^#apOa&@O3$=vpicq6LL70-6RMn1LT<;1yRwifsS@ literal 0 HcmV?d00001 diff --git a/pages/detail/index.ux b/pages/detail/index.ux new file mode 100644 index 0000000..0906617 --- /dev/null +++ b/pages/detail/index.ux @@ -0,0 +1,121 @@ + + + + + \ No newline at end of file diff --git a/pages/index/index.ux b/pages/index/index.ux new file mode 100644 index 0000000..7f7221b --- /dev/null +++ b/pages/index/index.ux @@ -0,0 +1,286 @@ + + + + + \ No newline at end of file