├── .babelrc
├── .eslintrc.json
├── .gitignore
├── README.md
├── data
└── images
│ ├── MasterCard.svg
│ ├── PayPal.svg
│ ├── Visa.svg
│ ├── ilyushin.jpg
│ ├── kasma_coral.jpg
│ ├── kasma_pytheas.jpg
│ ├── kasma_thalos.jpg
│ ├── morgan_yu.jpg
│ ├── sho.jpg
│ ├── transtar_coral.jpg
│ ├── transtar_pytheas.jpg
│ ├── transtar_thalos.jpg
│ ├── typhon_coral.jpg
│ ├── typhon_pytheas.jpg
│ ├── typhon_thalos.jpg
│ ├── whitten.jpg
│ ├── winslow.jpg
│ └── yu.jpg
├── index.html
├── package.json
├── sources
├── app.js
├── locales
│ └── en.js
├── models
│ ├── allfilms.js
│ ├── allpayments.js
│ ├── cities.js
│ ├── files.js
│ ├── hours.js
│ ├── kanban.js
│ ├── pivot.js
│ ├── positions.js
│ ├── progress.js
│ ├── progressch.js
│ ├── projects.js
│ ├── projectsd.js
│ ├── reviews.js
│ ├── sheet.js
│ ├── statistics.js
│ ├── stats.js
│ ├── tags.js
│ └── useractivity.js
├── styles
│ ├── app.css
│ └── webix-logo.svg
├── views
│ ├── charts
│ │ ├── compare.js
│ │ ├── geo.js
│ │ ├── index.js
│ │ ├── progress.js
│ │ ├── statistics.js
│ │ └── time.js
│ ├── dash
│ │ ├── currencies.js
│ │ ├── index.js
│ │ ├── progress.js
│ │ ├── projects.js
│ │ ├── reviews.js
│ │ └── stats.js
│ ├── files.js
│ ├── forms
│ │ ├── car.js
│ │ ├── checkboxes.js
│ │ ├── danger.js
│ │ ├── index.js
│ │ ├── person.js
│ │ ├── primary.js
│ │ └── secondary.js
│ ├── kanban.js
│ ├── main.js
│ ├── pivot.js
│ ├── sheet.js
│ └── tables
│ │ ├── features.js
│ │ ├── films.js
│ │ ├── index.js
│ │ ├── transactions.js
│ │ └── widgets.js
└── webix
│ └── photo.js
├── webpack.config.js
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "targets": {
5 | "browsers": ["last 2 versions", "IE >= 11"]
6 | },
7 | "modules":false,
8 | "loose":true
9 | }]
10 | ]
11 | }
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "browser": true,
4 | "es6": true
5 | },
6 | "globals":{
7 | "webix":true,
8 | "remote":true,
9 | "APPNAME":true, "VERSION":true, "PRODUCTION":true
10 | },
11 | "extends": "eslint:recommended",
12 | "parserOptions": {
13 | "sourceType": "module"
14 | },
15 | "rules": {
16 | "indent": [
17 | "error",
18 | "tab",
19 | {"SwitchCase":1}
20 | ],
21 | "quotes": [
22 | "error",
23 | "double"
24 | ],
25 | "semi": [
26 | "error",
27 | "always"
28 | ]
29 | }
30 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .idea
3 | node_modules
4 | *.log
5 | *.tar
6 |
7 | codebase/app.js
8 | codebase/app.css
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Example of Webix MVC Admin App
2 | ===============================
3 |
4 | Live demo
5 | ----------
6 |
7 | - Material skin - http://webix.com/demos/admin-app/
8 |
9 | Older versions
10 | ----------
11 | Demo in this repo uses latest Webix (6.0+) and Webix Jet 2.x, if you want to check older version, check
12 |
13 | - Flat skin, Jet 0.x - https://github.com/webix-hub/webix-adminapp-demo/tree/jet0
14 | - Material skin, Jet 0.x - https://github.com/webix-hub/webix-adminapp-demo/tree/material-jet0
15 | - Flat skin, Jet 1.x - https://github.com/webix-hub/webix-adminapp-demo/tree/jet1
16 | - Material skin, Jet 1.x - https://github.com/webix-hub/webix-adminapp-demo/tree/material-jet1
17 |
18 |
19 | Technical details
20 | ------------------
21 |
22 | ### Run
23 |
24 | - clone repo from git
25 | - run `npm install`
26 | - run `npm start`
27 | - open `http://localhost:8080` in a browser
28 |
29 | ### Deploy
30 |
31 | - run `npm run build`
32 | - copy "index.html", "data" and "codebase" folders to the server
33 |
34 | ### Other commands
35 |
36 | - `npm run lint` - will validate all js code in the project
37 |
38 |
39 | License
40 | ---------
41 |
42 | All code in this repo is available under the MIT License
43 |
44 |
--------------------------------------------------------------------------------
/data/images/MasterCard.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/data/images/PayPal.svg:
--------------------------------------------------------------------------------
1 |
31 |
--------------------------------------------------------------------------------
/data/images/Visa.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/data/images/ilyushin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/ilyushin.jpg
--------------------------------------------------------------------------------
/data/images/kasma_coral.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/kasma_coral.jpg
--------------------------------------------------------------------------------
/data/images/kasma_pytheas.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/kasma_pytheas.jpg
--------------------------------------------------------------------------------
/data/images/kasma_thalos.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/kasma_thalos.jpg
--------------------------------------------------------------------------------
/data/images/morgan_yu.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/morgan_yu.jpg
--------------------------------------------------------------------------------
/data/images/sho.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/sho.jpg
--------------------------------------------------------------------------------
/data/images/transtar_coral.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/transtar_coral.jpg
--------------------------------------------------------------------------------
/data/images/transtar_pytheas.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/transtar_pytheas.jpg
--------------------------------------------------------------------------------
/data/images/transtar_thalos.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/transtar_thalos.jpg
--------------------------------------------------------------------------------
/data/images/typhon_coral.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/typhon_coral.jpg
--------------------------------------------------------------------------------
/data/images/typhon_pytheas.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/typhon_pytheas.jpg
--------------------------------------------------------------------------------
/data/images/typhon_thalos.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/typhon_thalos.jpg
--------------------------------------------------------------------------------
/data/images/whitten.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/whitten.jpg
--------------------------------------------------------------------------------
/data/images/winslow.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/winslow.jpg
--------------------------------------------------------------------------------
/data/images/yu.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/data/images/yu.jpg
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "admin-app",
3 | "version": "1.0.0",
4 | "description": "Admin Demo",
5 | "main": "sources/app.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "lint": "eslint sources/",
9 | "build": "webpack --env.production true",
10 | "start": "webpack-dev-server",
11 | "deploy": "yarn build && rsync -ar index.html codebase webix.com:/root/composer/snippet.webix.com/admin/"
12 | },
13 | "keywords": [
14 | "webix",
15 | "jet"
16 | ],
17 | "license": "MIT",
18 | "devDependencies": {
19 | "babel-core": "^6.26.0",
20 | "babel-loader": "^7.1.2",
21 | "babel-preset-env": "^1.6.0",
22 | "css-loader": "^0.28.7",
23 | "eslint": "^4.7.2",
24 | "extract-text-webpack-plugin": "^3.0.0",
25 | "file-loader": "^0.11.2",
26 | "less": "^2.7.2",
27 | "less-loader": "^4.0.5",
28 | "url-loader": "^0.5.9",
29 | "webpack": "^3.6.0",
30 | "webpack-dev-server": "^2.8.2"
31 | },
32 | "dependencies": {
33 | "webix-jet": "^2.0.0"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/sources/app.js:
--------------------------------------------------------------------------------
1 | import "./styles/app.css";
2 | import {JetApp} from "webix-jet";
3 |
4 | export default class InventoryApp extends JetApp {
5 | constructor(config){
6 | super(webix.extend({
7 | id: APPNAME,
8 | version: VERSION,
9 | start: "/main/dash",
10 | debug: !PRODUCTION
11 | }, config, true));
12 |
13 | /* error tracking */
14 | this.attachEvent("app:error:resolve", function(name, error){
15 | window.console.error(error);
16 | });
17 | }
18 | }
--------------------------------------------------------------------------------
/sources/locales/en.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webix-hub/webix-adminapp-demo/986196cdfb2887f4908eccc8306b2e30ec71a87c/sources/locales/en.js
--------------------------------------------------------------------------------
/sources/models/allfilms.js:
--------------------------------------------------------------------------------
1 | const big_film_set = new webix.DataCollection({
2 | data: [{"id":1,"title":"The Shawshank Redemption","year":"1994","votes":"678.79","rating":"9.2","rank":"1"},{"id":2,"title":"The Godfather","year":"1972","votes":"511.495","rating":"9.2","rank":"2"},{"id":3,"title":"The Godfather: Part II","year":"1974","votes":"319.352","rating":"9","rank":"3"},{"id":4,"title":"The Good, the Bad and the Ugly","year":"1966","votes":"213.03","rating":"8.9","rank":"4"},{"id":5,"title":"Pulp Fiction","year":"1994","votes":"533.848","rating":"8.9","rank":"5"},{"id":6,"title":"12 Angry Men","year":"1957","votes":"164.558","rating":"8.9","rank":"6"},{"id":7,"title":"Schindler's List","year":"1993","votes":"355.638","rating":"8.9","rank":"7"},{"id":8,"title":"One Flew Over the Cuckoo's Nest","year":"1975","votes":"283.176","rating":"8.8","rank":"8"},{"id":9,"title":"The Dark Knight","year":"2008","votes":"612.37","rating":"8.8","rank":"9"},{"id":10,"title":"The Lord of the Rings: The Return of the Kin","year":"2003","votes":"472.843","rating":"8.8","rank":"10"},{"id":11,"title":"Star Wars: Episode V - The Empire Strikes Bac","year":"1980","votes":"348.012","rating":"8.8","rank":"11"},{"id":12,"title":"Inception","year":"2010","votes":"458.693","rating":"8.8","rank":"12"},{"id":13,"title":"Fight Club","year":"1999","votes":"507.723","rating":"8.8","rank":"13"},{"id":14,"title":"Seven Samurai","year":"1954","votes":"118.925","rating":"8.8","rank":"14"},{"id":15,"title":"Goodfellas","year":"1990","votes":"299.349","rating":"8.7","rank":"15"},{"id":16,"title":"The Lord of the Rings: The Fellowship of the Rin","year":"2001","votes":"494.003","rating":"8.7","rank":"16"},{"id":17,"title":"Star Wars","year":"1977","votes":"393.087","rating":"8.7","rank":"17"},{"id":18,"title":"City of God","year":"2002","votes":"222.818","rating":"8.7","rank":"18"},{"id":19,"title":"Casablanca","year":"1942","votes":"202.051","rating":"8.7","rank":"19"},{"id":20,"title":"Once Upon a Time in the West","year":"1968","votes":"97.931","rating":"8.7","rank":"20"},{"id":21,"title":"The Matrix","year":"1999","votes":"492.325","rating":"8.7","rank":"21"},{"id":22,"title":"Rear Window","year":"1954","votes":"148.162","rating":"8.7","rank":"22"},{"id":23,"title":"Raiders of the Lost Ark","year":"1981","votes":"300.252","rating":"8.7","rank":"23"},{"id":24,"title":"The Silence of the Lambs","year":"1991","votes":"324.419","rating":"8.7","rank":"24"},{"id":25,"title":"The Usual Suspects","year":"1995","votes":"331.99","rating":"8.7","rank":"25"},{"id":26,"title":"Psycho","year":"1960","votes":"182.319","rating":"8.6","rank":"26"},{"id":27,"title":"Se7en","year":"1995","votes":"380.479","rating":"8.6","rank":"27"},{"id":28,"title":"Forrest Gump","year":"1994","votes":"416.066","rating":"8.6","rank":"28"},{"id":29,"title":"The Lord of the Rings: The Two Towers","year":"2002","votes":"423.855","rating":"8.6","rank":"29"}],
3 | scheme:{
4 | $init: obj => {
5 | let pop = [];
6 | for (let i = 0; i < 13; i++){
7 | pop.push(Math.floor(Math.random()*80 + 30));
8 | }
9 | obj.popularity = pop;
10 | }
11 | }
12 | });
13 |
14 | export function getFilms(){
15 | return big_film_set;
16 | }
--------------------------------------------------------------------------------
/sources/models/allpayments.js:
--------------------------------------------------------------------------------
1 | export const allpayments = new webix.DataCollection({
2 | data:[
3 | {"id":1,"status":"success","date":"2018-09-24 04:36","method":"PayPal","number":"do***@yahoo.com","type":0,"sum":"105.15","left":"847.71","name":"The Smoking Jug","city":"Tirane","country":"AL"},
4 | {"id":2,"status":"success","date":"2018-09-23 19:09","method":"MasterCard","number":"5128...8960","type":1,"sum":"327.50","left":"2371.18","name":"The Invincible Disguise","city":"Buenos Aires","country":"AR"},
5 | {"id":3,"status":"success","date":"2018-09-22 05:42","method":"Visa","number":"4781...9299","type":1,"sum":"172.66","left":"2456.07","name":"The Burning Dwarf","city":"Canberra","country":"AU"},
6 | {"id":4,"status":"failed","date":"2018-09-21 05:29","method":"Visa","number":"4802...9797","type":1,"sum":"253.24","left":"3202.83","name":"The Waving Pot","city":"Vienna","country":"AT"},
7 | {"id":5,"status":"success","date":"2018-09-20 21:20","method":"MasterCard","number":"5170...3971","type":0,"sum":"328.90","left":"471.64","name":"The Dry Carriage Outfitter","city":"Minsk","country":"BY"},
8 | {"id":6,"status":"success","date":"2018-09-19 22:29","method":"MasterCard","number":"5177...4636","type":1,"sum":"334.20","left":"1839.00","name":"The Hungry Weapon Potions","city":"Brussels","country":"BE"},
9 | {"id":7,"status":"success","date":"2018-09-18 03:14","method":"MasterCard","number":"5131...0432","type":1,"sum":"200.37","left":"749.46","name":"The Growing Feather Butcher Shop","city":"Brasilia","country":"BR"},
10 | {"id":8,"status":"success","date":"2018-09-17 12:29","method":"Visa","number":"4141...9887","type":0,"sum":"23.09","left":"2468.39","name":"The Cuddly Dress Pharmacy","city":"Ottawa","country":"CA"},
11 | {"id":9,"status":"success","date":"2018-09-16 08:45","method":"PayPal","number":"jet***@aol.com","type":1,"sum":"31.59","left":"3130.40","name":"Fit Sew Good","city":"Beijing","country":"CN"},
12 | {"id":10,"status":"success","date":"2018-09-15 10:01","method":"Visa","number":"4930...2453","type":0,"sum":"134.63","left":"2671.30","name":"Grate Expectations","city":"Prague","country":"CZ"},
13 | {"id":11,"status":"success","date":"2018-09-14 21:24","method":"MasterCard","number":"5119...3751","type":1,"sum":"108.69","left":"2369.38","name":"The Educated Armor","city":"Copenhagen","country":"DK"},
14 | {"id":12,"status":"success","date":"2018-09-13 07:12","method":"MasterCard","number":"5150...1835","type":1,"sum":"16.49","left":"1137.82","name":"The Acclaimed Plum","city":"Cairo","country":"EG"},
15 | {"id":13,"status":"success","date":"2018-09-12 17:39","method":"MasterCard","number":"5184...5903","type":1,"sum":"143.66","left":"2640.23","name":"The Hairy Hazelnut","city":"Helsinki","country":"FI"},
16 | {"id":14,"status":"success","date":"2018-09-11 11:28","method":"Visa","number":"4773...5816","type":1,"sum":"11.59","left":"704.37","name":"The Fading Tankard","city":"Paris","country":"FR"},
17 | {"id":15,"status":"success","date":"2018-09-10 15:31","method":"PayPal","number":"neo***@optonline.net","type":0,"sum":"69.56","left":"2120.64","name":"The Fluffy Anvil Optician","city":"Tbilisi","country":"GE"},
18 | {"id":16,"status":"failed","date":"2018-09-9 14:00","method":"PayPal","number":"dal***@att.net","type":1,"sum":"246.03","left":"772.80","name":"The Nutty Potato Takeaway","city":"Berlin","country":"DE"},
19 | {"id":17,"status":"waiting","date":"2018-09-8 12:41","method":"Visa","number":"4435...0652","type":1,"sum":"62.13","left":"682.68","name":"The Fantastic Spaceship Antique Store","city":"New Delhi","country":"IN"},
20 | {"id":18,"status":"success","date":"2018-09-7 06:37","method":"MasterCard","number":"5130...1376","type":1,"sum":"43.69","left":"633.88","name":"The Careful Painting Deli","city":"Dublin","country":"IE"},
21 | {"id":19,"status":"success","date":"2018-09-6 08:44","method":"MasterCard","number":"5114...6585","type":1,"sum":"10.19","left":"1878.33","name":"Sew and Tell","city":"Rome","country":"IT"}
22 | ],
23 | scheme:{
24 | $init:function(obj){
25 | obj.date = webix.i18n.parseFormatDate(obj.date);
26 | const curr_month = new Date().getMonth();
27 | const data_month = obj.date.getMonth();
28 | if (curr_month - data_month != 0){
29 | if (obj.id < 25)
30 | obj.date.setMonth(curr_month);
31 | else if (obj.id >= 25)
32 | obj.date.setMonth(curr_month-1);
33 | }
34 | const curr_year = new Date().getFullYear();
35 | const data_year = obj.date.getFullYear();
36 | if (curr_year - data_year > 0){
37 | obj.date.setYear(curr_year);
38 | }
39 | }
40 | }
41 | });
42 |
--------------------------------------------------------------------------------
/sources/models/cities.js:
--------------------------------------------------------------------------------
1 | export function getCities(){
2 | return cities;
3 | }
4 |
5 | const cities = [
6 | { id:"$empty", value:"-- Not selected --", $empty:true },
7 | { id:"1", value:"Tirane, Albania" },
8 | { id:"2", value:"Buenos Aires, Argentina" },
9 | { id:"3", value:"Canberra, Australia" },
10 | { id:"4", value:"Vienna, Austria" },
11 | { id:"5", value:"Minsk, Belarus" },
12 | { id:"6", value:"Brussels, Belgium" },
13 | { id:"7", value:"Brasilia, Brazil" },
14 | { id:"8", value:"Ottawa, Canada" },
15 | { id:"9", value:"Beijing, China" },
16 | { id:"10", value:"Prague, Czech Republic" },
17 | { id:"11", value:"Copenhagen, Denmark" },
18 | { id:"12", value:"Cairo, Egypt" },
19 | { id:"13", value:"Helsinki, Finland" },
20 | { id:"14", value:"Paris, France" },
21 | { id:"15", value:"Tbilisi, Georgia" },
22 | { id:"16", value:"Berlin, Germany" },
23 | { id:"17", value:"New Delhi, India" },
24 | { id:"18", value:"Dublin, Ireland" },
25 | { id:"19", value:"Rome, Italy" },
26 | { id:"20", value:"Tokyo, Japan" },
27 | { id:"21", value:"Wellington, New Zealand" },
28 | { id:"22", value:"Seoul, Republic of Korea" },
29 | { id:"23", value:"Madrid, Spain" },
30 | { id:"24", value:"Stockholm, Sweden" },
31 | { id:"25", value:"Washington, United States" }
32 | ];
33 |
--------------------------------------------------------------------------------
/sources/models/files.js:
--------------------------------------------------------------------------------
1 | export const data = [{"value":"Files","id":"/","data":[{"value":"Configs","id":"/Configs","size":4096,"date":1550766120,"type":"folder","data":[{"value":"drone.yml","id":"/Configs/drone.yml","size":50,"date":1550766044,"type":"file"}]},{"value":"Data","id":"/Data","size":4096,"date":1550766120,"type":"folder","data":[{"value":"sub1","id":"/Data/sub1","size":4096,"date":1550766120,"type":"folder","data":[{"value":"set1.txt","id":"/Data/sub1/set1.txt","size":15,"date":1550766044,"type":"text"},{"value":"set2.txt","id":"/Data/sub1/set2.txt","size":15,"date":1550766044,"type":"text"}]},{"value":"sub2","id":"/Data/sub2","size":4096,"date":1550766120,"type":"folder","data":[{"value":"set1.txt","id":"/Data/sub2/set1.txt","size":15,"date":1550766044,"type":"text"},{"value":"set2.txt","id":"/Data/sub2/set2.txt","size":15,"date":1550766044,"type":"text"},{"value":"set3.txt","id":"/Data/sub2/set3.txt","size":15,"date":1550766044,"type":"text"}]}]},{"value":"logo.jpg","id":"/logo.jpg","size":18834,"date":1550766044,"type":"image"}],"type":"folder","open":true}];
--------------------------------------------------------------------------------
/sources/models/hours.js:
--------------------------------------------------------------------------------
1 | const data = [
2 | {"id":1,"activity":"Tasks","hours":48,"color":"#8664C6"},
3 | {"id":2,"activity":"Meeting","hours":24,"color":"#1CA1C1"},
4 | {"id":4,"activity":"Calls","hours":19,"color":"#FDBF4C"},
5 | {"id":3,"activity":"Mail","hours":12,"color":"#F8643F"}
6 | ];
7 |
8 | export function getHours(){
9 | return data;
10 | }
--------------------------------------------------------------------------------
/sources/models/kanban.js:
--------------------------------------------------------------------------------
1 | export const data = [
2 | {
3 | id:1, status:"new", text:"Test new authentification service", tags:[1,2,3],
4 | comments:[
5 | {id:1, user_id:1, date:"2018-06-10 18:45", text:"Greetings, fellow colleagues. I would like to share my insights on this task. I reckon we should deal with at least half of the points in the plan without further delays. I suggest proceeding from one point to the next and notifying the rest of us with at least short notices. This way is best to keep track of who is doing what."},
6 | {id:2, user_id:2, date:"2018-06-12 19:40", text:"Hi, Rick. I am sure that that's exactly what is thought best out there in Dunwall. Let's just do what we are supposed to do to get the result."},
7 | {id:3, user_id:3, date:"2018-06-12 20:16", text:"Whoa, Martin. Rick is right, though I must admit, he is often way too serious and lacks a good healthy sense of humour.
I'd also like to add that half of the points in the plan (btw who wrote it? I would like a long thoughtful conversation in person with the guy / lady in question. Maybe over a chessboard as well) Well, most of the points can be omitted if we rationally split the subtasks between all the parties and optimize the whole line of work."}
8 | ]
9 | },
10 | {
11 | id:2, status:"work", user_id: 5, text:"Performance tests", tags:[1],
12 | comments:[
13 | {id:6, user_id:7, date:"2018-06-14 22:31", text:"One more question, guys. What about the latest specifications?"},
14 | {id:7, user_id:9, date:"2018-06-14 22:43", text:"They are ready, but not published yet."},
15 | {id:8, user_id:7, date:"2018-06-14 23:01", text:"Wow great, could you please share them with me?"}
16 | ]
17 | },
18 | {
19 | id:3, status:"work", user_id: 6, text:"Kanban tutorial", tags:[2]
20 | },
21 | {
22 | id:4, status:"work", user_id: 3, text:"SpreadSheet NodeJS", tags:[3]
23 | },
24 | {
25 | id:5, status:"test", user_id: 4, text:"Portlets view", tags:[4,2],
26 | comments:[
27 | {id:6, user_id:4, date:"2018-06-14 23:01", text:"No worry, I am planning to finish it up in half an hour and make them public for all. Just wait..)"}
28 | ]
29 | },
30 | { id:6, status:"new", user_id: 7, text:"Form Builder", tags:[4,6] },
31 | { id:7, status:"test", text:"Code Snippet", tags:[1,2,3] },
32 | { id:8, status:"work", user_id: 1, text:"Backend integration", tags:[5] },
33 | { id:9, status:"work", user_id: 2, text:"Drag-n-drop with shifting cards", tags:[5] },
34 | { id:10, status:"work", user_id: 4, text:"Webix Jet 2.0", tags:[4] },
35 | { id:11, status:"test", user_id: 9, text:"Chat app interface", tags:[4,2] },
36 | { id:12, status:"done", user_id: 8, text:"Material skin", tags:[4,6] }
37 | ];
--------------------------------------------------------------------------------
/sources/models/pivot.js:
--------------------------------------------------------------------------------
1 | export const data = [
2 | {
3 | "name": "Argentina",
4 | "year": 2005,
5 | "continent": "South America",
6 | "form": "Republic",
7 | "gdp": 181.357,
8 | "oil": 1.545,
9 | "balance": 4.699
10 | },
11 | {
12 | "name": "Argentina",
13 | "year": 2006,
14 | "continent": "South America",
15 | "form": "Republic",
16 | "gdp": 212.507,
17 | "oil": 1.732,
18 | "balance": 7.167
19 | },
20 | {
21 | "name": "Argentina",
22 | "year": 2007,
23 | "continent": "South America",
24 | "form": "Republic",
25 | "gdp": 260.071,
26 | "oil": 2.845,
27 | "balance": 6.728
28 | },
29 | {
30 | "name": "Argentina",
31 | "year": 2008,
32 | "continent": "South America",
33 | "form": "Republic",
34 | "gdp": 324.405,
35 | "oil": 4.333,
36 | "balance": 5.99
37 | },
38 | {
39 | "name": "Argentina",
40 | "year": 2009,
41 | "continent": "South America",
42 | "form": "Republic",
43 | "gdp": 305.763,
44 | "oil": 2.626,
45 | "balance": 7.544
46 | },
47 | {
48 | "name": "Argentina",
49 | "year": 2010,
50 | "continent": "South America",
51 | "form": "Republic",
52 | "gdp": 367.565,
53 | "oil": 4.474,
54 | "balance": 2.418
55 | },
56 | {
57 | "name": "Argentina",
58 | "year": 2011,
59 | "continent": "South America",
60 | "form": "Republic",
61 | "gdp": 444.612,
62 | "oil": 9.414,
63 | "balance": -0.299
64 | },
65 | {
66 | "name": "Argentina",
67 | "year": 2012,
68 | "continent": "South America",
69 | "form": "Republic",
70 | "gdp": 474.812,
71 | "oil": 10.496,
72 | "balance": 1.264
73 | },
74 | {
75 | "name": "Argentina",
76 | "year": 2013,
77 | "continent": "South America",
78 | "form": "Republic",
79 | "gdp": 495.067,
80 | "oil": 10.851,
81 | "balance": -0.361
82 | },
83 | {
84 | "name": "Australia",
85 | "year": 2005,
86 | "continent": "Australia",
87 | "form": "Constitutional monarchy",
88 | "gdp": 732.091,
89 | "oil": 8.014,
90 | "balance": -41.878
91 | },
92 | {
93 | "name": "Australia",
94 | "year": 2006,
95 | "continent": "Australia",
96 | "form": "Constitutional monarchy",
97 | "gdp": 777.901,
98 | "oil": 9.997,
99 | "balance": -41.461
100 | },
101 | {
102 | "name": "Australia",
103 | "year": 2007,
104 | "continent": "Australia",
105 | "form": "Constitutional monarchy",
106 | "gdp": 945.694,
107 | "oil": 12.322,
108 | "balance": -58.543
109 | },
110 | {
111 | "name": "Australia",
112 | "year": 2008,
113 | "continent": "Australia",
114 | "form": "Constitutional monarchy",
115 | "gdp": 1053.862,
116 | "oil": 15.278,
117 | "balance": -46.325
118 | },
119 | {
120 | "name": "Australia",
121 | "year": 2009,
122 | "continent": "Australia",
123 | "form": "Constitutional monarchy",
124 | "gdp": 992.244,
125 | "oil": 9.748,
126 | "balance": -41.432
127 | },
128 | {
129 | "name": "Australia",
130 | "year": 2010,
131 | "continent": "Australia",
132 | "form": "Constitutional monarchy",
133 | "gdp": 1244.406,
134 | "oil": 14.91,
135 | "balance": -35.711
136 | },
137 | {
138 | "name": "Australia",
139 | "year": 2011,
140 | "continent": "Australia",
141 | "form": "Constitutional monarchy",
142 | "gdp": 1486.914,
143 | "oil": 21.497,
144 | "balance": -33.522
145 | },
146 | {
147 | "name": "Australia",
148 | "year": 2012,
149 | "continent": "Australia",
150 | "form": "Constitutional monarchy",
151 | "gdp": 1542.055,
152 | "oil": 22.596,
153 | "balance": -62.969
154 | },
155 | {
156 | "name": "Australia",
157 | "year": 2013,
158 | "continent": "Australia",
159 | "form": "Constitutional monarchy",
160 | "gdp": 1598.069,
161 | "oil": 23.65,
162 | "balance": -87.944
163 | },
164 | {
165 | "name": "Austria",
166 | "year": 2005,
167 | "continent": "Europe",
168 | "form": "Republic",
169 | "gdp": 305.513,
170 | "oil": 7.6,
171 | "balance": 6.615
172 | },
173 | {
174 | "name": "Austria",
175 | "year": 2006,
176 | "continent": "Europe",
177 | "form": "Republic",
178 | "gdp": 325.256,
179 | "oil": 9.344,
180 | "balance": 9.112
181 | },
182 | {
183 | "name": "Austria",
184 | "year": 2007,
185 | "continent": "Europe",
186 | "form": "Republic",
187 | "gdp": 375.581,
188 | "oil": 9.864,
189 | "balance": 13.184
190 | },
191 | {
192 | "name": "Austria",
193 | "year": 2008,
194 | "continent": "Europe",
195 | "form": "Republic",
196 | "gdp": 416.119,
197 | "oil": 13.372,
198 | "balance": 20.246
199 | },
200 | {
201 | "name": "Austria",
202 | "year": 2009,
203 | "continent": "Europe",
204 | "form": "Republic",
205 | "gdp": 384.622,
206 | "oil": 8.475,
207 | "balance": 10.428
208 | },
209 | {
210 | "name": "Austria",
211 | "year": 2010,
212 | "continent": "Europe",
213 | "form": "Republic",
214 | "gdp": 380.018,
215 | "oil": 10.224,
216 | "balance": 11.435
217 | },
218 | {
219 | "name": "Austria",
220 | "year": 2011,
221 | "continent": "Europe",
222 | "form": "Republic",
223 | "gdp": 418.414,
224 | "oil": 16.376,
225 | "balance": 8.147
226 | },
227 | {
228 | "name": "Austria",
229 | "year": 2012,
230 | "continent": "Europe",
231 | "form": "Republic",
232 | "gdp": 391.469,
233 | "oil": 16.872,
234 | "balance": 7.315
235 | },
236 | {
237 | "name": "Austria",
238 | "year": 2013,
239 | "continent": "Europe",
240 | "form": "Republic",
241 | "gdp": 393.753,
242 | "oil": 16.877,
243 | "balance": 6.413
244 | },
245 | {
246 | "name": "Belarus",
247 | "year": 2005,
248 | "continent": "Europe",
249 | "form": "Republic",
250 | "gdp": 30.21,
251 | "oil": 4.375,
252 | "balance": 0.435
253 | },
254 | {
255 | "name": "Belarus",
256 | "year": 2006,
257 | "continent": "Europe",
258 | "form": "Republic",
259 | "gdp": 36.962,
260 | "oil": 6.093,
261 | "balance": -1.448
262 | },
263 | {
264 | "name": "Belarus",
265 | "year": 2007,
266 | "continent": "Europe",
267 | "form": "Republic",
268 | "gdp": 45.276,
269 | "oil": 7.721,
270 | "balance": -3.04
271 | },
272 | {
273 | "name": "Belarus",
274 | "year": 2008,
275 | "continent": "Europe",
276 | "form": "Republic",
277 | "gdp": 60.752,
278 | "oil": 11.019,
279 | "balance": -4.988
280 | },
281 | {
282 | "name": "Belarus",
283 | "year": 2009,
284 | "continent": "Europe",
285 | "form": "Republic",
286 | "gdp": 49.209,
287 | "oil": 8.386,
288 | "balance": -6.178
289 | },
290 | {
291 | "name": "Belarus",
292 | "year": 2010,
293 | "continent": "Europe",
294 | "form": "Republic",
295 | "gdp": 55.221,
296 | "oil": 7.686,
297 | "balance": -8.278
298 | },
299 | {
300 | "name": "Belarus",
301 | "year": 2011,
302 | "continent": "Europe",
303 | "form": "Republic",
304 | "gdp": 55.136,
305 | "oil": 12.875,
306 | "balance": -5.775
307 | },
308 | {
309 | "name": "Belarus",
310 | "year": 2012,
311 | "continent": "Europe",
312 | "form": "Republic",
313 | "gdp": 58.215,
314 | "oil": 12.409,
315 | "balance": -2.076
316 | },
317 | {
318 | "name": "Belarus",
319 | "year": 2013,
320 | "continent": "Europe",
321 | "form": "Republic",
322 | "gdp": 58.933,
323 | "oil": 11.434,
324 | "balance": -3.419
325 | },
326 | {
327 | "name": "Belgium",
328 | "year": 2005,
329 | "continent": "Europe",
330 | "form": "Constitutional monarchy",
331 | "gdp": 378.006,
332 | "oil": 24.956,
333 | "balance": 7.465
334 | },
335 | {
336 | "name": "Belgium",
337 | "year": 2006,
338 | "continent": "Europe",
339 | "form": "Constitutional monarchy",
340 | "gdp": 400.338,
341 | "oil": 30.561,
342 | "balance": 7.447
343 | },
344 | {
345 | "name": "Belgium",
346 | "year": 2007,
347 | "continent": "Europe",
348 | "form": "Constitutional monarchy",
349 | "gdp": 460.279,
350 | "oil": 34.263,
351 | "balance": 7.438
352 | },
353 | {
354 | "name": "Belgium",
355 | "year": 2008,
356 | "continent": "Europe",
357 | "form": "Constitutional monarchy",
358 | "gdp": 509.764,
359 | "oil": 49.07,
360 | "balance": -8.368
361 | },
362 | {
363 | "name": "Belgium",
364 | "year": 2009,
365 | "continent": "Europe",
366 | "form": "Constitutional monarchy",
367 | "gdp": 474.633,
368 | "oil": 30.195,
369 | "balance": -7.4
370 | },
371 | {
372 | "name": "Belgium",
373 | "year": 2010,
374 | "continent": "Europe",
375 | "form": "Constitutional monarchy",
376 | "gdp": 472.54,
377 | "oil": 38.998,
378 | "balance": 6.641
379 | },
380 | {
381 | "name": "Belgium",
382 | "year": 2011,
383 | "continent": "Europe",
384 | "form": "Constitutional monarchy",
385 | "gdp": 514.593,
386 | "oil": 56.54,
387 | "balance": -5.119
388 | },
389 | {
390 | "name": "Belgium",
391 | "year": 2012,
392 | "continent": "Europe",
393 | "form": "Constitutional monarchy",
394 | "gdp": 476.796,
395 | "oil": 51.684,
396 | "balance": -0.623
397 | },
398 | {
399 | "name": "Belgium",
400 | "year": 2013,
401 | "continent": "Europe",
402 | "form": "Constitutional monarchy",
403 | "gdp": 475.746,
404 | "oil": 51.143,
405 | "balance": 1.643
406 | },
407 | {
408 | "name": "Brazil",
409 | "year": 2005,
410 | "continent": "South America",
411 | "form": "Republic",
412 | "gdp": 881.754,
413 | "oil": 11.779,
414 | "balance": 13.984
415 | },
416 | {
417 | "name": "Brazil",
418 | "year": 2006,
419 | "continent": "South America",
420 | "form": "Republic",
421 | "gdp": 1089.157,
422 | "oil": 15.365,
423 | "balance": 13.642
424 | },
425 | {
426 | "name": "Brazil",
427 | "year": 2007,
428 | "continent": "South America",
429 | "form": "Republic",
430 | "gdp": 1366.22,
431 | "oil": 20.408,
432 | "balance": 1.551
433 | },
434 | {
435 | "name": "Brazil",
436 | "year": 2008,
437 | "continent": "South America",
438 | "form": "Republic",
439 | "gdp": 1650.392,
440 | "oil": 30.505,
441 | "balance": -28.192
442 | },
443 | {
444 | "name": "Brazil",
445 | "year": 2009,
446 | "continent": "South America",
447 | "form": "Republic",
448 | "gdp": 1622.311,
449 | "oil": 16.475,
450 | "balance": -24.302
451 | },
452 | {
453 | "name": "Brazil",
454 | "year": 2010,
455 | "continent": "South America",
456 | "form": "Republic",
457 | "gdp": 2142.926,
458 | "oil": 26.089,
459 | "balance": -47.273
460 | },
461 | {
462 | "name": "Brazil",
463 | "year": 2011,
464 | "continent": "South America",
465 | "form": "Republic",
466 | "gdp": 2492.907,
467 | "oil": 37.498,
468 | "balance": -52.48
469 | },
470 | {
471 | "name": "Brazil",
472 | "year": 2012,
473 | "continent": "South America",
474 | "form": "Republic",
475 | "gdp": 2425.052,
476 | "oil": 37.763,
477 | "balance": -62.341
478 | },
479 | {
480 | "name": "Brazil",
481 | "year": 2013,
482 | "continent": "South America",
483 | "form": "Republic",
484 | "gdp": 2503.869,
485 | "oil": 39.648,
486 | "balance": -70.068
487 | },
488 | {
489 | "name": "Canada",
490 | "year": 2005,
491 | "continent": "North America",
492 | "form": "Constitutional monarchy",
493 | "gdp": 1133.757,
494 | "oil": 27.777,
495 | "balance": 21.376
496 | },
497 | {
498 | "name": "Canada",
499 | "year": 2006,
500 | "continent": "North America",
501 | "form": "Constitutional monarchy",
502 | "gdp": 1278.607,
503 | "oil": 30.626,
504 | "balance": 18.064
505 | },
506 | {
507 | "name": "Canada",
508 | "year": 2007,
509 | "continent": "North America",
510 | "form": "Constitutional monarchy",
511 | "gdp": 1424.067,
512 | "oil": 34.726,
513 | "balance": 11.89
514 | },
515 | {
516 | "name": "Canada",
517 | "year": 2008,
518 | "continent": "North America",
519 | "form": "Constitutional monarchy",
520 | "gdp": 1502.678,
521 | "oil": 49.833,
522 | "balance": 4.945
523 | },
524 | {
525 | "name": "Canada",
526 | "year": 2009,
527 | "continent": "North America",
528 | "form": "Constitutional monarchy",
529 | "gdp": 1337.577,
530 | "oil": 29.701,
531 | "balance": -39.573
532 | },
533 | {
534 | "name": "Canada",
535 | "year": 2010,
536 | "continent": "North America",
537 | "form": "Constitutional monarchy",
538 | "gdp": 1577.04,
539 | "oil": 39.361,
540 | "balance": -49.375
541 | },
542 | {
543 | "name": "Canada",
544 | "year": 2011,
545 | "continent": "North America",
546 | "form": "Constitutional monarchy",
547 | "gdp": 1738.954,
548 | "oil": 52.574,
549 | "balance": -48.906
550 | },
551 | {
552 | "name": "Canada",
553 | "year": 2012,
554 | "continent": "North America",
555 | "form": "Constitutional monarchy",
556 | "gdp": 1770.084,
557 | "oil": 51.378,
558 | "balance": -59.921
559 | },
560 | {
561 | "name": "Canada",
562 | "year": 2013,
563 | "continent": "North America",
564 | "form": "Constitutional monarchy",
565 | "gdp": 1839.141,
566 | "oil": 50.408,
567 | "balance": -68.182
568 | },
569 | {
570 | "name": "Central African Republic",
571 | "year": 2005,
572 | "continent": "Africa",
573 | "form": "Republic",
574 | "gdp": 1.35,
575 | "oil": 0.034,
576 | "balance": -0.088
577 | },
578 | {
579 | "name": "Central African Republic",
580 | "year": 2006,
581 | "continent": "Africa",
582 | "form": "Republic",
583 | "gdp": 1.473,
584 | "oil": 0.05,
585 | "balance": -0.044
586 | },
587 | {
588 | "name": "Central African Republic",
589 | "year": 2007,
590 | "continent": "Africa",
591 | "form": "Republic",
592 | "gdp": 1.697,
593 | "oil": 0.068,
594 | "balance": -0.106
595 | },
596 | {
597 | "name": "Central African Republic",
598 | "year": 2008,
599 | "continent": "Africa",
600 | "form": "Republic",
601 | "gdp": 1.983,
602 | "oil": 0.092,
603 | "balance": -0.198
604 | },
605 | {
606 | "name": "Central African Republic",
607 | "year": 2009,
608 | "continent": "Africa",
609 | "form": "Republic",
610 | "gdp": 1.982,
611 | "oil": 0.065,
612 | "balance": -0.182
613 | },
614 | {
615 | "name": "Central African Republic",
616 | "year": 2010,
617 | "continent": "Africa",
618 | "form": "Republic",
619 | "gdp": 1.986,
620 | "oil": 0.082,
621 | "balance": -0.202
622 | },
623 | {
624 | "name": "Central African Republic",
625 | "year": 2011,
626 | "continent": "Africa",
627 | "form": "Republic",
628 | "gdp": 2.195,
629 | "oil": 0.1,
630 | "balance": -0.191
631 | },
632 | {
633 | "name": "Central African Republic",
634 | "year": 2012,
635 | "continent": "Africa",
636 | "form": "Republic",
637 | "gdp": 2.168,
638 | "oil": 0.111,
639 | "balance": -0.165
640 | },
641 | {
642 | "name": "Central African Republic",
643 | "year": 2013,
644 | "continent": "Africa",
645 | "form": "Republic",
646 | "gdp": 2.249,
647 | "oil": 0.113,
648 | "balance": -0.141
649 | },
650 | {
651 | "name": "Chad",
652 | "year": 2005,
653 | "continent": "Africa",
654 | "form": "Republic",
655 | "gdp": 5.884,
656 | "oil": 0.253,
657 | "balance": 0.069
658 | },
659 | {
660 | "name": "Chad",
661 | "year": 2006,
662 | "continent": "Africa",
663 | "form": "Republic",
664 | "gdp": 6.306,
665 | "oil": 0.594,
666 | "balance": 0.375
667 | },
668 | {
669 | "name": "Chad",
670 | "year": 2007,
671 | "continent": "Africa",
672 | "form": "Republic",
673 | "gdp": 7.018,
674 | "oil": 0.298,
675 | "balance": 0.813
676 | },
677 | {
678 | "name": "Chad",
679 | "year": 2008,
680 | "continent": "Africa",
681 | "form": "Republic",
682 | "gdp": 8.394,
683 | "oil": 0.507,
684 | "balance": 0.754
685 | },
686 | {
687 | "name": "Chad",
688 | "year": 2009,
689 | "continent": "Africa",
690 | "form": "Republic",
691 | "gdp": 7.1,
692 | "oil": 0.535,
693 | "balance": -0.286
694 | },
695 | {
696 | "name": "Chad",
697 | "year": 2010,
698 | "continent": "Africa",
699 | "form": "Republic",
700 | "gdp": 8.556,
701 | "oil": 0.835,
702 | "balance": -0.3
703 | },
704 | {
705 | "name": "Chad",
706 | "year": 2011,
707 | "continent": "Africa",
708 | "form": "Republic",
709 | "gdp": 9.345,
710 | "oil": 1.057,
711 | "balance": 0.191
712 | },
713 | {
714 | "name": "Chad",
715 | "year": 2012,
716 | "continent": "Africa",
717 | "form": "Republic",
718 | "gdp": 9.723,
719 | "oil": 0.847,
720 | "balance": -0.181
721 | },
722 | {
723 | "name": "Chad",
724 | "year": 2013,
725 | "continent": "Africa",
726 | "form": "Republic",
727 | "gdp": 9.603,
728 | "oil": 0.811,
729 | "balance": -0.193
730 | },
731 | {
732 | "name": "China",
733 | "year": 2005,
734 | "continent": "Asia",
735 | "form": "Republic",
736 | "gdp": 2256.919,
737 | "oil": 59.615,
738 | "balance": 134.098
739 | },
740 | {
741 | "name": "China",
742 | "year": 2006,
743 | "continent": "Asia",
744 | "form": "Republic",
745 | "gdp": 2712.917,
746 | "oil": 84.061,
747 | "balance": 232.712
748 | },
749 | {
750 | "name": "China",
751 | "year": 2007,
752 | "continent": "Asia",
753 | "form": "Republic",
754 | "gdp": 3494.235,
755 | "oil": 98.845,
756 | "balance": 353.876
757 | },
758 | {
759 | "name": "China",
760 | "year": 2008,
761 | "continent": "Asia",
762 | "form": "Republic",
763 | "gdp": 4519.951,
764 | "oil": 161.77,
765 | "balance": 412.37
766 | },
767 | {
768 | "name": "China",
769 | "year": 2009,
770 | "continent": "Asia",
771 | "form": "Republic",
772 | "gdp": 4990.526,
773 | "oil": 108.553,
774 | "balance": 261.012
775 | },
776 | {
777 | "name": "China",
778 | "year": 2010,
779 | "continent": "Asia",
780 | "form": "Republic",
781 | "gdp": 5930.393,
782 | "oil": 163.558,
783 | "balance": 237.623
784 | },
785 | {
786 | "name": "China",
787 | "year": 2011,
788 | "continent": "Asia",
789 | "form": "Republic",
790 | "gdp": 7298.147,
791 | "oil": 235.753,
792 | "balance": 201.72
793 | },
794 | {
795 | "name": "China",
796 | "year": 2012,
797 | "continent": "Asia",
798 | "form": "Republic",
799 | "gdp": 8250.241,
800 | "oil": 238.267,
801 | "balance": 190.681
802 | },
803 | {
804 | "name": "China",
805 | "year": 2013,
806 | "continent": "Asia",
807 | "form": "Republic",
808 | "gdp": 9038.658,
809 | "oil": 231.625,
810 | "balance": 222.685
811 | },
812 | {
813 | "name": "Colombia",
814 | "year": 2005,
815 | "continent": "South America",
816 | "form": "Republic",
817 | "gdp": 146.585,
818 | "oil": 0.518,
819 | "balance": -1.886
820 | },
821 | {
822 | "name": "Colombia",
823 | "year": 2006,
824 | "continent": "South America",
825 | "form": "Republic",
826 | "gdp": 160.691,
827 | "oil": 0.651,
828 | "balance": -2.988
829 | },
830 | {
831 | "name": "Colombia",
832 | "year": 2007,
833 | "continent": "South America",
834 | "form": "Republic",
835 | "gdp": 210.565,
836 | "oil": 0.875,
837 | "balance": -5.978
838 | },
839 | {
840 | "name": "Colombia",
841 | "year": 2008,
842 | "continent": "South America",
843 | "form": "Republic",
844 | "gdp": 235.255,
845 | "oil": 1.754,
846 | "balance": -6.699
847 | },
848 | {
849 | "name": "Colombia",
850 | "year": 2009,
851 | "continent": "South America",
852 | "form": "Republic",
853 | "gdp": 231.597,
854 | "oil": 1.15,
855 | "balance": -4.96
856 | },
857 | {
858 | "name": "Colombia",
859 | "year": 2010,
860 | "continent": "South America",
861 | "form": "Republic",
862 | "gdp": 284.877,
863 | "oil": 2.008,
864 | "balance": -8.758
865 | },
866 | {
867 | "name": "Colombia",
868 | "year": 2011,
869 | "continent": "South America",
870 | "form": "Republic",
871 | "gdp": 327.626,
872 | "oil": 3.756,
873 | "balance": -9.978
874 | },
875 | {
876 | "name": "Colombia",
877 | "year": 2012,
878 | "continent": "South America",
879 | "form": "Republic",
880 | "gdp": 365.402,
881 | "oil": 4.056,
882 | "balance": -10.656
883 | },
884 | {
885 | "name": "Colombia",
886 | "year": 2013,
887 | "continent": "South America",
888 | "form": "Republic",
889 | "gdp": 387.399,
890 | "oil": 4.219,
891 | "balance": -11.19
892 | },
893 | {
894 | "name": "Czech Republic",
895 | "year": 2005,
896 | "continent": "Europe",
897 | "form": "Republic",
898 | "gdp": 130.066,
899 | "oil": 4.781,
900 | "balance": -1.21
901 | },
902 | {
903 | "name": "Czech Republic",
904 | "year": 2006,
905 | "continent": "Europe",
906 | "form": "Republic",
907 | "gdp": 148.374,
908 | "oil": 6.978,
909 | "balance": -3.129
910 | },
911 | {
912 | "name": "Czech Republic",
913 | "year": 2007,
914 | "continent": "Europe",
915 | "form": "Republic",
916 | "gdp": 180.479,
917 | "oil": 8.899,
918 | "balance": -7.931
919 | },
920 | {
921 | "name": "Czech Republic",
922 | "year": 2008,
923 | "continent": "Europe",
924 | "form": "Republic",
925 | "gdp": 225.427,
926 | "oil": 9.484,
927 | "balance": -4.782
928 | },
929 | {
930 | "name": "Czech Republic",
931 | "year": 2009,
932 | "continent": "Europe",
933 | "form": "Republic",
934 | "gdp": 196.151,
935 | "oil": 14.75,
936 | "balance": -4.849
937 | },
938 | {
939 | "name": "Czech Republic",
940 | "year": 2010,
941 | "continent": "Europe",
942 | "form": "Republic",
943 | "gdp": 197.674,
944 | "oil": 9.712,
945 | "balance": -7.601
946 | },
947 | {
948 | "name": "Czech Republic",
949 | "year": 2011,
950 | "continent": "Europe",
951 | "form": "Republic",
952 | "gdp": 215.18,
953 | "oil": 12.131,
954 | "balance": -6.348
955 | },
956 | {
957 | "name": "Czech Republic",
958 | "year": 2012,
959 | "continent": "Europe",
960 | "form": "Republic",
961 | "gdp": 193.513,
962 | "oil": 16.089,
963 | "balance": -4.63
964 | },
965 | {
966 | "name": "Czech Republic",
967 | "year": 2013,
968 | "continent": "Europe",
969 | "form": "Republic",
970 | "gdp": 192.597,
971 | "oil": 16.259,
972 | "balance": -4.146
973 | },
974 | {
975 | "name": "Denmark",
976 | "year": 2005,
977 | "continent": "Europe",
978 | "form": "Constitutional monarchy",
979 | "gdp": 257.676,
980 | "oil": 5.041,
981 | "balance": 11.195
982 | },
983 | {
984 | "name": "Denmark",
985 | "year": 2006,
986 | "continent": "Europe",
987 | "form": "Constitutional monarchy",
988 | "gdp": 274.377,
989 | "oil": 5.564,
990 | "balance": 8.171
991 | },
992 | {
993 | "name": "Denmark",
994 | "year": 2007,
995 | "continent": "Europe",
996 | "form": "Constitutional monarchy",
997 | "gdp": 311.417,
998 | "oil": 5.535,
999 | "balance": 4.234
1000 | },
1001 | {
1002 | "name": "Denmark",
1003 | "year": 2008,
1004 | "continent": "Europe",
1005 | "form": "Constitutional monarchy",
1006 | "gdp": 343.881,
1007 | "oil": 9.129,
1008 | "balance": 9.91
1009 | },
1010 | {
1011 | "name": "Denmark",
1012 | "year": 2009,
1013 | "continent": "Europe",
1014 | "form": "Constitutional monarchy",
1015 | "gdp": 311.114,
1016 | "oil": 5.84,
1017 | "balance": 10.191
1018 | },
1019 | {
1020 | "name": "Denmark",
1021 | "year": 2010,
1022 | "continent": "Europe",
1023 | "form": "Constitutional monarchy",
1024 | "gdp": 311.989,
1025 | "oil": 9.129,
1026 | "balance": 17.221
1027 | },
1028 | {
1029 | "name": "Denmark",
1030 | "year": 2011,
1031 | "continent": "Europe",
1032 | "form": "Constitutional monarchy",
1033 | "gdp": 332.019,
1034 | "oil": 9.129,
1035 | "balance": 22.178
1036 | },
1037 | {
1038 | "name": "Denmark",
1039 | "year": 2012,
1040 | "continent": "Europe",
1041 | "form": "Constitutional monarchy",
1042 | "gdp": 309.18,
1043 | "oil": 9.129,
1044 | "balance": 15.498
1045 | },
1046 | {
1047 | "name": "Denmark",
1048 | "year": 2013,
1049 | "continent": "Europe",
1050 | "form": "Constitutional monarchy",
1051 | "gdp": 308.366,
1052 | "oil": 9.129,
1053 | "balance": 14.081
1054 | },
1055 | {
1056 | "name": "Egypt",
1057 | "year": 2005,
1058 | "continent": "Africa",
1059 | "form": "Republic",
1060 | "gdp": 89.794,
1061 | "oil": 3.975,
1062 | "balance": 2.91
1063 | },
1064 | {
1065 | "name": "Egypt",
1066 | "year": 2006,
1067 | "continent": "Africa",
1068 | "form": "Republic",
1069 | "gdp": 107.375,
1070 | "oil": 5.359,
1071 | "balance": 1.752
1072 | },
1073 | {
1074 | "name": "Egypt",
1075 | "year": 2007,
1076 | "continent": "Africa",
1077 | "form": "Republic",
1078 | "gdp": 130.346,
1079 | "oil": 4.128,
1080 | "balance": 2.269
1081 | },
1082 | {
1083 | "name": "Egypt",
1084 | "year": 2008,
1085 | "continent": "Africa",
1086 | "form": "Republic",
1087 | "gdp": 162.435,
1088 | "oil": 9.561,
1089 | "balance": 0.888
1090 | },
1091 | {
1092 | "name": "Egypt",
1093 | "year": 2009,
1094 | "continent": "Africa",
1095 | "form": "Republic",
1096 | "gdp": 188.608,
1097 | "oil": 7.032,
1098 | "balance": -4.424
1099 | },
1100 | {
1101 | "name": "Egypt",
1102 | "year": 2010,
1103 | "continent": "Africa",
1104 | "form": "Republic",
1105 | "gdp": 218.465,
1106 | "oil": 5.161,
1107 | "balance": -4.318
1108 | },
1109 | {
1110 | "name": "Egypt",
1111 | "year": 2011,
1112 | "continent": "Africa",
1113 | "form": "Republic",
1114 | "gdp": 235.719,
1115 | "oil": 9.262,
1116 | "balance": -6.088
1117 | },
1118 | {
1119 | "name": "Egypt",
1120 | "year": 2012,
1121 | "continent": "Africa",
1122 | "form": "Republic",
1123 | "gdp": 255.001,
1124 | "oil": 11.83,
1125 | "balance": -8.668
1126 | },
1127 | {
1128 | "name": "Egypt",
1129 | "year": 2013,
1130 | "continent": "Africa",
1131 | "form": "Republic",
1132 | "gdp": 275.868,
1133 | "oil": 11.888,
1134 | "balance": -9.001
1135 | },
1136 | {
1137 | "name": "Finland",
1138 | "year": 2005,
1139 | "continent": "Europe",
1140 | "form": "Republic",
1141 | "gdp": 196.118,
1142 | "oil": 6.103,
1143 | "balance": 6.573
1144 | },
1145 | {
1146 | "name": "Finland",
1147 | "year": 2006,
1148 | "continent": "Europe",
1149 | "form": "Republic",
1150 | "gdp": 208.143,
1151 | "oil": 8.081,
1152 | "balance": 8.652
1153 | },
1154 | {
1155 | "name": "Finland",
1156 | "year": 2007,
1157 | "continent": "Europe",
1158 | "form": "Republic",
1159 | "gdp": 246.481,
1160 | "oil": 8.893,
1161 | "balance": 10.51
1162 | },
1163 | {
1164 | "name": "Finland",
1165 | "year": 2008,
1166 | "continent": "Europe",
1167 | "form": "Republic",
1168 | "gdp": 273.225,
1169 | "oil": 12.173,
1170 | "balance": 7.178
1171 | },
1172 | {
1173 | "name": "Finland",
1174 | "year": 2009,
1175 | "continent": "Europe",
1176 | "form": "Republic",
1177 | "gdp": 240.004,
1178 | "oil": 7.475,
1179 | "balance": 4.254
1180 | },
1181 | {
1182 | "name": "Finland",
1183 | "year": 2010,
1184 | "continent": "Europe",
1185 | "form": "Republic",
1186 | "gdp": 237.243,
1187 | "oil": 9.282,
1188 | "balance": 3.415
1189 | },
1190 | {
1191 | "name": "Finland",
1192 | "year": 2011,
1193 | "continent": "Europe",
1194 | "form": "Republic",
1195 | "gdp": 263.488,
1196 | "oil": 13.975,
1197 | "balance": -3.124
1198 | },
1199 | {
1200 | "name": "Finland",
1201 | "year": 2012,
1202 | "continent": "Europe",
1203 | "form": "Republic",
1204 | "gdp": 247.189,
1205 | "oil": 14.638,
1206 | "balance": -3.961
1207 | },
1208 | {
1209 | "name": "Finland",
1210 | "year": 2013,
1211 | "continent": "Europe",
1212 | "form": "Republic",
1213 | "gdp": 252.163,
1214 | "oil": 14.922,
1215 | "balance": -4.238
1216 | },
1217 | {
1218 | "name": "France",
1219 | "year": 2005,
1220 | "continent": "Europe",
1221 | "form": "Republic",
1222 | "gdp": 2140.207,
1223 | "oil": 33.36,
1224 | "balance": -10.375
1225 | },
1226 | {
1227 | "name": "France",
1228 | "year": 2006,
1229 | "continent": "Europe",
1230 | "form": "Republic",
1231 | "gdp": 2257.781,
1232 | "oil": 39.873,
1233 | "balance": -12.995
1234 | },
1235 | {
1236 | "name": "France",
1237 | "year": 2007,
1238 | "continent": "Europe",
1239 | "form": "Republic",
1240 | "gdp": 2586.115,
1241 | "oil": 42.819,
1242 | "balance": -25.931
1243 | },
1244 | {
1245 | "name": "France",
1246 | "year": 2008,
1247 | "continent": "Europe",
1248 | "form": "Republic",
1249 | "gdp": 2845.119,
1250 | "oil": 59.821,
1251 | "balance": -49.632
1252 | },
1253 | {
1254 | "name": "France",
1255 | "year": 2009,
1256 | "continent": "Europe",
1257 | "form": "Republic",
1258 | "gdp": 2626.537,
1259 | "oil": 31.79,
1260 | "balance": -35.016
1261 | },
1262 | {
1263 | "name": "France",
1264 | "year": 2010,
1265 | "continent": "Europe",
1266 | "form": "Republic",
1267 | "gdp": 2570.592,
1268 | "oil": 35.319,
1269 | "balance": -40.042
1270 | },
1271 | {
1272 | "name": "France",
1273 | "year": 2011,
1274 | "continent": "Europe",
1275 | "form": "Republic",
1276 | "gdp": 2778.085,
1277 | "oil": 46.482,
1278 | "balance": -54.169
1279 | },
1280 | {
1281 | "name": "France",
1282 | "year": 2012,
1283 | "continent": "Europe",
1284 | "form": "Republic",
1285 | "gdp": 2580.423,
1286 | "oil": 45.772,
1287 | "balance": -44.755
1288 | },
1289 | {
1290 | "name": "France",
1291 | "year": 2013,
1292 | "continent": "Europe",
1293 | "form": "Republic",
1294 | "gdp": 2565.622,
1295 | "oil": 43.312,
1296 | "balance": -43.327
1297 | },
1298 | {
1299 | "name": "Georgia",
1300 | "year": 2005,
1301 | "continent": "Europe",
1302 | "form": "Republic",
1303 | "gdp": 6.411,
1304 | "oil": 0.336,
1305 | "balance": -0.709
1306 | },
1307 | {
1308 | "name": "Georgia",
1309 | "year": 2006,
1310 | "continent": "Europe",
1311 | "form": "Republic",
1312 | "gdp": 7.768,
1313 | "oil": 0.443,
1314 | "balance": -1.176
1315 | },
1316 | {
1317 | "name": "Georgia",
1318 | "year": 2007,
1319 | "continent": "Europe",
1320 | "form": "Republic",
1321 | "gdp": 10.224,
1322 | "oil": 0.556,
1323 | "balance": -2.009
1324 | },
1325 | {
1326 | "name": "Georgia",
1327 | "year": 2008,
1328 | "continent": "Europe",
1329 | "form": "Republic",
1330 | "gdp": 12.87,
1331 | "oil": 0.762,
1332 | "balance": -2.824
1333 | },
1334 | {
1335 | "name": "Georgia",
1336 | "year": 2009,
1337 | "continent": "Europe",
1338 | "form": "Republic",
1339 | "gdp": 10.768,
1340 | "oil": 0.555,
1341 | "balance": -1.144
1342 | },
1343 | {
1344 | "name": "Georgia",
1345 | "year": 2010,
1346 | "continent": "Europe",
1347 | "form": "Republic",
1348 | "gdp": 11.638,
1349 | "oil": 0.695,
1350 | "balance": -1.194
1351 | },
1352 | {
1353 | "name": "Georgia",
1354 | "year": 2011,
1355 | "continent": "Europe",
1356 | "form": "Republic",
1357 | "gdp": 14.347,
1358 | "oil": 0.911,
1359 | "balance": -1.688
1360 | },
1361 | {
1362 | "name": "Georgia",
1363 | "year": 2012,
1364 | "continent": "Europe",
1365 | "form": "Republic",
1366 | "gdp": 15.803,
1367 | "oil": 0.982,
1368 | "balance": -1.989
1369 | },
1370 | {
1371 | "name": "Georgia",
1372 | "year": 2013,
1373 | "continent": "Europe",
1374 | "form": "Republic",
1375 | "gdp": 17.284,
1376 | "oil": 0.961,
1377 | "balance": -1.929
1378 | },
1379 | {
1380 | "name": "Germany",
1381 | "year": 2005,
1382 | "continent": "Europe",
1383 | "form": "Republic",
1384 | "gdp": 2771.057,
1385 | "oil": 65.757,
1386 | "balance": 140.261
1387 | },
1388 | {
1389 | "name": "Germany",
1390 | "year": 2006,
1391 | "continent": "Europe",
1392 | "form": "Republic",
1393 | "gdp": 2905.445,
1394 | "oil": 83.027,
1395 | "balance": 181.741
1396 | },
1397 | {
1398 | "name": "Germany",
1399 | "year": 2007,
1400 | "continent": "Europe",
1401 | "form": "Republic",
1402 | "gdp": 3328.589,
1403 | "oil": 83.998,
1404 | "balance": 247.967
1405 | },
1406 | {
1407 | "name": "Germany",
1408 | "year": 2008,
1409 | "continent": "Europe",
1410 | "form": "Republic",
1411 | "gdp": 3640.727,
1412 | "oil": 122.258,
1413 | "balance": 226.105
1414 | },
1415 | {
1416 | "name": "Germany",
1417 | "year": 2009,
1418 | "continent": "Europe",
1419 | "form": "Republic",
1420 | "gdp": 3307.197,
1421 | "oil": 76.544,
1422 | "balance": 195.769
1423 | },
1424 | {
1425 | "name": "Germany",
1426 | "year": 2010,
1427 | "continent": "Europe",
1428 | "form": "Republic",
1429 | "gdp": 3312.193,
1430 | "oil": 83.933,
1431 | "balance": 199.92
1432 | },
1433 | {
1434 | "name": "Germany",
1435 | "year": 2011,
1436 | "continent": "Europe",
1437 | "form": "Republic",
1438 | "gdp": 3607.364,
1439 | "oil": 93.607,
1440 | "balance": 203.929
1441 | },
1442 | {
1443 | "name": "Germany",
1444 | "year": 2012,
1445 | "continent": "Europe",
1446 | "form": "Republic",
1447 | "gdp": 3366.651,
1448 | "oil": 100.869,
1449 | "balance": 182.827
1450 | },
1451 | {
1452 | "name": "Germany",
1453 | "year": 2013,
1454 | "continent": "Europe",
1455 | "form": "Republic",
1456 | "gdp": 3373.327,
1457 | "oil": 102.996,
1458 | "balance": 157.823
1459 | },
1460 | {
1461 | "name": "Greece",
1462 | "year": 2005,
1463 | "continent": "Europe",
1464 | "form": "Republic",
1465 | "gdp": 240.493,
1466 | "oil": 11.071,
1467 | "balance": -18.366
1468 | },
1469 | {
1470 | "name": "Greece",
1471 | "year": 2006,
1472 | "continent": "Europe",
1473 | "form": "Republic",
1474 | "gdp": 262.296,
1475 | "oil": 14.692,
1476 | "balance": -29.832
1477 | },
1478 | {
1479 | "name": "Greece",
1480 | "year": 2007,
1481 | "continent": "Europe",
1482 | "form": "Republic",
1483 | "gdp": 305.338,
1484 | "oil": 16.8,
1485 | "balance": -44.686
1486 | },
1487 | {
1488 | "name": "Greece",
1489 | "year": 2008,
1490 | "continent": "Europe",
1491 | "form": "Republic",
1492 | "gdp": 342.792,
1493 | "oil": 24.149,
1494 | "balance": -51.212
1495 | },
1496 | {
1497 | "name": "Greece",
1498 | "year": 2009,
1499 | "continent": "Europe",
1500 | "form": "Republic",
1501 | "gdp": 322.629,
1502 | "oil": 14.847,
1503 | "balance": -35.96
1504 | },
1505 | {
1506 | "name": "Greece",
1507 | "year": 2010,
1508 | "continent": "Europe",
1509 | "form": "Republic",
1510 | "gdp": 301.627,
1511 | "oil": 18.015,
1512 | "balance": -30.486
1513 | },
1514 | {
1515 | "name": "Greece",
1516 | "year": 2011,
1517 | "continent": "Europe",
1518 | "form": "Republic",
1519 | "gdp": 299.275,
1520 | "oil": 24.092,
1521 | "balance": -29.353
1522 | },
1523 | {
1524 | "name": "Greece",
1525 | "year": 2012,
1526 | "continent": "Europe",
1527 | "form": "Republic",
1528 | "gdp": 254.978,
1529 | "oil": 23.448,
1530 | "balance": -14.821
1531 | },
1532 | {
1533 | "name": "Greece",
1534 | "year": 2013,
1535 | "continent": "Europe",
1536 | "form": "Republic",
1537 | "gdp": 235.906,
1538 | "oil": 22.111,
1539 | "balance": -6.861
1540 | },
1541 | {
1542 | "name": "India",
1543 | "year": 2005,
1544 | "continent": "Asia",
1545 | "form": "Republic",
1546 | "gdp": 808.744,
1547 | "oil": 39.928,
1548 | "balance": -10.285
1549 | },
1550 | {
1551 | "name": "India",
1552 | "year": 2006,
1553 | "continent": "Asia",
1554 | "form": "Republic",
1555 | "gdp": 908.57,
1556 | "oil": 56.284,
1557 | "balance": -9.299
1558 | },
1559 | {
1560 | "name": "India",
1561 | "year": 2007,
1562 | "continent": "Asia",
1563 | "form": "Republic",
1564 | "gdp": 1152.576,
1565 | "oil": 67.565,
1566 | "balance": -8.077
1567 | },
1568 | {
1569 | "name": "India",
1570 | "year": 2008,
1571 | "continent": "Asia",
1572 | "form": "Republic",
1573 | "gdp": 1262.523,
1574 | "oil": 106.399,
1575 | "balance": -30.974
1576 | },
1577 | {
1578 | "name": "India",
1579 | "year": 2009,
1580 | "continent": "Asia",
1581 | "form": "Republic",
1582 | "gdp": 1266.249,
1583 | "oil": 74.229,
1584 | "balance": -25.912
1585 | },
1586 | {
1587 | "name": "India",
1588 | "year": 2010,
1589 | "continent": "Asia",
1590 | "form": "Republic",
1591 | "gdp": 1630.472,
1592 | "oil": 100.686,
1593 | "balance": -52.224
1594 | },
1595 | {
1596 | "name": "India",
1597 | "year": 2011,
1598 | "continent": "Asia",
1599 | "form": "Republic",
1600 | "gdp": 1826.811,
1601 | "oil": 141.755,
1602 | "balance": -62.756
1603 | },
1604 | {
1605 | "name": "India",
1606 | "year": 2012,
1607 | "continent": "Asia",
1608 | "form": "Republic",
1609 | "gdp": 1946.765,
1610 | "oil": 164.447,
1611 | "balance": -74.542
1612 | },
1613 | {
1614 | "name": "India",
1615 | "year": 2013,
1616 | "continent": "Asia",
1617 | "form": "Republic",
1618 | "gdp": 2117.279,
1619 | "oil": 177.548,
1620 | "balance": -69.07
1621 | },
1622 | {
1623 | "name": "Indonesia",
1624 | "year": 2005,
1625 | "continent": "Asia",
1626 | "form": "Republic",
1627 | "gdp": 285.776,
1628 | "oil": 16.018,
1629 | "balance": 0.277
1630 | },
1631 | {
1632 | "name": "Indonesia",
1633 | "year": 2006,
1634 | "continent": "Asia",
1635 | "form": "Republic",
1636 | "gdp": 364.352,
1637 | "oil": 16.146,
1638 | "balance": 10.86
1639 | },
1640 | {
1641 | "name": "Indonesia",
1642 | "year": 2007,
1643 | "continent": "Asia",
1644 | "form": "Republic",
1645 | "gdp": 432.17,
1646 | "oil": 19.172,
1647 | "balance": 10.492
1648 | },
1649 | {
1650 | "name": "Indonesia",
1651 | "year": 2008,
1652 | "continent": "Asia",
1653 | "form": "Republic",
1654 | "gdp": 510.312,
1655 | "oil": 23.749,
1656 | "balance": 0.126
1657 | },
1658 | {
1659 | "name": "Indonesia",
1660 | "year": 2009,
1661 | "continent": "Asia",
1662 | "form": "Republic",
1663 | "gdp": 538.764,
1664 | "oil": 14.806,
1665 | "balance": 10.628
1666 | },
1667 | {
1668 | "name": "Indonesia",
1669 | "year": 2010,
1670 | "continent": "Asia",
1671 | "form": "Republic",
1672 | "gdp": 708.371,
1673 | "oil": 24.344,
1674 | "balance": 5.144
1675 | },
1676 | {
1677 | "name": "Indonesia",
1678 | "year": 2011,
1679 | "continent": "Asia",
1680 | "form": "Republic",
1681 | "gdp": 846.45,
1682 | "oil": 37.102,
1683 | "balance": 1.719
1684 | },
1685 | {
1686 | "name": "Indonesia",
1687 | "year": 2012,
1688 | "continent": "Asia",
1689 | "form": "Republic",
1690 | "gdp": 894.854,
1691 | "oil": 40.906,
1692 | "balance": -18.858
1693 | },
1694 | {
1695 | "name": "Indonesia",
1696 | "year": 2013,
1697 | "continent": "Asia",
1698 | "form": "Republic",
1699 | "gdp": 1006.888,
1700 | "oil": 42.11,
1701 | "balance": -23.986
1702 | },
1703 | {
1704 | "name": "Kazakhstan",
1705 | "year": 2005,
1706 | "continent": "Asia",
1707 | "form": "Republic",
1708 | "gdp": 57.125,
1709 | "oil": 0.778,
1710 | "balance": -1.056
1711 | },
1712 | {
1713 | "name": "Kazakhstan",
1714 | "year": 2006,
1715 | "continent": "Asia",
1716 | "form": "Republic",
1717 | "gdp": 81.003,
1718 | "oil": 1.493,
1719 | "balance": -1.999
1720 | },
1721 | {
1722 | "name": "Kazakhstan",
1723 | "year": 2007,
1724 | "continent": "Asia",
1725 | "form": "Republic",
1726 | "gdp": 103.142,
1727 | "oil": 1.826,
1728 | "balance": -8.322
1729 | },
1730 | {
1731 | "name": "Kazakhstan",
1732 | "year": 2008,
1733 | "continent": "Asia",
1734 | "form": "Republic",
1735 | "gdp": 135.229,
1736 | "oil": 2.773,
1737 | "balance": 6.326
1738 | },
1739 | {
1740 | "name": "Kazakhstan",
1741 | "year": 2009,
1742 | "continent": "Asia",
1743 | "form": "Republic",
1744 | "gdp": 115.308,
1745 | "oil": 1.446,
1746 | "balance": -4.114
1747 | },
1748 | {
1749 | "name": "Kazakhstan",
1750 | "year": 2010,
1751 | "continent": "Asia",
1752 | "form": "Republic",
1753 | "gdp": 148.047,
1754 | "oil": 2.402,
1755 | "balance": 2.409
1756 | },
1757 | {
1758 | "name": "Kazakhstan",
1759 | "year": 2011,
1760 | "continent": "Asia",
1761 | "form": "Republic",
1762 | "gdp": 186.199,
1763 | "oil": 2.502,
1764 | "balance": 14.11
1765 | },
1766 | {
1767 | "name": "Kazakhstan",
1768 | "year": 2012,
1769 | "continent": "Asia",
1770 | "form": "Republic",
1771 | "gdp": 200.642,
1772 | "oil": 2.93,
1773 | "balance": 12.39
1774 | },
1775 | {
1776 | "name": "Kazakhstan",
1777 | "year": 2013,
1778 | "continent": "Asia",
1779 | "form": "Republic",
1780 | "gdp": 220.141,
1781 | "oil": 3.104,
1782 | "balance": 9.974
1783 | },
1784 | {
1785 | "name": "New Zealand",
1786 | "year": 2005,
1787 | "continent": "Australia",
1788 | "form": "Constitutional monarchy",
1789 | "gdp": 111.569,
1790 | "oil": 2.946,
1791 | "balance": -8.816
1792 | },
1793 | {
1794 | "name": "New Zealand",
1795 | "year": 2006,
1796 | "continent": "Australia",
1797 | "form": "Constitutional monarchy",
1798 | "gdp": 107.966,
1799 | "oil": 3.641,
1800 | "balance": -8.942
1801 | },
1802 | {
1803 | "name": "New Zealand",
1804 | "year": 2007,
1805 | "continent": "Australia",
1806 | "form": "Constitutional monarchy",
1807 | "gdp": 131.894,
1808 | "oil": 4.2,
1809 | "balance": -10.721
1810 | },
1811 | {
1812 | "name": "New Zealand",
1813 | "year": 2008,
1814 | "continent": "Australia",
1815 | "form": "Constitutional monarchy",
1816 | "gdp": 132.335,
1817 | "oil": 5.806,
1818 | "balance": -11.622
1819 | },
1820 | {
1821 | "name": "New Zealand",
1822 | "year": 2009,
1823 | "continent": "Australia",
1824 | "form": "Constitutional monarchy",
1825 | "gdp": 117.284,
1826 | "oil": 3.51,
1827 | "balance": -3.015
1828 | },
1829 | {
1830 | "name": "New Zealand",
1831 | "year": 2010,
1832 | "continent": "Australia",
1833 | "form": "Constitutional monarchy",
1834 | "gdp": 140.066,
1835 | "oil": 4.486,
1836 | "balance": -4.849
1837 | },
1838 | {
1839 | "name": "New Zealand",
1840 | "year": 2011,
1841 | "continent": "Australia",
1842 | "form": "Constitutional monarchy",
1843 | "gdp": 158.869,
1844 | "oil": 6.181,
1845 | "balance": -6.645
1846 | },
1847 | {
1848 | "name": "New Zealand",
1849 | "year": 2012,
1850 | "continent": "Australia",
1851 | "form": "Constitutional monarchy",
1852 | "gdp": 166.923,
1853 | "oil": 6.736,
1854 | "balance": -8.959
1855 | },
1856 | {
1857 | "name": "New Zealand",
1858 | "year": 2013,
1859 | "continent": "Australia",
1860 | "form": "Constitutional monarchy",
1861 | "gdp": 174.035,
1862 | "oil": 6.485,
1863 | "balance": -10.21
1864 | },
1865 | {
1866 | "name": "Russia",
1867 | "year": 2005,
1868 | "continent": "Europe",
1869 | "form": "Republic",
1870 | "gdp": 763.704,
1871 | "oil": 0,
1872 | "balance": 84.443
1873 | },
1874 | {
1875 | "name": "Russia",
1876 | "year": 2006,
1877 | "continent": "Europe",
1878 | "form": "Republic",
1879 | "gdp": 989.932,
1880 | "oil": 0,
1881 | "balance": 94.34
1882 | },
1883 | {
1884 | "name": "Russia",
1885 | "year": 2007,
1886 | "continent": "Europe",
1887 | "form": "Republic",
1888 | "gdp": 1299.703,
1889 | "oil": 0,
1890 | "balance": 77.012
1891 | },
1892 | {
1893 | "name": "Russia",
1894 | "year": 2008,
1895 | "continent": "Europe",
1896 | "form": "Republic",
1897 | "gdp": 1660.846,
1898 | "oil": 0,
1899 | "balance": 103.722
1900 | },
1901 | {
1902 | "name": "Russia",
1903 | "year": 2009,
1904 | "continent": "Europe",
1905 | "form": "Republic",
1906 | "gdp": 1222.693,
1907 | "oil": 0,
1908 | "balance": 49.518
1909 | },
1910 | {
1911 | "name": "Russia",
1912 | "year": 2010,
1913 | "continent": "Europe",
1914 | "form": "Republic",
1915 | "gdp": 1487.293,
1916 | "oil": 0,
1917 | "balance": 69.967
1918 | },
1919 | {
1920 | "name": "Russia",
1921 | "year": 2011,
1922 | "continent": "Europe",
1923 | "form": "Republic",
1924 | "gdp": 1850.401,
1925 | "oil": 0,
1926 | "balance": 98.834
1927 | },
1928 | {
1929 | "name": "Russia",
1930 | "year": 2012,
1931 | "continent": "Europe",
1932 | "form": "Republic",
1933 | "gdp": 1953.555,
1934 | "oil": 0,
1935 | "balance": 101.693
1936 | },
1937 | {
1938 | "name": "Russia",
1939 | "year": 2013,
1940 | "continent": "Europe",
1941 | "form": "Republic",
1942 | "gdp": 2109.022,
1943 | "oil": 0,
1944 | "balance": 80.789
1945 | },
1946 | {
1947 | "name": "Spain",
1948 | "year": 2005,
1949 | "continent": "Europe",
1950 | "form": "Constitutional monarchy",
1951 | "gdp": 1132.763,
1952 | "oil": 40.002,
1953 | "balance": -83.292
1954 | },
1955 | {
1956 | "name": "Spain",
1957 | "year": 2006,
1958 | "continent": "Europe",
1959 | "form": "Constitutional monarchy",
1960 | "gdp": 1237.501,
1961 | "oil": 51.127,
1962 | "balance": -110.889
1963 | },
1964 | {
1965 | "name": "Spain",
1966 | "year": 2007,
1967 | "continent": "Europe",
1968 | "form": "Constitutional monarchy",
1969 | "gdp": 1443.5,
1970 | "oil": 57.276,
1971 | "balance": -144.28
1972 | },
1973 | {
1974 | "name": "Spain",
1975 | "year": 2008,
1976 | "continent": "Europe",
1977 | "form": "Constitutional monarchy",
1978 | "gdp": 1600.913,
1979 | "oil": 83.857,
1980 | "balance": -154.055
1981 | },
1982 | {
1983 | "name": "Spain",
1984 | "year": 2009,
1985 | "continent": "Europe",
1986 | "form": "Constitutional monarchy",
1987 | "gdp": 1459.735,
1988 | "oil": 47.657,
1989 | "balance": -70.392
1990 | },
1991 | {
1992 | "name": "Spain",
1993 | "year": 2010,
1994 | "continent": "Europe",
1995 | "form": "Constitutional monarchy",
1996 | "gdp": 1391.757,
1997 | "oil": 58.939,
1998 | "balance": -62.928
1999 | },
2000 | {
2001 | "name": "Spain",
2002 | "year": 2011,
2003 | "continent": "Europe",
2004 | "form": "Constitutional monarchy",
2005 | "gdp": 1479.56,
2006 | "oil": 78.276,
2007 | "balance": -52.174
2008 | },
2009 | {
2010 | "name": "Spain",
2011 | "year": 2012,
2012 | "continent": "Europe",
2013 | "form": "Constitutional monarchy",
2014 | "gdp": 1340.266,
2015 | "oil": 77.477,
2016 | "balance": -26.447
2017 | },
2018 | {
2019 | "name": "Spain",
2020 | "year": 2013,
2021 | "continent": "Europe",
2022 | "form": "Constitutional monarchy",
2023 | "gdp": 1311.122,
2024 | "oil": 71.663,
2025 | "balance": -1.945
2026 | },
2027 | {
2028 | "name": "Switzerland",
2029 | "year": 2005,
2030 | "continent": "Europe",
2031 | "form": "Republic",
2032 | "gdp": 384.755,
2033 | "oil": 11.194,
2034 | "balance": 52.444
2035 | },
2036 | {
2037 | "name": "Switzerland",
2038 | "year": 2006,
2039 | "continent": "Europe",
2040 | "form": "Republic",
2041 | "gdp": 405.183,
2042 | "oil": 13.986,
2043 | "balance": 58.153
2044 | },
2045 | {
2046 | "name": "Switzerland",
2047 | "year": 2007,
2048 | "continent": "Europe",
2049 | "form": "Republic",
2050 | "gdp": 450.53,
2051 | "oil": 13.184,
2052 | "balance": 38.837
2053 | },
2054 | {
2055 | "name": "Switzerland",
2056 | "year": 2008,
2057 | "continent": "Europe",
2058 | "form": "Republic",
2059 | "gdp": 524.289,
2060 | "oil": 17.467,
2061 | "balance": 10.934
2062 | },
2063 | {
2064 | "name": "Switzerland",
2065 | "year": 2009,
2066 | "continent": "Europe",
2067 | "form": "Republic",
2068 | "gdp": 509.466,
2069 | "oil": 22,
2070 | "balance": 53.758
2071 | },
2072 | {
2073 | "name": "Switzerland",
2074 | "year": 2010,
2075 | "continent": "Europe",
2076 | "form": "Republic",
2077 | "gdp": 550.686,
2078 | "oil": 22.66,
2079 | "balance": 78.566
2080 | },
2081 | {
2082 | "name": "Switzerland",
2083 | "year": 2011,
2084 | "continent": "Europe",
2085 | "form": "Republic",
2086 | "gdp": 660.761,
2087 | "oil": 23.34,
2088 | "balance": 69.538
2089 | },
2090 | {
2091 | "name": "Switzerland",
2092 | "year": 2012,
2093 | "continent": "Europe",
2094 | "form": "Republic",
2095 | "gdp": 622.855,
2096 | "oil": 24.04,
2097 | "balance": 62.613
2098 | },
2099 | {
2100 | "name": "Switzerland",
2101 | "year": 2013,
2102 | "continent": "Europe",
2103 | "form": "Republic",
2104 | "gdp": 616.595,
2105 | "oil": 24.761,
2106 | "balance": 61.532
2107 | },
2108 | {
2109 | "name": "Ukraine",
2110 | "year": 2005,
2111 | "continent": "Europe",
2112 | "form": "Republic",
2113 | "gdp": 86.183,
2114 | "oil": 5.732,
2115 | "balance": 2.531
2116 | },
2117 | {
2118 | "name": "Ukraine",
2119 | "year": 2006,
2120 | "continent": "Europe",
2121 | "form": "Republic",
2122 | "gdp": 107.753,
2123 | "oil": 6.843,
2124 | "balance": -1.617
2125 | },
2126 | {
2127 | "name": "Ukraine",
2128 | "year": 2007,
2129 | "continent": "Europe",
2130 | "form": "Republic",
2131 | "gdp": 142.719,
2132 | "oil": 7.58,
2133 | "balance": -5.272
2134 | },
2135 | {
2136 | "name": "Ukraine",
2137 | "year": 2008,
2138 | "continent": "Europe",
2139 | "form": "Republic",
2140 | "gdp": 180.116,
2141 | "oil": 10.466,
2142 | "balance": -12.763
2143 | },
2144 | {
2145 | "name": "Ukraine",
2146 | "year": 2009,
2147 | "continent": "Europe",
2148 | "form": "Republic",
2149 | "gdp": 117.227,
2150 | "oil": 5.678,
2151 | "balance": -1.732
2152 | },
2153 | {
2154 | "name": "Ukraine",
2155 | "year": 2010,
2156 | "continent": "Europe",
2157 | "form": "Republic",
2158 | "gdp": 136.417,
2159 | "oil": 8.076,
2160 | "balance": -3.018
2161 | },
2162 | {
2163 | "name": "Ukraine",
2164 | "year": 2011,
2165 | "continent": "Europe",
2166 | "form": "Republic",
2167 | "gdp": 165.245,
2168 | "oil": 11.177,
2169 | "balance": -9.006
2170 | },
2171 | {
2172 | "name": "Ukraine",
2173 | "year": 2012,
2174 | "continent": "Europe",
2175 | "form": "Republic",
2176 | "gdp": 180.174,
2177 | "oil": 11.336,
2178 | "balance": -10.118
2179 | },
2180 | {
2181 | "name": "Ukraine",
2182 | "year": 2013,
2183 | "continent": "Europe",
2184 | "form": "Republic",
2185 | "gdp": 195.353,
2186 | "oil": 11.102,
2187 | "balance": -12.968
2188 | },
2189 | {
2190 | "name": "United Kingdom",
2191 | "year": 2005,
2192 | "continent": "Europe",
2193 | "form": "Constitutional monarchy",
2194 | "gdp": 2298.638,
2195 | "oil": 40.167,
2196 | "balance": -47.199
2197 | },
2198 | {
2199 | "name": "United Kingdom",
2200 | "year": 2006,
2201 | "continent": "Europe",
2202 | "form": "Constitutional monarchy",
2203 | "gdp": 2456.515,
2204 | "oil": 48.141,
2205 | "balance": -72.043
2206 | },
2207 | {
2208 | "name": "United Kingdom",
2209 | "year": 2007,
2210 | "continent": "Europe",
2211 | "form": "Constitutional monarchy",
2212 | "gdp": 2826.609,
2213 | "oil": 54.344,
2214 | "balance": -64.372
2215 | },
2216 | {
2217 | "name": "United Kingdom",
2218 | "year": 2008,
2219 | "continent": "Europe",
2220 | "form": "Constitutional monarchy",
2221 | "gdp": 2670.397,
2222 | "oil": 71.218,
2223 | "balance": -26.711
2224 | },
2225 | {
2226 | "name": "United Kingdom",
2227 | "year": 2009,
2228 | "continent": "Europe",
2229 | "form": "Constitutional monarchy",
2230 | "gdp": 2193.184,
2231 | "oil": 43.863,
2232 | "balance": -27.749
2233 | },
2234 | {
2235 | "name": "United Kingdom",
2236 | "year": 2010,
2237 | "continent": "Europe",
2238 | "form": "Constitutional monarchy",
2239 | "gdp": 2267.482,
2240 | "oil": 55.734,
2241 | "balance": -57.645
2242 | },
2243 | {
2244 | "name": "United Kingdom",
2245 | "year": 2011,
2246 | "continent": "Europe",
2247 | "form": "Constitutional monarchy",
2248 | "gdp": 2431.31,
2249 | "oil": 79.362,
2250 | "balance": -46.578
2251 | },
2252 | {
2253 | "name": "United Kingdom",
2254 | "year": 2012,
2255 | "continent": "Europe",
2256 | "form": "Constitutional monarchy",
2257 | "gdp": 2433.779,
2258 | "oil": 78.658,
2259 | "balance": -80.589
2260 | },
2261 | {
2262 | "name": "United Kingdom",
2263 | "year": 2013,
2264 | "continent": "Europe",
2265 | "form": "Constitutional monarchy",
2266 | "gdp": 2532.045,
2267 | "oil": 80.259,
2268 | "balance": -68.57
2269 | },
2270 | {
2271 | "name": "United States",
2272 | "year": 2005,
2273 | "continent": "North America",
2274 | "form": "Republic",
2275 | "gdp": 12622.95,
2276 | "oil": 251.85,
2277 | "balance": -745.773
2278 | },
2279 | {
2280 | "name": "United States",
2281 | "year": 2006,
2282 | "continent": "North America",
2283 | "form": "Republic",
2284 | "gdp": 13377.2,
2285 | "oil": 302.45,
2286 | "balance": -800.621
2287 | },
2288 | {
2289 | "name": "United States",
2290 | "year": 2007,
2291 | "continent": "North America",
2292 | "form": "Republic",
2293 | "gdp": 14028.675,
2294 | "oil": 346.7,
2295 | "balance": -710.304
2296 | },
2297 | {
2298 | "name": "United States",
2299 | "year": 2008,
2300 | "continent": "North America",
2301 | "form": "Republic",
2302 | "gdp": 14291.55,
2303 | "oil": 476.125,
2304 | "balance": -677.134
2305 | },
2306 | {
2307 | "name": "United States",
2308 | "year": 2009,
2309 | "continent": "North America",
2310 | "form": "Republic",
2311 | "gdp": 13973.65,
2312 | "oil": 267.7,
2313 | "balance": -381.898
2314 | },
2315 | {
2316 | "name": "United States",
2317 | "year": 2010,
2318 | "continent": "North America",
2319 | "form": "Republic",
2320 | "gdp": 14498.925,
2321 | "oil": 353.75,
2322 | "balance": -441.952
2323 | },
2324 | {
2325 | "name": "United States",
2326 | "year": 2011,
2327 | "continent": "North America",
2328 | "form": "Republic",
2329 | "gdp": 15075.675,
2330 | "oil": 462.3,
2331 | "balance": -465.928
2332 | },
2333 | {
2334 | "name": "United States",
2335 | "year": 2012,
2336 | "continent": "North America",
2337 | "form": "Republic",
2338 | "gdp": 15653.366,
2339 | "oil": 458.457,
2340 | "balance": -486.525
2341 | },
2342 | {
2343 | "name": "United States",
2344 | "year": 2013,
2345 | "continent": "North America",
2346 | "form": "Republic",
2347 | "gdp": 16197.956,
2348 | "oil": 464.907,
2349 | "balance": -499.25
2350 | },
2351 | {
2352 | "name": "Vietnam",
2353 | "year": 2005,
2354 | "continent": "Asia",
2355 | "form": "Republic",
2356 | "gdp": 52.931,
2357 | "oil": 4.716,
2358 | "balance": -0.56
2359 | },
2360 | {
2361 | "name": "Vietnam",
2362 | "year": 2006,
2363 | "continent": "Asia",
2364 | "form": "Republic",
2365 | "gdp": 60.933,
2366 | "oil": 5.665,
2367 | "balance": -0.164
2368 | },
2369 | {
2370 | "name": "Vietnam",
2371 | "year": 2007,
2372 | "continent": "Asia",
2373 | "form": "Republic",
2374 | "gdp": 71.112,
2375 | "oil": 7.248,
2376 | "balance": -6.992
2377 | },
2378 | {
2379 | "name": "Vietnam",
2380 | "year": 2008,
2381 | "continent": "Asia",
2382 | "form": "Republic",
2383 | "gdp": 90.302,
2384 | "oil": 11.286,
2385 | "balance": -10.787
2386 | },
2387 | {
2388 | "name": "Vietnam",
2389 | "year": 2009,
2390 | "continent": "Asia",
2391 | "form": "Republic",
2392 | "gdp": 93.17,
2393 | "oil": 6.77,
2394 | "balance": -6.116
2395 | },
2396 | {
2397 | "name": "Vietnam",
2398 | "year": 2010,
2399 | "continent": "Asia",
2400 | "form": "Republic",
2401 | "gdp": 103.575,
2402 | "oil": 6.846,
2403 | "balance": -4.287
2404 | },
2405 | {
2406 | "name": "Vietnam",
2407 | "year": 2011,
2408 | "continent": "Asia",
2409 | "form": "Republic",
2410 | "gdp": 122.722,
2411 | "oil": 11.154,
2412 | "balance": 0.201
2413 | },
2414 | {
2415 | "name": "Vietnam",
2416 | "year": 2012,
2417 | "continent": "Asia",
2418 | "form": "Republic",
2419 | "gdp": 137.681,
2420 | "oil": 11.969,
2421 | "balance": 0.457
2422 | },
2423 | {
2424 | "name": "Vietnam",
2425 | "year": 2013,
2426 | "continent": "Asia",
2427 | "form": "Republic",
2428 | "gdp": 151.876,
2429 | "oil": 12.543,
2430 | "balance": -1.326
2431 | },
2432 | {
2433 | "name": "Zimbabwe",
2434 | "year": 2005,
2435 | "continent": "Africa",
2436 | "form": "Republic",
2437 | "gdp": 6.101,
2438 | "oil": 0.428,
2439 | "balance": -0.627
2440 | },
2441 | {
2442 | "name": "Zimbabwe",
2443 | "year": 2006,
2444 | "continent": "Africa",
2445 | "form": "Republic",
2446 | "gdp": 5.776,
2447 | "oil": 0.447,
2448 | "balance": -0.464
2449 | },
2450 | {
2451 | "name": "Zimbabwe",
2452 | "year": 2007,
2453 | "continent": "Africa",
2454 | "form": "Republic",
2455 | "gdp": 5.631,
2456 | "oil": 0.471,
2457 | "balance": -0.375
2458 | },
2459 | {
2460 | "name": "Zimbabwe",
2461 | "year": 2008,
2462 | "continent": "Africa",
2463 | "form": "Republic",
2464 | "gdp": 4.681,
2465 | "oil": 0.53,
2466 | "balance": -1.01
2467 | },
2468 | {
2469 | "name": "Zimbabwe",
2470 | "year": 2009,
2471 | "continent": "Africa",
2472 | "form": "Republic",
2473 | "gdp": 6.133,
2474 | "oil": 0.568,
2475 | "balance": -1.359
2476 | },
2477 | {
2478 | "name": "Zimbabwe",
2479 | "year": 2010,
2480 | "continent": "Africa",
2481 | "form": "Republic",
2482 | "gdp": 7.433,
2483 | "oil": 0.945,
2484 | "balance": -2.141
2485 | },
2486 | {
2487 | "name": "Zimbabwe",
2488 | "year": 2011,
2489 | "continent": "Africa",
2490 | "form": "Republic",
2491 | "gdp": 9.458,
2492 | "oil": 1.571,
2493 | "balance": -3.427
2494 | },
2495 | {
2496 | "name": "Zimbabwe",
2497 | "year": 2012,
2498 | "continent": "Africa",
2499 | "form": "Republic",
2500 | "gdp": 10.796,
2501 | "oil": 1.893,
2502 | "balance": -2.199
2503 | },
2504 | {
2505 | "name": "Zimbabwe",
2506 | "year": 2013,
2507 | "continent": "Africa",
2508 | "form": "Republic",
2509 | "gdp": 12.293,
2510 | "oil": 1.927,
2511 | "balance": -2.464
2512 | }
2513 | ];
--------------------------------------------------------------------------------
/sources/models/positions.js:
--------------------------------------------------------------------------------
1 | export function getPositions(){
2 | return positions;
3 | }
4 |
5 | const positions = [
6 | { id:"$empty", value:"-- Not selected --", $empty:true },
7 | { id:"1", value:"Chief Scientific Officer", color:"#8664C6" },
8 | { id:"2", value:"Chief Technology Officer", color:"#1CA1C1" },
9 | { id:"3", value:"Chief Executive Officer", color:"#F8643F" }
10 | ];
11 |
--------------------------------------------------------------------------------
/sources/models/progress.js:
--------------------------------------------------------------------------------
1 | const data = [{"id":1,"week":1,"tasks":29},{"id":2,"week":3,"tasks":45},{"id":3,"week":7,"tasks":56},{"id":4,"week":9,"tasks":56},{"id":5,"week":11,"tasks":62},{"id":6,"week":14,"tasks":86},{"id":7,"week":18,"tasks":73},{"id":8,"week":22,"tasks":58},{"id":9,"week":28,"tasks":50},{"id":10,"week":31,"tasks":25},{"id":11,"week":35,"tasks":68},{"id":12,"week":39,"tasks":95},{"id":13,"week":45,"tasks":87},{"id":14,"week":47,"tasks":58},{"id":15,"week":49,"tasks":70},{"id":16,"week":52,"tasks":80}];
2 |
3 | export function getProgress(){
4 | return data;
5 | }
--------------------------------------------------------------------------------
/sources/models/progressch.js:
--------------------------------------------------------------------------------
1 | export function shuffle(dataA) {
2 | let a = webix.copy(dataA || data);
3 | for (let i = a.length - 1; i > 0; i--) {
4 | const j = Math.floor(Math.random() * (i + 1));
5 | [a[i], a[j]] = [a[j], a[i]];
6 | }
7 | return a;
8 | }
9 |
10 | const data = [
11 | { id:1, year:1, a:10, b:50 },
12 | { id:2, year:2, a:15, b:60 },
13 | { id:3, year:3, a:7, b:53 },
14 | { id:4, year:4, a:13, b:70 },
15 | { id:5, year:5, a:16, b:67 },
16 | { id:6, year:6, a:9, b:56 },
17 | { id:7, year:7, a:9, b:60 },
18 | { id:8, year:8, a:12, b:67 },
19 | { id:9, year:9, a:16, b:70 },
20 | { id:10, year:10, a:20, b:75 },
21 | { id:11, year:11, a:17, b:70 },
22 | { id:12, year:12, a:29, b:89 },
23 | { id:13, year:13, a:33, b:94 },
24 | { id:14, year:14, a:40, b:91 },
25 | { id:15, year:15, a:35, b:85 },
26 | { id:16, year:16, a:33, b:80 },
27 | { id:17, year:17, a:45, b:73 },
28 | { id:18, year:18, a:56, b:78 },
29 | { id:19, year:19, a:58, b:81 },
30 | { id:20, year:20, a:45, b:76 },
31 | { id:21, year:21, a:23, b:65 },
32 | { id:22, year:22, a:43, b:67 },
33 | { id:23, year:23, a:56, b:73 },
34 | { id:24, year:24, a:34, b:64 },
35 | { id:25, year:25, a:56, b:69 },
36 | { id:26, year:26, a:34, b:56 },
37 | { id:27, year:27, a:30, b:51 },
38 | { id:28, year:28, a:34, b:59 },
39 | { id:29, year:29, a:56, b:63 },
40 | { id:30, year:30, a:60, b:69 },
41 | { id:31, year:31, a:64, b:76 },
42 | { id:32, year:32, a:70, b:80 }
43 | ];
44 | export function getProgress(){
45 | return data;
46 | }
--------------------------------------------------------------------------------
/sources/models/projects.js:
--------------------------------------------------------------------------------
1 | export function getProjects(){
2 | return projects;
3 | }
4 |
5 | const projects = [
6 | { tasks17:"54", tasks18:"78", project:"80" },
7 | { tasks18:"54", tasks17:"34", project:"70" },
8 | { tasks17:"84", tasks18:"50", project:"60" },
9 | { tasks17:"47", tasks18:"73", project:"50" },
10 | { tasks17:"64", tasks18:"53", project:"40" },
11 | { tasks17:"45", tasks18:"73", project:"30" },
12 | ];
--------------------------------------------------------------------------------
/sources/models/projectsd.js:
--------------------------------------------------------------------------------
1 | import { shuffle } from "models/progressch";
2 |
3 | const data = [
4 | { value:"Prepare finance report", checked:true },
5 | { value:"Solex project strategy meeting", checked:0 },
6 | { value:"WestEurope partners call", checked:0 },
7 | { value:"Prepare presentation for summer conference", checked:0 },
8 | { value:"Check messages", checked:true },
9 | { value:"Market research analysis", checked:true },
10 | { value:"Prepare presentation for spring conference", checked:0 },
11 | { value:"Discussing new theme for website", checked:true },
12 | { value:"WestEurope partners call", checked:true },
13 | { value:"Scroll task", checked:true }
14 | ];
15 |
16 | export function getProjects(){
17 | return shuffle(data);
18 | }
--------------------------------------------------------------------------------
/sources/models/reviews.js:
--------------------------------------------------------------------------------
1 | export function getReviews(){
2 | return data;
3 | }
4 |
5 | var dateFormat = webix.Date.strToDate("%Y-%m-%d");
6 |
7 | const data = new webix.DataCollection({
8 | data:[
9 | { id:1, mark:1, photo:"whitten", name:"Claire Whitten", stars:5, date:"2019-01-23", text:"Morgan always completes any assignment on time and to a high standard. No absences without valid reason in 6 months. Polite, courteous, respectful and charming at all times and in all situations, without being obsequious.", tag:"New" },
10 | { id:2, mark:0, photo:"sho", name:"Danielle Sho", stars:5, date:"2019-01-19", text:"Unfailingly courteous even when dealing with a difficult person or situation. Morgan has outstanding artistic or craft skills, bringing creativity and originality to the task.", tag:"Pending" },
11 | { id:3, mark:0, photo:"ilyushin", name:"Mikhaila Ilyushin", stars:5, date:"2019-01-12", text:"Has a natural flair for jobs involving the use of the hands or hand-tools. Able to cope expertly with intricate detail. Morgan pays great attention to detail. She always presented work properly checked and completely free of error.", tag:"New" },
12 | { id:4, mark:1, photo:"yu", name:"Alex Yu", stars:5, date:"2019-01-9", text:"Aiming for a top job in the organization. She sets very high standards, aware that this will bring attention and promotion. Reaches a decision rapidly after taking account of all likely outcomes and estimating the route most likely to bring success.", tag:"Pending" },
13 | { id:5, mark:0, photo:"winslow", name:"Joan Winslow", stars:5, date:"2019-01-3", text:"Morgan is willing to face physical risks and danger, and appears to do so without fear. Sets an example of bravery that inspires others. Always succeeds in explaining ideas clearly. Others find Morgan easy to understand.", tag:"New" }
14 | ],
15 | scheme:{
16 | $init:(obj) => {
17 | obj.date = dateFormat(obj.date);
18 | }
19 | }
20 | });
21 |
--------------------------------------------------------------------------------
/sources/models/sheet.js:
--------------------------------------------------------------------------------
1 | const spreadsheet_data = {
2 | "styles": [
3 | ["top","#FFEFEF;#6E6EFF;center;'PT Sans', Tahoma;17px;"],
4 | ["subtop","#818181;#EAEAEA;center;'PT Sans', Tahoma;15px;;;bold;top;;"],
5 | ["sales","#818181;;center;'PT Sans', Tahoma;15px;;;bold;top;;"],
6 | ["total","#818181;;right;'PT Sans', Tahoma;15px;;;bold;top;;"],
7 | ["count","#818181;#EAEAEA;center;'PT Sans', Tahoma;15px;;;;top;;"],
8 | ["calc-top","#818181;#EAEAEA;;'PT Sans', Tahoma;15px;;;bold;top;;"],
9 | ["calc-other","#818181;#EAEAEA;;'PT Sans', Tahoma;15px;;;bold;middle;;"],
10 | ["values","#000;#fff;right;'PT Sans', Tahoma;15px;;;;top;;;price"]
11 | ],
12 | "sizes": [
13 | [0,1,125],
14 | [0,3,137],
15 | [0,4,137],
16 | [0,5,137]
17 | ],
18 | "data": [
19 | [1,1,"Report - July 2016","top"],
20 | [2,1,"Region","subtop"],
21 | [2,2,"Country","subtop"],
22 | [2,3,"Sales - Group A","sales"],
23 | [2,4,"Sales - Group B","sales"],
24 | [2,5,"Total","total"],
25 | [3,1,"Europe","count"],
26 | [3,2,"Germany","count"],
27 | [3,3,"188400","values"],
28 | [3,4,"52000","values"],
29 | [3,5,"=C3+D3","values"],
30 | [4,1,"Europe","count"],
31 | [4,2,"France","count"],
32 | [4,3,"192200","values"],
33 | [4,4,"12000","values"],
34 | [4,5,"=C4+D4","values"],
35 | [5,1,"Europe","count"],
36 | [5,2,"Poland","count"],
37 | [5,3,"68900","values"],
38 | [5,4,"8000","values"],
39 | [5,5,"=C5+D5","values"],
40 | [6,1,"Asia","count"],
41 | [6,2,"Japan","count"],
42 | [6,3,"140000","values"],
43 | [6,4,"14000","values"],
44 | [6,5,"=C6+D6","values"],
45 | [7,1,"Asia","count"],
46 | [7,2,"China","count"],
47 | [7,3,"50000","values"],
48 | [7,4,"4800","values"],
49 | [7,5,"=C7+D7","values"]
50 | ],
51 | "spans": [
52 | [1,1,5,1]
53 | ]
54 | };
55 |
56 | export function getSheetData(){
57 | return spreadsheet_data;
58 | }
--------------------------------------------------------------------------------
/sources/models/statistics.js:
--------------------------------------------------------------------------------
1 | export function getStats(){
2 | return stats;
3 | }
4 |
5 | const stats = [
6 | {"week":1,"tasks18":25},
7 | {"week":2,"tasks17":20},
8 | {"week":4,"tasks18":50},
9 | {"week":6,"tasks17":25},
10 | {"week":8,"tasks18":38},
11 | {"week":10,"tasks17":8},
12 | {"week":10,"tasks18":40},
13 | {"week":13,"tasks18":58},
14 | {"week":15,"tasks17":40},
15 | {"week":17,"tasks18":59},
16 | {"week":19,"tasks18":79},
17 | {"week":20,"tasks17":22},
18 | {"week":24,"tasks18":25},
19 | {"week":28,"tasks17":85},
20 | {"week":31,"tasks18":57},
21 | {"week":36,"tasks17":68},
22 | {"week":36,"tasks18":95},
23 | {"week":40,"tasks17":84},
24 | {"week":42,"tasks18":33},
25 | {"week":44,"tasks17":73},
26 | {"week":46,"tasks18":51},
27 | {"week":47,"tasks18":29},
28 | {"week":52,"tasks17":98},
29 | {"week":52,"tasks18":79}
30 | ];
31 |
--------------------------------------------------------------------------------
/sources/models/stats.js:
--------------------------------------------------------------------------------
1 | export function getStats(){
2 | return data;
3 | }
4 |
5 | const data = [
6 | { id:"1", value:"Manufacturing", number:294, type:"all" },
7 | { id:"2", value:"Wholesale stores", number:335, type:"first" },
8 | { id:"3", value:"Retail stores", number:422, type:"second" }
9 | ];
10 |
--------------------------------------------------------------------------------
/sources/models/tags.js:
--------------------------------------------------------------------------------
1 | export function getTags(){
2 | return tags;
3 | }
4 |
5 | const tags = [
6 | { id:"1", value:"New", color:"#8664C6" },
7 | { id:"2", value:"Customer", color:"#BCAAE0" },
8 | { id:"3", value:"Supplier", color:"#1CA1C1" },
9 | { id:"4", value:"Discount", color:"#5ABBD2" },
10 | { id:"5", value:"Old Buddy", color:"#FDBF4C" },
11 | { id:"6", value:"Avid Supporter", color:"#F8643F" }
12 | ];
13 |
--------------------------------------------------------------------------------
/sources/models/useractivity.js:
--------------------------------------------------------------------------------
1 | export function getUserActivity(){
2 | return users;
3 | }
4 |
5 | const users = [
6 | { id:"7", country:"Brazil", users:70 },
7 | { id:"8", country:"Canada", users:80 },
8 | { id:"9", country:"China", users:90 }
9 | ];
10 |
--------------------------------------------------------------------------------
/sources/styles/app.css:
--------------------------------------------------------------------------------
1 | .webixappstart{
2 | opacity:0;
3 | }
4 | .webixapp{
5 | transition: opacity 500ms;
6 | opacity: 1;
7 | }
8 | .logo{
9 | background:url(webix-logo.svg) 2px -7px no-repeat;
10 | }
11 | .webix_header.webix_dark .webix_template{
12 | text-align:center;
13 | line-height: 56px;
14 | }
15 | .avatar .mainphoto{
16 | border-radius:25px;
17 | widows:40px;
18 | height:40px;
19 | position:relative;
20 | top:-4px;
21 | }
22 | .status{
23 | position:relative;
24 | top:-25px;
25 | left:25px;
26 | font-size:10px !important;
27 | text-shadow: -1px 0 #ffffff, 0 1px #ffffff, 1px 0 #ffffff, 0 -1px #ffffff;
28 | }
29 | /*Dashboard*/
30 | .currencies_list .webix_list_item{
31 | line-height: 60px;
32 | }
33 | .currencies_list .icon{
34 | float:left;
35 | display: inline-block;
36 | width: 48px;
37 | height: 48px;
38 | line-height: 48px;
39 | border-radius: 24px;
40 | text-align: center;
41 | font-size: 24px;
42 | margin-right: 16px;
43 | margin-top: 6px;
44 | }
45 | .currencies_list .value{
46 | font-size: 16px;
47 | font-weight: 500;
48 | }
49 | .currencies_list .delta{
50 | font-size: 16px;
51 | font-weight: 500;
52 | float:right;
53 | margin-right: 8px;
54 | }
55 | .currencies_list .delta.red{
56 | color:#FF5C4C;
57 | }
58 | .currencies_list .delta.green{
59 | color:#55CD97;
60 | }
61 | .reviews .img{
62 | float:left;
63 | margin-top:18px;
64 | margin-right:16px;
65 | height:100%;
66 | }
67 | .reviews .img img{
68 | background-color:red;
69 | border-radius:25px;
70 | height:48px;
71 | width:48px;
72 | }
73 | .reviews .text{
74 | margin-top:10px;
75 | }
76 | .reviews .text .name{
77 | font-weight: 500;
78 | display:block;
79 | }
80 | .reviews .text .webix_icon.mdi-bookmark-check,
81 | .reviews .text .webix_icon.mdi-bookmark-plus{
82 | float:right;
83 | margin-top:4px;
84 | margin-right:4px;
85 | }
86 | .reviews .text .webix_icon.mdi-bookmark-check{
87 | color: #1CA1C1;
88 | }
89 | .reviews .text .webix_icon.mdi-bookmark-plus{
90 | color: #94A1B3;
91 | }
92 | .reviews .text .stars{
93 | width:90px;
94 | margin-left:-4px;
95 | position: relative;
96 | top:-4px;
97 | }
98 | .reviews .text .star{
99 | margin-right:-3px !important;
100 | font-size:16px !important;
101 | }
102 | .reviews .text .stars .star.gold{
103 | color:#FDBF4C;
104 | }
105 | .reviews .text .stars .star.grey{
106 | color:#94A1B3;
107 | }
108 | .reviews .text .date{
109 | color: #94A1B3;
110 | position: relative;
111 | top:-4px;
112 | margin-left:8px;
113 | }
114 | .reviews .text .message{
115 | display:block;
116 | max-height:48px;
117 | overflow: hidden;
118 | line-height: 22px;
119 | position: relative;
120 | top:-6px;
121 | }
122 | .reviews .text .tag{
123 | padding:4px 10px;
124 | border-radius: 100px;
125 | color:#ffffff;
126 | font-weight: 500;
127 | font-size: 12px;
128 | line-height: 20px;
129 | }
130 | .reviews .text .tag.New{
131 | background: #1CA1C1;
132 | }
133 | .reviews .text .tag.Pending{
134 | background: #55CD97;
135 | }
136 | .webix_tooltip.review_tooltip{
137 | width:300px;
138 | }
139 | .stats .title{
140 | font-weight:500;
141 | font-size: 16px;
142 | line-height: 20px;
143 | display:block;
144 | padding-top:8px;
145 | }
146 | .stats .webix_list_item{
147 | padding:2px 20px;
148 | }
149 | .progress_bar_element{
150 | background-color: #F4F5F9;
151 | border-radius: 4px;
152 | width:100%;
153 | height:6px;
154 | margin-top:5px;
155 | margin-bottom:9px;
156 | }
157 | .progress_result{
158 | height:100%;
159 | border-radius: 4px;
160 | }
161 | .progress_result.all{
162 | background: #1CA1C1;
163 | }
164 | .progress_result.first{
165 | background: #55CD97;
166 | }
167 | .progress_result.second{
168 | background: #FDBF4C;
169 | }
170 |
171 | .check_tree .webix_tree_branch_1{
172 | padding:4px;
173 | }
174 | .check_tree .webix_tree_checkbox{
175 | margin:0 10px;
176 | }
177 | .check_tree .webix_scroll_cont > .webix_tree_leaves{
178 | padding:16px 8px;
179 | }
180 | .check_tree .webix_tree_item.webix_selected{
181 | background:#ffffff !important;
182 | }
183 | .check_tree .webix_tree_item span.checked,
184 | .check_tree .webix_tree_item.webix_selected span.checked{
185 | text-decoration: line-through;
186 | }
187 | .check_tree .webix_tree_item span,
188 | .check_tree .webix_tree_item.webix_selected span{
189 | margin-left:6px;
190 | }
191 |
192 | /* headers (templates) */
193 | .webix_view.chart_header{
194 | text-align: center;
195 | }
196 | /* transactions grid */
197 | .method{
198 | margin-bottom:-8px;
199 | }
200 | /* features grid */
201 | .header_center, .column_center{
202 | text-align:center;
203 | }
204 | .feature.webix_icon.wxi-plus-circle{
205 | color:#55CD97;
206 | }
207 | .feature.webix_icon.wxi-minus-circle{
208 | color:#DADEE0;
209 | }
210 | /* widgets grid */
211 | .yellow{
212 | color: #FDBF4C;
213 | }
214 | .green{
215 | color: #55CD97;
216 | }
217 | .blue{
218 | color: #1CA1C1;
219 | }
220 |
221 | .custom_dark{
222 | background: #565B67;
223 | font-size:18px;
224 | color: #ffffff;
225 | font-weight: normal;
226 | letter-spacing: 1px;
227 | text-align: center;
228 | }
229 | .custom_dark .webix_template {
230 | line-height: 55px;
231 | }
232 |
233 | /* forms */
234 | .radio_demo .webix_radio_option{
235 | margin-bottom:20px;
236 | }
237 |
238 | .webix_view.form_photo > div{
239 | padding:0px;
240 | }
241 |
242 | /*pivot*/
243 | .webix_pivot_configure_toolbar .webix_el_label .webix_el_box,
244 | .webix_pivot_configure_toolbar .webix_el_label {
245 | margin-right:5px;
246 | overflow: visible;
247 | }
--------------------------------------------------------------------------------
/sources/styles/webix-logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sources/views/charts/compare.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 | import {getProjects} from "models/projects";
3 |
4 | export default class CompareView extends JetView {
5 | config(){
6 | return {
7 | type:"clean",
8 | gravity:2,
9 | rows:[
10 | { template:"Total number of tasks by projects", type:"header", css:"chart_header" },
11 | {
12 | localId:"chart",
13 | view:"chart",
14 | type:"barH",
15 | radius:0,
16 | barWidth:16,
17 | yAxis:{
18 | template:"#project#", lines:false, color:"#EDEFF0"
19 | },
20 | xAxis:{
21 | start:0, step:15, end:90, color:"#fff", lineColor:"#EDEFF0"
22 | },
23 | legend:{
24 | values:[
25 | { text:new Date().getFullYear()-1,color:"#8664C6" },
26 | { text:new Date().getFullYear(),color:"#1CA1C1" }
27 | ],
28 | valign:"bottom", align:"right", layout:"x",
29 | margin:4, padding:10,
30 | marker:{
31 | type:"round", width:7, height:8
32 | }
33 | },
34 | series:[
35 | {
36 | value:"#tasks17#",
37 | color:"#8664C6",
38 | tooltip:{
39 | template:"#tasks17#"
40 | }
41 | },
42 | {
43 | value:"#tasks18#",
44 | color:"#1CA1C1",
45 | tooltip:{
46 | template:"#tasks18#"
47 | }
48 | }
49 | ],
50 | padding:{ left:50, top:5, bottom:44 }
51 | }
52 | ]
53 | };
54 | }
55 | init(){
56 | this.$$("chart").parse(getProjects());
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/sources/views/charts/geo.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 | import {getUserActivity} from "models/useractivity";
3 |
4 | export default class GeoView extends JetView {
5 | config(){
6 | return {
7 | gravity:2.5, height:500,
8 | type:"form", rows:[
9 | {
10 | view:"geochart",
11 | localId:"geo",
12 | borderless:true,
13 | // provide your own Google API key
14 | // https://developers.google.com/maps/documentation/javascript/get-api-key
15 | key:"AIzaSyAi0oVNVO-e603aUY8SILdD4v9bVBkmiTg",
16 | chart:{
17 | colorAxis:{
18 | colors:[ "#FDBF4C", "#1CA1C1", "#FF5C4C" ]
19 | },
20 | legend:"none",
21 | datalessRegionColor:"#D9D8D7"
22 | }
23 | }
24 | ]
25 | };
26 | }
27 | init(){
28 | this.$$("geo").parse(getUserActivity());
29 | }
30 | }
--------------------------------------------------------------------------------
/sources/views/charts/index.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 |
3 | export default class ChartsView extends JetView{
4 | config(){
5 | return {
6 | view:"scrollview", body:{
7 | type:"space",
8 | rows:[
9 | {
10 | type:"wide", cols:[
11 | { $subview:"charts.time" },
12 | { $subview:"charts.progress" }
13 | ]
14 | },
15 | {
16 | $subview:"charts.statistics"
17 | },
18 | {
19 | type:"wide", cols:[
20 | { $subview:"charts.geo" },
21 | { $subview:"charts.compare" }
22 | ]
23 | }
24 | ]
25 | }
26 | };
27 | }
28 | }
--------------------------------------------------------------------------------
/sources/views/charts/progress.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 | import { getProgress } from "models/progress";
3 |
4 | export default class ProgressView extends JetView {
5 | config(){
6 | return {
7 | type:"clean",
8 | gravity:3,
9 | minWidth:500,
10 | height:300,
11 | rows:[
12 | { template:"Individual employee's progress", type:"header", css:"chart_header" },
13 | {
14 | view:"chart",
15 | border:true,
16 | localId:"progress",
17 | type:"splineArea",
18 | value:"#tasks#",
19 | color:"#1CA1C1",
20 | borderWidth:2,
21 | alpha:0.1,
22 | line:{
23 | width:3
24 | },
25 | xAxis:{
26 | template:"#week#", lines:false, color:"#EDEFF0"
27 | },
28 | yAxis:{
29 | start:0, end:100, step:20, color:"#fff", lineColor:"#EDEFF0"
30 | },
31 | tooltip:{
32 | template:"Week #week#
#tasks# tasks completed"
33 | },
34 | padding:{
35 | top:10
36 | }
37 | }
38 | ]
39 | };
40 | }
41 | init(){
42 | let chart = this.$$("progress");
43 | chart.parse(webix.copy(getProgress()));
44 | this.newLegend("Keith Thompson");
45 | }
46 | newLegend(name){
47 | let chart = this.$$("progress");
48 | chart.define("legend", {
49 | values:[
50 | { text:name, color:"#1CA1C1" }
51 | ],
52 | align:"right", layout:"x", valign:"bottom", margin:4, padding:10,
53 | marker:{
54 | type:"round", width:7, height:8
55 | }
56 | });
57 | chart.refresh();
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/sources/views/charts/statistics.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 | import {getStats} from "models/statistics";
3 |
4 | export default class StatisticsView extends JetView{
5 | config(){
6 | return {
7 | height:340, type:"clean", rows:[
8 | { template:"Total number of tasks completed", type:"header", css:"chart_header" },
9 | {
10 | localId:"stats",
11 | view:"chart",
12 | type:"scatter",
13 | height:300,
14 | xValue:"#week#",
15 | padding:{
16 | top:4, bottom:44
17 | },
18 | xAxis:{
19 | start:0, end:53, step:2, lines:false, color:"#EDEFF0",
20 | template:obj => obj == 0 ? "" : obj
21 | },
22 | yAxis:{
23 | start:0, step:25, end:100, color:"#fff", lineColor:"#EDEFF0"
24 | },
25 | legend:{
26 | values:[
27 | { text:new Date().getFullYear()-1, color:"#8664C6" },
28 | { text:new Date().getFullYear(), color:"#1CA1C1" }
29 | ],
30 | align:"right", layout:"x", valign:"bottom",
31 | margin:4, padding:10,
32 | marker:{
33 | type:"round", width:7, height:8
34 | }
35 | },
36 | series:[
37 | {
38 | value:"#tasks17#",
39 | disableLines:false,
40 | item:{
41 | borderColor:"#8664C6", borderWidth:2,
42 | radius:3
43 | },
44 | line:{ color:"#8664C6", width:2 },
45 | tooltip:{
46 | template:"Week #week#
#tasks17# tasks completed"
47 | }
48 | },
49 | {
50 | value:"#tasks18#",
51 | item:{
52 | borderColor:"#1CA1C1", borderWidth:2, radius:3
53 | },
54 | line:{ color:"#1CA1C1", width:2 },
55 | tooltip:{
56 | template:"Week #week#
#tasks18# tasks completed"
57 | }
58 | }
59 | ]
60 | }
61 | ]
62 | };
63 | }
64 | init(){
65 | this.$$("stats").parse(getStats());
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/sources/views/charts/time.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 | import { getHours } from "models/hours";
3 |
4 | export default class TimeView extends JetView {
5 | config(){
6 | return {
7 | type:"clean",
8 | height:320, minWidth:215,
9 | rows:[
10 | { template:"Hours spent, %", type:"header", css:"chart_header" },
11 | {
12 | localId:"hours",
13 | view:"chart",
14 | type:"donut",
15 | value:"#hours#",
16 | color:"#color#",
17 | innerRadius:64,
18 | shadow:0,
19 | lineColor:obj => obj.color,
20 | tooltip:{
21 | template:"#hours#"
22 | },
23 | legend:{
24 | width:100,
25 | align:"right",
26 | valign:"middle",
27 | template:"#activity#",
28 | marker:{
29 | type:"round", width:7, height:8
30 | }
31 | },
32 | padding:{
33 | top:10, bottom:20
34 | }
35 | }
36 | ]
37 | };
38 | }
39 | init(view){
40 | view.queryView({ view:"chart" }).parse(getHours());
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/sources/views/dash/currencies.js:
--------------------------------------------------------------------------------
1 | import { JetView } from "webix-jet";
2 |
3 | function openSearch(){
4 | this.config.icon = (this.config.icon == "wxi-close") ? "mdi mdi-magnify" : "wxi-close";
5 | const input = this.$scope.$$("srch:field");
6 | input.isVisible() ? input.hide() : input.show();
7 | const header = this.$scope.$$("header");
8 | header.isVisible() ? header.hide() : header.show();
9 | this.refresh();
10 | }
11 |
12 | export default class CurrenciesView extends JetView {
13 | config(){
14 | return {
15 | width:387,
16 | rows:[
17 | { type:"toolbar", height:48, padding:{ right:8 }, cols:[
18 | { template:"Exchange rates", type:"header", borderless:true, localId:"header" },
19 | {
20 | view:"text", localId:"srch:field", placeholder:"Type to search", hidden:true,
21 | on:{
22 | onViewShow(){
23 | const self = this;
24 | webix.delay(function(){ self.focus(); });
25 | },
26 | onTimedKeyPress(){
27 | const input = this.getValue().toLowerCase();
28 | this.$scope.$$("currencies").filter(obj => obj.name.indexOf(input) !== -1);
29 | }
30 | }
31 | },
32 | { view:"icon", icon:"mdi mdi-magnify", click:openSearch}
33 | ]},
34 | {
35 | view:"list", localId:"currencies",
36 | css:"currencies_list",
37 | select:true,
38 | yCount: 4,
39 | type:{
40 | height:64,
41 | template:obj => {
42 | const delta = parseFloat(obj.delta) > 0 ? "green" : "red";
43 | return `
44 | ${obj.icon}
45 | $${obj.value}
46 | ${obj.delta}`;
47 | }
48 | },
49 | on:{
50 | onItemClick:(id) => {
51 | this.app.callEvent("currency:select", [id]);
52 | }
53 | }
54 | }
55 | ]
56 | };
57 | }
58 | init(){
59 | this.$$("currencies").parse([
60 | { name:"euro", icon:"€", value:321.12, delta:"-0.2", color:"#1CA1C1" },
61 | { name:"dollar", icon:"$", value:345.76, delta:"+0.2", color:"#55CD97" },
62 | { name:"yen", icon:"¥", value:567.26, delta:"+0.3", color:"#FDBF4C" },
63 | { name:"pound", icon:"£", value:234.64, delta:"-0.1", color:"#FF5C4C" }
64 | ]);
65 | this.$$("currencies").select(this.$$("currencies").getFirstId());
66 | }
67 | }
--------------------------------------------------------------------------------
/sources/views/dash/index.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 |
3 | export default class TopView extends JetView{
4 | config(){
5 | return {
6 | type:"space", rows:[
7 | {
8 | type:"wide",
9 | cols:[ { $subview:"dash.currencies" }, { $subview:"dash.progress" } ]
10 | },
11 | { type:"wide", cols:[
12 | { $subview:"dash.reviews" },
13 | { type:"wide", rows:[
14 | { $subview:"dash.stats" },
15 | { $subview:"dash.projects" }
16 | ]}
17 | ]}
18 | ]
19 | };
20 | }
21 | }
--------------------------------------------------------------------------------
/sources/views/dash/progress.js:
--------------------------------------------------------------------------------
1 | import { JetView } from "webix-jet";
2 | import { getProgress, shuffle } from "../../models/progressch";
3 |
4 | function openSearch(){
5 | this.config.icon = (this.config.icon == "wxi-close") ? "mdi mdi-magnify" : "wxi-close";
6 | const input = this.$scope.$$("srch:field");
7 | input.isVisible() ? input.hide() : input.show();
8 | const header = this.$scope.$$("header");
9 | header.isVisible() ? header.hide() : header.show();
10 | this.refresh();
11 | }
12 |
13 | export default class ProgressView extends JetView {
14 | config(){
15 | return {
16 | rows:[
17 | { type:"toolbar", height:48, padding:{ right:8 }, cols:[
18 | { template:"2018 year stats", type:"header", borderless:true, localId:"header" },
19 | {
20 | view:"text", localId:"srch:field", placeholder:"Type to filter values above (e.g. 30)", hidden:true,
21 | on:{
22 | onViewShow(){
23 | const self = this;
24 | webix.delay(function(){ self.focus(); });
25 | },
26 | onTimedKeyPress(){
27 | const input = parseInt(this.getValue());
28 | if (!isNaN(input)){
29 | this.$scope.$$("chart").filter(obj => obj.a > input);
30 | }
31 | else {
32 | this.$scope.$$("chart").filter();
33 | }
34 | }
35 | }
36 | },
37 | { view:"icon", icon:"mdi mdi-magnify", click:openSearch },
38 | ]},
39 | {
40 | view:"chart", type:"stackedBar", localId:"chart",
41 | yAxis:{ template:"", lineColor:"#fff", color:"#fff" },
42 | xAxis:{ lineColor:"#fff", color:"#fff", template:"" },
43 | series:[
44 | {
45 | value:"#a#",
46 | color: "#1CA1C1",
47 | tooltip:{
48 | template:"#a#"
49 | }
50 | },
51 | {
52 | value:"#b#",
53 | color: "#EBEDF0",
54 | tooltip:{
55 | template:"#b#"
56 | }
57 | }
58 | ],
59 | padding:{ left:30, bottom:30 }, barWidth:24
60 | }
61 | ]
62 | };
63 | }
64 | init(){
65 | this.$$("chart").parse(getProgress());
66 |
67 | this.on(this.app, "currency:select",(id) => {
68 | if (!this.ListId || this.ListId !== id){
69 | this.$$("chart").clearAll();
70 | this.$$("chart").parse(shuffle());
71 | this.ListId = id;
72 | }
73 | });
74 | }
75 | }
--------------------------------------------------------------------------------
/sources/views/dash/projects.js:
--------------------------------------------------------------------------------
1 | import { JetView } from "webix-jet";
2 | import { getProjects } from "models/projectsd";
3 |
4 | function getTree(label){
5 | return {
6 | id:label, view:"tree", css:"check_tree",
7 | type:{
8 | checkbox:function(obj){
9 | if (obj.nocheckbox)
10 | return "";
11 |
12 | return `
13 | `;
14 | },
15 | template:(obj, common) => {
16 | return `${common.checkbox(obj)} ${obj.value}`;
17 | }
18 | },
19 | select:true,
20 | on:{
21 | onItemCheck(){
22 | this.refresh();
23 | }
24 | }
25 | };
26 | }
27 |
28 | export default class ProjectsView extends JetView {
29 | config(){
30 | return {
31 | rows:[
32 | {
33 | view:"tabbar", multiview:true, options:[
34 | { id:"all", value:"To-do list (all)" },
35 | { id:"first", value:"Today" },
36 | { id:"second", value:"Tomorrow" }
37 | ]
38 | },
39 | {
40 | animate:false,
41 | cells:[
42 | getTree("all"),
43 | getTree("first"),
44 | getTree("second")
45 | ]
46 | }
47 | ]
48 | };
49 | }
50 | init(){
51 | const trees = this.getRoot().queryView("tree","all");
52 | for (let i = 0; i < trees.length; i++){
53 | trees[i].parse(getProjects());
54 | }
55 | }
56 | }
--------------------------------------------------------------------------------
/sources/views/dash/reviews.js:
--------------------------------------------------------------------------------
1 | import { JetView } from "webix-jet";
2 | import { getReviews } from "models/reviews";
3 |
4 | function openSearch(){
5 | this.config.icon = (this.config.icon == "wxi-close") ? "mdi mdi-magnify" : "wxi-close";
6 | const input = this.$scope.$$("srch:field");
7 | input.isVisible() ? input.hide() : input.show();
8 | const header = this.$scope.$$("header");
9 | header.isVisible() ? header.hide() : header.show();
10 | this.refresh();
11 | }
12 |
13 | export default class ReviewsView extends JetView {
14 | config(){
15 | const dateFormat = webix.Date.dateToStr("%j %M %Y");
16 | return {
17 | gravity: 1.25,
18 | rows:[
19 | {
20 | view:"toolbar", height:48, padding:{ right:8 }, elements:[
21 | { template:"Customer feedback", type:"header", borderless:true, localId:"header" },
22 | {
23 | view:"text", localId:"srch:field", placeholder:"Type to search by name", hidden:true,
24 | on:{
25 | onViewShow(){
26 | const self = this;
27 | webix.delay(function(){ self.focus(); });
28 | },
29 | onTimedKeyPress(){
30 | const input = this.getValue().toLowerCase();
31 | this.$scope.$$("list").filter(obj => obj.name.toLowerCase().indexOf(input) !== -1);
32 | }
33 | }
34 | },
35 | { view:"icon", icon:"mdi mdi-magnify", click:openSearch }
36 | ]
37 | },
38 | {
39 | view:"list", localId:"list", css:"reviews",
40 | type:{
41 | height:168,
42 | stars:(obj) => {
43 | let result = "";
44 | for (let i = 1; i <= 5; i++){
45 | let color = (i <= obj.stars) ? "gold" : "grey";
46 | result += ``;
47 | }
48 | return "" + result + "";
49 | },
50 | template:(obj,common) => `
51 |
52 |
53 |
54 | ${obj.name}
55 | ${common.stars(obj)}
56 | ${dateFormat(obj.date)}
57 | ${obj.text}
58 | ${obj.tag}
59 |
60 | `
61 | },
62 | tooltip:{
63 | template:"#text#", css:"review_tooltip"
64 | },
65 | onClick:{
66 | "mark":function(e,i){
67 | const old = this.getItem(i).mark;
68 | this.updateItem(i,{ mark:!old });
69 | return false;
70 | }
71 | }
72 | }
73 | ]
74 | };
75 | }
76 | init(){
77 | this.$$("list").parse(getReviews());
78 | }
79 | }
--------------------------------------------------------------------------------
/sources/views/dash/stats.js:
--------------------------------------------------------------------------------
1 | import { JetView } from "webix-jet";
2 | import { getStats } from "models/stats";
3 |
4 | function openSearch(){
5 | this.config.icon = (this.config.icon == "wxi-close") ? "mdi mdi-magnify" : "wxi-close";
6 | const input = this.$scope.$$("srch:field");
7 | input.isVisible() ? input.hide() : input.show();
8 | const header = this.$scope.$$("header");
9 | header.isVisible() ? header.hide() : header.show();
10 | this.refresh();
11 | }
12 |
13 | export default class StatsView extends JetView {
14 | config(){
15 | return {
16 | height: 209, rows:[
17 | { view:"toolbar", height:48, padding:{ right:8 }, elements:[
18 | { template:"Revenues", type:"header", borderless:true, localId:"header" },
19 | {
20 | view:"text", localId:"srch:field", placeholder:"Type to search by name", hidden:true,
21 | on:{
22 | onViewShow(){
23 | const self = this;
24 | webix.delay(function(){ self.focus(); });
25 | },
26 | onTimedKeyPress(){
27 | const input = this.getValue().toLowerCase();
28 | this.$scope.$$("list").filter(obj => obj.value.toLowerCase().indexOf(input) !== -1);
29 | }
30 | }
31 | },
32 | { view:"icon", icon:"mdi mdi-magnify", click:openSearch }
33 | ]},
34 | {
35 | view:"list", localId:"list", css:"stats",
36 | type:{
37 | height:"auto",
38 | template: obj => `${obj.value}
39 | `
42 | }
43 | }
44 | ]
45 | };
46 | }
47 | init(){
48 | this.$$("list").parse(getStats());
49 | }
50 | }
--------------------------------------------------------------------------------
/sources/views/files.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 |
3 | export default class SheetView extends JetView{
4 | config(){
5 | const config = {
6 | type:"space", rows:[{
7 | view:"filemanager",
8 | url:"https://docs.webix.com/filemanager-backend/"
9 | }]
10 | };
11 |
12 | return webix.require({
13 | "https://cdn.webix.com/pro/edge/filemanager/filemanager.js" :true,
14 | "https://cdn.webix.com/pro/edge/filemanager/filemanager.css":true
15 | }).then(() => config);
16 | }
17 | }
--------------------------------------------------------------------------------
/sources/views/forms/car.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 | import "webix/photo";
3 |
4 | function getCar(form){
5 | webix.delay(() => {
6 | const make = form.elements["make"].getValue();
7 | const model = form.elements["model"].getValue();
8 | form.elements["photo"].setValue(make+"_"+model);
9 | });
10 | }
11 |
12 | export default class CarView extends JetView {
13 | config(){
14 | const dateFormat = webix.Date.dateToStr("%d %M %Y");
15 |
16 | return {
17 | rows:[
18 | { template:"Vehicle sale", type:"header" },
19 | {
20 | view:"form", localId:"form", padding:24,
21 | elementsConfig:{ labelAlign:"right", labelWidth:100 },
22 | rows:[
23 | {
24 | view:"photo", localId:"photo",
25 | name:"photo",
26 | css:"form_photo",
27 | height:260,
28 | borderless:true
29 | },
30 | {
31 | view:"richselect", name:"make", label:"Make",
32 | placeholder:"Click to select", options:[
33 | { id:"transtar", value:"Transtar" },
34 | { id:"kasma", value:"Kasma" },
35 | { id:"typhon", value:"Typhon&Co" }
36 | ],
37 | on:{
38 | onChange:() => getCar(this.$$("form"))
39 | }
40 | },
41 | {
42 | view:"richselect", name:"model", label:"Model",
43 | placeholder:"Click to select",
44 | options:[
45 | { id:"coral", value:"Coral AF-13B72P" },
46 | { id:"thalos", value:"Thalos RD-D7N0H8" },
47 | { id:"pytheas", value:"Pytheas RY-1M4L1VE" }
48 | ],
49 | on:{
50 | onChange:() => getCar(this.$$("form"))
51 | }
52 | },
53 | {
54 | view:"datepicker", label:"Produced", name:"produced",
55 | placeholder:"Click to select", format:dateFormat
56 | },
57 | {
58 | view:"colorpicker", label:"Color", name:"color",
59 | value:"green"
60 | },
61 | {
62 | view:"radio", options:[ "Agree", "Disagree" ], label:"Notifications",
63 | name:"notifications", value:"Agree"
64 | },
65 | {
66 | view:"textarea", label:"Notes", name:"notes", placeholder:"Type text"
67 | }
68 | ]
69 | }
70 | ]
71 | };
72 | }
73 | init(){
74 | this.$$("form").setValues({
75 | make:"kasma", model:"coral", produced:"2056-05-05",
76 | color:"#DD0000", notifications:"Agree"
77 | });
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/sources/views/forms/checkboxes.js:
--------------------------------------------------------------------------------
1 | import { JetView } from "webix-jet";
2 |
3 | export default class Checkboxes extends JetView {
4 | config(){
5 | return {
6 | width:400, rows:[
7 | { template:"Checkbox", type:"header" },
8 | {
9 | type:"form", padding:24, margin:30, cols:[
10 | {
11 | margin:14, rows:[
12 | { view:"checkbox", labelRight:"Checked", labelWidth:0, value:1 },
13 | { view:"checkbox", labelRight:"Unchecked", labelWidth:0 },
14 | { view:"checkbox", labelRight:"Disabled", labelWidth:0, disabled:true }
15 | ]
16 | },
17 | {
18 | view:"radio", value:1, css:"radio_demo", options:[
19 | { id:1, value:"Checked" },
20 | { id:2, value:"Unchecked" }
21 | ],
22 | on:{
23 | onChange(newV, oldV){
24 | if (newV == 3) this.setValue(oldV);
25 | }
26 | }
27 | }
28 | ]
29 | }
30 | ]
31 | };
32 | }
33 | }
--------------------------------------------------------------------------------
/sources/views/forms/danger.js:
--------------------------------------------------------------------------------
1 | import { JetView } from "webix-jet";
2 |
3 | export default class DangerButtons extends JetView {
4 | config(){
5 | return {
6 | rows:[
7 | { template:"Alert buttons", type:"header" },
8 | {
9 | type:"form", padding:24, margin:14, rows:[
10 | { view:"button", label:"Danger", css:"webix_danger", inputWidth:100 },
11 | { view:"button", label:"Danger", css:"webix_danger", type:"icon", icon:"wxi-plus", inputWidth:120 },
12 | { view:"button", label:"Wide danger", css:"webix_danger", type:"icon", icon:"wxi-plus" }
13 | ]
14 | }
15 | ]
16 | };
17 | }
18 | }
--------------------------------------------------------------------------------
/sources/views/forms/index.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 |
3 | export default class FormsView extends JetView{
4 | config(){
5 | return {
6 | view:"scrollview", scroll:"xy", body:{
7 | type:"space", cols:[
8 | {
9 | type:"wide", width:500, rows:[
10 | { $subview:"forms.car" },
11 | { $subview:"forms.checkboxes" }
12 | ]
13 | },
14 | {
15 | type:"wide", rows:[
16 | { $subview:"forms.person" },
17 | {
18 | type:"wide", cols:[
19 | { $subview:"forms.primary" },
20 | { $subview:"forms.secondary" },
21 | { $subview:"forms.danger" },
22 | ]
23 | }
24 | ]
25 | }
26 | ]
27 | }
28 | };
29 | }
30 | }
--------------------------------------------------------------------------------
/sources/views/forms/person.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 | import {getCities} from "models/cities";
3 | import {getTags} from "models/tags";
4 | import {getPositions} from "models/positions";
5 | import "webix/photo";
6 |
7 | export default class PersonView extends JetView {
8 | config(){
9 | const dateFormat = webix.Date.dateToStr("%d %M %Y");
10 |
11 | const main_info = {
12 | margin:10,
13 | rows:[
14 | {
15 | view:"text", name:"fname",
16 | label:"First name", labelPosition:"top",
17 | placeholder:"First name",
18 | invalidMessage:"A name is required",
19 | tooltip:"Client's name is " + "#value#"
20 | },
21 | {
22 | view:"text", name:"lname",
23 | label:"Last name", labelPosition:"top",
24 | placeholder:"Last name",
25 | tooltip:"Client's last name is " + "#value#"
26 | },
27 | {
28 | view:"richselect", name:"position",
29 | localId:"position:combo",
30 | label:"Position", labelPosition:"top",
31 | placeholder:"Click to select",
32 | options:getPositions(),
33 | tooltip:obj => {
34 | return obj.value ? "The position that client occupies within their company" : "" + "Not selected" + "";
35 | }
36 | },
37 | {
38 | view:"text", name:"email",
39 | label:"Email", labelPosition:"top",
40 | placeholder:"Email",
41 | tooltip:obj => {
42 | return obj.value ? "The working email address of the client" : ""+"Not specified"+"";
43 | }
44 | },
45 | {
46 | view:"richselect", name:"city",
47 | localId:"cities:combo",
48 | label:"City, country", labelPosition:"top",
49 | placeholder:"Click to select",
50 | options:getCities(),
51 | tooltip:obj => {
52 | return obj.value ? "The city where the client works" : ""+"Not selected"+"";
53 | }
54 | }
55 | ]
56 | };
57 |
58 | const more_info = {
59 | margin:10,
60 | rows:[
61 | {
62 | view:"text", name:"address", label:"Address",
63 | labelPosition:"top", placeholder:"Address",
64 | tooltip:obj => {
65 | return obj.value ? "The address of the client's office" : ""+"Not specified"+"";
66 | }
67 | },
68 | {
69 | view:"datepicker", name:"birthday",
70 | label:"Birthday", labelPosition:"top",
71 | placeholder:"Click to select",
72 | format:dateFormat,
73 | tooltip:obj => {
74 | let result = "Client is ";
75 | if (obj.value){
76 | result += Math.floor((new Date() - obj.value) / (1000 * 60 * 60 * 24 * 365)) + " years old";
77 | let nearestBDay = new Date();
78 | nearestBDay.setMonth(obj.value.getMonth());
79 | nearestBDay.setDate(obj.value.getDate());
80 | if (nearestBDay < new Date()){
81 | webix.Date.add(nearestBDay, 1, "year");
82 | }
83 | result += "
" + "Next birthday is on " + dateFormat(nearestBDay);
84 | }
85 | return result;
86 | }
87 | },
88 | {
89 | view:"datepicker", name:"request",
90 | label:"First request", labelPosition:"top",
91 | placeholder:"Click to select",
92 | format:dateFormat
93 | },
94 | {
95 | view:"text", name:"phone", label:"Phone", labelPosition:"top", placeholder:"Phone"
96 | },
97 | {
98 | view:"radio", name:"notifications",
99 | label:"Notifications", labelPosition:"top",
100 | value:1,
101 | tooltip:obj => {
102 | return obj.id%2 ? "You will receive email notifications about actions performed by this client." : "You will receive no email notifications.";
103 | },
104 | options:[
105 | { id:1, value:"Agree" },
106 | { id:2, value:"Disagree" }
107 | ]
108 | }
109 | ]
110 | };
111 |
112 | const right_photo = {
113 | margin:10,
114 | rows:[
115 | {
116 | view:"photo", localId:"photo",
117 | name:"photo",
118 | css:"form_photo",
119 | width:260,
120 | height:260,
121 | borderless:true
122 | },
123 | {
124 | view:"multicombo", name:"tags",
125 | localId:"tags:combo",
126 | placeholder:"Click to add tags",
127 | options:getTags(),
128 | tooltip:obj => {
129 | return obj.value ? "The badges unlocked by the client" : ""+"No badges"+"";
130 | }
131 | }
132 | ]
133 | };
134 |
135 | const upper_section = {
136 | margin:48, cols:[
137 | main_info,
138 | more_info,
139 | right_photo
140 | ]
141 | };
142 |
143 | const buttons = {
144 | margin:10,
145 | cols:[
146 | {},
147 | {
148 | view:"button", value:"Reset", autowidth:true,
149 | click:() => {
150 | this.$$("form").clear();
151 | },
152 | tooltip:"Click to clean the form"
153 | },
154 | {
155 | view:"button", value:"Save", type:"form", autowidth:true,
156 | tooltip:"Save changes",
157 | click:() => {
158 | if (this.$$("form").validate()){
159 | webix.message("Saved (not really)!", "success");
160 | }
161 | }
162 | }
163 | ]
164 | };
165 |
166 | return {
167 | rows:[
168 | { template:"Profile information", type:"header" },
169 | {
170 | view:"form", localId:"form", padding:24,
171 | rows:[
172 | upper_section,
173 | {
174 | view:"textarea", label:"Notes", labelPosition:"top", placeholder:"Type text"
175 | },
176 | buttons
177 | ],
178 | rules:{
179 | "fname":webix.rules.isNotEmpty
180 | }
181 | }
182 | ]
183 | };
184 | }
185 | init(){
186 | this.$$("form").setValues({
187 | fname:"Morgan", lname:"Yu",
188 | birthday:"2005-05-05", photo:"morgan_yu",
189 | notifications:1, request:"2017-01-13",
190 | tags:"6,3,5"
191 | });
192 | }
193 | }
194 |
--------------------------------------------------------------------------------
/sources/views/forms/primary.js:
--------------------------------------------------------------------------------
1 | import { JetView } from "webix-jet";
2 |
3 | export default class PrimaryButtons extends JetView {
4 | config(){
5 | return {
6 | rows:[
7 | { template:"Primary buttons", type:"header" },
8 | {
9 | type:"form", padding:24, margin:14, rows:[
10 | { view:"button", label:"Primary", css:"webix_primary", inputWidth: 100},
11 | { view:"button", label:"Primary", css:"webix_primary", type:"icon", icon:"wxi-plus", inputWidth: 140},
12 | { view:"button", label:"Wide primary", css:"webix_primary", type:"icon", icon:"wxi-plus" }
13 | ]
14 | }
15 | ]
16 | };
17 | }
18 | }
--------------------------------------------------------------------------------
/sources/views/forms/secondary.js:
--------------------------------------------------------------------------------
1 | import { JetView } from "webix-jet";
2 |
3 | export default class SecondaryButtons extends JetView {
4 | config(){
5 | return {
6 | width:-1, rows:[
7 | { template:"Secondary buttons", type:"header" },
8 | {
9 | type:"form", padding:24, margin:14, rows:[
10 | { view:"button", label:"Secondary", css:"webix_secondary", inputWidth:100 },
11 | { view:"button", label:"Secondary", css:"webix_secondary", type:"icon", icon:"wxi-plus", inputWidth:120 },
12 | { view:"button", label:"Wide secondary", css:"webix_secondary", type:"icon", icon:"wxi-plus" }
13 | ]
14 | }
15 | ]
16 | };
17 | }
18 | }
--------------------------------------------------------------------------------
/sources/views/kanban.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 | import {data} from "models/kanban";
3 |
4 | export default class SheetView extends JetView{
5 | config(){
6 | const impth = "https://docs.webix.com/samples/63_kanban/common/imgs/";
7 |
8 | const config = {
9 | view:"kanban",
10 | cols:[{
11 | header:"Backlog",
12 | body:{ view:"kanbanlist", status:"new" }
13 | },{
14 | header:"In Progress",
15 | body:{ view:"kanbanlist", status:"work" }
16 | },{
17 | header:"Testing",
18 | body:{ view:"kanbanlist", status:"test" }
19 | },{
20 | header:"Done",
21 | body:{ view:"kanbanlist", status:"done" }
22 | }],
23 | editor:true,
24 | comments: {currentUser:9},
25 | users:[
26 | {id:1, value:"Rick Lopes", image:impth + "1.jpg"},
27 | {id:2, value:"Martin Farrell", image:impth + "2.jpg"},
28 | {id:3, value:"Douglass Moore", image:impth + "3.jpg"},
29 | {id:4, value:"Eric Doe", image:impth + "4.jpg"},
30 | {id:5, value:"Sophi Elliman", image:impth + "5.jpg"},
31 | {id:6, value:"Anna O'Neal"},
32 | {id:7, value:"Marcus Storm", image:impth + "7.jpg"},
33 | {id:8, value:"Nick Branson", image:impth + "8.jpg"},
34 | {id:9, value:"CC", image:impth + "9.jpg"}
35 | ],
36 | tags:[
37 | {id:1, value:"webix"},
38 | {id:2, value:"jet"},
39 | {id:3, value:"easy"},
40 | {id:4, value:"hard"},
41 | {id:5, value:"kanban"},
42 | {id:6, value:"docs"},
43 | ]
44 | };
45 |
46 | return webix.require({
47 | "https://cdn.webix.com/pro/edge/kanban/kanban.js" :true,
48 | "https://cdn.webix.com/pro/edge/kanban/kanban.css" :true
49 | }).then(() => config);
50 | }
51 |
52 | init(){
53 | this.getRoot().parse(data);
54 | }
55 | }
--------------------------------------------------------------------------------
/sources/views/main.js:
--------------------------------------------------------------------------------
1 | import {JetView, plugins} from "webix-jet";
2 |
3 | export default class TopView extends JetView{
4 | config(){
5 | const header = {
6 | type:"header", css:"custom_dark", height:58,
7 | template:"ADMIN APP"
8 | };
9 |
10 | const sidebar = {
11 | localId:"menu",
12 | view:"sidebar", css:"webix_dark", width:200,
13 | data:[
14 | { id:"dash", value:"Dashboard", icon:"mdi mdi-view-dashboard" },
15 | { id:"charts", value:"Charts", icon:"mdi mdi-chart-areaspline" },
16 | { id:"tables", value:"Tables", icon:"mdi mdi-table" },
17 | { id:"forms", value:"Forms", icon:"mdi mdi-format-line-style" },
18 | { id:"sheet", value:"Spreadsheet", icon:"mdi mdi-table-large" },
19 | { id:"kanban", value:"Kanban", icon:"mdi mdi-view-column" },
20 | { id:"pivot", value:"Pivot", icon:"mdi mdi-layers" },
21 | { id:"files", value:"File Manager", icon:"mdi mdi-folder-star" }
22 | ]
23 | };
24 |
25 | const toolbar = {
26 | view:"toolbar",
27 | padding:9, height:58,
28 | cols:[
29 | { css:"logo" },
30 | { view:"icon", icon:"mdi mdi-bell", badge:"5" },
31 | { view:"icon", icon:"mdi mdi-settings" },
32 | {
33 | template:`
34 | `,
35 | width:60, css:"avatar", borderless:true
36 | }
37 | ]
38 | };
39 |
40 | return {
41 | type:"clean", cols:[
42 | { rows:[ header, sidebar ]},
43 | { rows:[ toolbar, { $subview:true } ]}
44 | ]
45 | };
46 | }
47 |
48 | init(){
49 | this.use(plugins.Menu, "menu");
50 | }
51 | }
--------------------------------------------------------------------------------
/sources/views/pivot.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 |
3 | export default class SheetView extends JetView{
4 | config(){
5 | const config = {
6 | type:"space", rows:[{
7 | view: "pivot",
8 | structure: {
9 | rows: ["form", "name"],
10 | columns: ["year"],
11 | values: [{ name: "oil", operation: ["min", "sum"] }],
12 | },
13 | url: "https://cdn.webix.com/demodata/pivot.json",
14 | }]
15 | };
16 |
17 | return webix.require({
18 | "https://cdn.webix.com/pro/edge/pivot/pivot.js" :true,
19 | "https://cdn.webix.com/pro/edge/pivot/pivot.css":true
20 | }).then(() => config);
21 | }
22 |
23 | }
--------------------------------------------------------------------------------
/sources/views/sheet.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 | import {getSheetData} from "models/sheet";
3 |
4 | export default class SheetView extends JetView{
5 | config(){
6 | const config = {
7 | type:"space", rows:[{
8 | view:"spreadsheet", localId:"sheet",
9 | toolbar:"full"
10 | }]
11 | };
12 |
13 | return webix.require({
14 | "https://cdn.webix.com/pro/edge/spreadsheet/spreadsheet.js": true,
15 | "https://cdn.webix.com/pro/edge/spreadsheet/spreadsheet.css": true
16 | }).then(() => config);
17 | }
18 | init(){
19 | this.$$("sheet").parse(getSheetData());
20 | }
21 | }
--------------------------------------------------------------------------------
/sources/views/tables/features.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 |
3 | function showIcon(obj, common, row){
4 | const sign = row ? "plus" : "minus";
5 | return ``;
6 | }
7 |
8 | export default class ReatureView extends JetView {
9 | config(){
10 | return {
11 | view:"datatable", localId:"grid",
12 | select:true, css:"webix_header_border",
13 | columns:[
14 | { id:"feature", fillspace:1.5, header:[{ text:"Feature", rowspan:2 }] },
15 | {
16 | id:"start", fillspace:1, header:[
17 | { text:"Plans", colspan:3, css:"header_center" },
18 | { text:"Start", css:"header_center" }
19 | ],
20 | template:showIcon, css:"column_center"
21 | },
22 | { id:"advanced", css:"column_center", fillspace:1, header:["", { text:"Advanced", css:"header_center"}], template:showIcon },
23 | { id:"pro", css:"column_center", fillspace:1, header:["", { text:"Pro", css:"header_center" }], template:showIcon }
24 | ]
25 | };
26 | }
27 | init(grid){
28 | grid.parse([
29 | { feature:"Unlimited lists", start:1, advanced:1, pro:1 },
30 | { feature:"Separate outlines", start:1, advanced:1, pro:1 },
31 | { feature:"Tag", start:1, advanced:1, pro:1 },
32 | { feature:"Markdown", start:1, advanced:0, pro:1 },
33 | { feature:"Note", start:1, advanced:1, pro:1 },
34 | { feature:"Color label", start:1, advanced:0, pro:0 },
35 | { feature:"Numbered list", start:1, advanced:1, pro:0 },
36 | { feature:"Heading", start:1, advanced:1, pro:0 },
37 | { feature:"Creation date", start:1, advanced:0, pro:0 },
38 | { feature:"Last edited time", start:1, advanced:1, pro:1 },
39 | { feature:"File upload", start:1, advanced:1, pro:1 },
40 | { feature:"Project management", start:1, advanced:0, pro:0 },
41 | { feature:"Solutions database", start:1, advanced:1, pro:0 },
42 | { feature:"Webinars", start:1, advanced:0, pro:0 },
43 | { feature:"Training groups", start:1, advanced:0, pro:0 },
44 | { feature:"Complex widgets", start:1, advanced:0, pro:0 },
45 | { feature:"Typography", start:1, advanced:0, pro:0 }
46 | ]);
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/sources/views/tables/films.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 | import {getFilms} from "models/allfilms";
3 |
4 | export default class TransactionsView extends JetView {
5 | config(){
6 | return {
7 | view:"datatable", localId:"grid",
8 | select:true,
9 | columns:[
10 | { id:"rank", header:"#", width:50, sort:"int" },
11 | { id:"title", fillspace:1, header:"Film title", sort:"text" },
12 | { id:"year", header:"Year", sort:"int" },
13 | { id:"popularity", fillspace:1, header:"Popularity",
14 | template:webix.Sparklines.getTemplate({
15 | type:"splineArea",
16 | color:"#1CA1C1"
17 | }) },
18 | { id:"votes", header:"Votes", sort:"int" }
19 | ]
20 | };
21 | }
22 | init(grid){
23 | grid.parse(getFilms());
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/sources/views/tables/index.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 |
3 | export default class TablesView extends JetView{
4 | config(){
5 | return {
6 | type:"space",
7 | rows:[
8 | {
9 | type:"wide", cols:[
10 | { $subview:"tables.transactions" },
11 | { $subview:"tables.films" }
12 | ]
13 | },
14 | {
15 | type:"wide", cols:[
16 | { $subview:"tables.features" },
17 | { $subview:"tables.widgets" }
18 | ]
19 | }
20 | ]
21 | };
22 | }
23 | }
--------------------------------------------------------------------------------
/sources/views/tables/transactions.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 | import {allpayments} from "models/allpayments";
3 |
4 | export default class TransactionsView extends JetView {
5 | config(){
6 | return {
7 | view:"datatable", localId:"grid",
8 | select:true, tooltip:true,
9 | columns:[
10 | {
11 | id:"date", header:"Date",
12 | fillspace:1, minWidth:100,
13 | sort:"date", format:webix.Date.dateToStr("%j %F")
14 | },
15 | {
16 | id:"method", header:"Payment", fillspace:1, minWidth:90, sort:"text",
17 | tooltip:"The card with which the payment was made",
18 | template:data => `
`
19 | },
20 | {
21 | id:"", header:"", fillspace:3, template:"#method# #number#"
22 | },
23 | {
24 | id:"name", header:{
25 | text:"Purchase",
26 | tooltip:"Click to sort the list by shops"
27 | },
28 | fillspace:4, minWidth:200, sort:"text"
29 | },
30 | {
31 | id:"sum", header:"Sum", sort:"int",
32 | fillspace:1.5, minWidth:90,
33 | format:webix.i18n.priceFormat
34 | }
35 | ]
36 | };
37 | }
38 | init(grid){
39 | grid.sync(allpayments);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/sources/views/tables/widgets.js:
--------------------------------------------------------------------------------
1 | import {JetView} from "webix-jet";
2 |
3 | export default class ReatureView extends JetView {
4 | config(){
5 | return {
6 | view:"treetable", localId:"grid",
7 | select:true,
8 | columns:[
9 | { id:"id", header:"#" },
10 | {
11 | id:"widget", template:"{common.treetable()} #widget#", fillspace:2,
12 | header:[ "Widget", { content:"richSelectFilter" } ]
13 | },
14 | { id:"author", header:"Author", fillspace:1 },
15 | { id:"created", header:"Status", template:obj => {
16 | const color = obj.created == "Pending" ? "yellow" : (obj.created == "Planning" ? "blue" : "green");
17 | return `${obj.created}`;
18 | } }
19 | ]
20 | };
21 | }
22 | init(grid){
23 | grid.parse([
24 | { id:"248-701", widget:"Webix", author:"Corvo Attano", created:"Planning", data:[
25 | {
26 | id:"248-702", widget:"Layout branch", author:"Booker DeWitt", created:"In progress", data:[
27 | { id:"248-703", widget:"Accordion", author:"Elizabeth DeWitt", created:"Planning" },
28 | { id:"248-704", widget:"Multiview", author:"Daisy Fitzroy", created:"Pending" },
29 | { id:"248-705", widget:"Layout", author:"Rosalind Lutece", created:"Planning" },
30 | { id:"248-706", widget:"Dashboard", author:"Lady Comstock", created:"Planning" },
31 | { id:"248-707", widget:"GridLayout", author:"Robert Lutece", created:"Planning" }
32 | ]
33 | },
34 | {
35 | id:"248-708", widget:"Components", author:"Emily Kaldwin", created:"Pending", data:[
36 | { id:"248-709", widget:"Datatable", author:"Granny Rags", created:"Planning" },
37 | { id:"248-710", widget:"List", author:"Piero Joplin", created:"Planning" },
38 | { id:"248-711", widget:"Dataview", author:"The Outsider", created:"In progress" },
39 | { id:"248-712", widget:"Tree", author:"Jessamine Kaldwin", created:"In progress" },
40 | { id:"248-713", widget:"Treetable", author:"Daud Knife", created:"Planning" },
41 | { id:"248-714", widget:"Bar Chart", author:"Billie Lurk", created:"Planning" },
42 | { id:"248-715", widget:"Area Chart", author:"Delilah Copperspoon", created:"Planning" },
43 | { id:"248-716", widget:"Gauge", author:"Anton Sokolov", created:"In progress" },
44 | { id:"248-717", widget:"Multicombo", author:"Aramis Stilton", created:"Planning" }
45 | ]
46 | }
47 | ]}
48 | ]);
49 | grid.openAll();
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/sources/webix/photo.js:
--------------------------------------------------------------------------------
1 | webix.protoUI({
2 | name:"photo",
3 | getValue(){
4 | return this.config.value;
5 | },
6 | setValue(value){
7 | this.setHTML("
");
8 | this.config.value = value;
9 | }
10 | },
11 | webix.ui.template);
12 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | var path = require("path");
2 | var webpack = require("webpack");
3 |
4 | module.exports = function(env) {
5 |
6 | var pack = require("./package.json");
7 | var ExtractTextPlugin = require("extract-text-webpack-plugin");
8 | var production = !!(env && env.production === "true");
9 | var babelSettings = {
10 | extends: path.join(__dirname, '/.babelrc')
11 | };
12 |
13 | var config = {
14 | entry: "./sources/app.js",
15 | output: {
16 | path: path.join(__dirname, "codebase"),
17 | publicPath:"/codebase/",
18 | library: "AppDemo",
19 | libraryExport: "default",
20 | libraryTarget: "var",
21 | filename: "app.js"
22 | },
23 | devtool: "inline-source-map",
24 | module: {
25 | rules: [
26 | {
27 | test: /\.js$/,
28 | loader: "babel-loader?" + JSON.stringify(babelSettings)
29 | },
30 | {
31 | test: /\.(svg|png|jpg|gif)$/,
32 | loader: "url-loader?limit=25000"
33 | },
34 | {
35 | test: /\.(less|css)$/,
36 | loader: ExtractTextPlugin.extract("css-loader!less-loader")
37 | }
38 | ]
39 | },
40 | resolve: {
41 | extensions: [".js"],
42 | modules: ["./sources", "node_modules"],
43 | alias:{
44 | "jet-views":path.resolve(__dirname, "sources/views"),
45 | "jet-locales":path.resolve(__dirname, "sources/locales")
46 | }
47 | },
48 | plugins: [
49 | new ExtractTextPlugin("./app.css"),
50 | new webpack.DefinePlugin({
51 | VERSION: `"${pack.version}"`,
52 | APPNAME: `"${pack.name}"`,
53 | PRODUCTION : production
54 | })
55 | ]
56 | };
57 |
58 | if (production) {
59 | config.plugins.push(
60 | new webpack.optimize.UglifyJsPlugin({
61 | test: /\.js$/
62 | })
63 | );
64 | }
65 |
66 | return config;
67 | }
--------------------------------------------------------------------------------