Skip to content

Commit da68db7

Browse files
zcg1991rdkmaster
authored andcommitted
[优化] 添加三个时间粒度,以设置不带日期的时间
1 parent 24e4ede commit da68db7

File tree

8 files changed

+69
-53
lines changed

8 files changed

+69
-53
lines changed

src/app/demo/pc/range-time/gr/demo.component.html

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44

55

66
<!-- start to learn the demo from here -->
7-
<h4>Gr</h4>
7+
<h4>粒度 Gr</h4>
88

9-
Gr : <jigsaw-tile trackItemBy="label" [(selectedItems)]="gr" [multipleSelect]="false">
10-
<jigsaw-tile-option *ngFor="let item of datas" [value]="item">{{item.label}}</jigsaw-tile-option>
11-
</jigsaw-tile><br>
9+
<p>如下粒度(Gr)值支持日期和时间同时选择:</p>
10+
<jigsaw-button-bar [data]="['second','minute','hour','date','week','month']" [(selectedItems)]="gr">
11+
</jigsaw-button-bar>
1212

13-
<jigsaw-range-time [(beginDate)]="beginDate" [gr]="gr[0].label" [(endDate)]="endDate" ></jigsaw-range-time><br>
13+
<br><br>
1414

15-
<div *ngIf="gr[0].label!='week'">beginDate : {{beginDate}} endDate:{{endDate}}</div>
16-
<div *ngIf="gr[0].label=='week'">beginDate : {{beginDate | json}} endDate:{{endDate | json}}</div>
15+
<jigsaw-range-time [(beginDate)]="beginDate" [gr]="gr[0]" [(endDate)]="endDate" ></jigsaw-range-time><br>
16+
17+
<div *ngIf="gr[0] !='week'">beginDate : {{beginDate}} endDate:{{endDate}}</div>
18+
<div *ngIf="gr[0] =='week'">beginDate : {{beginDate | json}} endDate:{{endDate | json}}</div>

