| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- MWF.xApplication.SmartOfficeRoom.options.multitask = false;
- MWF.xApplication.SmartOfficeRoom.Main = new Class({
- Extends: MWF.xApplication.Common.Main,
- Implements: [Options, Events],
- options: {
- "style1": "default",
- "style": "default",
- "name": "SmartOfficeRoom",
- "icon": "icon.png",
- "width": "420",
- "height": "680",
- "isResize": false,
- "isMax": false,
- "title": MWF.xApplication.SmartOfficeRoom.LP.title
- },
- onQueryLoad: function(){
- this.lp = MWF.xApplication.SmartOfficeRoom.LP;
- this.action = MWF.Actions.get("x_smartoffice_control");
- },
- reload: function(){
- this.deviceContent.setStyle("display", "block");
- if (this.selectDeviceContent) this.selectDeviceContent.setStyle("display", "none");
- },
- loadApplication: function(callback){
- this.devices = [];
- this.size = this.content.getSize();
- var itemWidth = (this.size.x/2).toInt()-22;
- this.css.itemNode.width = ""+itemWidth+"px";
- this.loadDeviceContent();
- if (callback) callback();
- },
- loadDeviceContent: function(){
- this.deviceContent = new Element("div", {"styles": this.css.contentNode}).inject(this.content);
- this.loadDevices();
- this.loadConfigButton();
- },
- loadDevices: function(){
- this.action.listDevice(function(json){
- if (callback) callback();
- });
- },
- loadConfigButton: function(){
- this.addActionNode = new Element("div", {"styles": this.css.itemNode}).inject(this.deviceContent);
- this.addActionTextNode = new Element("div", {"styles": this.css.addActionTextNode, "text": this.lp.add}).inject(this.addActionNode);
- this.addActionIconNode = new Element("div", {"styles": this.css.addActionIconNode}).inject(this.addActionNode);
- this.addActionIconNode.addEvents({
- "mouseover": function(){this.addActionIconNode.setStyles(this.css.addActionIconNode_over); this.addActionTextNode.setStyle("color", "#3498db");}.bind(this),
- "mouseout": function(){this.addActionIconNode.setStyles(this.css.addActionIconNode); this.addActionTextNode.setStyle("color", "#999");}.bind(this),
- "click": function(e){
- this.addActionIconNode.setStyles(this.css.addActionIconNode); this.addActionTextNode.setStyle("color", "#999");
- this.createNewDevice(e);
- }.bind(this)
- });
- },
- createNewDevice: function(){
- this.deviceContent.setStyle("display", "none");
- if (!this.selectDeviceContent) this.createSelectDeviceContent();
- this.selectDeviceContent.setStyle("display", "block");
- },
- createSelectDeviceContent: function(){
- var _self = this;
- this.selectDeviceContent = new Element("div", {"styles": this.css.contentNode}).inject(this.content);
- MWF.getJSON(this.path+"device.json", function(json){
- Object.each(json, function(dev){
- var node = new Element("div", {"styles": this.css.selectDeviceNode}).inject(this.selectDeviceContent);
- node.store("dev", dev);
- var iconNode = new Element("div", {"styles": this.css.selectDeviceIconNode}).inject(node);
- iconNode.setStyle("background-image", "url("+this.path+this.options.style+"/device/"+dev.icon+"-off-64.png)");
- var flagNode = new Element("div", {"styles": this.css.selectDeviceFlagNode}).inject(node);
- var contentNode = new Element("div", {"styles": this.css.selectDeviceContentNode}).inject(node);
- var textNode = new Element("div", {"styles": this.css.selectDeviceTextNode, "text": dev.name}).inject(contentNode);
- var desNode = new Element("div", {"styles": this.css.selectDeviceDesNode, "text": dev.description}).inject(contentNode);
- node.addEvents({
- "mouseover": function(){this.setStyles(_self.css.selectDeviceNode_over);},
- "mouseout": function(){this.setStyles(_self.css.selectDeviceNode);},
- "click": function(e){_self.createDevice(this)}
- });
- }.bind(this))
- }.bind(this));
- },
- createDevice: function(node){
- var dev = node.retrieve("dev");
- if (dev && dev["class"]){
- var device = new MWF.xApplication.SmartOfficeRoom.Device[dev["class"]](this);
- device.create();
- }
- }
- });
- MWF.xApplication.SmartOfficeRoom.Device = new Class({
- initialize: function(app, data){
- this.app = app;
- this.css = this.app.css;
- this.lp = this.app.lp;
- this.data = data;
- this.init();
- },
- init: function(){},
- load: function(){},
- getNewData: function(){
- return {
- "name": "",
- "sn": "",
- "description": ""
- }
- },
- create: function(){
- this.data = this.getNewData();
- this.createAreaNode();
- },
- createAreaNode: function(){
- this.areaNode = new Element("div", {"styles": this.css.createContentNode}).inject(this.app.content);
- var size = this.app.content.getSize();
- this.areaNode.setStyle("left", ""+size.x+"px");
- this.createConfigTitle();
- this.createConfigAction();
- this.createConfigContent();
- new Fx.Morph(this.areaNode, {
- "duration": "200"
- }).start({"left": "0px"});
- },
- createConfigTitle: function(){
- this.configTitleNode = new Element("div", {"styles": this.css.configContentTitleNode}).inject(this.areaNode);
- this.configIconNode = new Element("div", {"styles": this.css.configContentIconNode}).inject(this.configTitleNode);
- this.configTextNode = new Element("div", {"styles": this.css.configContentTextNode}).inject(this.configTitleNode);
- },
- createConfigAction: function(){
- this.configActionAreaNode = new Element("div", {"styles": this.css.configActionAreaNode}).inject(this.areaNode);
- this.configSaveActionNode = new Element("div", {"styles": this.css.configSaveActionNode, "text": this.lp.save}).inject(this.configActionAreaNode);
- this.configCancelActionNode = new Element("div", {"styles": this.css.configCancelActionNode, "text": this.lp.cancel}).inject(this.configActionAreaNode);
- this.configSaveActionNode.addEvent("click", this.saveDevice.bind(this));
- this.configCancelActionNode.addEvent("click", this.cancelDevice.bind(this));
- },
- createConfigContent: function(){
- this.configContentNode = new Element("div", {"styles": this.css.configContentNode}).inject(this.areaNode);
- var size = this.app.content.getSize();
- var titleSize = this.configTitleNode.getSize();
- var actionSize = this.configActionAreaNode.getSize();
- var h = size.y-titleSize.y-actionSize.y;
- this.configContentNode.setStyle("height", ""+h+"px");
- this.createConfigInputContent()
- },
- cancelDevice: function(){
- var size = this.app.content.getSize();
- this.app.reload();
- new Fx.Morph(this.areaNode, {
- "duration": "200"
- }).start({"left": ""+size.x+"px"}).chain(function(){
- this.destroy();
- }.bind(this));
- },
- destroy: function(){
- this.areaNode.destroy();
- MWF.release(this);
- },
- saveDevice: function(){
- this.saveDeviceAction(function(){
- this.cancelDevice();
- }.bind(this));
- },
- saveDeviceAction: function(callback){
- if (callback) callback();
- }
- });
- MWF.xApplication.SmartOfficeRoom.Device.Light = new Class({
- Extends: MWF.xApplication.SmartOfficeRoom.Device,
- createConfigInputContent: function(){
- this.configIconNode.setStyle("background-image", "url("+this.app.path+this.app.options.style+"/device/light-32.png)");
- this.configTextNode.set("text", this.data.name || this.lp.newLight);
- var nameTitleNode = new Element("div", {"styles": this.css.configContentItemTitleNode, "text": this.lp.inputName}).inject(this.configContentNode);
- var nameInputAreaNode = new Element("div", {"styles": this.css.configContentItemInputAreaNode}).inject(this.configContentNode);
- this.nameInputNode = new Element("input", {"styles": this.css.configContentItemInputNode}).inject(nameInputAreaNode);
- var snTitleNode = new Element("div", {"styles": this.css.configContentItemTitleNode, "text": this.lp.inputSn}).inject(this.configContentNode);
- var snInputAreaNode = new Element("div", {"styles": this.css.configContentItemInputAreaNode}).inject(this.configContentNode);
- this.snInputNode = new Element("input", {"styles": this.css.configContentItemInputNode}).inject(snInputAreaNode);
- var descriptionTitleNode = new Element("div", {"styles": this.css.configContentItemTitleNode, "text": this.lp.inputDescription}).inject(this.configContentNode);
- var descriptionInputAreaNode = new Element("div", {"styles": this.css.configContentItemTextareaAreaNode}).inject(this.configContentNode);
- this.descriptionInputNode = new Element("textarea", {"styles": this.css.configContentItemTextareaNode}).inject(descriptionInputAreaNode);
- },
- saveDeviceAction: function(callback){
- var name = this.nameInputNode.get("value");
- var sn = this.snInputNode.get("value");
- var description = this.descriptionInputNode.get("value");
- if (!name){
- this.app.notice(this.lp.noname, "error");
- return false;
- }
- if (!sn){
- this.app.notice(this.lp.nosn, "error");
- return false;
- }
- var data = {
- "type": "light",
- "name": name,
- "sn": sn,
- "description": description
- };
- this.app.action.saveDevice(data, function(){
- if (callback) callback();
- });
- }
- });
|