Commit 5454bda1 by aa.gusti

Merge branch 'eis-tasik' of http://git.opensipkd.com/project/eis into eis-tasik

Conflicts:
	__pycache__/__init__.cpython-34.pyc
	__pycache__/tools.cpython-34.pyc
	scripts/__pycache__/__init__.cpython-34.pyc
	scripts/__pycache__/initial_data.cpython-34.pyc
	scripts/__pycache__/initializedb.cpython-34.pyc
2 parents 801d2dda 059f81a7
......@@ -21,7 +21,8 @@ from sqlalchemy.orm import (
from zope.sqlalchemy import ZopeTransactionExtension
from ...models import (CommonModel, DefaultModel as BaseDefaultModel,
Base as EisBase, DBSession as EisDBSession)
Base as EisBase, DBSession as EisDBSession,
KodeModel as BaseKodeModel, NamaModel as BaseNamaModel)
TABLE_ARGS = {'extend_existing':True,
'schema':'eis'
......@@ -30,7 +31,6 @@ TABLE_ARGS = {'extend_existing':True,
class DefaultModel(BaseDefaultModel):
def save(self):
if self.id:
#Who knows another user edited, so use merge ()
EisDBSession.merge(self)
else:
EisDBSession.add(self)
......@@ -40,37 +40,13 @@ class DefaultModel(BaseDefaultModel):
return EisDBSession.query(cls)
@classmethod
def query_id(cls, id):
return cls.query().filter_by(id=id)
@classmethod
def delete(cls, id):
cls.query_id(id).delete()
@classmethod
def count(cls):
return EisDBSession.query(func.count('id')).scalar()
class KodeModel(DefaultModel):
kode = Column(String(32))
status = Column(SmallInteger, nullable=False, default=0)
created = Column(DateTime, nullable=True, default=datetime.utcnow)
updated = Column(DateTime, nullable=True)
create_uid = Column(Integer, nullable=True, default=1)
update_uid = Column(Integer, nullable=True)
@classmethod
def query_kode(cls,kode):
return cls.query().filter_by(kode=kode)
class KodeModel(DefaultModel, BaseKodeModel):
pass
@classmethod
def get_active(cls):
return cls.query().filter_by(status=1).all()
class NamaModel(KodeModel):
nama = Column(String(128))
@classmethod
def query_nama(cls, nama):
return cls.query().filter_by(nama=nama)
class NamaModel(KodeModel, BaseNamaModel):
pass
from .eis import Eis, Slide, Chart, ChartItem, EisParams, ArPayment, LastUpdate
\ No newline at end of file
......@@ -21,7 +21,7 @@ from sqlalchemy.orm import (
from ..models import (EisDBSession, DefaultModel, EisBase, NamaModel, TABLE_ARGS)
class Eis(EisBase, NamaModel):
__tablename__ = 'wells'
__tablename__ = 'harian'
tahun = Column(Integer)
amt_tahun = Column(BigInteger)
amt_bulan = Column(BigInteger)
......
......@@ -21,3 +21,7 @@
21,"4.1.1.12-L",1,"2014-12-29 12:14:36.794257","2017-02-22 15:34:10.721423",1,1,"PAJAK BUMI DAN BANGUNAN PERDESAAN PERKOTAAN JAN-DES (LINE)","line","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
22,"G-PIE-01",1,"2014-12-29 17:21:50.753007","2017-02-22 15:41:15.726212",1,1,"LINGKARAN PBB, BPHTB, LAINNYA","pie","LINGKARAN ",1
23,"G-PIE-02",1,"2014-12-29 17:25:33.598864","2017-02-22 15:41:21.251646",1,1,"PAJAK LAINNYA ","pie","PAJAK LAINNYA",1
101,"SIPKD-PB-LINE",1,"2017-08-21 16:57:04.27919","2017-08-21 17:35:34.736341",1,1,"REALISASI PENDAPATAN BELANJA LINE","line","JAN,FEB,MAR,APR,MEI,JUN,JUL,AGU,SEP,OKT,NOP,DES",1
102,"SIPKD-PB-BAR",1,"2017-08-21 17:28:06.157326","2017-08-21 17:35:52.442914",1,1,"REALISASI PENDAPATAN DAN BELANJA BAR","bar","JAN,FEB,MAR,APR,MEI,JUN,JUL,AGU,SEP,OKT,NOP,DES",1
103,"SIPKD-P-PIE",1,"2017-08-21 18:01:17.878029","2017-08-21 18:04:29.044764",1,1,"SIPKD PENDAPATAN PIE","pie","JAN-DES",1
104,"SIPKD-B-PIE",1,"2017-08-21 18:03:39.117617","2017-08-21 18:04:17.37657",1,1,"SIPKD-B-PIE","pie","JAN,FEB,MAR,APR,MEI,JUN,JUL,AGU,SEP,OKT,NOP,DES",1
......@@ -49,3 +49,14 @@
55,"G-PIE-PPJ",1,"2014-12-29 17:29:18.104021","2015-12-05 19:59:38.063275",1,1,"PPJ",8383025652,0,0,0,0,0,0,0,0,0,0,0,23,"realisasi","4.1.1.05","cd10a3",,0
56,"G-PIE-PARK",1,"2014-12-29 17:29:48.484898","2015-12-05 19:59:30.6719",1,1,"PARKIR",8246913185,0,0,0,0,0,0,0,0,0,0,0,23,"realisasi","4.1.1.06","e07d34",,0
57,"P-GIE-TANAH",1,"2014-12-29 17:30:22.49536","2015-12-05 19:59:20.347651",1,1,"AIR TANAH",465415392,0,0,0,0,0,0,0,0,0,0,0,23,"realisasi","4.1.1.07","2b45dd",,0
60,"SIPKD-PB-LINE-4",0,"2017-08-21 16:59:20.068074","2017-08-21 17:03:57.372826",1,1,"Pendapatan",10,20,30,40,50,60,70,80,90,100,110,120,101,"target","None","None","None",0
61,"SIPKD-PB-LINE-5",0,"2017-08-21 17:00:31.168908","",1,,"Belanja",15,20,25,40,45,70,80,90,100,110,120,130,101,"realisasi","","","",0
62,"SIPKD-PB-BAR-4",0,"2017-08-21 17:29:34.855309","",1,,"PENDAPATAN",10,20,30,40,10,20,25,30,60,10,20,10,102,"target","4","","",0
63,"SIPKD-PB-BAR-5",0,"2017-08-21 17:30:21.787894","",1,,"BELANJA",5,10,5,5,30,5,5,5,10,10,10,10,102,"realisasi","5","","",0
64,"SIPKD-P-PIE-PAD",0,"2017-08-21 18:06:50.489604","2017-08-21 18:17:12.15733",1,1,"PAD",100,0,0,0,0,0,0,0,0,0,0,0,103,"realisasi","4.1","FF0000","None",0
65,"SIPKD-P-PIE-PER",0,"2017-08-21 18:08:05.376206","2017-08-21 18:17:41.268358",1,1,"PERIMBANGAN",75,0,0,0,0,0,0,0,0,0,0,0,103,"realisasi","4.2","00FF00","None",0
66,"SIPKD-P-PIE-LAIN",0,"2017-08-21 18:08:38.668067","2017-08-21 18:17:50.614037",1,1,"LAIN-LAIN",100,0,0,0,0,0,0,0,0,0,0,0,103,"realisasi","4.3","0000FF","None",0
67,"SIPKD-B-PIE-BTL",0,"2017-08-21 18:22:27.629004","",1,,"BTL",100,0,0,0,0,0,0,0,0,0,0,0,104,"realisasi","5.1","00FF00","",0
68,"SIPKD-B-PIE-BP",0,"2017-08-21 18:23:20.139218","",1,,"PEGAWAI",30,0,0,0,0,0,0,0,0,0,0,0,104,"realisasi","5.2.1","AA0000","",0
69,"SIPKD-B-PIE-BJ",0,"2017-08-21 18:24:12.528633","",1,,"BRG-JASA",300,0,0,0,0,0,0,0,0,0,0,0,104,"realisasi","5.2.2","00AA00","",0
70,"SIPKD-B-PIE-BM",0,"2017-08-21 18:24:41.96833","",1,,"MODAL",100,0,0,0,0,0,0,0,0,0,0,0,104,"realisasi","5.2.3","0000AA","",0
......@@ -28,10 +28,10 @@ from ..models import (
fixtures = [
('routes', RouteData),
('eis.charts', ChartData),
('eis.chart_items', ChartItemData),
('eis.slides', SlideData),
('eis.wells', EisData),
#('eis.charts', ChartData),
#('eis.chart_items', ChartItemData),
#('eis.slides', SlideData),
#('eis.wells', EisData),
]
def insert():
......
......@@ -6,7 +6,3 @@ from pyramid.view import (
)
class BaseView(OsBaseView):
pass
# @view_config(route_name='eis', renderer='templates/home.pt')
# def view_home(self):
# return dict(modules = ['eis'])
\ No newline at end of file
......@@ -8,6 +8,9 @@ from pyramid.httpexceptions import (
from ..views import BaseView
from ..models import EisDBSession
from ..models.eis import Eis, Chart, ChartItem, Slide
from datatables import ColumnDT, DataTables
from sqlalchemy import not_, func, literal_column, and_, or_, String
from sqlalchemy.sql.expression import cast
#from ..tools import row2dict
########
# APP Home #
......@@ -107,3 +110,23 @@ class eis(BaseView):
return json_data
elif req.matchdict['act']=='dasboard':
columns = [
ColumnDT(Eis.nama, mData="jenis_pajak"),
ColumnDT(literal_column("'0'"), mData="target"),
ColumnDT(Eis.amt_bulan, mData="realisasi_bulan_ini"),
ColumnDT(Eis.amt_tahun, mData="realisasi_sampai_dengan"),
ColumnDT(Eis.amt_tahun, mData="sisa_target"),
ColumnDT((Eis.amt_bulan/Eis.amt_tahun)*100, mData="persen"),
]
max_tahun = EisDBSession.query(func.max(Eis.tahun)).scalar()
query = EisDBSession.query().select_from(Eis).\
outerjoin(Slide, Slide.source_id == cast(Eis.id, String)).\
outerjoin(ChartItem, and_(cast(ChartItem.id, String)==Slide.source_id, Slide.id==Slide.id+1)).\
filter(Eis.tahun==max_tahun, Eis.nama!='PAJAK DAERAH').order_by(Eis.order_id)
rowTable = DataTables(req.GET, query, columns)
return rowTable.output_result()
......@@ -25,6 +25,7 @@ def deferred_slide_type(node, kw):
return widget.SelectWidget(values=values)
SLIDE_TYPE = (('','--Pilih--'),
('video','Video'),
('image','Gambar'),
('grid','Grid'),
('chart-line','Chart Garis'),
......
......@@ -29,6 +29,8 @@
margin-top: 4px !important;
margin-bottom: 4px !important;
}
</style>
</div>
<div metal:fill-slot="scripts">
......@@ -73,7 +75,7 @@
<div class="col-md-6">
<div class="alert alert-success">
<h4>&nbsp;</h4>
<h4><u>Hari ini</u></h4>
<h4><u>REALISASI HARI INI</u></h4>
<h2>Rp. <span id="hari_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
......@@ -81,7 +83,7 @@
<div class="col-md-6">
<div class="alert alert-info">
<h4>&nbsp;</h4>
<h4><u>Minggu ini</u></h4>
<h4><u>REALISASI MINGGU INI</u></h4>
<h2>Rp. <span id="minggu_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
......@@ -93,7 +95,7 @@
<div class="alert alert-warning">
<h4>&nbsp;</h4>
<h4><u>Bulan ini</u></h4>
<h4><u>REALISASI BULAN INI</u></h4>
<h2>Rp. <span id="bulan_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
......@@ -101,7 +103,7 @@
<div class="col-md-6">
<div class="alert alert-danger">
<h4>&nbsp;</h4>
<h4><u>Tahun ini</u></h4>
<h4><u>REALISASI TAHUN INI</u></h4>
<h2>Rp. <span id="tahun_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
......@@ -148,6 +150,34 @@
</center>
</div>
</div>
<div class="col-md-12" style="margin-bottom:50px;" tal:condition="dat.source_type=='video'">
<div class="row">
<center>
<div class="row">
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row">
<video id="video_${dat.id}" width="500px" height="500px" controls>
<source src="${dat.source_id}" type="video/mp4">
</video>
</div>
</center>
</div>
<script>
$(document).ready(function() {
var x = document.getElementById("video_${dat.id}");
x.autoplay = true;
x.load();
});
</script>
</div>
<div class="col-md-12" style="margin-bottom:50px;" tal:condition="dat.source_type=='chart-line'">
<div class="row">
<center>
......@@ -167,11 +197,34 @@
<div id="legend_${dat.id}"></div>
</div>
<h5>&nbsp;</h5>
<h5>&nbsp;</h5>
<h5>&nbsp;</h5>
<div class="col-md-2">
<div id="ket_${dat.id}" class="legend">
<span>
<b>Target : </b><div id="ket_target${dat.id}"></div>
</span>
<span>
<b>Realisasi : </b><div id="ket_realisasi${dat.id}"></div>
</span>
<span>
<b>Persentase: </b><div id="ket_persen${dat.id}"></div>
</span>
</div>
</div>
</div>
</center>
</div>
<script>
var lineChartData_${dat.id} = {
labels : [],
datasets : [
......@@ -219,7 +272,10 @@
data: "id=${dat.source_id}",
success: function (html) {
if (html.success == true) {
for (i = 0; i < html.label.length; i++) {
var bulan = (new Date).getMonth();
// console.log('bulan --> '+bulan);
for (i = 0; i < bulan+1; i++) {
lineChartData_${dat.id}.labels.push(html.label[i]);
lineChartData_${dat.id}.datasets[0].data.push(html.target[i]);
lineChartData_${dat.id}.datasets[1].data.push(html.realisasi[i]);
......@@ -231,6 +287,25 @@
});
legend(document.getElementById('legend_${dat.id}'), lineChartData_${dat.id});
var total_target = 0;
for (var i = 0; i < (html.target).length; i++) {
total_target += html.target[i];
// console.log('--> '+html.target[i]);
}
// console.log('Ini adalah data target : '+html.target);
// console.log('Ini adalah total target : '+total_target);
var total_realisasi = 0;
for (var i = 0; i < (html.realisasi).length; i++) {
total_realisasi += html.realisasi[i];
}
var persentase =(Math.round((total_realisasi/total_target)*100))
$("#ket_target${dat.id}").html(total_target.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."));
$("#ket_realisasi${dat.id}").html(total_realisasi.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."));
$("#ket_persen${dat.id}").html(persentase + ' %');
}
},
beforeSend: function () {
......@@ -259,6 +334,24 @@
<div id="legend_${dat.id}"></div>
</div>
<h5>&nbsp;</h5>
<h5>&nbsp;</h5>
<h5>&nbsp;</h5>
<div class="col-md-2">
<div id="ket_${dat.id}" class="legend">
<span>
<b>Target : </b><div id="ket_target${dat.id}"></div>
</span>
<span>
<b>Realisasi : </b><div id="ket_realisasi${dat.id}"></div>
</span>
<span>
<b>Persentase: </b><div id="ket_persen${dat.id}"></div>
</span>
</div>
</div>
</div>
......@@ -270,22 +363,22 @@
datasets : [
{
label: "Target",
fillColor : "rgba(220,220,220,0.2)",
strokeColor : "rgba(220,220,220,1)",
pointColor : "rgba(220,220,220,1)",
fillColor : "rgba(220,0,0,0.8)",
strokeColor : "rgba(220,0,0,1)",
pointColor : "rgba(220,0,0,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(220,220,220,1)",
pointHighlightStroke : "rgba(220,0,0,1)",
data : []
},
{
label: "Realisasi",
fillColor : "rgba(151,187,205,0.2)",
strokeColor : "rgba(151,187,205,1)",
pointColor : "rgba(151,187,205,1)",
fillColor : "rgba(144,178,71,1)",
strokeColor : "rgba(144,178,71,1)",
pointColor : "rgba(144,178,71,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(151,187,205,1)",
pointHighlightStroke : "rgba(144,178,71,1)",
data : []
}
]
......@@ -322,6 +415,32 @@
//responsive: true;
});
legend(document.getElementById('legend_${dat.id}'), barChartData_${dat.id});
// console.log(html.target);
// console.log(html.realisasi);
var total_target = 0;
for (var i = 0; i < (html.target).length; i++) {
total_target += html.target[i];
// console.log('--> '+html.target[i]);
}
// console.log('Ini adalah data target : '+html.target);
// console.log('Ini adalah total target : '+total_target);
var total_realisasi = 0;
for (var i = 0; i < (html.realisasi).length; i++) {
total_realisasi += html.realisasi[i];
}
var persentase = (Math.round((total_realisasi/total_target)*100))
$("#ket_target${dat.id}").html(total_target.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."));
$("#ket_realisasi${dat.id}").html(total_realisasi.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."));
$("#ket_persen${dat.id}").html(persentase + ' %');
// console.log(total_target);
// console.log(total_realisasi);
// document.getElementById('ket_target${dat.id}').value = total_target
// console.log(document.getElementById('ket_target${dat.id}').value);
// document.getElementById('ket_realisasi${dat.id}').value = total_realisasi
}
},
......@@ -362,6 +481,36 @@
//window.myPie_${dat.id} = new Chart(ctx_${dat.id}).Pie(pieData_${dat.id});
var npie = 0 ;
//GET DATA FROM SERVER
var options =
{
tooltipTemplate: "<%if (label){%><%=label%><%}%> (<%= Math.round(circumference / 6.283 * 100) %>%)",
onAnimationComplete: function()
{
this.showTooltip(this.segments, true);
//Show tooltips in bar chart (issue: multiple datasets doesnt work http://jsfiddle.net/5gyfykka/14/)
//this.showTooltip(this.datasets[0].bars, true);
//Show tooltips in line chart (issue: multiple datasets doesnt work http://jsfiddle.net/5gyfykka/14/)
//this.showTooltip(this.datasets[0].points, true);
},
tooltipEvents: [],
showTooltips: true,
tooltipFillColor: 'rgba(225, 220, 0, 0.6)',
tooltipFontColor : '#000',
tooltipFontSize: 10,
tooltipCornerRadius: 3,
tooltipXOffset: 1,
tooltipCaretSize: 8,
}
$.ajax({
type: "POST",
url: "/eis/dashboard/pie/act",
......@@ -373,13 +522,15 @@
"value": val.value,
"color": "#"+val.color,
//highlight: "#"+val.highlight,
"label": val.nama}
"label": val.nama + ': '+(val.value).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".")}
npie = pieData_${dat.id}.push(x);
//alert(pieData_${dat.id}[npie].value());
});
window.myPie_${dat.id} = new Chart(ctx_${dat.id}).Pie(pieData_${dat.id},{
//responsive: true;
});
// window.myPie_${dat.id} = new Chart(ctx_${dat.id}).Pie(pieData_${dat.id},{
// // responsive: true;
// });
window.myPie_${dat.id} = new Chart(ctx_${dat.id}).Pie(pieData_${dat.id},options);
legend(document.getElementById('legend_${dat.id}'), pieData_${dat.id});
}
},
......@@ -398,7 +549,8 @@
<script>
$(function(){
$('.carousel').carousel({
interval: 5000
// interval: 20000
interval: 17000
});
});
......
......@@ -116,6 +116,11 @@ $(document).ready(function(){
$('#source_id').prop('enabled', true);
$('#group-upload').css("display","block");
}
else if (type_id == 'video'){
$('#source_id').prop('readonly', false);
$('#source_id').prop('enabled', true);
$('#group-upload').css("display","block");
}
else{
$('#source_id').prop('readonly', true);
$('#source_id').prop('enabled', false);
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!