diff options
Diffstat (limited to 'src/server/web/app/common/define-widget.ts')
| -rw-r--r-- | src/server/web/app/common/define-widget.ts | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/src/server/web/app/common/define-widget.ts b/src/server/web/app/common/define-widget.ts deleted file mode 100644 index 27db59b5ee..0000000000 --- a/src/server/web/app/common/define-widget.ts +++ /dev/null @@ -1,79 +0,0 @@ -import Vue from 'vue'; - -export default function<T extends object>(data: { - name: string; - props?: () => T; -}) { - return Vue.extend({ - props: { - widget: { - type: Object - }, - isMobile: { - type: Boolean, - default: false - }, - isCustomizeMode: { - type: Boolean, - default: false - } - }, - computed: { - id(): string { - return this.widget.id; - } - }, - data() { - return { - props: data.props ? data.props() : {} as T, - bakedOldProps: null, - preventSave: false - }; - }, - created() { - if (this.props) { - Object.keys(this.props).forEach(prop => { - if (this.widget.data.hasOwnProperty(prop)) { - this.props[prop] = this.widget.data[prop]; - } - }); - } - - this.bakeProps(); - - this.$watch('props', newProps => { - if (this.preventSave) { - this.preventSave = false; - this.bakeProps(); - return; - } - if (this.bakedOldProps == JSON.stringify(newProps)) return; - - this.bakeProps(); - - if (this.isMobile) { - (this as any).api('i/update_mobile_home', { - id: this.id, - data: newProps - }).then(() => { - (this as any).os.i.account.clientSettings.mobile_home.find(w => w.id == this.id).data = newProps; - }); - } else { - (this as any).api('i/update_home', { - id: this.id, - data: newProps - }).then(() => { - (this as any).os.i.account.clientSettings.home.find(w => w.id == this.id).data = newProps; - }); - } - }, { - deep: true - }); - }, - methods: { - bakeProps() { - this.bakedOldProps = JSON.stringify(this.props); - } - } - }); -} |