diff --git a/engine/database.sql b/engine/database.sql new file mode 100644 index 0000000..c5cb8ac --- /dev/null +++ b/engine/database.sql @@ -0,0 +1,17 @@ +CREATE TABLE `tests`( + `id` int(4) UNSIGNED NOT NULL auto_increment, + `name` varchar(65) NOT NULL default '', + `description` text NOT NULL default '', + `quiz` text NOT NULL default '', + `tag` varchar(65) NOT NULL default '', + `allowed` tinyint(1) UNSIGNED NOT NULL default 0, + PRIMARY KEY (`id`) +) CHARACTER SET utf8 COLLATE utf8_general_ci; + +CREATE TABLE `results`( + `id` int(4) UNSIGNED NOT NULL auto_increment, + `submitter` varchar(65) NOT NULL default '', + `time` timestamp NOT NULL default current_timestamp, + `answered` text NOT NULL default '', + PRIMARY KEY (`id`) +) CHARACTER SET utf8 COLLATE utf8_general_ci; diff --git a/engine/engine.php b/engine/engine.php new file mode 100644 index 0000000..515f068 --- /dev/null +++ b/engine/engine.php @@ -0,0 +1,100 @@ +. + **/ + +//config +$sql_user="squiz"; +$sql_passwd="squizuserforgood"; +$sql_db="squiz"; +$quiz_tag=0; + +$db=new PDO("mysql:host=localhost;dbname=".$sql_db.";charset=utf8", $sql_user, $sql_passwd); +$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + +if(isset($_GET['list'])){ + if($quiz_tag!=0){ + $sql=$db->prepare("SELECT id, name, description FROM tests WHERE allowed=1 and tag=:tag"); + $sql->execute(array(":tag"=>$quiz_tag)); + } + else{ + $sql=$db->prepare("SELECT id, name, description FROM tests WHERE allowed=1"); + $sql->execute(); + } + + $obj=array(); + while($row=$sql->fetch(PDO::FETCH_ASSOC)){ + array_push($obj, array("name"=>$row['name'], "description"=>$row['description'], "file"=>"//".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?getQuiz=".$row['id'])); + } + + header("Content-type: text/json; charset=UTF-8"); + echo json_encode($obj); + die(); +} + +if(isset($_GET['getQuiz'])){ + $sql=$db->prepare("SELECT quiz FROM tests WHERE id=:id"); + $sql->execute(array(":id"=>$_GET['getQuiz'])); + $res=$sql->fetch(PDO::FETCH_ASSOC); + + header("Content-type: text/json; charset=UTF-8"); + echo $res['quiz']; + die(); +} + +if(isset($_POST['submitResult']) && isset($_POST['submitResult_submitter'])){ + $sql=$db->prepare("INSERT INTO results (submitter, answered) VALUES (:submitter, :answered)"); + $sql->execute(array(":submitter"=>$_POST['submitResult_submitter'], ":answered"=>$_POST['submitResult'])); + $id=$db->lastInsertId(); + + echo $id; + die(); +} + +if(isset($_GET['getResult'])){ + $sql=$db->prepare("SELECT COUNT(id) AS count, submitter, time, answered FROM results WHERE id=:id"); + $sql->execute(array(":id"=>$_GET['getResult'])); + $res=$sql->fetch(PDO::FETCH_ASSOC); + + if($res['count']<1){ + echo "not found"; + } + else{ + $obj=array("submitter"=>$res['submitter'], "time"=>$res['time'], "answered"=>$res['answered']); + + header("Content-type: text/json; charset=UTF-8"); + echo json_encode($obj); + die(); + } +} + +if(isset($_POST['submitQuiz']) && isset($_POST['submitQuiz_tag']) && isset($_POST['submitQuiz_name']) && isset($_POST['submitQuiz_description'])){ + $sql=$db->prepare("INSERT INTO tests (name, description, quiz, tag) VALUES (:name, :desc, :quiz, :tag)"); + $sql->execute(array(":name"=>$_POST['submitQuiz_name'], ":desc"=>$_POST['submitQuiz_description'], ":quiz"=>$_POST['submitQuiz'], ":tag"=>$_POST['submitQuiz_tag'])); + $id=$db->lastInsertId(); + + $link="https://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?getQuiz=".$id; + + echo $link; + die(); +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..5591b48 --- /dev/null +++ b/index.html @@ -0,0 +1,87 @@ + + + + + + {{title}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

{{title}}

+ +
+ +
+ + + diff --git a/indexc.html b/indexc.html new file mode 100644 index 0000000..4722648 --- /dev/null +++ b/indexc.html @@ -0,0 +1,11 @@ + +

{{title}}

+ diff --git a/lang.json b/lang.json new file mode 100644 index 0000000..025c60a --- /dev/null +++ b/lang.json @@ -0,0 +1,81 @@ +{ + "conf_isOffline":false, + "conf_offline_useRepo":"http://systemtest.tk/sQuiz/", + "version":"0.9b (SVN revision: 9)", + "title":"sQuiz - Online és Offline kvízek egyszerűen!", + "description":"Online és Offline kvízek egyszerű készítése és kitöltése. Teljes nyílt forráskód HTML5, CSS3 és jQuery felhasználásával, fókuszban a könnyű implementálás.", + "cookie_message":"Ez az oldal sütiket használ a megfelelő működés elérésének érdekében. Az oldal használatával elfogadja ezt és a szerződési feltételeket (lásd az oldal alján).", + "cookie_dismiss":"Elfogadom", + "tester":"Kvíz megoldása", + "newquiz":"Új kvíz készítése", + "resulttest":"Eredmény ellenőrzése", + "more":"További tudnivalók", + "fromlist":"Kiválasztás a listáról", + "uploadtest":"Kvíz fájl feltöltése", + "id":"Azonosító", + "name":"Megnevezés", + "desc":"Leírás", + "solve":"Megoldás!", + "back":"Vissza", + "appendNew":"Új hozzáadása", + "simpleQuestion":"Egyszerű válasz", + "simpleSelect":"Egyszerű feleletválasztás", + "connectGraph":"Kösd össze!", + "fillIn":"Egészítsd ki!", + "markOnMap":"Jelöld meg a térképen!", + "question":"Kérdés", + "submitOnline":"Online közzététel (ehhez kötelezően meg kell adni egy címkét is, valamint az online listán csak ellenőrzés után jelenik meg a feladat)", + "answer":"Válasz", + "answers":"Válaszok", + "remove":"Eltávolítás", + "generalSettings":"Általános beállítások", + "questions":"Kérdések", + "newAnswer":"Új válasz hozzáadása", + "newSimpleSelect":"Helyes válasz - Válaszlehetőség - Eltávolítás", + "newConnectGraph":"Eelem - Elem párja", + "type":"Típus", + "objective":"Feladat", + "text":"Szöveg", + "newFillIn":"A kitöltendő szavakat jelölje ki, majd kattintson rá a mező hozzáadása gombra", + "newField":"Új mező hozzáadása", + "map":"Térkép", + "uploadMap":"Térkép feltöltése", + "newMarkOnMap":"Töltsön fel egy fényképet, helyezzen el kattintható jelölőket a képen, majd válassza ki a helyes(eke)t!", + "newMarker":"Új jelölő hozzáadása", + "removeMarker":"Jelölő eltávolítása", + "markers":"Jelölők", + "loadMap":"Térkép betöltése", + "timeLimitPerTest":"Idő limit feladatonként (másodperc)", + "timeLimit":"Idő limit a teljes kvízre (másodperc)", + "save":"Mentés", + "cancel":"Mégse", + "sure":"Biztosan?", + "timeLeftPerTest":"Hátralévő idő erre a feladatra", + "timeLeft":"Hátralévő idő a teljes kvízre", + "startQuiz":"Kvíz indítása", + "submit":"Beküld", + "nextQuestion":"Következő kérdés", + "quizFinished":"Gratulálok! Befejezted a kvízt", + "resultsGot":"Elért pontszámod", + "downloadResults":"Eredményeim letöltése", + "onlineTag":"Címke az online kereshetőségért", + "fromurl":"Teszt betöltése URL-ről", + "availableAtURL":"Az ön által feltöltött feladat mostantól elérhető a következő címen. Publikusan csak az ellenőrzés után fog megjelenni!", + "uploadResults":"Eredményem feltöltése", + "yourname":"Neved", + "idForResult":"Ezt a számot add meg tanárodnak, hogy megnézhesse eredményedet", + "uploadResult":"Eredmény fájl feltöltése", + "resultById":"Eredmény megtekintése azonosító alapján", + "quizdata":"Kvíz adatai", + "doneAtDate":"Befejezve ekkor", + "charts":"Diagramok", + "exercise":"feladat", + "correct":"Helyes", + "incorrect":"Helytelen", + "correctAnswers":"Helyes válaszok", + "answers":"Válaszok", + "timeSpent":"Eltöltött idő", + "doneIn":"Megoldási idő (mp)", + "doneBy":"Megoldó", + "ok":"Mehet" +} diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..810fce6 --- /dev/null +++ b/license.txt @@ -0,0 +1,621 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS diff --git a/newquiz.html b/newquiz.html new file mode 100644 index 0000000..5e88db5 --- /dev/null +++ b/newquiz.html @@ -0,0 +1,154 @@ + + + + +
+
+
+
+

{{generalSettings}}

+
+

{{name}}:

+
+

{{desc}}:

+
+

{{timeLimitPerTest}}:

+
+ + +
+
+
+

{{timeLimit}}:

+
+ + +
+
+
+

{{submitOnline}}:

+
+ + +
+
+
+
+
+
+
+

{{questions}}

+
+
+
+

{{appendNew}}

