diff --git a/src/cloud-ui.html b/src/cloud-ui.html index 9f2de2b..3053d7a 100644 --- a/src/cloud-ui.html +++ b/src/cloud-ui.html @@ -8,7 +8,7 @@ - +

diff --git a/src/css/cloud-ui.css b/src/css/cloud-ui.css index b96ad88..609b3cd 100644 --- a/src/css/cloud-ui.css +++ b/src/css/cloud-ui.css @@ -2,39 +2,45 @@ background: url("../img/cloud.png") hsl(216, 100%, 93%); border-radius: 3px; margin: 0.5em 0; - padding: 1em; + padding: 1em 1em 0 1em; position: relative; } #cloudWidget.hide { display: none; } #cloudWidget > button { - font-size: 160%; - padding: 0.1em 0.2em; - } -#cloudPull[disabled] { - visibility: hidden; - } -#cloudPush:after , -#cloudPull:before { + display: inline-block; font-family: FontAwesome; + font-size: 160%; font-style: normal; font-weight: normal; line-height: 1; + padding: 0.2em 0.25em 0.1em 0.25em; + position: relative; vertical-align: baseline; - display: inline-block; } -body[dir="ltr"] #cloudPush:after { +#cloudWidget > button[disabled] { + visibility: hidden; + } +#cloudWidget > button.error { + color: red; + } +#cloudPush:after { content: '\f0ee'; } -body[dir="rtl"] #cloudPush:after { - content: '\f0ee'; - } -body[dir="ltr"] #cloudPull:before { +#cloudPull:before, +#cloudPullAndMerge:before { content: '\f0ed'; +} +#cloudPullAndMerge { + margin: 0 0.25em; } -body[dir="rtl"] #cloudPull:before { - content: '\f0ed'; +#cloudPullAndMerge:after { + content: '\f067'; + font-size: 50%; + position: absolute; + right: 0; + top: 10%; } #cloudWidget > span { color: gray; @@ -45,7 +51,13 @@ body[dir="rtl"] #cloudPull:before { vertical-align: bottom; white-space: pre; } -#cloudWidget > .nodata { +#cloudError { + color: red; + margin: 0; + padding: 0.5em 0; + } +#cloudError > span { + font-size: x-small; } #cloudWidget > #cloudCog { cursor: pointer; diff --git a/src/js/cloud-ui.js b/src/js/cloud-ui.js index c4cc118..07030af 100644 --- a/src/js/cloud-ui.js +++ b/src/js/cloud-ui.js @@ -62,6 +62,7 @@ var onCloudDataReceived = function(entry) { self.cloud.data = entry.data; uDom.nodeFromId('cloudPull').removeAttribute('disabled'); + uDom.nodeFromId('cloudPullAndMerge').removeAttribute('disabled'); var timeOptions = { weekday: 'short', @@ -118,6 +119,14 @@ var pullData = function(ev) { /******************************************************************************/ +var pullAndMergeData = function() { + if ( typeof self.cloud.onPull === 'function' ) { + self.cloud.onPull(self.cloud.data, true); + } +}; + +/******************************************************************************/ + var openOptions = function() { var input = uDom.nodeFromId('cloudDeviceName'); input.value = self.cloud.options.deviceName; @@ -188,6 +197,7 @@ var onInitialize = function(options) { uDom('#cloudPush').on('click', pushData); uDom('#cloudPull').on('click', pullData); + uDom('#cloudPullAndMerge').on('click', pullAndMergeData); uDom('#cloudCog').on('click', openOptions); uDom('#cloudOptions').on('click', closeOptions); uDom('#cloudOptionsSubmit').on('click', submitOptions); diff --git a/src/js/user-rules.js b/src/js/user-rules.js index 8963e7b..73dfb56 100644 --- a/src/js/user-rules.js +++ b/src/js/user-rules.js @@ -307,9 +307,7 @@ self.cloud.onPush = function() { }; self.cloud.onPull = function(data, append) { - if ( typeof data !== 'string' ) { - return; - } + if ( typeof data !== 'string' ) { return; } if ( append ) { data = rulesFromHTML('#diff .right li') + '\n' + data; }