Remove obsolete documents
The documents haven't been updated since the 1.0 release.
This commit is contained in:
parent
ed068f4d93
commit
4084bbcaca
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,23 +0,0 @@
|
||||
# SchemaRouter Router - Technical Overview
|
||||
|
||||
This document is designed with a developer's point-of-view in mind. It explains the lifecycle of the module and details about its internal workings. It refers to the source code which can be found at [GitHub](https://github.com/mariadb-corporation/MaxScale).
|
||||
|
||||
## Source Files and Data Structures
|
||||
|
||||
The schemarouter router consists of the schemarouter.h header file located in the `server/modules/include/` directory and the schemarouter.c file located in the `server/modules/routing/schemarouter` directory. This router implements the router interface defined in the router.h file. The entry points and structures this router uses can be found in the header file. The two main structures in use are the router instance and router session structures. The router instance structure is defined in `struct router_instance` and the router session structure in `struct router_client_session`.
|
||||
|
||||
The definitions of the external functions and all the internal functions of the router can be found in the schemarouter.c file.
|
||||
|
||||
## Router Lifecycle
|
||||
|
||||
When MaxScale first starts, it creates all services and thus creates the router instances of all the routers. The functions involved in this stage are ModuleInit, which is called only once when MaxScale first starts, and createInstance, called for each individual instance of this router in all the configured services. These functions read configuration values and initialize internal data.
|
||||
|
||||
When a user connects to MaxScale, a new session is created and the newSession function is called. At this point the client session connects to all the backend servers and initializes the list of databases.
|
||||
|
||||
After the session is created queries are routed to the router's routeQuery function. This is where most of the work regarding the resolution of query destinations is done. This router parses the incoming buffers for full SQL packets first and routes each of them individually. The main internal functions involved in routing the query are get_shard_route_target (detects if a query needs to be sent to all the servers or to a specific one), get_shard_target_name (parses the query and finds the name of the right server) and route_session_write (handles sending and and storing session commands). After this point the client's query has been sent to the backend server and the router waits for either an response or an error signaling that the backend server is not responding.
|
||||
|
||||
If a response is received the clientReply function is called and response is simply sent to the client and the router is then ready for more queries. If there is no response from the server and the connection to it is lost the handleError function is called. This function tries to find replacement servers for the failed ones and regenerates the list of databases. This also triggers the sending of an error packet to the client that notifies that the server is not responding.
|
||||
|
||||
After the session ends the closeSession is called where the session is set to a closed state after which the freeSession is called where the final freeing of memory is done. After this point the router's session has gone through all the stages of its lifecycle.
|
||||
|
||||