src/app/demo/pc/range-time/gr/demo.component.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,13 @@ export class RangeTimeGrComponent implements AfterContentInit {
2525

2626
endDate = "now";
2727

28-
datas = [{label: "second"}, {label: "minute"}, {label: "hour"},
29-
{label: "date"}, {label: "week"}, {label: "month"}];
30-
3128
gr:any;
3229

3330
constructor(public changeDetectorRef: ChangeDetectorRef) {
3431
}
3532

3633
ngAfterContentInit() {
37-
this.gr = [this.datas[3]];
34+
this.gr = [`date`];
3835
this.changeDetectorRef.detectChanges();
3936
}
4037

src/app/demo/pc/range-time/gr/demo.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import {NgModule} from "@angular/core";
22
import {CommonModule} from "@angular/common";
33
import {JigsawRangeTimeModule} from "jigsaw/pc-components/range-time/index";
4-
import {JigsawTileSelectModule} from "jigsaw/pc-components/list-and-tile/tile";
4+
import {JigsawButtonBarModule} from "jigsaw/pc-components/list-and-tile/button-bar";
55
import {JigsawDemoDescriptionModule} from "app/demo-description/demo-description";
66
import {RangeTimeGrComponent} from "./demo.component";
77

88
@NgModule({
99
declarations: [RangeTimeGrComponent],
1010
exports: [RangeTimeGrComponent],
11-
imports: [JigsawRangeTimeModule, JigsawTileSelectModule, CommonModule, JigsawDemoDescriptionModule]
11+
imports: [JigsawRangeTimeModule, CommonModule, JigsawDemoDescriptionModule, JigsawButtonBarModule]
1212
})
1313
export class RangeTimeGrModule {
1414

src/app/demo/pc/time/full/demo.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export class TimeFullComponent {
1515

1616
// demo-2
1717
date2 = 'now';
18-
grList = ['second', 'minute', 'hour', 'date', 'week', 'month'];
18+
grList = ['second', 'minute', 'hour', 'date', 'week', 'month', 'time', 'time_hour_minute', 'time_minute_second'];
1919
gr = this.grList[3];
2020

2121
// demo-3

src/app/demo/pc/time/gr/demo.component.html

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,18 @@
44

55

66
<!-- start to learn the demo from here -->
7-
<h4>Gr</h4>
7+
<h4>粒度 Gr</h4>
88

9-
Gr : <jigsaw-tile trackItemBy="label" [(selectedItems)]="gr" [multipleSelect]="false">
10-
<jigsaw-tile-option *ngFor="let item of datas" [value]="item">{{item.label}}</jigsaw-tile-option>
11-
</jigsaw-tile><br>
9+
<p>如下粒度(Gr)值支持日期和时间同时选择:</p>
10+
<jigsaw-button-bar [data]="['second','minute','hour','date','week','month']" [(selectedItems)]="gr">
11+
</jigsaw-button-bar>
12+
<br><br>
13+
<p>如下粒度(Gr)值仅支持时间选择:</p>
14+
<jigsaw-button-bar [data]="['time','time_hour_minute','time_minute_second']" [(selectedItems)]="gr">
15+
</jigsaw-button-bar>
1216

13-
<jigsaw-time [(date)]="date" [gr]="gr[0].label" (dateChange)="dateChange($event)"></jigsaw-time><br>
17+
<br><br>
18+
19+
<jigsaw-time [(date)]="date" [gr]="gr[0]" (dateChange)="dateChange($event)"></jigsaw-time><br>
1420

1521
<p>{{date | json}}</p>

src/app/demo/pc/time/gr/demo.component.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,7 @@ import {Component} from "@angular/core";
1717
export class TimeGrComponent {
1818
date = "now";
1919

20-
datas = [{label: "second"}, {label: "minute"}, {label: "hour"},
21-
{label: "date"}, {label: "week"}, {label: "month"}];
22-
23-
gr = [this.datas[2]];
20+
gr = ['date'];
2421

2522
dateChange($event) {
2623
console.log($event);

src/app/demo/pc/time/gr/demo.module.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import {NgModule} from '@angular/core';
22
import {CommonModule} from "@angular/common";
33
import {JigsawTimeModule} from "jigsaw/pc-components/time/index";
4-
import {JigsawTileSelectModule} from "jigsaw/pc-components/list-and-tile/tile";
5-
import {TimeGrComponent} from './demo.component';
4+
import {JigsawButtonBarModule} from "jigsaw/pc-components/list-and-tile/button-bar";
65
import {JigsawDemoDescriptionModule} from "app/demo-description/demo-description";
6+
import {TimeGrComponent} from './demo.component';
77

88
@NgModule({
9-
imports: [CommonModule, JigsawTimeModule, JigsawTileSelectModule, JigsawDemoDescriptionModule],
9+
imports: [CommonModule, JigsawTimeModule, JigsawDemoDescriptionModule, JigsawButtonBarModule],
1010
declarations: [TimeGrComponent],
1111
exports: [TimeGrComponent]
1212
})

src/jigsaw/common/service/time.service.ts

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {CommonUtils} from "../core/utils/common-utils";
55
* 时间粒度值
66
*/
77
export enum TimeGr {
8-
second, minute, hour, date, week, month
8+
second, minute, hour, date, week, month, time, time_hour_minute, time_minute_second
99
}
1010

1111
/**
@@ -37,14 +37,14 @@ export enum TimeWeekDayStart {
3737
* `TimeService`提供了许多有用的时间换算、格式化工具,当你有需要对时间进行运算时,可以参考它的api说。
3838
*/
3939
export enum TimeUnit {
40-
s,m,h,d,w,M,y
40+
s, m, h, d, w, M, y
4141
}
4242

4343
/**
4444
* 常用时间格式,`TimeService.format`可以支持任何格式,我们做这个枚举只是他们太常用了,使用这个枚举+IDE提示,你可以少敲很多次键盘。
4545
*/
4646
export enum TimeFormatters {
47-
yyyy_mm_dd_hh_mm_ss,yyyy_mm_dd_hh_mm,yyyy_mm_dd_hh,yyyy_mm_dd,yyyy_mm
47+
yyyy_mm_dd_hh_mm_ss, yyyy_mm_dd_hh_mm, yyyy_mm_dd_hh, yyyy_mm_dd, yyyy_mm, hh_mm_ss, hh_mm, mm_ss
4848
}
4949

5050
/**
@@ -64,26 +64,37 @@ export class TimeService {
6464
* @param {TimeGr} gr 目标粒度
6565
* @return {string} 符合粒度格式的时刻
6666
*/
67-
public static convertValue(value: WeekTime, gr:TimeGr): string {
67+
public static convertValue(value: WeekTime, gr: TimeGr): string {
6868
value = TimeService._handleWeekValue(value);
6969
value = TimeService.getFormatDate(<Time>value, gr);
7070
return <string>value;
7171
}
7272

73-
private static _handleWeekValue(newValue:WeekTime) : Time{
73+
private static _handleWeekValue(newValue: WeekTime): Time {
7474
if (newValue && typeof newValue["week"] === 'number') {
7575
return TimeService.getDateFromYearAndWeek(newValue["year"], newValue["week"])
7676
}
7777
return <Time>newValue;
7878
}
7979

80-
private static _timeFormatterConvert(formatter : TimeFormatters):string{
81-
switch (formatter){
82-
case TimeFormatters.yyyy_mm_dd_hh_mm_ss : return "YYYY-MM-DD HH:mm:ss";
83-
case TimeFormatters.yyyy_mm_dd_hh_mm : return "YYYY-MM-DD HH:mm";
84-
case TimeFormatters.yyyy_mm_dd_hh : return "YYYY-MM-DD HH";
85-
case TimeFormatters.yyyy_mm_dd : return "YYYY-MM-DD";
86-
case TimeFormatters.yyyy_mm : return "YYYY-MM";
80+
private static _timeFormatterConvert(formatter: TimeFormatters): string {
81+
switch (formatter) {
82+
case TimeFormatters.yyyy_mm_dd_hh_mm_ss :
83+
return "YYYY-MM-DD HH:mm:ss";
84+
case TimeFormatters.yyyy_mm_dd_hh_mm :
85+
return "YYYY-MM-DD HH:mm";
86+
case TimeFormatters.yyyy_mm_dd_hh :
87+
return "YYYY-MM-DD HH";
88+
case TimeFormatters.yyyy_mm_dd :
89+
return "YYYY-MM-DD";
90+
case TimeFormatters.yyyy_mm :
91+
return "YYYY-MM";
92+
case TimeFormatters.hh_mm_ss :
93+
return "HH:mm:ss";
94+
case TimeFormatters.hh_mm :
95+
return "HH:mm";
96+
case TimeFormatters.mm_ss :
97+
return "mm:ss";
8798
}
8899
}
89100

@@ -93,7 +104,10 @@ export class TimeService {
93104
[TimeGr.hour, TimeService._timeFormatterConvert(TimeFormatters.yyyy_mm_dd_hh)],
94105
[TimeGr.date, TimeService._timeFormatterConvert(TimeFormatters.yyyy_mm_dd)],
95106
[TimeGr.week, TimeService._timeFormatterConvert(TimeFormatters.yyyy_mm_dd)],
96-
[TimeGr.month, TimeService._timeFormatterConvert(TimeFormatters.yyyy_mm)]
107+
[TimeGr.month, TimeService._timeFormatterConvert(TimeFormatters.yyyy_mm)],
108+
[TimeGr.time, TimeService._timeFormatterConvert(TimeFormatters.hh_mm_ss)],
109+
[TimeGr.time_hour_minute, TimeService._timeFormatterConvert(TimeFormatters.hh_mm)],
110+
[TimeGr.time_minute_second, TimeService._timeFormatterConvert(TimeFormatters.mm_ss)],
97111
]);
98112

99113
/**
@@ -102,8 +116,8 @@ export class TimeService {
102116
* @param {TimeUnit} unit 时间单位枚举值
103117
* @return {string} 返回对应的字符串
104118
*/
105-
public static timeUnitConvert(unit : TimeUnit):string {
106-
return TimeUnit[unit];
119+
public static timeUnitConvert(unit: TimeUnit): string {
120+
return TimeUnit[unit];
107121
}
108122

109123
private static _timeUnitMap = new Map([
@@ -119,7 +133,7 @@ export class TimeService {
119133
private static _initMoment() {
120134
try {
121135
moment.suppressDeprecationWarnings = 1;
122-
} catch(e) {
136+
} catch (e) {
123137
}
124138
}
125139

@@ -136,7 +150,7 @@ export class TimeService {
136150
* @param {Time} time 给定的时刻值
137151
* @returns {boolean} 如果给定的值非字符串,则必然返回false。
138152
*/
139-
public static isMacro(time:Time): boolean {
153+
public static isMacro(time: Time): boolean {
140154
if (typeof time === 'string') {
141155
return !!time.match(/^\s*(now|today|yestoday|tomorrow)\s*([+-]\s*\d+\s*\w+)?\s*$/i);
142156
}
@@ -148,7 +162,7 @@ export class TimeService {
148162
* @param timeMacro
149163
* @returns {any}
150164
*/
151-
private static _convertBasicMacro(timeMacro:string): Date|string {
165+
private static _convertBasicMacro(timeMacro: string): Date | string {
152166
let date;
153167
switch (timeMacro) {
154168
case 'now':
@@ -168,7 +182,7 @@ export class TimeService {
168182
* @param {string|number} num 数量,为负数即为减法
169183
* @param {TimeUnit} unit 单位
170184
*/
171-
public static addDate(date:Time, num:string|number, unit:TimeUnit): Moment {
185+
public static addDate(date: Time, num: string | number, unit: TimeUnit): Moment {
172186
return moment(date).add(num, TimeService._timeUnitMap.get(unit));
173187
}
174188

@@ -190,7 +204,7 @@ export class TimeService {
190204
* @param {string | TimeFormatters} formatter
191205
*/
192206
public static format(date: Time, formatter: string | TimeFormatters): string {
193-
if(typeof formatter === "number") formatter = TimeService._timeFormatterConvert(formatter);
207+
if (typeof formatter === "number") formatter = TimeService._timeFormatterConvert(formatter);
194208
return moment(date).format(formatter);
195209
}
196210

@@ -200,7 +214,7 @@ export class TimeService {
200214
* @param {Time} date
201215
* @param {TimeGr} gr
202216
*/
203-
public static formatWithGr(date:Time, gr:TimeGr): string {
217+
public static formatWithGr(date: Time, gr: TimeGr): string {
204218
let format = TimeService.getFormatter(gr);
205219
return moment(date).format(format);
206220
}
@@ -230,7 +244,7 @@ export class TimeService {
230244
* @param date
231245
*
232246
*/
233-
public static getWeekYear(date:Time): number {
247+
public static getWeekYear(date: Time): number {
234248
return moment(date).weekYear();
235249
}
236250

@@ -240,7 +254,7 @@ export class TimeService {
240254
* @param {Time} date
241255
* @return {number}
242256
*/
243-
public static getWeekOfYear(date:Time): number {
257+
public static getWeekOfYear(date: Time): number {
244258
return moment(date).week();
245259
}
246260

@@ -250,7 +264,7 @@ export class TimeService {
250264
* @param {Time} date
251265
* @return {number}
252266
*/
253-
public static getYear(date:Time): number {
267+
public static getYear(date: Time): number {
254268
return moment(date).year();
255269
}
256270

@@ -260,7 +274,7 @@ export class TimeService {
260274
* @param {Time} date
261275
* @return {number}
262276
*/
263-
public static getMonth(date:Time): number {
277+
public static getMonth(date: Time): number {
264278
return moment(date).month() + 1;
265279
}
266280

@@ -270,15 +284,15 @@ export class TimeService {
270284
* @param {Time} date
271285
* @return {number}
272286
*/
273-
public static getDay(date:Time): number {
287+
public static getDay(date: Time): number {
274288
return moment(date).date();
275289
}
276290

277291
public static getDateFromYearAndWeek(year: number, week: number): Date {
278292
return moment().weekYear(year).week(week)
279293
}
280294

281-
public static getDate(str:Time, gr: TimeGr): Moment {
295+
public static getDate(str: Time, gr: TimeGr): Moment {
282296
return moment(str, TimeService.getFormatter(gr));
283297
}
284298

0 commit comments

Comments
 (0)