Commit 755557ab by aa.gusti

replace

1 parent 2a191098
Showing 59 changed files with 3253 additions and 0 deletions
Eksekutif Summary
\ No newline at end of file \ No newline at end of file
from sqlalchemy import engine_from_config
from .models import EisDBSession, EisBase
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
if 'eis.' in settings:
engine = engine_from_config(settings, 'eis.')
EisDBSession.configure(bind=engine)
EisBase.metadata.bind = engine
\ No newline at end of file \ No newline at end of file
from datetime import datetime
from sqlalchemy import (
Column,
Integer,
Text,
DateTime,
ForeignKey,
UniqueConstraint,
String,
SmallInteger
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm import (
scoped_session,
sessionmaker,
relationship,
backref
)
from zope.sqlalchemy import ZopeTransactionExtension
from ...models import (CommonModel, DefaultModel as BaseDefaultModel,
Base as EisBase, DBSession as EisDBSession)
TABLE_ARGS = {'extend_existing':True,
'schema':'eis'
}
class DefaultModel(BaseDefaultModel):
def save(self):
if self.id:
#Who knows another user edited, so use merge ()
EisDBSession.merge(self)
else:
EisDBSession.add(self)
@classmethod
def query(cls):
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)
@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)
from .eis import Eis, Slide, Chart, ChartItem, EisParams, ArPayment, LastUpdate
\ No newline at end of file \ No newline at end of file
from datetime import datetime
from sqlalchemy import (
Column,
Integer,
BigInteger,
SmallInteger,
Text,
DateTime,
String,
UniqueConstraint,
ForeignKey,
Index
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm import (
scoped_session,
sessionmaker,
relationship, backref
)
from ..models import (EisDBSession, DefaultModel, EisBase, NamaModel, TABLE_ARGS)
class Eis(EisBase, NamaModel):
__tablename__ = 'wells'
tahun = Column(Integer)
amt_tahun = Column(BigInteger)
amt_bulan = Column(BigInteger)
amt_minggu = Column(BigInteger)
amt_hari = Column(BigInteger)
order_id = Column(SmallInteger)
aktif = Column(SmallInteger)
__table_args__ = TABLE_ARGS
@classmethod
def sum_data(cls, kode, tahun):
q = EisDBSession.query(cls).filter_by(
kode==kode,
tahun=tahun).first()
if q:
sum_minggu = q.amt_minggu+q.amt_hari
sum_bulan = q.amt_bulan + sum_minggu
sum_tahun = q.amt_tahun + sum_bulan
return dict(sum_hari = sum_hari, sum_minggu = sum_minggu,
sum_bulan = sum_bulan, sum_tahun = sum_tahun)
return {}
@classmethod
def sum_order_id(cls, tahun):
q = EisDBSession.query(cls).filter_by(
tahun=tahun)
if q:
return q
return
class Slide(NamaModel, EisBase):
__tablename__ = 'slides'
source_type = Column(String(16)) #grid, image, chart-line, chart-pie, chart-bar
source_id = Column(String(128))
order_id = Column(Integer, default=0)
aktif = Column(SmallInteger, default=0)
__table_args__ = TABLE_ARGS
class Chart(NamaModel, EisBase):
__tablename__ = 'charts'
chart_type = Column(String(16))
label = Column(String(128)) #digunakan jika chart membutuhkan label
devider = Column(BigInteger, default=1)
status = Column(SmallInteger, default=0)
__table_args__ = (UniqueConstraint('kode'),
TABLE_ARGS)
class ChartItem(NamaModel, EisBase):
__tablename__ = 'chart_items'
value_1 = Column(BigInteger, default=0)
value_2 = Column(BigInteger, default=0)
value_3 = Column(BigInteger, default=0)
value_4 = Column(BigInteger, default=0)
value_5 = Column(BigInteger, default=0)
value_6 = Column(BigInteger, default=0)
value_7 = Column(BigInteger, default=0)
value_8 = Column(BigInteger, default=0)
value_9 = Column(BigInteger, default=0)
value10 = Column(BigInteger, default=0)
value11 = Column(BigInteger, default=0)
value12 = Column(BigInteger, default=0)
chart_id = Column(Integer, ForeignKey('eis.charts.id'))
source_type = Column(String(32), default='realisasi')
rekening_kd = Column(String(128))
color = Column(String(6))
highlight = Column(String(6))
is_sum = Column(SmallInteger, default=0)
updated = Column(DateTime)
created = Column(DateTime)
create_uid = Column(Integer)
update_uid = Column(Integer)
chart = relationship("Chart")
status = Column(SmallInteger, default=0)
__table_args__ = (UniqueConstraint('kode'),
TABLE_ARGS)
class EisParams(NamaModel, EisBase):
__tablename__ = 'params'
last_update = Column(DateTime(timezone=False), nullable=True)
__table_args__ = (TABLE_ARGS)
class LastUpdate(DefaultModel, EisBase):
__tablename__ = 'last_update'
wells = Column(DateTime(timezone=False), nullable=True)
__table_args__ = (TABLE_ARGS)
class ArPayment(NamaModel, EisBase):
__tablename__ = 'ar_payment'
tanggal = Column(DateTime(timezone=False))
denda = Column(BigInteger)
bayar = Column(BigInteger)
__table_args__ = (UniqueConstraint('tanggal','kode'),
TABLE_ARGS)
\ No newline at end of file \ No newline at end of file
File mode changed
"id","kode","status","created","updated","create_uid","update_uid","nama","chart_type","label","devider"
1,"4.1.1-00-B",1,"2014-12-28 12:06:39.614002","2015-05-28 19:37:47.495852",1,1,"REALISASI PAJAK DAERAH JAN-DES (BAR)","bar","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
2,"4.1.1-00-L",1,"2014-12-28 12:11:32.498004","2017-02-22 09:03:58.910665",1,1,"PAJAK DAERAH JAN-DES (LINE)","line","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
3,"4.1.1.01-B",1,"2014-12-29 11:17:22.06886","2017-02-22 09:08:41.882188",1,1,"PAJAK HOTEL JAN-DES (BAR)","bar","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
4,"4.1.1.01-L",1,"2014-12-29 11:19:26.18124","2017-02-22 09:08:51.835333",1,1,"PAJAK HOTEL JAN- DES (LINE)","line","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
5,"4.1.1.02-B",1,"2014-12-29 11:55:58.780526","2017-02-22 09:09:10.589506",1,1,"PAJAK RESTORAN JAN-DES (BAR)","bar","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
6,"4.1.1.02-L",1,"2014-12-29 11:57:04.227123","2017-02-22 15:18:24.083413",1,1,"PAJAK RESTORAN JAN-DES (LINE)","line","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
7,"4.1.1.03-B",1,"2014-12-29 11:58:13.741331","2017-02-22 15:18:30.2299",1,1,"PAJAK HIBURAN JAN-DES (BAR)","bar","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
8,"4.1.1.03-L",1,"2014-12-29 11:59:30.94638","2017-02-22 15:18:38.756758",1,1,"PAJAK HIBURAN JAN-DES (LINE)","line","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
9,"4.1.1.04-B",1,"2014-12-29 12:00:39.244166","2017-02-22 15:18:44.715674",1,1,"PAJAK REKLAME JAN-DES (BAR)","bar","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
10,"4.1.1.04-L",1,"2014-12-29 12:02:46.367873","2017-02-22 15:18:50.243311",1,1,"PAJAK REKLAME JAN-DES (LINE)","line","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
11,"4.1.1.05-B",1,"2014-12-29 12:03:47.101836","2017-02-22 15:33:21.118884",1,1,"PAJAK PENERANGAN JALAN JAN-DES (BAR)","bar","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
12,"4.1.1.05-L",1,"2014-12-29 12:04:35.804791","2017-02-22 15:33:13.900201",1,1,"PAJAK PENERANGAN JALAN JAN-DES (LINE)","line","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
13,"4.1.1.06-B",1,"2014-12-29 12:06:20.447922","2017-02-22 15:34:28.402379",1,1,"PAJAK PARKIR JAN-DES (BAR)","bar","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
14,"4.1.1.06-L",1,"2014-12-29 12:07:05.189443","2017-02-22 15:33:32.76189",1,1,"PAJAK PARKIR JAN-DES (LINE)","line","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
15,"4.1.1.07-B",1,"2014-12-29 12:08:05.015374","2017-02-22 15:33:39.885396",1,1,"PAJAK AIR TANAH JAN-DES (BAR)","bar","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
16,"4.1.1.07-L",1,"2014-12-29 12:08:45.498793","2017-02-22 15:33:46.29623",1,1,"PAJAK AIR TANAH JAN-DES (LINE)","line","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
17,"4.1.1.11-B",1,"2014-12-29 12:10:06.988958","2017-02-22 15:33:52.705748",1,1,"PAJAK BPHTB JAN-DES (BAR)","bar","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
18,"4.1.1.11-L",1,"2014-12-29 12:11:03.78594","2017-02-22 15:33:59.834643",1,1,"PAJAK BPHTB JAN-DES (LINE)","line","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
20,"4.1.1.12-B",1,"2014-12-29 12:13:48.469949","2017-02-22 15:34:04.638847",1,1,"PAJAK BUMI DAN BANGUNAN PERDESAAN PERKOTAAN JAN-DES (BAR)","bar","JAN, FEB, MAR, APR, MEI, JUN, JUL, AGU, SEP, OKT, NOP, DES",1
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
\ No newline at end of file \ No newline at end of file
ChartData = {
'options': ['insert if not exists','delete first'],
'csv': ['chart.csv'],
}
"id","kode","status","created","updated","create_uid","update_uid","nama","value_1","value_2","value_3","value_4","value_5","value_6","value_7","value_8","value_9","value10","value11","value12","chart_id","source_type","rekening_kd","color","highlight","is_sum"
1,"T-4.1.1-001",1,"2014-12-28 12:07:37.758827","2017-04-27 14:48:15.509449",1,1,"TARGET",35000000000,45000000000,54917870000,70000000000,70000000000,76311575000,0,0,0,0,0,0,1,"target","4.1.1","A","A",0
2,"R-4.1.1-002",1,"2014-12-28 12:08:13.744299","2017-05-05 20:00:19.401678",1,1,"REALISASI",55924473072,60034106432,66704834856,75399453350,12242123958,0,0,0,0,0,0,0,1,"realisasi","4.1.1","C","C",0
3,"T-4.1.1-003",1,"2014-12-28 12:13:08.927284","2017-02-22 15:25:21.152061",1,1,"TARGET",0,0,0,0,0,0,0,0,0,0,0,0,2,"target","4.1.1","CCCCCC","CCCCCC",0
4,"R-4.1.1-004",1,"2014-12-28 12:21:35.643581","2017-05-05 20:00:19.593235",1,1,"REALISASI",55924473072,115958579504,182663414360,258062867710,270304991668,270304991668,270304991668,270304991668,270304991668,270304991668,270304991668,270304991668,2,"realisasi","4.1.1","9F9999","9F9000",0
6,"T-4.1.1.01-001",1,"2014-12-29 11:21:30.517391","2017-04-27 14:33:57.259486",1,1,"Target",1400000000,1400000000,1455000000,1400000000,1600000000,1778687500,0,0,0,0,0,0,3,"target","4.1.1.01","cc3300","cc3300",0
7,"R-4.1.1.01-002",1,"2014-12-29 11:21:52.517683","2017-05-05 19:59:58.850218",1,1,"Realisasi",1776310710,1434342714,1542772483,1979240533,89380000,0,0,0,0,0,0,0,3,"realisasi","4.1.1.01","cc3300","cc3300",0
9,"T-4.1.1.01-003",1,"2014-12-29 11:22:37.067962","2016-10-17 13:33:16.778029",1,1,"Target",0,0,0,0,0,0,0,0,0,0,0,0,4,"target","4.1.1.01",,,0
10,"R-4.1.1.01-004",1,"2014-12-29 11:23:02.783823","2017-05-05 20:00:03.016051",1,1,"Realisasi",1776310710,3210653424,4753425907,6732666440,6822046440,6822046440,6822046440,6822046440,6822046440,6822046440,6822046440,6822046440,4,"realisasi","4.1.1.01",,,0
11,"T-4.1.1.02-001",1,"2014-12-29 12:46:19.489062","2017-04-27 14:38:48.269228",1,1,"TARGET",14000000000,13500000000,13500000000,14000000000,16125000000,16000000000,0,0,0,0,0,0,5,"target","4.1.1.02",,,0
12,"R-4.1.1.02-002",1,"2014-12-29 12:47:11.72266","2017-05-05 19:59:58.850218",1,1,"REALISASI",19279239905,16322736536,14444421523,16795940056,270271579,0,0,0,0,0,0,0,5,"realisasi","4.1.1.02",,,0
17,"T-4.1.1.02-003",1,"2014-12-29 12:52:50.053863","2016-10-17 13:35:22.348317",1,1,"TARGET",0,0,0,0,0,0,0,0,0,0,0,0,6,"target","4.1.1.02",,,0
19,"R-4.1.1.02-004",1,"2014-12-29 12:54:42.213045","2017-05-05 20:00:03.016051",1,1,"REALISASI",19279239905,35601976441,50046397964,66842338020,67112609599,67112609599,67112609599,67112609599,67112609599,67112609599,67112609599,67112609599,6,"realisasi","4.1.1.02",,,0
20,"T-4.1.1.03-001",1,"2014-12-29 12:59:12.800176","2017-05-03 13:21:41.10512",1,1,"TARGET",3000000000,2500000000,1600000000,3000000000,3050000000,2500000000,0,0,0,0,0,0,7,"target","4.1.1.03","FF00FF","33FF00",0
21,"R-4.1.1.03-002",1,"2014-12-29 13:01:04.194405","2017-05-05 19:59:58.850218",1,1,"REALISASI",4068700610,3576796586,2716678837,3176870630,17168863,0,0,0,0,0,0,0,7,"realisasi","4.1.1.03",,,0
22,"T-4.1.1.03-003",1,"2014-12-29 13:02:37.858286","2016-10-17 13:39:37.42058",1,1,"TARGET",0,0,0,0,0,0,0,0,0,0,0,0,8,"target","4.1.1.03",,,0
23,"R-4.1.1.03-004",1,"2014-12-29 13:03:17.715093","2017-05-05 20:00:03.016051",1,1,"REALISASI",4068700610,7645497196,10362176033,13539046663,13556215526,13556215526,13556215526,13556215526,13556215526,13556215526,13556215526,13556215526,8,"realisasi","4.1.1.03",,,0
24,"T-4.1.1.04-001",1,"2014-12-29 13:05:30.72173","2017-04-27 14:42:52.217845",1,1,"TARGET",1000000000,1200000000,2000000000,1500000000,1500000000,1725000000,0,0,0,0,0,0,9,"target","4.1.1.04",,,0
25,"R-4.1.1.04-002",1,"2014-12-29 13:06:17.417716","2017-05-05 19:59:58.850218",1,1,"REALISASI",995852160,1331606586,1621631035,1487881279,151501786,0,0,0,0,0,0,0,9,"realisasi","4.1.1.04",,,0
26,"T-4.1.1.04-003",1,"2014-12-29 13:08:31.240944","2016-03-02 11:35:32.267272",1,1,"TARGET",0,0,0,0,0,0,0,0,0,0,0,0,10,"target","4.1.1.04",,,0
27,"R-4.1.1.04-004",1,"2014-12-29 13:09:03.925733","2017-05-05 20:00:03.016051",1,1,"REALISASI",995852160,2327458746,3949089781,5436971060,5588472846,5588472846,5588472846,5588472846,5588472846,5588472846,5588472846,5588472846,10,"realisasi","4.1.1.04",,,0
28,"T-4.1.1.05-001",1,"2014-12-29 13:10:52.328128","2016-11-15 10:40:19.276283",1,1,"TARGET",0,0,0,0,0,0,0,0,0,0,0,0,11,"target","4.1.1.05",,,0
29,"R-4.1.1.05-002",1,"2014-12-29 13:11:32.484373","2017-05-05 19:59:58.850218",1,1,"REALISASI",8383025652,0,0,0,0,0,0,0,0,0,0,0,11,"realisasi","4.1.1.05",,,0
30,"T-4.1.1.05-003",1,"2014-12-29 13:12:38.357145","2016-10-17 13:41:16.159794",1,1,"TARGET",0,0,0,0,0,0,0,0,0,0,0,0,12,"target","4.1.1.05",,,0
31,"R-4.1.1.05-004",1,"2014-12-29 13:13:05.033166","2017-05-05 20:00:03.016051",1,1,"REALISASI",8383025652,8383025652,8383025652,8383025652,8383025652,8383025652,8383025652,8383025652,8383025652,8383025652,8383025652,8383025652,12,"realisasi","4.1.1.05",,,0
32,"T-4.1.1.06-001",1,"2014-12-29 13:14:35.153023","2017-04-27 14:44:27.812773",1,1,"TARGET",2000000000,1000000000,1300000000,2000000000,1500000000,1337500000,0,0,0,0,0,0,13,"target","4.1.1.06",,,0
33,"R-4.1.1.06-002",1,"2014-12-29 13:15:26.781174","2017-05-05 19:59:58.850218",1,1,"REALISASI",2492214568,1706045272,2127984538,1787759557,132909250,0,0,0,0,0,0,0,13,"realisasi","4.1.1.06",,,0
34,"T-4.1.1.06-003",1,"2014-12-29 13:16:25.408782","2016-03-28 09:01:23.287282",1,1,"TARGET",0,0,0,0,0,0,0,0,0,0,0,0,14,"target","4.1.1.06",,,0
35,"R-4.1.1.06-004",1,"2014-12-29 13:16:53.769805","2017-05-05 20:00:03.016051",1,1,"REALISASI",2492214568,4198259840,6326244378,8114003935,8246913185,8246913185,8246913185,8246913185,8246913185,8246913185,8246913185,8246913185,14,"realisasi","4.1.1.06",,,0
36,"T-4.1.1.07-001",1,"2014-12-29 13:18:29.003303","2017-04-27 14:45:04.744587",1,1,"TARGET",100000000,150000000,312870000,200000000,200000000,262200000,0,0,0,0,0,0,15,"target","4.1.1.07",,,0
37,"R-4.1.1.07-002",1,"2014-12-29 13:19:03.049172","2017-05-05 19:59:58.850218",1,1,"REALISASI",49955410,132126825,174058176,71202515,38072466,0,0,0,0,0,0,0,15,"realisasi","4.1.1.07",,,0
38,"T-4.1.1.07-003",1,"2014-12-29 13:19:50.974005","2016-03-28 09:05:50.945889",1,1,"TARGET",0,0,0,0,0,0,0,0,0,0,0,0,16,"target","4.1.1.07",,,0
39,"R-4.1.1.07-004",1,"2014-12-29 13:20:26.916463","2017-05-05 20:00:03.016051",1,1,"REALISASI",49955410,182082235,356140411,427342926,465415392,465415392,465415392,465415392,465415392,465415392,465415392,465415392,16,"realisasi","4.1.1.07",,,0
40,"T-4.1.1.11-001",1,"2014-12-29 13:22:04.440312","2017-04-27 14:45:58.565065",1,1,"TARGET",10000000000,15000000000,25500000000,24000000000,24000000000,26500000000,0,0,0,0,0,0,17,"target","4.1.1.11",,,0
41,"R-4.1.11-002",1,"2014-12-29 13:22:33.918134","2017-05-05 20:00:17.783802",1,1,"REALISASI",12788740486,28975340124,31478558239,32206551385,7021433355,0,0,0,0,0,0,0,17,"realisasi","4.1.1.11",,,0
42,"T-4.1.1.11-003",1,"2014-12-29 13:23:41.351351","2016-03-28 09:07:58.962592",1,1,"TARGET",0,0,0,0,0,0,0,0,0,0,0,0,18,"target","4.1.1.11",,,0
43,"R-4.1.1.11-004",1,"2014-12-29 13:24:09.119499","2017-05-05 20:00:18.253923",1,1,"REALISASI",12788740486,41764080610,73242638849,105449190234,112470623589,112470623589,112470623589,112470623589,112470623589,112470623589,112470623589,112470623589,18,"realisasi","4.1.1.11",,,0
44,"T-4.1.1.12-001",1,"2014-12-29 13:25:59.89628","2017-04-27 14:50:37.058025",1,1,"TARGET",3000000000,3500000000,5000000000,15000000000,15000000000,18500000000,0,0,0,0,0,0,20,"target","4.1.1.12",,,0
45,"R-4.1.1.12-002",1,"2014-12-29 13:26:46.734346","2017-05-05 20:00:19.424296",1,1,"REALISASI",6090433571,6555111789,12598730025,17894007395,4521386659,0,0,0,0,0,0,0,20,"realisasi","4.1.1.12",0,,0
46,"T-4.1.1.12-003",1,"2014-12-29 13:27:47.964497","2016-10-17 13:43:04.83731",1,1,"TARGET",0,0,0,0,0,0,0,0,0,0,0,0,21,"target","4.1.1.12",,,0
47,"R-4.1.1.12-004",1,"2014-12-29 13:28:20.856161","2017-05-05 20:00:19.897317",1,1,"REALISASI",6090433571,12645545360,25244275385,43138282780,47659669439,47659669439,47659669439,47659669439,47659669439,47659669439,47659669439,47659669439,21,"realisasi","4.1.1.12",,,1
48,"G-PIE-PBB",1,"2014-12-29 17:22:56.827792","2017-05-05 20:00:20.422048",1,1,"PBB",47659669439,0,0,0,0,0,0,0,0,0,0,0,22,"realisasi","4.1.1.12","FF0000",,0
49,"G-PIE-BPHTB",1,"2014-12-29 17:23:23.531197","2017-05-05 20:00:18.940815",1,1,"BPHTB",112470623589,0,0,0,0,0,0,0,0,0,0,0,22,"realisasi","4.1.1.11","0000FF",,0
50,"G-PIE-LAINNYA",1,"2014-12-29 17:24:21.624603","2016-11-15 11:01:25.849969",1,1,"LAINNYA",0,0,0,0,0,0,0,0,0,0,0,0,22,"realisasi","4.1.1.01, 4.1.1.02, 4.1.1.01.03, 4.1.1.04, 4.1.1.05, 4.1.1.01.06, 4.1.1.07, 4.1.1.08, 4.1.1.09","00FF00",,0
51,"G-PIE-HOTEL",1,"2014-12-29 17:26:47.514064","2014-12-29 17:49:35.521499",1,1,"HOTEL",6822046440,0,0,0,0,0,0,0,0,0,0,0,23,"realisasi","4.1.1.01","e81135",,0
52,"G-PIE-REST",1,"2014-12-29 17:27:23.465552","2014-12-29 17:54:01.582678",1,1,"RESTORAN",67112609599,0,0,0,0,0,0,0,0,0,0,0,23,"realisasi","4.1.1.02","1dd75a",,0
53,"G-PIE-REK",1,"2014-12-29 17:28:08.611173","2014-12-29 17:50:06.265219",1,1,"REKLAME",5588472846,0,0,0,0,0,0,0,0,0,0,0,23,"realisasi","4.1.1.04","f2c81e",,0
54,"G-PIE-HIBURAN",1,"2014-12-29 17:28:50.463063","2014-12-29 17:50:20.156095",1,1,"HIBURAN",13556215526,0,0,0,0,0,0,0,0,0,0,0,23,"realisasi","4.1.1.03","1dccd7",,0
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
\ No newline at end of file \ No newline at end of file
ChartItemData = {
'options': ['insert if not exists','delete first'],
'csv': ['chart_item.csv'],
}
kode,nama,path,status
eis,EIS,/eis,1
eis-carousel,Carousel,/eis/carousel,1
eis-carousel-act,Carousel Action,/eis/carousel/{act}/act,1
eis-carousel-add,Carousel Add,/eis/carousel/add,1
eis-carousel-edit,Carousel Edit,/eis/carousel/{id}/edit,1
eis-carousel-delete,Carousel Delete,/eis/carousel/{id}/delete,1
eis-dashboard,EIS,/eis/dashboard,1
eis-dashboard-act,EIS Act,/eis/dashboard/{act}/act,1
eis-dashboard-calc-all,EIS Calc ALL,/eis/dashboad/calc/all,1
eis-home,EIS Home,/eis/home,1
eis-act,EIS Home Act,/eis/{act}/act,1
eis-calc-all,EIS Calc ALL,/eis/calc/all,1
eis-chart,Chart,/eis/chart,1
eis-chart-act,EIS Chart Action,/eis/chart/{act}/act,1
eis-chart-add,EIS Chart Add,/eis/chart/add,1
eis-chart-edit,EIS Chart Edit,/eis/chart/{id}/edit,1
eis-chart-delete,EIS Chart Delet,/eis/chart/{id}/delete,1
eis-chart-item,Chart Item,/eis/chart/item/{chart_id},1
eis-chart-item-act,EIS Chart Item Action,/eis/chart/item/{chart_id}/{act}/act,1
eis-chart-item-add,EIS Chart Item Add,/eis/chart/item/{chart_id}/add,1
eis-chart-item-edit,EIS Chart Item Edit,/eis/chart/item/{chart_id}/{id}/edit,1
eis-chart-item-delete,EIS Chart Item Delet,/eis/chart/item/{chart_id}/{id}/delete,1
eis-item,EIS Item,/eis/item,1
eis-item-act,EIS Item Action,/eis/item/{act}/act,1
eis-item-add,EIS Item Add,/eis/item/add,1
eis-item-edit,EIS Item Edit,/eis/item/{id}/edit,1
eis-item-delete,EIS Item Delete,/eis/item/{id}/delete,1
eis-slide,EIS Slide,/eis/slide,1
eis-slide-act,EIS Slide Act,/eis/slide/{act}/act,1
eis-slide-add,EIS Slide Add,/eis/slide/add,1
eis-slide-edit,EIS Slide Edit,/eis/slide/{id}/edit,1
eis-slide-delete,EIS Slide Delete,/eis/slide/{id}/delete,1
RouteData = {
'options': ['insert if not exists','delete first'],
'csv': ['route.csv'],
'keys':['kode'],
}
"id","kode","status","created","updated","create_uid","update_uid","nama","source_type","source_id","order_id","aktif"
1,"S-001",1,"2014-12-28 12:04:48.025396","2015-05-28 17:37:18.407979",1,1,"PAJAK DAERAH","grid",1,50,1
2,"S-002",1,"2014-12-28 12:09:39.174516","2014-12-31 14:58:33.612433",1,1,"TARGET DAN REALISASI PAJAK DAERAH","chart-bar",1,1,0
3,"S-003",1,"2014-12-28 12:10:00.808178","2015-05-28 17:31:39.612517",1,1,"PENCAPAIAN TARGET PAJAK DAERAH","chart-line",2,2,0
4,"S-004",1,"2014-12-28 12:24:03.41748","2014-12-29 13:39:54.542719",1,1,"PAJAK HOTEL ","grid",2,3,0
5,"S-005",1,"2014-12-29 11:25:19.681442","2014-12-31 14:59:14.894462",1,1,"TARGET DAN REALISASI PAJAK HOTEL","chart-bar",3,4,0
6,"S-006",1,"2014-12-29 13:52:42.049059","2014-12-31 17:48:22.730665",1,1,"PENCAPAIAN TARGET PAJAK HOTEL","chart-line",4,5,0
7,"S-007",1,"2014-12-29 13:54:29.968451","2014-12-29 13:54:29.968603",1,1,"PAJAK RESTORAN","grid",3,6,0
8,"S-008",1,"2014-12-29 13:55:39.553281","2014-12-31 14:59:30.433889",1,1,"TARGET DAN REALISASI PAJAK RESTORAN","chart-bar",5,7,0
9,"S-009",1,"2014-12-29 13:56:48.139024","2014-12-31 17:48:43.16015",1,1,"PENCAPAIAN TARGET PAJAK RESTORAN","chart-line",6,8,0
10,"S-010",1,"2014-12-29 13:59:00.161488","2014-12-29 13:59:00.161644",1,1,"PAJAK REKLAME","grid",4,9,0
11,"S-011",1,"2014-12-29 14:00:28.506668","2014-12-31 15:00:01.012053",1,1,"TARGET DAN REALISASI PAJAK REKLAME","chart-bar",9,10,0
12,"S-012",1,"2014-12-29 14:02:12.140367","2014-12-31 17:48:59.584242",1,1,"PENCAPAIAN TARGET PAJAK REKLAME","chart-line",10,11,0
13,"S-013",1,"2014-12-29 14:05:34.708476","2014-12-29 14:05:34.708634",1,1,"PAJAK HIBURAN ","grid",5,12,0
14,"S-014",1,"2014-12-29 14:06:58.921532","2014-12-31 15:00:24.885899",1,1,"TARGET DAN REALISASI PAJAK HIBURAN","chart-bar",7,13,0
15,"S-015",1,"2014-12-29 14:08:06.448603","2014-12-31 17:52:14.286166",1,1,"PENCAPAIAN TARGET PAJAK HIBURAN","chart-line",8,14,0
16,"S-016",1,"2014-12-29 14:09:22.855115","2014-12-29 14:09:46.545548",1,1,"PAJAK PENERANGAN JALAN ","grid",6,15,0
17,"S-017",1,"2014-12-29 14:11:22.577683","2014-12-31 15:00:39.723021",1,1,"TARGET DAN REALISASI PAJAK PENERANGAN JALAN","chart-bar",11,16,0
18,"S-018",1,"2014-12-29 14:13:09.981812","2014-12-31 17:52:37.209143",1,1,"PENCAPAIAN TARGET PAJAK PENERANGAN JALAN","chart-line",12,17,0
19,"S-019",1,"2014-12-29 14:14:34.964073","2014-12-29 14:14:34.964226",1,1,"PAJAK PARKIR ","grid",7,18,0
20,"S-020",1,"2014-12-29 14:17:24.450097","2014-12-31 15:00:59.217997",1,1,"TARGET DAN REALISASI PAJAK PARKIR","chart-bar",13,19,0
21,"S-021",1,"2014-12-29 14:18:49.758142","2015-05-28 17:36:56.031646",1,1,"PENCAPAIAN TARGET PAJAK PARKIR","chart-line",14,20,0
22,"S-022",1,"2014-12-29 14:20:01.210057","2014-12-29 14:20:01.210139",1,1,"PAJAK AIR TANAH ","grid",8,21,0
23,"S-023",1,"2014-12-29 14:21:03.250674","2014-12-31 15:01:22.830519",1,1,"TARGET DAN REALISASI PAJAK AIR TANAH","chart-bar",15,22,0
24,"S-024",1,"2014-12-29 14:22:20.803659","2014-12-31 18:03:20.627258",1,1,"PENCAPAIAN TARGET PAJAK AIR TANAH","chart-line",16,23,0
25,"S-025",1,"2014-12-29 14:23:40.114283","2014-12-29 14:23:40.114479",1,1,"PAJAK BPHTB ","grid",9,24,0
26,"S-026",1,"2014-12-29 14:24:47.067114","2014-12-31 15:01:39.349674",1,1,"TARGET DAN REALISASI PAJAK BPHTB","chart-bar",17,25,0
27,"S-027",1,"2014-12-29 14:25:42.152308","2014-12-31 18:03:43.315062",1,1,"PENCAPAIAN TARGET PAJAK BPHTB","chart-line",18,26,0
28,"S-028",1,"2014-12-29 14:27:14.1296","2014-12-29 14:27:14.12979",1,1,"PAJAK BUMI DAN BANGUNAN PERDESAAN PERKOTAAN ","grid",10,27,0
29,"S-029",1,"2014-12-29 14:28:07.632492","2014-12-31 15:02:07.907632",1,1,"TARGET DAN REALISASI PAJAK BUMI DAN BANGUNAN PERDESAAN PERKOTAAN","chart-bar",20,28,0
30,"S-030",1,"2014-12-29 14:29:09.281591","2014-12-31 18:04:03.60723",1,1,"PENCAPAIAN TARGET PAJAK BUMI DAN BANGUNAN PERDESAAN PERKOTAAN","chart-line",21,29,0
31,"S-031",1,"2014-12-29 17:31:35.504004","2014-12-29 17:31:52.54877",1,1,"KOMPOSISI PAJAK DAERAH","chart-pie",22,30,0
32,"S-033",1,"2014-12-29 17:32:45.525932","2014-12-29 17:32:45.526083",1,1,"KOMPOSISI PAJAK LAINNYA","chart-pie",23,34,0
\ No newline at end of file \ No newline at end of file
SlideData = {
'options': ['insert if not exists','delete first'],
'csv': ['slide.csv'],
}
"id","tahun","kode","nama","amt_tahun","amt_bulan","amt_minggu","amt_hari","order_id","aktif","status","created","updated","create_uid","update_uid"
1,2017,"4.1.1","PAJAK DAERAH",270304991668,12242123958,12242123958,3577607966,20,1,1,,"2017-05-05 20:00:19.353075",1,1
2,2017,"4.1.1.01","PAJAK HOTEL",6822046440,89380000,89380000,89380000,1,0,1,,"2017-05-05 19:59:57.119622",1,1
3,2017,"4.1.1.02","PAJAK RESTORAN",67112609599,270271579,270271579,209278299,2,0,1,,"2017-05-05 19:59:57.119622",1,1
5,2017,"4.1.1.03","PAJAK HIBURAN",13556215526,17168863,17168863,14288863,3,0,1,,"2017-05-05 19:59:57.119622",1,1
4,2017,"4.1.1.04","PAJAK REKLAME",5588472846,151501786,151501786,34788064,4,0,1,,"2017-05-05 19:59:57.119622",1,1
6,2017,"4.1.1.05","PAJAK PENERANGAN JALAN",8383025652,0,0,0,5,0,1,,"2017-05-05 19:59:57.119622",1,1
7,2017,"4.1.1.06","PAJAK PARKIR DAN GALIAN",8246913185,132909250,132909250,131334250,7,0,1,,"2017-05-05 19:59:57.119622",1,1
8,2017,"4.1.1.07","PAJAK AIR TANAH",465415392,38072466,38072466,13789027,8,0,1,,"2017-05-05 19:59:57.119622",1,1
9,2017,"4.1.1.11","PAJAK BPHTB",112470623589,7021433355,7021433355,1666770579,10,0,1,,"2017-05-05 20:00:17.482882",1,1
10,2017,"4.1.1.12","PAJAK BUMI DAN BANGUNAN PERDESAAN PERKOTAAN",47659669439,4521386659,4521386659,1417978884,12,0,1,,"2017-05-05 20:00:19.149218",1,1
\ No newline at end of file \ No newline at end of file
EisData = {
'options': ['insert if not exists','delete first'],
'csv': ['wells.csv'],
}
import os
from .data.routes import RouteData
from ...scripts.initial_data import InitialData
from ..models import (
EisBase as ModuleBase,
CommonModel,
EisDBSession as ModuleDBSession,
)
from .data.routes import RouteData
from .data.slide import SlideData
from .data.wells import EisData
from .data.chart import ChartData
from .data.chart_item import ChartItemData
from ...scripts.DbTools import (
get_pkeys,
execute,
split_tablename,
)
from ..models import (
EisBase as ModuleBase,
CommonModel,
EisDBSession as ModuleDBSession,
Eis,Slide, Chart, ChartItem
)
fixtures = [
('routes', RouteData),
#('eis.charts', ChartData),
#('eis.chart_items', ChartItemData),
#('eis.slides', SlideData),
#('eis.wells', EisData),
]
def insert():
initialData = InitialData(ModuleBase, ModuleDBSession)
base_dir = os.path.split(__file__)[0]
initialData.insert(base_dir, fixtures)
\ No newline at end of file \ No newline at end of file
import os
import sys
import transaction
import subprocess
from sqlalchemy import (
engine_from_config,
select,
)
from sqlalchemy.schema import CreateSchema
from pyramid.paster import (
get_appsettings,
setup_logging,
)
from ..models import (
EisDBSession as ModuleDBSession,
EisBase as ModuleBase,
)
from ..models import *
from . import initial_data
#from .tools import mkdir
from ...scripts.initializedb import create_schema, read_file
from ...tools import get_settings
def main(settings):
'eis'
if 'eis.url' in settings and settings['eis.url']:
engine = engine_from_config(settings, 'eis.')
else:
engine = ModuleDBSession.bind;
create_schema(engine, 'eis')
ModuleBase.metadata.create_all(engine)
ModuleDBSession.configure(bind=engine)
initial_data.insert()
transaction.commit()
print('****EIS CREATED****')
body {
min-height: 2000px;
padding-top: 70px;
}
body {
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
--font-weight: 300;
--color: #ffffff;
--background: #bc2131;
font-size: 12px;
padding-top: 70px;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-weight: 300;
}
legend {
font-size: 14px;
}
.bar {
height: 18px;
background: green;
}
.typeahead{
font-size: 12px;
padding: 3px 6px;
height: 26px;
}
.form-control {
font-size: 12px;
padding: 3px 6px;
height: 26px;
}
.btn {
font-size: 12px;
padding: 3px 6px;
height: 26px;
}
.container {
}
.container .info {
font-size: 18px;
padding: 14px;
color: #fff;
}
.container .btn-menu {
text-align: left;
font-size: 16px;
padding: 14px 24px;
border-radius: 6px;
border: 0px none;
width: 100%;
margin-bottom: 10px;
}
.container .btn-login {
font-size: 18px;
padding: 10px 20px;
border-radius: 6px;
border: 0px none;
background: #BC2131;
background-image: linear-gradient(to bottom, #C6414E 0px, #BC2131 100%);
background-repeat: repeat-x;
margin-top:20px;
}
.container .btn-logout {
margin-top:12px;
}
.container .btn-login:hover {
background: #BC2131;
}
.container .btn-login .label {
display: block;
font-size: 8px;
}
/* dataTables Customize */
table.dataTable thead {
background-color: #EAEAEA;
}
table.dataTable thead > tr > th{
padding: 2px;
line-height: 30px;
}
table.dataTable tbody > tr > td{
padding: 2px;
line-height: 20px;
}
table.dataTable tr.even.selected td {
background-color: #B0BED9;
}
table.dataTable tr.odd.selected td {
background-color: #9FAFD1;
}
table.dataTable tr.even td {
background-color: #FFFFFF;
}
table.dataTable tr.odd td {
background-color: #E2E4FF;
}
table.dataTable tr td {
vertical-align: middle;
}
table.dataTable tbody > tr > td.dataTables_empty {
line-height:inherit;
}
table.dataTable tbody td {
padding: 2px 2px;
}
table.dataTable th.right,
table.dataTable td.right {
text-align: right;
}
table.dataTable th.center,
table.dataTable td.center {
text-align: center;
}
div.tab-content {
padding-top: 10px;
}
.form-horizontal .form-group {
margin-bottom: 4px !important;
}
body {
padding-top: 70px;
padding-bottom: 40px;
background-color: #fff;
}
.form-signin {
max-width: 400px;
padding: 10px;
margin: 0 auto;
background-color: #eee;
}
.form-signin .form-signin-heading,
.form-signin .checkbox {
margin-bottom: 10px;
}
.form-signin .checkbox {
font-weight: normal;
}
.form-signin .form-control {
position: relative;
font-size: 14px;
height: auto;
padding: 8px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.form-signin .form-control:focus {
z-index: 2;
}
.form-signin input[type="text"] {
margin-bottom: -1px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.form-signin input[type="password"] {
margin-bottom: 10px;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
\ No newline at end of file \ No newline at end of file
.content-image {
display: block;
}
.img-float {
float: left;
width: 150px;
height: 150px;
margin: 0 20px 10px 0;
padding: 10px;
border: 1px solid white;
display: inline-block;
-webkit-box-shadow: inset 0 0 20px #ADADAD;
box-shadow: inset 0 0 20px #ADADAD;
}
}
from ..tools import *
\ No newline at end of file \ No newline at end of file
from ...views.base_views import BaseView as OsBaseView
from ...views.common import DataTables, ColumnDT
from ...views import widget
from pyramid.view import (
view_config,
)
class BaseView(OsBaseView):
pass
# import json
from pyramid.view import (
view_config,
)
# from pyramid.httpexceptions import (
# HTTPFound,
# )
from ..views import BaseView
from ..models import EisDBSession
from ..models import Eis, Chart, ChartItem, Slide
#from ..tools import row2dict
class dashboard(BaseView):
def cek_value(self,value,devider,simbol):
if value<devider:
return "{0:,.0f}".format(value)
else:
return "{0:,.2f} {1}".format(value/devider,simbol)
@view_config(route_name='eis-dashboard', renderer='templates/dashboard.pt')
def view_app(self):
tahun = self.ses['tahun']
datas = EisDBSession.query(Slide).filter(Slide.status==1).order_by(Slide.order_id)
if not datas:
datas = {}
return dict(project='EIS', datas=datas)
@view_config(route_name='eis-dashboard-act', renderer='json')
def view_act(self):
tahun = self.ses['tahun']
req = self.req
params = req.params
id = 'id' in params and params['id'] or 0
json_data = {}
json_data['success']=False
if req.matchdict['act']=='grid':
rows = EisDBSession.query(Eis).filter(Eis.id==id)
if not rows:
return json_data
for row in rows:
row_dicted = row.to_dict()
amt_hari = float(row_dicted['amt_hari'])
amt_minggu = float(row_dicted['amt_minggu']) #+amt_hari
amt_bulan = float(row_dicted['amt_bulan']) #+amt_hari
amt_tahun = float(row_dicted['amt_tahun']) #+amt_bulan
json_data['success']= True
json_data['tahun'] = self.cek_value(amt_tahun,1000000000, 'M')
json_data['bulan'] = self.cek_value(amt_bulan,1000000000, 'M')
json_data['minggu'] = self.cek_value(amt_minggu,1000000000, 'M')
json_data['hari'] = self.cek_value(amt_hari,1000000000, 'M')
return json_data
#######################################################################
# GRAFIK LINE/BAR
#######################################################################
elif req.matchdict['act']=='linebar':
rows = EisDBSession.query(Chart).filter(Chart.id==id).first()
if not rows:
return json_data
json_data['label'] = rows.label.split(',')
rows = EisDBSession.query(ChartItem).filter(ChartItem.chart_id==id).\
order_by(ChartItem.id)
for row in rows:
json_data[row.source_type] = [row.value_1/row.chart.devider,row.value_2/row.chart.devider,row.value_3/row.chart.devider,
row.value_4/row.chart.devider,row.value_5/row.chart.devider,row.value_6/row.chart.devider,
row.value_7/row.chart.devider,row.value_8/row.chart.devider,row.value_9/row.chart.devider,
row.value10/row.chart.devider,row.value11/row.chart.devider,row.value12/row.chart.devider,]
json_data['success']= True
return json_data
#######################################################################
# GRAFIK LINGKARAN
#######################################################################
elif req.matchdict['act']=='pie':
rows = EisDBSession.query(Chart).filter(Chart.id==id).first()
if not rows:
return json_data
json_data['label'] = rows.label.split(',')
rows = EisDBSession.query(ChartItem).filter(ChartItem.chart_id==id).\
order_by(ChartItem.id)
json_data['rows'] = {}
for row in rows:
anama = {}
anama['nama'] = row.nama
anama['color'] = row.color
anama ['highlight'] = row.highlight
anama ['value'] = row.value_1/row.chart.devider
json_data['rows'][row.nama] =anama
json_data['success']= True
return json_data
import json
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
from ..views import BaseView
from ..models import EisDBSession
from ..models.eis import Eis, Chart, ChartItem, Slide
#from ..tools import row2dict
########
# APP Home #
########
class eis(BaseView):
def cek_value(self,value,devider,simbol):
if value<devider:
return "{0:,.0f}".format(value)
else:
return "{0:,.0f} {1}".format(value/devider,simbol)
@view_config(route_name='eis', renderer='templates/eis.pt',
permission='eis')
def view_app(self):
tahun = self.ses['tahun']
datas = EisDBSession.query(Slide).filter(Slide.status==1).order_by(Slide.order_id) or {}
tab_datas = EisDBSession.query(Slide).filter(Slide.source_type=='grid').order_by(Slide.order_id) or {}
line_datas = EisDBSession.query(Slide).filter(Slide.source_type=='chart-line').order_by(Slide.order_id)or {}
bar_datas = EisDBSession.query(Slide).filter(Slide.source_type=='chart-bar').order_by(Slide.order_id)or {}
pie_datas = EisDBSession.query(Slide).filter(Slide.source_type=='chart-pie').order_by(Slide.order_id)or {}
return dict(project='EIS', datas=datas, tab_datas=tab_datas,
line_datas=line_datas, bar_datas=bar_datas,
pie_datas=pie_datas, )#, datas=Eis.sum_order_id('2014'))
@view_config(route_name='eis-act', renderer='json')
def view_app_act(self):
tahun = self.ses['tahun']
req = self.req
params = req.params
id = 'id' in params and params['id'] or 0
json_data = {}
json_data['success']=False
if req.matchdict['act']=='grid':
rows = EisDBSession.query(Eis).filter(Eis.id==id)
if not rows:
return json_data
for row in rows:
row_dicted = row.to_dict()
amt_hari = float(row_dicted['amt_hari'])
amt_minggu = float(row_dicted['amt_minggu']) #+amt_hari
amt_bulan = float(row_dicted['amt_bulan']) #+amt_hari
amt_tahun = float(row_dicted['amt_tahun']) #+amt_bulan
json_data['success']= True
json_data['tahun'] = self.cek_value(amt_tahun,1, '')
json_data['bulan'] = self.cek_value(amt_bulan,1, '')
json_data['minggu'] = self.cek_value(amt_minggu,1, '')
json_data['hari'] = self.cek_value(amt_hari,1, '')
return json_data
#######################################################################
# GRAFIK LINE/BAR
#######################################################################
elif req.matchdict['act']=='linebar':
rows = EisDBSession.query(Chart).filter(Chart.id==id).first()
if not rows:
return json_data
json_data['label'] = rows.label.split(',')
rows = EisDBSession.query(ChartItem).filter(ChartItem.chart_id==id).\
order_by(ChartItem.id)
for row in rows:
json_data[row.source_type] = [row.value_1/row.chart.devider,row.value_2/row.chart.devider,row.value_3/row.chart.devider,
row.value_4/row.chart.devider,row.value_5/row.chart.devider,row.value_6/row.chart.devider,
row.value_7/row.chart.devider,row.value_8/row.chart.devider,row.value_9/row.chart.devider,
row.value10/row.chart.devider,row.value11/row.chart.devider,row.value12/row.chart.devider,]
json_data['success']= True
return json_data
#######################################################################
# GRAFIK LINGKARAN
#######################################################################
elif req.matchdict['act']=='pie':
rows = EisDBSession.query(Chart).filter(Chart.id==id).first()
if not rows:
return json_data
json_data['label'] = rows.label.split(',')
rows = EisDBSession.query(ChartItem).filter(ChartItem.chart_id==id).\
order_by(ChartItem.id)
json_data['rows'] = {}
for row in rows:
anama = {}
anama['nama'] = row.nama
anama['color'] = row.color
anama ['highlight'] = row.highlight
anama ['value'] = row.value_1/row.chart.devider
json_data['rows'][row.nama] =anama
json_data['success']= True
return json_data
import os
import uuid
#from ..tools import row2dict, xls_reader
from datetime import datetime
from sqlalchemy import not_, func
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
import colander
from deform import (
Form,
widget,
ValidationFailure,
)
from ..models import (
EisDBSession
)
from ..models.eis import (
Eis
)
from ..views import BaseView, ColumnDT, DataTables
SESS_ADD_FAILED = 'Tambah carousel gagal'
SESS_EDIT_FAILED = 'Edit carousel gagal'
rek_widget = widget.AutocompleteInputWidget(
size=60,
values = '/rekening/act/headof',
min_length=1)
class Amount(colander.Schema):
amt_tahun = colander.SchemaNode(
colander.Integer(),
default = 0,
missing = 0)
amt_bulan = colander.SchemaNode(
colander.Integer(),
default = 0,
missing = 0)
amt_minggu = colander.SchemaNode(
colander.Integer(),
default = 0,
missing = 0)
amt_hari = colander.SchemaNode(
colander.Integer(),
default = 0,
missing = 0)
class AddSchema(colander.Schema):
tahun = colander.SchemaNode(
colander.Integer())
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=18),
oid='kode')
nama = colander.SchemaNode(
colander.String(),
widget = rek_widget,
validator=colander.Length(max=128),
oid = 'nama')
order_id = colander.SchemaNode(
colander.Integer(),
default = 0,
missing = 0)
amount = Amount()
status = colander.SchemaNode(
colander.Boolean())
aktif = colander.SchemaNode(
colander.Boolean())
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(),
missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class view_carousel(BaseView):
########
# List #
########
@view_config(route_name='eis-carousel', renderer='templates/eis-carousel/list.pt',
permission='eis-carousel')
def view_list(self):
return dict(a={})
##########
# Action #
##########
@view_config(route_name='eis-carousel-act', renderer='json',
permission='eis-carousel-act')
def view_act(self):
ses = self.req.session
request = self.req
params = request.params
url_dict = request.matchdict
if url_dict['act']=='grid':
columns = []
columns.append(ColumnDT(Eis.id))
columns.append(ColumnDT(Eis.tahun))
columns.append(ColumnDT(Eis.kode))
columns.append(ColumnDT(Eis.nama))
columns.append(ColumnDT(Eis.amt_tahun, ))
columns.append(ColumnDT(Eis.amt_bulan, ))
columns.append(ColumnDT(Eis.amt_minggu, ))
columns.append(ColumnDT(Eis.amt_hari, ))
columns.append(ColumnDT(Eis.order_id, ))
columns.append(ColumnDT(Eis.status, ))
columns.append(ColumnDT(Eis.aktif, ))
columns.append(ColumnDT(func.to_char(Eis.updated, "DD-MM-YYYY"), ))
query = EisDBSession.query().select_from(Eis)
rowTable = DataTables(request.GET, query, columns)
return rowTable.output_result()
elif url_dict['act']=='hon':
term = 'term' in params and params['term'] or ''
prefix = 'prefix' in params and params['prefix'] or ''
qry = EisDBSession.query(Eis).\
filter(Eis.status == 1).\
filter(Eis.nama.ilike('%%%s%%' % term)).\
order_by(Eis.nama)
r = []
for row in qry.all():
d = dict(
id = row.id,
value = row.nama,
kode = row.kode,
)
r.append(d)
return r
@view_config(route_name='eis-carousel-add', renderer='templates/eis-carousel/add.pt',
permission='eis-carousel-add')
def view_add(self):
request = self.req
ses = self.ses
form = get_form(request, AddSchema)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
#request.session[SESS_ADD_FAILED] = e.render()
#form.set_appstruct(rowd)
return dict(form=form)
#return HTTPFound(location=request.route_url('carousel-add'))
save_request(request, dict(controls))
return route_list(request)
elif SESS_ADD_FAILED in request.session:
return dict(form=form)
#return self.session_failed(SESS_ADD_FAILED)
return dict(form=form)
@view_config(route_name='eis-carousel-edit', renderer='templates/eis-carousel/add.pt',
permission='eis-carousel-edit')
def view_edit(self):
request = self.req
row = query_id(request).first()
if not row:
return id_not_found(request)
#values = row.to_dict()
rowd={}
rowd['id'] = row.id
rowd['tahun'] = row.tahun
rowd['kode'] = row.kode
rowd['nama'] = row.nama
rowd['order_id'] = row.order_id
rowd['status'] = row.status
rowd['aktif'] = row.aktif
rowd['amount'] = {}
rowd['amount']['amt_tahun'] = row.amt_tahun or 0
rowd['amount']['amt_bulan'] = row.amt_bulan or 0
rowd['amount']['amt_minggu'] = row.amt_minggu or 0
rowd['amount']['amt_hari'] = row.amt_hari or 0
form = get_form(request, EditSchema)
form.set_appstruct(rowd)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
return dict(form=form)
save_request(request, dict(controls), row)
return route_list(request)
elif SESS_EDIT_FAILED in request.session:
return session_failed(SESS_EDIT_FAILED)
return dict(form=form)
##########
# Delete #
##########
@view_config(route_name='eis-carousel-delete', renderer='templates/eis-carousel/delete.pt',
permission='eis-carousel-delete')
def view_delete(self):
request = self.req
q = query_id(request)
row = q.first()
if not row:
return self.id_not_found(request)
form = Form(colander.Schema(), buttons=('hapus','batal'))
if request.POST:
if 'hapus' in request.POST:
msg = 'Carousel ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
except:
msg = 'Carousel ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
return route_list(request)
return dict(row=row,
form=form.render())
#######
# Add #
#######
def form_validator(form, value):
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = EisDBSession.query(Eis).filter_by(id=uid)
row = q.first()
else:
row = None
def get_form(request, class_form, row=None):
schema = class_form(validator=form_validator)
schema = schema.bind()
schema.request = request
if row:
schema.deserialize(row)
return Form(schema, buttons=('simpan','batal'))
def session_failed(self, session_name):
#r = dict(form=self.session[session_name])
del self.session[session_name]
#return r
def save_request(request, values, row=None):
if 'id' in request.matchdict:
values['id'] = request.matchdict['id']
row = save(values, request.user, row)
request.session.flash('Carousel sudah disimpan.')
def save(values, user, row=None):
# print(">>", values)
# sys.exit()
if not row:
row = Eis()
row.created = datetime.now()
row.create_uid = user.id
else:
row.updated = datetime.now()
row.update_uid = user.id
row.from_dict(values)
row.from_dict(values['amount'])
row.status = 'status' in values and values['status'] and 1 or 0
row.aktif = 'aktif' in values and values['aktif'] and 1 or 0
EisDBSession.add(row)
EisDBSession.flush()
return row
def route_list(request):
return HTTPFound(location=request.route_url('eis-carousel'))
########
# Edit #
########
def query_id(request):
return EisDBSession.query(Eis).filter_by(id=request.matchdict['id'])
def id_not_found(request):
msg = 'Carousel ID %s Tidak Ditemukan.' % request.matchdict['id']
request.session.flash(msg, 'error')
return route_list(request)
import os
import uuid
#from ..tools import row2dict, xls_reader
from datetime import datetime
from sqlalchemy import not_, func
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
import colander
from deform import (
Form,
widget,
ValidationFailure,
)
from ..models import (
EisDBSession
)
from ..models.eis import (
Chart
)
from ..views import BaseView, ColumnDT, DataTables
SESS_ADD_FAILED = 'Tambah eis-chart gagal'
SESS_EDIT_FAILED = 'Edit eis-chart gagal'
@colander.deferred
def deferred_chart_type(node, kw):
values = kw.get('chart_types', [])
return widget.SelectWidget(values=values)
CHART_TYPES = (('line','Line'),
('bar','Bar'),
('pie', 'Pie'))
class AddSchema(colander.Schema):
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=18),
oid='kode')
nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128),
oid = 'nama')
label = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128))
chart_type = colander.SchemaNode(
colander.String(),
widget=deferred_chart_type
)
devider = colander.SchemaNode(
colander.Integer(),
default = 1000,
validator=colander.Range(min=1, max=1000000))
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(),
missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class view_eis_chart(BaseView):
########
# List #
########
@view_config(route_name='eis-chart', renderer='templates/eis-chart/list.pt',
permission='read')
def view_list(self):
return dict(a={})
##########
# Action #
##########
@view_config(route_name='eis-chart-act', renderer='json',
permission='read')
def eis_chart_act(self):
ses = self.req.session
req = self.req
params = req.params
url_dict = req.matchdict
if url_dict['act']=='grid':
columns = []
columns.append(ColumnDT(Chart.id))
columns.append(ColumnDT(Chart.kode))
columns.append(ColumnDT(Chart.nama))
columns.append(ColumnDT(Chart.chart_type))
columns.append(ColumnDT(Chart.devider))
query = EisDBSession.query().select_from(Chart)
rowTable = DataTables(req.GET, query, columns)
return rowTable.output_result()
elif url_dict['act']=='hon':
term = 'term' in params and params['term'] or ''
prefix = 'prefix' in params and params['prefix'] or ''
chart_type = 'chart_type' in params and params['chart_type'] or ''
qry = EisDBSession.query(Chart).\
filter(Chart.status == 1,
Chart.chart_type==chart_type,
Chart.nama.ilike('%%%s%%' % term)).\
order_by(Chart.nama)
r = []
for row in qry.all():
d = dict(
id = row.id,
value = row.nama,
kode = row.kode,
)
r.append(d)
return r
#######
# Add #
#######
def form_validator(self, form, value):
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = EisDBSession.query(Chart).filter_by(id=uid)
row = q.first()
else:
row = None
def get_form(self, class_form, row=None):
schema = class_form(validator=self.form_validator)
schema = schema.bind(chart_types=CHART_TYPES)
schema.request = self.req
if row:
schema.deserialize(row)
return Form(schema, buttons=('simpan','batal'))
def save(self, values, user, row=None):
if not row:
row = Chart()
row.created = datetime.now()
row.create_uid = user.id
row.from_dict(values)
row.updated = datetime.now()
row.update_uid = user.id
row.aktif = 'aktif' in values and values['aktif'] and 1 or 0
EisDBSession.add(row)
EisDBSession.flush()
return row
def save_request(self, values, row=None):
if 'id' in self.req.matchdict:
values['id'] = self.req.matchdict['id']
row = self.save(values, self.req.user, row)
self.req.session.flash('Chart sudah disimpan.')
def route_list(self):
return HTTPFound(location=self.req.route_url('eis-chart'))
def session_failed(self, session_name):
r = dict(form=self.ses[session_name])
del self.ses[session_name]
return r
@view_config(route_name='eis-chart-add', renderer='templates/eis-chart/add.pt',
permission='add')
def view_eis_chart_add(self):
req = self.req
ses = self.ses
form = self.get_form(AddSchema)
if req.POST:
if 'simpan' in req.POST:
controls = req.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
req.session[SESS_ADD_FAILED] = e.render()
return HTTPFound(location=req.route_url('eis-chart-add'))
self.save_request(dict(controls))
return self.route_list()
elif SESS_ADD_FAILED in req.session:
return self.session_failed(SESS_ADD_FAILED)
return dict(form=form.render())
########
# Edit #
########
def query_id(self):
return EisDBSession.query(Chart).filter_by(id=self.req.matchdict['id'])
def id_not_found(self):
msg = 'Chart ID %s Tidak Ditemukan.' % self.req.matchdict['id']
request.session.flash(msg, 'error')
return route_list()
@view_config(route_name='eis-chart-edit', renderer='templates/eis-chart/add.pt',
permission='edit')
def view_eis_chart_edit(self):
request = self.req
row = self.query_id().first()
if not row:
return id_not_found(request)
form = self.get_form(EditSchema)
#form.set_appstruct(rowd)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
request.session[SESS_EDIT_FAILED] = e.render()
return HTTPFound(location=request.route_url('eis-chart-edit',
id=row.id))
self.save_request(dict(controls), row)
return self.route_list()
elif SESS_EDIT_FAILED in request.session:
return self.session_failed(SESS_EDIT_FAILED)
values = row.to_dict()
return dict(form=form.render(appstruct=values))
##########
# Delete #
##########
@view_config(route_name='eis-chart-delete', renderer='templates/eis-chart/delete.pt',
permission='delete')
def view_eis_chart_delete(self):
request = self.req
q = self.query_id()
row = q.first()
if not row:
return self.id_not_found(request)
form = Form(colander.Schema(), buttons=('hapus','batal'))
if request.POST:
if 'hapus' in request.POST:
msg = 'Chart ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
except:
msg = 'Chart ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
return self.route_list()
return dict(row=row,
form=form.render())
import os
import uuid
#from osipkd.tools import row2dict, xls_reader
from datetime import datetime
from sqlalchemy import not_, func
from pyramid.view import (view_config,)
from pyramid.httpexceptions import ( HTTPFound, )
import colander
from deform import (Form, widget, ValidationFailure, )
from ..models import EisDBSession
#from ..models.eis import ARPaymentDetail as AR
from ..views import BaseView, ColumnDT, DataTables
SESS_ADD_FAILED = 'Tambah eis-item gagal'
SESS_EDIT_FAILED = 'Edit eis-item gagal'
def deferred_sumber_id(node, kw):
values = kw.get('sumber_id', [])
return widget.SelectWidget(values=values)
SUMBER_ID = (
(1, 'Manual'),
(2, 'PBB'),
(3, 'BPHTB'),
(4, 'PADL'),
)
class AddSchema(colander.Schema):
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=18),
oid='kode')
nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128),
oid = 'nama')
ref_kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
)
ref_nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=64),
)
tanggal = colander.SchemaNode(
colander.Date(),
)
amount = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
default = 0
)
kecamatan_kd = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
missing=colander.drop)
kecamatan_nm = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=64),
missing=colander.drop)
kelurahan_kd = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
missing=colander.drop
)
kelurahan_nm = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=64),
missing=colander.drop)
is_kota = colander.SchemaNode(
colander.Boolean(),
) # deferred_source_type)
status = colander.SchemaNode(
colander.Boolean(),
) # deferred_source_type)
sumber_id = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
widget=widget.SelectWidget(values=SUMBER_ID)) # deferred_source_type)
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(),
missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class view_eis_item(BaseView):
########
# List #
########
@view_config(route_name='eis-item', renderer='templates/eis-item/list.pt',
permission='read')
def view_list(self):
ses = self.req.session
req = self.req
params = req.params
url_dict = req.matchdict
return dict(project='EIS')
##########
# Action #
##########
@view_config(route_name='eis-item-act', renderer='json',
permission='read')
def eis_item_act(self):
ses = self.req.session
req = self.req
params = req.params
url_dict = req.matchdict
if url_dict['act']=='grid':
columns = []
columns.append(ColumnDT('id'))
columns.append(ColumnDT('kode'))
columns.append(ColumnDT('nama'))
columns.append(ColumnDT('ref_kode'))
columns.append(ColumnDT('ref_nama'))
columns.append(ColumnDT('tanggal', ))
columns.append(ColumnDT('amount', ))
query = EisDBSession.query().select_from(AR)
rowTable = DataTables(req.GET, query, columns)
return rowTable.output_result()
#######
# Add #
#######
def form_validator(self, form, value):
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = EisDBSession.query(AR).filter_by(id=uid)
row = q.first()
else:
row = None
def get_form(self, class_form, row=None):
schema = class_form(validator=self.form_validator)
schema = schema.bind(sumber_id=SUMBER_ID)
schema.request = self.req
if row:
schema.deserialize(row)
return Form(schema, buttons=('simpan','batal'))
def save(self, values, user, row=None):
if not row:
row = AR()
row.created = datetime.now()
row.create_uid = user.id
row.from_dict(values)
row.updated = datetime.now()
row.update_uid = user.id
row.disable = 'disable' in values and values['disable'] and 1 or 0
row.is_kota = 'is_kota' in values and values['is_kota'] and 1 or 0
EisDBSession.add(row)
EisDBSession.flush()
return row
def save_request(self, values, row=None):
if 'id' in self.req.matchdict:
values['id'] = self.req.matchdict['id']
row = self.save(values, self.req.user, row)
self.req.session.flash('AR sudah disimpan.')
def route_list(self):
return HTTPFound(location=self.req.route_url('eis-item') )
def session_failed(self, session_name):
#r = dict(form=self.session[session_name])
del self.session[session_name]
#return r
@view_config(route_name='eis-item-add', renderer='templates/eis-item/add.pt',
permission='add')
def view_eis_item_add(self):
req = self.req
ses = self.session
form = self.get_form(AddSchema)
if req.POST:
if 'simpan' in req.POST:
controls = req.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
#req.session[SESS_ADD_FAILED] = e.render()
#form.set_appstruct(rowd)
return dict(form=form)
#return HTTPFound(location=req.route_url('eis-item-add'))
self.save_request(dict(controls))
return self.route_list()
elif SESS_ADD_FAILED in req.session:
return dict(form=form)
#return self.session_failed(SESS_ADD_FAILED)
return dict(form=form)
########
# Edit #
########
def query_id(self):
return EisDBSession.query(AR).filter_by(id=self.req.matchdict['id'])
def id_not_found(self):
msg = 'AR ID %s Tidak Ditemukan.' % self.req.matchdict['id']
request.session.flash(msg, 'error')
return route_list()
@view_config(route_name='eis-item-edit', renderer='templates/eis-item/add.pt',
permission='edit')
def view_eis_item_edit(self):
request = self.req
row = self.query_id().first()
if not row:
return id_not_found(request)
#values = row.to_dict()
rowd={}
rowd['id'] = row.id
rowd['kode'] = row.kode
rowd['nama'] = row.nama
rowd['ref_kode'] = row.ref_kode
rowd['ref_nama'] = row.ref_nama
rowd['tanggal'] = row.tanggal
rowd['amount'] = row.amount
rowd['kecamatan_kd'] = row.kecamatan_kd
rowd['kecamatan_nm'] = row.kecamatan_nm
rowd['kelurahan_kd'] = row.kelurahan_kd
rowd['kelurahan_nm'] = row.kelurahan_nm
rowd['is_kota'] = row.is_kota
rowd['status'] = row.status
rowd['sumber_id'] = row.sumber_id
form = self.get_form(EditSchema)
form.set_appstruct(rowd)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
return dict(form=form)
#request.session[SESS_EDIT_FAILED] = e.render()
#return HTTPFound(location=request.route_url('eis-item-edit',
# id=row.id))
self.save_request(dict(controls), row)
return self.route_list()
elif SESS_EDIT_FAILED in request.session:
return self.session_failed(SESS_EDIT_FAILED)
return dict(form=form)
##########
# Delete #
##########
@view_config(route_name='eis-item-delete', renderer='templates/eis-item/delete.pt',
permission='delete')
def view_eis_item_delete(self):
request = self.req
q = self.query_id()
row = q.first()
if not row:
return self.id_not_found(request)
form = Form(colander.Schema(), buttons=('hapus','batal'))
if request.POST:
if 'hapus' in request.POST:
msg = 'AR ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
except:
msg = 'AR ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
return self.route_list()
return dict(row=row,
form=form.render())
<html metal:use-macro="load: base.pt">
<div metal:fill-slot="left-menu">
<link href="/static/css/navbar-fixed-left.css" rel="stylesheet">
</div>
</html>
\ No newline at end of file \ No newline at end of file
<html metal:use-macro="load: base.pt">
<div metal:fill-slot="left-menu">
<link href="/static/css/navbar-fixed-left.css" rel="stylesheet">
<div class="nav-side-menu">
<div class="brand">Eksekutif Summary</div>
<i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i>
<div class="menu-list">
<ul id="menu-content" class="menu-content collapse out">
<!--li>
<a href="#">
<i class="fa fa-dashboard fa-lg"></i> Executive Summary
</a>
</li-->
<li data-toggle="collapse" data-target="#tabular" class="collapsed active">
<a href="#"><i class="fa fa-gift fa-lg"></i> Tabular <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="tabular">
<li tal:repeat="dat tab_datas"><a href="#" onclick="javascript:hide_other();$('#grid-${dat.id}').show();">${dat.nama}</a></li>
</ul>
<li data-toggle="collapse" data-target="#line" class="collapsed">
<a href="#"><i class="fa fa-globe fa-lg"></i> Line Graph <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="line">
<li tal:repeat="dat line_datas"><a href="#" onclick="javascript:hide_other();$('#chart-line-${dat.id}').show();">${dat.nama}</a></li>
</ul>
<li data-toggle="collapse" data-target="#bar" class="collapsed">
<a href="#"><i class="fa fa-car fa-lg"></i> Bar Graph <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="bar">
<li tal:repeat="dat bar_datas"><a href="#" onclick="javascript:hide_other();$('#chart-bar-${dat.id}').show();">${dat.nama}</a></li>
</ul>
<li data-toggle="collapse" data-target="#pie" class="collapsed">
<a href="#"><i class="fa fa-car fa-lg"></i> Pie Graph <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="pie">
<li tal:repeat="dat pie_datas"><a href="#" onclick="javascript:hide_other();$('#chart-pie-${dat.id}').show();">${dat.nama}</a></li>
</ul>
</ul>
</div>
</div>
</div>
</html>
\ No newline at end of file \ No newline at end of file
<html metal:use-macro = "load: ../../../views/templates/base.pt">
<div metal:fill-slot="header">
<link href="/static/chart/legend/legend.css" rel="stylesheet">
<script type="text/javascript" src="/static/chart/Chart.js"> </script>
<script type="text/javascript" src="/static/chart/legend/legend.js"> </script>
</div>
<div metal:fill-slot="company">
<a class="navbar-brand" href="/eis">${request.company}</a>
</div>
<div metal:fill-slot="navs">
<ul class="nav navbar-nav">
<li><a href="/eis" class="navbar-brand"><strong>${request.company}</strong></a></li>
<!-- Admin Menu -->
<li class="dropdown" tal:condition="request.user.user_name=='admin'">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Konfigurasi <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/eis/carousel">Carousel</a></li>
<li><a href="/eis/chart">Chart</a></li>
<!-- <li><a href="/eis-chart-item">Chart Item</a></li> -->
<li><a href="/eis/slide">Slide</a></li>
</ul>
</li>
</ul>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal">
<fieldset class="deformFormFieldset">
<input type="hidden" name="_charset_" />
<input type="hidden" name="__formid__" value="deform"/>
<div tal:condition="'id' in form">
<div tal:define="field form['id']" style="display: none;">
{structure:field.serialize()}
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<div class="col-md-6">
<div class="form-group" tal:define="field form['tahun']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-8">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group" tal:define="field form['kode']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-8">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
<div class="form-group" tal:define="field form['nama']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-2" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-10">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<script>
$('#nama').bind('typeahead:selected', function(obj, datum, name) {
$('#kode').val(datum.kode);
});
</script>
<div class="form-group">
<div class="col-md-6">
<div class="form-group" tal:define="field form['order_id']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-8">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="col-md-6">
<div class="form-group" tal:define="field form['status']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-8">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group" tal:define="field form['aktif']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-8">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-12">
<div class="panel panel-default" title="">
<div class="panel-heading">Nilai</div>
<div class="panel-body">
${form.start_mapping('amount')}
<!--div class="row collapse collapse error"if field.error:-->
<div class="form-group" tal:repeat="field form['amount']">
<label class="control-label col-md-3">${field.title}</label>
<div class="col-md-8">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
${form.end_mapping('amount')}
</div>
</div>
</div>
<div class="col-md-12"></div>
<div class="form-group col-md-offset-5">
<button id="deformsave" name="simpan" type="submit" class="btn btn-primary "
value="simpan">Simpan</button>
<button id="deformcancel" name="batal" type="submit" class="btn btn-default "
value="batal">Batal</button>
</div>
</div>
</fieldset>
</form>
</div>
<script>
var nip_field='${field.oid}';
var nm_field ='${field.oid}';
var gj_field ='${field.oid}';
</script>
<script>
$('#${field.oid}').bind('typeahead:selected', function(obj, datum, name) {
$('#'+nip_field).val(datum.nip);
$('#'+nm_field).val(datum.nama);
$('#'+id_field).val(datum.id);
$('#'+gj_field).val(datum.gaji_bersih);
});
</script>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<div class="panel panel-danger">
<div class="panel-heading">
<h3 class="panel-title">Peringatan</h3>
</div>
<div class="panel-body">
Hapus Data #${row.id} ${row.nama} ?
</div>
</div>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<table id="table1" class="table table-bordered table-hover table-condensed">
<thead>
<tr>
<th>ID</th>
<th>Tahun</th>
<th>Kode</th>
<th>Uraian</th>
<th>Amt. Tahun</th>
<th>Amt. Bulan</th>
<th>Amt. Minggu</th>
<th>Amt. Hari</th>
<th>Order</th>
<th>Status</th>
<th>Aktif</th>
<th>Tgl.Update</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div metal:fill-slot="scripts">
<script>
var mID;
var mThn;
var oTable;
var oTableUrl = "/eis/carousel/grid/act";
$(document).ready(function () {
oTable = $('#table1').DataTable({
dom : '<"toolbar">lfrtip',
processing : true,
serverSide : true,
ajax : oTableUrl,
stateSave : true,
scrollCollapse: true,
sort : true,
info : false,
filter : true,
autoWidth : false,
paginate : true,
paginationType: "full_numbers",
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100]
],
columnDefs: [{
searchable: false,
visible: false,
targets: [0]
}],
columns: [
null,
{"width": "50px"},
{"width": "60px"},
{"width": "350px", "sClass":"left"},
{"width": "100px", "sClass":"right"},
{"width": "100px", "sClass":"right"},
{"width": "100px", "sClass":"right"},
{"width": "100px", "sClass":"right"},
{"width": "40px", "sClass":"center"},
{"width": "40px", "sClass":"center"},
{"width": "40px", "sClass":"center"},
{"width": "75px", "sClass":"center"},
],
"language": {
"search" : "Cari: ",
"paginate":{
"first" : "Pertama ",
"last" : "Akhir ",
"previous": "Mundur ",
"next" : "Maju ",
},
"lengthMenu": "Tampil _MENU_ baris "
},
});
var tb_array = [
'<div class="btn-carousel pull-left">',
' <button id="btn_add" class="btn btn btn-primary" type="button">Tambah</button>',
' <button id="btn_edit" class="btn btn btn-primary" type="button">Edit</button>',
' <button id="btn_delete" class="btn btn btn-danger" type="button">Hapus</button>',
' <!--button id="btn_pdf" class="btn btn btn-warning" type="button">PDF</button-->',
' <button id="btn_csv" class="btn btn btn-default" type="button">CSV</button>',
' &nbsp;',
'</div>',
];
var tb = tb_array.join(' ');
$("div.toolbar").html(tb);
$("div.toolbar").attr('style', 'display:block; float: left; margin-bottom:6px; line-height:16px;');
$('#table1 tbody').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
var aData = oTable.row( this ).data();
oTable.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
mID = aData[0];
oTable.$('tr.row_selected').removeClass('row_selected');
$(this).addClass('row_selected');
}
});
$('#btn_add').click(function () {
window.location = '/eis/carousel/add';
});
$('#btn_edit').click(function () {
if (mID) window.location = '/eis/carousel/'+mID+'/edit';
else alert('Pilih Baris yang akan di edit');
});
$('#btn_delete').click(function () {
if (mID) window.location = '/eis/carousel/'+mID+'/delete';
else alert('Pilih Baris yang akan di hapus');
});
})
</script>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal">
<fieldset class="deformFormFieldset">
<input type="hidden" name="_charset_" />
<input type="hidden" name="__formid__" value="deform"/>
<div tal:condition="'id' in form">
<div tal:define="field form['id']" style="display: none;">
{structure:field.serialize()}
</div>
</div>
<div class="col-md-8">
<div class="form-group">
<div class="col-md-6">
<div class="form-group" tal:define="field form['kode']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-8">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
<div class="form-group" tal:define="field form['nama']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-2" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-10">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<div class="col-md-6">
<div class="form-group" tal:define="field form['source_type']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-6">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group" tal:define="field form['is_sum']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-6" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-6">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
<div class="form-group" tal:define="field form['rekening_kd']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-2" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-10">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<div class="col-sm-6">
<div class="form-group" tal:define="field form['color']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-2" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-10">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group" tal:define="field form['highlight']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-2" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-10">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-6">
<div class="panel panel-default" title="">
<div class="panel-heading">Group 1</div>
<div class="panel-body">
${form.start_mapping('values_1')}
<!--div class="row collapse collapse error"if field.error:-->
<div class="form-group" tal:repeat="field form['values_1']">
<label class="control-label col-md-3">${field.title}</label>
<div class="col-md-8">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
${form.end_mapping('values_1')}
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default" title="">
<div class="panel-heading">Group 2</div>
<div class="panel-body">
${form.start_mapping('values_2')}
<!--div class="row collapse collapse error"if field.error:-->
<div class="form-group" tal:repeat="field form['values_2']">
<label class="control-label col-md-3">${field.title}</label>
<div class="col-md-8">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
${form.end_mapping('values_2')}
</div>
</div>
</div>
</div>
<div class="col-md-offset-2">
<div class="form-group">
<button id="deformsave" name="simpan" type="submit" class="btn btn-primary "
value="simpan">Simpan</button>
<button id="deformcancel" name="batal" type="submit" class="btn btn-default "
value="batal">Batal</button>
</div>
</div>
</div>
</fieldset>
</form>
</div>
<script>
var nip_field='${field.oid}';
var nm_field ='${field.oid}';
var gj_field ='${field.oid}';
</script>
<script>
$('#${field.oid}').bind('typeahead:selected', function(obj, datum, name) {
$('#'+nip_field).val(datum.nip);
$('#'+nm_field).val(datum.nama);
$('#'+id_field).val(datum.id);
$('#'+gj_field).val(datum.gaji_bersih);
});
</script>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<div class="panel panel-danger">
<div class="panel-heading">
<h3 class="panel-title">Peringatan</h3>
</div>
<div class="panel-body">
${request.title} #${row.kode} ${row.nama} ?
</div>
</div>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<form class="form-horizontal">
<div class="form-group">
<div class="form-group" id="item-kode">
<label for="kode" class="control-label col-md-2" id="req-kode">
Kode</label>
<div class="col-md-4">
<input type="text" class="form-control" value="${rows and rows.kode or None}">
</div>
</div>
<div class="form-group" id="item-uraian">
<label for="uraian" class="control-label col-md-2" id="req-uraian">
Uraian</label>
<div class="col-md-4">
<input type="text" class="form-control" value="${rows and rows.nama or None}">
</div>
</div>
</div>
</form>
<table id="table1" class="table table-bordered table-hover table-condensed">
<thead>
<tr>
<th>ID</th>
<th>Kode</th>
<th>Uraian</th>
<th>Type</th>
<th>Nilai 1</th>
<th>Nilai 2</th>
<th>Nilai 3</th>
<th>Nilai 4</th>
<th>Nilai 5</th>
<th>Nilai 6</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div metal:fill-slot="scripts">
<script>
var mID;
var mThn;
var oTable;
var oTableUrl = "/eis/chart/item/${rows.id}/grid/act";;
$(document).ready(function () {
oTable = $('#table1').DataTable({
dom : '<"toolbar">lfrtip',
processing : true,
serverSide : true,
ajax : oTableUrl,
stateSave : true,
scrollCollapse: true,
sort : true,
info : false,
filter : true,
autoWidth : false,
paginate : true,
paginationType: "full_numbers",
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100]
],
columnDefs: [{
searchable: false,
visible: false,
targets: [0]
}],
columns: [
null,
{"width": "75px"},
null,
{"width": "100px", "sClass":"left"},
{"width": "100px", "sClass":"right"},
{"width": "100px", "sClass":"right"},
{"width": "100px", "sClass":"right"},
{"width": "100px", "sClass":"right"},
{"width": "100px", "sClass":"right"},
{"width": "100px", "sClass":"right"},
],
"language": {
"search" : "Cari: ",
"paginate":{
"first" : "Pertama ",
"last" : "Akhir ",
"previous": "Mundur ",
"next" : "Maju ",
},
"lengthMenu": "Tampil _MENU_ baris "
},
});
var tb_array = [
'<div class="btn pull-left">',
' <button id="btn_back" class="btn btn btn-primary" type="button">Kembali</button>',
' <button id="btn_add" class="btn btn btn-primary" type="button">Tambah</button>',
' <button id="btn_edit" class="btn btn btn-primary" type="button">Edit</button>',
' <button id="btn_delete" class="btn btn btn-danger" type="button">Hapus</button>',
' <!--button id="btn_pdf" class="btn btn btn-warning" type="button">PDF</button-->',
' <button id="btn_csv" class="btn btn btn-default" type="button">CSV</button>',
' &nbsp;',
'</div>',
];
var tb = tb_array.join(' ');
$("div.toolbar").html(tb);
$("div.toolbar").attr('style', 'display:block; float: left; margin-bottom:6px; line-height:16px;');
$('#table1 tbody').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
var aData = oTable.row( this ).data();
oTable.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
mID = aData[0];
oTable.$('tr.row_selected').removeClass('row_selected');
$(this).addClass('row_selected');
}
});
$('#btn_back').click(function () {
window.location = '/eis/chart';
});
$('#btn_add').click(function () {
window.location = '/eis/chart/item/${rows.id}/add';
});
$('#btn_edit').click(function () {
if (mID) window.location = '/eis/chart/item/${rows.id}/'+mID+'/edit';
else alert('Pilih Baris yang akan di edit');
});
$('#btn_delete').click(function () {
if (mID) window.location = '/eis/chart/item/${rows.id}/'+mID+'/delete';
else alert('Pilih Baris yang akan di hapus');
});
})
</script>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<div class="panel panel-danger">
<div class="panel-heading">
<h3 class="panel-title">Peringatan</h3>
</div>
<div class="panel-body">
${request.title} #${row.kode} ${row.nama} ?
</div>
</div>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<table id="table1" class="table table-bordered table-hover table-condensed">
<thead>
<tr>
<th>ID</th>
<th>Kode</th>
<th>Uraian</th>
<th>Type</th>
<th>Pembagi</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div metal:fill-slot="scripts">
<script>
var mID;
var mThn;
var oTable;
var oTableUrl = "/eis/chart/grid/act";
$(document).ready(function () {
oTable = $('#table1').DataTable({
dom : '<"toolbar">lfrtip',
processing : true,
serverSide : true,
ajax : oTableUrl,
stateSave : true,
scrollCollapse: true,
sort : true,
info : false,
filter : true,
autoWidth : false,
paginate : true,
paginationType: "full_numbers",
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100]
],
columnDefs: [{
searchable: false,
visible: false,
targets: [0]
}],
columns: [
null,
{"width": "75px"},
null,
{"width": "75px"},
{"width": "75px", "sClass": "right"},
],
"language": {
"search" : "Cari: ",
"paginate":{
"first" : "Pertama ",
"last" : "Akhir ",
"previous": "Mundur ",
"next" : "Maju ",
},
"lengthMenu": "Tampil _MENU_ baris "
},
});
var tb_array = [
'<div class="btn pull-left">',
' <button id="btn_add" class="btn btn btn-primary" type="button">Tambah</button>',
' <button id="btn_edit" class="btn btn btn-primary" type="button">Edit</button>',
' <button id="btn_delete" class="btn btn btn-danger" type="button">Hapus</button>',
' <button id="btn_csv" class="btn btn btn-default" type="button">CSV</button>',
' <button id="btn_item" class="btn btn btn-warning" type="button">Item data</button>',
' &nbsp;',
'</div>',
];
var tb = tb_array.join(' ');
$("div.toolbar").html(tb);
$("div.toolbar").attr('style', 'display:block; float: left; margin-bottom:6px; line-height:16px;');
$('#table1 tbody').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
var aData = oTable.row( this ).data();
oTable.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
mID = aData[0];
oTable.$('tr.row_selected').removeClass('row_selected');
$(this).addClass('row_selected');
}
});
$('#btn_item').click(function () {
if (mID) window.location = '/eis/chart/item/'+mID;
else alert('Pilih Baris dulu');
});
$('#btn_add').click(function () {
window.location = '/eis/chart/add';
});
$('#btn_edit').click(function () {
if (mID) window.location = '/eis/chart/'+mID+'/edit';
else alert('Pilih Baris yang akan di edit');
});
$('#btn_delete').click(function () {
if (mID) window.location = '/eis/chart/'+mID+'/delete';
else alert('Pilih Baris yang akan di hapus');
});
})
</script>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal">
<fieldset class="deformFormFieldset">
<input type="hidden" name="_charset_" />
<input type="hidden" name="__formid__" value="deform"/>
<div tal:condition="'id' in form">
<div tal:define="field form['id']" style="display: none;">
{structure:field.serialize()}
</div>
</div>
<div class="col-md-8">
<div class="form-group">
<div class="col-md-6">
<div class="form-group" tal:define="field form['kode']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-8">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
<div class="form-group" tal:define="field form['nama']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-2" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-10">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<div class="col-md-6">
<div class="form-group" tal:define="field form['ref_kode']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-8">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
<div class="form-group" tal:define="field form['ref_nama']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-2" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-10">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<div class="col-md-6">
<div class="form-group" tal:define="field form['amount']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-6">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group" tal:define="field form['tanggal']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-6" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-6">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-4">
<div class="form-group" tal:define="field form['kecamatan_kd']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-6" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-6">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
<div class="col-md-8">
<div class="form-group" tal:define="field form['kecamatan_nm']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-5" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-7">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-4">
<div class="form-group" tal:define="field form['kelurahan_kd']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-6" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-6">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
<div class="col-md-8">
<div class="form-group" tal:define="field form['kelurahan_nm']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-5" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-7">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-6">
<div class="form-group" tal:define="field form['sumber_id']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-6">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
<div class="col-md-offset-2">
<div class="form-group">
<button id="deformsave" name="simpan" type="submit" class="btn btn-primary "
value="simpan">Simpan</button>
<button id="deformcancel" name="batal" type="submit" class="btn btn-default "
value="batal">Batal</button>
</div>
</div>
</div>
</fieldset>
</form>
</div>
<script>
var nip_field='${field.oid}';
var nm_field ='${field.oid}';
var gj_field ='${field.oid}';
</script>
<script>
$('#${field.oid}').bind('typeahead:selected', function(obj, datum, name) {
$('#'+nip_field).val(datum.nip);
$('#'+nm_field).val(datum.nama);
$('#'+id_field).val(datum.id);
$('#'+gj_field).val(datum.gaji_bersih);
});
</script>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<div class="panel panel-danger">
<div class="panel-heading">
<h3 class="panel-title">Peringatan</h3>
</div>
<div class="panel-body">
${request.title} #${row.kode} ${row.nama} ?
</div>
</div>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<table id="table1" class="table table-bordered table-hover table-condensed">
<thead>
<tr>
<th>ID</th>
<th>Kode</th>
<th>Uraian</th>
<th>Ref. Kode</th>
<th>Ref. Nama</th>
<th>Tanggal</th>
<th>Nilai</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div metal:fill-slot="scripts">
<script>
var mID;
var mThn;
var oTable;
var oTableUrl = "/eis-item/grid/act";;
$(document).ready(function () {
oTable = $('#table1').DataTable({
dom : '<"toolbar">lfrtip',
processing : true,
serverSide : true,
ajax : oTableUrl,
stateSave : true,
scrollCollapse: true,
sort : true,
info : false,
filter : true,
autoWidth : false,
paginate : true,
paginationType: "full_numbers",
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100]
],
columnDefs: [{
searchable: false,
visible: false,
targets: [0]
}],
columns: [
null,
{"width": "75px"},
null,
{"width": "100px", "sClass":"left"},
null,
{"width": "75px", "sClass":"center"},
{"width": "100px", "sClass":"right"},
],
"language": {
"search" : "Cari: ",
"paginate":{
"first" : "Pertama ",
"last" : "Akhir ",
"previous": "Mundur ",
"next" : "Maju ",
},
"lengthMenu": "Tampil _MENU_ baris "
},
});
var tb_array = [
'<div class="btn pull-left">',
' <button id="btn_back" class="btn btn btn-primary" type="button">Kembali</button>',
' <button id="btn_add" class="btn btn btn-primary" type="button">Tambah</button>',
' <button id="btn_edit" class="btn btn btn-primary" type="button">Edit</button>',
' <button id="btn_delete" class="btn btn btn-danger" type="button">Hapus</button>',
' <!--button id="btn_pdf" class="btn btn btn-warning" type="button">PDF</button-->',
' <button id="btn_csv" class="btn btn btn-default" type="button">CSV</button>',
' &nbsp;',
'</div>',
];
var tb = tb_array.join(' ');
$("div.toolbar").html(tb);
$("div.toolbar").attr('style', 'display:block; float: left; margin-bottom:6px; line-height:16px;');
$('#table1 tbody').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
var aData = oTable.row( this ).data();
oTable.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
mID = aData[0];
oTable.$('tr.row_selected').removeClass('row_selected');
$(this).addClass('row_selected');
}
});
$('#btn_back').click(function () {
window.location = '/eis-chart';
});
$('#btn_add').click(function () {
window.location = '/eis-item/add';
});
$('#btn_edit').click(function () {
if (mID) window.location = '/eis-item/'+mID+'/edit';
else alert('Pilih Baris yang akan di edit');
});
$('#btn_delete').click(function () {
if (mID) window.location = '/eis-item/'+mID+'/delete';
else alert('Pilih Baris yang akan di hapus');
});
})
</script>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<!-- <div metal:fill-slot="content"> -->
<div metal:fill-slot="scripts">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">${request.title}</h3>
</div>
<div class="panel-body">
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal">
<div class="alert alert-danger" tal:condition="form and form.error and True or False">
<div class="error-msg-lbl">Kesalahan Pengisian Form</div>
<p class="error-msg">${form.errormsg}</p>
</div>
<div class="form-group" tal:repeat="f form" id="group-${f.oid}">
<div id="item-${f.oid}" style="${f.widget.hidden and 'display:none;' or 'display:block;'}">
<label for="${f.oid}" class="control-label col-md-2 ${f.required and 'required' or ''} " id="req-${f.oid}">
${f.title}</label>
<div class="col-md-3">
${structure:f.serialize()}
<p id="error-${f.oid}" class="help-block" tal:condition="f.error"
tal:repeat="error f.error.messages()">
${error}</p>
</div>
</div>
</div>
<div class="col-md-4">
<label class="control-label col-md-3"></label>
<button type="submit" class="btn btn-primary" id="simpan" name="simpan">Simpan</button>
<button type="submit" class="btn btn-warning" id="batal" name="batal">Tutup</button>
</div>
</form>
</div>
</div>
<style>
.red-border {
border-color: rgba(255, 0, 0, 0.2);
box-shadow: 0 1px 1px rgba(255, 0, 0, 0.2); inset, 0 0 8px rgba(255, 0, 0, 0.2);
outline: 0 none;
}
</style>
<!-- </div> -->
<script>
$(document).ready(function(){
show_type();
function show_type(){
type_id = $('#source_type').val();
if (type_id == 'grid'){
//$('#grid_nm').prop('readonly', false);
//$('#grid_nm').prop('enabled', true);
$('#grid_nm').typeahead({"minLength": 1,
"remote": "/eis/carousel/hon/act?term=%QUERY",
"limit": 8});
$('#group-grid_nm').css("display","block");
}
else{
$('#grid_nm').typeahead('destroy');
//$('#grid_nm').prop('readonly', true);
//$('#grid_nm').prop('enabled', false);
$('#grid_nm').val("");
$('#group-grid_nm').css("display","none");
}
if (type_id == 'chart-pie'){
$('#pie_nm').typeahead('destroy');
//$('#pie_nm').prop('readonly', false);
//$('#pie_nm').prop('enabled', true);
$('#pie_nm').typeahead({"minLength": 1,
"remote": "/eis/chart/hon/act?term=%QUERY&chart_type=pie",
"limit": 8});
$('#group-pie_nm').css("display","block");
}
else{
$('#pie_nm').typeahead('destroy');
//$('#pie_nm').prop('readonly', true);
//$('#pie_nm').prop('enabled', false);
$('#pie_nm').val("");
$('#group-pie_nm').css("display","none");
}
if (type_id == 'chart-bar'){
//$('#bar_nm').prop('readonly', false);
//$('#bar_nm').prop('enabled', true);
$('#bar_nm').typeahead({"minLength": 1,
"remote": "/eis/chart/hon/act?term=%QUERY&chart_type=bar",
"limit": 8});
$('#group-bar_nm').css("display","block");
}
else{
$('#bar_nm').typeahead('destroy');
//$('#bar_nm').prop('readonly', true);
//$('#bar_nm').prop('enabled', false);
$('#bar_nm').val("");
$('#group-bar_nm').css("display","none");
}
if (type_id == 'chart-line'){
//$('#line_nm').prop('readonly', false);
//$('#line_nm').prop('enabled', true);
$('#line_nm').typeahead({"minLength": 1,
"remote": "/eis/chart/hon/act?term=%QUERY&chart_type=line",
"limit": 8});
$('#group-line_nm').css("display","block");
}
else{
$('#line_nm').typeahead('destroy');
//$('#line_nm').prop('readonly', true);
//$('#line_nm').prop('enabled', false);
$('#line_nm').val("");
$('#group-line_nm').css("display","none");
}
if (type_id == 'image'){
$('#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);
$('#group-upload').css("display","none");
}
}
$('#source_type').change( function(){
$('#source_id').val("");
show_type();
});
$('#grid_nm, #line_nm, #bar_nm, #pie_nm').on(
'typeahead:selected',
function(obj, datum, name) {
$('#source_id').val(datum.id);
}
);
$('#upload').change( function(){
$('#source_id').val($('#upload').val());
});
});
</script>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<div class="panel panel-danger">
<div class="panel-heading">
<h3 class="panel-title">Peringatan</h3>
</div>
<div class="panel-body">
${request.title} #${row.kode} ${row.nama} ?
</div>
</div>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<table id="table1" class="table table-bordered table-hover table-condensed">
<thead>
<tr>
<th>ID</th>
<th>Kode</th>
<th>Uraian</th>
<th>Type</th>
<th>URL/ID</th>
<th>Order</th>
<th>Aktif</th>
<th>Status</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div metal:fill-slot="scripts">
<script>
var mID;
var mThn;
var oTable;
var oTableUrl = "/eis/slide/grid/act";
$(document).ready(function () {
oTable = $('#table1').DataTable({
dom : '<"toolbar">lfrtip',
processing : true,
serverSide : true,
ajax : oTableUrl,
stateSave : true,
scrollCollapse: true,
sort : true,
info : false,
filter : true,
autoWidth : false,
paginate : true,
paginationType: "full_numbers",
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100]
],
columnDefs: [{
searchable: false,
visible: false,
targets: [0]
}],
columns: [
null,
{"width": "75px"},
null,
{"width": "100px"},
null,
{"width": "50px", "sClass":"center"},
{"width": "60px", "sClass":"center"},
{"width": "60px", "sClass":"center"},
],
"language": {
"search" : "Cari: ",
"paginate":{
"first" : "Pertama ",
"last" : "Akhir ",
"previous": "Mundur ",
"next" : "Maju ",
},
"lengthMenu": "Tampil _MENU_ baris "
},
});
var tb_array = [
'<div class="btn-eis-slide pull-left">',
' <button id="btn_add" class="btn btn btn-primary" type="button">Tambah</button>',
' <button id="btn_edit" class="btn btn btn-primary" type="button">Edit</button>',
' <button id="btn_delete" class="btn btn btn-danger" type="button">Hapus</button>',
' <!--button id="btn_pdf" class="btn btn btn-warning" type="button">PDF</button-->',
' <button id="btn_calc" class="btn btn btn-default" type="button">Hitung</button>',
' &nbsp;',
'</div>',
];
var tb = tb_array.join(' ');
$("div.toolbar").html(tb);
$("div.toolbar").attr('style', 'display:block; float: left; margin-bottom:6px; line-height:16px;');
$('#table1 tbody').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
var aData = oTable.row( this ).data();
oTable.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
mID = aData[0];
oTable.$('tr.row_selected').removeClass('row_selected');
$(this).addClass('row_selected');
}
});
$('#btn_calc').click(function () {
window.location = '/eis/calc-all';
});
$('#btn_add').click(function () {
window.location = '/eis/slide/add';
});
$('#btn_edit').click(function () {
if (mID) window.location = '/eis/slide/'+mID+'/edit';
else alert('Pilih Baris yang akan di edit');
});
$('#btn_delete').click(function () {
if (mID) window.location = '/eis/slide/'+mID+'/delete';
else alert('Pilih Baris yang akan di hapus');
});
})
</script>
</div>
</html>
<html metal:use-macro="load: base.pt">
<div metal:fill-slot="content">
<!-- Main component for a primary marketing message or call to action -->
<div class="well">
<h1>${request.app_name} ${request.company} </h1>
<p><img src="/static/img/logo.png" class="img-float img-thumbnail"/>
Selamat datang di module Eksekutif Summary
<p>Aplikasi ini dibangun dengan menggunakan platform open source yang terdiri dari:</p>
<ul>
<li>Web Framework<a href="http://pylonsproject.org/">Pyramid</a> </li>
<li>Template <a href="https://pypi.python.org/pypi/ziggurat-foundations">Ziggurat Foundations</a></li>
<li>Template <a href="http://docs.pylonsproject.org/projects/pyramid-chameleon/en/latest/">Chameleon</a></li>
<li>Form Generator <a href="http://docs.pylonsproject.org/projects/deform/">Deform</a></li>
<li>CSS Framework <a href="http://getbootstrap.com">Bootstrap</a></li>
<li>Database <a href="http://postgresql.org">Postgres SQL</a></li>
</ul>
<h3>Silahkan pilih sub module berikut ini</h3>
<div><a href="/dashboard" class="btn btn-info" role="button">Dashboard</a>
<a href="/eis-home" class="btn btn-info" role="button">Interaktif</a></div>
<p>
</div><!--well-->
</div>
</html>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!