Remove moment in favor of fecha

This commit is contained in:
Paulus Schoutsen 2016-07-31 19:05:44 -07:00
parent afbed89390
commit 7ae4b50167
8 changed files with 50 additions and 38 deletions

View File

@ -11,14 +11,14 @@
"polymer": "Polymer/polymer#~1.6", "polymer": "Polymer/polymer#~1.6",
"pikaday": "1.4", "pikaday": "1.4",
"leaflet-map": "1.2.0", "leaflet-map": "1.2.0",
"moment": "^2.14.1",
"iron-elements": "PolymerElements/iron-elements#~1.0.10", "iron-elements": "PolymerElements/iron-elements#~1.0.10",
"paper-elements": "PolymerElements/paper-elements#~1.0.7", "paper-elements": "PolymerElements/paper-elements#~1.0.7",
"google-apis": "GoogleWebComponents/google-apis#~1.1.6", "google-apis": "GoogleWebComponents/google-apis#~1.1.6",
"font-roboto-local": "^1.0.1", "font-roboto-local": "^1.0.1",
"iron-flex-layout": "^1.3.1", "iron-flex-layout": "^1.3.1",
"paper-scroll-header-panel": "1.0.16", "paper-scroll-header-panel": "1.0.16",
"app-layout": "^0.10.1" "app-layout": "^0.10.1",
"fecha": "^2.2.0"
}, },
"_comment": "added to get min version for iron-flex-layout, paper-scroll-header-panel" "_comment": "specify iron-flex-layout for higher version than iron elements"
} }

View File

