@pisell/materials 6.11.39 → 6.11.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/index.js +1 -1
- package/build/lowcode/meta.js +1 -1
- package/build/lowcode/preview.js +8 -8
- package/build/lowcode/render/default/view.css +1 -1
- package/build/lowcode/render/default/view.js +16 -16
- package/build/lowcode/view.css +1 -1
- package/build/lowcode/view.js +16 -16
- package/es/components/PisellBasicGrid/PisellBasicGrid.d.ts +0 -1
- package/es/components/PisellCards/components/GraphicTextCard/GraphicTextCard.d.ts +0 -1
- package/es/components/PisellCards/components/MultilevelCard/hooks/useMultilevelCardExpand.d.ts +0 -1
- package/es/components/PisellCards/components/PisellImageCard/hooks/useImageLoad.d.ts +0 -1
- package/es/components/PisellCards/components/TabCard/TabCard.d.ts +0 -1
- package/es/components/PisellCards/components/TextCard/TextCard.d.ts +0 -1
- package/es/components/PisellCards/index.d.ts +0 -1
- package/es/components/cardPro/index.d.ts +0 -1
- package/es/components/colorPicker/index.d.ts +1 -0
- package/es/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +3 -3
- package/es/components/dataSourceComponents/fields/Input.Subdomain/index.d.ts +1 -1
- package/es/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -1
- package/es/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
- package/es/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -1
- package/es/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
- package/es/components/dataSourceComponents/fields/index.d.ts +16 -16
- package/es/components/drag-sort-tree/TreeItem/index.d.ts +0 -1
- package/es/components/filter/components/items/index.d.ts +1 -0
- package/es/components/filter/components/items/text/Editor/index.d.ts +1 -0
- package/es/components/filter/components/items/text/Preview/index.d.ts +1 -0
- package/es/components/filter/components/items/text/index.d.ts +1 -0
- package/es/components/page/index.d.ts +0 -1
- package/es/components/pisellAdjustPrice/index.d.ts +0 -1
- package/es/components/pisellDatePicker/datePickerCpt.d.ts +0 -1
- package/es/components/pisellGridPro/GridView/index.d.ts +0 -1
- package/es/components/pisellGridPro/components/DataCard/index.d.ts +0 -1
- package/es/components/pisellInput/components/BankCard/index.d.ts +0 -1
- package/es/components/pisellInput/components/Copy/index.d.ts +0 -1
- package/es/components/pisellInput/components/SecurityCode/index.d.ts +0 -1
- package/es/components/pisellInput/index.d.ts +0 -1
- package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +1 -1
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +29 -7
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +3 -2
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +169 -329
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.less +335 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.d.ts +35 -19
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.js +159 -79
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +1 -0
- package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +7 -6
- package/es/components/pisellRecordBoard/types.d.ts +7 -0
- package/es/components/pisellSort/index.d.ts +0 -1
- package/es/components/pisellTooltip/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/AmountFooter/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/Gift/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/MultiDay/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/Note/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/Promotion/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/discountReason/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/holders/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/packages/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/resources/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/sales/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/specs/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/components/timeRange/index.d.ts +0 -1
- package/es/components/productCard/cartSkuCard/index.d.ts +0 -1
- package/es/components/productCard/components/Action/index.d.ts +0 -1
- package/es/components/productCard/components/Header/EditButton/index.d.ts +0 -1
- package/es/components/productCard/components/Header/index.d.ts +0 -1
- package/es/components/productCard/components/Sales/index.d.ts +0 -1
- package/es/components/productCard/components/Time/components/SelectHolder/index.d.ts +0 -1
- package/es/components/productCard/components/Time/components/SelectHolderModal/index.d.ts +0 -1
- package/es/components/productCard/components/Time/components/SelectHolderMultiple/index.d.ts +0 -1
- package/es/components/select-time/index.d.ts +0 -1
- package/es/components/table/Actions/component/ViewMode/index.d.ts +0 -1
- package/es/components/table/Table/SelectField/index.d.ts +1 -0
- package/es/components/table/Table/fields/index.d.ts +2 -2
- package/es/components/table/Table/fields/oldRangePicker/Show/index.d.ts +0 -1
- package/es/components/table/Table/fields/rangePicker/Show/index.d.ts +0 -1
- package/es/components/table/Table/fields/select/Show/index.d.ts +0 -1
- package/es/components/table/Table/fields/treeSelect/Show/index.d.ts +0 -1
- package/es/components/table/Table/tableConfig/summary/index.d.ts +1 -0
- package/es/components/table/Table/utils.d.ts +1 -1
- package/es/components/virtual-keyboard/Amount/index.d.ts +0 -1
- package/es/components/virtual-keyboard/Number/index.d.ts +0 -1
- package/es/hooks/useResponsive.d.ts +1 -1
- package/es/locales/en-US.d.ts +9 -0
- package/es/locales/en-US.js +12 -3
- package/es/locales/ja.d.ts +9 -0
- package/es/locales/ja.js +11 -2
- package/es/locales/pt.d.ts +9 -0
- package/es/locales/pt.js +11 -2
- package/es/locales/zh-CN.d.ts +9 -0
- package/es/locales/zh-CN.js +11 -2
- package/es/locales/zh-TW.d.ts +9 -0
- package/es/locales/zh-TW.js +11 -2
- package/lib/components/PisellBasicGrid/PisellBasicGrid.d.ts +0 -1
- package/lib/components/PisellCards/components/GraphicTextCard/GraphicTextCard.d.ts +0 -1
- package/lib/components/PisellCards/components/MultilevelCard/hooks/useMultilevelCardExpand.d.ts +0 -1
- package/lib/components/PisellCards/components/PisellImageCard/hooks/useImageLoad.d.ts +0 -1
- package/lib/components/PisellCards/components/TabCard/TabCard.d.ts +0 -1
- package/lib/components/PisellCards/components/TextCard/TextCard.d.ts +0 -1
- package/lib/components/PisellCards/index.d.ts +0 -1
- package/lib/components/cardPro/index.d.ts +0 -1
- package/lib/components/colorPicker/index.d.ts +1 -0
- package/lib/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
- package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +3 -3
- package/lib/components/dataSourceComponents/fields/Input.Subdomain/index.d.ts +1 -1
- package/lib/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -1
- package/lib/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
- package/lib/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -1
- package/lib/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
- package/lib/components/dataSourceComponents/fields/index.d.ts +16 -16
- package/lib/components/drag-sort-tree/TreeItem/index.d.ts +0 -1
- package/lib/components/filter/components/items/index.d.ts +1 -0
- package/lib/components/filter/components/items/text/Editor/index.d.ts +1 -0
- package/lib/components/filter/components/items/text/Preview/index.d.ts +1 -0
- package/lib/components/filter/components/items/text/index.d.ts +1 -0
- package/lib/components/page/index.d.ts +0 -1
- package/lib/components/pisellAdjustPrice/index.d.ts +0 -1
- package/lib/components/pisellDatePicker/datePickerCpt.d.ts +0 -1
- package/lib/components/pisellGridPro/GridView/index.d.ts +0 -1
- package/lib/components/pisellGridPro/components/DataCard/index.d.ts +0 -1
- package/lib/components/pisellInput/components/BankCard/index.d.ts +0 -1
- package/lib/components/pisellInput/components/Copy/index.d.ts +0 -1
- package/lib/components/pisellInput/components/SecurityCode/index.d.ts +0 -1
- package/lib/components/pisellInput/index.d.ts +0 -1
- package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +1 -1
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +31 -3
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +3 -2
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +186 -437
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.less +335 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.d.ts +35 -19
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.js +134 -80
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +1 -0
- package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +8 -5
- package/lib/components/pisellRecordBoard/types.d.ts +7 -0
- package/lib/components/pisellSort/index.d.ts +0 -1
- package/lib/components/pisellTooltip/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/AmountFooter/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/Gift/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/MultiDay/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/Note/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/Promotion/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/discountReason/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/holders/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/packages/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/resources/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/sales/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/specs/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/components/timeRange/index.d.ts +0 -1
- package/lib/components/productCard/cartSkuCard/index.d.ts +0 -1
- package/lib/components/productCard/components/Action/index.d.ts +0 -1
- package/lib/components/productCard/components/Header/EditButton/index.d.ts +0 -1
- package/lib/components/productCard/components/Header/index.d.ts +0 -1
- package/lib/components/productCard/components/Sales/index.d.ts +0 -1
- package/lib/components/productCard/components/Time/components/SelectHolder/index.d.ts +0 -1
- package/lib/components/productCard/components/Time/components/SelectHolderModal/index.d.ts +0 -1
- package/lib/components/productCard/components/Time/components/SelectHolderMultiple/index.d.ts +0 -1
- package/lib/components/select-time/index.d.ts +0 -1
- package/lib/components/table/Actions/component/ViewMode/index.d.ts +0 -1
- package/lib/components/table/Table/SelectField/index.d.ts +1 -0
- package/lib/components/table/Table/fields/index.d.ts +2 -2
- package/lib/components/table/Table/fields/oldRangePicker/Show/index.d.ts +0 -1
- package/lib/components/table/Table/fields/rangePicker/Show/index.d.ts +0 -1
- package/lib/components/table/Table/fields/select/Show/index.d.ts +0 -1
- package/lib/components/table/Table/fields/treeSelect/Show/index.d.ts +0 -1
- package/lib/components/table/Table/tableConfig/summary/index.d.ts +1 -0
- package/lib/components/table/Table/utils.d.ts +1 -1
- package/lib/components/virtual-keyboard/Amount/index.d.ts +0 -1
- package/lib/components/virtual-keyboard/Number/index.d.ts +0 -1
- package/lib/hooks/useResponsive.d.ts +1 -1
- package/lib/locales/en-US.d.ts +9 -0
- package/lib/locales/en-US.js +12 -3
- package/lib/locales/ja.d.ts +9 -0
- package/lib/locales/ja.js +11 -2
- package/lib/locales/pt.d.ts +9 -0
- package/lib/locales/pt.js +11 -2
- package/lib/locales/zh-CN.d.ts +9 -0
- package/lib/locales/zh-CN.js +11 -2
- package/lib/locales/zh-TW.d.ts +9 -0
- package/lib/locales/zh-TW.js +11 -2
- package/lowcode/pisell-record-board-calendar-view/meta.ts +170 -3
- package/package.json +3 -3
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
/** VenueWallCard:布局分区 + 三档字号(字阶),非三块布局语义 */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 外层只做容器查询盒 + 边框裁剪;不要在同一节点写「依赖自身宽度」的 cqi/cqmin,
|
|
5
|
+
* 否则字号无法随卡片尺寸变化。
|
|
6
|
+
*/
|
|
7
|
+
.pisell-resource-wall-card {
|
|
8
|
+
position: relative;
|
|
9
|
+
height: 100%;
|
|
10
|
+
min-width: 0;
|
|
11
|
+
width: 100%;
|
|
12
|
+
overflow: hidden;
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
min-height: 0;
|
|
16
|
+
box-sizing: border-box;
|
|
17
|
+
border-radius: clamp(8px, 2vw, 28px);
|
|
18
|
+
border-width: 1px;
|
|
19
|
+
border-style: solid;
|
|
20
|
+
|
|
21
|
+
container-type: size;
|
|
22
|
+
container-name: venue-wall-card;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** 字号基准与子树:cqi/cqmin 相对外层卡片解析,故必须放在内层 */
|
|
26
|
+
.pisell-resource-wall-card__scale-root {
|
|
27
|
+
flex: 1;
|
|
28
|
+
min-width: 0;
|
|
29
|
+
min-height: 0;
|
|
30
|
+
width: 100%;
|
|
31
|
+
display: flex;
|
|
32
|
+
flex-direction: column;
|
|
33
|
+
box-sizing: border-box;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* cqmin = min(宽,高) 的 1%,换版式(如 1×2 → 2×3)时宽高都参与缩放。
|
|
37
|
+
*/
|
|
38
|
+
font-size: clamp(0.625rem, 4cqmin + 0.33rem, 2rem);
|
|
39
|
+
|
|
40
|
+
--rw-tier1: 2.55em;
|
|
41
|
+
/* 二档:时段/联系人等;与一档保持级差 */
|
|
42
|
+
--rw-tier2: 1.9em;
|
|
43
|
+
--rw-tier3: 0.96em;
|
|
44
|
+
--rw-status: 0.9em;
|
|
45
|
+
--rw-next-solo: 1.68em;
|
|
46
|
+
|
|
47
|
+
--rw-gap: clamp(6px, 1.2vw + 0.6vh, 14px);
|
|
48
|
+
--rw-pad: clamp(8px, 1.8vw + 0.5vh, 16px);
|
|
49
|
+
--rw-inner-pad: clamp(10px, 2vw + 0.6vh, 20px);
|
|
50
|
+
--rw-block-radius: clamp(6px, 1.5vw, 22px);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.pisell-resource-wall-card__grid {
|
|
54
|
+
flex: 1;
|
|
55
|
+
display: grid;
|
|
56
|
+
min-width: 0;
|
|
57
|
+
width: 100%;
|
|
58
|
+
box-sizing: border-box;
|
|
59
|
+
min-height: 0;
|
|
60
|
+
height: 100%;
|
|
61
|
+
gap: var(--rw-gap);
|
|
62
|
+
padding: var(--rw-pad);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** 头 : 当前 : 下一 = 4:11:5 → Next 25%(此前 2:5:3 为 30%) */
|
|
66
|
+
.pisell-resource-wall-card__grid--with-next {
|
|
67
|
+
grid-template-rows: minmax(0, 4fr) minmax(0, 11fr) minmax(0, 5fr);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.pisell-resource-wall-card__grid--no-next {
|
|
71
|
+
grid-template-rows: minmax(0, 1fr) minmax(0, 4fr);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.pisell-resource-wall-card__header {
|
|
75
|
+
display: flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
justify-content: space-between;
|
|
78
|
+
gap: 12px;
|
|
79
|
+
min-width: 0;
|
|
80
|
+
width: 100%;
|
|
81
|
+
max-width: 100%;
|
|
82
|
+
box-sizing: border-box;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.pisell-resource-wall-card__header-main {
|
|
86
|
+
flex: 1 1 0;
|
|
87
|
+
min-width: 0;
|
|
88
|
+
display: flex;
|
|
89
|
+
flex-direction: column;
|
|
90
|
+
gap: 0.22em;
|
|
91
|
+
justify-content: center;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.pisell-resource-wall-card__header-name {
|
|
95
|
+
min-width: 0;
|
|
96
|
+
overflow: hidden;
|
|
97
|
+
text-overflow: ellipsis;
|
|
98
|
+
white-space: nowrap;
|
|
99
|
+
font-weight: 700;
|
|
100
|
+
line-height: 1.08;
|
|
101
|
+
font-size: var(--rw-tier1);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** 左上角资源类型:与面板内时段/联系人同级字阶(--rw-tier2) */
|
|
105
|
+
.pisell-resource-wall-card__header-type {
|
|
106
|
+
flex-shrink: 0;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.pisell-resource-wall-card__header-status {
|
|
110
|
+
flex: 0 1 auto;
|
|
111
|
+
min-width: 0;
|
|
112
|
+
max-width: min(52%, 100%);
|
|
113
|
+
overflow: hidden;
|
|
114
|
+
text-overflow: ellipsis;
|
|
115
|
+
white-space: nowrap;
|
|
116
|
+
font-weight: 700;
|
|
117
|
+
line-height: 1.1;
|
|
118
|
+
/** 与面板内时段/联系人同字阶(tier2) */
|
|
119
|
+
font-size: var(--rw-tier2);
|
|
120
|
+
padding: 0.2em 0.55em;
|
|
121
|
+
border-radius: 999px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.pisell-resource-wall-card__header-status--empty {
|
|
125
|
+
border: 1px solid rgba(148, 163, 184, 0.42);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.pisell-resource-wall-card__header-status--reserved {
|
|
129
|
+
border: 1px solid rgba(111, 74, 230, 0.35);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** 迟到:accent 卡上红色描边 + 红字,与一档 late 强调色对齐 */
|
|
133
|
+
.pisell-resource-wall-card__header-status--late {
|
|
134
|
+
border: 1px solid rgba(239, 68, 68, 0.45);
|
|
135
|
+
background: rgba(239, 68, 68, 0.08);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.pisell-resource-wall-card__header-status--occupied {
|
|
139
|
+
border: 1px solid rgba(255, 255, 255, 0.22);
|
|
140
|
+
background: rgba(255, 255, 255, 0.12);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/** 超时:占用卡上红色实心胶囊(背景由内联 style 覆盖为 expiredTone.color) */
|
|
144
|
+
.pisell-resource-wall-card__header-status--expired {
|
|
145
|
+
border: 1px solid rgba(255, 255, 255, 0.28);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.pisell-resource-wall-card__panel {
|
|
149
|
+
border-width: 1px;
|
|
150
|
+
border-style: solid;
|
|
151
|
+
border-radius: var(--rw-block-radius);
|
|
152
|
+
padding: var(--rw-inner-pad);
|
|
153
|
+
min-width: 0;
|
|
154
|
+
min-height: 0;
|
|
155
|
+
display: flex;
|
|
156
|
+
flex-direction: column;
|
|
157
|
+
gap: calc(var(--rw-gap) * 0.65);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/** 占用卡「当前预约」二档:略加粗,无描边/阴影 */
|
|
161
|
+
.pisell-resource-wall-card__panel--occupied-current .pisell-resource-wall-card__tier2 {
|
|
162
|
+
font-weight: 700;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/** 预约中(浅紫底):Current / 时段 / 联系人用深色主字色,与时钟区标题同级对比度 */
|
|
166
|
+
.pisell-resource-wall-card__panel--reserved-current .pisell-resource-wall-card__tier2 {
|
|
167
|
+
font-weight: 700;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.pisell-resource-wall-card__section-title--reserved-current {
|
|
171
|
+
opacity: 1;
|
|
172
|
+
font-weight: 700;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/** 预约中:Next 小标题与联系人/时段 — 不降透明度、字重与当前区对齐 */
|
|
176
|
+
.pisell-resource-wall-card__section-title--reserved-next {
|
|
177
|
+
opacity: 1;
|
|
178
|
+
font-weight: 700;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.pisell-resource-wall-card__panel--reserved-next .pisell-resource-wall-card__tier2,
|
|
182
|
+
.pisell-resource-wall-card__panel--reserved-next .pisell-resource-wall-card__next-time-solo {
|
|
183
|
+
font-weight: 700;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.pisell-resource-wall-card__section-title {
|
|
187
|
+
flex-shrink: 0;
|
|
188
|
+
min-width: 0;
|
|
189
|
+
width: 100%;
|
|
190
|
+
overflow: hidden;
|
|
191
|
+
text-overflow: ellipsis;
|
|
192
|
+
white-space: nowrap;
|
|
193
|
+
font-weight: 600;
|
|
194
|
+
font-size: var(--rw-tier3);
|
|
195
|
+
line-height: 1.25;
|
|
196
|
+
letter-spacing: 0.03em;
|
|
197
|
+
opacity: 0.92;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** 占用卡「当前预约」小标题:不叠 section-title 默认透明度 */
|
|
201
|
+
.pisell-resource-wall-card__section-title--occupied-current {
|
|
202
|
+
opacity: 1;
|
|
203
|
+
font-weight: 700;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.pisell-resource-wall-card__current-body {
|
|
207
|
+
flex: 1;
|
|
208
|
+
min-width: 0;
|
|
209
|
+
min-height: 0;
|
|
210
|
+
display: flex;
|
|
211
|
+
flex-direction: column;
|
|
212
|
+
gap: var(--rw-gap);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/** 主文案占满上方;进度条与跑马灯放在 current-footer */
|
|
216
|
+
.pisell-resource-wall-card__current-main {
|
|
217
|
+
flex: 1 1 auto;
|
|
218
|
+
min-width: 0;
|
|
219
|
+
min-height: 0;
|
|
220
|
+
display: flex;
|
|
221
|
+
flex-direction: column;
|
|
222
|
+
gap: var(--rw-gap);
|
|
223
|
+
justify-content: flex-start;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.pisell-resource-wall-card__current-footer {
|
|
227
|
+
flex-shrink: 0;
|
|
228
|
+
min-width: 0;
|
|
229
|
+
display: flex;
|
|
230
|
+
flex-direction: column;
|
|
231
|
+
gap: calc(var(--rw-gap) * 0.75);
|
|
232
|
+
margin-top: auto;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/** 状态/倒计时等与进度条同一贴底带,叠在进度条正上方 */
|
|
236
|
+
.pisell-resource-wall-card__current-footer-emphasis {
|
|
237
|
+
min-width: 0;
|
|
238
|
+
width: 100%;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.pisell-resource-wall-card__tier1 {
|
|
242
|
+
min-width: 0;
|
|
243
|
+
max-width: 100%;
|
|
244
|
+
font-weight: 700;
|
|
245
|
+
letter-spacing: -0.02em;
|
|
246
|
+
line-height: 1.08;
|
|
247
|
+
font-size: var(--rw-tier1);
|
|
248
|
+
white-space: nowrap;
|
|
249
|
+
overflow: hidden;
|
|
250
|
+
text-overflow: ellipsis;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.pisell-resource-wall-card__tier2 {
|
|
254
|
+
min-width: 0;
|
|
255
|
+
max-width: 100%;
|
|
256
|
+
font-weight: 600;
|
|
257
|
+
letter-spacing: -0.02em;
|
|
258
|
+
line-height: 1.15;
|
|
259
|
+
font-size: var(--rw-tier2);
|
|
260
|
+
overflow: hidden;
|
|
261
|
+
text-overflow: ellipsis;
|
|
262
|
+
white-space: nowrap;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.pisell-resource-wall-card__tier3 {
|
|
266
|
+
flex-shrink: 0;
|
|
267
|
+
min-width: 0;
|
|
268
|
+
max-width: 100%;
|
|
269
|
+
overflow: hidden;
|
|
270
|
+
text-overflow: ellipsis;
|
|
271
|
+
white-space: nowrap;
|
|
272
|
+
font-weight: 600;
|
|
273
|
+
line-height: 1.25;
|
|
274
|
+
font-size: var(--rw-tier3);
|
|
275
|
+
min-height: 0;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/** 快结束跑马灯:底色与同一列 countdown 强调色同色相(primaryEmphasisColor);字色白 */
|
|
279
|
+
.pisell-resource-wall-card__marquee-shell {
|
|
280
|
+
min-width: 0;
|
|
281
|
+
width: 100%;
|
|
282
|
+
max-width: 100%;
|
|
283
|
+
box-sizing: border-box;
|
|
284
|
+
border-radius: 9999px;
|
|
285
|
+
padding: 0.42em 0.95em;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.pisell-resource-wall-card__marquee-shell > .pisell-resource-wall-card__tier3 {
|
|
289
|
+
min-width: 0;
|
|
290
|
+
width: 100%;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.pisell-resource-wall-card__progress-wrap {
|
|
294
|
+
flex-shrink: 0;
|
|
295
|
+
border-radius: 9999px;
|
|
296
|
+
overflow: hidden;
|
|
297
|
+
height: clamp(4px, 0.42em, 12px);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.pisell-resource-wall-card__progress-fill {
|
|
301
|
+
height: 100%;
|
|
302
|
+
border-radius: 9999px;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.pisell-resource-wall-card__next-stack {
|
|
306
|
+
display: flex;
|
|
307
|
+
flex-direction: column;
|
|
308
|
+
gap: calc(var(--rw-gap) * 0.75);
|
|
309
|
+
justify-content: center;
|
|
310
|
+
min-width: 0;
|
|
311
|
+
min-height: 0;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/** 联系人 + 时段两行并存:略缩字级与间距,减轻省略与裁切 */
|
|
315
|
+
.pisell-resource-wall-card__next-stack--both-lines {
|
|
316
|
+
gap: calc(var(--rw-gap) * 0.55);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.pisell-resource-wall-card__next-stack--both-lines .pisell-resource-wall-card__tier2 {
|
|
320
|
+
font-size: calc(var(--rw-tier2) * 0.82);
|
|
321
|
+
line-height: 1.12;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/** 下一预约仅有时间、无联系人时:相对卡片基准介于二档与一档之间 */
|
|
325
|
+
.pisell-resource-wall-card__next-time-solo {
|
|
326
|
+
min-width: 0;
|
|
327
|
+
max-width: 100%;
|
|
328
|
+
font-weight: 700;
|
|
329
|
+
letter-spacing: -0.02em;
|
|
330
|
+
line-height: 1.1;
|
|
331
|
+
font-size: var(--rw-next-solo);
|
|
332
|
+
overflow: hidden;
|
|
333
|
+
text-overflow: ellipsis;
|
|
334
|
+
white-space: nowrap;
|
|
335
|
+
}
|
package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.d.ts
CHANGED
|
@@ -1,37 +1,53 @@
|
|
|
1
1
|
import type { RecordBoardResourceWallCardModel } from '../../types';
|
|
2
2
|
import { type VenueWallStatusKey, type VenueWallStatusTone } from './venueWallUtils';
|
|
3
|
+
/** 与平面图 empty / reserved / occupied 对齐的三种大屏展示态 */
|
|
4
|
+
export declare type VenueWallFloorLikeStatus = 'empty' | 'reserved' | 'occupied';
|
|
5
|
+
/**
|
|
6
|
+
* 标题胶囊 5 态:在 floorLike 三大类基础上,把 `late` 与 `expired` 拆出独立色与文案,
|
|
7
|
+
* 与当前区一档强调色(红)对齐。
|
|
8
|
+
*/
|
|
9
|
+
export declare type VenueWallHeaderStatusKey = 'empty' | 'reserved' | 'late' | 'occupied' | 'expired';
|
|
3
10
|
/** 由 {@link buildVenueWallCardPresentation} 产出,供 VenueWallCard 渲染层使用 */
|
|
4
11
|
export declare type VenueWallCardPresentation = {
|
|
5
12
|
statusKey: VenueWallStatusKey;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
floorLikeStatus: VenueWallFloorLikeStatus;
|
|
14
|
+
/** 标题栏右侧 5 态键,决定胶囊样式(描边/底色变体) */
|
|
15
|
+
headerStatusKey: VenueWallHeaderStatusKey;
|
|
16
|
+
/** 标题栏右侧:空闲 / 预约中 / 迟到 / 占用中 / 超时 */
|
|
17
|
+
headerStatusLabel: string;
|
|
18
|
+
/** 标题胶囊主色(迟到/超时为红,与一档强调色对齐) */
|
|
19
|
+
headerStatusColor: string;
|
|
20
|
+
/** 紫色渐变占用卡 vs 浅色强调卡 */
|
|
21
|
+
cardVariant: 'occupied' | 'accent';
|
|
13
22
|
mainColor: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
23
|
+
subColor: string;
|
|
24
|
+
surfaceAccentColor: string;
|
|
25
|
+
/** 当前区一档:剩余时间 / 距开始 / 结束提示等(非布局「块」) */
|
|
26
|
+
primaryEmphasisLine: string;
|
|
27
|
+
primaryEmphasisColor: string;
|
|
28
|
+
/** 二档:预约时段文案 */
|
|
29
|
+
timeRangeLine: string;
|
|
30
|
+
/** 二档:联系人(「Available to Book」等占位已剥离) */
|
|
31
|
+
contactLine: string;
|
|
32
|
+
showProgress: boolean;
|
|
19
33
|
progress: number;
|
|
20
34
|
progressColor: string;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
35
|
+
showEndingSoonMarquee: boolean;
|
|
36
|
+
marqueeText: string;
|
|
37
|
+
marqueeColor: string;
|
|
38
|
+
/** 跑马灯胶囊底:与 {@link primaryEmphasisColor} 同一强调色(半透明叠底) */
|
|
39
|
+
marqueeShellBackground: string;
|
|
26
40
|
};
|
|
27
41
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
42
|
+
* 纯函数:三态大屏文案 + 进度 + 条件跑马灯。
|
|
43
|
+
* 右上角标题栏仅保留 empty/reserved/occupied;迟到/超时只出现在当前区一档主提示。
|
|
30
44
|
*/
|
|
31
45
|
export declare function buildVenueWallCardPresentation(args: {
|
|
32
46
|
card: RecordBoardResourceWallCardModel;
|
|
33
47
|
toneMap: Record<VenueWallStatusKey, VenueWallStatusTone>;
|
|
48
|
+
wallNowMs: number;
|
|
34
49
|
liveRemainingMin: number;
|
|
50
|
+
liveRemainingPreciseMin: number;
|
|
35
51
|
liveStartsInMin: number;
|
|
36
52
|
liveLateMin: number;
|
|
37
53
|
boardingSoonBeforeMin: number;
|
package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.js
CHANGED
|
@@ -5,110 +5,190 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
5
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
6
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
7
|
import { getText } from "../../../../locales";
|
|
8
|
-
import {
|
|
8
|
+
import { clamp, deriveVenueWallStatus, formatDurationHM, formatVenueWallCountdown } from "./venueWallUtils";
|
|
9
|
+
|
|
10
|
+
/** 与平面图 empty / reserved / occupied 对齐的三种大屏展示态 */
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 标题胶囊 5 态:在 floorLike 三大类基础上,把 `late` 与 `expired` 拆出独立色与文案,
|
|
14
|
+
* 与当前区一档强调色(红)对齐。
|
|
15
|
+
*/
|
|
9
16
|
|
|
10
17
|
/** 由 {@link buildVenueWallCardPresentation} 产出,供 VenueWallCard 渲染层使用 */
|
|
11
18
|
|
|
19
|
+
function resolveFloorLikeStatus(statusKey) {
|
|
20
|
+
if (statusKey === 'available') return 'empty';
|
|
21
|
+
if (statusKey === 'boardingSoon' || statusKey === 'late') return 'reserved';
|
|
22
|
+
return 'occupied';
|
|
23
|
+
}
|
|
24
|
+
function resolveHeaderStatusKey(statusKey) {
|
|
25
|
+
if (statusKey === 'available') return 'empty';
|
|
26
|
+
if (statusKey === 'boardingSoon') return 'reserved';
|
|
27
|
+
if (statusKey === 'late') return 'late';
|
|
28
|
+
if (statusKey === 'expired') return 'expired';
|
|
29
|
+
return 'occupied';
|
|
30
|
+
}
|
|
31
|
+
function headerLabelForKey(key) {
|
|
32
|
+
switch (key) {
|
|
33
|
+
case 'empty':
|
|
34
|
+
/** 空闲态:右上胶囊与当前区文案统一为「Not in use」 */
|
|
35
|
+
return getText('pisell-resource-wall-card-current-not-in-use');
|
|
36
|
+
case 'reserved':
|
|
37
|
+
return getText('pisell-resource-wall-floor-status-reserved');
|
|
38
|
+
case 'late':
|
|
39
|
+
return getText('pisell-resource-wall-floor-status-late');
|
|
40
|
+
case 'expired':
|
|
41
|
+
return getText('pisell-resource-wall-floor-status-expired');
|
|
42
|
+
default:
|
|
43
|
+
return getText('pisell-resource-wall-floor-status-occupied');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function sanitizeContact(booking) {
|
|
47
|
+
var _booking$trim;
|
|
48
|
+
var c = (_booking$trim = booking === null || booking === void 0 ? void 0 : booking.trim()) !== null && _booking$trim !== void 0 ? _booking$trim : '';
|
|
49
|
+
if (c === 'Available to Book') return '';
|
|
50
|
+
return c;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 占用中进度条:**已使用时间占比**(左空右满随进行而增长)。
|
|
55
|
+
* - 有场次起止:`elapsedMs / durationMs`
|
|
56
|
+
* - 无起止:仍以 60 分为近似总长,`(60 - 剩余精确分) / 60`
|
|
57
|
+
*/
|
|
58
|
+
function resolveInUseProgressPercent(args) {
|
|
59
|
+
var card = args.card,
|
|
60
|
+
wallNowMs = args.wallNowMs,
|
|
61
|
+
liveRemainingPreciseMin = args.liveRemainingPreciseMin;
|
|
62
|
+
var end = card.sessionEndMs;
|
|
63
|
+
var start = card.sessionStartMs;
|
|
64
|
+
if (end != null && start != null && Number.isFinite(end) && Number.isFinite(start) && end > start) {
|
|
65
|
+
var durationMs = end - start;
|
|
66
|
+
var elapsedMs = Math.min(Math.max(0, wallNowMs - start), durationMs);
|
|
67
|
+
return clamp(elapsedMs / durationMs * 100, 0, 100);
|
|
68
|
+
}
|
|
69
|
+
var denomMin = 60;
|
|
70
|
+
var elapsedPreciseMin = denomMin - liveRemainingPreciseMin;
|
|
71
|
+
return clamp(elapsedPreciseMin / denomMin * 100, 0, 100);
|
|
72
|
+
}
|
|
73
|
+
|
|
12
74
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
75
|
+
* 纯函数:三态大屏文案 + 进度 + 条件跑马灯。
|
|
76
|
+
* 右上角标题栏仅保留 empty/reserved/occupied;迟到/超时只出现在当前区一档主提示。
|
|
15
77
|
*/
|
|
16
78
|
export function buildVenueWallCardPresentation(args) {
|
|
17
|
-
var _toneMap$statusKey,
|
|
79
|
+
var _toneMap$statusKey, _toneMap$late, _toneMap$expired, _card$currentTime;
|
|
18
80
|
var card = args.card,
|
|
19
81
|
toneMap = args.toneMap,
|
|
82
|
+
wallNowMs = args.wallNowMs,
|
|
20
83
|
liveRemainingMin = args.liveRemainingMin,
|
|
84
|
+
liveRemainingPreciseMin = args.liveRemainingPreciseMin,
|
|
21
85
|
liveStartsInMin = args.liveStartsInMin,
|
|
22
86
|
liveLateMin = args.liveLateMin,
|
|
23
87
|
boardingSoonBeforeMin = args.boardingSoonBeforeMin,
|
|
24
88
|
idleMain = args.idleMain,
|
|
25
89
|
idleSub = args.idleSub,
|
|
26
|
-
occupiedCardColor = args.occupiedCardColor,
|
|
27
90
|
availableCardColor = args.availableCardColor;
|
|
28
91
|
var statusKey = deriveVenueWallStatus(_objectSpread(_objectSpread({}, card), {}, {
|
|
29
92
|
remainingMin: liveRemainingMin
|
|
30
93
|
}));
|
|
94
|
+
var floorLikeStatus = resolveFloorLikeStatus(statusKey);
|
|
95
|
+
var headerStatusKey = resolveHeaderStatusKey(statusKey);
|
|
96
|
+
var headerStatusLabel = headerLabelForKey(headerStatusKey);
|
|
31
97
|
var tone = (_toneMap$statusKey = toneMap[statusKey]) !== null && _toneMap$statusKey !== void 0 ? _toneMap$statusKey : toneMap.inUse;
|
|
32
|
-
var
|
|
33
|
-
var
|
|
34
|
-
var
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var
|
|
42
|
-
var
|
|
43
|
-
var
|
|
44
|
-
var
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
var rightTag = tone.label;
|
|
48
|
-
var rightTagColor = isOccupied ? '#ffffff' : tone.color;
|
|
49
|
-
var rightTagBg = isOccupied ? statusKey === 'inUse' ? 'rgba(255,255,255,0.14)' : tone.color : alphaColor(tone.color, 0.12);
|
|
50
|
-
var rightTagBorder = isOccupied ? 'rgba(255,255,255,0.18)' : alphaColor(tone.color, 0.35);
|
|
51
|
-
if (statusKey === 'boardingSoon') {
|
|
52
|
-
var _card$currentBooking2;
|
|
53
|
-
heroText = getText('pisell-resource-wall-card-starts-in').replace('{n}', String(liveStartsInMin));
|
|
54
|
-
heroColor = toneMap.boardingSoon.color;
|
|
55
|
-
noteText = toneMap.boardingSoon.note;
|
|
56
|
-
noteTextColor = toneMap.boardingSoon.color;
|
|
57
|
-
noteBg = alphaColor(toneMap.boardingSoon.color, 0.18);
|
|
58
|
-
currentLabel = getText('pisell-resource-wall-card-label-next');
|
|
59
|
-
currentName = (_card$currentBooking2 = card.currentBooking) !== null && _card$currentBooking2 !== void 0 ? _card$currentBooking2 : '';
|
|
60
|
-
currentNameColor = toneMap.boardingSoon.color;
|
|
61
|
-
nextNameColor = toneMap.boardingSoon.color;
|
|
62
|
-
progress = clamp((boardingSoonBeforeMin - liveStartsInMin) / boardingSoonBeforeMin * 100, 0, 100);
|
|
63
|
-
progressColor = toneMap.boardingSoon.color;
|
|
64
|
-
rightTag = toneMap.boardingSoon.label;
|
|
65
|
-
rightTagColor = toneMap.boardingSoon.color;
|
|
66
|
-
rightTagBg = alphaColor(toneMap.boardingSoon.color, 0.12);
|
|
67
|
-
rightTagBorder = alphaColor(toneMap.boardingSoon.color, 0.35);
|
|
68
|
-
}
|
|
69
|
-
if (statusKey === 'late') {
|
|
70
|
-
var _card$currentBooking3;
|
|
71
|
-
heroText = getText('pisell-resource-wall-card-late').replace('{n}', String(liveLateMin));
|
|
72
|
-
heroColor = 'rgb(239, 68, 68)';
|
|
73
|
-
noteText = toneMap.late.note;
|
|
74
|
-
noteTextColor = toneMap.available.color;
|
|
75
|
-
noteBg = toneMap.available.noteBg;
|
|
76
|
-
currentLabel = getText('pisell-resource-wall-card-label-next');
|
|
77
|
-
currentName = (_card$currentBooking3 = card.currentBooking) !== null && _card$currentBooking3 !== void 0 ? _card$currentBooking3 : '';
|
|
78
|
-
currentNameColor = toneMap.available.color;
|
|
79
|
-
nextNameColor = toneMap.available.color;
|
|
80
|
-
progress = 100;
|
|
81
|
-
progressColor = toneMap.available.color;
|
|
82
|
-
rightTag = toneMap.late.label;
|
|
83
|
-
rightTagColor = toneMap.available.color;
|
|
84
|
-
rightTagBg = alphaColor(toneMap.available.color, 0.12);
|
|
85
|
-
rightTagBorder = alphaColor(toneMap.available.color, 0.35);
|
|
98
|
+
var endingSoonTone = toneMap.endingSoon;
|
|
99
|
+
var boardingTone = toneMap.boardingSoon;
|
|
100
|
+
var lateTone = (_toneMap$late = toneMap.late) !== null && _toneMap$late !== void 0 ? _toneMap$late : boardingTone;
|
|
101
|
+
var expiredTone = (_toneMap$expired = toneMap.expired) !== null && _toneMap$expired !== void 0 ? _toneMap$expired : endingSoonTone;
|
|
102
|
+
var cardVariant = floorLikeStatus === 'occupied' ? 'occupied' : 'accent';
|
|
103
|
+
var mainOnOccupied = '#ffffff';
|
|
104
|
+
/**
|
|
105
|
+
* 占用卡内次级文案默认色(下一预约区等);「当前预约」标题/时段/联系人在 VenueWallCard 内单独铺纯白 + 阴影。
|
|
106
|
+
*/
|
|
107
|
+
var subOnOccupied = 'rgba(255,255,255,0.88)';
|
|
108
|
+
var mainColor = cardVariant === 'occupied' ? mainOnOccupied : idleMain;
|
|
109
|
+
var subColor = cardVariant === 'occupied' ? subOnOccupied : idleSub;
|
|
110
|
+
var surfaceAccentColor = availableCardColor;
|
|
111
|
+
if (floorLikeStatus === 'reserved') {
|
|
112
|
+
surfaceAccentColor = boardingTone.color;
|
|
86
113
|
}
|
|
87
|
-
|
|
88
|
-
|
|
114
|
+
var timeRangeLine = ((_card$currentTime = card.currentTime) !== null && _card$currentTime !== void 0 ? _card$currentTime : '').trim();
|
|
115
|
+
var contactLine = sanitizeContact(card.currentBooking);
|
|
116
|
+
var primaryEmphasisLine = '';
|
|
117
|
+
var primaryEmphasisColor = mainColor;
|
|
118
|
+
var progress = 0;
|
|
119
|
+
var progressColor = mainOnOccupied;
|
|
120
|
+
var showProgress = false;
|
|
121
|
+
var rmDisplay = Math.max(0, liveRemainingMin);
|
|
122
|
+
var endingWindowMin = Math.max(1, boardingSoonBeforeMin);
|
|
123
|
+
var inEndingSoonWindow = floorLikeStatus === 'occupied' && liveRemainingMin >= 0 && liveRemainingMin <= endingWindowMin;
|
|
124
|
+
|
|
125
|
+
/** 临近结束(含剩余 0)时跑马灯;已过期/负剩余不展示 */
|
|
126
|
+
var showEndingSoonMarquee = floorLikeStatus === 'occupied' && inEndingSoonWindow && statusKey !== 'expired';
|
|
127
|
+
if (statusKey === 'available') {
|
|
128
|
+
primaryEmphasisLine = '';
|
|
129
|
+
primaryEmphasisColor = mainColor;
|
|
130
|
+
} else if (statusKey === 'boardingSoon') {
|
|
131
|
+
/** 仅「占用中」展示进度条;预约中仅文案与色 */
|
|
132
|
+
primaryEmphasisLine = getText('pisell-resource-wall-card-starts-in').replace('{n}', formatDurationHM(liveStartsInMin));
|
|
133
|
+
primaryEmphasisColor = boardingTone.color;
|
|
134
|
+
} else if (statusKey === 'late') {
|
|
135
|
+
primaryEmphasisLine = getText('pisell-resource-wall-card-late').replace('{n}', formatDurationHM(Math.max(0, Math.floor(liveLateMin))));
|
|
136
|
+
primaryEmphasisColor = lateTone.color;
|
|
137
|
+
} else if (statusKey === 'inUse' || statusKey === 'endingSoon' || statusKey === 'expired') {
|
|
138
|
+
showProgress = true;
|
|
139
|
+
var sessionEndedNoOvertimeCopy = statusKey === 'expired' || liveRemainingMin < 0;
|
|
140
|
+
if (sessionEndedNoOvertimeCopy) {
|
|
141
|
+
/** 已结束/超时:进度条满格表示时段已用尽 */
|
|
142
|
+
progress = 100;
|
|
143
|
+
progressColor = expiredTone.color;
|
|
144
|
+
if (liveRemainingMin < 0) {
|
|
145
|
+
primaryEmphasisLine = formatVenueWallCountdown(liveRemainingMin);
|
|
146
|
+
} else {
|
|
147
|
+
primaryEmphasisLine = getText('pisell-resource-wall-countdown-zero-overtime');
|
|
148
|
+
}
|
|
149
|
+
primaryEmphasisColor = expiredTone.color;
|
|
150
|
+
} else {
|
|
151
|
+
progress = resolveInUseProgressPercent({
|
|
152
|
+
card: card,
|
|
153
|
+
wallNowMs: wallNowMs,
|
|
154
|
+
liveRemainingPreciseMin: liveRemainingPreciseMin
|
|
155
|
+
});
|
|
156
|
+
progressColor = statusKey === 'endingSoon' || inEndingSoonWindow ? endingSoonTone.color : mainOnOccupied;
|
|
157
|
+
primaryEmphasisLine = formatVenueWallCountdown(rmDisplay);
|
|
158
|
+
primaryEmphasisColor = statusKey === 'endingSoon' || inEndingSoonWindow ? endingSoonTone.color : mainOnOccupied;
|
|
159
|
+
}
|
|
89
160
|
}
|
|
90
|
-
var
|
|
161
|
+
var marqueeText = showEndingSoonMarquee ? getText('pisell-resource-wall-marquee-ending-soon') : '';
|
|
162
|
+
|
|
163
|
+
/** 跑马灯文案固定白色 */
|
|
164
|
+
var marqueeColor = showEndingSoonMarquee ? '#ffffff' : cardVariant === 'occupied' ? 'rgba(255,255,255,0.92)' : endingSoonTone.color;
|
|
165
|
+
|
|
166
|
+
/** 与当前区一档状态字同色相叠底(快结束时与倒计时一致) */
|
|
167
|
+
var marqueeShellBackground = showEndingSoonMarquee ? primaryEmphasisColor : 'transparent';
|
|
168
|
+
|
|
169
|
+
/** 标题胶囊主色:迟到/超时取各自 tone(红),其余沿用既有规则(empty=avail、reserved=boarding、occupied=白) */
|
|
170
|
+
var headerStatusColor;
|
|
171
|
+
if (headerStatusKey === 'empty') headerStatusColor = availableCardColor;else if (headerStatusKey === 'reserved') headerStatusColor = boardingTone.color;else if (headerStatusKey === 'late') headerStatusColor = lateTone.color;else if (headerStatusKey === 'expired') headerStatusColor = expiredTone.color;else headerStatusColor = '#ffffff';
|
|
91
172
|
return {
|
|
92
173
|
statusKey: statusKey,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
noteBg: noteBg,
|
|
99
|
-
subColor: subColor,
|
|
174
|
+
floorLikeStatus: floorLikeStatus,
|
|
175
|
+
headerStatusKey: headerStatusKey,
|
|
176
|
+
headerStatusLabel: headerStatusLabel,
|
|
177
|
+
headerStatusColor: headerStatusColor,
|
|
178
|
+
cardVariant: cardVariant,
|
|
100
179
|
mainColor: mainColor,
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
180
|
+
subColor: subColor,
|
|
181
|
+
surfaceAccentColor: surfaceAccentColor,
|
|
182
|
+
primaryEmphasisLine: primaryEmphasisLine,
|
|
183
|
+
primaryEmphasisColor: primaryEmphasisColor,
|
|
184
|
+
timeRangeLine: timeRangeLine,
|
|
185
|
+
contactLine: contactLine,
|
|
186
|
+
showProgress: showProgress,
|
|
106
187
|
progress: progress,
|
|
107
188
|
progressColor: progressColor,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
surfaceAccentColor: surfaceAccentColor
|
|
189
|
+
showEndingSoonMarquee: showEndingSoonMarquee,
|
|
190
|
+
marqueeText: marqueeText,
|
|
191
|
+
marqueeColor: marqueeColor,
|
|
192
|
+
marqueeShellBackground: marqueeShellBackground
|
|
113
193
|
};
|
|
114
194
|
}
|