+ + + + + + +
+
+
+
+ + +
+
+
diff --git a/res/background.png b/res/background.png new file mode 100644 index 0000000..cd5aff4 Binary files /dev/null and b/res/background.png differ diff --git a/res/background_old.png b/res/background_old.png new file mode 100644 index 0000000..44d17a3 Binary files /dev/null and b/res/background_old.png differ diff --git a/res/icon.png b/res/icon.png new file mode 100644 index 0000000..4d0b627 Binary files /dev/null and b/res/icon.png differ diff --git a/res/no_map.jpg b/res/no_map.jpg new file mode 100644 index 0000000..502ac02 Binary files /dev/null and b/res/no_map.jpg differ diff --git a/resulttest.html b/resulttest.html new file mode 100644 index 0000000..94ffe2c --- /dev/null +++ b/resulttest.html @@ -0,0 +1,65 @@ + + + + +
+
+ + + + diff --git a/sQuiz.geany b/sQuiz.geany new file mode 100644 index 0000000..5535272 --- /dev/null +++ b/sQuiz.geany @@ -0,0 +1,53 @@ +[editor] +line_wrapping=false +line_break_column=72 +auto_continue_multiline=true + +[file_prefs] +final_new_line=true +ensure_convert_new_lines=false +strip_trailing_spaces=false +replace_tabs=false + +[indentation] +indent_width=4 +indent_type=0 +indent_hard_tab_width=8 +detect_indent=false +detect_indent_width=false +indent_mode=2 + +[project] +name=sQuiz +base_path=H:\\Munkák\\sQuiz +description= +file_patterns= + +[long line marker] +long_line_behaviour=1 +long_line_column=72 + +[files] +current_page=20 +FILE_NAME_0=4281;HTML;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cindex.html;0;4 +FILE_NAME_1=1356;CSS;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cstyle%5Cstyle.css;0;4 +FILE_NAME_2=1382;Javascript;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5Cscript.js;0;4 +FILE_NAME_3=128;JSON;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Ctests%5Cmain.json;0;4 +FILE_NAME_4=2156;HTML;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Ctester.html;0;4 +FILE_NAME_5=2971;Javascript;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5Ctester.js;0;4 +FILE_NAME_6=3057;HTML;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cnewquiz.html;0;4 +FILE_NAME_7=7977;Javascript;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5Cquizedit.js;0;4 +FILE_NAME_8=89;HTML;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cindexc.html;0;4 +FILE_NAME_9=3085;CSS;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5CsQuiz%5Cstyle%5CsQuiz.css;0;4 +FILE_NAME_10=13129;Javascript;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5CsQuiz%5CsQuiz.js;0;4 +FILE_NAME_11=2295;Javascript;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5CsQuiz%5CsQuiz_module_simpleQuestion.js;0;4 +FILE_NAME_12=2126;Javascript;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5CsQuiz%5CsQuiz_module_simpleSelect.js;0;4 +FILE_NAME_13=3871;Javascript;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5CsQuiz%5CsQuiz_module_connectGraph.js;0;4 +FILE_NAME_14=2600;Javascript;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5CsQuiz%5CsQuiz_module_fillIn.js;0;4 +FILE_NAME_15=2598;Javascript;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5CsQuiz%5CsQuiz_module_markOnMap.js;0;4 +FILE_NAME_16=671;SQL;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cengine%5Cdatabase.sql;0;4 +FILE_NAME_17=50;PHP;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cengine%5Cengine.php;0;4 +FILE_NAME_18=380;JSON;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5CsQuiz%5Clang.json;0;4 +FILE_NAME_19=47;HTML;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cresulttest.html;0;4 +FILE_NAME_20=2719;Javascript;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Cscript%5Cresulttest.js;0;4 +FILE_NAME_21=110;JSON;0;EUTF-8;0;1;0;H%3A%5CMunkák%5CsQuiz%5Clang.json;0;4 diff --git a/script/chart.min.js b/script/chart.min.js new file mode 100644 index 0000000..875689e --- /dev/null +++ b/script/chart.min.js @@ -0,0 +1,10 @@ +/*! + * Chart.js + * http://chartjs.org/ + * Version: 2.7.2 + * + * Copyright 2018 Chart.js Contributors + * Released under the MIT license + * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}}(function(){return function t(e,i,n){function a(r,s){if(!i[r]){if(!e[r]){var l="function"==typeof require&&require;if(!s&&l)return l(r,!0);if(o)return o(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var d=i[r]={exports:{}};e[r][0].call(d.exports,function(t){var i=e[r][1][t];return a(i||t)},d,d.exports,t,e,i,n)}return i[r].exports}for(var o="function"==typeof require&&require,r=0;ri?(e+.05)/(i+.05):(i+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,i=(e[0]+t)%360;return e[0]=i<0?360+i:i,this.setValues("hsl",e),this},mix:function(t,e){var i=this,n=t,a=void 0===e?.5:e,o=2*a-1,r=i.alpha()-n.alpha(),s=((o*r==-1?o:(o+r)/(1+o*r))+1)/2,l=1-s;return this.rgb(s*i.red()+l*n.red(),s*i.green()+l*n.green(),s*i.blue()+l*n.blue()).alpha(i.alpha()*a+n.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,i=new o,n=this.values,a=i.values;for(var r in n)n.hasOwnProperty(r)&&(t=n[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return i}},o.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},o.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},o.prototype.getValues=function(t){for(var e=this.values,i={},n=0;n.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*i+.0722*n),100*(.0193*e+.1192*i+.9505*n)]}function d(t){var e=u(t),i=e[0],n=e[1],a=e[2];return n/=100,a/=108.883,i=(i/=95.047)>.008856?Math.pow(i,1/3):7.787*i+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(i-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function c(t){var e,i,n,a,o,r=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[o=255*l,o,o];e=2*l-(i=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(n=r+1/3*-(u-1))<0&&n++,n>1&&n--,o=6*n<1?e+6*(i-e)*n:2*n<1?i:3*n<2?e+(i-e)*(2/3-n)*6:e,a[u]=255*o;return a}function h(t){var e=t[0]/60,i=t[1]/100,n=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*n*(1-i),s=255*n*(1-i*o),l=255*n*(1-i*(1-o));n*=255;switch(a){case 0:return[n,l,r];case 1:return[s,n,r];case 2:return[r,n,l];case 3:return[r,s,n];case 4:return[l,r,n];case 5:return[n,r,s]}}function f(t){var e,i,n,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(u>1&&(s/=u,l/=u),n=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(n=1-n),a=s+n*((i=1-l)-s),e){default:case 6:case 0:r=i,g=a,b=s;break;case 1:r=a,g=i,b=s;break;case 2:r=s,g=i,b=a;break;case 3:r=s,g=a,b=i;break;case 4:r=a,g=s,b=i;break;case 5:r=i,g=s,b=a}return[255*r,255*g,255*b]}function p(t){var e=t[0]/100,i=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function m(t){var e,i,n,a=t[0]/100,o=t[1]/100,r=t[2]/100;return i=-.9689*a+1.8758*o+.0415*r,n=.0557*a+-.204*o+1.057*r,e=(e=3.2406*a+-1.5372*o+-.4986*r)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(i=Math.min(Math.max(0,i),1)),255*(n=Math.min(Math.max(0,n),1))]}function v(t){var e=t[0],i=t[1],n=t[2];return i/=100,n/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(e-i),200*(i-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function x(t){var e,i,n,a,o=t[0],r=t[1],s=t[2];return o<=8?a=(i=100*o/903.3)/100*7.787+16/116:(i=100*Math.pow((o+16)/116,3),a=Math.pow(i/100,1/3)),[e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i,n=n/108.883<=.008859?n=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function y(t){var e,i=t[0],n=t[1],a=t[2];return(e=360*Math.atan2(a,n)/2/Math.PI)<0&&(e+=360),[i,Math.sqrt(n*n+a*a),e]}function k(t){return m(x(t))}function M(t){var e,i=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[i,n*Math.cos(e),n*Math.sin(e)]}function w(t){return S[t]}e.exports={rgb2hsl:n,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:s,rgb2keyword:l,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return y(d(t))},hsl2rgb:c,hsl2hsv:function(t){var e=t[0],i=t[1]/100,n=t[2]/100;if(0===n)return[0,0,0];return[e,100*(2*(i*=(n*=2)<=1?n:2-n)/(n+i)),100*((n+i)/2)]},hsl2hwb:function(t){return o(c(t))},hsl2cmyk:function(t){return s(c(t))},hsl2keyword:function(t){return l(c(t))},hsv2rgb:h,hsv2hsl:function(t){var e,i,n=t[0],a=t[1]/100,o=t[2]/100;return e=a*o,[n,100*(e=(e/=(i=(2-a)*o)<=1?i:2-i)||0),100*(i/=2)]},hsv2hwb:function(t){return o(h(t))},hsv2cmyk:function(t){return s(h(t))},hsv2keyword:function(t){return l(h(t))},hwb2rgb:f,hwb2hsl:function(t){return n(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return l(f(t))},cmyk2rgb:p,cmyk2hsl:function(t){return n(p(t))},cmyk2hsv:function(t){return a(p(t))},cmyk2hwb:function(t){return o(p(t))},cmyk2keyword:function(t){return l(p(t))},keyword2rgb:w,keyword2hsl:function(t){return n(w(t))},keyword2hsv:function(t){return a(w(t))},keyword2hwb:function(t){return o(w(t))},keyword2cmyk:function(t){return s(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return u(w(t))},xyz2rgb:m,xyz2lab:v,xyz2lch:function(t){return y(v(t))},lab2xyz:x,lab2rgb:k,lab2lch:y,lch2lab:M,lch2xyz:function(t){return x(M(t))},lch2rgb:function(t){return k(M(t))}};var S={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},C={};for(var _ in S)C[JSON.stringify(S[_])]=_},{}],5:[function(t,e,i){var n=t(4),a=function(){return new u};for(var o in n){a[o+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),n[t](e)}}(o);var r=/(\w+)2(\w+)/.exec(o),s=r[1],l=r[2];(a[s]=a[s]||{})[l]=a[o]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var i=n[t](e);if("string"==typeof i||void 0===i)return i;for(var a=0;a0&&(t[0].yLabel?i=t[0].yLabel:e.labels.length>0&&t[0].index0?Math.min(r,n-i):r,i=n;return r}(i,u):-1,pixels:u,start:s,end:l,stackCount:n,scale:i}},calculateBarValuePixels:function(t,e){var i,n,a,o,r,s,l=this.chart,u=this.getMeta(),d=this.getValueScale(),c=l.data.datasets,h=d.getRightValue(c[t].data[e]),f=d.options.stacked,g=u.stack,p=0;if(f||void 0===f&&void 0!==g)for(i=0;i=0&&a>0)&&(p+=a));return o=d.getPixelForValue(p),{size:s=((r=d.getPixelForValue(p+h))-o)/2,base:o,head:r,center:r+s/2}},calculateBarIndexPixels:function(t,e,i){var n,a,r,s,l,u,d,c,h,f,g,p,m,v,b,x,y,k=i.scale.options,M="flex"===k.barThickness?(h=e,g=k,m=(f=i).pixels,v=m[h],b=h>0?m[h-1]:null,x=h');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),r=e.datasets[0],s=a.data[n],l=s&&s.custom||{},u=o.valueAtIndexOrDefault,d=t.options.elements.arc;return{text:i,fillStyle:l.backgroundColor?l.backgroundColor:u(r.backgroundColor,n,d.backgroundColor),strokeStyle:l.borderColor?l.borderColor:u(r.borderColor,n,d.borderColor),lineWidth:l.borderWidth?l.borderWidth:u(r.borderWidth,n,d.borderWidth),hidden:isNaN(r.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i=Math.PI?-1:g<-Math.PI?1:0))+f,m=Math.cos(g),v=Math.sin(g),b=Math.cos(p),x=Math.sin(p),y=g<=0&&p>=0||g<=2*Math.PI&&2*Math.PI<=p,k=g<=.5*Math.PI&&.5*Math.PI<=p||g<=2.5*Math.PI&&2.5*Math.PI<=p,M=g<=-Math.PI&&-Math.PI<=p||g<=Math.PI&&Math.PI<=p,w=g<=.5*-Math.PI&&.5*-Math.PI<=p||g<=1.5*Math.PI&&1.5*Math.PI<=p,S=h/100,C=M?-1:Math.min(m*(m<0?1:S),b*(b<0?1:S)),_=w?-1:Math.min(v*(v<0?1:S),x*(x<0?1:S)),D=y?1:Math.max(m*(m>0?1:S),b*(b>0?1:S)),I=k?1:Math.max(v*(v>0?1:S),x*(x>0?1:S)),P=.5*(D-C),A=.5*(I-_);u=Math.min(s/P,l/A),d={x:-.5*(D+C),y:-.5*(I+_)}}i.borderWidth=e.getMaxBorderWidth(c.data),i.outerRadius=Math.max((u-i.borderWidth)/2,0),i.innerRadius=Math.max(h?i.outerRadius/100*h:0,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),i.offsetX=d.x*i.outerRadius,i.offsetY=d.y*i.outerRadius,c.total=e.calculateTotal(),e.outerRadius=i.outerRadius-i.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-i.radiusLength,0),o.each(c.data,function(i,n){e.updateElement(i,n,t)})},updateElement:function(t,e,i){var n=this,a=n.chart,r=a.chartArea,s=a.options,l=s.animation,u=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=s.rotation,h=s.rotation,f=n.getDataset(),g=i&&l.animateRotate?0:t.hidden?0:n.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI)),p=i&&l.animateScale?0:n.innerRadius,m=i&&l.animateScale?0:n.outerRadius,v=o.valueAtIndexOrDefault;o.extend(t,{_datasetIndex:n.index,_index:e,_model:{x:u+a.offsetX,y:d+a.offsetY,startAngle:c,endAngle:h,circumference:g,outerRadius:m,innerRadius:p,label:v(f.label,e,a.data.labels[e])}});var b=t._model;this.removeHoverStyle(t),i&&l.animateRotate||(b.startAngle=0===e?s.rotation:n.getMeta().data[e-1]._model.endAngle,b.endAngle=b.startAngle+b.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,e=this.getDataset(),i=this.getMeta(),n=0;return o.each(i.data,function(i,a){t=e.data[a],isNaN(t)||i.hidden||(n+=Math.abs(t))}),n},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){for(var e,i,n=0,a=this.index,o=t.length,r=0;r(n=e>n?e:n)?i:n;return n}})}},{25:25,40:40,45:45}],18:[function(t,e,i){"use strict";var n=t(25),a=t(40),o=t(45);n._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),e.exports=function(t){function e(t,e){return o.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var i,n,a,r=this,s=r.getMeta(),l=s.dataset,u=s.data||[],d=r.chart.options,c=d.elements.line,h=r.getScaleForId(s.yAxisID),f=r.getDataset(),g=e(f,d);for(g&&(a=l.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),l._scale=h,l._datasetIndex=r.index,l._children=u,l._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:a.tension?a.tension:o.valueOrDefault(f.lineTension,c.tension),backgroundColor:a.backgroundColor?a.backgroundColor:f.backgroundColor||c.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:f.borderWidth||c.borderWidth,borderColor:a.borderColor?a.borderColor:f.borderColor||c.borderColor,borderCapStyle:a.borderCapStyle?a.borderCapStyle:f.borderCapStyle||c.borderCapStyle,borderDash:a.borderDash?a.borderDash:f.borderDash||c.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:f.borderDashOffset||c.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:f.borderJoinStyle||c.borderJoinStyle,fill:a.fill?a.fill:void 0!==f.fill?f.fill:c.fill,steppedLine:a.steppedLine?a.steppedLine:o.valueOrDefault(f.steppedLine,c.stepped),cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:o.valueOrDefault(f.cubicInterpolationMode,c.cubicInterpolationMode)},l.pivot()),i=0,n=u.length;i');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),r=e.datasets[0],s=a.data[n].custom||{},l=o.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:i,fillStyle:s.backgroundColor?s.backgroundColor:l(r.backgroundColor,n,u.backgroundColor),strokeStyle:s.borderColor?s.borderColor:l(r.borderColor,n,u.borderColor),lineWidth:s.borderWidth?s.borderWidth:l(r.borderWidth,n,u.borderWidth),hidden:isNaN(r.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i0&&!isNaN(t)?2*Math.PI/e:0}})}},{25:25,40:40,45:45}],20:[function(t,e,i){"use strict";var n=t(25),a=t(40),o=t(45);n._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:o.noop,update:function(t){var e=this,i=e.getMeta(),n=i.dataset,a=i.data,r=n.custom||{},s=e.getDataset(),l=e.chart.options.elements.line,u=e.chart.scale;void 0!==s.tension&&void 0===s.lineTension&&(s.lineTension=s.tension),o.extend(i.dataset,{_datasetIndex:e.index,_scale:u,_children:a,_loop:!0,_model:{tension:r.tension?r.tension:o.valueOrDefault(s.lineTension,l.tension),backgroundColor:r.backgroundColor?r.backgroundColor:s.backgroundColor||l.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:s.borderWidth||l.borderWidth,borderColor:r.borderColor?r.borderColor:s.borderColor||l.borderColor,fill:r.fill?r.fill:void 0!==s.fill?s.fill:l.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:s.borderCapStyle||l.borderCapStyle,borderDash:r.borderDash?r.borderDash:s.borderDash||l.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:s.borderDashOffset||l.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:s.borderJoinStyle||l.borderJoinStyle}}),i.dataset.pivot(),o.each(a,function(i,n){e.updateElement(i,n,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,i){var n=this,a=t.custom||{},r=n.getDataset(),s=n.chart.scale,l=n.chart.options.elements.point,u=s.getPointPositionForValue(e,r.data[e]);void 0!==r.radius&&void 0===r.pointRadius&&(r.pointRadius=r.radius),void 0!==r.hitRadius&&void 0===r.pointHitRadius&&(r.pointHitRadius=r.hitRadius),o.extend(t,{_datasetIndex:n.index,_index:e,_scale:s,_model:{x:i?s.xCenter:u.x,y:i?s.yCenter:u.y,tension:a.tension?a.tension:o.valueOrDefault(r.lineTension,n.chart.options.elements.line.tension),radius:a.radius?a.radius:o.valueAtIndexOrDefault(r.pointRadius,e,l.radius),backgroundColor:a.backgroundColor?a.backgroundColor:o.valueAtIndexOrDefault(r.pointBackgroundColor,e,l.backgroundColor),borderColor:a.borderColor?a.borderColor:o.valueAtIndexOrDefault(r.pointBorderColor,e,l.borderColor),borderWidth:a.borderWidth?a.borderWidth:o.valueAtIndexOrDefault(r.pointBorderWidth,e,l.borderWidth),pointStyle:a.pointStyle?a.pointStyle:o.valueAtIndexOrDefault(r.pointStyle,e,l.pointStyle),hitRadius:a.hitRadius?a.hitRadius:o.valueAtIndexOrDefault(r.pointHitRadius,e,l.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();o.each(e.data,function(i,n){var a=i._model,r=o.splineCurve(o.previousItem(e.data,n,!0)._model,a,o.nextItem(e.data,n,!0)._model,a.tension);a.controlPointPreviousX=Math.max(Math.min(r.previous.x,t.right),t.left),a.controlPointPreviousY=Math.max(Math.min(r.previous.y,t.bottom),t.top),a.controlPointNextX=Math.max(Math.min(r.next.x,t.right),t.left),a.controlPointNextY=Math.max(Math.min(r.next.y,t.bottom),t.top),i.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,a=t._model;a.radius=i.hoverRadius?i.hoverRadius:o.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius),a.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:o.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,o.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor?i.hoverBorderColor:o.valueAtIndexOrDefault(e.pointHoverBorderColor,n,o.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:o.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,a=t._model,r=this.chart.options.elements.point;a.radius=i.radius?i.radius:o.valueAtIndexOrDefault(e.pointRadius,n,r.radius),a.backgroundColor=i.backgroundColor?i.backgroundColor:o.valueAtIndexOrDefault(e.pointBackgroundColor,n,r.backgroundColor),a.borderColor=i.borderColor?i.borderColor:o.valueAtIndexOrDefault(e.pointBorderColor,n,r.borderColor),a.borderWidth=i.borderWidth?i.borderWidth:o.valueAtIndexOrDefault(e.pointBorderWidth,n,r.borderWidth)}})}},{25:25,40:40,45:45}],21:[function(t,e,i){"use strict";t(25)._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{25:25}],22:[function(t,e,i){"use strict";var n=t(25),a=t(26),o=t(45);n._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:o.noop,onComplete:o.noop}}),e.exports=function(t){t.Animation=a.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,i,n){var a,o,r=this.animations;for(e.chart=t,n||(t.animating=!0),a=0,o=r.length;a1&&(i=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+i);var n=Date.now();t.dropFrames+=(n-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,i,n=this.animations,a=0;a=e.numSteps?(o.callback(e.onAnimationComplete,[e],i),i.animating=!1,n.splice(a,1)):++a}},Object.defineProperty(t.Animation.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(t.Animation.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})}},{25:25,26:26,45:45}],23:[function(t,e,i){"use strict";var n=t(25),a=t(45),o=t(28),r=t(30),s=t(48),l=t(31);e.exports=function(t){function e(t){return"top"===t||"bottom"===t}t.types={},t.instances={},t.controllers={},a.extend(t.prototype,{construct:function(e,i){var o,r,l=this;(r=(o=(o=i)||{}).data=o.data||{}).datasets=r.datasets||[],r.labels=r.labels||[],o.options=a.configMerge(n.global,n[o.type],o.options||{}),i=o;var u=s.acquireContext(e,i),d=u&&u.canvas,c=d&&d.height,h=d&&d.width;l.id=a.uid(),l.ctx=u,l.canvas=d,l.config=i,l.width=h,l.height=c,l.aspectRatio=c?h/c:null,l.options=i.options,l._bufferedRender=!1,l.chart=l,l.controller=l,t.instances[l.id]=l,Object.defineProperty(l,"data",{get:function(){return l.config.data},set:function(t){l.config.data=t}}),u&&d?(l.initialize(),l.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return l.notify(t,"beforeInit"),a.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),l.notify(t,"afterInit"),t},clear:function(){return a.canvas.clear(this),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,o=i.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(a.getMaximumWidth(n))),s=Math.max(0,Math.floor(o?r/o:a.getMaximumHeight(n)));if((e.width!==r||e.height!==s)&&(n.width=e.width=r,n.height=e.height=s,n.style.width=r+"px",n.style.height=s+"px",a.retinaScale(e,i.devicePixelRatio),!t)){var u={width:r,height:s};l.notify(e,"resize",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;a.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),a.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildOrUpdateScales:function(){var i=this,n=i.options,o=i.scales||{},r=[],s=Object.keys(o).reduce(function(t,e){return t[e]=!1,t},{});n.scales&&(r=r.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&r.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),a.each(r,function(n){var r=n.options,l=r.id,u=a.valueOrDefault(r.type,n.dtype);e(r.position)!==e(n.dposition)&&(r.position=n.dposition),s[l]=!0;var d=null;if(l in o&&o[l].type===u)(d=o[l]).options=r,d.ctx=i.ctx,d.chart=i;else{var c=t.scaleService.getScaleConstructor(u);if(!c)return;d=new c({id:l,type:u,options:r,ctx:i.ctx,chart:i}),o[d.id]=d}d.mergeTicksOptions(),n.isDefault&&(i.scale=d)}),a.each(s,function(t,e){t||delete o[e]}),i.scales=o,t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,i=[],n=[];return a.each(e.data.datasets,function(a,o){var r=e.getDatasetMeta(o),s=a.type||e.config.type;if(r.type&&r.type!==s&&(e.destroyDatasetMeta(o),r=e.getDatasetMeta(o)),r.type=s,i.push(r.type),r.controller)r.controller.updateIndex(o),r.controller.linkScales();else{var l=t.controllers[r.type];if(void 0===l)throw new Error('"'+r.type+'" is not a chart type.');r.controller=new l(e,o),n.push(r.controller)}},e),n},resetElements:function(){var t=this;a.each(t.data.datasets,function(e,i){t.getDatasetMeta(i).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(e){var i,n,o=this;if(e&&"object"==typeof e||(e={duration:e,lazy:arguments[1]}),n=(i=o).options,a.each(i.scales,function(t){r.removeBox(i,t)}),n=a.configMerge(t.defaults.global,t.defaults[i.config.type],n),i.options=i.config.options=n,i.ensureScalesHaveIDs(),i.buildOrUpdateScales(),i.tooltip._options=n.tooltips,i.tooltip.initialize(),l._invalidate(o),!1!==l.notify(o,"beforeUpdate")){o.tooltip._data=o.data;var s=o.buildOrUpdateControllers();a.each(o.data.datasets,function(t,e){o.getDatasetMeta(e).controller.buildOrUpdateElements()},o),o.updateLayout(),o.options.animation&&o.options.animation.duration&&a.each(s,function(t){t.reset()}),o.updateDatasets(),o.tooltip.initialize(),o.lastActive=[],l.notify(o,"afterUpdate"),o._bufferedRender?o._bufferedRequest={duration:e.duration,easing:e.easing,lazy:e.lazy}:o.render(e)}},updateLayout:function(){!1!==l.notify(this,"beforeLayout")&&(r.update(this,this.width,this.height),l.notify(this,"afterScaleUpdate"),l.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==l.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t=0;--i)e.isDatasetVisible(i)&&e.drawDataset(i,t);l.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var i=this.getDatasetMeta(t),n={meta:i,index:t,easingValue:e};!1!==l.notify(this,"beforeDatasetDraw",[n])&&(i.controller.draw(e),l.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,i={tooltip:e,easingValue:t};!1!==l.notify(this,"beforeTooltipDraw",[i])&&(e.draw(),l.notify(this,"afterTooltipDraw",[i]))},getElementAtEvent:function(t){return o.modes.single(this,t)},getElementsAtEvent:function(t){return o.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return o.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,i){var n=o.modes[e];return"function"==typeof n?n(this,t,i):[]},getDatasetAtEvent:function(t){return o.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var i=e._meta[this.id];return i||(i=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,i=this.data.datasets.length;e0||(e.forEach(function(e){delete t[e]}),delete t._chartjs)}}t.DatasetController=function(t,e){this.initialize(t,e)},n.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),i=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=i.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=i.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&i(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,i=this.getMeta(),n=this.getDataset().data||[],a=i.data;for(t=0,e=n.length;ti&&this.insertElements(i,n-i)},insertElements:function(t,e){for(var i=0;i=i[e].length&&i[e].push({}),!i[e][r].type||l.type&&l.type!==i[e][r].type?o.merge(i[e][r],[t.scaleService.getScaleDefaults(s),l]):o.merge(i[e][r],l)}else o._merger(e,i,n,a)}})},o.where=function(t,e){if(o.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return o.each(t,function(t){e(t)&&i.push(t)}),i},o.findIndex=Array.prototype.findIndex?function(t,e,i){return t.findIndex(e,i)}:function(t,e,i){i=void 0===i?t:i;for(var n=0,a=t.length;n=0;n--){var a=t[n];if(e(a))return a}},o.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},o.almostEquals=function(t,e,i){return Math.abs(t-e)t},o.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},o.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},o.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:t>0?1:-1},o.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,i=Math.round(e);return t===Math.pow(10,i)?i:e},o.toRadians=function(t){return t*(Math.PI/180)},o.toDegrees=function(t){return t*(180/Math.PI)},o.getAngleFromPoint=function(t,e){var i=e.x-t.x,n=e.y-t.y,a=Math.sqrt(i*i+n*n),o=Math.atan2(n,i);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},o.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},o.aliasPixel=function(t){return t%2==0?0:.5},o.splineCurve=function(t,e,i,n){var a=t.skip?e:t,o=e,r=i.skip?e:i,s=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),l=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),u=s/(s+l),d=l/(s+l),c=n*(u=isNaN(u)?0:u),h=n*(d=isNaN(d)?0:d);return{previous:{x:o.x-c*(r.x-a.x),y:o.y-c*(r.y-a.y)},next:{x:o.x+h*(r.x-a.x),y:o.y+h*(r.y-a.y)}}},o.EPSILON=Number.EPSILON||1e-14,o.splineCurveMonotone=function(t){var e,i,n,a,r,s,l,u,d,c=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),h=c.length;for(e=0;e0?c[e-1]:null,(a=e0?c[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},o.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},o.niceNum=function(t,e){var i=Math.floor(o.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},o.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},o.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,r=t.currentTarget||t.srcElement,s=r.getBoundingClientRect(),l=a.touches;l&&l.length>0?(i=l[0].clientX,n=l[0].clientY):(i=a.clientX,n=a.clientY);var u=parseFloat(o.getStyle(r,"padding-left")),d=parseFloat(o.getStyle(r,"padding-top")),c=parseFloat(o.getStyle(r,"padding-right")),h=parseFloat(o.getStyle(r,"padding-bottom")),f=s.right-s.left-u-c,g=s.bottom-s.top-d-h;return{x:i=Math.round((i-s.left-u)/f*r.width/e.currentDevicePixelRatio),y:n=Math.round((n-s.top-d)/g*r.height/e.currentDevicePixelRatio)}},o.getConstraintWidth=function(t){return r(t,"max-width","clientWidth")},o.getConstraintHeight=function(t){return r(t,"max-height","clientHeight")},o.getMaximumWidth=function(t){var e=t.parentNode;if(!e)return t.clientWidth;var i=parseInt(o.getStyle(e,"padding-left"),10),n=parseInt(o.getStyle(e,"padding-right"),10),a=e.clientWidth-i-n,r=o.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},o.getMaximumHeight=function(t){var e=t.parentNode;if(!e)return t.clientHeight;var i=parseInt(o.getStyle(e,"padding-top"),10),n=parseInt(o.getStyle(e,"padding-bottom"),10),a=e.clientHeight-i-n,r=o.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},o.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},o.retinaScale=function(t,e){var i=t.currentDevicePixelRatio=e||window.devicePixelRatio||1;if(1!==i){var n=t.canvas,a=t.height,o=t.width;n.height=a*i,n.width=o*i,t.ctx.scale(i,i),n.style.height||n.style.width||(n.style.height=a+"px",n.style.width=o+"px")}},o.fontString=function(t,e,i){return e+" "+t+"px "+i},o.longestText=function(t,e,i,n){var a=(n=n||{}).data=n.data||{},r=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(a=n.data={},r=n.garbageCollect=[],n.font=e),t.font=e;var s=0;o.each(i,function(e){null!=e&&!0!==o.isArray(e)?s=o.measureText(t,a,r,s,e):o.isArray(e)&&o.each(e,function(e){null==e||o.isArray(e)||(s=o.measureText(t,a,r,s,e))})});var l=r.length/2;if(l>i.length){for(var u=0;un&&(n=o),n},o.numberOfLabelLines=function(t){var e=1;return o.each(t,function(t){o.isArray(t)&&t.length>e&&(e=t.length)}),e},o.color=n?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),n(t)}:function(t){return console.error("Color.js not found!"),t},o.getHoverColor=function(t){return t instanceof CanvasPattern?t:o.color(t).saturate(.5).darken(.1).rgbString()}}},{25:25,3:3,45:45}],28:[function(t,e,i){"use strict";var n=t(45);function a(t,e){return t.native?{x:t.x,y:t.y}:n.getRelativePosition(t,e)}function o(t,e){var i,n,a,o,r;for(n=0,o=t.data.datasets.length;n0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},"x-axis":function(t,e){return u(t,e,{intersect:!1})},point:function(t,e){return r(t,a(e,t))},nearest:function(t,e,i){var n=a(e,t);i.axis=i.axis||"xy";var o=l(i.axis),r=s(t,n,i.intersect,o);return r.length>1&&r.sort(function(t,e){var i=t.getArea()-e.getArea();return 0===i&&(i=t._datasetIndex-e._datasetIndex),i}),r.slice(0,1)},x:function(t,e,i){var n=a(e,t),r=[],s=!1;return o(t,function(t){t.inXRange(n.x)&&r.push(t),t.inRange(n.x,n.y)&&(s=!0)}),i.intersect&&!s&&(r=[]),r},y:function(t,e,i){var n=a(e,t),r=[],s=!1;return o(t,function(t){t.inYRange(n.y)&&r.push(t),t.inRange(n.x,n.y)&&(s=!0)}),i.intersect&&!s&&(r=[]),r}}}},{45:45}],29:[function(t,e,i){"use strict";t(25)._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},{25:25}],30:[function(t,e,i){"use strict";var n=t(45);function a(t,e){return n.where(t,function(t){return t.position===e})}function o(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,i){var n=e?i:t,a=e?t:i;return n.weight===a.weight?n._tmpIndex_-a._tmpIndex_:n.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}e.exports={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure:function(t,e,i){for(var n,a=["fullWidth","position","weight"],o=a.length,r=0;rh&&lt.maxHeight){l--;break}l++,c=u*d}t.labelRotation=l},afterCalculateTickRotation:function(){o.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){o.callback(this.options.beforeFit,[this])},fit:function(){var t=this,n=t.minSize={width:0,height:0},a=s(t._ticks),l=t.options,u=l.ticks,d=l.scaleLabel,c=l.gridLines,h=l.display,f=t.isHorizontal(),g=i(u),p=l.gridLines.tickMarkLength;if(n.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:h&&c.drawTicks?p:0,n.height=f?h&&c.drawTicks?p:0:t.maxHeight,d.display&&h){var m=r(d)+o.options.toPadding(d.padding).height;f?n.height+=m:n.width+=m}if(u.display&&h){var v=o.longestText(t.ctx,g.font,a,t.longestTextCache),b=o.numberOfLabelLines(a),x=.5*g.size,y=t.options.ticks.padding;if(f){t.longestLabelWidth=v;var k=o.toRadians(t.labelRotation),M=Math.cos(k),w=Math.sin(k)*v+g.size*b+x*(b-1)+x;n.height=Math.min(t.maxHeight,n.height+w+y),t.ctx.font=g.font;var S=e(t.ctx,a[0],g.font),C=e(t.ctx,a[a.length-1],g.font);0!==t.labelRotation?(t.paddingLeft="bottom"===l.position?M*S+3:M*x+3,t.paddingRight="bottom"===l.position?M*x+3:M*C+3):(t.paddingLeft=S/2+3,t.paddingRight=C/2+3)}else u.mirror?v=0:v+=y+x,n.width=Math.min(t.maxWidth,n.width+v),t.paddingTop=g.size/2,t.paddingBottom=g.size/2}t.handleMargins(),t.width=n.width,t.height=n.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){o.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(o.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:o.noop,getPixelForValue:o.noop,getValueForPixel:o.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var o=e.left+Math.round(a);return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+Math.round(i);return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,i,n,a,r=this,s=r.isHorizontal(),l=r.options.ticks.minor,u=t.length,d=o.toRadians(r.labelRotation),c=Math.cos(d),h=r.longestLabelWidth*c,f=[];for(l.maxTicksLimit&&(a=l.maxTicksLimit),s&&(e=!1,(h+l.autoSkipPadding)*u>r.width-(r.paddingLeft+r.paddingRight)&&(e=1+Math.floor((h+l.autoSkipPadding)*u/(r.width-(r.paddingLeft+r.paddingRight)))),a&&u>a&&(e=Math.max(e,Math.floor(u/a)))),i=0;i1&&i%e>0||i%e==0&&i+e>=u)&&i!==u-1&&delete n.label,f.push(n);return f},draw:function(t){var e=this,a=e.options;if(a.display){var s=e.ctx,u=n.global,d=a.ticks.minor,c=a.ticks.major||d,h=a.gridLines,f=a.scaleLabel,g=0!==e.labelRotation,p=e.isHorizontal(),m=d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=o.valueOrDefault(d.fontColor,u.defaultFontColor),b=i(d),x=o.valueOrDefault(c.fontColor,u.defaultFontColor),y=i(c),k=h.drawTicks?h.tickMarkLength:0,M=o.valueOrDefault(f.fontColor,u.defaultFontColor),w=i(f),S=o.options.toPadding(f.padding),C=o.toRadians(e.labelRotation),_=[],D=e.options.gridLines.lineWidth,I="right"===a.position?e.right:e.right-D-k,P="right"===a.position?e.right+k:e.right,A="bottom"===a.position?e.top+D:e.bottom-k-D,T="bottom"===a.position?e.top+D+k:e.bottom+D;if(o.each(m,function(i,n){if(!o.isNullOrUndef(i.label)){var r,s,c,f,v,b,x,y,M,w,S,F,O,R,L=i.label;n===e.zeroLineIndex&&a.offset===h.offsetGridLines?(r=h.zeroLineWidth,s=h.zeroLineColor,c=h.zeroLineBorderDash,f=h.zeroLineBorderDashOffset):(r=o.valueAtIndexOrDefault(h.lineWidth,n),s=o.valueAtIndexOrDefault(h.color,n),c=o.valueOrDefault(h.borderDash,u.borderDash),f=o.valueOrDefault(h.borderDashOffset,u.borderDashOffset));var z="middle",B="middle",W=d.padding;if(p){var N=k+W;"bottom"===a.position?(B=g?"middle":"top",z=g?"right":"center",R=e.top+N):(B=g?"middle":"bottom",z=g?"left":"center",R=e.bottom-N);var V=l(e,n,h.offsetGridLines&&m.length>1);V1);j3?i[2]-i[1]:i[1]-i[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var o=n.log10(Math.abs(a)),r="";if(0!==t){var s=-1*Math.floor(o);s=Math.max(Math.min(s,20),0),r=t.toFixed(s)}else r="0";return r},logarithmic:function(t,e,i){var a=t/Math.pow(10,Math.floor(n.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===i.length-1?t.toExponential():""}}}},{45:45}],35:[function(t,e,i){"use strict";var n=t(25),a=t(26),o=t(45);n._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:o.noop,title:function(t,e){var i="",n=e.labels,a=n?n.length:0;if(t.length>0){var o=t[0];o.xLabel?i=o.xLabel:a>0&&o.indexl.height-e.height&&(c="bottom");var h=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===c?(i=function(t){return t<=h},n=function(t){return t>h}):(i=function(t){return t<=e.width/2},n=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},o=function(t){return t-e.width-s.caretSize-s.caretPadding<0},r=function(t){return t<=f?"top":"bottom"},i(s.x)?(d="left",a(s.x)&&(d="center",c=r(s.y))):n(s.x)&&(d="right",o(s.x)&&(d="center",c=r(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:c}}(this,F=function(t,e){var i=t._chart.ctx,n=2*e.yPadding,a=0,r=e.body,s=r.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);s+=e.beforeBody.length+e.afterBody.length;var l=e.title.length,u=e.footer.length,d=e.titleFontSize,c=e.bodyFontSize,h=e.footerFontSize;n+=l*d,n+=l?(l-1)*e.titleSpacing:0,n+=l?e.titleMarginBottom:0,n+=s*c,n+=s?(s-1)*e.bodySpacing:0,n+=u?e.footerMarginTop:0,n+=u*h,n+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){a=Math.max(a,i.measureText(t).width+f)};return i.font=o.fontString(d,e._titleFontStyle,e._titleFontFamily),o.each(e.title,g),i.font=o.fontString(c,e._bodyFontStyle,e._bodyFontFamily),o.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?c+2:0,o.each(r,function(t){o.each(t.before,g),o.each(t.lines,g),o.each(t.after,g)}),f=0,i.font=o.fontString(h,e._footerFontStyle,e._footerFontFamily),o.each(e.footer,g),{width:a+=2*e.xPadding,height:n}}(this,D)),a=D,s=F,l=A,u=S._chart,d=a.x,c=a.y,h=a.caretSize,f=a.caretPadding,g=a.cornerRadius,p=l.xAlign,m=l.yAlign,v=h+f,b=g+f,"right"===p?d-=s.width:"center"===p&&((d-=s.width/2)+s.width>u.width&&(d=u.width-s.width),d<0&&(d=0)),"top"===m?c+=v:c-="bottom"===m?s.height+v:s.height/2,"center"===m?"left"===p?d+=v:"right"===p&&(d-=v):"left"===p?d-=b:"right"===p&&(d+=b),T={x:d,y:c}}else D.opacity=0;return D.xAlign=A.xAlign,D.yAlign=A.yAlign,D.x=T.x,D.y=T.y,D.width=F.width,D.height=F.height,D.caretX=O.x,D.caretY=O.y,S._model=D,e&&C.custom&&C.custom.call(S,D),S},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,o,r,s,l,u=i.caretSize,d=i.cornerRadius,c=i.xAlign,h=i.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===h)s=g+m/2,"left"===c?(a=(n=f)-u,o=n,r=s+u,l=s-u):(a=(n=f+p)+u,o=n,r=s-u,l=s+u);else if("left"===c?(n=(a=f+d+u)-u,o=a+u):"right"===c?(n=(a=f+p-d-u)-u,o=a+u):(n=(a=i.caretX)-u,o=a+u),"top"===h)s=(r=g)-u,l=r;else{s=(r=g+m)+u,l=r;var v=o;o=n,n=v}return{x1:n,x2:a,x3:o,y1:r,y2:s,y3:l}},drawTitle:function(t,i,n,a){var r=i.title;if(r.length){n.textAlign=i._titleAlign,n.textBaseline="top";var s,l,u=i.titleFontSize,d=i.titleSpacing;for(n.fillStyle=e(i.titleFontColor,a),n.font=o.fontString(u,i._titleFontStyle,i._titleFontFamily),s=0,l=r.length;s0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var i={width:e.width,height:e.height},n={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(this.drawBackground(n,e,t,i,a),n.x+=e.xPadding,n.y+=e.yPadding,this.drawTitle(n,e,t,a),this.drawBody(n,e,t,a),this.drawFooter(n,e,t,a))}},handleEvent:function(t){var e,i=this,n=i._options;return i._lastActive=i._lastActive||[],"mouseout"===t.type?i._active=[]:i._active=i._chart.getElementsAtEventForMode(t,n.mode,n),(e=!o.arrayEquals(i._active,i._lastActive))&&(i._lastActive=i._active,(n.enabled||n.custom)&&(i._eventPosition={x:t.x,y:t.y},i.update(!0),i.pivot())),e}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,i,n=0,a=0,o=0;for(e=0,i=t.length;el;)a-=2*Math.PI;for(;a=s&&a<=l,d=r>=i.innerRadius&&r<=i.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t=this._chart.ctx,e=this._view,i=e.startAngle,n=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,i,n),t.arc(e.x,e.y,e.innerRadius,n,i,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{25:25,26:26,45:45}],37:[function(t,e,i){"use strict";var n=t(25),a=t(26),o=t(45),r=n.global;n._set("global",{elements:{line:{tension:.4,backgroundColor:r.defaultColor,borderWidth:3,borderColor:r.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a=this._view,s=this._chart.ctx,l=a.spanGaps,u=this._children.slice(),d=r.elements.line,c=-1;for(this._loop&&u.length&&u.push(u[0]),s.save(),s.lineCap=a.borderCapStyle||d.borderCapStyle,s.setLineDash&&s.setLineDash(a.borderDash||d.borderDash),s.lineDashOffset=a.borderDashOffset||d.borderDashOffset,s.lineJoin=a.borderJoinStyle||d.borderJoinStyle,s.lineWidth=a.borderWidth||d.borderWidth,s.strokeStyle=a.borderColor||r.defaultColor,s.beginPath(),c=-1,t=0;tt?1:-1,o=1,r=l.borderSkipped||"left"):(t=l.x-l.width/2,e=l.x+l.width/2,i=l.y,a=1,o=(n=l.base)>i?1:-1,r=l.borderSkipped||"bottom"),u){var d=Math.min(Math.abs(t-e),Math.abs(i-n)),c=(u=u>d?d:u)/2,h=t+("left"!==r?c*a:0),f=e+("right"!==r?-c*a:0),g=i+("top"!==r?c*o:0),p=n+("bottom"!==r?-c*o:0);h!==f&&(i=g,n=p),g!==p&&(t=h,e=f)}s.beginPath(),s.fillStyle=l.backgroundColor,s.strokeStyle=l.borderColor,s.lineWidth=u;var m=[[t,n],[t,i],[e,i],[e,n]],v=["bottom","left","top","right"].indexOf(r,0);function b(t){return m[(v+t)%4]}-1===v&&(v=0);var x=b(0);s.moveTo(x[0],x[1]);for(var y=1;y<4;y++)x=b(y),s.lineTo(x[0],x[1]);s.fill(),u&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var i=!1;if(this._view){var n=r(this);i=t>=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}return i},inLabelRange:function(t,e){if(!this._view)return!1;var i=r(this);return o(this)?t>=i.left&&t<=i.right:e>=i.top&&e<=i.bottom},inXRange:function(t){var e=r(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=r(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,i=this._view;return o(this)?(t=i.x,e=(i.y+i.base)/2):(t=(i.x+i.base)/2,e=i.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{25:25,26:26}],40:[function(t,e,i){"use strict";e.exports={},e.exports.Arc=t(36),e.exports.Line=t(37),e.exports.Point=t(38),e.exports.Rectangle=t(39)},{36:36,37:37,38:38,39:39}],41:[function(t,e,i){"use strict";var n=t(42);i=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,o){if(o){var r=Math.min(o,n/2),s=Math.min(o,a/2);t.moveTo(e+r,i),t.lineTo(e+n-r,i),t.quadraticCurveTo(e+n,i,e+n,i+s),t.lineTo(e+n,i+a-s),t.quadraticCurveTo(e+n,i+a,e+n-r,i+a),t.lineTo(e+r,i+a),t.quadraticCurveTo(e,i+a,e,i+a-s),t.lineTo(e,i+s),t.quadraticCurveTo(e,i,e+r,i)}else t.rect(e,i,n,a)},drawPoint:function(t,e,i,n,a){var o,r,s,l,u,d;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(o=e.toString())&&"[object HTMLCanvasElement]"!==o){if(!(isNaN(i)||i<=0)){switch(e){default:t.beginPath(),t.arc(n,a,i,0,2*Math.PI),t.closePath(),t.fill();break;case"triangle":t.beginPath(),u=(r=3*i/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(n-r/2,a+u/3),t.lineTo(n+r/2,a+u/3),t.lineTo(n,a-2*u/3),t.closePath(),t.fill();break;case"rect":d=1/Math.SQRT2*i,t.beginPath(),t.fillRect(n-d,a-d,2*d,2*d),t.strokeRect(n-d,a-d,2*d,2*d);break;case"rectRounded":var c=i/Math.SQRT2,h=n-c,f=a-c,g=Math.SQRT2*i;t.beginPath(),this.roundedRect(t,h,f,g,g,i/2),t.closePath(),t.fill();break;case"rectRot":d=1/Math.SQRT2*i,t.beginPath(),t.moveTo(n-d,a),t.lineTo(n,a+d),t.lineTo(n+d,a),t.lineTo(n,a-d),t.closePath(),t.fill();break;case"cross":t.beginPath(),t.moveTo(n,a+i),t.lineTo(n,a-i),t.moveTo(n-i,a),t.lineTo(n+i,a),t.closePath();break;case"crossRot":t.beginPath(),s=Math.cos(Math.PI/4)*i,l=Math.sin(Math.PI/4)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n-s,a+l),t.lineTo(n+s,a-l),t.closePath();break;case"star":t.beginPath(),t.moveTo(n,a+i),t.lineTo(n,a-i),t.moveTo(n-i,a),t.lineTo(n+i,a),s=Math.cos(Math.PI/4)*i,l=Math.sin(Math.PI/4)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n-s,a+l),t.lineTo(n+s,a-l),t.closePath();break;case"line":t.beginPath(),t.moveTo(n-i,a),t.lineTo(n+i,a),t.closePath();break;case"dash":t.beginPath(),t.moveTo(n,a),t.lineTo(n+i,a),t.closePath()}t.stroke()}}else t.drawImage(e,n-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,i,n){if(i.steppedLine)return"after"===i.steppedLine&&!n||"after"!==i.steppedLine&&n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y),void t.lineTo(i.x,i.y);i.tension?t.bezierCurveTo(n?e.controlPointPreviousX:e.controlPointNextX,n?e.controlPointPreviousY:e.controlPointNextY,n?i.controlPointNextX:i.controlPointPreviousX,n?i.controlPointNextY:i.controlPointPreviousY,i.x,i.y):t.lineTo(i.x,i.y)}};n.clear=i.clear,n.drawRoundedRectangle=function(t){t.beginPath(),i.roundedRect.apply(i,arguments),t.closePath()}},{42:42}],42:[function(t,e,i){"use strict";var n,a={noop:function(){},uid:(n=0,function(){return n++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,i){return a.valueOrDefault(a.isArray(t)?t[e]:t,i)},callback:function(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)},each:function(t,e,i,n){var o,r,s;if(a.isArray(t))if(r=t.length,n)for(o=r-1;o>=0;o--)e.call(i,t[o],o);else for(o=0;o=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i))},easeOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:2==(t/=.5)?1:(i||(i=.45),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),t<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},easeInBack:function(t){return t*t*(2.70158*t-1.70158)},easeOutBack:function(t){return(t-=1)*t*(2.70158*t+1.70158)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-a.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},n.easingEffects=a},{42:42}],44:[function(t,e,i){"use strict";var n=t(42);e.exports={toLineHeight:function(t,e){var i=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,i,a,o;return n.isObject(t)?(e=+t.top||0,i=+t.right||0,a=+t.bottom||0,o=+t.left||0):e=i=a=o=+t||0,{top:e,right:i,bottom:a,left:o,height:e+a,width:o+i}},resolve:function(t,e,i){var a,o,r;for(a=0,o=t.length;a
';var a=e.childNodes[0],r=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,r.scrollLeft=1e6,r.scrollTop=1e6};var s=function(){e._reset(),t()};return h(a,"scroll",s.bind(a,"expand")),h(r,"scroll",s.bind(r,"shrink")),e}((u=function(){if(x.resizer)return e(g("resize",i))},c=!1,f=[],function(){f=Array.prototype.slice.call(arguments),d=d||this,c||(c=!0,n.requestAnimFrame.call(window,function(){c=!1,u.apply(d,f)}))}));m=function(){if(x.resizer){var e=t.parentNode;e&&e!==y.parentNode&&e.insertBefore(y,e.firstChild),y._reset()}},v=(p=t)[a]||(p[a]={}),b=v.renderProxy=function(t){t.animationName===s&&m()},n.each(l,function(t){h(p,t,b)}),v.reflow=!!p.offsetParent,p.classList.add(r)}function m(t){var e,i,o,s=t[a]||{},u=s.resizer;delete s.resizer,i=(e=t)[a]||{},(o=i.renderProxy)&&(n.each(l,function(t){f(e,t,o)}),delete i.renderProxy),e.classList.remove(r),u&&u.parentNode&&u.parentNode.removeChild(u)}e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t,e,i,n="from{opacity:0.99}to{opacity:1}";e="@-webkit-keyframes "+s+"{"+n+"}@keyframes "+s+"{"+n+"}."+r+"{-webkit-animation:"+s+" 0.001s;animation:"+s+" 0.001s;}",i=(t=this)._style||document.createElement("style"),t._style||(t._style=i,e="/* Chart.js */\n"+e,i.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(i)),i.appendChild(document.createTextNode(e))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){var i=t.style,n=t.getAttribute("height"),o=t.getAttribute("width");if(t[a]={initial:{height:n,width:o,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",null===o||""===o){var r=d(t,"width");void 0!==r&&(t.width=r)}if(null===n||""===n)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var s=d(t,"height");void 0!==r&&(t.height=s)}}(t,e),i):null},releaseContext:function(t){var e=t.canvas;if(e[a]){var i=e[a].initial;["height","width"].forEach(function(t){var a=i[t];n.isNullOrUndef(a)?e.removeAttribute(t):e.setAttribute(t,a)}),n.each(i.style||{},function(t,i){e.style[i]=t}),e.width=e.width,delete e[a]}},addEventListener:function(t,e,i){var o=t.canvas;if("resize"!==e){var r=i[a]||(i[a]={});h(o,e,(r.proxies||(r.proxies={}))[t.id+"_"+e]=function(e){var a,o,r,s;i((o=t,r=u[(a=e).type]||a.type,s=n.getRelativePosition(a,o),g(r,o,s.x,s.y,a)))})}else p(o,i,t)},removeEventListener:function(t,e,i){var n=t.canvas;if("resize"!==e){var o=((i[a]||{}).proxies||{})[t.id+"_"+e];o&&f(n,e,o)}else m(n)}},n.addEvent=h,n.removeEvent=f},{45:45}],48:[function(t,e,i){"use strict";var n=t(45),a=t(46),o=t(47),r=o._enabled?o:a;e.exports=n.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},r)},{45:45,46:46,47:47}],49:[function(t,e,i){"use strict";e.exports={},e.exports.filler=t(50),e.exports.legend=t(51),e.exports.title=t(52)},{50:50,51:51,52:52}],50:[function(t,e,i){"use strict";var n=t(25),a=t(40),o=t(45);n._set("global",{plugins:{filler:{propagate:!0}}});var r={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],o=a.length||0;return o?function(t,e){return e=i)&&n;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function l(t){var e,i=t.el._model||{},n=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===i.scaleBottom?n.bottom:i.scaleBottom:"end"===a?o=void 0===i.scaleTop?n.top:i.scaleTop:void 0!==i.scaleZero?o=i.scaleZero:n.getBasePosition?o=n.getBasePosition():n.getBasePixel&&(o=n.getBasePixel()),null!=o){if(void 0!==o.x&&void 0!==o.y)return o;if("number"==typeof o&&isFinite(o))return{x:(e=n.isHorizontal())?o:null,y:e?null:o}}return null}function u(t,e,i){var n,a=t[e].fill,o=[e];if(!i)return a;for(;!1!==a&&-1===o.indexOf(a);){if(!isFinite(a))return a;if(!(n=t[a]))return!1;if(n.visible)return a;o.push(a),a=n.fill}return!1}function d(t){return t&&!t.skip}function c(t,e,i,n,a){var r;if(n&&a){for(t.moveTo(e[0].x,e[0].y),r=1;r0;--r)o.canvas.lineTo(t,i[r],i[r-1],!0)}}e.exports={id:"filler",afterDatasetsUpdate:function(t,e){var i,n,o,d,c,h,f,g=(t.data.datasets||[]).length,p=e.propagate,m=[];for(n=0;n');for(var i=0;i'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("");return e.push(""),e.join("")}});var u=a.extend({initialize:function(t){o.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:s,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:s,beforeSetDimensions:s,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:s,beforeBuildLabels:s,buildLabels:function(){var t=this,e=t.options.labels||{},i=o.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(i=i.filter(function(i){return e.filter(i,t.chart.data)})),t.options.reverse&&i.reverse(),t.legendItems=i},afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,e=t.options,i=e.labels,a=e.display,r=t.ctx,s=n.global,u=o.valueOrDefault,d=u(i.fontSize,s.defaultFontSize),c=u(i.fontStyle,s.defaultFontStyle),h=u(i.fontFamily,s.defaultFontFamily),f=o.fontString(d,c,h),g=t.legendHitBoxes=[],p=t.minSize,m=t.isHorizontal();if(m?(p.width=t.maxWidth,p.height=a?10:0):(p.width=a?10:0,p.height=t.maxHeight),a)if(r.font=f,m){var v=t.lineWidths=[0],b=t.legendItems.length?d+i.padding:0;r.textAlign="left",r.textBaseline="top",o.each(t.legendItems,function(e,n){var a=l(i,d)+d/2+r.measureText(e.text).width;v[v.length-1]+a+i.padding>=t.width&&(b+=d+i.padding,v[v.length]=t.left),g[n]={left:0,top:0,width:a,height:d},v[v.length-1]+=a+i.padding}),p.height+=b}else{var x=i.padding,y=t.columnWidths=[],k=i.padding,M=0,w=0,S=d+x;o.each(t.legendItems,function(t,e){var n=l(i,d)+d/2+r.measureText(t.text).width;w+S>p.height&&(k+=M+i.padding,y.push(M),M=0,w=0),M=Math.max(M,n),w+=S,g[e]={left:0,top:0,width:n,height:d}}),k+=M,y.push(M),p.width+=k}t.width=p.width,t.height=p.height},afterFit:s,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,i=e.labels,a=n.global,r=a.elements.line,s=t.width,u=t.lineWidths;if(e.display){var d,c=t.ctx,h=o.valueOrDefault,f=h(i.fontColor,a.defaultFontColor),g=h(i.fontSize,a.defaultFontSize),p=h(i.fontStyle,a.defaultFontStyle),m=h(i.fontFamily,a.defaultFontFamily),v=o.fontString(g,p,m);c.textAlign="left",c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=v;var b=l(i,g),x=t.legendHitBoxes,y=t.isHorizontal();d=y?{x:t.left+(s-u[0])/2,y:t.top+i.padding,line:0}:{x:t.left+i.padding,y:t.top+i.padding,line:0};var k=g+i.padding;o.each(t.legendItems,function(n,l){var f,p,m,v,M,w=c.measureText(n.text).width,S=b+g/2+w,C=d.x,_=d.y;y?C+S>=s&&(_=d.y+=k,d.line++,C=d.x=t.left+(s-u[d.line])/2):_+k>t.bottom&&(C=d.x=C+t.columnWidths[d.line]+i.padding,_=d.y=t.top+i.padding,d.line++),function(t,i,n){if(!(isNaN(b)||b<=0)){c.save(),c.fillStyle=h(n.fillStyle,a.defaultColor),c.lineCap=h(n.lineCap,r.borderCapStyle),c.lineDashOffset=h(n.lineDashOffset,r.borderDashOffset),c.lineJoin=h(n.lineJoin,r.borderJoinStyle),c.lineWidth=h(n.lineWidth,r.borderWidth),c.strokeStyle=h(n.strokeStyle,a.defaultColor);var s=0===h(n.lineWidth,r.borderWidth);if(c.setLineDash&&c.setLineDash(h(n.lineDash,r.borderDash)),e.labels&&e.labels.usePointStyle){var l=g*Math.SQRT2/2,u=l/Math.SQRT2,d=t+u,f=i+u;o.canvas.drawPoint(c,n.pointStyle,l,d,f)}else s||c.strokeRect(t,i,b,g),c.fillRect(t,i,b,g);c.restore()}}(C,_,n),x[l].left=C,x[l].top=_,f=n,p=w,v=b+(m=g/2)+C,M=_+m,c.fillText(f.text,v,M),f.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(v,M),c.lineTo(v+p,M),c.stroke()),y?d.x+=S+i.padding:d.y+=k})}},handleEvent:function(t){var e=this,i=e.options,n="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===n){if(!i.onHover)return}else{if("click"!==n)return;if(!i.onClick)return}var o=t.x,r=t.y;if(o>=e.left&&o<=e.right&&r>=e.top&&r<=e.bottom)for(var s=e.legendHitBoxes,l=0;l=u.left&&o<=u.left+u.width&&r>=u.top&&r<=u.top+u.height){if("click"===n){i.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if("mousemove"===n){i.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}});function d(t,e){var i=new u({ctx:t.ctx,options:e,chart:t});r.configure(t,i,e),r.addBox(t,i),t.legend=i}e.exports={id:"legend",_element:u,beforeInit:function(t){var e=t.options.legend;e&&d(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(o.mergeIf(e,n.global.legend),i?(r.configure(t,i,e),i.options=e):d(t,e)):i&&(r.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}}},{25:25,26:26,30:30,45:45}],52:[function(t,e,i){"use strict";var n=t(25),a=t(26),o=t(45),r=t(30),s=o.noop;n._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}});var l=a.extend({initialize:function(t){o.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:s,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:s,beforeSetDimensions:s,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:s,beforeBuildLabels:s,buildLabels:s,afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,e=o.valueOrDefault,i=t.options,a=i.display,r=e(i.fontSize,n.global.defaultFontSize),s=t.minSize,l=o.isArray(i.text)?i.text.length:1,u=o.options.toLineHeight(i.lineHeight,r),d=a?l*u+2*i.padding:0;t.isHorizontal()?(s.width=t.maxWidth,s.height=d):(s.width=d,s.height=t.maxHeight),t.width=s.width,t.height=s.height},afterFit:s,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,i=o.valueOrDefault,a=t.options,r=n.global;if(a.display){var s,l,u,d=i(a.fontSize,r.defaultFontSize),c=i(a.fontStyle,r.defaultFontStyle),h=i(a.fontFamily,r.defaultFontFamily),f=o.fontString(d,c,h),g=o.options.toLineHeight(a.lineHeight,d),p=g/2+a.padding,m=0,v=t.top,b=t.left,x=t.bottom,y=t.right;e.fillStyle=i(a.fontColor,r.defaultFontColor),e.font=f,t.isHorizontal()?(l=b+(y-b)/2,u=v+p,s=y-b):(l="left"===a.position?b+p:y-p,u=v+(x-v)/2,s=x-v,m=Math.PI*("left"===a.position?-.5:.5)),e.save(),e.translate(l,u),e.rotate(m),e.textAlign="center",e.textBaseline="middle";var k=a.text;if(o.isArray(k))for(var M=0,w=0;wt.max&&(t.max=n))})});t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var i=a.valueOrDefault(e.fontSize,n.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*i)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,i=e.start,n=+e.getRightValue(t),a=e.end-i;return e.isHorizontal()?e.left+e.width/a*(n-i):e.bottom-e.height/a*(n-i)},getValueForPixel:function(t){var e=this,i=e.isHorizontal(),n=i?e.width:e.height,a=(i?t-e.left:e.bottom-t)/n;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",i,e)}},{25:25,34:34,45:45}],55:[function(t,e,i){"use strict";var n=t(45);e.exports=function(t){var e=n.noop;t.LinearScaleBase=t.Scale.extend({getRightValue:function(e){return"string"==typeof e?+e:t.Scale.prototype.getRightValue.call(this,e)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var i=n.sign(t.min),a=n.sign(t.max);i<0&&a<0?t.max=0:i>0&&a>0&&(t.min=0)}var o=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),o!==r&&t.min>=t.max&&(o?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),a={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,stepSize:n.valueOrDefault(e.fixedStepSize,e.stepSize)},o=t.ticks=function(t,e){var i,a=[];if(t.stepSize&&t.stepSize>0)i=t.stepSize;else{var o=n.niceNum(e.max-e.min,!1);i=n.niceNum(o/(t.maxTicks-1),!0)}var r=Math.floor(e.min/i)*i,s=Math.ceil(e.max/i)*i;t.min&&t.max&&t.stepSize&&n.almostWhole((t.max-t.min)/t.stepSize,i/1e3)&&(r=t.min,s=t.max);var l=(s-r)/i;l=n.almostEquals(l,Math.round(l),i/1e3)?Math.round(l):Math.ceil(l);var u=1;i<1&&(u=Math.pow(10,i.toString().length-2),r=Math.round(r*u)/u,s=Math.round(s*u)/u),a.push(void 0!==t.min?t.min:r);for(var d=1;d0){var i=n.min(e),a=n.max(e);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?a:Math.max(t.max,a)}})}else n.each(a,function(e,a){var o=i.getDatasetMeta(a);i.isDatasetVisible(a)&&r(o)&&n.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||o.data[i].hidden||n<0||(null===t.min?t.min=n:nt.max&&(t.max=n),0!==n&&(null===t.minNotZero||n0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(n.log10(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,i=!t.isHorizontal(),a={min:e.min,max:e.max},o=t.ticks=function(t,e){var i,a,o=[],r=n.valueOrDefault,s=r(t.min,Math.pow(10,Math.floor(n.log10(e.min)))),l=Math.floor(n.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,l));0===s?(i=Math.floor(n.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,i)),o.push(s),s=a*Math.pow(10,i)):(i=Math.floor(n.log10(s)),a=Math.floor(s/Math.pow(10,i)));for(var d=i<0?Math.pow(10,Math.abs(i)):1;o.push(s),10==++a&&(a=1,d=++i>=0?1:d),s=Math.round(a*Math.pow(10,i)*d)/d,ia?{start:e-i-5,end:e}:{start:e,end:e+i+5}}function u(t,e,i,n){if(a.isArray(e))for(var o=i.y,r=1.5*n,s=0;sd.r&&(d.r=b.end,c.r=m),x.startd.b&&(d.b=x.end,c.b=m)}t.setReductions(u,d,c)}(this):(t=this,e=Math.min(t.height/2,t.width/2),t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0))},setReductions:function(t,e,i){var n=e.l/Math.sin(i.l),a=Math.max(e.r-this.width,0)/Math.sin(i.r),o=-e.t/Math.cos(i.t),r=-Math.max(e.b-this.height,0)/Math.cos(i.b);n=d(n),a=d(a),o=d(o),r=d(r),this.drawingArea=Math.min(Math.round(t-(n+a)/2),Math.round(t-(o+r)/2)),this.setCenterPoint(n,a,o,r)},setCenterPoint:function(t,e,i,n){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,s=i+a.drawingArea,l=a.height-n-a.drawingArea;a.xCenter=Math.round((r+o)/2+a.left),a.yCenter=Math.round((s+l)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/r(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var i=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*i:(t-e.min)*i},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+this.xCenter,y:Math.round(Math.sin(i)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,i=t.options,n=i.gridLines,o=i.ticks,l=a.valueOrDefault;if(i.display){var d=t.ctx,c=this.getIndexAngle(0),h=l(o.fontSize,e.defaultFontSize),f=l(o.fontStyle,e.defaultFontStyle),g=l(o.fontFamily,e.defaultFontFamily),p=a.fontString(h,f,g);a.each(t.ticks,function(i,s){if(s>0||o.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]);if(n.display&&0!==s&&function(t,e,i,n){var o=t.ctx;if(o.strokeStyle=a.valueAtIndexOrDefault(e.color,n-1),o.lineWidth=a.valueAtIndexOrDefault(e.lineWidth,n-1),t.options.gridLines.circular)o.beginPath(),o.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),o.closePath(),o.stroke();else{var s=r(t);if(0===s)return;o.beginPath();var l=t.getPointPosition(0,i);o.moveTo(l.x,l.y);for(var u=1;u=0;m--){if(o.display){var v=t.getPointPosition(m,g);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(v.x,v.y),i.stroke(),i.closePath()}if(l.display){var b=t.getPointPosition(m,g+5),x=a.valueAtIndexOrDefault(l.fontColor,m,e.defaultFontColor);i.font=p.font,i.fillStyle=x;var y=t.getIndexAngle(m),k=a.toDegrees(y);i.textAlign=0===(f=k)||180===f?"center":f<180?"left":"right",d=k,c=t._pointLabelSizes[m],h=b,90===d||270===d?h.y-=c.h/2:(d>270||d<90)&&(h.y-=c.h),u(i,t.pointLabels[m]||"",b,p.size)}}}(t)}}});t.scaleService.registerScaleType("radialLinear",c,i)}},{25:25,34:34,45:45}],58:[function(t,e,i){"use strict";var n=t(1);n="function"==typeof n?n:window.moment;var a=t(25),o=t(45),r=Number.MIN_SAFE_INTEGER||-9007199254740991,s=Number.MAX_SAFE_INTEGER||9007199254740991,l={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},u=Object.keys(l);function d(t,e){return t-e}function c(t){var e,i,n,a={},o=[];for(e=0,i=t.length;e=0&&r<=s;){if(a=t[(n=r+s>>1)-1]||null,o=t[n],!a)return{lo:null,hi:o};if(o[e]i))return{lo:a,hi:o};s=n-1}}return{lo:o,hi:null}}(t,e,i),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],r=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=r[e]-o[e],l=s?(i-o[e])/s:0,u=(r[n]-o[n])*l;return o[n]+u}function f(t,e){var i=e.parser,a=e.parser||e.format;return"function"==typeof i?i(t):"string"==typeof t&&"string"==typeof a?n(t,a):(t instanceof n||(t=n(t)),t.isValid()?t:"function"==typeof a?a(t):t)}function g(t,e){if(o.isNullOrUndef(t))return null;var i=e.options.time,n=f(e.getRightValue(t),i);return n.isValid()?(i.round&&n.startOf(i.round),n.valueOf()):null}function p(t){for(var e=u.indexOf(t)+1,i=u.length;e=k&&i<=M&&_.push(i);return y.min=k,y.max=M,y._unit=S.unit||function(t,e,i,a){var o,r,s=n.duration(n(a).diff(n(i)));for(o=u.length-1;o>=u.indexOf(e);o--)if(r=u[o],l[r].common&&s.as(r)>=t.length)return r;return u[e?u.indexOf(e):0]}(_,S.minUnit,y.min,y.max),y._majorUnit=p(y._unit),y._table=function(t,e,i,n){if("linear"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,o,r,s,l,u=[],d=[e];for(a=0,o=t.length;ae&&s1?o[1]:s,v=o[0],b=(h(a,"time",c,"pos")-h(a,"time",v,"pos"))/2),d.time.max||(c=o[o.length-1],v=o.length>1?o[o.length-2]:r,x=(h(a,"time",c,"pos")-h(a,"time",v,"pos"))/2)),{left:b,right:x}),y._labelFormat=function(t,e){var i,n,a,o=t.length;for(i=0;i=0&&t0?s:1}});t.scaleService.registerScaleType("time",e,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},{1:1,25:25,45:45}]},{},[7])(7)}); \ No newline at end of file diff --git a/script/jquery.selection.js b/script/jquery.selection.js new file mode 100644 index 0000000..5886074 --- /dev/null +++ b/script/jquery.selection.js @@ -0,0 +1,354 @@ +/*! + * jQuery.selection - jQuery Plugin + * + * Copyright (c) 2010-2014 IWASAKI Koji (@madapaja). + * http://blog.madapaja.net/ + * Under The MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +(function($, win, doc) { + /** + * get caret status of the selection of the element + * + * @param {Element} element target DOM element + * @return {Object} return + * @return {String} return.text selected text + * @return {Number} return.start start position of the selection + * @return {Number} return.end end position of the selection + */ + var _getCaretInfo = function(element){ + var res = { + text: '', + start: 0, + end: 0 + }; + + if (!element.value) { + /* no value or empty string */ + return res; + } + + try { + if (win.getSelection) { + /* except IE */ + res.start = element.selectionStart; + res.end = element.selectionEnd; + res.text = element.value.slice(res.start, res.end); + } else if (doc.selection) { + /* for IE */ + element.focus(); + + var range = doc.selection.createRange(), + range2 = doc.body.createTextRange(); + + res.text = range.text; + + try { + range2.moveToElementText(element); + range2.setEndPoint('StartToStart', range); + } catch (e) { + range2 = element.createTextRange(); + range2.setEndPoint('StartToStart', range); + } + + res.start = element.value.length - range2.text.length; + res.end = res.start + range.text.length; + } + } catch (e) { + /* give up */ + } + + return res; + }; + + /** + * caret operation for the element + * @type {Object} + */ + var _CaretOperation = { + /** + * get caret position + * + * @param {Element} element target element + * @return {Object} return + * @return {Number} return.start start position for the selection + * @return {Number} return.end end position for the selection + */ + getPos: function(element) { + var tmp = _getCaretInfo(element); + return {start: tmp.start, end: tmp.end}; + }, + + /** + * set caret position + * + * @param {Element} element target element + * @param {Object} toRange caret position + * @param {Number} toRange.start start position for the selection + * @param {Number} toRange.end end position for the selection + * @param {String} caret caret mode: any of the following: "keep" | "start" | "end" + */ + setPos: function(element, toRange, caret) { + caret = this._caretMode(caret); + + if (caret === 'start') { + toRange.end = toRange.start; + } else if (caret === 'end') { + toRange.start = toRange.end; + } + + element.focus(); + try { + if (element.createTextRange) { + var range = element.createTextRange(); + + if (win.navigator.userAgent.toLowerCase().indexOf("msie") >= 0) { + toRange.start = element.value.substr(0, toRange.start).replace(/\r/g, '').length; + toRange.end = element.value.substr(0, toRange.end).replace(/\r/g, '').length; + } + + range.collapse(true); + range.moveStart('character', toRange.start); + range.moveEnd('character', toRange.end - toRange.start); + + range.select(); + } else if (element.setSelectionRange) { + element.setSelectionRange(toRange.start, toRange.end); + } + } catch (e) { + /* give up */ + } + }, + + /** + * get selected text + * + * @param {Element} element target element + * @return {String} return selected text + */ + getText: function(element) { + return _getCaretInfo(element).text; + }, + + /** + * get caret mode + * + * @param {String} caret caret mode + * @return {String} return any of the following: "keep" | "start" | "end" + */ + _caretMode: function(caret) { + caret = caret || "keep"; + if (caret === false) { + caret = 'end'; + } + + switch (caret) { + case 'keep': + case 'start': + case 'end': + break; + + default: + caret = 'keep'; + } + + return caret; + }, + + /** + * replace selected text + * + * @param {Element} element target element + * @param {String} text replacement text + * @param {String} caret caret mode: any of the following: "keep" | "start" | "end" + */ + replace: function(element, text, caret) { + var tmp = _getCaretInfo(element), + orig = element.value, + pos = $(element).scrollTop(), + range = {start: tmp.start, end: tmp.start + text.length}; + + element.value = orig.substr(0, tmp.start) + text + orig.substr(tmp.end); + + $(element).scrollTop(pos); + this.setPos(element, range, caret); + }, + + /** + * insert before the selected text + * + * @param {Element} element target element + * @param {String} text insertion text + * @param {String} caret caret mode: any of the following: "keep" | "start" | "end" + */ + insertBefore: function(element, text, caret) { + var tmp = _getCaretInfo(element), + orig = element.value, + pos = $(element).scrollTop(), + range = {start: tmp.start + text.length, end: tmp.end + text.length}; + + element.value = orig.substr(0, tmp.start) + text + orig.substr(tmp.start); + + $(element).scrollTop(pos); + this.setPos(element, range, caret); + }, + + /** + * insert after the selected text + * + * @param {Element} element target element + * @param {String} text insertion text + * @param {String} caret caret mode: any of the following: "keep" | "start" | "end" + */ + insertAfter: function(element, text, caret) { + var tmp = _getCaretInfo(element), + orig = element.value, + pos = $(element).scrollTop(), + range = {start: tmp.start, end: tmp.end}; + + element.value = orig.substr(0, tmp.end) + text + orig.substr(tmp.end); + + $(element).scrollTop(pos); + this.setPos(element, range, caret); + } + }; + + /* add jQuery.selection */ + $.extend({ + /** + * get selected text on the window + * + * @param {String} mode selection mode: any of the following: "text" | "html" + * @return {String} return + */ + selection: function(mode) { + var getText = ((mode || 'text').toLowerCase() === 'text'); + + try { + if (win.getSelection) { + if (getText) { + // get text + return win.getSelection().toString(); + } else { + // get html + var sel = win.getSelection(), range; + + if (sel.getRangeAt) { + range = sel.getRangeAt(0); + } else { + range = doc.createRange(); + range.setStart(sel.anchorNode, sel.anchorOffset); + range.setEnd(sel.focusNode, sel.focusOffset); + } + + return $('
').append(range.cloneContents()).html(); + } + } else if (doc.selection) { + if (getText) { + // get text + return doc.selection.createRange().text; + } else { + // get html + return doc.selection.createRange().htmlText; + } + } + } catch (e) { + /* give up */ + } + + return ''; + } + }); + + /* add selection */ + $.fn.extend({ + selection: function(mode, opts) { + opts = opts || {}; + + switch (mode) { + /** + * selection('getPos') + * get caret position + * + * @return {Object} return + * @return {Number} return.start start position for the selection + * @return {Number} return.end end position for the selection + */ + case 'getPos': + return _CaretOperation.getPos(this[0]); + + /** + * selection('setPos', opts) + * set caret position + * + * @param {Number} opts.start start position for the selection + * @param {Number} opts.end end position for the selection + */ + case 'setPos': + return this.each(function() { + _CaretOperation.setPos(this, opts); + }); + + /** + * selection('replace', opts) + * replace the selected text + * + * @param {String} opts.text replacement text + * @param {String} opts.caret caret mode: any of the following: "keep" | "start" | "end" + */ + case 'replace': + return this.each(function() { + _CaretOperation.replace(this, opts.text, opts.caret); + }); + + /** + * selection('insert', opts) + * insert before/after the selected text + * + * @param {String} opts.text insertion text + * @param {String} opts.caret caret mode: any of the following: "keep" | "start" | "end" + * @param {String} opts.mode insertion mode: any of the following: "before" | "after" + */ + case 'insert': + return this.each(function() { + if (opts.mode === 'before') { + _CaretOperation.insertBefore(this, opts.text, opts.caret); + } else { + _CaretOperation.insertAfter(this, opts.text, opts.caret); + } + }); + + /** + * selection('get') + * get selected text + * + * @return {String} return + */ + case 'get': + /* falls through */ + default: + return _CaretOperation.getText(this[0]); + } + + return this; + } + }); +})(jQuery, window, window.document); diff --git a/script/jsplumb.min.js b/script/jsplumb.min.js new file mode 100644 index 0000000..95d4955 --- /dev/null +++ b/script/jsplumb.min.js @@ -0,0 +1,7 @@ +(function(){"undefined"==typeof Math.sgn&&(Math.sgn=function(a){return 0==a?0:a>0?1:-1});var a={subtract:function(a,b){return{x:a.x-b.x,y:a.y-b.y}},dotProduct:function(a,b){return a.x*b.x+a.y*b.y},square:function(a){return Math.sqrt(a.x*a.x+a.y*a.y)},scale:function(a,b){return{x:a.x*b,y:a.y*b}}},b=64,c=Math.pow(2,-b-1),d=function(b,c){for(var d=[],e=f(b,c),h=c.length-1,i=2*h-1,j=g(e,i,d,0),k=a.subtract(b,c[0]),m=a.square(k),n=0,o=0;j>o;o++){k=a.subtract(b,l(c,h,d[o],null,null));var p=a.square(k);m>p&&(m=p,n=d[o])}return k=a.subtract(b,c[h]),p=a.square(k),m>p&&(m=p,n=1),{location:n,distance:m}},e=function(a,b){var c=d(a,b);return{point:l(b,b.length-1,c.location,null,null),location:c.location}},f=function(b,c){for(var d=c.length-1,e=2*d-1,f=[],g=[],h=[],i=[],k=[[1,.6,.3,.1],[.4,.6,.6,.4],[.1,.3,.6,1]],l=0;d>=l;l++)f[l]=a.subtract(c[l],b);for(var l=0;d-1>=l;l++)g[l]=a.subtract(c[l+1],c[l]),g[l]=a.scale(g[l],3);for(var m=0;d-1>=m;m++)for(var n=0;d>=n;n++)h[m]||(h[m]=[]),h[m][n]=a.dotProduct(g[m],f[n]);for(l=0;e>=l;l++)i[l]||(i[l]=[]),i[l].y=0,i[l].x=parseFloat(l)/e;for(var o=d,p=d-1,q=0;o+p>=q;q++){var r=Math.max(0,q-p),s=Math.min(q,o);for(l=r;s>=l;l++)j=q-l,i[l+j].y+=h[j][l]*k[j][l]}return i},g=function(a,c,d,e){var f,j,m=[],n=[],o=[],p=[];switch(h(a,c)){case 0:return 0;case 1:if(e>=b)return d[0]=(a[0].x+a[c].x)/2,1;if(i(a,c))return d[0]=k(a,c),1}l(a,c,.5,m,n),f=g(m,c,o,e+1),j=g(n,c,p,e+1);for(var q=0;f>q;q++)d[q]=o[q];for(var q=0;j>q;q++)d[q+f]=p[q];return f+j},h=function(a,b){var c,d,e=0;c=d=Math.sgn(a[0].y);for(var f=1;b>=f;f++)c=Math.sgn(a[f].y),c!=d&&e++,d=c;return e},i=function(a,b){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;i=a[0].y-a[b].y,j=a[b].x-a[0].x,k=a[0].x*a[b].y-a[b].x*a[0].y;for(var t=max_distance_below=0,u=1;b>u;u++){var v=i*a[u].x+j*a[u].y+k;v>t?t=v:vd?1:0},k=function(a,b){var c=1,d=0,e=a[b].x-a[0].x,f=a[b].y-a[0].y,g=a[0].x-0,h=a[0].y-0,i=e*d-f*c,j=1/i,k=(e*h-f*g)*j;return 0+c*k},l=function(a,b,c,d,e){for(var f=[[]],g=0;b>=g;g++)f[0][g]=a[g];for(var h=1;b>=h;h++)for(var g=0;b-h>=g;g++)f[h]||(f[h]=[]),f[h][g]||(f[h][g]={}),f[h][g].x=(1-c)*f[h-1][g].x+c*f[h-1][g+1].x,f[h][g].y=(1-c)*f[h-1][g].y+c*f[h-1][g+1].y;if(null!=d)for(g=0;b>=g;g++)d[g]=f[g][0];if(null!=e)for(g=0;b>=g;g++)e[g]=f[b-g][g];return f[b][0]},m={},n=function(a){var b=m[a];if(!b){b=[];var c=function(){return function(b){return Math.pow(b,a)}},d=function(){return function(b){return Math.pow(1-b,a)}},e=function(a){return function(b){return a}},f=function(){return function(a){return a}},g=function(){return function(a){return 1-a}},h=function(a){return function(b){for(var c=1,d=0;di;i++){for(var j=[new e(a)],k=0;a-i>k;k++)j.push(new f);for(var k=0;i>k;k++)j.push(new g);b.push(new h(j))}b.push(new d),m[a]=b}return b},o=function(a,b){for(var c=n(a.length-1),d=0,e=0,f=0;f0?1:-1,h=null;ed;)d+=.005*e,f=o(a,d),c+=p(f,b),b=f;return c},t=function(a,b,c){return r(a,b,c).point},u=function(a,b,c){return r(a,b,c).location},v=function(a,b){var c=o(a,b),d=o(a.slice(0,a.length-1),b),e=d.y-c.y,f=d.x-c.x;return 0==e?1/0:Math.atan(e/f)},w=function(a,b,c){var d=r(a,b,c);return d.location>1&&(d.location=1),d.location<0&&(d.location=0),v(a,d.location)},x=function(a,b,c,d){d=null==d?0:d;var e=r(a,b,d),f=v(a,e.location),g=Math.atan(-1/f),h=c/2*Math.sin(g),i=c/2*Math.cos(g);return[{x:e.point.x+i,y:e.point.y+h},{x:e.point.x-i,y:e.point.y-h}]},y=this.jsBezier={distanceFromCurve:d,gradientAtPoint:v,gradientAtPointAlongCurveFrom:w,nearestPointOnCurve:e,pointOnCurve:o,pointAlongCurveFrom:t,perpendicularToCurveAt:x,locationAlongCurveFrom:u,getLength:s,version:"0.9.0"};"undefined"!=typeof exports&&(exports.jsBezier=y)}).call("undefined"!=typeof window?window:this),function(){"use strict";var a=this,b=a.Biltong={version:"0.4.0"};"undefined"!=typeof exports&&(exports.Biltong=b);var c=function(a){return"[object Array]"===Object.prototype.toString.call(a)},d=function(a,b,d){return a=c(a)?a:[a.x,a.y],b=c(b)?b:[b.x,b.y],d(a,b)},e=b.gradient=function(a,b){return d(a,b,function(a,b){return b[0]==a[0]?b[1]>a[1]?1/0:-(1/0):b[1]==a[1]?b[0]>a[0]?0:-0:(b[1]-a[1])/(b[0]-a[0])})},f=(b.normal=function(a,b){return-1/e(a,b)},b.lineLength=function(a,b){return d(a,b,function(a,b){return Math.sqrt(Math.pow(b[1]-a[1],2)+Math.pow(b[0]-a[0],2))})},b.quadrant=function(a,b){return d(a,b,function(a,b){return b[0]>a[0]?b[1]>a[1]?2:1:b[0]==a[0]?b[1]>a[1]?2:1:b[1]>a[1]?3:4})}),g=(b.theta=function(a,b){return d(a,b,function(a,b){var c=e(a,b),d=Math.atan(c),g=f(a,b);return(4==g||3==g)&&(d+=Math.PI),0>d&&(d+=2*Math.PI),d})},b.intersects=function(a,b){var c=a.x,d=a.x+a.w,e=a.y,f=a.y+a.h,g=b.x,h=b.x+b.w,i=b.y,j=b.y+b.h;return g>=c&&d>=g&&i>=e&&f>=i||h>=c&&d>=h&&i>=e&&f>=i||g>=c&&d>=g&&j>=e&&f>=j||h>=c&&d>=g&&j>=e&&f>=j||c>=g&&h>=c&&e>=i&&j>=e||d>=g&&h>=d&&e>=i&&j>=e||c>=g&&h>=c&&f>=i&&j>=f||d>=g&&h>=c&&f>=i&&j>=f},b.encloses=function(a,b,c){var d=a.x,e=a.x+a.w,f=a.y,g=a.y+a.h,h=b.x,i=b.x+b.w,j=b.y,k=b.y+b.h,l=function(a,b,d,e){return c?b>=a&&d>=e:b>a&&d>e};return l(d,h,e,i)&&l(f,j,g,k)},[null,[1,-1],[1,1],[-1,1],[-1,-1]]),h=[null,[-1,-1],[-1,1],[1,1],[1,-1]];b.pointOnLine=function(a,b,c){var d=e(a,b),i=f(a,b),j=c>0?g[i]:h[i],k=Math.atan(d),l=Math.abs(c*Math.sin(k))*j[1],m=Math.abs(c*Math.cos(k))*j[0];return{x:a.x+m,y:a.y+l}},b.perpendicularLineTo=function(a,b,c){var d=e(a,b),f=Math.atan(-1/d),g=c/2*Math.sin(f),h=c/2*Math.cos(f);return[{x:b.x+h,y:b.y+g},{x:b.x-h,y:b.y-g}]}}.call("undefined"!=typeof window?window:this),function(){"use strict";var a=this,b={android:navigator.userAgent.toLowerCase().indexOf("android")>-1},c=function(a,b,c){c=c||a.parentNode;for(var d=c.querySelectorAll(b),e=0;ec&&a[c]!=b;c++);c-1&&9>v,x=function(a,b){if(null==a)return[0,0];var c=C(a),d=B(c,0);return[d[b+"X"],d[b+"Y"]]},y=function(a){return null==a?[0,0]:w?[a.clientX+document.documentElement.scrollLeft,a.clientY+document.documentElement.scrollTop]:x(a,"page")},z=function(a){return x(a,"screen")},A=function(a){return x(a,"client")},B=function(a,b){return a.item?a.item(b):a[b]},C=function(a){return a.touches&&a.touches.length>0?a.touches:a.changedTouches&&a.changedTouches.length>0?a.changedTouches:a.targetTouches&&a.targetTouches.length>0?a.targetTouches:[a]},D=function(a){return C(a).length},E=function(a,b,c,d){if(i(a,b,c),d.__tauid=c.__tauid,a.addEventListener)a.addEventListener(b,c,!1);else if(a.attachEvent){var e=b+c.__tauid;a["e"+e]=c,a[e]=function(){a["e"+e]&&a["e"+e](window.event)},a.attachEvent("on"+b,a[e])}},F=function(a,b,c){null!=c&&G(a,function(){var e=d(this);if(j(e,b,c),null!=c.__tauid)if(e.removeEventListener)e.removeEventListener(b,c,!1),s&&u[b]&&e.removeEventListener(u[b],c,!1);else if(this.detachEvent){var f=b+c.__tauid;e[f]&&e.detachEvent("on"+b,e[f]),e[f]=null,e["e"+f]=null}c.__taTouchProxy&&F(a,c.__taTouchProxy[1],c.__taTouchProxy[0])})},G=function(a,b){if(null!=a){a="undefined"!=typeof Window&&"unknown"!=typeof a.top&&a==a.top?[a]:"string"!=typeof a&&null==a.tagName&&null!=a.length?a:"string"==typeof a?document.querySelectorAll(a):[a];for(var c=0;c-1&&9>h,l=9===h,m=function(a){if(k)return[a.clientX+document.documentElement.scrollLeft,a.clientY+document.documentElement.scrollTop];var b=o(a),c=n(b,0);return l?[c.pageX||c.clientX,c.pageY||c.clientY]:[c.pageX,c.pageY]},n=function(a,b){return a.item?a.item(b):a[b]},o=function(a){return a.touches&&a.touches.length>0?a.touches:a.changedTouches&&a.changedTouches.length>0?a.changedTouches:a.targetTouches&&a.targetTouches.length>0?a.targetTouches:[a]},p={draggable:"katavorio-draggable",droppable:"katavorio-droppable",drag:"katavorio-drag",selected:"katavorio-drag-selected",active:"katavorio-drag-active",hover:"katavorio-drag-hover",noSelect:"katavorio-drag-no-select",ghostProxy:"katavorio-ghost-proxy",clonedDrag:"katavorio-clone-drag"},q="katavorio-drag-scope",r=["stop","start","drag","drop","over","out","beforeStart"],s=function(){},t=function(){return!0},u=function(a,b,c){for(var d=0;d1)for(var f=0;f0&&W&&b.setPosition(this.el,W),T.sort(G);for(var e=0;eb.rank?-1:0},H=function(a){return null==a?null:(a="string"==typeof a||a.constructor===String?document.getElementById(a):a,null==a?null:(a._katavorio=a._katavorio||F(),a))};a.Katavorio=function(a){var f=[],g={};this._dragsByScope={},this._dropsByScope={};var h=1,i=function(a,b){w(a,function(a){for(var c=0;c0},k=(this.getMatchingDroppables=function(a){for(var b=[],c={},d=0;d=0&&f.splice(d,1),j(a[b],c)&&w(a[b],function(a){a.destroy()}),delete a[b]}};this.elementRemoved=function(a){this.destroyDraggable(a),this.destroyDroppable(a)},this.destroyDraggable=function(a){A(a,"_katavorioDrag",this._dragsByScope)},this.destroyDroppable=function(a){A(a,"_katavorioDrop",this._dropsByScope)},this.reset=function(){this._dragsByScope={},this._dropsByScope={},f=[],g={},B={}};var B={},C=function(a,c,d){var f=e(c)?c:c.id,g=e(c)?!0:c.active!==!1,h=B[f]||function(){var a={name:f,members:[]};return B[f]=a,a}();return w(a,function(a){if(a._katavorioDrag){if(d&&null!=a._katavorioDrag.posseRoles[h.name])return;b(h.members,a._katavorioDrag),b(a._katavorioDrag.posses,h.name),a._katavorioDrag.posseRoles[h.name]=g}}),h};this.addToPosse=function(a,b){for(var c=[],d=1;d=f.length,i=function(){return e[g[1]]||function(){return e[g[1]]=[],e[g[1]]}()};if(h)g?i()[g[3]]=c:e[a]=c;else if(g){var j=i();e=j[g[3]]||function(){return j[g[3]]={},j[g[3]]}()}else e=e[a]||function(){return e[a]={},e[a]}()}),a}},functionChain:function(a,b,c){for(var d=0;d-1&&a.splice(c,1),-1!==c},remove:function(a,b){var c=a.indexOf(b);return c>-1&&a.splice(c,1),-1!==c},addWithFunction:function(a,b,c){-1===j.jsPlumbUtil.findWithFunction(a,c)&&a.push(b)},addToList:function(a,b,c,d){var e=a[b];return null==e&&(e=[],a[b]=e),e[d?"unshift":"push"](c),e},suggest:function(a,b,c){return-1===a.indexOf(b)?(c?a.unshift(b):a.push(b),!0):!1},extend:function(b,c,d){var e;for(c=a(c)?c:[c],e=0;e2)for(e=2;el&&n!==!1;){if(d[g])a[g][l].apply(this,[h,i]);else try{n=a[g][l].apply(this,[h,i])}catch(o){j.jsPlumbUtil.log("jsPlumb: fire failed for event "+g+" : "+o)}l++,(null==a||null==a[g])&&(m=!0)}}c=!1,f()}return this};var f=function(){var a=e.pop();a&&this.fire.apply(this,a)}.bind(this);this.unbind=function(b,c){if(0===arguments.length)a={};else if(1===arguments.length){if("string"==typeof b)delete a[b];else if(b.__jsPlumb){var d;for(var e in b.__jsPlumb)d=b.__jsPlumb[e],j.jsPlumbUtil.remove(a[d]||[],b)}}else 2===arguments.length&&j.jsPlumbUtil.remove(a[b]||[],c);return this},this.getListener=function(b){return a[b]},this.setSuspendEvents=function(a){b=a},this.isSuspendEvents=function(){return b},this.silently=function(a){this.setSuspendEvents(!0);try{a()}catch(b){j.jsPlumbUtil.log("Cannot execute silent function "+b)}this.setSuspendEvents(!1)},this.cleanupListeners=function(){for(var b in a)a[b]=null}},j.jsPlumbUtil.EventGenerator.prototype={cleanup:function(){this.cleanupListeners()}},"undefined"!=typeof exports&&(exports.jsPlumbUtil=j.jsPlumbUtil)}.call("undefined"!=typeof window?window:this),function(){"use strict";var a=this;a.jsPlumbUtil.matchesSelector=function(a,b,c){c=c||a.parentNode;for(var d=c.querySelectorAll(b),e=0;ef;f++)d&&d===e[f]||e[f].setHover(b,!0,c)},g=function(a){return null==a?null:a.split(" ")},h=function(a,b,c){for(var d in b)a[d]=c},i=function(a,c){c=b.isArray(c)||null!=c.length&&!b.isString(c)?c:[c];for(var d=0;dj;j++){var l=a._jsPlumb.types[j];if("__default"!==l){var m=a._jsPlumb.instance.getType(l,e);null!=m&&(i=b.merge(i,m,["cssClass"]),h(f,m,l))}}c&&(i=b.populate(i,c,"_")),a.applyType(i,d,f),d||a.repaint()}},k=a.jsPlumbUIComponent=function(a){b.EventGenerator.apply(this,arguments);var c=this,d=arguments,e=c.idPrefix,f=e+(new Date).getTime();this._jsPlumb={instance:a._jsPlumb,parameters:a.parameters||{},paintStyle:null,hoverPaintStyle:null,paintStyleInUse:null,hover:!1,beforeDetach:a.beforeDetach,beforeDrop:a.beforeDrop,overlayPlacements:[],hoverClass:a.hoverClass||a._jsPlumb.Defaults.HoverClass,types:[],typeCache:{}},this.cacheTypeItem=function(a,b,c){this._jsPlumb.typeCache[c]=this._jsPlumb.typeCache[c]||{},this._jsPlumb.typeCache[c][a]=b},this.getCachedTypeItem=function(a,b){return this._jsPlumb.typeCache[b]?this._jsPlumb.typeCache[b][a]:null},this.getId=function(){return f};var g=a.overlays||[],h={};if(this.defaultOverlayKeys){for(var i=0;if;f++)this.hasType(d[f])||(this._jsPlumb.types.push(d[f]),e=!0);e&&j(this,b,c)}},removeType:function(a,b,c){var d=g(a),e=!1,f=function(a){var b=this._jsPlumb.types.indexOf(a);return-1!==b?(l(this,b),this._jsPlumb.types.splice(b,1),!0):!1}.bind(this);if(null!=d){for(var h=0,i=d.length;i>h;h++)e=f(d[h])||e;e&&j(this,b,c)}},clearTypes:function(a,b){for(var c=this._jsPlumb.types.length,d=0;c>d;d++)l(this,0),this._jsPlumb.types.splice(0,1);j(this,a,b)},toggleType:function(a,b,c){var d=g(a);if(null!=d){for(var e=0,f=d.length;f>e;e++){var h=this._jsPlumb.types.indexOf(d[e]);-1!==h?(l(this,h),this._jsPlumb.types.splice(h,1)):this._jsPlumb.types.push(d[e])}j(this,b,c)}},applyType:function(a,b){if(this.setPaintStyle(a.paintStyle,b),this.setHoverPaintStyle(a.hoverPaintStyle,b),a.parameters)for(var c in a.parameters)this.setParameter(c,a.parameters[c]);this._jsPlumb.paintStyleInUse=this.getPaintStyle()},setPaintStyle:function(a,b){this._jsPlumb.paintStyle=a,this._jsPlumb.paintStyleInUse=this._jsPlumb.paintStyle,d(this),b||this.repaint()},getPaintStyle:function(){return this._jsPlumb.paintStyle},setHoverPaintStyle:function(a,b){this._jsPlumb.hoverPaintStyle=a,d(this),b||this.repaint()},getHoverPaintStyle:function(){return this._jsPlumb.hoverPaintStyle},destroy:function(a){(a||null==this.typeId)&&(this.cleanupListeners(),this.clone=null,this._jsPlumb=null)},isHover:function(){return this._jsPlumb.hover},setHover:function(a,b,d){if(this._jsPlumb&&!this._jsPlumb.instance.currentlyDragging&&!this._jsPlumb.instance.isHoverSuspended()){this._jsPlumb.hover=a;var e=a?"addClass":"removeClass";null!=this.canvas&&(null!=this._jsPlumb.instance.hoverClass&&this._jsPlumb.instance[e](this.canvas,this._jsPlumb.instance.hoverClass),null!=this._jsPlumb.hoverClass&&this._jsPlumb.instance[e](this.canvas,this._jsPlumb.hoverClass)),null!=this._jsPlumb.hoverPaintStyle&&(this._jsPlumb.paintStyleInUse=a?this._jsPlumb.hoverPaintStyle:this._jsPlumb.paintStyle,this._jsPlumb.instance.isSuspendDrawing()||(d=d||c(),this.repaint({timestamp:d,recalc:!1}))),this.getAttachedElements&&!b&&f(this,a,c(),this)}}});var m=0,n=function(){var a=m+1;return m++,a},o=a.jsPlumbInstance=function(d){this.version="2.6.6",d&&p.extend(this.Defaults,d),this.logEnabled=this.Defaults.LogEnabled,this._connectionTypes={},this._endpointTypes={},b.EventGenerator.apply(this);var f=this,g=n(),h=f.bind,j={},l=1,m=function(a){if(null==a)return null;if(3===a.nodeType||8===a.nodeType)return{el:a,text:!0};var c=f.getElement(a);return{el:c,id:b.isString(a)&&null==c?a:Y(c)}};this.getInstanceIndex=function(){return g},this.setZoom=function(a,b){return l=a,f.fire("zoom",l),b&&f.repaintEverything(),!0},this.getZoom=function(){return l};for(var o in this.Defaults)j[o]=this.Defaults[o];var q,r=[];this.unbindContainer=function(){if(null!=q&&r.length>0)for(var a=0;ae;e++)d.overlays.push(d.sourceEndpoint.connectorOverlays[e])}d.sourceEndpoint&&d.sourceEndpoint.scope&&(d.scope=d.sourceEndpoint.scope),!d["pointer-events"]&&d.sourceEndpoint&&d.sourceEndpoint.connectorPointerEvents&&(d["pointer-events"]=d.sourceEndpoint.connectorPointerEvents);var h=function(a,b,c){return f.addEndpoint(a,N(b,{anchor:d.anchors?d.anchors[c]:d.anchor,endpoint:d.endpoints?d.endpoints[c]:d.endpoint,paintStyle:d.endpointStyles?d.endpointStyles[c]:d.endpointStyle,hoverPaintStyle:d.endpointHoverStyles?d.endpointHoverStyles[c]:d.endpointHoverStyle}))},i=function(a,b,c,e){if(d[a]&&!d[a].endpoint&&!d[a+"Endpoint"]&&!d.newConnection){var f=Y(d[a]),g=c[f];if(g=g?g[e]:null){if(!g.enabled)return!1;var i=null!=g.endpoint&&g.endpoint._jsPlumb?g.endpoint:h(d[a],g.def,b);if(i.isFull())return!1;d[a+"Endpoint"]=i,!d.scope&&g.def.scope&&(d.scope=g.def.scope),g.uniqueEndpoint?g.endpoint?i.finalEndpoint=g.endpoint:(g.endpoint=i,i.setDeleteOnEmpty(!1)):i.setDeleteOnEmpty(!0),0===b&&g.def.connectorOverlays&&(d.overlays=d.overlays||[],Array.prototype.push.apply(d.overlays,g.def.connectorOverlays))}}};return i("source",0,this.sourceEndpointDefinitions,d.type||"default")!==!1&&i("target",1,this.targetEndpointDefinitions,d.type||"default")!==!1?(d.sourceEndpoint&&d.targetEndpoint&&(M(d.sourceEndpoint,d.targetEndpoint)||(d=null)),d):void 0}.bind(f),P=function(a){var b=f.Defaults.ConnectionType||f.getDefaultConnectionType();a._jsPlumb=f,a.newConnection=P,a.newEndpoint=R,a.endpointsByUUID=w,a.endpointsByElement=v,a.finaliseConnection=Q,a.id="con_"+H();var c=new b(a);return c.isDetachable()&&(c.endpoints[0].initDraggable("_jsPlumbSource"),c.endpoints[1].initDraggable("_jsPlumbTarget")),c},Q=f.finaliseConnection=function(a,b,c,d){if(b=b||{},a.suspendedEndpoint||u.push(a),a.pending=null,a.endpoints[0].isTemporarySource=!1,d!==!1&&f.anchorManager.newConnection(a),J(a.source),!b.doNotFireConnectionEvent&&b.fireEvent!==!1){var e={connection:a,source:a.source,target:a.target,sourceId:a.sourceId,targetId:a.targetId,sourceEndpoint:a.endpoints[0],targetEndpoint:a.endpoints[1]};f.fire("connection",e,c)}},R=function(a,b){var c=f.Defaults.EndpointType||p.Endpoint,d=p.extend({},a);d._jsPlumb=f,d.newConnection=P,d.newEndpoint=R,d.endpointsByUUID=w,d.endpointsByElement=v,d.fireDetachEvent=_,d.elementId=b||Y(d.source);var e=new c(d);return e.id="ep_"+H(),sa(d.elementId,d.source),p.headless||f.getDragManager().endpointAdded(d.source,b),e},S=function(a,b,c){var d=v[a];if(d&&d.length)for(var e=0,f=d.length;f>e;e++){for(var g=0,h=d[e].connections.length;h>g;g++){var i=b(d[e].connections[g]);if(i)return}c&&c(d[e])}},T=function(a,b){return p.each(a,function(a){f.isDragSupported(a)&&(A[f.getAttribute(a,"id")]=b,f.setElementDraggable(a,b))})},U=function(a,b,c){b="block"===b;var d=null;c&&(d=function(a){a.setVisible(b,!0,!0)});var e=m(a);S(e.id,function(a){if(b&&c){var d=a.sourceId===e.id?1:0;a.endpoints[d].isVisible()&&a.setVisible(!0)}else a.setVisible(b)},d)},V=function(a){var b;return p.each(a,function(a){var c=f.getAttribute(a,"id");return b=null==A[c]?!1:A[c],b=!b,A[c]=b,f.setDraggable(a,b),b}.bind(this)),b},W=function(a,b){var c=null;b&&(c=function(a){var b=a.isVisible();a.setVisible(!b)}),S(a,function(a){var b=a.isVisible();a.setVisible(!b)},c)},X=function(a){var b=y[a];return b?{o:b,s:C[a]}:ta({elId:a})},Y=function(a,c,d){if(b.isString(a))return a;if(null==a)return null;var e=f.getAttribute(a,"id");return e&&"undefined"!==e||(2===arguments.length&&void 0!==arguments[1]?e=c:(1===arguments.length||3===arguments.length&&!arguments[2])&&(e="jsPlumb_"+g+"_"+H()),d||f.setAttribute(a,"id",e)),e};this.setConnectionBeingDragged=function(a){B=a},this.isConnectionBeingDragged=function(){return B},this.getManagedElements=function(){return x},this.connectorClass="jtk-connector",this.connectorOutlineClass="jtk-connector-outline",this.editableConnectorClass="jtk-connector-editable",this.connectedClass="jtk-connected",this.hoverClass="jtk-hover",this.endpointClass="jtk-endpoint",this.endpointConnectedClass="jtk-endpoint-connected",this.endpointFullClass="jtk-endpoint-full",this.endpointDropAllowedClass="jtk-endpoint-drop-allowed",this.endpointDropForbiddenClass="jtk-endpoint-drop-forbidden",this.overlayClass="jtk-overlay",this.draggingClass="jtk-dragging",this.elementDraggingClass="jtk-element-dragging",this.sourceElementDraggingClass="jtk-source-element-dragging",this.targetElementDraggingClass="jtk-target-element-dragging",this.endpointAnchorClassPrefix="jtk-endpoint-anchor",this.hoverSourceClass="jtk-source-hover",this.hoverTargetClass="jtk-target-hover",this.dragSelectClass="jtk-drag-select",this.Anchors={},this.Connectors={svg:{}},this.Endpoints={svg:{}},this.Overlays={svg:{}},this.ConnectorRenderers={},this.SVG="svg",this.addEndpoint=function(a,c,d){d=d||{};var e=p.extend({},d);p.extend(e,c),e.endpoint=e.endpoint||f.Defaults.Endpoint,e.paintStyle=e.paintStyle||f.Defaults.EndpointStyle;for(var g=[],h=b.isArray(a)||null!=a.length&&!b.isString(a)?a:[a],i=0,j=h.length;j>i;i++){e.source=f.getElement(h[i]),qa(e.source);var k=Y(e.source),l=R(e,k),m=sa(k,e.source).info.o;b.addToList(v,k,l),D||l.paint({anchorLoc:l.anchor.compute({xy:[m.left,m.top],wh:C[k],element:l,timestamp:E}),timestamp:E}),g.push(l)}return 1===g.length?g[0]:g},this.addEndpoints=function(a,c,d){for(var e=[],g=0,h=c.length;h>g;g++){var i=f.addEndpoint(a,c[g],d);b.isArray(i)?Array.prototype.push.apply(e,i):e.push(i)}return e},this.animate=function(a,c,d){if(!this.animationSupported)return!1;d=d||{};var e=f.getElement(a),g=Y(e),h=p.animEvents.step,i=p.animEvents.complete;d[h]=b.wrap(d[h],function(){f.revalidate(g)}),d[i]=b.wrap(d[i],function(){f.revalidate(g)}),f.doAnimate(e,c,d)},this.checkCondition=function(a,c){var d=f.getListener(a),e=!0;if(d&&d.length>0){var g=Array.prototype.slice.call(arguments,1);try{for(var h=0,i=d.length;i>h;h++)e=e&&d[h].apply(d[h],g)}catch(j){b.log(f,"cannot check condition ["+a+"]"+j)}}return e},this.connect=function(a,c){var d,e=O(a,c);if(e){if(null==e.source&&null==e.sourceEndpoint)return void b.log("Cannot establish connection - source does not exist");if(null==e.target&&null==e.targetEndpoint)return void b.log("Cannot establish connection - target does not exist");qa(e.source),d=P(e),Q(d,e)}return d};var Z=[{el:"source",elId:"sourceId",epDefs:"sourceEndpointDefinitions"},{el:"target",elId:"targetId",epDefs:"targetEndpointDefinitions"}],$=function(a,b,c,d){var e,f,g,h=Z[c],i=a[h.elId],j=(a[h.el],a.endpoints[c]),k={index:c,originalSourceId:0===c?i:a.sourceId,newSourceId:a.sourceId,originalTargetId:1===c?i:a.targetId,newTargetId:a.targetId,connection:a};if(b.constructor===p.Endpoint)e=b,e.addConnection(a),b=e.element;else if(f=Y(b),g=this[h.epDefs][f],f===a[h.elId])e=null;else if(g)for(var l in g){if(!g[l].enabled)return;e=null!=g[l].endpoint&&g[l].endpoint._jsPlumb?g[l].endpoint:this.addEndpoint(b,g[l].def),g[l].uniqueEndpoint&&(g[l].endpoint=e),e.addConnection(a)}else e=a.makeEndpoint(0===c,b,f);return null!=e&&(j.detachFromConnection(a),a.endpoints[c]=e,a[h.el]=e.element,a[h.elId]=e.elementId,k[0===c?"newSourceId":"newTargetId"]=e.elementId,aa(k),d||a.repaint()),k.element=b,k}.bind(this);this.setSource=function(a,b,c){var d=$(a,b,0,c);this.anchorManager.sourceChanged(d.originalSourceId,d.newSourceId,a,d.el)},this.setTarget=function(a,b,c){var d=$(a,b,1,c);this.anchorManager.updateOtherEndpoint(d.originalSourceId,d.originalTargetId,d.newTargetId,a)},this.deleteEndpoint=function(a,b,c){var d="string"==typeof a?w[a]:a;return d&&f.deleteObject({endpoint:d,dontUpdateHover:b,deleteAttachedObjects:c}),f},this.deleteEveryEndpoint=function(){var a=f.setSuspendDrawing(!0);for(var b in v){var c=v[b];if(c&&c.length)for(var d=0,e=c.length;e>d;d++)f.deleteEndpoint(c[d],!0)}v={},x={},w={},y={},z={},f.anchorManager.reset();var g=f.getDragManager();return g&&g.reset(),a||f.setSuspendDrawing(!1),f};var _=function(a,b,c){var d=f.Defaults.ConnectionType||f.getDefaultConnectionType(),e=a.constructor===d,g=e?{connection:a,source:a.source,target:a.target,sourceId:a.sourceId,targetId:a.targetId,sourceEndpoint:a.endpoints[0],targetEndpoint:a.endpoints[1]}:a;b&&f.fire("connectionDetached",g,c),f.fire("internal.connectionDetached",g,c),f.anchorManager.connectionDetached(g)},aa=f.fireMoveEvent=function(a,b){f.fire("connectionMoved",a,b)};this.unregisterEndpoint=function(a){a._jsPlumb.uuid&&(w[a._jsPlumb.uuid]=null),f.anchorManager.deleteEndpoint(a);for(var b in v){var c=v[b];if(c){for(var d=[],e=0,g=c.length;g>e;e++)c[e]!==a&&d.push(c[e]);v[b]=d}v[b].length<1&&delete v[b]}};var ba="isDetachAllowed",ca="beforeDetach",da="checkCondition";this.deleteConnection=function(a,c){return null!=a&&(c=c||{},c.force||b.functionChain(!0,!1,[[a.endpoints[0],ba,[a]],[a.endpoints[1],ba,[a]],[a,ba,[a]],[f,da,[ca,a]]]))?(a.setHover(!1),_(a,!a.pending&&c.fireEvent!==!1,c.originalEvent),a.endpoints[0].detachFromConnection(a),a.endpoints[1].detachFromConnection(a),b.removeWithFunction(u,function(b){return a.id===b.id}),a.cleanup(),a.destroy(),!0):!1},this.deleteEveryConnection=function(a){a=a||{};var b=u.length,c=0;return f.batch(function(){for(var d=0;b>d;d++)c+=f.deleteConnection(u[0],a)?1:0}),c},this.deleteConnectionsForElement=function(a,b){b=b||{},a=f.getElement(a);var c=Y(a),d=v[c];if(d&&d.length)for(var e=0,g=d.length;g>e;e++)d[e].deleteEveryConnection(b);return f},this.deleteObject=function(a){var c={endpoints:{},connections:{},endpointCount:0,connectionCount:0},d=a.deleteAttachedObjects!==!1,e=function(b){null!=b&&null==c.connections[b.id]&&(a.dontUpdateHover||null==b._jsPlumb||b.setHover(!1),c.connections[b.id]=b,c.connectionCount++)},g=function(b){if(null!=b&&null==c.endpoints[b.id]&&(a.dontUpdateHover||null==b._jsPlumb||b.setHover(!1),c.endpoints[b.id]=b,c.endpointCount++,d))for(var f=0;fe;e++)a[e][b].apply(a[e],c);return d(a)},fa=function(a,b,c){for(var d=[],e=0,f=a.length;f>e;e++)d.push([a[e][b].apply(a[e],c),a[e]]);return d},ga=function(a,b,c){return function(){return ea(a,b,arguments,c)}},ha=function(a,b){return function(){return fa(a,b,arguments)}},ia=function(a,b){var c=[];if(a)if("string"==typeof a){if("*"===a)return a;c.push(a)}else if(b)c=a;else if(a.length)for(var d=0,e=a.length;e>d;d++)c.push(m(a[d]).id);else c.push(m(a).id);return c},ja=function(a,b,c){return"*"===a?!0:a.length>0?-1!==a.indexOf(b):!c};this.getConnections=function(a,b){a?a.constructor===String&&(a={scope:a}):a={};for(var c=a.scope||f.getDefaultScope(),d=ia(c,!0),e=ia(a.source),g=ia(a.target),h=!b&&d.length>1?{}:[],i=function(a,c){if(!b&&d.length>1){var e=h[a];null==e&&(e=h[a]=[]),e.push(c)}else h.push(c)},j=0,k=u.length;k>j;j++){var l=u[j],m=l.proxies&&l.proxies[0]?l.proxies[0].originalEp.elementId:l.sourceId,n=l.proxies&&l.proxies[1]?l.proxies[1].originalEp.elementId:l.targetId;ja(d,l.scope)&&ja(e,m)&&ja(g,n)&&i(l.scope,l)}return h};var ka=function(a,b){return function(c){for(var d=0,e=a.length;e>d;d++)c(a[d]);return b(a)}},la=function(a){return function(b){return a[b]}},ma=function(a,b){var c,d,e={length:a.length,each:ka(a,b),get:la(a)},f=["setHover","removeAllOverlays","setLabel","addClass","addOverlay","removeOverlay","removeOverlays","showOverlay","hideOverlay","showOverlays","hideOverlays","setPaintStyle","setHoverPaintStyle","setSuspendEvents","setParameter","setParameters","setVisible","repaint","addType","toggleType","removeType","removeClass","setType","bind","unbind"],g=["getLabel","getOverlay","isHover","getParameter","getParameters","getPaintStyle","getHoverPaintStyle","isVisible","hasType","getType","isSuspendEvents"];for(c=0,d=f.length;d>c;c++)e[f[c]]=ga(a,f[c],b);for(c=0,d=g.length;d>c;c++)e[g[c]]=ha(a,g[c]);return e},na=function(a){var b=ma(a,na);return p.extend(b,{setDetachable:ga(a,"setDetachable",na),setReattach:ga(a,"setReattach",na),setConnector:ga(a,"setConnector",na),"delete":function(){for(var b=0,c=a.length;c>b;b++)f.deleteConnection(a[b])},isDetachable:ha(a,"isDetachable"),isReattach:ha(a,"isReattach")})},oa=function(a){var b=ma(a,oa);return p.extend(b,{setEnabled:ga(a,"setEnabled",oa),setAnchor:ga(a,"setAnchor",oa),isEnabled:ha(a,"isEnabled"),deleteEveryConnection:function(){for(var b=0,c=a.length;c>b;b++)a[b].deleteEveryConnection()},"delete":function(){for(var b=0,c=a.length;c>b;b++)f.deleteEndpoint(a[b])}})};this.select=function(a){return a=a||{},a.scope=a.scope||"*",na(a.connections||f.getConnections(a,!0))},this.selectEndpoints=function(a){a=a||{},a.scope=a.scope||"*";var b=!a.element&&!a.source&&!a.target,c=b?"*":ia(a.element),d=b?"*":ia(a.source),e=b?"*":ia(a.target),f=ia(a.scope,!0),g=[];for(var h in v){var i=ja(c,h,!0),j=ja(d,h,!0),k="*"!==d,l=ja(e,h,!0),m="*"!==e;if(i||j||l)a:for(var n=0,o=v[h].length;o>n;n++){var p=v[h][n];if(ja(f,p.scope,!0)){var q=k&&d.length>0&&!p.isSource,r=m&&e.length>0&&!p.isTarget;if(q||r)continue a;g.push(p)}}}return oa(g)},this.getAllConnections=function(){return u},this.getDefaultScope=function(){return F},this.getEndpoint=K,this.getEndpoints=function(a){return v[m(a).id]||[]},this.getDefaultEndpointType=function(){return p.Endpoint},this.getDefaultConnectionType=function(){return p.Connection},this.getId=Y,this.appendElement=I;var pa=!1;this.isHoverSuspended=function(){return pa},this.setHoverSuspended=function(a){pa=a},this.hide=function(a,b){return U(a,"none",b),f},this.idstamp=H;var qa=function(a){if(!q&&a){var b=f.getElement(a);b.offsetParent&&f.setContainer(b.offsetParent)}},ra=function(){f.Defaults.Container&&f.setContainer(f.Defaults.Container)},sa=f.manage=function(a,b,c){return x[a]||(x[a]={el:b,endpoints:[],connections:[]},x[a].info=ta({elId:a,timestamp:E}),c||f.fire("manageElement",{id:a,info:x[a].info,el:b})),x[a]},ta=this.updateOffset=function(a){var b,c=a.timestamp,d=a.recalc,e=a.offset,g=a.elId;return D&&!c&&(c=E),!d&&c&&c===z[g]?{o:a.offset||y[g],s:C[g]}:(d||!e&&null==y[g]?(b=x[g]?x[g].el:null,null!=b&&(C[g]=f.getSize(b),y[g]=f.getOffset(b),z[g]=c)):(y[g]=e||y[g],null==C[g]&&(b=x[g].el,null!=b&&(C[g]=f.getSize(b))),z[g]=c),y[g]&&!y[g].right&&(y[g].right=y[g].left+C[g][0],y[g].bottom=y[g].top+C[g][1],y[g].width=C[g][0],y[g].height=C[g][1],y[g].centerx=y[g].left+y[g].width/2,y[g].centery=y[g].top+y[g].height/2),{o:y[g],s:C[g]})};this.init=function(){t||(ra(),f.anchorManager=new a.jsPlumb.AnchorManager({jsPlumbInstance:f}),t=!0,f.fire("ready",f))}.bind(this), +this.log=s,this.jsPlumbUIComponent=k,this.makeAnchor=function(){var c,d=function(b,c){if(a.jsPlumb.Anchors[b])return new a.jsPlumb.Anchors[b](c);if(!f.Defaults.DoNotThrowErrors)throw{msg:"jsPlumb: unknown anchor type '"+b+"'"}};if(0===arguments.length)return null;var e=arguments[0],g=arguments[1],h=(arguments[2],null);if(e.compute&&e.getOrientation)return e;if("string"==typeof e)h=d(arguments[0],{elementId:g,jsPlumbInstance:f});else if(b.isArray(e))if(b.isArray(e[0])||b.isString(e[0]))2===e.length&&b.isObject(e[1])?b.isString(e[0])?(c=a.jsPlumb.extend({elementId:g,jsPlumbInstance:f},e[1]),h=d(e[0],c)):(c=a.jsPlumb.extend({elementId:g,jsPlumbInstance:f,anchors:e[0]},e[1]),h=new a.jsPlumb.DynamicAnchor(c)):h=new p.DynamicAnchor({anchors:e,selector:null,elementId:g,jsPlumbInstance:f});else{var i={x:e[0],y:e[1],orientation:e.length>=4?[e[2],e[3]]:[0,0],offsets:e.length>=6?[e[4],e[5]]:[0,0],elementId:g,jsPlumbInstance:f,cssClass:7===e.length?e[6]:null};h=new a.jsPlumb.Anchor(i),h.clone=function(){return new a.jsPlumb.Anchor(i)}}return h.id||(h.id="anchor_"+H()),h},this.makeAnchors=function(c,d,e){for(var g=[],h=0,i=c.length;i>h;h++)"string"==typeof c[h]?g.push(a.jsPlumb.Anchors[c[h]]({elementId:d,jsPlumbInstance:e})):b.isArray(c[h])&&g.push(f.makeAnchor(c[h],d,e));return g},this.makeDynamicAnchor=function(b,c){return new a.jsPlumb.DynamicAnchor({anchors:b,selector:c,elementId:null,jsPlumbInstance:f})},this.targetEndpointDefinitions={},this.sourceEndpointDefinitions={};var ua=function(a,b,c,d,e){for(var f=a.target||a.srcElement,g=!1,h=d.getSelector(b,c),i=0;i0&&a>=c.def.maxConnections},element:c.el,elementId:c.id,isSource:g,isTarget:h,addClass:function(a){f.addClass(c.el,a)},removeClass:function(a){f.removeClass(c.el,a)},onDrop:function(a){var b=a.endpoints[0];b.anchor.locked=!1},isDropAllowed:function(){return i.isDropAllowed.apply(i,arguments)},isRedrop:function(a){return null!=a.suspendedElement&&null!=a.suspendedEndpoint&&a.suspendedEndpoint.element===c.el},getEndpoint:function(b){var e=c.def.endpoint;if(null==e||null==e._jsPlumb){var g=f.deriveEndpointAndAnchorSpec(b.getType().join(" "),!0),h=g.endpoints?a.jsPlumb.extend(d,{endpoint:c.def.def.endpoint||g.endpoints[1]}):d;g.anchors&&(h=a.jsPlumb.extend(h,{anchor:c.def.def.anchor||g.anchors[1]})),e=f.addEndpoint(c.el,h),e._mtNew=!0}if(d.uniqueEndpoint&&(c.def.endpoint=e),e.setDeleteOnEmpty(!0),b.isDetachable()&&e.initDraggable(),null!=e.anchor.positionFinder){var i=f.getUIPosition(arguments,f.getZoom()),j=f.getOffset(c.el),k=f.getSize(c.el),l=null==i?[0,0]:e.anchor.positionFinder(i,j,k,e.anchor.constructorParams);e.anchor.x=l[0],e.anchor.y=l[1]}return e},maybeCleanup:function(a){a._mtNew&&0===a.connections.length?f.deleteObject({endpoint:a}):delete a._mtNew}}),l=a.jsPlumb.dragEvents.drop;return e.scope=e.scope||d.scope||f.Defaults.Scope,e[l]=b.wrap(e[l],j,!0),h&&(e[a.jsPlumb.dragEvents.over]=function(){return!0}),d.allowLoopback===!1&&(e.canDrop=function(a){var b=a.getDragElement()._jsPlumbRelatedElement;return b!==c.el}),f.initDroppable(c.el,e,"internal"),j};this.makeTarget=function(b,c,d){var e=a.jsPlumb.extend({_jsPlumb:this},d);a.jsPlumb.extend(e,c);for(var g=e.maxConnections||-1,h=function(b){var c=m(b),d=c.id,h=a.jsPlumb.extend({},e.dropOptions||{}),i=e.connectionType||"default";this.targetEndpointDefinitions[d]=this.targetEndpointDefinitions[d]||{},qa(d),c.el._isJsPlumbGroup&&null==h.rank&&(h.rank=-1);var j={def:a.jsPlumb.extend({},e),uniqueEndpoint:e.uniqueEndpoint,maxConnections:g,enabled:!0};e.createEndpoint&&(j.uniqueEndpoint=!0,j.endpoint=f.addEndpoint(b,j.def),j.endpoint.setDeleteOnEmpty(!1)),c.def=j,this.targetEndpointDefinitions[d][i]=j,va(c,e,h,e.isSource===!0,!0),c.el._katavorioDrop[c.el._katavorioDrop.length-1].targetDef=j}.bind(this),i=b.length&&b.constructor!==String?b:[b],j=0,k=i.length;k>j;j++)h(i[j]);return this},this.unmakeTarget=function(a,b){var c=m(a);return f.destroyDroppable(c.el,"internal"),b||delete this.targetEndpointDefinitions[c.id],this},this.makeSource=function(c,d,e){var g=a.jsPlumb.extend({_jsPlumb:this},e);a.jsPlumb.extend(g,d);var h=g.connectionType||"default",i=f.deriveEndpointAndAnchorSpec(h);g.endpoint=g.endpoint||i.endpoints[0],g.anchor=g.anchor||i.anchors[0];for(var j=g.maxConnections||-1,k=g.onMaxConnections,n=function(d){var e=d.id,i=this.getElement(d.el);this.sourceEndpointDefinitions[e]=this.sourceEndpointDefinitions[e]||{},qa(e);var m={def:a.jsPlumb.extend({},g),uniqueEndpoint:g.uniqueEndpoint,maxConnections:j,enabled:!0};g.createEndpoint&&(m.uniqueEndpoint=!0,m.endpoint=f.addEndpoint(c,m.def),m.endpoint.setDeleteOnEmpty(!1)),this.sourceEndpointDefinitions[e][h]=m,d.def=m;var n=a.jsPlumb.dragEvents.stop,o=a.jsPlumb.dragEvents.drag,p=a.jsPlumb.extend({},g.dragOptions||{}),q=p.drag,r=p.stop,s=null,t=!1;p.scope=p.scope||g.scope,p[o]=b.wrap(p[o],function(){q&&q.apply(this,arguments),t=!1}),p[n]=b.wrap(p[n],function(){if(r&&r.apply(this,arguments),this.currentlyDragging=!1,null!=s._jsPlumb){var a=g.anchor||this.Defaults.Anchor,b=s.anchor,c=s.connections[0],d=this.makeAnchor(a,e,this),h=s.element;if(null!=d.positionFinder){var i=f.getOffset(h),j=this.getSize(h),k={left:i.left+b.x*j[0],top:i.top+b.y*j[1]},l=d.positionFinder(k,i,j,d.constructorParams);d.x=l[0],d.y=l[1]}s.setAnchor(d,!0),s.repaint(),this.repaint(s.elementId),null!=c&&this.repaint(c.targetId)}}.bind(this));var u=function(c){if(3!==c.which&&2!==c.button){var m=this.sourceEndpointDefinitions[e][h];if(m.enabled){if(e=this.getId(this.getElement(d.el)),g.filter){var n=b.isString(g.filter)?ua(c,d.el,g.filter,this,g.filterExclude):g.filter(c,d.el);if(n===!1)return}var o=this.select({source:e}).length;if(m.maxConnections>=0&&o>=m.maxConnections)return k&&k({element:d.el,maxConnections:j},c),!1;var q=a.jsPlumb.getPositionOnElement(c,i,l),r={};a.jsPlumb.extend(r,g),r.isTemporarySource=!0,r.anchor=[q[0],q[1],0,0],r.dragOptions=p,m.def.scope&&(r.scope=m.def.scope),s=this.addEndpoint(e,r),t=!0,s.setDeleteOnEmpty(!0),m.uniqueEndpoint&&(m.endpoint?s.finalEndpoint=m.endpoint:(m.endpoint=s,s.setDeleteOnEmpty(!1)));var u=function(){f.off(s.canvas,"mouseup",u),f.off(d.el,"mouseup",u),t&&(t=!1,f.deleteEndpoint(s))};f.on(s.canvas,"mouseup",u),f.on(d.el,"mouseup",u);var v={};if(m.def.extract)for(var w in m.def.extract){var x=(c.srcElement||c.target).getAttribute(w);x&&(v[m.def.extract[w]]=x)}f.trigger(s.canvas,"mousedown",c,v),b.consume(c)}}}.bind(this);this.on(d.el,"mousedown",u),m.trigger=u,g.filter&&(b.isString(g.filter)||b.isFunction(g.filter))&&f.setDragFilter(d.el,g.filter);var v=a.jsPlumb.extend({},g.dropOptions||{});va(d,g,v,!0,g.isTarget===!0)}.bind(this),o=c.length&&c.constructor!==String?c:[c],p=0,q=o.length;q>p;p++)n(m(o[p]));return this},this.unmakeSource=function(a,b,c){var d=m(a);f.destroyDroppable(d.el,"internal");var e=this.sourceEndpointDefinitions[d.id];if(e)for(var g in e)if(null==b||b===g){var h=e[g].trigger;h&&f.off(d.el,"mousedown",h),c||delete this.sourceEndpointDefinitions[d.id][g]}return this},this.unmakeEverySource=function(){for(var a in this.sourceEndpointDefinitions)f.unmakeSource(a,null,!0);return this.sourceEndpointDefinitions={},this};var wa=function(a,c,d){c=b.isArray(c)?c:[c];var e=Y(a);d=d||"default";for(var f=0;fl;l++)i=m(c[l]),k[i.id]&&k[i.id][g]&&(h[l]=k[i.id][g].enabled,j=e?!h[l]:d,k[i.id][g].enabled=j,f[j?"removeClass":"addClass"](i.el,"jtk-"+a+"-disabled"))}else{i=m(c);var o=i.id;k[o]&&k[o][g]&&(h=k[o][g].enabled,j=e?!h:d,k[o][g].enabled=j,f[j?"removeClass":"addClass"](i.el,"jtk-"+a+"-disabled"))}return h}.bind(this),za=function(a,c){return b.isString(a)||!a.length?c.apply(this,[a]):a.length?c.apply(this,[a[0]]):void 0}.bind(this);this.toggleSourceEnabled=function(a,b){return ya("source",a,null,!0,b),this.isSourceEnabled(a,b)},this.setSourceEnabled=function(a,b,c){return ya("source",a,b,null,c)},this.isSource=function(a,b){return b=b||"default",za(a,function(a){var c=this.sourceEndpointDefinitions[m(a).id];return null!=c&&null!=c[b]}.bind(this))},this.isSourceEnabled=function(a,b){return b=b||"default",za(a,function(a){var c=this.sourceEndpointDefinitions[m(a).id];return c&&c[b]&&c[b].enabled===!0}.bind(this))},this.toggleTargetEnabled=function(a,b){return ya("target",a,null,!0,b),this.isTargetEnabled(a,b)},this.isTarget=function(a,b){return b=b||"default",za(a,function(a){var c=this.targetEndpointDefinitions[m(a).id];return null!=c&&null!=c[b]}.bind(this))},this.isTargetEnabled=function(a,b){return b=b||"default",za(a,function(a){var c=this.targetEndpointDefinitions[m(a).id];return c&&c[b]&&c[b].enabled===!0}.bind(this))},this.setTargetEnabled=function(a,b,c){return ya("target",a,b,null,c)},this.ready=function(a){f.bind("ready",a)};var Aa=function(a,b){if("object"==typeof a&&a.length)for(var c=0,d=a.length;d>c;c++)b(a[c]);else b(a);return f};this.repaint=function(a,b,c){return Aa(a,function(a){J(a,b,c)})},this.revalidate=function(a,b,c){return Aa(a,function(a){var d=c?a:f.getId(a);f.updateOffset({elId:d,recalc:!0,timestamp:b});var e=f.getDragManager();e&&e.updateOffsets(d),f.repaint(a)})},this.repaintEverything=function(){var a,b=c();for(a in v)f.updateOffset({elId:a,recalc:!0,timestamp:b});for(a in v)J(a,null,b);return this},this.removeAllEndpoints=function(a,b,c){c=c||[];var d=function(a){var e,g,h=m(a),i=v[h.id];if(i)for(c.push(h),e=0,g=i.length;g>e;e++)f.deleteEndpoint(i[e],!1);if(delete v[h.id],b&&h.el&&3!==h.el.nodeType&&8!==h.el.nodeType)for(e=0,g=h.el.childNodes.length;g>e;e++)d(h.el.childNodes[e])};return d(a),this};var Ba=function(a,b){f.removeAllEndpoints(a.id,!0,b);for(var c=f.getDragManager(),d=function(a){c&&c.elementRemoved(a.id),f.anchorManager.clearFor(a.id),f.anchorManager.removeFloatingConnection(a.id),f.isSource(a.el)&&f.unmakeSource(a.el),f.isTarget(a.el)&&f.unmakeTarget(a.el),f.destroyDraggable(a.el),f.destroyDroppable(a.el),delete f.floatingConnections[a.id],delete x[a.id],delete y[a.id],a.el&&(f.removeElement(a.el),a.el._jsPlumb=null)},e=1;e0;)d(e.el.childNodes[0]);b||Ba(e,c)}};return f.batch(function(){d(a,!0)},b===!1),f},this.reset=function(a){f.silently(function(){pa=!1,f.removeAllGroups(),f.removeGroupManager(),f.deleteEveryEndpoint(),a||f.unbind(),this.targetEndpointDefinitions={},this.sourceEndpointDefinitions={},u.length=0,this.doReset&&this.doReset()}.bind(this))};var Ca=function(a){a.canvas&&a.canvas.parentNode&&a.canvas.parentNode.removeChild(a.canvas),a.cleanup(),a.destroy()};this.clear=function(){f.select().each(Ca),f.selectEndpoints().each(Ca),v={},w={}},this.setDefaultScope=function(a){return F=a,f},this.setDraggable=T,this.deriveEndpointAndAnchorSpec=function(a,b){for(var c=((b?"":"default ")+a).split(/[\s]/),d=null,e=null,g=null,h=null,i=0;ih;h++)v[c][h].setElementId(c),v[c][h].setReferenceElement(a);delete v[e],this.sourceEndpointDefinitions[c]=this.sourceEndpointDefinitions[e],delete this.sourceEndpointDefinitions[e],this.targetEndpointDefinitions[c]=this.targetEndpointDefinitions[e],delete this.targetEndpointDefinitions[e],this.anchorManager.changeId(e,c);var j=this.getDragManager();j&&j.changeId(e,c),x[c]=x[e],delete x[e];var k=function(b,d,e){for(var f=0,g=b.length;g>f;f++)b[f].endpoints[d].setElementId(c),b[f].endpoints[d].setReferenceElement(a),b[f][e+"Id"]=c,b[f][e]=a};k(f,0,"source"),k(g,1,"target"),this.repaint(c)},this.setDebugLog=function(a){s=a},this.setSuspendDrawing=function(a,b){var c=D;return D=a,E=a?(new Date).getTime():null,b&&this.repaintEverything(),c},this.isSuspendDrawing=function(){return D},this.getSuspendedAt=function(){return E},this.batch=function(a,c){var d=this.isSuspendDrawing();d||this.setSuspendDrawing(!0);try{a()}catch(e){b.log("Function run while suspended failed",e)}d||this.setSuspendDrawing(!1,!c)},this.doWhileSuspended=this.batch,this.getCachedData=X,this.timestamp=c,this.show=function(a,b){return U(a,"block",b),f},this.toggleVisible=W,this.toggleDraggable=V,this.addListener=this.bind;var Da=[];this.registerFloatingConnection=function(a,c,d){Da[a.id]=c,b.addToList(v,a.id,d)},this.getFloatingConnectionFor=function(a){return Da[a]}};b.extend(a.jsPlumbInstance,b.EventGenerator,{setAttribute:function(a,b,c){this.setAttribute(a,b,c)},getAttribute:function(b,c){return this.getAttribute(a.jsPlumb.getElement(b),c)},convertToFullOverlaySpec:function(a){return b.isString(a)&&(a=[a,{}]),a[1].id=a[1].id||b.uuid(),a},registerConnectionType:function(b,c){if(this._connectionTypes[b]=a.jsPlumb.extend({},c),c.overlays){for(var d={},e=0;e0?a.touches:a.changedTouches&&a.changedTouches.length>0?a.changedTouches:a.targetTouches&&a.targetTouches.length>0?a.targetTouches:[a]},i=function(a){var b={},c=[],d={},e={},f={};this.register=function(g){var h=a.getId(g),i=a.getOffset(g);b[h]||(b[h]=g,c.push(g),d[h]={});var j=function(b){if(b)for(var c=0;c0){var l=a.getOffset(g);d[h][k]={id:k,offset:{left:l.left-i.left,top:l.top-i.top}},f[k]=h}j(b.childNodes[c])}};j(g)},this.updateOffsets=function(b,c){if(null!=b){c=c||{};var e=jsPlumb.getElement(b),g=a.getId(e),h=d[g],i=a.getOffset(e);if(h)for(var j in h)if(h.hasOwnProperty(j)){var k=jsPlumb.getElement(j),l=c[j]||a.getOffset(k);if(null==k.offsetParent&&null!=d[g][j])continue;d[g][j]={id:j,offset:{left:l.left-i.left,top:l.top-i.top}},f[j]=g}}},this.endpointAdded=function(c,g){g=g||a.getId(c);var h=document.body,i=c.parentNode;for(e[g]=e[g]?e[g]+1:1;null!=i&&i!==h;){var j=a.getId(i,null,!0);if(j&&b[j]){var k=a.getOffset(i);if(null==d[j][g]){var l=a.getOffset(c);d[j][g]={id:g,offset:{left:l.left-k.left,top:l.top-k.top}},f[g]=j}break}i=i.parentNode}},this.endpointDeleted=function(a){if(e[a.elementId]&&(e[a.elementId]--,e[a.elementId]<=0))for(var b in d)d.hasOwnProperty(b)&&d[b]&&(delete d[b][a.elementId],delete f[a.elementId])},this.changeId=function(a,b){d[b]=d[a],d[a]={},f[b]=f[a],f[a]=null},this.getElementsForDraggable=function(a){return d[a]},this.elementRemoved=function(a){var b=f[a];b&&(delete d[b][a],delete f[a])},this.reset=function(){b={},c=[],d={},e={}},this.dragEnded=function(b){if(null!=b.offsetParent){var c=a.getId(b),d=f[c];d&&this.updateOffsets(d)}},this.setParent=function(b,c,e,g,h){var i=f[c];d[g]||(d[g]={});var j=a.getOffset(e),k=h||a.getOffset(b);i&&d[i]&&delete d[i][c],d[g][c]={id:c,offset:{left:k.left-j.left,top:k.top-j.top}},f[c]=g},this.clearParent=function(a,b){var c=f[b];c&&(delete d[c][b],delete f[b])},this.revalidateParent=function(b,c,d){var e=f[c];if(e){var g={};g[c]=d,this.updateOffsets(e,g),a.revalidate(e)}},this.getDragAncestor=function(b){var c=jsPlumb.getElement(b),d=a.getId(c),e=f[d];return e?jsPlumb.getElement(e):null}},j=function(a){return null==a?null:a.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},k=function(a,b,c){b=j(b),"undefined"!=typeof a.className.baseVal?a.className.baseVal=b:a.className=b;try{for(var d=a.classList;d.length>0;)d.remove(d.item(0));for(var e=0;e0||a.scrollLeft>0)&&(d.left-=a.scrollLeft,d.top-=a.scrollTop)}.bind(this);null!=e;)d.left+=e.offsetLeft,d.top+=e.offsetTop,f(e),e=b?e.offsetParent:e.offsetParent===c?null:e.offsetParent;if(null!=c&&!b&&(c.scrollTop>0||c.scrollLeft>0)){var g=null!=a.offsetParent?this.getStyle(a.offsetParent,"position"):"static",h=this.getStyle(a,"position");"absolute"!==h&&"fixed"!==h&&"absolute"!==g&&"fixed"!==g&&(d.left-=c.scrollLeft,d.top-=c.scrollTop)}return d},getPositionOnElement:function(a,b,c){var d="undefined"!=typeof b.getBoundingClientRect?b.getBoundingClientRect():{left:0,top:0,width:0,height:0},e=document.body,f=document.documentElement,g=window.pageYOffset||f.scrollTop||e.scrollTop,h=window.pageXOffset||f.scrollLeft||e.scrollLeft,i=f.clientTop||e.clientTop||0,j=f.clientLeft||e.clientLeft||0,k=0,l=0,m=d.top+g-i+k*c,n=d.left+h-j+l*c,o=jsPlumb.pageLocation(a),p=d.width||b.offsetWidth*c,q=d.height||b.offsetHeight*c,r=(o[0]-n)/p,s=(o[1]-m)/q;return[r,s]},getAbsolutePosition:function(a){var b=function(b){var c=a.style[b];return c?parseFloat(c.substring(0,c.length-2)):void 0};return[b("left"),b("top")]},setAbsolutePosition:function(a,b,c,d){c?this.animate(a,{left:"+="+(b[0]-c[0]),top:"+="+(b[1]-c[1])},d):(a.style.left=b[0]+"px",a.style.top=b[1]+"px")},getSize:function(a){return[a.offsetWidth,a.offsetHeight]},getWidth:function(a){return a.offsetWidth},getHeight:function(a){return a.offsetHeight},getRenderMode:function(){return"svg"}})}.call("undefined"!=typeof window?window:this),function(){"use strict";var a=this,b=a.jsPlumb,c=a.jsPlumbUtil,d="__label",e=function(a,c){var e={cssClass:c.cssClass,labelStyle:a.labelStyle,id:d,component:a,_jsPlumb:a._jsPlumb.instance},f=b.extend(e,c);return new(b.Overlays[a._jsPlumb.instance.getRenderMode()].Label)(f)},f=function(a,d){var e=null;if(c.isArray(d)){var f=d[0],g=b.extend({component:a,_jsPlumb:a._jsPlumb.instance},d[1]);3===d.length&&b.extend(g,d[2]),e=new(b.Overlays[a._jsPlumb.instance.getRenderMode()][f])(g)}else e=d.constructor===String?new(b.Overlays[a._jsPlumb.instance.getRenderMode()][d])({component:a,_jsPlumb:a._jsPlumb.instance}):d;return e.id=e.id||c.uuid(),a.cacheTypeItem("overlay",e,e.id),a._jsPlumb.overlays[e.id]=e,e};b.OverlayCapableJsPlumbUIComponent=function(b){a.jsPlumbUIComponent.apply(this,arguments),this._jsPlumb.overlays={},this._jsPlumb.overlayPositions={},b.label&&(this.getDefaultType().overlays[d]=["Label",{label:b.label,location:b.labelLocation||this.defaultLabelLocation||.5,labelStyle:b.labelStyle||this._jsPlumb.instance.Defaults.LabelStyle,id:d}]),this.setListenerComponent=function(a){if(this._jsPlumb)for(var b in this._jsPlumb.overlays)this._jsPlumb.overlays[b].setListenerComponent(a)}},b.OverlayCapableJsPlumbUIComponent.applyType=function(a,b){if(b.overlays){var c,d={};for(c in b.overlays){var e=a._jsPlumb.overlays[b.overlays[c][1].id];if(e)e.updateFrom(b.overlays[c][1]),d[b.overlays[c][1].id]=!0;else{var f=a.getCachedTypeItem("overlay",b.overlays[c][1].id);null!=f?(f.reattach(a._jsPlumb.instance,a),f.setVisible(!0),f.updateFrom(b.overlays[c][1]),a._jsPlumb.overlays[f.id]=f):f=a.addOverlay(b.overlays[c],!0),d[f.id]=!0}}for(c in a._jsPlumb.overlays)null==d[a._jsPlumb.overlays[c].id]&&a.removeOverlay(a._jsPlumb.overlays[c].id,!0)}},c.extend(b.OverlayCapableJsPlumbUIComponent,a.jsPlumbUIComponent,{setHover:function(a,b){if(this._jsPlumb&&!this._jsPlumb.instance.isConnectionBeingDragged())for(var c in this._jsPlumb.overlays)this._jsPlumb.overlays[c][a?"addClass":"removeClass"](this._jsPlumb.instance.hoverClass)},addOverlay:function(a,b){var c=f(this,a);return b||this.repaint(),c},getOverlay:function(a){return this._jsPlumb.overlays[a]},getOverlays:function(){return this._jsPlumb.overlays},hideOverlay:function(a){var b=this.getOverlay(a);b&&b.hide()},hideOverlays:function(){for(var a in this._jsPlumb.overlays)this._jsPlumb.overlays[a].hide()},showOverlay:function(a){var b=this.getOverlay(a);b&&b.show()},showOverlays:function(){for(var a in this._jsPlumb.overlays)this._jsPlumb.overlays[a].show()},removeAllOverlays:function(a){for(var b in this._jsPlumb.overlays)this._jsPlumb.overlays[b].cleanup&&this._jsPlumb.overlays[b].cleanup();this._jsPlumb.overlays={},this._jsPlumb.overlayPositions=null,a||this.repaint()},removeOverlay:function(a,b){var c=this._jsPlumb.overlays[a];c&&(c.setVisible(!1),!b&&c.cleanup&&c.cleanup(),delete this._jsPlumb.overlays[a],this._jsPlumb.overlayPositions&&delete this._jsPlumb.overlayPositions[a])},removeOverlays:function(){for(var a=0,b=arguments.length;b>a;a++)this.removeOverlay(arguments[a])},moveParent:function(a){if(this.bgCanvas&&(this.bgCanvas.parentNode.removeChild(this.bgCanvas),a.appendChild(this.bgCanvas)),this.canvas&&this.canvas.parentNode){this.canvas.parentNode.removeChild(this.canvas),a.appendChild(this.canvas);for(var b in this._jsPlumb.overlays)if(this._jsPlumb.overlays[b].isAppendedAtTopLevel){var c=this._jsPlumb.overlays[b].getElement();c.parentNode.removeChild(c),a.appendChild(c)}}},getLabel:function(){var a=this.getOverlay(d);return null!=a?a.getLabel():null},getLabelOverlay:function(){return this.getOverlay(d)},setLabel:function(a){var b=this.getOverlay(d);if(b)a.constructor===String||a.constructor===Function?b.setLabel(a):(a.label&&b.setLabel(a.label),a.location&&b.setLocation(a.location));else{var c=a.constructor===String||a.constructor===Function?{label:a}:a;b=e(this,c),this._jsPlumb.overlays[d]=b}this._jsPlumb.instance.isSuspendDrawing()||this.repaint()},cleanup:function(a){for(var b in this._jsPlumb.overlays)this._jsPlumb.overlays[b].cleanup(a),this._jsPlumb.overlays[b].destroy(a);a&&(this._jsPlumb.overlays={},this._jsPlumb.overlayPositions=null)},setVisible:function(a){this[a?"showOverlays":"hideOverlays"]()},setAbsoluteOverlayPosition:function(a,b){this._jsPlumb.overlayPositions[a.id]=b},getAbsoluteOverlayPosition:function(a){return this._jsPlumb.overlayPositions?this._jsPlumb.overlayPositions[a.id]:null},_clazzManip:function(a,b,c){if(!c)for(var d in this._jsPlumb.overlays)this._jsPlumb.overlays[d][a+"Class"](b)},addClass:function(a,b){this._clazzManip("add",a,b)},removeClass:function(a,b){this._clazzManip("remove",a,b)}})}.call("undefined"!=typeof window?window:this),function(){"use strict";var a=this,b=a.jsPlumb,c=a.jsPlumbUtil,d=function(a,b,c){var d=!1;return{drag:function(){if(d)return d=!1,!0;if(b.element){var e=c.getUIPosition(arguments,c.getZoom());null!=e&&c.setPosition(b.element,e),c.repaint(b.element,e),a.paint({anchorPoint:a.anchor.getCurrentLocation({element:a})})}},stopDrag:function(){d=!0}}},e=function(a,b,c,d){var e=b.createElement("div",{position:"absolute"});b.appendElement(e);var f=b.getId(e);b.setPosition(e,c),e.style.width=d[0]+"px",e.style.height=d[1]+"px",b.manage(f,e,!0),a.id=f,a.element=e},f=function(a,c,d,e,f,g,h,i){var j=new b.FloatingAnchor({reference:c,referenceCanvas:e,jsPlumbInstance:g});return h({paintStyle:a,endpoint:d,anchor:j,source:f,scope:i})},g=["connectorStyle","connectorHoverStyle","connectorOverlays","connector","connectionType","connectorClass","connectorHoverClass"],h=function(a,b){var c=0;if(null!=b)for(var d=0;d0)for(var b=0;b0?"add":"remove")+"Class"](i.endpointConnectedClass),this[(this.isFull()?"add":"remove")+"Class"](i.endpointFullClass)},this.detachFromConnection=function(a,b,c){b=null==b?this.connections.indexOf(a):b,b>=0&&(this.connections.splice(b,1),this[(this.connections.length>0?"add":"remove")+"Class"](i.endpointConnectedClass),this[(this.isFull()?"add":"remove")+"Class"](i.endpointFullClass)),!c&&m&&0===this.connections.length&&i.deleteObject({endpoint:this,fireEvent:!1,deleteAttachedObjects:c!==!0})},this.deleteEveryConnection=function(a){for(var b=this.connections.length,c=0;b>c;c++)i.deleteConnection(this.connections[0],a)},this.detachFrom=function(a,b,c){for(var d=[],e=0;ef;f++)i.deleteConnection(d[0]);return this},this.getElement=function(){return this.element},this.setElement=function(d){var e=this._jsPlumb.instance.getId(d),f=this.elementId;return c.removeWithFunction(a.endpointsByElement[this.elementId],function(a){return a.id===this.id}.bind(this)),this.element=b.getElement(d),this.elementId=i.getId(this.element),i.anchorManager.rehomeEndpoint(this,f,this.element),i.dragManager.endpointAdded(this.element),c.addToList(a.endpointsByElement,e,this),this},this.makeInPlaceCopy=function(){var b=this.anchor.getCurrentLocation({element:this}),c=this.anchor.getOrientation(this),d=this.anchor.getCssClass(),e={bind:function(){},compute:function(){return[b[0],b[1]]},getCurrentLocation:function(){return[b[0],b[1]]},getOrientation:function(){return c},getCssClass:function(){return d}};return k({dropOptions:a.dropOptions,anchor:e,source:this.element,paintStyle:this.getPaintStyle(),endpoint:a.hideOnDrag?"Blank":this.endpoint,_transient:!0,scope:this.scope,reference:this})},this.connectorSelector=function(){return this.connections[0]},this.setStyle=this.setPaintStyle,this.paint=function(a){a=a||{};var b=a.timestamp,c=!(a.recalc===!1);if(!b||this.timestamp!==b){var d=i.updateOffset({elId:this.elementId,timestamp:b}),e=a.offset?a.offset.o:d.o;if(null!=e){var f=a.anchorPoint,g=a.connectorPaintStyle;if(null==f){var j=a.dimensions||d.s,k={xy:[e.left,e.top],wh:j,element:this,timestamp:b};if(c&&this.anchor.isDynamic&&this.connections.length>0){var l=h(this,a.elementWithPrecedence),m=l.endpoints[0]===this?1:0,n=0===m?l.sourceId:l.targetId,o=i.getCachedData(n),p=o.o,q=o.s;k.index=0===m?1:0,k.connection=l,k.txy=[p.left,p.top],k.twh=q,k.tElement=l.endpoints[m]}else this.connections.length>0&&(k.connection=this.connections[0]);f=this.anchor.compute(k)}this.endpoint.compute(f,this.anchor.getOrientation(this),this._jsPlumb.paintStyleInUse,g||this.paintStyleInUse),this.endpoint.paint(this._jsPlumb.paintStyleInUse,this.anchor),this.timestamp=b;for(var r in this._jsPlumb.overlays)if(this._jsPlumb.overlays.hasOwnProperty(r)){var s=this._jsPlumb.overlays[r];s.isVisible()&&(this._jsPlumb.overlayPlacements[r]=s.draw(this.endpoint,this._jsPlumb.paintStyleInUse),s.paint(this._jsPlumb.overlayPlacements[r]))}}}},this.getTypeDescriptor=function(){return"endpoint"},this.isVisible=function(){return this._jsPlumb.visible},this.repaint=this.paint;var p=!1;this.initDraggable=function(){if(!p&&b.isDragSupported(this.element)){var g,h={id:null,element:null},m=null,n=!1,o=null,q=d(this,h,i),r=a.dragOptions||{},s={},t=b.dragEvents.start,u=b.dragEvents.stop,v=b.dragEvents.drag,w=b.dragEvents.beforeStart,x=function(a){g=a.e.payload||{}},y=function(c){m=this.connectorSelector();var d=!0;this.isEnabled()||(d=!1),null!=m||this.isSource||this.isTemporarySource||(d=!1),!this.isSource||!this.isFull()||null!=m&&this.dragAllowedWhenFull||(d=!1),null==m||m.isDetachable(this)||(d=!1);var l=i.checkCondition(null==m?"beforeDrag":"beforeStartDetach",{endpoint:this,source:this.element,sourceId:this.elementId,connection:m});if(l===!1?d=!1:"object"==typeof l?b.extend(l,g||{}):l=g||{},d===!1)return i.stopDrag&&i.stopDrag(this.canvas),q.stopDrag(),!1;for(var p=0;p0}.bind(this),i.initDraggable(this.canvas,r,"internal"),this.canvas._jsPlumbRelatedElement=this.element,p=!0}};var q=a.endpoint||this._jsPlumb.instance.Defaults.Endpoint||b.Defaults.Endpoint;this.setEndpoint(q,!0);var r=a.anchor?a.anchor:a.anchors?a.anchors:i.Defaults.Anchor||"Top";this.setAnchor(r,!0);var s=["default",a.type||""].join(" ");this.addType(s,a.data,!0),this.canvas=this.endpoint.canvas,this.canvas._jsPlumb=this,this.initDraggable();var t=function(d,e,f,g){if(b.isDropSupported(this.element)){var h=a.dropOptions||i.Defaults.DropOptions||b.Defaults.DropOptions;h=b.extend({},h),h.scope=h.scope||this.scope;var j=b.dragEvents.drop,k=b.dragEvents.over,l=b.dragEvents.out,m=this,n=i.EndpointDropHandler({getEndpoint:function(){return m},jsPlumb:i,enabled:function(){return null!=f?f.isEnabled():!0},isFull:function(){return f.isFull()},element:this.element,elementId:this.elementId,isSource:this.isSource,isTarget:this.isTarget,addClass:function(a){m.addClass(a)},removeClass:function(a){m.removeClass(a)},isDropAllowed:function(){return m.isDropAllowed.apply(m,arguments)},reference:g,isRedrop:function(a,b){return a.suspendedEndpoint&&b.reference&&a.suspendedEndpoint.id===b.reference.id}});h[j]=c.wrap(h[j],n,!0),h[k]=c.wrap(h[k],function(){var a=b.getDragObject(arguments),c=i.getAttribute(b.getElement(a),"dragId"),d=i.getFloatingConnectionFor(c);if(null!=d){var e=i.getFloatingAnchorIndex(d),f=this.isTarget&&0!==e||d.suspendedEndpoint&&this.referenceEndpoint&&this.referenceEndpoint.id===d.suspendedEndpoint.id;if(f){var g=i.checkCondition("checkDropAllowed",{sourceEndpoint:d.endpoints[e],targetEndpoint:this,connection:d});this[(g?"add":"remove")+"Class"](i.endpointDropAllowedClass),this[(g?"remove":"add")+"Class"](i.endpointDropForbiddenClass),d.endpoints[e].anchor.over(this.anchor,this)}}}.bind(this)),h[l]=c.wrap(h[l],function(){var a=b.getDragObject(arguments),c=null==a?null:i.getAttribute(b.getElement(a),"dragId"),d=c?i.getFloatingConnectionFor(c):null;if(null!=d){var e=i.getFloatingAnchorIndex(d),f=this.isTarget&&0!==e||d.suspendedEndpoint&&this.referenceEndpoint&&this.referenceEndpoint.id===d.suspendedEndpoint.id;f&&(this.removeClass(i.endpointDropAllowedClass),this.removeClass(i.endpointDropForbiddenClass),d.endpoints[e].anchor.out())}}.bind(this)),i.initDroppable(d,h,"internal",e)}}.bind(this);return this.anchor.isFloating||t(this.canvas,!(a._transient||this.anchor.isFloating),this,a.reference),this},c.extend(b.Endpoint,b.OverlayCapableJsPlumbUIComponent,{setVisible:function(a,b,c){if(this._jsPlumb.visible=a,this.canvas&&(this.canvas.style.display=a?"block":"none"),this[a?"showOverlays":"hideOverlays"](),!b)for(var d=0;db.dist?1:0});for(var o=k[0].source,p=k[0].target,q=0;qc[0][0],d===!1?-1:1}},r=function(a,b){var c=a[0][0]<0?-Math.PI-a[0][0]:Math.PI-a[0][0],d=b[0][0]<0?-Math.PI-b[0][0]:Math.PI-b[0][0];return c>d?1:-1},s={top:function(a,b){return a[0]>b[0]?1:-1},right:q(!0),bottom:q(!0),left:r},t=function(a,b){return a.sort(b)},u=function(a,b){var c=m.getCachedData(a),d=c.s,f=c.o,h=function(b,c,d,f,h,i,j){if(f.length>0)for(var k=t(f,s[b]),l="right"===b||"top"===b,m=p(b,c,d,k,h,i,l),n=function(a,b){e[a.id]=[b[0],b[1],b[2],b[3]],g[a.id]=j},o=0;o-1&&(j[d].splice(h,1),b.addToList(j,e,[f,f.endpoints[0],f.endpoints[0].anchor.constructor===c.DynamicAnchor])),f.updateConnectedClass()},this.sourceChanged=function(a,d,e,f){if(a!==d){e.sourceId=d,e.source=f,b.removeWithFunction(j[a],function(a){return a[0].id===e.id});var g=b.findWithFunction(j[e.targetId],function(a){return a[0].id===e.id});g>-1&&(j[e.targetId][g][0]=e,j[e.targetId][g][1]=e.endpoints[0],j[e.targetId][g][2]=e.endpoints[0].anchor.constructor===c.DynamicAnchor),b.addToList(j,d,[e,e.endpoints[1],e.endpoints[1].anchor.constructor===c.DynamicAnchor]),e.endpoints[1].anchor.isContinuous&&(e.source===e.target?e._jsPlumb.instance.removeElement(e.endpoints[1].canvas):null==e.endpoints[1].canvas.parentNode&&e._jsPlumb.instance.appendElement(e.endpoints[1].canvas)),e.updateConnectedClass()}},this.rehomeEndpoint=function(a,b,c){var e=d[b]||[],f=m.getId(c);if(f!==b){var g=e.indexOf(a);if(g>-1){var h=e.splice(g,1)[0];k.add(h,f)}}for(var i=0;i0?this.anchors[0]:null,f=e,g=this,h=function(a,b,c,d,e){var f=d[0]+a.x*e[0],g=d[1]+a.y*e[1],h=d[0]+e[0]/2,i=d[1]+e[1]/2;return Math.sqrt(Math.pow(b-f,2)+Math.pow(c-g,2))+Math.sqrt(Math.pow(h-f,2)+Math.pow(i-g,2))},i=a.selector||function(a,b,c,d,e){for(var f=c[0]+d[0]/2,g=c[1]+d[1]/2,i=-1,j=1/0,k=0;kl&&(i=k+0,j=l)}return e[i]};this.compute=function(a){var b=a.xy,c=a.wh,d=a.txy,h=a.twh;this.timestamp=a.timestamp;var j=g.getUserDefinedLocation();return null!=j?j:this.locked||null==d||null==h?e.compute(a):(a.timestamp=null,e=i(b,c,d,h,this.anchors),this.x=e.x,this.y=e.y,e!==f&&this.fire("anchorChanged",e),f=e,e.compute(a))},this.getCurrentLocation=function(a){return this.getUserDefinedLocation()||(null!=e?e.getCurrentLocation(a):null)},this.getOrientation=function(a){return null!=e?e.getOrientation(a):[0,0]},this.over=function(a,b){null!=e&&e.over(a,b)},this.out=function(){null!=e&&e.out()},this.getCssClass=function(){return e&&e.getCssClass()||""}},b.extend(c.DynamicAnchor,c.Anchor);var e=function(a,b,d,e,f,g){c.Anchors[f]=function(c){var h=c.jsPlumbInstance.makeAnchor([a,b,d,e,0,0],c.elementId,c.jsPlumbInstance);return h.type=f,g&&g(h,c),h}};e(.5,0,0,-1,"TopCenter"),e(.5,1,0,1,"BottomCenter"),e(0,.5,-1,0,"LeftMiddle"),e(1,.5,1,0,"RightMiddle"),e(.5,0,0,-1,"Top"),e(.5,1,0,1,"Bottom"),e(0,.5,-1,0,"Left"),e(1,.5,1,0,"Right"),e(.5,.5,0,0,"Center"),e(1,0,0,-1,"TopRight"),e(1,1,0,1,"BottomRight"),e(0,0,0,-1,"TopLeft"),e(0,1,0,1,"BottomLeft"),c.Defaults.DynamicAnchors=function(a){return a.jsPlumbInstance.makeAnchors(["TopCenter","RightMiddle","BottomCenter","LeftMiddle"],a.elementId,a.jsPlumbInstance)},c.Anchors.AutoDefault=function(a){var b=a.jsPlumbInstance.makeDynamicAnchor(c.Defaults.DynamicAnchors(a));return b.type="AutoDefault",b};var f=function(a,b){c.Anchors[a]=function(c){var d=c.jsPlumbInstance.makeAnchor(["Continuous",{faces:b}],c.elementId,c.jsPlumbInstance);return d.type=a,d}};c.Anchors.Continuous=function(a){return a.jsPlumbInstance.continuousAnchorFactory.get(a)},f("ContinuousLeft",["left"]),f("ContinuousTop",["top"]),f("ContinuousBottom",["bottom"]),f("ContinuousRight",["right"]),e(0,0,0,0,"Assign",function(a,b){var c=b.position||"Fixed";a.positionFinder=c.constructor===String?b.jsPlumbInstance.AnchorPositionFinders[c]:c,a.constructorParams=b}),a.jsPlumbInstance.prototype.AnchorPositionFinders={Fixed:function(a,b,c){return[(a.left-b.left)/c[0],(a.top-b.top)/c[1]]},Grid:function(a,b,c,d){var e=a.left-b.left,f=a.top-b.top,g=c[0]/d.grid[0],h=c[1]/d.grid[1],i=Math.floor(e/g),j=Math.floor(f/h);return[(i*g+g/2)/c[0],(j*h+h/2)/c[1]]}},c.Anchors.Perimeter=function(a){a=a||{};var b=a.anchorCount||60,c=a.shape;if(!c)throw new Error("no shape supplied to Perimeter Anchor type");var d=function(){for(var a=.5,c=2*Math.PI/b,d=0,e=[],f=0;b>f;f++){var g=a+a*Math.sin(d),h=a+a*Math.cos(d);e.push([g,h,0,0]),d+=c}return e},e=function(a){for(var c=b/a.length,d=[],e=function(a,e,f,g,h){c=b*h;for(var i=(f-a)/c,j=(g-e)/c,k=0;c>k;k++)d.push([a+i*k,e+j*k,0,0])},f=0;f0?a:c+a:a*c;return d.pointOnLine({x:g,y:i},{x:h,y:j},e)}return{x:h,y:j}}return{x:g,y:i}},this.gradientAtPoint=function(a){return e},this.pointAlongPathFrom=function(a,b,c){var e=this.pointOnPath(a,c),f=0>=b?{x:g,y:i}:{x:h,y:j};return 0>=b&&Math.abs(b)>1&&(b*=-1),d.pointOnLine(e,f,b)};var l=function(a,b,c){return c>=Math.min(a,b)&&c<=Math.max(a,b)},m=function(a,b,c){return Math.abs(c-a)a-b?b:k>c-a?c:a};this.pointOnPath=function(b,c){if(0===b)return{x:this.x1,y:this.y1,theta:this.startAngle};if(1===b)return{x:this.x2,y:this.y2,theta:this.endAngle};c&&(b/=j);var d=e(this,b),f=a.cx+a.r*Math.cos(d),g=a.cy+a.r*Math.sin(d);return{x:l(f),y:l(g),theta:d}},this.gradientAtPoint=function(b,c){var e=this.pointOnPath(b,c),f=d.normal([a.cx,a.cy],[e.x,e.y]);return this.anticlockwise||f!==1/0&&f!==-(1/0)||(f*=-1),f},this.pointAlongPathFrom=function(b,c,d){var e=this.pointOnPath(b,d),f=c/h*2*Math.PI,g=this.anticlockwise?-1:1,i=e.theta+g*f,j=a.cx+this.radius*Math.cos(i),k=a.cy+this.radius*Math.sin(i);return{x:j,y:k}}},Bezier:function(c){this.curve=[{x:c.x1,y:c.y1},{x:c.cp1x,y:c.cp1y},{x:c.cp2x,y:c.cp2y},{x:c.x2,y:c.y2}];b.Segments.AbstractSegment.apply(this,arguments);this.bounds={minX:Math.min(c.x1,c.x2,c.cp1x,c.cp2x),minY:Math.min(c.y1,c.y2,c.cp1y,c.cp2y),maxX:Math.max(c.x1,c.x2,c.cp1x,c.cp2x),maxY:Math.max(c.y1,c.y2,c.cp1y,c.cp2y)},this.type="Bezier";var d=function(b,c,d){return d&&(c=a.jsBezier.locationAlongCurveFrom(b,c>0?0:1,c)),c};this.pointOnPath=function(b,c){return b=d(this.curve,b,c),a.jsBezier.pointOnCurve(this.curve,b)},this.gradientAtPoint=function(b,c){return b=d(this.curve,b,c),a.jsBezier.gradientAtPoint(this.curve,b)},this.pointAlongPathFrom=function(b,c,e){return b=d(this.curve,b,e),a.jsBezier.pointAlongCurveFrom(this.curve,b,c)},this.getLength=function(){return a.jsBezier.getLength(this.curve)},this.getBounds=function(){return this.bounds}}},b.SegmentRenderer={getPath:function(a){return{Straight:function(){var b=a.getCoordinates();return"M "+b.x1+" "+b.y1+" L "+b.x2+" "+b.y2},Bezier:function(){var b=a.params;return"M "+b.x1+" "+b.y1+" C "+b.cp1x+" "+b.cp1y+" "+b.cp2x+" "+b.cp2y+" "+b.x2+" "+b.y2},Arc:function(){var b=a.params,c=a.sweep>Math.PI?1:0,d=a.anticlockwise?0:1;return"M"+a.x1+" "+a.y1+" A "+a.radius+" "+b.r+" 0 "+c+","+d+" "+a.x2+" "+a.y2}}[a.type]()}};var e=function(){this.resetBounds=function(){this.bounds={minX:1/0,minY:1/0,maxX:-(1/0),maxY:-(1/0)}},this.resetBounds()};b.Connectors.AbstractConnector=function(a){e.apply(this,arguments);var f=[],g=0,h=[],i=[],j=a.stub||0,k=c.isArray(j)?j[0]:j,l=c.isArray(j)?j[1]:j,m=a.gap||0,n=c.isArray(m)?m[0]:m,o=c.isArray(m)?m[1]:m,p=null,q=!1,r=null,s=null,t=a.editable!==!1&&null!=b.ConnectorEditors&&null!=b.ConnectorEditors[this.type],u=this.setGeometry=function(a,b){q=!b,s=a},v=this.getGeometry=function(){return s};this.getPathData=function(){for(var a="",c=0;c0?a/g:(g+a)/g);for(var c=h.length-1,d=1,e=0;e=a){c=e,d=1===a?1:0===a?0:(a-h[e][0])/i[e];break}return{segment:f[c],proportion:d,index:c}},y=function(a,c,d){if(d.x1!==d.x2||d.y1!==d.y2){var e=new b.Segments[c](d);f.push(e),g+=e.getLength(),a.updateBounds(e)}},z=function(){g=f.length=h.length=i.length=0};this.setSegments=function(a){p=[],g=0;for(var b=0;bp?0:1,r=[1,0][q];g=[],h=[],g[q]=a.sourcePos[q]>a.targetPos[q]?-1:1,h[q]=a.sourcePos[q]>a.targetPos[q]?1:-1,g[r]=0,h[r]=0}var s=c?m+n*g[0]:n*g[0],t=e?p+n*g[1]:n*g[1],u=c?o*h[0]:m+o*h[0],v=e?o*h[1]:p+o*h[1],w=g[0]*h[0]+g[1]*h[1],x={sx:s,sy:t,tx:u,ty:v,lw:f,xSpan:Math.abs(u-s),ySpan:Math.abs(v-t),mx:(s+u)/2,my:(t+v)/2,so:g,to:h,x:i,y:j,w:m,h:p,segment:b,startStubX:s+g[0]*k,startStubY:t+g[1]*k,endStubX:u+h[0]*l,endStubY:v+h[1]*l,isXGreaterThanStubTimes2:Math.abs(s-u)>k+l,isYGreaterThanStubTimes2:Math.abs(t-v)>k+l,opposite:-1===w,perpendicular:0===w,orthogonal:1===w,sourceAxis:0===g[0]?"y":"x",points:[i,j,m,p,s,t,u,v],stubs:[k,l]};return x.anchorOrientation=x.opposite?"opposite":x.orthogonal?"orthogonal":"perpendicular",x};this.getSegments=function(){return f},this.updateBounds=function(a){var b=a.getBounds();this.bounds.minX=Math.min(this.bounds.minX,b.minX),this.bounds.maxX=Math.max(this.bounds.maxX,b.maxX),this.bounds.minY=Math.min(this.bounds.minY,b.minY),this.bounds.maxY=Math.max(this.bounds.maxY,b.maxY)};return this.pointOnPath=function(a,b){var c=x(a,b);return c.segment&&c.segment.pointOnPath(c.proportion,!1)||[0,0]},this.gradientAtPoint=function(a,b){var c=x(a,b);return c.segment&&c.segment.gradientAtPoint(c.proportion,!1)||0},this.pointAlongPathFrom=function(a,b,c){var d=x(a,c);return d.segment&&d.segment.pointAlongPathFrom(d.proportion,b,!1)||[0,0]},this.compute=function(a){r=A.call(this,a),z(),this._compute(r,a),this.x=r.points[0],this.y=r.points[1],this.w=r.points[2],this.h=r.points[3],this.segment=r.segment,w()},{addSegment:y,prepareCompute:A,sourceStub:k,targetStub:l,maxStub:Math.max(k,l),sourceGap:n,targetGap:o,maxGap:Math.max(n,o),setGeometry:u,getGeometry:v}},c.extend(b.Connectors.AbstractConnector,e),b.Endpoints.AbstractEndpoint=function(a){e.apply(this,arguments);var b=this.compute=function(a,b,c,d){var e=this._compute.apply(this,arguments);return this.x=e[0],this.y=e[1],this.w=e[2],this.h=e[3],this.bounds.minX=this.x,this.bounds.minY=this.y,this.bounds.maxX=this.x+this.w,this.bounds.maxY=this.y+this.h,e};return{compute:b,cssClass:a.cssClass}},c.extend(b.Endpoints.AbstractEndpoint,e),b.Endpoints.Dot=function(a){this.type="Dot";b.Endpoints.AbstractEndpoint.apply(this,arguments);a=a||{},this.radius=a.radius||10,this.defaultOffset=.5*this.radius,this.defaultInnerRadius=this.radius/3,this._compute=function(a,b,c,d){this.radius=c.radius||this.radius;var e=a[0]-this.radius,f=a[1]-this.radius,g=2*this.radius,h=2*this.radius;if(c.stroke){var i=c.strokeWidth||1;e-=i,f-=i,g+=2*i,h+=2*i}return[e,f,g,h,this.radius]}},c.extend(b.Endpoints.Dot,b.Endpoints.AbstractEndpoint),b.Endpoints.Rectangle=function(a){this.type="Rectangle";b.Endpoints.AbstractEndpoint.apply(this,arguments);a=a||{},this.width=a.width||20,this.height=a.height||20,this._compute=function(a,b,c,d){var e=c.width||this.width,f=c.height||this.height,g=a[0]-e/2,h=a[1]-f/2;return[g,h,e,f]}},c.extend(b.Endpoints.Rectangle,b.Endpoints.AbstractEndpoint);var f=function(a){b.jsPlumbUIComponent.apply(this,arguments),this._jsPlumb.displayElements=[]};c.extend(f,b.jsPlumbUIComponent,{getDisplayElements:function(){return this._jsPlumb.displayElements},appendDisplayElement:function(a){this._jsPlumb.displayElements.push(a)}}),b.Endpoints.Image=function(d){this.type="Image",f.apply(this,arguments),b.Endpoints.AbstractEndpoint.apply(this,arguments);var e=d.onload,g=d.src||d.url,h=d.cssClass?" "+d.cssClass:"";this._jsPlumb.img=new Image,this._jsPlumb.ready=!1,this._jsPlumb.initialized=!1,this._jsPlumb.deleted=!1,this._jsPlumb.widthToUse=d.width,this._jsPlumb.heightToUse=d.height,this._jsPlumb.endpoint=d.endpoint,this._jsPlumb.img.onload=function(){null!=this._jsPlumb&&(this._jsPlumb.ready=!0,this._jsPlumb.widthToUse=this._jsPlumb.widthToUse||this._jsPlumb.img.width,this._jsPlumb.heightToUse=this._jsPlumb.heightToUse||this._jsPlumb.img.height,e&&e(this))}.bind(this),this._jsPlumb.endpoint.setImage=function(a,b){var c=a.constructor===String?a:a.src;e=b,this._jsPlumb.img.src=c,null!=this.canvas&&this.canvas.setAttribute("src",this._jsPlumb.img.src)}.bind(this),this._jsPlumb.endpoint.setImage(g,e),this._compute=function(a,b,c,d){return this.anchorPoint=a,this._jsPlumb.ready?[a[0]-this._jsPlumb.widthToUse/2,a[1]-this._jsPlumb.heightToUse/2,this._jsPlumb.widthToUse,this._jsPlumb.heightToUse]:[0,0,0,0]},this.canvas=b.createElement("img",{position:"absolute",margin:0,padding:0,outline:0},this._jsPlumb.instance.endpointClass+h),this._jsPlumb.widthToUse&&this.canvas.setAttribute("width",this._jsPlumb.widthToUse),this._jsPlumb.heightToUse&&this.canvas.setAttribute("height",this._jsPlumb.heightToUse),this._jsPlumb.instance.appendElement(this.canvas),this.actuallyPaint=function(a,b,d){if(!this._jsPlumb.deleted){this._jsPlumb.initialized||(this.canvas.setAttribute("src",this._jsPlumb.img.src),this.appendDisplayElement(this.canvas),this._jsPlumb.initialized=!0);var e=this.anchorPoint[0]-this._jsPlumb.widthToUse/2,f=this.anchorPoint[1]-this._jsPlumb.heightToUse/2;c.sizeElement(this.canvas,e,f,this._jsPlumb.widthToUse,this._jsPlumb.heightToUse)}},this.paint=function(b,c){null!=this._jsPlumb&&(this._jsPlumb.ready?this.actuallyPaint(b,c):a.setTimeout(function(){this.paint(b,c)}.bind(this),200))}},c.extend(b.Endpoints.Image,[f,b.Endpoints.AbstractEndpoint],{cleanup:function(a){a&&(this._jsPlumb.deleted=!0,this.canvas&&this.canvas.parentNode.removeChild(this.canvas),this.canvas=null)}}),b.Endpoints.Blank=function(a){b.Endpoints.AbstractEndpoint.apply(this,arguments);this.type="Blank",f.apply(this,arguments),this._compute=function(a,b,c,d){return[a[0],a[1],10,0]};var d=a.cssClass?" "+a.cssClass:"";this.canvas=b.createElement("div",{display:"block",width:"1px",height:"1px",background:"transparent",position:"absolute"},this._jsPlumb.instance.endpointClass+d),this._jsPlumb.instance.appendElement(this.canvas),this.paint=function(a,b){c.sizeElement(this.canvas,this.x,this.y,this.w,this.h)}},c.extend(b.Endpoints.Blank,[b.Endpoints.AbstractEndpoint,f],{cleanup:function(){this.canvas&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)}}),b.Endpoints.Triangle=function(a){this.type="Triangle",b.Endpoints.AbstractEndpoint.apply(this,arguments);var c=this;a=a||{},a.width=a.width||55,a.height=a.height||55,this.width=a.width,this.height=a.height,this._compute=function(a,b,d,e){var f=d.width||c.width,g=d.height||c.height,h=a[0]-f/2,i=a[1]-g/2;return[h,i,f,g]}};var g=b.Overlays.AbstractOverlay=function(a){this.visible=!0,this.isAppendedAtTopLevel=!0,this.component=a.component,this.loc=null==a.location?.5:a.location,this.endpointLoc=null==a.endpointLocation?[.5,.5]:a.endpointLocation,this.visible=a.visible!==!1};g.prototype={cleanup:function(a){a&&(this.component=null,this.canvas=null,this.endpointLoc=null)},reattach:function(a,b){},setVisible:function(a){this.visible=a,this.component.repaint()},isVisible:function(){return this.visible},hide:function(){this.setVisible(!1)},show:function(){this.setVisible(!0)},incrementLocation:function(a){this.loc+=a,this.component.repaint()},setLocation:function(a){this.loc=a,this.component.repaint()},getLocation:function(){return this.loc},updateFrom:function(){}},b.Overlays.Arrow=function(a){this.type="Arrow",g.apply(this,arguments),this.isAppendedAtTopLevel=!1,a=a||{};var e=this;this.length=a.length||20,this.width=a.width||20,this.id=a.id;var f=(a.direction||1)<0?-1:1,h=a.paintStyle||{"stroke-width":1},i=a.foldback||.623;this.computeMaxSize=function(){return 1.5*e.width},this.elementCreated=function(c,d){if(this.path=c,a.events)for(var e in a.events)b.on(c,e,a.events[e])},this.draw=function(a,b){var e,g,j,k,l;if(a.pointAlongPathFrom){if(c.isString(this.loc)||this.loc>1||this.loc<0){var m=parseInt(this.loc,10),n=this.loc<0?1:0;e=a.pointAlongPathFrom(n,m,!1),g=a.pointAlongPathFrom(n,m-f*this.length/2,!1),j=d.pointOnLine(e,g,this.length)}else if(1===this.loc){if(e=a.pointOnPath(this.loc),g=a.pointAlongPathFrom(this.loc,-this.length),j=d.pointOnLine(e,g,this.length),-1===f){var o=j;j=e,e=o}}else if(0===this.loc){if(j=a.pointOnPath(this.loc),g=a.pointAlongPathFrom(this.loc,this.length),e=d.pointOnLine(j,g,this.length),-1===f){var p=j;j=e,e=p}}else e=a.pointAlongPathFrom(this.loc,f*this.length/2),g=a.pointOnPath(this.loc),j=d.pointOnLine(e,g,this.length);k=d.perpendicularLineTo(e,j,this.width),l=d.pointOnLine(e,j,i*this.length);var q={hxy:e,tail:k,cxy:l},r=h.stroke||b.stroke,s=h.fill||b.stroke,t=h.strokeWidth||b.strokeWidth;return{component:a,d:q,"stroke-width":t,stroke:r,fill:s,minX:Math.min(e.x,k[0].x,k[1].x),maxX:Math.max(e.x,k[0].x,k[1].x),minY:Math.min(e.y,k[0].y,k[1].y),maxY:Math.max(e.y,k[0].y,k[1].y)}}return{component:a,minX:0,maxX:0,minY:0,maxY:0}}},c.extend(b.Overlays.Arrow,g,{updateFrom:function(a){this.length=a.length||this.length,this.width=a.width||this.width,this.direction=null!=a.direction?a.direction:this.direction,this.foldback=a.foldback||this.foldback}}),b.Overlays.PlainArrow=function(a){a=a||{};var c=b.extend(a,{foldback:1});b.Overlays.Arrow.call(this,c),this.type="PlainArrow"},c.extend(b.Overlays.PlainArrow,b.Overlays.Arrow),b.Overlays.Diamond=function(a){a=a||{};var c=a.length||40,d=b.extend(a,{length:c/2,foldback:2});b.Overlays.Arrow.call(this,d),this.type="Diamond"},c.extend(b.Overlays.Diamond,b.Overlays.Arrow);var h=function(a,b){return(null==a._jsPlumb.cachedDimensions||b)&&(a._jsPlumb.cachedDimensions=a.getDimensions()),a._jsPlumb.cachedDimensions},i=function(a){b.jsPlumbUIComponent.apply(this,arguments),g.apply(this,arguments);var d=this.fire;this.fire=function(){d.apply(this,arguments),this.component&&this.component.fire.apply(this.component,arguments)},this.detached=!1,this.id=a.id,this._jsPlumb.div=null,this._jsPlumb.initialised=!1,this._jsPlumb.component=a.component,this._jsPlumb.cachedDimensions=null,this._jsPlumb.create=a.create,this._jsPlumb.initiallyInvisible=a.visible===!1,this.getElement=function(){ +if(null==this._jsPlumb.div){var c=this._jsPlumb.div=b.getElement(this._jsPlumb.create(this._jsPlumb.component));c.style.position="absolute",c.className=this._jsPlumb.instance.overlayClass+" "+(this.cssClass?this.cssClass:a.cssClass?a.cssClass:""),this._jsPlumb.instance.appendElement(c),this._jsPlumb.instance.getId(c),this.canvas=c;var d="translate(-50%, -50%)";c.style.webkitTransform=d,c.style.mozTransform=d,c.style.msTransform=d,c.style.oTransform=d,c.style.transform=d,c._jsPlumb=this,a.visible===!1&&(c.style.display="none")}return this._jsPlumb.div},this.draw=function(a,b,d){var e=h(this);if(null!=e&&2===e.length){var f={x:0,y:0};if(d)f={x:d[0],y:d[1]};else if(a.pointOnPath){var g=this.loc,i=!1;(c.isString(this.loc)||this.loc<0||this.loc>1)&&(g=parseInt(this.loc,10),i=!0),f=a.pointOnPath(g,i)}else{var j=this.loc.constructor===Array?this.loc:this.endpointLoc;f={x:j[0]*a.w,y:j[1]*a.h}}var k=f.x-e[0]/2,l=f.y-e[1]/2;return{component:a,d:{minx:k,miny:l,td:e,cxy:f},minX:k,maxX:k+e[0],minY:l,maxY:l+e[1]}}return{minX:0,maxX:0,minY:0,maxY:0}}};c.extend(i,[b.jsPlumbUIComponent,g],{getDimensions:function(){return[1,1]},setVisible:function(a){this._jsPlumb.div&&(this._jsPlumb.div.style.display=a?"block":"none",a&&this._jsPlumb.initiallyInvisible&&(h(this,!0),this.component.repaint(),this._jsPlumb.initiallyInvisible=!1))},clearCachedDimensions:function(){this._jsPlumb.cachedDimensions=null},cleanup:function(a){a?null!=this._jsPlumb.div&&(this._jsPlumb.div._jsPlumb=null,this._jsPlumb.instance.removeElement(this._jsPlumb.div)):(this._jsPlumb&&this._jsPlumb.div&&this._jsPlumb.div.parentNode&&this._jsPlumb.div.parentNode.removeChild(this._jsPlumb.div),this.detached=!0)},reattach:function(a,b){null!=this._jsPlumb.div&&a.getContainer().appendChild(this._jsPlumb.div),this.detached=!1},computeMaxSize:function(){var a=h(this);return Math.max(a[0],a[1])},paint:function(a,b){this._jsPlumb.initialised||(this.getElement(),a.component.appendDisplayElement(this._jsPlumb.div),this._jsPlumb.initialised=!0,this.detached&&this._jsPlumb.div.parentNode.removeChild(this._jsPlumb.div)),this._jsPlumb.div.style.left=a.component.x+a.d.minx+"px",this._jsPlumb.div.style.top=a.component.y+a.d.miny+"px"}}),b.Overlays.Custom=function(a){this.type="Custom",i.apply(this,arguments)},c.extend(b.Overlays.Custom,i),b.Overlays.GuideLines=function(){var a=this;a.length=50,a.strokeWidth=5,this.type="GuideLines",g.apply(this,arguments),b.jsPlumbUIComponent.apply(this,arguments),this.draw=function(b,c){var e=b.pointAlongPathFrom(a.loc,a.length/2),f=b.pointOnPath(a.loc),g=d.pointOnLine(e,f,a.length),h=d.perpendicularLineTo(e,g,40),i=d.perpendicularLineTo(g,e,20);return{connector:b,head:e,tail:g,headLine:i,tailLine:h,minX:Math.min(e.x,g.x,i[0].x,i[1].x),minY:Math.min(e.y,g.y,i[0].y,i[1].y),maxX:Math.max(e.x,g.x,i[0].x,i[1].x),maxY:Math.max(e.y,g.y,i[0].y,i[1].y)}}},b.Overlays.Label=function(a){this.labelStyle=a.labelStyle;this.cssClass=null!=this.labelStyle?this.labelStyle.cssClass:null;var c=b.extend({create:function(){return b.createElement("div")}},a);if(b.Overlays.Custom.call(this,c),this.type="Label",this.label=a.label||"",this.labelText=null,this.labelStyle){var d=this.getElement();if(this.labelStyle.font=this.labelStyle.font||"12px sans-serif",d.style.font=this.labelStyle.font,d.style.color=this.labelStyle.color||"black",this.labelStyle.fill&&(d.style.background=this.labelStyle.fill),this.labelStyle.borderWidth>0){var e=this.labelStyle.borderStyle?this.labelStyle.borderStyle:"black";d.style.border=this.labelStyle.borderWidth+"px solid "+e}this.labelStyle.padding&&(d.style.padding=this.labelStyle.padding)}},c.extend(b.Overlays.Label,b.Overlays.Custom,{cleanup:function(a){a&&(this.div=null,this.label=null,this.labelText=null,this.cssClass=null,this.labelStyle=null)},getLabel:function(){return this.label},setLabel:function(a){this.label=a,this.labelText=null,this.clearCachedDimensions(),this.update(),this.component.repaint()},getDimensions:function(){return this.update(),i.prototype.getDimensions.apply(this,arguments)},update:function(){if("function"==typeof this.label){var a=this.label(this);this.getElement().innerHTML=a.replace(/\r\n/g,"
")}else null==this.labelText&&(this.labelText=this.label,this.getElement().innerHTML=this.labelText.replace(/\r\n/g,"
"))},updateFrom:function(a){null!=a.label&&this.setLabel(a.label)}})}.call("undefined"!=typeof window?window:this),function(){"use strict";var a=this,b=a.jsPlumb,c=function(b){var c=b._mottle;return c||(c=b._mottle=new a.Mottle),c};b.extend(a.jsPlumbInstance.prototype,{getEventManager:function(){return c(this)},on:function(a,b,c){return this.getEventManager().on.apply(this,arguments),this},off:function(a,b,c){return this.getEventManager().off.apply(this,arguments),this}})}.call("undefined"!=typeof window?window:this),function(){"use strict";var a=this,b=a.jsPlumbUtil,c=a.jsPlumbInstance,d="jtk-group-collapsed",e="jtk-group-expanded",f="[jtk-group-content]",g="elementDraggable",h="stop",i="revert",j="_groupManager",k="_jsPlumbGroup",l="_jsPlumbGroupDrag",m="group:addMember",n="group:removeMember",o="group:add",p="group:remove",q="group:expand",r="group:collapse",s="groupDragStop",t="connectionMoved",u="internal.connectionDetached",v="removeAll",w="orphanAll",x="show",y="hide",z=function(a){function c(a){delete a.proxies;var c,d=i[a.id];null!=d&&(c=function(b){return b.id===a.id},b.removeWithFunction(d.connections.source,c),b.removeWithFunction(d.connections.target,c),delete i[a.id]),d=j[a.id],null!=d&&(c=function(b){return b.id===a.id},b.removeWithFunction(d.connections.source,c),b.removeWithFunction(d.connections.target,c),delete j[a.id])}function f(b,c){for(var d=b.getMembers(),e=0;e0&&h0&&j0?a[0]:v},x=d.ghost===!0,y=x||d.constrain===!0,z=d.revert!==!1,A=d.orphan===!0,B=d.prune===!0,C=d.dropOverride===!0,D=d.proxied!==!1,E=[];if(this.connections={source:[],target:[],internal:[]},this.getAnchor=function(a,b){return d.anchor||"Continuous"},this.getEndpoint=function(a,b){return d.endpoint||["Dot",{radius:10}]},this.collapsed=!1,d.draggable!==!1){var F={stop:function(a){c.fire(s,jsPlumb.extend(a,{group:u}))},scope:l};d.dragOptions&&a.jsPlumb.extend(F,d.dragOptions),c.draggable(d.el,F)}d.droppable!==!1&&c.droppable(d.el,{drop:function(a){var b=a.drag.el;if(!b._isJsPlumbGroup){var d=b._jsPlumbGroup;if(d!==u){if(null!=d&&d.overrideDrop(b,u))return;c.getGroupManager().addToGroup(u,b,!1)}}}});var G=function(a,b){for(var c=null==a.nodeType?a:[a],d=0;dd;d++)u.remove(E[0],a,b,!0);E.length=0,c.getGroupManager().updateConnectionsForGroup(u)},this.orphanAll=function(){for(var a=0;aa?-1:0===a?0:1}),n=function(a){return[m(a[2]-a[0]),m(a[3]-a[1])]},o=function(a,b,c,d){if(j!==b||k!==c){var e=null==j?d.sx:j,f=null==k?d.sy:k,g=e===b?"v":"h";j=b,k=c,a.push([e,f,b,c,g])}},p=function(a){return Math.sqrt(Math.pow(a[0]-a[2],2)+Math.pow(a[1]-a[3],2))},q=function(a){var b=[];return b.push.apply(b,a),b},r=function(a,b,c){for(var f,h,i,j=null,k=0;k0&&j[4]!==f[4]){var m=Math.min(l,p(j),p(f));j[2]-=h[0]*m,j[3]-=h[1]*m,f[0]+=i[0]*m,f[1]+=i[1]*m;var o=h[1]===i[0]&&1===i[0]||h[1]===i[0]&&0===i[0]&&h[0]!==i[1]||h[1]===i[0]&&-1===i[0],r=f[1]>j[3]?1:-1,s=f[0]>j[2]?1:-1,t=r===s,u=t&&o||!t&&!o?f[0]:j[2],v=t&&o||!t&&!o?j[3]:f[1];g.addSegment(a,d,{x1:j[0],y1:j[1],x2:j[2],y2:j[3]}),g.addSegment(a,e,{r:m,x1:j[2],y1:j[3],x2:f[0],y2:f[1],cx:u,cy:v,ac:o})}else{var w=j[2]===j[0]?0:j[2]>j[0]?c.lw/2:-(c.lw/2),x=j[3]===j[1]?0:j[3]>j[1]?c.lw/2:-(c.lw/2);g.addSegment(a,d,{x1:j[0]-w,y1:j[1]-x,x2:j[2]+w,y2:j[3]+x})}j=f}null!=f&&g.addSegment(a,d,{x1:f[0],y1:f[1],x2:f[2],y2:f[3]})};this._compute=function(a,b){c=[],j=null,k=null,f=null;var d=this.getGeometry(),e=[a.x,a.y],l=[a.x+a.w,a.y+a.h];if((this.hasBeenEdited()||this.isEditing())&&null!=d&&null!=d.segments&&d.segments.length>0)c=d.segments,g.setGeometry({segments:c,sourcePos:e,targetPos:l});else{var m=function(){return[a.startStubX,a.startStubY,a.endStubX,a.endStubY]},n={perpendicular:m,orthogonal:m,opposite:function(b){var c=a,d="x"===b?0:1,e={x:function(){return 1===c.so[d]&&(c.startStubX>c.endStubX&&c.tx>c.startStubX||c.sx>c.endStubX&&c.tx>c.sx)||-1===c.so[d]&&(c.startStubXc.endStubY&&c.ty>c.startStubY||c.sy>c.endStubY&&c.ty>c.sy)||-1===c.so[d]&&(c.startStubYj[b][0],p=e[b][m][0],q=e[b][m][1],r=d[b][m][n];return c.segment===r[3]||c.segment===r[2]&&o?f[b]:c.segment===r[2]&&p>q?g[b]:c.segment===r[2]&&q>=p||c.segment===r[1]&&!o?i[b]:c.segment===r[0]||c.segment===r[1]&&o?h[b]:void 0},orthogonal:function(b,c,d,e,f){var g=a,h={x:-1===g.so[0]?Math.min(c,e):Math.max(c,e),y:-1===g.so[1]?Math.min(c,e):Math.max(c,e)}[b];return{x:[[h,d],[h,f],[e,f]],y:[[d,h],[f,h],[f,e]]}[b]},opposite:function(c,d,e,f){var h=a,i={x:"y",y:"x"}[c],j={x:"height",y:"width"}[c],k=h["is"+c.toUpperCase()+"GreaterThanStubTimes2"];if(b.sourceEndpoint.elementId===b.targetEndpoint.elementId){var l=e+(1-b.sourceEndpoint.anchor[i])*b.sourceInfo[j]+g.maxStub;return{x:[[d,l],[f,l]],y:[[l,d],[l,f]]}[c]}return!k||1===h.so[q]&&d>f||-1===h.so[q]&&f>d?{x:[[d,y],[f,y]],y:[[x,d],[x,f]]}[c]:1===h.so[q]&&f>d||-1===h.so[q]&&d>f?{x:[[x,h.sy],[x,h.ty]],y:[[h.sx,y],[h.tx,y]]}[c]:void 0}},B=A[a.anchorOrientation](a.sourceAxis,t,u,v,w);if(B)for(var C=0;C=a&&b>=d?1:c>=a&&d>=b?2:a>=c&&d>=b?3:4},e=function(a,b,c,d,e,f,g,h,i){return i>=h?[a,b]:1===c?d[3]<=0&&e[3]>=1?[a+(d[2]<.5?-1*f:f),b]:d[2]>=1&&e[2]<=0?[a,b+(d[3]<.5?-1*g:g)]:[a+-1*f,b+-1*g]:2===c?d[3]>=1&&e[3]<=0?[a+(d[2]<.5?-1*f:f),b]:d[2]>=1&&e[2]<=0?[a,b+(d[3]<.5?-1*g:g)]:[a+f,b+-1*g]:3===c?d[3]>=1&&e[3]<=0?[a+(d[2]<.5?-1*f:f),b]:d[2]<=0&&e[2]>=1?[a,b+(d[3]<.5?-1*g:g)]:[a+-1*f,b+-1*g]:4===c?d[3]<=0&&e[3]>=1?[a+(d[2]<.5?-1*f:f),b]:d[2]<=0&&e[2]>=1?[a,b+(d[3]<.5?-1*g:g)]:[a+f,b+-1*g]:void 0},f=function(a){a=a||{},this.type="StateMachine";var c,f=b.Connectors.AbstractBezierConnector.apply(this,arguments),g=a.curviness||10,h=a.margin||5,i=a.proximityLimit||80;a.orientation&&"clockwise"===a.orientation;this._computeBezier=function(a,b,j,k,l,m){var n=b.sourcePos[0]c?a.insertBefore(b,a.childNodes[c]):a.appendChild(b)};c.svg={node:t,attr:s,pos:u};var z=function(a){var d=a.pointerEventsSpec||"all",e={};b.jsPlumbUIComponent.apply(this,a.originalArgs),this.canvas=null,this.path=null,this.svg=null,this.bgCanvas=null;var f=a.cssClass+" "+(a.originalArgs[0].cssClass||""),g={style:"",width:0,height:0,"pointer-events":d,position:"absolute"};this.svg=t("svg",g),a.useDivWrapper?(this.canvas=b.createElement("div",{position:"absolute"}),c.sizeElement(this.canvas,0,0,1,1),this.canvas.className=f):(s(this.svg,{"class":f}),this.canvas=this.svg),a._jsPlumb.appendElement(this.canvas,a.originalArgs[0].parent),a.useDivWrapper&&this.canvas.appendChild(this.svg);var h=[this.canvas];return this.getDisplayElements=function(){return h},this.appendDisplayElement=function(a){h.push(a)},this.paint=function(b,d,f){if(null!=b){var g,h=[this.x,this.y],i=[this.w,this.h];null!=f&&(f.xmin<0&&(h[0]+=f.xmin),f.ymin<0&&(h[1]+=f.ymin),i[0]=f.xmax+(f.xmin<0?-f.xmin:0),i[1]=f.ymax+(f.ymin<0?-f.ymin:0)),a.useDivWrapper?(c.sizeElement(this.canvas,h[0],h[1],i[0],i[1]),h[0]=0,h[1]=0,g=u([0,0])):g=u([h[0],h[1]]),e.paint.apply(this,arguments),s(this.svg,{style:g,width:i[0]||0,height:i[1]||0})}},{renderer:e}};c.extend(z,b.jsPlumbUIComponent,{cleanup:function(a){a||null==this.typeId?(this.canvas&&(this.canvas._jsPlumb=null),this.svg&&(this.svg._jsPlumb=null),this.bgCanvas&&(this.bgCanvas._jsPlumb=null),this.canvas&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas),this.bgCanvas&&this.bgCanvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas),this.svg=null,this.canvas=null,this.path=null,this.group=null):(this.canvas&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas),this.bgCanvas&&this.bgCanvas.parentNode&&this.bgCanvas.parentNode.removeChild(this.bgCanvas))},reattach:function(a){var b=a.getContainer();this.canvas&&null==this.canvas.parentNode&&b.appendChild(this.canvas),this.bgCanvas&&null==this.bgCanvas.parentNode&&b.appendChild(this.bgCanvas)},setVisible:function(a){this.canvas&&(this.canvas.style.display=a?"block":"none")}}),b.ConnectorRenderers.svg=function(a){var c=this,d=z.apply(this,[{cssClass:a._jsPlumb.connectorClass+(this.isEditable()?" "+a._jsPlumb.editableConnectorClass:""),originalArgs:arguments,pointerEventsSpec:"none",_jsPlumb:a._jsPlumb}]),e=this.setEditable;this.setEditable=function(a){var c=e.apply(this,[a]);b[c?"addClass":"removeClass"](this.canvas,this._jsPlumb.instance.editableConnectorClass)},d.renderer.paint=function(d,e,f){var g=c.getSegments(),h="",i=[0,0];if(f.xmin<0&&(i[0]=-f.xmin),f.ymin<0&&(i[1]=-f.ymin),g.length>0){h=c.getPathData();var j={d:h,transform:"translate("+i[0]+","+i[1]+")","pointer-events":a["pointer-events"]||"visibleStroke"},k=null,l=[c.x,c.y,c.w,c.h];if(d.outlineStroke){var m=d.outlineWidth||1,n=d.strokeWidth+2*m;k=b.extend({},d),delete k.gradient,k.stroke=d.outlineStroke,k.strokeWidth=n,null==c.bgPath?(c.bgPath=t("path",j),b.addClass(c.bgPath,b.connectorOutlineClass),y(c.svg,c.bgPath,0)):s(c.bgPath,j),x(c.svg,c.bgPath,k,l,c)}null==c.path?(c.path=t("path",j),y(c.svg,c.path,d.outlineStroke?1:0)):s(c.path,j),x(c.svg,c.path,d,l,c)}}},c.extend(b.ConnectorRenderers.svg,z);var A=b.SvgEndpoint=function(a){var c=z.apply(this,[{cssClass:a._jsPlumb.endpointClass,originalArgs:arguments,pointerEventsSpec:"all",useDivWrapper:!0,_jsPlumb:a._jsPlumb}]);c.renderer.paint=function(a){var c=b.extend({},a);c.outlineStroke&&(c.stroke=c.outlineStroke),null==this.node?(this.node=this.makeNode(c),this.svg.appendChild(this.node)):null!=this.updateNode&&this.updateNode(this.node),x(this.svg,this.node,c,[this.x,this.y,this.w,this.h],this),u(this.node,[this.x,this.y])}.bind(this)};c.extend(A,z),b.Endpoints.svg.Dot=function(){b.Endpoints.Dot.apply(this,arguments),A.apply(this,arguments),this.makeNode=function(a){return t("circle",{cx:this.w/2,cy:this.h/2,r:this.radius})},this.updateNode=function(a){s(a,{cx:this.w/2,cy:this.h/2,r:this.radius})}},c.extend(b.Endpoints.svg.Dot,[b.Endpoints.Dot,A]),b.Endpoints.svg.Rectangle=function(){b.Endpoints.Rectangle.apply(this,arguments),A.apply(this,arguments),this.makeNode=function(a){return t("rect",{width:this.w,height:this.h})},this.updateNode=function(a){s(a,{width:this.w,height:this.h})}},c.extend(b.Endpoints.svg.Rectangle,[b.Endpoints.Rectangle,A]),b.Connectors.svg.Flowchart=function(){b.Connectors.Flowchart.apply(this,arguments),b.ConnectorRenderers.svg.apply(this,arguments)},c.extend(b.Connectors.svg.Flowchart,[b.Connectors.Flowchart,b.ConnectorRenderers.svg]),b.Connectors.svg.Bezier=function(){b.Connectors.Bezier.apply(this,arguments),b.ConnectorRenderers.svg.apply(this,arguments)},c.extend(b.Connectors.svg.Bezier,[b.Connectors.Bezier,b.ConnectorRenderers.svg]),b.Connectors.svg.Straight=function(){b.Connectors.Straight.apply(this,arguments),b.ConnectorRenderers.svg.apply(this,arguments)},c.extend(b.Connectors.svg.Straight,[b.Connectors.Straight,b.ConnectorRenderers.svg]),b.Connectors.svg.StateMachine=function(){b.Connectors.StateMachine.apply(this,arguments),b.ConnectorRenderers.svg.apply(this,arguments)},c.extend(b.Connectors.svg.StateMachine,[b.Connectors.StateMachine,b.ConnectorRenderers.svg]),b.Endpoints.svg.Image=b.Endpoints.Image,b.Endpoints.svg.Blank=b.Endpoints.Blank,b.Overlays.svg.Label=b.Overlays.Label,b.Overlays.svg.Custom=b.Overlays.Custom;var B=function(a,c){a.apply(this,c),b.jsPlumbUIComponent.apply(this,c),this.isAppendedAtTopLevel=!1;this.path=null,this.paint=function(a,b){if(a.component.svg&&b){null==this.path&&(this.path=t("path",{"pointer-events":"all"}),a.component.svg.appendChild(this.path),this.elementCreated&&this.elementCreated(this.path,a.component),this.canvas=a.component.svg);var e=c&&1===c.length?c[0].cssClass||"":"",f=[0,0];b.xmin<0&&(f[0]=-b.xmin),b.ymin<0&&(f[1]=-b.ymin),s(this.path,{d:d(a.d),"class":e,stroke:a.stroke?a.stroke:null,fill:a.fill?a.fill:null,transform:"translate("+f[0]+","+f[1]+")"})}};var d=function(a){return isNaN(a.cxy.x)||isNaN(a.cxy.y)?"":"M"+a.hxy.x+","+a.hxy.y+" L"+a.tail[0].x+","+a.tail[0].y+" L"+a.cxy.x+","+a.cxy.y+" L"+a.tail[1].x+","+a.tail[1].y+" L"+a.hxy.x+","+a.hxy.y; +};this.transfer=function(a){a.canvas&&this.path&&this.path.parentNode&&(this.path.parentNode.removeChild(this.path),a.canvas.appendChild(this.path))}};c.extend(B,[b.jsPlumbUIComponent,b.Overlays.AbstractOverlay],{cleanup:function(a){null!=this.path&&(a?this._jsPlumb.instance.removeElement(this.path):this.path.parentNode&&this.path.parentNode.removeChild(this.path))},reattach:function(a,b){this.path&&b.canvas&&b.canvas.appendChild(this.path)},setVisible:function(a){null!=this.path&&(this.path.style.display=a?"block":"none")}}),b.Overlays.svg.Arrow=function(){B.apply(this,[b.Overlays.Arrow,arguments])},c.extend(b.Overlays.svg.Arrow,[b.Overlays.Arrow,B]),b.Overlays.svg.PlainArrow=function(){B.apply(this,[b.Overlays.PlainArrow,arguments])},c.extend(b.Overlays.svg.PlainArrow,[b.Overlays.PlainArrow,B]),b.Overlays.svg.Diamond=function(){B.apply(this,[b.Overlays.Diamond,arguments])},c.extend(b.Overlays.svg.Diamond,[b.Overlays.Diamond,B]),b.Overlays.svg.GuideLines=function(){var a,c,d=null,e=this;b.Overlays.GuideLines.apply(this,arguments),this.paint=function(b,g){null==d&&(d=t("path"),b.connector.svg.appendChild(d),e.attachListeners(d,b.connector),e.attachListeners(d,e),a=t("path"),b.connector.svg.appendChild(a),e.attachListeners(a,b.connector),e.attachListeners(a,e),c=t("path"),b.connector.svg.appendChild(c),e.attachListeners(c,b.connector),e.attachListeners(c,e));var h=[0,0];g.xmin<0&&(h[0]=-g.xmin),g.ymin<0&&(h[1]=-g.ymin),s(d,{d:f(b.head,b.tail),stroke:"red",fill:null,transform:"translate("+h[0]+","+h[1]+")"}),s(a,{d:f(b.tailLine[0],b.tailLine[1]),stroke:"blue",fill:null,transform:"translate("+h[0]+","+h[1]+")"}),s(c,{d:f(b.headLine[0],b.headLine[1]),stroke:"green",fill:null,transform:"translate("+h[0]+","+h[1]+")"})};var f=function(a,b){return"M "+a.x+","+a.y+" L"+b.x+","+b.y}},c.extend(b.Overlays.svg.GuideLines,b.Overlays.GuideLines)}.call("undefined"!=typeof window?window:this),function(){"use strict";var a=this,b=a.jsPlumb,c=a.jsPlumbUtil,d=a.Katavorio,e=a.Biltong,f=function(a,c){c=c||"main";var f="_katavorio_"+c,g=a[f],h=a.getEventManager();return g||(g=new d({bind:h.on,unbind:h.off,getSize:b.getSize,getConstrainingRectangle:function(a){return[a.parentNode.scrollWidth,a.parentNode.scrollHeight]},getPosition:function(b,c){var d=a.getOffset(b,c,b._katavorioDrag?b.offsetParent:null);return[d.left,d.top]},setPosition:function(a,b){a.style.left=b[0]+"px",a.style.top=b[1]+"px"},addClass:b.addClass,removeClass:b.removeClass,intersects:e.intersects,indexOf:function(a,b){return a.indexOf(b)},scope:a.getDefaultScope(),css:{noSelect:a.dragSelectClass,droppable:"jtk-droppable",draggable:"jtk-draggable",drag:"jtk-drag",selected:"jtk-drag-selected",active:"jtk-drag-active",hover:"jtk-drag-hover",ghostProxy:"jtk-ghost-proxy"}}),g.setZoom(a.getZoom()),a[f]=g,a.bind("zoom",g.setZoom)),g},g=function(a,b){var d=function(d){if(null!=b[d]){if(c.isString(b[d])){var e=b[d].match(/-=/)?-1:1,f=b[d].substring(2);return a[d]+e*f}return b[d]}return a[d]};return[d("left"),d("top")]};b.extend(a.jsPlumbInstance.prototype,{animationSupported:!0,getElement:function(a){return null==a?null:(a="string"==typeof a?a:null!=a.length&&null==a.enctype?a[0]:a,"string"==typeof a?document.getElementById(a):a)},removeElement:function(a){f(this).elementRemoved(a),this.getEventManager().remove(a)},doAnimate:function(a,c,d){d=d||{};var e=this.getOffset(a),f=g(e,c),h=f[0]-e.left,i=f[1]-e.top,j=d.duration||250,k=15,l=j/k,m=k/j*h,n=k/j*i,o=0,p=setInterval(function(){b.setPosition(a,{left:e.left+m*(o+1),top:e.top+n*(o+1)}),null!=d.step&&d.step(o,Math.ceil(l)),o++,o>=l&&(window.clearInterval(p),null!=d.complete&&d.complete())},k)},destroyDraggable:function(a,b){f(this,b).destroyDraggable(a)},destroyDroppable:function(a,b){f(this,b).destroyDroppable(a)},initDraggable:function(a,b,c){f(this,c).draggable(a,b)},initDroppable:function(a,b,c){f(this,c).droppable(a,b)},isAlreadyDraggable:function(a){return null!=a._katavorioDrag},isDragSupported:function(a,b){return!0},isDropSupported:function(a,b){return!0},isElementDraggable:function(a){return a=b.getElement(a),a._katavorioDrag&&a._katavorioDrag.isEnabled()},getDragObject:function(a){return a[0].drag.getDragElement()},getDragScope:function(a){return a._katavorioDrag&&a._katavorioDrag.scopes.join(" ")||""},getDropEvent:function(a){return a[0].e},getUIPosition:function(a,b){var c=a[0].el;if(null==c.offsetParent)return null;var d=a[0].finalPos||a[0].pos,e={left:d[0],top:d[1]};if(c._katavorioDrag&&c.offsetParent!==this.getContainer()){var f=this.getOffset(c.offsetParent);e.left+=f.left,e.top+=f.top}return e},setDragFilter:function(a,b,c){a._katavorioDrag&&a._katavorioDrag.setFilter(b,c)},setElementDraggable:function(a,c){a=b.getElement(a),a._katavorioDrag&&a._katavorioDrag.setEnabled(c)},setDragScope:function(a,b){a._katavorioDrag&&a._katavorioDrag.k.setDragScope(a,b)},setDropScope:function(a,b){a._katavorioDrop&&a._katavorioDrop.length>0&&a._katavorioDrop[0].k.setDropScope(a,b)},addToPosse:function(a,c){var d=Array.prototype.slice.call(arguments,1),e=f(this);b.each(a,function(a){a=[b.getElement(a)],a.push.apply(a,d),e.addToPosse.apply(e,a)})},setPosse:function(a,c){var d=Array.prototype.slice.call(arguments,1),e=f(this);b.each(a,function(a){a=[b.getElement(a)],a.push.apply(a,d),e.setPosse.apply(e,a)})},removeFromPosse:function(a,c){var d=Array.prototype.slice.call(arguments,1),e=f(this);b.each(a,function(a){a=[b.getElement(a)],a.push.apply(a,d),e.removeFromPosse.apply(e,a)})},removeFromAllPosses:function(a){var c=f(this);b.each(a,function(a){c.removeFromAllPosses(b.getElement(a))})},setPosseState:function(a,c,d){var e=f(this);b.each(a,function(a){e.setPosseState(b.getElement(a),c,d)})},dragEvents:{start:"start",stop:"stop",drag:"drag",step:"step",over:"over",out:"out",drop:"drop",complete:"complete",beforeStart:"beforeStart"},animEvents:{step:"step",complete:"complete"},stopDrag:function(a){a._katavorioDrag&&a._katavorioDrag.abort()},addToDragSelection:function(a){f(this).select(a)},removeFromDragSelection:function(a){f(this).deselect(a)},clearDragSelection:function(){f(this).deselectAll()},trigger:function(a,b,c,d){this.getEventManager().trigger(a,b,c,d)},doReset:function(){for(var a in this)0===a.indexOf("_katavorio_")&&this[a].reset()}});var h=function(a){var b=function(){/complete|loaded|interactive/.test(document.readyState)&&"undefined"!=typeof document.body&&null!=document.body?a():setTimeout(b,9)};b()};h(b.init)}.call("undefined"!=typeof window?window:this); \ No newline at end of file diff --git a/script/quizedit.js b/script/quizedit.js new file mode 100644 index 0000000..727bc51 --- /dev/null +++ b/script/quizedit.js @@ -0,0 +1,196 @@ +/** + * /script/quizedit.js + * @version 1.9 + * @desc Script file for creating and editing tests + * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk) + * @copy 2017 Fándly Gergő Zoltán + * License: + sQuiz for creating small jQuery based quizs in an implementable way + Copyright (C) 2017 Fándly Gergő Zoltán + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + **/ + +function appendNewField(type){ + $("
"+$("#newPrototypes div[data-type="+type+"]").html()+"
").hide().appendTo($("#questions")).slideDown(); +} + +function removeField(el){ + $(el).parent().slideUp(function(){ + $(el).parent().remove(); + }); +} + +function addNewAnswer(el){ + $("
"+$(el).data("append")+"
").hide().appendTo($(el).parent().children("[name=answers]")).slideDown(); +} + +function toggleGoodAnswer(el){ + if($(el).hasClass("fa-square")){ + $(el).removeClass("fa-square").addClass("fa-check-square"); + $(el).next().data("correct", "true"); + } + else{ + $(el).removeClass("fa-check-square").addClass("fa-square"); + $(el).next().data("correct", "false"); + } +} + +function addNewFillInField(el){ + $(el).parent().children("textarea").selection("insert", {text:"[]", mode:"before"}); + $(el).parent().children("textarea").selection("insert", {text:"[/]", mode:"after"}); +} + +//map funcs +function loadMap(el){ + var file=$(el).parent().children("input[type=file]")[0].files[0]; + var fr=new FileReader(); + fr.onload=function(){ + loadMapCallback(el, fr.result); + }; + fr.readAsDataURL(file); +} +function loadMapCallback(el, res){ + $(el).parent().children("div").children("img").attr("src", res); + $(el).parent().children("input[name=map]").val(res); +} + +function addNewMarker(el){ + $(el).parent().children("div[name=mapArea]").css("cursor", "crosshair"); + $(el).parent().children("div[name=mapArea]").on("click", function(e){ + var x=Math.round(e.pageX-$(this).position().left)-7; + var y=Math.round(e.pageY-$(this).position().top)-7; + $("").hide().appendTo($(el).parent().children("div[name=mapArea]").children("div[name=markers]")).fadeIn(); + $(el).parent().children("div[name=mapArea]").css("cursor", "default"); + $(el).parent().children("div[name=mapArea]").off(); + }); +} + +function removeMarker(el){ + $(el).parent().children("div[name=mapArea]").children("div[name=markers]").children("i").css("cursor", "crosshair"); + $(el).parent().children("div[name=mapArea]").children("div[name=markers]").children("i").on("click", function(e){ + $(this).fadeOut(function(){ + $(this).remove(); + }); + $(el).parent().children("div[name=mapArea]").children("div[name=markers]").children("i").css("cursor", "default"); + $(el).parent().children("div[name=mapArea]").children("div[name=markers]").children("i").off(); + }); +} + +function toggleGoodMarker(el){ + if($(el).hasClass("fa-circle")){ + $(el).removeClass("fa-circle").addClass("fa-check-circle"); + $(el).data("correct", "true"); + } + else{ + $(el).removeClass("fa-check-circle").addClass("fa-circle"); + $(el).data("correct", "false"); + } +} + + +//export, cancel +function resetNewQuizForm(){ + if(confirm(lang.sure)){ + $("#newquizcontainer").slideUp(function(){ + $("#newquiz")[0].reset(); + $("#questions").html(""); + $("input[name=timeLimitPerTestVal]").css("display", "none"); + $("input[name=timeLimitVal]").css("display", "none"); + $("input[name=onlineTag]").css("display", "none"); + $("#newquizcontainer").slideDown(); + }); + } +} + +function exportQuiz(){ + var exp={}; + //general settings + exp.name=$("#newquiz #general input[name=name]").val(); + exp.description=$("#newquiz #general textarea[name=description]").val(); + exp.timeLimitPerTest=$("#newquiz #general input[name=timeLimitPerTest]").is(":checked")?$("#newquiz #general input[name=timeLimitPerTestVal]").val():-1; + exp.timeLimit=$("#newquiz #general input[name=timeLimit]").is(":checked")?$("#newquiz #general input[name=timeLimitVal]").val():-1; + var publish=$("#newquiz #general input[name=submitOnline]").is(":checked"); + + exp.questions=[]; + //questions + $("#newquiz #questions").children("div").each(function(){ + var q={}; + q.type=$(this).children("input[name=type]").val(); + + if(q.type=="simpleQuestion"){ + q.question=$(this).children("input[name=question]").val(); + q.answer=$(this).children("input[name=answer]").val().toLowerCase(); + } + else if(q.type=="simpleSelect"){ + q.question=$(this).children("input[name=question]").val(); + q.answers=[]; + $(this).children("fieldset[name=answers]").children("div").each(function(){ + var a={}; + a.answer=$(this).children("input[name=answer]").val(); + a.correct=($(this).children("input[name=answer]").data("correct")=="true")?true:false; + q.answers.push(a); + }); + } + else if(q.type=="connectGraph"){ + q.question=$(this).children("input[name=question]").val(); + q.answers=[]; + $(this).children("fieldset[name=answers]").children("div").each(function(){ + var a={}; + a.pair1=$(this).children("input[name=pair1]").val(); + a.pair2=$(this).children("input[name=pair2]").val(); + q.answers.push(a); + }); + } + else if(q.type=="fillIn"){ + q.question=$(this).children("input[name=question]").val(); + q.text=$(this).children("textarea[name=text]").val(); + } + else if(q.type=="markOnMap"){ + q.question=$(this).children("input[name=question]").val(); + q.map=$(this).children("input[name=map]").val(); + q.markers=[]; + $(this).children("div[name=mapArea]").children("div[name=markers]").children("i").each(function(){ + var m={}; + m.posx=$(this).data("posx"); + m.posy=$(this).data("posy"); + m.correct=($(this).data("correct")=="true")?true:false; + q.markers.push(m); + }); + } + + exp.questions.push(q); + }); + + var json=JSON.stringify(exp); + + if(publish){ + $.ajax({ + url: "./engine/engine.php", + type: "POST", + data: { + "submitQuiz": json, + "submitQuiz_tag": $("#newquiz #general input[name=onlineTag]").val(), + "submitQuiz_name": $("#newquiz #general input[name=name]").val(), + "submitQuiz_description": $("#newquiz #general textarea[name=description]").val() + }, + success: function(res){ + alert(lang.availableAtURL+": "+res); + } + }); + } + + var send="text/json;charset=utf-8,"+encodeURIComponent(json); + $("")[0].click(); +} diff --git a/script/resulttest.js b/script/resulttest.js new file mode 100644 index 0000000..270943d --- /dev/null +++ b/script/resulttest.js @@ -0,0 +1,279 @@ +/** + * /script/resulttest.js + * @version 1.3 + * @desc Script file for the result viewer page + * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk) + * @copy 2017 Fándly Gergő Zoltán + * License: + sQuiz for creating small jQuery based quizs in an implementable way + Copyright (C) 2017 Fándly Gergő Zoltán + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + **/ + +function showResSelector(){ + $("#menuwrapper").slideDown(); + $("#back").attr("onclick", "window.history.back()"); +} + +function resultFromFile(){ + $("#back").attr("onclick", "$(\"#resFromFile\").slideUp(); showResSelector()"); + $("#menuwrapper").slideUp(); + $("#resFromFile").slideDown(); +} + +function resultFromId(){ + $("#back").attr("onclick", "$(\"#resFromId\").slideUp(); showResSelector()"); + $("#menuwrapper").slideUp(); + $("#resFromId").slideDown(); +} + +function openResultFromFile(){ + var file=$("input[name=resfile]")[0].files[0]; + var fr=new FileReader(); + fr.onload=function(){ + openResultFromFileCallback(fr.result); + }; + fr.readAsText(file, "utf-8"); + + //hide solvedBy + $("#quizDoneByHolder").css("display", "none"); +} +function openResultFromFileCallback(file){ + showResults(file); + $("#resFromFile").slideUp(); +} + +function openResultFromId(){ + $.ajax({ + url: "./engine/engine.php", + type: "GET", + data: {"getResult": $("input[name=testid]").val()}, + success: function(response){ + if(response!="not found"){ + response=(response instanceof Object)?response:JSON.parse(response); + showResults(response.answered); + + //show solvedBy + $("#quizDoneByHolder").css("display", "block"); + $("#quizDoneBy").html(response.submitter); + + //hide self + $("#resFromId").slideUp(); + } + } + }); +} + +var chartCorrect=null; +var chartAnswers=null; +var chartTimeSpent=null; +var chartTimeSpentPie=null; +function showResults(results){ + //show back button + $("#back").attr("onclick", "$(\"#analitycs\").slideUp(); showResSelector()"); + + var res=(results instanceof Object)?results:JSON.parse(results); + + //process data + var correct=0; + var incorrect=0; + var totalTime=0; + var labels=[]; + var correctArr=[]; + var timeSpentArr=[]; + var colorArr=[]; + $.each(res.answers, function(key, val){ + if(val.correct){ + correct++; + } + else{ + incorrect++; + } + totalTime+=val.timeElapsed; + labels.push((key+1).toString()+". "+lang.exercise); + correctArr.push(val.correct); + timeSpentArr.push(val.timeElapsed); + colorArr.push("rgb("+(Math.floor(Math.random()*255)).toString()+", "+(Math.floor(Math.random()*255)).toString()+", "+(Math.floor(Math.random()*255)).toString()+")"); + }); + + //set quiz datas + $("#quizName").html(res.quizName); + $("#quizDesc").html(res.quizDesc); + var done=new Date(res.doneDate); + $("#quizDone").html(done.getFullYear().toString()+"-"+(done.getMonth()+1).toString()+"-"+done.getDate().toString()+" "+done.getHours().toString()+":"+done.getMinutes().toString()+":"+done.getSeconds().toString()); + $("#quizTimeSpent").html(totalTime); + + // + //show charts + // + + //clear canvases + if(chartCorrect!=null){ + chartCorrect.destroy(); + chartAnswers.destroy(); + chartTimeSpent.destroy(); + chartTimeSpentPie.destroy(); + } + + //chartCorrect + chartCorrect=new Chart($("#chartCorrect"), { + type: "pie", + data: { + labels: [lang.correct, lang.incorrect], + datasets: [{ + label: lang.answers, + backgroundColor: ["rgb(0, 255, 0)", "rgb(255, 0, 0)"], + data: [correct, incorrect] + }] + }, + options: { + responsive: false, + title: { + display: true, + fontColor: "rgb(0, 0, 0)", + text: lang.answers + }, + legend: { + labels: { + fontColor: "rgb(0, 0, 0)" + }, + onClick: null + } + } + }); + + //chartAnswers + chartAnswers=new Chart($("#chartAnswers"), { + type: "bar", + data: { + labels: labels, + datasets: [{ + label: lang.correct, + backgroundColor: "rgba(34,168,186,0.9)", + data: correctArr + }] + }, + options: { + responsive: false, + title: { + display: true, + fontColor: "rgb(0, 0, 0)", + text: lang.correctAnswers + }, + legend: { + labels: { + fontColor: "rgb(0, 0, 0)" + }, + onClick: null + }, + scales: { + xAxes: [{ + gridLines: { + color: "rgb(0, 0, 0)" + }, + ticks: { + fontColor: "rgb(0, 0, 0)" + } + }], + yAxes: [{ + gridLines: { + color: "rgb(0, 0, 0)" + }, + ticks: { + fontColor: "rgb(0, 0, 0)", + beginAtZero: true + } + }] + } + } + }); + + //chartTimeSpent + chartTimeSpent=new Chart($("#chartTimeSpent"), { + type: "line", + data: { + labels: labels, + datasets: [{ + label: lang.timeSpent, + backgroundColor: "rgba(34,168,186,0.9)", + data: timeSpentArr, + lineTension: 0 + }] + }, + options: { + responsive: false, + title: { + display: true, + fontColor: "rgb(0, 0, 0)", + text: lang.timeSpent + }, + legend: { + labels: { + fontColor: "rgb(0, 0, 0)" + }, + onClick: null + }, + scales: { + xAxes: [{ + gridLines: { + color: "rgb(0, 0, 0)" + }, + ticks: { + fontColor: "rgb(0, 0, 0)" + } + }], + yAxes: [{ + gridLines: { + color: "rgb(0, 0, 0)" + }, + ticks: { + fontColor: "rgb(0, 0, 0)", + beginAtZero: true + } + }] + } + } + }); + + //chartTimeSpentPie + chartTimeSpentPie=new Chart($("#chartTimeSpentPie"), { + type: "pie", + data: { + labels: labels, + datasets: [{ + label: lang.timeSpend, + backgroundColor: colorArr, + data: timeSpentArr + }] + }, + options: { + responsive: false, + title: { + display: true, + fontColor: "rgb(0, 0, 0)", + text: lang.timeSpent + }, + legend: { + labels: { + fontColor: "rgb(0, 0, 0)" + }, + onClick: null + } + } + }); + + //show container + $("#analitycs").slideDown(); +} diff --git a/script/sQuiz/lang.json b/script/sQuiz/lang.json new file mode 100644 index 0000000..e5eafac --- /dev/null +++ b/script/sQuiz/lang.json @@ -0,0 +1,15 @@ +{ + "downloadResults":"Download results", + "uploadResults":"Upload results", + "customAction":"Custom action name goes here", + "quizFinished":"Quiz finished!", + "resultsGot":"You've got the following results", + "yourname":"Your name", + "idForResult":"Share this ID with anybody you want to know your results", + "timeLeft":"Time left for entire quiz", + "timeLeftPerTest":"Time left for this question", + "submit":"Submit", + "nextQuestion":"Next question", + "startQuiz":"Start quiz", + "answer":"Answer" +} diff --git a/script/sQuiz/sQuiz.js b/script/sQuiz/sQuiz.js new file mode 100644 index 0000000..1b4043c --- /dev/null +++ b/script/sQuiz/sQuiz.js @@ -0,0 +1,290 @@ +/** + * /sQuiz/sQuiz.js + * @version 1.4 + * @desc sQuiz main class file + * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk) + * @copy 2017 Fándly Gergő Zoltán + * License: + sQuiz for creating small jQuery based quizs in an implementable way + Copyright (C) 2017 Fándly Gergő Zoltán + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + **/ + +(function($){ + /** + * sQuiz(element, quiz) + * @desc Creating a new quiz based on a json file + * @param $ element Container in which the quiz will be running + * @param string quiz A JSON string/JSON object containing an sQuiz parameter list + */ + $.sQuiz=function(element, quiz){ + this.element=(element instanceof $)?element:$(element); + this.quiz=(typeof quiz=="object")?quiz:JSON.parse(quiz); + this.current=-1; + this.currentQustion; + this.reg; + this.countdown; + this.elapsedPerTest=(this.quiz.timeLimitPerTest>0)?0:-2; + this.elapsed=(this.quiz.timeLimit>0)?0:-2; + this.answers=[]; + this.quizDoneCallback; + this.quizDoneOptions; + }; + + + $.sQuiz.prototype={ + /** + * sQuiz.setRegionalization(lang) + * @desc Assing an Object which has all the needed vars for language (startQuiz, timeRemaining, etc. Full list in /sQuiz/lang.json), or leave it on default for English + * @param object lang Object storing language settings + */ + setRegionalization: function(lang){ + this.reg=lang; + }, + + /** + * sQuiz.setQuizDoneCallback(callback) + * @desc Assign a function to run when the quiz is finished + * @param function callback Function to call + */ + setQuizDoneCallback: function(callback){ + this.quizDoneCallback=callback; + }, + + /** + * sQuiz.setQuizDoneOptions(options) + * @desc Set options to offer when quiz is finished. Set download to true, to offer downloading. Set upload to true, to offer online submit to upload_url. Set custom to a JS function call to do self made stuff. Custom action's label regionalization is customAction. + * @param object options Object containing the settings + */ + setQuizDoneOptions: function(options){ + this.quizDoneOptions=options; + }, + + /** + * sQuiz.secToTime(sec) + * @desc Function for converting seconds to traditional MM:SS format + * @param int sec Seconds to convert + * @return string + */ + secToTime: function(sec){ + var mins=Math.floor(sec/60); + var secs=sec%60; + var minstr=(mins.toString().length==1)?"0"+mins.toString():mins.toString(); + var secstr=(secs.toString().length==1)?"0"+secs.toString():secs.toString(); + var time=minstr+":"+secstr; + return time; + }, + + /** + * sQuiz.quizDone() + * @desc Function to call when a test is finished + */ + quizDone: function(){ + var points=0; + $.each(this.answers, function(key, val){ + if(val.correct){ + points++; + } + }); + + var self=this; + this.element.slideUp(function(){ + var buttons="
"; + if(self.quizDoneOptions.download==true){ + buttons+=""; + } + if(self.quizDoneOptions.upload==true){ + buttons+=""; + } + if(self.quizDoneOptions.custom!=undefined){ + buttons+=""; + } + buttons+="
"; + + self.element.html("

"+self.reg.quizFinished+"


"+self.reg.resultsGot+": "+points.toString()+"/"+self.quiz.questions.length+"



"+buttons); + + $("#sqDownloadResults").on("click", function(){ + //store quiz name, description and done date in result file + var result={ + "quizName": self.quiz.name, + "quizDesc": self.quiz.description, + "doneDate": Date.now(), + "answers": self.answers + }; + var json=JSON.stringify(result); + var send="text/json;charset=utf-8,"+encodeURIComponent(json); + $("")[0].click(); + }); + $("#sqUploadResults").on("click", function(){ + var result={ + "quizName": self.quiz.name, + "quizDesc": self.quiz.description, + "doneDate": Date.now(), + "answers": self.answers + }; + var json=JSON.stringify(result); + var submitter=prompt(self.reg.yourname+":"); + $.ajax({ + url: (self.quizDoneOptions.upload_url!=undefined)?self.quizDoneOptions.upload_url:"", + type: "POST", + data: { + "submitResult": json, + "submitResult_submitter": submitter + }, + success: function(res){ + alert(self.reg.idForResult+": "+res); + } + }); + }); + + self.element.slideDown(); + }); + + var result={ + "quizName": self.quiz.name, + "quizDesc": self.quiz.description, + "doneDate": Date.now(), + "answers": self.answers + }; + if(this.quizDoneCallback!=undefined){ + this.quizDoneCallback(result, this.quiz); + } + }, + + /** + * sQuiz.nextQuestion() + * @desc Start the next question. Should be called only internally! + */ + nextQuestion: function(){ + var self=this; + this.current++; + + if(this.current>=this.quiz.questions.length){ + this.quizDone(); + } + else{ + var type=this.quiz.questions[this.current].type; + this.element.slideUp(function(){ + var timer="

"+(self.quiz.timeLimit>0?""+self.reg.timeLeft+":
":"")+(self.quiz.timeLimitPerTest>0?""+self.reg.timeLeftPerTest+": ":"")+"

"; + var submitbutton="

"; + self.element.html(timer+"
"+submitbutton); + self.element.children("#sqTimeLeft").html(self.secToTime(self.timeLimit)); + self.element.children("#sqTimeLeftPerTest").html(self.secToTime(self.timeLimitPerTest)); + self.currentQuestion=new $["sQuiz_module_"+type](self, self.quiz.questions[self.current]); + + $("#sqSubmitButton").on("click", function(){ + self.currentQuestion.submit(); + $("#sqSubmitButton").unbind(); + $("#sqSubmitButton").fadeOut(function(){ + $(this).html(""+self.reg.nextQuestion); + $(this).fadeIn(); + }); + $("#sqSubmitButton").on("click", function(){ + self.nextQuestion(); + }); + }); + + self.currentQuestion.load(); + self.element.slideDown(function(){ + self.startTimer(); + }); + }); + } + }, + + /** + * sQuiz.init() + * @desc set up styles and so for the container + */ + init: function(){ + var self=this; + + if(this.reg==undefined){ + this.reg={ + "downloadResults":"Download results", + "uploadResults":"Upload results", + "customAction":"Custom action name goes here", + "quizFinished":"Quiz finished!", + "resultsGot":"You've got the following results", + "yourname":"Your name", + "idForResult":"Share this ID with anybody you want to know your results", + "timeLeft":"Time left for entire quiz", + "timeLeftPerTest":"Time left for this question", + "submit":"Submit", + "nextQuestion":"Next question", + "startQuiz":"Start quiz", + "answer":"Answer" + }; + } + + this.element.hide(); + this.element.addClass("sq sq-container"); + this.element.html("

"+this.quiz.name+"

"+this.quiz.description+"


"); + $("#sqStart").on("click", function(){ + self.nextQuestion(); + }); + this.element.slideDown(); + }, + + /** + * sQuiz.startTimer + * @desc Starts the countdown + */ + startTimer: function(){ + var self=this; + this.elapsedPerTest=0; + if(this.quiz.timeLimitPerTest>0 || this.quiz.timeLimit>0){ + if(self.quiz.timeLimitPerTest>0){ + self.elapsedPerTest++; + self.element.children("#sqTimer").children("#sqTimeLeftPerTest").html(self.secToTime(self.quiz.timeLimitPerTest-self.elapsedPerTest)); + if(self.elapsedPerTest>=self.quiz.timeLimitPerTest){ + $("#sqSubmitButton")[0].click(); + } + } + if(self.quiz.timeLimit>0){ + self.elapsed++; + self.element.children("#sqTimer").children("#sqTimeLeft").html(self.secToTime(self.quiz.timeLimit-self.elapsed)); + if(self.elapsed>=self.quiz.timeLimit){ + $("#sqSubmitButton")[0].click(); + } + } + } + this.countdown=window.setInterval(function(self){ + self.elapsedPerTest++; + if(self.quiz.timeLimitPerTest>0){ + self.element.children("#sqTimer").children("#sqTimeLeftPerTest").html(self.secToTime(self.quiz.timeLimitPerTest-self.elapsedPerTest)); + if(self.elapsedPerTest>=self.quiz.timeLimitPerTest){ + $("#sqSubmitButton")[0].click(); + } + } + if(self.quiz.timeLimit>0){ + self.elapsed++; + self.element.children("#sqTimer").children("#sqTimeLeft").html(self.secToTime(self.quiz.timeLimit-self.elapsed)); + if(self.elapsed>=self.quiz.timeLimit){ + $("#sqSubmitButton")[0].click(); + } + } + }, 1000, self); + }, + + /** + * sQuiz.stopTimer + * @desc Stops the countdown + */ + stopTimer: function(){ + clearInterval(this.countdown); + } + } +}(jQuery)); diff --git a/script/sQuiz/sQuiz_module_connectGraph.js b/script/sQuiz/sQuiz_module_connectGraph.js new file mode 100644 index 0000000..af4f8e1 --- /dev/null +++ b/script/sQuiz/sQuiz_module_connectGraph.js @@ -0,0 +1,155 @@ +/** + * /sQuiz/sQuiz_module_connectGraph.js + * @version 1.3 + * @desc sQuiz class for connectGraphs + * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk) + * @copy 2017 Fándly Gergő Zoltán + * License: + sQuiz for creating small jQuery based quizs in an implementable way + Copyright (C) 2017 Fándly Gergő Zoltán + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + **/ + +(function($){ + $.sQuiz_module_connectGraph=function(parent, quiz){ + this.parent=parent; + this.quiz=quiz; + this.container=parent.element.children("#sqTestArea"); + this.qidMap={}; + this.currentlyClicked=null; + }; + + $.sQuiz_module_connectGraph.prototype={ + submit: function(){ + var self=this; + this.parent.stopTimer(); + var sub={}; + + sub.answered=[]; + sub.correct=true; + jsPlumb.reset(); + $(this.container).children("div[data-qid=pair1]").children("i").each(function(){ + if($(this).data("connectedTo")==undefined || $(this).data("connectedTo")=="--NULL--"){ + sub.answered.push({pair1: $(this).data("value"), pair2: "null"}); + $(this).addClass("sq-red"); + sub.correct=false; + } + else{ + for(var i=0; i"+val.pair1+"

"; + qid++; + }); + var qidp1=qid; + var p2=this.quiz.answers.slice(); + while(p2.length>0){ + var index=Math.floor(Math.random()*p2.length); + pair2+=" "+p2[index].pair2+"

"; + qid++; + p2.splice(index, 1); + } + + this.container.html("

"+this.quiz.question+"


"+pair1+"
"+pair2+"
"); + + this.parent.element.slideDown(function(){ + var typic={ + anchor: "Center", + connectorStyle: { + stroke: "rgb(0,0,0)", + strokeWidth: 10 + }, + endpoint: "Dot", + endpointStyle: { + fill: "rgb(0,0,0)", + radius: 12 + } + }; + for(var i=0; i. + **/ + +(function($){ + $.sQuiz_module_fillIn=function(parent, quiz){ + this.parent=parent; + this.quiz=quiz; + this.container=parent.element.children("#sqTestArea"); + this.qidMap={}; + this.answers=[]; + }; + + $.sQuiz_module_fillIn.prototype={ + submit: function(){ + var self=this; + this.parent.stopTimer(); + var sub={}; + + this.container.children("div[data-qid=fillers]").children("span[data-qid=filler]").draggable("disable"); + + sub.answered=[]; + sub.correct=true; + var i=0; + this.container.children("p[data-qid=text]").children("span[data-qid=fillable]").each(function(){ + if($(this).data("filledWith")==undefined || $(this).data("filledWith")=="--NULL--"){ + sub.answered.push("null"); + sub.correct=false; + self.container.children("div[data-qid=fillers]").children("span[data-qid=filler][data-attached=false]").addClass("red"); + } + else{ + if($(this).data("filledWith")==self.answers[i]){ + $(this).data("attached").addClass("green"); + } + else{ + $(this).data("attached").addClass("red"); + sub.correct=false; + } + sub.answered.push($(this).data("filledWith")); + } + i++; + }); + sub.timeElapsed=this.parent.elapsedPerTest; + this.parent.answers.push(sub); + }, + + load: function(){ + var qid=0; + + var replacer="" + var fillable=this.quiz.text; + fillable=fillable.replace(new RegExp(/[\n]/g), "
"); + fillable=fillable.replace(new RegExp(/\[\][^\[\]]+\[\/\]/g), replacer); + + var fillers=[]; + var res; + var reg=new RegExp(/\[\]([^\[\]]+)\[\/\]/g); + while((res=reg.exec(this.quiz.text))!==null){ + fillers.push(""+res[1]+""); + this.answers.push(res[1]); + } + var fillerstr=""; + while(fillers.length>0){ + var index=Math.floor(Math.random()*fillers.length); + fillerstr+=fillers[index]; + fillers.splice(index, 1); + } + + this.container.html("

"+this.quiz.question+"


"+fillable+"


"+fillerstr+"
"); + + //init drag 'n' drop + this.container.children("p[data-qid=text]").children("span[data-qid=fillable]").droppable({ + tolerance: "pointer", + drop: function(event, ui){ + ui.draggable.position({ + of: $(this), + my: "left top", + at: "left top" + }); + $(this).data("filledWith", ui.draggable.data("value")); + $(this).data("attached", ui.draggable); + ui.draggable.data("attached", "true"); + }, + out: function(event, ui){ + $(this).data("filledWith", "--NULL--"); + ui.draggable.data("attached", "false"); + } + }); + + this.container.children("div[data-qid=fillers]").children("span[data-qid=filler]").draggable({ + cursor: "move" + }); + } + }; +}(jQuery)); diff --git a/script/sQuiz/sQuiz_module_markOnMap.js b/script/sQuiz/sQuiz_module_markOnMap.js new file mode 100644 index 0000000..2102424 --- /dev/null +++ b/script/sQuiz/sQuiz_module_markOnMap.js @@ -0,0 +1,88 @@ +/** + * /sQuiz/sQuiz_module_markOnMap.js + * @version 1.2 + * @desc sQuiz class for markOnMaps + * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk) + * @copy 2017 Fándly Gergő Zoltán + * License: + sQuiz for creating small jQuery based quizs in an implementable way + Copyright (C) 2017 Fándly Gergő Zoltán + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + **/ + +(function($){ + $.sQuiz_module_markOnMap=function(parent, quiz){ + this.parent=parent; + this.quiz=quiz; + this.container=parent.element.children("#sqTestArea"); + this.qidMap={}; + }; + + $.sQuiz_module_markOnMap.prototype={ + submit: function(){ + var self=this; + this.parent.stopTimer(); + var sub={}; + + //unbind handlers + this.container.children("div[data-qid=mapArea]").children("div[data-qid=markers]").children("i[data-qid=marker]").off(); + + sub.answers=[]; + sub.correct=true; + this.container.children("div[data-qid=mapArea]").children("div[data-qid=markers]").children("i[data-qid=marker]").each(function(){ + for(var i=0; i"; + + var markers=""; + $.each(this.quiz.markers, function(key, val){ + markers+=""; + }); + + this.container.html("

"+this.quiz.question+"


"+map+"
"+markers+"
"); + + this.container.children("div[data-qid=mapArea]").children("div[data-qid=markers]").children("i[data-qid=marker]").on("click", function(){ + if($(this).data("selected")==false){ + $(this).removeClass("fa-circle"); + $(this).addClass("fa-check-circle"); + $(this).data("selected", true); + } + else{ + $(this).removeClass("fa-check-circle"); + $(this).addClass("fa-circle"); + $(this).data("selected", false); + } + }); + } + }; +}(jQuery)); diff --git a/script/sQuiz/sQuiz_module_simpleQuestion.js b/script/sQuiz/sQuiz_module_simpleQuestion.js new file mode 100644 index 0000000..4a811e4 --- /dev/null +++ b/script/sQuiz/sQuiz_module_simpleQuestion.js @@ -0,0 +1,58 @@ +/** + * /sQuiz/sQuiz_module_simpleQuestion.js + * @version 1.2 + * @desc sQuiz class for simpleQuestions + * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk) + * @copy 2017 Fándly Gergő Zoltán + * License: + sQuiz for creating small jQuery based quizs in an implementable way + Copyright (C) 2017 Fándly Gergő Zoltán + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + **/ + +(function($){ + $.sQuiz_module_simpleQuestion=function(parent, quiz){ + this.parent=parent; + this.quiz=quiz; + this.container=parent.element.children("#sqTestArea"); + this.qidMap={}; + }; + + $.sQuiz_module_simpleQuestion.prototype={ + submit: function(){ + var self=this; + this.parent.stopTimer(); + var sub={}; + sub.answered=this.container.children("input[data-qid="+this.qidMap["answer"]+"]").val(); + if(sub.answered.toLowerCase()==this.quiz.answer){ + this.container.children("input[data-qid="+this.qidMap["answer"]+"]").addClass("sq-green"); + sub.correct=true; + } + else{ + this.container.children("input[data-qid="+this.qidMap["answer"]+"]").addClass("sq-red"); + sub.correct=false; + } + sub.timeElapsed=this.parent.elapsedPerTest; + this.parent.answers.push(sub); + }, + + load: function(){ + var qid=0; + this.container.html("

"+this.quiz.question+"


"+this.parent.reg.answer+":

"); + this.qidMap["answer"]=qid; + $("input[data-qid="+this.qidMap["answer"]+"]").focus(); + } + }; +}(jQuery)); diff --git a/script/sQuiz/sQuiz_module_simpleSelect.js b/script/sQuiz/sQuiz_module_simpleSelect.js new file mode 100644 index 0000000..fb16d25 --- /dev/null +++ b/script/sQuiz/sQuiz_module_simpleSelect.js @@ -0,0 +1,81 @@ +/** + * /sQuiz/sQuiz_module_simpleSelect.js + * @version 1.3 + * @desc sQuiz class for simpleSelects + * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk) + * @copy 2017 Fándly Gergő Zoltán + * License: + sQuiz for creating small jQuery based quizs in an implementable way + Copyright (C) 2017 Fándly Gergő Zoltán + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + **/ + +(function($){ + $.sQuiz_module_simpleSelect=function(parent, quiz){ + this.parent=parent; + this.quiz=quiz; + this.container=parent.element.children("#sqTestArea"); + this.qidMap={}; + }; + + $.sQuiz_module_simpleSelect.prototype={ + submit: function(){ + var self=this; + this.parent.stopTimer(); + this.container.children("i").off(); + var sub={}; + + sub.answered=[]; + sub.correct=true; + this.container.children("i").each(function(index){ + var checked=($(this).data("checked")=="true")?true:false; + if(checked==self.quiz.answers[index].correct){ + $(this).addClass("sq-green"); + } + else{ + sub.correct=false; + $(this).addClass("sq-red"); + } + sub.answered.push(checked); + }); + sub.timeElapsed=this.parent.elapsedPerTest; + this.parent.answers.push(sub); + }, + + load: function(){ + var qid=0; + var answers=""; + $.each(this.quiz.answers, function(key, val){ + answers+=" "+val.answer+"

"; + qid++; + }); + + this.container.html("

"+this.quiz.question+"


"+answers); + + this.container.children("i").on("click", function(){ + if($(this).hasClass("fa-square")){ + $(this).removeClass("fa-square"); + $(this).addClass("fa-check-square"); + $(this).data("checked", "true"); + } + else{ + $(this).removeClass("fa-check-square"); + $(this).addClass("fa-square"); + $(this).data("checked", "false"); + } + }); + } + }; +}(jQuery)); diff --git a/script/sQuiz/style/sQuiz.css b/script/sQuiz/style/sQuiz.css new file mode 100644 index 0000000..c57d435 --- /dev/null +++ b/script/sQuiz/style/sQuiz.css @@ -0,0 +1,137 @@ +/** + * /sQuiz/style/sQuiz.css + * @version 1.1 + * @desc Style file for sQuiz + * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk) + * @copy 2017 Fándly Gergő Zoltán + * License: + sQuiz for creating small jQuery based quizs in an implementable way + Copyright (C) 2017 Fándly Gergő Zoltán + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + **/ + +.sq.sq-container{ + margin: auto; + background: rgba(34,168,186,0.7); + padding: 1em; + border-radius: 0.5em; + border: 1px solid rgba(28,157,175,0.9); + width: 95%; +} + +.sq.sq-center{ + margin: auto; + text-align: center; +} + +hr.sq.sq-placeholder{ + border: none; + height: 30px; +} + +div.sq.sq-mapArea{ + position: relative; + width: fit-content; +} +div.sq.sq-mapArea div{ + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +button.sq{ + background: rgba(34,168,186,0.9); + padding: 1em; + border-radius: 0.5em; + border: 1px solid rgba(28,157,175,0.9); +} +button.sq:hover{ + background: rgba(24,148,165,0.9); +} +button.sq.sq-big{ + font-size: 3em; + padding: 1em; + padding-top: 4em; + padding-bottom: 4em; + width: 9em; +} +button.sq.red{ + background: rgba(230,74,74,0.9); + border: 1px solid rgba(187,48,48,0.9); +} +button.sq.red:hover{ + background: rgba(200,54,54,0.9); +} +button.sq.green{ + background: rgba(74,230,74,0.9); + border: 1px solid rgba(48,487,48,0.9); +} +button.sq.green:hover{ + background: rgba(54,200,54,0.9); +} + +input.sq{ + border-radius: 5px; + padding: 0.5em; + border: 1px solid rgba(28,157,175,0.9); + width: 90%; + font-size: 2em; +} + +.sq-red{ + color: rgba(230,74,74,0.9); +} +.sq-green{ + color: rgba(74,230,74,0.9); +} + +span.sq.sq-draggable{ + height: 1.3em; + width: 10em; + padding: 0.5em; + margin: 1em; + overflow: auto; + cursor: move; + color: rgb(255,255,255); + background: rgb(130,130,130); + display: inline-block; + font-size: 1.3em; + border-radius: 0.3em; +} +span.sq.sq-draggable.red{ + background: rgba(230,74,74,0.9); +} +span.sq.sq-draggable.green{ + background: rgba(74,230,74,0.9); +} +span.sq.sq-droppable{ + height: 2em; + width: 10.7em; + margin: 0 0.3em; + overflow: auto; + color: rgb(255,255,255); + border: 3px dashed rgb(130,130,130); + display: inline-block; + border-radius: 0.3em; +} + +div.sq.sq-menu{ + display: flex; + justify-content: space-around; + flex-wrap: wrap; + width: 99%; +} diff --git a/script/screenfull.js b/script/screenfull.js new file mode 100644 index 0000000..32508e2 --- /dev/null +++ b/script/screenfull.js @@ -0,0 +1,163 @@ +(function () { + 'use strict'; + + var document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {}; + var isCommonjs = typeof module !== 'undefined' && module.exports; + var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element; + + var fn = (function () { + var val; + + var fnMap = [ + [ + 'requestFullscreen', + 'exitFullscreen', + 'fullscreenElement', + 'fullscreenEnabled', + 'fullscreenchange', + 'fullscreenerror' + ], + // New WebKit + [ + 'webkitRequestFullscreen', + 'webkitExitFullscreen', + 'webkitFullscreenElement', + 'webkitFullscreenEnabled', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + // Old WebKit (Safari 5.1) + [ + 'webkitRequestFullScreen', + 'webkitCancelFullScreen', + 'webkitCurrentFullScreenElement', + 'webkitCancelFullScreen', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + [ + 'mozRequestFullScreen', + 'mozCancelFullScreen', + 'mozFullScreenElement', + 'mozFullScreenEnabled', + 'mozfullscreenchange', + 'mozfullscreenerror' + ], + [ + 'msRequestFullscreen', + 'msExitFullscreen', + 'msFullscreenElement', + 'msFullscreenEnabled', + 'MSFullscreenChange', + 'MSFullscreenError' + ] + ]; + + var i = 0; + var l = fnMap.length; + var ret = {}; + + for (; i < l; i++) { + val = fnMap[i]; + if (val && val[1] in document) { + for (i = 0; i < val.length; i++) { + ret[fnMap[0][i]] = val[i]; + } + return ret; + } + } + + return false; + })(); + + var eventNameMap = { + change: fn.fullscreenchange, + error: fn.fullscreenerror + }; + + var screenfull = { + request: function (elem) { + var request = fn.requestFullscreen; + + elem = elem || document.documentElement; + + // Work around Safari 5.1 bug: reports support for + // keyboard in fullscreen even though it doesn't. + // Browser sniffing, since the alternative with + // setTimeout is even worse. + if (/ Version\/5\.1(?:\.\d+)? Safari\//.test(navigator.userAgent)) { + elem[request](); + } else { + elem[request](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT); + } + }, + exit: function () { + document[fn.exitFullscreen](); + }, + toggle: function (elem) { + if (this.isFullscreen) { + this.exit(); + } else { + this.request(elem); + } + }, + onchange: function (callback) { + this.on('change', callback); + }, + onerror: function (callback) { + this.on('error', callback); + }, + on: function (event, callback) { + var eventName = eventNameMap[event]; + if (eventName) { + document.addEventListener(eventName, callback, false); + } + }, + off: function (event, callback) { + var eventName = eventNameMap[event]; + if (eventName) { + document.removeEventListener(eventName, callback, false); + } + }, + raw: fn + }; + + if (!fn) { + if (isCommonjs) { + module.exports = false; + } else { + window.screenfull = false; + } + + return; + } + + Object.defineProperties(screenfull, { + isFullscreen: { + get: function () { + return Boolean(document[fn.fullscreenElement]); + } + }, + element: { + enumerable: true, + get: function () { + return document[fn.fullscreenElement]; + } + }, + enabled: { + enumerable: true, + get: function () { + // Coerce to boolean in case of old WebKit + return Boolean(document[fn.fullscreenEnabled]); + } + } + }); + + if (isCommonjs) { + module.exports = screenfull; + } else { + window.screenfull = screenfull; + } +})(); diff --git a/script/script.js b/script/script.js new file mode 100644 index 0000000..adb24e5 --- /dev/null +++ b/script/script.js @@ -0,0 +1,92 @@ +/** + * /script/script.js + * @version 1.6 + * @desc Main script file + * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk) + * @copy 2017 Fándly Gergő Zoltán + * License: + sQuiz for creating small jQuery based quizs in an implementable way + Copyright (C) 2017 Fándly Gergő Zoltán + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + **/ + +//load language +var lang; +function loadLang(){ + $.each(lang, function(key, val) { + var repl=$("title").html().replace(new RegExp("{{"+key+"}}", "g"), val); + $("title").html(repl); + repl=$("body").html().replace(new RegExp("{{"+key+"}}", "g"), val); + $("body").html(repl); + window.cookieconsent_options={ + message: lang.cookie_message, + dismiss: lang.cookie_dismiss, + }; + }); +} + + +//switch pages +function goTo(site, pop=false){ + Site=site; + //slide up + $("#content").slideUp(function(){ + //load part + $.ajax({ + url: "./"+site, + type: "GET", + success: function(response){ + $("#content").html(response); + if(!pop){ + window.history.pushState({"site": site}, null, "./"); + } + }, + complete: function(){ + loadLang(); + $("#content").slideDown(); + } + }); + }); +} + + +//toggle element visibility +function toggleElement(sel){ + sel=(sel instanceof $)?sel:$(sel); + if(sel.css("display")=="none"){ + sel.slideDown(); + } + else{ + sel.slideUp(); + } +} + + +//load +$(document).ready(function(){ + $.getJSON("lang.json", function(json){ + lang=json; + loadLang(); + }); + + window.addEventListener("popstate", function(e){ + if(e.state!=null){ + goTo(e.state["site"], true); + } + else{ + goTo("indexc.html", true); + } + }); +}); diff --git a/script/tester.js b/script/tester.js new file mode 100644 index 0000000..6b25542 --- /dev/null +++ b/script/tester.js @@ -0,0 +1,132 @@ +/** + * /script/tester.js + * @version 1.3 + * @desc Script file for the tester page (not the actual sQuizEngine yet. :P) + * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk) + * @copy 2017 Fándly Gergő Zoltán + * License: + sQuiz for creating small jQuery based quizs in an implementable way + Copyright (C) 2017 Fándly Gergő Zoltán + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + **/ + +function showSelector(){ + $("#list").slideUp(); + $("#fromfile").slideUp(); + $("#fromurl").slideUp(); + $("#sQuiz").slideUp(); + $("#menuwrapper").slideDown(); + $("#back").attr("onclick", "window.history.back()"); +} + +function loadFromList(){ + $("#back").attr("onclick", "showSelector()"); + $("#menuwrapper").slideUp(); + $.getJSON("./tests/main.json", function(json){ + var list; + + if(!json.locallist){ + //get list from server + $.getJSON("./engine/engine.php?list", function(json){ + list=json; + $("#listcontent").html(""); + $.each(list, function(key, val){ + var push=""; + push+=""+(parseInt(key)+1).toString()+""; + push+=""+val.name+""; + push+=""+val.description+""; + push+=" + +
+
+ + + + + diff --git a/tests/First test_sQuiz.json b/tests/First test_sQuiz.json new file mode 100644 index 0000000..6e1d52a --- /dev/null +++ b/tests/First test_sQuiz.json @@ -0,0 +1 @@ +{"name":"First test","description":"almaaaa","timeLimitPerTest":"20","timeLimit":"600","questions":[{"type":"simpleQuestion","question":"Hogy írjuk azt, hogy kecske?","answer":"kecske"},{"type":"simpleSelect","question":"Mi a kecske?","answers":[{"answer":"állat","correct":true},{"answer":"ember","correct":false},{"answer":"UFO","correct":false},{"answer":"háziállat","correct":true}]},{"type":"connectGraph","question":"Kösd össze az állatot a táplálékkal!","answers":[{"pair1":"kecske","pair2":"gazok"},{"pair1":"ló","pair2":"széna"},{"pair1":"disznó","pair2":"moslék"},{"pair1":"orosz lány","pair2":"minden"},{"pair1":"oroszlán","pair2":"hús"}]},{"type":"fillIn","question":"Huzigáld be a kecskék színét!","text":"A barna kecske []barna[/] színű.\nA fekete kecske []fekete[/] színű.\nA rózsaszín kecske []nem létezik[/]."},{"type":"markOnMap","question":"Hogy ne csak kecske legyen! Jelöld meg a képen Ady orrát és fülét!","map":"data:image/jpeg;base64,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BAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTScQAAAAAAAKAAEAAAAAAAAAAjhCSU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAyAAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAA4QklNBAAAAAAAAAIAAThCSU0EAgAAAAAABAAAAAA4QklNBDAAAAAAAAIBAThCSU0ELQAAAAAABgABAAAAAjhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANJAAAABgAAAAAAAAAAAAABpAAAAnYAAAAKAFUAbgB0AGkAdABsAGUAZAAtADEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAnYAAAGkAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAGkAAAAAFJnaHRsb25nAAACdgAAAAZzbGljZXNWbExzAAAAAU9iamMAAAABAAAAAAAFc2xpY2UAAAASAAAAB3NsaWNlSURsb25nAAAAAAAAAAdncm91cElEbG9uZwAAAAAAAAAGb3JpZ2luZW51bQAAAAxFU2xpY2VPcmlnaW4AAAANYXV0b0dlbmVyYXRlZAAAAABUeXBlZW51bQAAAApFU2xpY2VUeXBlAAAAAEltZyAAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAABpAAAAABSZ2h0bG9uZwAAAnYAAAADdXJsVEVYVAAAAAEAAAAAAABudWxsVEVYVAAAAAEA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b3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcDpDcmVhdGVEYXRlPSIyMDE1LTEyLTIxVDE3OjAwOjQ4KzAxOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE1LTEyLTIxVDE3OjAwOjQ4KzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxNS0xMi0yMVQxNzowMDo0OCswMTowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNEYwOTUwMEZDQTdFNTExQkU1Q0JBNTFBNDU5QUJEMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBM0YwOTUwMEZDQTdFNTExQkU1Q0JBNTFBNDU5QUJEMCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkEzRjA5NTAwRkNBN0U1MTFCRTVDQkE1MUE0NTlBQkQwIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6QTNGMDk1MDBGQ0E3RTUxMUJFNUNCQTUxQTQ1OUFCRDAiIHN0RXZ0OndoZW49IjIwMTUtMTItMjFUMTc6MDA6NDgrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6QTRGMDk1MDBGQ0E3RTUxMUJFNUNCQTUxQTQ1OUFCRDAiIHN0RXZ0OndoZW49IjIwMTUtMTItMjFUMTc6MDA6NDgrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY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","markers":[{"posx":351,"posy":253,"correct":true},{"posx":575,"posy":161,"correct":true},{"posx":466,"posy":305,"correct":false},{"posx":295,"posy":90,"correct":false},{"posx":293,"posy":270,"correct":false},{"posx":289,"posy":164,"correct":false},{"posx":556,"posy":351,"correct":false}]}]} \ No newline at end of file diff --git a/tests/main.json b/tests/main.json new file mode 100644 index 0000000..7c9dd24 --- /dev/null +++ b/tests/main.json @@ -0,0 +1,17 @@ +{ + "type":"localdb", + "locallist":false, + "available":[ + { + "_comment":"EXAMPLE, please remove!", + "name":"NAME OF TEST", + "description":"DESCRIPTION", + "file":"PATH TO FILE (can be URL to)" + }, + { + "name":"Első teszt", + "description":"Egy teszt a kecskékről", + "file":"tests/First test_sQuiz.json" + } + ] +}