Переглянути джерело

Remove old Schedule js file no more used

Fix edit event rights
master
tr4ck3ur des JM2L 9 роки тому
джерело
коміт
976ec7ddc5
3 змінених файлів з 2 додано та 441 видалено
  1. +0
    -437
      jm2l/static/js/Schedule.js
  2. +0
    -2
      jm2l/templates/Public/Programme.mako
  3. +2
    -2
      jm2l/views.py

+ 0
- 437
jm2l/static/js/Schedule.js Переглянути файл

@@ -1,437 +0,0 @@
/**
* inspired from @author Dimitry Kudrayvtsev
* @author tr4ck3ur
*/

d3.sched = function(EventType) {
var FIT_TIME_DOMAIN_MODE = "fit";
var FIXED_TIME_DOMAIN_MODE = "fixed";
var myname = EventType;
var margin = {
top : 15,
right : 10,
bottom : 10,
left : 50
};
var timeDomainStart = d3.time.hour.offset(new Date(),-2);
var timeDomainEnd = d3.time.hour.offset(new Date(),+2);
var timeDomainMode = FIT_TIME_DOMAIN_MODE;// fixed or fit
var taskTypes = [];
var taskStatus = [];
//var height = document.body.clientHeight - margin.top - margin.bottom-5;
height = 700;
//var width = document.body.clientWidth - margin.right - margin.left-5;
var width = 700;// - margin.right - margin.left;
var tickFormat = "%H:%M";
var lastscale = -1;

var xScale = d3.scale.ordinal()
.domain(taskTypes)
.rangeRoundBands([ 0, width - margin.left], .1);
var yScale = d3.time.scale()
.domain([ timeDomainStart, timeDomainEnd ])
.range([ 0, height - margin.top ]) //- margin.bottom ]);
.clamp(true);

var xAxis = d3.svg.axis()
.scale(xScale)
.orient("left")
.tickSize(1);

var yAxis = d3.svg.axis()
.scale(yScale)
.orient("bottom")
.tickFormat(d3.time.format(tickFormat))
.tickSubdivide(true)
.tickSize(8).tickPadding(8);

var keyFunction = function(d) {
return d.startDate + d.placeName + d.endDate;
};

var rectTransform = function(d) {
return "translate(" + xScale(d.placeName) + "," + yScale(d.startDate) + ")";
};

var initTimeDomain = function(tasks) {
if (timeDomainMode === FIT_TIME_DOMAIN_MODE) {
if (tasks === undefined || tasks.length < 1) {
timeDomainStart = d3.time.day.offset(new Date(), -3);
timeDomainEnd = d3.time.hour.offset(new Date(), +3);
return;
}
tasks.sort(function(a, b) {
return a.endDate - b.endDate;
});
timeDomainEnd = tasks[tasks.length - 1].endDate;
tasks.sort(function(a, b) {
return a.startDate - b.startDate;
});
timeDomainStart = tasks[0].startDate;
}
};

var initAxis = function() {

xScale = d3.scale.ordinal()
.domain(taskTypes)
.rangeRoundBands([ 0, width ], .1);
yScale = d3.time.scale()
.domain([ timeDomainStart, timeDomainEnd ])
.range([ 0, height - margin.top - margin.bottom ])
.clamp(true);

xAxis = d3.svg.axis()
.scale(xScale)
.orient("top")
.tickSize(1);

yAxis = d3.svg.axis()
.scale(yScale)
.orient("left")
.tickFormat(d3.time.format(tickFormat))
.tickSubdivide(true)
.tickSize(8)
.tickPadding(8);
};
function sched(tasks) {
initTimeDomain(tasks);
initAxis();

function zoomed() {
var px = d3.event.translate[0];
var py = d3.event.translate[1];
var dx = 0;
timeDomainStart = d3.time.hour.offset( timeDomainStart, 0)
if (py>0) {
dx = timeDomainStart.getTime()-yScale.invert(py).getTime()
} else {
dx = -timeDomainStart.getTime()+yScale.invert(-py).getTime()
}
NewStart = d3.time.hour.offset( timeDomainStart.getTime()+dx, 0)
//NewEnd = d3.time.hour.offset( timeDomainStart.getTime()+dx, 0) //.3*d3.event.scale)
//yScale.domain([ NewStart , NewEnd ])
sched.timeDomainMode("fit")
//sched.timeDomain([ NewStart , NewEnd ]);
//timeDomainStart = NewStart
//timeDomainEnd = NewEnd
var dy = py;
var dz = timeDomainEnd-timeDomainStart
if (py>0)
var dx = timeDomainStart-yScale.invert(py).getTime()
else
var dx = -timeDomainStart+yScale.invert(-py).getTime()
//yScale.domain([ timeDomainStart, d3.time.hour.offset(timeDomainStart, d3.event.scale*4) ])
// .range([ 0, height - margin.top - margin.bottom ])
// .clamp(true);
//yScale2.domain([ NewStart, d3.time.hour.offset(NewStart, d3.event.scale*4) ])
// .range([ 0, height - margin.top - margin.bottom ])
// .clamp(true);
//
if (0 && lastscale!=d3.event.scale) {
lastscale = d3.event.scale;
yScale.domain([ timeDomainStart, d3.time.hour.offset(timeDomainStart, d3.event.scale*4) ])
.range([ 0, height - margin.top - margin.bottom ])
.clamp(true);
//Saved = chart.attr("transform");
//coords = Saved.slice(Saved.search(/([0-9]+)/g),Saved.length-1).split(',');
//chart.attr("transform", "translate(" + px + "," + py + ")");
//zoom.translate((80,120))
//zoom.center([121, 21])
//sched.redraw(this.id, tasks);
//zoom.translate()
//chart.attr("transform", "translate(" + parseInt(coords[0])+px + "," + parseInt(coords[1])+py + ")");
//chart.attr("transform", "translate(" + 121 + "," + 21 + ")");
chart.attr("transform", "translate(" + px + "," + py + ")");
}
// else {
// chart.attr("transform", "translate(" + px + "," + py + ")");
//}
var dxr = d3.time.hour.offset( timeDomainStart+dx, 0)
//ind.text( py +" "+ dz +" => "+ d3.event.scale )
//if ( DragLimit.xmin < (-px) && (-px) < DragLimit.xmax ) {
// } else {
// d3.event.sourceEvent.stopPropagation();
// }

//sched.redraw(tasks);


//sched.timeDomain([ d3.time.hour.offset(mystart,0), d3.time.hour.offset(mystart, d3.event.scale) ]);
if (1) {
svg.select(".yAxis")
.attr("transform", "translate("+ margin.left +","+ margin.top +")")// + py + ")")
.transition()
.call(yAxis);

//svg.select(".yAxis2")
// .attr("transform", "translate(80,0)")
// .call(yAxis2);
svg.select(".xAxis")
.attr("transform", "translate("+ margin.left +","+ margin.top +")")
.transition()
.call(xAxis);
chart.attr("transform", "translate("+ margin.left +","+ margin.top +")");
}
}

var zoom = d3.behavior.zoom()
.scaleExtent([1, 4])
.on("zoom", zoomed);
var svg = d3.select("#Schedule_"+EventType)
.append("svg")
.attr("id", EventType)
.attr("class", "chart")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.call(zoom);
var chart = svg.append("g")
.attr("class", "sched-chart");

chart.selectAll(".sched-chart")
.data(tasks, keyFunction).enter()
.append("rect")
.attr("class", function(d){
if(taskStatus[d.status] == null)
{ return "bar";}
return taskStatus[d.status];
});

if (0) {
chart.selectAll('.foreignObject')
.data(tasks, keyFunction).enter()
.append('foreignObject')
.attr("x", function(d){
return xScale(d.placeName || "unk");
})
.attr("y", function(d){
return yScale(d.startDate);
})
//.attr("y", 0)
//.attr("x", 2)
//.attr("transform", rectTransform)
.attr("width", function(d) {
return xScale.rangeBand();
})
.attr("height", function(d) {
return (yScale(d.endDate) - yScale(d.startDate));
})
.append("xhtml:div")
.html(function(d) {
return '<div style="padding:2px;height:100%"><a href="/event/'+ d.uid +
'">' + d.desc + '</a></div>'
});
}
/* svg.selectAll("text")
.data(tasks, keyFunction).enter()
.append("text")
.text(function(d) { return d.desc; })
.attr("x", 2)
.attr("y", 16)
.attr("transform", rectTransform)
.attr("width", function(d) {
return x.rangeBand();
})
.fill('blue');
*/

svg.append("g")
.attr("class", "xAxis axis");
svg.append("g")
.attr("class", "yAxis axis");
//zoomed();
//sched.redraw(tasks);
return sched;

};
sched.redraw = function(who, tasks) {

//initTimeDomain(tasks);
//initAxis();
var svg = d3.select("#"+who);

var schedChartGroup = svg.select(".sched-chart");
var rect = schedChartGroup.selectAll("rect")
.data(tasks, keyFunction);
rect.enter()
.insert("rect",":first-child")
.attr("rx", 5)
.attr("ry", 5)
.attr("class", function(d){
if(taskStatus[d.status] == null)
{ return "bar";}
return taskStatus[d.status];
})
//.transition()
.attr("x", function(d){
return xScale(d.placeName || "unk");
})
.attr("y", function(d){
return yScale(d.startDate);
})
//.attr("transform", rectTransform)
.attr("width", function(d) {
return xScale.rangeBand();
})
.attr("height", function(d) {
return (yScale(d.endDate) - yScale(d.startDate));
});

rect.transition()
//.attr("transform", rectTransform)
.attr("x", function(d){
return xScale(d.placeName || "unk");
})
.attr("y", function(d){
return yScale(d.startDate);
})
.attr("width", function(d) {
return xScale.rangeBand();
})
.attr("height", function(d) {
return (yScale(d.endDate) - yScale(d.startDate));
});
rect.exit()
.remove();

var content = schedChartGroup.selectAll("foreignObject")
.data(tasks, keyFunction);

content.enter()
.insert("foreignObject",":first-child")
//.transition()
.attr("x", function(d){
return xScale(d.placeName || "unk");
})
.attr("y", function(d){
return yScale(d.startDate);
})
//.attr("transform", rectTransform)
.attr("width", function(d) {
return xScale.rangeBand();
})
.attr("height", function(d) {
return (yScale(d.endDate) - yScale(d.startDate));
})
.append("xhtml:div")
.html(function(d) {
return '<div style="padding:2px;height:100%"><a href="/event/'+ d.uid +
'">' + d.desc + '</a></div>'
});

content.transition()
//.attr("transform", rectTransform)
.attr("x", function(d){
return xScale(d.placeName || "unk");
})
.attr("y", function(d){
return yScale(d.startDate);
})
.attr("width", function(d) {
return xScale.rangeBand();
})
.attr("height", function(d) {
return (yScale(d.endDate) - yScale(d.startDate));
});
content.exit()
.remove();



return sched;
};

sched.margin = function(value) {
if (!arguments.length)
return margin;
margin = value;
return sched;
};

sched.timeDomain = function(value) {
if (!arguments.length)
return [ timeDomainStart, timeDomainEnd ];
timeDomainStart = +value[0], timeDomainEnd = +value[1];
return sched;
};

/**
* @param {string}
* vale The value can be "fit" - the domain fits the data or
* "fixed" - fixed domain.
*/
sched.timeDomainMode = function(value) {
if (!arguments.length)
return timeDomainMode;
timeDomainMode = value;
return sched;
};

sched.taskTypes = function(value) {
if (!arguments.length)
return taskTypes;
taskTypes = value;
return sched;
};
sched.taskStatus = function(value) {
if (!arguments.length)
return taskStatus;
taskStatus = value;
return sched;
};

sched.width = function(value) {
if (!arguments.length)
return width;
width = +value;
return sched;
};

sched.height = function(value) {
if (!arguments.length)
return height;
height = +value;
return sched;
};

sched.tickFormat = function(value) {
if (!arguments.length)
return tickFormat;
tickFormat = value;
return sched;
};

sched.name = function(value) {
if (!arguments.length)
return myname;
myname = value;
return sched;
};

return sched;
};

