From 22a672788b00078211a78d4b66c2bedf10b94e00 Mon Sep 17 00:00:00 2001 From: sheychen Date: Mon, 29 Apr 2019 16:10:28 +0200 Subject: [PATCH] Add layouts and more --- compiler/dist/discord/main.js | 2 +- compiler/dist/mastodon/main.js | 2 +- compiler/dist/nextcloud-news/main.js | 2 +- compiler/dist/openweathermap/main.js | 4 +- compiler/src/core/accountService.vue | 35 +++++ compiler/src/core/baseService.vue | 33 ++++- compiler/src/core/connectedService.vue | 42 ++++++ compiler/src/core/fromNow.vue | 2 +- compiler/src/core/loadable/Loadable.js | 9 -- compiler/src/core/loadable/ReLoadable.js | 16 ++ compiler/src/core/serviceEmiter.vue | 13 +- compiler/src/core/serviceHeader.vue | 7 + compiler/src/discord/client.vue | 31 +--- compiler/src/discord/main.vue | 78 +++------- compiler/src/mastodon/client.vue | 48 +++--- compiler/src/mastodon/main.vue | 103 ++++--------- compiler/src/nextcloud-news/main.vue | 114 ++++++--------- compiler/src/openweathermap/main.vue | 118 +++++++-------- index.html | 38 +++-- main.css | 51 ++++++- main.css.map | 2 +- main.js | 178 +++++++++++++++++------ main.sass | 53 ++++--- 23 files changed, 551 insertions(+), 430 deletions(-) create mode 100644 compiler/src/core/accountService.vue create mode 100644 compiler/src/core/connectedService.vue create mode 100644 compiler/src/core/loadable/ReLoadable.js diff --git a/compiler/dist/discord/main.js b/compiler/dist/discord/main.js index 52396fd..e5f6a02 100644 --- a/compiler/dist/discord/main.js +++ b/compiler/dist/discord/main.js @@ -1 +1 @@ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=67)}([function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){var r=n(18)("wks"),o=n(12),i=n(0).Symbol,u="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=u&&i[t]||(u?i:o)("Symbol."+t))}).store=r},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){t.exports=!n(5)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(10),o=n(31),i=n(17),u=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return u(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(6),o=n(16);t.exports=n(4)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(42),o=n(23);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(0),o=n(7),i=n(2),u=n(12)("src"),s=n(47),a=(""+s).split("toString");n(11).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var c="function"==typeof n;c&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(c&&(i(n,u)||o(n,u,t[e]?""+t[e]:a.join(String(e)))),t===r?t[e]=n:s?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[u]||s.call(this)})},function(t,e,n){var r=n(3);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){var n=t.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e,n){var r=n(33),o=n(26);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e,n){"use strict";var r=n(0),o=n(2),i=n(15),u=n(39),s=n(17),a=n(5),c=n(24).f,l=n(21).f,f=n(6).f,p=n(46).trim,d=r.Number,v=d,y=d.prototype,h="Number"==i(n(27)(y)),g="trim"in String.prototype,m=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){var n,r,o,i=(e=g?e.trim():p(e,3)).charCodeAt(0);if(43===i||45===i){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+e}for(var u,a=e.slice(2),c=0,l=a.length;co)return NaN;return parseInt(a,r)}}return+e};if(!d(" 0o1")||!d("0b1")||d("+0x1")){d=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof d&&(h?a(function(){y.valueOf.call(n)}):"Number"!=i(n))?u(new v(m(e)),n,d):m(e)};for(var b,_=n(4)?c(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),S=0;_.length>S;S++)o(v,b=_[S])&&!o(d,b)&&f(d,b,l(v,b));d.prototype=y,y.constructor=d,n(9)(r,"Number",d)}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(3);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){var r=n(11),o=n(0),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(19)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,e){t.exports=!1},function(t,e,n){var r=n(0),o=n(11),i=n(7),u=n(9),s=n(30),a=function(t,e,n){var c,l,f,p,d=t&a.F,v=t&a.G,y=t&a.S,h=t&a.P,g=t&a.B,m=v?r:y?r[e]||(r[e]={}):(r[e]||{}).prototype,b=v?o:o[e]||(o[e]={}),_=b.prototype||(b.prototype={});for(c in v&&(n=e),n)f=((l=!d&&m&&void 0!==m[c])?m:n)[c],p=g&&l?s(f,r):h&&"function"==typeof f?s(Function.call,f):f,m&&u(m,c,f,t&a.U),b[c]!=f&&i(b,c,p),h&&_[c]!=f&&(_[c]=f)};r.core=o,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,e,n){var r=n(22),o=n(16),i=n(8),u=n(17),s=n(2),a=n(31),c=Object.getOwnPropertyDescriptor;e.f=n(4)?c:function(t,e){if(t=i(t),e=u(e,!0),a)try{return c(t,e)}catch(t){}if(s(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(33),o=n(26).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){var r=n(18)("keys"),o=n(12);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(10),o=n(49),i=n(26),u=n(25)("IE_PROTO"),s=function(){},a=function(){var t,e=n(32)("iframe"),r=i.length;for(e.style.display="none",n(50).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write(" diff --git a/compiler/src/core/baseService.vue b/compiler/src/core/baseService.vue index bee5bd0..7cbfc5e 100644 --- a/compiler/src/core/baseService.vue +++ b/compiler/src/core/baseService.vue @@ -22,7 +22,38 @@ export default { settingInt: settingIntVue, settingString: settingStringVue }, - extends: serviceEmiterVue + extends: serviceEmiterVue, + props: { + auth: { + type: Object, + default: () => ({}) + }, + options: { + type: Object, + default: () => ({}) + } + }, + data() { + return { + newAuth: {} + } + }, + watch: { + auth() { + this.init() + } + }, + created() { + this.init() + }, + methods: { + init() { + this.mustDefine('init() method') + }, + mustDefine(name) { + this.emitError('Must define ' + name) + } + } } export const Loadable = _Loadable diff --git a/compiler/src/core/connectedService.vue b/compiler/src/core/connectedService.vue new file mode 100644 index 0000000..9ce83d6 --- /dev/null +++ b/compiler/src/core/connectedService.vue @@ -0,0 +1,42 @@ + diff --git a/compiler/src/core/fromNow.vue b/compiler/src/core/fromNow.vue index 1792c71..e4e0c1a 100644 --- a/compiler/src/core/fromNow.vue +++ b/compiler/src/core/fromNow.vue @@ -16,7 +16,7 @@ export default { mixins: [ timedMixin ], props: { date: { - type: Date, + type: [Date, Number, String], default: Date.now } }, diff --git a/compiler/src/core/loadable/Loadable.js b/compiler/src/core/loadable/Loadable.js index 6666c02..65ab2c2 100644 --- a/compiler/src/core/loadable/Loadable.js +++ b/compiler/src/core/loadable/Loadable.js @@ -17,7 +17,6 @@ export default class { this.loaded = false this.data = undefined this.error = undefined - this.loadingMore = false } success(data) { this.loaded = true @@ -39,12 +38,4 @@ export default class { throw err }) } - - loadMore(promise, then) { - this.loadingMore = true - promise.then(res => { - then(res, this.data, this) - this.loadingMore = false - }) - } } \ No newline at end of file diff --git a/compiler/src/core/loadable/ReLoadable.js b/compiler/src/core/loadable/ReLoadable.js new file mode 100644 index 0000000..63d5399 --- /dev/null +++ b/compiler/src/core/loadable/ReLoadable.js @@ -0,0 +1,16 @@ +import Loadable from './Loadable' + +export default class extends Loadable { + reset() { + super.reset() + this.loadingMore = false + } + + loadMore(promise, then) { + this.loadingMore = true + promise.then(res => { + then(res, this.data, this) + this.loadingMore = false + }) + } +} \ No newline at end of file diff --git a/compiler/src/core/serviceEmiter.vue b/compiler/src/core/serviceEmiter.vue index 164550b..ee94c77 100644 --- a/compiler/src/core/serviceEmiter.vue +++ b/compiler/src/core/serviceEmiter.vue @@ -11,10 +11,7 @@ export default { this.emit('error', err) }, saveOptions(options) { - this.emit('saveAll', options) - this.$nextTick(function(){ - this.$forceUpdate() - }) + this.emit('saveOptions', options) }, saveOption(key, value) { this.saveOptionCouple({ @@ -22,9 +19,11 @@ export default { }) }, saveOptionCouple(couple) { - this.emit('save', couple) - this.$nextTick(function(){ - this.$forceUpdate() + this.emit('saveOption', couple) + }, + saveService(name, auth) { + this.emit('saveService', { + name: name, auth: auth }) }, catchEmit(req) { diff --git a/compiler/src/core/serviceHeader.vue b/compiler/src/core/serviceHeader.vue index 720db5f..75cf8d1 100644 --- a/compiler/src/core/serviceHeader.vue +++ b/compiler/src/core/serviceHeader.vue @@ -8,6 +8,7 @@ @keyup.left.ctrl.exact="onMove('y', -1)" @keyup.right.ctrl.exact="onMove('y', 1)" @keyup.up.alt.exact="onMove('h', -1)" @keyup.down.alt.exact="onMove('h', 1)" @keyup.left.alt.exact="onMove('w', -1)" @keyup.right.alt.exact="onMove('w', 1)" + @keyup.delete.ctrl.exact="onRemove" @keyup.delete.alt.exact="onRemoveService" ) slot(name="settings") @@ -27,6 +28,12 @@ export default { onMove(type, direction) { this.emit('move', { type: type, direction: direction }) }, + onRemove() { + this.emit('remove', { }) + }, + onRemoveService() { + this.emit('removeService', { }) + } } } diff --git a/compiler/src/discord/client.vue b/compiler/src/discord/client.vue index bf3c708..bb8b27b 100644 --- a/compiler/src/discord/client.vue +++ b/compiler/src/discord/client.vue @@ -2,7 +2,7 @@ .client(@scroll.passive="onScroll") loadable-block.list(:loadable="guilds") template(#success) - guild(v-for="guild in guilds.get()" :key="guild.id" :guild="guild" :showMedia="showMedia") + guild(v-for="guild in guilds.get()" :key="guild.id" :guild="guild" :showMedia="options.showMedia") diff --git a/main.css b/main.css index f1ab2d1..a20ec3d 100644 --- a/main.css +++ b/main.css @@ -56,13 +56,46 @@ input, select, button { padding: 0.3em; } -#manager { +#content { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + height: 100vh; +} + +#showManager { position: absolute; bottom: 0; } +#manager { + background-color: #222; + border-radius: 0.3em; + padding-left: 1em; + height: 1.3em; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +#layout-select { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + #services { - height: 100vh; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; display: -ms-grid; display: grid; grid-gap: .2em; @@ -73,8 +106,12 @@ input, select, button { justify-items: stretch; } -#services > div { +#services .tile { overflow: auto; +} + +#services .tile > div { + height: 100%; display: -webkit-box; display: -ms-flexbox; display: flex; @@ -84,25 +121,25 @@ input, select, button { flex-direction: column; } -#services > div .service-header .title, #services > div .service-header .settings { +#services .tile > div .service-header .title, #services .tile > div .service-header .settings { margin: 0.3em; background-color: #222; border-radius: 0.3em; padding: 0.3em; } -#services > div .service-header .title { +#services .tile > div .service-header .title { font-size: large; text-align: center; font-weight: bold; } -#services > div .service-header .settings .position { +#services .tile > div .service-header .settings .position { float: right; width: 1.2em; } -#services > div .service-content { +#services .tile > div .service-content { overflow: hidden; } diff --git a/main.css.map b/main.css.map index 6032ab8..386528d 100644 --- a/main.css.map +++ b/main.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "AAgBA,AAAA,CAAC,CAAC;EACA,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,WAAW,EAAE,2BAA2B;EACxC,eAAe,EAAE,IAAI;CAAG;;AAE1B,AAAA,IAAI,CAAC;EACH,gBAAgB,EApBN,IAAI;EAqBd,KAAK,EAhBK,IAAI;CAgBM;;AAEtB,AAAA,CAAC,CAAC;EACA,eAAe,EAAE,IAAI;EACrB,KAAK,EArBK,IAAI;CAqBM;;AAEtB,AAAA,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;EACpB,gBAAgB,EA5BN,IAAI;EA6Bd,KAAK,EAxBK,IAAI;EAyBd,MAAM,EAAE,GAAG,CAAC,KAAK,CA3BP,IAAI;CA2BiB;;AAEjC,AAAA,KAAK,CAAC;EACJ,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,cAAc,EAAE,MAAM;CAAG;;AAE3B,AAAA,UAAU,CAAC;EACT,WAAW,EAAE,IAAI;EACjB,SAAS,EAAE,KAAK;CAAG;;AAErB,AAAA,KAAK,CAAC;EACJ,SAAS,EAAE,IAAI;EACf,cAAc,EAAE,QAAQ;CAAG;;AAE7B,AAAA,OAAO,CAAC;EACN,MAAM,EAAE,MAAM;CAAG;;AAEnB,AAAA,QAAQ,CAAC;EACP,KAAK,EAAE,MAAM;CAAG;;AAElB,AAAA,OAAO,CAAC;EACN,QAAQ,EAAE,QAAQ;CAEE;;AAHtB,AAEE,OAFK,CAEL,MAAM,CAAC;EA7CP,MAAM,EAVO,KAAI;EAWjB,gBAAgB,EARN,IAAI;EASd,aAAa,EAZA,KAAI;EAajB,OAAO,EAbM,KAAI;CAwDC;;AAEpB,AAAA,QAAQ,CAAC;EACP,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,MAAM,EAAE,KAAK;CAAG;;AAElB,AAAA,YAAY,CAAC;EACX,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,CAAC;CAAG;;AAEd,AAAA,QAAQ,CAAC;EACP,gBAAgB,EAjEN,IAAI;EAkEd,aAAa,EArEA,KAAI;EAsEjB,YAAY,EAAE,GAAG;EACjB,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,aAAa;CAAG;;AAEnC,AAAA,cAAc,CAAC;EACb,OAAO,EAAE,IAAI;CAAG;;AAElB,AAAA,SAAS,CAAC;EACR,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,MAAM;EAChB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,IAAI;EACd,qBAAqB,EAAE,yBAAyB;EAChD,kBAAkB,EAAE,yBAAyB;EAC7C,aAAa,EAAE,OAAO;CAqCkB;;AA5C1C,AAQE,SARO,CAQP,KAAK,CAAC;EACJ,QAAQ,EAAE,IAAI;CAgBa;;AAzB/B,AAUI,SAVK,CAQP,KAAK,GAEC,GAAG,CAAC;EACN,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;CAYC;;AAzB7B,AAeQ,SAfC,CAQP,KAAK,GAEC,GAAG,CAIL,eAAe,CACb,MAAM,EAfd,SAAS,CAQP,KAAK,GAEC,GAAG,CAIL,eAAe,CACL,SAAS,CAAC;EAnFxB,MAAM,EAVO,KAAI;EAWjB,gBAAgB,EARN,IAAI;EASd,aAAa,EAZA,KAAI;EAajB,OAAO,EAbM,KAAI;CA8FO;;AAhB1B,AAiBQ,SAjBC,CAQP,KAAK,GAEC,GAAG,CAIL,eAAe,CAGb,MAAM,CAAC;EACL,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,IAAI;CAAG;;AApB9B,AAqBQ,SArBC,CAQP,KAAK,GAEC,GAAG,CAIL,eAAe,CAOb,SAAS,CAAC,SAAS,CAAC;EAClB,KAAK,EAAE,KAAK;EACZ,KAAK,EAAE,KAAK;CAAG;;AAvBzB,AAwBM,SAxBG,CAQP,KAAK,GAEC,GAAG,CAcL,gBAAgB,CAAC;EACf,QAAQ,EAAE,MAAM;CAAG;;AAzB3B,AA0BE,SA1BO,CA0BP,eAAe,CAAC;EACd,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;CAewB;;AA5CxC,AA8BI,SA9BK,CA0BP,eAAe,AAIZ,MAAM,CAAC;EACN,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,GAAG;EACX,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,GAAG,CAAC,KAAK,CA7GX,IAAI;EA8GV,YAAY,EA9GN,IAAI,CA8Ge,WAAW,CA9G9B,IAAI,CA8GsC,WAAW;EAC3D,SAAS,EAAE,mCAAmC;CAAG;;AACnD,UAAU,CAAV,cAAU;EACR,EAAE;IACA,SAAS,EAAE,YAAY;;EACzB,IAAI;IACF,SAAS,EAAE,cAAc;;;;AAEjC,AACE,SADO,CACP,OAAO,CAAC;EACN,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,IAAI;CA2DG;;AA/DvB,AAKI,SALK,CACP,OAAO,CAIL,OAAO,CAAC;EAvHV,MAAM,EAVO,KAAI;EAWjB,gBAAgB,EARN,IAAI;EASd,aAAa,EAZA,KAAI;EAajB,OAAO,EAbM,KAAI;CAkIG;;AANtB,AAQM,SARG,CACP,OAAO,CAML,KAAK,GACC,GAAG,CAAC;EA1HZ,MAAM,EAVO,KAAI;EAWjB,gBAAgB,EARN,IAAI;EASd,aAAa,EAZA,KAAI;EAajB,OAAO,EAbM,KAAI;CAqIK;;AATxB,AAUI,SAVK,CACP,OAAO,CASL,QAAQ,CAAC;EACP,IAAI,EAAE,CAAC;CAAG;;AAXhB,AAYI,SAZK,CACP,OAAO,CAWL,cAAc,CAAC;EACb,SAAS,EAAE,GAAG;CAAG;;AAbvB,AAgBM,SAhBG,CACP,OAAO,CAcL,QAAQ,CACN,KAAK,CAAC;EACJ,MAAM,EAAE,CAAC,CA7IF,KAAI;EA8IX,KAAK,EAvID,IAAI;CAuIY;;AAlB5B,AAmBM,SAnBG,CACP,OAAO,CAcL,QAAQ,CAIN,OAAO,CAAC;EACN,KAAK,EAAE,IAAI;EACX,aAAa,EAjJN,KAAI;EAkJX,KAAK,EAnJA,GAAG;EAoJR,MAAM,EApJD,GAAG;EAqJR,eAAe,EArJV,GAAG,CAAH,GAAG;CAqJmC;;AAxBnD,AAyBM,SAzBG,CACP,OAAO,CAcL,QAAQ,CAUN,GAAG,CAAC;EACF,OAAO,EAAE,YAAY;CAAG;;AA1BhC,AA4BI,SA5BK,CACP,OAAO,CA2BL,OAAO,EA5BX,SAAS,CACP,OAAO,CA2BI,aAAa,CAAC;EACrB,UAAU,EA1JH,GAAG;CAyLe;;AA5D/B,AA8BM,SA9BG,CACP,OAAO,CA2BL,OAAO,CAEL,QAAQ,EA9Bd,SAAS,CACP,OAAO,CA2BI,aAAa,CAEpB,QAAQ,CAAC;EACP,MAAM,EAAE,kBAAkB;CAwBF;;AAvDhC,AAgCQ,SAhCC,CACP,OAAO,CA2BL,OAAO,CAEL,QAAQ,AAEL,SAAS,EAhClB,SAAS,CACP,OAAO,CA2BI,aAAa,CAEpB,QAAQ,AAEL,SAAS,CAAC;EACT,WAAW,EAAE,KAAkB;CAAG;;AAjC5C,AAkCQ,SAlCC,CACP,OAAO,CA2BL,OAAO,CAEL,QAAQ,CAIN,OAAO,EAlCf,SAAS,CACP,OAAO,CA2BI,aAAa,CAEpB,QAAQ,CAIN,OAAO,CAAC;EACN,SAAS,EAAE,IAAI;CAAG;;AAnC5B,AAoCQ,SApCC,CACP,OAAO,CA2BL,OAAO,CAEL,QAAQ,CAMN,QAAQ,EApChB,SAAS,CACP,OAAO,CA2BI,aAAa,CAEpB,QAAQ,CAMN,QAAQ,CAAC;EACP,aAAa,EAAE,IAAI;CAAG;;AArChC,AAsCQ,SAtCC,CACP,OAAO,CA2BL,OAAO,CAEL,QAAQ,CAQN,MAAM,EAtCd,SAAS,CACP,OAAO,CA2BI,aAAa,CAEpB,QAAQ,CAQN,MAAM,CAAC;EACL,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;CAcD;;AAvD9B,AA0CU,SA1CD,CACP,OAAO,CA2BL,OAAO,CAEL,QAAQ,CAQN,MAAM,GAIA,CAAC,EA1Cf,SAAS,CACP,OAAO,CA2BI,aAAa,CAEpB,QAAQ,CAQN,MAAM,GAIA,CAAC,CAAC;EACJ,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,IAAI;CAAG;;AA5C9B,AA6CU,SA7CD,CACP,OAAO,CA2BL,OAAO,CAEL,QAAQ,CAQN,MAAM,CAOJ,IAAI,EA7Cd,SAAS,CACP,OAAO,CA2BI,aAAa,CAEpB,QAAQ,CAQN,MAAM,CAOJ,IAAI,CAAC;EACH,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,SAAS;EAC3B,KAAK,EAAE,KAAK;EACZ,OAAO,EAAE,IAAI;CAAG;;AAvD5B,AAwDM,SAxDG,CACP,OAAO,CA2BL,OAAO,CA4BL,KAAK,EAxDX,SAAS,CACP,OAAO,CA2BI,aAAa,CA4BpB,KAAK,CAAC;EACJ,WAAW,EAAE,GAAiB;EAC9B,SAAS,EAAE,IAAI;CAEM;;AA5D7B,AA2DQ,SA3DC,CACP,OAAO,CA2BL,OAAO,CA4BL,KAAK,CAGH,CAAC,EA3DT,SAAS,CACP,OAAO,CA2BI,aAAa,CA4BpB,KAAK,CAGH,CAAC,CAAC;EACA,MAAM,EAAE,MAAM;CAAG;;AA5D3B,AA8DI,SA9DK,CACP,OAAO,CA6DL,KAAK,EA9DT,SAAS,CACP,OAAO,CA6DE,QAAQ,CAAC;EACd,KAAK,EAAE,KAAK;CAAG;;AAErB,AACE,eADa,CACb,eAAe,CAAC;EACd,QAAQ,EAAE,MAAM;EAChB,OAAO,EAAE,IAAI;EACb,IAAI,EAAE,CAAC;EACP,cAAc,EAAE,MAAM;CAAG;;AAL7B,AAME,eANa,CAMb,KAAK,CAAC;EACJ,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,IAAI;CAAG;;AARtB,AASE,eATa,CASb,QAAQ,EATV,eAAe,CASH,SAAS,CAAC;EAClB,IAAI,EAAE,CAAC;EA7LT,MAAM,EAVO,KAAI;EAWjB,gBAAgB,EARN,IAAI;EASd,aAAa,EAZA,KAAI;EAajB,OAAO,EAbM,KAAI;CAwMC;;AAXpB,AAYE,eAZa,CAYb,SAAS,CAAC;EACR,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,IAAI;CAGO;;AAlBvB,AAgBI,eAhBW,CAYb,SAAS,CAIP,MAAM,CAAC;EACL,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,IAAI;CAAG;;AAlBrB,AAmBE,eAnBa,CAmBb,QAAQ,CAAC;EACP,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,GAAG,CAAC,KAAK,CA/MT,IAAI;EAgNZ,OAAO,EAAE,IAAI;EACb,qBAAqB,EAAE,SAAS;EAChC,kBAAkB,EAAE,UAAU;EAC9B,mBAAmB,EAAE,2BAA2B;CAoB1B;;AA7C1B,AA0BI,eA1BW,CAmBb,QAAQ,AAOL,SAAS,CAAC;EACT,YAAY,EAnNN,IAAI;CAmNiB;;AA3BjC,AA4BI,eA5BW,CAmBb,QAAQ,CASN,OAAO,CAAC;EACN,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,KAAK;CAAG;;AA9BzB,AA+BI,eA/BW,CAmBb,QAAQ,CAYN,KAAK,CAAC;EACJ,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,IAAI;CAAG;;AAjCzB,AAkCI,eAlCW,CAmBb,QAAQ,CAeN,KAAK,CAAC;EACJ,SAAS,EAAE,IAAI;EACf,YAAY,EAAE,KAAK;CAIO;;AAxChC,AAqCM,eArCS,CAmBb,QAAQ,CAeN,KAAK,CAGH,CAAC,CAAC;EACA,MAAM,EAnOC,KAAI;EAoOX,OAAO,EAAE,MAAM;EACf,cAAc,EAAE,GAAG;CAAG;;AAxC9B,AAyCI,eAzCW,CAmBb,QAAQ,CAsBN,OAAO,CAAC;EACN,SAAS,EAAE,MAAM;EACjB,YAAY,EAAE,KAAK;EACnB,UAAU,EAAE,GAAG;EACf,SAAS,EAAE,IAAI;CAAG;;AA7CxB,AA8CE,eA9Ca,CA8Cb,GAAG,CAAC;EACF,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,YAAY;CAEG;;AAnD5B,AAkDI,eAlDW,CA8Cb,GAAG,CAID,GAAG,CAAC;EACF,UAAU,EAAE,KAAK;CAAG;;AAE1B,AACE,eADa,CACb,SAAS,CAAC;EACR,UAAU,EAAE,IAAI;CAAG;;AAFvB,AAGE,eAHa,CAGb,KAAK,CAAC;EA3ON,MAAM,EAVO,KAAI;EAWjB,gBAAgB,EARN,IAAI;EASd,aAAa,EAZA,KAAI;EAajB,OAAO,EAbM,KAAI;CA4Pc;;AAVjC,AAKI,eALW,CAGb,KAAK,CAEH,KAAK,CAAC;EACJ,KAAK,EAAE,KAAK;CAAG;;AANrB,AAOI,eAPW,CAGb,KAAK,CAIH,KAAK,CAAC;EACJ,YAAY,EAAE,IAAI;CAAG;;AAR3B,AASI,eATW,CAGb,KAAK,CAMH,QAAQ,CAAC;EACP,OAAO,EA5PE,KAAI;CA4PY", "sources": [ "main.sass" ], diff --git a/main.js b/main.js index 421c6ce..8354c65 100644 --- a/main.js +++ b/main.js @@ -1,31 +1,148 @@ /* globals Vue */ /* exported app */ +const layoutsStorage = 'layouts' const servicesStorage = 'services' + +class WebStorageHandler { //TODO: extends loadable + constructor(storage, key, data) { + this.storage = storage + this.key = key + this.data = data || [] + } + + get() { + return this.data + } + + load() { + if (this.storage.getItem(this.key)) { + try { + this.data = JSON.parse(this.storage.getItem(this.key)) + } catch (e) { + this.storage.removeItem(this.key) + } + } + } + + save() { + this.storage.setItem(this.key, JSON.stringify(this.data)) + } +} + var app = new Vue({ el: '#app', data: { showManager: false, + + layouts: new WebStorageHandler(window.localStorage, layoutsStorage, [{ name: 'main', tiles: [] }]), + layoutId: 0, + + services: new WebStorageHandler(window.localStorage, servicesStorage), newService: '', - services: [], + errors: [], bus: new Vue() }, mounted() { - if (localStorage.getItem(servicesStorage)) { //TODO: allow external storage - try { - this.services = JSON.parse(localStorage.getItem(servicesStorage)) - } catch (e) { - localStorage.removeItem(servicesStorage) - } - } + this.layouts.load() + this.services.load() this.bus.$on('error', this.onError) - this.bus.$on('saveAll', this.onSaveAll) - this.bus.$on('save', this.onSave) + this.bus.$on('saveOptions', this.onSaveOptions) + this.bus.$on('saveOption', this.onSaveOption) this.bus.$on('move', this.onMove) + this.bus.$on('remove', this.onRemove) + this.bus.$on('saveService', this.onSaveService) + this.bus.$on('removeService', this.onRemoveService) + }, + computed: { + layout() { + return this.layouts.get()[this.layoutId] + }, + layoutTiles() { + return this.layout.tiles.map((tile, key) => ({ + ...tile, service: this.loadService(key, tile.service), + grid: this.gridPos(tile.position), emiter: this.makeEmiter(key) + })) + } }, methods: { + //Layouts + addLayout() { + this.layouts.get().push({ + name: 'layout' + this.layouts.get().length, tiles: [] + }) + this.layouts.save() + }, + renameSelectedLayout(name) { + this.layout.name = name + this.layouts.save() + }, + removeSelectedLayout() { + this.layouts.get().splice(this.layoutId, 1) + this.layoutId = 0 + this.layouts.save() + }, + //Tiles + showService(id) { + this.layout.tiles.push({ + service: id, position: {}, options: {} + }) + this.layouts.save() + }, + tile(id) { + return this.layout.tiles[id] + }, + onSaveOption({ key, msg }) { + this.$set(this.tile(key).options, msg.key, msg.value) + this.layouts.save() + }, + onSaveOptions({ key, msg }) { + this.tile(key).options = Object.assign({}, this.tile(key).options, msg) + this.layouts.save() + }, + onMove({ key, msg }) { + this.$set(this.tile(key).position, msg.type, Math.max(1, + (this.tile(key).position[msg.type] || 1) + msg.direction + )) + this.layouts.save() + }, + onRemove({ key }) { + this.layout.tiles.splice(key, 1) + this.layouts.save() + }, + + //Services + loadService(key, id) { + const ser = this.services.get()[id] + if (ser) + return ser + else { + this.onRemove({ key }) + this.addError('Removing missing service') + } + }, + addService() { + if (this.newService) { + this.services.get().push({ type: this.newService, name: this.newService, auth: {} }) + this.services.save() + this.showService(this.services.get().length - 1) + this.newService = '' + } + }, + onSaveService({ key, msg }) { + const service = this.loadService(key, this.tile(key).service) + service.name = msg.name + service.auth = msg.auth + this.services.save() + }, + onRemoveService({ key }) { + this.services.get().splice(this.tile(key).service, 1) + this.onRemove({ key }) + this.services.save() + }, + //Errors onError(event) { this.addError(event.msg.toString()) @@ -36,47 +153,12 @@ var app = new Vue({ removeError(id) { this.errors.splice(id, 1) }, - //Services - addService() { - if (!this.newService) - return - this.services.push({ - type: this.newService, - options: {}, position: {} - }) - this.newService = '' - this.showManager = false - this.saveServices() - }, - onSave({ key, msg }) { - this.$set(this.services[key].options, msg.key, msg.value) - this.saveServices() - }, - onSaveAll({ key, msg }) { - this.$set(this.services, key, { - ...this.services[key], - options: msg - }) - this.saveServices() - }, - onMove({ key, msg }) { - this.$set(this.services[key].position, msg.type, Math.max(1, - (this.services[key].position[msg.type] || 1) + msg.direction - )) - this.saveServices() - }, - removeService(id) { - this.services.splice(id, 1) - this.saveServices() - }, - saveServices() { - localStorage.setItem(servicesStorage, JSON.stringify(this.services)) - }, - gridPos(id, position = {}) { + //Helpers + gridPos(position = {}) { return { 'grid-row': `${position.x || 1} / span ${position.h || 2}`, - 'grid-column': `${position.y || id*2+1} / span ${position.w || 2}` + 'grid-column': `${position.y || 1} / span ${position.w || 2}` } }, makeEmiter(key) { diff --git a/main.sass b/main.sass index 5042522..2c20d58 100644 --- a/main.sass +++ b/main.sass @@ -57,33 +57,52 @@ input, select, button .error @include tile -#manager +#content + display: flex + flex-direction: column + height: 100vh + +#showManager position: absolute bottom: 0 +#manager + background-color: $tileColor + border-radius: $borderRadius + padding-left: 1em + height: 1.3em + display: flex + justify-content: space-between + +#layout-select + display: flex + #services - height: 100vh + flex: 1 + overflow: hidden display: grid grid-gap: .2em grid-template-columns: repeat(8, minmax(0, 1fr)) grid-template-rows: repeat(4, minmax(0, 1fr)) justify-items: stretch - & > div + .tile overflow: auto - display: flex - flex-direction: column - .service-header - .title, .settings - @include tile - .title - font-size: large - text-align: center - font-weight: bold - .settings .position - float: right - width: 1.2em - .service-content - overflow: hidden + & > div + height: 100% + display: flex + flex-direction: column + .service-header + .title, .settings + @include tile + .title + font-size: large + text-align: center + font-weight: bold + .settings .position + float: right + width: 1.2em + .service-content + overflow: hidden .service-loader display: inline-block width: 64px