123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- Ext.ns('App');
- //Ext.Loader.setConfig({ enabled : true, disableCaching : true });
- //Ext.Loader.setPath('Sch', '../../js/Sch');
- //Ext.require([
- // 'Sch.panel.SchedulerGrid'
- //]);
- Ext.onReady(function() {
- function getUrlParam(name){
- var reg=new RegExp("(^|&)"+name+"=([^&]*)(&|$)");
- var r=window.location.search.substr(1).match(reg);
- if (r!=null) return decodeURI(r[2]);
- return null;
- }
- var prjplanid=getUrlParam("prjplanid");
- var resourcedata=null;
- eventdata=null;
- /** Ext.Ajax.request({
- url : basePath + "plm/resource/getResourceData.action",
- params:{
- id:prjplanid
- },
- method : 'get',
- callback : function(options,success,response){
- var rs = new Ext.decode(response.responseText);
- if(rs.exceptionInfo){
- showError(rs.exceptionInfo);return;
- }
- if(rs.success){
- resourcedata=rs.data.resource;
- eventdata=rs.data.event;
- }
- }
- });**/
- var fiscalYear = {
- displayDateFormat : 'Y-m-d',
- shiftIncrement : 1,
- shiftUnit : "YEAR",
- timeColumnWidth : 90,
- timeResolution : {
- unit : "MONTH",
- increment : 1
- },
- headerConfig : {
- bottom : {
- unit : "MONTH",
- dateFormat : 'M Y'
- },
- middle: {
- unit : "QUARTER",
- renderer : function(start, end, cfg) {
- var quarter = Math.floor(start.getMonth() / 3) + 1,
- fiscalQuarter = quarter === 4 ? 1 : (quarter + 1);
-
- return Ext.String.format('FQ{0} {1}', fiscalQuarter, start.getFullYear() + (fiscalQuarter === 1 ? 1 : 0));
- }
- },
- top : {
- unit : "YEAR",
- cellGenerator : function(viewStart, viewEnd) {
- var cells = [];
-
- // Simplified scenario, assuming view will always just show one US fiscal year
- return [{
- start : viewStart,
- end : viewEnd,
- header : 'Fiscal Year ' + (viewStart.getFullYear() + 1)
- }];
- }
- }
- }
- };
- Sch.preset.Manager.registerPreset("fiscalYear", fiscalYear);
- App.Scheduler.init(resourcedata,eventdata);
- });
- App.Scheduler = {
-
- // Initialize application
- init : function() {
- function getUrlParam(name){
- var reg=new RegExp("(^|&)"+name+"=([^&]*)(&|$)");
- var r=window.location.search.substr(1).match(reg);
- if (r!=null) return decodeURI(r[2]);
- return null;
- }
- var prjplanid=getUrlParam("prjplanid");
- Ext.define('MyModel', {
- extend: 'Sch.model.Event',
- //fields : ['PercentAllocated']
- fields:['Type','PercentAllocated','Name']
- });
- Ext.define('MyResource', {
- extend: 'Sch.model.Resource',
- fields : ['LikesBacon', 'LikesChrome', 'LikesIE6']
- });
- Ext.Ajax.request({
- url : basePath + "plm/resource/getResourceData.action",
- params:{
- id:prjplanid
- },
- method : 'get',
- callback : function(options,success,response){
- var rs = new Ext.decode(response.responseText);
- if(rs.exceptionInfo){
- showError(rs.exceptionInfo);return;
- }
- if(rs.success){
- resourcedata=rs.data.resource;
- eventdata=rs.data.event;
- var resourceStore = Ext.create('Sch.data.ResourceStore', {
- model : 'MyResource',
- data:resourcedata
- });
- var summaryCol = Ext.create("Sch.plugin.SummaryColumn", {
- header : '工时总和(d/h)',
- width: 100,
- showPercent : false
- });
- var summaryCol2 = Ext.create("Sch.plugin.SummaryColumn", {
- header : '区间所占比率(%)',
- showPercent : true,
- align : 'center',
- width: 100,
- renderer : function(j, a, f) {
- var h = this.scheduler, k = this.eventStore, e = h.getStart(), i = h
- .getEnd(), c = 0, b = this.calculate(f.getEvents(), e,
- i);
- if (b <= 0) {
- return ""
- }
- if (this.showPercent) {
- var d = Sch.util.Date.getDurationInMinutes(e, i);
- return (Math.round((b * 100) / d)) + " %"
- } else {
- if (b > 1440) {
- return (b / 1440).toFixed(this.nbrDecimals) + " "
- + Sch.util.Date.getShortNameOfUnit("DAY")
- }
- if (b >= 30) {
- return (b / 60).toFixed(this.nbrDecimals) + " "
- + Sch.util.Date.getShortNameOfUnit("HOUR")
- }
- return b + " " + Sch.util.Date.getShortNameOfUnit("MINUTE")
- }
- },
- });
- var eventStore = Ext.create('Sch.data.EventStore', {
- model : MyModel,
- data:eventdata
- });
-
- var sched = Ext.create("Sch.panel.SchedulerGrid", {
- id:'sched',
- title : '资源分配详情',
- border : true,
- readOnly:true,
- viewPreset: 'weekAndDayLetter',
- renderTo : Ext.getBody(),
- //viewPreset : 'fiscalYear',
- startDate : new Date(2012, 3, 1),
- // height: window.innerHeight,
- height: document.documentElement.clientHeight,
- endDate : new Date(2012, 12, 1),
- rowHeight : 40,
- autoScroll:true,
- loadMask:true,
- layout:'fit',
- lockedGridConfig :{
-
- autoScroll:true,
- collapsible : true,
- },
- schedulerConfig :{
- autoScroll:true,
- collapsible : true,
-
- },
- columnLines : true,
- eventBodyTemplate : new Ext.XTemplate(
- '<div class="sch-percent-allocated-bar" style="height:{PercentAllocated}% " ></div><span class="sch-percent-allocated-text">{[values.PercentAllocated||0]}%</span>'
- ).compile(),
- //eventRenderer : function(ev, res, tplData) {
- // tplData.cls = ev.get('Type') || 'Task';
- // return ev.getName();
- // },
- // Define static columns
-
- columns : [
- {header : '成员名称', width:100, dataIndex : 'Name'},
- summaryCol,summaryCol2,
- ],
- tbar : [
- { text:'上一阶段',
- iconCls : 'icon-previous',
- handler : function() {
- sched.shiftPrevious();
- }
- },
- { text:'下一阶段',
- iconCls : 'icon-next',
- handler : function() {
- sched.shiftNext();
- }
- },
- {
- text : 'Hours',
- toggleGroup : 'presets',
- enableToggle : true,
- pressed : true,
- iconCls : 'icon-calendar',
- handler : function() {
- sched.switchViewPreset('hourAndDay', new Date(2012, 9, 1, 8), new Date(2012, 9, 1, 18));
- }
- },
- {
- text : 'Days',
- toggleGroup : 'presets',
- enableToggle : true,
- iconCls : 'icon-calendar',
- handler : function() {
- sched.switchViewPreset('weekAndDay', new Date(2012, 9, 1), new Date(2012, 9, 21));
- }
- },
- {
- text : 'Weeks',
- toggleGroup : 'presets',
- enableToggle : true,
- iconCls : 'icon-calendar',
- handler : function() {
- sched.switchViewPreset('weekAndMonth');
- }
- },
- {
- text : 'Weeks 2',
- toggleGroup : 'presets',
- enableToggle : true,
- iconCls : 'icon-calendar',
- handler : function() {
- sched.switchViewPreset('weekAndDayLetter');
- }
- },
- {
- text : 'Weeks 3',
- toggleGroup : 'presets',
- enableToggle : true,
- iconCls : 'icon-calendar',
- handler : function() {
- sched.switchViewPreset('weekDateAndMonth');
- }
- },
- {
- text : 'Months',
- toggleGroup : 'presets',
- iconCls : 'icon-calendar',
- handler : function() {
- sched.switchViewPreset('monthAndYear');
- }
- },
- {
- text : 'Years',
- enableToggle : true,
- toggleGroup : 'presets',
- iconCls : 'icon-calendar',
- handler : function() {
- sched.switchViewPreset('year', new Date(2012, 0, 1), new Date(2015, 0, 1));
- }
- },
- ],
- //tooltipTpl:'hahah',
- plugins : [summaryCol,summaryCol2],
- resourceStore : resourceStore,
- eventStore : eventStore
- });
- sched.on('eventmouseenter',function(view,Record,e, eOpts){
- view.tip = Ext.create('Ext.tip.ToolTip', {
- bodyStyle: {
- background: '#C5C1AA',
- },
- bodyCls :'sch-alert',
- target: view.el,
- delegate: view.itemSelector,
- trackMouse: true,
- renderTo: Ext.getBody(),
- listeners: {
- beforeshow: function updateTipBody(tip) {
- tip.update('在进行任务: "' + Record.data.Name + '"');
- }
- }
- });
- });
- var vp = Ext.create("Ext.Viewport", {
- layout : 'border',
- items : [
- {
- region : 'north',
- contentEl : 'north',
- bodyStyle : 'padding:0px',
- //anchor:'100% 100%',
- },
- //anchor:'100% 100%',
- // sched
- ]
- });
- }
- }
- });
- },
- };
|