├── .gitignore
├── README.md
├── manage.py
├── rent
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
├── rentAnalysis
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ ├── 0001_initial.py
│ └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py
├── rentSpider
├── rentSpider
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ │ ├── __init__.py
│ │ └── house.py
└── scrapy.cfg
├── requirements.txt
├── static
├── css
│ ├── concept.min.css
│ └── style.css
└── js
│ ├── charts.js
│ ├── concept.min.js
│ ├── index.js
│ └── new.js
└── templates
├── base.html
├── district.html
└── index.html
/.gitignore:
--------------------------------------------------------------------------------
1 | __pycache__/
2 | db.sqlite3
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## 成都⼆⼿房爬⾍及可视化
2 |
3 | **开发环境**:**Scrapy**、**Django2.x**
4 |
5 | **项⽬描述**:该项⽬使⽤ **Scrapy** 框架爬取链家成都地区⼆⼿房数据,通过 **Django** 框架写⼊数据库并使⽤ **ECharts** 将分析后的数据可视化展⽰到⽹⻚。
6 |
7 | #### 教程
8 |
9 | - 创建Django工程
10 |
11 | ```
12 | djagno-admin startproject rent
13 | ```
14 | - 进入rent目录并创建Django项目
15 |
16 | ```
17 | cd rent
18 |
19 | python manage.py startapp rentAnalysis
20 | ```
21 | - 创建Scrapy工程
22 | ```
23 | scrapy startproject rentSpider
24 | ```
25 | - 进入rentSpider目录并创建爬虫文件
26 | ```
27 | cd rentSpider
28 |
29 | scrapy genspider house(spider_name) cd.lianjia.com(spider_url)
30 | ```
31 | - 在Scrapy工程中配置Django
32 |
33 | ```
34 | # rentSpider/settings.py
35 |
36 | import os
37 | import sys
38 | import django
39 | sys.path.append(os.path.dirname(os.path.abspath('.')))
40 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'rent.settings') # Django Project Name
41 | django.setup()
42 | ```
43 | - 启动Scrapy
44 |
45 | ```
46 | scrapy crawl house(spider_name)
47 | ```
48 | - 启动Django
49 |
50 | ```
51 | python manage.py runserver
52 | ```
53 |
54 | ```
55 | admin: rent
56 | password: rent1234
57 | ```
58 |
--------------------------------------------------------------------------------
/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import os
3 | import sys
4 |
5 | if __name__ == "__main__":
6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rent.settings")
7 | try:
8 | from django.core.management import execute_from_command_line
9 | except ImportError as exc:
10 | raise ImportError(
11 | "Couldn't import Django. Are you sure it's installed and "
12 | "available on your PYTHONPATH environment variable? Did you "
13 | "forget to activate a virtual environment?"
14 | ) from exc
15 | execute_from_command_line(sys.argv)
16 |
--------------------------------------------------------------------------------
/rent/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PFFFei/rent/da8e387bb33804bb406ff452c508a155b771e3e9/rent/__init__.py
--------------------------------------------------------------------------------
/rent/settings.py:
--------------------------------------------------------------------------------
1 | """
2 | Django settings for rent project.
3 |
4 | Generated by 'django-admin startproject' using Django 2.0.5.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.0/topics/settings/
8 |
9 | For the full list of settings and their values, see
10 | https://docs.djangoproject.com/en/2.0/ref/settings/
11 | """
12 |
13 | import os
14 |
15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
17 |
18 |
19 | # Quick-start development settings - unsuitable for production
20 | # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/
21 |
22 | # SECURITY WARNING: keep the secret key used in production secret!
23 | SECRET_KEY = ')e2llefgl-#_uxt6c94f*^jdd!1@-g+5w+*j8e-$(css*6odwr'
24 |
25 | # SECURITY WARNING: don't run with debug turned on in production!
26 | DEBUG = True
27 |
28 | ALLOWED_HOSTS = []
29 |
30 |
31 | # Application definition
32 |
33 | INSTALLED_APPS = [
34 | 'django.contrib.admin',
35 | 'django.contrib.auth',
36 | 'django.contrib.contenttypes',
37 | 'django.contrib.sessions',
38 | 'django.contrib.messages',
39 | 'django.contrib.staticfiles',
40 | 'rentAnalysis',
41 | ]
42 |
43 | MIDDLEWARE = [
44 | 'django.middleware.security.SecurityMiddleware',
45 | 'django.contrib.sessions.middleware.SessionMiddleware',
46 | 'django.middleware.common.CommonMiddleware',
47 | 'django.middleware.csrf.CsrfViewMiddleware',
48 | 'django.contrib.auth.middleware.AuthenticationMiddleware',
49 | 'django.contrib.messages.middleware.MessageMiddleware',
50 | 'django.middleware.clickjacking.XFrameOptionsMiddleware',
51 | ]
52 |
53 | ROOT_URLCONF = 'rent.urls'
54 |
55 | TEMPLATES = [
56 | {
57 | 'BACKEND': 'django.template.backends.django.DjangoTemplates',
58 | 'DIRS': [os.path.join(BASE_DIR, 'templates')],
59 | 'APP_DIRS': True,
60 | 'OPTIONS': {
61 | 'context_processors': [
62 | 'django.template.context_processors.debug',
63 | 'django.template.context_processors.request',
64 | 'django.contrib.auth.context_processors.auth',
65 | 'django.contrib.messages.context_processors.messages',
66 | ],
67 | },
68 | },
69 | ]
70 |
71 | WSGI_APPLICATION = 'rent.wsgi.application'
72 |
73 |
74 | # Database
75 | # https://docs.djangoproject.com/en/2.0/ref/settings/#databases
76 |
77 | DATABASES = {
78 | 'default': {
79 | 'ENGINE': 'django.db.backends.sqlite3',
80 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
81 | }
82 | }
83 |
84 |
85 | # Password validation
86 | # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators
87 |
88 | AUTH_PASSWORD_VALIDATORS = [
89 | {
90 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
91 | },
92 | {
93 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
94 | },
95 | {
96 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
97 | },
98 | {
99 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
100 | },
101 | ]
102 |
103 |
104 | # Internationalization
105 | # https://docs.djangoproject.com/en/2.0/topics/i18n/
106 |
107 | LANGUAGE_CODE = 'zh-hans'
108 |
109 | TIME_ZONE = 'Asia/Shanghai'
110 |
111 | USE_I18N = True
112 |
113 | USE_L10N = True
114 |
115 | USE_TZ = True
116 |
117 |
118 | # Static files (CSS, JavaScript, Images)
119 | # https://docs.djangoproject.com/en/2.0/howto/static-files/
120 |
121 | STATIC_URL = '/static/'
122 |
123 | STATICFILES_DIRS = [
124 | os.path.join(BASE_DIR, 'static')
125 | ]
126 |
--------------------------------------------------------------------------------
/rent/urls.py:
--------------------------------------------------------------------------------
1 | """rent URL Configuration
2 |
3 | The `urlpatterns` list routes URLs to views. For more information please see:
4 | https://docs.djangoproject.com/en/2.0/topics/http/urls/
5 | Examples:
6 | Function views
7 | 1. Add an import: from my_app import views
8 | 2. Add a URL to urlpatterns: path('', views.home, name='home')
9 | Class-based views
10 | 1. Add an import: from other_app.views import Home
11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
12 | Including another URLconf
13 | 1. Import the include() function: from django.urls import include, path
14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
15 | """
16 | from django.contrib import admin
17 | from django.urls import path, include
18 |
19 |
20 | urlpatterns = [
21 | path('admin/', admin.site.urls),
22 | path('', include('rentAnalysis.urls')),
23 | ]
24 |
--------------------------------------------------------------------------------
/rent/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for rent project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.wsgi import get_wsgi_application
13 |
14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rent.settings")
15 |
16 | application = get_wsgi_application()
17 |
--------------------------------------------------------------------------------
/rentAnalysis/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PFFFei/rent/da8e387bb33804bb406ff452c508a155b771e3e9/rentAnalysis/__init__.py
--------------------------------------------------------------------------------
/rentAnalysis/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 | from .models import Rent
3 |
4 |
5 | admin.site.site_title = '二手房信息管理系统'
6 | admin.site.site_header = '二手房信息管理系统'
7 |
8 |
9 | class RentAdmin(admin.ModelAdmin):
10 | list_display = ('title',)
11 |
12 |
13 | admin.site.register(Rent, RentAdmin)
14 |
--------------------------------------------------------------------------------
/rentAnalysis/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class RentanalysisConfig(AppConfig):
5 | name = 'rentAnalysis'
6 |
--------------------------------------------------------------------------------
/rentAnalysis/migrations/0001_initial.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.1 on 2020-04-04 14:50
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | initial = True
9 |
10 | dependencies = [
11 | ]
12 |
13 | operations = [
14 | migrations.CreateModel(
15 | name='Rent',
16 | fields=[
17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18 | ('district', models.CharField(max_length=20, verbose_name='区域')),
19 | ('title', models.CharField(max_length=256, verbose_name='标题')),
20 | ('bedroom', models.CharField(max_length=20, verbose_name='房厅')),
21 | ('area', models.CharField(max_length=20, verbose_name='面积')),
22 | ('direction', models.CharField(max_length=20, verbose_name='朝向')),
23 | ('decoration', models.CharField(max_length=10, verbose_name='装修')),
24 | ('total_price', models.FloatField(verbose_name='总价(万元)')),
25 | ('unit_price', models.IntegerField(verbose_name='单价(元/平方米)')),
26 | ('add_date', models.DateTimeField(auto_now_add=True, verbose_name='创建日期')),
27 | ('mod_date', models.DateTimeField(auto_now=True, verbose_name='修改日期')),
28 | ],
29 | options={
30 | 'verbose_name': '二手房',
31 | 'verbose_name_plural': '二手房',
32 | },
33 | ),
34 | ]
35 |
--------------------------------------------------------------------------------
/rentAnalysis/migrations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PFFFei/rent/da8e387bb33804bb406ff452c508a155b771e3e9/rentAnalysis/migrations/__init__.py
--------------------------------------------------------------------------------
/rentAnalysis/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 |
4 | class Rent(models.Model):
5 | district = models.CharField(max_length=20, verbose_name='区域')
6 | title = models.CharField(max_length=256, verbose_name='标题')
7 | bedroom = models.CharField(max_length=20, verbose_name='房厅')
8 | area = models.CharField(max_length=20, verbose_name='面积')
9 | direction = models.CharField(max_length=20, verbose_name='朝向')
10 | decoration = models.CharField(max_length=10, verbose_name='装修')
11 | total_price = models.FloatField(verbose_name='总价(万元)')
12 | unit_price = models.IntegerField(verbose_name='单价(元/平方米)')
13 |
14 | add_date = models.DateTimeField(auto_now_add=True, verbose_name="创建日期")
15 | mod_date = models.DateTimeField(auto_now=True, verbose_name="修改日期")
16 |
17 | class Meta:
18 | verbose_name = '二手房'
19 | verbose_name_plural = verbose_name
20 |
21 | def __str__(self):
22 | return "{}-{}".format(self.title, self.total_price)
23 |
24 |
25 |
--------------------------------------------------------------------------------
/rentAnalysis/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/rentAnalysis/urls.py:
--------------------------------------------------------------------------------
1 | from django.urls import path
2 | from .views import home, bedroom, index, district
3 |
4 | app_name = 'rentAnalysis'
5 |
6 | urlpatterns = [
7 | path('', home, name='home'),
8 | path('bedroom/', bedroom, name='bedroom'),
9 | path('index/', index, name='index'),
10 | path('district/', district, name='district'),
11 | ]
--------------------------------------------------------------------------------
/rentAnalysis/views.py:
--------------------------------------------------------------------------------
1 | from django.shortcuts import render
2 | from .models import Rent
3 | from django.db.models import Avg, Max, Min, Sum
4 | from django.http import HttpResponse
5 | import json
6 |
7 | '''
8 | 数据已进行预处理如下:
9 | for each in Rent.objects.all():
10 | if each.district not in [' 简装 ', ' 毛坯 ', ' 精装 ', ' 其他 ']:
11 | each.district = ' 其他 '
12 | each.save()
13 | '''
14 |
15 |
16 | def home(request):
17 | return render(request, 'index.html')
18 |
19 |
20 | def bedroom(request):
21 | return render(request, 'district.html')
22 |
23 |
24 | def index(request):
25 | districts = ['简阳', '新津', '彭州', '龙泉驿', '天府新区南区', '青白江', '温江', '高新西', '金牛', '武侯', '天府新区', '高新', '成华', '双流', '新都', '郫都', '都江堰', '金堂', '锦江', '大邑', '崇州', '青羊']
26 | decorations = [' 简装 ', ' 毛坯 ', ' 精装 ', ' 其他 ']
27 | source = [['decoration', '简装', '毛坯', '精装', '其他']]
28 | number = []
29 | # # 每个区域 装修类型 平均单价
30 | for district in districts:
31 | temp = [district]
32 | rent = Rent.objects.filter(district=district)
33 | number.append(rent.count())
34 | for decoration in decorations:
35 | unit_average = rent.filter(decoration=decoration).aggregate(Avg('unit_price'))
36 | temp.append(int(unit_average['unit_price__avg']))
37 | source.append(temp)
38 | return HttpResponse(json.dumps({'source': source, 'districts': districts, 'number': number}))
39 |
40 |
41 | def district(request):
42 | temp = ['3室2厅 ', '2室2厅 ', '3室1厅 ', '4室2厅 ', '1室1厅 ', '5室2厅 ', '2室1厅 ', '6室2厅 ', '4室3厅 ', '5室1厅 ', '6室3厅 ', '2室0厅', '4室1厅 ', '车位 ', '1室0厅 ', '1室2厅 ', '5室3厅 ', '7室2厅 ', '3室3厅 ', '9室2厅 ', '3室0厅 ', '6室1厅 ', '7室1厅 ', '6室4厅', '4室4厅 ', '7室4厅 ', '0室0厅 ', '7室3厅 ', '8室2厅 ', '5室4厅 ', '2室3厅 ', '5室0厅 ', '6室5厅 ', '5室5厅 ', '7室5厅 ', '8室4厅 ', '8室3厅 ', '0室1厅 ', '8室8厅 ', '18室3厅 ', '12室3厅 ', '9室4厅 ', '9室6厅 ', '4室0厅 ', '3室4厅 ', '13室4厅 ']
43 | data = []
44 | rent = Rent.objects.filter(district='锦江')
45 | for each in temp:
46 | data.append({'value': rent.filter(bedroom=each).count(), 'name': each})
47 |
48 | return HttpResponse(json.dumps(data))
--------------------------------------------------------------------------------
/rentSpider/rentSpider/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PFFFei/rent/da8e387bb33804bb406ff452c508a155b771e3e9/rentSpider/rentSpider/__init__.py
--------------------------------------------------------------------------------
/rentSpider/rentSpider/items.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Define here the models for your scraped items
4 | #
5 | # See documentation in:
6 | # https://docs.scrapy.org/en/latest/topics/items.html
7 |
8 | import scrapy
9 |
10 | # class RentspiderItem(scrapy.Item):
11 | # pass
12 |
13 |
14 | from scrapy_djangoitem import DjangoItem
15 | from rentAnalysis.models import Rent
16 |
17 |
18 | class RentspiderItem(DjangoItem):
19 | django_model = Rent
20 |
--------------------------------------------------------------------------------
/rentSpider/rentSpider/middlewares.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Define here the models for your spider middleware
4 | #
5 | # See documentation in:
6 | # https://docs.scrapy.org/en/latest/topics/spider-middleware.html
7 |
8 | from scrapy import signals
9 |
10 |
11 | class RentspiderSpiderMiddleware(object):
12 | # Not all methods need to be defined. If a method is not defined,
13 | # scrapy acts as if the spider middleware does not modify the
14 | # passed objects.
15 |
16 | @classmethod
17 | def from_crawler(cls, crawler):
18 | # This method is used by Scrapy to create your spiders.
19 | s = cls()
20 | crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
21 | return s
22 |
23 | def process_spider_input(self, response, spider):
24 | # Called for each response that goes through the spider
25 | # middleware and into the spider.
26 |
27 | # Should return None or raise an exception.
28 | return None
29 |
30 | def process_spider_output(self, response, result, spider):
31 | # Called with the results returned from the Spider, after
32 | # it has processed the response.
33 |
34 | # Must return an iterable of Request, dict or Item objects.
35 | for i in result:
36 | yield i
37 |
38 | def process_spider_exception(self, response, exception, spider):
39 | # Called when a spider or process_spider_input() method
40 | # (from other spider middleware) raises an exception.
41 |
42 | # Should return either None or an iterable of Request, dict
43 | # or Item objects.
44 | pass
45 |
46 | def process_start_requests(self, start_requests, spider):
47 | # Called with the start requests of the spider, and works
48 | # similarly to the process_spider_output() method, except
49 | # that it doesn’t have a response associated.
50 |
51 | # Must return only requests (not items).
52 | for r in start_requests:
53 | yield r
54 |
55 | def spider_opened(self, spider):
56 | spider.logger.info('Spider opened: %s' % spider.name)
57 |
58 |
59 | class RentspiderDownloaderMiddleware(object):
60 | # Not all methods need to be defined. If a method is not defined,
61 | # scrapy acts as if the downloader middleware does not modify the
62 | # passed objects.
63 |
64 | @classmethod
65 | def from_crawler(cls, crawler):
66 | # This method is used by Scrapy to create your spiders.
67 | s = cls()
68 | crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
69 | return s
70 |
71 | def process_request(self, request, spider):
72 | # Called for each request that goes through the downloader
73 | # middleware.
74 |
75 | # Must either:
76 | # - return None: continue processing this request
77 | # - or return a Response object
78 | # - or return a Request object
79 | # - or raise IgnoreRequest: process_exception() methods of
80 | # installed downloader middleware will be called
81 | return None
82 |
83 | def process_response(self, request, response, spider):
84 | # Called with the response returned from the downloader.
85 |
86 | # Must either;
87 | # - return a Response object
88 | # - return a Request object
89 | # - or raise IgnoreRequest
90 | return response
91 |
92 | def process_exception(self, request, exception, spider):
93 | # Called when a download handler or a process_request()
94 | # (from other downloader middleware) raises an exception.
95 |
96 | # Must either:
97 | # - return None: continue processing this exception
98 | # - return a Response object: stops process_exception() chain
99 | # - return a Request object: stops process_exception() chain
100 | pass
101 |
102 | def spider_opened(self, spider):
103 | spider.logger.info('Spider opened: %s' % spider.name)
104 |
--------------------------------------------------------------------------------
/rentSpider/rentSpider/pipelines.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Define your item pipelines here
4 | #
5 | # Don't forget to add your pipeline to the ITEM_PIPELINES setting
6 | # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
7 |
8 |
9 | class RentspiderPipeline(object):
10 | def process_item(self, item, spider):
11 | item.save()
12 | return item
13 |
--------------------------------------------------------------------------------
/rentSpider/rentSpider/settings.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Scrapy settings for rentSpider project
4 | #
5 | # For simplicity, this file contains only settings considered important or
6 | # commonly used. You can find more settings consulting the documentation:
7 | #
8 | # https://docs.scrapy.org/en/latest/topics/settings.html
9 | # https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
10 | # https://docs.scrapy.org/en/latest/topics/spider-middleware.html
11 |
12 | import os
13 | import sys
14 | import django
15 | sys.path.append(os.path.dirname(os.path.abspath('.')))
16 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'rent.settings') # Django Project Name
17 | django.setup()
18 |
19 | BOT_NAME = 'rentSpider'
20 |
21 | SPIDER_MODULES = ['rentSpider.spiders']
22 | NEWSPIDER_MODULE = 'rentSpider.spiders'
23 |
24 |
25 | # Crawl responsibly by identifying yourself (and your website) on the user-agent
26 | #USER_AGENT = 'rentSpider (+http://www.yourdomain.com)'
27 | USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'
28 |
29 | # Obey robots.txt rules
30 | ROBOTSTXT_OBEY = True
31 |
32 | # Configure maximum concurrent requests performed by Scrapy (default: 16)
33 | #CONCURRENT_REQUESTS = 32
34 |
35 | # Configure a delay for requests for the same website (default: 0)
36 | # See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
37 | # See also autothrottle settings and docs
38 | #DOWNLOAD_DELAY = 3
39 | # The download delay setting will honor only one of:
40 | #CONCURRENT_REQUESTS_PER_DOMAIN = 16
41 | #CONCURRENT_REQUESTS_PER_IP = 16
42 |
43 | # Disable cookies (enabled by default)
44 | #COOKIES_ENABLED = False
45 |
46 | # Disable Telnet Console (enabled by default)
47 | #TELNETCONSOLE_ENABLED = False
48 |
49 | # Override the default request headers:
50 | #DEFAULT_REQUEST_HEADERS = {
51 | # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
52 | # 'Accept-Language': 'en',
53 | #}
54 |
55 | # Enable or disable spider middlewares
56 | # See https://docs.scrapy.org/en/latest/topics/spider-middleware.html
57 | #SPIDER_MIDDLEWARES = {
58 | # 'rentSpider.middlewares.RentspiderSpiderMiddleware': 543,
59 | #}
60 |
61 | # Enable or disable downloader middlewares
62 | # See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
63 | #DOWNLOADER_MIDDLEWARES = {
64 | # 'rentSpider.middlewares.RentspiderDownloaderMiddleware': 543,
65 | #}
66 |
67 | # Enable or disable extensions
68 | # See https://docs.scrapy.org/en/latest/topics/extensions.html
69 | #EXTENSIONS = {
70 | # 'scrapy.extensions.telnet.TelnetConsole': None,
71 | #}
72 |
73 | # Configure item pipelines
74 | # See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
75 | ITEM_PIPELINES = {
76 | 'rentSpider.pipelines.RentspiderPipeline': 300, # Pipeline receives content
77 | }
78 |
79 | # Enable and configure the AutoThrottle extension (disabled by default)
80 | # See https://docs.scrapy.org/en/latest/topics/autothrottle.html
81 | #AUTOTHROTTLE_ENABLED = True
82 | # The initial download delay
83 | #AUTOTHROTTLE_START_DELAY = 5
84 | # The maximum download delay to be set in case of high latencies
85 | #AUTOTHROTTLE_MAX_DELAY = 60
86 | # The average number of requests Scrapy should be sending in parallel to
87 | # each remote server
88 | #AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
89 | # Enable showing throttling stats for every response received:
90 | #AUTOTHROTTLE_DEBUG = False
91 |
92 | # Enable and configure HTTP caching (disabled by default)
93 | # See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
94 | #HTTPCACHE_ENABLED = True
95 | #HTTPCACHE_EXPIRATION_SECS = 0
96 | #HTTPCACHE_DIR = 'httpcache'
97 | #HTTPCACHE_IGNORE_HTTP_CODES = []
98 | #HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
99 |
--------------------------------------------------------------------------------
/rentSpider/rentSpider/spiders/__init__.py:
--------------------------------------------------------------------------------
1 | # This package will contain the spiders of your Scrapy project
2 | #
3 | # Please refer to the documentation for information on how to create and manage
4 | # your spiders.
5 |
--------------------------------------------------------------------------------
/rentSpider/rentSpider/spiders/house.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | import scrapy
3 | from rentSpider.items import RentspiderItem
4 | import re
5 |
6 |
7 | class HouseSpider(scrapy.Spider):
8 | name = 'house'
9 | allowed_domains = ['cd.lianjia.com']
10 | start_urls = ['https://cd.lianjia.com/ershoufang/']
11 |
12 | def parse(self, response):
13 | for url in response.xpath('//div[@data-role="ershoufang"]/div/a/@href').extract():
14 | yield scrapy.Request('https://cd.lianjia.com' + url, callback=self.page)
15 |
16 | def page(self, response):
17 | page = response.xpath('//div[@class="page-box house-lst-page-box"]/@page-data').extract()
18 | page = eval(page[0])
19 | for i in range(1, page['totalPage']):
20 | yield scrapy.Request(response.url + 'pg{}'.format(i), callback=self.detail)
21 |
22 | def detail(self, response):
23 | for li in response.xpath('//ul[@class="sellListContent"]/li'):
24 | item = RentspiderItem()
25 | item['district'] = response.xpath('//h2[@class="total fl"]/text()').extract()[1].strip("套,二手房")
26 | item['title'] = li.xpath('.//div[@class="title"]/a/text()').extract()[0]
27 | detail = li.xpath('.//div[@class="address"]/div/text()').extract()[0].split("|")
28 | item['bedroom'] = detail[0]
29 | item['area'] = detail[1]
30 | item['direction'] = detail[2]
31 | item['decoration'] = detail[3]
32 | item['total_price'] = li.xpath('.//div[@class="totalPrice"]/span/text()').extract()[0]
33 | item['unit_price'] = li.xpath('.//div[@class="unitPrice"]/@data-price').extract()[0]
34 | yield item
35 |
--------------------------------------------------------------------------------
/rentSpider/scrapy.cfg:
--------------------------------------------------------------------------------
1 | # Automatically created by: scrapy startproject
2 | #
3 | # For more information about the [deploy] section see:
4 | # https://scrapyd.readthedocs.io/en/latest/deploy.html
5 |
6 | [settings]
7 | default = rentSpider.settings
8 |
9 | [deploy]
10 | #url = http://localhost:6800/
11 | project = rentSpider
12 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | asgiref==3.2.7
2 | attrs==19.3.0
3 | Automat==20.2.0
4 | cffi==1.14.0
5 | constantly==15.1.0
6 | cryptography==2.8
7 | cssselect==1.1.0
8 | Django==2.2.10
9 | hyperlink==19.0.0
10 | idna==2.9
11 | incremental==17.5.0
12 | lxml==4.5.0
13 | numpy==1.18.2
14 | pandas==1.0.3
15 | parsel==1.5.2
16 | Pillow==7.1.1
17 | Protego==0.1.16
18 | pyasn1==0.4.8
19 | pyasn1-modules==0.2.8
20 | pycparser==2.20
21 | PyDispatcher==2.0.5
22 | PyHamcrest==2.0.2
23 | pyOpenSSL==19.1.0
24 | python-dateutil==2.8.1
25 | pytz==2019.3
26 | queuelib==1.5.0
27 | Scrapy==2.0.1
28 | scrapy-djangoitem==1.1.1
29 | selenium==3.141.0
30 | service-identity==18.1.0
31 | six==1.14.0
32 | sqlparse==0.3.1
33 | Twisted==20.3.0
34 | urllib3==1.25.8
35 | w3lib==1.21.0
36 | zope.interface==5.0.2
37 |
--------------------------------------------------------------------------------
/static/css/style.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'icomoon';
3 | src: url('fonts/icomoon.eot?fo3jum');
4 | src: url('fonts/icomoon.eot?fo3jum#iefix') format('embedded-opentype'),
5 | url('fonts/icomoon.ttf?fo3jum') format('truetype'),
6 | url('fonts/icomoon.woff?fo3jum') format('woff'),
7 | url('fonts/icomoon.svg?fo3jum#icomoon') format('svg');
8 | font-weight: normal;
9 | font-style: normal;
10 | }
11 |
12 | [class^="icon-"], [class*=" icon-"] {
13 | /* use !important to prevent issues with browser extensions that change fonts */
14 | font-family: 'icomoon' !important;
15 | speak: none;
16 | font-style: normal;
17 | font-weight: normal;
18 | font-variant: normal;
19 | text-transform: none;
20 | line-height: 1;
21 |
22 | /* Better Font Rendering =========== */
23 | -webkit-font-smoothing: antialiased;
24 | -moz-osx-font-smoothing: grayscale;
25 | }
26 |
27 | .icon-3d_rotation:before {
28 | content: "\e84d";
29 | }
30 | .icon-ac_unit:before {
31 | content: "\eb3b";
32 | }
33 | .icon-alarm2:before {
34 | content: "\e855";
35 | }
36 | .icon-access_alarms:before {
37 | content: "\e191";
38 | }
39 | .icon-schedule:before {
40 | content: "\e8b5";
41 | }
42 | .icon-accessibility2:before {
43 | content: "\e84e";
44 | }
45 | .icon-accessible:before {
46 | content: "\eaeb";
47 | }
48 | .icon-account_balance:before {
49 | content: "\e84f";
50 | }
51 | .icon-account_balance_wallet:before {
52 | content: "\e850";
53 | }
54 | .icon-account_box:before {
55 | content: "\e851";
56 | }
57 | .icon-account_circle:before {
58 | content: "\e853";
59 | }
60 | .icon-adb:before {
61 | content: "\e60e";
62 | }
63 | .icon-add:before {
64 | content: "\e145";
65 | }
66 | .icon-add_a_photo:before {
67 | content: "\e439";
68 | }
69 | .icon-alarm_add:before {
70 | content: "\e856";
71 | }
72 | .icon-add_alert:before {
73 | content: "\e003";
74 | }
75 | .icon-add_box:before {
76 | content: "\e146";
77 | }
78 | .icon-add_circle:before {
79 | content: "\e147";
80 | }
81 | .icon-control_point:before {
82 | content: "\e3ba";
83 | }
84 | .icon-add_location:before {
85 | content: "\e567";
86 | }
87 | .icon-add_shopping_cart:before {
88 | content: "\e854";
89 | }
90 | .icon-queue:before {
91 | content: "\e03c";
92 | }
93 | .icon-add_to_queue:before {
94 | content: "\e05c";
95 | }
96 | .icon-adjust:before {
97 | content: "\e39e";
98 | }
99 | .icon-airline_seat_flat:before {
100 | content: "\e630";
101 | }
102 | .icon-airline_seat_flat_angled:before {
103 | content: "\e631";
104 | }
105 | .icon-airline_seat_individual_suite:before {
106 | content: "\e632";
107 | }
108 | .icon-airline_seat_legroom_extra:before {
109 | content: "\e633";
110 | }
111 | .icon-airline_seat_legroom_normal:before {
112 | content: "\e634";
113 | }
114 | .icon-airline_seat_legroom_reduced:before {
115 | content: "\e635";
116 | }
117 | .icon-airline_seat_recline_extra:before {
118 | content: "\e636";
119 | }
120 | .icon-airline_seat_recline_normal:before {
121 | content: "\e637";
122 | }
123 | .icon-flight:before {
124 | content: "\e539";
125 | }
126 | .icon-airplanemode_inactive:before {
127 | content: "\e194";
128 | }
129 | .icon-airplay:before {
130 | content: "\e055";
131 | }
132 | .icon-airport_shuttle:before {
133 | content: "\eb3c";
134 | }
135 | .icon-alarm_off:before {
136 | content: "\e857";
137 | }
138 | .icon-alarm_on:before {
139 | content: "\e858";
140 | }
141 | .icon-album:before {
142 | content: "\e019";
143 | }
144 | .icon-all_inclusive:before {
145 | content: "\eb3d";
146 | }
147 | .icon-all_out:before {
148 | content: "\eaec";
149 | }
150 | .icon-android2:before {
151 | content: "\e859";
152 | }
153 | .icon-announcement:before {
154 | content: "\e85a";
155 | }
156 | .icon-apps:before {
157 | content: "\e5c3";
158 | }
159 | .icon-archive:before {
160 | content: "\e149";
161 | }
162 | .icon-arrow_back:before {
163 | content: "\e5c4";
164 | }
165 | .icon-arrow_downward:before {
166 | content: "\e5db";
167 | }
168 | .icon-arrow_drop_down:before {
169 | content: "\e5c5";
170 | }
171 | .icon-arrow_drop_down_circle:before {
172 | content: "\e5c6";
173 | }
174 | .icon-arrow_drop_up:before {
175 | content: "\e5c7";
176 | }
177 | .icon-arrow_forward:before {
178 | content: "\e5c8";
179 | }
180 | .icon-arrow_upward:before {
181 | content: "\e5d8";
182 | }
183 | .icon-art_track:before {
184 | content: "\e060";
185 | }
186 | .icon-aspect_ratio:before {
187 | content: "\e85b";
188 | }
189 | .icon-poll:before {
190 | content: "\e801";
191 | }
192 | .icon-assignment:before {
193 | content: "\e85d";
194 | }
195 | .icon-assignment_ind:before {
196 | content: "\e85e";
197 | }
198 | .icon-assignment_late:before {
199 | content: "\e85f";
200 | }
201 | .icon-assignment_return:before {
202 | content: "\e860";
203 | }
204 | .icon-assignment_returned:before {
205 | content: "\e861";
206 | }
207 | .icon-assignment_turned_in:before {
208 | content: "\e862";
209 | }
210 | .icon-assistant:before {
211 | content: "\e39f";
212 | }
213 | .icon-flag2:before {
214 | content: "\e153";
215 | }
216 | .icon-attach_file:before {
217 | content: "\e226";
218 | }
219 | .icon-attach_money:before {
220 | content: "\e227";
221 | }
222 | .icon-attachment2:before {
223 | content: "\e2bc";
224 | }
225 | .icon-audiotrack:before {
226 | content: "\e3a1";
227 | }
228 | .icon-autorenew:before {
229 | content: "\e863";
230 | }
231 | .icon-av_timer:before {
232 | content: "\e01b";
233 | }
234 | .icon-backspace:before {
235 | content: "\e14a";
236 | }
237 | .icon-cloud_upload:before {
238 | content: "\e2c3";
239 | }
240 | .icon-battery_alert:before {
241 | content: "\e19c";
242 | }
243 | .icon-battery_charging_full:before {
244 | content: "\e1a3";
245 | }
246 | .icon-battery_std:before {
247 | content: "\e1a5";
248 | }
249 | .icon-battery_unknown:before {
250 | content: "\e1a6";
251 | }
252 | .icon-beach_access:before {
253 | content: "\eb3e";
254 | }
255 | .icon-beenhere:before {
256 | content: "\e52d";
257 | }
258 | .icon-block:before {
259 | content: "\e14b";
260 | }
261 | .icon-bluetooth:before {
262 | content: "\e1a7";
263 | }
264 | .icon-bluetooth_searching:before {
265 | content: "\e1aa";
266 | }
267 | .icon-bluetooth_connected:before {
268 | content: "\e1a8";
269 | }
270 | .icon-bluetooth_disabled:before {
271 | content: "\e1a9";
272 | }
273 | .icon-blur_circular:before {
274 | content: "\e3a2";
275 | }
276 | .icon-blur_linear:before {
277 | content: "\e3a3";
278 | }
279 | .icon-blur_off:before {
280 | content: "\e3a4";
281 | }
282 | .icon-blur_on:before {
283 | content: "\e3a5";
284 | }
285 | .icon-class:before {
286 | content: "\e86e";
287 | }
288 | .icon-turned_in:before {
289 | content: "\e8e6";
290 | }
291 | .icon-turned_in_not:before {
292 | content: "\e8e7";
293 | }
294 | .icon-border_all:before {
295 | content: "\e228";
296 | }
297 | .icon-border_bottom:before {
298 | content: "\e229";
299 | }
300 | .icon-border_clear:before {
301 | content: "\e22a";
302 | }
303 | .icon-border_color:before {
304 | content: "\e22b";
305 | }
306 | .icon-border_horizontal:before {
307 | content: "\e22c";
308 | }
309 | .icon-border_inner:before {
310 | content: "\e22d";
311 | }
312 | .icon-border_left:before {
313 | content: "\e22e";
314 | }
315 | .icon-border_outer:before {
316 | content: "\e22f";
317 | }
318 | .icon-border_right:before {
319 | content: "\e230";
320 | }
321 | .icon-border_style:before {
322 | content: "\e231";
323 | }
324 | .icon-border_top:before {
325 | content: "\e232";
326 | }
327 | .icon-border_vertical:before {
328 | content: "\e233";
329 | }
330 | .icon-branding_watermark:before {
331 | content: "\e06b";
332 | }
333 | .icon-brightness_1:before {
334 | content: "\e3a6";
335 | }
336 | .icon-brightness_2:before {
337 | content: "\e3a7";
338 | }
339 | .icon-brightness_3:before {
340 | content: "\e3a8";
341 | }
342 | .icon-brightness_4:before {
343 | content: "\e3a9";
344 | }
345 | .icon-brightness_low:before {
346 | content: "\e1ad";
347 | }
348 | .icon-brightness_medium:before {
349 | content: "\e1ae";
350 | }
351 | .icon-brightness_high:before {
352 | content: "\e1ac";
353 | }
354 | .icon-brightness_auto:before {
355 | content: "\e1ab";
356 | }
357 | .icon-broken_image:before {
358 | content: "\e3ad";
359 | }
360 | .icon-brush:before {
361 | content: "\e3ae";
362 | }
363 | .icon-bubble_chart:before {
364 | content: "\e6dd";
365 | }
366 | .icon-bug_report:before {
367 | content: "\e868";
368 | }
369 | .icon-build:before {
370 | content: "\e869";
371 | }
372 | .icon-burst_mode:before {
373 | content: "\e43c";
374 | }
375 | .icon-domain:before {
376 | content: "\e7ee";
377 | }
378 | .icon-business_center:before {
379 | content: "\eb3f";
380 | }
381 | .icon-cached:before {
382 | content: "\e86a";
383 | }
384 | .icon-cake:before {
385 | content: "\e7e9";
386 | }
387 | .icon-phone2:before {
388 | content: "\e0cd";
389 | }
390 | .icon-call_end:before {
391 | content: "\e0b1";
392 | }
393 | .icon-call_made:before {
394 | content: "\e0b2";
395 | }
396 | .icon-merge_type:before {
397 | content: "\e252";
398 | }
399 | .icon-call_missed:before {
400 | content: "\e0b4";
401 | }
402 | .icon-call_missed_outgoing:before {
403 | content: "\e0e4";
404 | }
405 | .icon-call_received:before {
406 | content: "\e0b5";
407 | }
408 | .icon-call_split:before {
409 | content: "\e0b6";
410 | }
411 | .icon-call_to_action:before {
412 | content: "\e06c";
413 | }
414 | .icon-camera2:before {
415 | content: "\e3af";
416 | }
417 | .icon-photo_camera:before {
418 | content: "\e412";
419 | }
420 | .icon-camera_enhance:before {
421 | content: "\e8fc";
422 | }
423 | .icon-camera_front:before {
424 | content: "\e3b1";
425 | }
426 | .icon-camera_rear:before {
427 | content: "\e3b2";
428 | }
429 | .icon-camera_roll:before {
430 | content: "\e3b3";
431 | }
432 | .icon-cancel:before {
433 | content: "\e5c9";
434 | }
435 | .icon-redeem:before {
436 | content: "\e8b1";
437 | }
438 | .icon-card_membership:before {
439 | content: "\e8f7";
440 | }
441 | .icon-card_travel:before {
442 | content: "\e8f8";
443 | }
444 | .icon-casino:before {
445 | content: "\eb40";
446 | }
447 | .icon-cast:before {
448 | content: "\e307";
449 | }
450 | .icon-cast_connected:before {
451 | content: "\e308";
452 | }
453 | .icon-center_focus_strong:before {
454 | content: "\e3b4";
455 | }
456 | .icon-center_focus_weak:before {
457 | content: "\e3b5";
458 | }
459 | .icon-change_history:before {
460 | content: "\e86b";
461 | }
462 | .icon-chat:before {
463 | content: "\e0b7";
464 | }
465 | .icon-chat_bubble:before {
466 | content: "\e0ca";
467 | }
468 | .icon-chat_bubble_outline:before {
469 | content: "\e0cb";
470 | }
471 | .icon-check:before {
472 | content: "\e5ca";
473 | }
474 | .icon-check_box:before {
475 | content: "\e834";
476 | }
477 | .icon-check_box_outline_blank:before {
478 | content: "\e835";
479 | }
480 | .icon-check_circle:before {
481 | content: "\e86c";
482 | }
483 | .icon-navigate_before:before {
484 | content: "\e408";
485 | }
486 | .icon-navigate_next:before {
487 | content: "\e409";
488 | }
489 | .icon-child_care:before {
490 | content: "\eb41";
491 | }
492 | .icon-child_friendly:before {
493 | content: "\eb42";
494 | }
495 | .icon-chrome_reader_mode:before {
496 | content: "\e86d";
497 | }
498 | .icon-close:before {
499 | content: "\e5cd";
500 | }
501 | .icon-clear_all:before {
502 | content: "\e0b8";
503 | }
504 | .icon-closed_caption:before {
505 | content: "\e01c";
506 | }
507 | .icon-wb_cloudy:before {
508 | content: "\e42d";
509 | }
510 | .icon-cloud_circle:before {
511 | content: "\e2be";
512 | }
513 | .icon-cloud_done:before {
514 | content: "\e2bf";
515 | }
516 | .icon-cloud_download:before {
517 | content: "\e2c0";
518 | }
519 | .icon-cloud_off:before {
520 | content: "\e2c1";
521 | }
522 | .icon-cloud_queue:before {
523 | content: "\e2c2";
524 | }
525 | .icon-code:before {
526 | content: "\e86f";
527 | }
528 | .icon-photo_library:before {
529 | content: "\e413";
530 | }
531 | .icon-collections_bookmark:before {
532 | content: "\e431";
533 | }
534 | .icon-palette:before {
535 | content: "\e40a";
536 | }
537 | .icon-colorize:before {
538 | content: "\e3b8";
539 | }
540 | .icon-comment:before {
541 | content: "\e0b9";
542 | }
543 | .icon-compare:before {
544 | content: "\e3b9";
545 | }
546 | .icon-compare_arrows:before {
547 | content: "\eaed";
548 | }
549 | .icon-laptop2:before {
550 | content: "\e31e";
551 | }
552 | .icon-confirmation_number:before {
553 | content: "\e638";
554 | }
555 | .icon-contact_mail:before {
556 | content: "\e0d0";
557 | }
558 | .icon-contact_phone:before {
559 | content: "\e0cf";
560 | }
561 | .icon-contacts:before {
562 | content: "\e0ba";
563 | }
564 | .icon-content_copy:before {
565 | content: "\e14d";
566 | }
567 | .icon-content_cut:before {
568 | content: "\e14e";
569 | }
570 | .icon-content_paste:before {
571 | content: "\e14f";
572 | }
573 | .icon-control_point_duplicate:before {
574 | content: "\e3bb";
575 | }
576 | .icon-copyright:before {
577 | content: "\eaee";
578 | }
579 | .icon-mode_edit:before {
580 | content: "\e254";
581 | }
582 | .icon-create_new_folder:before {
583 | content: "\e2cc";
584 | }
585 | .icon-payment:before {
586 | content: "\e8a1";
587 | }
588 | .icon-crop2:before {
589 | content: "\e3be";
590 | }
591 | .icon-crop_16_9:before {
592 | content: "\e3bc";
593 | }
594 | .icon-crop_3_2:before {
595 | content: "\e3bd";
596 | }
597 | .icon-crop_landscape:before {
598 | content: "\e3c3";
599 | }
600 | .icon-crop_7_5:before {
601 | content: "\e3c0";
602 | }
603 | .icon-crop_din:before {
604 | content: "\e3c1";
605 | }
606 | .icon-crop_free:before {
607 | content: "\e3c2";
608 | }
609 | .icon-crop_original:before {
610 | content: "\e3c4";
611 | }
612 | .icon-crop_portrait:before {
613 | content: "\e3c5";
614 | }
615 | .icon-crop_rotate:before {
616 | content: "\e437";
617 | }
618 | .icon-crop_square:before {
619 | content: "\e3c6";
620 | }
621 | .icon-dashboard:before {
622 | content: "\e871";
623 | }
624 | .icon-data_usage:before {
625 | content: "\e1af";
626 | }
627 | .icon-date_range:before {
628 | content: "\eaef";
629 | }
630 | .icon-dehaze:before {
631 | content: "\e3c7";
632 | }
633 | .icon-delete:before {
634 | content: "\e872";
635 | }
636 | .icon-delete_forever:before {
637 | content: "\eaf0";
638 | }
639 | .icon-delete_sweep:before {
640 | content: "\e16c";
641 | }
642 | .icon-description:before {
643 | content: "\e873";
644 | }
645 | .icon-desktop_mac:before {
646 | content: "\e30b";
647 | }
648 | .icon-desktop_windows:before {
649 | content: "\e30c";
650 | }
651 | .icon-details:before {
652 | content: "\e3c8";
653 | }
654 | .icon-developer_board:before {
655 | content: "\e30d";
656 | }
657 | .icon-developer_mode:before {
658 | content: "\e1b0";
659 | }
660 | .icon-device_hub:before {
661 | content: "\e335";
662 | }
663 | .icon-phonelink:before {
664 | content: "\e326";
665 | }
666 | .icon-devices_other:before {
667 | content: "\e337";
668 | }
669 | .icon-dialer_sip:before {
670 | content: "\e0bb";
671 | }
672 | .icon-dialpad:before {
673 | content: "\e0bc";
674 | }
675 | .icon-directions:before {
676 | content: "\e52e";
677 | }
678 | .icon-directions_bike:before {
679 | content: "\e52f";
680 | }
681 | .icon-directions_boat:before {
682 | content: "\e532";
683 | }
684 | .icon-directions_bus:before {
685 | content: "\e530";
686 | }
687 | .icon-directions_car:before {
688 | content: "\e531";
689 | }
690 | .icon-directions_railway:before {
691 | content: "\e534";
692 | }
693 | .icon-directions_run:before {
694 | content: "\e566";
695 | }
696 | .icon-directions_transit:before {
697 | content: "\e535";
698 | }
699 | .icon-directions_walk:before {
700 | content: "\e536";
701 | }
702 | .icon-disc_full:before {
703 | content: "\e610";
704 | }
705 | .icon-dns:before {
706 | content: "\e875";
707 | }
708 | .icon-not_interested:before {
709 | content: "\e033";
710 | }
711 | .icon-do_not_disturb_alt:before {
712 | content: "\e611";
713 | }
714 | .icon-do_not_disturb_off:before {
715 | content: "\e643";
716 | }
717 | .icon-remove_circle:before {
718 | content: "\e15c";
719 | }
720 | .icon-dock:before {
721 | content: "\e30e";
722 | }
723 | .icon-done:before {
724 | content: "\e876";
725 | }
726 | .icon-done_all:before {
727 | content: "\e877";
728 | }
729 | .icon-donut_large:before {
730 | content: "\eaf1";
731 | }
732 | .icon-donut_small:before {
733 | content: "\eaf2";
734 | }
735 | .icon-drafts:before {
736 | content: "\e151";
737 | }
738 | .icon-drag_handle:before {
739 | content: "\e25d";
740 | }
741 | .icon-time_to_leave:before {
742 | content: "\e62c";
743 | }
744 | .icon-dvr:before {
745 | content: "\e1b2";
746 | }
747 | .icon-edit_location:before {
748 | content: "\e568";
749 | }
750 | .icon-eject2:before {
751 | content: "\e8fb";
752 | }
753 | .icon-markunread:before {
754 | content: "\e159";
755 | }
756 | .icon-enhanced_encryption:before {
757 | content: "\e63f";
758 | }
759 | .icon-equalizer3:before {
760 | content: "\e01d";
761 | }
762 | .icon-error:before {
763 | content: "\e000";
764 | }
765 | .icon-error_outline:before {
766 | content: "\e001";
767 | }
768 | .icon-euro_symbol:before {
769 | content: "\eaf3";
770 | }
771 | .icon-ev_station:before {
772 | content: "\e56d";
773 | }
774 | .icon-insert_invitation:before {
775 | content: "\e24f";
776 | }
777 | .icon-event_available:before {
778 | content: "\e614";
779 | }
780 | .icon-event_busy:before {
781 | content: "\e615";
782 | }
783 | .icon-event_note:before {
784 | content: "\e616";
785 | }
786 | .icon-event_seat:before {
787 | content: "\eaf4";
788 | }
789 | .icon-exit_to_app:before {
790 | content: "\e879";
791 | }
792 | .icon-expand_less:before {
793 | content: "\e5ce";
794 | }
795 | .icon-expand_more:before {
796 | content: "\e5cf";
797 | }
798 | .icon-explicit:before {
799 | content: "\e01e";
800 | }
801 | .icon-explore:before {
802 | content: "\e87a";
803 | }
804 | .icon-exposure:before {
805 | content: "\e3ca";
806 | }
807 | .icon-exposure_neg_1:before {
808 | content: "\e3cb";
809 | }
810 | .icon-exposure_neg_2:before {
811 | content: "\e3cc";
812 | }
813 | .icon-exposure_plus_1:before {
814 | content: "\e3cd";
815 | }
816 | .icon-exposure_plus_2:before {
817 | content: "\e3ce";
818 | }
819 | .icon-exposure_zero:before {
820 | content: "\e3cf";
821 | }
822 | .icon-extension:before {
823 | content: "\e87b";
824 | }
825 | .icon-face:before {
826 | content: "\e87c";
827 | }
828 | .icon-fast_forward:before {
829 | content: "\e01f";
830 | }
831 | .icon-fast_rewind:before {
832 | content: "\e020";
833 | }
834 | .icon-favorite:before {
835 | content: "\e87d";
836 | }
837 | .icon-favorite_border:before {
838 | content: "\e87e";
839 | }
840 | .icon-featured_play_list:before {
841 | content: "\e06d";
842 | }
843 | .icon-featured_video:before {
844 | content: "\e06e";
845 | }
846 | .icon-sms_failed:before {
847 | content: "\e626";
848 | }
849 | .icon-fiber_dvr:before {
850 | content: "\e05d";
851 | }
852 | .icon-fiber_manual_record:before {
853 | content: "\e061";
854 | }
855 | .icon-fiber_new:before {
856 | content: "\e05e";
857 | }
858 | .icon-fiber_pin:before {
859 | content: "\e06a";
860 | }
861 | .icon-fiber_smart_record:before {
862 | content: "\e062";
863 | }
864 | .icon-get_app:before {
865 | content: "\e884";
866 | }
867 | .icon-file_upload:before {
868 | content: "\e2c6";
869 | }
870 | .icon-filter2:before {
871 | content: "\e3d3";
872 | }
873 | .icon-filter_1:before {
874 | content: "\e3d0";
875 | }
876 | .icon-filter_2:before {
877 | content: "\e3d1";
878 | }
879 | .icon-filter_3:before {
880 | content: "\e3d2";
881 | }
882 | .icon-filter_4:before {
883 | content: "\e3d4";
884 | }
885 | .icon-filter_5:before {
886 | content: "\e3d5";
887 | }
888 | .icon-filter_6:before {
889 | content: "\e3d6";
890 | }
891 | .icon-filter_7:before {
892 | content: "\e3d7";
893 | }
894 | .icon-filter_8:before {
895 | content: "\e3d8";
896 | }
897 | .icon-filter_9:before {
898 | content: "\e3d9";
899 | }
900 | .icon-filter_9_plus:before {
901 | content: "\e3da";
902 | }
903 | .icon-filter_b_and_w:before {
904 | content: "\e3db";
905 | }
906 | .icon-filter_center_focus:before {
907 | content: "\e3dc";
908 | }
909 | .icon-filter_drama:before {
910 | content: "\e3dd";
911 | }
912 | .icon-filter_frames:before {
913 | content: "\e3de";
914 | }
915 | .icon-terrain:before {
916 | content: "\e564";
917 | }
918 | .icon-filter_list:before {
919 | content: "\e152";
920 | }
921 | .icon-filter_none:before {
922 | content: "\e3e0";
923 | }
924 | .icon-filter_tilt_shift:before {
925 | content: "\e3e2";
926 | }
927 | .icon-filter_vintage:before {
928 | content: "\e3e3";
929 | }
930 | .icon-find_in_page:before {
931 | content: "\e880";
932 | }
933 | .icon-find_replace:before {
934 | content: "\e881";
935 | }
936 | .icon-fingerprint:before {
937 | content: "\eaf5";
938 | }
939 | .icon-first_page:before {
940 | content: "\e5dc";
941 | }
942 | .icon-fitness_center:before {
943 | content: "\eb43";
944 | }
945 | .icon-flare:before {
946 | content: "\e3e4";
947 | }
948 | .icon-flash_auto:before {
949 | content: "\e3e5";
950 | }
951 | .icon-flash_off:before {
952 | content: "\e3e6";
953 | }
954 | .icon-flash_on:before {
955 | content: "\e3e7";
956 | }
957 | .icon-flight_land:before {
958 | content: "\eaf6";
959 | }
960 | .icon-flight_takeoff:before {
961 | content: "\eaf7";
962 | }
963 | .icon-flip:before {
964 | content: "\e3e8";
965 | }
966 | .icon-flip_to_back:before {
967 | content: "\e882";
968 | }
969 | .icon-flip_to_front:before {
970 | content: "\e883";
971 | }
972 | .icon-folder2:before {
973 | content: "\e2c7";
974 | }
975 | .icon-folder_open:before {
976 | content: "\e2c8";
977 | }
978 | .icon-folder_shared:before {
979 | content: "\e2c9";
980 | }
981 | .icon-folder_special:before {
982 | content: "\e617";
983 | }
984 | .icon-font_download:before {
985 | content: "\e167";
986 | }
987 | .icon-format_align_center:before {
988 | content: "\e234";
989 | }
990 | .icon-format_align_justify:before {
991 | content: "\e235";
992 | }
993 | .icon-format_align_left:before {
994 | content: "\e236";
995 | }
996 | .icon-format_align_right:before {
997 | content: "\e237";
998 | }
999 | .icon-format_bold:before {
1000 | content: "\e238";
1001 | }
1002 | .icon-format_clear:before {
1003 | content: "\e239";
1004 | }
1005 | .icon-format_color_fill:before {
1006 | content: "\e23a";
1007 | }
1008 | .icon-format_color_reset:before {
1009 | content: "\e23b";
1010 | }
1011 | .icon-format_color_text:before {
1012 | content: "\e23c";
1013 | }
1014 | .icon-format_indent_decrease:before {
1015 | content: "\e23d";
1016 | }
1017 | .icon-format_indent_increase:before {
1018 | content: "\e23e";
1019 | }
1020 | .icon-format_italic:before {
1021 | content: "\e23f";
1022 | }
1023 | .icon-format_line_spacing:before {
1024 | content: "\e240";
1025 | }
1026 | .icon-format_list_bulleted:before {
1027 | content: "\e241";
1028 | }
1029 | .icon-format_list_numbered:before {
1030 | content: "\e242";
1031 | }
1032 | .icon-format_paint:before {
1033 | content: "\e243";
1034 | }
1035 | .icon-format_quote:before {
1036 | content: "\e244";
1037 | }
1038 | .icon-format_shapes:before {
1039 | content: "\e25e";
1040 | }
1041 | .icon-format_size:before {
1042 | content: "\e245";
1043 | }
1044 | .icon-format_strikethrough:before {
1045 | content: "\e246";
1046 | }
1047 | .icon-format_textdirection_l_to_r:before {
1048 | content: "\e247";
1049 | }
1050 | .icon-format_textdirection_r_to_l:before {
1051 | content: "\e248";
1052 | }
1053 | .icon-format_underlined:before {
1054 | content: "\e249";
1055 | }
1056 | .icon-question_answer:before {
1057 | content: "\e8af";
1058 | }
1059 | .icon-forward4:before {
1060 | content: "\e154";
1061 | }
1062 | .icon-forward_10:before {
1063 | content: "\e056";
1064 | }
1065 | .icon-forward_30:before {
1066 | content: "\e057";
1067 | }
1068 | .icon-forward_5:before {
1069 | content: "\e058";
1070 | }
1071 | .icon-free_breakfast:before {
1072 | content: "\eb44";
1073 | }
1074 | .icon-fullscreen:before {
1075 | content: "\e5d0";
1076 | }
1077 | .icon-fullscreen_exit:before {
1078 | content: "\e5d1";
1079 | }
1080 | .icon-functions:before {
1081 | content: "\e24a";
1082 | }
1083 | .icon-g_translate:before {
1084 | content: "\eaf8";
1085 | }
1086 | .icon-games:before {
1087 | content: "\e021";
1088 | }
1089 | .icon-gavel:before {
1090 | content: "\eaf9";
1091 | }
1092 | .icon-gesture:before {
1093 | content: "\e155";
1094 | }
1095 | .icon-gif:before {
1096 | content: "\eafa";
1097 | }
1098 | .icon-goat:before {
1099 | content: "\eafb";
1100 | }
1101 | .icon-golf_course:before {
1102 | content: "\eb45";
1103 | }
1104 | .icon-my_location:before {
1105 | content: "\e55c";
1106 | }
1107 | .icon-location_searching:before {
1108 | content: "\e1b7";
1109 | }
1110 | .icon-location_disabled:before {
1111 | content: "\e1b6";
1112 | }
1113 | .icon-star:before {
1114 | content: "\e838";
1115 | }
1116 | .icon-gradient:before {
1117 | content: "\e3e9";
1118 | }
1119 | .icon-grain:before {
1120 | content: "\e3ea";
1121 | }
1122 | .icon-graphic_eq:before {
1123 | content: "\e1b8";
1124 | }
1125 | .icon-grid_off:before {
1126 | content: "\e3eb";
1127 | }
1128 | .icon-grid_on:before {
1129 | content: "\e3ec";
1130 | }
1131 | .icon-people:before {
1132 | content: "\e7fb";
1133 | }
1134 | .icon-group_add:before {
1135 | content: "\e7f0";
1136 | }
1137 | .icon-group_work:before {
1138 | content: "\e886";
1139 | }
1140 | .icon-hd:before {
1141 | content: "\e052";
1142 | }
1143 | .icon-hdr_off:before {
1144 | content: "\e3ed";
1145 | }
1146 | .icon-hdr_on:before {
1147 | content: "\e3ee";
1148 | }
1149 | .icon-hdr_strong:before {
1150 | content: "\e3f1";
1151 | }
1152 | .icon-hdr_weak:before {
1153 | content: "\e3f2";
1154 | }
1155 | .icon-headset:before {
1156 | content: "\e310";
1157 | }
1158 | .icon-headset_mic:before {
1159 | content: "\e311";
1160 | }
1161 | .icon-healing:before {
1162 | content: "\e3f3";
1163 | }
1164 | .icon-hearing:before {
1165 | content: "\e023";
1166 | }
1167 | .icon-help:before {
1168 | content: "\e887";
1169 | }
1170 | .icon-help_outline:before {
1171 | content: "\e8fd";
1172 | }
1173 | .icon-high_quality:before {
1174 | content: "\e024";
1175 | }
1176 | .icon-highlight:before {
1177 | content: "\e25f";
1178 | }
1179 | .icon-highlight_off:before {
1180 | content: "\e888";
1181 | }
1182 | .icon-restore:before {
1183 | content: "\e8b3";
1184 | }
1185 | .icon-home4:before {
1186 | content: "\e88a";
1187 | }
1188 | .icon-hot_tub:before {
1189 | content: "\eb46";
1190 | }
1191 | .icon-local_hotel:before {
1192 | content: "\e549";
1193 | }
1194 | .icon-hourglass_empty:before {
1195 | content: "\e88b";
1196 | }
1197 | .icon-hourglass_full:before {
1198 | content: "\e88c";
1199 | }
1200 | .icon-http:before {
1201 | content: "\eafc";
1202 | }
1203 | .icon-lock2:before {
1204 | content: "\e897";
1205 | }
1206 | .icon-photo:before {
1207 | content: "\e410";
1208 | }
1209 | .icon-image_aspect_ratio:before {
1210 | content: "\e3f5";
1211 | }
1212 | .icon-import_contacts:before {
1213 | content: "\e0e0";
1214 | }
1215 | .icon-import_export:before {
1216 | content: "\e0c3";
1217 | }
1218 | .icon-important_devices:before {
1219 | content: "\eafd";
1220 | }
1221 | .icon-inbox:before {
1222 | content: "\e156";
1223 | }
1224 | .icon-indeterminate_check_box:before {
1225 | content: "\eafe";
1226 | }
1227 | .icon-info2:before {
1228 | content: "\e88e";
1229 | }
1230 | .icon-info_outline:before {
1231 | content: "\e88f";
1232 | }
1233 | .icon-input:before {
1234 | content: "\e890";
1235 | }
1236 | .icon-insert_comment:before {
1237 | content: "\e24c";
1238 | }
1239 | .icon-insert_drive_file:before {
1240 | content: "\e24d";
1241 | }
1242 | .icon-tag_faces:before {
1243 | content: "\e420";
1244 | }
1245 | .icon-link2:before {
1246 | content: "\e157";
1247 | }
1248 | .icon-invert_colors:before {
1249 | content: "\e891";
1250 | }
1251 | .icon-invert_colors_off:before {
1252 | content: "\e0c4";
1253 | }
1254 | .icon-iso:before {
1255 | content: "\e3f6";
1256 | }
1257 | .icon-keyboard2:before {
1258 | content: "\e312";
1259 | }
1260 | .icon-keyboard_arrow_down:before {
1261 | content: "\e313";
1262 | }
1263 | .icon-keyboard_arrow_left:before {
1264 | content: "\e314";
1265 | }
1266 | .icon-keyboard_arrow_right:before {
1267 | content: "\e315";
1268 | }
1269 | .icon-keyboard_arrow_up:before {
1270 | content: "\e316";
1271 | }
1272 | .icon-keyboard_backspace:before {
1273 | content: "\e317";
1274 | }
1275 | .icon-keyboard_capslock:before {
1276 | content: "\e318";
1277 | }
1278 | .icon-keyboard_hide:before {
1279 | content: "\e31a";
1280 | }
1281 | .icon-keyboard_return:before {
1282 | content: "\e31b";
1283 | }
1284 | .icon-keyboard_tab:before {
1285 | content: "\e31c";
1286 | }
1287 | .icon-keyboard_voice:before {
1288 | content: "\e31d";
1289 | }
1290 | .icon-kitchen:before {
1291 | content: "\eb47";
1292 | }
1293 | .icon-label:before {
1294 | content: "\e892";
1295 | }
1296 | .icon-label_outline:before {
1297 | content: "\e893";
1298 | }
1299 | .icon-language:before {
1300 | content: "\e894";
1301 | }
1302 | .icon-laptop_chromebook:before {
1303 | content: "\e31f";
1304 | }
1305 | .icon-laptop_mac:before {
1306 | content: "\e320";
1307 | }
1308 | .icon-laptop_windows:before {
1309 | content: "\e321";
1310 | }
1311 | .icon-last_page:before {
1312 | content: "\e5dd";
1313 | }
1314 | .icon-open_in_new:before {
1315 | content: "\e89e";
1316 | }
1317 | .icon-layers:before {
1318 | content: "\e53b";
1319 | }
1320 | .icon-layers_clear:before {
1321 | content: "\e53c";
1322 | }
1323 | .icon-leak_add:before {
1324 | content: "\e3f8";
1325 | }
1326 | .icon-leak_remove:before {
1327 | content: "\e3f9";
1328 | }
1329 | .icon-lens:before {
1330 | content: "\e3fa";
1331 | }
1332 | .icon-library_books:before {
1333 | content: "\e02f";
1334 | }
1335 | .icon-library_music:before {
1336 | content: "\e030";
1337 | }
1338 | .icon-lightbulb_outline:before {
1339 | content: "\eaff";
1340 | }
1341 | .icon-line_style:before {
1342 | content: "\eb00";
1343 | }
1344 | .icon-line_weight:before {
1345 | content: "\eb01";
1346 | }
1347 | .icon-linear_scale:before {
1348 | content: "\e260";
1349 | }
1350 | .icon-linked_camera:before {
1351 | content: "\e438";
1352 | }
1353 | .icon-list3:before {
1354 | content: "\e896";
1355 | }
1356 | .icon-live_help:before {
1357 | content: "\e0c6";
1358 | }
1359 | .icon-live_tv:before {
1360 | content: "\e639";
1361 | }
1362 | .icon-local_play:before {
1363 | content: "\e553";
1364 | }
1365 | .icon-local_airport:before {
1366 | content: "\e53d";
1367 | }
1368 | .icon-local_atm:before {
1369 | content: "\e53e";
1370 | }
1371 | .icon-local_bar:before {
1372 | content: "\e540";
1373 | }
1374 | .icon-local_cafe:before {
1375 | content: "\e541";
1376 | }
1377 | .icon-local_car_wash:before {
1378 | content: "\e542";
1379 | }
1380 | .icon-local_convenience_store:before {
1381 | content: "\e543";
1382 | }
1383 | .icon-restaurant_menu:before {
1384 | content: "\e561";
1385 | }
1386 | .icon-local_drink:before {
1387 | content: "\e544";
1388 | }
1389 | .icon-local_florist:before {
1390 | content: "\e545";
1391 | }
1392 | .icon-local_gas_station:before {
1393 | content: "\e546";
1394 | }
1395 | .icon-shopping_cart:before {
1396 | content: "\e8cc";
1397 | }
1398 | .icon-local_hospital:before {
1399 | content: "\e548";
1400 | }
1401 | .icon-local_laundry_service:before {
1402 | content: "\e54a";
1403 | }
1404 | .icon-local_library:before {
1405 | content: "\e54b";
1406 | }
1407 | .icon-local_mall:before {
1408 | content: "\e54c";
1409 | }
1410 | .icon-theaters:before {
1411 | content: "\e8da";
1412 | }
1413 | .icon-local_offer:before {
1414 | content: "\e54e";
1415 | }
1416 | .icon-local_parking:before {
1417 | content: "\e54f";
1418 | }
1419 | .icon-local_pharmacy:before {
1420 | content: "\e550";
1421 | }
1422 | .icon-local_pizza:before {
1423 | content: "\e552";
1424 | }
1425 | .icon-print:before {
1426 | content: "\e8ad";
1427 | }
1428 | .icon-local_shipping:before {
1429 | content: "\e558";
1430 | }
1431 | .icon-local_taxi:before {
1432 | content: "\e559";
1433 | }
1434 | .icon-location_city:before {
1435 | content: "\e7f1";
1436 | }
1437 | .icon-location_off:before {
1438 | content: "\e0c7";
1439 | }
1440 | .icon-room:before {
1441 | content: "\e8b4";
1442 | }
1443 | .icon-lock_open:before {
1444 | content: "\e898";
1445 | }
1446 | .icon-lock_outline:before {
1447 | content: "\e899";
1448 | }
1449 | .icon-looks:before {
1450 | content: "\e3fc";
1451 | }
1452 | .icon-looks_3:before {
1453 | content: "\e3fb";
1454 | }
1455 | .icon-looks_4:before {
1456 | content: "\e3fd";
1457 | }
1458 | .icon-looks_5:before {
1459 | content: "\e3fe";
1460 | }
1461 | .icon-looks_6:before {
1462 | content: "\e3ff";
1463 | }
1464 | .icon-looks_one:before {
1465 | content: "\e400";
1466 | }
1467 | .icon-looks_two:before {
1468 | content: "\e401";
1469 | }
1470 | .icon-sync:before {
1471 | content: "\e627";
1472 | }
1473 | .icon-loupe:before {
1474 | content: "\e402";
1475 | }
1476 | .icon-low_priority:before {
1477 | content: "\e16d";
1478 | }
1479 | .icon-loyalty:before {
1480 | content: "\e89a";
1481 | }
1482 | .icon-mail_outline:before {
1483 | content: "\e0e1";
1484 | }
1485 | .icon-map3:before {
1486 | content: "\e55b";
1487 | }
1488 | .icon-markunread_mailbox:before {
1489 | content: "\e89b";
1490 | }
1491 | .icon-memory:before {
1492 | content: "\e322";
1493 | }
1494 | .icon-menu5:before {
1495 | content: "\e5d2";
1496 | }
1497 | .icon-message:before {
1498 | content: "\e0c9";
1499 | }
1500 | .icon-mic2:before {
1501 | content: "\e029";
1502 | }
1503 | .icon-mic_none:before {
1504 | content: "\e02a";
1505 | }
1506 | .icon-mic_off:before {
1507 | content: "\e02b";
1508 | }
1509 | .icon-mms:before {
1510 | content: "\e618";
1511 | }
1512 | .icon-mode_comment:before {
1513 | content: "\e253";
1514 | }
1515 | .icon-monetization_on:before {
1516 | content: "\e263";
1517 | }
1518 | .icon-money_off:before {
1519 | content: "\e25c";
1520 | }
1521 | .icon-monochrome_photos:before {
1522 | content: "\e403";
1523 | }
1524 | .icon-mood_bad:before {
1525 | content: "\e7f3";
1526 | }
1527 | .icon-more:before {
1528 | content: "\e619";
1529 | }
1530 | .icon-more_horiz:before {
1531 | content: "\e5d3";
1532 | }
1533 | .icon-more_vert:before {
1534 | content: "\e5d4";
1535 | }
1536 | .icon-motorcycle:before {
1537 | content: "\eb02";
1538 | }
1539 | .icon-mouse:before {
1540 | content: "\e323";
1541 | }
1542 | .icon-move_to_inbox:before {
1543 | content: "\e168";
1544 | }
1545 | .icon-movie_creation:before {
1546 | content: "\e404";
1547 | }
1548 | .icon-movie_filter:before {
1549 | content: "\e43a";
1550 | }
1551 | .icon-multiline_chart:before {
1552 | content: "\e6df";
1553 | }
1554 | .icon-music_note:before {
1555 | content: "\e405";
1556 | }
1557 | .icon-music_video:before {
1558 | content: "\e063";
1559 | }
1560 | .icon-nature:before {
1561 | content: "\e406";
1562 | }
1563 | .icon-nature_people:before {
1564 | content: "\e407";
1565 | }
1566 | .icon-navigation:before {
1567 | content: "\e55d";
1568 | }
1569 | .icon-near_me:before {
1570 | content: "\e569";
1571 | }
1572 | .icon-network_cell:before {
1573 | content: "\e1b9";
1574 | }
1575 | .icon-network_check:before {
1576 | content: "\e640";
1577 | }
1578 | .icon-network_locked:before {
1579 | content: "\e61a";
1580 | }
1581 | .icon-network_wifi:before {
1582 | content: "\e1ba";
1583 | }
1584 | .icon-new_releases:before {
1585 | content: "\e031";
1586 | }
1587 | .icon-next_week:before {
1588 | content: "\e16a";
1589 | }
1590 | .icon-nfc:before {
1591 | content: "\e1bb";
1592 | }
1593 | .icon-no_encryption:before {
1594 | content: "\e641";
1595 | }
1596 | .icon-signal_cellular_no_sim:before {
1597 | content: "\e1ce";
1598 | }
1599 | .icon-note:before {
1600 | content: "\e06f";
1601 | }
1602 | .icon-note_add:before {
1603 | content: "\e89c";
1604 | }
1605 | .icon-notifications:before {
1606 | content: "\e7f4";
1607 | }
1608 | .icon-notifications_active:before {
1609 | content: "\e7f7";
1610 | }
1611 | .icon-notifications_none:before {
1612 | content: "\e7f5";
1613 | }
1614 | .icon-notifications_off:before {
1615 | content: "\e7f6";
1616 | }
1617 | .icon-notifications_paused:before {
1618 | content: "\e7f8";
1619 | }
1620 | .icon-offline_pin:before {
1621 | content: "\eb03";
1622 | }
1623 | .icon-ondemand_video:before {
1624 | content: "\e63a";
1625 | }
1626 | .icon-opacity:before {
1627 | content: "\eb04";
1628 | }
1629 | .icon-open_in_browser:before {
1630 | content: "\e89d";
1631 | }
1632 | .icon-open_with:before {
1633 | content: "\e89f";
1634 | }
1635 | .icon-pages:before {
1636 | content: "\e7f9";
1637 | }
1638 | .icon-pageview:before {
1639 | content: "\e8a0";
1640 | }
1641 | .icon-pan_tool:before {
1642 | content: "\eb05";
1643 | }
1644 | .icon-panorama:before {
1645 | content: "\e40b";
1646 | }
1647 | .icon-radio_button_unchecked:before {
1648 | content: "\e836";
1649 | }
1650 | .icon-panorama_horizontal:before {
1651 | content: "\e40d";
1652 | }
1653 | .icon-panorama_vertical:before {
1654 | content: "\e40e";
1655 | }
1656 | .icon-panorama_wide_angle:before {
1657 | content: "\e40f";
1658 | }
1659 | .icon-party_mode:before {
1660 | content: "\e7fa";
1661 | }
1662 | .icon-pause3:before {
1663 | content: "\e034";
1664 | }
1665 | .icon-pause_circle_filled:before {
1666 | content: "\e035";
1667 | }
1668 | .icon-pause_circle_outline:before {
1669 | content: "\e036";
1670 | }
1671 | .icon-people_outline:before {
1672 | content: "\e7fc";
1673 | }
1674 | .icon-perm_camera_mic:before {
1675 | content: "\e8a2";
1676 | }
1677 | .icon-perm_contact_calendar:before {
1678 | content: "\e8a3";
1679 | }
1680 | .icon-perm_data_setting:before {
1681 | content: "\e8a4";
1682 | }
1683 | .icon-perm_device_information:before {
1684 | content: "\e8a5";
1685 | }
1686 | .icon-person_outline:before {
1687 | content: "\e7ff";
1688 | }
1689 | .icon-perm_media:before {
1690 | content: "\e8a7";
1691 | }
1692 | .icon-perm_phone_msg:before {
1693 | content: "\e8a8";
1694 | }
1695 | .icon-perm_scan_wifi:before {
1696 | content: "\e8a9";
1697 | }
1698 | .icon-person:before {
1699 | content: "\e7fd";
1700 | }
1701 | .icon-person_add:before {
1702 | content: "\e7fe";
1703 | }
1704 | .icon-person_pin:before {
1705 | content: "\e55a";
1706 | }
1707 | .icon-person_pin_circle:before {
1708 | content: "\e56a";
1709 | }
1710 | .icon-personal_video:before {
1711 | content: "\e63b";
1712 | }
1713 | .icon-pets:before {
1714 | content: "\eb06";
1715 | }
1716 | .icon-phone_android:before {
1717 | content: "\e324";
1718 | }
1719 | .icon-phone_bluetooth_speaker:before {
1720 | content: "\e61b";
1721 | }
1722 | .icon-phone_forwarded:before {
1723 | content: "\e61c";
1724 | }
1725 | .icon-phone_in_talk:before {
1726 | content: "\e61d";
1727 | }
1728 | .icon-phone_iphone:before {
1729 | content: "\e325";
1730 | }
1731 | .icon-phone_locked:before {
1732 | content: "\e61e";
1733 | }
1734 | .icon-phone_missed:before {
1735 | content: "\e61f";
1736 | }
1737 | .icon-phone_paused:before {
1738 | content: "\e620";
1739 | }
1740 | .icon-phonelink_erase:before {
1741 | content: "\e0db";
1742 | }
1743 | .icon-phonelink_lock:before {
1744 | content: "\e0dc";
1745 | }
1746 | .icon-phonelink_off:before {
1747 | content: "\e327";
1748 | }
1749 | .icon-phonelink_ring:before {
1750 | content: "\e0dd";
1751 | }
1752 | .icon-phonelink_setup:before {
1753 | content: "\e0de";
1754 | }
1755 | .icon-photo_album:before {
1756 | content: "\e411";
1757 | }
1758 | .icon-photo_filter:before {
1759 | content: "\e43b";
1760 | }
1761 | .icon-photo_size_select_actual:before {
1762 | content: "\e432";
1763 | }
1764 | .icon-photo_size_select_large:before {
1765 | content: "\e433";
1766 | }
1767 | .icon-photo_size_select_small:before {
1768 | content: "\e434";
1769 | }
1770 | .icon-picture_as_pdf:before {
1771 | content: "\e415";
1772 | }
1773 | .icon-picture_in_picture:before {
1774 | content: "\e8aa";
1775 | }
1776 | .icon-picture_in_picture_alt:before {
1777 | content: "\eb07";
1778 | }
1779 | .icon-pie_chart:before {
1780 | content: "\e6c4";
1781 | }
1782 | .icon-pie_chart_outlined:before {
1783 | content: "\e6c5";
1784 | }
1785 | .icon-pin_drop:before {
1786 | content: "\e55e";
1787 | }
1788 | .icon-play_arrow:before {
1789 | content: "\e037";
1790 | }
1791 | .icon-play_circle_filled:before {
1792 | content: "\e038";
1793 | }
1794 | .icon-play_circle_outline:before {
1795 | content: "\e039";
1796 | }
1797 | .icon-play_for_work:before {
1798 | content: "\eb08";
1799 | }
1800 | .icon-playlist_add:before {
1801 | content: "\e03b";
1802 | }
1803 | .icon-playlist_add_check:before {
1804 | content: "\e065";
1805 | }
1806 | .icon-playlist_play:before {
1807 | content: "\e05f";
1808 | }
1809 | .icon-plus_one:before {
1810 | content: "\e800";
1811 | }
1812 | .icon-polymer:before {
1813 | content: "\e8ab";
1814 | }
1815 | .icon-pool:before {
1816 | content: "\eb48";
1817 | }
1818 | .icon-portable_wifi_off:before {
1819 | content: "\e0ce";
1820 | }
1821 | .icon-portrait:before {
1822 | content: "\e416";
1823 | }
1824 | .icon-power2:before {
1825 | content: "\e63c";
1826 | }
1827 | .icon-power_input:before {
1828 | content: "\e336";
1829 | }
1830 | .icon-power_settings_new:before {
1831 | content: "\e8ac";
1832 | }
1833 | .icon-pregnant_woman:before {
1834 | content: "\eb09";
1835 | }
1836 | .icon-present_to_all:before {
1837 | content: "\e0df";
1838 | }
1839 | .icon-priority_high:before {
1840 | content: "\e645";
1841 | }
1842 | .icon-public:before {
1843 | content: "\e80b";
1844 | }
1845 | .icon-publish:before {
1846 | content: "\e255";
1847 | }
1848 | .icon-queue_music:before {
1849 | content: "\e03d";
1850 | }
1851 | .icon-queue_play_next:before {
1852 | content: "\e066";
1853 | }
1854 | .icon-radio:before {
1855 | content: "\e03e";
1856 | }
1857 | .icon-radio_button_checked:before {
1858 | content: "\e837";
1859 | }
1860 | .icon-rate_review:before {
1861 | content: "\e560";
1862 | }
1863 | .icon-receipt:before {
1864 | content: "\e8b0";
1865 | }
1866 | .icon-recent_actors:before {
1867 | content: "\e03f";
1868 | }
1869 | .icon-record_voice_over:before {
1870 | content: "\eb0a";
1871 | }
1872 | .icon-redo3:before {
1873 | content: "\e15a";
1874 | }
1875 | .icon-refresh:before {
1876 | content: "\e5d5";
1877 | }
1878 | .icon-remove:before {
1879 | content: "\e15b";
1880 | }
1881 | .icon-remove_circle_outline:before {
1882 | content: "\e15d";
1883 | }
1884 | .icon-remove_from_queue:before {
1885 | content: "\e067";
1886 | }
1887 | .icon-visibility:before {
1888 | content: "\e8f4";
1889 | }
1890 | .icon-remove_shopping_cart:before {
1891 | content: "\eb0b";
1892 | }
1893 | .icon-reorder:before {
1894 | content: "\e8fe";
1895 | }
1896 | .icon-repeat:before {
1897 | content: "\e040";
1898 | }
1899 | .icon-repeat_one:before {
1900 | content: "\e041";
1901 | }
1902 | .icon-replay:before {
1903 | content: "\e042";
1904 | }
1905 | .icon-replay_10:before {
1906 | content: "\e059";
1907 | }
1908 | .icon-replay_30:before {
1909 | content: "\e05a";
1910 | }
1911 | .icon-replay_5:before {
1912 | content: "\e05b";
1913 | }
1914 | .icon-reply2:before {
1915 | content: "\e15e";
1916 | }
1917 | .icon-reply_all:before {
1918 | content: "\e15f";
1919 | }
1920 | .icon-report:before {
1921 | content: "\e160";
1922 | }
1923 | .icon-warning2:before {
1924 | content: "\e002";
1925 | }
1926 | .icon-restaurant:before {
1927 | content: "\e56c";
1928 | }
1929 | .icon-restore_page:before {
1930 | content: "\eb0c";
1931 | }
1932 | .icon-ring_volume:before {
1933 | content: "\e0d1";
1934 | }
1935 | .icon-room_service:before {
1936 | content: "\eb49";
1937 | }
1938 | .icon-rotate_90_degrees_ccw:before {
1939 | content: "\e418";
1940 | }
1941 | .icon-rotate_left:before {
1942 | content: "\e419";
1943 | }
1944 | .icon-rotate_right:before {
1945 | content: "\e41a";
1946 | }
1947 | .icon-rounded_corner:before {
1948 | content: "\eb0d";
1949 | }
1950 | .icon-router:before {
1951 | content: "\e328";
1952 | }
1953 | .icon-rowing:before {
1954 | content: "\eb0e";
1955 | }
1956 | .icon-rss_feed:before {
1957 | content: "\e0e5";
1958 | }
1959 | .icon-rv_hookup:before {
1960 | content: "\e642";
1961 | }
1962 | .icon-satellite:before {
1963 | content: "\e562";
1964 | }
1965 | .icon-save:before {
1966 | content: "\e161";
1967 | }
1968 | .icon-scanner:before {
1969 | content: "\e329";
1970 | }
1971 | .icon-school:before {
1972 | content: "\e80c";
1973 | }
1974 | .icon-screen_lock_landscape:before {
1975 | content: "\e1be";
1976 | }
1977 | .icon-screen_lock_portrait:before {
1978 | content: "\e1bf";
1979 | }
1980 | .icon-screen_lock_rotation:before {
1981 | content: "\e1c0";
1982 | }
1983 | .icon-screen_rotation:before {
1984 | content: "\e1c1";
1985 | }
1986 | .icon-screen_share:before {
1987 | content: "\e0e2";
1988 | }
1989 | .icon-sd_storage:before {
1990 | content: "\e1c2";
1991 | }
1992 | .icon-search2:before {
1993 | content: "\e8b6";
1994 | }
1995 | .icon-security:before {
1996 | content: "\e32a";
1997 | }
1998 | .icon-select_all:before {
1999 | content: "\e162";
2000 | }
2001 | .icon-send:before {
2002 | content: "\e163";
2003 | }
2004 | .icon-sentiment_dissatisfied:before {
2005 | content: "\e811";
2006 | }
2007 | .icon-sentiment_neutral:before {
2008 | content: "\e812";
2009 | }
2010 | .icon-sentiment_satisfied:before {
2011 | content: "\e813";
2012 | }
2013 | .icon-sentiment_very_dissatisfied:before {
2014 | content: "\e814";
2015 | }
2016 | .icon-sentiment_very_satisfied:before {
2017 | content: "\e815";
2018 | }
2019 | .icon-settings:before {
2020 | content: "\e8b8";
2021 | }
2022 | .icon-settings_applications:before {
2023 | content: "\e8b9";
2024 | }
2025 | .icon-settings_backup_restore:before {
2026 | content: "\e8ba";
2027 | }
2028 | .icon-settings_bluetooth:before {
2029 | content: "\e8bb";
2030 | }
2031 | .icon-settings_brightness:before {
2032 | content: "\e8bd";
2033 | }
2034 | .icon-settings_cell:before {
2035 | content: "\e8bc";
2036 | }
2037 | .icon-settings_ethernet:before {
2038 | content: "\e8be";
2039 | }
2040 | .icon-settings_input_antenna:before {
2041 | content: "\e8bf";
2042 | }
2043 | .icon-settings_input_composite:before {
2044 | content: "\e8c1";
2045 | }
2046 | .icon-settings_input_hdmi:before {
2047 | content: "\e8c2";
2048 | }
2049 | .icon-settings_input_svideo:before {
2050 | content: "\e8c3";
2051 | }
2052 | .icon-settings_overscan:before {
2053 | content: "\e8c4";
2054 | }
2055 | .icon-settings_phone:before {
2056 | content: "\e8c5";
2057 | }
2058 | .icon-settings_power:before {
2059 | content: "\e8c6";
2060 | }
2061 | .icon-settings_remote:before {
2062 | content: "\e8c7";
2063 | }
2064 | .icon-settings_system_daydream:before {
2065 | content: "\e1c3";
2066 | }
2067 | .icon-settings_voice:before {
2068 | content: "\e8c8";
2069 | }
2070 | .icon-share3:before {
2071 | content: "\e80d";
2072 | }
2073 | .icon-shop:before {
2074 | content: "\e8c9";
2075 | }
2076 | .icon-shop_two:before {
2077 | content: "\e8ca";
2078 | }
2079 | .icon-shopping_basket:before {
2080 | content: "\e8cb";
2081 | }
2082 | .icon-short_text:before {
2083 | content: "\e261";
2084 | }
2085 | .icon-show_chart:before {
2086 | content: "\e6e1";
2087 | }
2088 | .icon-shuffle2:before {
2089 | content: "\e043";
2090 | }
2091 | .icon-signal_cellular_4_bar:before {
2092 | content: "\e1c8";
2093 | }
2094 | .icon-signal_cellular_connected_no_internet_4_bar:before {
2095 | content: "\e1cd";
2096 | }
2097 | .icon-signal_cellular_null:before {
2098 | content: "\e1cf";
2099 | }
2100 | .icon-signal_cellular_off:before {
2101 | content: "\e1d0";
2102 | }
2103 | .icon-signal_wifi_4_bar:before {
2104 | content: "\e1d8";
2105 | }
2106 | .icon-signal_wifi_4_bar_lock:before {
2107 | content: "\e1d9";
2108 | }
2109 | .icon-signal_wifi_off:before {
2110 | content: "\e1da";
2111 | }
2112 | .icon-sim_card:before {
2113 | content: "\e32b";
2114 | }
2115 | .icon-sim_card_alert:before {
2116 | content: "\e624";
2117 | }
2118 | .icon-skip_next:before {
2119 | content: "\e044";
2120 | }
2121 | .icon-skip_previous:before {
2122 | content: "\e045";
2123 | }
2124 | .icon-slideshow:before {
2125 | content: "\e41b";
2126 | }
2127 | .icon-slow_motion_video:before {
2128 | content: "\e068";
2129 | }
2130 | .icon-stay_primary_portrait:before {
2131 | content: "\e0d6";
2132 | }
2133 | .icon-smoke_free:before {
2134 | content: "\eb4a";
2135 | }
2136 | .icon-smoking_rooms:before {
2137 | content: "\eb4b";
2138 | }
2139 | .icon-textsms:before {
2140 | content: "\e0d8";
2141 | }
2142 | .icon-snooze:before {
2143 | content: "\e046";
2144 | }
2145 | .icon-sort:before {
2146 | content: "\e164";
2147 | }
2148 | .icon-sort_by_alpha:before {
2149 | content: "\e053";
2150 | }
2151 | .icon-spa:before {
2152 | content: "\eb4c";
2153 | }
2154 | .icon-space_bar:before {
2155 | content: "\e256";
2156 | }
2157 | .icon-speaker:before {
2158 | content: "\e32d";
2159 | }
2160 | .icon-speaker_group:before {
2161 | content: "\e32e";
2162 | }
2163 | .icon-speaker_notes:before {
2164 | content: "\e8cd";
2165 | }
2166 | .icon-speaker_notes_off:before {
2167 | content: "\eb0f";
2168 | }
2169 | .icon-speaker_phone:before {
2170 | content: "\e0d2";
2171 | }
2172 | .icon-spellcheck:before {
2173 | content: "\e8ce";
2174 | }
2175 | .icon-star_border:before {
2176 | content: "\e83a";
2177 | }
2178 | .icon-star_half:before {
2179 | content: "\e839";
2180 | }
2181 | .icon-stars:before {
2182 | content: "\e8d0";
2183 | }
2184 | .icon-stay_primary_landscape:before {
2185 | content: "\e0d5";
2186 | }
2187 | .icon-stop3:before {
2188 | content: "\e047";
2189 | }
2190 | .icon-stop_screen_share:before {
2191 | content: "\e0e3";
2192 | }
2193 | .icon-storage:before {
2194 | content: "\e1db";
2195 | }
2196 | .icon-store_mall_directory:before {
2197 | content: "\e563";
2198 | }
2199 | .icon-straighten:before {
2200 | content: "\e41c";
2201 | }
2202 | .icon-streetview:before {
2203 | content: "\e56e";
2204 | }
2205 | .icon-strikethrough_s:before {
2206 | content: "\e257";
2207 | }
2208 | .icon-style:before {
2209 | content: "\e41d";
2210 | }
2211 | .icon-subdirectory_arrow_left:before {
2212 | content: "\e5d9";
2213 | }
2214 | .icon-subdirectory_arrow_right:before {
2215 | content: "\e5da";
2216 | }
2217 | .icon-subject:before {
2218 | content: "\e8d2";
2219 | }
2220 | .icon-subscriptions:before {
2221 | content: "\e064";
2222 | }
2223 | .icon-subtitles:before {
2224 | content: "\e048";
2225 | }
2226 | .icon-subway:before {
2227 | content: "\e56f";
2228 | }
2229 | .icon-supervisor_account:before {
2230 | content: "\e8d3";
2231 | }
2232 | .icon-surround_sound:before {
2233 | content: "\e049";
2234 | }
2235 | .icon-swap_calls:before {
2236 | content: "\e0d7";
2237 | }
2238 | .icon-swap_horiz:before {
2239 | content: "\e8d4";
2240 | }
2241 | .icon-swap_vert:before {
2242 | content: "\e8d5";
2243 | }
2244 | .icon-swap_vertical_circle:before {
2245 | content: "\e8d6";
2246 | }
2247 | .icon-switch_camera:before {
2248 | content: "\e41e";
2249 | }
2250 | .icon-switch_video:before {
2251 | content: "\e41f";
2252 | }
2253 | .icon-sync_disabled:before {
2254 | content: "\e628";
2255 | }
2256 | .icon-sync_problem:before {
2257 | content: "\e629";
2258 | }
2259 | .icon-system_update:before {
2260 | content: "\e62a";
2261 | }
2262 | .icon-system_update_alt:before {
2263 | content: "\e8d7";
2264 | }
2265 | .icon-tab2:before {
2266 | content: "\e8d8";
2267 | }
2268 | .icon-tab_unselected:before {
2269 | content: "\e8d9";
2270 | }
2271 | .icon-tablet2:before {
2272 | content: "\e32f";
2273 | }
2274 | .icon-tablet_android:before {
2275 | content: "\e330";
2276 | }
2277 | .icon-tablet_mac:before {
2278 | content: "\e331";
2279 | }
2280 | .icon-tap_and_play:before {
2281 | content: "\e62b";
2282 | }
2283 | .icon-text_fields:before {
2284 | content: "\e262";
2285 | }
2286 | .icon-text_format:before {
2287 | content: "\e165";
2288 | }
2289 | .icon-texture:before {
2290 | content: "\e421";
2291 | }
2292 | .icon-thumb_down:before {
2293 | content: "\e8db";
2294 | }
2295 | .icon-thumb_up:before {
2296 | content: "\e8dc";
2297 | }
2298 | .icon-thumbs_up_down:before {
2299 | content: "\e8dd";
2300 | }
2301 | .icon-timelapse:before {
2302 | content: "\e422";
2303 | }
2304 | .icon-timeline:before {
2305 | content: "\eb10";
2306 | }
2307 | .icon-timer:before {
2308 | content: "\e425";
2309 | }
2310 | .icon-timer_10:before {
2311 | content: "\e423";
2312 | }
2313 | .icon-timer_3:before {
2314 | content: "\e424";
2315 | }
2316 | .icon-timer_off:before {
2317 | content: "\e426";
2318 | }
2319 | .icon-title:before {
2320 | content: "\e264";
2321 | }
2322 | .icon-toc:before {
2323 | content: "\e8de";
2324 | }
2325 | .icon-today:before {
2326 | content: "\e8df";
2327 | }
2328 | .icon-toll:before {
2329 | content: "\e8e0";
2330 | }
2331 | .icon-tonality:before {
2332 | content: "\e427";
2333 | }
2334 | .icon-touch_app:before {
2335 | content: "\eb11";
2336 | }
2337 | .icon-toys:before {
2338 | content: "\e332";
2339 | }
2340 | .icon-track_changes:before {
2341 | content: "\e8e1";
2342 | }
2343 | .icon-traffic:before {
2344 | content: "\e565";
2345 | }
2346 | .icon-train:before {
2347 | content: "\e570";
2348 | }
2349 | .icon-tram:before {
2350 | content: "\e571";
2351 | }
2352 | .icon-transfer_within_a_station:before {
2353 | content: "\e572";
2354 | }
2355 | .icon-transform:before {
2356 | content: "\e428";
2357 | }
2358 | .icon-translate:before {
2359 | content: "\e8e2";
2360 | }
2361 | .icon-trending_down:before {
2362 | content: "\e8e3";
2363 | }
2364 | .icon-trending_flat:before {
2365 | content: "\e8e4";
2366 | }
2367 | .icon-trending_up:before {
2368 | content: "\e8e5";
2369 | }
2370 | .icon-tune:before {
2371 | content: "\e429";
2372 | }
2373 | .icon-tv2:before {
2374 | content: "\e333";
2375 | }
2376 | .icon-unarchive:before {
2377 | content: "\e169";
2378 | }
2379 | .icon-undo3:before {
2380 | content: "\e166";
2381 | }
2382 | .icon-unfold_less:before {
2383 | content: "\e5d6";
2384 | }
2385 | .icon-unfold_more:before {
2386 | content: "\e5d7";
2387 | }
2388 | .icon-update:before {
2389 | content: "\eb12";
2390 | }
2391 | .icon-usb:before {
2392 | content: "\e1e0";
2393 | }
2394 | .icon-verified_user:before {
2395 | content: "\e8e8";
2396 | }
2397 | .icon-vertical_align_bottom:before {
2398 | content: "\e258";
2399 | }
2400 | .icon-vertical_align_center:before {
2401 | content: "\e259";
2402 | }
2403 | .icon-vertical_align_top:before {
2404 | content: "\e25a";
2405 | }
2406 | .icon-vibration:before {
2407 | content: "\e62d";
2408 | }
2409 | .icon-video_call:before {
2410 | content: "\e070";
2411 | }
2412 | .icon-video_label:before {
2413 | content: "\e071";
2414 | }
2415 | .icon-video_library:before {
2416 | content: "\e04a";
2417 | }
2418 | .icon-videocam:before {
2419 | content: "\e04b";
2420 | }
2421 | .icon-videocam_off:before {
2422 | content: "\e04c";
2423 | }
2424 | .icon-videogame_asset:before {
2425 | content: "\e338";
2426 | }
2427 | .icon-view_agenda:before {
2428 | content: "\e8e9";
2429 | }
2430 | .icon-view_array:before {
2431 | content: "\e8ea";
2432 | }
2433 | .icon-view_carousel:before {
2434 | content: "\e8eb";
2435 | }
2436 | .icon-view_column:before {
2437 | content: "\e8ec";
2438 | }
2439 | .icon-view_comfy:before {
2440 | content: "\e42a";
2441 | }
2442 | .icon-view_compact:before {
2443 | content: "\e42b";
2444 | }
2445 | .icon-view_day:before {
2446 | content: "\e8ed";
2447 | }
2448 | .icon-view_headline:before {
2449 | content: "\e8ee";
2450 | }
2451 | .icon-view_list:before {
2452 | content: "\e8ef";
2453 | }
2454 | .icon-view_module:before {
2455 | content: "\e8f0";
2456 | }
2457 | .icon-view_quilt:before {
2458 | content: "\e8f1";
2459 | }
2460 | .icon-view_stream:before {
2461 | content: "\e8f2";
2462 | }
2463 | .icon-view_week:before {
2464 | content: "\e8f3";
2465 | }
2466 | .icon-vignette:before {
2467 | content: "\e435";
2468 | }
2469 | .icon-visibility_off:before {
2470 | content: "\e8f5";
2471 | }
2472 | .icon-voice_chat:before {
2473 | content: "\e62e";
2474 | }
2475 | .icon-voicemail:before {
2476 | content: "\e0d9";
2477 | }
2478 | .icon-volume_down:before {
2479 | content: "\e04d";
2480 | }
2481 | .icon-volume_mute:before {
2482 | content: "\e04e";
2483 | }
2484 | .icon-volume_off:before {
2485 | content: "\e04f";
2486 | }
2487 | .icon-volume_up:before {
2488 | content: "\e050";
2489 | }
2490 | .icon-vpn_key:before {
2491 | content: "\e0da";
2492 | }
2493 | .icon-vpn_lock:before {
2494 | content: "\e62f";
2495 | }
2496 | .icon-wallpaper:before {
2497 | content: "\e1bc";
2498 | }
2499 | .icon-watch:before {
2500 | content: "\e334";
2501 | }
2502 | .icon-watch_later:before {
2503 | content: "\eb13";
2504 | }
2505 | .icon-wb_auto:before {
2506 | content: "\e42c";
2507 | }
2508 | .icon-wb_incandescent:before {
2509 | content: "\e42e";
2510 | }
2511 | .icon-wb_iridescent:before {
2512 | content: "\e436";
2513 | }
2514 | .icon-wb_sunny:before {
2515 | content: "\e430";
2516 | }
2517 | .icon-wc:before {
2518 | content: "\e63d";
2519 | }
2520 | .icon-web:before {
2521 | content: "\e051";
2522 | }
2523 | .icon-web_asset:before {
2524 | content: "\e069";
2525 | }
2526 | .icon-weekend:before {
2527 | content: "\e16b";
2528 | }
2529 | .icon-whatshot:before {
2530 | content: "\e80e";
2531 | }
2532 | .icon-widgets:before {
2533 | content: "\e1bd";
2534 | }
2535 | .icon-wifi:before {
2536 | content: "\e63e";
2537 | }
2538 | .icon-wifi_lock:before {
2539 | content: "\e1e1";
2540 | }
2541 | .icon-wifi_tethering:before {
2542 | content: "\e1e2";
2543 | }
2544 | .icon-work:before {
2545 | content: "\e8f9";
2546 | }
2547 | .icon-wrap_text:before {
2548 | content: "\e25b";
2549 | }
2550 | .icon-youtube_searched_for:before {
2551 | content: "\e8fa";
2552 | }
2553 | .icon-zoom_in:before {
2554 | content: "\e8ff";
2555 | }
2556 | .icon-zoom_out:before {
2557 | content: "\eb14";
2558 | }
2559 | .icon-zoom_out_map:before {
2560 | content: "\e56b";
2561 | }
2562 | .icon-home:before {
2563 | content: "\e900";
2564 | }
2565 | .icon-home2:before {
2566 | content: "\e901";
2567 | }
2568 | .icon-home3:before {
2569 | content: "\e902";
2570 | }
2571 | .icon-office:before {
2572 | content: "\e903";
2573 | }
2574 | .icon-newspaper:before {
2575 | content: "\e904";
2576 | }
2577 | .icon-pencil:before {
2578 | content: "\e905";
2579 | }
2580 | .icon-pencil2:before {
2581 | content: "\e906";
2582 | }
2583 | .icon-quill:before {
2584 | content: "\e907";
2585 | }
2586 | .icon-pen:before {
2587 | content: "\e908";
2588 | }
2589 | .icon-blog:before {
2590 | content: "\e909";
2591 | }
2592 | .icon-eyedropper:before {
2593 | content: "\e90a";
2594 | }
2595 | .icon-droplet:before {
2596 | content: "\e90b";
2597 | }
2598 | .icon-paint-format:before {
2599 | content: "\e90c";
2600 | }
2601 | .icon-image:before {
2602 | content: "\e90d";
2603 | }
2604 | .icon-images:before {
2605 | content: "\e90e";
2606 | }
2607 | .icon-camera:before {
2608 | content: "\e90f";
2609 | }
2610 | .icon-headphones:before {
2611 | content: "\e910";
2612 | }
2613 | .icon-music:before {
2614 | content: "\e911";
2615 | }
2616 | .icon-play:before {
2617 | content: "\e912";
2618 | }
2619 | .icon-film:before {
2620 | content: "\e913";
2621 | }
2622 | .icon-video-camera:before {
2623 | content: "\e914";
2624 | }
2625 | .icon-dice:before {
2626 | content: "\e915";
2627 | }
2628 | .icon-pacman:before {
2629 | content: "\e916";
2630 | }
2631 | .icon-spades:before {
2632 | content: "\e917";
2633 | }
2634 | .icon-clubs:before {
2635 | content: "\e918";
2636 | }
2637 | .icon-diamonds:before {
2638 | content: "\e919";
2639 | }
2640 | .icon-bullhorn:before {
2641 | content: "\e91a";
2642 | }
2643 | .icon-connection:before {
2644 | content: "\e91b";
2645 | }
2646 | .icon-podcast:before {
2647 | content: "\e91c";
2648 | }
2649 | .icon-feed:before {
2650 | content: "\e91d";
2651 | }
2652 | .icon-mic:before {
2653 | content: "\e91e";
2654 | }
2655 | .icon-book:before {
2656 | content: "\e91f";
2657 | }
2658 | .icon-books:before {
2659 | content: "\e920";
2660 | }
2661 | .icon-library:before {
2662 | content: "\e921";
2663 | }
2664 | .icon-file-text:before {
2665 | content: "\e922";
2666 | }
2667 | .icon-profile:before {
2668 | content: "\e923";
2669 | }
2670 | .icon-file-empty:before {
2671 | content: "\e924";
2672 | }
2673 | .icon-files-empty:before {
2674 | content: "\e925";
2675 | }
2676 | .icon-file-text2:before {
2677 | content: "\e926";
2678 | }
2679 | .icon-file-picture:before {
2680 | content: "\e927";
2681 | }
2682 | .icon-file-music:before {
2683 | content: "\e928";
2684 | }
2685 | .icon-file-play:before {
2686 | content: "\e929";
2687 | }
2688 | .icon-file-video:before {
2689 | content: "\e92a";
2690 | }
2691 | .icon-file-zip:before {
2692 | content: "\e92b";
2693 | }
2694 | .icon-copy:before {
2695 | content: "\e92c";
2696 | }
2697 | .icon-paste:before {
2698 | content: "\e92d";
2699 | }
2700 | .icon-stack:before {
2701 | content: "\e92e";
2702 | }
2703 | .icon-folder:before {
2704 | content: "\e92f";
2705 | }
2706 | .icon-folder-open:before {
2707 | content: "\e930";
2708 | }
2709 | .icon-folder-plus:before {
2710 | content: "\e931";
2711 | }
2712 | .icon-folder-minus:before {
2713 | content: "\e932";
2714 | }
2715 | .icon-folder-download:before {
2716 | content: "\e933";
2717 | }
2718 | .icon-folder-upload:before {
2719 | content: "\e934";
2720 | }
2721 | .icon-price-tag:before {
2722 | content: "\e935";
2723 | }
2724 | .icon-price-tags:before {
2725 | content: "\e936";
2726 | }
2727 | .icon-barcode:before {
2728 | content: "\e937";
2729 | }
2730 | .icon-qrcode:before {
2731 | content: "\e938";
2732 | }
2733 | .icon-ticket:before {
2734 | content: "\e939";
2735 | }
2736 | .icon-cart:before {
2737 | content: "\e93a";
2738 | }
2739 | .icon-coin-dollar:before {
2740 | content: "\e93b";
2741 | }
2742 | .icon-coin-euro:before {
2743 | content: "\e93c";
2744 | }
2745 | .icon-coin-pound:before {
2746 | content: "\e93d";
2747 | }
2748 | .icon-coin-yen:before {
2749 | content: "\e93e";
2750 | }
2751 | .icon-credit-card:before {
2752 | content: "\e93f";
2753 | }
2754 | .icon-calculator:before {
2755 | content: "\e940";
2756 | }
2757 | .icon-lifebuoy:before {
2758 | content: "\e941";
2759 | }
2760 | .icon-phone:before {
2761 | content: "\e942";
2762 | }
2763 | .icon-phone-hang-up:before {
2764 | content: "\e943";
2765 | }
2766 | .icon-address-book:before {
2767 | content: "\e944";
2768 | }
2769 | .icon-envelop:before {
2770 | content: "\e945";
2771 | }
2772 | .icon-pushpin:before {
2773 | content: "\e946";
2774 | }
2775 | .icon-location:before {
2776 | content: "\e947";
2777 | }
2778 | .icon-location2:before {
2779 | content: "\e948";
2780 | }
2781 | .icon-compass:before {
2782 | content: "\e949";
2783 | }
2784 | .icon-compass2:before {
2785 | content: "\e94a";
2786 | }
2787 | .icon-map:before {
2788 | content: "\e94b";
2789 | }
2790 | .icon-map2:before {
2791 | content: "\e94c";
2792 | }
2793 | .icon-history:before {
2794 | content: "\e94d";
2795 | }
2796 | .icon-clock:before {
2797 | content: "\e94e";
2798 | }
2799 | .icon-clock2:before {
2800 | content: "\e94f";
2801 | }
2802 | .icon-alarm:before {
2803 | content: "\e950";
2804 | }
2805 | .icon-bell:before {
2806 | content: "\e951";
2807 | }
2808 | .icon-stopwatch:before {
2809 | content: "\e952";
2810 | }
2811 | .icon-calendar:before {
2812 | content: "\e953";
2813 | }
2814 | .icon-printer:before {
2815 | content: "\e954";
2816 | }
2817 | .icon-keyboard:before {
2818 | content: "\e955";
2819 | }
2820 | .icon-display:before {
2821 | content: "\e956";
2822 | }
2823 | .icon-laptop:before {
2824 | content: "\e957";
2825 | }
2826 | .icon-mobile:before {
2827 | content: "\e958";
2828 | }
2829 | .icon-mobile2:before {
2830 | content: "\e959";
2831 | }
2832 | .icon-tablet:before {
2833 | content: "\e95a";
2834 | }
2835 | .icon-tv:before {
2836 | content: "\e95b";
2837 | }
2838 | .icon-drawer:before {
2839 | content: "\e95c";
2840 | }
2841 | .icon-drawer2:before {
2842 | content: "\e95d";
2843 | }
2844 | .icon-box-add:before {
2845 | content: "\e95e";
2846 | }
2847 | .icon-box-remove:before {
2848 | content: "\e95f";
2849 | }
2850 | .icon-download:before {
2851 | content: "\e960";
2852 | }
2853 | .icon-upload:before {
2854 | content: "\e961";
2855 | }
2856 | .icon-floppy-disk:before {
2857 | content: "\e962";
2858 | }
2859 | .icon-drive:before {
2860 | content: "\e963";
2861 | }
2862 | .icon-database:before {
2863 | content: "\e964";
2864 | }
2865 | .icon-undo:before {
2866 | content: "\e965";
2867 | }
2868 | .icon-redo:before {
2869 | content: "\e966";
2870 | }
2871 | .icon-undo2:before {
2872 | content: "\e967";
2873 | }
2874 | .icon-redo2:before {
2875 | content: "\e968";
2876 | }
2877 | .icon-forward:before {
2878 | content: "\e969";
2879 | }
2880 | .icon-reply:before {
2881 | content: "\e96a";
2882 | }
2883 | .icon-bubble:before {
2884 | content: "\e96b";
2885 | }
2886 | .icon-bubbles:before {
2887 | content: "\e96c";
2888 | }
2889 | .icon-bubbles2:before {
2890 | content: "\e96d";
2891 | }
2892 | .icon-bubble2:before {
2893 | content: "\e96e";
2894 | }
2895 | .icon-bubbles3:before {
2896 | content: "\e96f";
2897 | }
2898 | .icon-bubbles4:before {
2899 | content: "\e970";
2900 | }
2901 | .icon-user:before {
2902 | content: "\e971";
2903 | }
2904 | .icon-users:before {
2905 | content: "\e972";
2906 | }
2907 | .icon-user-plus:before {
2908 | content: "\e973";
2909 | }
2910 | .icon-user-minus:before {
2911 | content: "\e974";
2912 | }
2913 | .icon-user-check:before {
2914 | content: "\e975";
2915 | }
2916 | .icon-user-tie:before {
2917 | content: "\e976";
2918 | }
2919 | .icon-quotes-left:before {
2920 | content: "\e977";
2921 | }
2922 | .icon-quotes-right:before {
2923 | content: "\e978";
2924 | }
2925 | .icon-hour-glass:before {
2926 | content: "\e979";
2927 | }
2928 | .icon-spinner:before {
2929 | content: "\e97a";
2930 | }
2931 | .icon-spinner2:before {
2932 | content: "\e97b";
2933 | }
2934 | .icon-spinner3:before {
2935 | content: "\e97c";
2936 | }
2937 | .icon-spinner4:before {
2938 | content: "\e97d";
2939 | }
2940 | .icon-spinner5:before {
2941 | content: "\e97e";
2942 | }
2943 | .icon-spinner6:before {
2944 | content: "\e97f";
2945 | }
2946 | .icon-spinner7:before {
2947 | content: "\e980";
2948 | }
2949 | .icon-spinner8:before {
2950 | content: "\e981";
2951 | }
2952 | .icon-spinner9:before {
2953 | content: "\e982";
2954 | }
2955 | .icon-spinner10:before {
2956 | content: "\e983";
2957 | }
2958 | .icon-spinner11:before {
2959 | content: "\e984";
2960 | }
2961 | .icon-binoculars:before {
2962 | content: "\e985";
2963 | }
2964 | .icon-search:before {
2965 | content: "\e986";
2966 | }
2967 | .icon-zoom-in:before {
2968 | content: "\e987";
2969 | }
2970 | .icon-zoom-out:before {
2971 | content: "\e988";
2972 | }
2973 | .icon-enlarge:before {
2974 | content: "\e989";
2975 | }
2976 | .icon-shrink:before {
2977 | content: "\e98a";
2978 | }
2979 | .icon-enlarge2:before {
2980 | content: "\e98b";
2981 | }
2982 | .icon-shrink2:before {
2983 | content: "\e98c";
2984 | }
2985 | .icon-key:before {
2986 | content: "\e98d";
2987 | }
2988 | .icon-key2:before {
2989 | content: "\e98e";
2990 | }
2991 | .icon-lock:before {
2992 | content: "\e98f";
2993 | }
2994 | .icon-unlocked:before {
2995 | content: "\e990";
2996 | }
2997 | .icon-wrench:before {
2998 | content: "\e991";
2999 | }
3000 | .icon-equalizer:before {
3001 | content: "\e992";
3002 | }
3003 | .icon-equalizer2:before {
3004 | content: "\e993";
3005 | }
3006 | .icon-cog:before {
3007 | content: "\e994";
3008 | }
3009 | .icon-cogs:before {
3010 | content: "\e995";
3011 | }
3012 | .icon-hammer:before {
3013 | content: "\e996";
3014 | }
3015 | .icon-magic-wand:before {
3016 | content: "\e997";
3017 | }
3018 | .icon-aid-kit:before {
3019 | content: "\e998";
3020 | }
3021 | .icon-bug:before {
3022 | content: "\e999";
3023 | }
3024 | .icon-pie-chart:before {
3025 | content: "\e99a";
3026 | }
3027 | .icon-stats-dots:before {
3028 | content: "\e99b";
3029 | }
3030 | .icon-stats-bars:before {
3031 | content: "\e99c";
3032 | }
3033 | .icon-stats-bars2:before {
3034 | content: "\e99d";
3035 | }
3036 | .icon-trophy:before {
3037 | content: "\e99e";
3038 | }
3039 | .icon-gift:before {
3040 | content: "\e99f";
3041 | }
3042 | .icon-glass:before {
3043 | content: "\e9a0";
3044 | }
3045 | .icon-glass2:before {
3046 | content: "\e9a1";
3047 | }
3048 | .icon-mug:before {
3049 | content: "\e9a2";
3050 | }
3051 | .icon-spoon-knife:before {
3052 | content: "\e9a3";
3053 | }
3054 | .icon-leaf:before {
3055 | content: "\e9a4";
3056 | }
3057 | .icon-rocket:before {
3058 | content: "\e9a5";
3059 | }
3060 | .icon-meter:before {
3061 | content: "\e9a6";
3062 | }
3063 | .icon-meter2:before {
3064 | content: "\e9a7";
3065 | }
3066 | .icon-hammer2:before {
3067 | content: "\e9a8";
3068 | }
3069 | .icon-fire:before {
3070 | content: "\e9a9";
3071 | }
3072 | .icon-lab:before {
3073 | content: "\e9aa";
3074 | }
3075 | .icon-magnet:before {
3076 | content: "\e9ab";
3077 | }
3078 | .icon-bin:before {
3079 | content: "\e9ac";
3080 | }
3081 | .icon-bin2:before {
3082 | content: "\e9ad";
3083 | }
3084 | .icon-briefcase:before {
3085 | content: "\e9ae";
3086 | }
3087 | .icon-airplane:before {
3088 | content: "\e9af";
3089 | }
3090 | .icon-truck:before {
3091 | content: "\e9b0";
3092 | }
3093 | .icon-road:before {
3094 | content: "\e9b1";
3095 | }
3096 | .icon-accessibility:before {
3097 | content: "\e9b2";
3098 | }
3099 | .icon-target:before {
3100 | content: "\e9b3";
3101 | }
3102 | .icon-shield:before {
3103 | content: "\e9b4";
3104 | }
3105 | .icon-power:before {
3106 | content: "\e9b5";
3107 | }
3108 | .icon-switch:before {
3109 | content: "\e9b6";
3110 | }
3111 | .icon-power-cord:before {
3112 | content: "\e9b7";
3113 | }
3114 | .icon-clipboard:before {
3115 | content: "\e9b8";
3116 | }
3117 | .icon-list-numbered:before {
3118 | content: "\e9b9";
3119 | }
3120 | .icon-list:before {
3121 | content: "\e9ba";
3122 | }
3123 | .icon-list2:before {
3124 | content: "\e9bb";
3125 | }
3126 | .icon-tree:before {
3127 | content: "\e9bc";
3128 | }
3129 | .icon-menu:before {
3130 | content: "\e9bd";
3131 | }
3132 | .icon-menu2:before {
3133 | content: "\e9be";
3134 | }
3135 | .icon-menu3:before {
3136 | content: "\e9bf";
3137 | }
3138 | .icon-menu4:before {
3139 | content: "\e9c0";
3140 | }
3141 | .icon-cloud:before {
3142 | content: "\e9c1";
3143 | }
3144 | .icon-cloud-download:before {
3145 | content: "\e9c2";
3146 | }
3147 | .icon-cloud-upload:before {
3148 | content: "\e9c3";
3149 | }
3150 | .icon-cloud-check:before {
3151 | content: "\e9c4";
3152 | }
3153 | .icon-download2:before {
3154 | content: "\e9c5";
3155 | }
3156 | .icon-upload2:before {
3157 | content: "\e9c6";
3158 | }
3159 | .icon-download3:before {
3160 | content: "\e9c7";
3161 | }
3162 | .icon-upload3:before {
3163 | content: "\e9c8";
3164 | }
3165 | .icon-sphere:before {
3166 | content: "\e9c9";
3167 | }
3168 | .icon-earth:before {
3169 | content: "\e9ca";
3170 | }
3171 | .icon-link:before {
3172 | content: "\e9cb";
3173 | }
3174 | .icon-flag:before {
3175 | content: "\e9cc";
3176 | }
3177 | .icon-attachment:before {
3178 | content: "\e9cd";
3179 | }
3180 | .icon-eye:before {
3181 | content: "\e9ce";
3182 | }
3183 | .icon-eye-plus:before {
3184 | content: "\e9cf";
3185 | }
3186 | .icon-eye-minus:before {
3187 | content: "\e9d0";
3188 | }
3189 | .icon-eye-blocked:before {
3190 | content: "\e9d1";
3191 | }
3192 | .icon-bookmark:before {
3193 | content: "\e9d2";
3194 | }
3195 | .icon-bookmarks:before {
3196 | content: "\e9d3";
3197 | }
3198 | .icon-sun:before {
3199 | content: "\e9d4";
3200 | }
3201 | .icon-contrast:before {
3202 | content: "\e9d5";
3203 | }
3204 | .icon-brightness-contrast:before {
3205 | content: "\e9d6";
3206 | }
3207 | .icon-star-empty:before {
3208 | content: "\e9d7";
3209 | }
3210 | .icon-star-half:before {
3211 | content: "\e9d8";
3212 | }
3213 | .icon-star-full:before {
3214 | content: "\e9d9";
3215 | }
3216 | .icon-heart:before {
3217 | content: "\e9da";
3218 | }
3219 | .icon-heart-broken:before {
3220 | content: "\e9db";
3221 | }
3222 | .icon-man:before {
3223 | content: "\e9dc";
3224 | }
3225 | .icon-woman:before {
3226 | content: "\e9dd";
3227 | }
3228 | .icon-man-woman:before {
3229 | content: "\e9de";
3230 | }
3231 | .icon-happy:before {
3232 | content: "\e9df";
3233 | }
3234 | .icon-happy2:before {
3235 | content: "\e9e0";
3236 | }
3237 | .icon-smile:before {
3238 | content: "\e9e1";
3239 | }
3240 | .icon-smile2:before {
3241 | content: "\e9e2";
3242 | }
3243 | .icon-tongue:before {
3244 | content: "\e9e3";
3245 | }
3246 | .icon-tongue2:before {
3247 | content: "\e9e4";
3248 | }
3249 | .icon-sad:before {
3250 | content: "\e9e5";
3251 | }
3252 | .icon-sad2:before {
3253 | content: "\e9e6";
3254 | }
3255 | .icon-wink:before {
3256 | content: "\e9e7";
3257 | }
3258 | .icon-wink2:before {
3259 | content: "\e9e8";
3260 | }
3261 | .icon-grin:before {
3262 | content: "\e9e9";
3263 | }
3264 | .icon-grin2:before {
3265 | content: "\e9ea";
3266 | }
3267 | .icon-cool:before {
3268 | content: "\e9eb";
3269 | }
3270 | .icon-cool2:before {
3271 | content: "\e9ec";
3272 | }
3273 | .icon-angry:before {
3274 | content: "\e9ed";
3275 | }
3276 | .icon-angry2:before {
3277 | content: "\e9ee";
3278 | }
3279 | .icon-evil:before {
3280 | content: "\e9ef";
3281 | }
3282 | .icon-evil2:before {
3283 | content: "\e9f0";
3284 | }
3285 | .icon-shocked:before {
3286 | content: "\e9f1";
3287 | }
3288 | .icon-shocked2:before {
3289 | content: "\e9f2";
3290 | }
3291 | .icon-baffled:before {
3292 | content: "\e9f3";
3293 | }
3294 | .icon-baffled2:before {
3295 | content: "\e9f4";
3296 | }
3297 | .icon-confused:before {
3298 | content: "\e9f5";
3299 | }
3300 | .icon-confused2:before {
3301 | content: "\e9f6";
3302 | }
3303 | .icon-neutral:before {
3304 | content: "\e9f7";
3305 | }
3306 | .icon-neutral2:before {
3307 | content: "\e9f8";
3308 | }
3309 | .icon-hipster:before {
3310 | content: "\e9f9";
3311 | }
3312 | .icon-hipster2:before {
3313 | content: "\e9fa";
3314 | }
3315 | .icon-wondering:before {
3316 | content: "\e9fb";
3317 | }
3318 | .icon-wondering2:before {
3319 | content: "\e9fc";
3320 | }
3321 | .icon-sleepy:before {
3322 | content: "\e9fd";
3323 | }
3324 | .icon-sleepy2:before {
3325 | content: "\e9fe";
3326 | }
3327 | .icon-frustrated:before {
3328 | content: "\e9ff";
3329 | }
3330 | .icon-frustrated2:before {
3331 | content: "\ea00";
3332 | }
3333 | .icon-crying:before {
3334 | content: "\ea01";
3335 | }
3336 | .icon-crying2:before {
3337 | content: "\ea02";
3338 | }
3339 | .icon-point-up:before {
3340 | content: "\ea03";
3341 | }
3342 | .icon-point-right:before {
3343 | content: "\ea04";
3344 | }
3345 | .icon-point-down:before {
3346 | content: "\ea05";
3347 | }
3348 | .icon-point-left:before {
3349 | content: "\ea06";
3350 | }
3351 | .icon-warning:before {
3352 | content: "\ea07";
3353 | }
3354 | .icon-notification:before {
3355 | content: "\ea08";
3356 | }
3357 | .icon-question:before {
3358 | content: "\ea09";
3359 | }
3360 | .icon-plus:before {
3361 | content: "\ea0a";
3362 | }
3363 | .icon-minus:before {
3364 | content: "\ea0b";
3365 | }
3366 | .icon-info:before {
3367 | content: "\ea0c";
3368 | }
3369 | .icon-cancel-circle:before {
3370 | content: "\ea0d";
3371 | }
3372 | .icon-blocked:before {
3373 | content: "\ea0e";
3374 | }
3375 | .icon-cross:before {
3376 | content: "\ea0f";
3377 | }
3378 | .icon-checkmark:before {
3379 | content: "\ea10";
3380 | }
3381 | .icon-checkmark2:before {
3382 | content: "\ea11";
3383 | }
3384 | .icon-spell-check:before {
3385 | content: "\ea12";
3386 | }
3387 | .icon-enter:before {
3388 | content: "\ea13";
3389 | }
3390 | .icon-exit:before {
3391 | content: "\ea14";
3392 | }
3393 | .icon-play2:before {
3394 | content: "\ea15";
3395 | }
3396 | .icon-pause:before {
3397 | content: "\ea16";
3398 | }
3399 | .icon-stop:before {
3400 | content: "\ea17";
3401 | }
3402 | .icon-previous:before {
3403 | content: "\ea18";
3404 | }
3405 | .icon-next:before {
3406 | content: "\ea19";
3407 | }
3408 | .icon-backward:before {
3409 | content: "\ea1a";
3410 | }
3411 | .icon-forward2:before {
3412 | content: "\ea1b";
3413 | }
3414 | .icon-play3:before {
3415 | content: "\ea1c";
3416 | }
3417 | .icon-pause2:before {
3418 | content: "\ea1d";
3419 | }
3420 | .icon-stop2:before {
3421 | content: "\ea1e";
3422 | }
3423 | .icon-backward2:before {
3424 | content: "\ea1f";
3425 | }
3426 | .icon-forward3:before {
3427 | content: "\ea20";
3428 | }
3429 | .icon-first:before {
3430 | content: "\ea21";
3431 | }
3432 | .icon-last:before {
3433 | content: "\ea22";
3434 | }
3435 | .icon-previous2:before {
3436 | content: "\ea23";
3437 | }
3438 | .icon-next2:before {
3439 | content: "\ea24";
3440 | }
3441 | .icon-eject:before {
3442 | content: "\ea25";
3443 | }
3444 | .icon-volume-high:before {
3445 | content: "\ea26";
3446 | }
3447 | .icon-volume-medium:before {
3448 | content: "\ea27";
3449 | }
3450 | .icon-volume-low:before {
3451 | content: "\ea28";
3452 | }
3453 | .icon-volume-mute:before {
3454 | content: "\ea29";
3455 | }
3456 | .icon-volume-mute2:before {
3457 | content: "\ea2a";
3458 | }
3459 | .icon-volume-increase:before {
3460 | content: "\ea2b";
3461 | }
3462 | .icon-volume-decrease:before {
3463 | content: "\ea2c";
3464 | }
3465 | .icon-loop:before {
3466 | content: "\ea2d";
3467 | }
3468 | .icon-loop2:before {
3469 | content: "\ea2e";
3470 | }
3471 | .icon-infinite:before {
3472 | content: "\ea2f";
3473 | }
3474 | .icon-shuffle:before {
3475 | content: "\ea30";
3476 | }
3477 | .icon-arrow-up-left:before {
3478 | content: "\ea31";
3479 | }
3480 | .icon-arrow-up:before {
3481 | content: "\ea32";
3482 | }
3483 | .icon-arrow-up-right:before {
3484 | content: "\ea33";
3485 | }
3486 | .icon-arrow-right:before {
3487 | content: "\ea34";
3488 | }
3489 | .icon-arrow-down-right:before {
3490 | content: "\ea35";
3491 | }
3492 | .icon-arrow-down:before {
3493 | content: "\ea36";
3494 | }
3495 | .icon-arrow-down-left:before {
3496 | content: "\ea37";
3497 | }
3498 | .icon-arrow-left:before {
3499 | content: "\ea38";
3500 | }
3501 | .icon-arrow-up-left2:before {
3502 | content: "\ea39";
3503 | }
3504 | .icon-arrow-up2:before {
3505 | content: "\ea3a";
3506 | }
3507 | .icon-arrow-up-right2:before {
3508 | content: "\ea3b";
3509 | }
3510 | .icon-arrow-right2:before {
3511 | content: "\ea3c";
3512 | }
3513 | .icon-arrow-down-right2:before {
3514 | content: "\ea3d";
3515 | }
3516 | .icon-arrow-down2:before {
3517 | content: "\ea3e";
3518 | }
3519 | .icon-arrow-down-left2:before {
3520 | content: "\ea3f";
3521 | }
3522 | .icon-arrow-left2:before {
3523 | content: "\ea40";
3524 | }
3525 | .icon-circle-up:before {
3526 | content: "\ea41";
3527 | }
3528 | .icon-circle-right:before {
3529 | content: "\ea42";
3530 | }
3531 | .icon-circle-down:before {
3532 | content: "\ea43";
3533 | }
3534 | .icon-circle-left:before {
3535 | content: "\ea44";
3536 | }
3537 | .icon-tab:before {
3538 | content: "\ea45";
3539 | }
3540 | .icon-move-up:before {
3541 | content: "\ea46";
3542 | }
3543 | .icon-move-down:before {
3544 | content: "\ea47";
3545 | }
3546 | .icon-sort-alpha-asc:before {
3547 | content: "\ea48";
3548 | }
3549 | .icon-sort-alpha-desc:before {
3550 | content: "\ea49";
3551 | }
3552 | .icon-sort-numeric-asc:before {
3553 | content: "\ea4a";
3554 | }
3555 | .icon-sort-numberic-desc:before {
3556 | content: "\ea4b";
3557 | }
3558 | .icon-sort-amount-asc:before {
3559 | content: "\ea4c";
3560 | }
3561 | .icon-sort-amount-desc:before {
3562 | content: "\ea4d";
3563 | }
3564 | .icon-command:before {
3565 | content: "\ea4e";
3566 | }
3567 | .icon-shift:before {
3568 | content: "\ea4f";
3569 | }
3570 | .icon-ctrl:before {
3571 | content: "\ea50";
3572 | }
3573 | .icon-opt:before {
3574 | content: "\ea51";
3575 | }
3576 | .icon-checkbox-checked:before {
3577 | content: "\ea52";
3578 | }
3579 | .icon-checkbox-unchecked:before {
3580 | content: "\ea53";
3581 | }
3582 | .icon-radio-checked:before {
3583 | content: "\ea54";
3584 | }
3585 | .icon-radio-checked2:before {
3586 | content: "\ea55";
3587 | }
3588 | .icon-radio-unchecked:before {
3589 | content: "\ea56";
3590 | }
3591 | .icon-crop:before {
3592 | content: "\ea57";
3593 | }
3594 | .icon-make-group:before {
3595 | content: "\ea58";
3596 | }
3597 | .icon-ungroup:before {
3598 | content: "\ea59";
3599 | }
3600 | .icon-scissors:before {
3601 | content: "\ea5a";
3602 | }
3603 | .icon-filter:before {
3604 | content: "\ea5b";
3605 | }
3606 | .icon-font:before {
3607 | content: "\ea5c";
3608 | }
3609 | .icon-ligature:before {
3610 | content: "\ea5d";
3611 | }
3612 | .icon-ligature2:before {
3613 | content: "\ea5e";
3614 | }
3615 | .icon-text-height:before {
3616 | content: "\ea5f";
3617 | }
3618 | .icon-text-width:before {
3619 | content: "\ea60";
3620 | }
3621 | .icon-font-size:before {
3622 | content: "\ea61";
3623 | }
3624 | .icon-bold:before {
3625 | content: "\ea62";
3626 | }
3627 | .icon-underline:before {
3628 | content: "\ea63";
3629 | }
3630 | .icon-italic:before {
3631 | content: "\ea64";
3632 | }
3633 | .icon-strikethrough:before {
3634 | content: "\ea65";
3635 | }
3636 | .icon-omega:before {
3637 | content: "\ea66";
3638 | }
3639 | .icon-sigma:before {
3640 | content: "\ea67";
3641 | }
3642 | .icon-page-break:before {
3643 | content: "\ea68";
3644 | }
3645 | .icon-superscript:before {
3646 | content: "\ea69";
3647 | }
3648 | .icon-subscript:before {
3649 | content: "\ea6a";
3650 | }
3651 | .icon-superscript2:before {
3652 | content: "\ea6b";
3653 | }
3654 | .icon-subscript2:before {
3655 | content: "\ea6c";
3656 | }
3657 | .icon-text-color:before {
3658 | content: "\ea6d";
3659 | }
3660 | .icon-pagebreak:before {
3661 | content: "\ea6e";
3662 | }
3663 | .icon-clear-formatting:before {
3664 | content: "\ea6f";
3665 | }
3666 | .icon-table:before {
3667 | content: "\ea70";
3668 | }
3669 | .icon-table2:before {
3670 | content: "\ea71";
3671 | }
3672 | .icon-insert-template:before {
3673 | content: "\ea72";
3674 | }
3675 | .icon-pilcrow:before {
3676 | content: "\ea73";
3677 | }
3678 | .icon-ltr:before {
3679 | content: "\ea74";
3680 | }
3681 | .icon-rtl:before {
3682 | content: "\ea75";
3683 | }
3684 | .icon-section:before {
3685 | content: "\ea76";
3686 | }
3687 | .icon-paragraph-left:before {
3688 | content: "\ea77";
3689 | }
3690 | .icon-paragraph-center:before {
3691 | content: "\ea78";
3692 | }
3693 | .icon-paragraph-right:before {
3694 | content: "\ea79";
3695 | }
3696 | .icon-paragraph-justify:before {
3697 | content: "\ea7a";
3698 | }
3699 | .icon-indent-increase:before {
3700 | content: "\ea7b";
3701 | }
3702 | .icon-indent-decrease:before {
3703 | content: "\ea7c";
3704 | }
3705 | .icon-share:before {
3706 | content: "\ea7d";
3707 | }
3708 | .icon-new-tab:before {
3709 | content: "\ea7e";
3710 | }
3711 | .icon-embed:before {
3712 | content: "\ea7f";
3713 | }
3714 | .icon-embed2:before {
3715 | content: "\ea80";
3716 | }
3717 | .icon-terminal:before {
3718 | content: "\ea81";
3719 | }
3720 | .icon-share2:before {
3721 | content: "\ea82";
3722 | }
3723 | .icon-mail:before {
3724 | content: "\ea83";
3725 | }
3726 | .icon-mail2:before {
3727 | content: "\ea84";
3728 | }
3729 | .icon-mail3:before {
3730 | content: "\ea85";
3731 | }
3732 | .icon-mail4:before {
3733 | content: "\ea86";
3734 | }
3735 | .icon-amazon:before {
3736 | content: "\ea87";
3737 | }
3738 | .icon-google:before {
3739 | content: "\ea88";
3740 | }
3741 | .icon-google2:before {
3742 | content: "\ea89";
3743 | }
3744 | .icon-google3:before {
3745 | content: "\ea8a";
3746 | }
3747 | .icon-google-plus:before {
3748 | content: "\ea8b";
3749 | }
3750 | .icon-google-plus2:before {
3751 | content: "\ea8c";
3752 | }
3753 | .icon-google-plus3:before {
3754 | content: "\ea8d";
3755 | }
3756 | .icon-hangouts:before {
3757 | content: "\ea8e";
3758 | }
3759 | .icon-google-drive:before {
3760 | content: "\ea8f";
3761 | }
3762 | .icon-facebook:before {
3763 | content: "\ea90";
3764 | }
3765 | .icon-facebook2:before {
3766 | content: "\ea91";
3767 | }
3768 | .icon-instagram:before {
3769 | content: "\ea92";
3770 | }
3771 | .icon-whatsapp:before {
3772 | content: "\ea93";
3773 | }
3774 | .icon-spotify:before {
3775 | content: "\ea94";
3776 | }
3777 | .icon-telegram:before {
3778 | content: "\ea95";
3779 | }
3780 | .icon-twitter:before {
3781 | content: "\ea96";
3782 | }
3783 | .icon-vine:before {
3784 | content: "\ea97";
3785 | }
3786 | .icon-vk:before {
3787 | content: "\ea98";
3788 | }
3789 | .icon-renren:before {
3790 | content: "\ea99";
3791 | }
3792 | .icon-sina-weibo:before {
3793 | content: "\ea9a";
3794 | }
3795 | .icon-rss:before {
3796 | content: "\ea9b";
3797 | }
3798 | .icon-rss2:before {
3799 | content: "\ea9c";
3800 | }
3801 | .icon-youtube:before {
3802 | content: "\ea9d";
3803 | }
3804 | .icon-youtube2:before {
3805 | content: "\ea9e";
3806 | }
3807 | .icon-twitch:before {
3808 | content: "\ea9f";
3809 | }
3810 | .icon-vimeo:before {
3811 | content: "\eaa0";
3812 | }
3813 | .icon-vimeo2:before {
3814 | content: "\eaa1";
3815 | }
3816 | .icon-lanyrd:before {
3817 | content: "\eaa2";
3818 | }
3819 | .icon-flickr:before {
3820 | content: "\eaa3";
3821 | }
3822 | .icon-flickr2:before {
3823 | content: "\eaa4";
3824 | }
3825 | .icon-flickr3:before {
3826 | content: "\eaa5";
3827 | }
3828 | .icon-flickr4:before {
3829 | content: "\eaa6";
3830 | }
3831 | .icon-dribbble:before {
3832 | content: "\eaa7";
3833 | }
3834 | .icon-behance:before {
3835 | content: "\eaa8";
3836 | }
3837 | .icon-behance2:before {
3838 | content: "\eaa9";
3839 | }
3840 | .icon-deviantart:before {
3841 | content: "\eaaa";
3842 | }
3843 | .icon-500px:before {
3844 | content: "\eaab";
3845 | }
3846 | .icon-steam:before {
3847 | content: "\eaac";
3848 | }
3849 | .icon-steam2:before {
3850 | content: "\eaad";
3851 | }
3852 | .icon-dropbox:before {
3853 | content: "\eaae";
3854 | }
3855 | .icon-onedrive:before {
3856 | content: "\eaaf";
3857 | }
3858 | .icon-github:before {
3859 | content: "\eab0";
3860 | }
3861 | .icon-npm:before {
3862 | content: "\eab1";
3863 | }
3864 | .icon-basecamp:before {
3865 | content: "\eab2";
3866 | }
3867 | .icon-trello:before {
3868 | content: "\eab3";
3869 | }
3870 | .icon-wordpress:before {
3871 | content: "\eab4";
3872 | }
3873 | .icon-joomla:before {
3874 | content: "\eab5";
3875 | }
3876 | .icon-ello:before {
3877 | content: "\eab6";
3878 | }
3879 | .icon-blogger:before {
3880 | content: "\eab7";
3881 | }
3882 | .icon-blogger2:before {
3883 | content: "\eab8";
3884 | }
3885 | .icon-tumblr:before {
3886 | content: "\eab9";
3887 | }
3888 | .icon-tumblr2:before {
3889 | content: "\eaba";
3890 | }
3891 | .icon-yahoo:before {
3892 | content: "\eabb";
3893 | }
3894 | .icon-yahoo2:before {
3895 | content: "\eabc";
3896 | }
3897 | .icon-tux:before {
3898 | content: "\eabd";
3899 | }
3900 | .icon-appleinc:before {
3901 | content: "\eabe";
3902 | }
3903 | .icon-finder:before {
3904 | content: "\eabf";
3905 | }
3906 | .icon-android:before {
3907 | content: "\eac0";
3908 | }
3909 | .icon-windows:before {
3910 | content: "\eac1";
3911 | }
3912 | .icon-windows8:before {
3913 | content: "\eac2";
3914 | }
3915 | .icon-soundcloud:before {
3916 | content: "\eac3";
3917 | }
3918 | .icon-soundcloud2:before {
3919 | content: "\eac4";
3920 | }
3921 | .icon-skype:before {
3922 | content: "\eac5";
3923 | }
3924 | .icon-reddit:before {
3925 | content: "\eac6";
3926 | }
3927 | .icon-hackernews:before {
3928 | content: "\eac7";
3929 | }
3930 | .icon-wikipedia:before {
3931 | content: "\eac8";
3932 | }
3933 | .icon-linkedin:before {
3934 | content: "\eac9";
3935 | }
3936 | .icon-linkedin2:before {
3937 | content: "\eaca";
3938 | }
3939 | .icon-lastfm:before {
3940 | content: "\eacb";
3941 | }
3942 | .icon-lastfm2:before {
3943 | content: "\eacc";
3944 | }
3945 | .icon-delicious:before {
3946 | content: "\eacd";
3947 | }
3948 | .icon-stumbleupon:before {
3949 | content: "\eace";
3950 | }
3951 | .icon-stumbleupon2:before {
3952 | content: "\eacf";
3953 | }
3954 | .icon-stackoverflow:before {
3955 | content: "\ead0";
3956 | }
3957 | .icon-pinterest:before {
3958 | content: "\ead1";
3959 | }
3960 | .icon-pinterest2:before {
3961 | content: "\ead2";
3962 | }
3963 | .icon-xing:before {
3964 | content: "\ead3";
3965 | }
3966 | .icon-xing2:before {
3967 | content: "\ead4";
3968 | }
3969 | .icon-flattr:before {
3970 | content: "\ead5";
3971 | }
3972 | .icon-foursquare:before {
3973 | content: "\ead6";
3974 | }
3975 | .icon-yelp:before {
3976 | content: "\ead7";
3977 | }
3978 | .icon-paypal:before {
3979 | content: "\ead8";
3980 | }
3981 | .icon-chrome:before {
3982 | content: "\ead9";
3983 | }
3984 | .icon-firefox:before {
3985 | content: "\eada";
3986 | }
3987 | .icon-IE:before {
3988 | content: "\eadb";
3989 | }
3990 | .icon-edge:before {
3991 | content: "\eadc";
3992 | }
3993 | .icon-safari:before {
3994 | content: "\eadd";
3995 | }
3996 | .icon-opera:before {
3997 | content: "\eade";
3998 | }
3999 | .icon-file-pdf:before {
4000 | content: "\eadf";
4001 | }
4002 | .icon-file-openoffice:before {
4003 | content: "\eae0";
4004 | }
4005 | .icon-file-word:before {
4006 | content: "\eae1";
4007 | }
4008 | .icon-file-excel:before {
4009 | content: "\eae2";
4010 | }
4011 | .icon-libreoffice:before {
4012 | content: "\eae3";
4013 | }
4014 | .icon-html-five:before {
4015 | content: "\eae4";
4016 | }
4017 | .icon-html-five2:before {
4018 | content: "\eae5";
4019 | }
4020 | .icon-css3:before {
4021 | content: "\eae6";
4022 | }
4023 | .icon-git:before {
4024 | content: "\eae7";
4025 | }
4026 | .icon-codepen:before {
4027 | content: "\eae8";
4028 | }
4029 | .icon-svg:before {
4030 | content: "\eae9";
4031 | }
4032 | .icon-IcoMoon:before {
4033 | content: "\eaea";
4034 | }
4035 |
4036 |
--------------------------------------------------------------------------------
/static/js/charts.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 | var myChart1 = echarts.init(document.getElementById('district1'));
3 | myChart1.showLoading();
4 | $.ajax({
5 | url:"/district/",
6 | type: "GET",
7 | data: {},
8 | success: function (data) {
9 | myChart1.hideLoading();
10 | data = JSON.parse(data);
11 | myChart1.setOption({
12 | series : [
13 | {
14 | name: '房屋结构',
15 | type: 'pie',
16 | radius: '55%',
17 | data:data
18 | }
19 | ]
20 | })
21 | }
22 | })
23 | });
--------------------------------------------------------------------------------
/static/js/concept.min.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function(){"use strict";var e=!1,t=$("body");$(".page-header"),$(".page-sidebar"),$(".page-content");t.hasClass("page-header-fixed")&&$(window).scroll(function(){$(this).scrollTop()>30&&$(".page-header").addClass("changeBg"),$(this).scrollTop()<30&&$(".page-header").removeClass("changeBg")});var n=window.matchMedia("(min-width: 767px) and (max-width: 1200px)"),o=window.matchMedia("(min-width: 0px) and (max-width: 767px)");function i(e){e.matches&&$(t).addClass("collapsed-sidebar")}function s(e){e.matches?$(t).addClass("hidden-sidebar"):$(t).removeClass("hidden-sidebar")}n.addListener(i),i(n),o.addListener(s),s(o);var l=$("#sidebar-toggle");l.on("click",function(){$(t).toggleClass("hidden-sidebar-show"),alert("asd")});var a,c;!function(){$(".secondary-sidebar-menu").slimScroll({height:"100%"}),$(".secondary-sidebar-menu").mouseover();$("#collapsed-sidebar-toggle-button").on("click",function(){$("body").toggleClass("collapsed-sidebar")}),t.hasClass("page-sidebar-fixed")&&0==e&&(e=!0),1==e&&(t.addClass("page-sidebar-fixed"),$("#fixed-sidebar-toggle-button").removeClass("icon-radio_button_unchecked"),$("#fixed-sidebar-toggle-button").addClass("icon-radio_button_checked")),$("#fixed-sidebar-toggle-button").on("click",function(){return t.toggleClass("page-sidebar-fixed"),e=!!t.hasClass("page-sidebar-fixed"),$(this).toggleClass("icon-radio_button_unchecked"),$(this).toggleClass("icon-radio_button_checked"),!1}),$("#sidebar-toggle-button").on("click",function(){return t.toggleClass("page-sidebar-visible"),!1}),$("#sidebar-toggle-button-close").on("click",function(){return t.toggleClass("page-sidebar-visible"),!1}),$(window).click(function(){$(t).hasClass("page-sidebar-visible")&&t.toggleClass("page-sidebar-visible")}),$(".page-sidebar").click(function(e){e.stopPropagation()}),$(".secondary-sidebar").click(function(e){e.stopPropagation()}),$(".settings-menu-link").on("click",function(){$("body").addClass("settings-visible")}),$(".settings-overlay, .settings-menu-close").on("click",function(){$("body").removeClass("settings-visible")})}(),a=$(".accordion-menu li:not(.open) .sub-menu"),c=$(".accordion-menu li.active-page > a"),a.hide(),$(".accordion-menu li a").on("click",function(){var e=$(this).next(".sub-menu"),t=$(this).parent("li"),n=$(".accordion-menu > li.open");if(e.length)return t.hasClass("open")?($(".open .sub-menu li").each(function(e){var t=$(this);setTimeout(function(){t.removeClass("animation")},15*(e+1))}),e.slideUp(200),t.removeClass("open")):(n.length&&($(".accordion-menu > li.open > .sub-menu").slideUp(200),n.removeClass("open")),e.slideDown(200),t.addClass("open"),$(".open .sub-menu li").each(function(e){var t=$(this);setTimeout(function(){t.addClass("animation")},25*(e+1))})),!1}),$(".active-page > .sub-menu").length&&c.click(),$("#toggle-fullscreen").on("click",function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement?document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen():document.documentElement.requestFullscreen?document.documentElement.requestFullscreen():document.documentElement.msRequestFullscreen?document.documentElement.msRequestFullscreen():document.documentElement.mozRequestFullScreen?document.documentElement.mozRequestFullScreen():document.documentElement.webkitRequestFullscreen&&document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT),!1}),$("#search-button").on("click",function(){t.toggleClass("search-open"),t.hasClass("search-open")&&$(".search-form input").focus()}),$("#close-search").on("click",function(){t.toggleClass("search-open")}),function(){$(".right-sidebar-toggle").on("click",function(){var e=$(this).data("sidebar-id");$("#"+e).toggleClass("visible")});$(".chat-write form input").on("keypress",function(e){if(13==e.which&&0==!$(this).val().length)$(".right-sidebar-chat .chat-bubbles .chat-bubble:last-child").hasClass("me")?$(''+$(this).val()+"").insertAfter(".right-sidebar-chat .chat-bubbles .chat-bubble:last-child span:last-child"):$('
").insertAfter(".right-sidebar-chat .chat-bubbles .chat-bubble:last-child"),$(this).val("");else if(13==e.which)return;var t=$(".right-sidebar-chat").prop("scrollHeight")+"px";$(".right-sidebar-chat").slimscroll({allowPageScroll:!0,scrollTo:t})})}(),function(){$(".slimscroll").slimScroll(),Array.prototype.slice.call(document.querySelectorAll(".js-switch")).forEach(function(e){new Switchery(e,{size:"small",color:"#637282"})}),$('[data-toggle="tooltip"]').tooltip(),$('[data-toggle="modal"]').click(function(e){e.preventDefault()}),$('[data-toggle="popover"]').popover(),$(".toast").toast(),window.addEventListener("load",function(){var e=document.getElementsByClassName("needs-validation");Array.prototype.filter.call(e,function(e){e.addEventListener("submit",function(t){!1===e.checkValidity()&&(t.preventDefault(),t.stopPropagation()),e.classList.add("was-validated")},!1)})},!1);!function(){if($(".image-crop").length){var e=$(".image-crop > img");e.cropper({aspectRatio:1.4,preview:".img-preview"}),$("#zoomIn").on("click",function(){e.cropper("zoom",.1)}),$("#zoomOut").on("click",function(){e.cropper("zoom",-.1)}),$("#rotateLeft").on("click",function(){e.cropper("rotate",45)}),$("#rotateRight").on("click",function(){e.cropper("rotate",-45)}),$("#clear").on("click",function(){e.cropper("clear")});var t=$("#replaceWith");$("#replace").click(function(){e.cropper("replace",t.val())})}}()}()});
--------------------------------------------------------------------------------
/static/js/index.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 | var myChart1 = echarts.init(document.getElementById('index1'));
3 | myChart1.showLoading();
4 |
5 | var myChart2 = echarts.init(document.getElementById('index2'));
6 | myChart2.showLoading();
7 |
8 | $.ajax({
9 | //url: "{% url 'index' %}",
10 | url:"/index/",
11 | type: "GET",
12 | data: {},
13 | success: function (data) {
14 | myChart1.hideLoading();
15 | data = JSON.parse(data);
16 | myChart1.setOption({
17 | legend: {},
18 | tooltip: {},
19 | dataset: {
20 | source: data['source']
21 | },
22 | xAxis: {type: 'category'},
23 | yAxis: {},
24 | // Declare several bar series, each will be mapped
25 | // to a column of dataset.source by default.
26 | series: [
27 | {type: 'bar'},
28 | {type: 'bar'},
29 | {type: 'bar'},
30 | {type: 'bar'}
31 | ]
32 | });
33 | myChart2.hideLoading();
34 | myChart2.setOption({
35 | legend: {},
36 | tooltip: {},
37 | xAxis: {
38 | type: 'category',
39 | data: data['districts']
40 | },
41 | yAxis: {
42 | type: 'value'
43 | },
44 | series: [{
45 | data: data['number'],
46 | type: 'line'
47 | }]
48 | });
49 | }
50 | })
51 | });
--------------------------------------------------------------------------------
/static/js/new.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 |
3 | "use strict";
4 | var options = {
5 | chart: {
6 | height: 350,
7 | type: 'line',
8 | zoom: {
9 | enabled: false
10 | }
11 | },
12 | series: [{
13 | name: "Desktops",
14 | data: [10, 41, 35, 51, 49, 62, 69, 91, 148]
15 | }],
16 | dataLabels: {
17 | enabled: false
18 | },
19 | stroke: {
20 | curve: 'straight'
21 | },
22 | title: {
23 | text: 'Product Trends by Month',
24 | align: 'left'
25 | },
26 | grid: {
27 | row: {
28 | colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns
29 | opacity: 0.5
30 | },
31 | },
32 | xaxis: {
33 | categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],
34 | }
35 | }
36 |
37 | var chart = new ApexCharts(
38 | document.querySelector("#apex1"),
39 | options
40 | );
41 |
42 | chart.render();
43 |
44 | var options2 = {
45 | chart: {
46 | height: 350,
47 | type: 'area',
48 | },
49 | dataLabels: {
50 | enabled: false
51 | },
52 | stroke: {
53 | curve: 'smooth'
54 | },
55 | series: [{
56 | name: 'series1',
57 | data: [31, 40, 28, 51, 42, 109, 100]
58 | }, {
59 | name: 'series2',
60 | data: [11, 32, 45, 32, 34, 52, 41]
61 | }],
62 |
63 | xaxis: {
64 | type: 'datetime',
65 | categories: ["2018-09-19T00:00:00", "2018-09-19T01:30:00", "2018-09-19T02:30:00", "2018-09-19T03:30:00", "2018-09-19T04:30:00", "2018-09-19T05:30:00", "2018-09-19T06:30:00"],
66 | },
67 | tooltip: {
68 | x: {
69 | format: 'dd/MM/yy HH:mm'
70 | },
71 | }
72 | }
73 |
74 | var chart2 = new ApexCharts(
75 | document.querySelector("#apex2"),
76 | options2
77 | );
78 |
79 | chart2.render();
80 |
81 | var options3 = {
82 | chart: {
83 | height: 350,
84 | type: 'bar',
85 | },
86 | plotOptions: {
87 | bar: {
88 | horizontal: false,
89 | columnWidth: '55%',
90 | endingShape: 'rounded'
91 | },
92 | },
93 | dataLabels: {
94 | enabled: false
95 | },
96 | stroke: {
97 | show: true,
98 | width: 2,
99 | colors: ['transparent']
100 | },
101 | series: [{
102 | name: 'Net Profit',
103 | data: [44, 55, 57, 56, 61, 58, 63, 60, 66]
104 | }, {
105 | name: 'Revenue',
106 | data: [76, 85, 101, 98, 87, 105, 91, 114, 94]
107 | }, {
108 | name: 'Free Cash Flow',
109 | data: [35, 41, 36, 26, 45, 48, 52, 53, 41]
110 | }],
111 | xaxis: {
112 | categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'],
113 | },
114 | yaxis: {
115 | title: {
116 | text: '$ (thousands)'
117 | }
118 | },
119 | fill: {
120 | opacity: 1
121 |
122 | },
123 | tooltip: {
124 | y: {
125 | formatter: function (val) {
126 | return "$ " + val + " thousands"
127 | }
128 | }
129 | }
130 | }
131 |
132 | var chart3 = new ApexCharts(
133 | document.querySelector("#apex3"),
134 | options3
135 | );
136 |
137 | chart3.render();
138 |
139 | var options4 = {
140 | chart: {
141 | height: 350,
142 | type: 'bar',
143 | },
144 | plotOptions: {
145 | bar: {
146 | horizontal: true,
147 | }
148 | },
149 | dataLabels: {
150 | enabled: false
151 | },
152 | series: [{
153 | data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380]
154 | }],
155 | xaxis: {
156 | categories: ['South Korea', 'Canada', 'United Kingdom', 'Netherlands', 'Italy', 'France', 'Japan', 'United States', 'China', 'Germany'],
157 | }
158 | }
159 |
160 | var chart4 = new ApexCharts(
161 | document.querySelector("#apex4"),
162 | options4
163 | );
164 |
165 | chart4.render();
166 |
167 | var options5 = {
168 | chart: {
169 | height: 350,
170 | type: 'candlestick',
171 | },
172 | series: [{
173 | data: [{
174 | x: new Date(1538778600000),
175 | y: [6629.81, 6650.5, 6623.04, 6633.33]
176 | },
177 | {
178 | x: new Date(1538780400000),
179 | y: [6632.01, 6643.59, 6620, 6630.11]
180 | },
181 | {
182 | x: new Date(1538782200000),
183 | y: [6630.71, 6648.95, 6623.34, 6635.65]
184 | },
185 | {
186 | x: new Date(1538784000000),
187 | y: [6635.65, 6651, 6629.67, 6638.24]
188 | },
189 | {
190 | x: new Date(1538785800000),
191 | y: [6638.24, 6640, 6620, 6624.47]
192 | },
193 | {
194 | x: new Date(1538787600000),
195 | y: [6624.53, 6636.03, 6621.68, 6624.31]
196 | },
197 | {
198 | x: new Date(1538789400000),
199 | y: [6624.61, 6632.2, 6617, 6626.02]
200 | },
201 | {
202 | x: new Date(1538791200000),
203 | y: [6627, 6627.62, 6584.22, 6603.02]
204 | },
205 | {
206 | x: new Date(1538793000000),
207 | y: [6605, 6608.03, 6598.95, 6604.01]
208 | },
209 | {
210 | x: new Date(1538794800000),
211 | y: [6604.5, 6614.4, 6602.26, 6608.02]
212 | },
213 | {
214 | x: new Date(1538796600000),
215 | y: [6608.02, 6610.68, 6601.99, 6608.91]
216 | },
217 | {
218 | x: new Date(1538798400000),
219 | y: [6608.91, 6618.99, 6608.01, 6612]
220 | },
221 | {
222 | x: new Date(1538800200000),
223 | y: [6612, 6615.13, 6605.09, 6612]
224 | },
225 | {
226 | x: new Date(1538802000000),
227 | y: [6612, 6624.12, 6608.43, 6622.95]
228 | },
229 | {
230 | x: new Date(1538803800000),
231 | y: [6623.91, 6623.91, 6615, 6615.67]
232 | },
233 | {
234 | x: new Date(1538805600000),
235 | y: [6618.69, 6618.74, 6610, 6610.4]
236 | },
237 | {
238 | x: new Date(1538807400000),
239 | y: [6611, 6622.78, 6610.4, 6614.9]
240 | },
241 | {
242 | x: new Date(1538809200000),
243 | y: [6614.9, 6626.2, 6613.33, 6623.45]
244 | },
245 | {
246 | x: new Date(1538811000000),
247 | y: [6623.48, 6627, 6618.38, 6620.35]
248 | },
249 | {
250 | x: new Date(1538812800000),
251 | y: [6619.43, 6620.35, 6610.05, 6615.53]
252 | },
253 | {
254 | x: new Date(1538814600000),
255 | y: [6615.53, 6617.93, 6610, 6615.19]
256 | },
257 | {
258 | x: new Date(1538816400000),
259 | y: [6615.19, 6621.6, 6608.2, 6620]
260 | },
261 | {
262 | x: new Date(1538818200000),
263 | y: [6619.54, 6625.17, 6614.15, 6620]
264 | },
265 | {
266 | x: new Date(1538820000000),
267 | y: [6620.33, 6634.15, 6617.24, 6624.61]
268 | },
269 | {
270 | x: new Date(1538821800000),
271 | y: [6625.95, 6626, 6611.66, 6617.58]
272 | },
273 | {
274 | x: new Date(1538823600000),
275 | y: [6619, 6625.97, 6595.27, 6598.86]
276 | },
277 | {
278 | x: new Date(1538825400000),
279 | y: [6598.86, 6598.88, 6570, 6587.16]
280 | },
281 | {
282 | x: new Date(1538827200000),
283 | y: [6588.86, 6600, 6580, 6593.4]
284 | },
285 | {
286 | x: new Date(1538829000000),
287 | y: [6593.99, 6598.89, 6585, 6587.81]
288 | },
289 | {
290 | x: new Date(1538830800000),
291 | y: [6587.81, 6592.73, 6567.14, 6578]
292 | },
293 | {
294 | x: new Date(1538832600000),
295 | y: [6578.35, 6581.72, 6567.39, 6579]
296 | },
297 | {
298 | x: new Date(1538834400000),
299 | y: [6579.38, 6580.92, 6566.77, 6575.96]
300 | },
301 | {
302 | x: new Date(1538836200000),
303 | y: [6575.96, 6589, 6571.77, 6588.92]
304 | },
305 | {
306 | x: new Date(1538838000000),
307 | y: [6588.92, 6594, 6577.55, 6589.22]
308 | },
309 | {
310 | x: new Date(1538839800000),
311 | y: [6589.3, 6598.89, 6589.1, 6596.08]
312 | },
313 | {
314 | x: new Date(1538841600000),
315 | y: [6597.5, 6600, 6588.39, 6596.25]
316 | },
317 | {
318 | x: new Date(1538843400000),
319 | y: [6598.03, 6600, 6588.73, 6595.97]
320 | },
321 | {
322 | x: new Date(1538845200000),
323 | y: [6595.97, 6602.01, 6588.17, 6602]
324 | },
325 | {
326 | x: new Date(1538847000000),
327 | y: [6602, 6607, 6596.51, 6599.95]
328 | },
329 | {
330 | x: new Date(1538848800000),
331 | y: [6600.63, 6601.21, 6590.39, 6591.02]
332 | },
333 | {
334 | x: new Date(1538850600000),
335 | y: [6591.02, 6603.08, 6591, 6591]
336 | },
337 | {
338 | x: new Date(1538852400000),
339 | y: [6591, 6601.32, 6585, 6592]
340 | },
341 | {
342 | x: new Date(1538854200000),
343 | y: [6593.13, 6596.01, 6590, 6593.34]
344 | },
345 | {
346 | x: new Date(1538856000000),
347 | y: [6593.34, 6604.76, 6582.63, 6593.86]
348 | },
349 | {
350 | x: new Date(1538857800000),
351 | y: [6593.86, 6604.28, 6586.57, 6600.01]
352 | },
353 | {
354 | x: new Date(1538859600000),
355 | y: [6601.81, 6603.21, 6592.78, 6596.25]
356 | },
357 | {
358 | x: new Date(1538861400000),
359 | y: [6596.25, 6604.2, 6590, 6602.99]
360 | },
361 | {
362 | x: new Date(1538863200000),
363 | y: [6602.99, 6606, 6584.99, 6587.81]
364 | },
365 | {
366 | x: new Date(1538865000000),
367 | y: [6587.81, 6595, 6583.27, 6591.96]
368 | },
369 | {
370 | x: new Date(1538866800000),
371 | y: [6591.97, 6596.07, 6585, 6588.39]
372 | },
373 | {
374 | x: new Date(1538868600000),
375 | y: [6587.6, 6598.21, 6587.6, 6594.27]
376 | },
377 | {
378 | x: new Date(1538870400000),
379 | y: [6596.44, 6601, 6590, 6596.55]
380 | },
381 | {
382 | x: new Date(1538872200000),
383 | y: [6598.91, 6605, 6596.61, 6600.02]
384 | },
385 | {
386 | x: new Date(1538874000000),
387 | y: [6600.55, 6605, 6589.14, 6593.01]
388 | },
389 | {
390 | x: new Date(1538875800000),
391 | y: [6593.15, 6605, 6592, 6603.06]
392 | },
393 | {
394 | x: new Date(1538877600000),
395 | y: [6603.07, 6604.5, 6599.09, 6603.89]
396 | },
397 | {
398 | x: new Date(1538879400000),
399 | y: [6604.44, 6604.44, 6600, 6603.5]
400 | },
401 | {
402 | x: new Date(1538881200000),
403 | y: [6603.5, 6603.99, 6597.5, 6603.86]
404 | },
405 | {
406 | x: new Date(1538883000000),
407 | y: [6603.85, 6605, 6600, 6604.07]
408 | },
409 | {
410 | x: new Date(1538884800000),
411 | y: [6604.98, 6606, 6604.07, 6606]
412 | },
413 | ]
414 | }],
415 | title: {
416 | text: 'CandleStick Chart',
417 | align: 'left'
418 | },
419 | xaxis: {
420 | type: 'datetime'
421 | },
422 | yaxis: {
423 | tooltip: {
424 | enabled: true
425 | }
426 | }
427 | }
428 |
429 | var chart5 = new ApexCharts(
430 | document.querySelector("#apex5"),
431 | options5
432 | );
433 |
434 | chart5.render();
435 |
436 |
437 | var options6 = {
438 | chart: {
439 | height: 350,
440 | type: 'scatter',
441 | zoom: {
442 | enabled: true,
443 | type: 'xy'
444 | }
445 | },
446 |
447 | series: [{
448 | name: "SAMPLE A",
449 | data: [
450 | [16.4, 5.4], [21.7, 2], [25.4, 3], [19, 2], [10.9, 1], [13.6, 3.2], [10.9, 7.4], [10.9, 0], [10.9, 8.2], [16.4, 0], [16.4, 1.8], [13.6, 0.3], [13.6, 0], [29.9, 0], [27.1, 2.3], [16.4, 0], [13.6, 3.7], [10.9, 5.2], [16.4, 6.5], [10.9, 0], [24.5, 7.1], [10.9, 0], [8.1, 4.7], [19, 0], [21.7, 1.8], [27.1, 0], [24.5, 0], [27.1, 0], [29.9, 1.5], [27.1, 0.8], [22.1, 2]]
451 | },{
452 | name: "SAMPLE B",
453 | data: [
454 | [36.4, 13.4], [1.7, 11], [5.4, 8], [9, 17], [1.9, 4], [3.6, 12.2], [1.9, 14.4], [1.9, 9], [1.9, 13.2], [1.4, 7], [6.4, 8.8], [3.6, 4.3], [1.6, 10], [9.9, 2], [7.1, 15], [1.4, 0], [3.6, 13.7], [1.9, 15.2], [6.4, 16.5], [0.9, 10], [4.5, 17.1], [10.9, 10], [0.1, 14.7], [9, 10], [12.7, 11.8], [2.1, 10], [2.5, 10], [27.1, 10], [2.9, 11.5], [7.1, 10.8], [2.1, 12]]
455 | },{
456 | name: "SAMPLE C",
457 | data: [
458 | [21.7, 3], [23.6, 3.5], [24.6, 3], [29.9, 3], [21.7, 20], [23, 2], [10.9, 3], [28, 4], [27.1, 0.3], [16.4, 4], [13.6, 0], [19, 5], [22.4, 3], [24.5, 3], [32.6, 3], [27.1, 4], [29.6, 6], [31.6, 8], [21.6, 5], [20.9, 4], [22.4, 0], [32.6, 10.3], [29.7, 20.8], [24.5, 0.8], [21.4, 0], [21.7, 6.9], [28.6, 7.7], [15.4, 0], [18.1, 0], [33.4, 0], [16.4, 0]]
459 | }],
460 | xaxis: {
461 | tickAmount: 10,
462 | labels: {
463 | formatter: function(val) {
464 | return parseFloat(val).toFixed(1)
465 | }
466 | }
467 | },
468 | yaxis: {
469 | tickAmount: 7
470 | }
471 | }
472 |
473 | var chart6 = new ApexCharts(
474 | document.querySelector("#apex6"),
475 | options6
476 | );
477 |
478 | chart6.render();
479 |
480 |
481 |
482 | var options7 = {
483 | chart: {
484 | height: 350,
485 | type: 'line',
486 | stacked: false,
487 | },
488 | stroke: {
489 | width: [0, 2, 5],
490 | curve: 'smooth'
491 | },
492 | plotOptions: {
493 | bar: {
494 | columnWidth: '50%'
495 | }
496 | },
497 | colors: ['#3A5794', '#A5C351', '#E14A84'],
498 | series: [{
499 | name: 'Facebook',
500 | type: 'column',
501 | data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30]
502 | }, {
503 | name: 'Vine',
504 | type: 'area',
505 | data: [44, 55, 41, 67, 22, 43, 21, 41, 56, 27, 43]
506 | }, {
507 | name: 'Dribbble',
508 | type: 'line',
509 | data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39]
510 | }],
511 | fill: {
512 | opacity: [0.85,0.25,1],
513 | gradient: {
514 | inverseColors: false,
515 | shade: 'light',
516 | type: "vertical",
517 | opacityFrom: 0.85,
518 | opacityTo: 0.55,
519 | stops: [0, 100, 100, 100]
520 | }
521 | },
522 | labels: ['01/01/2003', '02/01/2003','03/01/2003','04/01/2003','05/01/2003','06/01/2003','07/01/2003','08/01/2003','09/01/2003','10/01/2003','11/01/2003'],
523 | markers: {
524 | size: 0
525 | },
526 | xaxis: {
527 | type:'datetime'
528 | },
529 | yaxis: {
530 | min: 0
531 | },
532 | tooltip: {
533 | shared: true,
534 | intersect: false,
535 | y: {
536 | formatter: function (y) {
537 | if(typeof y !== "undefined") {
538 | return y.toFixed(0) + " views";
539 | }
540 | return y;
541 |
542 | }
543 | }
544 | },
545 | legend: {
546 | labels: {
547 | useSeriesColors: true
548 | },
549 | markers: {
550 | customHTML: [
551 | function() {
552 | return ''
553 | }, function() {
554 | return ''
555 | }, function() {
556 | return ''
557 | }
558 | ]
559 | }
560 | }
561 | }
562 |
563 | var chart7 = new ApexCharts(
564 | document.querySelector("#apex7"),
565 | options7
566 | );
567 |
568 | chart7.render();
569 |
570 |
571 |
572 |
573 |
574 | // CHARTJS *****
575 |
576 |
577 | new Chart(document.getElementById("chartjs1"),{"type":"line","data":{"labels":["January","February","March","April","May","June","July"],"datasets":[{"label":"My First Dataset","data":[65,59,80,81,56,55,40],"fill":false,"borderColor":"rgb(75, 192, 192)","lineTension":0.1}]},"options":{}});
578 |
579 |
580 | new Chart(document.getElementById("chartjs2"),{"type":"bar","data":{"labels":["January","February","March","April","May","June","July"],"datasets":[{"label":"My First Dataset","data":[65,59,80,81,56,55,40],"fill":false,"backgroundColor":["rgba(255, 99, 132, 0.2)","rgba(255, 159, 64, 0.2)","rgba(255, 205, 86, 0.2)","rgba(75, 192, 192, 0.2)","rgba(54, 162, 235, 0.2)","rgba(153, 102, 255, 0.2)","rgba(201, 203, 207, 0.2)"],"borderColor":["rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(54, 162, 235)","rgb(153, 102, 255)","rgb(201, 203, 207)"],"borderWidth":1}]},"options":{"scales":{"yAxes":[{"ticks":{"beginAtZero":true}}]}}});
581 |
582 | new Chart(document.getElementById("chartjs3"),{"type":"radar","data":{"labels":["Eating","Drinking","Sleeping","Designing","Coding","Cycling","Running"],"datasets":[{"label":"My First Dataset","data":[65,59,90,81,56,55,40],"fill":true,"backgroundColor":"rgba(255, 99, 132, 0.2)","borderColor":"rgb(255, 99, 132)","pointBackgroundColor":"rgb(255, 99, 132)","pointBorderColor":"#fff","pointHoverBackgroundColor":"#fff","pointHoverBorderColor":"rgb(255, 99, 132)"},{"label":"My Second Dataset","data":[28,48,40,19,96,27,100],"fill":true,"backgroundColor":"rgba(54, 162, 235, 0.2)","borderColor":"rgb(54, 162, 235)","pointBackgroundColor":"rgb(54, 162, 235)","pointBorderColor":"#fff","pointHoverBackgroundColor":"#fff","pointHoverBorderColor":"rgb(54, 162, 235)"}]},"options":{"elements":{"line":{"tension":0,"borderWidth":3}}}});
583 |
584 | new Chart(document.getElementById("chartjs4"),{"type":"doughnut","data":{"labels":["Red","Blue","Yellow"],"datasets":[{"label":"My First Dataset","data":[300,50,100],"backgroundColor":["rgb(255, 99, 132)","rgb(54, 162, 235)","rgb(255, 205, 86)"]}]}});
585 | });
--------------------------------------------------------------------------------
/templates/base.html:
--------------------------------------------------------------------------------
1 | {% load static %}
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 链家成都地区二手房房价分析及可视化
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
82 |
83 |
119 | {% block Inner %}
120 | {% endblock %}
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
--------------------------------------------------------------------------------
/templates/district.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block Inner %}
4 |
5 |
6 |
7 |
8 |
17 |
18 |
19 |
37 |
38 |
39 |
40 |
41 |
42 | {% endblock %}
--------------------------------------------------------------------------------
/templates/index.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block Inner %}
4 |
5 |
6 |
7 |
17 |
18 |
19 |
20 |
21 |
各区域二手房平均单价
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
各区域二手房房源数量
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | {% endblock %}
--------------------------------------------------------------------------------