+ All Categories
Home > Documents > Lampiran Source Code App

Lampiran Source Code App

Date post: 02-Jun-2018
Category:
Upload: -
View: 230 times
Download: 0 times
Share this document with a friend

of 68

Transcript
  • 8/10/2019 Lampiran Source Code App

    1/68

    1

    LAMPIRAN

    1.

    index.html

    Jaya Mekar

    Jabatan

    Karyawan

    Rumus Gaji

  • 8/10/2019 Lampiran Source Code App

    2/68

    2

    Penggajian

  • 8/10/2019 Lampiran Source Code App

    3/68

    3

    2. manifest.json

    {"name": "__MSG_appName__","description": "__MSG_appDescription__",

    "version": "11","manifest_version": 2,"default_locale": "en","permissions": [

    "unlimitedStorage"],"icons": {

    "16": "images/icon-16.png","128": "images/icon-128.png"

    },"app": {

    "background": {"scripts": [

    "scripts/main.js","scripts/chromereload.js"

    ]}

    }

    }

    3. _locales/en/messages.json

    {"appName": {

    "message": "Jaya Mekar","description": "The name of the application"

    },"appDescription": {

    "message": "Sistem Informasi Penggajian","description": "The description of the application"

    }}

    4. scripts/main.js

    'use strict';

    chrome.app.runtime.onLaunched.addListener(function(){varwidth =840;varheight =600;

    chrome.app.window.create('index.html',{minWidth:width,minHeight:height,left:Math.round((screen.availWidth -width)/2),top:Math.round((screen.availHeight -height)/2)

    });});

  • 8/10/2019 Lampiran Source Code App

    4/68

    4

    5. views/jabatan/jabatan.html

    Mengelola Jabatan

    Tambah Jabatan

    Sunting Data

    Hapus Data

    Jenis

    Jml Karyawan

  • 8/10/2019 Lampiran Source Code App

    5/68

    5

    Jml Rumus Gaji

    {{i.jenis}}{{i.karyawan.length ||

    0}} orang{{i.rumusGaji.length

    || 0}} data

    {{i.waktu | waktu}}

    6. views/jabatan/modal-jabatan.html

    {{modalJabatanCtrl.obj.aksi}}Jabatan

    Nama Jabatan

    * Namajabatan wajib di isi

    * Namajabatan kurang terperinci

    * NamaJabatan terlalu panjang

  • 8/10/2019 Lampiran Source Code App

    6/68

    6

    Jenis

    -- Pilih Jenis Jabatan --* Jenis

    jabatan wajib di isi

    SimpanBatal

    7. views/karyawan/karyawan.html

    Mengelola Karyawan

    Tambah Karyawan

    #NamaJabatanKaryawan

    Kel

  • 8/10/2019 Lampiran Source Code App

    7/68

  • 8/10/2019 Lampiran Source Code App

    8/68

    8

    Karyawan

    {{modalKaryawanCtrl.obj.waktu | waktu}}

    #{{modalKaryawanCtrl.obj.versi}}

    Nama Lengkap

    * Namadepan wajib di isi

    * Namadepan terlalu pendek

    * Namadepan terlalu panjang

    * Tidakwajib di isi

    Jabatan

    -- Pilih Jenis Jabatan --* Jenis

    jabatan wajib di isi

  • 8/10/2019 Lampiran Source Code App

    9/68

    9

    Kelompok Kerja

    --

    *

    Kelompok Kerja wajib di isi

    Pertama Kerja

    *Tanggal wajib di isi

  • 8/10/2019 Lampiran Source Code App

    10/68

    10

    Status

    *Tanggal wajib di isi

    Simpan

    Batal

    9. views/rumus-gaji/rumus-gaji.html

    Tambah Rumus GajiKaryawan Harian

    #JabatanJenis

    Shift

  • 8/10/2019 Lampiran Source Code App

    11/68

    11

    H.Perminggu

    H.Perhari

    U.Hadir

    {{(RumusGajiCtrl.numberPage-1)*RumusGajiCtrl.limit+$index+1}}

    {{i.jabatan}}{{i.jenis}}{{i.shift}}{{i.harga |

    numberFormat:"Rp ":0}}{{i.harga / 6 |

    numberFormat:"Rp ":0}}{{i.uangHadir |numberFormat:"Rp ":0}}

  • 8/10/2019 Lampiran Source Code App

    12/68

    12

    filter:'Harian' | filter:RootCtrl.filter | length)

  • 8/10/2019 Lampiran Source Code App

    13/68

    13

    {{(RumusGajiCtrl.numberPage-1)*RumusGajiCtrl.limit+$index+1}}

    {{i.jabatan}}{{i.jenis}}

    {{i.shift}}{{i.targetProduksi |

    numberFormat:""}} mtr{{i.targetJmlProduksi |

    numberFormat:""}} mtr{{i.harga |

    numberFormat:"Rp ":0}}{{i.hargaTarget |

    numberFormat:"Rp ":0}}{{i.uangHadir |

    numberFormat:"Rp ":0}}

    10.views/rumus-gaji/modal-rumus-gaji.html

    Rumus Gaji -{{modalRumusGaji.jenis}}

  • 8/10/2019 Lampiran Source Code App

    14/68

    14

    Jabatan

    -- Pilih Jenis Jabatan --* Jenis

    jabatan wajib di isi

    Jenis

    Shift

    --

    Hargaperminggu

  • 8/10/2019 Lampiran Source Code App

    15/68

    15

    * Hargaperminggu wajib di isi

    {{modalRumusGaji.obj.harga / 6 | numberFormat:"Rp":0}}

    Harga normal

    * Harganormal wajib di isi

    Harga target

    * Hargatarget wajib di isi

    Targetproduksi

  • 8/10/2019 Lampiran Source Code App

    16/68

    16

    * Targetproduksi wajib di isi

    T.Jml Produksi

    * T.Jmlproduksi wajib di isi

    Uang hadir

    * HargaUang hadir wajib di isi

    Simpan

    Batal

  • 8/10/2019 Lampiran Source Code App

    17/68

    17

    11.views/penggajian/penggajian.html

    Hitung penggajiankaryawan harian

    #Nama LengkapJabatanTanggalShiftKhdrHargaUang HadirGapokBonusTotal Gaji

    {{(PenggajianCtrl.numberPage-1)*PenggajianCtrl.limit+$index+1}}

    {{i.namaLengkap}}{{i.jabatan}}{{i.waktu.penggajian |

    date:'d MMM yyyy'}}{{i.rincianRumusGaji.shift}}{{i.kehadiran}}{{i.rincianRumusGaji.harga

    | numberFormat:"Rp ":0}}{{i.uangHadir |

    numberFormat:"Rp ":0}}{{i.gajipokok |

    numberFormat:"Rp ":0}}

  • 8/10/2019 Lampiran Source Code App

    18/68

  • 8/10/2019 Lampiran Source Code App

    19/68

    19

    12.

    views/penggajian/modal-penggajian.html

    Proses {{modalPenggajianCtrl.aksi}} Penggajian -

    {{modalPenggajianCtrl.jenis}}

    Nama Depan

    -- Pilih Karyawan --

    *

    Karyawan wajib di isi

    Tgl Penggajian

  • 8/10/2019 Lampiran Source Code App

    20/68

    20

    *Tanggal wajib di isi

    Jabatan

    Shift

    -- Pilih Shift --* Shift

    wajib di isi

    Jenis

  • 8/10/2019 Lampiran Source Code App

    21/68

  • 8/10/2019 Lampiran Source Code App

    22/68

    22

    Total Gaji

    Simpan

    Batal

    13.scripts/app.js

    'use strict';

    angular.module('jayaMekarApp',['ui.router','ngMessages','ui.bootstrap'

    ])

    .config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider){

    $urlRouterProvider.otherwise('/jabatan');$stateProvider.state('jabatan',{

    url:'/jabatan',templateUrl:'views/jabatan/jabatan.html',controller:'JabatanCtrl'

    }).state('karyawan',{

    url:'/karyawan',templateUrl:'views/karyawan/karyawan.html',controller:'KaryawanCtrl'

    }).state('rumus-gaji',{

    url:'/rumus-gaji',templateUrl:'views/rumus-gaji/rumus-gaji.html' ,controller:'RumusGajiCtrl'

    })

  • 8/10/2019 Lampiran Source Code App

    23/68

    23

    .state('penggajian',{url:'/penggajian',templateUrl:'views/penggajian/penggajian.html' ,controller:'PenggajianCtrl'

    })

    }]);

    14.config/app.config.js

    'use strict';

    angular.module('jayaMekarApp')

    .constant('APP_CONFIG',{'brandTop':{

    nama:'Nama Aplikasi',

    icon:'Icon Aplikasi'}

    })

    .config(['APP_CONFIG',function(APP_CONFIG){

    APP_CONFIG.brandTop ={nama:'Jaya Mekar'

    };APP_CONFIG.menuNavRightTop =[

    {href:'#',menu:'DEMO',

    ngClassD:'caret',dropdown:true,submenu:[{

    href:'contoh-data',submenu:'Contoh Data',ngClass:'glyphicon glyphicon-file'

    }]}

    ];}

    ]);

    15.

    controller/root.js

    'use strict';

    angular.module('jayaMekarApp').controller('RootCtrl',['$scope','APP_CONFIG',

    function($scope,APP_CONFIG){

    varvm =$scope.RootCtrl =this;

    vm.brand =APP_CONFIG.brandTop;vm.menuNavRight =APP_CONFIG.menuNavRightTop;

    vm.withSidebar =true;

  • 8/10/2019 Lampiran Source Code App

    24/68

    24

    vm.toggleSidebar =function(){vm.withSidebar =!vm.withSidebar;

    };

    }

    ]);

    16.controller/jabatan.js

    'use strict';

    angular.module('jayaMekarApp')

    .controller('JabatanCtrl',['$scope','jabatanFactory',function($scope,jabatanFactory){

    varthat =$scope.JabatanCtrl =this;

    this.jabatan =jabatanFactory.jabatan;

    this.render ={jabatanDipakai:function(object){

    returnobject.karyawan.length >0||object.rumusGaji.length >0?true:false;

    },hapusData:function(object){

    returnobject.karyawan.length

  • 8/10/2019 Lampiran Source Code App

    25/68

    25

    .controller('KaryawanCtrl',['$scope','karyawanFactory','$indexedDB',

    function($scope,karyawanFactory,$indexedDB){

    varthat =$scope.KaryawanCtrl =this;

    this.karyawan =karyawanFactory.karyawan;this.jabatan =[];this.maxSize =7;this.numberPage =1;this.limit =10;

    $indexedDB.getAll(['jabatan']).then(function(result){that.jabatan =result;

    });

    karyawanFactory.get().then(function(result){that.karyawan =result;

    });

    this.add =function(){varjabatan =that.jabatan;karyawanFactory.openModal(jabatan);

    };

    this.edit =function(obj){varjabatan =that.jabatan;karyawanFactory.openModal(jabatan,obj);

    };

    this.delete=function(obj){karyawanFactory.del(obj);};

    }]);

    18.controller/rumus-gaji.js

    'use strict';

    angular.module('jayaMekarApp')

    .controller('RumusGajiCtrl',['$scope','$indexedDB','rumusGajiFactory',

    function($scope,$indexedDB,rumusGajiFactory){

    varthat =$scope.RumusGajiCtrl =this;

    this.rumusgaji =rumusGajiFactory.rumusgaji;this.jabatan =[];this.maxSize =7;this.numberPage =1;this.limit =10;

    rumusGajiFactory.get().then(function(result){

  • 8/10/2019 Lampiran Source Code App

    26/68

    26

    that.rumusgaji =result;});

    $indexedDB.getAll(['jabatan']).then(function(result){that.jabatan =result;

    });

    this.add =function(jenis){varjabatan =that.jabatan;rumusGajiFactory.openModal(jenis,jabatan);

    };

    this.edit =function(jenis,obj){varjabatan =that.jabatan;rumusGajiFactory.openModal(jenis,jabatan,obj);

    };

    this.delete=function(obj){

    rumusGajiFactory.del(obj);};

    }]);

    19.controller/penggajian.js

    'use strict';

    angular.module('jayaMekarApp')

    .controller('PenggajianCtrl',['$scope','karyawanFactory','rumusGajiFactory','penggajianKaryawanHarianFactory' ,

    function($scope,karyawanFactory,rumusGajiFactory,penggajianKaryawanHarianFactory ){

    varthat =$scope.PenggajianCtrl =this;

    this.karyawan =karyawanFactory.karyawan;this.rumusgaji =rumusGajiFactory.rumusgaji;this.penggajianKaryawanHarian =

    penggajianKaryawanHarianFactory .penggajian;this.maxSize =7;

    this.numberPage =1;this.limit =10;

    karyawanFactory.get().then(function(result){that.karyawan =result;

    });

    rumusGajiFactory.get().then(function(result){that.rumusgaji =result;

    });

    penggajianKaryawanHarianFactory .getAll().then(function(result){

    that.penggajianKaryawanHarian =result;

  • 8/10/2019 Lampiran Source Code App

    27/68

    27

    });

    this.add =function(jenis){varkaryawan =that.karyawan;varrumusgaji =that.rumusgaji;

    varaksi ='Tambah data';penggajianKaryawanHarianFactory .openModal(aksi,karyawan,

    rumusgaji,jenis);};

    this.edit =function(jenis,obj){varkaryawan =that.karyawan;varrumusgaji =that.rumusgaji;varaksi ='Sunting data';penggajianKaryawanHarianFactory .openModal(aksi,karyawan,

    rumusgaji,jenis,obj);};

    this.delete=function(obj){penggajianKaryawanHarianFactory .del(obj);};

    }]);

    20.service/id-factory.js

    'use strict';

    angular.module('jayaMekarApp')

    .factory('$id',function(){varid =uuid.noConflict();returnfunction(){returnid.v4();

    };});

    21.services/indexeddb-provider.js

    'use strict';

    angular.module('jayaMekarApp')

    .provider('$indexedDB',function(){

    varidb ={namaIdb:'Jaya Mekar',versiIdb:1

    };

    functionGetter($q,$log){

    this.init =function(){vardefer =$q.defer();vardb;

  • 8/10/2019 Lampiran Source Code App

    28/68

    28

    varopenRequest =window.indexedDB.open(idb.namaIdb,idb.versiIdb);

    openRequest.onerror =function(event){$log.error(event.target.errorCode);

    };openRequest.onupgradeneeded =function(event){

    db =event.target.result;varobjectStore;// S:Pembuatan ObjectStore// Jika objectStore belum ada maka objectStre akan

    dibuatif(!db.objectStoreNames.contains('jabatan')){

    objectStore =db.createObjectStore('jabatan',{keyPath:'idJabatan',unique:true

    });}

    if(!db.objectStoreNames.contains('karyawan')){objectStore =db.createObjectStore('karyawan',{keyPath:'nip',unique:true

    });// parameter 1 = nama_index// parameter 2 = nama_properti_objekobjectStore.createIndex('idJabatan','idJabatan',{

    unique:false});

    }if(!db.objectStoreNames.contains('rumusgaji')){

    objectStore =db.createObjectStore('rumusgaji',{

    keyPath:'idRumusGaji',unique:true});objectStore.createIndex('idJabatan','idJabatan',{

    unique:false});

    }if(!db.objectStoreNames.contains('penggajian')){

    objectStore =db.createObjectStore('penggajian',{keyPath:'idPenggajian',unique:true

    });objectStore.createIndex('nip','nip',{

    unique:false

    });objectStore.createIndex('idJabatan','idJabatan',{

    unique:false});

    }// E:Pembuatan ObjectStore

    };

    /* fungsi di panggil jika success */openRequest.onsuccess =function(event){

    db =event.target.result;

    db.onerror =function(event){defer.reject(event.target.errorCode);

  • 8/10/2019 Lampiran Source Code App

    29/68

    29

    };defer.resolve(db);

    };

    returndefer.promise;

    };// E:this.init()

    this.getAll =function(arrayObjStore){varresult =[];vardefer =$q.defer();

    this.init().then(function(db){varhandleResult =function(event){

    varcursor =event.target.result;if(cursor){

    result.push(cursor.value);cursor.continue();

    }

    };

    vartransaction =db.transaction(arrayObjStore,'readonly');

    angular.forEach(arrayObjStore,function(value){transaction.objectStore(value)

    .openCursor()

    .onsuccess =handleResult;});

    transaction.oncomplete =function(){defer.resolve(result);

    };});

    returndefer.promise;};// E:this.getAll()

    this.getById =function(objStore,key){vardefer =$q.defer();

    this.init().then(function(db){vartransaction =db.transaction([objStore]);varobjectStore =transaction.objectStore(objStore);varrequest =objectStore.get(key);

    request.onerror =function(event){$log.error(event.target.errorCode);

    };

    request.onsuccess =function(){vardata =request.result;defer.resolve(data);

    };});

    returndefer.promise;};// E:this.getById()

    this.getByIndex =function(objStore,nameIndex,key){

  • 8/10/2019 Lampiran Source Code App

    30/68

  • 8/10/2019 Lampiran Source Code App

    31/68

    31

    transaction.objectStore(value).put(obj);});

    transaction.onerror =function(event){$log.error(event.target.errorCode);

    };transaction.oncomplete =function(){

    defer.resolve(obj);};

    });

    returndefer.promise;};// E:this.save()

    this.delete=function(objStore,key){vardefer =$q.defer();

    this.init().then(function(db){

    vartransaction =db.transaction([objStore],'readwrite');varobjectStore =transaction.objectStore(objStore);varrequest =objectStore.delete(key);

    request.onerror =function(event){$log.error(event.target.errorCode);

    };

    request.onsuccess =function(){defer.resolve(key);

    };});

    returndefer.promise;};// E:this.get()

    }// getter()

    this.$get =function($q,$log){returnnewGetter($q,$log);

    };});

    22.services/jabatan-factory.js

    'use strict';

    angular.module('jayaMekarApp').factory('jabatanFactory',['$q','$modal','$log',

    '$indexedDB','$id',function($q,$modal,$log,$indexedDB,$id){

    varjabatan =[];

    varupdateSchema =function(obj){vardefer =$q.defer();

    obj.waktu =obj.waktu ||{};

  • 8/10/2019 Lampiran Source Code App

    32/68

    32

    vardate =newDate().getTime();varidJabatan =obj.idJabatan ?obj.idJabatan :'Jabatan-'

    +$id();vardibuat =obj.waktu.dibuat ?obj.waktu.dibuat :date;vardirubah =date;

    varversi =obj.versi ?obj.versi +1:1;

    varnewSchema ={'idJabatan':idJabatan,'jabatan':obj.jabatan,'waktu':{

    'dibuat':dibuat,'dirubah':dirubah

    },'jenis':obj.jenis,'versi':versi

    };

    defer.resolve(newSchema);returndefer.promise;};

    varget =function(){varresult =[];vararrayObjStore =['jabatan'];vardefer =$q.defer();

    $indexedDB.init().then(function(db){vartransaction =db.transaction(arrayObjStore,

    'readonly');vartransactionJabatan =

    transaction.objectStore('jabatan').openCursor();

    transactionJabatan.onerror =function(event){$log.error(event.target.errorCode);

    };

    transactionJabatan.onsuccess =function(event){varcursorJabatan =event.target.result;

    if(cursorJabatan){

    vardata ={idJabatan:cursorJabatan.value.idJabatan,jabatan

    :cursorJabatan

    .value

    .jabatan

    ,

    waktu:cursorJabatan.value.waktu,jenis:cursorJabatan.value.jenis,versi:cursorJabatan.value.versi,karyawan:[],rumusGaji:[]

    };

    // Mengambil data karyawan sesuai idJabatan$indexedDB.getByIndex('karyawan','idJabatan',

    cursorJabatan.value.idJabatan).then(function(result){

    data.karyawan =result;});

  • 8/10/2019 Lampiran Source Code App

    33/68

  • 8/10/2019 Lampiran Source Code App

    34/68

    34

    $indexedDB.getByIndex('rumusgaji','idJabatan',cursorJabatan.idJabatan)

    .then(function(result){data.rumusGaji =result;

    });

    result =data;};

    transaction.oncomplete =function(){defer.resolve(result);

    };});

    returndefer.promise;};// E:getById()

    varopenModal =function(paramSize,paramObj){

    $modal.open({templateUrl:'views/jabatan/modal-jabatan.html' ,controller:function($scope,$modalInstance,obj){

    varthat =$scope.modalJabatanCtrl =this;

    this.obj =angular.copy(obj);this.jenis =['Harian','Borongan'];this.aksi ='add';

    this.save =function(){if(that.obj.idJabatan){

    edit(that.obj);

    }else{add(that.obj);}$modalInstance.close();

    };

    this.cancel =function(){$modalInstance.dismiss();

    };},size:paramSize,backdrop:false,resolve:{

    obj:function()

    {

    returnparamObj;}

    }});

    };// E:openModal()

    varadd =function(obj){vararrayObjStore =['jabatan'];updateSchema(obj).then(function(newObj){

    $indexedDB.add(arrayObjStore,newObj).then(function(success){

    getById(success.idJabatan).then(function(result){jabatan.push(result);

    });

  • 8/10/2019 Lampiran Source Code App

    35/68

  • 8/10/2019 Lampiran Source Code App

    36/68

    36

    vardate =newDate().getTime();

    obj.waktu =obj.waktu ||{};

    varnip =obj.nip ?obj.nip :'Karyawan-'+$id();

    vardibuat =obj.waktu.dibuat ?obj.waktu.dibuat :date;vardirubah =date;varpertamaKerja =obj.waktu ?obj.waktu.pertamaKerja :

    date;varversi =obj.versi ?obj.versi +1:1;

    varnewSchema ={'nip':nip,'namaDepan':obj.namaDepan,'namaBelakang':obj.namaBelakang,'idJabatan':obj.idJabatan,'kelompokKerja':obj.kelompokKerja,'waktu':{

    'dibuat':dibuat,'dirubah':dirubah,'pertamaKerja':pertamaKerja

    },'statusKaryawan':obj.statusKaryawan,'versi':versi

    };

    defer.resolve(newSchema);returndefer.promise;

    };

    varget =function(){

    varresult =[];vararrayObjStore =['jabatan','karyawan'];vardefer =$q.defer();

    $indexedDB.init().then(function(db){

    vartransaction =db.transaction(arrayObjStore,'readonly');

    vartransactionJabatan =transaction.objectStore('jabatan').openCursor();

    transactionJabatan.onsuccess =function(event){varcursorJabatan =event.target.result;

    if(cursorJabatan){

    vartransactionKaryawan =transaction.objectStore('karyawan')

    .index('idJabatan').openCursor(cursorJabatan.value.idJabatan);

    transactionKaryawan.onerror =function(event){$log.error(event.target.errorCode);

    };

    transactionKaryawan.onsuccess =function(event){varcursorKaryawan =event.target.result;if(cursorKaryawan){

  • 8/10/2019 Lampiran Source Code App

    37/68

    37

    if(cursorKaryawan.value.idJabatan ===cursorJabatan.value.idJabatan){

    vardata ={nip:cursorKaryawan.value.nip,

    namaDepan:cursorKaryawan.value.namaDepan,namaBelakang:

    cursorKaryawan.value.namaBelakang,idJabatan:cursorKaryawan.value.idJabatan,jabatan:cursorJabatan.value.jabatan,rincianJabatan:cursorJabatan.value,kelompokKerja:

    cursorKaryawan.value.kelompokKerja,waktu:cursorKaryawan.value.waktu,statusKaryawan:

    cursorKaryawan.value.statusKaryawan,versi:cursorKaryawan.value.versi

    };

    result.push(data);}else{

    $log.warn('warning: id jabatan tidak sama');}

    cursorKaryawan.continue();

    }else{cursorJabatan.continue();

    }};

    }};

    transaction.oncomplete =function(){karyawan =result;defer.resolve(result);

    };});

    returndefer.promise;};

    vargetById =function(key){

    varresult

    ={};

    vararrayObjStore =['jabatan','karyawan'];vardefer =$q.defer();

    $indexedDB.init().then(function(db){

    vartransaction =db.transaction(arrayObjStore,'readonly');

    vartransactionKaryawan =transaction.objectStore('karyawan');

    vartransactionKaryawanById =transactionKaryawan.get(key);

    transactionKaryawanById.onsuccess =function(event){

  • 8/10/2019 Lampiran Source Code App

    38/68

    38

    varcursorKaryawan =event.target.result;

    if(cursorKaryawan){

    vartransactionJabatan =

    transaction.objectStore('jabatan');vartransactionJabatanById =

    transactionJabatan.get(cursorKaryawan.idJabatan);

    transactionJabatanById.onerror =function(event){$log.error(event.target.errorCode);

    };

    transactionJabatanById.onsuccess =function(event){varcursorJabatan =event.target.result;

    vardata ={nip:cursorKaryawan.nip,

    namaDepan:cursorKaryawan.namaDepan,namaBelakang:cursorKaryawan.namaBelakang,idJabatan:cursorKaryawan.idJabatan,jabatan:cursorJabatan.jabatan,rincianJabatan:cursorJabatan,kelompokKerja:cursorKaryawan.kelompokKerja,waktu:cursorKaryawan.waktu,statusKaryawan:cursorKaryawan.statusKaryawan,versi:cursorKaryawan.versi

    };

    result =data;};

    }};

    transaction.oncomplete =function(){defer.resolve(result);

    };});

    returndefer.promise;};

    varopenModal =function(jabatan,obj){

    $modal.open({templateUrl:'views/karyawan/modal-karyawan.html' ,controller:function($scope,$modalInstance,obj){

    varthat =$scope.modalKaryawanCtrl =this;

    // jika parameter objek undifined maka objek kosongdibuat

    this.obj =angular.copy(obj)||{};this.obj.waktu =this.obj.waktu ||{};this.arrayJabatan =jabatan;this.disabledStatusKaryawan =false;this.objectJabatan =that.obj.rincianJabatan;this.objectKelompokKerja =that.obj.kelompokKerja;

  • 8/10/2019 Lampiran Source Code App

    39/68

    39

    this.kelompokKerja =['UM','UJ','NS'];this.statusKaryawan =['Kerja','Keluar'];

    // jika obj.statusKaryawan undefined yang berartisedang

    // melakukan penambahan data.if(angular.isUndefined(this.obj.statusKaryawan)){

    this.obj.statusKaryawan ='Kerja';this.disabledStatusKaryawan =true;

    }

    this.save =function(idJabatan,kelompokKerja,pertamaKerja){

    this.obj.idJabatan =idJabatan;this.obj.kelompokKerja =kelompokKerja;this.obj.waktu.pertamaKerja =

    pertamaKerja.getTime();

    if(that.obj.nip){edit(that.obj);}else{

    add(that.obj);}

    $modalInstance.close();};

    this.cancel =function(){$modalInstance.dismiss('cancel');

    };

    // S: Config untuk datethis.today =function(){

    this.pertamaKerja =newDate();};this.today();

    this.open =function($event){$event.preventDefault();$event.stopPropagation();

    this.opened =true;

    };

    this.dateOptions ={formatYear:'yy',startingDay:1

    };

    this.format ='dd MMMM yyyy';// E: Config untuk date

    },backdrop:false,resolve:{

    obj:function(){returnobj;

    }

  • 8/10/2019 Lampiran Source Code App

    40/68

    40

    }});

    };

    varadd =function(obj){

    vararrayObjStore =['karyawan'];updateSchema(obj).then(function(newObj){

    $indexedDB.add(arrayObjStore,newObj).then(function(success){

    getById(success.nip).then(function(result){karyawan.unshift(result);

    });});

    });};// E:add()

    varedit =function(obj){vararrayObjStore =['karyawan'];

    updateSchema(obj).then(function(newObj){$indexedDB.save(arrayObjStore,newObj).then(function(success){

    getById(success.nip).then(function(result){angular.forEach(karyawan,function(value,key){

    if(value.nip ===result.nip){karyawan[key]=result;

    }});

    });});

    });};// E:edit()

    vardel =function(obj){varobjStore ='karyawan';$indexedDB.delete(objStore,obj.nip).then(function(nip){

    angular.forEach(karyawan,function(value,key){if(value !==undefined &&value.nip ===nip){

    karyawan.splice(key,1);}

    });});

    };// E:del()

    // Public API here

    return{

    karyawan:karyawan,get:get,openModal:openModal,add:add,edit:edit,del:del

    };}

    ]);

  • 8/10/2019 Lampiran Source Code App

    41/68

    41

    24.services/rumusgaji-factory.js

    'use strict';

    angular.module('jayaMekarApp')

    .factory('rumusGajiFactory',['$q','$indexedDB','$id','$log','$modal',

    function($q,$indexedDB,$id,$log,$modal){

    varrumusgaji =[];

    varupdateSchema =function(obj){vardefer =$q.defer();vardate =newDate().getTime();varidRumusGaji =obj.idRumusGaji ?obj.idRumusGaji :

    'RumusGaji-'+$id();vardibuat =obj.waktu.dibuat ?obj.waktu.dibuat :date;vardirubah =date;

    varversi =obj.versi ?obj.versi +1:1;

    varnewSchema ={'idRumusGaji':idRumusGaji,'idJabatan':obj.idJabatan,'jenis':obj.jenis,'shift':obj.shift,'harga':obj.harga,'uangHadir':obj.uangHadir,'waktu':{

    'dibuat':dibuat,'dirubah':dirubah

    },

    'versi':versi};

    if(obj.jenis ==='Borongan'){newSchema.hargaTarget =obj.hargaTarget;newSchema.targetProduksi =obj.targetProduksi;newSchema.targetJmlProduksi =obj.targetJmlProduksi;

    }

    defer.resolve(newSchema);returndefer.promise;

    };

    varget =function(){varresult =[];vararrayObjStore =['jabatan','rumusgaji'];vardefer =$q.defer();

    $indexedDB.init().then(function(db){

    vartransaction =db.transaction(arrayObjStore,'readonly');

    vartransactionJabatan =transaction.objectStore('jabatan').openCursor();

    transactionJabatan.onsuccess =function(event){

    varcursorJabatan =event.target.result;

  • 8/10/2019 Lampiran Source Code App

    42/68

    42

    if(cursorJabatan){

    vartransactionRumusgaji =transaction.objectStore('rumusgaji')

    .index('idJabatan').openCursor(cursorJabatan.value.idJabatan);

    transactionRumusgaji.onerror =function(event){$log.error('transactionRumusgaji.onerror' +

    event.target.errorCode);};

    transactionRumusgaji.onsuccess =function(){varcursorRumusGaji =transactionRumusgaji.result;if(cursorRumusGaji){

    if(cursorRumusGaji.value.idJabatan ===cursorJabatan.value.idJabatan){

    varschema ={idRumusGaji:

    cursorRumusGaji.value.idRumusGaji,idJabatan:cursorRumusGaji.value.idJabatan,jabatan:cursorJabatan.value.jabatan,rincianJabatan:cursorJabatan.value,jenis:cursorRumusGaji.value.jenis,shift:cursorRumusGaji.value.shift,harga:cursorRumusGaji.value.harga,uangHadir:cursorRumusGaji.value.uangHadir,waktu:{

    dibuat:

    cursorRumusGaji.value.waktu.dibuat,dirubah:cursorRumusGaji.value.waktu.dirubah

    },versi:cursorRumusGaji.value.versi

    };

    if(cursorRumusGaji.value.jenis ==='Borongan'){

    schema.hargaTarget =cursorRumusGaji.value.hargaTarget;

    schema.targetProduksi =cursorRumusGaji.value.targetProduksi;

    schema.targetJmlProduksi

    =

    cursorRumusGaji.value.targetJmlProduksi;}

    result.push(schema);}else{

    $log.warn('warning: id jabatan tidak sama =>transactionRumusgaji.onsuccess' );

    }cursorRumusGaji.continue();

    }else{cursorJabatan.continue();

    }};

    }

  • 8/10/2019 Lampiran Source Code App

    43/68

  • 8/10/2019 Lampiran Source Code App

    44/68

    44

    if(cursorRumusGaji.jenis ==='Borongan'){data.hargaTarget =cursorRumusGaji.hargaTarget;data.targetProduksi =

    cursorRumusGaji.targetProduksi;data.targetJmlProduksi =

    cursorRumusGaji.targetJmlProduksi;}

    result =data;

    };}

    };

    transaction.oncomplete =function(){defer.resolve(result);

    };});

    returndefer.promise;};// E:this.getById()

    varopenModal =function(jenis,jabatan,obj){

    $modal.open({templateUrl:'views/rumus-gaji/modal-rumus-gaji.html' ,controller:function($scope,$modalInstance,obj){

    varthat =$scope.modalRumusGaji =this;

    // jika parameter objek undifined maka objek kosong

    dibuat this.obj =angular.copy(obj)||{};this.obj.waktu =this.obj.waktu ||{};this.arrayJabatan =jabatan;this.objectJabatan =that.obj.rincianJabatan;this.shift =['Siang','Malam'];this.jenis =jenis;

    this.save =function(objJabatan){this.obj.idJabatan =objJabatan.idJabatan;this.obj.jenis =objJabatan.jenis;

    if(that.obj.idRumusGaji){edit

    (that

    .obj

    );

    }else{add(that.obj);

    }

    $modalInstance.close();};

    this.cancel =function(){$modalInstance.dismiss();

    };

    },// size: size,backdrop:false,

  • 8/10/2019 Lampiran Source Code App

    45/68

    45

    resolve:{obj:function(){

    returnobj;}

    }

    });

    };// E:openModel()

    varadd =function(obj){vararrayObjStore =['rumusgaji'];updateSchema(obj).then(function(newObj){

    $indexedDB.add(arrayObjStore,newObj).then(function(success){

    getById(success.idRumusGaji).then(function(result){rumusgaji.push(result);

    });});

    });};// E:add()

    varedit =function(obj){vararrayObjStore =['rumusgaji'];updateSchema(obj).then(function(newObj){

    $indexedDB.save(arrayObjStore,newObj).then(function(success){

    getById(success.idRumusGaji).then(function(result){angular.forEach(rumusgaji,function(value,key){

    if(value.idRumusGaji ===result.idRumusGaji){rumusgaji[key]=result;

    }

    });});});

    });};// E:edit()

    vardel =function(obj){varobjStore ='rumusgaji';$indexedDB.delete(objStore,

    obj.idRumusGaji).then(function(idRumusGaji){angular.forEach(rumusgaji,function(value,key){

    if(value !==undefined &&value.idRumusGaji ===idRumusGaji){

    rumusgaji.splice

    (key

    ,1

    );

    }});

    });};// E:del()

    // Public API herereturn{

    rumusgaji:rumusgaji,get:get,openModal:openModal,add:add,edit:edit,del:del

    };

  • 8/10/2019 Lampiran Source Code App

    46/68

    46

    }]);

    25.services/penggajiankaryawanharian-factory.js

    'use strict';

    angular.module('jayaMekarApp').factory('penggajianKaryawanHarianFactory' ,['$q','$indexedDB',

    '$id','$modal','kalkulasiPenggajianFactory',function($q,$indexedDB,$id,$modal,

    kalkulasiPenggajianFactory){

    varpenggajian =[];

    varupdateSchema =function(obj){vardefer =$q.defer();

    vardate =newDate().getTime();

    obj.waktu =obj.waktu ||{};varidPenggajian =obj.idPenggajian ?obj.idPenggajian :

    'Penggajian-'+$id();vardibuat =obj.waktu.dibuat ?obj.waktu.dibuat :date;vardirubah =date;varversi =obj.versi ?obj.versi +1:1;

    // normal schema untuk penggajian jenis jabatan harianvarnewSchema ={

    'idPenggajian':idPenggajian,'nip':obj.nip,

    'namaLengkap':obj.namaLengkap,'jabatan':obj.rincianRumusGaji.jabatan,'idRumusGaji':obj.rincianRumusGaji.idRumusGaji,'rincianKaryawan':obj.rincianKaryawan,'rincianRumusGaji':obj.rincianRumusGaji,'kehadiran':obj.kehadiran,'uangHadir':obj.uangHadir,'bonus':obj.bonus,'gajipokok':obj.gajiPokok,'totalGaji':obj.totalGaji,'waktu':{

    'dibuat':dibuat,'dirubah':dirubah,

    'penggajian':obj.waktu.tanggalPenggajian},'versi':versi

    };

    defer.resolve(newSchema);returndefer.promise;

    };

    vargetAll =function(){vardefer =$q.defer();vararrayObjStore =['penggajian'];$indexedDB.getAll(arrayObjStore).then(function(result){

    penggajian =result;

  • 8/10/2019 Lampiran Source Code App

    47/68

    47

    defer.resolve(result);});returndefer.promise;

    };

    vargetById =function(idPenggajian){vardefer =$q.defer();varobjStore ='penggajian';$indexedDB.getById(objStore,

    idPenggajian).then(function(result){defer.resolve(result);

    });returndefer.promise;

    };

    varopenModal =function(aksi,karyawan,rumusgaji,jenis,obj){

    $modal.open({templateUrl:'views/penggajian/modal-penggajian.html' ,controller:function($scope,$modalInstance,obj){

    varthat =$scope.modalPenggajianCtrl =this;// jika parameter objek undifined maka objek kosong

    dibuat// kondisi saat penambahan data baruthis.obj =angular.copy(obj)||{};this.obj.waktu =this.obj.waktu ||{};

    if(obj){this.objectKaryawan =obj.rincianKaryawan;

    this.obj.rincianRumusGaji =obj.rincianRumusGaji;}

    this.aksi =aksi;this.jenis =jenis;this.arrayKaryawan =karyawan;this.arrayRumusGaji =rumusgaji;

    $scope.$watch(function(){that.obj.uangHadir =

    kalkulasiPenggajianFactory.uangHadir(that.obj.kehadiran,that.obj.rincianRumusGaji);

    that.obj.gajiPokok =kalkulasiPenggajianFactory

    .gajiPokokHarian

    (that

    .obj

    .kehadiran

    ,

    that.obj.rincianRumusGaji);that.obj.totalGaji =

    kalkulasiPenggajianFactory.totalGaji(that.obj);});

    this.resetPenggajian =function(){that.obj.rincianRumusGaji ='';that.obj.uangHadir ='';

    };

    this.save =function(idPenggajian){this.obj.waktu.tanggalPenggajian =

    this.tanggalPenggajian.getTime();this.obj.idPenggajian =idPenggajian;

  • 8/10/2019 Lampiran Source Code App

    48/68

    48

    this.obj.rincianKaryawan =this.objectKaryawan;this.obj.nip =this.objectKaryawan.nip;varnamaBelakang =

    angular.isDefined(this.objectKaryawan.namaBelakang)?this.objectKaryawan.namaBelakang :'';

    this.obj.namaLengkap =this.objectKaryawan.namaDepan+' '+namaBelakang;

    this.obj.jabatan =this.obj.rincianRumusGaji.jabatan;

    this.obj.idRumusGaji =this.obj.rincianRumusGaji.idRumusGaji;

    if(that.obj.idPenggajian){edit(that.obj);

    }else{add(that.obj);

    }

    $modalInstance.close();};

    this.cancel =function(){$modalInstance.dismiss();

    };

    // S: Config untuk datethis.today =function(){

    this.tanggalPenggajian =newDate();};this.today();

    this.open =function($event){$event.preventDefault();$event.stopPropagation();

    this.opened =true;};

    this.dateOptions ={formatYear:'yy',startingDay:1

    };

    this.format

    ='dd MMMM yyyy'

    ;

    // E: Config untuk date

    },backdrop:false,resolve:{

    obj:function(){returnobj;

    }}

    });

    };

    varadd =function(obj){

  • 8/10/2019 Lampiran Source Code App

    49/68

    49

    vardefer =$q.defer();vararrayObjStore =['penggajian'];updateSchema(obj).then(function(newObj){

    $indexedDB.add(arrayObjStore,newObj).then(function(success){

    getById(success.idPenggajian).then(function(result){penggajian.push(result);

    });});

    });returndefer.promise;

    };// E:add()

    varedit =function(obj){vararrayObjStore =['penggajian'];updateSchema(obj).then(function(newObj){

    $indexedDB.save(arrayObjStore,newObj).then(function(success){

    getById(success.idPenggajian).then(function(result){angular.forEach(penggajian,function(value,key){if(value.idPenggajian ===result.idPenggajian){

    penggajian[key]=result;}

    });});

    });});

    };// E:edit()

    vardel =function(obj){varobjStore ='penggajian';

    $indexedDB.delete(objStore,obj.idPenggajian).then(function(idPenggajian){angular.forEach(penggajian,function(value,key){

    if(value !==undefined &&value.idPenggajian ===idPenggajian){

    penggajian.splice(key,1);}

    });});

    };// E:del()

    return{penggajian

    :penggajian

    ,

    getAll:getAll,openModal:openModal,add:add,edit:edit,del:del

    };}

    ]);

    26.services/kalkulasipenggajian-factory.js

    'use strict';

  • 8/10/2019 Lampiran Source Code App

    50/68

  • 8/10/2019 Lampiran Source Code App

    51/68

    51

    }};

    });

    29.

    filters/numberformat-filter.js

    'use strict';

    angular.module('jayaMekarApp')

    /*** Number.prototype.format(n, x, s, c)** @paraminteger n: length of decimal* @paraminteger x: length of whole part* @parammixed s: sections delimiter* @parammixed c: decimal delimiter

    * @link http://stackoverflow.com/questions/149055/how-can-i-format-numbers-as-money-in-javascript**/

    .filter('numberFormat',function(){// Contoh penggunaan filter// numberFormat:"Rp ":0// number yaitu data yang akan dirubah formatnya// key yaitu jenis mata uangnya// LD (Long Desimal) yaitu jumlah desimal yang diinginkanreturnfunction(number,key,LD){

    // doc terlampir - Number.prototype.format(n, x, s, c)

    Number.prototype.format =function(n,x,s,c){varre ='\\d(?=(\\d{'+(x ||3)+'})+'+(n >0?'\\D':

    '$')+')',num =this.toFixed(Math.max(0,~~n));

    return(c ?num.replace('.',c):num).replace(newRegExp(re,'g'),'$&'+(s ||','));

    };returnkey +number.format(LD,3,'.',',');

    };});

    30.

    filters/startarray-filter.js

    'use strict';

    angular.module('jayaMekarApp')// untuk menentukan no start array.filter('startArray',function(){

    returnfunction(data,start){if(angular.isDefined(data)){returndata.slice(start);

    }};

    });

  • 8/10/2019 Lampiran Source Code App

    52/68

  • 8/10/2019 Lampiran Source Code App

    53/68

    53

    33.directive/yk-navbar.js

    'use strict';

    angular.module('jayaMekarApp')

    /**** @ngdocdirective* @namaykNavbar & ykMenuList** @example* @html

    ** @ctrlatau service value untuk data menu{

    'brandTop': {nama: 'Nama Aplikasi',icon: 'Icon Aplikasi'

    },'menuNavLeftTop': [{

    href: 'menu-1',menu: 'Menu 1',ngClass: 'fa fa-icon'

    },{href: 'menu-2',

    menu: 'Menu 2',ngClassD: 'caret',dropdown: true,submenu: [{

    href: 'menu-2.menu-2-1',submenu: 'Menu 2.1',ngClass: 'glyphicon glyphicon-icon'

    }]}],'menuNavRightTop': [{

    href: 'menu-1',menu: 'Menu 1',ngClass: 'fa fa-icon'

    },{href: 'menu-2',menu: 'Menu 2',ngClassD: 'caret',dropdown: true,submenu: [{

    href: 'menu-2.menu-2-1',submenu: 'Menu 2.1',ngClass: 'glyphicon glyphicon-icon'

    }]}]

    })*

    **/

  • 8/10/2019 Lampiran Source Code App

    54/68

    54

    .directive('ykNavbar',function(){

    functionykNavbarLinkFn(scope,element,attrs){if(angular.isDefined(attrs.fixedTop)){

    element.addClass('navbar-fixed-top');}if(angular.isDefined(attrs.fixedBottom)){element.addClass('navbar-fixed-bottom');

    }}

    return{templateUrl:'views/directive/navbar/yk-navbar.html' ,restrict:'E',scope:{brand:'=',withSidebar:'=',

    toggleSidebar:'&'},replace:true,transclude:true,controller:function($scope){varlistMenu =$scope.listMenu =[];this.menu =function(menu){

    listMenu.push(menu);};

    },link:ykNavbarLinkFn

    };})

    .directive('ykMenuList',function(){

    functionykMenuListLinkFn(scope,element,attrs){if(angular.isDefined(attrs.nav)){element.addClass('navbar-nav');

    }if(angular.isDefined(attrs.right)){element.addClass('navbar-right');

    }}

    return{templateUrl

    :'views/directive/menu/yk-menu-list.html'

    ,

    restrict:'E',scope:{menu:'='

    },replace:true,require:'^ykNavbar',link:ykMenuListLinkFn

    };});

  • 8/10/2019 Lampiran Source Code App

    55/68

    55

    34.directive/yk-sidebar.js

    'use strict';

    angular.module('jayaMekarApp')

    .directive('ykSidebar',function(){return{templateUrl:'views/directive/sidebar/yk-sidebar.html' ,restrict:'E',replace:true,transclude:true,scope:{

    filter:'='}

    };});

    35.

    directive/yk-wrapper.js

    'use strict';

    angular.module('jayaMekarApp')

    .directive('ykWrapper',function(){

    functionykWrapperLink(scope,element,attrs){

    // binding perubahan ukuran windowattrs.$observe('windowWidth',function(newValue){if(newValue

  • 8/10/2019 Lampiran Source Code App

    56/68

    56

    })

    .directive('ykWrapperContent',function(){return{

    restrict:'E',

    templateUrl:'views/directive/wrapper/yk-wrapper-content.html',

    replace:true,transclude:true,scope:{}

    };});

    36.directive/ng-window.js

    'use strict';

    angular.module('jayaMekarApp').directive('ngWindow',['$window',

    function($window){returnfunction($scope){

    $scope.initializeWindowSize =function(){$scope.windowWidth =$window.innerWidth;$scope.windowHeight =$window.innerHeight;

    };angular.element($window).bind('resize',function(){

    $scope.initializeWindowSize();$scope.$apply();

    });$scope.initializeWindowSize();

    };}

    ]);

    37.directive/ng-box.js

    'use strict';

    angular.module('jayaMekarApp').directive('ngBox',function(){

    return{templateUrl:'views/directive/box/box.html',restrict:'E',replace:true,transclude:true,scope:{

    renderBoxFn:'&'},controller:function($scope){

    this.renderBoxFn =$scope.renderBoxFn();}

    };}).directive('ngBoxHeader',function(){

    return{templateUrl:'views/directive/box/box-header.html' ,

  • 8/10/2019 Lampiran Source Code App

    57/68

    57

    restrict:'E',replace:true,transclude:true,require:'^ngBox',link:function(scope,element,attrs,ngboxCtrl){

    attrs.$observe('title',function(newValue){scope.title =newValue;

    });scope.renderBoxFn =ngboxCtrl.renderBoxFn;

    }};

    });

    38.directive/ng-tabs.js

    'use strict';

    /*** @ngdocmodul* @namematerial.component.ng.tabs** @descriptiom* arahan untuk membuat material desain untuk komponen web tabs*/

    angular.module('jayaMekarApp')

    /*** @ngdocdirective* @namengTabs

    ** @restrictE** @description** @attrs{titleTabs:@} digunakan untuk menentukan judul tabs** @example**/

    .directive('ngTabs',function(){return{

    restrict:'E',replace:false,transclude:true,scope:{titleTabs:'@'

    },templateUrl:'views/directive/tabs/ng-tabs.html' ,controller:function($scope){varcontent =$scope.content =[];

    this.addcontentTabs =function(nav){// tabs yang pertama akan diaktifkan jika array sama

    dengan nol

    nav.selected =content.length ===0?true:false;

  • 8/10/2019 Lampiran Source Code App

    58/68

    58

    content.unshift(nav);};

    $scope.selected =function(nav){// menonaktifkan semua tab

    angular.forEach(content,function(nav){nav.selected =false;

    });// mengaktifkan tab yang dipilihnav.selected =true;

    };

    },link:function(scope,element,attrs){if(angular.isDefined(attrs.pullBody)){

    element.addClass('pull-body');}if(angular.isUndefined(attrs.pullBody)){

    element.addClass('normal');}

    console.log();}

    };})

    /*** @ngdocdirective* @namengTabsContent** @restrictE

    ** @description** @attrs{titleContent:@} digunakan untuk menentukan judul navtabs** @example**/

    .directive('ngTabsContent',function(){return{

    restrict:'E',replace

    :true,

    transclude:true,require:'^ngTabs',scope:{titleContent:'@'

    },templateUrl:'views/directive/tabs/ng-tabs-content.html' ,link:function(scope,elm,attrs,tabsCtrl){// menambahkan tabs ke array content direvtive ngTabstabsCtrl.addcontentTabs(scope);

    }};

    });

  • 8/10/2019 Lampiran Source Code App

    59/68

    59

    39.views/directive/box/box.html

    40.views/directive/box/box-header.html

    {{title}}

    41.views/directive/menu/yk-menu-list.html

    {{item.menu}}

    {{item.menu}}

    {{sm.submenu}}

    42.views/directive/navbar/yk-navbar.html

    Toggle navigation

    {{brand.nama}}

  • 8/10/2019 Lampiran Source Code App

    60/68

    60

    43.views/directive/sidebar/yk-sidebar.html

    44.views/directive/tabs/ng-tabs.html

    {{titleTabs}}{{i.titleContent}}

    45.views/directive/tabs/ng-tabs-content.html

    {{titleContent}}

    46.views/directive/wrapper/yk-wrapper.html

  • 8/10/2019 Lampiran Source Code App

    61/68

    61

    47.views/directive/wrapper/yk-wrapper-content.html

    48.styles/main.css

    html {overflow: hidden;

    }

    body {min-width: 670px;margin-top: 50px;

    }.navbar-white{background: #ffffff;

    }.row{margin-right: 0;margin-left: 0;

    }.navbar-nav.navbar-right:last-child{margin-right: 0;

    }

    .margin-span{margin-right: 5px;

    }.margin-icon-left {margin-left: 7px;

    }

    th.col-number{

    width: 10px;}

    th.col-aksi,td.col-aksi{width: 55px;

    }

    th.col-aksi{color: #fff;

    }

    .table>thead >tr >th.col-aksi,.table>tbody >tr >td.col-aksi{border-color: transparent;

    }

  • 8/10/2019 Lampiran Source Code App

    62/68

    62

    .table{margin-bottom: 0;

    }

    49.

    styles/yk-sidebar.css

    .sidebar-defaultul li,.sidebar-search{border-bottom: 1px solid #e7e7e7;

    }.sidebar-search{

    z-index: 3;padding: 10px 15px;

    }.arrow{

    float: right;}.fa.arrow:before{

    content: '\f104';}

    .active>a >.fa.arrow:before{content: '\f107';

    }

    .nav-second-level li a {padding-left: 37px;

    }

    .nav-third-levelli a {padding-left: 52px;

    }

    .sidebar-default{border-width: 0 0 1px;border-color: #e7e7e7;border-right: #e7e7e7 solid 1px;background: #f7f7f7;

    }

    .sidebar-default>ul >li.active{background: #f9f9f9;

    }

    .sidebar-default>ul >li.active>a {z-index: 2;background: #f9f9f9;

    }.sidebar-default>ul >li >a{

    color: #777;}

    .sidebar-default>ul >li >a:hover{

    color: #333;background: #f9f9f9;

    }

    .sidebar-default>ul >li.active>a:before{display: block;width: 5px;

    }

  • 8/10/2019 Lampiran Source Code App

    63/68

    63

    .sidebar-default>ul >li >a:before{position: absolute;top: 0;right: auto;

    bottom: 0;left: 0;width: 0;content: '';-webkit-transition: all .5s ease;transition: all .5s ease;background: #333;

    }

    .wrapper.with-sidebar.wrapper-sidebar{left: 0;

    }.wrapper.wrapper-sidebar{

    position: absolute;z-index: 1;top: 50px;bottom: 0;left: -250px;width: 250px;-webkit-transition: all .5s ease;transition: all .5s ease;

    }.wrapper.wrapper-body{

    position: absolute;top: 50px;right: 0;

    bottom: 0;left: 0;-webkit-transition: left .5s ease;transition: left .5s ease;background: #fdfdfd;

    }.wrapper.wrapper-body.wrapper-inner{

    position: absolute;top: 0;right: 0;bottom: 0;left: 0;overflow-y: auto;

    }.wrapper.wrapper-body.wrapper-inner.page-wrapper{position: relative;outline: 0;

    }.wrapper.wrapper-body.wrapper-inner.content,.wrapper.wrapper-body.wrapper-inner.content.body{

    max-width: 100%;}.wrapper.wrapper-body.wrapper-inner.content.body{

    padding-top: 20px;}

    .wrapper.wrapper-sidebarul.sidebar-menu{

    position: absolute;

  • 8/10/2019 Lampiran Source Code App

    64/68

    64

    top: 0;right: 0;bottom: 0;left: 0;overflow-y: auto;

    margin: 0;padding: 0;list-style: none;-webkit-transition: top .5s ease;transition: top .5s ease;

    }.wrapper.wrapper-sidebar.sidebar-search{

    position: absolute;top: -50px;-webkit-transition: top .5s ease;transition: top .5s ease;

    }.wrapper.with-search.wrapper-sidebar.sidebar-search{

    top: 0;}

    .wrapper.with-search.wrapper-sidebarul.sidebar-menu{top: 50px;

    }@media (min-width: 925px) {

    .wrapper.with-sidebar>.wrapper-body{left: 250px;

    }}@media (max-width: 1240px) {

    .wrapper.wrapper-body{overflow-y: auto;

    }}@media (max-width: 1240px) {

    .wrapper.wrapper-body.wrapper-inner{position: static;min-height: calc(100% - 57px);padding-bottom: 20px;

    }}/*** note:* untuk menyembunyikan sidebar, maka harus menghapus class "with-sidebar" di html.

    ***/

    50.styles/box.css

    *,*:before,*:after{-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;

    }

    .box{

  • 8/10/2019 Lampiran Source Code App

    65/68

    65

    position: relative;background: #ffffff;border-top: 2px solid #c1c1c1;margin-bottom: 20px;width: 100%;

    display: block;box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .26);

    }

    .box.box-header{position: relative;border-bottom: 0px solid #f4f4f4;color: #444;height: 42px;

    }

    .box.box-header:before,.box.box-header:after{display: table;

    content: " ";}

    .box.box-header>.fa,.box.box-header>.glyphicon{padding: 10px 10px 10px 10px;

    }

    .box.box-header.box-title{padding: 10px 10px 10px 0;

    }

    .box.box-header>.fa,.box.box-header>.glyphicon,.box.box-header.box-title{

    display: inline-block;margin: 0;font-size: 18px;font-weight: 400;float: left;cursor: default;

    }

    .box.box-primary.box-header>.icon-status,.box.box-primary.box-header.box-title{

    color: #3c8dbc;}

    .box

    .box-header

    .box-tools

    .dropdown

    {padding: 5px 10px 5px 5px;}

    .box.box-header.box-tools.dropdown{display: none;

    }

    .box.box-header.box-tools.dropdown.open,.box:hover.box-header

    .box-tools.dropdown{display: inline-block;

    }

    .box.box-body{padding: 10px;

  • 8/10/2019 Lampiran Source Code App

    66/68

    66

    }

    .box.box-footer{border-top: 1px solid #f4f4f4;padding: 10px;

    background-color: #ffffff;height: 40px;

    }

    .box.box-header.box-tools.btn-custom{color: #333;background-color: #fff;

    }

    .box.box-header.box-tools.dropdown.dropdown-menu{left: -136px;top: 75%;

    }

    .box.box-header.box-tools.dropdowna.dropdown-toggle{color: #c1c1c1;

    }

    .box.box-header.box-tools.dropdowna:hover.dropdown-toggle,.box

    .box-header.box-tools.dropdown.opena.dropdown-toggle{color: #adadad;

    }

    .box.box-primary{border-top-color: #3c8dbc;

    }

    .box.box-primary.box-header.box-tools.dropdowna.dropdown-toggle{

    color: rgba(60, 141, 188, 0.8);}

    .box.box-primary.box-header.box-tools.dropdowna:hover.dropdown-toggle,.box.box-primary.box-header.box-tools.dropdown.open

    a.dropdown-toggle{color: #3c8dbc;

    }

    .box-tools.dropdown.open

    .dropdown-menu

    >

    li:hover.delete

    >

    a{background: #d9534f;

    color: #fff;}

    51.styles/hack-boostrap.css

    .bs-page-header{padding: 7px 20px 4px 20px;border-bottom: 1px solid #e7e7e7;background: #f7f7f7;

    }

  • 8/10/2019 Lampiran Source Code App

    67/68

    67

    .row.newline{padding-bottom: 20px;

    }

    .blockquote-primary {

    border-left: 5px solid #428bca;}

    52.styles/tabs.css

    ng-tabs {display: block;

    }

    ng-tabs.normal{background: #fff;

    box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .26);margin-bottom: 20px;border-bottom-color: #f4f4f4;

    }

    ng-tabs.pull-body{background: #f7f7f7;

    }

    ng-tabs.normal>.nav-tabs{border-bottom-color: #f4f4f4;

    }

    ng-tabs.pull-body>.nav-tabs{border-bottom-color: #e7e7e7;

    }

    ng-tabs >.nav-tabs>li {margin-right: 5px;margin-bottom: -2px;-webkit-transition: border-top 1s;/* Safari 3.1 to 6.0 */transition: borde-top 1s;border-top: 3px solid transparent;

    }

    ng-tabs >.nav-tabs>li >a {-webkit-border-radius: 0 !important;-moz-border-radius: 0 !important;border-radius: 0 !important;

    }

    ng-tabs >.nav-tabs>li >a,ng-tabs >.nav-tabs>li >a:hover{margin: 0;background: transparent;

    }

    ng-tabs >.nav-tabs>li:not(.active)>a:hover,ng-tabs >.nav-tabs>

    li:not(.active)>a:focus,ng-tabs >.nav-tabs>li:not(.active)>

    a:active{border-color: transparent;

    }

    ng-tabs >.nav-tabs>li.active{border-top-color: #3c8dbc;

    }

    ng-tabs.pull-body>.nav-tabs>li.active{

  • 8/10/2019 Lampiran Source Code App

    68/68

    border-top-color: #333;}

    ng-tabs.pull-body>.nav-tabs>li >a {color: #777;

    }

    ng-tabs.pull-body>.nav-tabs>li >a:hover{color: #333;

    }

    ng-tabs.pull-body>.nav-tabs>li:active>a {color: #333;font-weight: 500;

    }

    ng-tabs >.nav-tabs>li.active>a,ng-tabs >.nav-tabs>li.active>

    a:hover{border-top: 0;border-right-color: #f4f4f4;border-left-color: #f4f4f4;

    }ng-tabs >.nav-tabs.pull-right{float: none!important;

    }

    ng-tabs >.nav-tabs.pull-right>li {float: right;

    }

    ng-tabs >.nav-tabs>li.header{font-size: 20px;font-weight: 400;line-height: 35px;padding: 0 10px;cursor: default;

    color: #444;}

    ng-tabs.pull-body>.nav-tabs>li.header{font-size: 18px;font-weight: 500;line-height: 35px;margin-top: 6px;margin-bottom: 6px;padding: 0 20px;/*cursor: default;color: #444;*/

    }

    ng-tabs >.tab-content>.tab-pane{

    padding: 10px;background: #fff;

    }

    ng-tabs.pull-body>.nav>li >a {padding: 14px 15px;

    }


Recommended