+ 0
- 2
jm2l/templates/Public/Programme.mako Переглянути файл

@@ -151,6 +151,4 @@ if Counter==0:
##</div>
<br/><br/>
<script type="text/javascript" src="/vendor/d3js/d3.v3.min.js"></script>
##<script type="text/javascript" src="/js/Schedule.js"></script>
<script type="text/javascript" src="/js/programme.js"></script>
##<script type="text/javascript" src="/js/sched.js"></script>

+ 2
- 2
jm2l/views.py Переглянути файл

@@ -759,7 +759,7 @@ def edit_event(request):
if TheEvent is None:
raise HTTPNotFound(u"Cette réference n'existe pas")

if not (request.user.uid==1 or request.user in TheEvent.intervenants):
if request.user is None or not (request.user.Staff or request.user in TheEvent.intervenants):
return HTTPForbidden(u"Vous n'êtes pas identifié comme étant un participant à cette intervention.")
# Compute some field value from selected event
if TheEvent.start_time in TheYear[0].AvailableTimeSlots:
@@ -1063,7 +1063,7 @@ def notfound(reason, request):

@forbidden_view_config()
def forbidden(reason, request):
return Response('forbidden')
#return Response('forbidden')
request.response.status = 404
return render_to_response('jm2l:templates/Errors/404.mak', { "reason":reason },
request=request)

Завантаження…
Відмінити
Зберегти