Toaster.js
资源名称:oa.rar [点击查看]
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:7k
源码类别:
OA系统
开发平台:
Java
- /*
- Copyright (c) 2004-2006, The Dojo Foundation
- All Rights Reserved.
- Licensed under the Academic Free License version 2.1 or above OR the
- modified BSD license. For more information on Dojo licensing, see:
- http://dojotoolkit.org/community/licensing.shtml
- */
- dojo.provide("dojo.widget.Toaster");
- dojo.require("dojo.widget.*");
- dojo.require("dojo.lfx.*");
- dojo.require("dojo.html.iframe");
- dojo.widget.defineWidget("dojo.widget.Toaster", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint="clipNode"><div dojoAttachPoint="containerNode" dojoAttachEvent="onClick:onSelect"><div dojoAttachPoint="contentNode"></div></div></div>", templateCssString:".dojoToasterClip {ntposition: absolute;ntoverflow: hidden;n}nn.dojoToasterContainer {ntdisplay: block;ntposition: absolute;ntwidth: 17.5em;ntz-index: 5000;ntmargin: 0px;ntfont:0.75em Tahoma, Helvetica, Verdana, Arial;n}nn.dojoToasterContent{ntpadding:1em;ntpadding-top:0.25em;ntbackground:#73c74a;n}nn.dojoToasterMessage{ ntcolor:#fff;n}n.dojoToasterWarning{ }n.dojoToasterError,n.dojoToasterFatal{ntfont-weight:bold;ntcolor:#fff;n}nnn.dojoToasterWarning .dojoToasterContent{ntpadding:1em;ntpadding-top:0.25em;ntbackground:#d4d943;n} nn.dojoToasterError .dojoToasterContent{ntpadding:1em;ntpadding-top:0.25em;ntbackground:#c46600;n} n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Toaster.css"), messageTopic:"", messageTypes:{MESSAGE:"MESSAGE", WARNING:"WARNING", ERROR:"ERROR", FATAL:"FATAL"}, defaultType:"MESSAGE", clipCssClass:"dojoToasterClip", containerCssClass:"dojoToasterContainer", contentCssClass:"dojoToasterContent", messageCssClass:"dojoToasterMessage", warningCssClass:"dojoToasterWarning", errorCssClass:"dojoToasterError", fatalCssClass:"dojoToasterFatal", positionDirection:"br-up", positionDirectionTypes:["br-up", "br-left", "bl-up", "bl-right", "tr-down", "tr-left", "tl-down", "tl-right"], showDelay:2000, postCreate:function () {
- this.hide();
- dojo.html.setClass(this.clipNode, this.clipCssClass);
- dojo.html.addClass(this.containerNode, this.containerCssClass);
- dojo.html.setClass(this.contentNode, this.contentCssClass);
- if (this.messageTopic) {
- dojo.event.topic.subscribe(this.messageTopic, this, "_handleMessage");
- }
- if (!this.positionDirection || !dojo.lang.inArray(this.positionDirectionTypes, this.positionDirection)) {
- this.positionDirection = this.positionDirectionTypes.BRU;
- }
- }, _handleMessage:function (msg) {
- if (dojo.lang.isString(msg)) {
- this.setContent(msg);
- } else {
- this.setContent(msg["message"], msg["type"], msg["delay"]);
- }
- }, setContent:function (msg, messageType, delay) {
- var delay = delay || this.showDelay;
- if (this.slideAnim && this.slideAnim.status() == "playing") {
- dojo.lang.setTimeout(50, dojo.lang.hitch(this, function () {
- this.setContent(msg, messageType);
- }));
- return;
- } else {
- if (this.slideAnim) {
- this.slideAnim.stop();
- if (this.fadeAnim) {
- this.fadeAnim.stop();
- }
- }
- }
- if (!msg) {
- dojo.debug(this.widgetId + ".setContent() incoming content was null, ignoring.");
- return;
- }
- if (!this.positionDirection || !dojo.lang.inArray(this.positionDirectionTypes, this.positionDirection)) {
- dojo.raise(this.widgetId + ".positionDirection is an invalid value: " + this.positionDirection);
- }
- dojo.html.removeClass(this.containerNode, this.messageCssClass);
- dojo.html.removeClass(this.containerNode, this.warningCssClass);
- dojo.html.removeClass(this.containerNode, this.errorCssClass);
- dojo.html.removeClass(this.containerNode, this.fatalCssClass);
- dojo.html.clearOpacity(this.containerNode);
- if (msg instanceof String || typeof msg == "string") {
- this.contentNode.innerHTML = msg;
- } else {
- if (dojo.html.isNode(msg)) {
- this.contentNode.innerHTML = dojo.html.getContentAsString(msg);
- } else {
- dojo.raise("Toaster.setContent(): msg is of unknown type:" + msg);
- }
- }
- switch (messageType) {
- case this.messageTypes.WARNING:
- dojo.html.addClass(this.containerNode, this.warningCssClass);
- break;
- case this.messageTypes.ERROR:
- dojo.html.addClass(this.containerNode, this.errorCssClass);
- break;
- case this.messageTypes.FATAL:
- dojo.html.addClass(this.containerNode, this.fatalCssClass);
- break;
- case this.messageTypes.MESSAGE:
- default:
- dojo.html.addClass(this.containerNode, this.messageCssClass);
- break;
- }
- this.show();
- var nodeSize = dojo.html.getMarginBox(this.containerNode);
- if (this.positionDirection.indexOf("-up") >= 0) {
- this.containerNode.style.left = 0 + "px";
- this.containerNode.style.top = nodeSize.height + 10 + "px";
- } else {
- if (this.positionDirection.indexOf("-left") >= 0) {
- this.containerNode.style.left = nodeSize.width + 10 + "px";
- this.containerNode.style.top = 0 + "px";
- } else {
- if (this.positionDirection.indexOf("-right") >= 0) {
- this.containerNode.style.left = 0 - nodeSize.width - 10 + "px";
- this.containerNode.style.top = 0 + "px";
- } else {
- if (this.positionDirection.indexOf("-down") >= 0) {
- this.containerNode.style.left = 0 + "px";
- this.containerNode.style.top = 0 - nodeSize.height - 10 + "px";
- } else {
- dojo.raise(this.widgetId + ".positionDirection is an invalid value: " + this.positionDirection);
- }
- }
- }
- }
- this.slideAnim = dojo.lfx.html.slideTo(this.containerNode, {top:0, left:0}, 450, null, dojo.lang.hitch(this, function (nodes, anim) {
- dojo.lang.setTimeout(dojo.lang.hitch(this, function (evt) {
- if (this.bgIframe) {
- this.bgIframe.hide();
- }
- this.fadeAnim = dojo.lfx.html.fadeOut(this.containerNode, 1000, null, dojo.lang.hitch(this, function (evt) {
- this.hide();
- })).play();
- }), delay);
- })).play();
- }, _placeClip:function () {
- var scroll = dojo.html.getScroll();
- var view = dojo.html.getViewport();
- var nodeSize = dojo.html.getMarginBox(this.containerNode);
- this.clipNode.style.height = nodeSize.height + "px";
- this.clipNode.style.width = nodeSize.width + "px";
- if (this.positionDirection.match(/^t/)) {
- this.clipNode.style.top = scroll.top + "px";
- } else {
- if (this.positionDirection.match(/^b/)) {
- this.clipNode.style.top = (view.height - nodeSize.height - 2 + scroll.top) + "px";
- }
- }
- if (this.positionDirection.match(/^[tb]r-/)) {
- this.clipNode.style.left = (view.width - nodeSize.width - 1 - scroll.left) + "px";
- } else {
- if (this.positionDirection.match(/^[tb]l-/)) {
- this.clipNode.style.left = 0 + "px";
- }
- }
- this.clipNode.style.clip = "rect(0px, " + nodeSize.width + "px, " + nodeSize.height + "px, 0px)";
- if (dojo.render.html.ie) {
- if (!this.bgIframe) {
- this.bgIframe = new dojo.html.BackgroundIframe(this.containerNode);
- this.bgIframe.setZIndex(this.containerNode);
- }
- this.bgIframe.onResized();
- this.bgIframe.show();
- }
- }, onSelect:function (e) {
- }, show:function () {
- dojo.widget.Toaster.superclass.show.call(this);
- this._placeClip();
- if (!this._scrollConnected) {
- this._scrollConnected = true;
- dojo.event.connect(window, "onscroll", this, "_placeClip");
- }
- }, hide:function () {
- dojo.widget.Toaster.superclass.hide.call(this);
- if (this._scrollConnected) {
- this._scrollConnected = false;
- dojo.event.disconnect(window, "onscroll", this, "_placeClip");
- }
- dojo.html.setOpacity(this.containerNode, 1);
- }});