@@ -3,7 +3,7 @@ import { HomeFeedNotificationPopup } from "./popup.js";
33import { computeStateDisplay as computeStateDisplayHelper , handleClick } from "custom-card-helpers" ;
44import { createCard } from "card-tools/src/lovelace-element" ;
55
6- require ( ' ./locale.js' ) ;
6+ import { getCalendarString } from " ./locale.js" ;
77
88class HomeFeedCard extends LitElement {
99 constructor ( ) {
@@ -15,8 +15,9 @@ class HomeFeedCard extends LitElement {
1515 this . refreshingNotifications = false ;
1616 this . feedContent = null ;
1717 this . moment = require ( 'moment' ) ;
18-
19- this . moment . locale ( window . navigator . userLanguage || window . navigator . language ) ;
18+ let lang = window . navigator . userLanguage || window . navigator . language ;
19+ if ( lang == "hy" ) lang = "hy-am" ; // "hy" (Armenian) wrongly maps to zh-tw (Taiwan Chinese)
20+ this . moment . locale ( lang ) ;
2021 }
2122
2223 static get properties ( ) { return {
@@ -897,22 +898,49 @@ class HomeFeedCard extends LitElement {
897898 var allDay = ( n . item_type == "calendar_event" && n . all_day ) ;
898899
899900 var timeItem ;
900-
901+
901902 if ( allDay ) {
902- let date = n . start . date ? this . moment ( n . start . date ) : this . moment ( n . start ) . startOf ( 'day' ) ;
903+ let date = n . start . date ? this . moment ( n . start . date ) . startOf ( 'day' ) : this . moment ( n . start ) . startOf ( 'day' ) ;
904+ let endDate = ( n . end . date ? this . moment ( n . end . date ) . startOf ( 'day' ) : this . moment ( n . end ) . startOf ( 'day' ) ) ;
905+ // Fix end date for all day events
906+ endDate = endDate . add ( - 1 , 'hours' ) . startOf ( 'day' ) ;
903907
904- if ( date > this . moment ( ) . startOf ( 'day' ) ) {
905- if ( this . moment ( n . start . date ) > this . moment ( ) . startOf ( 'day' ) . add ( 1 , 'days' ) ) {
906- var timeString = date . format ( "dddd" ) ;
907- }
908- else {
909- var timeString = "Tomorrow" ;
910- }
908+ let days = Math . abs ( date . diff ( this . moment ( ) . startOf ( 'day' ) , 'days' ) ) ;
909+
910+ if ( days <= 7 ) {
911+ var timeString = getCalendarString ( date ) ;
912+
913+ if ( endDate > date ) {
914+ let endTimeString = getCalendarString ( endDate ) ;
915+ if ( endTimeString == endDate . format ( "L" ) ) {
916+ endTimeString = endDate . toDate ( ) . toLocaleDateString ( this . _hass . language , {
917+ year : "numeric" ,
918+ month : "long" ,
919+ day : "numeric" ,
920+ } ) ;
921+ }
922+ timeString = timeString + " - " + endTimeString ;
923+ }
924+
925+ timeItem = html `< div style ="display:block; ${ compact_mode ? "float:right" : "clear:both;" } " title ="${ date . toDate ( ) } - ${ endDate . toDate ( ) } "> ${ timeString } </ div > ` ;
911926 }
912927 else {
913- var timeString = "Today" ;
928+ var timeString = date . toDate ( ) . toLocaleDateString ( this . _hass . language , {
929+ year : "numeric" ,
930+ month : "long" ,
931+ day : "numeric" ,
932+ } ) ;
933+
934+ if ( endDate > date ) {
935+ timeString = timeString + " - " + endDate . toDate ( ) . toLocaleDateString ( this . _hass . language , {
936+ year : "numeric" ,
937+ month : "long" ,
938+ day : "numeric" ,
939+ } ) ;
940+ }
941+
942+ timeItem = html `< div style ="display:block; ${ compact_mode ? "float:right" : "clear:both;" } " title ="${ date . toDate ( ) } - ${ endDate ( ) . toDate ( ) } "> ${ timeString } </ div > ` ;
914943 }
915- timeItem = html `< div style ="display:block; ${ compact_mode ? "float:right" : "clear:both;" } "> ${ timeString } </ div > ` ;
916944 }
917945 else
918946 {
0 commit comments