perubahan ke base 5

1 parent 3e14c155
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
# from .models import DBSession, EisBase
from opensipkd.tools import get_settings
from pyramid.events import BeforeRender, subscriber
from opensipkd.base import get_params, BaseApp
import os
class AppClass(BaseApp):
def __init__(self):
super().__init__()
self.base_dir = os.path.split(__file__)[0]
APP_CLASS = AppClass()
def includeme(config):
# APP_CLASS.init()
# APP_CLASS.static_views(config)
# SPPT_CLASS.route_from_list(config, routes, paket="opensipkd.pbb.esppt")
APP_CLASS.route_from_csv(config, "eispajak.views")
config.scan(".")
print("+", __name__, "includeme class loaded")
# url = 'pbb.url' in settings and settings['pbb.url'] and 'pbb.' or 'sqlalchemy.'
# # if not url:
# # url = 'pbbm.url' in settings and settings['pbbm.url'] and 'pbbm.' or 'sqlalchemy.'
# # log.debug(url)
# engine = engine_from_config(settings, url)
# PbbmDBSession.configure(bind=engine)
# PbbmBase.metadata.bind = engine
# set_routes(config, app_id=191)
# config.scan('.')
# log.info("Module PBB Monitoring Loaded")
# if 'eis.' in settings:
# engine = engine_from_config(settings, 'eis.')
# DBSession.configure(bind=engine)
# EisBase.metadata.bind = engine
@subscriber(BeforeRender)
def add_global(event):
event['get_eis_menus'] = APP_CLASS.get_menus
\ No newline at end of file
from datetime import datetime
from sqlalchemy import (
Column,
Integer,
Text,
DateTime,
ForeignKey,
UniqueConstraint,
String,
SmallInteger
func
)
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,
KodeModel as BaseKodeModel, NamaModel as BaseNamaModel)
from opensipkd.base.models import *
from opensipkd.base.models import (DefaultModel as BaseDefaultModel)
TABLE_ARGS = {'extend_existing':True,
'schema':'eis'
}
class DefaultModel(BaseDefaultModel):
def save(self):
if self.id:
EisDBSession.merge(self)
else:
EisDBSession.add(self)
@classmethod
def query(cls):
return EisDBSession.query(cls)
@classmethod
def count(cls):
return EisDBSession.query(func.count('id')).scalar()
class KodeModel(DefaultModel, BaseKodeModel):
pass
return DBSession.query(func.count('id')).scalar()
class NamaModel(KodeModel, BaseNamaModel):
pass
from .eis import Eis, Slide, Chart, ChartItem, EisParams, ArPayment, LastUpdate
\ No newline at end of file
from .eis import *
\ No newline at end of file
from datetime import datetime
from sqlalchemy import (
Column,
Integer,
BigInteger,
SmallInteger,
Text,
DateTime,
String,
UniqueConstraint,
ForeignKey,
Index
ForeignKey
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm import (
scoped_session,
sessionmaker,
relationship, backref
relationship
)
from ..models import (EisDBSession, DefaultModel, EisBase, NamaModel, TABLE_ARGS)
from . import (DBSession, DefaultModel, Base, NamaModel, TABLE_ARGS, Base)
class Eis(EisBase, NamaModel):
class Eis(Base, NamaModel):
__tablename__ = 'wells'
tahun = Column(Integer)
amt_tahun = Column(BigInteger)
......@@ -33,7 +26,7 @@ class Eis(EisBase, NamaModel):
@classmethod
def sum_data(cls, kode, tahun):
q = EisDBSession.query(cls).filter_by(
q = DBSession.query(cls).filter_by(
kode==kode,
tahun=tahun).first()
if q:
......@@ -47,13 +40,13 @@ class Eis(EisBase, NamaModel):
@classmethod
def sum_order_id(cls, tahun):
q = EisDBSession.query(cls).filter_by(
q = DBSession.query(cls).filter_by(
tahun=tahun)
if q:
return q
return
class Slide(NamaModel, EisBase):
class Slide(NamaModel, Base):
__tablename__ = 'slides'
source_type = Column(String(16)) #grid, image, chart-line, chart-pie, chart-bar
source_id = Column(String(128))
......@@ -61,7 +54,7 @@ class Slide(NamaModel, EisBase):
aktif = Column(SmallInteger, default=0)
__table_args__ = TABLE_ARGS
class Chart(NamaModel, EisBase):
class Chart(NamaModel, Base):
__tablename__ = 'charts'
chart_type = Column(String(16))
label = Column(String(128)) #digunakan jika chart membutuhkan label
......@@ -70,7 +63,7 @@ class Chart(NamaModel, EisBase):
__table_args__ = (UniqueConstraint('kode'),
TABLE_ARGS)
class ChartItem(NamaModel, EisBase):
class ChartItem(NamaModel, Base):
__tablename__ = 'chart_items'
value_1 = Column(BigInteger, default=0)
value_2 = Column(BigInteger, default=0)
......@@ -84,7 +77,7 @@ class ChartItem(NamaModel, EisBase):
value10 = Column(BigInteger, default=0)
value11 = Column(BigInteger, default=0)
value12 = Column(BigInteger, default=0)
chart_id = Column(Integer, ForeignKey('eis.charts.id'))
chart_id = Column(Integer, ForeignKey(Chart.id))
source_type = Column(String(32), default='realisasi')
rekening_kd = Column(String(128))
color = Column(String(6))
......@@ -99,17 +92,17 @@ class ChartItem(NamaModel, EisBase):
__table_args__ = (UniqueConstraint('kode'),
TABLE_ARGS)
class EisParams(NamaModel, EisBase):
class EisParams(NamaModel, Base):
__tablename__ = 'params'
last_update = Column(DateTime(timezone=False), nullable=True)
__table_args__ = (TABLE_ARGS)
class LastUpdate(DefaultModel, EisBase):
class LastUpdate(DefaultModel, Base):
__tablename__ = 'last_update'
wells = Column(DateTime(timezone=False), nullable=True)
__table_args__ = (TABLE_ARGS)
class ArPayment(NamaModel, EisBase):
class ArPayment(NamaModel, Base):
__tablename__ = 'ar_payment'
tanggal = Column(DateTime(timezone=False))
denda = Column(BigInteger)
......
ChartData = {
'options': ['insert if not exists','delete first'],
'csv': ['chart.csv'],
}
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
kode,nama,path,status,type
eis,EIS,/eis,1,0
eis-carousel,Carousel,/eis/carousel,1,0
eis-carousel-act,Carousel Action,/eis/carousel/{act}/act,1,0
eis-carousel-add,Carousel Add,/eis/carousel/add,1,0
eis-carousel-edit,Carousel Edit,/eis/carousel/{id}/edit,1,0
eis-carousel-delete,Carousel Delete,/eis/carousel/{id}/delete,1,0
eis-dashboard,EIS,/eis/dashboard,1,0
eis-dashboard-act,EIS Act,/eis/dashboard/{act}/act,1,0
eis-dashboard-calc-all,EIS Calc ALL,/eis/dashboad/calc/all,1,0
eis-home,EIS Home,/eis/home,1,0
eis-act,EIS Home Act,/eis/{act}/act,1,0
eis-calc-all,EIS Calc ALL,/eis/calc/all,1,0
eis-chart,Chart,/eis/chart,1,0
eis-chart-act,EIS Chart Action,/eis/chart/{act}/act,1,0
eis-chart-add,EIS Chart Add,/eis/chart/add,1,0
eis-chart-edit,EIS Chart Edit,/eis/chart/{id}/edit,1,0
eis-chart-delete,EIS Chart Delet,/eis/chart/{id}/delete,1,0
eis-chart-item,Chart Item,/eis/chart/item/{chart_id},1,0
eis-chart-item-act,EIS Chart Item Action,/eis/chart/item/{chart_id}/{act}/act,1,0
eis-chart-item-add,EIS Chart Item Add,/eis/chart/item/{chart_id}/add,1,0
eis-chart-item-edit,EIS Chart Item Edit,/eis/chart/item/{chart_id}/{id}/edit,1,0
eis-chart-item-delete,EIS Chart Item Delet,/eis/chart/item/{chart_id}/{id}/delete,1,0
eis-item,EIS Item,/eis/item,1,0
eis-item-act,EIS Item Action,/eis/item/{act}/act,1,0
eis-item-add,EIS Item Add,/eis/item/add,1,0
eis-item-edit,EIS Item Edit,/eis/item/{id}/edit,1,0
eis-item-delete,EIS Item Delete,/eis/item/{id}/delete,1,0
eis-slide,EIS Slide,/eis/slide,1,0
eis-slide-act,EIS Slide Act,/eis/slide/{act}/act,1,0
eis-slide-add,EIS Slide Add,/eis/slide/add,1,0
eis-slide-edit,EIS Slide Edit,/eis/slide/{id}/edit,1,0
eis-slide-delete,EIS Slide Delete,/eis/slide/{id}/delete,1,0
RouteData = {
'options': ['insert if not exists','delete first'],
'csv': ['route.csv'],
'keys':['kode'],
}
SlideData = {
'options': ['insert if not exists','delete first'],
'csv': ['slide.csv'],
}
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
import os
import sys
import transaction
import subprocess
from sqlalchemy import (
engine_from_config,
select,
)
from sqlalchemy.schema import CreateSchema
from sqlalchemy import (engine_from_config, )
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
from opensipkd.base.scripts.initializedb import create_schema
def main(settings):
'eis'
if 'eis.url' in settings and settings['eis.url']:
engine = engine_from_config(settings, 'eis.')
else:
engine = ModuleDBSession.bind;
def main(argv=sys.argv):
config_uri = argv[1]
setup_logging(config_uri)
settings = get_appsettings(config_uri)
engine = engine_from_config(settings, 'sqlalchemy.')
Base.metadata.bind = engine
create_schema(engine, 'eis')
ModuleBase.metadata.create_all(engine)
ModuleDBSession.configure(bind=engine)
initial_data.insert()
Base.metadata.create_all(bind=engine)
DBSession.configure(bind=engine)
transaction.commit()
print('****EIS CREATED****')
from opensipkd.tools import *
\ 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):
from opensipkd.base.views import base_views
from opensipkd.base.views import DataTables, ColumnDT
class BaseView(base_views.BaseView):
pass
......@@ -6,8 +6,7 @@ from pyramid.view import (
# HTTPFound,
# )
from ..views import BaseView
from ..models import EisDBSession
from ..models import Eis, Chart, ChartItem, Slide
from ..models import *
#from ..tools import row2dict
class dashboard(BaseView):
......@@ -20,7 +19,7 @@ class dashboard(BaseView):
@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)
datas = DBSession.query(Slide).filter(Slide.status==1).order_by(Slide.order_id)
if not datas:
datas = {}
return dict(project='EIS', datas=datas)
......@@ -35,7 +34,7 @@ class dashboard(BaseView):
json_data['success']=False
if req.matchdict['act']=='grid':
rows = EisDBSession.query(Eis).filter(Eis.id==id)
rows = DBSession.query(Eis).filter(Eis.id==id)
if not rows:
return json_data
......@@ -57,12 +56,12 @@ class dashboard(BaseView):
# GRAFIK LINE/BAR
#######################################################################
elif req.matchdict['act']=='linebar':
rows = EisDBSession.query(Chart).filter(Chart.id==id).first()
rows = DBSession.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).\
rows = DBSession.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,
......@@ -78,12 +77,12 @@ class dashboard(BaseView):
# GRAFIK LINGKARAN
#######################################################################
elif req.matchdict['act']=='pie':
rows = EisDBSession.query(Chart).filter(Chart.id==id).first()
rows = DBSession.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).\
rows = DBSession.query(ChartItem).filter(ChartItem.chart_id==id).\
order_by(ChartItem.id)
json_data['rows'] = {}
for row in rows:
......
import json
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
from ..views import BaseView
from ..models import EisDBSession
from ..models import *
from ..models.eis import Eis, Chart, ChartItem, Slide
from datatables import ColumnDT, DataTables
from sqlalchemy import not_, func, literal_column, and_, or_, String, Float
from sqlalchemy import func, and_, String
from sqlalchemy.sql.expression import cast
#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)
class EisView(BaseView):
@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
ses = req.session
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
elif req.matchdict['act']=='dasboard':
# max_tahun = EisDBSession.query(func.max(Eis.tahun)).scalar()
max_tahun = ses['tahun']
subqx = EisDBSession.query(
func.max(Eis.nama).label('nama'),
func.sum(ChartItem.value_1+ChartItem.value_2+ChartItem.value_3+ChartItem.value_4+\
ChartItem.value_5+ChartItem.value_6+ChartItem.value_7+ChartItem.value_8+ChartItem.value_9+\
ChartItem.value10+ChartItem.value11+ChartItem.value12).label('target'),
func.sum(Eis.amt_bulan).label('amt_bulan'),
func.sum(Eis.amt_tahun).label('amt_tahun'),
func.sum(
(ChartItem.value_1+ChartItem.value_2+ChartItem.value_3+ChartItem.value_4+ChartItem.value_5+\
ChartItem.value_6+ChartItem.value_7+ChartItem.value_8+ChartItem.value_9+ChartItem.value10+\
ChartItem.value11+ChartItem.value12) - Eis.amt_tahun).label('sisa_target'),
cast(func.round((func.sum(Eis.amt_tahun)/
func.sum(ChartItem.value_1+ChartItem.value_2+ChartItem.value_3+ChartItem.value_4+\
ChartItem.value_5+ChartItem.value_6+ChartItem.value_7+ChartItem.value_8+ChartItem.value_9+\
ChartItem.value10+ChartItem.value11+ChartItem.value12))*100,2),String).label('persen')).\
join(ChartItem, and_(func.trim(ChartItem.rekening_kd)==func.trim(Eis.kode),ChartItem.source_type=='target')).\
join(Chart, and_(Chart.id == ChartItem.chart_id, Chart.chart_type == 'line')).\
filter(Eis.tahun==max_tahun).\
group_by(Eis.kode,Eis.nama,Eis.tahun).order_by(Eis.kode).subquery()
subq = EisDBSession.query(
(Eis.nama).label('nama'),
(ChartItem.value_1*12).label('target'),
(Eis.amt_bulan).label('amt_bulan'),
(Eis.amt_tahun).label('amt_tahun'),
((ChartItem.value_1*12) - Eis.amt_tahun).label('sisa_target'),
cast(func.round(((Eis.amt_tahun)/
(ChartItem.value_1*12))*100,2),String).label('persen')).\
join(ChartItem, and_(func.trim(ChartItem.rekening_kd)==func.trim(Eis.kode),ChartItem.source_type=='target')).\
join(Chart, and_(Chart.id == ChartItem.chart_id, Chart.chart_type == 'line')).\
filter(Eis.tahun==max_tahun).\
order_by(Eis.kode).subquery()
query = EisDBSession.query().select_from(subq)
columns = [
ColumnDT(subq.c.nama, mData="jenis_pajak"),
ColumnDT(subq.c.target, mData="target"),
ColumnDT(subq.c.amt_bulan, mData="realisasi_bulan_ini"),
ColumnDT(subq.c.amt_tahun, mData="realisasi_sampai_dengan"),
ColumnDT(subq.c.sisa_target, mData="sisa_target"),
ColumnDT(subq.c.persen, mData="persen"),
]
rowTable = DataTables(req.GET, query, columns)
return rowTable.output_result()
return{}
# 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'))
# 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 = DBSession.query(Slide).filter(Slide.status==1).order_by(Slide.order_id) or {}
# tab_datas = DBSession.query(Slide).filter(Slide.source_type=='grid').order_by(Slide.order_id) or {}
# line_datas = DBSession.query(Slide).filter(Slide.source_type=='chart-line').order_by(Slide.order_id)or {}
# bar_datas = DBSession.query(Slide).filter(Slide.source_type=='chart-bar').order_by(Slide.order_id)or {}
# pie_datas = DBSession.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
# ses = req.session
# params = req.params
# id = 'id' in params and params['id'] or 0
# json_data = {}
# json_data['success']=False
# if req.matchdict['act']=='grid':
# rows = DBSession.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 = DBSession.query(Chart).filter(Chart.id==id).first()
# if not rows:
# return json_data
# json_data['label'] = rows.label.split(',')
# rows = DBSession.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 = DBSession.query(Chart).filter(Chart.id==id).first()
# if not rows:
# return json_data
# json_data['label'] = rows.label.split(',')
# rows = DBSession.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
# elif req.matchdict['act']=='dasboard':
# # max_tahun = DBSession.query(func.max(Eis.tahun)).scalar()
# max_tahun = ses['tahun']
# subqx = DBSession.query(
# func.max(Eis.nama).label('nama'),
# func.sum(ChartItem.value_1+ChartItem.value_2+ChartItem.value_3+ChartItem.value_4+\
# ChartItem.value_5+ChartItem.value_6+ChartItem.value_7+ChartItem.value_8+ChartItem.value_9+\
# ChartItem.value10+ChartItem.value11+ChartItem.value12).label('target'),
# func.sum(Eis.amt_bulan).label('amt_bulan'),
# func.sum(Eis.amt_tahun).label('amt_tahun'),
# func.sum(
# (ChartItem.value_1+ChartItem.value_2+ChartItem.value_3+ChartItem.value_4+ChartItem.value_5+\
# ChartItem.value_6+ChartItem.value_7+ChartItem.value_8+ChartItem.value_9+ChartItem.value10+\
# ChartItem.value11+ChartItem.value12) - Eis.amt_tahun).label('sisa_target'),
# cast(func.round((func.sum(Eis.amt_tahun)/
# func.sum(ChartItem.value_1+ChartItem.value_2+ChartItem.value_3+ChartItem.value_4+\
# ChartItem.value_5+ChartItem.value_6+ChartItem.value_7+ChartItem.value_8+ChartItem.value_9+\
# ChartItem.value10+ChartItem.value11+ChartItem.value12))*100,2),String).label('persen')).\
# join(ChartItem, and_(func.trim(ChartItem.rekening_kd)==func.trim(Eis.kode),ChartItem.source_type=='target')).\
# join(Chart, and_(Chart.id == ChartItem.chart_id, Chart.chart_type == 'line')).\
# filter(Eis.tahun==max_tahun).\
# group_by(Eis.kode,Eis.nama,Eis.tahun).order_by(Eis.kode).subquery()
# subq = DBSession.query(
# (Eis.nama).label('nama'),
# (ChartItem.value_1*12).label('target'),
# (Eis.amt_bulan).label('amt_bulan'),
# (Eis.amt_tahun).label('amt_tahun'),
# ((ChartItem.value_1*12) - Eis.amt_tahun).label('sisa_target'),
# cast(func.round(((Eis.amt_tahun)/
# (ChartItem.value_1*12))*100,2),String).label('persen')).\
# join(ChartItem, and_(func.trim(ChartItem.rekening_kd)==func.trim(Eis.kode),ChartItem.source_type=='target')).\
# join(Chart, and_(Chart.id == ChartItem.chart_id, Chart.chart_type == 'line')).\
# filter(Eis.tahun==max_tahun).\
# order_by(Eis.kode).subquery()
# query = DBSession.query().select_from(subq)
# columns = [
# ColumnDT(subq.c.nama, mData="jenis_pajak"),
# ColumnDT(subq.c.target, mData="target"),
# ColumnDT(subq.c.amt_bulan, mData="realisasi_bulan_ini"),
# ColumnDT(subq.c.amt_tahun, mData="realisasi_sampai_dengan"),
# ColumnDT(subq.c.sisa_target, mData="sisa_target"),
# ColumnDT(subq.c.persen, mData="persen"),
# ]
# rowTable = DataTables(req.GET, query, columns)
# return rowTable.output_result()
......@@ -15,12 +15,7 @@ from deform import (
widget,
ValidationFailure,
)
from ..models import (
EisDBSession
)
from ..models.eis import (
Eis
)
from ..models import *
from ..views import BaseView, ColumnDT, DataTables
......@@ -121,13 +116,13 @@ class view_carousel(BaseView):
columns.append(ColumnDT(Eis.aktif, ))
columns.append(ColumnDT(func.to_char(Eis.updated, "DD-MM-YYYY"), ))
query = EisDBSession.query().select_from(Eis)
query = DBSession.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).\
qry = DBSession.query(Eis).\
filter(Eis.status == 1).\
filter(Eis.nama.ilike('%%%s%%' % term)).\
order_by(Eis.nama)
......@@ -221,7 +216,7 @@ class view_carousel(BaseView):
msg = 'Carousel ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
DBSession.flush()
except:
msg = 'Carousel ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
......@@ -235,7 +230,7 @@ class view_carousel(BaseView):
def form_validator(form, value):
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = EisDBSession.query(Eis).filter_by(id=uid)
q = DBSession.query(Eis).filter_by(id=uid)
row = q.first()
else:
row = None
......@@ -273,8 +268,8 @@ def save(values, user, row=None):
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()
DBSession.add(row)
DBSession.flush()
return row
def route_list(request):
......@@ -284,7 +279,7 @@ def route_list(request):
# Edit #
########
def query_id(request):
return EisDBSession.query(Eis).filter_by(id=request.matchdict['id'])
return DBSession.query(Eis).filter_by(id=request.matchdict['id'])
def id_not_found(request):
msg = 'Carousel ID %s Tidak Ditemukan.' % request.matchdict['id']
......
......@@ -16,7 +16,7 @@ from deform import (
ValidationFailure,
)
from ..models import (
EisDBSession
DBSession
)
from ..models.eis import (
Chart
......@@ -94,14 +94,14 @@ class view_eis_chart(BaseView):
columns.append(ColumnDT(Chart.chart_type))
columns.append(ColumnDT(Chart.devider))
query = EisDBSession.query().select_from(Chart)
query = DBSession.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).\
qry = DBSession.query(Chart).\
filter(Chart.status == 1,
Chart.chart_type==chart_type,
Chart.nama.ilike('%%%s%%' % term)).\
......@@ -121,7 +121,7 @@ class view_eis_chart(BaseView):
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)
q = DBSession.query(Chart).filter_by(id=uid)
row = q.first()
else:
row = None
......@@ -143,8 +143,8 @@ class view_eis_chart(BaseView):
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()
DBSession.add(row)
DBSession.flush()
return row
def save_request(self, values, row=None):
......@@ -187,7 +187,7 @@ class view_eis_chart(BaseView):
# Edit #
########
def query_id(self):
return EisDBSession.query(Chart).filter_by(id=self.req.matchdict['id'])
return DBSession.query(Chart).filter_by(id=self.req.matchdict['id'])
def id_not_found(self):
msg = 'Chart ID %s Tidak Ditemukan.' % self.req.matchdict['id']
......@@ -237,7 +237,7 @@ class view_eis_chart(BaseView):
msg = 'Chart ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
DBSession.flush()
except:
msg = 'Chart ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
......
......@@ -7,7 +7,7 @@ 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 import DBSession
from ..models.eis import ChartItem, Chart
from ..views import BaseView, ColumnDT, DataTables
......@@ -166,7 +166,7 @@ class view_eis_chart_item(BaseView):
columns.append(ColumnDT(ChartItem.value_5, ))
columns.append(ColumnDT(ChartItem.value_6, ))
query = EisDBSession.query().select_from(ChartItem).filter(ChartItem.chart_id==chart_id)
query = DBSession.query().select_from(ChartItem).filter(ChartItem.chart_id==chart_id)
rowTable = DataTables(req.GET, query, columns)
return rowTable.output_result()
......@@ -176,7 +176,7 @@ class view_eis_chart_item(BaseView):
def form_validator(self, form, value):
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = EisDBSession.query(ChartItem).filter_by(id=uid)
q = DBSession.query(ChartItem).filter_by(id=uid)
row = q.first()
else:
row = None
......@@ -201,8 +201,8 @@ class view_eis_chart_item(BaseView):
row.from_dict(values['values_1'])
row.from_dict(values['values_2'])
row.is_sum = 'is_sum' in values and values['is_sum'] and 1 or 0
EisDBSession.add(row)
EisDBSession.flush()
DBSession.add(row)
DBSession.flush()
return row
def save_request(self, values, row=None):
......@@ -250,7 +250,7 @@ class view_eis_chart_item(BaseView):
# Edit #
########
def query_id(self):
return EisDBSession.query(ChartItem).filter_by(id=self.req.matchdict['id'])
return DBSession.query(ChartItem).filter_by(id=self.req.matchdict['id'])
def id_not_found(self,chart_id):
msg = 'ChartItem ID %s Tidak Ditemukan.' % self.req.matchdict['id']
......
......@@ -7,7 +7,7 @@ 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 import DBSession
#from ..models.eis import ARPaymentDetail as AR
from ..views import BaseView, ColumnDT, DataTables
......@@ -124,7 +124,7 @@ class view_eis_item(BaseView):
columns.append(ColumnDT('tanggal', ))
columns.append(ColumnDT('amount', ))
query = EisDBSession.query().select_from(AR)
query = DBSession.query().select_from(AR)
rowTable = DataTables(req.GET, query, columns)
return rowTable.output_result()
......@@ -134,7 +134,7 @@ class view_eis_item(BaseView):
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)
q = DBSession.query(AR).filter_by(id=uid)
row = q.first()
else:
row = None
......@@ -157,8 +157,8 @@ class view_eis_item(BaseView):
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()
DBSession.add(row)
DBSession.flush()
return row
def save_request(self, values, row=None):
......@@ -205,7 +205,7 @@ class view_eis_item(BaseView):
# Edit #
########
def query_id(self):
return EisDBSession.query(AR).filter_by(id=self.req.matchdict['id'])
return DBSession.query(AR).filter_by(id=self.req.matchdict['id'])
def id_not_found(self):
msg = 'AR ID %s Tidak Ditemukan.' % self.req.matchdict['id']
......@@ -272,7 +272,7 @@ class view_eis_item(BaseView):
msg = 'AR ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
DBSession.flush()
except:
msg = 'AR ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
......
......@@ -9,7 +9,7 @@ import colander
from deform import (Form, ValidationFailure, FileData,)
#from ..views import widget
from deform import widget
from ..models import EisDBSession
from ..models import DBSession
from ..models.eis import Slide, Eis
from sqlalchemy.sql.expression import update
from ..views import BaseView, ColumnDT, DataTables
......@@ -139,7 +139,7 @@ class view_eis_slide(BaseView):
columns.append(ColumnDT(Slide.order_id))
columns.append(ColumnDT(Slide.aktif))
columns.append(ColumnDT(Slide.status))
query = EisDBSession.query().select_from(Slide)
query = DBSession.query().select_from(Slide)
rowTable = DataTables(req.GET, query, columns)
return rowTable.output_result()
......@@ -149,7 +149,7 @@ class view_eis_slide(BaseView):
def form_validator(self, form, value):
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = EisDBSession.query(Slide).filter_by(id=uid)
q = DBSession.query(Slide).filter_by(id=uid)
row = q.first()
else:
row = None
......@@ -206,7 +206,7 @@ class view_eis_slide(BaseView):
# Edit #
########
def query_id(self):
return EisDBSession.query(Slide).filter_by(id=self.req.matchdict['id'])
return DBSession.query(Slide).filter_by(id=self.req.matchdict['id'])
def id_not_found(self):
msg = 'Slide ID %s Tidak Ditemukan.' % self.req.matchdict['id']
......@@ -265,7 +265,7 @@ class view_eis_slide(BaseView):
msg = 'Slide ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
DBSession.flush()
except:
msg = 'Slide ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
......@@ -299,11 +299,11 @@ def save(values, user, row=None):
row.update_uid = user.id
row.aktif = 'aktif' in values and values['aktif'] and 1 or 0
row.status = 'status' in values and values['status'] and 1 or 0
EisDBSession.add(row)
EisDBSession.flush()
DBSession.add(row)
DBSession.flush()
if 'aktif' in values and values['aktif']:
stmt = update(Slide).where(Slide.id!=row.id).\
values(aktif=0)
EisDBSession.execute(stmt)
EisDBSession.flush()
DBSession.execute(stmt)
DBSession.flush()
return row
<html metal:use-macro = "load: ../../../views/templates/base.pt">
<html metal:use-macro = "load: opensipkd.base.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>
......
<html metal:use-macro="load: base-eis.pt">
<div metal:fill-slot="scripts">
<script>
/*$(function(){
$('.carousel').carousel({
interval: 5000
});
});
*/
/*function formatNumber (num) {
return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,")
};
*/
function hide_other(){
$('.data').hide();
};
var bar_chart_options = {
responsive:true
};
</script>
<style>
body {
/*background-image: url("static/img/bg1.jpg");*/
}
.judul {
margin-top: 10px;
color: #777;
font-size: 40px;
font-weight: normal;
padding-left:0px;
}
@media (min-width: 767px) {
.judul {
margin-top: 10px;
color: #777;
font-size: 40px;
font-weight: normal;
padding-left:320px;
}
}
.subjudul {
margin-bottom: 0px;
margin-bottom: 20px;
color: #777;
padding-left:0px;
}
@media (min-width: 767px) {
.subjudul {
padding-left:320px;
}
}
.alert {
border-radius: 0px !important;
}
.alert-judul {
color: #fff;
background-color: #6497C9;
border-color: #5580AA;
}
.alert-judul h3 {
margin-top: 4px !important;
margin-bottom: 4px !important;
}
</style>
<div class="well" style="background-color:rgb(255,255,255); padding-top:75px;">
<div class="judul">
<center>
<div class="row">
<div class="col-md-2">
<img class="" src="/static/img/logo.png" style="height:80px; width:80px;padding-bottom:5px;">
</div>
<div class="col-md-8">
<h3 style="margin-top:5px;">EKSEKUTIF SUMMARY PAJAK DAERAH</h3>
<h4>Tahun ${request.session['tahun']}</h4>
</div>
</div>
</center>
</div>
</div>
<div style="background-color:rgb(255,255,255);">
<div class="subjudul">
<div class="col-md-12 data" id="welcome" style="margin-bottom:50px;">
<center>
<div class="row">
<div class="col-md-12">
<h3 style="margin-top:5px;">SELAMAT DATANG</h3>
<h4>SILAHKAN PILIH MENU DI SEBELAH KIRI / ATAS LAYAR</h4>
</div>
</div>
</center>
</div>
<div tal:repeat="dat datas" class="item ${dat.aktif and 'active' or ''}">
<div class="col-md-12 data" style="margin-bottom:50px; display:none;"
tal:condition="dat.source_type=='grid'" id="grid-${dat.id}">
<div class="row">
<center>
<div class="row"> <!--TITLE-->
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row"> <!--hari minggu-->
<div class="col-md-6">
<div class="alert alert-success">
<h4>&nbsp;</h4>
<h4><u>Hari ini</u></h4>
<h2>Rp. <span id="hari_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
<div class="col-md-6">
<div class="alert alert-info">
<h4>&nbsp;</h4>
<h4><u>Minggu ini</u></h4>
<h2>Rp. <span id="minggu_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
</div>
<p>
<div class="row"> <!--bulan tahun-->
<div class="col-md-6">
<div class="alert alert-warning">
<h4>&nbsp;</h4>
<h4><u>Bulan ini</u></h4>
<h2>Rp. <span id="bulan_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
<div class="col-md-6">
<div class="alert alert-danger">
<h4>&nbsp;</h4>
<h4><u>Tahun ini</u></h4>
<h2>Rp. <span id="tahun_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
</div>
</center>
</div>
<!--SCRIPT-->
<script>
$(function(){
$.ajax({
type: "POST",
url: "/eis/grid/act",
data: "id=${dat.source_id}",
success: function (html) {
if (html.success == true) {
$("#hari_${dat.id}").html(html.hari);
$("#minggu_${dat.id}").html(html.minggu);
$("#bulan_${dat.id}").html(html.bulan);
$("#tahun_${dat.id}").html(html.tahun);
}
},
beforeSend: function () {
}
});
})
</script>
</div>
<div class="col-md-12" style="margin-bottom:50px; display:none;"
tal:condition="dat.source_type=='image'" id="image-${dat.id}">
<div class="row">
<center>
<div class="row">
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row">
<img src="${dat.source_id}" height="500px">
</div>
</center>
</div>
</div>
<div class="col-md-12 data" style="margin-bottom:50px; display:none;"
tal:condition="dat.source_type=='chart-line'" id="chart-line-${dat.id}" >
<div class="row">
<center>
<div class="row">
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row">
<div class="col-md-10">
<canvas id="canvas_${dat.id}" height="400px" width="800px"></canvas>
</div>
<div class="col-md-2">
<h5>Keterangan</h5>
<div id="legend_${dat.id}"></div>
</div>
</div>
</center>
</div>
<script>
var lineChartData_${dat.id} = {
labels : [],
datasets : [
{
label: "Target",
fillColor : "rgba(220,220,220,0.2)",
strokeColor : "rgba(220,220,220,1)",
pointColor : "rgba(220,220,220,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(220,220,220,1)",
data : []
},
{
label: "Realisasi",
fillColor : "rgba(151,187,205,0.2)",
strokeColor : "rgba(151,187,205,1)",
pointColor : "rgba(151,187,205,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(151,187,205,1)",
data : []
}
]
}
Chart.defaults.global.scaleLabel = function(label){
return label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
// return parseInt( label.value ).toLocaleString();
/*
This doesn't work in all browsers unfortunately yet:
parseInt( '1000' ).toLocaleString()
Result in Safari: 1.000
Result in FF und Chrome: 1.111
parseFloat( '1000.33' ).toLocaleString()
Result in Safari: 1000.33
Result in FF und Chrome: 1.000,33
*/
};
Chart.defaults.global.multiTooltipTemplate = function(label){
return label.datasetLabel + ': ' + label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");}
; // "<%= value %>";
Chart.defaults.global.scaleLabel = function(label){
return label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
};
Chart.defaults.global.multiTooltipTemplate = function(label){
return label.datasetLabel + ': ' + label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");}
;
$(function(){
var ctx_${dat.id} = document.getElementById("canvas_${dat.id}").getContext("2d");
//window.myLine_${dat.id} = new Chart(ctx_${dat.id}).Line(lineChartData_${dat.id}, {
//responsive: true
//});
$.ajax({
type: "POST",
url: "/eis/linebar/act",
data: "id=${dat.source_id}",
success: function (html) {
if (html.success == true) {
for (i = 0; i < html.label.length; i++) {
lineChartData_${dat.id}.labels.push(html.label[i]);
lineChartData_${dat.id}.datasets[0].data.push(html.target[i]);
lineChartData_${dat.id}.datasets[1].data.push(html.realisasi[i]);
}
window.myLine_${dat.id} = new Chart(ctx_${dat.id}).Line(lineChartData_${dat.id}, {
//responsive: true;
});
legend(document.getElementById('legend_${dat.id}'), lineChartData_${dat.id});
}
},
beforeSend: function () {
}
});
});
</script>
</div>
<div class="col-md-12 data" style="margin-bottom:50px; display:none;"
tal:condition="dat.source_type=='chart-bar'" id="chart-bar-${dat.id}" >
<div class="row">
<center>
<div class="row">
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row">
<div class="col-md-10">
<canvas id="canvas_${dat.id}" height="400px" width="800px"></canvas>
</div>
<div class="col-md-2">
<h5>Keterangan</h5>
<div id="legend_${dat.id}"></div>
</div>
</div>
</center>
</div>
<script>
var barChartData_${dat.id} = {
labels : [],
datasets : [
{
label: "Target",
fillColor : "rgba(220,220,220,0.2)",
strokeColor : "rgba(220,220,220,1)",
pointColor : "rgba(220,220,220,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(220,220,220,1)",
data : []
},
{
label: "Realisasi",
fillColor : "rgba(151,187,205,0.2)",
strokeColor : "rgba(151,187,205,1)",
pointColor : "rgba(151,187,205,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(151,187,205,1)",
data : []
}
]
}
Chart.defaults.global.scaleLabel = function(label){
return label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
// return parseInt( label.value ).toLocaleString();
/*
This doesn't work in all browsers unfortunately yet:
parseInt( '1000' ).toLocaleString()
Result in Safari: 1.000
Result in FF und Chrome: 1.111
parseFloat( '1000.33' ).toLocaleString()
Result in Safari: 1000.33
Result in FF und Chrome: 1.000,33
*/
};
Chart.defaults.global.multiTooltipTemplate = function(label){
return label.datasetLabel + ': ' + label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");}
;
var ctx_${dat.id} = $("#canvas_${dat.id}").get(0).getContext("2d");
$(function(){
//GET DATA FROM SERVER
$.ajax({
type: "POST",
url: "/eis/linebar/act",
data: "id=${dat.source_id}",
success: function (html) {
if (html.success == true) {
for (i = 0; i < html.label.length; i++) {
barChartData_${dat.id}.labels.push(html.label[i]);
barChartData_${dat.id}.datasets[0].data.push(html.target[i]);
barChartData_${dat.id}.datasets[1].data.push(html.realisasi[i]);
}
window.myBar_${dat.id} = new Chart(ctx_${dat.id}).Bar(barChartData_${dat.id},
{
//responsive: true;
});
legend(document.getElementById('legend_${dat.id}'), barChartData_${dat.id});
}
},
beforeSend: function () {
}
});
});
</script>
</div>
<div class="col-md-12 data" style="margin-bottom:50px; display:none;"
tal:condition="dat.source_type=='chart-pie'" id="chart-pie-${dat.id}" >
<div class="row">
<center>
<div class="row">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
<div class="row">
<div class="col-md-10">
<canvas id="chart-area_${dat.id}" height="400px" width="600px"></canvas>
</div>
<div class="col-md-2">
<h5>Keterangan</h5>
<div id="legend_${dat.id}"></div>
</div>
</div>
</center>
</div>
<script>
var pieData_${dat.id} = [];
$(function(){
/*GET DATA PIE*/
var ctx_${dat.id} = document.getElementById("chart-area_${dat.id}").getContext("2d");
//window.myPie_${dat.id} = new Chart(ctx_${dat.id}).Pie(pieData_${dat.id});
var npie = 0 ;
//GET DATA FROM SERVER
$.ajax({
type: "POST",
url: "/eis/pie/act",
data: "id=${dat.source_id}",
success: function (html) {
if (html.success == true) {
jQuery.each(html.rows, function(i, val) {
x = {
"value": val.value,
"color": "#"+val.color,
//highlight: "#"+val.highlight,
"label": val.nama}
npie = pieData_${dat.id}.push(x);
//alert(pieData_${dat.id}[npie].value());
});
window.myPie_${dat.id} = new Chart(ctx_${dat.id}).Pie(pieData_${dat.id},{
//responsive: true;
});
legend(document.getElementById('legend_${dat.id}'), pieData_${dat.id});
}
},
beforeSend: function () {
}
});
});
</script>
</div>
</div>
</div>
</div>
</div>
</html>
<!DOCTYPE html>
<html lang="en-us" tal:define="
home request.home;
css css|[];
js js|[];
route_name route_name|request.matched_route.name;
">
<head>
<title>${request.app_name} | ${request.company}</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="description" content="">
<meta name="author" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="shortcut icon" href="${home}/static/v3/img/favicon.png" type="image/x-icon">
<link rel="icon" href="${home}/static/v3/img/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="${home}/static/v3/css/gf_open_sans-400italic_700italic_300_400_700.css">
<link rel="stylesheet" type="text/css" media="screen" href="${home}/static/v3/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" media="screen"
href="${home}/static/v3/fonts/fontawesome-free-6.1.2-web/css/all.min.css">
<!-- SmartAdmin Styles : Caution! DO NOT change the order -->
<link rel="stylesheet" type="text/css" media="screen"
href="${home}/static/v3/css/smartadmin-production-plugins.min.css">
<link rel="stylesheet" type="text/css" media="screen" href="${home}/static/v3/css/smartadmin-production.min.css">
<link rel="stylesheet" type="text/css" media="screen" href="${home}/static/v3/css/smartadmin-skins.min.css">
<!-- We recommend you use "your_style.css" to override SmartAdmin
specific styles this will also ensure you retrain your customization with each SmartAdmin update. -->
<link rel="stylesheet" href="${home}/deform_static/css/form.css" >
<link rel="stylesheet" type="text/css" media="screen" href="${home}/static/v3/css/osipkd.css">
<!-- LOOP FORM CSS INCLUDED-->
<tal:loop tal:repeat="css_resource css">
<link rel="stylesheet" href="${home}${request.static_path(css_resource)}" type="text/css"
tal:condition="css_resource[:4]!='http'">
<link rel="stylesheet" href="${css_resource}" type="text/css" tal:condition="css_resource[:4]=='http'">
</tal:loop>
<!-- USE THIS SLOT TO INHSERT NEW CSS-->
<metal:css define-slot="css_files"></metal:css>
</head>
<body class="fixed-header">
<div id="loading" style="display:none;">
<img id="loading-image" src="${home}/static/img/ajax-loader.gif" alt="Loading..." />
</div>
<!-- #HEADER -->
<header id="header">
<div id="logo-group">
<!-- PLACE YOUR LOGO HERE -->
<h3 id="logo">
<a href="${home}/"><img src="${home}/static/img/logo.png" alt="LOGO"></a>
</h3>
<!-- END LOGO PLACEHOLDER -->
</div>
<!-- #PROJECTS: projects dropdown -->
<div class="project-context hidden-xs">
<span class="title-page">${request.title}</span>
</div>
<!-- end projects dropdown -->
<!-- #TOGGLE LAYOUT BUTTONS -->
<!-- pulled right: nav area -->
<div class="pull-right">
<!-- collapse menu button -->
<div id="hide-menu" class="btn-header pull-right">
<span> <a href="javascript:void(0);" data-action="toggleMenu" title="Collapse Menu"><i
class="fa fa-reorder"></i></a> </span>
</div>
<!-- end collapse menu -->
<!-- fullscreen button -->
<div id="fullscreen" class="btn-header transparent pull-right">
<span> <a href="javascript:void(0);" data-action="launchFullscreen" title="Full Screen">
<i class="fa fa-arrows-alt"></i></a> </span>
</div>
<!-- end fullscreen button -->
<!-- User info -->
<ul tal:condition="not request.user" class="header-dropdown-list hidden-xs">
<li>
<a href="${home}/login" class="dropdown-toggle"><i class="fa fa-lg fa-fw fa-user"></i>Login</a>
</li>
</ul>
<ul tal:condition="request.user" class="header-dropdown-list hidden-xs">
<li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-lg fa-fw fa-user"></i>
<span style="text-transform:capitalize"> ${request.user and request.user.nice_username() or ""}
</span>
<i class="fa fa-angle-down"></i> </a>
<ul class="dropdown-menu pull-right">
<li><a style="text-transform:capitalize" href="${request.route_url('base-profile')}">Profile</a>
</li>
<li tal:condition="not request.user.external">
<a style="text-transform:capitalize" href="${request.route_url('base-password')}">Ubah
password</a>
</li>
<li><a style="text-transform:capitalize" href="${request.route_url('base-logout')}">Logout</a>
</li>
<li tal:condition="request.user.api_key"><a style="text-transform:capitalize"
href="${home}/recreate-api-key">API Key</a></li>
<!-- <li talcondition="'core' in request.modules and change_unit(request)">
<a style="text-transform:capitalize" href="${home}/departemen/chg">Ubah
Organisasi</a>
</li> -->
</ul>
</li>
</ul>
<!-- end user info -->
</div>
<!-- end pulled right: nav area -->
</header>
<!-- END HEADER -->
<!-- Left panel : Navigation area -->
<!-- Note: This width of the aside area can be adjusted through LESS variables -->
<aside id="left-panel" style="padding-bottom:67px">
Menu
<!-- NAVIGATION : This navigation is also responsive-->
<nav class="smart-menu" id="menu">
<!-- Modul Menu -->
<ul metal:define-slot="navs"></ul>
<ul style="margin-top: 0; padding-top: 0;">
<li tal:repeat="menu get_base_menus()"
tal:attributes="class route_name in menu['route_name'] and 'active'">
<a tal:condition="python:not menu['children'] and (not menu['permission'] or has_permission(request, menu['permission']))"
href="${home}${menu['path']}">
<i tal:condition="menu['icon']" class="fa fa-lg fa-fw ${menu['icon']}"></i>
<span>${menu['nama']}</span>
</a>
<a tal:condition="python:menu['children'] and (not menu['permission'] or has_permission(request, menu['permission']))"
href="#">
<i tal:condition="menu['icon']" class="fa fa-lg fa-fw ${menu['icon']}"></i>
<span class="menu-item-parent">${menu['nama']}</span>
</a>
<ul
tal:condition="python:menu['children'] and (not menu['permission'] or has_permission(request, menu['permission']))">
<li tal:repeat="submenu menu['children']"
tal:attributes="class route_name in submenu['route_name'] and 'active'">
<a tal:condition="python:not submenu['children'] and (not menu['permission'] or has_permission(request, submenu['permission']))"
href="${home}${submenu['path']}">
<i tal:condition="submenu['icon']" class="fa fa-lg fa-fw ${submenu['icon']}"></i>
<span>${submenu['nama']}</span>
</a>
<a tal:condition="submenu['children']" href="#">
<i tal:condition="submenu['icon']" class="fa fa-lg fa-fw ${submenu['icon']}"></i>
<span class="menu-item-parent">${submenu['nama']}</span>
</a>
<ul tal:condition="submenu['children']">
<li tal:repeat="submenu2 submenu['children']"
tal:attributes="class route_name in submenu2['route_name'] and 'active'">
<a href="${home}${submenu2['path']}">${submenu2['nama']}</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
<span class="minifyme" data-action="minifyMenu">
<i class="fa fa-arrow-circle-left hit"></i>
</span>
<span class="footer-side">&copy; OpenSIPKD.com
<script>document.write(new Date().getFullYear());</script>
</span>
</aside>
<!-- END NAVIGATION -->
<!-- JS -->
<script src="${home}/static/v3/js/jquery-2.1.1.min.js"></script>
<script>
if (!window.jQuery) {
document.write('<script src="${home}/static/v3/js/libs/jquery-2.1.1.min.js"><\/script>');
}
</script>
<!--?<script src="${home}/static/v3/js/jquery-ui-1.10.3.min.js"></script>-->
<script>
// if (!window.jQuery.ui) {
<!--? document.write('<script src="${home}/static/v3/js/libs/jquery-ui-1.10.3.min.js"><\/script>');-->
// }
</script>
<!-- IMPORTANT: APP CONFIG -->
<script src="${home}/static/v3/js/app.config.js"></script>
<!-- BOOTSTRAP JS -->
<script src="${home}/static/v3/js/bootstrap/bootstrap.min.js"></script>
<!-- FastClick: For mobile devices -->
<script src="${home}/static/v3/js/plugin/fastclick/fastclick.min.js"></script>
<!--[if IE 8]>
<h1>Your browser is out of date, please update your browser by going to www.microsoft.com/download</h1>
<![endif]-->
<!-- MAIN APP JS FILE -->
<script src="${home}/static/v3/js/app.min.js"></script>
<!-- PAGE RELATED PLUGIN(S) -->
<!--?<script src="${home}/static/v3/js/plugin/datatables/jquery.dataTables.min.js"></script>-->
<!--?<script src="${home}/static/v3/js/plugin/datatables/dataTables.colVis.min.js"></script>-->
<!--?<script src="${home}/static/v3/js/plugin/datatables/dataTables.tableTools.min.js"></script>-->
<!--?<script src="${home}/static/v3/js/plugin/datatables/dataTables.bootstrap.min.js"></script>-->
<!--?<script src="${home}/static/v3/js/plugin/datatable-responsive/datatables.responsive.min.js"></script>-->
<!--?<script src="${home}/static/v3/js/plugin/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script>-->
<!--?<script src="${home}/static/v3/js/plugin/bootstrap-timepicker/bootstrap-timepicker.min.js"></script>-->
<!--?<script src="${home}/deform_static/scripts/deform.js"></script>-->
<!--?<script src="${home}/deform_static/scripts/typeahead.min.js"></script>-->
<!--?<script src="${home}/deform_static/scripts/jquery.maskMoney-3.1.1.min.js"></script>-->
<!--?<script src="${home}/deform_static/tinymce/tinymce.min.js"></script>-->
<!--?<script src="${home}/static/v3/js/tools.js"></script>-->
<!--?<script src="${home}/static/v3/js/notification/SmartNotification.min.js"></script>-->
<!--?<script src="${home}/static/v3/js/plugin/masked-input/jquery.maskedinput.min.js"></script>-->
<!--?<script src="${home}/static/v3/js/select2.full.min.js"></script>-->
<!--?<script src="${home}/deform_static/scripts/file_upload.js"></script>-->
<script src="${home}/static/v3/js/osipkd.js"></script>
<!-- LOOP ON JS RESOURCE -->
<tal:loop tal:repeat="js_resource js">
<script src="${home}${request.static_path(js_resource)}" tal:condition="js_resource[:4]!='http'"></script>
<script src="${js_resource}" tal:condition="js_resource[:4]=='http'"></script>
</tal:loop>
<metal:js define-slot="js_files"></metal:js>
<!-- End isi Script-->
<!-- MAIN PANEL -->
<div id="main" role="main">
<!-- MAIN CONTENT -->
<div id="content">
<!-- Error session flash -->
<div tal:condition="request.session.peek_flash()">
<div class="alert alert-success" tal:repeat="message request.session.pop_flash()"><i
class="fa fa-fw fa-lg fa-check-circle"></i>&nbsp;${message}
</div>
</div>
<div tal:condition="request.session.peek_flash('error')">
<div class="alert alert-danger" tal:repeat="message request.session.pop_flash('error')"><i
class="fa fa-fw fa-lg fa-times-circle"></i>&nbsp;${message}
</div>
</div>
<!-- Error session flash -->
<!-- <div id="errors" name="errors"> -->
<div class="alert alert-danger" id="errors" name="errors" style="display:none;">errors</div>
<div class="alert alert-success" id="success" name="success" style="display:none;">success</div>
<!-- <div id="errors" name="errors"> -->
<!-- Global Alert -->
<div tal:condition="request.session.peek_flash()">
<div class="alert alert-success" tal:repeat="message request.session.pop_flash()">${message}</div>
</div>
<div tal:condition="request.session.peek_flash('error')">
<div class="alert alert-danger" tal:repeat="message request.session.pop_flash('error')">${message}</div>
</div>
<!-- End Global Alert -->
<!-- SLOT KONTEN -->
<div metal:define-slot="content"></div>
<!-- END SLOT KONTEN -->
</div>
<!-- END MAIN CONTENT -->
</div>
<!-- END MAIN PANEL -->
<!-- Define Script-->
<script metal:define-slot="scripts"></script>
</body>
</html>
\ No newline at end of file
<html metal:use-macro="load: base-eis.pt">
<div metal:fill-slot="scripts">
<script>
/*$(function(){
$('.carousel').carousel({
interval: 5000
});
});
*/
/*function formatNumber (num) {
return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,")
};
*/
function hide_other(){
$('.data').hide();
};
var bar_chart_options = {
responsive:true
};
</script>
<style>
body {
/*background-image: url("static/img/bg1.jpg");*/
}
.judul {
margin-top: 10px;
color: #777;
font-size: 40px;
font-weight: normal;
padding-left:0px;
}
@media (min-width: 767px) {
.judul {
margin-top: 10px;
color: #777;
font-size: 40px;
font-weight: normal;
padding-left:320px;
}
}
.subjudul {
margin-bottom: 0px;
margin-bottom: 20px;
color: #777;
padding-left:0px;
}
@media (min-width: 767px) {
.subjudul {
padding-left:320px;
}
}
.alert {
border-radius: 0px !important;
}
.alert-judul {
color: #fff;
background-color: #6497C9;
border-color: #5580AA;
}
.alert-judul h3 {
margin-top: 4px !important;
margin-bottom: 4px !important;
}
</style>
<div class="well" style="background-color:rgb(255,255,255); padding-top:75px;">
<div class="judul">
<center>
<div class="row">
<div class="col-md-2">
<img class="" src="/static/img/logo.png" style="height:80px; width:80px;padding-bottom:5px;">
</div>
<div class="col-md-8">
<h3 style="margin-top:5px;">EKSEKUTIF SUMMARY PAJAK DAERAH</h3>
<h4>Tahun ${request.session['tahun']}</h4>
</div>
</div>
</center>
</div>
</div>
<div style="background-color:rgb(255,255,255);">
<div class="subjudul">
<div class="col-md-12 data" id="welcome" style="margin-bottom:50px;">
<center>
<div class="row">
<div class="col-md-12">
<h3 style="margin-top:5px;">SELAMAT DATANG</h3>
<h4>SILAHKAN PILIH MENU DI SEBELAH KIRI / ATAS LAYAR</h4>
</div>
</div>
</center>
</div>
<div tal:repeat="dat datas" class="item ${dat.aktif and 'active' or ''}">
<div class="col-md-12 data" style="margin-bottom:50px; display:none;"
tal:condition="dat.source_type=='grid'" id="grid-${dat.id}">
<div class="row">
<center>
<div class="row"> <!--TITLE-->
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row"> <!--hari minggu-->
<div class="col-md-6">
<div class="alert alert-success">
<h4>&nbsp;</h4>
<h4><u>Hari ini</u></h4>
<h2>Rp. <span id="hari_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
<div class="col-md-6">
<div class="alert alert-info">
<h4>&nbsp;</h4>
<h4><u>Minggu ini</u></h4>
<h2>Rp. <span id="minggu_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
</div>
<p>
<div class="row"> <!--bulan tahun-->
<div class="col-md-6">
<div class="alert alert-warning">
<h4>&nbsp;</h4>
<h4><u>Bulan ini</u></h4>
<h2>Rp. <span id="bulan_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
<div class="col-md-6">
<div class="alert alert-danger">
<h4>&nbsp;</h4>
<h4><u>Tahun ini</u></h4>
<h2>Rp. <span id="tahun_${dat.id}">...</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
</div>
</center>
</div>
<!--SCRIPT-->
<script>
$(function(){
$.ajax({
type: "POST",
url: "/eis/grid/act",
data: "id=${dat.source_id}",
success: function (html) {
if (html.success == true) {
$("#hari_${dat.id}").html(html.hari);
$("#minggu_${dat.id}").html(html.minggu);
$("#bulan_${dat.id}").html(html.bulan);
$("#tahun_${dat.id}").html(html.tahun);
}
},
beforeSend: function () {
}
});
})
</script>
</div>
<div class="col-md-12" style="margin-bottom:50px; display:none;"
tal:condition="dat.source_type=='image'" id="image-${dat.id}">
<div class="row">
<center>
<div class="row">
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row">
<img src="${dat.source_id}" height="500px">
</div>
</center>
</div>
</div>
<div class="col-md-12 data" style="margin-bottom:50px; display:none;"
tal:condition="dat.source_type=='chart-line'" id="chart-line-${dat.id}" >
<div class="row">
<center>
<div class="row">
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row">
<div class="col-md-10">
<canvas id="canvas_${dat.id}" height="400px" width="800px"></canvas>
</div>
<div class="col-md-2">
<h5>Keterangan</h5>
<div id="legend_${dat.id}"></div>
</div>
</div>
</center>
</div>
<script>
var lineChartData_${dat.id} = {
labels : [],
datasets : [
{
label: "Target",
fillColor : "rgba(220,220,220,0.2)",
strokeColor : "rgba(220,220,220,1)",
pointColor : "rgba(220,220,220,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(220,220,220,1)",
data : []
},
{
label: "Realisasi",
fillColor : "rgba(151,187,205,0.2)",
strokeColor : "rgba(151,187,205,1)",
pointColor : "rgba(151,187,205,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(151,187,205,1)",
data : []
}
]
}
Chart.defaults.global.scaleLabel = function(label){
return label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
// return parseInt( label.value ).toLocaleString();
/*
This doesn't work in all browsers unfortunately yet:
parseInt( '1000' ).toLocaleString()
Result in Safari: 1.000
Result in FF und Chrome: 1.111
parseFloat( '1000.33' ).toLocaleString()
Result in Safari: 1000.33
Result in FF und Chrome: 1.000,33
*/
};
Chart.defaults.global.multiTooltipTemplate = function(label){
return label.datasetLabel + ': ' + label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");}
; // "<%= value %>";
Chart.defaults.global.scaleLabel = function(label){
return label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
};
Chart.defaults.global.multiTooltipTemplate = function(label){
return label.datasetLabel + ': ' + label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");}
;
$(function(){
var ctx_${dat.id} = document.getElementById("canvas_${dat.id}").getContext("2d");
//window.myLine_${dat.id} = new Chart(ctx_${dat.id}).Line(lineChartData_${dat.id}, {
//responsive: true
//});
$.ajax({
type: "POST",
url: "/eis/linebar/act",
data: "id=${dat.source_id}",
success: function (html) {
if (html.success == true) {
for (i = 0; i < html.label.length; i++) {
lineChartData_${dat.id}.labels.push(html.label[i]);
lineChartData_${dat.id}.datasets[0].data.push(html.target[i]);
lineChartData_${dat.id}.datasets[1].data.push(html.realisasi[i]);
}
window.myLine_${dat.id} = new Chart(ctx_${dat.id}).Line(lineChartData_${dat.id}, {
//responsive: true;
});
legend(document.getElementById('legend_${dat.id}'), lineChartData_${dat.id});
}
},
beforeSend: function () {
}
});
});
</script>
</div>
<div class="col-md-12 data" style="margin-bottom:50px; display:none;"
tal:condition="dat.source_type=='chart-bar'" id="chart-bar-${dat.id}" >
<div class="row">
<center>
<div class="row">
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row">
<div class="col-md-10">
<canvas id="canvas_${dat.id}" height="400px" width="800px"></canvas>
</div>
<div class="col-md-2">
<h5>Keterangan</h5>
<div id="legend_${dat.id}"></div>
</div>
</div>
</center>
</div>
<script>
var barChartData_${dat.id} = {
labels : [],
datasets : [
{
label: "Target",
fillColor : "rgba(220,220,220,0.2)",
strokeColor : "rgba(220,220,220,1)",
pointColor : "rgba(220,220,220,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(220,220,220,1)",
data : []
},
{
label: "Realisasi",
fillColor : "rgba(151,187,205,0.2)",
strokeColor : "rgba(151,187,205,1)",
pointColor : "rgba(151,187,205,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(151,187,205,1)",
data : []
}
]
}
Chart.defaults.global.scaleLabel = function(label){
return label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
// return parseInt( label.value ).toLocaleString();
/*
This doesn't work in all browsers unfortunately yet:
parseInt( '1000' ).toLocaleString()
Result in Safari: 1.000
Result in FF und Chrome: 1.111
parseFloat( '1000.33' ).toLocaleString()
Result in Safari: 1000.33
Result in FF und Chrome: 1.000,33
*/
};
Chart.defaults.global.multiTooltipTemplate = function(label){
return label.datasetLabel + ': ' + label.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");}
;
var ctx_${dat.id} = $("#canvas_${dat.id}").get(0).getContext("2d");
$(function(){
//GET DATA FROM SERVER
$.ajax({
type: "POST",
url: "/eis/linebar/act",
data: "id=${dat.source_id}",
success: function (html) {
if (html.success == true) {
for (i = 0; i < html.label.length; i++) {
barChartData_${dat.id}.labels.push(html.label[i]);
barChartData_${dat.id}.datasets[0].data.push(html.target[i]);
barChartData_${dat.id}.datasets[1].data.push(html.realisasi[i]);
}
window.myBar_${dat.id} = new Chart(ctx_${dat.id}).Bar(barChartData_${dat.id},
{
//responsive: true;
});
legend(document.getElementById('legend_${dat.id}'), barChartData_${dat.id});
}
},
beforeSend: function () {
}
});
});
</script>
</div>
<div class="col-md-12 data" style="margin-bottom:50px; display:none;"
tal:condition="dat.source_type=='chart-pie'" id="chart-pie-${dat.id}" >
<div class="row">
<center>
<div class="row">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
<div class="row">
<div class="col-md-10">
<canvas id="chart-area_${dat.id}" height="400px" width="600px"></canvas>
</div>
<div class="col-md-2">
<h5>Keterangan</h5>
<div id="legend_${dat.id}"></div>
</div>
</div>
</center>
</div>
<script>
var pieData_${dat.id} = [];
$(function(){
/*GET DATA PIE*/
var ctx_${dat.id} = document.getElementById("chart-area_${dat.id}").getContext("2d");
//window.myPie_${dat.id} = new Chart(ctx_${dat.id}).Pie(pieData_${dat.id});
var npie = 0 ;
//GET DATA FROM SERVER
$.ajax({
type: "POST",
url: "/eis/pie/act",
data: "id=${dat.source_id}",
success: function (html) {
if (html.success == true) {
jQuery.each(html.rows, function(i, val) {
x = {
"value": val.value,
"color": "#"+val.color,
//highlight: "#"+val.highlight,
"label": val.nama}
npie = pieData_${dat.id}.push(x);
//alert(pieData_${dat.id}[npie].value());
});
window.myPie_${dat.id} = new Chart(ctx_${dat.id}).Pie(pieData_${dat.id},{
//responsive: true;
});
legend(document.getElementById('legend_${dat.id}'), pieData_${dat.id});
}
},
beforeSend: function () {
}
});
});
</script>
</div>
</div>
</div>
</div>
</div>
<html metal:use-macro = "load: eis-base.pt">
</html>
\ No newline at end of file
......@@ -5,20 +5,19 @@ build-backend = 'setuptools.build_meta'
#packages = ["opensipkd", "opensipkd.pbb", "opensipkd.pbb.esppt"]
[tool.setuptools.packages.find]
include = ['eispajak.*']
include = ['eispajak']
[tool.mypy]
exclude = [
]
exclude = ['tmp' , 'build', 'dist', 'eispajak.egg-info', 'docs', 'tests']
show_error_codes = true
[[tool.mypy.overrides]]
module = [
]
#[[tool.mypy.overrides]]
#
#module = [
#]
warn_unused_ignores = true
strict = true
#warn_unused_ignores = true
#strict = true
[project]
......
from ..tools import *
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!