@ -1,8 +1,6 @@
<link rel="import" href="../../bower_components/polymer/polymer.html"> <link rel="import" href="../../bower_components/polymer/polymer.html">
<link rel="import" href="../../src/components/domain-icon.html"> <link rel="import" href="../../src/components/domain-icon.html">
<link rel="import" href="../../src/components/display-time.html">
<link rel="import" href="../../src/components/relative-ha-datetime.html">
<dom-module id="ha-logbook"> <dom-module id="ha-logbook">
@ -21,8 +19,8 @@
line-height: 2em; line-height: 2em;
} }
display-time { .time {
width: 55px; width: 23px;
font-size: .8em; font-size: .8em;
color: var(--secondary-text-color); color: var(--secondary-text-color);
} }
@ -51,7 +49,7 @@
<template is='dom-repeat' items="[[entries]]"> <template is='dom-repeat' items="[[entries]]">
<div class='horizontal layout entry'> <div class='horizontal layout entry'>
<display-time date-obj="[[item.when]]"></display-time> <div class='time'>[[formatTime(item.when)]]</div>
<domain-icon domain="[[item.domain]]" class='icon'></domain-icon> <domain-icon domain="[[item.domain]]" class='icon'></domain-icon>
<div class='message' flex> <div class='message' flex>
<template is='dom-if' if="[[!item.entityId]]"> <template is='dom-if' if="[[!item.entityId]]">
@ -83,6 +81,10 @@ Polymer({
}, },
}, },
formatTime: function (dateObj) {
return window.hassUtil.formatTime(dateObj);
},
entityClicked: function (ev) { entityClicked: function (ev) {
ev.preventDefault(); ev.preventDefault();
this.hass.moreInfoActions.selectEntity(ev.model.item.entityId); this.hass.moreInfoActions.selectEntity(ev.model.item.entityId);

View File

@ -1,19 +0,0 @@
<link rel="import" href="../../bower_components/polymer/polymer.html">
<script>
Polymer({
is: 'display-time',
properties: {
dateObj: {
type: Object,
observer: 'timeChanged',
},
},
timeChanged: function (dateObj) {
var root = Polymer.dom(this);
root.innerHTML = window.moment(dateObj).format('LT');
},
});
</script>

View File

@ -1,7 +1,7 @@
<link rel="import" href="../../../bower_components/polymer/polymer.html"> <link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="./state-badge.html"> <link rel="import" href="./state-badge.html">
<link rel="import" href="../relative-ha-datetime.html"> <link rel="import" href="../ha-relative-time.html">
<dom-module id="state-info"> <dom-module id="state-info">
<template> <template>
@ -44,7 +44,7 @@
<template is='dom-if' if='[[inDialog]]'> <template is='dom-if' if='[[inDialog]]'>
<div class='time-ago'> <div class='time-ago'>
<relative-ha-datetime datetime-obj='[[stateObj.lastChangedAsDate]]'></relative-ha-datetime> <ha-relative-time datetime-obj='[[stateObj.lastChangedAsDate]]'></ha-relative-time>
</div> </div>
</template> </template>

View File

@ -2,7 +2,7 @@
<script> <script>
Polymer({ Polymer({
is: 'relative-ha-datetime', is: 'ha-relative-time',
properties: { properties: {
datetime: { datetime: {
@ -48,7 +48,7 @@ Polymer({
updateRelative: function () { updateRelative: function () {
var root = Polymer.dom(this); var root = Polymer.dom(this);
root.innerHTML = this.parsedDateTime ? root.innerHTML = this.parsedDateTime ?
window.moment(this.parsedDateTime).fromNow() : ''; window.hassUtil.relativeTime(this.parsedDateTime) : '';
}, },
}); });
</script> </script>

View File

@ -1,5 +1,3 @@
<script src='../bower_components/moment/min/moment.min.js'></script>
<link rel='import' href='../bower_components/polymer/polymer.html'> <link rel='import' href='../bower_components/polymer/polymer.html'>
<link rel='import' href='../bower_components/paper-spinner/paper-spinner.html'> <link rel='import' href='../bower_components/paper-spinner/paper-spinner.html'>
<link rel='import' href='./util/roboto.html'> <link rel='import' href='./util/roboto.html'>

View File

@ -1,6 +1,6 @@
<link rel="import" href="../../bower_components/polymer/polymer.html"> <link rel="import" href="../../bower_components/polymer/polymer.html">
<link rel="import" href="../components/relative-ha-datetime.html"> <link rel="import" href="../components/ha-relative-time.html">
<dom-module id="more-info-sun"> <dom-module id="more-info-sun">
<template> <template>
@ -10,7 +10,7 @@
<div class='data-entry layout justified horizontal'> <div class='data-entry layout justified horizontal'>
<div class='key'> <div class='key'>
<span>[[itemCaption(item)]]</span> <span>[[itemCaption(item)]]</span>
<relative-ha-datetime datetime-obj="[[itemDate(item)]]"></relative-ha-datetime> <ha-relative-time datetime-obj="[[itemDate(item)]]"></ha-relative-time>
</div> </div>
<div class='value'>[[itemValue(item)]]</div> <div class='value'>[[itemValue(item)]]</div>
</div> </div>

View File

@ -1,3 +1,5 @@
<script src='../../bower_components/fecha/fecha.min.js'></script>
<!-- <!--
collection of utility functions. collection of utility functions.
--> -->
@ -68,18 +70,47 @@ window.hassUtil.dynamicContentUpdater = function (root, newElementTag, attribute
} }
}; };
window.fecha.masks.haDateTime = (window.fecha.masks.shortTime + ' ' +
window.fecha.masks.mediumDate);
window.hassUtil.formatDateTime = function (dateObj) { window.hassUtil.formatDateTime = function (dateObj) {
return window.moment(dateObj).format('lll'); return window.fecha.format(dateObj, 'haDateTime');
}; };
window.hassUtil.formatDate = function (dateObj) { window.hassUtil.formatDate = function (dateObj) {
return window.moment(dateObj).format('ll'); return window.fecha.format(dateObj, 'mediumDate');
}; };
window.hassUtil.formatTime = function (dateObj) { window.hassUtil.formatTime = function (dateObj) {
return window.moment(dateObj).format('LT'); return window.fecha.format(dateObj, 'shortTime');
}; };
window.hassUtil.relativeTime = function (dateObj) {
var delta = (new Date() - dateObj) / 1000;
var tests = window.hassUtil.relativeTime.tests;
var i;
for (i = 0; i < tests.length; i += 2) {
if (delta < tests[i]) {
delta = Math.floor(delta);
return delta === 1 ? '1 ' + tests[i + 1] : delta + ' ' + tests[i + 1] + 's';
}
delta /= tests[i];
}
delta = Math.floor(delta);
return delta === 1 ? '1 week' : delta + ' weeks';
};
window.hassUtil.relativeTime.tests = [
60, 'second',
60, 'minute',
24, 'hour',
7, 'day',
];
window.hassUtil.stateCardType = function (hass, state) { window.hassUtil.stateCardType = function (hass, state) {
if (state.state === 'unavailable') { if (state.state === 'unavailable') {
return 'display'; return 'display';