summaryrefslogtreecommitdiff
path: root/src/web
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-02-15 01:07:09 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-02-15 01:07:09 +0900
commit1febbbb12c8bfb55dda785b8335b32bfb2111e37 (patch)
tree5b4baab9fe42d3e0d0c44856513cec94fb0b2fe4 /src/web
parentwip (diff)
downloadsharkey-1febbbb12c8bfb55dda785b8335b32bfb2111e37.tar.gz
sharkey-1febbbb12c8bfb55dda785b8335b32bfb2111e37.tar.bz2
sharkey-1febbbb12c8bfb55dda785b8335b32bfb2111e37.zip
wip
Diffstat (limited to 'src/web')
-rw-r--r--src/web/app/common/define-widget.ts51
-rw-r--r--src/web/app/common/views/components/widgets/profile.vue5
2 files changed, 56 insertions, 0 deletions
diff --git a/src/web/app/common/define-widget.ts b/src/web/app/common/define-widget.ts
new file mode 100644
index 0000000000..9aed5a8902
--- /dev/null
+++ b/src/web/app/common/define-widget.ts
@@ -0,0 +1,51 @@
+import Vue from 'vue';
+
+export default function(data: {
+ name: string;
+ props: any;
+}) {
+ return Vue.extend({
+ props: {
+ wid: {
+ type: String,
+ required: true
+ },
+ place: {
+ type: String,
+ required: true
+ },
+ wprops: {
+ type: Object,
+ required: false
+ }
+ },
+ computed: {
+ id(): string {
+ return this.wid;
+ }
+ },
+ data() {
+ return {
+ props: data.props
+ };
+ },
+ watch: {
+ props(newProps, oldProps) {
+ if (JSON.stringify(newProps) == JSON.stringify(oldProps)) return;
+ this.$root.$data.os.api('i/update_home', {
+ id: this.id,
+ data: newProps
+ }).then(() => {
+ this.$root.$data.os.i.client_settings.home.find(w => w.id == this.id).data = newProps;
+ });
+ }
+ },
+ created() {
+ if (this.props) {
+ Object.keys(this.wprops).forEach(prop => {
+ this.props[prop] = this.props.data.hasOwnProperty(prop) ? this.props.data[prop] : this.props[prop];
+ });
+ }
+ }
+ });
+}
diff --git a/src/web/app/common/views/components/widgets/profile.vue b/src/web/app/common/views/components/widgets/profile.vue
new file mode 100644
index 0000000000..4a22d2391b
--- /dev/null
+++ b/src/web/app/common/views/components/widgets/profile.vue
@@ -0,0 +1,5 @@
+<template>
+<div class="mkw-profile">
+
+</div>
+</template>