|
6158
Documentation/Design-Documents/assets/css/bootstrap.css
vendored
6158
Documentation/Design-Documents/assets/css/bootstrap.css
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,269 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2013-2014 Minkyu Lee. All rights reserved.
|
||||
*
|
||||
* NOTICE: All information contained herein is, and remains the
|
||||
* property of Minkyu Lee. The intellectual and technical concepts
|
||||
* contained herein are proprietary to Minkyu Lee and may be covered
|
||||
* by Republic of Korea and Foreign Patents, patents in process,
|
||||
* and are protected by trade secret or copyright law.
|
||||
* Dissemination of this information or reproduction of this material
|
||||
* is strictly forbidden unless prior written permission is obtained
|
||||
* from Minkyu Lee (niklaus.lee@gmail.com).
|
||||
*
|
||||
*/
|
||||
|
||||
@ui-icon-url: url('../icons/icons-light.png');
|
||||
@icon-width: 16px;
|
||||
@icon-height: 16px;
|
||||
|
||||
._icon-base (@xpos, @ypos, @offset: 0px) {
|
||||
background-image: @ui-icon-url !important;
|
||||
background-repeat: no-repeat;
|
||||
background-position: (@icon-width * @xpos * -1 + @offset) (@icon-height * @ypos * -1 + @offset);
|
||||
width: @icon-width;
|
||||
height: @icon-height;
|
||||
background-clip: content-box;
|
||||
}
|
||||
|
||||
// UML Icons
|
||||
|
||||
// Annotations & Etc.
|
||||
._icon-Project { ._icon-base(5, 0); }
|
||||
._icon-Tag { ._icon-base(13, 13); }
|
||||
._icon-Lock { ._icon-base(0, 13); }
|
||||
._icon-Rectangle { ._icon-base(6, 12); }
|
||||
._icon-RoundedRectangle { ._icon-base(7, 12); }
|
||||
._icon-Ellipse { ._icon-base(4, 11); }
|
||||
._icon-UMLNote { ._icon-base(2, 0); }
|
||||
._icon-UMLNoteLink { ._icon-base(3, 0); }
|
||||
._icon-UMLText { ._icon-base(4, 0); }
|
||||
._icon-UMLConstraint { ._icon-base(11, 3); }
|
||||
// Diagrams
|
||||
._icon-UMLClassDiagram { ._icon-base(7, 6); }
|
||||
._icon-UMLObjectDiagram { ._icon-base(10, 6); }
|
||||
._icon-UMLPackageDiagram { ._icon-base(12, 6); }
|
||||
._icon-UMLUseCaseDiagram { ._icon-base(8, 6); }
|
||||
._icon-UMLSequenceDiagram { ._icon-base(9, 6); }
|
||||
._icon-UMLCommunicationDiagram { ._icon-base(11, 6); }
|
||||
._icon-UMLStatechartDiagram { ._icon-base(13, 6); }
|
||||
._icon-UMLActivityDiagram { ._icon-base(0, 7); }
|
||||
._icon-UMLComponentDiagram { ._icon-base(1, 7); }
|
||||
._icon-UMLDeploymentDiagram { ._icon-base(2, 7); }
|
||||
._icon-UMLCompositeStructureDiagram { ._icon-base(11, 12); }
|
||||
._icon-UMLProfileDiagram { ._icon-base(0, 10); }
|
||||
// Backbone
|
||||
._icon-UMLAttribute { ._icon-base(4, 3); }
|
||||
._icon-UMLOperation { ._icon-base(8, 3); }
|
||||
._icon-UMLParameter { ._icon-base(12, 3); }
|
||||
._icon-UMLTemplateParameter { ._icon-base(13, 3); }
|
||||
._icon-UMLFrame { ._icon-base(13, 11); }
|
||||
// Packages
|
||||
._icon-UMLPackage { ._icon-base(13, 0); }
|
||||
._icon-UMLModel { ._icon-base(7, 0); }
|
||||
._icon-UMLSubsystem { ._icon-base(10, 0); }
|
||||
._icon-UMLProfile { ._icon-base(10, 0); }
|
||||
// Classes
|
||||
._icon-UMLClass { ._icon-base(2, 1); }
|
||||
._icon-UMLInterface { ._icon-base(3, 1); }
|
||||
._icon-UMLSignal { ._icon-base(5, 1); }
|
||||
._icon-UMLDataType { ._icon-base(5, 3); }
|
||||
._icon-UMLPrimitiveType { ._icon-base(6, 3); }
|
||||
._icon-UMLEnumerationLiteral { ._icon-base(0, 4); }
|
||||
._icon-UMLEnumeration { ._icon-base(4, 1); }
|
||||
._icon-UMLStereotype { ._icon-base(2, 1); }
|
||||
._icon-UMLDependency { ._icon-base(4, 5); }
|
||||
._icon-UMLGeneralization { ._icon-base(7, 5); }
|
||||
._icon-UMLInterfaceRealization { ._icon-base(6, 6); }
|
||||
._icon-UMLComponentRealization { ._icon-base(6, 6); }
|
||||
._icon-UMLAssociationEnd { ._icon-base(10, 5); }
|
||||
._icon-UMLAssociation { ._icon-base(5, 5); }
|
||||
._icon-UMLDirectedAssociation { ._icon-base(0, 11); }
|
||||
._icon-UMLAggregation { ._icon-base(1, 11); }
|
||||
._icon-UMLComposition { ._icon-base(2, 11); }
|
||||
._icon-UMLAssociationClassLink { ._icon-base(6, 5); }
|
||||
._icon-UMLContainment { ._icon-base(1, 13); }
|
||||
// Instances
|
||||
._icon-UMLSlot { ._icon-base(10, 13); }
|
||||
._icon-UMLObject { ._icon-base(3, 5); }
|
||||
._icon-UMLArtifactInstance { ._icon-base(2, 13); }
|
||||
._icon-UMLComponentInstance { ._icon-base(8, 1); }
|
||||
._icon-UMLNodeInstance { ._icon-base(10, 1); }
|
||||
._icon-UMLLinkEnd { ._icon-base(10, 5); }
|
||||
._icon-UMLLink { ._icon-base(8, 5); }
|
||||
._icon-UMLDirectedLink { ._icon-base(11, 5); }
|
||||
// Composite Structures
|
||||
._icon-UMLPort { ._icon-base(5, 12); }
|
||||
._icon-UMLPart { ._icon-base(4, 12); }
|
||||
._icon-UMLConnectorEnd { ._icon-base(10, 5); }
|
||||
._icon-UMLConnector { ._icon-base(10, 11); }
|
||||
._icon-UMLSelfConnector { ._icon-base(11, 11); }
|
||||
._icon-UMLCollaboration { ._icon-base(2, 2); }
|
||||
._icon-UMLCollaborationUse { ._icon-base(3, 2); }
|
||||
// Components
|
||||
._icon-UMLArtifact { ._icon-base(8, 12); }
|
||||
._icon-UMLComponent { ._icon-base(7, 1); }
|
||||
// Deployments
|
||||
._icon-UMLNode { ._icon-base(9, 1); }
|
||||
._icon-UMLDeployment { ._icon-base(4, 5); } // Temporally ref to Dependency Icon
|
||||
._icon-UMLCommunicationPath { ._icon-base(5, 5); }
|
||||
// Use Cases
|
||||
._icon-UMLExtensionPoint { ._icon-base(9, 12); }
|
||||
._icon-UMLUseCase { ._icon-base(11, 1); }
|
||||
._icon-UMLActor { ._icon-base(12, 1); }
|
||||
._icon-UMLInclude { ._icon-base(4, 6); }
|
||||
._icon-UMLExtend { ._icon-base(5, 6); }
|
||||
._icon-UMLUseCaseSubject { ._icon-base(8, 11); }
|
||||
// State Machines
|
||||
._icon-UMLStateMachine { ._icon-base(0, 2); }
|
||||
._icon-UMLRegion { ._icon-base(0, 1); }
|
||||
._icon-UMLInitialState { ._icon-base(9, 2); }
|
||||
._icon-UMLJunction { ._icon-base(11, 2); }
|
||||
._icon-UMLChoice { ._icon-base(8, 2); }
|
||||
._icon-UMLShallowHistory { ._icon-base(13, 2); }
|
||||
._icon-UMLDeepHistory { ._icon-base(0, 3); }
|
||||
._icon-UMLJoin { ._icon-base(10, 2); }
|
||||
._icon-UMLFork { ._icon-base(11, 0); }
|
||||
._icon-UMLEntryPoint { ._icon-base(12, 2); }
|
||||
._icon-UMLExitPoint { ._icon-base(12, 11); }
|
||||
._icon-UMLTerminate { ._icon-base(12, 0); }
|
||||
._icon-UMLState { ._icon-base(1, 2); }
|
||||
._icon-UMLOrthogonalState { ._icon-base(1, 1); }
|
||||
._icon-UMLSubmachineState { ._icon-base(3, 3); }
|
||||
._icon-UMLFinalState { ._icon-base(1, 3); }
|
||||
._icon-UMLTransition { ._icon-base(1, 4); }
|
||||
._icon-UMLSelfTransition { ._icon-base(2, 4); }
|
||||
._icon-UMLEffect { ._icon-base(8, 4); }
|
||||
._icon-UMLEntryActivity { ._icon-base(9, 4); }
|
||||
._icon-UMLDoActivity { ._icon-base(10, 4); }
|
||||
._icon-UMLExitActivity { ._icon-base(11, 4); }
|
||||
._icon-UMLEvent { ._icon-base(12, 4); }
|
||||
._icon-UMLOpaqueBehavior { ._icon-base(6, 1); }
|
||||
._icon-UMLConnectionPointReference { ._icon-base(11, 13); }
|
||||
// Activity Graphs
|
||||
._icon-UMLActivity { ._icon-base(13, 1); }
|
||||
._icon-UMLInputPin { ._icon-base(7, 2); }
|
||||
._icon-UMLOutputPin { ._icon-base(7, 3); }
|
||||
._icon-UMLAction { ._icon-base(6, 2); }
|
||||
._icon-UMLObjectNode { ._icon-base(3, 12); }
|
||||
._icon-UMLInitialNode { ._icon-base(9, 2); }
|
||||
._icon-UMLActivityFinalNode { ._icon-base(1, 3); }
|
||||
._icon-UMLFlowFinalNode { ._icon-base(12, 11); }
|
||||
._icon-UMLForkNode { ._icon-base(11, 0); }
|
||||
._icon-UMLJoinNode { ._icon-base(10, 2); }
|
||||
._icon-UMLMergeNode { ._icon-base(8, 0); }
|
||||
._icon-UMLDecisionNode { ._icon-base(9, 0); }
|
||||
._icon-UMLControlFlow { ._icon-base(1, 4); }
|
||||
._icon-UMLObjectFlow { ._icon-base(6, 0); }
|
||||
._icon-UMLSwimlaneVert { ._icon-base(2, 3); }
|
||||
._icon-UMLSwimlaneHorz { ._icon-base(7, 11); }
|
||||
._icon-UMLSendSignal { ._icon-base(6, 11); }
|
||||
._icon-UMLAcceptSignal { ._icon-base(5, 11); }
|
||||
// Interactions
|
||||
._icon-UMLLifeline { ._icon-base(2, 5); }
|
||||
._icon-UMLInteraction { ._icon-base(4, 2); }
|
||||
._icon-UMLStateInvariant { ._icon-base(8, 13); }
|
||||
._icon-UMLContinuation { ._icon-base(9, 13); }
|
||||
._icon-UMLInteractionOperand { ._icon-base(1, 12); }
|
||||
._icon-UMLCombinedFragment { ._icon-base(9, 11); }
|
||||
._icon-UMLInteractionUse { ._icon-base(5, 13); }
|
||||
._icon-UMLEndpoint { ._icon-base(6, 13); }
|
||||
._icon-UMLGate { ._icon-base(7, 13); }
|
||||
._icon-UMLSelfLink { ._icon-base(9, 5); }
|
||||
._icon-UMLMessage { ._icon-base(1, 6); }
|
||||
._icon-UMLSelfMessage { ._icon-base(0, 6); }
|
||||
._icon-UMLLostMessage { ._icon-base(3, 13); }
|
||||
._icon-UMLFoundMessage { ._icon-base(4, 13); }
|
||||
._icon-UMLForwardMessage { ._icon-base(12, 5); }
|
||||
._icon-UMLReverseMessage { ._icon-base(13, 5); }
|
||||
// Profiles
|
||||
._icon-UMLProfile { ._icon-base(12, 13); }
|
||||
._icon-UMLMetaClass { ._icon-base(12, 9); }
|
||||
._icon-UMLImage { ._icon-base(0, 12); }
|
||||
._icon-UMLStereotype { ._icon-base(13, 9); }
|
||||
._icon-UMLExtension { ._icon-base(11, 9); }
|
||||
// Robustness
|
||||
._icon-UMLBoundary { ._icon-base(0, 9); }
|
||||
._icon-UMLEntity { ._icon-base(1, 9); }
|
||||
._icon-UMLControl { ._icon-base(2, 9); }
|
||||
|
||||
// ColorPicker Icons
|
||||
.tool-icon-font-color { ._icon-base(0, 8); }
|
||||
.tool-icon-line-color { ._icon-base(1, 8); }
|
||||
.tool-icon-fill-color { ._icon-base(2, 8); }
|
||||
// .tool-icon-font-color { ._icon-base(0, 8, 3px); }
|
||||
// .tool-icon-line-color { ._icon-base(1, 8, 3px); }
|
||||
// .tool-icon-fill-color { ._icon-base(2, 8, 3px); }
|
||||
|
||||
|
||||
// Toolbar Icons
|
||||
.tool-icon-select { ._icon-base(0, 0); }
|
||||
.tool-icon-zoom-in { ._icon-base(7, 9); }
|
||||
.tool-icon-zoom-out { ._icon-base(8, 9); }
|
||||
.tool-icon-stereotype-display { ._icon-base(13, 10); }
|
||||
.tool-icon-line-style { ._icon-base(3, 8); }
|
||||
.tool-icon-auto-resize { ._icon-base(12, 10); }
|
||||
.tool-icon-show-namespace { ._icon-base(7, 8); }
|
||||
.tool-icon-show-properties { ._icon-base(3, 11); }
|
||||
.tool-icon-suppress-attributes { ._icon-base(4, 8); }
|
||||
.tool-icon-suppress-operations { ._icon-base(5, 8); }
|
||||
.tool-icon-suppress-literals { ._icon-base(6, 8); }
|
||||
.tool-icon-show-operation-signature { ._icon-base(8, 8); }
|
||||
.tool-icon-show-compartment-visibility { ._icon-base(9, 8); }
|
||||
.tool-icon-show-compartment-stereotype { ._icon-base(10, 8); }
|
||||
.tool-icon-undo { ._icon-base(11, 7); }
|
||||
.tool-icon-redo { ._icon-base(12, 7); }
|
||||
.tool-icon-copy { ._icon-base(8, 7); }
|
||||
.tool-icon-cut { ._icon-base(7, 7); }
|
||||
.tool-icon-paste { ._icon-base(9, 7); }
|
||||
.tool-icon-delete { ._icon-base(10, 7); }
|
||||
|
||||
.tool-icon-bringtofront { ._icon-base(11, 8); }
|
||||
.tool-icon-sendtoback { ._icon-base(12, 8); }
|
||||
|
||||
.tool-icon-moveup { ._icon-base(1, 10); }
|
||||
.tool-icon-movedown { ._icon-base(2, 10); }
|
||||
.tool-icon-add { ._icon-base(3, 10); }
|
||||
.tool-icon-delete { ._icon-base(4, 10); }
|
||||
.tool-icon-edit { ._icon-base(5, 10); }
|
||||
|
||||
// Quick Dialog Icons
|
||||
.quick-edit-icon-public { ._icon-base(8, 10); }
|
||||
.quick-edit-icon-protected { ._icon-base(9, 10); }
|
||||
.quick-edit-icon-private { ._icon-base(10, 10); }
|
||||
.quick-edit-icon-package { ._icon-base(11, 10); }
|
||||
|
||||
.quick-edit-icon-attribute { ._icon-base(4, 3); }
|
||||
.quick-edit-icon-operation { ._icon-base(8, 3); }
|
||||
.quick-edit-icon-literal { ._icon-base(0, 4); }
|
||||
|
||||
.quick-edit-icon-moveup { ._icon-base(1, 10); }
|
||||
.quick-edit-icon-movedown { ._icon-base(2, 10); }
|
||||
.quick-edit-icon-add { ._icon-base(3, 10); }
|
||||
.quick-edit-icon-delete { ._icon-base(4, 10); }
|
||||
|
||||
.quick-edit-icon-associate { ._icon-base(5, 5); }
|
||||
.quick-edit-icon-shared { ._icon-base(1, 11); }
|
||||
.quick-edit-icon-composite { ._icon-base(2, 11); }
|
||||
|
||||
.quick-edit-icon-navigable { ._icon-base(9, 12); }
|
||||
.quick-edit-icon-notnavigable { ._icon-base(10, 12); }
|
||||
|
||||
.quick-edit-icon-select-type { ._icon-base(2, 6); }
|
||||
.quick-edit-icon-create-type { ._icon-base(3, 6); }
|
||||
|
||||
.quick-edit-icon-select-operation { ._icon-base(9, 3); }
|
||||
.quick-edit-icon-create-operation { ._icon-base(10, 3); }
|
||||
|
||||
.quick-edit-icon-select-signal { ._icon-base(0, 5); }
|
||||
.quick-edit-icon-create-signal { ._icon-base(1, 5); }
|
||||
|
||||
|
||||
// Others
|
||||
|
||||
.validation-error {
|
||||
background: url(icons/warning.svg) no-repeat;
|
||||
}
|
||||
|
||||
.validation-ok {
|
||||
background: url(icons/okay.svg) no-repeat;
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
.bonsai,
|
||||
.bonsai li {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.bonsai li {
|
||||
position: relative;
|
||||
padding-left: 1.3em; /* padding for the thumb */
|
||||
}
|
||||
|
||||
li .thumb {
|
||||
margin: -1px 0 0 -1em; /* negative margin into the padding of the li */
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
li.has-children > .thumb:after {
|
||||
content: '▸';
|
||||
}
|
||||
|
||||
li.has-children.expanded > .thumb:after {
|
||||
content: '▾';
|
||||
}
|
||||
|
||||
li.collapsed > ol.bonsai {
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.bonsai .all,
|
||||
.bonsai .none {
|
||||
cursor: pointer;
|
||||
}
|
@ -1,812 +0,0 @@
|
||||
/* bootstrap.css override
|
||||
---------------------------------------------------------*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: source-sans-pro, Helvetica, Arial, sans-serif !imporant;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #555;
|
||||
background-color: #F8F8F8;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
.module, .left-section {
|
||||
overflow-y: auto;
|
||||
height: calc(100vh - 95px);
|
||||
}
|
||||
|
||||
a {
|
||||
color: #137cd4;
|
||||
}
|
||||
|
||||
a:focus {
|
||||
outline: none;
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 2px #6fb5f1;
|
||||
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 2px #6fb5f1;
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 2px #6fb5f1;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
code,
|
||||
pre {
|
||||
padding: 20px;
|
||||
font-family: source-code-pro, Monaco, Menlo, Consolas, "Courier New", monospace;
|
||||
font-size: 12px;
|
||||
color: #454545;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
p code,
|
||||
p pre,
|
||||
li code,
|
||||
li pre {
|
||||
border-radius: 2px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin: 10px 0 0;
|
||||
font-weight: 300;
|
||||
line-height: 20px;
|
||||
color: #000;
|
||||
text-rendering: optimizelegibility;
|
||||
}
|
||||
|
||||
h1 small,
|
||||
h2 small,
|
||||
h3 small,
|
||||
h4 small,
|
||||
h5 small,
|
||||
h6 small {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3 {
|
||||
line-height: 1.3em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 40px;
|
||||
font-weight: 400;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 27px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 17.5px;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 11.9px;
|
||||
}
|
||||
|
||||
h1 small {
|
||||
font-size: 24.5px;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt,
|
||||
dd {
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
dt {
|
||||
color: #000;
|
||||
font-weight: 400;
|
||||
margin-bottom: 5px;
|
||||
-webkit-font-smoothing: subpixel-antialiased; /* this makes it slightly bolder */
|
||||
}
|
||||
|
||||
dd {
|
||||
display: inline-block;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
textarea {
|
||||
font-family: source-sans-pro, Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
table p {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 4px 12px;
|
||||
margin-bottom: 0;
|
||||
*margin-left: .3em;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
color: #454545;
|
||||
text-align: center;
|
||||
text-shadow: none;
|
||||
background-color: #e5e9e9;
|
||||
*background-color: #e5e9e9;
|
||||
background-image: none;
|
||||
|
||||
border: 1px solid #cdcdcd;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.btn:hover,
|
||||
.btn:focus,
|
||||
.btn:active,
|
||||
.btn.active,
|
||||
.btn.disabled,
|
||||
.btn[disabled] {
|
||||
color: #454545;
|
||||
background-color: #e5e9e9;
|
||||
*background-color: #e5e9e9;
|
||||
}
|
||||
|
||||
.btn:active,
|
||||
.btn.active {
|
||||
background-color: #d3d7d7;
|
||||
}
|
||||
|
||||
.btn:first-child {
|
||||
*margin-left: 0;
|
||||
}
|
||||
|
||||
.btn:hover,
|
||||
.btn:focus {
|
||||
color: #454545;
|
||||
text-decoration: none;
|
||||
background-position: 0 -15px;
|
||||
-webkit-transition: background-position 0.1s linear;
|
||||
-moz-transition: background-position 0.1s linear;
|
||||
-o-transition: background-position 0.1s linear;
|
||||
transition: background-position 0.1s linear;
|
||||
}
|
||||
|
||||
.btn:focus {
|
||||
border: 1px solid #2893ef;
|
||||
outline: 0;
|
||||
outline: thin dotted \9;
|
||||
/* IE6-9 */
|
||||
|
||||
-webkit-box-shadow: 0 0 0 1px #94ceff;
|
||||
-moz-box-shadow: 0 0 0 1px #94ceff;
|
||||
box-shadow: 0 0 0 1px #94ceff;
|
||||
}
|
||||
|
||||
.btn.active,
|
||||
.btn:active {
|
||||
background-image: none;
|
||||
outline: 0;
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.15);
|
||||
-moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.15);
|
||||
box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.btn.disabled,
|
||||
.btn[disabled] {
|
||||
cursor: default;
|
||||
background-image: none;
|
||||
opacity: 0.65;
|
||||
filter: alpha(opacity=65);
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.btn-large {
|
||||
padding: 11px 19px;
|
||||
font-size: 17.5px;
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.btn-large [class^="icon-"],
|
||||
.btn-large [class*=" icon-"] {
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.btn-small {
|
||||
padding: 2px 10px;
|
||||
font-size: 11.9px;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.btn-small [class^="icon-"],
|
||||
.btn-small [class*=" icon-"] {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.btn-mini [class^="icon-"],
|
||||
.btn-mini [class*=" icon-"] {
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
.btn-mini {
|
||||
padding: 0 6px;
|
||||
font-size: 10.5px;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.btn-block {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.btn-block + .btn-block {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
input[type="submit"].btn-block,
|
||||
input[type="reset"].btn-block,
|
||||
input[type="button"].btn-block {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.btn-primary.active,
|
||||
.btn-warning.active,
|
||||
.btn-danger.active,
|
||||
.btn-success.active,
|
||||
.btn-info.active,
|
||||
.btn-inverse.active {
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
color: #ffffff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
background-color: #006dcc;
|
||||
*background-color: #0044cc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(to bottom, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.btn-primary:hover,
|
||||
.btn-primary:focus,
|
||||
.btn-primary:active,
|
||||
.btn-primary.active,
|
||||
.btn-primary.disabled,
|
||||
.btn-primary[disabled] {
|
||||
color: #ffffff;
|
||||
background-color: #0044cc;
|
||||
*background-color: #003bb3;
|
||||
}
|
||||
|
||||
.btn-primary:active,
|
||||
.btn-primary.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
|
||||
|
||||
select,
|
||||
textarea,
|
||||
input[type="text"],
|
||||
input[type="password"],
|
||||
input[type="datetime"],
|
||||
input[type="datetime-local"],
|
||||
input[type="date"],
|
||||
input[type="month"],
|
||||
input[type="time"],
|
||||
input[type="week"],
|
||||
input[type="number"],
|
||||
input[type="email"],
|
||||
input[type="url"],
|
||||
input[type="search"],
|
||||
input[type="tel"],
|
||||
input[type="color"],
|
||||
.uneditable-input {
|
||||
color: #454545;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
textarea:focus,
|
||||
input[type="text"]:focus,
|
||||
input[type="password"]:focus,
|
||||
input[type="datetime"]:focus,
|
||||
input[type="datetime-local"]:focus,
|
||||
input[type="date"]:focus,
|
||||
input[type="month"]:focus,
|
||||
input[type="time"]:focus,
|
||||
input[type="week"]:focus,
|
||||
input[type="number"]:focus,
|
||||
input[type="email"]:focus,
|
||||
input[type="url"]:focus,
|
||||
input[type="search"]:focus,
|
||||
input[type="tel"]:focus,
|
||||
input[type="color"]:focus,
|
||||
.uneditable-input:focus {
|
||||
border-color: #2893ef;
|
||||
outline: 0;
|
||||
outline: thin dotted \9;
|
||||
/* IE6-9 */
|
||||
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 1px #94ceff;
|
||||
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 1px #94ceff;
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 1px #94ceff;
|
||||
}
|
||||
|
||||
.nav > li > a:hover,
|
||||
.nav > li > a:focus {
|
||||
background-color: #e0f0fa;
|
||||
border-radius: 3px;
|
||||
color: #137cd4;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.navbar .nav > li > a {
|
||||
padding: 10px 15px 10px;
|
||||
color: #000;
|
||||
font-weight: 300;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.nav-list {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
.package-list.nav-list {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.nav-list > li > a,
|
||||
.nav-list .nav-header {
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.nav-header a,
|
||||
.nav-header a:hover {
|
||||
color: #000 !important;
|
||||
}
|
||||
|
||||
.navbar .brand {
|
||||
font-weight: 500;
|
||||
color: #000;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.navbar-inner {
|
||||
min-height: 40px;
|
||||
border: none;
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-inner {
|
||||
background-image: none;
|
||||
background: #fff;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.12);
|
||||
|
||||
-webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.06);
|
||||
-moz-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.06);
|
||||
box-shadow: 0 1px 6px rgba(0, 0, 0, 0.06);
|
||||
}
|
||||
|
||||
.navbar-inverse .brand,
|
||||
.navbar-inverse .nav > li > a {
|
||||
color: #000;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.navbar-inverse .brand:hover,
|
||||
.navbar-inverse .nav > li > a:hover,
|
||||
.navbar-inverse .brand:focus,
|
||||
.navbar-inverse .nav > li > a:focus {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.navbar-inverse .brand {
|
||||
color: #000;
|
||||
margin-left: -10px;
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-text {
|
||||
color: #454545;
|
||||
}
|
||||
|
||||
.navbar-inverse .nav > li > a:focus,
|
||||
.navbar-inverse .nav > li > a:hover {
|
||||
color: #000;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.navbar-inverse .nav .active > a,
|
||||
.navbar-inverse .nav .active > a:hover,
|
||||
.navbar-inverse .nav .active > a:focus {
|
||||
color: #000;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-link {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-link:hover,
|
||||
.navbar-inverse .navbar-link:focus {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.nav-header {
|
||||
padding: 3px 15px;
|
||||
font-size: 11px;
|
||||
font-weight: 400;
|
||||
line-height: 20px;
|
||||
color: #999999;
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
|
||||
text-transform: none;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
padding-bottom: 0;
|
||||
margin: 10px 0 40px;
|
||||
border-bottom: 1px solid #d7d7d7;
|
||||
}
|
||||
|
||||
|
||||
.page-header h1 {
|
||||
background: #F8F8F8;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
bottom: -19px;
|
||||
}
|
||||
|
||||
.alert {
|
||||
padding: 4px 7px;
|
||||
}
|
||||
|
||||
.alert-info {
|
||||
color: #000;
|
||||
background-color: #e0f0fa;
|
||||
border-color: #d9eaf4;
|
||||
border-radius: 3px;
|
||||
font-size: 12px;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.radio input[type="radio"],
|
||||
.checkbox input[type="checkbox"] {
|
||||
float: left;
|
||||
margin-left: -15px;
|
||||
}
|
||||
|
||||
.label,
|
||||
badge {
|
||||
padding: 4px 7px;
|
||||
font-weight: 400;
|
||||
color: #ffffff;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.label-non-nullable,
|
||||
.label-nullable,
|
||||
.label-optional,
|
||||
.label-info,
|
||||
.badge-info {
|
||||
background-color: #eee;
|
||||
color: #222;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.well {
|
||||
padding: 19px 19px 0;
|
||||
}
|
||||
|
||||
.table {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
/* non-bootstrap css
|
||||
---------------------------------------------------------*/
|
||||
|
||||
[class^="icon-"]{
|
||||
background: none;
|
||||
}
|
||||
body{
|
||||
padding-left: 1.5em;
|
||||
padding-right: 1.5em;
|
||||
}
|
||||
|
||||
.number-of-modules {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 1.5em;
|
||||
margin: 10px 0 0 15px;
|
||||
}
|
||||
|
||||
#other-module{
|
||||
display: none;
|
||||
overflow: scroll;
|
||||
}
|
||||
#toggle-other-modules i{
|
||||
font-size: 28px;
|
||||
}
|
||||
.nav-header{
|
||||
}
|
||||
|
||||
#description {
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
}
|
||||
section > h2,
|
||||
section > h3{
|
||||
font-size: 30px;
|
||||
line-height: 30px;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 25px;
|
||||
text-indent: 2px;
|
||||
}
|
||||
.properties > h3 {
|
||||
font-size: 20px;
|
||||
line-height: 20px;
|
||||
margin-bottom: 15px;
|
||||
margin-top: 30px;
|
||||
text-indent: 2px;
|
||||
}
|
||||
.methods > h3 {
|
||||
font-size: 20px;
|
||||
line-height: 20px;
|
||||
margin-bottom: 15px;
|
||||
margin-top: 30px;
|
||||
text-indent: 2px;
|
||||
}
|
||||
h3 .checkbox{
|
||||
display: inline-block;
|
||||
font-weight: 300;
|
||||
margin-left: 10px;
|
||||
vertical-align: middle;
|
||||
width: auto;
|
||||
}
|
||||
.element-list ul{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.element-list ul li {
|
||||
display: inline-block;
|
||||
padding: 3px 8px;
|
||||
margin-bottom: 10px;
|
||||
margin-right: 5px;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
color: #454545;
|
||||
text-align: center;
|
||||
background-color: #e0f0fa;
|
||||
*background-color: #e0f0fa;
|
||||
border: 1px solid #d9eaf4;
|
||||
background-image: none;
|
||||
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.element-list ul li a {
|
||||
padding-top:0;
|
||||
padding-bottom:0;
|
||||
}
|
||||
.element-list ul li a:hover {
|
||||
background: transparent;
|
||||
}
|
||||
.member{
|
||||
background: #fff;
|
||||
color: #454545;
|
||||
margin-bottom: 20px;
|
||||
overflow: hidden; /* clearfix */
|
||||
padding: 20px 17px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #dedede;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
/*.member:last-of-type{*/
|
||||
/*margin-bottom: 0;*/
|
||||
/*}*/
|
||||
.member h4{
|
||||
border-bottom: 1px solid #e7e7e7;
|
||||
font-weight: 400;
|
||||
padding-bottom: 10px;
|
||||
margin-top: -10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.member .code,
|
||||
.member .code {
|
||||
background: #f9f9f9;
|
||||
border: 1px solid #eee;
|
||||
border-top: 1px solid #e7e7e7;
|
||||
display: none;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.member .example {
|
||||
display: block;
|
||||
margin-bottom: 15px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.member .example:before {
|
||||
color: #888;
|
||||
content: 'Example';
|
||||
font-style: italic;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.member.private{
|
||||
display: none;
|
||||
background: #fff;
|
||||
}
|
||||
.show-private .member.private{
|
||||
display: block;
|
||||
}
|
||||
.member .scope{
|
||||
color: #888;
|
||||
font-style: italic;
|
||||
padding-bottom: 10px;
|
||||
margin-top: -10px;
|
||||
}
|
||||
|
||||
.member .anchor {
|
||||
color: inherit;
|
||||
visibility: hidden
|
||||
}
|
||||
|
||||
.member .anchor:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.member .anchor:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.member .anchor .icon-link {
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.member:hover .anchor {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.deprecated {
|
||||
background: #EBEBEB;
|
||||
background-image: repeating-linear-gradient(135deg, transparent, transparent 35px, rgba(255,255,255,.5) 35px, rgba(255,255,255,.5) 70px);
|
||||
}
|
||||
|
||||
.deprecated .label-deprecated {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.deprecated .scope {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.show-code {
|
||||
float: right;
|
||||
}
|
||||
|
||||
/* Typeahead styles (Bootstrap conflicts) */
|
||||
|
||||
.twitter-typeahead .tt-query,
|
||||
.twitter-typeahead .tt-hint {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.tt-dropdown-menu {
|
||||
min-width: 160px;
|
||||
margin-top: 0;
|
||||
padding: 5px 0;
|
||||
background-color: #fff;
|
||||
border: 1px solid #d7d7d7;
|
||||
*border-right-width: 2px;
|
||||
*border-bottom-width: 2px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12);
|
||||
-moz-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12);
|
||||
box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12);
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
.tt-suggestion {
|
||||
display: block;
|
||||
font-family: source-sans-pro, Helvetica, Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
padding: 3px 10px;
|
||||
}
|
||||
|
||||
.tt-suggestion.tt-is-under-cursor {
|
||||
color: #000;
|
||||
background-color: #e0f0fa;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.tt-suggestion.tt-is-under-cursor a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.tt-suggestion p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.navbar-fixed-top .container {
|
||||
margin: 5px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
span.twitter-typeahead {
|
||||
float: right;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
input.typeahead, input.tt-hint {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
input.tt-hint {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
dl .label {
|
||||
margin-bottom: 7px;
|
||||
}
|
||||
|
||||
/* --------------- Appended ---------------- */
|
||||
|
||||
.node-icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
display: inline-block;
|
||||
}
|
@ -1,97 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2013-2014 Minkyu Lee. All rights reserved.
|
||||
*
|
||||
* NOTICE: All information contained herein is, and remains the
|
||||
* property of Minkyu Lee. The intellectual and technical concepts
|
||||
* contained herein are proprietary to Minkyu Lee and may be covered
|
||||
* by Republic of Korea and Foreign Patents, patents in process,
|
||||
* and are protected by trade secret or copyright law.
|
||||
* Dissemination of this information or reproduction of this material
|
||||
* is strictly forbidden unless prior written permission is obtained
|
||||
* from Minkyu Lee (niklaus.lee@gmail.com).
|
||||
*
|
||||
*/
|
||||
|
||||
// ----- Light Theme ----------------------------------------------------------
|
||||
|
||||
/*
|
||||
// Icons
|
||||
@ui-image-folder: "Default";
|
||||
@ui-icon-url: url('icons/icons-light.png');
|
||||
|
||||
// Widget
|
||||
@ui-widget-color: #e4e4e4;
|
||||
@ui-widget-light-color: lighten(@ui-widget-color, 15%);
|
||||
@ui-widget-dark-color: darken(@ui-widget-color, 15%);
|
||||
@ui-widget-border-color: darken(@ui-widget-color, 20%);
|
||||
@ui-widget-text-color: #454545;
|
||||
@ui-widget-text-weight: 400;
|
||||
|
||||
// Widget Header
|
||||
@ui-widget-header-color: darken(@ui-widget-color, 12%);
|
||||
@ui-widget-header-light-color: lighten(@ui-widget-header-color, 10%);
|
||||
@ui-widget-header-dark-color: darken(@ui-widget-header-color, 10%);
|
||||
@ui-widget-header-border-color: @ui-widget-border-color;
|
||||
@ui-widget-header-text-color: @ui-widget-text-color;
|
||||
|
||||
// Widget Content
|
||||
@ui-widget-content-color: lighten(@ui-widget-color, 5%);
|
||||
@ui-widget-content-light-color: lighten(@ui-widget-content-color, 2%);
|
||||
@ui-widget-content-dark-color: darken(@ui-widget-content-color, 2%);
|
||||
@ui-widget-content-border-color: darken(@ui-widget-content-color, 5%);
|
||||
@ui-widget-content-hover-color: lighten(@ui-widget-content-color, 5%);
|
||||
|
||||
// Widget Active
|
||||
@ui-widget-active-color: #0380e8;
|
||||
@ui-widget-active-light-color: lighten(@ui-widget-active-color, 10%);
|
||||
@ui-widget-active-dark-color: darken(@ui-widget-active-color, 10%);
|
||||
@ui-widget-active-border-color: darken(@ui-widget-active-color, 20%);
|
||||
|
||||
// Context Menu
|
||||
@ui-context-menu-background-color: #ffffff;
|
||||
@ui-context-menu-text-color: @ui-widget-text-color;
|
||||
@ui-context-menu-border-color: #ddd;
|
||||
@ui-context-menu-hover-color: #d6f6ff;
|
||||
*/
|
||||
|
||||
|
||||
// ----- Dark Theme ----------------------------------------------------------
|
||||
|
||||
// Icons
|
||||
@ui-image-folder: "Black";
|
||||
@ui-icon-url: url('assets/icons/icons-light.png');
|
||||
|
||||
// Widget
|
||||
@ui-widget-color: #3b3f41;
|
||||
@ui-widget-light-color: lighten(@ui-widget-color, 3%);
|
||||
@ui-widget-dark-color: darken(@ui-widget-color, 3%);
|
||||
@ui-widget-border-color: darken(@ui-widget-color, 5%);
|
||||
@ui-widget-text-color: #c7c7c7;
|
||||
@ui-widget-text-weight: 400;
|
||||
|
||||
// Widget Header
|
||||
@ui-widget-header-color: darken(@ui-widget-color, 4%);
|
||||
@ui-widget-header-light-color: lighten(@ui-widget-header-color, 2%);
|
||||
@ui-widget-header-dark-color: darken(@ui-widget-header-color, 2%);
|
||||
@ui-widget-header-border-color: @ui-widget-border-color;
|
||||
@ui-widget-header-text-color: @ui-widget-text-color;
|
||||
|
||||
// Widget Content
|
||||
@ui-widget-content-color: lighten(@ui-widget-color, 2%);
|
||||
@ui-widget-content-light-color: lighten(@ui-widget-content-color, 2%);
|
||||
@ui-widget-content-dark-color: darken(@ui-widget-content-color, 2%);
|
||||
@ui-widget-content-border-color: darken(@ui-widget-content-color, 3%);
|
||||
@ui-widget-content-hover-color: lighten(@ui-widget-content-color, 3%);
|
||||
|
||||
// Widget Active
|
||||
@ui-widget-active-color: #0079de;
|
||||
@ui-widget-active-light-color: lighten(@ui-widget-active-color, 3%);
|
||||
@ui-widget-active-dark-color: darken(@ui-widget-active-color, 3%);
|
||||
@ui-widget-active-border-color: darken(@ui-widget-active-color, 5%);
|
||||
|
||||
// Context Menu
|
||||
@ui-context-menu-background-color: @ui-widget-color;
|
||||
@ui-context-menu-text-color: @ui-widget-text-color;
|
||||
@ui-context-menu-border-color: @ui-widget-border-color;
|
||||
@ui-context-menu-hover-color: lighten(@ui-context-menu-background-color, 5%);
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 12 KiB |
Binary file not shown.
Before Width: | Height: | Size: 12 KiB |
Binary file not shown.
Before Width: | Height: | Size: 8.6 KiB |
Binary file not shown.
Before Width: | Height: | Size: 12 KiB |
2276
Documentation/Design-Documents/assets/js/bootstrap.js
vendored
2276
Documentation/Design-Documents/assets/js/bootstrap.js
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,247 +0,0 @@
|
||||
(function($){
|
||||
$.fn.bonsai = function(options) {
|
||||
var args = arguments;
|
||||
return this.each(function() {
|
||||
var bonsai = $(this).data('bonsai');
|
||||
if (!bonsai) {
|
||||
bonsai = new Bonsai(this, options);
|
||||
$(this).data('bonsai', bonsai);
|
||||
}
|
||||
if (typeof options == 'string') {
|
||||
var method = options;
|
||||
bonsai[method].apply(bonsai, [].slice.call(args, 1));
|
||||
}
|
||||
});
|
||||
};
|
||||
$.bonsai = {};
|
||||
$.bonsai.defaults = {
|
||||
expandAll: false, // boolean expands all items
|
||||
expand: null, // function to expand an item
|
||||
collapse: null, // function to collapse an item
|
||||
checkboxes: false, // requires jquery.qubit
|
||||
// createCheckboxes: creates checkboxes for each list item.
|
||||
//
|
||||
// The name and value for the checkboxes can be declared in the
|
||||
// markup using `data-name` and `data-value`.
|
||||
//
|
||||
// The name is inherited from parent items if not specified.
|
||||
//
|
||||
// Checked state can be indicated using `data-checked`.
|
||||
createCheckboxes: false,
|
||||
// handleDuplicateCheckboxes: adds onChange bindings to update
|
||||
// any other checkboxes that have the same value.
|
||||
handleDuplicateCheckboxes: false,
|
||||
selectAllExclude: null
|
||||
};
|
||||
var Bonsai = function(el, options) {
|
||||
var self = this;
|
||||
options = options || {};
|
||||
this.options = $.extend({}, $.bonsai.defaults, options);
|
||||
this.el = $(el).addClass('bonsai').data('bonsai', this);
|
||||
this.update();
|
||||
if (this.isRootNode()) {
|
||||
if (this.options.handleDuplicateCheckboxes) this.handleDuplicates();
|
||||
if (this.options.checkboxes) this.el.qubit(this.options);
|
||||
if (this.options.addExpandAll) this.addExpandAllLink();
|
||||
if (this.options.addSelectAll) this.addSelectAllLink();
|
||||
this.el.on('click', '.thumb', function(ev) {
|
||||
self.toggle($(ev.currentTarget).closest('li'));
|
||||
});
|
||||
}
|
||||
if (this.options.expandAll) this.expandAll();
|
||||
};
|
||||
Bonsai.prototype = {
|
||||
isRootNode: function() {
|
||||
return this.options.scope == this.el;
|
||||
},
|
||||
toggle: function(listItem) {
|
||||
if (!$(listItem).hasClass('expanded')) {
|
||||
this.expand(listItem);
|
||||
}
|
||||
else {
|
||||
this.collapse(listItem);
|
||||
}
|
||||
},
|
||||
expand: function(listItem) {
|
||||
this.setExpanded(listItem, true);
|
||||
},
|
||||
collapse: function(listItem) {
|
||||
this.setExpanded(listItem, false);
|
||||
},
|
||||
setExpanded: function(listItem, expanded) {
|
||||
listItem = $(listItem);
|
||||
if (listItem.length > 1) {
|
||||
var self = this;
|
||||
listItem.each(function() {
|
||||
self.setExpanded(this, expanded);
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (expanded) {
|
||||
if (!listItem.data('subList')) return;
|
||||
listItem = $(listItem).addClass('expanded')
|
||||
.removeClass('collapsed');
|
||||
$(listItem.data('subList')).css('height', 'auto');
|
||||
}
|
||||
else {
|
||||
listItem = $(listItem).addClass('collapsed')
|
||||
.removeClass('expanded');
|
||||
$(listItem.data('subList')).height(0);
|
||||
}
|
||||
},
|
||||
expandAll: function() {
|
||||
this.expand(this.el.find('li'));
|
||||
},
|
||||
collapseAll: function() {
|
||||
this.collapse(this.el.find('li'));
|
||||
},
|
||||
update: function() {
|
||||
var self = this;
|
||||
// store the scope in the options for child nodes
|
||||
if (!this.options.scope) {
|
||||
this.options.scope = this.el;
|
||||
}
|
||||
// look for a nested list (if any)
|
||||
this.el.children().each(function() {
|
||||
var item = $(this);
|
||||
if (self.options.createCheckboxes) self.insertCheckbox(item);
|
||||
// insert a thumb if it doesn't already exist
|
||||
if (item.children().filter('.thumb').length == 0) {
|
||||
var thumb = $('<div class="thumb"></div>');
|
||||
item.prepend(thumb);
|
||||
}
|
||||
var subLists = item.children().filter('ol, ul');
|
||||
item.toggleClass('has-children', subLists.find('li').length > 0);
|
||||
// if there is a child list
|
||||
subLists.each(function() {
|
||||
// that's not empty
|
||||
if ($('li', this).length == 0) {
|
||||
return;
|
||||
}
|
||||
// then this el has children
|
||||
item.data('subList', this);
|
||||
// collapse the nested list
|
||||
if (item.hasClass('expanded')) {
|
||||
self.expand(item);
|
||||
}
|
||||
else {
|
||||
self.collapse(item);
|
||||
}
|
||||
// handle any deeper nested lists
|
||||
var exists = !!$(this).data('bonsai');
|
||||
$(this).bonsai(exists ? 'update' : self.options);
|
||||
});
|
||||
});
|
||||
this.expand = this.options.expand || this.expand;
|
||||
this.collapse = this.options.collapse || this.collapse;
|
||||
},
|
||||
insertCheckbox: function(listItem) {
|
||||
if (listItem.find('> input[type=checkbox]').length) return;
|
||||
var id = this.generateId(listItem),
|
||||
checkbox = $('<input type="checkbox" name="'
|
||||
+ this.getCheckboxName(listItem) + '" id="' + id + '" /> '
|
||||
),
|
||||
children = listItem.children(),
|
||||
// get the first text node for the label
|
||||
text = listItem.contents().filter(function() {
|
||||
return this.nodeType == 3;
|
||||
}).first();
|
||||
checkbox.val(listItem.data('value'));
|
||||
checkbox.prop('checked', listItem.data('checked'))
|
||||
children.remove();
|
||||
listItem.append(checkbox)
|
||||
.append(
|
||||
$('<label for="' + id + '">').append(text ? text : children.first())
|
||||
)
|
||||
.append(text ? children : children.slice(1));
|
||||
},
|
||||
handleDuplicates: function() {
|
||||
var self = this;
|
||||
self.el.on('change', 'input[type=checkbox]', function(ev) {
|
||||
var checkbox = $(ev.target);
|
||||
if (!checkbox.val()) return;
|
||||
// select all duplicate checkboxes that need to be updated
|
||||
var selector = 'input[type=checkbox]'
|
||||
+ '[value="' + checkbox.val() + '"]'
|
||||
+ '[name="' + checkbox.attr('name') + '"]'
|
||||
+ (checkbox.prop('checked') ? ':not(:checked)' : ':checked');
|
||||
self.el.find(selector).prop({
|
||||
checked: checkbox.prop('checked'),
|
||||
indeterminate: checkbox.prop('indeterminate')
|
||||
}).trigger('change');
|
||||
});
|
||||
},
|
||||
idPrefix: 'checkbox-',
|
||||
generateId: function(listItem) {
|
||||
do {
|
||||
var id = this.idPrefix + Bonsai.uniqueId++;
|
||||
}
|
||||
while($('#' + id).length > 0);
|
||||
return id;
|
||||
},
|
||||
getCheckboxName: function(listItem) {
|
||||
return listItem.data('name')
|
||||
|| listItem.parents().filter('[data-name]').data('name');
|
||||
},
|
||||
addExpandAllLink: function() {
|
||||
var self = this;
|
||||
$('<div class="expand-all">')
|
||||
.append($('<a class="all">Expand all</a>')
|
||||
.on('click', function() {
|
||||
self.expandAll();
|
||||
})
|
||||
)
|
||||
.append('<i class="separator"></i>')
|
||||
.append($('<a class="none">Collapse all</a>')
|
||||
.on('click', function() {
|
||||
self.collapseAll();
|
||||
})
|
||||
)
|
||||
.insertBefore(this.el);
|
||||
},
|
||||
addSelectAllLink: function() {
|
||||
var scope = this.options.scope,
|
||||
self = this;
|
||||
function getCheckboxes() {
|
||||
// return all checkboxes that are not in hidden list items
|
||||
return scope.find('li')
|
||||
.filter(self.options.selectAllExclude || function() {
|
||||
return $(this).css('display') != 'none';
|
||||
})
|
||||
.find('> input[type=checkbox]');
|
||||
}
|
||||
$('<div class="check-all">')
|
||||
.append($('<a class="all">Select all</a>')
|
||||
.css('cursor', 'pointer')
|
||||
.on('click', function() {
|
||||
getCheckboxes().prop({
|
||||
checked: true,
|
||||
indeterminate: false
|
||||
});
|
||||
})
|
||||
)
|
||||
.append('<i class="separator"></i>')
|
||||
.append($('<a class="none">Select none</a>')
|
||||
.css('cursor', 'pointer')
|
||||
.on('click', function() {
|
||||
getCheckboxes().prop({
|
||||
checked: false,
|
||||
indeterminate: false
|
||||
});
|
||||
})
|
||||
)
|
||||
.insertAfter(this.el);
|
||||
},
|
||||
setCheckedValues: function(values) {
|
||||
var all = this.options.scope.find('input[type=checkbox]');
|
||||
$.each(values, function(key, value) {
|
||||
all.filter('[value="' + value + '"]')
|
||||
.prop('checked', true)
|
||||
.trigger('change');
|
||||
});
|
||||
}
|
||||
};
|
||||
$.extend(Bonsai, {
|
||||
uniqueId: 0
|
||||
});
|
||||
}(jQuery));
|
File diff suppressed because one or more lines are too long
Binary file not shown.
Before Width: | Height: | Size: 64 KiB |
Loading…
x
Reference in New Issue
Block a user