улучшение ui
This commit is contained in:
@@ -175,20 +175,20 @@ func (s *DateTimePicker) renderCalendarTitle() string {
|
||||
func (s *DateTimePicker) calendarKeyboard() echotron.InlineKeyboardMarkup {
|
||||
var rows [][]echotron.InlineKeyboardButton
|
||||
|
||||
rows = append(rows, bot.Row(
|
||||
rows = append(rows, Row(
|
||||
s.monthPrevButton(),
|
||||
bot.Button(monthName(s.month), dtpCallbackPrefix+"open_months"),
|
||||
bot.Button("→", dtpCallbackPrefix+"month_next"),
|
||||
Button(monthName(s.month), dtpCallbackPrefix+"open_months"),
|
||||
Button("→", dtpCallbackPrefix+"month_next"),
|
||||
))
|
||||
|
||||
rows = append(rows, bot.Row(
|
||||
bot.Button("Пн", "empty"),
|
||||
bot.Button("Вт", "empty"),
|
||||
bot.Button("Ср", "empty"),
|
||||
bot.Button("Чт", "empty"),
|
||||
bot.Button("Пт", "empty"),
|
||||
bot.Button("Сб", "empty"),
|
||||
bot.Button("Вс", "empty"),
|
||||
rows = append(rows, Row(
|
||||
Button("Пн", "empty"),
|
||||
Button("Вт", "empty"),
|
||||
Button("Ср", "empty"),
|
||||
Button("Чт", "empty"),
|
||||
Button("Пт", "empty"),
|
||||
Button("Сб", "empty"),
|
||||
Button("Вс", "empty"),
|
||||
))
|
||||
|
||||
firstOfMonth := time.Date(s.year, s.month, 1, 0, 0, 0, 0, mskLocation)
|
||||
@@ -202,16 +202,16 @@ func (s *DateTimePicker) calendarKeyboard() echotron.InlineKeyboardMarkup {
|
||||
|
||||
var row []echotron.InlineKeyboardButton
|
||||
for i := 1; i < weekday; i++ {
|
||||
row = append(row, bot.Button(" ", "empty"))
|
||||
row = append(row, Button(" ", "empty"))
|
||||
}
|
||||
|
||||
for day := 1; day <= daysInMonth; day++ {
|
||||
date := time.Date(s.year, s.month, day, 0, 0, 0, 0, mskLocation)
|
||||
if date.Before(todayDate) {
|
||||
row = append(row, bot.Button("-", "empty"))
|
||||
row = append(row, Button("-", "empty"))
|
||||
} else {
|
||||
label := fmt.Sprintf("%d", day)
|
||||
row = append(row, bot.Button(label, fmt.Sprintf("%sday:%04d-%02d-%02d", dtpCallbackPrefix, s.year, int(s.month), day)))
|
||||
row = append(row, Button(label, fmt.Sprintf("%sday:%04d-%02d-%02d", dtpCallbackPrefix, s.year, int(s.month), day)))
|
||||
}
|
||||
if len(row) == 7 {
|
||||
rows = append(rows, row)
|
||||
@@ -221,17 +221,17 @@ func (s *DateTimePicker) calendarKeyboard() echotron.InlineKeyboardMarkup {
|
||||
|
||||
if len(row) > 0 {
|
||||
for len(row) < 7 {
|
||||
row = append(row, bot.Button(" ", "empty"))
|
||||
row = append(row, Button(" ", "empty"))
|
||||
}
|
||||
rows = append(rows, row)
|
||||
}
|
||||
|
||||
rows = append(rows, bot.Row(
|
||||
bot.Button("← Назад", "back"),
|
||||
bot.Button("Отмена", "cancel"),
|
||||
rows = append(rows, Row(
|
||||
Button("← Назад", "back"),
|
||||
Button("Отмена", "cancel"),
|
||||
))
|
||||
|
||||
return bot.Keyboard(rows...)
|
||||
return Keyboard(rows...)
|
||||
}
|
||||
|
||||
func (s *DateTimePicker) monthsKeyboard() echotron.InlineKeyboardMarkup {
|
||||
@@ -239,25 +239,25 @@ func (s *DateTimePicker) monthsKeyboard() echotron.InlineKeyboardMarkup {
|
||||
|
||||
months := []string{"Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"}
|
||||
for i := 0; i < 12; i += 3 {
|
||||
rows = append(rows, bot.Row(
|
||||
bot.Button(months[i], fmt.Sprintf("%smonth:%d", dtpCallbackPrefix, i+1)),
|
||||
bot.Button(months[i+1], fmt.Sprintf("%smonth:%d", dtpCallbackPrefix, i+2)),
|
||||
bot.Button(months[i+2], fmt.Sprintf("%smonth:%d", dtpCallbackPrefix, i+3)),
|
||||
rows = append(rows, Row(
|
||||
Button(months[i], fmt.Sprintf("%smonth:%d", dtpCallbackPrefix, i+1)),
|
||||
Button(months[i+1], fmt.Sprintf("%smonth:%d", dtpCallbackPrefix, i+2)),
|
||||
Button(months[i+2], fmt.Sprintf("%smonth:%d", dtpCallbackPrefix, i+3)),
|
||||
))
|
||||
}
|
||||
|
||||
rows = append(rows, bot.Row(
|
||||
bot.Button("← Назад", "back"),
|
||||
rows = append(rows, Row(
|
||||
Button("← Назад", "back"),
|
||||
))
|
||||
|
||||
return bot.Keyboard(rows...)
|
||||
return Keyboard(rows...)
|
||||
}
|
||||
|
||||
func (s *DateTimePicker) timeCombinedKeyboard() echotron.InlineKeyboardMarkup {
|
||||
var rows [][]echotron.InlineKeyboardButton
|
||||
rows = append(rows, bot.Row(bot.Button("Часы", "empty")))
|
||||
rows = append(rows, Row(Button("Часы", "empty")))
|
||||
for i := 0; i < 24; i += 6 {
|
||||
rows = append(rows, bot.Row(
|
||||
rows = append(rows, Row(
|
||||
s.hourButton(i),
|
||||
s.hourButton(i+1),
|
||||
s.hourButton(i+2),
|
||||
@@ -266,10 +266,10 @@ func (s *DateTimePicker) timeCombinedKeyboard() echotron.InlineKeyboardMarkup {
|
||||
s.hourButton(i+5),
|
||||
))
|
||||
}
|
||||
rows = append(rows, bot.Row(bot.Button("Минуты", "empty")))
|
||||
rows = append(rows, Row(Button("Минуты", "empty")))
|
||||
minutes := []int{0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55}
|
||||
for i := 0; i < len(minutes); i += 6 {
|
||||
rows = append(rows, bot.Row(
|
||||
rows = append(rows, Row(
|
||||
s.minuteButton(minutes[i]),
|
||||
s.minuteButton(minutes[i+1]),
|
||||
s.minuteButton(minutes[i+2]),
|
||||
@@ -278,18 +278,18 @@ func (s *DateTimePicker) timeCombinedKeyboard() echotron.InlineKeyboardMarkup {
|
||||
s.minuteButton(minutes[i+5]),
|
||||
))
|
||||
}
|
||||
rows = append(rows, bot.Row(
|
||||
bot.Button("← Назад", "back"),
|
||||
bot.Button("Готово", dtpCallbackPrefix+"confirm"),
|
||||
rows = append(rows, Row(
|
||||
Button("← Назад", "back"),
|
||||
Button("Готово", dtpCallbackPrefix+"confirm"),
|
||||
))
|
||||
return bot.Keyboard(rows...)
|
||||
return Keyboard(rows...)
|
||||
}
|
||||
|
||||
func (s *DateTimePicker) confirmKeyboard() echotron.InlineKeyboardMarkup {
|
||||
return bot.Keyboard(
|
||||
bot.Row(
|
||||
bot.Button("← Назад", "back"),
|
||||
bot.Button("Готово", dtpCallbackPrefix+"confirm"),
|
||||
return Keyboard(
|
||||
Row(
|
||||
Button("← Назад", "back"),
|
||||
Button("Готово", dtpCallbackPrefix+"confirm"),
|
||||
),
|
||||
)
|
||||
}
|
||||
@@ -426,23 +426,23 @@ func (s *DateTimePicker) confirmSelection(b *bot.Bot) {
|
||||
func (s *DateTimePicker) hourButton(hour int) echotron.InlineKeyboardButton {
|
||||
label := fmt.Sprintf("%02d", hour)
|
||||
if s.isHourDisabled(hour) {
|
||||
return bot.Button("-", "empty")
|
||||
return Button("-", "empty")
|
||||
}
|
||||
if s.selectedHour != nil && *s.selectedHour == hour {
|
||||
label = "● " + label
|
||||
}
|
||||
return bot.Button(label, fmt.Sprintf("%shour:%02d", dtpCallbackPrefix, hour))
|
||||
return Button(label, fmt.Sprintf("%shour:%02d", dtpCallbackPrefix, hour))
|
||||
}
|
||||
|
||||
func (s *DateTimePicker) minuteButton(minute int) echotron.InlineKeyboardButton {
|
||||
label := fmt.Sprintf("%02d", minute)
|
||||
if s.isMinuteDisabled(minute) {
|
||||
return bot.Button("-", "empty")
|
||||
return Button("-", "empty")
|
||||
}
|
||||
if s.selectedMinute != nil && *s.selectedMinute == minute {
|
||||
label = "● " + label
|
||||
}
|
||||
return bot.Button(label, fmt.Sprintf("%smin:%02d", dtpCallbackPrefix, minute))
|
||||
return Button(label, fmt.Sprintf("%smin:%02d", dtpCallbackPrefix, minute))
|
||||
}
|
||||
|
||||
func (s *DateTimePicker) isHourDisabled(hour int) bool {
|
||||
@@ -499,9 +499,9 @@ func (s *DateTimePicker) nextMonth() {
|
||||
func (s *DateTimePicker) monthPrevButton() echotron.InlineKeyboardButton {
|
||||
now := time.Now().In(mskLocation)
|
||||
if s.year == now.Year() && s.month == now.Month() {
|
||||
return bot.Button("-", "empty")
|
||||
return Button("-", "empty")
|
||||
}
|
||||
return bot.Button("←", dtpCallbackPrefix+"month_prev")
|
||||
return Button("←", dtpCallbackPrefix+"month_prev")
|
||||
}
|
||||
|
||||
func daysInMonth(year int, month time.Month) int {
|
||||
|
||||
Reference in New Issue
Block a user