Compare commits
No commits in common. 'prd' and 'dev-linux' have entirely different histories.
@ -1,3 +1,3 @@
|
||||
cd %~dp0
|
||||
taskkill /F /FI "USERNAME eq %username%" /IM orpa-agent.exe
|
||||
cd %~dp0
|
||||
taskkill /F /FI "USERNAME eq %username%" /IM orpa-agent.exe
|
||||
pause >nul
|
@ -1,6 +1,5 @@
|
||||
chcp 65001
|
||||
cd /d "%~dp0"
|
||||
taskkill /im "orpa-agent.exe" /F /fi "username eq %username%"
|
||||
copy /Y ..\Resources\WPy64-3720\python-3.7.2.amd64\pythonw.exe ..\Resources\WPy64-3720\python-3.7.2.amd64\orpa-agent.exe
|
||||
.\..\Resources\WPy64-3720\python-3.7.2.amd64\orpa-agent.exe "config.py"
|
||||
cd %~dp0
|
||||
taskkill /im "orpa-agent.exe" /F /fi "username eq %username%"
|
||||
copy /Y ..\Resources\WPy64-3720\python-3.7.2.amd64\pythonw.exe ..\Resources\WPy64-3720\python-3.7.2.amd64\orpa-agent.exe
|
||||
.\..\Resources\WPy64-3720\python-3.7.2.amd64\orpa-agent.exe "config.py"
|
||||
pause >nul
|
@ -1,6 +1,5 @@
|
||||
chcp 65001
|
||||
cd /d "%~dp0"
|
||||
taskkill /im "orpa-agent.exe" /F /fi "username eq %username%"
|
||||
copy /Y ..\Resources\WPy64-3720\python-3.7.2.amd64\python.exe ..\Resources\WPy64-3720\python-3.7.2.amd64\orpa-agent.exe
|
||||
.\..\Resources\WPy64-3720\python-3.7.2.amd64\orpa-agent.exe "config.py"
|
||||
cd %~dp0
|
||||
taskkill /im "orpa-agent.exe" /F /fi "username eq %username%"
|
||||
copy /Y ..\Resources\WPy64-3720\python-3.7.2.amd64\python.exe ..\Resources\WPy64-3720\python-3.7.2.amd64\orpa-agent.exe
|
||||
.\..\Resources\WPy64-3720\python-3.7.2.amd64\orpa-agent.exe "config.py"
|
||||
pause >nul
|
@ -1,3 +1,3 @@
|
||||
git clean -f -d
|
||||
git reset --hard
|
||||
git clean -f -d
|
||||
git reset --hard
|
||||
pause>nul
|
@ -0,0 +1,2 @@
|
||||
git pull
|
||||
pause>nul
|
@ -1,2 +0,0 @@
|
||||
git pull
|
||||
pause>nul
|
@ -0,0 +1,57 @@
|
||||
# !ATTENTION - Current Control panel works only from pyOpenRPA v1.2.0!
|
||||
from pyOpenRPA import Orchestrator
|
||||
def CPRender(inGSettings):
|
||||
|
||||
lJSCheckVersion="""
|
||||
lT = 9;
|
||||
lY="123";
|
||||
console.log(lT+1);
|
||||
if (lT==9) {
|
||||
alert(123)
|
||||
}
|
||||
"""
|
||||
|
||||
lResultDict={
|
||||
"HeaderLeftText":"CP_TEST",
|
||||
"HeaderRightText":"NAME",
|
||||
"DataStorageKey":"", #Use key for set current dict in mGlobal.DataStorage["DataStorageKey"] on client side
|
||||
"SubheaderText":"",
|
||||
"BodyKeyValueList":[
|
||||
{"Key": "HTMLLinkURL", "Value": Orchestrator.Web.Basic.HTMLLinkURL(inURLStr="test",inColorStr="orange")},
|
||||
{"Key": "HTMLLinkJSOnClick", "Value": Orchestrator.Web.Basic.HTMLLinkJSOnClick(inJSOnClickStr=lJSCheckVersion, inTitleStr="!Click me!",inColorStr="green")},
|
||||
],
|
||||
"FooterText":"",
|
||||
"FooterButtonX2List":[],
|
||||
"FooterButtonX1List":[],
|
||||
"GlobalStorage": "" # UNCOMMENT FOR DEBUG PURPOSE TO WATCH inGSettings on client side
|
||||
}
|
||||
return lResultDict
|
||||
# Check in control panel, that process is runnning
|
||||
|
||||
# Test JSON generator when page init
|
||||
def JSONGenerator():
|
||||
lJSONDict=[1,2,2,4,2,2,2]
|
||||
return lJSONDict
|
||||
|
||||
# Test JS when page init
|
||||
def JSInitGenerator():
|
||||
lJSCheckVersion="""
|
||||
lT = 9;
|
||||
lY="123";
|
||||
//console.log(lT+1);
|
||||
if (lT==9) {
|
||||
//alert(123)
|
||||
}
|
||||
"""
|
||||
return lJSCheckVersion
|
||||
|
||||
def test():
|
||||
#Orchestrator.WebRequestGet()
|
||||
Orchestrator.WebRequestResponseSend("Hello my friend!")
|
||||
|
||||
#Orchestrator settings
|
||||
def SettingsUpdate(inGSettings):
|
||||
# New way to add CP defs in orchestrator - no gSettings..
|
||||
Orchestrator.WebCPUpdate(inGSettings=inGSettings, inCPKeyStr="TEST", inHTMLRenderDef=CPRender, inJSONGeneratorDef=JSONGenerator, inJSInitGeneratorDef=JSInitGenerator)
|
||||
Orchestrator.WebURLConnectDef(inMethodStr="GET", inURLStr="/test", inMatchTypeStr="Equal", inDef=test, inUACBool=False)
|
||||
return inGSettings
|
@ -0,0 +1,54 @@
|
||||
# !ATTENTION - Current Control panel works only from pyOpenRPA v1.2.0!
|
||||
from pyOpenRPA import Orchestrator
|
||||
from pyOpenRPA.Orchestrator import Managers
|
||||
def ControlPanelRenderDict(inGSettings):
|
||||
# Example of the JS code in Python code
|
||||
lJSCheckVersion = f"""
|
||||
if (!('VersionStr' in mGlobal)) {{
|
||||
window.location.reload(true);
|
||||
}} else {{
|
||||
if (mGlobal.VersionStr != "{inGSettings["VersionStr"]}") {{
|
||||
window.location.reload(true);
|
||||
}} else {{
|
||||
$('div.orchestrator-version').html(mGlobal['VersionStr']);
|
||||
}}
|
||||
}}
|
||||
"""
|
||||
lResultDict={
|
||||
"HeaderLeftText":"Version check",
|
||||
"HeaderRightText":"Orchestrator",
|
||||
"DataStorageKey":"", #Use key for set current dict in mGlobal.DataStorage["DataStorageKey"] on client side
|
||||
"SubheaderText":f"<script>{lJSCheckVersion}</script>",
|
||||
"BodyKeyValueList":[
|
||||
{"Key": "Client", "Value": '<div class="orchestrator-version" style="display:inline;"></div>'},
|
||||
{"Key": "Server", "Value": inGSettings["VersionStr"]},
|
||||
],
|
||||
"FooterText":"",
|
||||
"FooterButtonX2List":[],
|
||||
"FooterButtonX1List":[],
|
||||
"GlobalStorage": "" # UNCOMMENT FOR DEBUG PURPOSE TO WATCH inGSettings on client side
|
||||
}
|
||||
return lResultDict
|
||||
# Check in control panel, that process is runnning
|
||||
|
||||
#Orchestrator settings
|
||||
def SettingsUpdate(inGSettings):
|
||||
#Add RobotRDPActive in control panel
|
||||
Orchestrator.WebCPUpdate(inCPKeyStr="VersionCheck", inHTMLRenderDef=ControlPanelRenderDict)
|
||||
|
||||
#Orchestrator.Managers.ControlPanel(inControlPanelNameStr="TestTTT",inRefreshHTMLJinja2TemplatePathStr="ControlPanel\\test.html", inJinja2TemplateRefreshBool = True)
|
||||
lProcess = Orchestrator.Managers.ProcessInitSafe(inAgentHostNameStr="IVANMASLOV-DESKTOP",inAgentUserNameStr="ND",
|
||||
inProcessNameWOExeStr="notepad",inStartCMDStr="notepad",inStopSafeTimeoutSecFloat=3)
|
||||
# Some test
|
||||
Orchestrator.OrchestratorInitWait()
|
||||
#lProcess.ScheduleStatusCheckEverySeconds(inIntervalSecondsInt=5)
|
||||
#lProcess.Start(inIsManualBool=False)
|
||||
lProcess.StartCheck()
|
||||
#Orchestrator.OrchestratorScheduleGet().every(2).seconds.do(Orchestrator.OrchestratorThreadStart,
|
||||
# lProcess.StartCheck)
|
||||
#Orchestrator.OrchestratorScheduleGet().every(5).seconds.do(Orchestrator.OrchestratorThreadStart,lProcess.StatusCheckStart)
|
||||
#lProcess.Start()
|
||||
lGit = Orchestrator.Managers.Git(inAgentHostNameStr="IVANMASLOV-DESKTOP",inAgentUserNameStr="ND",inGitPathStr="C:\Abs\Archive\scopeSrcUL\pyStore")
|
||||
lGit.BranchRevLastGetInterval(inBranchLocalStr="prd", inBranchRemoteStr="origin/prd", inPreviousBranchRestoreBool=False,inIntervalSecFloat=10.0)
|
||||
lGit.ProcessConnect(inProcess=lProcess)
|
||||
return inGSettings
|
@ -1,28 +0,0 @@
|
||||
|
||||
from pyOpenRPA import Orchestrator
|
||||
from pyOpenRPA.Orchestrator.Managers import ControlPanel
|
||||
from pyOpenRPA.Orchestrator.Managers import Process
|
||||
from pyOpenRPA.Tools import CrossOS
|
||||
|
||||
import os
|
||||
import sys
|
||||
import socket
|
||||
import datetime
|
||||
import urllib.parse
|
||||
import time
|
||||
g_cp_name_str = "HELLO"
|
||||
g_repo_name_str = os.path.abspath(__file__).split("\\")[-5]
|
||||
g_repo_package_path_str = os.path.abspath("\\".join(os.path.abspath(__file__).split("\\")[:-1]))
|
||||
|
||||
|
||||
# User settings
|
||||
g_host_str = socket.gethostname().upper() # Identify PC
|
||||
|
||||
|
||||
g_control_panel = ControlPanel(inControlPanelNameStr=g_cp_name_str,
|
||||
inRefreshHTMLJinja2TemplatePathStr=os.path.join(g_repo_package_path_str, "html_jinja2.xhtml"),
|
||||
inJinja2TemplateRefreshBool=True,inRobotNameStr=g_repo_name_str)
|
||||
g_jinja_context_dict = {"settings": sys.modules[__name__],
|
||||
"urllib_parse_quote_plus": urllib.parse.quote_plus, "g_host_str": g_host_str, "g_repo_name_str": g_repo_name_str}
|
||||
g_control_panel.Jinja2DataUpdateDictSet(inJinja2DataUpdateDict=g_jinja_context_dict)
|
||||
g_control_panel.InitJSJinja2TemplatePathSet(inJinja2TemplatePathStr=os.path.join(g_repo_package_path_str, "js.js"))
|
@ -1,4 +0,0 @@
|
||||
$(document).ready(function() {
|
||||
$('#test8-progress').progress();
|
||||
|
||||
});
|
|
@ -1,39 +0,0 @@
|
||||
Button {
|
||||
color: white;
|
||||
background: rgb(82, 105, 95);
|
||||
border-radius: 5px;
|
||||
border-color: #FFFFFF #FFFFFF #FFFFFF;
|
||||
border-width: 2px 2px;
|
||||
padding: .5em 2em;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
Button:hover { background: rgb(53, 167, 110); }
|
||||
|
||||
|
||||
i#first {
|
||||
position: absolute;
|
||||
top: 280px;
|
||||
left: 135px;
|
||||
}
|
||||
|
||||
i#second {
|
||||
position: absolute;
|
||||
top: 340px;
|
||||
left: 135px;
|
||||
}
|
||||
|
||||
|
||||
h4 {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
border-bottom: 5px solid teal;
|
||||
line-height: 0.1em;
|
||||
margin: 10px 0 20px;
|
||||
}
|
||||
|
||||
h4 span {
|
||||
background:#fff;
|
||||
padding:0 7px;
|
||||
}
|
||||
|
@ -1,74 +0,0 @@
|
||||
$('.ui.selection.dropdown')
|
||||
.dropdown("clear")
|
||||
;
|
||||
|
||||
|
||||
var switchFlag = "1,";
|
||||
document.getElementById("Vacancy1Status").innerHTML = "Робот на вакансию 1 оффлайн"
|
||||
document.getElementById("Vacancy2Status").innerHTML = "Робот на вакансию 2 оффлайн"
|
||||
|
||||
var btn1 = document.createElement("Button")
|
||||
btn1.innerHTML = "Старт"
|
||||
btn1.onclick = function() {
|
||||
if (switchFlag == "1,"){
|
||||
document.getElementById("Vacancy1Status").innerHTML = "Робот на вакансию 1 онлайн"
|
||||
}
|
||||
else {
|
||||
document.getElementById("Vacancy2Status").innerHTML = "Робот на вакансию 2 онлайн"
|
||||
}
|
||||
|
||||
}
|
||||
var btn2 = document.createElement("Button")
|
||||
btn2.innerHTML = "Стоп"
|
||||
btn2.onclick = function() {
|
||||
if (switchFlag == "1,"){
|
||||
document.getElementById("Vacancy1Status").innerHTML = "Робот на вакансию 1 оффлайн"
|
||||
}
|
||||
else {
|
||||
document.getElementById("Vacancy2Status").innerHTML = "Робот на вакансию 2 оффлайн"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function get_data(i)
|
||||
{
|
||||
var link = document.createElement('a');
|
||||
if (i == 'question') {
|
||||
link.setAttribute('href', '/HR_officer01/questions');
|
||||
link.setAttribute('download', 'Questions.csv');
|
||||
link.click();
|
||||
|
||||
} else if (i == "results") {
|
||||
link.setAttribute('href', '/HR_officer01/results');
|
||||
link.setAttribute('download', 'All_results.csv');
|
||||
link.click();
|
||||
} else if (i == "logs"){
|
||||
link.setAttribute('href', '/HR_officer01/logs');
|
||||
link.setAttribute('download', 'log.txt');
|
||||
link.click();
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function bot_change() {
|
||||
switchFlag = $('.ui.selection.dropdown').dropdown("get value")
|
||||
if ($('.ui.selection.dropdown').dropdown("get value") == "1,") {
|
||||
document.getElementById("conteiner").appendChild(btn1)
|
||||
document.getElementById("conteiner").appendChild(btn2)
|
||||
}
|
||||
else if ($('.ui.selection.dropdown').dropdown("get value") == "0,"){
|
||||
document.getElementById("conteiner").appendChild(btn1)
|
||||
document.getElementById("conteiner").appendChild(btn2)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
||||
Это лог
|
@ -1,31 +0,0 @@
|
||||
|
||||
from pyOpenRPA import Orchestrator
|
||||
from pyOpenRPA.Orchestrator.Managers import ControlPanel
|
||||
from pyOpenRPA.Orchestrator.Managers import Process
|
||||
from pyOpenRPA.Tools import CrossOS
|
||||
|
||||
import os
|
||||
import sys
|
||||
import socket
|
||||
import datetime
|
||||
import urllib.parse
|
||||
import time
|
||||
g_cp_name_str = "CP_JUPYTER"
|
||||
g_repo_name_str = os.path.abspath(__file__).split("\\")[-5]
|
||||
g_repo_package_path_str = os.path.abspath("\\".join(os.path.abspath(__file__).split("\\")[:-1]))
|
||||
#g_repo_package_path_str = os.path.join(g_repo_path_str, "Orchestrator","Demo","JUPITER_01")
|
||||
#g_repo_package_path_str = os.path.join(g_repo_package_path_str, g_cp_name_str)
|
||||
|
||||
|
||||
# User settings
|
||||
g_host_str = socket.gethostname().upper() # Identify PC
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
g_control_panel = ControlPanel(inControlPanelNameStr=g_cp_name_str,
|
||||
inRefreshHTMLJinja2TemplatePathStr=os.path.join(g_repo_package_path_str, "html_jinja2.xhtml"),
|
||||
inJinja2TemplateRefreshBool=True,inRobotNameStr=g_repo_name_str)
|
||||
g_jinja_context_dict = {"settings": sys.modules[__name__],
|
||||
"urllib_parse_quote_plus": urllib.parse.quote_plus, "g_host_str": g_host_str, "g_repo_name_str": g_repo_name_str}
|
||||
g_control_panel.Jinja2DataUpdateDictSet(inJinja2DataUpdateDict=g_jinja_context_dict)
|
||||
g_control_panel.InitJSJinja2TemplatePathSet(inJinja2TemplatePathStr=os.path.join(g_repo_package_path_str, "js.js"))
|
@ -1,33 +0,0 @@
|
||||
<div class="card" style=""">
|
||||
<div class="content">
|
||||
<div class="right floated mini ui ">
|
||||
{{settings.g_cp_name_str}}
|
||||
</div>
|
||||
<div class="header">
|
||||
ИТ - JUPYTER
|
||||
|
||||
</div>
|
||||
<div class="ui divider"></div>
|
||||
<div class="meta">
|
||||
<div>Рабочая область PYTHON JUPYTER. <br> Сотрудник: {{UserInfoDict["UserNameUpperStr"]}}</div>
|
||||
<div class="ui divider"></div>
|
||||
<div class="description">
|
||||
<button class="massive ui button" >
|
||||
Открыть в новой вкладке
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="extra content">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
@ -1,4 +0,0 @@
|
||||
$(document).ready(function() {
|
||||
$('#test8-progress').progress();
|
||||
|
||||
});
|
@ -1,23 +0,0 @@
|
||||
|
||||
from pyOpenRPA import Orchestrator
|
||||
from pyOpenRPA.Orchestrator.Managers import ControlPanel
|
||||
import time
|
||||
import os
|
||||
import sys
|
||||
import socket
|
||||
import datetime
|
||||
import urllib.parse
|
||||
time.sleep(1.5)
|
||||
g_cp_name_str = "OPER_00"
|
||||
g_repo_name_str = os.path.abspath(__file__).split("\\")[-5]
|
||||
g_repo_package_cp_path_str = os.path.abspath("\\".join(os.path.abspath(__file__).split("\\")[:-1]))
|
||||
|
||||
# User settings
|
||||
g_host_str = socket.gethostname().upper() # Identify PC
|
||||
|
||||
g_control_panel = ControlPanel(inControlPanelNameStr=g_cp_name_str,
|
||||
inRefreshHTMLJinja2TemplatePathStr=os.path.join(g_repo_package_cp_path_str, "html_jinja2.xhtml"),
|
||||
inJinja2TemplateRefreshBool=True,inRobotNameStr=g_repo_name_str)
|
||||
g_jinja_context_dict = {"settings": sys.modules[__name__],
|
||||
"urllib_parse_quote_plus": urllib.parse.quote_plus, "g_host_str": g_host_str, "g_repo_name_str": g_repo_name_str}
|
||||
g_control_panel.Jinja2DataUpdateDictSet(inJinja2DataUpdateDict=g_jinja_context_dict)
|
@ -1,7 +0,0 @@
|
||||
$('.ui.dropdown')
|
||||
.dropdown('clear')
|
||||
;
|
||||
|
||||
$('.ui.dropdown')
|
||||
.dropdown('clear')
|
||||
;
|
@ -1,24 +0,0 @@
|
||||
chcp 65001
|
||||
@echo off
|
||||
echo Формат использования init-python-env.cmd [имя запускаемого процесса.exe] [имя убиваемого процесса.exe]
|
||||
echo Пример использования init-python-env.cmd orpa-rbt.exe orpa-rbt.exe
|
||||
|
||||
if [%1]==[] goto :python-env
|
||||
goto create-exe
|
||||
:create-exe
|
||||
copy /Y "%~dp0..\Resources\WPy64-3720\python-3.7.2.amd64\python.exe" "%~dp0..\Resources\WPy64-3720\python-3.7.2.amd64\%1"
|
||||
if [%2]==[] goto :python-env
|
||||
goto taskkill
|
||||
:taskkill
|
||||
taskkill /im "%2" /F /fi "username eq %username%"
|
||||
goto :python-env
|
||||
:python-env
|
||||
set CD_PREV=%cd%
|
||||
cd /d "%~dp0..\Resources\WPy64-3720\python-3.7.2.amd64"
|
||||
set PATH=%cd%;%cd%\Scripts;%PATH%
|
||||
cd /d "%~dp0..\Sources"
|
||||
set PYTHONPATH=%cd%;%PYTHONPATH%
|
||||
cd %CD_PREV%
|
||||
:eof
|
||||
echo Инициализация Python окружения прошла успешно!
|
||||
@echo on
|
@ -1,4 +0,0 @@
|
||||
chcp 65001
|
||||
cd /d "%~dp0"
|
||||
call init-python-env.cmd orpa-rbt.exe orpa-rbt.exe
|
||||
cmd
|
@ -1,5 +1,5 @@
|
||||
chcp 65001
|
||||
cd /d "%~dp0"
|
||||
call init-python-env.cmd orpa-orc.exe orpa-orc.exe
|
||||
orpa-orc.exe "config.py"
|
||||
cd %~dp0
|
||||
taskkill /im "orpa-orc.exe" /F /fi "username eq %username%"
|
||||
copy /Y ..\Resources\WPy64-3720\python-3.7.2.amd64\python.exe ..\Resources\WPy64-3720\python-3.7.2.amd64\orpa-orc.exe
|
||||
.\..\Resources\WPy64-3720\python-3.7.2.amd64\orpa-orc.exe "config.py"
|
||||
pause>nul
|
@ -1 +0,0 @@
|
||||
https://github.com/intxcc/pyaudio_portaudio
|
@ -1,172 +0,0 @@
|
||||
#pyaudio loopback
|
||||
import pyaudio
|
||||
import wave
|
||||
import os
|
||||
|
||||
defaultframes = 512
|
||||
|
||||
class textcolors:
|
||||
if not os.name == 'nt':
|
||||
blue = '\033[94m'
|
||||
green = '\033[92m'
|
||||
warning = '\033[93m'
|
||||
fail = '\033[91m'
|
||||
end = '\033[0m'
|
||||
else:
|
||||
blue = ''
|
||||
green = ''
|
||||
warning = ''
|
||||
fail = ''
|
||||
end = ''
|
||||
|
||||
recorded_frames = []
|
||||
device_info = {}
|
||||
useloopback = False
|
||||
recordtime = 5
|
||||
|
||||
#Use module
|
||||
p = pyaudio.PyAudio()
|
||||
|
||||
#Set default to first in list or ask Windows
|
||||
try:
|
||||
default_device_index = p.get_default_input_device_info()
|
||||
except IOError:
|
||||
default_device_index = -1
|
||||
|
||||
#Select Device
|
||||
print (textcolors.blue + "Available devices:\n" + textcolors.end)
|
||||
for i in range(0, p.get_device_count()):
|
||||
info = p.get_device_info_by_index(i)
|
||||
print (textcolors.green + str(info["index"]) + textcolors.end + ": \t %s \n \t %s \n" % (info["name"], p.get_host_api_info_by_index(info["hostApi"])["name"]))
|
||||
|
||||
if default_device_index == -1:
|
||||
default_device_index = info["index"]
|
||||
|
||||
#Handle no devices available
|
||||
if default_device_index == -1:
|
||||
print (textcolors.fail + "No device available. Quitting." + textcolors.end)
|
||||
exit()
|
||||
|
||||
|
||||
#Get input or default
|
||||
device_id = int(input("Choose device [" + textcolors.blue + str(default_device_index) + textcolors.end + "]: ") or default_device_index)
|
||||
print ("")
|
||||
|
||||
#Get device info
|
||||
try:
|
||||
device_info = p.get_device_info_by_index(device_id)
|
||||
except IOError:
|
||||
device_info = p.get_device_info_by_index(default_device_index)
|
||||
print (textcolors.warning + "Selection not available, using default." + textcolors.end)
|
||||
|
||||
#Choose between loopback or standard mode
|
||||
is_input = device_info["maxInputChannels"] > 0
|
||||
is_wasapi = (p.get_host_api_info_by_index(device_info["hostApi"])["name"]).find("WASAPI") != -1
|
||||
if is_input:
|
||||
print (textcolors.blue + "Selection is input using standard mode.\n" + textcolors.end)
|
||||
else:
|
||||
if is_wasapi:
|
||||
useloopback = True;
|
||||
print (textcolors.green + "Selection is output. Using loopback mode.\n" + textcolors.end)
|
||||
else:
|
||||
print (textcolors.fail + "Selection is input and does not support loopback mode. Quitting.\n" + textcolors.end)
|
||||
exit()
|
||||
|
||||
recordtime = int(input("Record time in seconds [" + textcolors.blue + str(recordtime) + textcolors.end + "]: ") or recordtime)
|
||||
|
||||
#Open stream
|
||||
channelcount = device_info["maxInputChannels"] if (device_info["maxOutputChannels"] < device_info["maxInputChannels"]) else device_info["maxOutputChannels"]
|
||||
stream = p.open(format = pyaudio.paInt16,
|
||||
channels = channelcount,
|
||||
rate = int(device_info["defaultSampleRate"]),
|
||||
input = True,
|
||||
frames_per_buffer = defaultframes,
|
||||
input_device_index = device_info["index"],
|
||||
as_loopback = useloopback)
|
||||
|
||||
#Start Recording
|
||||
print (textcolors.blue + "Starting..." + textcolors.end)
|
||||
|
||||
for i in range(0, int(int(device_info["defaultSampleRate"]) / defaultframes * recordtime)):
|
||||
recorded_frames.append(stream.read(defaultframes))
|
||||
print (".")
|
||||
|
||||
print (textcolors.blue + "End." + textcolors.end)
|
||||
#Stop Recording
|
||||
|
||||
stream.stop_stream()
|
||||
stream.close()
|
||||
|
||||
#Close module
|
||||
p.terminate()
|
||||
|
||||
filename = input("Save as [" + textcolors.blue + "out.wav" + textcolors.end + "]: ") or "out.wav"
|
||||
from pydub import AudioSegment
|
||||
# Advanced usage, if you have raw audio data:
|
||||
sound = AudioSegment(
|
||||
# raw audio data (bytes)
|
||||
data=b''.join(recorded_frames),
|
||||
# 2 byte (16 bit) samples
|
||||
sample_width=p.get_sample_size(pyaudio.paInt16),
|
||||
# 44.1 kHz frame rate
|
||||
frame_rate=int(device_info["defaultSampleRate"]),
|
||||
# stereo
|
||||
channels=channelcount
|
||||
)
|
||||
sound.export("out.mp3", format="mp3")
|
||||
#waveFile = wave.open(filename, 'wb')
|
||||
#waveFile.setnchannels(channelcount)
|
||||
#waveFile.setsampwidth(p.get_sample_size(pyaudio.paInt16))
|
||||
#waveFile.setframerate(int(device_info["defaultSampleRate"]))
|
||||
#waveFile.writeframes(b''.join(recorded_frames))
|
||||
#waveFile.close()
|
||||
|
||||
|
||||
#pyaudio classic
|
||||
|
||||
from sys import byteorder
|
||||
from array import array
|
||||
from struct import pack
|
||||
import pyaudio
|
||||
import wave
|
||||
THRESHOLD = 500
|
||||
CHUNK_SIZE = 1024
|
||||
FORMAT = pyaudio.paInt16
|
||||
RATE = 44100
|
||||
|
||||
STOP_BOOL = False
|
||||
import time
|
||||
STOP_SEC_INT = 10
|
||||
TIME_LAST = time.time()
|
||||
|
||||
def is_silent(snd_data):
|
||||
"Returns 'True' if below the 'silent' threshold"
|
||||
return max(snd_data) < THRESHOLD
|
||||
|
||||
def normalize(snd_data):
|
||||
"Average the volume out"
|
||||
MAXIMUM = 16384
|
||||
times = float(MAXIMUM)/max(abs(i) for i in snd_data)
|
||||
r = array('h')
|
||||
for i in snd_data:
|
||||
r.append(int(i*times))
|
||||
return r
|
||||
def trim(snd_data):
|
||||
"Trim the blank spots at the start and end"
|
||||
def _trim(snd_data):
|
||||
snd_started = False
|
||||
r = array('h')
|
||||
for i in snd_data:
|
||||
if not snd_started and abs(i)>THRESHOLD:
|
||||
snd_started = True
|
||||
r.append(i)
|
||||
elif snd_started:
|
||||
r.append(i)
|
||||
return r
|
||||
# Trim to the left
|
||||
snd_data = _trim(snd_data)
|
||||
# Trim to the right
|
||||
snd_data.reverse()
|
||||
snd_data = _trim(snd_data)
|
||||
snd_data.reverse()
|
||||
return snd_data
|
@ -1,424 +0,0 @@
|
||||
import inspect
|
||||
from pyOpenRPA.Tools import CrossOS
|
||||
import urllib.parse # decode URL in string
|
||||
import os #for path operations
|
||||
from . import __Orchestrator__
|
||||
import mimetypes
|
||||
mimetypes.add_type("font/woff2",".woff2")
|
||||
mimetypes.add_type("application/javascript",".js")
|
||||
|
||||
# объявление import
|
||||
from fastapi import FastAPI, Form, Request, HTTPException, Depends, Header, Response, Body
|
||||
|
||||
gCacheDict = {}
|
||||
|
||||
|
||||
# Tool to merge complex dictionaries
|
||||
def __ComplexDictMerge2to1__(in1Dict, in2Dict):
|
||||
lPathList=None
|
||||
if lPathList is None: lPathList = []
|
||||
for lKeyStr in in2Dict:
|
||||
if lKeyStr in in1Dict:
|
||||
if isinstance(in1Dict[lKeyStr], dict) and isinstance(in2Dict[lKeyStr], dict):
|
||||
__ComplexDictMerge2to1__(in1Dict[lKeyStr], in2Dict[lKeyStr])
|
||||
elif in1Dict[lKeyStr] == in2Dict[lKeyStr]:
|
||||
pass # same leaf value
|
||||
else:
|
||||
raise Exception('Conflict at %s' % '.'.join(lPathList + [str(lKeyStr)]))
|
||||
else:
|
||||
in1Dict[lKeyStr] = in2Dict[lKeyStr]
|
||||
return in1Dict
|
||||
|
||||
# Tool to merge complex dictionaries - no exceptions, just overwrite dict 2 in dict 1
|
||||
def __ComplexDictMerge2to1Overwrite__(in1Dict, in2Dict):
|
||||
"""
|
||||
Merge in2Dict in in1Dict. In conflict override and get value from dict 2
|
||||
|
||||
:param in1Dict: Source dict. Save the link (structure)
|
||||
:param in2Dict: New data dict
|
||||
:return: Merged dict 1
|
||||
"""
|
||||
lPathList=None
|
||||
if lPathList is None: lPathList = []
|
||||
for lKeyStr in in2Dict:
|
||||
if lKeyStr in in1Dict:
|
||||
if isinstance(in1Dict[lKeyStr], dict) and isinstance(in2Dict[lKeyStr], dict):
|
||||
__ComplexDictMerge2to1Overwrite__(in1Dict[lKeyStr], in2Dict[lKeyStr])
|
||||
else:
|
||||
in1Dict[lKeyStr] = in2Dict[lKeyStr]
|
||||
else:
|
||||
in1Dict[lKeyStr] = in2Dict[lKeyStr]
|
||||
return in1Dict
|
||||
|
||||
|
||||
def AuthenticateBlock(inRequest):
|
||||
raise HTTPException(status_code=401, detail="here is the details", headers={'Content-type':'text/html', 'WWW-Authenticate':'Basic'})
|
||||
|
||||
#Check access before execute the action
|
||||
#return bool True - go execute, False - dont execute
|
||||
def UserAccessCheckBefore(inMethod, inRequest):
|
||||
# Help def - Get access flag from dict
|
||||
#pdb.set_trace()
|
||||
def HelpGetFlag(inAccessRuleItem, inRequest, inGlobalDict, inAuthenticateDict):
|
||||
if "FlagAccess" in inAccessRuleItem:
|
||||
return inAccessRuleItem["FlagAccess"]
|
||||
elif "FlagAccessDefRequestGlobalAuthenticate" in inAccessRuleItem:
|
||||
return inAccessRuleItem["FlagAccessDefRequestGlobalAuthenticate"](inRequest, inGlobalDict,
|
||||
inAuthenticateDict)
|
||||
##########################################
|
||||
inMethod=inMethod.upper()
|
||||
#Prepare result false
|
||||
lResult = False
|
||||
lAuthToken = inRequest.OpenRPA["AuthToken"]
|
||||
#go next if user is identified
|
||||
lUserDict = None
|
||||
#print(f"lAuthToken: {lAuthToken}")
|
||||
if lAuthToken:
|
||||
lUserDict = __Orchestrator__.GSettingsGet()["ServerDict"]["AccessUsers"]["AuthTokensDict"][lAuthToken]
|
||||
#print(f"lUserDict: {lUserDict}")
|
||||
#pdb.set_trace()
|
||||
########################################
|
||||
########################################
|
||||
#Check general before rule (without User domain)
|
||||
#Check rules
|
||||
inRuleMatchURLList = __Orchestrator__.GSettingsGet().get("ServerDict", {}).get("AccessUsers", {}).get("RuleMethodMatchURLBeforeList", [])
|
||||
for lAccessRuleItem in inRuleMatchURLList:
|
||||
#Go next execution if flag is false
|
||||
if not lResult:
|
||||
#Check if Method is identical
|
||||
if lAccessRuleItem["Method"].upper() == inMethod:
|
||||
#check Match type variant: BeginWith
|
||||
if lAccessRuleItem["MatchType"].upper() == "BEGINWITH":
|
||||
lURLPath = inRequest.path
|
||||
lURLPath = lURLPath.upper()
|
||||
if lURLPath.startswith(lAccessRuleItem["URL"].upper()):
|
||||
lResult = HelpGetFlag(lAccessRuleItem, inRequest, __Orchestrator__.GSettingsGet(), lUserDict)
|
||||
# check Match type variant: Contains
|
||||
elif lAccessRuleItem["MatchType"].upper() == "CONTAINS":
|
||||
lURLPath = inRequest.path
|
||||
lURLPath = lURLPath.upper()
|
||||
if lURLPath.contains(lAccessRuleItem["URL"].upper()):
|
||||
lResult = HelpGetFlag(lAccessRuleItem, inRequest, __Orchestrator__.GSettingsGet(), lUserDict)
|
||||
# check Match type variant: Equal
|
||||
elif lAccessRuleItem["MatchType"].upper() == "EQUAL":
|
||||
if lAccessRuleItem["URL"].upper() == inRequest.path.upper():
|
||||
lResult = HelpGetFlag(lAccessRuleItem, inRequest, __Orchestrator__.GSettingsGet(), lUserDict)
|
||||
# check Match type variant: EqualCase
|
||||
elif lAccessRuleItem["MatchType"].upper() == "EQUALCASE":
|
||||
if lAccessRuleItem["URL"] == inRequest.path:
|
||||
lResult = HelpGetFlag(lAccessRuleItem, inRequest, __Orchestrator__.GSettingsGet(), lUserDict)
|
||||
#########################################
|
||||
#########################################
|
||||
#Do check if lResult is false
|
||||
if not lResult:
|
||||
#Check access by User Domain
|
||||
#Check rules to find first appicable
|
||||
#Check rules
|
||||
lMethodMatchURLList = __Orchestrator__.GSettingsGet().get("ServerDict", {}).get("AccessUsers", {}).get("RuleDomainUserDict", {}).get((lUserDict["Domain"].upper(), lUserDict["User"].upper()), {}).get("MethodMatchURLBeforeList", [])
|
||||
if len(lMethodMatchURLList) > 0:
|
||||
for lAccessRuleItem in lMethodMatchURLList:
|
||||
#Go next execution if flag is false
|
||||
if not lResult:
|
||||
#Check if Method is identical
|
||||
if lAccessRuleItem["Method"].upper() == inMethod:
|
||||
#check Match type variant: BeginWith
|
||||
if lAccessRuleItem["MatchType"].upper() == "BEGINWITH":
|
||||
lURLPath = inRequest.path
|
||||
lURLPath = lURLPath.upper()
|
||||
if lURLPath.startswith(lAccessRuleItem["URL"].upper()):
|
||||
lResult = HelpGetFlag(lAccessRuleItem, inRequest, __Orchestrator__.GSettingsGet(), lUserDict)
|
||||
#check Match type variant: Contains
|
||||
elif lAccessRuleItem["MatchType"].upper() == "CONTAINS":
|
||||
lURLPath = inRequest.path
|
||||
lURLPath = lURLPath.upper()
|
||||
if lURLPath.contains(lAccessRuleItem["URL"].upper()):
|
||||
lResult = HelpGetFlag(lAccessRuleItem, inRequest, __Orchestrator__.GSettingsGet(), lUserDict)
|
||||
# check Match type variant: Equal
|
||||
elif lAccessRuleItem["MatchType"].upper() == "EQUAL":
|
||||
if lAccessRuleItem["URL"].upper() == inRequest.path.upper():
|
||||
lResult = HelpGetFlag(lAccessRuleItem, inRequest, __Orchestrator__.GSettingsGet(), lUserDict)
|
||||
# check Match type variant: EqualCase
|
||||
elif lAccessRuleItem["MatchType"].upper() == "EQUALCASE":
|
||||
if lAccessRuleItem["URL"] == inRequest.path:
|
||||
lResult = HelpGetFlag(lAccessRuleItem, inRequest, __Orchestrator__.GSettingsGet(), lUserDict)
|
||||
else:
|
||||
return True
|
||||
#####################################
|
||||
#####################################
|
||||
#Return lResult
|
||||
return lResult
|
||||
|
||||
class HTTPRequestOld():
|
||||
mRequest:Request = None
|
||||
mResponse:Response = None
|
||||
OpenRPA: dict = {}
|
||||
headers={}
|
||||
|
||||
def __init__(self,inRequest,inResponse,inAuthTokenStr):
|
||||
self.mRequest = inRequest
|
||||
self.mResponse = inResponse
|
||||
if inAuthTokenStr != None:
|
||||
self.OpenRPA = {}
|
||||
self.OpenRPA["IsSuperToken"] = __Orchestrator__.WebUserIsSuperToken(inAuthTokenStr=inAuthTokenStr)
|
||||
self.OpenRPA["AuthToken"] = inAuthTokenStr
|
||||
self.OpenRPA["Domain"] = __Orchestrator__.WebUserDomainGet(inAuthTokenStr=inAuthTokenStr)
|
||||
self.OpenRPA["User"] = __Orchestrator__.WebUserLoginGet(inAuthTokenStr=inAuthTokenStr)
|
||||
else: self.OpenRPA = {"IsSuperToken":False, "AuthToken":None, "Domain":None, "User":None}
|
||||
self.headers=inRequest.headers
|
||||
|
||||
# Def to check User Role access grants
|
||||
def UACClientCheck(self, inRoleKeyList): # Alias
|
||||
return self.UserRoleAccessAsk(inRoleKeyList=inRoleKeyList)
|
||||
def UserRoleAccessAsk(self, inRoleKeyList):
|
||||
lResult = True # Init flag
|
||||
lRoleHierarchyDict = self.UserRoleHierarchyGet() # get the Hierarchy
|
||||
# Try to get value from key list
|
||||
lKeyValue = lRoleHierarchyDict # Init the base
|
||||
for lItem in inRoleKeyList:
|
||||
if type(lKeyValue) is dict:
|
||||
if lItem in lKeyValue: # Has key
|
||||
lKeyValue = lKeyValue[lItem] # Get the value and go to the next loop iteration
|
||||
else: # Else branch - true or false
|
||||
if len(lKeyValue)>0: # False - if Dict has some elements
|
||||
lResult = False # Set the False Flag
|
||||
else:
|
||||
lResult = True # Set the True flag
|
||||
break # Stop the loop
|
||||
else: # Has element with no detalization - return True
|
||||
lResult = True # Set the flag
|
||||
break # Close the loop
|
||||
return lResult # Return the result
|
||||
|
||||
# Def to get hierarchy of the current user roles
|
||||
# if return {} - all is available
|
||||
def UserRoleHierarchyGet(self):
|
||||
try:
|
||||
lDomainUpperStr = self.OpenRPA["Domain"].upper()
|
||||
lUserUpperStr = self.OpenRPA["User"].upper()
|
||||
return __Orchestrator__.GSettingsGet().get("ServerDict", {}).get("AccessUsers", {}).get("RuleDomainUserDict", {}).get((lDomainUpperStr, lUserUpperStr), {}).get("RoleHierarchyAllowedDict", {})
|
||||
except Exception as e:
|
||||
return {}
|
||||
#Tech def
|
||||
#return {"headers":[],"body":"","statuscode":111}
|
||||
def URLItemCheckDo(self, inURLItem, inMethod, inOnlyFlagUACBool = False):
|
||||
###############################
|
||||
#Tech sub def - do item
|
||||
################################
|
||||
def URLItemDo(inURLItem,inRequest,inGlobalDict):
|
||||
global gCacheDict
|
||||
inResponseDict = inRequest.OpenRPAResponseDict
|
||||
inResponseDict["Headers"]["Content-type"]= None
|
||||
#Set status code 200
|
||||
inResponseDict["StatusCode"] = 200
|
||||
#Content-type
|
||||
if "ResponseContentType" in inURLItem:
|
||||
inResponseDict["Headers"]["Content-type"] = inURLItem["ResponseContentType"]
|
||||
#If file path is set
|
||||
if "ResponseFilePath" in inURLItem:
|
||||
# Check cache
|
||||
if inURLItem.get("UseCacheBool",False) == True:
|
||||
if inURLItem["ResponseFilePath"] in gCacheDict:
|
||||
# Write content as utf-8 data
|
||||
inResponseDict["Body"] = gCacheDict[inURLItem["ResponseFilePath"]]
|
||||
else:
|
||||
if os.path.exists(inURLItem["ResponseFilePath"]) and os.path.isfile(inURLItem["ResponseFilePath"]):
|
||||
lFileObject = open(CrossOS.PathStr(inURLItem["ResponseFilePath"]), "rb")
|
||||
# Write content as utf-8 data
|
||||
gCacheDict[inURLItem["ResponseFilePath"]] = lFileObject.read()
|
||||
inResponseDict["Body"] = gCacheDict[inURLItem["ResponseFilePath"]]
|
||||
# Закрыть файловый объект
|
||||
lFileObject.close()
|
||||
else: inResponseDict["Headers"]["Content-type"]= "application/x-empty"; inResponseDict["StatusCode"] = 204 # NOCONTENT
|
||||
else:
|
||||
if os.path.exists(inURLItem["ResponseFilePath"]) and os.path.isfile(inURLItem["ResponseFilePath"]):
|
||||
lFileObject = open(CrossOS.PathStr(inURLItem["ResponseFilePath"]), "rb")
|
||||
# Write content as utf-8 data
|
||||
inResponseDict["Body"] = lFileObject.read()
|
||||
# Закрыть файловый объект
|
||||
lFileObject.close()
|
||||
else: inResponseDict["Headers"]["Content-type"]= "application/x-empty"; inResponseDict["StatusCode"] = 204 # NOCONTENT
|
||||
# detect MIME type if none
|
||||
if inResponseDict["Headers"]["Content-type"] is None:
|
||||
inResponseDict["Headers"]["Content-type"]= mimetypes.guess_type(inURLItem["ResponseFilePath"])[0]
|
||||
#If function is set
|
||||
if "ResponseDefRequestGlobal" in inURLItem:
|
||||
lDef = inURLItem["ResponseDefRequestGlobal"]
|
||||
lDefSignature = inspect.signature(lDef)
|
||||
if len(lDefSignature.parameters) == 2:
|
||||
inURLItem["ResponseDefRequestGlobal"](inRequest, inGlobalDict)
|
||||
elif len(lDefSignature.parameters) == 1:
|
||||
inURLItem["ResponseDefRequestGlobal"](inRequest)
|
||||
else:
|
||||
inURLItem["ResponseDefRequestGlobal"]()
|
||||
if "ResponseFolderPath" in inURLItem:
|
||||
#lRequestPath = inRequest.path
|
||||
lRequestPath = urllib.parse.unquote(inRequest.path)
|
||||
if inURLItem["URL"][-1]!="/": inURLItem["URL"]+= "/" # Fix for settings
|
||||
lFilePathSecondPart = lRequestPath.replace(inURLItem["URL"],"")
|
||||
lFilePathSecondPart = lFilePathSecondPart.split("?")[0]
|
||||
lFilePath = CrossOS.PathStr(os.path.join(inURLItem["ResponseFolderPath"],lFilePathSecondPart))
|
||||
#print(f"File full path {lFilePath}")
|
||||
#Check if file exist
|
||||
if os.path.exists(lFilePath) and os.path.isfile(lFilePath):
|
||||
# Check cache
|
||||
if inURLItem.get("UseCacheBool",False) == True:
|
||||
if lFilePath in gCacheDict:
|
||||
# Write content as utf-8 data
|
||||
inResponseDict["Body"] = gCacheDict[lFilePath]
|
||||
else:
|
||||
lFileObject = open(lFilePath, "rb")
|
||||
# Write content as utf-8 data
|
||||
gCacheDict[lFilePath] = lFileObject.read()
|
||||
inResponseDict["Body"] = gCacheDict[lFilePath]
|
||||
# Закрыть файловый объект
|
||||
lFileObject.close()
|
||||
else:
|
||||
lFileObject = open(lFilePath, "rb")
|
||||
# Write content as utf-8 data
|
||||
inResponseDict["Body"] = lFileObject.read()
|
||||
# Закрыть файловый объект
|
||||
lFileObject.close()
|
||||
# detect MIME type if none
|
||||
if inResponseDict["Headers"]["Content-type"] is None:
|
||||
inResponseDict["Headers"]["Content-type"]= mimetypes.guess_type(lFilePath)[0]
|
||||
else:
|
||||
inResponseDict["Headers"]["Content-type"]= "application/x-empty"; inResponseDict["StatusCode"] = 204 # NOCONTENT
|
||||
# If No content-type
|
||||
if inResponseDict["Headers"]["Content-type"] is None:
|
||||
inResponseDict["Headers"]["Content-type"]= "application/octet-stream"
|
||||
##############################################
|
||||
# UAC Check
|
||||
if inOnlyFlagUACBool == True and inURLItem.get("UACBool",None) in [None, True]:
|
||||
return False
|
||||
if inURLItem["Method"].upper() == inMethod.upper():
|
||||
# check Match type variant: BeginWith
|
||||
if inURLItem["MatchType"].upper() == "BEGINWITH":
|
||||
lURLPath = urllib.parse.unquote(self.path)
|
||||
lURLPath = lURLPath.upper()
|
||||
if lURLPath.startswith(inURLItem["URL"].upper()):
|
||||
URLItemDo(inURLItem, self, __Orchestrator__.GSettingsGet())
|
||||
return True
|
||||
# check Match type variant: Contains
|
||||
elif inURLItem["MatchType"].upper() == "CONTAINS":
|
||||
lURLPath = urllib.parse.unquote(self.path)
|
||||
lURLPath = lURLPath.upper()
|
||||
if lURLPath.contains(inURLItem["URL"].upper()):
|
||||
URLItemDo(inURLItem, self, __Orchestrator__.GSettingsGet())
|
||||
return True
|
||||
# check Match type variant: Equal
|
||||
elif inURLItem["MatchType"].upper() == "EQUAL":
|
||||
if inURLItem["URL"].upper() == urllib.parse.unquote(self.path).upper():
|
||||
URLItemDo(inURLItem, self, __Orchestrator__.GSettingsGet())
|
||||
return True
|
||||
# check Match type variant: EqualNoParam
|
||||
elif inURLItem["MatchType"].upper() == "EQUALNOPARAM":
|
||||
if inURLItem["URL"].upper() == urllib.parse.unquote(self.path).upper().split("?")[0]:
|
||||
URLItemDo(inURLItem, self, __Orchestrator__.GSettingsGet())
|
||||
return True
|
||||
# check Match type variant: EqualCase
|
||||
elif inURLItem["MatchType"].upper() == "EQUALCASE":
|
||||
if inURLItem["URL"] == urllib.parse.unquote(self.path):
|
||||
URLItemDo(inURLItem, self, __Orchestrator__.GSettingsGet())
|
||||
return True
|
||||
return False
|
||||
#ResponseContentTypeFile
|
||||
def SendResponseContentTypeFile(self, inContentType, inFilePath):
|
||||
inResponseDict = self.OpenRPAResponseDict
|
||||
self.mResponse.status_code = 200
|
||||
# Send headers
|
||||
self.mResponse.headers["Content-type"]=inContentType
|
||||
#Check if var exist
|
||||
if hasattr(self, "OpenRPASetCookie"):
|
||||
self.mResponse.set_cookie(key='AuthToken',value=self.OpenRPA['AuthToken'])
|
||||
lFileObject = open(inFilePath, "rb")
|
||||
# Write content as utf-8 data
|
||||
lFileBytes = lFileObject.read()
|
||||
#Закрыть файловый объект
|
||||
lFileObject.close()
|
||||
return lFileBytes
|
||||
# ResponseContentTypeFile
|
||||
def ResponseDictSend(self):
|
||||
inResponseDict = self.OpenRPAResponseDict
|
||||
self.mResponse.status_code = inResponseDict["StatusCode"]
|
||||
# Send headers
|
||||
for lItemKey, lItemValue in inResponseDict["Headers"].items():
|
||||
self.mResponse.headers[lItemKey]=lItemValue
|
||||
# Send headers: Set-Cookie
|
||||
for lItemKey, lItemValue in inResponseDict["SetCookies"].items():
|
||||
self.mResponse.set_cookie(key=lItemKey,value=lItemValue)
|
||||
self.send_header("Set-Cookie", f"{lItemKey}={lItemValue}")
|
||||
return inResponseDict["Body"]
|
||||
|
||||
def do_GET(self, inBodyStr):
|
||||
try:
|
||||
try:
|
||||
self.OpenRPA["DefUserRoleAccessAsk"]=self.UserRoleAccessAsk # Alias for def
|
||||
self.OpenRPA["DefUserRoleHierarchyGet"]=self.UserRoleHierarchyGet # Alias for def
|
||||
except Exception as e:
|
||||
pass
|
||||
# Prepare result dict
|
||||
lResponseDict = {"Headers": {}, "SetCookies": {}, "Body": b"", "StatusCode": None, "BodyIsText":True}
|
||||
self.OpenRPAResponseDict = lResponseDict
|
||||
#Check the user access (if flag, UAC)
|
||||
####################################
|
||||
lFlagUserAccess = True
|
||||
#If need user authentication
|
||||
if __Orchestrator__.GSettingsGet().get("ServerDict", {}).get("AccessUsers", {}).get("FlagCredentialsAsk", False):
|
||||
if self.OpenRPA["AuthToken"] != None:
|
||||
lFlagUserAccess = UserAccessCheckBefore("GET", self)
|
||||
######################################
|
||||
if lFlagUserAccess:
|
||||
if CrossOS.IS_WINDOWS_BOOL: lOrchestratorFolder = "\\".join(__file__.split("\\")[:-1])
|
||||
if CrossOS.IS_LINUX_BOOL: lOrchestratorFolder = "/".join(__file__.split("/")[:-1])
|
||||
############################
|
||||
#New server engine (url from global dict (URLList))
|
||||
############################
|
||||
for lURLItem in __Orchestrator__.GSettingsGet()["ServerDict"]["URLList"]:
|
||||
#Check if all condition are applied
|
||||
lFlagURLIsApplied=False
|
||||
lFlagURLIsApplied=self.URLItemCheckDo(lURLItem, "GET")
|
||||
if lFlagURLIsApplied:
|
||||
return self.ResponseDictSend()
|
||||
else:
|
||||
raise HTTPException(status_code=403, detail="here is the details", headers={})
|
||||
except Exception as e:
|
||||
lL = __Orchestrator__.OrchestratorLoggerGet()
|
||||
if lL: lL.exception(f"Сервер (do_GET): Неопознанная ошибка сети - см. текст ошибки. Сервер продолжает работу")
|
||||
# POST
|
||||
def do_POST(self, inBodyStr):
|
||||
try:
|
||||
lL = __Orchestrator__.OrchestratorLoggerGet()
|
||||
try:
|
||||
self.OpenRPA["DefUserRoleAccessAsk"]=self.UserRoleAccessAsk # Alias for def
|
||||
self.OpenRPA["DefUserRoleHierarchyGet"]=self.UserRoleHierarchyGet # Alias for def
|
||||
except Exception as e:
|
||||
pass
|
||||
# Prepare result dict
|
||||
#pdb.set_trace()
|
||||
lResponseDict = {"Headers": {}, "SetCookies": {}, "Body": b"", "StatusCode": None, "BodyIsText":True}
|
||||
self.OpenRPAResponseDict = lResponseDict
|
||||
#Check the user access (if flag)
|
||||
####################################
|
||||
lFlagUserAccess = True
|
||||
#If need user authentication
|
||||
if __Orchestrator__.GSettingsGet().get("ServerDict", {}).get("AccessUsers", {}).get("FlagCredentialsAsk", False):
|
||||
if self.OpenRPA["AuthToken"] != None:
|
||||
lFlagUserAccess = UserAccessCheckBefore("POST", self)
|
||||
######################################
|
||||
if lFlagUserAccess:
|
||||
lOrchestratorFolder = "\\".join(__file__.split("\\")[:-1])
|
||||
############################
|
||||
#New server engine (url from global dict (URLList))
|
||||
############################
|
||||
for lURLItem in __Orchestrator__.GSettingsGet()["ServerDict"]["URLList"]:
|
||||
#Check if all condition are applied
|
||||
lFlagURLIsApplied=False
|
||||
lFlagURLIsApplied=self.URLItemCheckDo(lURLItem, "POST")
|
||||
if lFlagURLIsApplied:
|
||||
return self.ResponseDictSend()
|
||||
else:
|
||||
raise HTTPException(status_code=403, detail="here is the details", headers={})
|
||||
except Exception as e:
|
||||
lL = __Orchestrator__.OrchestratorLoggerGet()
|
||||
if lL: lL.exception(f"Сервер, обратная совместимость (do_POST): Неопознанная ошибка сети - см. текст ошибки. Сервер продолжает работу")
|
||||
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 110 KiB |
@ -1,101 +0,0 @@
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/reset.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/site.css">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/container.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/grid.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/header.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/image.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/menu.css">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/divider.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/dropdown.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/segment.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/button.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/list.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/icon.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/sidebar.css">
|
||||
<link rel="stylesheet" type="text/css" href="/orpa/resources/Web/Semantic-UI-CSS-master/components/transition.css">
|
||||
|
||||
|
||||
<div class="pusher tag-top">
|
||||
|
||||
<div class="ui inverted vertical masthead center aligned segment zoomed" style="background-color:#000000; ">
|
||||
|
||||
|
||||
|
||||
<style type="text/css">
|
||||
|
||||
body {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
.main.container {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
.main.menu {
|
||||
margin-top: 4em;
|
||||
border-radius: 0;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
transition:
|
||||
box-shadow 0.5s ease,
|
||||
padding 0.5s ease
|
||||
;
|
||||
}
|
||||
.main.menu .item img.logo {
|
||||
margin-right: 1.5em;
|
||||
}
|
||||
|
||||
.overlay {
|
||||
float: left;
|
||||
margin: 0em 3em 1em 0em;
|
||||
}
|
||||
.overlay .menu {
|
||||
position: relative;
|
||||
left: 0;
|
||||
transition: left 0.5s ease;
|
||||
}
|
||||
|
||||
.main.menu.fixed {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #DDD;
|
||||
box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.overlay.fixed .menu {
|
||||
left: 800px;
|
||||
}
|
||||
|
||||
.text.container .left.floated.image {
|
||||
margin: 2em 2em 2em -4em;
|
||||
}
|
||||
.text.container .right.floated.image {
|
||||
margin: 2em -4em 2em 2em;
|
||||
}
|
||||
|
||||
.ui.footer.segment {
|
||||
margin: 5em 0em 0em;
|
||||
padding: 5em 0em;
|
||||
}
|
||||
</style>
|
||||
<div class="ui text container tag-top">
|
||||
<div class="ui middle aligned stackable grid container">
|
||||
<div class="row">
|
||||
<div class="four wide column">
|
||||
<img src="/orpa/resources/Web/orpa/logo.png" width="140px;" height="140px"></img>
|
||||
</div>
|
||||
<div class="twelve wide column">
|
||||
<h1 class="ui inverted header" style="margin-top:0px; margin-bottom:0px;">
|
||||
<span class="library" style="text-transform: uppercase; letter-spacing: 5px; margin-top:0px; margin-bottom:5px; font-weight: bold;">{{title}}</span>
|
||||
<div class="floating ui teal label">{{version}}</div>
|
||||
</h1>
|
||||
<h2 style="text-transform: uppercase; letter-spacing: 5px; margin-top:0px; margin-bottom:5px;">
|
||||
{{subtitle}}
|
||||
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 245 KiB |
Before Width: | Height: | Size: 251 KiB |
Before Width: | Height: | Size: 244 KiB |
Before Width: | Height: | Size: 239 KiB |
Before Width: | Height: | Size: 252 KiB |
Before Width: | Height: | Size: 255 KiB |
Before Width: | Height: | Size: 255 KiB |
Before Width: | Height: | Size: 255 KiB |
Before Width: | Height: | Size: 255 KiB |
Before Width: | Height: | Size: 255 KiB |
@ -1,737 +0,0 @@
|
||||
/*
|
||||
* # Semantic UI - 2.4.2
|
||||
* https://github.com/Semantic-Org/Semantic-UI
|
||||
* http://www.semantic-ui.com/
|
||||
*
|
||||
* Copyright 2014 Contributors
|
||||
* Released under the MIT license
|
||||
* http://opensource.org/licenses/MIT
|
||||
*
|
||||
*/
|
||||
/*!
|
||||
* # Semantic UI - Header
|
||||
* http://github.com/semantic-org/semantic-ui/
|
||||
*
|
||||
*
|
||||
* Released under the MIT license
|
||||
* http://opensource.org/licenses/MIT
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*******************************
|
||||
Header
|
||||
*******************************/
|
||||
|
||||
|
||||
/* Standard */
|
||||
.ui.header {
|
||||
border: none;
|
||||
margin: calc(2rem - 0.14285714em ) 0em 1rem;
|
||||
padding: 0em 0em;
|
||||
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
line-height: 1.28571429em;
|
||||
text-transform: none;
|
||||
color: rgba(0, 0, 0, 0.87);
|
||||
}
|
||||
.ui.header:first-child {
|
||||
margin-top: -0.14285714em;
|
||||
}
|
||||
.ui.header:last-child {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Sub Header
|
||||
---------------*/
|
||||
|
||||
.ui.header .sub.header {
|
||||
display: block;
|
||||
font-weight: normal;
|
||||
padding: 0em;
|
||||
margin: 0em;
|
||||
font-size: 1rem;
|
||||
line-height: 1.2em;
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Icon
|
||||
---------------*/
|
||||
|
||||
.ui.header > .icon {
|
||||
display: table-cell;
|
||||
opacity: 1;
|
||||
font-size: 1.5em;
|
||||
padding-top: 0em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* With Text Node */
|
||||
.ui.header .icon:only-child {
|
||||
display: inline-block;
|
||||
padding: 0em;
|
||||
margin-right: 0.75rem;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Image
|
||||
--------------------*/
|
||||
|
||||
.ui.header > .image:not(.icon),
|
||||
.ui.header > img {
|
||||
display: inline-block;
|
||||
margin-top: 0.14285714em;
|
||||
width: 2.5em;
|
||||
height: auto;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.ui.header > .image:not(.icon):only-child,
|
||||
.ui.header > img:only-child {
|
||||
margin-right: 0.75rem;
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Content
|
||||
---------------*/
|
||||
|
||||
.ui.header .content {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* After Image */
|
||||
.ui.header > img + .content,
|
||||
.ui.header > .image + .content {
|
||||
padding-left: 0.75rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* After Icon */
|
||||
.ui.header > .icon + .content {
|
||||
padding-left: 0.75rem;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Loose Coupling
|
||||
---------------*/
|
||||
|
||||
.ui.header .ui.label {
|
||||
font-size: '';
|
||||
margin-left: 0.5rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* Positioning */
|
||||
.ui.header + p {
|
||||
margin-top: 0em;
|
||||
}
|
||||
|
||||
|
||||
/*******************************
|
||||
Types
|
||||
*******************************/
|
||||
|
||||
|
||||
/*--------------
|
||||
Page
|
||||
---------------*/
|
||||
|
||||
h1.ui.header {
|
||||
font-size: 2rem;
|
||||
}
|
||||
h2.ui.header {
|
||||
font-size: 1.71428571rem;
|
||||
}
|
||||
h3.ui.header {
|
||||
font-size: 1.28571429rem;
|
||||
}
|
||||
h4.ui.header {
|
||||
font-size: 1.07142857rem;
|
||||
}
|
||||
h5.ui.header {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
/* Sub Header */
|
||||
h1.ui.header .sub.header {
|
||||
font-size: 1.14285714rem;
|
||||
}
|
||||
h2.ui.header .sub.header {
|
||||
font-size: 1.14285714rem;
|
||||
}
|
||||
h3.ui.header .sub.header {
|
||||
font-size: 1rem;
|
||||
}
|
||||
h4.ui.header .sub.header {
|
||||
font-size: 1rem;
|
||||
}
|
||||
h5.ui.header .sub.header {
|
||||
font-size: 0.92857143rem;
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Content Heading
|
||||
---------------*/
|
||||
|
||||
.ui.huge.header {
|
||||
min-height: 1em;
|
||||
font-size: 2em;
|
||||
}
|
||||
.ui.large.header {
|
||||
font-size: 1.71428571em;
|
||||
}
|
||||
.ui.medium.header {
|
||||
font-size: 1.28571429em;
|
||||
}
|
||||
.ui.small.header {
|
||||
font-size: 1.07142857em;
|
||||
}
|
||||
.ui.tiny.header {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* Sub Header */
|
||||
.ui.huge.header .sub.header {
|
||||
font-size: 1.14285714rem;
|
||||
}
|
||||
.ui.large.header .sub.header {
|
||||
font-size: 1.14285714rem;
|
||||
}
|
||||
.ui.header .sub.header {
|
||||
font-size: 1rem;
|
||||
}
|
||||
.ui.small.header .sub.header {
|
||||
font-size: 1rem;
|
||||
}
|
||||
.ui.tiny.header .sub.header {
|
||||
font-size: 0.92857143rem;
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Sub Heading
|
||||
---------------*/
|
||||
|
||||
.ui.sub.header {
|
||||
padding: 0em;
|
||||
margin-bottom: 0.14285714rem;
|
||||
font-weight: bold;
|
||||
font-size: 0.85714286em;
|
||||
text-transform: uppercase;
|
||||
color: '';
|
||||
}
|
||||
.ui.small.sub.header {
|
||||
font-size: 0.78571429em;
|
||||
}
|
||||
.ui.sub.header {
|
||||
font-size: 0.85714286em;
|
||||
}
|
||||
.ui.large.sub.header {
|
||||
font-size: 0.92857143em;
|
||||
}
|
||||
.ui.huge.sub.header {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Icon
|
||||
--------------------*/
|
||||
|
||||
.ui.icon.header {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
margin: 2rem 0em 1rem;
|
||||
}
|
||||
.ui.icon.header:after {
|
||||
content: '';
|
||||
display: block;
|
||||
height: 0px;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
}
|
||||
.ui.icon.header:first-child {
|
||||
margin-top: 0em;
|
||||
}
|
||||
.ui.icon.header .icon {
|
||||
float: none;
|
||||
display: block;
|
||||
width: auto;
|
||||
height: auto;
|
||||
line-height: 1;
|
||||
padding: 0em;
|
||||
font-size: 3em;
|
||||
margin: 0em auto 0.5rem;
|
||||
opacity: 1;
|
||||
}
|
||||
.ui.icon.header .content {
|
||||
display: block;
|
||||
padding: 0em;
|
||||
}
|
||||
.ui.icon.header .circular.icon {
|
||||
font-size: 2em;
|
||||
}
|
||||
.ui.icon.header .square.icon {
|
||||
font-size: 2em;
|
||||
}
|
||||
.ui.block.icon.header .icon {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
.ui.icon.header.aligned {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
/*******************************
|
||||
States
|
||||
*******************************/
|
||||
|
||||
.ui.disabled.header {
|
||||
opacity: 0.45;
|
||||
}
|
||||
|
||||
|
||||
/*******************************
|
||||
Variations
|
||||
*******************************/
|
||||
|
||||
|
||||
/*-------------------
|
||||
Inverted
|
||||
--------------------*/
|
||||
|
||||
.ui.inverted.header {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.ui.inverted.header .sub.header {
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
.ui.inverted.attached.header {
|
||||
background: #545454 -webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0, 0, 0, 0.05)));
|
||||
background: #545454 -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05));
|
||||
background: #545454 linear-gradient(transparent, rgba(0, 0, 0, 0.05));
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
border-color: transparent;
|
||||
}
|
||||
.ui.inverted.block.header {
|
||||
background: #545454 -webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0, 0, 0, 0.05)));
|
||||
background: #545454 -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05));
|
||||
background: #545454 linear-gradient(transparent, rgba(0, 0, 0, 0.05));
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.ui.inverted.block.header {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Colors
|
||||
--------------------*/
|
||||
|
||||
|
||||
/*--- Red ---*/
|
||||
|
||||
.ui.red.header {
|
||||
color: #DB2828 !important;
|
||||
}
|
||||
a.ui.red.header:hover {
|
||||
color: #d01919 !important;
|
||||
}
|
||||
.ui.red.dividing.header {
|
||||
border-bottom: 2px solid #DB2828;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.red.header {
|
||||
color: #FF695E !important;
|
||||
}
|
||||
a.ui.inverted.red.header:hover {
|
||||
color: #ff5144 !important;
|
||||
}
|
||||
|
||||
/*--- Orange ---*/
|
||||
|
||||
.ui.orange.header {
|
||||
color: #F2711C !important;
|
||||
}
|
||||
a.ui.orange.header:hover {
|
||||
color: #f26202 !important;
|
||||
}
|
||||
.ui.orange.dividing.header {
|
||||
border-bottom: 2px solid #F2711C;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.orange.header {
|
||||
color: #FF851B !important;
|
||||
}
|
||||
a.ui.inverted.orange.header:hover {
|
||||
color: #ff7701 !important;
|
||||
}
|
||||
|
||||
/*--- Olive ---*/
|
||||
|
||||
.ui.olive.header {
|
||||
color: #B5CC18 !important;
|
||||
}
|
||||
a.ui.olive.header:hover {
|
||||
color: #a7bd0d !important;
|
||||
}
|
||||
.ui.olive.dividing.header {
|
||||
border-bottom: 2px solid #B5CC18;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.olive.header {
|
||||
color: #D9E778 !important;
|
||||
}
|
||||
a.ui.inverted.olive.header:hover {
|
||||
color: #d8ea5c !important;
|
||||
}
|
||||
|
||||
/*--- Yellow ---*/
|
||||
|
||||
.ui.yellow.header {
|
||||
color: #FBBD08 !important;
|
||||
}
|
||||
a.ui.yellow.header:hover {
|
||||
color: #eaae00 !important;
|
||||
}
|
||||
.ui.yellow.dividing.header {
|
||||
border-bottom: 2px solid #FBBD08;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.yellow.header {
|
||||
color: #FFE21F !important;
|
||||
}
|
||||
a.ui.inverted.yellow.header:hover {
|
||||
color: #ffdf05 !important;
|
||||
}
|
||||
|
||||
/*--- Green ---*/
|
||||
|
||||
.ui.green.header {
|
||||
color: #21BA45 !important;
|
||||
}
|
||||
a.ui.green.header:hover {
|
||||
color: #16ab39 !important;
|
||||
}
|
||||
.ui.green.dividing.header {
|
||||
border-bottom: 2px solid #21BA45;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.green.header {
|
||||
color: #2ECC40 !important;
|
||||
}
|
||||
a.ui.inverted.green.header:hover {
|
||||
color: #22be34 !important;
|
||||
}
|
||||
|
||||
/*--- Teal ---*/
|
||||
|
||||
.ui.teal.header {
|
||||
color: #00B5AD !important;
|
||||
}
|
||||
a.ui.teal.header:hover {
|
||||
color: #009c95 !important;
|
||||
}
|
||||
.ui.teal.dividing.header {
|
||||
border-bottom: 2px solid #00B5AD;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.teal.header {
|
||||
color: #6DFFFF !important;
|
||||
}
|
||||
a.ui.inverted.teal.header:hover {
|
||||
color: #54ffff !important;
|
||||
}
|
||||
|
||||
/*--- Blue ---*/
|
||||
|
||||
.ui.blue.header {
|
||||
color: #2185D0 !important;
|
||||
}
|
||||
a.ui.blue.header:hover {
|
||||
color: #1678c2 !important;
|
||||
}
|
||||
.ui.blue.dividing.header {
|
||||
border-bottom: 2px solid #2185D0;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.blue.header {
|
||||
color: #54C8FF !important;
|
||||
}
|
||||
a.ui.inverted.blue.header:hover {
|
||||
color: #3ac0ff !important;
|
||||
}
|
||||
|
||||
/*--- Violet ---*/
|
||||
|
||||
.ui.violet.header {
|
||||
color: #6435C9 !important;
|
||||
}
|
||||
a.ui.violet.header:hover {
|
||||
color: #5829bb !important;
|
||||
}
|
||||
.ui.violet.dividing.header {
|
||||
border-bottom: 2px solid #6435C9;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.violet.header {
|
||||
color: #A291FB !important;
|
||||
}
|
||||
a.ui.inverted.violet.header:hover {
|
||||
color: #8a73ff !important;
|
||||
}
|
||||
|
||||
/*--- Purple ---*/
|
||||
|
||||
.ui.purple.header {
|
||||
color: #A333C8 !important;
|
||||
}
|
||||
a.ui.purple.header:hover {
|
||||
color: #9627ba !important;
|
||||
}
|
||||
.ui.purple.dividing.header {
|
||||
border-bottom: 2px solid #A333C8;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.purple.header {
|
||||
color: #DC73FF !important;
|
||||
}
|
||||
a.ui.inverted.purple.header:hover {
|
||||
color: #d65aff !important;
|
||||
}
|
||||
|
||||
/*--- Pink ---*/
|
||||
|
||||
.ui.pink.header {
|
||||
color: #E03997 !important;
|
||||
}
|
||||
a.ui.pink.header:hover {
|
||||
color: #e61a8d !important;
|
||||
}
|
||||
.ui.pink.dividing.header {
|
||||
border-bottom: 2px solid #E03997;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.pink.header {
|
||||
color: #FF8EDF !important;
|
||||
}
|
||||
a.ui.inverted.pink.header:hover {
|
||||
color: #ff74d8 !important;
|
||||
}
|
||||
|
||||
/*--- Brown ---*/
|
||||
|
||||
.ui.brown.header {
|
||||
color: #A5673F !important;
|
||||
}
|
||||
a.ui.brown.header:hover {
|
||||
color: #975b33 !important;
|
||||
}
|
||||
.ui.brown.dividing.header {
|
||||
border-bottom: 2px solid #A5673F;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.brown.header {
|
||||
color: #D67C1C !important;
|
||||
}
|
||||
a.ui.inverted.brown.header:hover {
|
||||
color: #c86f11 !important;
|
||||
}
|
||||
|
||||
/*--- Grey ---*/
|
||||
|
||||
.ui.grey.header {
|
||||
color: #767676 !important;
|
||||
}
|
||||
a.ui.grey.header:hover {
|
||||
color: #838383 !important;
|
||||
}
|
||||
.ui.grey.dividing.header {
|
||||
border-bottom: 2px solid #767676;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.inverted.grey.header {
|
||||
color: #DCDDDE !important;
|
||||
}
|
||||
a.ui.inverted.grey.header:hover {
|
||||
color: #cfd0d2 !important;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Aligned
|
||||
--------------------*/
|
||||
|
||||
.ui.left.aligned.header {
|
||||
text-align: left;
|
||||
}
|
||||
.ui.right.aligned.header {
|
||||
text-align: right;
|
||||
}
|
||||
.ui.centered.header,
|
||||
.ui.center.aligned.header {
|
||||
text-align: center;
|
||||
}
|
||||
.ui.justified.header {
|
||||
text-align: justify;
|
||||
}
|
||||
.ui.justified.header:after {
|
||||
display: inline-block;
|
||||
content: '';
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Floated
|
||||
--------------------*/
|
||||
|
||||
.ui.floated.header,
|
||||
.ui[class*="left floated"].header {
|
||||
float: left;
|
||||
margin-top: 0em;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
.ui[class*="right floated"].header {
|
||||
float: right;
|
||||
margin-top: 0em;
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Fitted
|
||||
--------------------*/
|
||||
|
||||
.ui.fitted.header {
|
||||
padding: 0em;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Dividing
|
||||
--------------------*/
|
||||
|
||||
.ui.dividing.header {
|
||||
padding-bottom: 0.21428571rem;
|
||||
border-bottom: 1px solid rgba(34, 36, 38, 0.15);
|
||||
}
|
||||
.ui.dividing.header .sub.header {
|
||||
padding-bottom: 0.21428571rem;
|
||||
}
|
||||
.ui.dividing.header .icon {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
.ui.inverted.dividing.header {
|
||||
border-bottom-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Block
|
||||
--------------------*/
|
||||
|
||||
.ui.block.header {
|
||||
background: #F3F4F5;
|
||||
padding: 0.78571429rem 1rem;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
border: 1px solid #D4D4D5;
|
||||
border-radius: 0.28571429rem;
|
||||
}
|
||||
.ui.tiny.block.header {
|
||||
font-size: 0.85714286rem;
|
||||
}
|
||||
.ui.small.block.header {
|
||||
font-size: 0.92857143rem;
|
||||
}
|
||||
.ui.block.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) {
|
||||
font-size: 1rem;
|
||||
}
|
||||
.ui.large.block.header {
|
||||
font-size: 1.14285714rem;
|
||||
}
|
||||
.ui.huge.block.header {
|
||||
font-size: 1.42857143rem;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Attached
|
||||
--------------------*/
|
||||
|
||||
.ui.attached.header {
|
||||
background: #FFFFFF;
|
||||
padding: 0.78571429rem 1rem;
|
||||
margin-left: -1px;
|
||||
margin-right: -1px;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
border: 1px solid #D4D4D5;
|
||||
}
|
||||
.ui.attached.block.header {
|
||||
background: #F3F4F5;
|
||||
}
|
||||
.ui.attached:not(.top):not(.bottom).header {
|
||||
margin-top: 0em;
|
||||
margin-bottom: 0em;
|
||||
border-top: none;
|
||||
border-radius: 0em;
|
||||
}
|
||||
.ui.top.attached.header {
|
||||
margin-bottom: 0em;
|
||||
border-radius: 0.28571429rem 0.28571429rem 0em 0em;
|
||||
}
|
||||
.ui.bottom.attached.header {
|
||||
margin-top: 0em;
|
||||
border-top: none;
|
||||
border-radius: 0em 0em 0.28571429rem 0.28571429rem;
|
||||
}
|
||||
|
||||
/* Attached Sizes */
|
||||
.ui.tiny.attached.header {
|
||||
font-size: 0.85714286em;
|
||||
}
|
||||
.ui.small.attached.header {
|
||||
font-size: 0.92857143em;
|
||||
}
|
||||
.ui.attached.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) {
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui.large.attached.header {
|
||||
font-size: 1.14285714em;
|
||||
}
|
||||
.ui.huge.attached.header {
|
||||
font-size: 1.42857143em;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Sizing
|
||||
--------------------*/
|
||||
|
||||
.ui.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) {
|
||||
font-size: 1.28571429em;
|
||||
}
|
||||
|
||||
|
||||
/*******************************
|
||||
Theme Overrides
|
||||
*******************************/
|
||||
|
||||
|
||||
|
||||
/*******************************
|
||||
Site Overrides
|
||||
*******************************/
|
||||
|
@ -1,759 +0,0 @@
|
||||
/*******************************
|
||||
Homepage
|
||||
*******************************/
|
||||
|
||||
body.index .pusher > .page {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 992px) {
|
||||
html {
|
||||
overflow-x: visible;
|
||||
-webkit-overflow-scrolling: auto;
|
||||
}
|
||||
}
|
||||
body > .pusher {
|
||||
display: block;
|
||||
min-height: 0px;
|
||||
flex-direction: initial;
|
||||
}
|
||||
body > .pusher > .full.height {
|
||||
display: block;
|
||||
flex: none !important;
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Masthead
|
||||
---------------*/
|
||||
|
||||
body .masthead.segment.zoomed h1 {
|
||||
text-shadow: 0px 0px 4px rgba(0, 0, 0, 0);
|
||||
color: rgba(255, 255, 255, 1);
|
||||
}
|
||||
body .masthead.zoomed:after {
|
||||
opacity: 0;
|
||||
}
|
||||
body .masthead.zoomed {
|
||||
background-color: #25282A;
|
||||
}
|
||||
|
||||
body .masthead {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
padding: 0em;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
margin-bottom: 0px;
|
||||
border-bottom: none;
|
||||
|
||||
background-color: #000000;
|
||||
background-position: 50% 50%;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
body .masthead:after {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
z-index: -1;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
content: '';
|
||||
background-size: cover;
|
||||
|
||||
opacity: 0.45;
|
||||
}
|
||||
body .masthead.bg1:after {
|
||||
background-image: url("./bg1.jpg");
|
||||
}
|
||||
body .masthead.bg2:after {
|
||||
background-image: url("./bg2.jpg");
|
||||
}
|
||||
body .masthead.bg3:after {
|
||||
background-image: url("./bg3.jpg");
|
||||
}
|
||||
body .masthead.bg4:after {
|
||||
background-image: url("./bg4.jpg");
|
||||
}
|
||||
body .masthead.bg5:after {
|
||||
background-image: url("./bg5.jpg");
|
||||
}
|
||||
body .masthead.bg6:after {
|
||||
background-image: url("./bg6.jpg");
|
||||
}
|
||||
body .masthead.bg7:after {
|
||||
background-image: url("./bg7.jpg");
|
||||
}
|
||||
body .masthead.bg8:after {
|
||||
background-image: url("./bg8.jpg");
|
||||
}
|
||||
body .masthead.bg9:after {
|
||||
background-image: url("./bg9.jpg");
|
||||
}
|
||||
body .masthead.bg10:after {
|
||||
background-image: url("./bg10.jpg");
|
||||
}
|
||||
body .masthead.bg11:after {
|
||||
background-image: url("./bg1.jpg");
|
||||
}
|
||||
body .masthead.bg12:after {
|
||||
background-image: url("./bg2.jpg");
|
||||
}
|
||||
body .masthead.bg13:after {
|
||||
background-image: url("./bg3.jpg");
|
||||
}
|
||||
body .masthead.bg14:after {
|
||||
background-image: url("./bg4.jpg");
|
||||
}
|
||||
|
||||
|
||||
body .masthead,
|
||||
body .masthead:after {
|
||||
-ms-transition:
|
||||
background 6s cubic-bezier(0.680, -0.550, 0.265, 1.4) 0s,
|
||||
opacity 6s cubic-bezier(0.680, -0.550, 0.265, 1.4) 0s;
|
||||
-moz-transition:
|
||||
background 6s cubic-bezier(0.680, -0.550, 0.265, 1.4) 0s,
|
||||
opacity 6s cubic-bezier(0.680, -0.550, 0.265, 1.4) 0s;
|
||||
-webkit-transition:
|
||||
background 6s cubic-bezier(0.680, -0.550, 0.265, 1.4) 0s,
|
||||
opacity 6s cubic-bezier(0.680, -0.550, 0.265, 1.4) 0s;
|
||||
transition:
|
||||
background 6s cubic-bezier(0.680, -0.550, 0.265, 1.4) 0s,
|
||||
opacity 6s cubic-bezier(0.680, -0.550, 0.265, 1.4) 0s;
|
||||
}
|
||||
#example.index .masthead .container {
|
||||
height: 55vh;
|
||||
margin-left: auto !important;
|
||||
margin-right: auto !important;
|
||||
min-height: 600px;
|
||||
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-pack: center;
|
||||
-webkit-justify-content: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
}
|
||||
#example .masthead .container {
|
||||
padding: 15rem 0em;
|
||||
}
|
||||
#example.index .following.bar iframe.github {
|
||||
margin-top: 0px;
|
||||
}
|
||||
body.index .following.bar .menu .item {
|
||||
display: block;
|
||||
}
|
||||
#example.index.pushed .masthead,
|
||||
#example.index.pushed .following.bar {
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
|
||||
#example.index > .pusher > .footer {
|
||||
padding-left: 0em;
|
||||
}
|
||||
|
||||
#example.index .light.following.bar {
|
||||
padding: 0em 0em;
|
||||
background-color: #FFFFFF;
|
||||
border-bottom: 1px solid #DDDDDD;
|
||||
box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
|
||||
#example.index .masthead.segment .typed-cursor {
|
||||
position: relative;
|
||||
top: -0.05em;
|
||||
left: -0.25em;
|
||||
visibility: hidden;
|
||||
opacity: 1;
|
||||
-webkit-animation: blink 0.7s infinite;
|
||||
-moz-animation: blink 0.7s infinite;
|
||||
animation: blink 0.7s infinite;
|
||||
-webkit-transition: opacity 0.7s ease;
|
||||
-moz-transition: opacity 0.7s ease;
|
||||
transition: opacity 0.7s ease;
|
||||
}
|
||||
#example.index .masthead.segment .typed-cursor.stop {
|
||||
opacity: 0;
|
||||
-moz-animation-duration: 0s;
|
||||
-webkit-animation-duration: 0s;
|
||||
animation-duration: 0s;
|
||||
}
|
||||
@keyframes blink {
|
||||
0% { opacity:1; }
|
||||
50% { opacity:0; }
|
||||
100% { opacity:1; }
|
||||
}
|
||||
@-webkit-keyframes blink {
|
||||
0% { opacity:1; }
|
||||
50% { opacity:0; }
|
||||
100% { opacity:1; }
|
||||
}
|
||||
@-moz-keyframes blink {
|
||||
0% { opacity:1; }
|
||||
50% { opacity:0; }
|
||||
100% { opacity:1; }
|
||||
}
|
||||
|
||||
#example.index .vertical.segment {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#example.index .masthead.segment h1 {
|
||||
font-size: 3em;
|
||||
color: rgba(255, 255, 255, 1);
|
||||
line-height: 1.2;
|
||||
margin: 0px 0px 0px;
|
||||
padding-bottom: 0px;
|
||||
-moz-perspective: 500px;
|
||||
-webkit-perspective: 500px;
|
||||
perspective: 500px;
|
||||
|
||||
text-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
|
||||
|
||||
-moz-transform-style: preserve-3d;
|
||||
-webkit-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
}
|
||||
#example.index .masthead.segment h1 .tagline {
|
||||
font-size: 0.75em;
|
||||
}
|
||||
#example.index .masthead.segment h1 > .library {
|
||||
display: block;
|
||||
font-size: 1.75em;
|
||||
font-weight: bold;
|
||||
}
|
||||
#example.index .masthead.segment h1 b {
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
}
|
||||
#example.index .masthead.segment h1 .text {
|
||||
display: inline-block;
|
||||
font-weight: 300;
|
||||
margin-left: -0.4em;
|
||||
}
|
||||
#example.index .masthead h2 {
|
||||
font-weight: normal;
|
||||
margin: 0px 0 16px 0px;
|
||||
font-size: 1.75em;
|
||||
border-bottom: none;
|
||||
line-height: 1;
|
||||
}
|
||||
#example.index .masthead p {
|
||||
font-size: 1.5em;
|
||||
margin: 1em 0em 1.5em;
|
||||
padding: 0px;
|
||||
}
|
||||
#example.index .ui.header {
|
||||
font-weight: normal;
|
||||
}
|
||||
#example.index .footer .ui.header {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#example.index .introduction {
|
||||
position: relative;
|
||||
clear: both;
|
||||
display: block;
|
||||
text-align: center;
|
||||
}
|
||||
#example.index .introduction .buttons {
|
||||
margin-top: 3em;
|
||||
}
|
||||
|
||||
|
||||
#example.index .advertisement {
|
||||
display: none !important;
|
||||
padding-left: 0;
|
||||
position: absolute;
|
||||
left: auto;
|
||||
right: 6em;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
vertical-align: top;
|
||||
}
|
||||
#example.index .fixed.launch.button {
|
||||
display: none;
|
||||
top: 100px;
|
||||
}
|
||||
#example.index .main.menu {
|
||||
top: 0px;
|
||||
}
|
||||
#example.index pre.console {
|
||||
height: 120px;
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Intro
|
||||
---------------*/
|
||||
|
||||
#example .intro.segment h1 + p {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Demo
|
||||
---------------*/
|
||||
|
||||
#example .demo.row .example > .ui.label:not(.empty) {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
#example .demo.row .ui.progress {
|
||||
margin-bottom: 2.5em;
|
||||
}
|
||||
#example .demo.row h4 {
|
||||
font-weight: bold !important;
|
||||
margin: 0em 0em 1em !important;
|
||||
}
|
||||
#example .demo.row .example {
|
||||
clear: both;
|
||||
padding-top: 3em;
|
||||
margin-top: 3em;
|
||||
}
|
||||
#example .demo.row .ui.menu,
|
||||
#example .demo.row .ui.card {
|
||||
width: 100%;
|
||||
}
|
||||
#example .demo.row .ui.card {
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Features
|
||||
---------------*/
|
||||
|
||||
#example.index .hidden.code {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
#example.index .demo.row .example {
|
||||
clear: both;
|
||||
padding-top: 1.5em;
|
||||
margin-top: 1.5em;
|
||||
}
|
||||
#example.index .demo.row .example:first-child {
|
||||
margin-top: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
#example.index .demo.row .example:last-child {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Following
|
||||
---------------*/
|
||||
|
||||
#example.index .following.bar {
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
z-index: 900;
|
||||
left: 0%;
|
||||
padding: 2em 0em;
|
||||
width: 100%;
|
||||
box-shadow: 0px 0px 0px 0px transparent;
|
||||
border-bottom: 1px solid transparent;
|
||||
transition:
|
||||
padding 0.5s ease,
|
||||
background 0.5s ease,
|
||||
box-shadow 0.5s ease,
|
||||
border 0.5s ease
|
||||
;
|
||||
}
|
||||
#example.index .following.bar > .menu .item {
|
||||
transition: all 0.5s ease;
|
||||
}
|
||||
#example.index.pushed .following.bar .menu .item,
|
||||
#example.index.pushed .following.bar {
|
||||
transition: none;
|
||||
}
|
||||
#example.index .following.bar .additional.item[data-site="learn"]:hover {
|
||||
color: #D9499A;
|
||||
}
|
||||
#example.index .following.bar span.additional.item {
|
||||
cursor: default;
|
||||
color: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
#example.index .following.bar .inverted span.additional.item {
|
||||
color: rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
#example.index .following.bar .column > .menu {
|
||||
margin-top: 0px;
|
||||
height: 35px;
|
||||
}
|
||||
#example.index .following.bar .network.menu .item {
|
||||
font-weight: bold;
|
||||
}
|
||||
#example.index .following.bar .item iframe {
|
||||
margin-left: 10px;
|
||||
}
|
||||
#example.index .following.bar .network.menu .view-ui {
|
||||
margin-right: 1em;
|
||||
}
|
||||
#example.index .light.following.bar .network.menu .view-ui {
|
||||
color: #00B5AD;
|
||||
}
|
||||
#example.index .light.following.bar .inverted.network.menu .view-ui {
|
||||
color: #6DFFFF;
|
||||
}
|
||||
#example.index .following .logo {
|
||||
float: left;
|
||||
width: 35px;
|
||||
margin-right: 1em;
|
||||
}
|
||||
#example.index .following .logo .side {
|
||||
width: 35px;
|
||||
}
|
||||
#example .masthead .version.label:after {
|
||||
background-color: #000000 !important;
|
||||
}
|
||||
#example.index .following .version.label {
|
||||
margin: 0.25em 0px 0px 1em;
|
||||
}
|
||||
|
||||
|
||||
/*--------------
|
||||
Stripes
|
||||
---------------*/
|
||||
|
||||
#example.index .stripe .grid .row {
|
||||
margin: 2rem 0rem;
|
||||
}
|
||||
#example.index .feature.stripe .grid .row {
|
||||
margin: 0rem;
|
||||
}
|
||||
#example.index .feature.stripe .column {
|
||||
display: flex;
|
||||
-ms-flex-direction: column;
|
||||
-webkit-flex-direction: column;
|
||||
-moz-flex-direction: column;
|
||||
flex-direction: column;
|
||||
}
|
||||
#example.index .feature.stripe p {
|
||||
-webkit-flex: 1 0 auto;
|
||||
-moz-flex: 1 0 auto;
|
||||
-ms-flex: 1 0 auto;
|
||||
flex: 1 0 auto;
|
||||
margin: 0.5em 0em 2em;
|
||||
}
|
||||
#example .stripe .ui.vertical.divider {
|
||||
font-size: 1rem;
|
||||
}
|
||||
#example.index .feature.stripe .icon.header .icon.image {
|
||||
width: auto;
|
||||
height: 65px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
#example.index .stripe .icon.header .icon.image {
|
||||
height: 65px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
#example.index .community.stripe {
|
||||
box-shadow: 0 -1px 0 0 rgba(0, 0, 0, 0.1);
|
||||
padding: 4em 0;
|
||||
}
|
||||
#example.index .stripe .icon.header i.icon {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
|
||||
/* Final */
|
||||
#example.index .final.stripe {
|
||||
border-top: 1px solid #DDDDDD;
|
||||
background-color: #F8F8F8;
|
||||
}
|
||||
|
||||
/* Alternate */
|
||||
#example .alternate.stripe {
|
||||
background-color: #F2F3F5;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
#example.index .inverted.stripe {
|
||||
background-color: #1B1C1D;
|
||||
}
|
||||
#example.index .inverted.stripe p {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
|
||||
/*--------------
|
||||
Legacy?
|
||||
---------------*/
|
||||
|
||||
/* content */
|
||||
#example .solid,
|
||||
#example .stripe {
|
||||
background-color: #FFFFFF;
|
||||
padding: 10em 0px;
|
||||
border-radius: 0em;
|
||||
margin: 0em;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
#example .theming.stripe {
|
||||
-webkit-transform: none;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
#example .stripe h1 {
|
||||
font-size: 40px;
|
||||
}
|
||||
#example .stripe h2 {
|
||||
font-size: 26px;
|
||||
}
|
||||
#example .stripe h3 {
|
||||
font-size: 20px;
|
||||
}
|
||||
#example .feature.stripe {
|
||||
padding: 3em 0em;
|
||||
}
|
||||
#example .theming.stripe .left.aligned.column {
|
||||
padding-top: 8em;
|
||||
}
|
||||
#example .theming.stripe .hljs.code {
|
||||
height: 483px;
|
||||
max-height: 483px;
|
||||
}
|
||||
#example .theming .source.grid {
|
||||
display: none !important;
|
||||
margin: 2rem 2rem -4rem;
|
||||
}
|
||||
#example .theming .source.grid.visible {
|
||||
display: block;
|
||||
display: flex !important;
|
||||
}
|
||||
|
||||
#example .theming.stripe .buttons {
|
||||
vertical-align: top;
|
||||
}
|
||||
#example .theming.stripe .button {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
#example .stripe .column > p {
|
||||
font-size: 16px;
|
||||
line-height: 1.6;
|
||||
margin: 1em 0em;
|
||||
}
|
||||
|
||||
#example .dark.stripe {
|
||||
background-color: #333333;
|
||||
background: url(/images/dark-bg.png) repeat;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
#example .stripe .column > .label {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
#example .solid {
|
||||
background-color: #FFFFFF;
|
||||
-webkit-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.1);
|
||||
-moz-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.1);
|
||||
box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
#example .solid .column {
|
||||
color: #555555;
|
||||
}
|
||||
#example .solid .column p b {
|
||||
color: rgba(0, 0, 0, 0.9);
|
||||
}
|
||||
#example .solid .column p {
|
||||
color: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Promo
|
||||
---------------*/
|
||||
|
||||
#example.index .promo.stripe {
|
||||
padding: 3em 0em;
|
||||
}
|
||||
|
||||
|
||||
/*--------------
|
||||
Newsletter
|
||||
---------------*/
|
||||
|
||||
#example.index .email.stripe {
|
||||
padding: 5em 0em;
|
||||
}
|
||||
#example.index .email.stripe p {
|
||||
margin: -0.5em 0em 1em;
|
||||
}
|
||||
#example.index .email.stripe .input {
|
||||
width: 450px;
|
||||
}
|
||||
#example.index .email.stripe .submit.button {
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width : 400px) {
|
||||
#example.index .advertisement {
|
||||
display: none;
|
||||
margin-left: -130px !important;
|
||||
}
|
||||
#example.index .carbonad {
|
||||
width: 260px !important;
|
||||
}
|
||||
#example.index .masthead.segment h1 {
|
||||
font-size: 1.75em !important;
|
||||
}
|
||||
#example.index .feature.stripe {
|
||||
padding: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@media only screen and (max-width : 600px) {
|
||||
#example.index .solid,
|
||||
#example.index .stripe {
|
||||
padding: 4em 0em;
|
||||
}
|
||||
#example.index .masthead.segment h1 .text {
|
||||
margin-left: 0em;
|
||||
}
|
||||
#example.index .following.bar {
|
||||
display: none;
|
||||
}
|
||||
#example.index .masthead:before {
|
||||
display: none;
|
||||
}
|
||||
#example.index .following.bar .column {
|
||||
text-align: center;
|
||||
}
|
||||
#example.index .following .logo {
|
||||
float: none;
|
||||
}
|
||||
#example.index .codebase.stripe {
|
||||
display: none;
|
||||
}
|
||||
#example.index .following .version.label {
|
||||
vertical-align: top;
|
||||
margin-top: 0em;
|
||||
}
|
||||
#example .masthead .container {
|
||||
padding: 6rem 0rem;
|
||||
}
|
||||
#example.index .masthead.segment h1 {
|
||||
font-size: 2.25em;
|
||||
}
|
||||
#example.index .email.stripe .input {
|
||||
width: 100%;
|
||||
}
|
||||
#example.index .following .secondary.menu {
|
||||
display: none;
|
||||
}
|
||||
#example.index .email.stripe .submit.button {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
#example.index .stripe .icon.header .icon.image {
|
||||
height: 50px;
|
||||
}
|
||||
#example.index .stripe {
|
||||
padding: 2em 0em !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width : 650px) {
|
||||
#example.index .fixed.launch.button {
|
||||
display: none;
|
||||
}
|
||||
#example .stripe h1 {
|
||||
font-size: 32px;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width : 601px) {
|
||||
#example .theming .source.button {
|
||||
display: none;
|
||||
}
|
||||
#example.index .main.menu {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#example.index .fixed.launch.button {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Homepage */
|
||||
@media only screen and (max-width : 810px) {
|
||||
#example.index .masthead.segment h1 > .library {
|
||||
font-size: 1.75em;
|
||||
}
|
||||
#example.index .feature.stripe p {
|
||||
height: auto;
|
||||
min-height: 0px;
|
||||
}
|
||||
#example.index .container {
|
||||
margin-left: 0em;
|
||||
margin-right: 0em;
|
||||
}
|
||||
#example .solid, #example .stripe {
|
||||
padding: 6em 0em;
|
||||
}
|
||||
#example.index .masthead .container {
|
||||
margin-top: 50px;
|
||||
}
|
||||
#example.index .following.bar span.additional.item {
|
||||
display: none;
|
||||
visibility: hidden !important;
|
||||
}
|
||||
#example.index .following.bar .network.menu .view-ui {
|
||||
margin-right: 0.75em;
|
||||
}
|
||||
#example.index .masthead .container {
|
||||
min-height: 350px;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width : 1040px) {
|
||||
#example.index .following.bar .network.menu .view-ui {
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width: 1300px) {
|
||||
#example.index .advertisement {
|
||||
position: absolute;
|
||||
top: auto;
|
||||
left: 50%;
|
||||
bottom: 2rem;
|
||||
margin-left: -175px;
|
||||
-webkit-transform: none;
|
||||
-moz-transform: none;
|
||||
-ms-transform: none;
|
||||
transform: none;
|
||||
}
|
||||
#example.index .inverted.advertisement .carbonad-img {
|
||||
margin-top: 0px;
|
||||
}
|
||||
#example.index #carbonads-container {
|
||||
float: none;
|
||||
}
|
||||
#example.index .carbonad {
|
||||
width: 340px;
|
||||
}
|
||||
#example.index .carbonad-text,
|
||||
#example.index .carbonad-tag {
|
||||
float: none;
|
||||
display: block;
|
||||
text-align: left;
|
||||
margin-left: 160px;
|
||||
width: 170px;
|
||||
}
|
||||
}
|
@ -1,322 +0,0 @@
|
||||
semantic.home = {};
|
||||
|
||||
// ready event
|
||||
semantic.home.ready = function() {
|
||||
|
||||
var
|
||||
$themeDropdown = $('.theme.dropdown'),
|
||||
$header = $('.masthead'),
|
||||
$ui = $header.find('h1 b'),
|
||||
$phrase = $header.find('h1 span'),
|
||||
$download = $header.find('.download'),
|
||||
$library = $header.find('.library'),
|
||||
$cursor = $header.find('.typed-cursor'),
|
||||
$version = $header.find('.version'),
|
||||
$themeButton = $('.theming .source.button'),
|
||||
$themeGrid = $('.theming .source.grid'),
|
||||
|
||||
handler
|
||||
;
|
||||
|
||||
handler = {
|
||||
getRandomInt: function(min, max) {
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
},
|
||||
introduction: function() {
|
||||
var
|
||||
background = 'bg' + handler.getRandomInt(1, 9)
|
||||
;
|
||||
// zoom out
|
||||
$header
|
||||
.addClass(background)
|
||||
.removeClass('zoomed')
|
||||
;
|
||||
},
|
||||
changeLogo: function() {
|
||||
var
|
||||
$logo = $('.following .logo'),
|
||||
$nextSide = $logo.find('.'+ $(this).data('site') +'.side'),
|
||||
directions = [
|
||||
'up',
|
||||
'left',
|
||||
'down',
|
||||
'right'
|
||||
],
|
||||
direction = directions[Math.floor(Math.random() * directions.length)]
|
||||
;
|
||||
if($nextSide.length > 0) {
|
||||
clearTimeout(handler.timer);
|
||||
handler.timer = setTimeout(function() {
|
||||
$logo
|
||||
.shape('set next side', $nextSide)
|
||||
.shape('flip ' + direction)
|
||||
;
|
||||
}, 50);
|
||||
}
|
||||
},
|
||||
returnLogo: function() {
|
||||
var
|
||||
$logo = $('.following .logo'),
|
||||
$nextSide = $logo.find('.ui.side')
|
||||
;
|
||||
clearTimeout(handler.timer);
|
||||
handler.timer = setTimeout(function() {
|
||||
$logo
|
||||
.shape('set next side', $nextSide)
|
||||
.shape('flip over')
|
||||
;
|
||||
}, 500);
|
||||
|
||||
},
|
||||
|
||||
less: {
|
||||
|
||||
parseFile: function(content) {
|
||||
var
|
||||
variables = {},
|
||||
lines = content.match(/^\s*(@[\s|\S]+?;)/gm),
|
||||
name,
|
||||
value
|
||||
;
|
||||
if(lines) {
|
||||
$.each(lines, function(index, line) {
|
||||
// clear whitespace
|
||||
line = $.trim(line);
|
||||
// match variables only
|
||||
if(line[0] == '@') {
|
||||
name = line.match(/^@(.+?):/);
|
||||
value = line.match(/:\s*([\s|\S]+?;)/);
|
||||
if( ($.isArray(name) && name.length >= 2) && ($.isArray(value) && value.length >= 2) ) {
|
||||
name = name[1];
|
||||
value = value[1];
|
||||
variables[name] = value;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
console.log(variables);
|
||||
return variables;
|
||||
},
|
||||
|
||||
changeTheme: function(theme) {
|
||||
var
|
||||
$themeDropdown = $(this),
|
||||
$variableCode = $('.variable.code'),
|
||||
$overrideCode = $('.override.code'),
|
||||
$existingVariables = $variableCode.closest('.existing'),
|
||||
$existingOverrides = $overrideCode.closest('.existing'),
|
||||
|
||||
variableURL = '/src/themes/{$theme}/{$type}s/{$element}.variables',
|
||||
overrideURL = '/src/themes/{$theme}/{$type}s/{$element}.overrides',
|
||||
urlData = {
|
||||
theme : typeof(theme === 'string')
|
||||
? theme.toLowerCase()
|
||||
: theme,
|
||||
type : $themeDropdown.data('type'),
|
||||
element : $themeDropdown.data('element')
|
||||
}
|
||||
;
|
||||
if($existingVariables.length > 0) {
|
||||
$variableCode = $('<div class="ui variable code" data-type="less" data-preserve="true" />');
|
||||
$variableCode
|
||||
.insertAfter($existingVariables)
|
||||
;
|
||||
$existingVariables.remove();
|
||||
console.log($variableCode);
|
||||
}
|
||||
|
||||
if($existingOverrides.length > 0) {
|
||||
$overrideCode = $('<div class="ui override code" data-type="less" data-preserve="true" />');
|
||||
$overrideCode
|
||||
.insertAfter($existingOverrides)
|
||||
;
|
||||
$existingOverrides.remove();
|
||||
console.log($overrideCode);
|
||||
}
|
||||
|
||||
$themeDropdown
|
||||
.api({
|
||||
on : 'now',
|
||||
url : variableURL,
|
||||
dataType : 'text',
|
||||
urlData : urlData,
|
||||
onSuccess: function(content) {
|
||||
window.less.modifyVars( handler.less.parseFile(content) );
|
||||
$themeDropdown
|
||||
.api({
|
||||
on : 'now',
|
||||
url : overrideURL,
|
||||
dataType : 'text',
|
||||
urlData : urlData,
|
||||
onSuccess: function(content) {
|
||||
if( $('style.override').length > 0 ) {
|
||||
$('style.override').remove();
|
||||
}
|
||||
$('<style>' + content + '</style>')
|
||||
.addClass('override')
|
||||
.appendTo('body')
|
||||
;
|
||||
$('.sticky').sticky('refresh');
|
||||
|
||||
$overrideCode.html(content);
|
||||
$.proxy(semantic.handler.initializeCode, $overrideCode[0])();
|
||||
}
|
||||
})
|
||||
;
|
||||
$variableCode.html(content);
|
||||
$.proxy(semantic.handler.initializeCode, $variableCode[0])();
|
||||
}
|
||||
})
|
||||
;
|
||||
}
|
||||
},
|
||||
showThemeButton: function(value, text) {
|
||||
if(!$themeButton.transition('is visible')) {
|
||||
$themeButton.transition('scale in');
|
||||
}
|
||||
$.proxy(handler.less.changeTheme, this)(value);
|
||||
},
|
||||
createDemos: function() {
|
||||
$('.demo.menu .item, .demo.buttons .button')
|
||||
.on('click', function() {
|
||||
if(!$(this).hasClass('dropdown')) {
|
||||
$(this)
|
||||
.addClass('active')
|
||||
.closest('.ui.menu, .ui.buttons')
|
||||
.find('.item, .button')
|
||||
.not($(this))
|
||||
.removeClass('active')
|
||||
;
|
||||
}
|
||||
})
|
||||
;
|
||||
$('.example .message .close')
|
||||
.on('click', function() {
|
||||
$(this).closest('.message').transition('scale out');
|
||||
})
|
||||
;
|
||||
},
|
||||
toggleTheme: function() {
|
||||
$(this).toggleClass('active');
|
||||
$themeGrid.toggleClass('visible');
|
||||
}
|
||||
};
|
||||
|
||||
// intro
|
||||
handler.introduction();
|
||||
|
||||
if($(window).width() > 600) {
|
||||
$('body')
|
||||
.visibility({
|
||||
offset : -10,
|
||||
observeChanges : false,
|
||||
once : false,
|
||||
continuous : false,
|
||||
onTopPassed: function() {
|
||||
requestAnimationFrame(function() {
|
||||
$('.following.bar')
|
||||
.addClass('light fixed')
|
||||
.find('.menu')
|
||||
.removeClass('inverted')
|
||||
;
|
||||
$('.following .additional.item')
|
||||
.transition('scale in', 750)
|
||||
;
|
||||
});
|
||||
},
|
||||
onTopPassedReverse: function() {
|
||||
requestAnimationFrame(function() {
|
||||
$('.following.bar')
|
||||
.removeClass('light fixed')
|
||||
.find('.menu')
|
||||
.addClass('inverted')
|
||||
.find('.additional.item')
|
||||
.transition('hide')
|
||||
;
|
||||
});
|
||||
}
|
||||
})
|
||||
;
|
||||
}
|
||||
$('.additional.item')
|
||||
.popup({
|
||||
delay: {
|
||||
show: 200,
|
||||
hide: 50
|
||||
},
|
||||
position: 'bottom center'
|
||||
})
|
||||
;
|
||||
|
||||
$('.email.stripe form')
|
||||
.form({
|
||||
fields: {
|
||||
email: {
|
||||
identifier : 'email',
|
||||
rules: [
|
||||
{
|
||||
type : 'empty',
|
||||
prompt : 'Please enter an e-mail'
|
||||
},
|
||||
{
|
||||
type : 'email',
|
||||
prompt : 'Please enter a valid e-mail address'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
})
|
||||
;
|
||||
|
||||
|
||||
|
||||
$themeDropdown
|
||||
.dropdown('setting', 'transition', 'drop')
|
||||
.dropdown('setting', 'duration', 350)
|
||||
.dropdown('setting', 'action', 'activate')
|
||||
.dropdown('setting', 'onChange', handler.showThemeButton)
|
||||
;
|
||||
|
||||
$themeButton
|
||||
.on('click', handler.toggleTheme)
|
||||
;
|
||||
|
||||
|
||||
// demos
|
||||
$('.demo .checkbox')
|
||||
.checkbox()
|
||||
;
|
||||
$('.demo .accordion')
|
||||
.accordion()
|
||||
;
|
||||
$('.demo .dimmer')
|
||||
.dimmer({
|
||||
on: 'hover'
|
||||
})
|
||||
;
|
||||
$('.demo .ui.dropdown')
|
||||
.dropdown()
|
||||
;
|
||||
|
||||
if(window.Transifex !== undefined) {
|
||||
window.Transifex.live.onTranslatePage(function(countryCode){
|
||||
var fullName = $('.language.dropdown .item[data-value=' + countryCode + ']').eq(0).text();
|
||||
$('.language.dropdown > .text').html(fullName);
|
||||
});
|
||||
}
|
||||
|
||||
$('.ui.sidebar')
|
||||
.sidebar('setting', {
|
||||
transition: 'overlay'
|
||||
})
|
||||
;
|
||||
|
||||
handler.createDemos();
|
||||
|
||||
};
|
||||
|
||||
|
||||
// attach ready event
|
||||
$(document)
|
||||
.ready(semantic.home.ready)
|
||||
;
|
@ -1 +0,0 @@
|
||||
{}
|
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 237 KiB |
Before Width: | Height: | Size: 129 KiB |
@ -1,889 +0,0 @@
|
||||
/*
|
||||
* # Semantic UI - 2.4.2
|
||||
* https://github.com/Semantic-Org/Semantic-UI
|
||||
* http://www.semantic-ui.com/
|
||||
*
|
||||
* Copyright 2014 Contributors
|
||||
* Released under the MIT license
|
||||
* http://opensource.org/licenses/MIT
|
||||
*
|
||||
*/
|
||||
/*!
|
||||
* # Semantic UI - Segment
|
||||
* http://github.com/semantic-org/semantic-ui/
|
||||
*
|
||||
*
|
||||
* Released under the MIT license
|
||||
* http://opensource.org/licenses/MIT
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*******************************
|
||||
Segment
|
||||
*******************************/
|
||||
|
||||
.ui.segment {
|
||||
position: relative;
|
||||
background: #FFFFFF;
|
||||
-webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15);
|
||||
box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15);
|
||||
margin: 1rem 0em;
|
||||
padding: 1em 1em;
|
||||
border-radius: 0.28571429rem;
|
||||
border: 1px solid rgba(34, 36, 38, 0.15);
|
||||
}
|
||||
.ui.segment:first-child {
|
||||
margin-top: 0em;
|
||||
}
|
||||
.ui.segment:last-child {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
/* Vertical */
|
||||
.ui.vertical.segment {
|
||||
margin: 0em;
|
||||
padding-left: 0em;
|
||||
padding-right: 0em;
|
||||
background: none transparent;
|
||||
border-radius: 0px;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
border-bottom: 1px solid rgba(34, 36, 38, 0.15);
|
||||
}
|
||||
.ui.vertical.segment:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Loose Coupling
|
||||
--------------------*/
|
||||
|
||||
|
||||
/* Header */
|
||||
.ui.inverted.segment > .ui.header {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
/* Label */
|
||||
.ui[class*="bottom attached"].segment > [class*="top attached"].label {
|
||||
border-top-left-radius: 0em;
|
||||
border-top-right-radius: 0em;
|
||||
}
|
||||
.ui[class*="top attached"].segment > [class*="bottom attached"].label {
|
||||
border-bottom-left-radius: 0em;
|
||||
border-bottom-right-radius: 0em;
|
||||
}
|
||||
.ui.attached.segment:not(.top):not(.bottom) > [class*="top attached"].label {
|
||||
border-top-left-radius: 0em;
|
||||
border-top-right-radius: 0em;
|
||||
}
|
||||
.ui.attached.segment:not(.top):not(.bottom) > [class*="bottom attached"].label {
|
||||
border-bottom-left-radius: 0em;
|
||||
border-bottom-right-radius: 0em;
|
||||
}
|
||||
|
||||
/* Grid */
|
||||
.ui.page.grid.segment,
|
||||
.ui.grid > .row > .ui.segment.column,
|
||||
.ui.grid > .ui.segment.column {
|
||||
padding-top: 2em;
|
||||
padding-bottom: 2em;
|
||||
}
|
||||
.ui.grid.segment {
|
||||
margin: 1rem 0em;
|
||||
border-radius: 0.28571429rem;
|
||||
}
|
||||
|
||||
/* Table */
|
||||
.ui.basic.table.segment {
|
||||
background: #FFFFFF;
|
||||
border: 1px solid rgba(34, 36, 38, 0.15);
|
||||
-webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15);
|
||||
box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15);
|
||||
}
|
||||
.ui[class*="very basic"].table.segment {
|
||||
padding: 1em 1em;
|
||||
}
|
||||
|
||||
|
||||
/*******************************
|
||||
Types
|
||||
*******************************/
|
||||
|
||||
|
||||
/*-------------------
|
||||
Placeholder
|
||||
--------------------*/
|
||||
|
||||
.ui.placeholder.segment {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: stretch;
|
||||
-ms-flex-align: stretch;
|
||||
align-items: stretch;
|
||||
max-width: initial;
|
||||
-webkit-animation: none;
|
||||
animation: none;
|
||||
overflow: visible;
|
||||
padding: 1em 1em;
|
||||
min-height: 18rem;
|
||||
background: #F9FAFB;
|
||||
border-color: rgba(34, 36, 38, 0.15);
|
||||
-webkit-box-shadow: 0px 2px 25px 0 rgba(34, 36, 38, 0.05) inset;
|
||||
box-shadow: 0px 2px 25px 0 rgba(34, 36, 38, 0.05) inset;
|
||||
}
|
||||
.ui.placeholder.segment .button,
|
||||
.ui.placeholder.segment textarea {
|
||||
display: block;
|
||||
}
|
||||
.ui.placeholder.segment .field,
|
||||
.ui.placeholder.segment textarea,
|
||||
.ui.placeholder.segment > .ui.input,
|
||||
.ui.placeholder.segment .button {
|
||||
max-width: 15rem;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.ui.placeholder.segment .column .button,
|
||||
.ui.placeholder.segment .column .field,
|
||||
.ui.placeholder.segment .column textarea,
|
||||
.ui.placeholder.segment .column > .ui.input {
|
||||
max-width: 15rem;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.ui.placeholder.segment > .inline {
|
||||
-ms-flex-item-align: center;
|
||||
align-self: center;
|
||||
}
|
||||
.ui.placeholder.segment > .inline > .button {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
margin: 0px 0.35714286rem 0px 0px;
|
||||
}
|
||||
.ui.placeholder.segment > .inline > .button:last-child {
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Piled
|
||||
--------------------*/
|
||||
|
||||
.ui.piled.segments,
|
||||
.ui.piled.segment {
|
||||
margin: 3em 0em;
|
||||
-webkit-box-shadow: '';
|
||||
box-shadow: '';
|
||||
z-index: auto;
|
||||
}
|
||||
.ui.piled.segment:first-child {
|
||||
margin-top: 0em;
|
||||
}
|
||||
.ui.piled.segment:last-child {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
.ui.piled.segments:after,
|
||||
.ui.piled.segments:before,
|
||||
.ui.piled.segment:after,
|
||||
.ui.piled.segment:before {
|
||||
background-color: #FFFFFF;
|
||||
visibility: visible;
|
||||
content: '';
|
||||
display: block;
|
||||
height: 100%;
|
||||
left: 0px;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
border: 1px solid rgba(34, 36, 38, 0.15);
|
||||
-webkit-box-shadow: '';
|
||||
box-shadow: '';
|
||||
}
|
||||
.ui.piled.segments:before,
|
||||
.ui.piled.segment:before {
|
||||
-webkit-transform: rotate(-1.2deg);
|
||||
transform: rotate(-1.2deg);
|
||||
top: 0;
|
||||
z-index: -2;
|
||||
}
|
||||
.ui.piled.segments:after,
|
||||
.ui.piled.segment:after {
|
||||
-webkit-transform: rotate(1.2deg);
|
||||
transform: rotate(1.2deg);
|
||||
top: 0;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
/* Piled Attached */
|
||||
.ui[class*="top attached"].piled.segment {
|
||||
margin-top: 3em;
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
.ui.piled.segment[class*="top attached"]:first-child {
|
||||
margin-top: 0em;
|
||||
}
|
||||
.ui.piled.segment[class*="bottom attached"] {
|
||||
margin-top: 0em;
|
||||
margin-bottom: 3em;
|
||||
}
|
||||
.ui.piled.segment[class*="bottom attached"]:last-child {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Stacked
|
||||
--------------------*/
|
||||
|
||||
.ui.stacked.segment {
|
||||
padding-bottom: 1.4em;
|
||||
}
|
||||
.ui.stacked.segments:before,
|
||||
.ui.stacked.segments:after,
|
||||
.ui.stacked.segment:before,
|
||||
.ui.stacked.segment:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: -3px;
|
||||
left: 0%;
|
||||
border-top: 1px solid rgba(34, 36, 38, 0.15);
|
||||
background: rgba(0, 0, 0, 0.03);
|
||||
width: 100%;
|
||||
height: 6px;
|
||||
visibility: visible;
|
||||
}
|
||||
.ui.stacked.segments:before,
|
||||
.ui.stacked.segment:before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Add additional page */
|
||||
.ui.tall.stacked.segments:before,
|
||||
.ui.tall.stacked.segment:before {
|
||||
display: block;
|
||||
bottom: 0px;
|
||||
}
|
||||
|
||||
/* Inverted */
|
||||
.ui.stacked.inverted.segments:before,
|
||||
.ui.stacked.inverted.segments:after,
|
||||
.ui.stacked.inverted.segment:before,
|
||||
.ui.stacked.inverted.segment:after {
|
||||
background-color: rgba(0, 0, 0, 0.03);
|
||||
border-top: 1px solid rgba(34, 36, 38, 0.35);
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Padded
|
||||
--------------------*/
|
||||
|
||||
.ui.padded.segment {
|
||||
padding: 1.5em;
|
||||
}
|
||||
.ui[class*="very padded"].segment {
|
||||
padding: 3em;
|
||||
}
|
||||
|
||||
/* Padded vertical */
|
||||
.ui.padded.segment.vertical.segment,
|
||||
.ui[class*="very padded"].vertical.segment {
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Compact
|
||||
--------------------*/
|
||||
|
||||
.ui.compact.segment {
|
||||
display: table;
|
||||
}
|
||||
|
||||
/* Compact Group */
|
||||
.ui.compact.segments {
|
||||
display: -webkit-inline-box;
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
}
|
||||
.ui.compact.segments .segment,
|
||||
.ui.segments .compact.segment {
|
||||
display: block;
|
||||
-webkit-box-flex: 0;
|
||||
-ms-flex: 0 1 auto;
|
||||
flex: 0 1 auto;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Circular
|
||||
--------------------*/
|
||||
|
||||
.ui.circular.segment {
|
||||
display: table-cell;
|
||||
padding: 2em;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
border-radius: 500em;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Raised
|
||||
--------------------*/
|
||||
|
||||
.ui.raised.segments,
|
||||
.ui.raised.segment {
|
||||
-webkit-box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15);
|
||||
box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.15);
|
||||
}
|
||||
|
||||
|
||||
/*******************************
|
||||
Groups
|
||||
*******************************/
|
||||
|
||||
|
||||
/* Group */
|
||||
.ui.segments {
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
margin: 1rem 0em;
|
||||
border: 1px solid rgba(34, 36, 38, 0.15);
|
||||
-webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15);
|
||||
box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15);
|
||||
border-radius: 0.28571429rem;
|
||||
}
|
||||
.ui.segments:first-child {
|
||||
margin-top: 0em;
|
||||
}
|
||||
.ui.segments:last-child {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
/* Nested Segment */
|
||||
.ui.segments > .segment {
|
||||
top: 0px;
|
||||
bottom: 0px;
|
||||
border-radius: 0px;
|
||||
margin: 0em;
|
||||
width: auto;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
border-top: 1px solid rgba(34, 36, 38, 0.15);
|
||||
}
|
||||
.ui.segments:not(.horizontal) > .segment:first-child {
|
||||
border-top: none;
|
||||
margin-top: 0em;
|
||||
bottom: 0px;
|
||||
margin-bottom: 0em;
|
||||
top: 0px;
|
||||
border-radius: 0.28571429rem 0.28571429rem 0em 0em;
|
||||
}
|
||||
|
||||
/* Bottom */
|
||||
.ui.segments:not(.horizontal) > .segment:last-child {
|
||||
top: 0px;
|
||||
bottom: 0px;
|
||||
margin-top: 0em;
|
||||
margin-bottom: 0em;
|
||||
-webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none;
|
||||
box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none;
|
||||
border-radius: 0em 0em 0.28571429rem 0.28571429rem;
|
||||
}
|
||||
|
||||
/* Only */
|
||||
.ui.segments:not(.horizontal) > .segment:only-child {
|
||||
border-radius: 0.28571429rem;
|
||||
}
|
||||
|
||||
/* Nested Group */
|
||||
.ui.segments > .ui.segments {
|
||||
border-top: 1px solid rgba(34, 36, 38, 0.15);
|
||||
margin: 1rem 1rem;
|
||||
}
|
||||
.ui.segments > .segments:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
.ui.segments > .segment + .segments:not(.horizontal) {
|
||||
margin-top: 0em;
|
||||
}
|
||||
|
||||
/* Horizontal Group */
|
||||
.ui.horizontal.segments {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
background-color: transparent;
|
||||
border-radius: 0px;
|
||||
padding: 0em;
|
||||
background-color: #FFFFFF;
|
||||
-webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15);
|
||||
box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15);
|
||||
margin: 1rem 0em;
|
||||
border-radius: 0.28571429rem;
|
||||
border: 1px solid rgba(34, 36, 38, 0.15);
|
||||
}
|
||||
|
||||
/* Nested Horizontal Group */
|
||||
.ui.segments > .horizontal.segments {
|
||||
margin: 0em;
|
||||
background-color: transparent;
|
||||
border-radius: 0px;
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
border-top: 1px solid rgba(34, 36, 38, 0.15);
|
||||
}
|
||||
|
||||
/* Horizontal Segment */
|
||||
.ui.horizontal.segments > .segment {
|
||||
-webkit-box-flex: 1;
|
||||
flex: 1 1 auto;
|
||||
-ms-flex: 1 1 0px;
|
||||
|
||||
/* Solves #2550 MS Flex */
|
||||
margin: 0em;
|
||||
min-width: 0px;
|
||||
background-color: transparent;
|
||||
border-radius: 0px;
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
border-left: 1px solid rgba(34, 36, 38, 0.15);
|
||||
}
|
||||
|
||||
/* Border Fixes */
|
||||
.ui.segments > .horizontal.segments:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
.ui.horizontal.segments > .segment:first-child {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
|
||||
/*******************************
|
||||
States
|
||||
*******************************/
|
||||
|
||||
|
||||
/*--------------
|
||||
Disabled
|
||||
---------------*/
|
||||
|
||||
.ui.disabled.segment {
|
||||
opacity: 0.45;
|
||||
color: rgba(40, 40, 40, 0.3);
|
||||
}
|
||||
|
||||
/*--------------
|
||||
Loading
|
||||
---------------*/
|
||||
|
||||
.ui.loading.segment {
|
||||
position: relative;
|
||||
cursor: default;
|
||||
pointer-events: none;
|
||||
text-shadow: none !important;
|
||||
color: transparent !important;
|
||||
-webkit-transition: all 0s linear;
|
||||
transition: all 0s linear;
|
||||
}
|
||||
.ui.loading.segment:before {
|
||||
position: absolute;
|
||||
content: '';
|
||||
top: 0%;
|
||||
left: 0%;
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 0.28571429rem;
|
||||
z-index: 100;
|
||||
}
|
||||
.ui.loading.segment:after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin: -1.5em 0em 0em -1.5em;
|
||||
width: 3em;
|
||||
height: 3em;
|
||||
-webkit-animation: segment-spin 0.6s linear;
|
||||
animation: segment-spin 0.6s linear;
|
||||
-webkit-animation-iteration-count: infinite;
|
||||
animation-iteration-count: infinite;
|
||||
border-radius: 500rem;
|
||||
border-color: #767676 rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1);
|
||||
border-style: solid;
|
||||
border-width: 0.2em;
|
||||
-webkit-box-shadow: 0px 0px 0px 1px transparent;
|
||||
box-shadow: 0px 0px 0px 1px transparent;
|
||||
visibility: visible;
|
||||
z-index: 101;
|
||||
}
|
||||
@-webkit-keyframes segment-spin {
|
||||
from {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
@keyframes segment-spin {
|
||||
from {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************
|
||||
Variations
|
||||
*******************************/
|
||||
|
||||
|
||||
/*-------------------
|
||||
Basic
|
||||
--------------------*/
|
||||
|
||||
.ui.basic.segment {
|
||||
background: none transparent;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Clearing
|
||||
--------------------*/
|
||||
|
||||
.ui.clearing.segment:after {
|
||||
content: ".";
|
||||
display: block;
|
||||
height: 0;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Colors
|
||||
--------------------*/
|
||||
|
||||
|
||||
/* Red */
|
||||
.ui.red.segment:not(.inverted) {
|
||||
border-top: 2px solid #DB2828 !important;
|
||||
}
|
||||
.ui.inverted.red.segment {
|
||||
background-color: #DB2828 !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Orange */
|
||||
.ui.orange.segment:not(.inverted) {
|
||||
border-top: 2px solid #F2711C !important;
|
||||
}
|
||||
.ui.inverted.orange.segment {
|
||||
background-color: #F2711C !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Yellow */
|
||||
.ui.yellow.segment:not(.inverted) {
|
||||
border-top: 2px solid #FBBD08 !important;
|
||||
}
|
||||
.ui.inverted.yellow.segment {
|
||||
background-color: #FBBD08 !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Olive */
|
||||
.ui.olive.segment:not(.inverted) {
|
||||
border-top: 2px solid #B5CC18 !important;
|
||||
}
|
||||
.ui.inverted.olive.segment {
|
||||
background-color: #B5CC18 !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Green */
|
||||
.ui.green.segment:not(.inverted) {
|
||||
border-top: 2px solid #21BA45 !important;
|
||||
}
|
||||
.ui.inverted.green.segment {
|
||||
background-color: #21BA45 !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Teal */
|
||||
.ui.teal.segment:not(.inverted) {
|
||||
border-top: 2px solid #00B5AD !important;
|
||||
}
|
||||
.ui.inverted.teal.segment {
|
||||
background-color: #00B5AD !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Blue */
|
||||
.ui.blue.segment:not(.inverted) {
|
||||
border-top: 2px solid #2185D0 !important;
|
||||
}
|
||||
.ui.inverted.blue.segment {
|
||||
background-color: #2185D0 !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Violet */
|
||||
.ui.violet.segment:not(.inverted) {
|
||||
border-top: 2px solid #6435C9 !important;
|
||||
}
|
||||
.ui.inverted.violet.segment {
|
||||
background-color: #6435C9 !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Purple */
|
||||
.ui.purple.segment:not(.inverted) {
|
||||
border-top: 2px solid #A333C8 !important;
|
||||
}
|
||||
.ui.inverted.purple.segment {
|
||||
background-color: #A333C8 !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Pink */
|
||||
.ui.pink.segment:not(.inverted) {
|
||||
border-top: 2px solid #E03997 !important;
|
||||
}
|
||||
.ui.inverted.pink.segment {
|
||||
background-color: #E03997 !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Brown */
|
||||
.ui.brown.segment:not(.inverted) {
|
||||
border-top: 2px solid #A5673F !important;
|
||||
}
|
||||
.ui.inverted.brown.segment {
|
||||
background-color: #A5673F !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Grey */
|
||||
.ui.grey.segment:not(.inverted) {
|
||||
border-top: 2px solid #767676 !important;
|
||||
}
|
||||
.ui.inverted.grey.segment {
|
||||
background-color: #767676 !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/* Black */
|
||||
.ui.black.segment:not(.inverted) {
|
||||
border-top: 2px solid #1B1C1D !important;
|
||||
}
|
||||
.ui.inverted.black.segment {
|
||||
background-color: #1B1C1D !important;
|
||||
color: #FFFFFF !important;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Aligned
|
||||
--------------------*/
|
||||
|
||||
.ui[class*="left aligned"].segment {
|
||||
text-align: left;
|
||||
}
|
||||
.ui[class*="right aligned"].segment {
|
||||
text-align: right;
|
||||
}
|
||||
.ui[class*="center aligned"].segment {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Floated
|
||||
--------------------*/
|
||||
|
||||
.ui.floated.segment,
|
||||
.ui[class*="left floated"].segment {
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
.ui[class*="right floated"].segment {
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Inverted
|
||||
--------------------*/
|
||||
|
||||
.ui.inverted.segment {
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.ui.inverted.segment,
|
||||
.ui.primary.inverted.segment {
|
||||
background: #1B1C1D;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
|
||||
/* Nested */
|
||||
.ui.inverted.segment .segment {
|
||||
color: rgba(0, 0, 0, 0.87);
|
||||
}
|
||||
.ui.inverted.segment .inverted.segment {
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
|
||||
/* Attached */
|
||||
.ui.inverted.attached.segment {
|
||||
border-color: #555555;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Emphasis
|
||||
--------------------*/
|
||||
|
||||
|
||||
/* Secondary */
|
||||
.ui.secondary.segment {
|
||||
background: #F3F4F5;
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
.ui.secondary.inverted.segment {
|
||||
background: #4c4f52 -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.2)), to(rgba(255, 255, 255, 0.2)));
|
||||
background: #4c4f52 -webkit-linear-gradient(rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.2) 100%);
|
||||
background: #4c4f52 linear-gradient(rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.2) 100%);
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
|
||||
/* Tertiary */
|
||||
.ui.tertiary.segment {
|
||||
background: #DCDDDE;
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
.ui.tertiary.inverted.segment {
|
||||
background: #717579 -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.35)), to(rgba(255, 255, 255, 0.35)));
|
||||
background: #717579 -webkit-linear-gradient(rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.35) 100%);
|
||||
background: #717579 linear-gradient(rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.35) 100%);
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Attached
|
||||
--------------------*/
|
||||
|
||||
|
||||
/* Middle */
|
||||
.ui.attached.segment {
|
||||
top: 0px;
|
||||
bottom: 0px;
|
||||
border-radius: 0px;
|
||||
margin: 0em -1px;
|
||||
width: calc(100% - (-1px * 2));
|
||||
max-width: calc(100% - (-1px * 2));
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
border: 1px solid #D4D4D5;
|
||||
}
|
||||
.ui.attached:not(.message) + .ui.attached.segment:not(.top) {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
/* Top */
|
||||
.ui[class*="top attached"].segment {
|
||||
bottom: 0px;
|
||||
margin-bottom: 0em;
|
||||
top: 0px;
|
||||
margin-top: 1rem;
|
||||
border-radius: 0.28571429rem 0.28571429rem 0em 0em;
|
||||
}
|
||||
.ui.segment[class*="top attached"]:first-child {
|
||||
margin-top: 0em;
|
||||
}
|
||||
|
||||
/* Bottom */
|
||||
.ui.segment[class*="bottom attached"] {
|
||||
bottom: 0px;
|
||||
margin-top: 0em;
|
||||
top: 0px;
|
||||
margin-bottom: 1rem;
|
||||
-webkit-box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none;
|
||||
box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none;
|
||||
border-radius: 0em 0em 0.28571429rem 0.28571429rem;
|
||||
}
|
||||
.ui.segment[class*="bottom attached"]:last-child {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
/*-------------------
|
||||
Size
|
||||
--------------------*/
|
||||
|
||||
.ui.mini.segments .segment,
|
||||
.ui.mini.segment {
|
||||
font-size: 0.78571429rem;
|
||||
}
|
||||
.ui.tiny.segments .segment,
|
||||
.ui.tiny.segment {
|
||||
font-size: 0.85714286rem;
|
||||
}
|
||||
.ui.small.segments .segment,
|
||||
.ui.small.segment {
|
||||
font-size: 0.92857143rem;
|
||||
}
|
||||
.ui.segments .segment,
|
||||
.ui.segment {
|
||||
font-size: 1rem;
|
||||
}
|
||||
.ui.large.segments .segment,
|
||||
.ui.large.segment {
|
||||
font-size: 1.14285714rem;
|
||||
}
|
||||
.ui.big.segments .segment,
|
||||
.ui.big.segment {
|
||||
font-size: 1.28571429rem;
|
||||
}
|
||||
.ui.huge.segments .segment,
|
||||
.ui.huge.segment {
|
||||
font-size: 1.42857143rem;
|
||||
}
|
||||
.ui.massive.segments .segment,
|
||||
.ui.massive.segment {
|
||||
font-size: 1.71428571rem;
|
||||
}
|
||||
|
||||
|
||||
/*******************************
|
||||
Theme Overrides
|
||||
*******************************/
|
||||
|
||||
|
||||
|
||||
/*******************************
|
||||
Site Overrides
|
||||
*******************************/
|
||||
|