UNPKG

magix-components

Version:
78 lines (77 loc) 1.99 kB
/* ver:1.3.1 */ /* author:xinglie.lkf@alibaba-inc.com */ let Magix = require('magix'); let $ = require('$'); Magix.applyStyle('@index.less'); let barId = Magix.guid('mx_topbar_'); let Vframe = Magix.Vframe; let timer, interval; let percent = 100; let Topbar = { '@{show}'() { clearTimeout(timer); let bar = $('#' + barId); if (!bar.length) { $('body').append(`<div class="@index.less:bar" id="${barId}"></div>`); interval = setInterval(Topbar['@{porgress}'], 300); } }, '@{porgress}'() { let bar = $('#' + barId); if (bar.length) { if (percent > 15) { percent -= (3 + Math.random() * 5); } else if (percent > 4) { percent -= (1 + Math.random()); } bar.css({ transform: `translate3d(-${percent}%,0px,0px)` }); } }, '@{hide}'() { setTimeout(() => { clearInterval(interval); let bar = $('#' + barId); if (bar.length) { bar.css({ transform: `translate3d(0,0px,0px)` }); timer = setTimeout(() => { percent = 100; bar.remove(); }, 400); } }, 0); } }; module.exports = Magix.View.extend({ init(extra) { Magix.Router.on('changed', e => { if (e.path) { Topbar['@{show}'](); } }); let resume = vf => { vf.off('created', Topbar['@{hide}']); vf.on('created', Topbar['@{hide}']); }; let watch = e => { if (e.vframe.id == extra.id) { resume(e.vframe); } }; Vframe.on('add', watch); let vf = Vframe.get(extra.id); if (vf) { resume(vf); } }, render() { Topbar['@{show}'](); } });