Skip to content

Commit 01098a1

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

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
@@ -7,7 +7,7 @@ declare const moment: any;
77
* 时间粒度值
88
*/
99
export enum TimeGr {
10-
second, minute, hour, date, week, month
10+
second, minute, hour, date, week, month, time, time_hour_minute, time_minute_second
1111
}
1212

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

4545
/**
4646
* 常用时间格式,`TimeService.format`可以支持任何格式,我们做这个枚举只是他们太常用了,使用这个枚举+IDE提示,你可以少敲很多次键盘。
4747
*/
4848
export enum TimeFormatters {
49-
yyyy_mm_dd_hh_mm_ss,yyyy_mm_dd_hh_mm,yyyy_mm_dd_hh,yyyy_mm_dd,yyyy_mm
49+
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
5050
}
5151

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

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

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

@@ -96,7 +107,10 @@ export class TimeService {
96107
[TimeGr.hour, TimeService._timeFormatterConvert(TimeFormatters.yyyy_mm_dd_hh)],
97108
[TimeGr.date, TimeService._timeFormatterConvert(TimeFormatters.yyyy_mm_dd)],
98109
[TimeGr.week, TimeService._timeFormatterConvert(TimeFormatters.yyyy_mm_dd)],
99-
[TimeGr.month, TimeService._timeFormatterConvert(TimeFormatters.yyyy_mm)]
110+
[TimeGr.month, TimeService._timeFormatterConvert(TimeFormatters.yyyy_mm)],
111+
[TimeGr.time, TimeService._timeFormatterConvert(TimeFormatters.hh_mm_ss)],
112+
[TimeGr.time_hour_minute, TimeService._timeFormatterConvert(TimeFormatters.hh_mm)],
113+
[TimeGr.time_minute_second, TimeService._timeFormatterConvert(TimeFormatters.mm_ss)],
100114
]);
101115

102116
/**
@@ -105,8 +119,8 @@ export class TimeService {
105119
* @param unit 时间单位枚举值
106120
* @return 返回对应的字符串
107121
*/
108-
public static timeUnitConvert(unit : TimeUnit):string {
109-
return TimeUnit[unit];
122+
public static timeUnitConvert(unit: TimeUnit): string {
123+
return TimeUnit[unit];
110124
}
111125

112126
private static _timeUnitMap = new Map([
@@ -122,7 +136,7 @@ export class TimeService {
122136
private static _initMoment() {
123137
try {
124138
moment.suppressDeprecationWarnings = 1;
125-
} catch(e) {
139+
} catch (e) {
126140
}
127141
}
128142

@@ -139,7 +153,7 @@ export class TimeService {
139153
* @param time 给定的时刻值
140154
* @returns 如果给定的值非字符串,则必然返回false。
141155
*/
142-
public static isMacro(time:Time): boolean {
156+
public static isMacro(time: Time): boolean {
143157
if (typeof time === 'string') {
144158
return !!time.match(/^\s*(now|today|yestoday|tomorrow)\s*([+-]\s*\d+\s*\w+)?\s*$/i);
145159
}
@@ -151,7 +165,7 @@ export class TimeService {
151165
* @param timeMacro
152166
*
153167
*/
154-
private static _convertBasicMacro(timeMacro:string): Date|string {
168+
private static _convertBasicMacro(timeMacro: string): Date | string {
155169
let date;
156170
switch (timeMacro) {
157171
case 'now':
@@ -171,7 +185,7 @@ export class TimeService {
171185
* @param num 数量,为负数即为减法
172186
* @param unit 单位
173187
*/
174-
public static addDate(date:Time, num:string|number, unit:TimeUnit): Moment {
188+
public static addDate(date: Time, num: string | number, unit: TimeUnit): Moment {
175189
return moment(date).add(num, TimeService._timeUnitMap.get(unit));
176190
}
177191

@@ -193,7 +207,7 @@ export class TimeService {
193207
* @param formatter
194208
*/
195209
public static format(date: Time, formatter: string | TimeFormatters): string {
196-
if(typeof formatter === "number") formatter = TimeService._timeFormatterConvert(formatter);
210+
if (typeof formatter === "number") formatter = TimeService._timeFormatterConvert(formatter);
197211
return moment(date).format(formatter);
198212
}
199213

@@ -203,7 +217,7 @@ export class TimeService {
203217
* @param date
204218
* @param gr
205219
*/
206-
public static formatWithGr(date:Time, gr:TimeGr): string {
220+
public static formatWithGr(date: Time, gr: TimeGr): string {
207221
let format = TimeService.getFormatter(gr);
208222
return moment(date).format(format);
209223
}
@@ -233,7 +247,7 @@ export class TimeService {
233247
* @param date
234248
*
235249
*/
236-
public static getWeekYear(date:Time): number {
250+
public static getWeekYear(date: Time): number {
237251
return moment(date).weekYear();
238252
}
239253

@@ -243,7 +257,7 @@ export class TimeService {
243257
* @param date
244258
*
245259
*/
246-
public static getWeekOfYear(date:Time): number {
260+
public static getWeekOfYear(date: Time): number {
247261
return moment(date).week();
248262
}
249263

@@ -253,7 +267,7 @@ export class TimeService {
253267
* @param date
254268
*
255269
*/
256-
public static getYear(date:Time): number {
270+
public static getYear(date: Time): number {
257271
return moment(date).year();
258272
}
259273

@@ -263,7 +277,7 @@ export class TimeService {
263277
* @param date
264278
*
265279
*/
266-
public static getMonth(date:Time): number {
280+
public static getMonth(date: Time): number {
267281
return moment(date).month() + 1;
268282
}
269283

@@ -273,15 +287,15 @@ export class TimeService {
273287
* @param date
274288
*
275289
*/
276-
public static getDay(date:Time): number {
290+
public static getDay(date: Time): number {
277291
return moment(date).date();
278292
}
279293

280294
public static getDateFromYearAndWeek(year: number, week: number): Date {
281295
return moment().weekYear(year).week(week)
282296
}
283297

284-
public static getDate(str:Time, gr: TimeGr): Moment {
298+
public static getDate(str: Time, gr: TimeGr): Moment {
285299
return moment(str, TimeService.getFormatter(gr));
286300
}
287301

0 commit comments

Comments
 (0)